diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml deleted file mode 100644 index 6f3057225..000000000 --- a/.github/workflows/gradle.yml +++ /dev/null @@ -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 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 21d4f1bda..000000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2019 simibubi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index a7fc50bd6..000000000 --- a/README.md +++ /dev/null @@ -1,24 +0,0 @@ -

Logo

-

Create
- Patreon - Supported Versions - License - Discord - Curseforge Downloads

-

- -Welcome to Create, a mod offering a variety of tools and blocks for Building, Decoration and Aesthetic Automation. - -The added elements of tech are designed to leave as many design choices to the player as possible, where item processing doesn't happen inside a single block with funny textures, it requires a set of actors working together in many possible arrangements. - -Check out the wiki and in-game Tool-tips for further info on how to use these features, and stay tuned for an ever-growing selection of possibilities for Creative and Survival Minecraft. - -[](https://github.com/simibubi/Create/issues "Report Issues") -[](https://www.youtube.com/playlist?list=PLyADkcfPLU8ywCXZPaDbQ_JZJL0CGDN5Z "Watch Videos") -[](https://discord.gg/hmaD7Se "Feedback & Help") -[](https://www.patreon.com/simibubi "Support Us") - -- Support for Minecraft 1.12: Not planned -- Support for Fabric: Not planned -
-

Find out more about Create on our Project Page

diff --git a/build.gradle b/build.gradle index fb82fdcf8..de3479305 100644 --- a/build.gradle +++ b/build.gradle @@ -14,46 +14,59 @@ plugins { id 'com.github.johnrengelman.shadow' version '5.2.0' id 'com.matthewprenger.cursegradle' version '1.4.0' } + apply plugin: 'net.minecraftforge.gradle' -// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. -apply plugin: 'eclipse' -apply plugin: 'maven-publish' +apply plugin: 'org.spongepowered.mixin' -boolean dev = System.getenv('RELEASE') == null || System.getenv('RELEASE').equals('false'); - -ext.buildnumber = 0 -project.buildnumber = System.getenv('BUILD_NUMBER') != null ? System.getenv('BUILD_NUMBER') : "custom" - -version = "mc${minecraft_version}_v${mod_version}" + (dev ? "+${buildnumber}" : '') -group = 'com.simibubi.create' -archivesBaseName = 'create' +group = 'jozufozu' +version = '0.1' +archivesBaseName = 'flywheel' sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' minecraft { - mappings channel: 'snapshot', version: '20200920-mixed-1.16.3' - accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + mappings channel: 'snapshot', version: "${mcp_mappings}" + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + // Default run configurations. + // These can be tweaked, removed, or duplicated as needed. runs { - client { + client { workingDirectory project.file('run') - arg '-mixin.config=create.mixins.json' - //jvmArgs '-XX:+UnlockCommercialFeatures' // uncomment for profiling - property 'forge.logging.console.level', 'info' - property 'fml.earlyprogresswindow', 'false' + + property 'forge.logging.markers', '' + property 'forge.logging.console.level', 'debug' + + arg "-mixin.config=flywheel.mixins.json" + mods { - create { + flywheel { source sourceSets.main } } } server { - workingDirectory project.file('run/server') - arg '-mixin.config=create.mixins.json' - property 'forge.logging.console.level', 'info' + workingDirectory project.file('run') + + // Recommended logging data for a userdev environment + // The markers can be changed as needed. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels + property 'forge.logging.console.level', 'debug' + + arg "-mixin.config=flywheel.mixins.json" + mods { - create { + flywheel { source sourceSets.main } } @@ -61,12 +74,24 @@ minecraft { data { workingDirectory project.file('run') - property 'forge.logging.markers', 'REGISTRIES,REGISTRYDUMP' + + // Recommended logging data for a userdev environment + // The markers can be changed as needed. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' - property 'fml.earlyprogresswindow', 'false' - args '--mod', 'create', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources') + + // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. + args '--mod', 'flywheel', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + mods { - create { + flywheel { source sourceSets.main } } @@ -74,151 +99,62 @@ minecraft { } } -compileJava { - options.compilerArgs = ["-Xdiags:verbose"] +mixin { + add sourceSets.main, "flywheel.refmap.json" } -sourceSets.main.resources { - srcDir 'src/generated/resources' -} +// Include resources generated by data generators. +sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { - maven { - // location of the maven that hosts JEI files (And TiC) - name "Progwml6 maven" - url "https://dvs1.progwml6.com/files/maven/" - } - /* - maven { - // location of a maven mirror for JEI files, as a fallback - name "ModMaven" - url "https://modmaven.k-4u.nl" - }*/ - maven { - //location of the maven for vazkii's mods - name "blamejared" - url "http://maven.blamejared.com/" - } maven { //location of the maven for mixed mappings and registrate name = "tterrag maven" url = "https://maven.tterrag.com/" } - maven { - url = "https://www.cursemaven.com" - } -} - -configurations { - shade } dependencies { + // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed + // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. + // The userdev artifact is a special name and will get all sorts of transformations applied to it. minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" - def registrate = "com.tterrag.registrate:Registrate:MC1.16.5-${registrate_version}" - implementation fg.deobf(registrate) - shade registrate + // You may put jars on which you depend on in ./libs or you may define them like so.. + // compile "some.group:artifact:version:classifier" + // compile "some.group:artifact:version" - // compile against the JEI API but do not include it at runtime - compileOnly fg.deobf("mezz.jei:jei-1.16.4:${jei_version}:api") - // at runtime, use the full JEI jar - runtimeOnly fg.deobf("mezz.jei:jei-1.16.4:${jei_version}") + // Real examples + // compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env + // compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env - // implementation fg.deobf("curse.maven:druidcraft-340991:3101903") + // The 'provided' configuration is for optional dependencies that exist at compile-time but might not at runtime. + // provided 'com.mod-buildcraft:buildcraft:6.0.8:dev' - // i'll leave this here commented for easier testing - //runtimeOnly fg.deobf("vazkii.arl:AutoRegLib:1.4-35.69") - //runtimeOnly fg.deobf("vazkii.quark:Quark:r2.0-212.984") - //runtimeOnly fg.deobf("slimeknights.mantle:Mantle:1.16.5-1.6.103") - //runtimeOnly fg.deobf("slimeknights.tconstruct:TConstruct:1.16.5-3.0.3.168") + // These dependencies get remapped to your current MCP mappings + // deobf 'com.mod-buildcraft:buildcraft:6.0.8:dev' + + // For more info... + // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html + // http://www.gradle.org/docs/current/userguide/dependency_management.html annotationProcessor 'org.spongepowered:mixin:0.8:processor' } +// Example for how to get properties into the manifest for reading by the runtime.. jar { - classifier = 'slim' manifest { attributes([ - "Specification-Title": "create", - "Specification-Vendor": "simibubi", - "Specification-Version": "1", - "Implementation-Title": project.name, - "Implementation-Version": "${version}", - "Implementation-Vendor" :"simibubi", - "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), - "MixinConfigs": "create.mixins.json" + "Specification-Title" : "flywheel", + //"Specification-Vendor": "flywheel authors", + "Specification-Version" : "1", // We are version 1 of ourselves + "Implementation-Title" : project.name, + "Implementation-Version" : project.version, + //"Implementation-Vendor": "flywheel authors", + "MixinConfigs" : "flywheel.mixins.json", + "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ") ]) } } -shadowJar { - classifier = '' - configurations = [project.configurations.shade] - relocate 'com.tterrag.registrate', 'com.simibubi.create.repack.registrate' -} - -reobf { - shadowJar {} -} - -String getChangelogText() { - def changelogFile = file('changelog.txt') - String str = '' - int lineCount = 0 - boolean done = false - changelogFile.eachLine { - if (done || it == null) { - return - } - if (it.size() > 1) { - def temp = it - if (lineCount == 0) { - temp = "Create ${version}" - temp = "Create v${mod_version}  for Minecraft ${minecraft_version}
" - } else if (it.startsWith('-')) { - temp = "   $temp
" - temp = temp.replaceAll("(\\S+\\/\\S+)#([0-9]+)\\b", "\$0"); - temp = temp.replaceAll("#([0-9]+)\\b(?!<\\/a>)", "\$0"); - } else { - temp = "

$temp

" - } - str += temp - lineCount++ - } else { - str += "

Please submit any Issues you come across on the Issue Tracker.

" - done = true - } - } - return str -} - -//changelog debugging -//new File("changelog.html").write getChangelogText() - -tasks.curseforge.enabled = !dev && project.hasProperty('simi_curseforge_key') - -curseforge { - if (project.hasProperty('simi_curseforge_key')) { - apiKey = project.simi_curseforge_key - } - - project { - id = project.projectId - changelog = System.getenv('CHANGELOG') == null || System.getenv('CHANGELOG').equals('none') ? getChangelogText() : System.getenv('CHANGELOG') - changelogType = 'html' - releaseType = project.curse_type - mainArtifact(shadowJar) { - displayName = "Create - ${version}" - } - relations { - optionalDependency 'jei' - } - } -} - -apply plugin: 'org.spongepowered.mixin' - -mixin { - add sourceSets.main, "create.refmap.json" -} +jar.finalizedBy('reobfJar') diff --git a/changelog.txt b/changelog.txt deleted file mode 100644 index 191b1ac85..000000000 --- a/changelog.txt +++ /dev/null @@ -1,64 +0,0 @@ -0.2.4d: -More tiny bugfixes; we appreciate the reports! -Changes -- Cart assemblers now have several behaviours depending on the rail type they were placed on -Fixes -- Fixed dedicated server crash when using the Schematicannon -- Fixed blockzappers placing waterlogged blocks -- Updated chinese localization -- Added missing recipe for Dark Scoria - -0.2.4c: -A hotfix for our dear users over in Multiplayer. -Fixes -- (0.2.4b) Fixed server crash when Cart Assembler accelerates held Minecarts -- Fixed build errors of previous version - -0.2.4a: -Just a few Bug-Fixes since the recent 1.15 release. Enjoy! -Fixes -- Fixed pistons moving at inconsistent speeds, overshooting their bounds -- Fixed belts not moving entities -- Fixed diagonal belts teleporting entities miles away -- Fixed tree fertilizer not working -- Patched some localization gaps -- Fixed pulley placing down ropes when destroyed while moving -- Fixed inconsistencies with glue removal and placement -- Fixed crash when placing a crafter between two colliding rotation sources -- Fixed cases of self-powering loops caused by blocks rotated using the wrench -- Fixed Extendo Grip animation for left-handed players -- Fixed encoding of degree symbols in tooltips - -0.2.4: -Welcome to the future! Glad you are still here. -Warning -- Do NOT transfer world or schematic data from 1.14. This version is incompatible with any of the prior versions! -New -- Ported Create to Minecraft 1.15.2 -- Added Nixie Tubes -- Added the Extendo Grip -- Added support for TerraForged worldgen -Changes -- Removed Windowlogging, might come back as a stand-alone -- Removed Blazing, Shadow Steel and Gilded Quartz Toolsets -- Massively reworked Create palettes, offering a whole bunch of new patterns! -- The Creative Motor can now face in any direction -- The Creative Motor, Encased Fan and other directional blocks will now reverse their effective rotation when oriented backwards -- Redstone link receivers now emit their signal with the level of the strongest transmitter of the same frequency -- Changed the way cart assemblers react to redstone input -- Blocks that couldn't be placed when a contraption disassembles, now drop as items -- Some fixes regarding inconsistencies with Super Glue placement -- Deployers no longer consume food -- Deployers can now feed players -- Ploughs no longer break blocks if farmland is below them -- Super glue can no longer be removed while inbetween two blocks -Fixes -- Fixed Bells duplicating themselves when moved by a contraption -- Fixed moved Deployers in breaking mode getting stuck on fluids or bedrock -- Schematicannons can no longer place water in the nether -- Fixed bug with extractors not always being able to pull from moved contraptions -- Fixed deployers not able to place certain foods on campfires -- Fixed fire-immune creatures taking damage from heated air currents -- Endermen now take damage from washing fans -- Fixed crash when assembled minecarts pick up the block below their assembler -- Schematicannons can no longer place lit furnaces \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index b50c41fc3..5d55b81e7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,20 +1,19 @@ -# Sets default memory used for gradle commands. Can be overridden by user or command line properties. -# This is required to provide enough memory for the Minecraft decompilation process. org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false # mod version info -mod_version=0.3.1c +mod_version=0.0.1 minecraft_version=1.16.5 forge_version=36.0.42 +mcp_mappings=20200920-mixed-1.16.3 # dependency versions registrate_version=1.0.4 jei_version=7.6.1.71 # curseforge information -projectId=328085 -curse_type=beta +# projectId=486392 +# curse_type=beta # github information -github_project=Creators-of-Create/Create +github_project=Jozufozu/Flywheel diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache deleted file mode 100644 index 2b20bd785..000000000 --- a/src/generated/resources/.cache/cache +++ /dev/null @@ -1,3733 +0,0 @@ -16539ad12ee9e1ee004dec3fd62122b3e17c8e77 assets/create/blockstates/acacia_window.json -f0d6baaabda94151134f569246d61a6e710c35a9 assets/create/blockstates/acacia_window_pane.json -6b70306397316d6ebfa1cb07f2308d5c7fce83e0 assets/create/blockstates/adjustable_chain_gearshift.json -55d57354040f4b5cefa2a9bfaf1cb777350fd699 assets/create/blockstates/adjustable_crate.json -79c50afcea3a360783a5b3c73de9823511e9aed9 assets/create/blockstates/adjustable_pulse_repeater.json -1d730df54c9eae94063e37396d224fb3c87517e0 assets/create/blockstates/adjustable_repeater.json -9dd79bf5430f674e7d3e3fc7d59edee3d66e241e assets/create/blockstates/analog_lever.json -dd468657a73fc2ad6e1ac08ace2996b6997d33e0 assets/create/blockstates/andesite_belt_funnel.json -585481e97c5066af63ea12fa5dd658798844d64c assets/create/blockstates/andesite_bricks.json -4e8d61aa2c8490301317ef747f67f0169ebfc2ed assets/create/blockstates/andesite_bricks_slab.json -da63a8be3191d6d72afef6c79e3aea3f607631f9 assets/create/blockstates/andesite_bricks_stairs.json -57be934c5bc9b3a693e4eab018d8775681d8f0fa assets/create/blockstates/andesite_bricks_wall.json -9999a75c7766781eadb12510a09264600bc846e4 assets/create/blockstates/andesite_casing.json -3af4ea3c44b5ebc7e1e3fb73fb8356faf067a613 assets/create/blockstates/andesite_cobblestone.json -97adf53a7cb99d7652fb39adc957e9e34cbaca47 assets/create/blockstates/andesite_cobblestone_slab.json -96b5284693da168ab8e0809d86515b5f1a7e763f assets/create/blockstates/andesite_cobblestone_stairs.json -a92c395c57209141d4cf78ad62facbaf3878a120 assets/create/blockstates/andesite_cobblestone_wall.json -9639b901ffdd2ecccab5575c5c9e6c7b5c901e02 assets/create/blockstates/andesite_encased_shaft.json -ca9a629472625abf741f02b94ce4578292fb14a7 assets/create/blockstates/andesite_funnel.json -398922758a6219544e5b85c91c9cf8a543b437e5 assets/create/blockstates/andesite_pillar.json -1d2d8081581e07d9be4b382aede4f2de4401cc6b assets/create/blockstates/andesite_tunnel.json -e555e3c2b2d3f01440e48db4ba88f7e00fd99b6f assets/create/blockstates/basin.json -f25693a9429f6337149ff24f27900dc4eb82a7c2 assets/create/blockstates/belt.json -cf9045eb16e5299a1d917c4cb536289f49411276 assets/create/blockstates/birch_window.json -94a1a91403eb4b035fec48071e7fcae57a8a6abd assets/create/blockstates/birch_window_pane.json -e0f1e44c9bce4a7478592cf3a8ee7b91d9083d65 assets/create/blockstates/black_sail.json -58b07d2af6030342f0354f6d3fd0ee128d2d74b4 assets/create/blockstates/black_seat.json -a71ddf3291bd13d7877f2fe32c42f50407f99afb assets/create/blockstates/black_valve_handle.json -923aeb2a556f67bc0526f237dd97af2d37b4c9f1 assets/create/blockstates/blaze_burner.json -ec2ab87734acc209e6be3bc4898b1199f819bfd3 assets/create/blockstates/blue_sail.json -4854d1ef52130a7887aecc60bcaffbd66f0871a8 assets/create/blockstates/blue_seat.json -9d7341a5cae5d47788c595167946dfb6441cebd1 assets/create/blockstates/blue_valve_handle.json -ee1299a15fca849eb42bf81507f85a54c167bbfe assets/create/blockstates/brass_belt_funnel.json -8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json -b8dd6e505943e06706d0718ece620ab3cf943650 assets/create/blockstates/brass_casing.json -288bad07593a8a2c8efaf44bba0ffb0011d36cd3 assets/create/blockstates/brass_encased_shaft.json -adfbd6cc5e44a0f431180aedbe65a19428299d8e assets/create/blockstates/brass_funnel.json -672eedcd3520c6d39603449165a23be9c612c620 assets/create/blockstates/brass_tunnel.json -11ebdd9bd0815833e62ec1bea03a4cdd86ce00f3 assets/create/blockstates/brown_sail.json -e81608346d43406ee72cae0f78b8bcfb37ba2d75 assets/create/blockstates/brown_seat.json -322289524c058fac66bbe76b4924c3b0c0c33b84 assets/create/blockstates/brown_valve_handle.json -1ef072f86d95fd84638bbb6c298603eb311d1e53 assets/create/blockstates/cart_assembler.json -7299cea212d879d6d5611bd139b24768b9af236f assets/create/blockstates/chiseled_dark_scoria.json -0f01f813388d3e6907c1cfd992e4b21c914e267e assets/create/blockstates/chiseled_dolomite.json -324488e0c228f38f2597b2f76849e962bc1a7d90 assets/create/blockstates/chiseled_gabbro.json -2ca82a3c4bf7ba1a9cf3bb674e786d9b23b020a4 assets/create/blockstates/chiseled_limestone.json -cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets/create/blockstates/chiseled_scoria.json -291952556c52fba2af5bbd793c71af81abd27e71 assets/create/blockstates/chiseled_weathered_limestone.json -470e8c6a9c37b91fa745bc4f6e9d3740bd72467e assets/create/blockstates/chocolate.json -b59324f051f21d8ce1a48a08f4721a61a3c414d6 assets/create/blockstates/chute.json -4947c261310445fa55b92038326ac82967d192dd assets/create/blockstates/clockwork_bearing.json -1f33834c685e3243882acfe20183fe64dfa872be assets/create/blockstates/clutch.json -e5e3757e99c139d67b2a70288466d8a74d818841 assets/create/blockstates/cogwheel.json -36f54136a7756c97f71bc6b47ef4e8e575e72879 assets/create/blockstates/content_observer.json -cfea7283f0ebd2432d67e80a523f2a12e24c0bd5 assets/create/blockstates/controller_rail.json -961b615124ea9a5a5735e8a79f81a702de7da2cf assets/create/blockstates/copper_backtank.json -f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets/create/blockstates/copper_block.json -cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets/create/blockstates/copper_casing.json -3355a852cdc717e257ca19b3db836068964733e3 assets/create/blockstates/copper_ore.json -dc76bca1fdd41c8e6ada27fd59a2b73d7adc9596 assets/create/blockstates/copper_shingles.json -ecf4a72411870bfdbf8a59469b114cd77621c343 assets/create/blockstates/copper_tiles.json -890be245b914c1a9f29f48a8c5d325640b5be160 assets/create/blockstates/copper_valve_handle.json -3df0d5d5170a2f6cbab0f8a9bc8f2d64229589af assets/create/blockstates/creative_crate.json -da3f1203dd0b0096ce19e09705060a0ed0478bee assets/create/blockstates/creative_fluid_tank.json -f0031f5e970b3d5695472ed384950b8631b015ed assets/create/blockstates/creative_motor.json -24ee16e3dadb3e0221afce7af37643494f471fb0 assets/create/blockstates/crimson_window.json -3e6cd0945390b390b963474f7cf708e2dcba631c assets/create/blockstates/crimson_window_pane.json -fe2f78b94c20944399101e7369e2d43324297fb6 assets/create/blockstates/crushing_wheel.json -a1dd6cb3daa97ea871290ef7b178d28b564ee2a2 assets/create/blockstates/crushing_wheel_controller.json -b1126c191877cff86b4e2de83e1fcbd151451cb7 assets/create/blockstates/cuckoo_clock.json -b496452f2f7dbbba385e1fc10b560ec266e4b5e7 assets/create/blockstates/cyan_sail.json -4de72f65bff4e5d9c8153fa3adeee6b61d6f912b assets/create/blockstates/cyan_seat.json -2c04d57e56849f243aec8a1e769574d24daac1e9 assets/create/blockstates/cyan_valve_handle.json -1726b1b9e04a0634e7e1fdcf1cf4cc898efc5c2f assets/create/blockstates/dark_oak_window.json -50d4627d8e8b5adade12de764ab528ddacfa9ea5 assets/create/blockstates/dark_oak_window_pane.json -21e435ad3baf69970446b0acd3db0d6d02dc9fcb assets/create/blockstates/dark_scoria.json -bfab7d9b2e01183d47a828f2827125771efa97fc assets/create/blockstates/dark_scoria_bricks.json -831fb03aab9223da39dd1d16e9a7e9233dc16871 assets/create/blockstates/dark_scoria_bricks_slab.json -15c4f7b5d64a8d6467a2a18c12649ddb8fdb5805 assets/create/blockstates/dark_scoria_bricks_stairs.json -7b71efe303ae68f7ec69cba5d1209b7a928157a8 assets/create/blockstates/dark_scoria_bricks_wall.json -3e7a5f7f38490d91902088f9dabe4fbaa57132fd assets/create/blockstates/dark_scoria_cobblestone.json -1ca115df6d2b5a63a1c505bc94d62543f1c0e26a assets/create/blockstates/dark_scoria_cobblestone_slab.json -f86eea3f7df0988fffbe90e29b74141a7203cd15 assets/create/blockstates/dark_scoria_cobblestone_stairs.json -d642fe3bc6c062ace9c26056b26f83adf5eaf3ab assets/create/blockstates/dark_scoria_cobblestone_wall.json -902778a0f16b7ad009ee7b123bb583eaea32467a assets/create/blockstates/dark_scoria_pillar.json -ac85f55d82d96fc15750e6b954297cfd1e00d04d assets/create/blockstates/deployer.json -3660f44309279a0347347f23ce7444c6ed98cafd assets/create/blockstates/depot.json -c890ec9b3778aebb16c6b2eb2ca79bfbe7bf7435 assets/create/blockstates/diorite_bricks.json -894d5ca00c3765553deaac44b83257983acf502d assets/create/blockstates/diorite_bricks_slab.json -e42f2ebe5a2fdaeed62b9bc289252664a1e8705b assets/create/blockstates/diorite_bricks_stairs.json -a4dd768993186a0f6d8e6aa9f5b789560686cf7e assets/create/blockstates/diorite_bricks_wall.json -456d4a31a71acd46f2496ad5a17003ce6e33c5b2 assets/create/blockstates/diorite_cobblestone.json -a886ed9f02e54d3cf0bc55710c61f52737953ede assets/create/blockstates/diorite_cobblestone_slab.json -328e6ffb0b0124f497b2e227c814fa2bcccfeb0e assets/create/blockstates/diorite_cobblestone_stairs.json -3852014415198355f19fe65e32fa338fc3d98488 assets/create/blockstates/diorite_cobblestone_wall.json -bd24921c0c66deaabbdbf557b7ff9a507402c1e5 assets/create/blockstates/diorite_pillar.json -610435897262bc9a1d98d85ce470a5030411a1d7 assets/create/blockstates/dolomite.json -710f354ec7b11b545bac9c5cb6f181229aa84be9 assets/create/blockstates/dolomite_bricks.json -c681864890ec8c8c9f5ab275957979337539f782 assets/create/blockstates/dolomite_bricks_slab.json -23930bcbda625107810fbd0b32a8a94ba65940eb assets/create/blockstates/dolomite_bricks_stairs.json -09dca209759a430b6ef9fad19fe89f10e7d143ca assets/create/blockstates/dolomite_bricks_wall.json -a2b7259dacf7b582e3b819e12015b5e18a1768e5 assets/create/blockstates/dolomite_cobblestone.json -5cf01ea02b50229fce2296206b9f0ce1c1b2c9f6 assets/create/blockstates/dolomite_cobblestone_slab.json -e7c1db7226df5858f1884f0cf328a733fec22c3d assets/create/blockstates/dolomite_cobblestone_stairs.json -af19f2d229bb50da787c7d083a79a57cf9a8037c assets/create/blockstates/dolomite_cobblestone_wall.json -f179202e59e449157f89efc37229b03bbfd391d7 assets/create/blockstates/dolomite_pillar.json -35fc68eb1d031d28ad09b7b603e64ae459634179 assets/create/blockstates/encased_chain_drive.json -7b2b836649e729feafa60972bf95e3afb2143131 assets/create/blockstates/encased_fan.json -d13940ed213d7acbc6ebe3bdd21175ef89e4d613 assets/create/blockstates/encased_fluid_pipe.json -a774e815376a67e2a2de44e39af0a1a0b4406932 assets/create/blockstates/fancy_andesite_bricks.json -180be26a75834cf9cdb881f969f77906e91cc36a assets/create/blockstates/fancy_andesite_bricks_slab.json -d5d7762b80952052d0a7adf3081967cac3f3ba6c assets/create/blockstates/fancy_andesite_bricks_stairs.json -c8f23c08b83862725f352800c6c350ed56e8899b assets/create/blockstates/fancy_andesite_bricks_wall.json -0212696f17a7758a448b168bc20264757fbde9fe assets/create/blockstates/fancy_dark_scoria_bricks.json -f4dd92847d13d6ceeadc05ab63563490fdcd5f51 assets/create/blockstates/fancy_dark_scoria_bricks_slab.json -09ee11aba5b684608ce7ffcf57ed1bd2ec26c774 assets/create/blockstates/fancy_dark_scoria_bricks_stairs.json -9c2ea73d8f5f9030267f88cd6569c4f68399bc61 assets/create/blockstates/fancy_dark_scoria_bricks_wall.json -5a4c65373ccd1ef6cd33cbb35e16c844af5ac8bf assets/create/blockstates/fancy_diorite_bricks.json -36575b9debabb8b9dbe9d6d3c2d124472dfa77e3 assets/create/blockstates/fancy_diorite_bricks_slab.json -aeaa188516efbd5fd7477e0da5dc6dc3bc95dc8b assets/create/blockstates/fancy_diorite_bricks_stairs.json -dba57141fea3be3649254ea29492b695711c849d assets/create/blockstates/fancy_diorite_bricks_wall.json -e72c26b8546245499d78620f1ad4eaf6092fc871 assets/create/blockstates/fancy_dolomite_bricks.json -46bd9c9bfcc9de5fad6d33aab2adbc1ac7493802 assets/create/blockstates/fancy_dolomite_bricks_slab.json -d8fc5f08a5c2f215f95b09b32913672535859920 assets/create/blockstates/fancy_dolomite_bricks_stairs.json -47fd48996ecf8b8ca3381716495d527222d26ffa assets/create/blockstates/fancy_dolomite_bricks_wall.json -ac1b22a13434a580f2213c78001590bb4e9793ec assets/create/blockstates/fancy_gabbro_bricks.json -5e74f21623c749ea863d64ebce568da314e0e71b assets/create/blockstates/fancy_gabbro_bricks_slab.json -70eb799df2529c7df6061a6793eabbbea76db77c assets/create/blockstates/fancy_gabbro_bricks_stairs.json -5f6bc7bf2f744f775b1ae968bd746444fc8f6fce assets/create/blockstates/fancy_gabbro_bricks_wall.json -691c985a817ffa6733ea8901b329826da8f94017 assets/create/blockstates/fancy_granite_bricks.json -5f50be00c3b407a46f429776950d82f53df87ba4 assets/create/blockstates/fancy_granite_bricks_slab.json -4e0e1c1186c26e7d345dc8bd006be9f283349813 assets/create/blockstates/fancy_granite_bricks_stairs.json -9860dbcb6016a19f544332a21dbb204703a88f8b assets/create/blockstates/fancy_granite_bricks_wall.json -143d5cb3a6f149da0d11545297d9495b9173d7a0 assets/create/blockstates/fancy_limestone_bricks.json -b4bff88215fa1206ac461e199cc784c916b85479 assets/create/blockstates/fancy_limestone_bricks_slab.json -23f0d926e69b798ea561c0ccd13b4620f9699dda assets/create/blockstates/fancy_limestone_bricks_stairs.json -6dae27115433e128738da6eccefc7db1e0f34700 assets/create/blockstates/fancy_limestone_bricks_wall.json -8e5b65b12e46ebc0aace1155d1902780efacecd9 assets/create/blockstates/fancy_scoria_bricks.json -d8dd7ba8280b63f2a1f4c50db1d9b7a6ac7bf80a assets/create/blockstates/fancy_scoria_bricks_slab.json -fc652317e03b57c76e23a805da16a28d15254029 assets/create/blockstates/fancy_scoria_bricks_stairs.json -6d6b85c0ad9b04520cd3b6b0da71f3979dcbdb63 assets/create/blockstates/fancy_scoria_bricks_wall.json -5864daf839e54789a0dc8a44505f070bf3e184bc assets/create/blockstates/fancy_weathered_limestone_bricks.json -fc9ac0a7e7191b93516719455a17177fa6524ecc assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json -b2a7c321b1795f20e7433f81a55ce4683de081b8 assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json -8e532856c3c2b4e4e59c65a2a81a694e35d14658 assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json -65f5fa4b779af5150993b20174404ec93bfc4303 assets/create/blockstates/fluid_pipe.json -f0eaab18e16c4f3f65ebf3b55b08f0dc445720fe assets/create/blockstates/fluid_tank.json -5408d92ab02af86539ac42971d4033545970bb3a assets/create/blockstates/fluid_valve.json -e9da1794b6ece7f9aa8bcb43d42c23a55446133b assets/create/blockstates/flywheel.json -ac00d40e1ef50a37041c0481afa1a23a14dea78e assets/create/blockstates/framed_glass.json -61df7769fa61f6dd2868a4377e54320fdd473b4e assets/create/blockstates/framed_glass_pane.json -3cf49f4812732f00f578fa73785e14ffdf340f21 assets/create/blockstates/furnace_engine.json -f512b70d7fd0ca10184f21f5bfb71c83ab11f8ef assets/create/blockstates/gabbro.json -d2358eb3d9337741f55339f0b94b2e81d73965c8 assets/create/blockstates/gabbro_bricks.json -a5c87f9f5b8dd1573c1f2f770a5558f3dc244f96 assets/create/blockstates/gabbro_bricks_slab.json -66b9fa3d2c82e9c4d2a7e2b9b3e73dc45c0dd962 assets/create/blockstates/gabbro_bricks_stairs.json -3648aa5fa1888529fe1934ca8d52709f0ec57ee4 assets/create/blockstates/gabbro_bricks_wall.json -afff479c0e5284771afa9e7ce513595fe65860ee assets/create/blockstates/gabbro_cobblestone.json -85151aa7583e4752424b2efc1b35d8c9cceb66a7 assets/create/blockstates/gabbro_cobblestone_slab.json -a1f31a194129cfb65e335b3b96490f9275f9c564 assets/create/blockstates/gabbro_cobblestone_stairs.json -59bfa369af6df2c9363245addda86937daa339ee assets/create/blockstates/gabbro_cobblestone_wall.json -a6b44e8a1c4ce0c7442b2384b41ad36dd133f19b assets/create/blockstates/gabbro_pillar.json -23744450886af88ed468aecbbd7b8d7babcbbd6f assets/create/blockstates/gantry_carriage.json -9fa39a44bba30c5ae8fa245b122a837c705462b4 assets/create/blockstates/gantry_shaft.json -eca1f0e56efdadb241f42dc6ebb036f1d52213a9 assets/create/blockstates/gearbox.json -f34814b17cde3231a1dfb271f3dabf8d6de4fbf6 assets/create/blockstates/gearshift.json -93f8bdc22d9a5e04268964e35e4285c8cbf2b89d assets/create/blockstates/glass_fluid_pipe.json -87661d61e1645ef5ad4ea34f1c0fa31f139ea431 assets/create/blockstates/granite_bricks.json -d7f4cf7be7e9a3895840d9288245c52cbe25f0bd assets/create/blockstates/granite_bricks_slab.json -ec51efc72eb6b16c5f99399b4cb6284665d5be99 assets/create/blockstates/granite_bricks_stairs.json -7751b730365e3ef7d41d457cdb0a3344927710cc assets/create/blockstates/granite_bricks_wall.json -0d19d78cf035d0183b5268f646bacff2f40e7f7e assets/create/blockstates/granite_cobblestone.json -a4b0337149cb0617cc60061477c7178d37dbb831 assets/create/blockstates/granite_cobblestone_slab.json -d97fdea02187e63f6b63913357c79a18660d676d assets/create/blockstates/granite_cobblestone_stairs.json -2f29568407970ea0e3807e0553e0584d127a9014 assets/create/blockstates/granite_cobblestone_wall.json -f8659e81cd2a623475a6a9aca59149e82de56b1c assets/create/blockstates/granite_pillar.json -5c40c4a27e1dec747a467dd251700c72a6ceb07d assets/create/blockstates/gray_sail.json -a5ec5401ba9f3e102a2e1b35837f643847afbca4 assets/create/blockstates/gray_seat.json -5f17a5868616b33eb157965a661046cab7a1427f assets/create/blockstates/gray_valve_handle.json -52b849faef96b8ab9d9d64a1518c8f299af057b8 assets/create/blockstates/green_sail.json -13059309684db0cc7a0f1f4fce2407cf06cce80a assets/create/blockstates/green_seat.json -f4a0fc68e8daaa0a47cdc951ced4310057a874b0 assets/create/blockstates/green_valve_handle.json -6ab675fa06317e6d07c0c1a453e7bb43e3f46b3b assets/create/blockstates/hand_crank.json -4572b90f5d6c586e145f2c7a55664c3cb734bd2b assets/create/blockstates/honey.json -be3bef7e091d8b50bfc1c6b7275946d1f636aefd assets/create/blockstates/horizontal_framed_glass.json -18d9fdaa1352a7e2ec91135e46dae5c02ccd8f8f assets/create/blockstates/horizontal_framed_glass_pane.json -30ec347dfc827a9ae52cf3da964b828005acede1 assets/create/blockstates/hose_pulley.json -6651c84ea621777d572a3d7aa13b75d9f061191b assets/create/blockstates/item_drain.json -5d851c90d23de5087ce546d4bbe509e112b84c49 assets/create/blockstates/jungle_window.json -b15bea757ef981e0ca60f740ca234ee2014eb7b7 assets/create/blockstates/jungle_window_pane.json -f651091db216b009b3379b2f48d56d03481c8675 assets/create/blockstates/large_cogwheel.json -a38184e035c2ebca7471e1714494fea213af259e assets/create/blockstates/layered_andesite.json -0fef29f4bfe8e1258427252ef0ff1a414c194969 assets/create/blockstates/layered_dark_scoria.json -924a0291410406c86ded448f95c97ac3b9d2bd2e assets/create/blockstates/layered_diorite.json -a4cfcdc038af0f93a58d88ea8860b34d73632ff4 assets/create/blockstates/layered_dolomite.json -9d7cac5fe8b61248bdbb5ee63d08151ce03282ce assets/create/blockstates/layered_gabbro.json -8dccf7882a46a3d3eb9df16f324711f5f7809486 assets/create/blockstates/layered_granite.json -038f532f7364c1e793196fcc5856df9ceff93578 assets/create/blockstates/layered_limestone.json -8535d628f8834be62cdf62ef4b60c2ce3a7af99f assets/create/blockstates/layered_scoria.json -419d7fffc5cbd392f10211afa8d17e3eb8df8380 assets/create/blockstates/layered_weathered_limestone.json -029904f21970947a4423a6e0c8c65c4e02f2e8e6 assets/create/blockstates/light_blue_sail.json -2a0a8b1715700bf1e284ee57ef9f7f163c12f3ee assets/create/blockstates/light_blue_seat.json -9bee040558a6b24e21f837fc808e17fae1883e71 assets/create/blockstates/light_blue_valve_handle.json -93537c4e2ab86218a777e7b000c3fcd55a80b1cd assets/create/blockstates/light_gray_sail.json -d9a2551e001bb315d071bb9f1f013323a66a5d09 assets/create/blockstates/light_gray_seat.json -8bea8c86de8c218c8932eef140f0ed439e173156 assets/create/blockstates/light_gray_valve_handle.json -ba2c4e3ddafa3c89a72cc243b14e8518fab369aa assets/create/blockstates/lime_sail.json -1de3a88c003df03f5006e1bbaa0236589aba08ad assets/create/blockstates/lime_seat.json -179a3e68b9f2e289eafe0e98e768befbbf91c5c2 assets/create/blockstates/lime_valve_handle.json -c4dcb169bd1dffe8501bff455e3eb6ba979f60ab assets/create/blockstates/limesand.json -e7cb0b25e511610b46dfd219e0cc5ea60a79d56b assets/create/blockstates/limestone.json -e7c7b952137c4cb615988ea59b9f14303c9a4dfe assets/create/blockstates/limestone_bricks.json -4048ef9e001a4036a4c806053b15ed80261c0a2b assets/create/blockstates/limestone_bricks_slab.json -936d0daa91eb725548e634cb3855cee36b7d66dd assets/create/blockstates/limestone_bricks_stairs.json -72e7851f7d8517bebcc49d7809b403ec8205463a assets/create/blockstates/limestone_bricks_wall.json -728b5b373f3b731f4f7782b68da9a8e572367df3 assets/create/blockstates/limestone_cobblestone.json -19b6a403a126196144d13eafb81e172b87061019 assets/create/blockstates/limestone_cobblestone_slab.json -43532aec1893f7d2f37798d5dbb11ecde0a3bfab assets/create/blockstates/limestone_cobblestone_stairs.json -10513d55f7c621162a13d474d8f4eb54305d0f60 assets/create/blockstates/limestone_cobblestone_wall.json -b7506b862d13b3f915c60d38bb7a20afc935f70a assets/create/blockstates/limestone_pillar.json -69790737767e06f000c7824749c46664a123160e assets/create/blockstates/linear_chassis.json -07bae932a163b81f8749f98287b4fb4949fe0b8b assets/create/blockstates/lit_blaze_burner.json -85a58ac539775f90903d9ce66374f3f2ffd4fecf assets/create/blockstates/magenta_sail.json -84c494d24cc58af274fdd054896c680e8095d2d0 assets/create/blockstates/magenta_seat.json -3bfce5016e5c929b74368dc2d734e62ae34587a4 assets/create/blockstates/magenta_valve_handle.json -3b3250d6e209403a93d025604a8081087965016e assets/create/blockstates/mechanical_arm.json -ddcf4bb281e046fbb1026b8f46a2cf12448598df assets/create/blockstates/mechanical_bearing.json -5586beef2d9183dc34d8e8d2723620c0569592ae assets/create/blockstates/mechanical_crafter.json -044db7d50e19008bae8bf3325eac2ed0eb1ea6d2 assets/create/blockstates/mechanical_drill.json -0fb175e5260ec60e130e589d682a4d3301d7364e assets/create/blockstates/mechanical_harvester.json -d9afcfa27c42df5fd54a7b783acb0eb45ddf5aa5 assets/create/blockstates/mechanical_mixer.json -da612a05f94dc19e07e250efc35a7b2839d2ee76 assets/create/blockstates/mechanical_piston.json -94ec340a50b2406f833735f7501a1840c692e32a assets/create/blockstates/mechanical_piston_head.json -debef0f5dde74103aaf4422de4bc90e4099b0c47 assets/create/blockstates/mechanical_plough.json -92269fe66d7b83095a2e04e121af0be792f55dd6 assets/create/blockstates/mechanical_press.json -b7c4a0ff0c6f16e14d71fc0fb7fc66d032b65cf3 assets/create/blockstates/mechanical_pump.json -264d72320ee0f1e014319f7d99dcc1fa953a4ad4 assets/create/blockstates/mechanical_saw.json -94bbcb7e622471dbf418d78f9200ad321c7168de assets/create/blockstates/metal_bracket.json -4e48ad0936647065c2322390e7c0fe115c853a98 assets/create/blockstates/millstone.json -468202df0802e17c75fcad0993daf1bc5300ca91 assets/create/blockstates/minecart_anchor.json -6a42f86aaff8ced70aaa6adb9460614ab40c21e5 assets/create/blockstates/mossy_andesite.json -bd49d8df2c3b0e07f599026db5dc1e67f4fa6199 assets/create/blockstates/mossy_dark_scoria.json -d1fad9fa7f6d948fd68a31a86fe1b952bf80817b assets/create/blockstates/mossy_diorite.json -a35b5d1886609672fd19cc5bb52b2b6a9c0d688e assets/create/blockstates/mossy_dolomite.json -dede80b872a3f1212cf492b38473064d73de46e1 assets/create/blockstates/mossy_gabbro.json -a3ae5fb61cb07ae6fcb78ba68435bda8c31d4430 assets/create/blockstates/mossy_granite.json -6bc9137697dc2b3f0aa4b20d1802814885ccb059 assets/create/blockstates/mossy_limestone.json -5b75b8e8e922b00c43ce030740da5472df207868 assets/create/blockstates/mossy_scoria.json -3feafb33a6ba03687a521c1b196536c0427fff77 assets/create/blockstates/mossy_weathered_limestone.json -b1126c191877cff86b4e2de83e1fcbd151451cb7 assets/create/blockstates/mysterious_cuckoo_clock.json -8d56251190c94204fa238ff32734a0761273669f assets/create/blockstates/natural_scoria.json -0f7635a4fec6961ec09788b3c5e3992ed1fdfde7 assets/create/blockstates/nixie_tube.json -36e46e65003a8d0b8555fe5e8f8dc980d6559bc5 assets/create/blockstates/nozzle.json -cf60989f63f02067fc4e4ad25033ac83167cdeb0 assets/create/blockstates/oak_window.json -4a796509c3953171f04f957351282205840b3760 assets/create/blockstates/oak_window_pane.json -b0be3d4ff92cb123ec21ec2788db35d0f392ba8a assets/create/blockstates/orange_sail.json -5764a24f6c4fa552b61d2a02135adfc7d93c2e10 assets/create/blockstates/orange_seat.json -1445074ec21a3735ea912b624c0f9f18a450d2d3 assets/create/blockstates/orange_valve_handle.json -8e2028e1a0450a592eed5e10276ba19b1195a206 assets/create/blockstates/ornate_iron_window.json -f59198fd966927e21e9bf76e64de533d05ea893b assets/create/blockstates/ornate_iron_window_pane.json -c46f0b62967cf483ec0720a9297c8ccc97f5547d assets/create/blockstates/overgrown_andesite.json -0d3e4d8631f95dd9e18a38d92778ea78e5fc7cea assets/create/blockstates/overgrown_dark_scoria.json -12a00500554f541a0ef4ba31f96a97c515e75834 assets/create/blockstates/overgrown_diorite.json -9cd0331df8622fdc0bcd96d732e35598db96be5e assets/create/blockstates/overgrown_dolomite.json -8eabe022ac1113f22842487eafa906df81d0669e assets/create/blockstates/overgrown_gabbro.json -76ade67226e968db0671645f5316fdf64326f4a4 assets/create/blockstates/overgrown_granite.json -2398939c8be07cac0dcb7ea710eb98e74b408e0c assets/create/blockstates/overgrown_limestone.json -fbb651b8e4a72bf0a17a6bfdbf4eef680e9d4a5c assets/create/blockstates/overgrown_scoria.json -9c8e210bdb29b2ab1535a25762498d7c03156444 assets/create/blockstates/overgrown_weathered_limestone.json -ab93ff18b747607dbc1d8d7311a2737e302b92d1 assets/create/blockstates/paved_andesite.json -89e88a0d2e7df66bac7ab11ac2c7b14812d8675f assets/create/blockstates/paved_andesite_slab.json -f43d947077b3f4a11a9729c58709c56f09859da0 assets/create/blockstates/paved_andesite_stairs.json -995c695368d1cd98cad4e71fc5c4d92368cb80fd assets/create/blockstates/paved_andesite_wall.json -4c3f3b1083d5ed7dc882ff0c5a8e99fa4e114810 assets/create/blockstates/paved_dark_scoria.json -373ae114d505e64fc1a1101f1c738d690098f4e4 assets/create/blockstates/paved_dark_scoria_slab.json -609ca3c0f01f82b07afddd12399019ea4e83ff0c assets/create/blockstates/paved_dark_scoria_stairs.json -75b1136023ba7e0db83b6ca4fcca1c945b520016 assets/create/blockstates/paved_dark_scoria_wall.json -16e6d4110af2a9ac5a27c1416fa333d125a0c212 assets/create/blockstates/paved_diorite.json -5088c7c493386509739cf78eb043f79a36cc49a2 assets/create/blockstates/paved_diorite_slab.json -7c88703a29614886c193a3e1b7fa1aedc2901626 assets/create/blockstates/paved_diorite_stairs.json -d1bf30633df01e292979276ea57d7c2d06242459 assets/create/blockstates/paved_diorite_wall.json -7df5d644f113bd7988fc958d1018766ea41e16a5 assets/create/blockstates/paved_dolomite.json -0f007adfc85b2c11600adf457060f3a9a3b0b354 assets/create/blockstates/paved_dolomite_slab.json -77362a0dc9e7dc850a40359580122314c0d48edf assets/create/blockstates/paved_dolomite_stairs.json -ba1156ac5eb0323b700bb5d125f608f17999375b assets/create/blockstates/paved_dolomite_wall.json -6b408845d667c7ed1490d03ea38db15cf4bdeb0d assets/create/blockstates/paved_gabbro.json -192412bf95174f6c635a5c10e9cb6f26ed9732fa assets/create/blockstates/paved_gabbro_slab.json -2bb34163e982218d0e8734a140445d25ad135afc assets/create/blockstates/paved_gabbro_stairs.json -92eefb99b6395ce39e1de391cea985128db31ec5 assets/create/blockstates/paved_gabbro_wall.json -b4c21fbcbfc21ba2aaaa468ddcac322fc3ed4cdf assets/create/blockstates/paved_granite.json -e273711b7e510c1553023c9962c7b66073fa77a8 assets/create/blockstates/paved_granite_slab.json -ad8c79e38ee2b0bdb18e35e9925dc213b4a95008 assets/create/blockstates/paved_granite_stairs.json -6f92ee9fbed9d2ff276224328a9769450597ae32 assets/create/blockstates/paved_granite_wall.json -67df4368fd671d334702134c4011c85d8a7d1943 assets/create/blockstates/paved_limestone.json -e1eca91fdcf60b8ac0c2b8cdf6674046b0bc55f4 assets/create/blockstates/paved_limestone_slab.json -20c5434a0fb1108d424c27c44213dc89f5ec0027 assets/create/blockstates/paved_limestone_stairs.json -6fd09280e01b9be3a80122d6335155711857f6a3 assets/create/blockstates/paved_limestone_wall.json -1ec5fafef5d6447938d2741c718b7411bf074e27 assets/create/blockstates/paved_scoria.json -10784fd7ad60cece61c5a10e933be0c33eb8e78e assets/create/blockstates/paved_scoria_slab.json -10a5ff1a5e5ae32a656637da8c41103798f3553f assets/create/blockstates/paved_scoria_stairs.json -10b96679bb11c3979e906fbad11b51d017624454 assets/create/blockstates/paved_scoria_wall.json -c17d334e938dcb742550ba8307ca8266a1fc9b49 assets/create/blockstates/paved_weathered_limestone.json -cb23aef25f3106b06c8fa8f152c638bb0d2185d8 assets/create/blockstates/paved_weathered_limestone_slab.json -d62b0992cec1de45dad1f2c273132225f4ef33a0 assets/create/blockstates/paved_weathered_limestone_stairs.json -e29e245d06c46dac94fcd0e01a9bf7fa8e02fb87 assets/create/blockstates/paved_weathered_limestone_wall.json -30971f2f76fe56f144178c33ad6bde5fc9fb61c3 assets/create/blockstates/pink_sail.json -919a79e4a4a5fab0aac3ef48e1c786017d6aa001 assets/create/blockstates/pink_seat.json -471a3bb474a0ae0453143888d561256cce894e3f assets/create/blockstates/pink_valve_handle.json -975c97018e9e2419943eaab43aed0970e96feaf7 assets/create/blockstates/piston_extension_pole.json -2f764f460aa1d75ba995da180bc6f8d2bd9db385 assets/create/blockstates/polished_dark_scoria.json -262b22dcf3e151e63f58710f6b6fe4fc4fc2a70c assets/create/blockstates/polished_dark_scoria_slab.json -a0dbcb7651b02a4f5c747ad2c6d35da60f768d9b assets/create/blockstates/polished_dark_scoria_stairs.json -1f0970eb7949bdb66ed25b614ab8a09abb154da7 assets/create/blockstates/polished_dark_scoria_wall.json -c197a8c1e80150cf2ef73ed5429b976a6920ee39 assets/create/blockstates/polished_dolomite.json -1c60ab250ae8577fa314b2718d4d8d9885c7a387 assets/create/blockstates/polished_dolomite_slab.json -4ee6fc88ba0b69f144da81c4ec023cd123bb28e1 assets/create/blockstates/polished_dolomite_stairs.json -10584661311a320520ea9867160a8d87fd7263a1 assets/create/blockstates/polished_dolomite_wall.json -c20df6b7240b2aeffd4f66e8b902f71b2a43ea35 assets/create/blockstates/polished_gabbro.json -d760a9e9efac9f81b36be2632b4b309f113004a3 assets/create/blockstates/polished_gabbro_slab.json -f20b78557066023365b0f1f7c4a95ae50724421d assets/create/blockstates/polished_gabbro_stairs.json -1245b8c7eaab1791c31f19b8a62e8f20da09dff3 assets/create/blockstates/polished_gabbro_wall.json -039ed5b957758e9c9266764a7787179e0b74c567 assets/create/blockstates/polished_limestone.json -a31044438e849f216c5bd5960f57645b22c2ca83 assets/create/blockstates/polished_limestone_slab.json -f1bf2d4e4e1dff8cc39652a35f601fc58424e60d assets/create/blockstates/polished_limestone_stairs.json -2f91d896a1b12e45c2685cdc641250a11dafdd70 assets/create/blockstates/polished_limestone_wall.json -35c8f660a49dd2addae6a77283aba7f581a8d042 assets/create/blockstates/polished_scoria.json -a452650af5c929675b0a3c8e8bf23c6cac67152e assets/create/blockstates/polished_scoria_slab.json -8e2c6b205b17dde98e7cc9b4bcea6c75aaaeae80 assets/create/blockstates/polished_scoria_stairs.json -81f78e6299e84170d3326793fc913a2337093277 assets/create/blockstates/polished_scoria_wall.json -c8467d55bc22d2e2256b8b732c06c9fdc64d336f assets/create/blockstates/polished_weathered_limestone.json -5d811eab3c5e8411f98e2ea98d93d35955ce18fc assets/create/blockstates/polished_weathered_limestone_slab.json -acec6cdebe772ca72de94a85d98199e827495acb assets/create/blockstates/polished_weathered_limestone_stairs.json -ad721e3911f48c61c3639edac1896680a31451ff assets/create/blockstates/polished_weathered_limestone_wall.json -3bb571d0a2597907bf3a30686b4bfa0841ac990a assets/create/blockstates/portable_fluid_interface.json -1b70b4e5792dccd2110b84e209016ac258005e28 assets/create/blockstates/portable_storage_interface.json -8296d43d5f1c2113012d127038fb319af83aaee4 assets/create/blockstates/powered_latch.json -e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets/create/blockstates/powered_toggle_latch.json -3a739f9d4276828d83f2d2750bf3227c87bcd438 assets/create/blockstates/pulley_magnet.json -469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets/create/blockstates/pulse_repeater.json -d06cd9a1101b18d306a786320aab12018b1325d6 assets/create/blockstates/purple_sail.json -92957119abd5fbcca36a113b2a80255fd70fc303 assets/create/blockstates/purple_seat.json -61035f8afe75ff7bbd291da5d8690bcbebe679eb assets/create/blockstates/purple_valve_handle.json -4439fc83a8c7370ab44b211a3fd48abde20a4728 assets/create/blockstates/radial_chassis.json -45877c4d90a7185c2f304edbd67379d800920439 assets/create/blockstates/red_sail.json -da1b08387af7afa0855ee8d040f620c01f20660a assets/create/blockstates/red_seat.json -722fc77bbf387af8a4016e42cbf9501d2b968881 assets/create/blockstates/red_valve_handle.json -8929677f2cc5354aa19ef182af69f9f0b41eb242 assets/create/blockstates/redstone_contact.json -c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets/create/blockstates/redstone_link.json -b76ed5f6d271349b2509708c11e713bb299a57b6 assets/create/blockstates/refined_radiance_casing.json -1eac804cba08aebb5f4646758ae1ef9b32e01365 assets/create/blockstates/reinforced_rail.json -e2990fe70ad5d10437a376e70e167d1856277cc1 assets/create/blockstates/rope.json -e14d5f7252105934295b4e156ec0e6d62d3d6b1c assets/create/blockstates/rope_pulley.json -cc4cf3420fa290cb844f9cf4dfdd836aa9b70500 assets/create/blockstates/rotation_speed_controller.json -ff5525783431f5047fc1ebf71d6c5ad526072b14 assets/create/blockstates/sail_frame.json -7120f29e4b88a1c40125a8cdbe8af3570f4ee352 assets/create/blockstates/schematic_table.json -36592a6542332b35445931e8e9531adf786b63ba assets/create/blockstates/schematicannon.json -a5befc14551f043675e985027609aeb7e6bacc0d assets/create/blockstates/scoria.json -4ccf1fb580ce25835329d50dcf0ba91be19baaeb assets/create/blockstates/scoria_bricks.json -145fb4b57649105c6f188bd2b895ee69d2378b1f assets/create/blockstates/scoria_bricks_slab.json -41066da6ae338c079f506c87c0e36fda788f75e4 assets/create/blockstates/scoria_bricks_stairs.json -07e49aaaaaeec02f6ca0e01c8e6ba7c8bd1275aa assets/create/blockstates/scoria_bricks_wall.json -20c7cdf5d5e62bdbce53541bdb8079836ad74bb0 assets/create/blockstates/scoria_cobblestone.json -be96a5541f211a6929fa04ec3535cb62ce7d4a2d assets/create/blockstates/scoria_cobblestone_slab.json -41d1fbbdfb038e474254bee5284561342fea0fc9 assets/create/blockstates/scoria_cobblestone_stairs.json -b81359a2c80e8fbc4fffd3573ce7dea70e1c2640 assets/create/blockstates/scoria_cobblestone_wall.json -46641fdbc6bdc05829153bc28efb90cae26a51f8 assets/create/blockstates/scoria_pillar.json -89e10f35b93b5c72dd235eb79e5fc6f3655027a1 assets/create/blockstates/secondary_linear_chassis.json -81931eb1027dfb42ba4b2186185a4c0a36e0dbe4 assets/create/blockstates/sequenced_gearshift.json -c4c3613ad353e721e7109628aa06ab0664d0862b assets/create/blockstates/shadow_steel_casing.json -79ae6d86a829b9ce82fce68a6377d3810fcfcb10 assets/create/blockstates/shaft.json -fa4ffec5eac02c0180226d994d51756e44f85674 assets/create/blockstates/smart_chute.json -f0f72cc1faacc8f37c8ac1833c22eb910771c800 assets/create/blockstates/smart_fluid_pipe.json -e815bfd854c2653f10828bb11950f7fb991d7efc assets/create/blockstates/speedometer.json -1cb7cdbefa0ff199263782809287854b9d85074c assets/create/blockstates/spout.json -d62b7908119fa4f51715a186d0882b388bb25cab assets/create/blockstates/spruce_window.json -8d7dfa60630a8b4bae4e8eca5c66e1cfa34dda1f assets/create/blockstates/spruce_window_pane.json -5d7385d28a23dcfc95a221d36d82337908582726 assets/create/blockstates/sticker.json -3d93eabbb327aecc526beae9c62283f1d43eb710 assets/create/blockstates/sticky_mechanical_piston.json -f385988cb6fa9c48b5d59a6942ec50ed2b60c8bf assets/create/blockstates/stockpile_switch.json -e815bfd854c2653f10828bb11950f7fb991d7efc assets/create/blockstates/stressometer.json -8b0c2c7ac72529565b3339aa8df7565858100afa assets/create/blockstates/tiled_glass.json -a2454400b1cf9889f70aebdc89c52a1be25f543c assets/create/blockstates/tiled_glass_pane.json -a8094531617e27a545c4815ab2062bf0ffca3633 assets/create/blockstates/turntable.json -69dfe8afaa8eb6105dae9f76ab8b7847bf90b8c6 assets/create/blockstates/vertical_framed_glass.json -c4db76b9d36cfb098df0d158cb6f8b82768ebe14 assets/create/blockstates/vertical_framed_glass_pane.json -3a5da54d9763e9512cfaa47b25226b79738b25f3 assets/create/blockstates/warped_window.json -19ef7a16c82f07d304fb60d121845185d189aecf assets/create/blockstates/warped_window_pane.json -d995547bcd71603ba7378d8998098e462030bfd0 assets/create/blockstates/water_wheel.json -f182669f7547964f9f2ef67916568556870def7b assets/create/blockstates/weathered_limestone.json -27e6740834c0f673acc3531371512daa6dcab025 assets/create/blockstates/weathered_limestone_bricks.json -abb74e4f4c2b9851670cb6ad794281b0f7be0f5a assets/create/blockstates/weathered_limestone_bricks_slab.json -3262e838fd36d514dad6b86b83402772c0ddfdc5 assets/create/blockstates/weathered_limestone_bricks_stairs.json -c8ac03b4f198f91177a09bc07543ad507b40736b assets/create/blockstates/weathered_limestone_bricks_wall.json -f02e0d7738c3c3622d9051db7deca7a9de274868 assets/create/blockstates/weathered_limestone_cobblestone.json -fd7a9c7095372485081436c91489cadb2b0c514e assets/create/blockstates/weathered_limestone_cobblestone_slab.json -47f8c91ff4c3f5cad782ab469a1fe5f4909dc7f1 assets/create/blockstates/weathered_limestone_cobblestone_stairs.json -dfa5662bfd5a70bcd87673b1c40bf9106d5e2365 assets/create/blockstates/weathered_limestone_cobblestone_wall.json -c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets/create/blockstates/weathered_limestone_pillar.json -c838c0792511ca2e14493b40032bb1370fac588a assets/create/blockstates/weighted_ejector.json -512bf17c9ea309b1f7da54440f923530d25e467c assets/create/blockstates/white_sail.json -4647010162eb4c350fad236d860317eaa1884c77 assets/create/blockstates/white_seat.json -89000903d0ab8139e919abea7aa0361b34c24e55 assets/create/blockstates/white_valve_handle.json -c4cd1131113667da0180898b5db3ebad609db8ba assets/create/blockstates/windmill_bearing.json -d4f804f2818376950ef28fc8d6250419f4e12218 assets/create/blockstates/wooden_bracket.json -e03c48512967845fce09d84b955d3bc7b480fedc assets/create/blockstates/yellow_sail.json -a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.json -6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json -7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json -b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -c71f5246d2cb8e9913d1552d23fcc82c43cde7a0 assets/create/lang/en_ud.json -ec002cefbb883258daed50448e17f874eb814c18 assets/create/lang/en_us.json -639b3bbd99887014d67fc943d6e1415bebd1c70a assets/create/lang/unfinished/de_de.json -3dca81115778734215a4d361ec30f43b1342b51c assets/create/lang/unfinished/es_es.json -df82753f7276ceb72a834170bb09260c4c4f7936 assets/create/lang/unfinished/es_mx.json -021158ff586e33ccfd0012c2c4fbfba83b62d57b assets/create/lang/unfinished/fr_fr.json -4d3132ccb4a8d7c211451e195165fb3719c135a6 assets/create/lang/unfinished/it_it.json -741f5a61d9fec8ece2936649490318ef4b06b15f assets/create/lang/unfinished/ja_jp.json -79983f46c225a3dca6b9e6cecc26f73e07db1b86 assets/create/lang/unfinished/ko_kr.json -c85b841cf6ef7a5205782da242e98c2dc3b2af9a assets/create/lang/unfinished/nl_nl.json -2bcee4396da8bc2cbba794e7dd4b33a406d58360 assets/create/lang/unfinished/pl_pl.json -0b45c9ecdf8fc82f7f1e112d82cb95e94cf8b064 assets/create/lang/unfinished/pt_br.json -b7ef8659876e0890016e696b5adf73404b31ef8a assets/create/lang/unfinished/ru_ru.json -f04ba370732503448596909c56ff0e05aec5a233 assets/create/lang/unfinished/zh_cn.json -708e423b949fc4113cefc46a0119d02cad8f71ad assets/create/lang/unfinished/zh_tw.json -487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json -b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json -3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json -1358ff546e99004444fccca5355853d1738ef191 assets/create/models/block/acacia_window_pane_post.json -bd33b944ec6ad89850a1d275b3d2843fe6f831cc assets/create/models/block/acacia_window_pane_side.json -b272035cd746364a0bd3bf13061f51190e9b46d6 assets/create/models/block/acacia_window_pane_side_alt.json -8e1e834bab1c09591006a063216e93c832503852 assets/create/models/block/adjustable_chain_gearshift_end_horizontal.json -5d3d8b3989b087a5e9177951e9246f27a1838e84 assets/create/models/block/adjustable_chain_gearshift_end_horizontal_powered.json -0ae6c67468b448f2f05c06f41bb162fafd86846a assets/create/models/block/adjustable_chain_gearshift_end_vertical.json -5a392f3c7378ab0cdf7d04658c735d8ffb7912f3 assets/create/models/block/adjustable_chain_gearshift_end_vertical_powered.json -7c40a7a4df23ae502561ac2ef333db3dee7e9f66 assets/create/models/block/adjustable_chain_gearshift_middle_horizontal.json -c3fdfa0ef84a598a17b2194fd0ea56fb323441d6 assets/create/models/block/adjustable_chain_gearshift_middle_horizontal_powered.json -9375c7e826b521209b73a2a8ba7fe63d3beb1bc0 assets/create/models/block/adjustable_chain_gearshift_middle_vertical.json -11c034a7689e3bc96cf54f67fd93bc3839ae19e9 assets/create/models/block/adjustable_chain_gearshift_middle_vertical_powered.json -221b65e4fed640dc77f8ec5fee300f2a199d05b1 assets/create/models/block/adjustable_chain_gearshift_single.json -ef644b33e136692c19cf8e79fcd28431b40dbb62 assets/create/models/block/adjustable_chain_gearshift_single_powered.json -68ad5cab7a32235aabf060f05d72d5a2dcfd0e74 assets/create/models/block/adjustable_pulse_repeater_powered.json -2c88abbdca1e59f971f28276477a24d81bee93e8 assets/create/models/block/adjustable_pulse_repeater_powered_powering.json -fde9ff3520cd7d2cc2926cf95cad8c7ec5bdcae9 assets/create/models/block/adjustable_pulse_repeater_powering.json -ce5e0cd1598cf2228bb77a68c304dd210f3848f8 assets/create/models/block/adjustable_repeater_powered.json -b62a75c96400bf75287091ce324727f00754bf31 assets/create/models/block/adjustable_repeater_powered_powering.json -ea279b9b1a2d1eab8a69e5e35627ada170013b89 assets/create/models/block/adjustable_repeater_powering.json -10832d276445d8a5f94413de1979349db1364ec4 assets/create/models/block/andesite_belt_funnel__extended.json -d01611179d3ed6c013f4f649127239772cbdeba3 assets/create/models/block/andesite_belt_funnel__powered_extended.json -ed52e27fd7d645c25dc9dc58a44f29be12cb6d5e assets/create/models/block/andesite_belt_funnel__powered_pulling.json -3c8ed64100de95994580a8e6e24c7b72f2332081 assets/create/models/block/andesite_belt_funnel__powered_pushing.json -240230f29d092505d47c83ae59f5c908e4bf4932 assets/create/models/block/andesite_belt_funnel__powered_retracted.json -c862af2b37ccfd0123e9e96a5400be82033bbdd3 assets/create/models/block/andesite_belt_funnel__pulling.json -884aaf754de0bfd51690aab6e01f775419728cf7 assets/create/models/block/andesite_belt_funnel__pushing.json -7b1888eec72c04677a3dfb709b04ad10d08d74d0 assets/create/models/block/andesite_belt_funnel__retracted.json -de448acc19ddd984f2599ce9ce5bf9489235fdc9 assets/create/models/block/andesite_bricks.json -3d285d395c45662a0ffe89c0259f519285cae899 assets/create/models/block/andesite_bricks_slab.json -6eecf3e3d3f184aa69d224bbb3b82b5164a8726b assets/create/models/block/andesite_bricks_slab_top.json -5faa0ffc6dc62b2391bbace7a5f0179a8ab92e6b assets/create/models/block/andesite_bricks_stairs.json -be7f1cbd9489e19a8b928438958a02f437a5d244 assets/create/models/block/andesite_bricks_stairs_inner.json -4658bf73f575628caa11f8fc28470209c5904d81 assets/create/models/block/andesite_bricks_stairs_outer.json -ce05c7fe01f1d491359f4db7914d9dfe44146c90 assets/create/models/block/andesite_bricks_wall_post.json -1d58235e937f342affb387192a62971a68c56051 assets/create/models/block/andesite_bricks_wall_side.json -602f741fe0594836ee81b1711f1bbcc7bca4c6b1 assets/create/models/block/andesite_bricks_wall_side_tall.json -4e44ccdc5e396c4380a7e59408db50553fa25226 assets/create/models/block/andesite_casing.json -33a3e4b7d78044e740d8ac8b6ac21bceaaf3d614 assets/create/models/block/andesite_cobblestone.json -67040762d99792f187257458325df4a1733a4fc1 assets/create/models/block/andesite_cobblestone_slab.json -97f69cb74150b1c8a04bb27bf741471c9b942af0 assets/create/models/block/andesite_cobblestone_slab_top.json -0c63e71a38b0c8fe3c45f84b587f78481619c5d1 assets/create/models/block/andesite_cobblestone_stairs.json -873148d69e4c4bbec96450dac544db11117d165a assets/create/models/block/andesite_cobblestone_stairs_inner.json -4005ee3942885a589648258fb1e140e08835e484 assets/create/models/block/andesite_cobblestone_stairs_outer.json -ea94d40df307d5792934bc532fc2d24d50efe756 assets/create/models/block/andesite_cobblestone_wall_post.json -aa5b45c6c657436bd38621344f6728d44ea974ad assets/create/models/block/andesite_cobblestone_wall_side.json -7c0e71f479aeef7bf02f0fb76c4333fa2227b83e assets/create/models/block/andesite_cobblestone_wall_side_tall.json -8d4e4a7c6ad6d45c7aa7ca3105a025511571ff26 assets/create/models/block/andesite_funnel_horizontal_pull.json -9841d6a09a09bf4d5d6a39bdc4904d86b3a825f8 assets/create/models/block/andesite_funnel_horizontal_pull_powered.json -86d5df6e365d9b2e9682f0839f61058360828ba2 assets/create/models/block/andesite_funnel_horizontal_push.json -50af1ff6ce9af162d4e438f21952c7215608dc8e assets/create/models/block/andesite_funnel_horizontal_push_powered.json -75c914bf9448e25fd01d597de48375a9782bef36 assets/create/models/block/andesite_funnel_vertical_filterless_pull.json -4d70a221809f5bc598a0a0e98bd152e9ab7a2f7f assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json -a41c7351513a9514dfdc0fc552b646b1d715c977 assets/create/models/block/andesite_funnel_vertical_filterless_push.json -e7931f28887baadd52ac988fc8eeeb84ee6f0d27 assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json -f77390658e8aeed4352e47b94fd24df116ea1857 assets/create/models/block/andesite_pillar.json -2294f74b5c30430de89a345af60f6669c975f33a assets/create/models/block/andesite_tunnel/cross.json -17f860947f51e84a3f9b32b10cdf61f863db3afc assets/create/models/block/andesite_tunnel/straight.json -e74aa39f8142293c202e57dbd92e8660818b18b5 assets/create/models/block/andesite_tunnel/t_left.json -c93978d636fe70d456a6e1914b65527cbc18544c assets/create/models/block/andesite_tunnel/t_right.json -2a86780c6825edce8fbdaa118a267fc09ce410b0 assets/create/models/block/andesite_tunnel/window.json -0ce09f6fdfb07dead5936c118efb4064f2f6f50f assets/create/models/block/birch_window.json -a5f0ed76e27d2ca706445f7f7c5f9270f98e34f9 assets/create/models/block/birch_window_pane_noside.json -9ad5224419ab7165c5208852bc4a4a5e65dcbf83 assets/create/models/block/birch_window_pane_noside_alt.json -f40c4d4ea6c037158f4b9862a7c11e6024a261e6 assets/create/models/block/birch_window_pane_post.json -dbfd2a996820d885d9741a3f168aa36c3538cfbd assets/create/models/block/birch_window_pane_side.json -557b35671ec417597259ba8d0239fe18c14c3d20 assets/create/models/block/birch_window_pane_side_alt.json -2b59d6f937cd542eba670689c30fe16887dfd9a0 assets/create/models/block/black_sail.json -97d79ab99c0fb278a9b5dc54e1c6563868f87b76 assets/create/models/block/black_seat.json -02747ea1a0e5d4a1cd466bf26878885a89d347fa assets/create/models/block/black_valve_handle.json -d876627b6e519c6f3f59c7c27cc7b0f903206f7c assets/create/models/block/blue_sail.json -e58b00a7222152d7facbe0e82f00933b974df747 assets/create/models/block/blue_seat.json -c7f91468b196fbda137e6b31764870b3bbfda6b6 assets/create/models/block/blue_valve_handle.json -213e99062a7f2a5e7464082d7975066bc6fc45e0 assets/create/models/block/bracket/cog/ground_metal.json -16e824026066d930187d812e77e2e582c0d3c1cc assets/create/models/block/bracket/cog/ground_wooden.json -8c22623c9565c66346600c0ccf9648c77c4a5870 assets/create/models/block/bracket/cog/wall_metal.json -3a9fc3d3f30af61b2db0cfdf365ec8d01f78f9b4 assets/create/models/block/bracket/cog/wall_wooden.json -f545a7631bce14e75c0a7df0baef00f9163c91d6 assets/create/models/block/bracket/pipe/ground_metal.json -ef4f1a0f5499674d5b3de8e584f380074c1ecb24 assets/create/models/block/bracket/pipe/ground_wooden.json -1de8d82b6355ab0028e7259ada0cc7a28bb0509b assets/create/models/block/bracket/pipe/wall_metal.json -6b8e7f992f6be00c22bda0dbeb71c3979c6ae903 assets/create/models/block/bracket/pipe/wall_wooden.json -c86a455b8e85ef190261718726b344cf15ba1e4f assets/create/models/block/bracket/shaft/ground_metal.json -8fa9ce896412af894d7c431a50104445d91b1d4d assets/create/models/block/bracket/shaft/ground_wooden.json -3956168840aca9425d3bf240650406c1dbc8ea66 assets/create/models/block/bracket/shaft/wall_metal.json -7aaa2fbdb618e8aab7e0da19a5393e1eaa608623 assets/create/models/block/bracket/shaft/wall_wooden.json -3fac6b1da6a81fc44a1ffe1e13dc6cfe37c3b738 assets/create/models/block/brass_belt_funnel__extended.json -2d10825bfd94419d5dbb4e60187127c4a1ce1526 assets/create/models/block/brass_belt_funnel__powered_extended.json -5ff7e01c5b65eb210a054556068d75426b547d9b assets/create/models/block/brass_belt_funnel__powered_pulling.json -e981727fd71e32ea2ecb8e057dfe123f1b940101 assets/create/models/block/brass_belt_funnel__powered_pushing.json -bc23a91f300e46761bb14c597fad39c3d414e84d assets/create/models/block/brass_belt_funnel__powered_retracted.json -dfc6250e28e12ff193a45891978ec50c406fc0c2 assets/create/models/block/brass_belt_funnel__pulling.json -5409325494780afe32e6e30377314e2992ca4aa5 assets/create/models/block/brass_belt_funnel__pushing.json -97410a12b7c1461f88fb633f26ff566a0636b627 assets/create/models/block/brass_belt_funnel__retracted.json -5adb8b446817eee3a31971d708320c7104d6bbd8 assets/create/models/block/brass_block.json -2e67c147d7c69aabd9ab9f7aa80f60671d5a03aa assets/create/models/block/brass_casing.json -f7fd1f49857eca94e4135e65c85127510d666e4f assets/create/models/block/brass_funnel_horizontal_pull.json -45a23298ad03fd3b5dc2757dcd7edc18b8cce222 assets/create/models/block/brass_funnel_horizontal_pull_powered.json -a9fc7210d44b47202438668f11b31099e82c9ebd assets/create/models/block/brass_funnel_horizontal_push.json -4049bf503ec2ee22412c59e05299de20319b0dc6 assets/create/models/block/brass_funnel_horizontal_push_powered.json -320e377a4380ac637bff2e0535f229c52d886437 assets/create/models/block/brass_funnel_vertical_pull.json -28c2f8ca6403f98b82e3a0eadb608a41490cc96f assets/create/models/block/brass_funnel_vertical_pull_powered.json -c4c46d47854c9a6cf8f410006a35bbc8e599f0d5 assets/create/models/block/brass_funnel_vertical_push.json -fd6f6607a4742fa87dfe1768927a29dc4975ce7a assets/create/models/block/brass_funnel_vertical_push_powered.json -520087db8d479c66f85f3483af813fb668f27503 assets/create/models/block/brass_tunnel/cross.json -347ed67bf3426e323354e2d959fc9563dc7eeecd assets/create/models/block/brass_tunnel/straight.json -a959e03ca339badb49fe58ba53d86a84352e91f3 assets/create/models/block/brass_tunnel/t_left.json -0585fbe58da3a8ed0dc98cc7ed79ac067312078d assets/create/models/block/brass_tunnel/t_right.json -a0612a633756433e1b37ddc6d290aa1fc07839ef assets/create/models/block/brass_tunnel/window.json -8ab097caaa0db0915ae9254f7d65092d9171bc60 assets/create/models/block/brown_sail.json -4eed0ad902f5e84f2b6c160f3283e8028640e77d assets/create/models/block/brown_seat.json -6c39677f8c3a84280835c717ea1ef569b7c76a1b assets/create/models/block/brown_valve_handle.json -db7279f05c1d89e21da8887a15d3a1cfff4a9cf2 assets/create/models/block/chiseled_dark_scoria.json -22d4ad2de48739ab754f8dfcd6f84ad2267abf8b assets/create/models/block/chiseled_dolomite.json -550dc0622377b4736610b1c924dc890c857a0fd0 assets/create/models/block/chiseled_gabbro.json -1deb93125b9a8cac79bec1f4ea5345d6ea857656 assets/create/models/block/chiseled_limestone.json -1cf4b68c8cf1885ede334fbfa54e52c76ba211b6 assets/create/models/block/chiseled_scoria.json -041a20dd674277ff4f1613a0a89600f05458edf4 assets/create/models/block/chiseled_weathered_limestone.json -4156227e18c0896ce83f260f71b939abbbf4f01e assets/create/models/block/chocolate.json -30fe120af3cb32faf0729df4d2cdf868f804be17 assets/create/models/block/clockwork_bearing.json -1f01a4b6608f75145734b60ddf4a33ce318425ff assets/create/models/block/copper_casing.json -b2c528cfd24a5cb0cb96c45d0a914f1090f8c32b assets/create/models/block/copper_valve_handle.json -1ef7060b0ca7e9c0bfc8151f98ca08da31862cda assets/create/models/block/crate/brass/bottom.json -4ef2c7c3018f2d219f159a3ce58ceb00610b9c5d assets/create/models/block/crate/brass/left.json -c76cfec1279d307c52f9502fdba3425f38219168 assets/create/models/block/crate/brass/right.json -9e55a49ecb99841627f5c2560e5b3c67310919ee assets/create/models/block/crate/brass/single.json -a09f639bde4c61d68592eb06c807e7a6791ff950 assets/create/models/block/crate/brass/top.json -917914f6b8aa9234bbffb434ba07f706c5d1232a assets/create/models/block/crate/creative/bottom.json -03a56c112a947735ff1682d5d9c3202e7796bce9 assets/create/models/block/crate/creative/left.json -7635211e4d833748acaea37ea48b1f749c32ea5f assets/create/models/block/crate/creative/right.json -a123e3c8a9e2ea1665f268cf3991aa7e4b3119c6 assets/create/models/block/crate/creative/single.json -29ab5cfe7aed1271ede125e91bf78c1372b5f96e assets/create/models/block/crate/creative/top.json -e04c4987746379ec24c63929abf0df4e41e13e6a assets/create/models/block/creative_bottom.json -5b1f6d98adf1e92f678a59b7eef720deeeda2795 assets/create/models/block/creative_bottom_window.json -6dd1cf78624d5ce69259fc723e9700bd842c94c8 assets/create/models/block/creative_bottom_window_ne.json -c0dfda633c3158633814e9a6cd4f4dba793ad4c8 assets/create/models/block/creative_bottom_window_nw.json -e30b13d2ae9a437664792c16be537cea73552cf8 assets/create/models/block/creative_bottom_window_se.json -8d68f53dfa4d17f8193cd8df693e340ac7a1b92e assets/create/models/block/creative_bottom_window_sw.json -77a84b8ca790ddef80e792beb79c2ae0db78005b assets/create/models/block/creative_middle.json -179f6208a04832141d83f9a6bef96334cf4fe4aa assets/create/models/block/creative_middle_window.json -cadd6df93f6ba708a3c92a958e88531cbc1d6ebf assets/create/models/block/creative_middle_window_ne.json -75b37b07555312798a519bea3325d4af6a57eb86 assets/create/models/block/creative_middle_window_nw.json -d9d6b61ba21270c83361b3ee2391161125dfc6f0 assets/create/models/block/creative_middle_window_se.json -73696b00c063cdf6c5a492eac7e5e06062abad88 assets/create/models/block/creative_middle_window_sw.json -3af304cfaa0cdba11c120e85cea88d96c986eebc assets/create/models/block/creative_single.json -feed58a4ad7d7a9e855f0cd7b3fc720616120b4b assets/create/models/block/creative_single_window.json -4f8753ba3a04853fb006be37e15d760cc154d937 assets/create/models/block/creative_single_window_ne.json -39ee24e3b1e06d38bfa4ef36aa4f89577c7f6eab assets/create/models/block/creative_single_window_nw.json -81250161ba79b846614859fe8c991c9e18bf77ba assets/create/models/block/creative_single_window_se.json -0fdca0706c76794586199287f1e29c8e87ef6385 assets/create/models/block/creative_single_window_sw.json -873b263b688f191a927a63b2d873a797eab801e1 assets/create/models/block/creative_top.json -723c5db04011eeb1f2e0483f3466bf05432c5f4c assets/create/models/block/creative_top_window.json -0994ef30adac0d9faa19d06fd933eb16b11d1ef3 assets/create/models/block/creative_top_window_ne.json -59c43cc18525792ca96026c966076f52cf7ebef7 assets/create/models/block/creative_top_window_nw.json -a6eea01609266b757342984889af16234ecd5189 assets/create/models/block/creative_top_window_se.json -6e1d2fb66291f2a3e3a213f43b47fb9760cb959f assets/create/models/block/creative_top_window_sw.json -8390ebba3a149135c21a3e48fcc84660eea5f766 assets/create/models/block/crimson_window.json -5e0c0ac8b2d222bb359a84a1f179c54c823ad5b8 assets/create/models/block/crimson_window_pane_noside.json -19503fe4a6eec4d250efb1a7a4fe53fd1035b429 assets/create/models/block/crimson_window_pane_noside_alt.json -14a14ab7c1a812a5ac8e282747f125461bf6b1d5 assets/create/models/block/crimson_window_pane_post.json -b9e6d8befe3f2281413288e0350425987256e238 assets/create/models/block/crimson_window_pane_side.json -bcbfa40524cff0314d9e764a64f90f2095d14064 assets/create/models/block/crimson_window_pane_side_alt.json -68843a02a32c156afad85830877b83f9b51c5147 assets/create/models/block/cyan_sail.json -6704782830b3d872321e895b6903709c18e3778f assets/create/models/block/cyan_seat.json -f45ef4a5f0aa8482d493661673b1c0ab6d061157 assets/create/models/block/cyan_valve_handle.json -f5ac5007454cb04490e36f39e9047cc90501b2f6 assets/create/models/block/dark_oak_window.json -d1914f0b453d360221b14ff128f5a5040441a0c6 assets/create/models/block/dark_oak_window_pane_noside.json -ebee7c581235fb4166862c238469bf7c81bf0b8c assets/create/models/block/dark_oak_window_pane_noside_alt.json -92f856a51b8cf433beed6aebea70304062e0073b assets/create/models/block/dark_oak_window_pane_post.json -7be662a7534de3932eb0790a0387ba4049938e0d assets/create/models/block/dark_oak_window_pane_side.json -22a3f10d9c541c5503fa7c1a4d5caef06f53f287 assets/create/models/block/dark_oak_window_pane_side_alt.json -b9f6de353a4ed2ff9d62f74689a38a1b7b42fda4 assets/create/models/block/dark_scoria.json -6d383bf3ac6f8cfce8ec8aae8c04d0fdbe9188bb assets/create/models/block/dark_scoria_bricks.json -6679044b854314fb6879e8949091ea546b508ea7 assets/create/models/block/dark_scoria_bricks_slab.json -a93395d01c2a7ecb1e9b9d515f6ef1cf54a08c98 assets/create/models/block/dark_scoria_bricks_slab_top.json -cee30fc817760cb285089cdf8e6b7aeb12ba32f2 assets/create/models/block/dark_scoria_bricks_stairs.json -ebb4ce21338cc316771b3418e0ff3a5f49692315 assets/create/models/block/dark_scoria_bricks_stairs_inner.json -74ff3f848dd7cef18af53ccd9de37888f71e3a7f assets/create/models/block/dark_scoria_bricks_stairs_outer.json -4f71dba3766029e91fb83a16f63056951fa2a0f5 assets/create/models/block/dark_scoria_bricks_wall_post.json -338dcf43999be383a266a6b8feb4f6b4b289b2c2 assets/create/models/block/dark_scoria_bricks_wall_side.json -c5f03f56a1985b7d803fab74af8e941c56a74656 assets/create/models/block/dark_scoria_bricks_wall_side_tall.json -f6df99387ebcd3b113049cec593b329b4edc201c assets/create/models/block/dark_scoria_cobblestone.json -2a9117f1ac977628134417e1653374353d5d7478 assets/create/models/block/dark_scoria_cobblestone_slab.json -7f336fc5adec46c56316f3fea57499a3c75d125a assets/create/models/block/dark_scoria_cobblestone_slab_top.json -3e5a8b25291f34b865d0ed982a3a5a993466dbbd assets/create/models/block/dark_scoria_cobblestone_stairs.json -85a8a9e4cafee7cbce29ee02e8da0d7397eecd8b assets/create/models/block/dark_scoria_cobblestone_stairs_inner.json -1bf11c6ac8323110c082fb7631cab9670e85fabb assets/create/models/block/dark_scoria_cobblestone_stairs_outer.json -607f2f3fde2cb651170996ca54b548f78f57fc01 assets/create/models/block/dark_scoria_cobblestone_wall_post.json -81a6b3b17aeaab343cc2118af09c42609a672e05 assets/create/models/block/dark_scoria_cobblestone_wall_side.json -4d87cf568af6d547c1aa37a19d245d9803f71c48 assets/create/models/block/dark_scoria_cobblestone_wall_side_tall.json -ef13cb3904ae5a58c1ee1d5c5f4890100b2c83e6 assets/create/models/block/dark_scoria_pillar.json -14185f85fa40aca8faac0db0a49caf1d7c447e6b assets/create/models/block/diorite_bricks.json -0256c5fbd1d17ef12eb669f7fa3d19286987b757 assets/create/models/block/diorite_bricks_slab.json -4e75faf1a393aa7ae9f0126a5af4fb076bbe45b8 assets/create/models/block/diorite_bricks_slab_top.json -f221cdc538812bacff510292ccab09703b483d92 assets/create/models/block/diorite_bricks_stairs.json -4d7fcffcb3819dc30b936f6f0736e76842025e01 assets/create/models/block/diorite_bricks_stairs_inner.json -a1ce8c61ca6e8f3d8bb8a369e3b9615d6c64b37d assets/create/models/block/diorite_bricks_stairs_outer.json -51dca9272e4eb965ece1744ce46c295eeaccc587 assets/create/models/block/diorite_bricks_wall_post.json -5b7fcebc241c23a46bfe561f5c50e53bd70df589 assets/create/models/block/diorite_bricks_wall_side.json -8011a39fe0edaf13013a4885c6137994ad72d35b assets/create/models/block/diorite_bricks_wall_side_tall.json -268a5c6bdb9203ddb657295d5478abbb1e383d92 assets/create/models/block/diorite_cobblestone.json -83d0e0a294b7879be1a526f781bac8df9e74d061 assets/create/models/block/diorite_cobblestone_slab.json -c129369c66e8ab9d58f22e69a706a6fbc49540d6 assets/create/models/block/diorite_cobblestone_slab_top.json -e913be24e7701292ed37f5efe35f670edb7b8383 assets/create/models/block/diorite_cobblestone_stairs.json -7c3c7e3b00c1db496d8ff51a004c18362dad4252 assets/create/models/block/diorite_cobblestone_stairs_inner.json -da009814dd8ce2d15212c8f7e9af3a60a1680e99 assets/create/models/block/diorite_cobblestone_stairs_outer.json -e839463ea43e5e5eb88c2c3d37b86d6dd934d8b0 assets/create/models/block/diorite_cobblestone_wall_post.json -4c4d40cfe1b2a03584e1b2998a48392efe50d2e4 assets/create/models/block/diorite_cobblestone_wall_side.json -8ef4bc97a1e61e4604f1b774c95fcd5f75efb93b assets/create/models/block/diorite_cobblestone_wall_side_tall.json -8d6c9b0f04df490a538fafd221f96f41d530b027 assets/create/models/block/diorite_pillar.json -8a542f001f83a6fec09205b01f95de98e4c7b9e2 assets/create/models/block/dolomite.json -d14d17594c7f082d5116a98fde7cc3e89d2994f0 assets/create/models/block/dolomite_bricks.json -1b8c1706838ee851c08b48dc5319cb050127f7b6 assets/create/models/block/dolomite_bricks_slab.json -40e83ceb543602e7ac492539fb1c82623326744d assets/create/models/block/dolomite_bricks_slab_top.json -941becbb7b24aba402d9c1a8469e5c4474d5796e assets/create/models/block/dolomite_bricks_stairs.json -6a2a86684046ebdc1896c558e5074a4fb264b4cc assets/create/models/block/dolomite_bricks_stairs_inner.json -10930b8099f3debbcc6d9cbebf4f1e06f6efec67 assets/create/models/block/dolomite_bricks_stairs_outer.json -865f13731f268738bc4f5abf4c8508f51bcf5d8d assets/create/models/block/dolomite_bricks_wall_post.json -67063dc664eaf25284a4db772d11514163950835 assets/create/models/block/dolomite_bricks_wall_side.json -edfe903d4b7114903579d463a9f646471de88f04 assets/create/models/block/dolomite_bricks_wall_side_tall.json -d1dbbc57d2a83e02b2af81e91dcd3b4b5e3d4975 assets/create/models/block/dolomite_cobblestone.json -693da6d55884a0cad25dc4c8cce4f031d8074573 assets/create/models/block/dolomite_cobblestone_slab.json -5c2083992e0be36cbdf71f07117793ab1bc85e40 assets/create/models/block/dolomite_cobblestone_slab_top.json -509bb35202791d0fcfb3374e340e7469c280c68a assets/create/models/block/dolomite_cobblestone_stairs.json -b0bb64b0d78f767ced3622a7231f52f6b6f6bbbe assets/create/models/block/dolomite_cobblestone_stairs_inner.json -f5322b52daff06bd1ebf87415b8e333e66d22920 assets/create/models/block/dolomite_cobblestone_stairs_outer.json -dba1df027963cddf283d81ab014f9fc4a8efe5fb assets/create/models/block/dolomite_cobblestone_wall_post.json -f09c30ce1edfa2e59b56d17a76243cefc1c78dd6 assets/create/models/block/dolomite_cobblestone_wall_side.json -e38a985deccedf9eeff61ae268c181bb5bfff224 assets/create/models/block/dolomite_cobblestone_wall_side_tall.json -5e39ecedd6d79b5b858a10722df8d6bb35bf7de9 assets/create/models/block/dolomite_pillar.json -489c20dc7506d73e128c3113d52912a651c5ced0 assets/create/models/block/fancy_andesite_bricks.json -cbfafcd4723fb660637a631bfdcf014097c72b36 assets/create/models/block/fancy_andesite_bricks_slab.json -80054d5af2c6ac4cff85acec7060cff0e34e1381 assets/create/models/block/fancy_andesite_bricks_slab_top.json -a96ee6b47596ea0e0ecda2b616ea7ea23d3c67c0 assets/create/models/block/fancy_andesite_bricks_stairs.json -57ac5569dadd908ae2be2456a2235bc294cb96bc assets/create/models/block/fancy_andesite_bricks_stairs_inner.json -70f8a95c1d88fa400f2ed3974efa8254e8da17c1 assets/create/models/block/fancy_andesite_bricks_stairs_outer.json -f170475f5145a9b06a308fb892b1bdd732036cfa assets/create/models/block/fancy_andesite_bricks_wall_post.json -80cdb62798a4f197b31adb9422a6e80443bcb58f assets/create/models/block/fancy_andesite_bricks_wall_side.json -f24d9009e8fd4e702f7211a486b909e7d4a0ed3c assets/create/models/block/fancy_andesite_bricks_wall_side_tall.json -9b18f371a9d56d89e177921b38f1eaa65be25725 assets/create/models/block/fancy_dark_scoria_bricks.json -44f964bb9cedda2557e9a652a144c2198c4a7070 assets/create/models/block/fancy_dark_scoria_bricks_slab.json -1ac687280be50b6f5642ad3a58110a37e6732798 assets/create/models/block/fancy_dark_scoria_bricks_slab_top.json -ff2a5eb23fbc40462ee57b278d605e21edbe2cbf assets/create/models/block/fancy_dark_scoria_bricks_stairs.json -ddacd07e953bf381f2266bcc8b2fed32e7b035aa assets/create/models/block/fancy_dark_scoria_bricks_stairs_inner.json -c24db1bdfc182042ec36b745f36e1f70af4269e9 assets/create/models/block/fancy_dark_scoria_bricks_stairs_outer.json -382cfe4b53714ce461576cfebb92508c2c5b4daf assets/create/models/block/fancy_dark_scoria_bricks_wall_post.json -24aa38a3bd3fe3bc8fc6b6bd73bac3c00d389f49 assets/create/models/block/fancy_dark_scoria_bricks_wall_side.json -60687b5250adbf2899756ffa0f6c521bbf92a0ec assets/create/models/block/fancy_dark_scoria_bricks_wall_side_tall.json -7bb168b8a313a6df7d74a40bcc50b5ac5235a8ad assets/create/models/block/fancy_diorite_bricks.json -87394a268fe9075b21bcaef3197331dd352735c3 assets/create/models/block/fancy_diorite_bricks_slab.json -5ab5b40702b5b238eceb7fe2777aba743759e6c6 assets/create/models/block/fancy_diorite_bricks_slab_top.json -d029ef8b094a38f2e21569372d812c5e616a5cb7 assets/create/models/block/fancy_diorite_bricks_stairs.json -02a0d08ab71c863e8d72b799e2a195e2b6de9c88 assets/create/models/block/fancy_diorite_bricks_stairs_inner.json -158c87cfd4073577da85f81dfee0a0682d84cf28 assets/create/models/block/fancy_diorite_bricks_stairs_outer.json -7735bc449f719196504977a83a6342ea376a4349 assets/create/models/block/fancy_diorite_bricks_wall_post.json -f582b920a09424326ecc1a5ad042673825ddd63a assets/create/models/block/fancy_diorite_bricks_wall_side.json -0e36a523baa20454b4b301d37c7a12d574fb8cfa assets/create/models/block/fancy_diorite_bricks_wall_side_tall.json -649e285e01eee4fba10d411619ed74517aa7c221 assets/create/models/block/fancy_dolomite_bricks.json -5c27d32fe145925bda5fe073b81070a9bec93fb3 assets/create/models/block/fancy_dolomite_bricks_slab.json -8828b7c7142222ba15ef5f76bb347357d28363c8 assets/create/models/block/fancy_dolomite_bricks_slab_top.json -f25ca562e30f56c2f28581e0b85f1546ad02fa7e assets/create/models/block/fancy_dolomite_bricks_stairs.json -3b0bc61f00c744669faaa7bf60dadc58db66b06f assets/create/models/block/fancy_dolomite_bricks_stairs_inner.json -e2a4b49535bff7f72e0aed3384416a98c7e27716 assets/create/models/block/fancy_dolomite_bricks_stairs_outer.json -8d97d5be4053883fe230f5cb2eb2156fbcb164b4 assets/create/models/block/fancy_dolomite_bricks_wall_post.json -8c1f3dcf25aa06f75e238938e3bedb60fc863689 assets/create/models/block/fancy_dolomite_bricks_wall_side.json -6c2ae8aa965a760783fd43726ff3f91beb2a72e2 assets/create/models/block/fancy_dolomite_bricks_wall_side_tall.json -c16aab98fded136e2a41ba14ae4e0475da6062c0 assets/create/models/block/fancy_gabbro_bricks.json -21d497f0899813f81848cc6fc4810e5fe63f521c assets/create/models/block/fancy_gabbro_bricks_slab.json -92dc64333330f35ce3b6f9108f273e52a5bb9e23 assets/create/models/block/fancy_gabbro_bricks_slab_top.json -99d90844f8b855deb428209fe1fc27a2aed35e38 assets/create/models/block/fancy_gabbro_bricks_stairs.json -c1f1052a0a1d39c8bc577f124870df9409d56f5f assets/create/models/block/fancy_gabbro_bricks_stairs_inner.json -b64992036f07b73d3bcd96191c2c29f953efdf2d assets/create/models/block/fancy_gabbro_bricks_stairs_outer.json -f6fac15ca4f51cabac7986eb27f9bc8436798595 assets/create/models/block/fancy_gabbro_bricks_wall_post.json -37ab1882407053ce95934b8eab190005a61b94d3 assets/create/models/block/fancy_gabbro_bricks_wall_side.json -bb1ea3a25950249d5594f2912ad635d15963209b assets/create/models/block/fancy_gabbro_bricks_wall_side_tall.json -56156acd09e621fff1ac20814fb070f074bfb4cd assets/create/models/block/fancy_granite_bricks.json -650e3ef58369cb932e317f0b8f795095201262b2 assets/create/models/block/fancy_granite_bricks_slab.json -21aad26099be9f3f1b0cdd1d65493c99ff803878 assets/create/models/block/fancy_granite_bricks_slab_top.json -49459e34fb078677d7ac3e51c56c2c187a6f7953 assets/create/models/block/fancy_granite_bricks_stairs.json -2b6fc0a03335521f7077abf87a8a6659263d5d1f assets/create/models/block/fancy_granite_bricks_stairs_inner.json -49c9ea8b3d28c1a8b6e3eea656ce33aeca22a5e6 assets/create/models/block/fancy_granite_bricks_stairs_outer.json -983b73c5e40969711a7005736df3150a74856726 assets/create/models/block/fancy_granite_bricks_wall_post.json -aee26644ef11d70260aecfb672f60438ecb6c2a6 assets/create/models/block/fancy_granite_bricks_wall_side.json -b487d415e8907ccdafbc70c7984998854abe7880 assets/create/models/block/fancy_granite_bricks_wall_side_tall.json -8c60c75e807536b05c107bab254ff6ab09b739e1 assets/create/models/block/fancy_limestone_bricks.json -f477c2c20c5cc7bd757e922a0c9355cb19b34f83 assets/create/models/block/fancy_limestone_bricks_slab.json -f00c29d425da90d8b3240b77cfb88ceaf6afab78 assets/create/models/block/fancy_limestone_bricks_slab_top.json -ec4bf9b0617c29fa44aabb23d5054bb17682abba assets/create/models/block/fancy_limestone_bricks_stairs.json -01a463a58c18187c9f79ca64263944bf2ea053c9 assets/create/models/block/fancy_limestone_bricks_stairs_inner.json -fd095f4683a090d1d5cd4e53e8b7456d681db426 assets/create/models/block/fancy_limestone_bricks_stairs_outer.json -98811f6422cdf0e19471ec05615e87c53caf711f assets/create/models/block/fancy_limestone_bricks_wall_post.json -265f732337fe09912c6e0636c653c0bf12f9a5f8 assets/create/models/block/fancy_limestone_bricks_wall_side.json -7c6f56bd05acc6844b99c5757369c0cdebddc12f assets/create/models/block/fancy_limestone_bricks_wall_side_tall.json -7cabc6c5ce879c2f1709fe3367aec4a11ad4cbd9 assets/create/models/block/fancy_scoria_bricks.json -cafb9eb7ba8c18f7ae6067c62facaec9868ebb48 assets/create/models/block/fancy_scoria_bricks_slab.json -290e52d2ff26ce579a64b5476b283f3cfb543bf5 assets/create/models/block/fancy_scoria_bricks_slab_top.json -7b04dc34f640cd56026bc6bc8a64f662c1baa084 assets/create/models/block/fancy_scoria_bricks_stairs.json -b4adb6686f3f761dd8e2acbe443536f2dcd0b521 assets/create/models/block/fancy_scoria_bricks_stairs_inner.json -22e85cfab9ce8519debced054dc513f2df5f3c4f assets/create/models/block/fancy_scoria_bricks_stairs_outer.json -0dd6cdb9c49eac40292047a697b73b0e3f67cadf assets/create/models/block/fancy_scoria_bricks_wall_post.json -2314ae5865cbbc927f16902c270b637ed7657f7a assets/create/models/block/fancy_scoria_bricks_wall_side.json -df83f318dc824d12be532f55302ee67c61b3229a assets/create/models/block/fancy_scoria_bricks_wall_side_tall.json -5b55183ba555f76e42bc53c786be97e51f4d0bf8 assets/create/models/block/fancy_weathered_limestone_bricks.json -b7966bf07ff8272b80b1886a833fe6ab563315bd assets/create/models/block/fancy_weathered_limestone_bricks_slab.json -affca2bf79c86505f0fed32b821af3f65dce73cd assets/create/models/block/fancy_weathered_limestone_bricks_slab_top.json -fef76e7ffc390e3c56222c84fb32f9d92479f259 assets/create/models/block/fancy_weathered_limestone_bricks_stairs.json -f56f3d6a4a678cfd7a8d618c784ce6d7293d0bf4 assets/create/models/block/fancy_weathered_limestone_bricks_stairs_inner.json -c395d4be2554efec583dc940e540f235d459e1c6 assets/create/models/block/fancy_weathered_limestone_bricks_stairs_outer.json -eaedc072f8ae70db3ffb34b0a71ffc2d40387dfe assets/create/models/block/fancy_weathered_limestone_bricks_wall_post.json -fb5797cc9cbe457b7b435164d6a1622e26cf1eac assets/create/models/block/fancy_weathered_limestone_bricks_wall_side.json -dd4011acc0f15444da84461387501a2ee02ad075 assets/create/models/block/fancy_weathered_limestone_bricks_wall_side_tall.json -71f74388319567d4ab13c508bf3b4d59f1a19b2f assets/create/models/block/fluid_pipe/ld_x.json -bd6b0c6d773e3996d949de55873d20b0e192499d assets/create/models/block/fluid_pipe/ld_y.json -ddba92d010016a0147ceecc30a30c9c1622d3daa assets/create/models/block/fluid_pipe/ld_z.json -451b1d6934cb5dfe24b8adcc3b4a03a0d2be854c assets/create/models/block/fluid_pipe/lr_x.json -0276dc98fdac701d6dd8759325bbb9cab1fd4e9d assets/create/models/block/fluid_pipe/lr_y.json -c7b8990a135f7c85f4c746b9d65ccd12f1c91682 assets/create/models/block/fluid_pipe/lr_z.json -4613bc343fa2989234cca21d407bf23131856729 assets/create/models/block/fluid_pipe/lu_x.json -596ac821bce7ce390ff7db9a8f4e33504b657e78 assets/create/models/block/fluid_pipe/lu_y.json -693cdb2c8673161b2c12a05826ef881293db43d1 assets/create/models/block/fluid_pipe/lu_z.json -05159abc175a1fc9f4909ffa13090d0e142fa526 assets/create/models/block/fluid_pipe/none_x.json -e96e9c244b9392a0b328caa6084dc78bebca8b03 assets/create/models/block/fluid_pipe/none_y.json -85129ba2b9b8794e4e9424ad4428a5d7a5b56c41 assets/create/models/block/fluid_pipe/none_z.json -9d99fcd87fddfdf6f525e4d81cf08f1abfd3c749 assets/create/models/block/fluid_pipe/rd_x.json -4d823bc466fc21d080e2fcac3c8fdeb8f74a5f98 assets/create/models/block/fluid_pipe/rd_y.json -26d9d1c0f249a301d03497a1455335d1654f6db3 assets/create/models/block/fluid_pipe/rd_z.json -7cd3f00c05a2beb1b438c8daa415db258095bf2b assets/create/models/block/fluid_pipe/ru_x.json -c09f2f36e3df4642b48f9e331d5000c4f58047ca assets/create/models/block/fluid_pipe/ru_y.json -690c9c3dd5ad31a5f885ecaac4aa6d3a1ccbf7fe assets/create/models/block/fluid_pipe/ru_z.json -2635da812f9dec0c408fed329b3962bd14972d95 assets/create/models/block/fluid_pipe/ud_x.json -4a0d4fb1aaf05b8f388e4add0f45d2a22dde2ce6 assets/create/models/block/fluid_pipe/ud_y.json -f7d3a9ff5a0d050f5822dba9ec6cb68a2e4cdecf assets/create/models/block/fluid_pipe/ud_z.json -b1e94d2858c3a8807def6c5131b6f63fe586fb91 assets/create/models/block/framed_glass.json -d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets/create/models/block/framed_glass_pane_noside.json -3e975bec02e2670ce2b1868cebcbd780a5ebf3f8 assets/create/models/block/framed_glass_pane_noside_alt.json -a5938ddd48109f067a19a90a0f9abab655c18821 assets/create/models/block/framed_glass_pane_post.json -41645919ece236df5804a5a73ef682720194de34 assets/create/models/block/framed_glass_pane_side.json -8bc0abaabdc62d0c27730dba7eb6da54607b7e96 assets/create/models/block/framed_glass_pane_side_alt.json -894518bf911d73cece24d4557ab29829829d70c0 assets/create/models/block/gabbro.json -d84f558506d4a399f72d86b15f318b234ce67e58 assets/create/models/block/gabbro_bricks.json -6ca3de3137526e3e103b9759c9f79edcaec3bab3 assets/create/models/block/gabbro_bricks_slab.json -fd6102766ba2567a70c86e7613992a23a5a3e7c6 assets/create/models/block/gabbro_bricks_slab_top.json -ae26c480f3d9d51c8b9d2e20427ec9234a0db8d5 assets/create/models/block/gabbro_bricks_stairs.json -8a19d9f9f8f1d0f0ea9311cb8b2488c5027fba25 assets/create/models/block/gabbro_bricks_stairs_inner.json -78d2189693c37ff41751cc5f0464f88c36482d77 assets/create/models/block/gabbro_bricks_stairs_outer.json -79e4fcf540e86a4d5910d57d9d9045ce181b0070 assets/create/models/block/gabbro_bricks_wall_post.json -49398d10642388e8301159505dde8b0c25ab2edc assets/create/models/block/gabbro_bricks_wall_side.json -23854558036ea469c6d78880d0f5244b64fdb418 assets/create/models/block/gabbro_bricks_wall_side_tall.json -c50dddabd9be06f251f6bedcf7e122eb79bb9400 assets/create/models/block/gabbro_cobblestone.json -19f29ac6c463b21311629ef277ddb6dc0673caa1 assets/create/models/block/gabbro_cobblestone_slab.json -3eaa34ce53980d6340547445536444f5fcfd4e2c assets/create/models/block/gabbro_cobblestone_slab_top.json -ca94584799cbc0861e783dee631ea70e154a0898 assets/create/models/block/gabbro_cobblestone_stairs.json -47ea92c04b31fc43a2123d418ac2142f7104d780 assets/create/models/block/gabbro_cobblestone_stairs_inner.json -dc099cc48208c776cb561fb0cf20142fe1f905a4 assets/create/models/block/gabbro_cobblestone_stairs_outer.json -acb516b2ecb4bbb8dc9c7c4a8b4ef8f7347af0f7 assets/create/models/block/gabbro_cobblestone_wall_post.json -a66072ee1cd164a10935417c036f4f55772769b1 assets/create/models/block/gabbro_cobblestone_wall_side.json -b8f5a5d25a3e3731670b4a7f7c83fd22f72ebd1d assets/create/models/block/gabbro_cobblestone_wall_side_tall.json -4f8ee4ea7f0a79f7da29414397d8829c1969b7b5 assets/create/models/block/gabbro_pillar.json -f7f55d8107d9128f7be42b2a07fd99aeeba44954 assets/create/models/block/gantry_shaft_end_flipped.json -33196bb0c2f7ca356fc62854349a3ab5fdf2d119 assets/create/models/block/gantry_shaft_end_powered.json -410c0ae1995a079766cab96a3545bb61159feba3 assets/create/models/block/gantry_shaft_end_powered_flipped.json -d66f23d811a09c7e3dad5900f9851282be2f64b7 assets/create/models/block/gantry_shaft_middle_flipped.json -9551abd37c295fe2541f2aee01dd72bfb71b8ae1 assets/create/models/block/gantry_shaft_middle_powered.json -deff4f1163284c22a60d403000c0cd7553d6caff assets/create/models/block/gantry_shaft_middle_powered_flipped.json -16eb7950f81e7242d277f5b0b2710ade820f5645 assets/create/models/block/gantry_shaft_single_flipped.json -78b51bdfa1d26f909e2d3a3ddb70a5631f4fa75f assets/create/models/block/gantry_shaft_single_powered.json -c81b86c2186cbe9867ea041776c8e70059d70f7e assets/create/models/block/gantry_shaft_single_powered_flipped.json -347430ecc316d502cea2e0f90d43ff106e9cb15c assets/create/models/block/gantry_shaft_start_flipped.json -0e1a5a8f38cd6cd3e2f7d2c0d147d924414b0560 assets/create/models/block/gantry_shaft_start_powered.json -4b2f2e9eb3d426b56bb2e0f530b249469200afd0 assets/create/models/block/gantry_shaft_start_powered_flipped.json -adf7ef2d029fb6b26a445de79c62b710e6832c06 assets/create/models/block/granite_bricks.json -47765dd5359ab0a1d76cbc503d621250224063fd assets/create/models/block/granite_bricks_slab.json -80d7b25ff3782fc7e5cd419e275300fe3722892d assets/create/models/block/granite_bricks_slab_top.json -a56aa126a5a4a88914e62926630f5548b24c62e0 assets/create/models/block/granite_bricks_stairs.json -cdafe87bed3980b6109a2d85dd85a207967382da assets/create/models/block/granite_bricks_stairs_inner.json -b15b4ef4354b189b678fa944cf3ad456480fd30a assets/create/models/block/granite_bricks_stairs_outer.json -45999378195baa93e1eec5e58c0065a3d255490b assets/create/models/block/granite_bricks_wall_post.json -c1c86afd629d16387627d1f136e5ab6f846e072e assets/create/models/block/granite_bricks_wall_side.json -44df8fb0bcf2bb17aa0c70ae3829d01c3452e4be assets/create/models/block/granite_bricks_wall_side_tall.json -8804fa93deed01d2c488894ae0f4e35ceed0218c assets/create/models/block/granite_cobblestone.json -ea28ac79636a92779066ab43d727cc0dd99f12a5 assets/create/models/block/granite_cobblestone_slab.json -0425978f192f8dbaa6e077739f4ef77443b03b7f assets/create/models/block/granite_cobblestone_slab_top.json -9f1243adc9affaaaa43355a73570d8b8cc0b76ab assets/create/models/block/granite_cobblestone_stairs.json -ddc8bf8dc62464d424ab812f801dd7a1f68072d0 assets/create/models/block/granite_cobblestone_stairs_inner.json -2ed22800ed503bd0b903b2b7ed86209861833fcd assets/create/models/block/granite_cobblestone_stairs_outer.json -01236266fd0d5057e97dea0fbb114de702fe2c48 assets/create/models/block/granite_cobblestone_wall_post.json -87f6b4e30f2cdd0ddb3b48e43f15317b386597e6 assets/create/models/block/granite_cobblestone_wall_side.json -5c7340740d822deae7aa32c15c36531476862fbb assets/create/models/block/granite_cobblestone_wall_side_tall.json -f55c5825c63f345a95e822a2113e76b5a62d8f7c assets/create/models/block/granite_pillar.json -a68cd40ffb769b195437107f4a2c2188b222b74a assets/create/models/block/gray_sail.json -6eb5e59e803e1055968b90f3099cd0a17a1d3fd5 assets/create/models/block/gray_seat.json -7e213be39cc928363bf2b096f055439211050b8d assets/create/models/block/gray_valve_handle.json -17b651233c62b928f0228562a7f6e7a2b7b2d6b7 assets/create/models/block/green_sail.json -1438b8ce54ac5557b8f10dcef94f3525eae19461 assets/create/models/block/green_seat.json -cc7ce9b6bc687ad5027a67c3bf22bdf5bcd71674 assets/create/models/block/green_valve_handle.json -5163171ed77af879fa06f290bf24b1bb99735c94 assets/create/models/block/honey.json -b1e94d2858c3a8807def6c5131b6f63fe586fb91 assets/create/models/block/horizontal_framed_glass.json -d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets/create/models/block/horizontal_framed_glass_pane_noside.json -3e975bec02e2670ce2b1868cebcbd780a5ebf3f8 assets/create/models/block/horizontal_framed_glass_pane_noside_alt.json -a5938ddd48109f067a19a90a0f9abab655c18821 assets/create/models/block/horizontal_framed_glass_pane_post.json -41645919ece236df5804a5a73ef682720194de34 assets/create/models/block/horizontal_framed_glass_pane_side.json -8bc0abaabdc62d0c27730dba7eb6da54607b7e96 assets/create/models/block/horizontal_framed_glass_pane_side_alt.json -35253c91ed72c7c2ce981c384d334c1113851469 assets/create/models/block/jungle_window.json -65da656d412d973865f50ab7f02e278fe5398bea assets/create/models/block/jungle_window_pane_noside.json -9f4144df2e6b35c1fad04e594be5adb3b107bdb8 assets/create/models/block/jungle_window_pane_noside_alt.json -2e8cec84ae0fe8933a3e2e39721937673c4941d1 assets/create/models/block/jungle_window_pane_post.json -4e3cc8764a8e5cefd2dfb415e66e75c4059cb804 assets/create/models/block/jungle_window_pane_side.json -b233d493ec57204f7527c6ccf803580c1131b2ae assets/create/models/block/jungle_window_pane_side_alt.json -6abd1f7dd176b861e2335f65c8f8cdc50c90aaac assets/create/models/block/layered_andesite.json -be3a70d4f88abeb9321bdef6629790cb4220b688 assets/create/models/block/layered_dark_scoria.json -936e118bb2275fa468bc0d0e934a14e3a6c768ee assets/create/models/block/layered_diorite.json -e1add9f62cf886a7989f7ebb545906da16ad7a41 assets/create/models/block/layered_dolomite.json -3ed6faede6762dd9b44139d137ff081797189300 assets/create/models/block/layered_gabbro.json -650f878e71110f84abaa44c076b0c0023425be45 assets/create/models/block/layered_granite.json -cecf946818c65370b685dfeaade50819183acb41 assets/create/models/block/layered_limestone.json -258fb9644d396872719c56ae1ca89f50667a1077 assets/create/models/block/layered_scoria.json -60b05926e706d5dd27f3cb4997120c948797f2f4 assets/create/models/block/layered_weathered_limestone.json -19bd08ad6ac351e6eee2131f7b4c11a768bf8f08 assets/create/models/block/light_blue_sail.json -1a28b07da68d1461cd04c971ae548d94165e0cf3 assets/create/models/block/light_blue_seat.json -68e01f8d8a31f07f236383e19b49ae1be4cbe3f4 assets/create/models/block/light_blue_valve_handle.json -73f14b905d5fdb433751a33b963852de6491722a assets/create/models/block/light_gray_sail.json -292bec1b9f962b17b29147d982a9b177618b7eb9 assets/create/models/block/light_gray_seat.json -42338c4965da63962ea08077dc9e899aaf4c3c65 assets/create/models/block/light_gray_valve_handle.json -8292d043ebfe280340526a6a0f96d4160099e213 assets/create/models/block/lime_sail.json -31c9474210d8535c5417021fe042d4cc31e17328 assets/create/models/block/lime_seat.json -74008bd0d775b0e2e96b43be2e51d0f3c3abdf21 assets/create/models/block/lime_valve_handle.json -fccac0de94fff5f4e180fc9dbddeb0f8ddf3baab assets/create/models/block/limesand.json -3c49d63386b3f5326051edbf6e2f0f8f0e2ff4f3 assets/create/models/block/limestone.json -84920646b4df506f94e64611ee231f3af51b5379 assets/create/models/block/limestone_bricks.json -34a6379261b13f0b5b856bdcbecac1aa8de98ec8 assets/create/models/block/limestone_bricks_slab.json -a4eb94d59365c854b205c22b98c03742a3e45007 assets/create/models/block/limestone_bricks_slab_top.json -6030ff8209edb3ef04e6dcf83cf181ee4cad13fa assets/create/models/block/limestone_bricks_stairs.json -0e830acdd0e39b099d0d0b3f2b9326af0c182633 assets/create/models/block/limestone_bricks_stairs_inner.json -38c3bc0412baa9ed842c6436874c528e4a27fe00 assets/create/models/block/limestone_bricks_stairs_outer.json -d36db8a76c0abf8f42798fb2d8914d4aad0cb7b9 assets/create/models/block/limestone_bricks_wall_post.json -628493255ec16d79455bc54497c6a4b8207e0649 assets/create/models/block/limestone_bricks_wall_side.json -9c4cbf01802a59919c284bc616ae4d390b34d917 assets/create/models/block/limestone_bricks_wall_side_tall.json -93d3ca6df1c824a6f8b54d917bc61e48675f5ff5 assets/create/models/block/limestone_cobblestone.json -7786068e25079538528bf717e473d5c4e2266f7c assets/create/models/block/limestone_cobblestone_slab.json -454f09c5eb4c92bfa0e0b81c0b28c88caa78a907 assets/create/models/block/limestone_cobblestone_slab_top.json -213e897e2e2df5647e6c2df23691e52e92eaccab assets/create/models/block/limestone_cobblestone_stairs.json -c54e5a17495f88fa21b3488e8da32a365452c36c assets/create/models/block/limestone_cobblestone_stairs_inner.json -17cd5d20df9a8a16ad8993bcf5fc273ca80933dc assets/create/models/block/limestone_cobblestone_stairs_outer.json -464053d2fad1f398662a0878e6891a0dc613061d assets/create/models/block/limestone_cobblestone_wall_post.json -9d2826391999f3d65b948f560c91bc178dbe8846 assets/create/models/block/limestone_cobblestone_wall_side.json -6d4fb04b155e1460c6f8019491310707ed5cca28 assets/create/models/block/limestone_cobblestone_wall_side_tall.json -7527b3f1274744a64f7eb4bc94f7bc125dcbcf28 assets/create/models/block/limestone_pillar.json -0766a12c95977dfb8f3a8ea453d45c9832e7e824 assets/create/models/block/linear_chassis.json -7991d6620d2225b1a026e2b62dc076cf0a33613d assets/create/models/block/linear_chassis_bottom.json -56e585805c6235552ce5e15ff2f125ff8ec0fa2d assets/create/models/block/linear_chassis_top.json -12b35c916e3ee83ee4fd1e309c73403dec9a7297 assets/create/models/block/linear_chassis_top_bottom.json -ec6b5f636e163ff5e361d486cf628ca1af4849a1 assets/create/models/block/magenta_sail.json -cbee001cd1bb1125a97d1bb2d1e6e5a68f129303 assets/create/models/block/magenta_seat.json -bc5a03a5552eb4a518abefe5e8615f14ee13ca29 assets/create/models/block/magenta_valve_handle.json -2e67f27a895c9163a5d1be62897d5e66b119767a assets/create/models/block/mechanical_bearing.json -edf6ee4e590ebf162c00aa952d992f1bee2cad8a assets/create/models/block/mossy_andesite.json -55256e4df0038a619d80d3e6c50b0f3e3682e90a assets/create/models/block/mossy_dark_scoria.json -7b9609eaf8933de6db1a7114fd6631e7d9a16dd1 assets/create/models/block/mossy_diorite.json -a1846ec94662f06862efdc3f416be07039650d0f assets/create/models/block/mossy_dolomite.json -bc7302226ceac41eea2b857e4c49c00d307f682c assets/create/models/block/mossy_gabbro.json -f2f7cda5de21279ff8e359142c523e07a3377477 assets/create/models/block/mossy_granite.json -de9b0f933881cc735ae0acf2bd71e6eafa732ff8 assets/create/models/block/mossy_limestone.json -f88a9558a20033d4955e7b6de4f8aa23b1a11b9f assets/create/models/block/mossy_scoria.json -8c3296378aa7e5dc1bc7dfdde2f0a436b8bb8b78 assets/create/models/block/mossy_weathered_limestone.json -50f28bf7a7de95caf12b4f040994f0f3da72a55a assets/create/models/block/natural_scoria.json -e3cd8b33b8c5f0543e4f6728a5b3e05642f9efe1 assets/create/models/block/oak_window.json -54a3b3158f8c914788812aa44515b798b2a9e2f3 assets/create/models/block/oak_window_pane_noside.json -b9c27f90d4d258e3fdcd713aaa42142f5d46a79e assets/create/models/block/oak_window_pane_noside_alt.json -8c3fdc51742897d110641ba9127f857297300edb assets/create/models/block/oak_window_pane_post.json -8f77db5a66b165d2ca85f9119666907dcf65105f assets/create/models/block/oak_window_pane_side.json -b3e056a176e86660fc2d3a51f9ba8b01eebb56c5 assets/create/models/block/oak_window_pane_side_alt.json -ff9b51fcaffe54e321b9479f035f4ea7b278bfec assets/create/models/block/orange_sail.json -fda0628a09ef726e3e8323b2f38b6a3e612dc2ca assets/create/models/block/orange_seat.json -3b07f3f1985495051d173725b01ddd52b5f70ac4 assets/create/models/block/orange_valve_handle.json -de5ecd753303b2c5dc3819299b9a316f0d7035f6 assets/create/models/block/ornate_iron_window.json -cc9614e892b12c6053d45a35d534eddf36285cf1 assets/create/models/block/ornate_iron_window_pane_noside.json -6b935d54de7c37f835df48f7b6e5e614a0d12b6e assets/create/models/block/ornate_iron_window_pane_noside_alt.json -19942331411716035d79adabe6d2daadd6025e90 assets/create/models/block/ornate_iron_window_pane_post.json -f400ef18ae2860f52dafaf4fe869146ae87b7ed4 assets/create/models/block/ornate_iron_window_pane_side.json -fddc53d6ead0d834e964e6a0d5b4e3cf2ea2d48b assets/create/models/block/ornate_iron_window_pane_side_alt.json -c5aa882a2f971d5b0c359a2e5fc601192a4b9403 assets/create/models/block/overgrown_andesite.json -46b88c9c94c14de4ceec82dfa6fa3390781e096d assets/create/models/block/overgrown_dark_scoria.json -ca08c15006d65701d72bb88852df884236822522 assets/create/models/block/overgrown_diorite.json -86dc3aaec9ff33d80fa13728ffa160517d5f19ad assets/create/models/block/overgrown_dolomite.json -09cca6819f93b5a941b8de002fd9eec647230ede assets/create/models/block/overgrown_gabbro.json -558b2a0d44d745ae80d4e3a099cc4d457ba786e6 assets/create/models/block/overgrown_granite.json -3368bbdf335c81b9e84adc30afeab9261256279c assets/create/models/block/overgrown_limestone.json -c21c58e982ec0eb1c88948ac53b570b26bf1c9bc assets/create/models/block/overgrown_scoria.json -6d7842c5c0f58a3cb3150e54bee2b51e7138df45 assets/create/models/block/overgrown_weathered_limestone.json -8dfe5334887c09375f2571aa3835f2dd9de76875 assets/create/models/block/oxidized/copper_block_0.json -3f5af8864db20346df2463066265d7f6709a5e65 assets/create/models/block/oxidized/copper_block_1.json -ee0f11c96fafc164fd9ac64fde0f89cfd527a65a assets/create/models/block/oxidized/copper_block_2.json -060743439c0f0e991a7ccfcc9053ee9741e73805 assets/create/models/block/oxidized/copper_block_3.json -131b2a2b3c883deeb6af544f15fcc0d88a3ff5fe assets/create/models/block/oxidized/copper_block_4.json -4e0fbfc3b61f04f68c6022d6a9a9eabdffdd8673 assets/create/models/block/oxidized/copper_block_5.json -e3d374a2e5ceac212bed21b6ec964b4593aa847a assets/create/models/block/oxidized/copper_block_6.json -125966d6e25b601779e3bff4a9da84d85e3984ff assets/create/models/block/oxidized/copper_block_7.json -8f2b2d983c1a0d128dbb1d6465a4eb3a7f98e34c assets/create/models/block/oxidized/copper_ore_0.json -4fd860b564a98869c6450e21446e0e41a8303206 assets/create/models/block/oxidized/copper_ore_1.json -430a115e26a2e95b7a6c04746b10f617212a3091 assets/create/models/block/oxidized/copper_ore_2.json -596fb93cc5f59ccff8e84c07a99398f5ec20d169 assets/create/models/block/oxidized/copper_ore_3.json -d7e94d32a8c739fe8ccfc51b3bf5c1dff038b47f assets/create/models/block/oxidized/copper_ore_4.json -895d3ce98dc576b7396fa309dce69eaeba419c95 assets/create/models/block/oxidized/copper_ore_5.json -578ee4b7b0aaf4f5fbdecc7800f1d8b0d9ea6576 assets/create/models/block/oxidized/copper_ore_6.json -7c4e54d05a8e76e390044099ad02c5dd082f2460 assets/create/models/block/oxidized/copper_ore_7.json -2091e38299cd736320de736b9450e9b5209106cd assets/create/models/block/oxidized/copper_shingles_0.json -3614bcea228962535a048b68b3069a9058156a16 assets/create/models/block/oxidized/copper_shingles_1.json -3d2219e127df9e14109c876ef2e3499a21268209 assets/create/models/block/oxidized/copper_shingles_2.json -6f9461d372dbd9561460649a9325c62cd3f3ef36 assets/create/models/block/oxidized/copper_shingles_3.json -d9867c3574ecd484ea179a8ffc2d3b562a389bc2 assets/create/models/block/oxidized/copper_shingles_4.json -649cf546f5f4535f0936dedf0074aeb878829129 assets/create/models/block/oxidized/copper_shingles_5.json -c3bb01e750f02312c62990d71bd113df41f0746c assets/create/models/block/oxidized/copper_shingles_6.json -cde13928d8643fe28f891b4ed6358971b6eb49f7 assets/create/models/block/oxidized/copper_shingles_7.json -a223e5ddcd9c0f282a0193434189ae91b67e1571 assets/create/models/block/oxidized/copper_tiles_0.json -590c75f1c1a9013c8adb5b90f05e8578a75a140f assets/create/models/block/oxidized/copper_tiles_1.json -66af247eac88396e9c26b61443e2d324f250a160 assets/create/models/block/oxidized/copper_tiles_2.json -3fc4e85ed7115e4b3289739268b4366f8d8777c5 assets/create/models/block/oxidized/copper_tiles_3.json -abdcf49a3ad1a25b37653c1c6eccd24b9a97c87f assets/create/models/block/oxidized/copper_tiles_4.json -99580c32742505b9a2eb64185f9529a5388d2751 assets/create/models/block/oxidized/copper_tiles_5.json -be9ac7815d4bbf0c42dc40d20d34212250ac86a7 assets/create/models/block/oxidized/copper_tiles_6.json -a4e5715d04bd13860e2d5981c2122fbc6b435e80 assets/create/models/block/oxidized/copper_tiles_7.json -44abcee4d7f0d63d2f91b42a6e223cb8211597df assets/create/models/block/paved_andesite.json -afcf525fd574ebd6918d0357442d2f8099276079 assets/create/models/block/paved_andesite_covered.json -ee19b3143803e4d41639dbd564f84bf86b01d77d assets/create/models/block/paved_andesite_slab.json -39da471b29a69b94dd481b8a7d6aad2b8efcc993 assets/create/models/block/paved_andesite_slab_top.json -7f61f36812ec6f1a684bfc06e7058114dbe4c7d4 assets/create/models/block/paved_andesite_stairs.json -91a169ff2d8463520d419738d2341afdc4cf1f0f assets/create/models/block/paved_andesite_stairs_inner.json -7c7d1081ce8c4cf8c247afeafed434172c8ccd00 assets/create/models/block/paved_andesite_stairs_outer.json -b14d753208e48c3a2780d258bec6e0d20ccbafc1 assets/create/models/block/paved_andesite_wall_post.json -1edd248747a0db1381115b3ecc40f7fa24ae845d assets/create/models/block/paved_andesite_wall_side.json -5bfc3655067f7ac2e80dee3ccc1c4a9b387316a0 assets/create/models/block/paved_andesite_wall_side_tall.json -516936f48542723e9ea19fe06412348d36d4461b assets/create/models/block/paved_dark_scoria.json -5a9c0029ac5c10a65709bdf59a4f3dd778369370 assets/create/models/block/paved_dark_scoria_covered.json -4dfbc6beec27bf266b03a7fc9c9ddd8dc2d24745 assets/create/models/block/paved_dark_scoria_slab.json -9657df68fa3903ddef2aa49b88ec66a7e91ebb7e assets/create/models/block/paved_dark_scoria_slab_top.json -8c6fcbe10e4287e39b7f5161d677b628b933cb17 assets/create/models/block/paved_dark_scoria_stairs.json -fb5bd6499bf17d861d5f504b45d2caf9a734ff77 assets/create/models/block/paved_dark_scoria_stairs_inner.json -bc58687ad19f3a12b8c730dd2c7284b3baff370c assets/create/models/block/paved_dark_scoria_stairs_outer.json -346b7db2932c5f32a26e35bf0383b33c6109ee3c assets/create/models/block/paved_dark_scoria_wall_post.json -695b167aa884c3c827bf3f743233d7c5f0d220d3 assets/create/models/block/paved_dark_scoria_wall_side.json -75870726f58f388244ffbbde1676a9f66c52120c assets/create/models/block/paved_dark_scoria_wall_side_tall.json -ad5ecc000e088252a9aa144250f1be3324dac366 assets/create/models/block/paved_diorite.json -171351fbd56ea8a19ba6c9b0fd82bf88ee176528 assets/create/models/block/paved_diorite_covered.json -bc66da45a57ac338c066aa26427c3c55d78d798c assets/create/models/block/paved_diorite_slab.json -c3e7a4cc76ea1cf2511f6921ed715540dcb200df assets/create/models/block/paved_diorite_slab_top.json -dfd06d83473b0cf8855fbd0ed89831567bcc6212 assets/create/models/block/paved_diorite_stairs.json -6f852f3f90c24cfebbfc603f11803e039ea9a0c0 assets/create/models/block/paved_diorite_stairs_inner.json -cd32a4355eed1eadfdd133a2acc135c0836011a7 assets/create/models/block/paved_diorite_stairs_outer.json -6c52f7f025f56dcd45fcdef87c76263318ffbee5 assets/create/models/block/paved_diorite_wall_post.json -5ee12e7349d48986ff245512764defbf18d03a45 assets/create/models/block/paved_diorite_wall_side.json -1584f34af51c9ee584d7e6c528d68a7ff2a9b5a0 assets/create/models/block/paved_diorite_wall_side_tall.json -e763ba96670e52800dfadb96cc402ef50bc23c21 assets/create/models/block/paved_dolomite.json -1ea5247d696ab136f8e323f68e2918a9e871ce1c assets/create/models/block/paved_dolomite_covered.json -dba94cd61f0672829bbab3ace3409dce589bef62 assets/create/models/block/paved_dolomite_slab.json -74e8a30e8e14e4f4bb05f53159928544e99006ec assets/create/models/block/paved_dolomite_slab_top.json -c282fd047907899c439f022203aee6a1491070b4 assets/create/models/block/paved_dolomite_stairs.json -88f4e3af8e0a7fd38adc300e49f8f0efb19ee8a9 assets/create/models/block/paved_dolomite_stairs_inner.json -91b6be901eb9a18518585c679757c1baec16c7c5 assets/create/models/block/paved_dolomite_stairs_outer.json -8b9309e098b6066dff8cd206e80938e33b692c8e assets/create/models/block/paved_dolomite_wall_post.json -378609052c8daa9a38259b54a0a0d995c4636396 assets/create/models/block/paved_dolomite_wall_side.json -47b5f4d682d041008c8256fc3df1be25130fa10a assets/create/models/block/paved_dolomite_wall_side_tall.json -f90897992da49371e405088756b9077113a5c7dd assets/create/models/block/paved_gabbro.json -7ab1400fe9c2968fbe276bf70325ae6d159d37c3 assets/create/models/block/paved_gabbro_covered.json -fa1ed152122fee3a8bce34157159964b5fd8d79a assets/create/models/block/paved_gabbro_slab.json -8cd07e28885661fedca14b976dcd48b7042cee2a assets/create/models/block/paved_gabbro_slab_top.json -460a95cf5fc13f037902b6794a7e8c54a091b3cc assets/create/models/block/paved_gabbro_stairs.json -ce9c4a0cc7168b2fbe094b40a9a13c5fc5368426 assets/create/models/block/paved_gabbro_stairs_inner.json -f51b8fe5408d80ecf79b45fd2e758b947bd89d12 assets/create/models/block/paved_gabbro_stairs_outer.json -3113c182a4ff13adbc156b70a31c80b0e7de064a assets/create/models/block/paved_gabbro_wall_post.json -39a7a337bdca36263fb998c22a02b698b3e9ef06 assets/create/models/block/paved_gabbro_wall_side.json -8bce3c1a2d05e3d1897670c4768883b7a02e5159 assets/create/models/block/paved_gabbro_wall_side_tall.json -12ddeae599606fa0aaee5539f9cea99003220dd3 assets/create/models/block/paved_granite.json -528f2d902f402260d7d7670ef0f0b01b5367cb7b assets/create/models/block/paved_granite_covered.json -053fcddd1f3705dc47f2be515470d6cd006cea04 assets/create/models/block/paved_granite_slab.json -23329b2e8aaf3adddc50aba4ad8e2204db6677af assets/create/models/block/paved_granite_slab_top.json -1f39a935603bd49a76721cccafe49ca56ad616b9 assets/create/models/block/paved_granite_stairs.json -e9a6d727123642bc7db48f1f7e6024f08fa389c5 assets/create/models/block/paved_granite_stairs_inner.json -f7fddf3184dc69b095c432f3f2dfe9204b36ce21 assets/create/models/block/paved_granite_stairs_outer.json -2897b4cc6610e9cbb57582e84913f613903eda2d assets/create/models/block/paved_granite_wall_post.json -7292a674884325407786551a47f42ddc751b8e38 assets/create/models/block/paved_granite_wall_side.json -eec5d2ea68490b4b377bc8d8ae8dcc168e450174 assets/create/models/block/paved_granite_wall_side_tall.json -fd47f060b2d9686414d771fa79f73b0d7d18d1cf assets/create/models/block/paved_limestone.json -a02a16fcd7157e6e7485526673ba6fb30d228501 assets/create/models/block/paved_limestone_covered.json -3af3115c9d46fbf5ff9fb0c2c315292b2932601f assets/create/models/block/paved_limestone_slab.json -73873290e35c04be5e373593c5ab8555d045f239 assets/create/models/block/paved_limestone_slab_top.json -77d83f143597871e51450a370a4c3bf9a21d2d9f assets/create/models/block/paved_limestone_stairs.json -a95e3d5f34c0c8b03bd2a995a2811f3f63f91378 assets/create/models/block/paved_limestone_stairs_inner.json -825770b522f098d39c20850b7e8c887f429cdce1 assets/create/models/block/paved_limestone_stairs_outer.json -7462e8f922b26eacfe28ef5bc56fd1ed2ffdfb0a assets/create/models/block/paved_limestone_wall_post.json -1b3f725c75a524fe9e8039e03f8db84a1b252a96 assets/create/models/block/paved_limestone_wall_side.json -3a5f1bbca22ba53520138c192de22fa05c36fbfd assets/create/models/block/paved_limestone_wall_side_tall.json -2ad932c3a89dd2faa2f6d82c97f32242b092f7d2 assets/create/models/block/paved_scoria.json -a24a73544adbd4dc8afdcb42f42fe95e401a40c0 assets/create/models/block/paved_scoria_covered.json -f737e38308efcf68537505069cf60dba6d1c3658 assets/create/models/block/paved_scoria_slab.json -c6dab2f8010a5d75b1b145ea9c7e30329d099243 assets/create/models/block/paved_scoria_slab_top.json -ffdb9bb5e7072576a9db048fdb6375a27ad6df51 assets/create/models/block/paved_scoria_stairs.json -de95cca903aea66a0fd33e5629b1014fe33e6211 assets/create/models/block/paved_scoria_stairs_inner.json -f70d47a341a352ce53c39c272ef0556e8d6f62b5 assets/create/models/block/paved_scoria_stairs_outer.json -060b7c9b493c172916e99310663636376192eedf assets/create/models/block/paved_scoria_wall_post.json -308450fd3a19195364d268e29bef8afc7f9ca733 assets/create/models/block/paved_scoria_wall_side.json -100b1a1142953a107d283eab42000664c356c214 assets/create/models/block/paved_scoria_wall_side_tall.json -af309a5dd825509e64e3f2dc4db749e7d416cd71 assets/create/models/block/paved_weathered_limestone.json -04f8ab203f904371d9075d601dbb467931a75a50 assets/create/models/block/paved_weathered_limestone_covered.json -2d3700ea734cc2805fff93e1e7c63d8b716b3f43 assets/create/models/block/paved_weathered_limestone_slab.json -38177158a119e703e4e99b47eb12733e232ae768 assets/create/models/block/paved_weathered_limestone_slab_top.json -7aac84ea55c52494e5d9d61f53dc6f9a794afec4 assets/create/models/block/paved_weathered_limestone_stairs.json -db56f592a9ce027f33264d381b29830592b7d42e assets/create/models/block/paved_weathered_limestone_stairs_inner.json -f924c6104378768a3a645f5e77f9ed80d2c31e5a assets/create/models/block/paved_weathered_limestone_stairs_outer.json -46e3eeeefd47f7e6007e53bb1b22de2c6c2a5923 assets/create/models/block/paved_weathered_limestone_wall_post.json -c7941c0bcbdf7ec7e2d34679afac744cf81b7489 assets/create/models/block/paved_weathered_limestone_wall_side.json -39aaea370e31fa032e471d3b8f0ebf0586ee1a03 assets/create/models/block/paved_weathered_limestone_wall_side_tall.json -1b5f9e819cd4b5f5fe6e8c24920b916e8d93c95e assets/create/models/block/pink_sail.json -ecc60ce7ee6b753073a99c597db95d6d9df3d438 assets/create/models/block/pink_seat.json -7ada61878d3a3c1d3cc33bcf9a80c21b8f9aaff2 assets/create/models/block/pink_valve_handle.json -84fdb35acc12ae9580496f458def3e49aa0551ea assets/create/models/block/polished_dark_scoria.json -5ca3d6cbbf1fdd6437d9951b9d2937838ec480f1 assets/create/models/block/polished_dark_scoria_slab.json -737cbe0048415e9e5c5c112fbad541ef17eab94c assets/create/models/block/polished_dark_scoria_slab_double.json -33004fa06ca5bfd3b2266a93cee0ff7a38be7463 assets/create/models/block/polished_dark_scoria_slab_top.json -3fbea8604c9fb464201d8d5beb8fe60ed6aacd11 assets/create/models/block/polished_dark_scoria_stairs.json -c848a34c91e632272bc933c2bb7dd47598ab51d1 assets/create/models/block/polished_dark_scoria_stairs_inner.json -68a2199990dfb12fccd515de2108ddcfa92f238f assets/create/models/block/polished_dark_scoria_stairs_outer.json -51f929698d4ffc536a936d8c8e67c5b7679291ac assets/create/models/block/polished_dark_scoria_wall_post.json -ba98e5023cb9dd7612240d53e12bf3d56f81b84b assets/create/models/block/polished_dark_scoria_wall_side.json -e9c32e77c8bcb9a51bf6d888a071ac7a9aaaf1f6 assets/create/models/block/polished_dark_scoria_wall_side_tall.json -d64f39a77c34577e70e8d98aaefe75aeb6945c79 assets/create/models/block/polished_dolomite.json -bae7b9ad632d19e08e7f2d446ea4a0466afc557d assets/create/models/block/polished_dolomite_slab.json -39585239f35d11e200638fa90df216281814e9a1 assets/create/models/block/polished_dolomite_slab_double.json -2454d00584fa6fdf7a7f59b6b17747a3d049d6de assets/create/models/block/polished_dolomite_slab_top.json -e32d237a575640d8404fc2d7fc85a5c9539bf6fd assets/create/models/block/polished_dolomite_stairs.json -e467c5dc1f54018b59c548e6e78ee13f651d58fd assets/create/models/block/polished_dolomite_stairs_inner.json -46b3356f62263591042ba48a637fcd5838aad34a assets/create/models/block/polished_dolomite_stairs_outer.json -a0eaaab5153b1aea3bc8be6e7d4101403bc53b4d assets/create/models/block/polished_dolomite_wall_post.json -c568d81cbc1a9f246af2dcc899536bdb1d4c521e assets/create/models/block/polished_dolomite_wall_side.json -8520a8b65622208e1d5e7fd5344ed72adb0def48 assets/create/models/block/polished_dolomite_wall_side_tall.json -93f1602bbb8f14760113b5c0ac54a9269c7d8d82 assets/create/models/block/polished_gabbro.json -db4eda3cfdb6d553c097861e474d58591b8c7a3c assets/create/models/block/polished_gabbro_slab.json -95539fcf3d6d4b80df4950f584b7b9fe39835411 assets/create/models/block/polished_gabbro_slab_double.json -19b8e86060d7aec0c2588f97fc7800eb2cd80c10 assets/create/models/block/polished_gabbro_slab_top.json -3748a6803606b4734243af86ce64ba8766d1b54f assets/create/models/block/polished_gabbro_stairs.json -ff2072572e472d6ea19f855abb234c4bfaa5e3f7 assets/create/models/block/polished_gabbro_stairs_inner.json -4035407cd699b1558547ad641a9b5ea6dc2f401d assets/create/models/block/polished_gabbro_stairs_outer.json -2e66935d3c0c264f53778b5197562b622116fdc8 assets/create/models/block/polished_gabbro_wall_post.json -dc5e702f2d1695f18cbfa8807f5fd0aedbbe0b84 assets/create/models/block/polished_gabbro_wall_side.json -df2e04f9d71663cd4e1d6185dc82789d10d7f42b assets/create/models/block/polished_gabbro_wall_side_tall.json -45de1db80d556ef2ae35fb89dd7688bd7fb20d68 assets/create/models/block/polished_limestone.json -fa5ca4787a5ca464807e7807191c227338fc6cd7 assets/create/models/block/polished_limestone_slab.json -2dc18b1073d002ee0f011e3529f1b679cd76ebbf assets/create/models/block/polished_limestone_slab_double.json -dba191453c529e190f104924e8289fcf33fb90a3 assets/create/models/block/polished_limestone_slab_top.json -cce2117c0387032248a6dde70560f5e2043ee883 assets/create/models/block/polished_limestone_stairs.json -e7e3ceb0e9cf0e8cdd6be6cbd8c611e11fd41662 assets/create/models/block/polished_limestone_stairs_inner.json -703fed54153c39fec9efaabe772c93b01e2501d0 assets/create/models/block/polished_limestone_stairs_outer.json -63fec82f0294cb24f6be547bbb24197247cbde7e assets/create/models/block/polished_limestone_wall_post.json -e585a788d160c508b16a4856fbe07152b943fbd1 assets/create/models/block/polished_limestone_wall_side.json -de0629f2ad853bb2a68038381497cb3fcecafe6d assets/create/models/block/polished_limestone_wall_side_tall.json -deb6b365d524f669e8afc62df5adf95763c5aa5f assets/create/models/block/polished_scoria.json -c0ab83dbde560220cbfbab9e87b4f0b42a07eab2 assets/create/models/block/polished_scoria_slab.json -d129e5a5131fcae7c26e23ea40d2da5310aadcd4 assets/create/models/block/polished_scoria_slab_double.json -b36808e58c118269513b1b07c6a5ca47f5355444 assets/create/models/block/polished_scoria_slab_top.json -a1174e2dc5584fb58b6e1fefc1aa0af486a7f79f assets/create/models/block/polished_scoria_stairs.json -ac3b02410e9fd180cc473571764da9b6fa2e5487 assets/create/models/block/polished_scoria_stairs_inner.json -f7f3ba575009735faa2b0cc163d8a498d4b7299d assets/create/models/block/polished_scoria_stairs_outer.json -f78c3b82fa220a6af9b943eb9a5d150ce4f6113a assets/create/models/block/polished_scoria_wall_post.json -f2c04200e1ee865a2b83a69e8fc780de4bf68795 assets/create/models/block/polished_scoria_wall_side.json -15085c7f310e40cb64a272489d35b8ceea9c95e9 assets/create/models/block/polished_scoria_wall_side_tall.json -20e3631cea96df2cefa3cd4f059b466b3525bfd7 assets/create/models/block/polished_weathered_limestone.json -2e6f189cc00e560e0be7bd47f8de0f934987dc66 assets/create/models/block/polished_weathered_limestone_slab.json -df39dc2c6d9fcf87efb59dc67566221695d6583b assets/create/models/block/polished_weathered_limestone_slab_double.json -f1dcba08d955a239b5c4a5a83c32280e57535126 assets/create/models/block/polished_weathered_limestone_slab_top.json -a25db26c0639a9d07219ff6e4e4cc0576bec8913 assets/create/models/block/polished_weathered_limestone_stairs.json -43164817d6bb2a76fba3672f67bc683d0beed272 assets/create/models/block/polished_weathered_limestone_stairs_inner.json -4f3d81ddb0f2dcff148eb7341bb4798ef10bb0fa assets/create/models/block/polished_weathered_limestone_stairs_outer.json -96b3a50bb338484a88c448bb9a412b47e6faf45a assets/create/models/block/polished_weathered_limestone_wall_post.json -d31088540cd68cf1156d9ebd328129aef36e17ca assets/create/models/block/polished_weathered_limestone_wall_side.json -c934df1cfe097bcc0f0c21d1b1a3f3b53e50e831 assets/create/models/block/polished_weathered_limestone_wall_side_tall.json -1c5e97ce8e5b3f5b320873120a4f3084915c0af7 assets/create/models/block/powered_latch.json -3e414b053b973729577a61bb1d73b9a2c2eb56a4 assets/create/models/block/powered_latch_powered.json -f22d7d8263dcabd726aa04784031ae9062633579 assets/create/models/block/powered_toggle_latch_off_powered.json -e6097d9ab9dc9954cbc750020bc33c7a423b73c6 assets/create/models/block/powered_toggle_latch_on_powered.json -622239a3a09fcac7235b9670eb395a530839a59b assets/create/models/block/pulse_repeater_powered.json -d469dce70d15759baed35025b8c7fa403c8b3b26 assets/create/models/block/pulse_repeater_pulsing.json -b56fad63b82434564bc41ae9c01e3b427203fb5b assets/create/models/block/purple_sail.json -96adc7865ebe64b43865bc2fe914830c11258856 assets/create/models/block/purple_seat.json -062406aacf25e099f9b28a3bf7cacfcaa1da4ef6 assets/create/models/block/purple_valve_handle.json -27d64a828607f94296c0b86cdb35fad996bc5d23 assets/create/models/block/radial_chassis_side_x.json -7d1439a0b06e4014e396d498a9e42168f67773a5 assets/create/models/block/radial_chassis_side_x_sticky.json -a9885a3f69e3e2a2812c33bafd9140fcc5cc7c25 assets/create/models/block/radial_chassis_side_y.json -92a48c22cf2af0a3156844322f6bb469883608fb assets/create/models/block/radial_chassis_side_y_sticky.json -522f4733118d6fba172696e9478c8f9fe88b236e assets/create/models/block/radial_chassis_side_z.json -bffca231a146a6ac49e028f3790cdcbf375e98b0 assets/create/models/block/radial_chassis_side_z_sticky.json -f0099576080a0f2bb09dd85e55777bad69f9f265 assets/create/models/block/red_sail.json -12d4f4119b994c5d71c96ab3aa09beb89dad1e10 assets/create/models/block/red_seat.json -0064825ee3c1702c524d34abb6adb66906586851 assets/create/models/block/red_valve_handle.json -61ce6e1ba7fee30683c86b09ec35da4fbff8f9cb assets/create/models/block/refined_radiance_casing.json -0fa50139aa2ff171feaecf3062b2037fab10b786 assets/create/models/block/scoria.json -055249d2dec8b94abb919cfb834767c9fbfb89ee assets/create/models/block/scoria_bricks.json -50951f14324df91347f72662a1ad59a106de4087 assets/create/models/block/scoria_bricks_slab.json -9d7cf929f10cd44fba457f905f7933c319770573 assets/create/models/block/scoria_bricks_slab_top.json -8bac5d96e08ec5c0e4767079c9e445b3a5c90065 assets/create/models/block/scoria_bricks_stairs.json -8e57f73d1c53e1026a4c4b66a9a1c1b1451eda56 assets/create/models/block/scoria_bricks_stairs_inner.json -335e9464ef1d191b45080ff23326279a25d281ee assets/create/models/block/scoria_bricks_stairs_outer.json -8684da45450c61dea65a8804e1c8ffaf07771e9e assets/create/models/block/scoria_bricks_wall_post.json -67adf9034cf36c0c3c6ae11d7f691b2d75eec85c assets/create/models/block/scoria_bricks_wall_side.json -9cface9b8238c71164d5bd14cca97341372cf93f assets/create/models/block/scoria_bricks_wall_side_tall.json -a550b247d64c533a53399aaf032bc905d53cc4bd assets/create/models/block/scoria_cobblestone.json -737da3e1fb5d383df8f87698816d05c6707639fa assets/create/models/block/scoria_cobblestone_slab.json -35d8cceb387ca76cc6635c29536a5fb02b6e5f11 assets/create/models/block/scoria_cobblestone_slab_top.json -6343fb437c2b6db2cb49e4198f335e433a422dc9 assets/create/models/block/scoria_cobblestone_stairs.json -543e2c46f60db20d8fb61332f82b94fc74c25e1d assets/create/models/block/scoria_cobblestone_stairs_inner.json -00273f15e4bd44881024c7d52acfb58f4bc0dadf assets/create/models/block/scoria_cobblestone_stairs_outer.json -7c1ec0220820fa47c948e3aba053b4dc06711e86 assets/create/models/block/scoria_cobblestone_wall_post.json -a5ea862312a58bc3153971b386a6eeb46c7b2a1e assets/create/models/block/scoria_cobblestone_wall_side.json -43d1dcf26be225c778cf99ace91c8dac17c39986 assets/create/models/block/scoria_cobblestone_wall_side_tall.json -f1596a182600fbc2461cb82bbdbd7e2647b7ddb4 assets/create/models/block/scoria_pillar.json -0dc7fb2eab3443bb029d9433036db0a67fcce4f2 assets/create/models/block/secondary_linear_chassis.json -73bbca2adae7ebe54115df8c3dcd31280241cab5 assets/create/models/block/secondary_linear_chassis_bottom.json -dc120319696c6bd58472383c2b5f8f656c0a4d7c assets/create/models/block/secondary_linear_chassis_top.json -6a1aae30a9ca08d28a224bfc532a6bf56411e026 assets/create/models/block/secondary_linear_chassis_top_bottom.json -d2d943d45826352f96158a393f0d750c71fd50a3 assets/create/models/block/shadow_steel_casing.json -5757ae82250167dff2fb56fd38624d1cb312fd71 assets/create/models/block/spruce_window.json -f6096d529b8f97f0bfdec75c13e4b31958346c58 assets/create/models/block/spruce_window_pane_noside.json -703b2f32430e2cc55b4f617cab5a1fa38c4de962 assets/create/models/block/spruce_window_pane_noside_alt.json -ea7952f49c78f0d7b95f3ed34df35a44a921ce15 assets/create/models/block/spruce_window_pane_post.json -04b92ecb2aea4264c58e2d3df0d77ab9fcdcf2d7 assets/create/models/block/spruce_window_pane_side.json -a5bb90cb3f5353bbfe767b3d42f4d1dbac3b498a assets/create/models/block/spruce_window_pane_side_alt.json -3bda065e24a71b82b92b9c805790ba6d1791ef6a assets/create/models/block/stockpile_switch_0.json -335d6bc2b19d3cdbc9ed8b344142e2e3aa397994 assets/create/models/block/stockpile_switch_1.json -655d5cd249291a550bb3508c97f5a7a3606a7848 assets/create/models/block/stockpile_switch_2.json -cd8242a881e78831f6573c1fef99f9941ecf6ef7 assets/create/models/block/stockpile_switch_3.json -ad1950ba333cb2095c0dba5c0c020517acbfeb28 assets/create/models/block/stockpile_switch_4.json -ba22751c2d11fbe0ee03d90d408250edb4148080 assets/create/models/block/stockpile_switch_5.json -d6a49bf3c26ab83de70190db5f8a9c6dca85df52 assets/create/models/block/stockpile_switch_6.json -050ba6ad19c79ca0c7e5a2876981f47b54c1dad1 assets/create/models/block/tiled_glass.json -105f953f708c78f95de5db5def20c6ff0d1af4c9 assets/create/models/block/tiled_glass_pane_noside.json -d257b024117a6003196c1feb85e759a3e1c180f7 assets/create/models/block/tiled_glass_pane_noside_alt.json -87abdc362465124e14b49ea5fd4135a071e71eae assets/create/models/block/tiled_glass_pane_post.json -53f8eeba028cdef5fecbdfa91a573d6f19bfd150 assets/create/models/block/tiled_glass_pane_side.json -6b1727111d9178162598b4ef7106da807d590bf0 assets/create/models/block/tiled_glass_pane_side_alt.json -b1e94d2858c3a8807def6c5131b6f63fe586fb91 assets/create/models/block/vertical_framed_glass.json -d13df8a5920c5778d98081fb0e97f045e2fd46a2 assets/create/models/block/vertical_framed_glass_pane_noside.json -3e975bec02e2670ce2b1868cebcbd780a5ebf3f8 assets/create/models/block/vertical_framed_glass_pane_noside_alt.json -a5938ddd48109f067a19a90a0f9abab655c18821 assets/create/models/block/vertical_framed_glass_pane_post.json -41645919ece236df5804a5a73ef682720194de34 assets/create/models/block/vertical_framed_glass_pane_side.json -8bc0abaabdc62d0c27730dba7eb6da54607b7e96 assets/create/models/block/vertical_framed_glass_pane_side_alt.json -c6c7067a760d8c787841a72c8048172fb534d8c5 assets/create/models/block/warped_window.json -01a1034b3bad86f23874b045c5eceb0f1078d6d9 assets/create/models/block/warped_window_pane_noside.json -51179b8e4e3d91cfb6fbeb08e1920afc2c16c237 assets/create/models/block/warped_window_pane_noside_alt.json -82b11c5dbd3ffdbbd129c4b4244487a8f3256f33 assets/create/models/block/warped_window_pane_post.json -b3682b275994e1dac31d56b56f3f3c1e3b2962d7 assets/create/models/block/warped_window_pane_side.json -0b1c6b66d22338e0152a62f869475d734029611e assets/create/models/block/warped_window_pane_side_alt.json -867c400d32bc2242d041bf650149fced6e7104ed assets/create/models/block/weathered_limestone.json -0235f7c186a5cb6c5081c4bbddb2e5bb0af76c93 assets/create/models/block/weathered_limestone_bricks.json -a569dd152c6a52281fe5ca704fa439768ca9b485 assets/create/models/block/weathered_limestone_bricks_slab.json -9ccff818a7ed23b57c822cc375ebdb5b570cf57e assets/create/models/block/weathered_limestone_bricks_slab_top.json -167e337371c3b173c3fcdd99ad1457e53a0fa85f assets/create/models/block/weathered_limestone_bricks_stairs.json -981c2a48bb7ae15e9c5291eff31f283a8a4739f5 assets/create/models/block/weathered_limestone_bricks_stairs_inner.json -e5ba7ee05569e34ac19e02ac8b16417e64dbba9e assets/create/models/block/weathered_limestone_bricks_stairs_outer.json -50daa813041c3dc7e830c67d12283501adba6b8c assets/create/models/block/weathered_limestone_bricks_wall_post.json -2ac4d82dc632f73dd97dc1b9779c7932fb20652e assets/create/models/block/weathered_limestone_bricks_wall_side.json -5335f6da6c93fada61fcea0036ce335eba0db7c8 assets/create/models/block/weathered_limestone_bricks_wall_side_tall.json -ce57e695293dacf7fdc0b7d9cb8ca798288e60ca assets/create/models/block/weathered_limestone_cobblestone.json -5d5e2e12dfafa81626fbe01314541e1e60c5d9b5 assets/create/models/block/weathered_limestone_cobblestone_slab.json -99fb198ac248520f42c84f19f7f92875abf424b7 assets/create/models/block/weathered_limestone_cobblestone_slab_top.json -acf3900465101f9dd78d2301eab1063cdb461582 assets/create/models/block/weathered_limestone_cobblestone_stairs.json -18124072ac417986b9c2aa1888d5b127fb084929 assets/create/models/block/weathered_limestone_cobblestone_stairs_inner.json -79fa4e8da0dc8a8c10ceaf918baf1f7b86ce219e assets/create/models/block/weathered_limestone_cobblestone_stairs_outer.json -30ea04210ca8cc79404ed54352d1483aec6533ea assets/create/models/block/weathered_limestone_cobblestone_wall_post.json -7f1582fe36aa94be4352b8eda89c8ebf7a353333 assets/create/models/block/weathered_limestone_cobblestone_wall_side.json -3235d3148535283e9e9b4ee336b92055e7c6bf01 assets/create/models/block/weathered_limestone_cobblestone_wall_side_tall.json -8c6feec0411e95f9aae18f9f38b4e045156857e8 assets/create/models/block/weathered_limestone_pillar.json -1377e12f56dce1466ce44078d7154870c5cf7b2a assets/create/models/block/white_seat.json -899f33d51cf36cb1c283bc7e6363f9d451e5736e assets/create/models/block/white_valve_handle.json -f2bee22fe03ac047fbe73ca2c5c759f09bf646df assets/create/models/block/windmill_bearing.json -071ca07daceea4d0db7ed41e815d47589fdb14b7 assets/create/models/block/yellow_sail.json -0a0e2cc973e35586ae00ed17b919383868e992e8 assets/create/models/block/yellow_seat.json -55edee7b0833ab19b98694fab21ae0c8e91f76fd assets/create/models/block/yellow_valve_handle.json -36c27bad342c82aa8dc097da87637dca042cce17 assets/create/models/block/zinc_block.json -f3059145a84ddbd54d08167e984112c7baf5ef4a assets/create/models/block/zinc_ore.json -67ef6fd6ec26fc216fa5319b8538beb223da1530 assets/create/models/item/acacia_window.json -c695dab3964186a857767b2b4975aebffa86dcf9 assets/create/models/item/acacia_window_pane.json -564f6245f92ec48a733e34d91b96b1beebbaf44a assets/create/models/item/adjustable_chain_gearshift.json -06d8b6e8f050b8ec0bef88b7633f3741baad4571 assets/create/models/item/adjustable_crate.json -96fcec285c0c26a8cb55e126f8c7053c70ad188b assets/create/models/item/adjustable_pulse_repeater.json -30292e874dd36e45eaeebb8d0bb8c4867866a38b assets/create/models/item/adjustable_repeater.json -e7759d9b3cd64d2719a58dc35fc75ca65b9e14fa assets/create/models/item/analog_lever.json -2e90c7abfcad12ca656ae253d834fbb799e15277 assets/create/models/item/andesite_alloy.json -a513af38f164a48fd44693b70a93012f3546caff assets/create/models/item/andesite_bricks.json -851090d21c6e6c67444324d975c6b3270eaf4ff2 assets/create/models/item/andesite_bricks_slab.json -d283f86cd05ed378efd82ce46cf49bc83783069b assets/create/models/item/andesite_bricks_stairs.json -640e4ae7fd4e79437ce7bf1a1ab5b66dc497b494 assets/create/models/item/andesite_bricks_wall.json -174c9705d25f149052835fdcf7c85626afead90b assets/create/models/item/andesite_casing.json -1fd20e35848e47483f4f3e3ca3376b0519178952 assets/create/models/item/andesite_cobblestone.json -1ceb0e49f2c46f1d5414d5fd6edfc2bdd3afa6f7 assets/create/models/item/andesite_cobblestone_slab.json -b0f664dd6de3d0ee9afcb6223fbcd53b97fa0d65 assets/create/models/item/andesite_cobblestone_stairs.json -8861d656eb6f61320b4d80eb079105705c762079 assets/create/models/item/andesite_cobblestone_wall.json -bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_encased_shaft.json -a3866ea9f44e80b64989f2b5f8a9f344da959c87 assets/create/models/item/andesite_funnel.json -75b8b00c2418b9660d35a7fabd0774925cf1c02f assets/create/models/item/andesite_pillar.json -795541cf7205d90531a23cd5b388f93a03bbf925 assets/create/models/item/andesite_tunnel.json -cf9e35bfea0b0a324e1c6384990425b3d359792c assets/create/models/item/bar_of_chocolate.json -421e481b7fbca4c4a1080ed703401eb25375e087 assets/create/models/item/basin.json -ffdb36349fa2e50451c208585162b6a8386ec494 assets/create/models/item/belt_connector.json -9044243882cfd49a2827e1b910a4c9b0e46daa47 assets/create/models/item/birch_window.json -d537fffaede521efa525fb2a7f9863fe6a80054e assets/create/models/item/birch_window_pane.json -22632bd681c8a605f0845f7549770389a741156a assets/create/models/item/black_seat.json -56a6baedc608792cd6ab72a1c4fd53046cbda070 assets/create/models/item/black_valve_handle.json -80a6e8b00709fe0521aca5b789ae17485ed9c56d assets/create/models/item/blaze_burner.json -6e350231e9f217019883096b4f0bb95ab0af4728 assets/create/models/item/blaze_cake.json -5d4e5c22295f9b5cc62cf6e74fe1384fbbb319f9 assets/create/models/item/blaze_cake_base.json -0e1977585128fc0ecef640f72e5fc5e9fb47ef92 assets/create/models/item/blue_seat.json -bec96ebf3369d3cffa9bb1b8bf9f2a5cd5d0ef96 assets/create/models/item/blue_valve_handle.json -17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json -f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing.json -c723011e09203821b6b59cff9de22454c5e4395a assets/create/models/item/brass_encased_shaft.json -12781f22d9b91df903d38bc55c4fe9f75dba8867 assets/create/models/item/brass_funnel.json -965f3f992fde899719506fd584f3fbbbf69af93c assets/create/models/item/brass_hand.json -d5e8b577aee56671e117a4a2ac93e58680b51949 assets/create/models/item/brass_ingot.json -44565b9b2c227e99e336357e5caa588438e7076b assets/create/models/item/brass_nugget.json -f7aca6aff65e1de269a99cf2a280d9841b7a0076 assets/create/models/item/brass_sheet.json -427bef12405e2a99fbf49e27ea5944add244252a assets/create/models/item/brass_tunnel.json -24df6f8391d8ba09cef46e69d65d32ea770745cd assets/create/models/item/brown_seat.json -54211d3bdbeba2ea4dbaed43daa740ae3331640f assets/create/models/item/brown_valve_handle.json -329c17cd2ac693babf6f05d0be94cfb1683a87cc assets/create/models/item/builders_tea.json -3e232a103f7f916fc11edb4d541ca99fe7b44181 assets/create/models/item/cart_assembler.json -36a680c6d0cd485402b72056cead58fd3dbff5f8 assets/create/models/item/chest_minecart_contraption.json -99d64b76b3baa84c3bd4b96ccd3376ca12425950 assets/create/models/item/chiseled_dark_scoria.json -83d3571eacde52568786802b268f24c6578c1e5d assets/create/models/item/chiseled_dolomite.json -afd697168c9786eb80e54eccdc6a23afa6c7fb0e assets/create/models/item/chiseled_gabbro.json -0cb1692f6cdd007ac690fd1f0222dde3429d136f assets/create/models/item/chiseled_limestone.json -a47fbe5f2da79080d99ef0975bfa8da4d08f8be4 assets/create/models/item/chiseled_scoria.json -70232ce9b88119fb383717e2c1ad113f7aad6a99 assets/create/models/item/chiseled_weathered_limestone.json -7a3737f6156213762e28a4dbedc4c6828dc1878c assets/create/models/item/chocolate_bucket.json -87637b39c3a5a386457d52b37eb65f1c4bcabaf0 assets/create/models/item/chocolate_glazed_berries.json -fe67c3f380d17735a9436a4579a8be1a02b8e4a0 assets/create/models/item/chute.json -6680a68526576ded5dac2aa3bc9fb9de3e744146 assets/create/models/item/cinder_flour.json -c1da21be9f1af4f7a2ef4ec9cd92195d65ada316 assets/create/models/item/clockwork_bearing.json -0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets/create/models/item/clutch.json -dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json -7717e3b21cff39f497f07687c70c1fa40eaa756d assets/create/models/item/content_observer.json -9dbd63c9e1b09a663fd4b83d76e3ab5967086167 assets/create/models/item/controller_rail.json -10397036fc0bb1e18a767cfd7b19b10d805a83fe assets/create/models/item/copper_backtank.json -965a90a882d85dba93b30af9bce7ecf8e68ce747 assets/create/models/item/copper_block.json -759bcb5fe7dfdd628716f9b4ff19a5ab00393381 assets/create/models/item/copper_casing.json -c2a320162daa2d24cef969d1d14a0cbd55eb574f assets/create/models/item/copper_ingot.json -751324b03f657f4166460eb10a64dae47cb97bd4 assets/create/models/item/copper_nugget.json -51be7da59368681522de870f1e09036dac55aa77 assets/create/models/item/copper_ore.json -177dafb51d70c55ec62036332868efed4e01f353 assets/create/models/item/copper_sheet.json -d7cb2f7bac8fae893fc5179af8140786a908f3f5 assets/create/models/item/copper_shingles.json -f56bf22324faf8958eaef4d94b958f1108d52e5a assets/create/models/item/copper_tiles.json -5583368909c319acfcf0f7a419bedf23272fe613 assets/create/models/item/copper_valve_handle.json -4e253e7c0626dfd76e2d39786ce1a34e0baaa62d assets/create/models/item/crafter_slot_cover.json -1f947dafff30da701b7675f5b026ccab3129b079 assets/create/models/item/crafting_blueprint.json -7b333dea353afaa27b182aedc647c9e9e34e92ef assets/create/models/item/creative_crate.json -f7d06c52c3ca8c22ad67f5741471f06ac22e7fcb assets/create/models/item/creative_fluid_tank.json -5b39403f6c81f05e566b621b62e267267de47c41 assets/create/models/item/creative_motor.json -5680d7cee347c46bb29db8c77dc33f234a7eba41 assets/create/models/item/crimson_window.json -cdcc4c773bdda431e2aef26e83c061db36e66bae assets/create/models/item/crimson_window_pane.json -e5f43ee61a7f434a487a5c91890d7eb295928d73 assets/create/models/item/crushed_aluminum_ore.json -6281a7439c92459761893835f91fde25467fae76 assets/create/models/item/crushed_brass.json -cd148cb7e881091ecce2390dac0d9f545573c91c assets/create/models/item/crushed_copper_ore.json -5b701661c7b847dfe5b4cbc854b48f128f90090c assets/create/models/item/crushed_gold_ore.json -38181d7bf4284534666cfd62c1c9defed69d0788 assets/create/models/item/crushed_iron_ore.json -23bd807b2e667810c800ad56dc1133b96aa32726 assets/create/models/item/crushed_lead_ore.json -5a3e06b518bf5ba66366da2e01797f6d014ec003 assets/create/models/item/crushed_nickel_ore.json -635e874e6e07133786b19110f901363f18930187 assets/create/models/item/crushed_osmium_ore.json -d8af07fa338c986bcadaa3cec0ae9d36bd852f43 assets/create/models/item/crushed_platinum_ore.json -d99a0ad01203ed70cd110acda082a1d55a06b9a5 assets/create/models/item/crushed_quicksilver_ore.json -cecee6daf2619dcf035c7aea5fff1bd892f6ff06 assets/create/models/item/crushed_silver_ore.json -a8d3f330d312f82b0de59940581910090b2bd012 assets/create/models/item/crushed_tin_ore.json -b359064405d189e2802969715cd5f682ddbf0bb1 assets/create/models/item/crushed_uranium_ore.json -2bb791db62dce6bf2e2227f9b607c131828471fd assets/create/models/item/crushed_zinc_ore.json -823c91f63565db54ec3944a1e90e7aee18e41062 assets/create/models/item/crushing_wheel.json -dae5cffa4e1263d6a113469f79fba8695fa8232a assets/create/models/item/cuckoo_clock.json -3e3edc9ccded444496d3336926b93bbf1234cd84 assets/create/models/item/cyan_seat.json -523cd531eadaadc45fb356ca58b99a8fe206c3a7 assets/create/models/item/cyan_valve_handle.json -f786a43e296d9f10d7c302fe3ae9cddf4ba9984e assets/create/models/item/dark_oak_window.json -515d55b1ce18543fdb44b194901040fd29e75818 assets/create/models/item/dark_oak_window_pane.json -f0e98871e4bb68c29954f2de24566a6404f21d9c assets/create/models/item/dark_scoria.json -411a6c77ec3c80b3d9134f6595d1996439c7af27 assets/create/models/item/dark_scoria_bricks.json -d59c7b08b4b246c9795e579ae1f0a4cdfbcea4be assets/create/models/item/dark_scoria_bricks_slab.json -b50e3471476783be80f28bb4e3543f5a426b9eb6 assets/create/models/item/dark_scoria_bricks_stairs.json -865ee1e3b097c090a0a7aa0c7d90ced103732628 assets/create/models/item/dark_scoria_bricks_wall.json -4dc989dde0810acc9631e03c96d53f4df95166ed assets/create/models/item/dark_scoria_cobblestone.json -6346b77a8a6b854ff345b9b256769dec98c9943a assets/create/models/item/dark_scoria_cobblestone_slab.json -e67fe11e9036c81f0f54d368b41a971822a84a32 assets/create/models/item/dark_scoria_cobblestone_stairs.json -6e6867197215635b7febac7ffca77b763c021cc4 assets/create/models/item/dark_scoria_cobblestone_wall.json -f5b2995929ac9dca9857d4618660ffa7778d5618 assets/create/models/item/dark_scoria_pillar.json -2104c1276259ab67b94f3d4fe97e14b6bc6941ac assets/create/models/item/deployer.json -84d87f715efab45dc7bcb2e3c0870ed56fa20ee9 assets/create/models/item/depot.json -a97ca9b6fc3e10a9c9409b27458a852222045e4e assets/create/models/item/diorite_bricks.json -7a28bb619d37a37ed82509d2ff395d76b4435961 assets/create/models/item/diorite_bricks_slab.json -920804b7380cca2c477d9f901e045597234246d7 assets/create/models/item/diorite_bricks_stairs.json -049f372e364e05817c99fd48fd2ce81a2a88c542 assets/create/models/item/diorite_bricks_wall.json -a215bca75c32124c4cb070065967de1d56c6c57f assets/create/models/item/diorite_cobblestone.json -8950fb51aa22e78c68ae2629e7c276989451ef66 assets/create/models/item/diorite_cobblestone_slab.json -645a16dfb3619cedf2046e1d0869a27394e6460a assets/create/models/item/diorite_cobblestone_stairs.json -32ebea959ce34458ac2f5ae105f9b415ab18ae4c assets/create/models/item/diorite_cobblestone_wall.json -e0ecc0a20cf9dd54ccfc48e0041d5220b2c8316e assets/create/models/item/diorite_pillar.json -6006f88e56d74a3fd75a9dddb25af39075e0482b assets/create/models/item/diving_boots.json -df8cfe7e8eb527329094396e11222e9097e309d7 assets/create/models/item/diving_helmet.json -1bd32eb16dee4bbf313a8813a7f1461ea5feeffe assets/create/models/item/dolomite.json -4c5e12f1acb8c4abc24b9dd80e5cbbf3a5cbd89c assets/create/models/item/dolomite_bricks.json -ebb596ce665b085e501ee2fd9a5371ce53e40553 assets/create/models/item/dolomite_bricks_slab.json -9308b10e1108023b5bc61defeed1058844cc38c8 assets/create/models/item/dolomite_bricks_stairs.json -28e57af2bb20d15842fa565d026eb156bb232aac assets/create/models/item/dolomite_bricks_wall.json -8d03066b5fd36bdf017fcb54336cf64294f968cc assets/create/models/item/dolomite_cobblestone.json -f92bc71df40567367d08798a6ea45e7e8d0b07b0 assets/create/models/item/dolomite_cobblestone_slab.json -be7de1e1529fb2a2e842204136520a760676d4e9 assets/create/models/item/dolomite_cobblestone_stairs.json -7565caff23f608f48bd1d9cb1704553b258eba0e assets/create/models/item/dolomite_cobblestone_wall.json -e974cd23a5456baef8b634f2d21fd8c3822931ab assets/create/models/item/dolomite_pillar.json -4b2af721dccfcf4e5b5a7b0f64f295d7cfd27f69 assets/create/models/item/dough.json -5c45bf31bc4b6d2c6482318f19a660ad949d796b assets/create/models/item/electron_tube.json -971be8e52e8dfef50c8329be83f9c5d5ea869279 assets/create/models/item/empty_blaze_burner.json -5312db341e777c79feeaec99e5cb85bb99bb76ff assets/create/models/item/empty_schematic.json -cf34fd7e891a131d763126aa070d5b919e304a51 assets/create/models/item/encased_chain_drive.json -250bd0716cc1f04b03892ab74eb0b3a0f32a6158 assets/create/models/item/encased_fan.json -68833e2a7836c73776551565783a1d175b715c66 assets/create/models/item/extendo_grip.json -efcbd30ad7a7658c02a3dc3de5fa0f21d7f49b54 assets/create/models/item/fancy_andesite_bricks.json -7ccd312084128c356307c7ca6e52c65d0a18907b assets/create/models/item/fancy_andesite_bricks_slab.json -c8eee9d8df7af227eba051e4b9a7e48a79e682df assets/create/models/item/fancy_andesite_bricks_stairs.json -fa5f2e2b439f5ad116bd13c423b36646cc6669f9 assets/create/models/item/fancy_andesite_bricks_wall.json -8794524183309b8185476bcd419fb9a59a879d04 assets/create/models/item/fancy_dark_scoria_bricks.json -7ba01ba3cb1215433b4373d6d5de1b9ba0fd78f9 assets/create/models/item/fancy_dark_scoria_bricks_slab.json -d39b008a22a2fbefd509e65eb5165f8a732dc557 assets/create/models/item/fancy_dark_scoria_bricks_stairs.json -9e77a607e9e017d405b5bb4d860fe14705fd7d24 assets/create/models/item/fancy_dark_scoria_bricks_wall.json -97b8c3e3125dcb6cfb2ddc55544605caed3baa05 assets/create/models/item/fancy_diorite_bricks.json -2a6ef7a830f95b480d8e36bbafa2d69419688c6f assets/create/models/item/fancy_diorite_bricks_slab.json -38c07a01059d2471f9fe099d0213b06132c67d0b assets/create/models/item/fancy_diorite_bricks_stairs.json -790740325b6cf2afabbfcadc50e1b59922b4fc00 assets/create/models/item/fancy_diorite_bricks_wall.json -84a475673d8719b14aad1ffa4b960c3915461990 assets/create/models/item/fancy_dolomite_bricks.json -f3f8e870b2368386f006dadd149227d4c4045c2b assets/create/models/item/fancy_dolomite_bricks_slab.json -098130c5b60997962ff49220f8f0a918f0dfc277 assets/create/models/item/fancy_dolomite_bricks_stairs.json -1de0516db45572c9560c416efa520f4a6cad2ad1 assets/create/models/item/fancy_dolomite_bricks_wall.json -e4d4aec87e5df25cc32209686fcae439fb47e3cf assets/create/models/item/fancy_gabbro_bricks.json -5842bd64fb9ce5a7893f32d86c1e7d0e52dec9ad assets/create/models/item/fancy_gabbro_bricks_slab.json -21ae57bca0821dc3df192377cfdc9b11de076864 assets/create/models/item/fancy_gabbro_bricks_stairs.json -e7e9b456961bde40122d626f6ed3229b8ea0ac2e assets/create/models/item/fancy_gabbro_bricks_wall.json -fd66acae47031df3de863691d81ed333cf98503e assets/create/models/item/fancy_granite_bricks.json -f4ab29d669c73651503188b8918fa6926d55f1b0 assets/create/models/item/fancy_granite_bricks_slab.json -668555d15f65972fb8b74a469f625e85b99325a3 assets/create/models/item/fancy_granite_bricks_stairs.json -08f4cf9e002dcbef813e88b997c0ba0c387c4cdf assets/create/models/item/fancy_granite_bricks_wall.json -86af2a7d8e88189a86aa21e217006cb111f71173 assets/create/models/item/fancy_limestone_bricks.json -dd122445c8ad8cf65c07a649657ff7341e5aec7c assets/create/models/item/fancy_limestone_bricks_slab.json -5321d0726707859b9a920a6decac2c19f28f97ae assets/create/models/item/fancy_limestone_bricks_stairs.json -b0a52afe2b0b1e892ede5fdbf1c72644870f7220 assets/create/models/item/fancy_limestone_bricks_wall.json -bcd872f7eeba6512de5c070038fa2e0dc5c54d11 assets/create/models/item/fancy_scoria_bricks.json -3bcf2f856e7c6865a6849c738a7b9eb0b6a9e640 assets/create/models/item/fancy_scoria_bricks_slab.json -37df452fb88f4912e1287d0ec1f699465941b670 assets/create/models/item/fancy_scoria_bricks_stairs.json -fcb036f9bd424152670acb324cc38069426c005e assets/create/models/item/fancy_scoria_bricks_wall.json -9b32f3a1144b2e3a85ae416b5ef2d6b6df214eba assets/create/models/item/fancy_weathered_limestone_bricks.json -8fc219b471382cf67d2271edda14d173d40ae661 assets/create/models/item/fancy_weathered_limestone_bricks_slab.json -7c1ed1241d55b105f7acb997d7c0e24b4b945293 assets/create/models/item/fancy_weathered_limestone_bricks_stairs.json -2be26b4e13f5388f92834d390c2819e902efe781 assets/create/models/item/fancy_weathered_limestone_bricks_wall.json -e5e6fb6eb182b85b977e1025a7fe84d46de59320 assets/create/models/item/fluid_pipe.json -e7d2097256fed545064a37d233e7b810b04c26a4 assets/create/models/item/fluid_tank.json -f4727119b75ab632c3ad295be4d398b1919d782f assets/create/models/item/fluid_valve.json -8707332c0cb6ee123e7962d08536a60725c64ce8 assets/create/models/item/flywheel.json -f2496d3b16e5b5415474bcfb7d6c6a6c3b28ed60 assets/create/models/item/framed_glass.json -1041d462c6e856f7f3f2365c299c0599703d1ed7 assets/create/models/item/framed_glass_pane.json -0bee2855dc9bad52e941153b87e9c35797c246ee assets/create/models/item/furnace_engine.json -a703b16625ad9d3b9042b6b19fdb88407726898b assets/create/models/item/furnace_minecart_contraption.json -2c1608c114ccc285a84e936dc3f1233c535e1a26 assets/create/models/item/gabbro.json -c35900cae8508c292a73239e560cebae17980f96 assets/create/models/item/gabbro_bricks.json -b10971277417369f421324b28f0a4b47ce4c8625 assets/create/models/item/gabbro_bricks_slab.json -0b86a2f3ec25fff558429823c6919a5ba081e10b assets/create/models/item/gabbro_bricks_stairs.json -0def0207c101a2d351ec806f42f0cb050aff1c06 assets/create/models/item/gabbro_bricks_wall.json -307ad613fd2cd964544ea742ad32b4c48edebd09 assets/create/models/item/gabbro_cobblestone.json -61e46397848c551a34f941f31685e3c0a20533bb assets/create/models/item/gabbro_cobblestone_slab.json -b3d7398dbc16c450928bd76b772c273382687447 assets/create/models/item/gabbro_cobblestone_stairs.json -4865abd6c7a8140ea7338a545b68d4965d654347 assets/create/models/item/gabbro_cobblestone_wall.json -20950b692eecfccd77d96678bb3d909d51f6d787 assets/create/models/item/gabbro_pillar.json -a642f570ec8223c066e542f062aff3b7f93e002b assets/create/models/item/gantry_carriage.json -b4bfd5041b62f3a0a955fa4872d178b590614f22 assets/create/models/item/gantry_shaft.json -6ab0d17f3d02678ed992e188ff09f6b2c00b5b03 assets/create/models/item/gearbox.json -2fe29893d74c176ea35aed73a169c13dd4ddb2a8 assets/create/models/item/gearshift.json -299b2008f34ec7eca601ebc90f7be97e2ff0d1c0 assets/create/models/item/goggles.json -b8d9269a48244fbda1735aa54a11633b49051e2f assets/create/models/item/golden_sheet.json -46d813bcb6676078347383295bb7dbda1d9dd060 assets/create/models/item/granite_bricks.json -032a31c66d3de63595d478165d54b4f562e9831d assets/create/models/item/granite_bricks_slab.json -9d7a989d644af91a4ca5985396375863cc5de6a7 assets/create/models/item/granite_bricks_stairs.json -cd45a6f8f10a9035ab714065f3b50b4d3041a2ec assets/create/models/item/granite_bricks_wall.json -085345339f11023b06717a786ab33f32b3902407 assets/create/models/item/granite_cobblestone.json -c1bb87fdbbefaf74e1ead186c43417a051ab3965 assets/create/models/item/granite_cobblestone_slab.json -3c5f83809f945134a861d4ea600a1708de58a422 assets/create/models/item/granite_cobblestone_stairs.json -55d1257e4ff2e505c941975f51736eb43e53860b assets/create/models/item/granite_cobblestone_wall.json -b84a947a1b297513c85bb8d2dbbb780304c95e43 assets/create/models/item/granite_pillar.json -e7daa31c1fc445d542bad476dfe1d6a8811f2070 assets/create/models/item/gray_seat.json -0f4981408b08a736ff3eb5bdf1823cd7019ae9fe assets/create/models/item/gray_valve_handle.json -1c9c9157a06108bf58967bfc4fb069c35d20e90a assets/create/models/item/green_seat.json -ecb9f32f62d3fa43fb226ab85adc2eb229fdfb77 assets/create/models/item/green_valve_handle.json -398b1a7c76c7bdb6a23b1248fdce98f6d835467f assets/create/models/item/hand_crank.json -dee43bf1a9c211a752fac2c07aeba123f7f0c914 assets/create/models/item/handheld_worldshaper.json -f0d5af58e23e2705b3ef675c30bdf85ed9567c57 assets/create/models/item/honey_bucket.json -068729724f5f7b276b9bc378e533898a92e8debe assets/create/models/item/honeyed_apple.json -955e8accadb47f9b360e5fd48cd959c507b00f2d assets/create/models/item/horizontal_framed_glass.json -f0e3b2b8a553b6e61746c922c27302dabfff71b6 assets/create/models/item/horizontal_framed_glass_pane.json -ff92f6a9dfb73a6ee1eaaed3279c89390ff04a80 assets/create/models/item/hose_pulley.json -d9f222e963f8f8910ca9dbc3c31842ef149f7a1f assets/create/models/item/integrated_circuit.json -9d605ce0da83a73b535bce45c107e604364e2b20 assets/create/models/item/iron_sheet.json -52e435014cb03e93411666c4799ebff206e55fc9 assets/create/models/item/item_drain.json -83fa8699318e51f838b483b40b3e897c34ed53d1 assets/create/models/item/jungle_window.json -766323f6026c3505a75db2dee2996d342370d9c2 assets/create/models/item/jungle_window_pane.json -fe89522b2bd9b4393b8afa2a97f6db4277a8a4b4 assets/create/models/item/lapis_sheet.json -bcaaf60d9a853cce90169dabcb36d29a3ce19e18 assets/create/models/item/large_cogwheel.json -281e2b055c6eb6994ca306c8957fc80a98fb5473 assets/create/models/item/layered_andesite.json -7afeb6170b37cb464ea91be18928d21970d556d3 assets/create/models/item/layered_dark_scoria.json -385e9d787613af2d1079b899315f45efe9eec489 assets/create/models/item/layered_diorite.json -1f00c44adc396a401abc2e9804ee34df7bb6f256 assets/create/models/item/layered_dolomite.json -9a7a528d1cdde1d13dcdf8829ef1b10c95a0d412 assets/create/models/item/layered_gabbro.json -1220b440881e5d794dea2db41bc31f233b13eed1 assets/create/models/item/layered_granite.json -ad40f8eb28bea731131aeaffee55abecb8bc6a56 assets/create/models/item/layered_limestone.json -e7585210cf4754c89b4ba3dc95827b75029f0523 assets/create/models/item/layered_scoria.json -2df30e7f8cacc1efd6e025564d495f782e0dc697 assets/create/models/item/layered_weathered_limestone.json -be2b6d54afc515d93d6d5b3023c506c53cc946f8 assets/create/models/item/light_blue_seat.json -34c308977750da24db80bf2ea2dd6cfc22ea1db6 assets/create/models/item/light_blue_valve_handle.json -1b36382eae41b35585e5659cda019310731000fc assets/create/models/item/light_gray_seat.json -a89d397ac14482a973f7937f046dbf8e42d017bc assets/create/models/item/light_gray_valve_handle.json -2127f20dca4421802812e249b3caca6230a37eee assets/create/models/item/lime_seat.json -785b008d703728497f5f941e3211d6e10389f1b5 assets/create/models/item/lime_valve_handle.json -a29733a916141abf84492a288fe9ac4ed531f47d assets/create/models/item/limesand.json -e0a1c6102acc10a36de5ae87da629dd3d676e204 assets/create/models/item/limestone.json -1c2b99db54863eac4947824f4169e51c25d05bde assets/create/models/item/limestone_bricks.json -b4bb20a01c516b350c770a5e1149de5fda474eb7 assets/create/models/item/limestone_bricks_slab.json -e2445944c220ebadf7e079ba49306c98814cac29 assets/create/models/item/limestone_bricks_stairs.json -b320c238870680fce5225114e705f832a2da8a98 assets/create/models/item/limestone_bricks_wall.json -58234b12ce29574c89bcbd558e467691fd9be267 assets/create/models/item/limestone_cobblestone.json -c26a0887356e9e55a0bdc3d885838e4722e0c0c2 assets/create/models/item/limestone_cobblestone_slab.json -ebdf23b99b7895e347c29057c8070a6e16e56beb assets/create/models/item/limestone_cobblestone_stairs.json -288da8b29a4e9d0d0b694567a61b5a816a2859b8 assets/create/models/item/limestone_cobblestone_wall.json -8065de871ad2fbaed711735561b8ed91a2ce0004 assets/create/models/item/limestone_pillar.json -d245aa4994ff197b1ffeb7980d05f96bd20cdeb3 assets/create/models/item/linear_chassis.json -2866bff509b060cd3ee99b4eef25a4e1e4639703 assets/create/models/item/linked_controller.json -d912be3e87f2beaa8e22747f867739139667241b assets/create/models/item/magenta_seat.json -928c5e3747fb758d2610475258cc168b0d4ee7b6 assets/create/models/item/magenta_valve_handle.json -932facf4bf93b471e8630f4132a4284a9f4d0d39 assets/create/models/item/mechanical_arm.json -e19c7a06697adc2da9d66c5c81e1c6ff131acb65 assets/create/models/item/mechanical_bearing.json -65ac4f19973ddeb1bb4d672f57319130e736e116 assets/create/models/item/mechanical_crafter.json -b416a3a2545a63d6839f7f2cb958c58e485a7eb6 assets/create/models/item/mechanical_drill.json -bbf18e5d54128375139c712e93b35ec25f59f2d0 assets/create/models/item/mechanical_harvester.json -06553037470a5ca5386c0d0bb1011d20580c0e76 assets/create/models/item/mechanical_mixer.json -f8d0d4b2a890ea7a69ab0c390947b48fe0478d3f assets/create/models/item/mechanical_piston.json -726ae61699dc379a4f535c1be3ec2672a2f03583 assets/create/models/item/mechanical_plough.json -6c2acb80e53256fbb85f76851f335f9248ace6da assets/create/models/item/mechanical_press.json -4e363477e3e8059dd7b2bad04046521b31923d1b assets/create/models/item/mechanical_pump.json -3fc1fcb2016d2782c3667c21575423122b66705a assets/create/models/item/mechanical_saw.json -3afa723a8ba4160a4bd8778a56e1880e7ff53ed9 assets/create/models/item/metal_bracket.json -0eb5726c8c0de462f432411c210d6132b2c446a4 assets/create/models/item/millstone.json -363c5a2b8ac945b676c838cdf7b0494c3ab13599 assets/create/models/item/minecart_contraption.json -01e3fda31e549a3b6a1e5e615b59478e8f06f16a assets/create/models/item/minecart_coupling.json -dc43c88dc8ae1f425e1c10f422b09d97719af5bc assets/create/models/item/mossy_andesite.json -4ce9aabf9fa9e9e6af6b4339291e635708bdbcdf assets/create/models/item/mossy_dark_scoria.json -d084f03d068d0b8c3b7c4d00014c168f61836770 assets/create/models/item/mossy_diorite.json -d4743a48222f5c4fad44f940723925f0dccf59fd assets/create/models/item/mossy_dolomite.json -ec459f0f04f75e5c2c27bdad0375adb9768d1ba1 assets/create/models/item/mossy_gabbro.json -95da87eafc51c6ee5a6e93aae6379f47eb9aa46b assets/create/models/item/mossy_granite.json -38d9a51ca24786b85398c4670a1e8cb9dc794037 assets/create/models/item/mossy_limestone.json -055f6c58addfd02d889ef6436d344b4d308a65a6 assets/create/models/item/mossy_scoria.json -f384d2e28309c54207bd1c33abff99d015d698bd assets/create/models/item/mossy_weathered_limestone.json -dae5cffa4e1263d6a113469f79fba8695fa8232a assets/create/models/item/mysterious_cuckoo_clock.json -b5c73d353fbe1d073f6a2901f221f178b858e385 assets/create/models/item/natural_scoria.json -bafe601f186e868819da3d29f7be7dc96f9ba790 assets/create/models/item/nixie_tube.json -366a60447bbbd61eb25aecf191a01e8d9417ad61 assets/create/models/item/nozzle.json -7a336a340f3e4927d7a35f9d79e8a03693b802aa assets/create/models/item/oak_window.json -d0a6219860420f910300e86cbec1b08d4b47f436 assets/create/models/item/oak_window_pane.json -25dfcc8b6f085722f6b2a0c686b77d437e61542e assets/create/models/item/orange_seat.json -62ac36250e2505f23ea4d2c3b4630239c049f276 assets/create/models/item/orange_valve_handle.json -0ffe242e3165d9a0e3fe16ad4c4ca91c7e9828b2 assets/create/models/item/ornate_iron_window.json -7d7da05da6248abc177e89988ed5c2aff1151767 assets/create/models/item/ornate_iron_window_pane.json -db23dec78b3355fc0de3485b8e9d915a20dc1f93 assets/create/models/item/overgrown_andesite.json -cd5c2fbad24dd059c5d93cfb11137a473b36f459 assets/create/models/item/overgrown_dark_scoria.json -5ac708433ee5cc7c13975217d39eb5649dfd44ec assets/create/models/item/overgrown_diorite.json -a74a56fc6442feef3069495d39010d0e051a0bfb assets/create/models/item/overgrown_dolomite.json -c321a885f5794ed0bec47bf70022ee9882bbd3c7 assets/create/models/item/overgrown_gabbro.json -e34c7bbdd4fcaa3a73c61584418bb159db49758b assets/create/models/item/overgrown_granite.json -e73e4be7e7eafdf9635a3d72eb7fa05c2bc1e54b assets/create/models/item/overgrown_limestone.json -a64a649428a2e130059f3f1f8de81b907621589f assets/create/models/item/overgrown_scoria.json -3354b93677c87bfc82807503c8d658fc6ab114e2 assets/create/models/item/overgrown_weathered_limestone.json -014530344c8b7e53531e3c09095b6ed4839d5ab8 assets/create/models/item/paved_andesite.json -bd81aa53b83c2f9683c024989d0305807cf28f5a assets/create/models/item/paved_andesite_slab.json -c61f409eb1a24cf76017b677579cb0423a1951c6 assets/create/models/item/paved_andesite_stairs.json -2d34a7fc24f4204a840fc3ea23bd1c9c7d833c6f assets/create/models/item/paved_andesite_wall.json -1e2eba674fed91fe83e55bc8cb3310c8c0ce5a01 assets/create/models/item/paved_dark_scoria.json -2150e84cd4d14e97ef7a0976a01089195a682a6c assets/create/models/item/paved_dark_scoria_slab.json -9e63939b6eb8d9b2e77bbc2258ca20de27322e18 assets/create/models/item/paved_dark_scoria_stairs.json -66058a289970d5275973ac0fa2bccbe4bb6d3c87 assets/create/models/item/paved_dark_scoria_wall.json -134fb828fb2f4d0d5de6b2cefbe406766c42da2a assets/create/models/item/paved_diorite.json -085769d715a8f27341915a7df1713428090d918a assets/create/models/item/paved_diorite_slab.json -ad0b1dedcc63c77271804b8af6cd0e9594b28558 assets/create/models/item/paved_diorite_stairs.json -bc93e2eb2aa83f5c41c53454392d0417492d7547 assets/create/models/item/paved_diorite_wall.json -326e2cd1f8d3d5ea46ea915dcae30f4f6fbbce72 assets/create/models/item/paved_dolomite.json -7b7ade8c8fffbcda014c415831298ba8726e01ee assets/create/models/item/paved_dolomite_slab.json -adca0341816b1d9d691d1bfcc0495bd15d5ebdeb assets/create/models/item/paved_dolomite_stairs.json -cc13a426ad0ed2f8f7d898e590bec98fac432e16 assets/create/models/item/paved_dolomite_wall.json -5aa6212b6b351de46befbe00767953fde8a45c9b assets/create/models/item/paved_gabbro.json -5311533b6285592fe6307c6538ffd3a01235643a assets/create/models/item/paved_gabbro_slab.json -6b2d1f94720eac18bb8e42634692a7984649470e assets/create/models/item/paved_gabbro_stairs.json -c24fd6905652045a26c3a0d15e33d7c7aad1107e assets/create/models/item/paved_gabbro_wall.json -af3ec306551a5de6dc7ff53cb734fff656de805d assets/create/models/item/paved_granite.json -d231c92be80f3897a944709a0d7745943b250930 assets/create/models/item/paved_granite_slab.json -a2d3f2188637b329d62450485f2fd35cc1f2c7e0 assets/create/models/item/paved_granite_stairs.json -d23eb87b4bdb40eaa74294242e87d0123cb56dfc assets/create/models/item/paved_granite_wall.json -d60c4fb6e0e68d8f6c137a0c601145c342236c18 assets/create/models/item/paved_limestone.json -25d090c53a7ce13b08be2dfb741cc1cead225498 assets/create/models/item/paved_limestone_slab.json -0eb5aee18a1f4bf64bae7d777f5521cd6ae2dd2e assets/create/models/item/paved_limestone_stairs.json -0618e54f9ac95c8921f93025111d801c809e7043 assets/create/models/item/paved_limestone_wall.json -577490fcf3c1247d2cfc44b3595a704166c8de27 assets/create/models/item/paved_scoria.json -1a31883ef9c3a178d5682e45a9d91deacf60abf0 assets/create/models/item/paved_scoria_slab.json -8fe179c54c4f3dc24736f66889c971b5876448b5 assets/create/models/item/paved_scoria_stairs.json -484bcc00367dceb1c6f090f54f41c08b43b4e170 assets/create/models/item/paved_scoria_wall.json -2040945217d8c3077745812de07ce7444d4904e5 assets/create/models/item/paved_weathered_limestone.json -5ec22c676e301a7004ff7d127d20b46f49063c64 assets/create/models/item/paved_weathered_limestone_slab.json -d81f85aea5e683539a0f3c805c154b76a9d88a9d assets/create/models/item/paved_weathered_limestone_stairs.json -910eaf2f571bae883b888d13f305bd848d278577 assets/create/models/item/paved_weathered_limestone_wall.json -9664f171c7856661776c5c4ef0b6880a77db648e assets/create/models/item/pink_seat.json -7d12cc24b86fcb3f0ca6fee650d1dee683859c0d assets/create/models/item/pink_valve_handle.json -04ce23dc141bedccc75b4512263da8b498f13205 assets/create/models/item/piston_extension_pole.json -1f7846aa06c3c22614c98cbec9112cc8632fa1b8 assets/create/models/item/polished_dark_scoria.json -c46f1191cfa225fa76973208646e7bd86d7fcb5f assets/create/models/item/polished_dark_scoria_slab.json -db8c0604529f47f7ef50c5a91ec3eab112a649a0 assets/create/models/item/polished_dark_scoria_stairs.json -c7beae7e25d3da7768a9144684e6089a22af8e28 assets/create/models/item/polished_dark_scoria_wall.json -c9e6ec5d6313e159c751d4f7eee1a1a543e74188 assets/create/models/item/polished_dolomite.json -68db13895c1a4017b036bc839bf4b4d83a4557d3 assets/create/models/item/polished_dolomite_slab.json -07aefeacec36467872e34b14ec4e1a56474decc5 assets/create/models/item/polished_dolomite_stairs.json -91eb573870e26f66bb3a1ace3b21e108dbaf2a8e assets/create/models/item/polished_dolomite_wall.json -bf2dd5b0f0bd6579ae6d8e07d81cb418679bf613 assets/create/models/item/polished_gabbro.json -c65246c4e2a738b7049edf208325482925932315 assets/create/models/item/polished_gabbro_slab.json -183e007e97155fae8dfd897d2f56bde07e915908 assets/create/models/item/polished_gabbro_stairs.json -b750f063dbf91429101a9f82ba68a60c6089dcc7 assets/create/models/item/polished_gabbro_wall.json -3ee599a9b8e46e5b6f759eace8d1dca3b3d065f5 assets/create/models/item/polished_limestone.json -6c899db964025a4e61245063ba2b917c5e14e5c0 assets/create/models/item/polished_limestone_slab.json -7b7e357c0d9abd524d267b197c3c7c8a031da493 assets/create/models/item/polished_limestone_stairs.json -c8fca98a07ed0cb03cf195c0fdde0f7671f70bd1 assets/create/models/item/polished_limestone_wall.json -06a29cabc9def019ad5fc663f64bfaba0eed81ad assets/create/models/item/polished_rose_quartz.json -7f4ada06f5fc6647e6ba7fe3195efc116bfb2189 assets/create/models/item/polished_scoria.json -143139799880ed94c0b41bacfe3dc0a821d96c49 assets/create/models/item/polished_scoria_slab.json -e95125318055b8557afd7d108488cf0bdd81fe49 assets/create/models/item/polished_scoria_stairs.json -4d2da954c66883cd1e41f8c06e1af9c21a11fd12 assets/create/models/item/polished_scoria_wall.json -8197d4494ff1d8d81be8fac9285246cc1c6bcf54 assets/create/models/item/polished_weathered_limestone.json -68fb04f7a89c8117bb641e347df9bfc1f1248335 assets/create/models/item/polished_weathered_limestone_slab.json -6d92ee7112aa20e8a1adfe73d8933031c299bed1 assets/create/models/item/polished_weathered_limestone_stairs.json -d98a1d479dff88d7a6f084f2c9de8fbbf80961ef assets/create/models/item/polished_weathered_limestone_wall.json -0e5638cdbf04d7af2222ec15fbe1d960385ea237 assets/create/models/item/portable_fluid_interface.json -3bc60b0d9884c2ee0f1dd530e90fceb699eea737 assets/create/models/item/portable_storage_interface.json -417c301eb7e54f14c564975570f59d048cc88987 assets/create/models/item/powdered_obsidian.json -1e501c1f2e9250aaaadcf17db62646d08177d4e1 assets/create/models/item/powered_latch.json -3a6dfc7f36e31ebfcd650c3144a7f2210e8a4f9f assets/create/models/item/powered_toggle_latch.json -4a3c3d81097d56bbd3aefeeb9eb7db87f514b5b4 assets/create/models/item/propeller.json -4b8a27ff05ed5331889dfc4b0b4562f3e94b0dfe assets/create/models/item/pulse_repeater.json -a598b2f5eb34b061e81efb8a55267a02f8e08a61 assets/create/models/item/purple_seat.json -e5138f9e37ca4d24cda2eb7b24a021eb7c8ae21c assets/create/models/item/purple_valve_handle.json -efbda15b53084acdac2d36b8e0a764a9ab34d723 assets/create/models/item/radial_chassis.json -fc05c4492da3d17add7e410323a47456c0d21e0e assets/create/models/item/red_sand_paper.json -3e251514aa698076b73fdbfef720b78b21d3bd93 assets/create/models/item/red_seat.json -b959a1b35105c2c21933418bd29ce12a090716f8 assets/create/models/item/red_valve_handle.json -b9a4ac219a27e60a82f55129f2df5ae6183981e2 assets/create/models/item/redstone_contact.json -52e561abeb954d0349e640566de92ef80ccbf919 assets/create/models/item/redstone_link.json -81c7f4381cbda69aebcb07700cb998f49c38c8c1 assets/create/models/item/refined_radiance.json -ef52b3734a47e96c5f83d60da73110e925737933 assets/create/models/item/refined_radiance_casing.json -901f7ad587dd07c9494d95bf7f08f93bb20db774 assets/create/models/item/reinforced_rail.json -6daff6b82b33374d7add65e352e05ecb2fd9ebdd assets/create/models/item/rope_pulley.json -0817505d2d3ee516424100b985ca3fe2d2e7f01e assets/create/models/item/rose_quartz.json -acfbf487ee65c2c58d89cb2644e33fda75751fde assets/create/models/item/rotation_speed_controller.json -171c343f7f536008f79ea1d63e0a443d064e9ef1 assets/create/models/item/sail_frame.json -5fa0bfe8642e2614a7e97d27af1a95dd2e012097 assets/create/models/item/sand_paper.json -3202829de06e9c532dc8a61c955458648b70d645 assets/create/models/item/schematic.json -3f07bc7d4587d78de463ae2ce236e4f363b923cd assets/create/models/item/schematic_and_quill.json -8dd5caa4d7a0ee45bd9b39e09c4503159933d089 assets/create/models/item/schematic_table.json -0a1c4080ca572106c19a0ba6e2df4baba5f45d35 assets/create/models/item/schematicannon.json -22a6dfdc3cbb1b6ac20ec123b490e15c72dfbfcf assets/create/models/item/scoria.json -44a99d0a4ec37dd33ea184e0f4b4bd54289eb19f assets/create/models/item/scoria_bricks.json -403c205f6f253b26287fd4479a1ff4ead3a2c229 assets/create/models/item/scoria_bricks_slab.json -74125ed1dff40e71c796b80ddfff7bfab57c33ae assets/create/models/item/scoria_bricks_stairs.json -4457fd21744229c45678e58ec4f511f2eed363af assets/create/models/item/scoria_bricks_wall.json -ff235540c1632a34751bd76e66b2a517f7cbfae9 assets/create/models/item/scoria_cobblestone.json -f4107d5e5a573810873e1a52aaacda674d371e1b assets/create/models/item/scoria_cobblestone_slab.json -fe8c7476b1386fc05a57a93319f71455ba4cf29b assets/create/models/item/scoria_cobblestone_stairs.json -9bd8d8ad10aee5b411d69d8ec9d65c479179876a assets/create/models/item/scoria_cobblestone_wall.json -1f0cfa084107c05b010556f609371285295a0d12 assets/create/models/item/scoria_pillar.json -083b9fc316cef1d24ea20f06a6aaa4cb52f1ef94 assets/create/models/item/secondary_linear_chassis.json -0df94333da5700f01dcf4ffa46e3f3bf26bb8cf7 assets/create/models/item/sequenced_gearshift.json -8d114060ee1b55dc4bd9edaf2c5b55999c535b35 assets/create/models/item/shadow_steel.json -081326d6666cfcfe34c45c1b74bfceba0b01ae6e assets/create/models/item/shadow_steel_casing.json -106ae694f7e03a218c37003dca8291b1d39b3c55 assets/create/models/item/shaft.json -0f6bc6a4328ef317d50903c7b50ab5f78fce37eb assets/create/models/item/smart_chute.json -188c49e5d8d9a2d5a570dbccdf3efd1b472dae18 assets/create/models/item/smart_fluid_pipe.json -d6fb0d38b1b5bcc199b52ac8889eaecd167f6725 assets/create/models/item/speedometer.json -b9abe1331d49871838231f3a8e5d2973634e9325 assets/create/models/item/spout.json -b305e81f1dc5272634745b6e822af40955a2ef28 assets/create/models/item/spruce_window.json -f3ec8df2ee1690353ae1ec687b822d0fd962160e assets/create/models/item/spruce_window_pane.json -bb546e5342c6d1a6b4040cf7ccdd2f10c6f79965 assets/create/models/item/sticker.json -891abc24593d53d282773eca5534065056d89b4c assets/create/models/item/sticky_mechanical_piston.json -bbb5773adc23128c70174bfc531af936e6e063e3 assets/create/models/item/stockpile_switch.json -bab8f78c319b2a79ed55c5d2a94b521ddaa44996 assets/create/models/item/stressometer.json -67cbfc1413ad5201f462c618a8fc6265edb3b8ad assets/create/models/item/super_glue.json -088af343cda8a949f1d950e15e72b51ffca20a1d assets/create/models/item/sweet_roll.json -b1d3d00ff05908feacad06a86800da96cc9bc65d assets/create/models/item/tiled_glass.json -a7d0b746637897209bd86b1a6501ecbfb46d8270 assets/create/models/item/tiled_glass_pane.json -f8a4fa1ccecb16a3941cc46db7481ed8e8429a5e assets/create/models/item/tree_fertilizer.json -fb24881c4e92bbb7ffa54a71e0af6b1c66d84829 assets/create/models/item/turntable.json -2a6be52ddedd614dc3b8a6b659bfbd7a4be54252 assets/create/models/item/vertical_framed_glass.json -5e331da9d4086412f5722923e3008246ed286a00 assets/create/models/item/vertical_framed_glass_pane.json -00c2929de9b7171656bea74e1a6d694c6a45b075 assets/create/models/item/vertical_gearbox.json -2d4a31321cc13f62f5fd73aabdc5fd97e635bfbc assets/create/models/item/wand_of_symmetry.json -89493fa0691453d6c604e3ed9ae077fe43648d18 assets/create/models/item/warped_window.json -5f169d526b4697c85e6d113be4ff81a2b45b6e6a assets/create/models/item/warped_window_pane.json -ae20383b0b0806431d0fdd8ffdd16fe2b0cc61ad assets/create/models/item/water_wheel.json -1d097a315c2817d16c241c86f66bd48e5e52f4b4 assets/create/models/item/weathered_limestone.json -fcc8ab312989ec485e2d86b856d81dbafaf0e930 assets/create/models/item/weathered_limestone_bricks.json -7e7abcb63aa5fc0dee50e116c93f8544768d4d95 assets/create/models/item/weathered_limestone_bricks_slab.json -def7382f3216c59d835ab64f534678f3d31ecc51 assets/create/models/item/weathered_limestone_bricks_stairs.json -f2cd30c585a25e336868ee4f8dd80799ecb986c6 assets/create/models/item/weathered_limestone_bricks_wall.json -015479be1e6b8de4af6c14cc0e9ced5b6e7c1b07 assets/create/models/item/weathered_limestone_cobblestone.json -377fffa39af11eb195b73310efd4b53b8c618c92 assets/create/models/item/weathered_limestone_cobblestone_slab.json -3d26cb5616182ba6926d0bf703119ebfbeacbe31 assets/create/models/item/weathered_limestone_cobblestone_stairs.json -ea1d735b557a71bbb2b35e5f03ba571d54c38dbe assets/create/models/item/weathered_limestone_cobblestone_wall.json -40bed7f5e9e97da45c5d9cebc3fcf87b2b13a808 assets/create/models/item/weathered_limestone_pillar.json -c36834070e12d25cd9e818d0d0181e267584b483 assets/create/models/item/weighted_ejector.json -30c449f637e8d56b7670b81ec2a90942e2972739 assets/create/models/item/wheat_flour.json -9502a51ed2f6a110b6d41731a5948be4d70c8af8 assets/create/models/item/whisk.json -c6253e0f8db3c3992d3f78fe5045e276d39d5b22 assets/create/models/item/white_sail.json -69328eb4f91c4407fbcad5e3c4b88363f1a9572c assets/create/models/item/white_seat.json -be7a2d59d43083d7f2427193dcb9d68004224dd3 assets/create/models/item/white_valve_handle.json -d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bearing.json -500abf752654a904d78a967f6c6d29a75a4821ab assets/create/models/item/wooden_bracket.json -2527b52413965a3e84b4718e08a9b8bb30a741ea assets/create/models/item/wrench.json -4b49bc2418410cded5f0b7da3430f1a22e049f18 assets/create/models/item/yellow_seat.json -790daf016f980801e7587b548a325082c65f6f03 assets/create/models/item/yellow_valve_handle.json -9365b5cf29e35d070d077c54520f6cc780aeb842 assets/create/models/item/zinc_block.json -866fbb0ce2878a73e0440d1caf6534c8bd7c384f assets/create/models/item/zinc_ingot.json -a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json -b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json -6490fa0587db770cf7c794b47f3bcd2b691f4226 assets/create/sounds.json -0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json -187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json -0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json -83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json -b243e73ea26c5c8c8c57570d7d91a50d035653a4 data/create/advancements/arm_many_targets.json -6c16fbae3b4e74be38ca91441412a467ec21ffe2 data/create/advancements/basin.json -56e2a988aeb23421811f87cf7fe014985a70dc40 data/create/advancements/belt.json -7a551856f64bb73eacf05e4d4d2e1a539aae2c5d data/create/advancements/belt_funnel.json -66f45a9e3058f5363cde280383b094440f268963 data/create/advancements/belt_funnel_kiss.json -057bb9f72827dd31126ed9db5aa8f63def66ef18 data/create/advancements/blaze_burner.json -1c887715949eb179553a62c6ae360741fc19eefb data/create/advancements/blaze_cake.json -5ba8eb22d8bcb3e90c7a8f84cf909d5f78b83eb9 data/create/advancements/brass.json -de13a091928d5ab539d567411dd5c522cdcdd668 data/create/advancements/brass_casing.json -88adc39840259e79e46c4f33abb8eeaeb41dcdc8 data/create/advancements/chained_item_drain.json -13c848e1422dcbd0a35a559e362a3f54a12d5543 data/create/advancements/chocolate.json -0c84fe24f49330a7491016235afd8fad02b560fe data/create/advancements/chocolate_wheel.json -34739e1dcaddcb8e24fbd6d6d61d8d1d8a6d7413 data/create/advancements/chromatic_compound.json -9531baa67bb3aee5e2723b1ab0578ff87bcb42b0 data/create/advancements/chromatic_eob.json -f37551a788dfb3ff3d65db97a03c0420edf2c041 data/create/advancements/chute.json -0ffacd497176afdb26670783b65d383ac6236c19 data/create/advancements/clockwork_bearing.json -870ca791c418a1bc24f7b12284f5788c84911b92 data/create/advancements/compact.json -d1015e059a2f2008a364b6d045a011a6d671f20d data/create/advancements/copper_casing.json -8e2a12a26218a46665c46f350ef9c3418a901988 data/create/advancements/crafter.json -d1fbc14303c7327e9fc02e505e7e434591b7f785 data/create/advancements/crushing_wheel.json -e9e1789de5cd5577a801a09d489a13f2c98779dc data/create/advancements/cuckoo.json -2a96fad5b44b62f233c9af5b4a637faf32ce24af data/create/advancements/deployer.json -eb8e7c13163923d2f88c999c6eb5afa4b7d2426e data/create/advancements/dual_extendo_grip.json -04eaf829696d735244c0e4798dd3bdeb26e13a32 data/create/advancements/electron_tube.json -36622ff02345cdc2404230c48de9ed42b1b9bd1d data/create/advancements/extendo_grip.json -b1699baaadaac7ebce642c09428519d156e21594 data/create/advancements/fan.json -5aa76cba3b40a1c234ffa84a89ecca630990fc0f data/create/advancements/fan_lava.json -716a9816558300a3652ed8d8d568517017813f5c data/create/advancements/fan_smoke.json -a61eb63d02604e88836519f89f74b252a640d485 data/create/advancements/fan_water.json -7e639be7a98d1d99bc2f996d817477a426ca8b61 data/create/advancements/fist_bump.json -bc65c06352607d2e2f2abb6a66bc761011e1e720 data/create/advancements/flywheel.json -380087d7c540232bb0b4a47be339dd96c3d2725b data/create/advancements/glass_pipe.json -62f3610188f7dbd3900ab305edc2d06282705a38 data/create/advancements/goggles.json -ea0f8acb7c3692b569269e62927725d968a65251 data/create/advancements/hose_pulley.json -9f642faf92b75a28c564e90be8448b9a4328af5e data/create/advancements/infinite_chocolate.json -a933fa5e7217e2ffe123ae035cfbc9210ba69fd5 data/create/advancements/infinite_lava.json -a8ab0e4ffba358d23f9efaa9f51245b6d490a8be data/create/advancements/infinite_water.json -9beb622c79e9f5ce2397c22222cac0faf272f388 data/create/advancements/integrated_circuit.json -316bed3d8985d0a371200967d7edd2936f1b9f94 data/create/advancements/integrated_circuit_eob.json -4d7cb129877d6cd68fda66159818e47ca44db078 data/create/advancements/item_drain.json -b61d958815f1c2530c11c88c9081d5c794d7f807 data/create/advancements/its_alive.json -9d68fed495a37fc78184e43e432c3181da84d19c data/create/advancements/lava_wheel.json -786b2bdb9e552160c01e5cb748b729b3ff7f6738 data/create/advancements/maxed_windmill.json -28686d74d162dd35b9bf91da2da654d3b79e6622 data/create/advancements/mechanical_arm.json -218568a4e416c5fa559c55a5c92aa4e93f88b837 data/create/advancements/mechanical_drill.json -6dc84ad2f0512495fe3f01f99d3c547849351e33 data/create/advancements/mechanical_saw.json -3bc549c06dc6d9568f92e1abc9654c9b4c33f035 data/create/advancements/millstone.json -ee834796d3d05d097048338ca946c5509fada0be data/create/advancements/mixer.json -bee2c19d730936e34ee61fe04af13e2b031ecffa data/create/advancements/musical_arm.json -c9c4060ed207226b69fada2d61e01a97d7077eae data/create/advancements/nixie_tube.json -0b0a7f5b7f30ab75e4ca790c850b1eb50944a3aa data/create/advancements/overstress_flywheel.json -7f0847247a80ee930c23f551bce00bda74f81b0e data/create/advancements/overstressed.json -449eb8a9e6102bb342c96eb8b19e743eb6979bfa data/create/advancements/pipe_collision.json -4b621e5bb48fbb120853ec02c05c915d86bd6dd8 data/create/advancements/pipe_spill.json -72025d8bf73ab8096c29f12d0c8d9a346f09cd64 data/create/advancements/polished_rose_quartz.json -62d29ec01eff5d21968636a0479361ecdc11ae30 data/create/advancements/press.json -f80479b50e248ee8d6d1abb7d08866cf711ac2b2 data/create/advancements/recipes/building_blocks/andesite.json -5012e9d559439d0d62d0b34c2e39de048e8c7699 data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json -2e253226c408dffb9dfb828b846f70ebd1cfb16e data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json -3f022f89aeb5034f2292ca71daa9f311e8af40ff data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json -fb73858cc12c9898a95121407100777da70fb514 data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_mekanism.json -b7232d0e659de3f227289a5275f76a5a2ec578bb data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json -1f527bbe24e79f3f149c06dd8be7016eea42b4e9 data/create/advancements/recipes/building_blocks/blasting/ingot_osmium_compat_mekanism.json -bf68b12cf828b64f5bb407bba6cf6ced8578327c data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json -fc07b75f81782fa06990c7eb7febc635621df91a data/create/advancements/recipes/building_blocks/blasting/ingot_tin_compat_mekanism.json -84963b1e8eb81dd20df6a9680028f8b76fef2bae data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json -d8edb7b810ba30aa7b5d281e283ccfd4bcc8af4f data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_mekanism.json -24c7db24ea02b66bac7de0cb508485488b755aea data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_eidolon.json -744d8831fde05ee2598ccde10f9289512c45d55b data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json -4ef0ac97acddee1c49a0deb402b43feb40af1dc6 data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json -25c6e6736da3a529c4cfb384a2dba707f946ce22 data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_thermal.json -6a7c767957b8c1827ad58210b37321a2a6bb4018 data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json -e2475d1fad9aaa82e99415a2a5d07a2343ce84a6 data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_thermal.json -f994f545e3a1990448e852c556d94f7eaf9954a0 data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json -85b1a8c173ca7e5421f9d2bd0f3f997c8431d15c data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json -a61045a27757950d96fee77768bfd96f935f98b2 data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_iceandfire.json -9b48187d487ddabcad4f4e4f75b67813f26a746d data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json -96bf046af4d23dddcca5915cfbfc04a46b0d2912 data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json -96a3efecf663433123861136467d9fa28ea26a1e data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_thermal.json -506ade70e5bcc111323823f195c3abe4869d4c69 data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json -a75f1162ac89cd50a1ca8e525dd059fb359a6550 data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json -230c3da350aa45524712d5dd28b84aa59b2883e9 data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_thermal.json -38410d4b3bbbf33c1c8913735abd1b3d71fb3829 data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json -8850272a97541e331482531c52cc94197fe808be data/create/advancements/recipes/building_blocks/diorite.json -0abb698cabe5f71675773e5eeadeccb509f1cb90 data/create/advancements/recipes/building_blocks/granite.json -22067545c460d95831d9dddf361da9becac3396e data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json -e525d8eda8d0aac6791ae935ed4f3f75cc521460 data/create/advancements/recipes/building_blocks/smelting/glass_from_framed_glass.json -295c5a61d6f175a65d25e19cbd7ca90d3b4a93b2 data/create/advancements/recipes/building_blocks/smelting/glass_from_horizontal_framed_glass.json -d192e3f2185ad3cd8cd64f639dd6395aaec89563 data/create/advancements/recipes/building_blocks/smelting/glass_from_tiled_glass.json -98fe15c805f1d228f1db6a2b35426ef01e9747a8 data/create/advancements/recipes/building_blocks/smelting/glass_from_vertical_framed_glass.json -43d3d2c952f54fdf73e4df422554451ceff899d3 data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json -48439dd60a0a79f0ab6accc3773a3a8b64b7396e data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json -9dede27b23de5aeafec509a5b232fb83ef7d87fa data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_mekanism.json -7d8325768f249a1ac5d79d60eb58b6eb32c51234 data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json -c2a565459bc3a2b6aa1770e36295373f886b27b3 data/create/advancements/recipes/building_blocks/smelting/ingot_osmium_compat_mekanism.json -d192714def52e54a58ae96f7592055e925d88bb8 data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json -e922be59fa4cb031020041f54d06d361f090e6a8 data/create/advancements/recipes/building_blocks/smelting/ingot_tin_compat_mekanism.json -6f0b67b3f49da5c3102a48e68e6c4f834d08b0e2 data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json -2c10ff7aea86bec54b5b84a8fa89e51aba9c771e data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_mekanism.json -ab46ab7914bd3f35b242a987fa58c90cc22a0636 data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_eidolon.json -847dc1a0bd2275a11ff02624b98cf7fdf0d8f47b data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json -79d5f852e9e48e9e8ff5cd42890fbc9ad29e9712 data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json -cdf4697b74e4a6add2ea41825733f4d9ff2b83e6 data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_thermal.json -2be47fb3a33a7e92705767eb255d7586de56f4a5 data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json -6dff1a0b51d7a81d6a4e8f4fd8fa558f9befea1b data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_thermal.json -70d98f34671f09331f6765447b95cd00c3b8d4e5 data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json -8e5beb04ea241145f4e34320cba1745fd9d386e6 data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json -6c6fd69e9efb6a1bda750c6d73109c98e774a498 data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_iceandfire.json -60fd25d05bfe101d83e3a13678cca9940665771c data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json -29685c6f05455faa657cb51433352d005b798cf4 data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json -05b68914ac2fb0da7609a32369bf739e28256e41 data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_thermal.json -7677ff00e70a92e9c4b9035b0d706e0c255b7e26 data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json -e98e6372bb065a0d82f44bea7169e8f40bd40920 data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json -c33e122c534a7a134f69faa36446ce7564d8a705 data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_thermal.json -8b47a4314f17dabe490ffc9bcd9b9d32640a6ef2 data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json -9db50289b778cbcdfd9cd8589361924a0f1bebad data/create/advancements/recipes/create.base/blasting/brass_ingot_from_crushed.json -9b7a18a8697ef7ea09538909df640af53d0b6ca7 data/create/advancements/recipes/create.base/blasting/copper_ingot_from_crushed.json -c368cadffa9177fefb9e92ff4453b40bc8dd670d data/create/advancements/recipes/create.base/blasting/copper_ingot_from_ore.json -8fffce2a5c5dd88d52e3b006fa92fb18cf2f1571 data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_crushed.json -4bb60ef5e186f12a9d52e61319db8c78300c64ab data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_ore.json -d1d8cf6e1c95b7d99bf873fa6fee033103f995fd data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json -46c04e685ab345a80598176f7ac68a044a76cd76 data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json -5f06b7dcf2af11f30c2e10ade4ac3fd172bc04df data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json -dd487f98c411f1ff22cb7fc208b8cc24b27deb2f data/create/advancements/recipes/create.base/crafting/appliances/dough.json -51cdcf168087f47e4458eed7543d227da1ee5ca0 data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json -d531f87f425d199aee4777a588c1cd6cab6f5173 data/create/advancements/recipes/create.base/crafting/curiosities/minecart_coupling.json -2eef3201017af03f6a2f0f015645e3ff5e25d9c1 data/create/advancements/recipes/create.base/crafting/curiosities/wand_of_symmetry.json -80155fa8e28e7de87adad3dc2cd79564496d7ef7 data/create/advancements/recipes/create.base/crafting/kinetics/adjustable_chain_gearshift.json -92416ced6ede6965fd728e1c7336bb05a3e41ea2 data/create/advancements/recipes/create.base/crafting/kinetics/analog_lever.json -3e9753006da898d4569bbeabf95997e8c90847c8 data/create/advancements/recipes/create.base/crafting/kinetics/attribute_filter.json -bec8c280b717306f87050b08a418feab53be71cb data/create/advancements/recipes/create.base/crafting/kinetics/basin.json -5af08853632fb5970fe542b3ecbde0ad16d64714 data/create/advancements/recipes/create.base/crafting/kinetics/belt_connector.json -80d87f1dde60adb5334e0cff25a9f0b7f67c1526 data/create/advancements/recipes/create.base/crafting/kinetics/black_seat.json -771e2fc2f3be2867f6d83af8030ed321c0b8ab8d data/create/advancements/recipes/create.base/crafting/kinetics/black_seat_from_other_seat.json -86d3e8ba30723ad87e32a589171a35ca907b5db9 data/create/advancements/recipes/create.base/crafting/kinetics/black_valve_handle_from_other_valve_handle.json -ffbe212a442084b0688bbee82ad71c482c9b032c data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat.json -2cc2a11839ad826340fcc7bca1aa1a4d92953b96 data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat_from_other_seat.json -17ffdf52575a3905a8b6372f749858604334c5f0 data/create/advancements/recipes/create.base/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json -0a49cc7cb958c64de1dd35b0acd30070d6a0d81d data/create/advancements/recipes/create.base/crafting/kinetics/brass_hand.json -3d16de97e9821ea473d6fc8b22026cca9e9e172b data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat.json -5a53f4229ce56608207d430c7f87ee44f8d41f6f data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat_from_other_seat.json -d12c6127aa397138d490ccfcf31148fb3754b7a6 data/create/advancements/recipes/create.base/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json -d3ca638ffbca177b4970f046f6c42770e757e33e data/create/advancements/recipes/create.base/crafting/kinetics/cart_assembler.json -1afaa6917411aa5c9fb1355588b481552bb0e3f8 data/create/advancements/recipes/create.base/crafting/kinetics/chute.json -a49a70403523bc9d4eadffdac5507806aca9fd9d data/create/advancements/recipes/create.base/crafting/kinetics/clockwork_bearing.json -403fd0da8ee42a52234e544cf532e454fb80137b data/create/advancements/recipes/create.base/crafting/kinetics/clutch.json -5bbaac432fce5435c8c3df56ec81d31a0b76a4ee data/create/advancements/recipes/create.base/crafting/kinetics/cogwheel.json -b42213bffce4e51618e1bba481959208d247c120 data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json -27930edef02aac6e74bfab62128688ecfb575008 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json -512e4d45657f6df3df2639040e8c5e76f9119f17 data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json -7b80f6b25e1e21e9545120592bc1a3561ee49603 data/create/advancements/recipes/create.base/crafting/kinetics/crafter_slot_cover.json -7f55c18bdf5eafe2be65c7afb46ec40777f1aed8 data/create/advancements/recipes/create.base/crafting/kinetics/cuckoo_clock.json -44cf4c0a792e8742a030c82f92a529ade059b475 data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat.json -80dc8151d0b9dff01a8a2abf6b84057c9ef5b908 data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat_from_other_seat.json -2691122d20392bffa45a2b39c84555c90fe07e7d data/create/advancements/recipes/create.base/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json -9698f2e43c3edcf6bdc31f4b893cdaee2298476c data/create/advancements/recipes/create.base/crafting/kinetics/deployer.json -9840f103d4094b04ebf8c1ffbe154e5698dd4d25 data/create/advancements/recipes/create.base/crafting/kinetics/depot.json -81a3fe7e87c26767e3be6f97ea1de50f1cd74b65 data/create/advancements/recipes/create.base/crafting/kinetics/empty_blaze_burner.json -4b961b039f9dfa59abc700a527c9b2008325a231 data/create/advancements/recipes/create.base/crafting/kinetics/encased_chain_drive.json -3a9aef30af8d9694548da236fe3129c16dba4883 data/create/advancements/recipes/create.base/crafting/kinetics/encased_fan.json -40bbc4d9df2911721a58481f68a6bd8cfcfbeb98 data/create/advancements/recipes/create.base/crafting/kinetics/filter.json -11d89eca0ccb0f1a8cd27acc9fc0c10d7bf83285 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe.json -a2b33e972c7130cbf105f34d88dd7a9a53d5465c data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json -a91b11ae44d9b1f479c6dee1f1a4580104059287 data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json -b2a73fc7e0e4e764c2af400a6e093c2d78d7d37d data/create/advancements/recipes/create.base/crafting/kinetics/gantry_carriage.json -d1d2fc2f5c4e89393808c65e015917eabb50dffe data/create/advancements/recipes/create.base/crafting/kinetics/gantry_shaft.json -dae9e65a089955c0367dc1453e104c3153ebad79 data/create/advancements/recipes/create.base/crafting/kinetics/gearbox.json -8f9819912605cb2499cb3e79ecb0e709b0e38c19 data/create/advancements/recipes/create.base/crafting/kinetics/gearboxfrom_conversion.json -94b8a1f976b9f853cb6e24b0cef72d2e16c3282f data/create/advancements/recipes/create.base/crafting/kinetics/gearshift.json -1609e317d4dcd830be7356301f6685d71d87d34c data/create/advancements/recipes/create.base/crafting/kinetics/goggles.json -585378d03f5ae23e43a587468d183951e3fa58a9 data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat.json -f0a0c371c6851a5418b4b9480797677c8e871372 data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat_from_other_seat.json -c023b9221d7983487d21e5ecc7d92246cfc7e791 data/create/advancements/recipes/create.base/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json -72194ca0c9820e8b098534007df7f2b2d3813af6 data/create/advancements/recipes/create.base/crafting/kinetics/green_seat.json -2ba23f019a110a3e035a49e56ee8156fc11d74c0 data/create/advancements/recipes/create.base/crafting/kinetics/green_seat_from_other_seat.json -9af3d92d11c3f520df3e22f3069042bf34585010 data/create/advancements/recipes/create.base/crafting/kinetics/green_valve_handle_from_other_valve_handle.json -dbb96a4db4ef8172af73a626bed9727278d804bd data/create/advancements/recipes/create.base/crafting/kinetics/hand_crank.json -21cd686e1f3a4004d8e9bd3d92675bd61fb2b4db data/create/advancements/recipes/create.base/crafting/kinetics/hose_pulley.json -58450edb1767e9d56256186acba954ca09481548 data/create/advancements/recipes/create.base/crafting/kinetics/item_drain.json -a71b626b6ee58a4eabee56f67c48f041a1323506 data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel.json -eb007bb079bbe6b6aaad2ca90f5af84261e3f8ea data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat.json -571da50fbf5f2fcd3363b3dab91e7233e0ebffa0 data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat_from_other_seat.json -ddd80e84a7d595bbb3cf405a902ebbfd4ea5263c data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json -e72a9e36ee72b838d83dee29129085c9717bd1c0 data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat.json -b670caaa6822ba7d9dc59ab4b6f21ab7d1ab2482 data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat_from_other_seat.json -ef79bf45e7aa43374d05a258ccb62a8243047fbb data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json -471b41b1beb16be7885b32e3ab5e37e835888ed3 data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat.json -7621220bcda54b559156a5dfb047de3429f1d4d2 data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat_from_other_seat.json -0ce3062d3094ac20cc191b37fe948b54afe1f939 data/create/advancements/recipes/create.base/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json -4375ad2e70aa1311d86093983b4342fcc25fa3f8 data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassis.json -88cf153c96c72c6945f4de7c11523bfd82905e61 data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassisfrom_conversion.json -bf36904e7e691a150379561fb6f945123ebd3978 data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat.json -da90875fb845ee952ca2cb71f96b8de4f6420c21 data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat_from_other_seat.json -8ae8701f89b0881fbf9fcdf18b550e4bdf8d1483 data/create/advancements/recipes/create.base/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json -4f751a51ed674f2ffacccdbeaf4f2bd28f67fa6c data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_arm.json -3264bf9c4adeea21b250c65a78a7ef9c15fa9720 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_bearing.json -d096f7343b42827c4832bf6c68e7d0135e21c8a9 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_crafter.json -8e8bb7aa8da72913a69bc4792cfc61f8cf827386 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_drill.json -b2845089f6356957e048df29ea75c9f5e64d5a44 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_harvester.json -732393f6b853ea602eb2cba08c89aa028c43e6d6 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_mixer.json -6408111deb177f429d3bbee36ac96e9d7d7446c4 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_piston.json -3338358e5aaa9a8d10a6e2a55765a8839b0a7976 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_plough.json -02cfc8c25c2977292dba992542c83666d9123e95 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_press.json -750d93013709081b7eaca5a5b9122ab51ab31d02 data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_pump.json -f5ea782327d2353dd0e484b15536b7c19987a32b data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_saw.json -8fd1bd08e678262d95ac97ba2f18d631c2fd3796 data/create/advancements/recipes/create.base/crafting/kinetics/metal_bracket.json -5a107ee1772727b66414c8d143b77833f3a92f0f data/create/advancements/recipes/create.base/crafting/kinetics/millstone.json -d38e8ff9dd33558227678d69393b57a360caa28e data/create/advancements/recipes/create.base/crafting/kinetics/mysterious_cuckoo_clock.json -0869995e6f406094ae949b2e1a24a3b230260ae1 data/create/advancements/recipes/create.base/crafting/kinetics/nixie_tube.json -afeb2a152697b68bc953986d6886cbe527c6d2b5 data/create/advancements/recipes/create.base/crafting/kinetics/nozzle.json -ccd49c33260333ba850d0b843c4913cb6371eee9 data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat.json -0556cca38a52f819e7f786ffbf284d5ef3364d0a data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat_from_other_seat.json -58c0a2742e8f10e45a09cb97e40b542a58c7134b data/create/advancements/recipes/create.base/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json -460240d4e8437b35c24262c5724884ae213e1b9c data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat.json -ca21e2192a2fea0f112764f96c928d337762158b data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat_from_other_seat.json -6c11444884679c4dd03d43f5893fca5cdc271915 data/create/advancements/recipes/create.base/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json -960d03f13b383fca0d9b7d3a2885da346d97c4ef data/create/advancements/recipes/create.base/crafting/kinetics/piston_extension_pole.json -164563947ebd951d36a839ee0787714b104ba090 data/create/advancements/recipes/create.base/crafting/kinetics/portable_fluid_interface.json -3190b3800152879614127c7cd2616e5607f1a0b1 data/create/advancements/recipes/create.base/crafting/kinetics/portable_storage_interface.json -02258b70f1db3d91f0ccb5a5ffd362349f8f359d data/create/advancements/recipes/create.base/crafting/kinetics/propeller.json -d2a430820a87c24104729eede57628c6a92b277e data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat.json -8eb1319984a8bf9502d8fddb717b11a1ee082f39 data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat_from_other_seat.json -a295c929f7c9b31fd97607f8f6a1f8c56c16c7c8 data/create/advancements/recipes/create.base/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json -f80c4cf0e9c649609a8e615d2eefc603cec316cf data/create/advancements/recipes/create.base/crafting/kinetics/radial_chassis.json -f639481c8e1485019bf120463e67811b6d2d8ef9 data/create/advancements/recipes/create.base/crafting/kinetics/red_seat.json -038e18d0815e7de55fc8fcb5fe7127cdad62210f data/create/advancements/recipes/create.base/crafting/kinetics/red_seat_from_other_seat.json -dba0696069fe0850120dc6e1ca1ab741b0fe6d21 data/create/advancements/recipes/create.base/crafting/kinetics/red_valve_handle_from_other_valve_handle.json -74522fbb454832fc0eefa5f52b82b7d7d4e9b7fb data/create/advancements/recipes/create.base/crafting/kinetics/rope_pulley.json -48e29ec1b301bf4857db06913ee340f49d61cdf9 data/create/advancements/recipes/create.base/crafting/kinetics/rotation_speed_controller.json -e9faf71b9597deecd2c1fb566f3c438ddc243e82 data/create/advancements/recipes/create.base/crafting/kinetics/sail_frame.json -b463cf9343f8d08b8ed3e87f46a19facadd657b0 data/create/advancements/recipes/create.base/crafting/kinetics/secondary_linear_chassisfrom_conversion.json -191213ef824e7b73d66bb3aecc3115306b445e5a data/create/advancements/recipes/create.base/crafting/kinetics/sequenced_gearshift.json -cd8cefee21a1690f9158b8e8661a92d20ad0f535 data/create/advancements/recipes/create.base/crafting/kinetics/shaft.json -1b460b6014cb298cbea3e658596f0e753fa8066a data/create/advancements/recipes/create.base/crafting/kinetics/smart_chute.json -232044be44da655ff09deeb99cb220bf71e31096 data/create/advancements/recipes/create.base/crafting/kinetics/smart_fluid_pipe.json -e8a5d924ccf30b6eae4b9ec0a8040e31f0eb165b data/create/advancements/recipes/create.base/crafting/kinetics/speedometer.json -90ff137eb1533695d9d17296ed180c0a88ddd891 data/create/advancements/recipes/create.base/crafting/kinetics/speedometerfrom_conversion.json -44867af16ec6d960268747effcd578ab55e3a366 data/create/advancements/recipes/create.base/crafting/kinetics/spout.json -8c7fd72b8b4d414a61859dd08857e8538d84f88b data/create/advancements/recipes/create.base/crafting/kinetics/sticker.json -3859abc8839e92b01461d3e9ef853a4934c3256b data/create/advancements/recipes/create.base/crafting/kinetics/sticky_mechanical_piston.json -9a4dad31370d9e71308afe5c3f9349b67f749635 data/create/advancements/recipes/create.base/crafting/kinetics/stressometerfrom_conversion.json -f3fc3d4fee0712906f833aa17185f0bacb21922f data/create/advancements/recipes/create.base/crafting/kinetics/super_glue.json -07ec7b627bdb049f52dddcce021cec0ad44b0049 data/create/advancements/recipes/create.base/crafting/kinetics/turntable.json -89401c0a6dffa62dbffdbb63986f580a4878402e data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearboxfrom_conversion.json -4ab6ae87b6c3a29c0c2966dad2fa335a39fafe78 data/create/advancements/recipes/create.base/crafting/kinetics/water_wheel.json -e42093eecd00375bf95d562a6e845ab1a30d7991 data/create/advancements/recipes/create.base/crafting/kinetics/weighted_ejector.json -7c146cc51139c2a8e287a60c8d645fa6f6f48cb1 data/create/advancements/recipes/create.base/crafting/kinetics/whisk.json -f876dcbd2877c921613a4af481c89d66664c1ea8 data/create/advancements/recipes/create.base/crafting/kinetics/white_sail.json -37e545b016a7c5cd283168ac71ace6467a5ad3ef data/create/advancements/recipes/create.base/crafting/kinetics/white_seat.json -856760c4b120f7b29a94dd22fe04d62df061d409 data/create/advancements/recipes/create.base/crafting/kinetics/white_seat_from_other_seat.json -b73e6f8b89e6ef94167b6fa3d0837a27222edb01 data/create/advancements/recipes/create.base/crafting/kinetics/white_valve_handle_from_other_valve_handle.json -6b783787a32446a39bb553359a7db58f71492a42 data/create/advancements/recipes/create.base/crafting/kinetics/windmill_bearing.json -d3874ab405cc09b75f5e4ff2994e9ddd9b5e77f6 data/create/advancements/recipes/create.base/crafting/kinetics/wooden_bracket.json -ddbe7ae23f48dcaee3ad44a0e597c24380b51682 data/create/advancements/recipes/create.base/crafting/kinetics/wrench.json -14c1cac4545f544a78bfd80cf7dd6355794c6679 data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat.json -e8c2001863d9819d2a2c1fddeda41a4f126a5c09 data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat_from_other_seat.json -f05bbae1e39eabb51dffa0babecf07f5de2cee3d data/create/advancements/recipes/create.base/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json -afc74c4dda92c4976703a1c488182188c3482839 data/create/advancements/recipes/create.base/crafting/logistics/adjustable_crate.json -146d55f3c5c9247c9992278873c6b8be890d733f data/create/advancements/recipes/create.base/crafting/logistics/adjustable_pulse_repeater.json -4793d335955c9d6c293e1358dc227eac93a5fe61 data/create/advancements/recipes/create.base/crafting/logistics/adjustable_repeater.json -bbcf2a888e12c41aedf7b44a1b0d92b7b9fe853b data/create/advancements/recipes/create.base/crafting/logistics/andesite_funnel.json -b53ed0a286512d2695caf0430433483bdeeeef95 data/create/advancements/recipes/create.base/crafting/logistics/andesite_tunnel.json -66dbb3486c5d38d309dd480e3f2ab0eb5ff9e559 data/create/advancements/recipes/create.base/crafting/logistics/brass_funnel.json -2127c0f1d822cc88a24d98ebb9eead9de5837ffe data/create/advancements/recipes/create.base/crafting/logistics/brass_tunnel.json -ca9ad1e9129745c3d21af86bc795b5a65ba086a2 data/create/advancements/recipes/create.base/crafting/logistics/content_observer.json -b9b0a8bfff61a89149d4fcadf679f753385212d0 data/create/advancements/recipes/create.base/crafting/logistics/powered_latch.json -9951f2d35f7444c98c022142119b18b1289ca734 data/create/advancements/recipes/create.base/crafting/logistics/powered_toggle_latch.json -76d4c5f04d0a3e6817127a828594388b18f210c4 data/create/advancements/recipes/create.base/crafting/logistics/pulse_repeater.json -0cc729835600e391b006fe844a201f419341366a data/create/advancements/recipes/create.base/crafting/logistics/redstone_contact.json -24a00abe5c747b3c8864872c4c0c50d872f219a1 data/create/advancements/recipes/create.base/crafting/logistics/redstone_link.json -457c46bb12bdab067bee969bdb3e7e23a63cf198 data/create/advancements/recipes/create.base/crafting/logistics/stockpile_switch.json -8e137e9ad4870708d4c015400f91d78cb37b4a92 data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy.json -6ad84f6f8b4ef85e67ebcc68c5326a22b59bc81a data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy_from_zinc.json -458c6ca109fd9b19c4c88c45c4999e17ce7d9bde data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json -73c85a126d708fd5475cd20336b6c6c02a881a7c data/create/advancements/recipes/create.base/crafting/materials/brass_block_from_compacting.json -37691ebd182e09b5c41fbeeb15ca31fda0cf8ca9 data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json -5988ec4b2f6f23540403d051b8d72c886ac500ea data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_compacting.json -3bbbc8b0870d10a347de37e8c1d83da130573d4c data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_decompacting.json -1028a4265a415ac9ee0df23d507f73e79633bb85 data/create/advancements/recipes/create.base/crafting/materials/brass_nugget_from_decompacting.json -306fe4831bc8a26b5100935fa4b3a45680de034e data/create/advancements/recipes/create.base/crafting/materials/copper_block_from_compacting.json -596ec015f9115023cd304241e70ed812671d614f data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json -cbca07cff63614282dd6fc512db781b45c626b95 data/create/advancements/recipes/create.base/crafting/materials/copper_ingot_from_compacting.json -8682826cf603dce940a6ea345deeb57d6f8ba552 data/create/advancements/recipes/create.base/crafting/materials/copper_ingot_from_decompacting.json -b4edb60599e83b03b811e9675b7a0aa5bcb19445 data/create/advancements/recipes/create.base/crafting/materials/copper_nugget_from_decompacting.json -453fb9564d6e989cc5ff05e4451fd5457dcff853 data/create/advancements/recipes/create.base/crafting/materials/electron_tube.json -849e8d68c1e3eb13ffb61dd4a301fb4e02aafef9 data/create/advancements/recipes/create.base/crafting/materials/red_sand_paper.json -c0551eec8a74c6fdcf92bde757d3919d9cd37bf0 data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json -d24639eff6d17ddcb618dc8f0a1c9e8b9ddb8e44 data/create/advancements/recipes/create.base/crafting/materials/rose_quartz.json -b783ee0bca4eafd0ae70fdb11e489560947d7873 data/create/advancements/recipes/create.base/crafting/materials/sand_paper.json -9b698dd97d1f43aa5d1874fe9fd8039caafed4e6 data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json -ff3e6df704b33e7fe2e18113d66227482c6ebf4e data/create/advancements/recipes/create.base/crafting/materials/zinc_block_from_compacting.json -ce2444d6f2d299ce05931985312f887a4d643113 data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_compacting.json -9c12703f801e35bf2b54f68a7145b8b40d999b81 data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_decompacting.json -f05015221ce44ea3460a35a109f9fb3187c99eb6 data/create/advancements/recipes/create.base/crafting/materials/zinc_nugget_from_decompacting.json -ae3abb1234ff2bb373ddb660e2df99e4fb2fffbd data/create/advancements/recipes/create.base/crafting/palettes/copper_shingles.json -71214eeda01bb62bb7da30fb9ba428afaf5cb8b1 data/create/advancements/recipes/create.base/crafting/palettes/copper_shingles_from_tiles.json -0b21adcf249e97d4257f5614323eb7cbc3277c35 data/create/advancements/recipes/create.base/crafting/palettes/copper_tiles.json -4f43eda1ee2fec4a88a270fa0bde76231bf45881 data/create/advancements/recipes/create.base/crafting/schematics/empty_schematic.json -403de5e01d5f572d16d3de3ba42f24ee76d0d9d3 data/create/advancements/recipes/create.base/crafting/schematics/schematic_and_quill.json -25ba269db29f030757c53fb1772615c247da3c1e data/create/advancements/recipes/create.base/crafting/schematics/schematic_table.json -da116aef3364263674f94aa84eeefda64f3b49fc data/create/advancements/recipes/create.base/crafting/schematics/schematicannon.json -890cba273d0f5d5cb753dc8e8e27a8a5e4cbebca data/create/advancements/recipes/create.base/smelting/brass_ingot_from_crushed.json -2b7693b9eb1c8b9e34a8aa2d08bcf0e2083883b8 data/create/advancements/recipes/create.base/smelting/copper_ingot_from_crushed.json -3dc1433ffd2a3b5520ed7728ad7dadc560c39d98 data/create/advancements/recipes/create.base/smelting/copper_ingot_from_ore.json -f2e1b12251a989b895642694054fabaad99094e4 data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_crushed.json -16e52ba04279bcf803c5f6be46550ba5d81be1a3 data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_ore.json -909345eb2f5541a2be592a52800319a8765ca345 data/create/advancements/recipes/create.palettes/acacia_window.json -73f99cd857b056da5e19ff8304a4f5eeacc4f8cd data/create/advancements/recipes/create.palettes/acacia_window_pane.json -06479f24d7b2655ee590b5314861a3c9c422ebbe data/create/advancements/recipes/create.palettes/andesite_bricks_from_andesite_stonecutting.json -916ff114deb04257ea18cd68226bfab9fc291d8e data/create/advancements/recipes/create.palettes/andesite_bricks_slab.json -8137bcfe84651a6b8ca323298ca66fedc5486390 data/create/advancements/recipes/create.palettes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json -fc69a56fa928c47522ee3baaa917bcecf2c3b6a1 data/create/advancements/recipes/create.palettes/andesite_bricks_stairs.json -8cd35c4c445646e18ed611f0efff14d5fd716510 data/create/advancements/recipes/create.palettes/andesite_bricks_stairs_from_andesite_bricks_stonecutting.json -070c52fcb5a0b7f0980192ff30d6d220d89a3d23 data/create/advancements/recipes/create.palettes/andesite_bricks_wall.json -a9ddaf81a64ee6b22c8a5fe8edd8b4b0ff5925d7 data/create/advancements/recipes/create.palettes/andesite_bricks_wall_from_andesite_bricks_stonecutting.json -c872706853ca2259ca949106259ad01d77eaf34c data/create/advancements/recipes/create.palettes/andesite_cobblestone_from_andesite_stonecutting.json -cd42aa3e21c0ab5521e4c53df41fc89e4dc2c12c data/create/advancements/recipes/create.palettes/andesite_cobblestone_slab.json -8bfe90204523a0674c253012ff76be8d6b8c3b63 data/create/advancements/recipes/create.palettes/andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting.json -bfb3673a30db807aa298f2fd128ec863a65818af data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs.json -47cc716674e1741f4115b04a20ac4c4a5b2a6d8a data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json -bd79e63c29d68fbf87ded63ac1eedba3d7287996 data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall.json -0ed4c084f05b2bd4c134293ad3554d6e31a1d568 data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json -cc8e078ccce06e9489d8b62d88b6a2e4d4ca2d79 data/create/advancements/recipes/create.palettes/andesite_pillar.json -d6f31097aef040e12eb288ab755d459f55269a70 data/create/advancements/recipes/create.palettes/andesite_pillar_from_andesite_stonecutting.json -f10a4369147cc5e36d3ab1b0008d29fd36ffc8f6 data/create/advancements/recipes/create.palettes/birch_window.json -bfea45da3f8df1c63f6c7ff1b63ad7e08c1d44b0 data/create/advancements/recipes/create.palettes/birch_window_pane.json -83d09fdf47ca2b5a70643f9005cbdcdf5ab586b6 data/create/advancements/recipes/create.palettes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json -c31a4d1eacc892a0248315270a12c0b49f5edc63 data/create/advancements/recipes/create.palettes/chiseled_dolomite_from_dolomite_stonecutting.json -74348dc4a1d8a41c67d12ea046772737e9e6d206 data/create/advancements/recipes/create.palettes/chiseled_gabbro_from_gabbro_stonecutting.json -4474c65e52362492fccc901b55773648b2714819 data/create/advancements/recipes/create.palettes/chiseled_limestone_from_limestone_stonecutting.json -b873bd961cd865866a6f5035bee583a400073a3c data/create/advancements/recipes/create.palettes/chiseled_scoria_from_scoria_stonecutting.json -0ace6bef40eab8e365959e529a16cd04d15adfe6 data/create/advancements/recipes/create.palettes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json -b4651c8202331483e82b28b04edc6cd97e62ad1d data/create/advancements/recipes/create.palettes/crafting/palettes/dark_scoria.json -9a587cd39af620df5bf25ff0143108c6be9597f5 data/create/advancements/recipes/create.palettes/crimson_window.json -b2813566e6715c2d377dd4ef461b012cae7eb190 data/create/advancements/recipes/create.palettes/crimson_window_pane.json -25991d5667252d551e02c4fbbfa27ebf4353d28d data/create/advancements/recipes/create.palettes/dark_oak_window.json -4819383b1a7885b4401fdc25955d2c51f75b6236 data/create/advancements/recipes/create.palettes/dark_oak_window_pane.json -02cd339174aaf2c14e14f886d90fbbcae91783b6 data/create/advancements/recipes/create.palettes/dark_scoria.json -ebd6413d530325eef6fcf42a0ee0ac840c1f7366 data/create/advancements/recipes/create.palettes/dark_scoria_bricks_from_dark_scoria_stonecutting.json -030ce9b61b8af158cf54e7a9ab673ccb7251483f data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab.json -ac44d03859cfd4c00ddcbd1dafbb9acc51d849d7 data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json -9e13188c79a1b00f3bb33346e520ac666428cc83 data/create/advancements/recipes/create.palettes/dark_scoria_bricks_stairs.json -ebe4042d1fdc31faf2a90589614712f068dc254c data/create/advancements/recipes/create.palettes/dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting.json -24d01f39b9cdee3c0a8b6c2d3702df9fcaa4c582 data/create/advancements/recipes/create.palettes/dark_scoria_bricks_wall.json -2c893abfcb0601bbd6b81b69471109e7a2f286ae data/create/advancements/recipes/create.palettes/dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting.json -cbf73236277648935a9e1e2729eae93d3c1717e8 data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_from_dark_scoria_stonecutting.json -eef6f85b20fb997af1b0c2383a45100be2e0cd34 data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_slab.json -491b8f7398aefd1506982e84b2b69db7d6b6b522 data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting.json -57c768a80bbd385bb18ca4c9c6462f2ef1394e0b data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs.json -8d44f675237a92513678a77da7a1f329475a3453 data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json -702527e6735770a6fcc3ad446df39d3b1b80709e data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall.json -ce069a666d223f733bfa1cc9ca5e3e5e27de1ebc data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json -64f9ba8df2fd2357ad397b75156a4af9c26fa91b data/create/advancements/recipes/create.palettes/dark_scoria_pillar.json -f3d6314d272d84c456c5df512dcc555b7694ded2 data/create/advancements/recipes/create.palettes/dark_scoria_pillar_from_dark_scoria_stonecutting.json -83e3c29d5d651a6bc6fd9d5843d8d75f4cda2b77 data/create/advancements/recipes/create.palettes/diorite_bricks_from_diorite_stonecutting.json -4649497555ca4269b1f3859f0275ca1ff7c85377 data/create/advancements/recipes/create.palettes/diorite_bricks_slab.json -1a04dd3845123425a83f51760f9b76557b484082 data/create/advancements/recipes/create.palettes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json -6c815af61dffab6d1f8bfc9ef6c67c5ce3f236f4 data/create/advancements/recipes/create.palettes/diorite_bricks_stairs.json -3d62deacd032b9b442fcd098da74ba8730500f27 data/create/advancements/recipes/create.palettes/diorite_bricks_stairs_from_diorite_bricks_stonecutting.json -57fedaac4b5dfba6198c91ba2358d0e67971e122 data/create/advancements/recipes/create.palettes/diorite_bricks_wall.json -155db0e8e8ac96535ac3ade2a84337f2eb093a9e data/create/advancements/recipes/create.palettes/diorite_bricks_wall_from_diorite_bricks_stonecutting.json -7d2c93cdc55db7e33a4fb7a624d35af83c4316b5 data/create/advancements/recipes/create.palettes/diorite_cobblestone_from_diorite_stonecutting.json -5c425922e7d44cd9ba075b4d10fde92eeef26ab8 data/create/advancements/recipes/create.palettes/diorite_cobblestone_slab.json -1f7dbf4cc9a6daa9467bdbc0d1bd94c5f25c7d0e data/create/advancements/recipes/create.palettes/diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting.json -3eafb105efd55176197d735c791afba65c3caeaa data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs.json -600c57c4dc3a3741d5db7ec01340e1c6a01d54b4 data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json -8b4990d3657e23a86c3e71eba77370c56692c93b data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall.json -e741ca0e76875ee12beecd45db764444956d5342 data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json -08e8495b798d54366f132da060e93e94e23f6354 data/create/advancements/recipes/create.palettes/diorite_pillar.json -87d34b8ca3dc73a778ab94ef4d852f418112adb3 data/create/advancements/recipes/create.palettes/diorite_pillar_from_diorite_stonecutting.json -17135274809b7a0f38294d2e6412b787e985e4d5 data/create/advancements/recipes/create.palettes/dolomite.json -dbf201ceafc310f5cc6624c81777d50348844285 data/create/advancements/recipes/create.palettes/dolomite_bricks_from_dolomite_stonecutting.json -6716447628cce96a1f520766d019f09380ec67e5 data/create/advancements/recipes/create.palettes/dolomite_bricks_slab.json -52ae39c6f63860fa5a60c1ae70ef00eca5b961c9 data/create/advancements/recipes/create.palettes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json -e4fa67c3520747bf399b61f4433480be722e9ef5 data/create/advancements/recipes/create.palettes/dolomite_bricks_stairs.json -b80996f626dcc0ffb8bc59e5a928d27ecc05c50c data/create/advancements/recipes/create.palettes/dolomite_bricks_stairs_from_dolomite_bricks_stonecutting.json -e6e2aea69e9b9b7be526fbe4f8e1e7e25e81f80d data/create/advancements/recipes/create.palettes/dolomite_bricks_wall.json -e95638d111629f18ff49a93907f48ebc6c212fbe data/create/advancements/recipes/create.palettes/dolomite_bricks_wall_from_dolomite_bricks_stonecutting.json -e3a82a83a9b2d697d1ef6162f78383690aba6f7d data/create/advancements/recipes/create.palettes/dolomite_cobblestone_from_dolomite_stonecutting.json -cb91483af16a30b8b0db47d6c17967c91a5bc9d7 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_slab.json -cef5f049a1019ef59d6fa7fb61683216f7077ba1 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting.json -a8904096a05eeb7e746563e1a4b97b39173d1708 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs.json -124c586970edc5c15079bec53c734a2beb670130 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json -2e9f1556a11d4d7190233be3af64453396865da9 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall.json -1a1e8764ba05f72ffd7e5872a8f2fc9cf2108308 data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json -4b56a0490151fbc66dee82546b9e271a5a85fa12 data/create/advancements/recipes/create.palettes/dolomite_pillar.json -a8752ee9bf9afc665c5d940d251c1cf4a83a0ae9 data/create/advancements/recipes/create.palettes/dolomite_pillar_from_dolomite_stonecutting.json -ea981a446d8cc22d6b7fb4667e86dc18a48a4720 data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_from_andesite_stonecutting.json -44dc6bc5a7303129db2268a025f49dcb222597a7 data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab.json -d50519d3f8aa6a9c639595ce875f28a1f0ca9f24 data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json -cd9d250da88b716e30d6756a4d36f72f496a9ddf data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_stairs.json -a8aeb67676ada81f73624446bf80394e27308782 data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting.json -a13a44c1be6f6daf4fc20c19af6ee451c26ff0c1 data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_wall.json -a5d302491934a952e13619a2db0a51e8d629e4fc data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting.json -8ae66cfd2022a0c1c2525336014e0fe34c3dd1cd data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_from_dark_scoria_stonecutting.json -a26dfcbc16b377b5bb64b24374b176fd9de89d47 data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_slab.json -45068f17f761dba257ab20f5845039d7ec39b1ad data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting.json -90ead7f9abea29991918e72d3ce7f746e606d0b5 data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_stairs.json -b85e31fcd7be7e1d32d6cee4b60a57f8993058b5 data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting.json -25b33b9840a519cee9c8ab040947b8f5ca0c2614 data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_wall.json -673bb65058f9668b8c70ebdfd00cd85a050d1114 data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting.json -f714c62507b6f29628b821f2244ef021fa333e37 data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_from_diorite_stonecutting.json -756e9f7540fd8e5b8b08204c22d246d9e2488d0f data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_slab.json -a035d2b80243a803fe32a4d8f45342664c010387 data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting.json -fd55c40ee942d5fbed23ba45b1cd327554c85fb4 data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_stairs.json -01687ce53430a1e9253a99245d63355c8d447b09 data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting.json -46d3a856d269600aac1d6de8b18bdc83caed3b11 data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_wall.json -4534a02e200829593fba96ef485f8ca9a2a4bfef data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting.json -a86241e15bf37acbcafc0f52f42a92d9790827e1 data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_from_dolomite_stonecutting.json -a8657bf1879c13b8d5f212c2c54d94de4df9acf4 data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_slab.json -c1b98d969be1629c0bdf5c6f46d8c0bcbc1f7788 data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting.json -50917519b1b451fb8ab10269741ee8ae9f900e8f data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_stairs.json -b45abd3d0f59bc1b6dc83f25132afb6f053470b1 data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting.json -ad4ea329069f33abdcd88fadd94c83cc17c3f762 data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_wall.json -c6995b2196375401434d017ee731400377591cb4 data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting.json -fe34d30d54ce356a7efe01817a0554db2e1789e0 data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_from_gabbro_stonecutting.json -2389deceb239ecb8527b038ecafc72961641c725 data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_slab.json -38489610c156abe15eff4837a8de4bfa99247e27 data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting.json -35534063abf2247b1e2ed3f262c975d3dd589885 data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_stairs.json -7b1965bed313a47b90901e4363bb25db2a2f8bbb data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting.json -c6d781d195bfeac3a8f9d2a2c8f38a623c8959f8 data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_wall.json -06a84396f77580f1f83a2429ea95a799e1252d2d data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting.json -79d9fc03418829c3cf164e6f9bb1f1b026a2d0dc data/create/advancements/recipes/create.palettes/fancy_granite_bricks_from_granite_stonecutting.json -19060d298e2ebf3e4c3e2f1866332cd5d23eca96 data/create/advancements/recipes/create.palettes/fancy_granite_bricks_slab.json -47064e0a76fd1610967b5805af99024c27b82d5d data/create/advancements/recipes/create.palettes/fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting.json -7e5e252ac808bcda618244113d925e3e57f28d77 data/create/advancements/recipes/create.palettes/fancy_granite_bricks_stairs.json -7f575653e3507dbe5bfed4e093ad676a2b8a94d8 data/create/advancements/recipes/create.palettes/fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting.json -6f0d3b65923710137fb443b02f4109f9556ee0d4 data/create/advancements/recipes/create.palettes/fancy_granite_bricks_wall.json -595a49a05027809964da8ae4b7d6137bfcfb0034 data/create/advancements/recipes/create.palettes/fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting.json -3730534177655140d0efadef9b5a0cf25922038a data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_from_limestone_stonecutting.json -72e12ecc098ad6dd5d517a88725481e6bf79c3db data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_slab.json -10f23ce09d14ff4cd131ca700f7ddc2ab2bf4333 data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting.json -da855dff16473af4b17ae4b55aac4ef0559b3fef data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_stairs.json -0f0910d3b1cf17d4600342fde2f518c420a0f229 data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting.json -2b40437524360252827fadaae168682944037a0d data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_wall.json -c48638ec0beff85a97d57abdaf25ba1ba0fab16b data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting.json -2e766563ee80a8ca6ad80194e1e6e2fb3618a7a6 data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_from_scoria_stonecutting.json -665bc82e04e6ab832847b41b217e4afd11b44459 data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_slab.json -4f8f0e2c011c7e820378204cc8317d5e23c291eb data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting.json -535879ff6e399120003bd35ca2e70d64f8285eca data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_stairs.json -859ce60e33280f4519d0e02af8920bfb692313c8 data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting.json -371646709052eaf4edf075edd7c4831d5d1a8ad0 data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_wall.json -a92255fcec5aa512e9529601ab75f91fcec344af data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting.json -c2ccab04f07864fdf01d8637a6d1fe321cd3e001 data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting.json -82d5066e0157ea50bfc2d62cfbff2ac3406a66cb data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_slab.json -e76e9b9bba421e846c06bb48c19815bc50c889e2 data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting.json -98f983a513bcf2767291acaab14ca78e4c8fea2a data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_stairs.json -d51bee4b276805ecf1a93a37ec6d610e75c0117e data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json -767733a2cc9fd2e96302c4e3813da86856e7c418 data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall.json -17e02efc06d935c094bde5bb73a5127bc98e4758 data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json -05331b5f1701453ecdfd0b3e6429b22ec209ba67 data/create/advancements/recipes/create.palettes/framed_glass_from_glass_colorless_stonecutting.json -605476eaf4e964936c031732cfef534edfdd749a data/create/advancements/recipes/create.palettes/framed_glass_pane.json -1b17b217e487b958e35ab0ad509bb8caceebda40 data/create/advancements/recipes/create.palettes/gabbro.json -b835dd583d670e2d7f6af4dd74e44f5817b03b21 data/create/advancements/recipes/create.palettes/gabbro_bricks_from_gabbro_stonecutting.json -2bfac04754aaf07423b330134984d887ae43f00a data/create/advancements/recipes/create.palettes/gabbro_bricks_slab.json -f05bb35d52866abc7dae9c7f3f5fc85257760564 data/create/advancements/recipes/create.palettes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json -f85f881683789b33813aa57a6c5b64f6a1494e3c data/create/advancements/recipes/create.palettes/gabbro_bricks_stairs.json -02b4d64c2d133c88a7ca229cf2b1ba3fa8e3f88d data/create/advancements/recipes/create.palettes/gabbro_bricks_stairs_from_gabbro_bricks_stonecutting.json -c98e0db97263e63a23304ba531722274fb077ca3 data/create/advancements/recipes/create.palettes/gabbro_bricks_wall.json -4c177eb789d069f2794d975712e061295831df93 data/create/advancements/recipes/create.palettes/gabbro_bricks_wall_from_gabbro_bricks_stonecutting.json -ced85c7dd005d27ae55b92ead9c5e0dfb4a8e7b2 data/create/advancements/recipes/create.palettes/gabbro_cobblestone_from_gabbro_stonecutting.json -a74abfc184d51ae527791749a861bbec4736d072 data/create/advancements/recipes/create.palettes/gabbro_cobblestone_slab.json -c90a07c41b2e034437c8a765de7b517f89383830 data/create/advancements/recipes/create.palettes/gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting.json -726ac90a1fec36fd8197074e0a88ee0ca8ecaa61 data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs.json -f9d917def55875dcba621246f80dc83904be3d73 data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json -b081b91a5e11e8ce9b2455b944eb554f5f2e419e data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall.json -093f372d84c557791cebcb286b3505f32c4dc7c0 data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json -4b0f4a396397a791d08fe422fb4cfb922554779c data/create/advancements/recipes/create.palettes/gabbro_pillar.json -35288551f5146ebbf8dbbe987928dd2a1bdc7ea8 data/create/advancements/recipes/create.palettes/gabbro_pillar_from_gabbro_stonecutting.json -6a9a8b37ec264084ce0481200225017739546025 data/create/advancements/recipes/create.palettes/granite_bricks_from_granite_stonecutting.json -2ac84cb0b8b629bdfd740a6613df2a7e45964bf2 data/create/advancements/recipes/create.palettes/granite_bricks_slab.json -98d7996071eb2d71c34ba942b7ff35bd3910407c data/create/advancements/recipes/create.palettes/granite_bricks_slab_from_granite_bricks_stonecutting.json -ad16c84c418948b1f58172f4ab55277b2a72f422 data/create/advancements/recipes/create.palettes/granite_bricks_stairs.json -2263eeca15ecb0074fbaa3d2355a4e22a0dc4f02 data/create/advancements/recipes/create.palettes/granite_bricks_stairs_from_granite_bricks_stonecutting.json -49bc4ac7bf4cc9175992094f45eab2bb7d21b7de data/create/advancements/recipes/create.palettes/granite_bricks_wall.json -f351b7c42443387613b7d12bcf1a4ce4775ac29d data/create/advancements/recipes/create.palettes/granite_bricks_wall_from_granite_bricks_stonecutting.json -473c4dcadb1a65d5153080bc295475487dd097d7 data/create/advancements/recipes/create.palettes/granite_cobblestone_from_granite_stonecutting.json -3df60ab6fc21672b64f2ef985a7588db3c7a85cc data/create/advancements/recipes/create.palettes/granite_cobblestone_slab.json -5afffb643c77a9e8de977c44b927ab6d94300c8f data/create/advancements/recipes/create.palettes/granite_cobblestone_slab_from_granite_cobblestone_stonecutting.json -c39e86c111a2c76ef9cb7046d2b87262524b06b9 data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs.json -06d3f3150db99f808a5fd4141c0fc6235d979ce5 data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json -6bbc97d2ac655a532eaf345fca64431dbf8af27d data/create/advancements/recipes/create.palettes/granite_cobblestone_wall.json -d6b622a2cf302d0c39e0d38d24b0a17e1461d13b data/create/advancements/recipes/create.palettes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json -5b9fe440648ae9f37b5d079cfcd1d9a72afa74fa data/create/advancements/recipes/create.palettes/granite_pillar.json -97cc61b1b510849ebc0bf51cf2b8107a5c43fc17 data/create/advancements/recipes/create.palettes/granite_pillar_from_granite_stonecutting.json -cbb40e82dba460ee126966a52f0164e740ac1f11 data/create/advancements/recipes/create.palettes/horizontal_framed_glass_from_glass_colorless_stonecutting.json -29e2e2aeca3800c8ba432be30d54d046a3991217 data/create/advancements/recipes/create.palettes/horizontal_framed_glass_pane.json -4efc9a8c871cf18c8517c82f5a05d4dfec045778 data/create/advancements/recipes/create.palettes/jungle_window.json -995b9cb9c370cd319da3390d8a3a46028bbe7840 data/create/advancements/recipes/create.palettes/jungle_window_pane.json -6b07d0abcfd0710e16a6b7a62fff984a332cbf90 data/create/advancements/recipes/create.palettes/layered_andesite_from_andesite_stonecutting.json -1cf78657f901bea4a27e4e7cf885310f50fa8d00 data/create/advancements/recipes/create.palettes/layered_dark_scoria_from_dark_scoria_stonecutting.json -5ceb87c9142f85f980d5854dab05bf3f97d2f1d9 data/create/advancements/recipes/create.palettes/layered_diorite_from_diorite_stonecutting.json -9a788d2e0bf321f8e00b2705eaccbdeb6895a66b data/create/advancements/recipes/create.palettes/layered_dolomite_from_dolomite_stonecutting.json -544e4b42d4f8c91d304f4fc3a2704258827a0526 data/create/advancements/recipes/create.palettes/layered_gabbro_from_gabbro_stonecutting.json -6cdbca74bf21546eb1c1bd514cc29ddc4616c68c data/create/advancements/recipes/create.palettes/layered_granite_from_granite_stonecutting.json -c0dd961f07e85a183af7b942ed0e4bfe8f775373 data/create/advancements/recipes/create.palettes/layered_limestone_from_limestone_stonecutting.json -5d06584a83074f8a8d1a52d93d13f2718bc99152 data/create/advancements/recipes/create.palettes/layered_scoria_from_scoria_stonecutting.json -b09e64b4989ef08b7ea6b9011681c2fbf780d949 data/create/advancements/recipes/create.palettes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json -519234f31ee8cacc0f916df40703ba171c6a90e5 data/create/advancements/recipes/create.palettes/limestone.json -52c1902f260173fe610a4a03294a51c4cea3b37b data/create/advancements/recipes/create.palettes/limestone_bricks_from_limestone_stonecutting.json -e6eb6c433541b7c4e3e5b64f240618e6df67ed58 data/create/advancements/recipes/create.palettes/limestone_bricks_slab.json -72f0586690ca4413082b2cbecf7938ba6e4756b4 data/create/advancements/recipes/create.palettes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json -04dfa5ddc043ca816073ee88633a9b1dd360cba3 data/create/advancements/recipes/create.palettes/limestone_bricks_stairs.json -ad2d70de5444c52794c2601e622710f107e9b42a data/create/advancements/recipes/create.palettes/limestone_bricks_stairs_from_limestone_bricks_stonecutting.json -2edc78faeec6e1ccac731793338c148111611ee6 data/create/advancements/recipes/create.palettes/limestone_bricks_wall.json -ffa708ea7b886b20a69425a2134a67354a0b72c5 data/create/advancements/recipes/create.palettes/limestone_bricks_wall_from_limestone_bricks_stonecutting.json -a3c58b950b8c324e9a5862d6047bc0fa81265a02 data/create/advancements/recipes/create.palettes/limestone_cobblestone_from_limestone_stonecutting.json -168a1ec7acc5336f5cf767b249dba3213f059188 data/create/advancements/recipes/create.palettes/limestone_cobblestone_slab.json -d7b36c7fcf429eea7c57f2ae967e73b8e18d0d58 data/create/advancements/recipes/create.palettes/limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting.json -01353f8d33569068376240a971f80f09a1042118 data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs.json -749936c7c33273c1833154a1eb1e13604ece8565 data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json -c0e3f97a6f807ea8147f58bf4ca002725d1877b6 data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall.json -a01c91b927f50d367c3bfcca5f370002a991d45a data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json -acf08b6a32e3678d63443fdb97e7332e05eb61f6 data/create/advancements/recipes/create.palettes/limestone_pillar.json -d040f53dfb09a29c39d534d3595e35d058fe5557 data/create/advancements/recipes/create.palettes/limestone_pillar_from_limestone_stonecutting.json -3ee8ab0478344042136058be6cf870289c096bdd data/create/advancements/recipes/create.palettes/mossy_andesite_from_andesite_stonecutting.json -c427e2626e468abee6fb4de83bf76f2d3c051449 data/create/advancements/recipes/create.palettes/mossy_dark_scoria_from_dark_scoria_stonecutting.json -813dec479959bf7a7a428a3ca656c53b67f8fe04 data/create/advancements/recipes/create.palettes/mossy_diorite_from_diorite_stonecutting.json -8f57677ad12ad74265764794a970b31b9643bee2 data/create/advancements/recipes/create.palettes/mossy_dolomite_from_dolomite_stonecutting.json -7ba05e2f27c5fbe0e6fd7626a338ede1a37a2c95 data/create/advancements/recipes/create.palettes/mossy_gabbro_from_gabbro_stonecutting.json -a65d2d91acfb335d22fbafffda91e84827414263 data/create/advancements/recipes/create.palettes/mossy_granite_from_granite_stonecutting.json -7fe51c57ee061b33b25647da030df867c4963a3f data/create/advancements/recipes/create.palettes/mossy_limestone_from_limestone_stonecutting.json -01a3b7a445f9fad73d04f25b5f8c2c1d3ceabe8c data/create/advancements/recipes/create.palettes/mossy_scoria_from_scoria_stonecutting.json -549c1413c986e6abab295a0cd3784b8cf5b21137 data/create/advancements/recipes/create.palettes/mossy_weathered_limestone_from_weathered_limestone_stonecutting.json -6d73c9fb9b80bdb6fcbed9fc22d5d96f2eab9324 data/create/advancements/recipes/create.palettes/oak_window.json -3da6acdecb6de1a0f93cd99766dad34b29abea3d data/create/advancements/recipes/create.palettes/oak_window_pane.json -e8989bcb3be35e7e80fbea52139c5770cca7d63a data/create/advancements/recipes/create.palettes/ornate_iron_window.json -fb6e99d0d4c07a6ffea26e66707b1954f474c4dd data/create/advancements/recipes/create.palettes/ornate_iron_window_pane.json -8a2734dfe0c55b77bb2fb6eeb8baf8c7f77e793f data/create/advancements/recipes/create.palettes/overgrown_andesite_from_andesite_stonecutting.json -ba1ddc8234275e46677c5d8ccd9a52d48d20c166 data/create/advancements/recipes/create.palettes/overgrown_dark_scoria_from_dark_scoria_stonecutting.json -baee20fee4acbf477e35658c7d6d43a03c8594c3 data/create/advancements/recipes/create.palettes/overgrown_diorite_from_diorite_stonecutting.json -f15751cb1ca52d7ad51d5e25afa85789a4c7194b data/create/advancements/recipes/create.palettes/overgrown_dolomite_from_dolomite_stonecutting.json -fb6f39d831bd59e59e1fa42f15c676b49cc0f172 data/create/advancements/recipes/create.palettes/overgrown_gabbro_from_gabbro_stonecutting.json -eee39fd31811b76da16fd5741aa22a91c44da2ed data/create/advancements/recipes/create.palettes/overgrown_granite_from_granite_stonecutting.json -42f7030ab9bbf73459a95dd327408eef315208c8 data/create/advancements/recipes/create.palettes/overgrown_limestone_from_limestone_stonecutting.json -716ff41d50f9e3c2fa508ba7ef575e36c0db89cd data/create/advancements/recipes/create.palettes/overgrown_scoria_from_scoria_stonecutting.json -8990cbe0d0382f77a49857867bf33b87cdc1b675 data/create/advancements/recipes/create.palettes/overgrown_weathered_limestone_from_weathered_limestone_stonecutting.json -d87d9451fdce0a3e51b405364c55e897d5e730ae data/create/advancements/recipes/create.palettes/paved_andesite_from_andesite_stonecutting.json -51458e99d10deefabec0fcd061432856ff433f23 data/create/advancements/recipes/create.palettes/paved_andesite_slab.json -6f332f0bc7ddfea77b05bb68825a53dbf3c693b8 data/create/advancements/recipes/create.palettes/paved_andesite_slab_from_paved_andesite_stonecutting.json -b62ca21e218580b2347defe093e952352ad6df54 data/create/advancements/recipes/create.palettes/paved_andesite_stairs.json -52f706b964e8523779cde3ddfde48890eee60a71 data/create/advancements/recipes/create.palettes/paved_andesite_stairs_from_paved_andesite_stonecutting.json -2a81337b4a9f1aeba89e6da1634e29a6c83d89c5 data/create/advancements/recipes/create.palettes/paved_andesite_wall.json -2bb0837023b56eea532d5d0283c80d61bf719c21 data/create/advancements/recipes/create.palettes/paved_andesite_wall_from_paved_andesite_stonecutting.json -60ef242b3ed4d2e14d1f2655fe990826ede2b3c9 data/create/advancements/recipes/create.palettes/paved_dark_scoria_from_dark_scoria_stonecutting.json -fc913d61b748448ee9c6dd5ee59cf9098acfbc90 data/create/advancements/recipes/create.palettes/paved_dark_scoria_slab.json -aba63e54764a947e2c0101005b7c9813671b1766 data/create/advancements/recipes/create.palettes/paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting.json -896301f44196b730b1885d1e68a1e023c230b4f3 data/create/advancements/recipes/create.palettes/paved_dark_scoria_stairs.json -2344a9c7bfe4e8f84dd522ae6bf60d4ca6cfd1b5 data/create/advancements/recipes/create.palettes/paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting.json -f5704ec185b6a8372f774686c39479ba40ea9062 data/create/advancements/recipes/create.palettes/paved_dark_scoria_wall.json -9ef8ab62feddd1e43890f08d5745179cfdcbf4cb data/create/advancements/recipes/create.palettes/paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting.json -8aeaa5ab356e79b87cacce1b457cd5487ad6d433 data/create/advancements/recipes/create.palettes/paved_diorite_from_diorite_stonecutting.json -9b32dc419abfd33ec5186ba34e6a9d434a2981e9 data/create/advancements/recipes/create.palettes/paved_diorite_slab.json -c557428e55c819edd7dec54216b094030471502f data/create/advancements/recipes/create.palettes/paved_diorite_slab_from_paved_diorite_stonecutting.json -1a7850b38e3521b8bda636cb76ef1609c2fb8c00 data/create/advancements/recipes/create.palettes/paved_diorite_stairs.json -68365c7376116238444bc138cb940e75054cb77c data/create/advancements/recipes/create.palettes/paved_diorite_stairs_from_paved_diorite_stonecutting.json -2d3b36480a8bad24651499942c5e6f25869e9be6 data/create/advancements/recipes/create.palettes/paved_diorite_wall.json -824a295ee0845fa515b627b7a7bc962fdf17101f data/create/advancements/recipes/create.palettes/paved_diorite_wall_from_paved_diorite_stonecutting.json -69868e7d53236d152c62b1222aec3895591a8927 data/create/advancements/recipes/create.palettes/paved_dolomite_from_dolomite_stonecutting.json -9b563c13e81a8c6376260fdf79344cdc2a230603 data/create/advancements/recipes/create.palettes/paved_dolomite_slab.json -d65009c44026d6df92b4445855d3e6181725d76d data/create/advancements/recipes/create.palettes/paved_dolomite_slab_from_paved_dolomite_stonecutting.json -5450b41d6192e61a4ea8bfa61832cd12de2bdc6c data/create/advancements/recipes/create.palettes/paved_dolomite_stairs.json -2f9162b2cd27211e64b69d946788120869159eb3 data/create/advancements/recipes/create.palettes/paved_dolomite_stairs_from_paved_dolomite_stonecutting.json -1899891c3376205f36723519b6a0491fd5315db9 data/create/advancements/recipes/create.palettes/paved_dolomite_wall.json -5b6bb2f610eb34533a1a8add453d94c41bb61320 data/create/advancements/recipes/create.palettes/paved_dolomite_wall_from_paved_dolomite_stonecutting.json -ade222c92665b26a292796b1996697a80f4ded70 data/create/advancements/recipes/create.palettes/paved_gabbro_from_gabbro_stonecutting.json -8488ca1a2ae08e04855bde8b4ebe0931cc4bb9a7 data/create/advancements/recipes/create.palettes/paved_gabbro_slab.json -7a87a2c3381a4b22a791e8796d44b7553897b588 data/create/advancements/recipes/create.palettes/paved_gabbro_slab_from_paved_gabbro_stonecutting.json -8f42697f89c6e3337723d0a7282c781c8cad6fd9 data/create/advancements/recipes/create.palettes/paved_gabbro_stairs.json -a66e1876f01ccb83510291d371f840536100ae26 data/create/advancements/recipes/create.palettes/paved_gabbro_stairs_from_paved_gabbro_stonecutting.json -db9cb2347bc6e6ca17becbfe9c0da04d2de09d1a data/create/advancements/recipes/create.palettes/paved_gabbro_wall.json -a8bf07dd90519ee6aabb71b58f08600da459e505 data/create/advancements/recipes/create.palettes/paved_gabbro_wall_from_paved_gabbro_stonecutting.json -c0afec6377d978ebac9ef8a5b0585a9bbd78a8f2 data/create/advancements/recipes/create.palettes/paved_granite_from_granite_stonecutting.json -ae2a04a32e8a0ddbdac4de7a6871ff38891b61d9 data/create/advancements/recipes/create.palettes/paved_granite_slab.json -04b16c664831725bf315e252641db2c543629f8a data/create/advancements/recipes/create.palettes/paved_granite_slab_from_paved_granite_stonecutting.json -851f048b7c59e6be3071a4448f2fb3918b50d450 data/create/advancements/recipes/create.palettes/paved_granite_stairs.json -c1779cab42a3ab17a1db629395f47a948a470f0a data/create/advancements/recipes/create.palettes/paved_granite_stairs_from_paved_granite_stonecutting.json -2da5c8319458229c2a30493511b73dccc1a291df data/create/advancements/recipes/create.palettes/paved_granite_wall.json -1ad87946ccea1c44a76be5b61de9a85d787baf31 data/create/advancements/recipes/create.palettes/paved_granite_wall_from_paved_granite_stonecutting.json -c634e051b1554ad2629b5e23388921a1fa2a6d37 data/create/advancements/recipes/create.palettes/paved_limestone_from_limestone_stonecutting.json -94b4542032e38af638247bba0ec81caed75bcf03 data/create/advancements/recipes/create.palettes/paved_limestone_slab.json -be75358f76bc579b013647a4907f287807c22e98 data/create/advancements/recipes/create.palettes/paved_limestone_slab_from_paved_limestone_stonecutting.json -906b2889fd1a1b0a03256734a0abad74cb91bd68 data/create/advancements/recipes/create.palettes/paved_limestone_stairs.json -46f3fec47fb1f4fda4a3164204e5d92d1318d871 data/create/advancements/recipes/create.palettes/paved_limestone_stairs_from_paved_limestone_stonecutting.json -ad09a997f557cd0d507e1aee7ad8c01bb01139c9 data/create/advancements/recipes/create.palettes/paved_limestone_wall.json -b0812a31db9b1e44f1033540894e098b42e61bc4 data/create/advancements/recipes/create.palettes/paved_limestone_wall_from_paved_limestone_stonecutting.json -fa07ab56320800e5f21ad709f4c9afe3e56cbacf data/create/advancements/recipes/create.palettes/paved_scoria_from_scoria_stonecutting.json -e9935db892249ad884eb03f5cd4ee6cb1931111b data/create/advancements/recipes/create.palettes/paved_scoria_slab.json -fbad05d4a443ca09b1a111df1c37d46da7fe9504 data/create/advancements/recipes/create.palettes/paved_scoria_slab_from_paved_scoria_stonecutting.json -746d3108861ffb35fdc1d328f4ff8f7cc8f624df data/create/advancements/recipes/create.palettes/paved_scoria_stairs.json -62e14e81537a13ba502da1f9da92fee9782fee9b data/create/advancements/recipes/create.palettes/paved_scoria_stairs_from_paved_scoria_stonecutting.json -4d373c4428daa64f1e1ef0b031d42b0c84337feb data/create/advancements/recipes/create.palettes/paved_scoria_wall.json -1283823386a36d014460daaea1be43f73634166c data/create/advancements/recipes/create.palettes/paved_scoria_wall_from_paved_scoria_stonecutting.json -c941c582df503992cde742d967b5952bfeb859cf data/create/advancements/recipes/create.palettes/paved_weathered_limestone_from_weathered_limestone_stonecutting.json -31f9c1a655b822ea1a3deec540a36b9237d02aeb data/create/advancements/recipes/create.palettes/paved_weathered_limestone_slab.json -ac95e01fc0fdc4e672c108e9c82584b62227d69a data/create/advancements/recipes/create.palettes/paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting.json -8306cf9d81388acead32d89f6fcd4c4d5bd0d862 data/create/advancements/recipes/create.palettes/paved_weathered_limestone_stairs.json -2901607a4573dc39ade929d29c6fa7a3da9a0ecd data/create/advancements/recipes/create.palettes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json -37877f00e4d3f11be5ce2a877ed4753879e9834a data/create/advancements/recipes/create.palettes/paved_weathered_limestone_wall.json -abd7628d5d2eda16d560fd489c3b429c788a2760 data/create/advancements/recipes/create.palettes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json -06b39410e655585243a10a9e8289537f675c5bf2 data/create/advancements/recipes/create.palettes/polished_dark_scoria.json -0b833dcb8fc5a241a3d2f3ef3f9a2bd64d528062 data/create/advancements/recipes/create.palettes/polished_dark_scoria_from_dark_scoria_stonecutting.json -5fa067c33270aa84c27f919ffe543f196661b6a8 data/create/advancements/recipes/create.palettes/polished_dark_scoria_slab.json -d1bec8dcef19862ecf3ee16c1e7f3b7f4d9952fd data/create/advancements/recipes/create.palettes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json -88778854dcfd9149b600dfda13d6927bff99106c data/create/advancements/recipes/create.palettes/polished_dark_scoria_stairs.json -3600a39ac6d724907e25c9186d3ed9eb11c2ca9f data/create/advancements/recipes/create.palettes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json -b848bfbcbaf788d63a1c8e40d8d2649c02bd320a data/create/advancements/recipes/create.palettes/polished_dark_scoria_wall.json -537811644f4c918a05e00e387e91b8d71f69ca61 data/create/advancements/recipes/create.palettes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json -fbb7e6da5ff92856e99f11903a3ac9e97dde28b3 data/create/advancements/recipes/create.palettes/polished_dolomite.json -c250ad8f804de880bd2a9ade973ca57bc7ab9b5d data/create/advancements/recipes/create.palettes/polished_dolomite_from_dolomite_stonecutting.json -fe87c23cfd8dc0fbe61b3a8e53bfc64a528ba39c data/create/advancements/recipes/create.palettes/polished_dolomite_slab.json -d98c13ada0f8f549befb12e4408b746fe5cf4adc data/create/advancements/recipes/create.palettes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json -bf5d73ecdaec56999cde2c458b5a9266aede1779 data/create/advancements/recipes/create.palettes/polished_dolomite_stairs.json -f601819b1d7d5c022fc5df6c89fac8c3e7294030 data/create/advancements/recipes/create.palettes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json -046ec7fc7efacd7f91d1176d95bc177fa0f540d4 data/create/advancements/recipes/create.palettes/polished_dolomite_wall.json -f5c5fe1a3318cb9d49af379d318279ab2ad8eb0a data/create/advancements/recipes/create.palettes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json -e98f0c199ec9e71eda3c7be0c315f0e7b6592364 data/create/advancements/recipes/create.palettes/polished_gabbro.json -d767bd8b2732c0309feb0095b1f0cf8227a9f445 data/create/advancements/recipes/create.palettes/polished_gabbro_from_gabbro_stonecutting.json -1298b9734779bca3888f89e3a0fede3f40454cbb data/create/advancements/recipes/create.palettes/polished_gabbro_slab.json -302efe38105e57e9a61cfb9101e81547d8e8c361 data/create/advancements/recipes/create.palettes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json -0580a585d855416bb2bd232b36c1877e412b993d data/create/advancements/recipes/create.palettes/polished_gabbro_stairs.json -b8423cb0e61957e194422102c7d4341f61c34b06 data/create/advancements/recipes/create.palettes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json -1510bc1446e73929a386f19a254754da7146ed89 data/create/advancements/recipes/create.palettes/polished_gabbro_wall.json -be242ca6735ccdab4fc9ba1713407095fe90bb18 data/create/advancements/recipes/create.palettes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json -635e4c9807769f8bf0ca3778f0ee454189453465 data/create/advancements/recipes/create.palettes/polished_limestone.json -be6c730ca1a9366c64aef8d61b367e555e01a0f6 data/create/advancements/recipes/create.palettes/polished_limestone_from_limestone_stonecutting.json -30c328ad6162c2ce0b0a652fab7c43de7c059d56 data/create/advancements/recipes/create.palettes/polished_limestone_slab.json -3db530fc0116090aecb154c8bb55541a71764889 data/create/advancements/recipes/create.palettes/polished_limestone_slab_from_polished_limestone_stonecutting.json -7b0ce80d5ca52d8b7670cde8171c57c4f7225fcd data/create/advancements/recipes/create.palettes/polished_limestone_stairs.json -8eedf45c50378f0508afdf642f9c2cf4053eacbb data/create/advancements/recipes/create.palettes/polished_limestone_stairs_from_polished_limestone_stonecutting.json -cddfe8e9812cf57096014352a22413e854622dcf data/create/advancements/recipes/create.palettes/polished_limestone_wall.json -77225011d6185bd26f5f4111c98f394e7382a170 data/create/advancements/recipes/create.palettes/polished_limestone_wall_from_polished_limestone_stonecutting.json -35fe45bf268818d6b87a646343cdbdf705c00c77 data/create/advancements/recipes/create.palettes/polished_scoria.json -7d95e67a4bcf8de2090a54b9177b08853409f5b8 data/create/advancements/recipes/create.palettes/polished_scoria_from_scoria_stonecutting.json -16681377b2657813fc157554efc03bc1d5853f6d data/create/advancements/recipes/create.palettes/polished_scoria_slab.json -3f0965d057e1b564a4896d2a31d657500ac16a94 data/create/advancements/recipes/create.palettes/polished_scoria_slab_from_polished_scoria_stonecutting.json -36c1d292e441ab41daaa8fd195e914093dfc21b8 data/create/advancements/recipes/create.palettes/polished_scoria_stairs.json -4d54bc2c8d80c4c90ecd7b12170d7e4f92481e9e data/create/advancements/recipes/create.palettes/polished_scoria_stairs_from_polished_scoria_stonecutting.json -a662b4b7f175c47d9c0dbc033104a49b4bb1da4d data/create/advancements/recipes/create.palettes/polished_scoria_wall.json -2aa2dd503a1bbb2fc398ed32c4c4d8928146e78a data/create/advancements/recipes/create.palettes/polished_scoria_wall_from_polished_scoria_stonecutting.json -79cc516849cb01f9e016edd3b7dfc91ed35faedd data/create/advancements/recipes/create.palettes/polished_weathered_limestone.json -96dbde9aeb865c1c11e4b63434450888315e57b5 data/create/advancements/recipes/create.palettes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json -e46847d02ab7bfb2bc1da1a4ad4b7b54a3a28559 data/create/advancements/recipes/create.palettes/polished_weathered_limestone_slab.json -2e15c08a77341dafd9f9fcaccf840aa734cf6dd1 data/create/advancements/recipes/create.palettes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json -0debf9d9e419550ba14dcd8d65e8de51dab0bfaa data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs.json -75480d0c13a80d9edf93a0eff947e5165db011c1 data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json -7b4b27211174e774169132a50da7bfd63ff28b30 data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall.json -81a759d9b069faedee49107642d947ea1bf1ac6c data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json -28c7dd5fb1594295f977eff41ac677aab9660831 data/create/advancements/recipes/create.palettes/scoria.json -874023eabafb85aefacc86f395c5d4ef0cc9cfac data/create/advancements/recipes/create.palettes/scoria_bricks_from_scoria_stonecutting.json -a9969fd00f8cba428715d27a8ab6af6ba6473c8a data/create/advancements/recipes/create.palettes/scoria_bricks_slab.json -1d129bb8d359de50344dcb46f77899b0651d7817 data/create/advancements/recipes/create.palettes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json -3344137d23da0c03c74b60e7619a7efb03b64ec9 data/create/advancements/recipes/create.palettes/scoria_bricks_stairs.json -bf35a395a7f459ef4c54293efeeba9cd16140c41 data/create/advancements/recipes/create.palettes/scoria_bricks_stairs_from_scoria_bricks_stonecutting.json -379383047acaa11b179e79f3f03a3baf3cfd4bcf data/create/advancements/recipes/create.palettes/scoria_bricks_wall.json -dc5df4f4feddc24a7c78b25b6ed3e7ed458342f1 data/create/advancements/recipes/create.palettes/scoria_bricks_wall_from_scoria_bricks_stonecutting.json -3efe54b00bc7398875cf81a5317224618b6e0aee data/create/advancements/recipes/create.palettes/scoria_cobblestone_from_scoria_stonecutting.json -1332cd08822ecfdfda973e0ff7ffd5d3f18366cf data/create/advancements/recipes/create.palettes/scoria_cobblestone_slab.json -61b962acdd3be898cc6a85cd9a3982fecbe67a70 data/create/advancements/recipes/create.palettes/scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting.json -487cb55b0d3419f67e371115be89598e478ffe9a data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs.json -b852a9a59499c113f387ac06fdb27d3d455f18e3 data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json -a43d45efa0fb0d3eaace93c18d80a14d4dcddf38 data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall.json -e340721aa78f260c2666214aa149241a37de216e data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json -68fc67ead3fd31885b30a5cf3e71dd33fb040634 data/create/advancements/recipes/create.palettes/scoria_pillar.json -53712a9ae59976dece952bea7ecaf73b679448f0 data/create/advancements/recipes/create.palettes/scoria_pillar_from_scoria_stonecutting.json -6b148def2f8789f9ff1d41bb71ab3608438a7207 data/create/advancements/recipes/create.palettes/smelting/dolomite.json -070720cc271767b26ad51fa089b4cf2a64d309be data/create/advancements/recipes/create.palettes/smelting/gabbro.json -9a2901f6b918468b0034a8942178d6f3c82aeb6e data/create/advancements/recipes/create.palettes/smelting/limestone.json -c8fb5d555eacec479af4fa6b9042656f1fe49a2e data/create/advancements/recipes/create.palettes/smelting/scoria.json -c4f13a0ff5827570018515109c1eda0b3f2fb3bc data/create/advancements/recipes/create.palettes/smelting/scoria_from_natural.json -459538728b06d4c72d7e65d8f7c98a75a48f3a52 data/create/advancements/recipes/create.palettes/spruce_window.json -6aaf96cdaa845b63ab67ba4b968ea4d811e2fef5 data/create/advancements/recipes/create.palettes/spruce_window_pane.json -ab0cacba05f8def9cc91b993d464c297babf6fc3 data/create/advancements/recipes/create.palettes/tiled_glass_from_glass_colorless_stonecutting.json -d40c7ce6b79630ace624d17b92667286998d93bc data/create/advancements/recipes/create.palettes/tiled_glass_pane.json -24fafe59013a3e0439a73ea4e0cef114fc9a8e4b data/create/advancements/recipes/create.palettes/vertical_framed_glass_from_glass_colorless_stonecutting.json -cd5ee73117872ee98434be1d24b4f271f7e94a48 data/create/advancements/recipes/create.palettes/vertical_framed_glass_pane.json -f26d1a1ee183b1b19d018fbdefc70f0bf29b41d0 data/create/advancements/recipes/create.palettes/warped_window.json -faf33c9c630eecab88bb969e3b9f7fd9e9f6ccf6 data/create/advancements/recipes/create.palettes/warped_window_pane.json -5b3447ec4802fb27f1ee9a3b1bbe1936fac48fb3 data/create/advancements/recipes/create.palettes/weathered_limestone.json -ef0d351d13f7e9c633581b537c59bddc1fa4c3a4 data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json -1c931e15af3e5b5f78a0a62b8c159fdf9f0d7f3e data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab.json -bba639941526cc23570e328e0b5e2a5545667219 data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json -1101f434c85add4fa1c37ab2b80b4e6604ae52bf data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_stairs.json -49489a710e0241bb0b6f4cd85a33f9025bddc6fb data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting.json -d3ee4e8db3379532c98508cf5cf8ce4b6424cdfa data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_wall.json -3b903bfb6280dd3ae1962118928054161c88fbda data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting.json -b77c5aecd0b6dd37a0c69431ab7a4a40fe0770eb data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_from_weathered_limestone_stonecutting.json -6d0c113b3e873193c2f009a4f09d5c563abce0e4 data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_slab.json -09eb711ca2cf9dca77f4aef55602a28dd72289b3 data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting.json -28c05429880821ed055a938c04b865fa577eeade data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs.json -8ea05c6cdb313ff395d1f21cfb40e2d939dadf20 data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json -4d838d8ceaf207a59554444d82b80c31807341bc data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall.json -e548127075559307b767b802f4809ed52eedd543 data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json -efab7b7f3829998a91fc506e4be3b6345f5ca168 data/create/advancements/recipes/create.palettes/weathered_limestone_pillar.json -9790a16fd56e47cb5abbfad4062672303c224d9f data/create/advancements/recipes/create.palettes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json -e00155bcd00f50750e2cc4d6aa30c2f2d6e62922 data/create/advancements/recipes/decorations/smelting/glass_pane_from_framed_glass_pane.json -bf9131527df4ad259b5a509753ba66417d764da2 data/create/advancements/recipes/decorations/smelting/glass_pane_from_horizontal_framed_glass_pane.json -1b1517afa209c8db70eade588f4f08039c4d6b72 data/create/advancements/recipes/decorations/smelting/glass_pane_from_tiled_glass_pane.json -71f2e99c69a6ca1c9752355a2801c932d5266451 data/create/advancements/recipes/decorations/smelting/glass_pane_from_vertical_framed_glass_pane.json -d7755c3882f6e59bedd81c8395416df62b271337 data/create/advancements/recipes/food/campfire_cooking/bread.json -ecfec2e105e00a9bd7f28e9228660ee00b0749b5 data/create/advancements/recipes/food/smelting/bread.json -795700a15d24438ba83cd1888393a32ab884d34d data/create/advancements/recipes/food/smoking/bread.json -b2bf6f04c1090e761d899fb6c16c91c6e71dad1d data/create/advancements/recipes/misc/blasting/gold_ingot_from_crushed.json -808e5f83586c280c44e02f95902ca85f085bfa0d data/create/advancements/recipes/misc/blasting/iron_ingot_from_crushed.json -cc2fb476dcd5ba27b56b7f9fd2ebb9ef142cdc60 data/create/advancements/recipes/misc/crafting/appliances/slime_ball.json -ea72626febe23b0c8c6e03518a9486ce94c88b12 data/create/advancements/recipes/misc/smelting/gold_ingot_from_crushed.json -3b6f22b5731000f48963044fb2ac6f9af6f9a883 data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json -c8a2f6594042a3205e675349ccef97873a9e91b2 data/create/advancements/recipes/transportation/crafting/kinetics/furnace_minecart_from_contraption_cart.json -e35aa0e435dc3640c78c4687dd7130fe62c55ea3 data/create/advancements/recipes/transportation/crafting/kinetics/minecart_from_contraption_cart.json -e0b9edc5e59647e7dd99be17369b263dadf407d4 data/create/advancements/refined_radiance.json -67edd7bd314a85a1fddc2aa9f6b2207879aa5c3e data/create/advancements/reinforced.json -fc12b590ab8f5ac901db21c67ba3850f157e1421 data/create/advancements/root.json -c1f162e773518f6b1481221e3e63f9ba33fed647 data/create/advancements/shadow_steel.json -6c1a67e193a4c5af356b31a1d5b5e9d3faeca87e data/create/advancements/shifting_gears.json -a7d278d8ce8e2769c0b9c89f547d4775eabe671b data/create/advancements/speed_controller.json -a203d509a6038f0bad707e232a425388e62e1ae1 data/create/advancements/speedometer.json -f7bb8f08a08e22ec1e6bb098d65d06233e8fbcec data/create/advancements/splitter_tunnel.json -b69d174d7a5e9eab8ca013b66bc9d02244d7f9a3 data/create/advancements/spout.json -15f73da913c54cd2f945e4d7402fb8d587cbaa9f data/create/advancements/spout_potion.json -0efdaf483d84791044f085f79197b6bab3e15872 data/create/advancements/stressometer.json -1aceaa6e47709aa03f3d4f606fa5dcaacc899835 data/create/advancements/tunnel.json -4fef92dce84fa1a075db31fb33081f5fb8ec7e9e data/create/advancements/upward_chute.json -fe37896bb804d2be9b8abf3744c5b9b7bc1c086e data/create/advancements/wand_of_symmetry.json -2c278dc6e6e4c12c0cfce22b5192844586a2d5c1 data/create/advancements/water_wheel.json -d6b94fd499cb4fb0ae587b0e9e7088832f67fe01 data/create/advancements/windmill.json -4513d0c4dd40c948028a3fc8e6f3b4d0356c0a90 data/create/advancements/wrench.json -054392b614e410c6d1b37c546b4bfd36f50aec4a data/create/loot_tables/blocks/acacia_window.json -64b95066bf96a3f0de95919d526243ba4f5a3ade data/create/loot_tables/blocks/acacia_window_pane.json -113f225f01d45c420ee038e8aad3d6c5e836dea2 data/create/loot_tables/blocks/adjustable_chain_gearshift.json -191b117d0a25940248ed54d419ea0bb0afb482d0 data/create/loot_tables/blocks/adjustable_crate.json -417da41ebd0520ae22ddc3541eb490daf2af95dd data/create/loot_tables/blocks/adjustable_pulse_repeater.json -d0ba402852cea164f6d279a9b37cc38ac3958574 data/create/loot_tables/blocks/adjustable_repeater.json -0d139e302f4a11438b0acd664c0df15b41040f69 data/create/loot_tables/blocks/analog_lever.json -d3202a337c15c8b8ec41fa5879bb94327bb75057 data/create/loot_tables/blocks/andesite_belt_funnel.json -1d04146c468ce4bf898b596c171b3ba3146d7d66 data/create/loot_tables/blocks/andesite_bricks.json -406e04981bee322d5e6ad1c58bc6c9036e8fd218 data/create/loot_tables/blocks/andesite_bricks_slab.json -0ba4528089294c5229e1904dc3191f604138cf8e data/create/loot_tables/blocks/andesite_bricks_stairs.json -db2d27969cb53d9489e7c7e4bf60864fa89b29f4 data/create/loot_tables/blocks/andesite_bricks_wall.json -cb36b039a511aca643fe674a63de8d6ad8478256 data/create/loot_tables/blocks/andesite_casing.json -906155b0d00438e695d34dd14b374d94e691460d data/create/loot_tables/blocks/andesite_cobblestone.json -a438bc69030589264e1d736bbd08662bdd123be3 data/create/loot_tables/blocks/andesite_cobblestone_slab.json -6b5393dab7d443da6d54debccbc8b060c6c9bdc7 data/create/loot_tables/blocks/andesite_cobblestone_stairs.json -36d38c085d8e522fe15f0ef9bc64363e163f3de7 data/create/loot_tables/blocks/andesite_cobblestone_wall.json -b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data/create/loot_tables/blocks/andesite_encased_shaft.json -d3202a337c15c8b8ec41fa5879bb94327bb75057 data/create/loot_tables/blocks/andesite_funnel.json -6908f62c809ea2105bc92765d84d5655197346ab data/create/loot_tables/blocks/andesite_pillar.json -317aa99086127c649981b7b2fc85e66774a30f58 data/create/loot_tables/blocks/andesite_tunnel.json -14bf1764b9313893b6a6f57094f9506ac9fa71a8 data/create/loot_tables/blocks/basin.json -c7f81e30c31837a287d6d6040cdb02c7dec11441 data/create/loot_tables/blocks/belt.json -67a8e2513c3cb09e6fe80279fda94f79d5018c37 data/create/loot_tables/blocks/birch_window.json -bf1d5843f93533f84bc4adec5b77da2114fa2025 data/create/loot_tables/blocks/birch_window_pane.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/black_sail.json -cccc209d172cc7bac76f1b4ac79085ee90742ab2 data/create/loot_tables/blocks/black_seat.json -f3573f47b8a914aa222633893e158f84fcd6f3d8 data/create/loot_tables/blocks/black_valve_handle.json -a2313c9b7d114396fca3c86a740d23fce3873679 data/create/loot_tables/blocks/blaze_burner.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/blue_sail.json -3834f7ac2bbc42cead02d4973842adb9ad97e6bf data/create/loot_tables/blocks/blue_seat.json -fcddccd1bf45c2f4ad5f1520e209a4f04487274a data/create/loot_tables/blocks/blue_valve_handle.json -1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data/create/loot_tables/blocks/brass_belt_funnel.json -70d9d4def43d5b31fa7cdc5ca5002c71cf4a90b0 data/create/loot_tables/blocks/brass_block.json -8a14258ad5d79d9e4dc5a318905644b446196420 data/create/loot_tables/blocks/brass_casing.json -b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data/create/loot_tables/blocks/brass_encased_shaft.json -1dbc446abe190b2832b2ce7d52c2f2d2bdd45949 data/create/loot_tables/blocks/brass_funnel.json -6c8e784677d1a843b6c707484c79751acdb46ebc data/create/loot_tables/blocks/brass_tunnel.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/brown_sail.json -d415862a0abe20e8c5c2c8125bb672065330a9bc data/create/loot_tables/blocks/brown_seat.json -fedfe922f568c06adc2dfdd641b9abc90ba5af8a data/create/loot_tables/blocks/brown_valve_handle.json -0be542fef3bc0e1a0d556883568a1400a8b97df1 data/create/loot_tables/blocks/cart_assembler.json -ab820bbaaf67c6697dfbab33c05fb73b18c70bfb data/create/loot_tables/blocks/chiseled_dark_scoria.json -1f907058afd7d8dbe628c9ab315b8ddbdccfbfda data/create/loot_tables/blocks/chiseled_dolomite.json -53f5d88abfda875b5ec29c2229a7e7371d66503c data/create/loot_tables/blocks/chiseled_gabbro.json -4b09725707bac4c5813e2bb489ff848d0d964ae9 data/create/loot_tables/blocks/chiseled_limestone.json -43f446abd3c1c184a08645979edf620e59955a30 data/create/loot_tables/blocks/chiseled_scoria.json -adde89e46b12de1eee6fd0c5cb98c5f45feefc15 data/create/loot_tables/blocks/chiseled_weathered_limestone.json -07ccc1576a71338cb73c4e06f8c28a2c86843877 data/create/loot_tables/blocks/chute.json -778b53c36d73b6e9c78fd6c091c9c3535c3c18f7 data/create/loot_tables/blocks/clockwork_bearing.json -d76113310fc56eca6382d44df174096f2210d416 data/create/loot_tables/blocks/clutch.json -673ba3a5deae9133b917d16c9eb87fe4c2873c8a data/create/loot_tables/blocks/cogwheel.json -096af6b5df6e87d36cb936eea9b00982a554f4af data/create/loot_tables/blocks/content_observer.json -80c2cb21714651116a71f449368c06bb22e841ce data/create/loot_tables/blocks/controller_rail.json -662b8d41803ef166d20850653b36759de719206c data/create/loot_tables/blocks/copper_backtank.json -f38802b919c49f162f102d6e5d94113f05bf4ab1 data/create/loot_tables/blocks/copper_block.json -5a65a18ea787130ac7b8f5652bfa5ed187446649 data/create/loot_tables/blocks/copper_casing.json -31a51237763c374b7cdf39b9b62c14e965871047 data/create/loot_tables/blocks/copper_ore.json -a5a7ba88a1d38da83b37bbe842dc7cc0544f37be data/create/loot_tables/blocks/copper_shingles.json -c013613df278f6e8b4c9dad5f16e0ec6c3e992e3 data/create/loot_tables/blocks/copper_tiles.json -5c15f22db359a2af8efa18561e080cdf361a0100 data/create/loot_tables/blocks/copper_valve_handle.json -b160899aa785dc54d8c6cc095337f70b81f3e44f data/create/loot_tables/blocks/creative_crate.json -51d66e32581b87beb871d99b93cb45d45eada8dd data/create/loot_tables/blocks/creative_fluid_tank.json -d8f2f8921b9200b1d9476a77ee1be32c25308ac3 data/create/loot_tables/blocks/creative_motor.json -08b427aea85e467d7fe58d0e691de428dd64da7f data/create/loot_tables/blocks/crimson_window.json -ba084fc3c680c9dea0d03fc664a831dfed18e52e data/create/loot_tables/blocks/crimson_window_pane.json -c28fa42746a4d5ca2f824001b67e58673810169e data/create/loot_tables/blocks/crushing_wheel.json -205f5899101262f31f5c1a88bb7d954918d08d04 data/create/loot_tables/blocks/crushing_wheel_controller.json -d370ee874b5b6b98e9a8c368218fe61f644d956d data/create/loot_tables/blocks/cuckoo_clock.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/cyan_sail.json -49a14b9e93abdf02a7aef9c0c4085ac89617fae4 data/create/loot_tables/blocks/cyan_seat.json -fe24fd296812fea3f838defa2ca6270523d9d48e data/create/loot_tables/blocks/cyan_valve_handle.json -fd309e1d39dcbcb25c3361edecd8c9afa0f847d0 data/create/loot_tables/blocks/dark_oak_window.json -58e6307ba0efa65a0715662a391fe7dc6fba0c68 data/create/loot_tables/blocks/dark_oak_window_pane.json -6769787b0c7a8d2762bae1c4826275bde8647b4e data/create/loot_tables/blocks/dark_scoria.json -502160551afd210c68582a1dfd41a2df720f53a1 data/create/loot_tables/blocks/dark_scoria_bricks.json -d37adba01cd1220e265dbdc025b3f8d01b992289 data/create/loot_tables/blocks/dark_scoria_bricks_slab.json -265bb133af68497d9b4ba4bd418a198506caa45b data/create/loot_tables/blocks/dark_scoria_bricks_stairs.json -43fd6e4e2e140416245f7e7e4a680e347a446fc5 data/create/loot_tables/blocks/dark_scoria_bricks_wall.json -ef1beeb856cb30d381fd4f1cb4d2bf62fc444e52 data/create/loot_tables/blocks/dark_scoria_cobblestone.json -b479f01037bc74f56f8d7b047afc8fa0ff79b0b8 data/create/loot_tables/blocks/dark_scoria_cobblestone_slab.json -7b55b57140f7f04e39c951958cd4b62e17621761 data/create/loot_tables/blocks/dark_scoria_cobblestone_stairs.json -76457f3ec7c2d3874866ce8eb894f7bd9cfd59ee data/create/loot_tables/blocks/dark_scoria_cobblestone_wall.json -be851f6643d151ed464e4164bc2b7ca145e5ff82 data/create/loot_tables/blocks/dark_scoria_pillar.json -cf9be747e10a98f3f3aabb95c9753f39d806f73b data/create/loot_tables/blocks/deployer.json -5b46f6003bfe393b43ea0447fffcf7ae3bf969b1 data/create/loot_tables/blocks/depot.json -5c8ca846c3fb348fea628035e1670208e386516b data/create/loot_tables/blocks/diorite_bricks.json -b889b5b9d33ef36fe5ce8b59e0922a22ba2a8e91 data/create/loot_tables/blocks/diorite_bricks_slab.json -bdaba62199f7a65e1149b742aaaf0c23a1e149b0 data/create/loot_tables/blocks/diorite_bricks_stairs.json -17c768f01d476fc263ac4c3d2b588412f3c1198e data/create/loot_tables/blocks/diorite_bricks_wall.json -634c0fbb429c8f8350a790fbaf44338a7d3e299e data/create/loot_tables/blocks/diorite_cobblestone.json -529a6ddf7d57a12f4b4ee7e9b2890b789e79b327 data/create/loot_tables/blocks/diorite_cobblestone_slab.json -5141eec8eebed0feec906618dd3474ea402fbf28 data/create/loot_tables/blocks/diorite_cobblestone_stairs.json -f3c963cfd51069876140373f410e868706744e9b data/create/loot_tables/blocks/diorite_cobblestone_wall.json -fdcf47cddebca81730ac122925b01daeddf9233d data/create/loot_tables/blocks/diorite_pillar.json -0be81285de44699dabb2c1e046ae109b2e39a4e9 data/create/loot_tables/blocks/dolomite.json -7ecdbfa3ebfc6865833bafed06ed7cd6eef58345 data/create/loot_tables/blocks/dolomite_bricks.json -ecc855c3ce298855038eb7b53137cab519bca55a data/create/loot_tables/blocks/dolomite_bricks_slab.json -699815e110c76bcb793efdfedcb8ac3a5b9b7131 data/create/loot_tables/blocks/dolomite_bricks_stairs.json -fea6a8aa0997360e2713c159b19cb89858ab5982 data/create/loot_tables/blocks/dolomite_bricks_wall.json -cfa4afad6cba1706474ee878b0043aa6cb2c1075 data/create/loot_tables/blocks/dolomite_cobblestone.json -c75e9574f5ba34335598e6b1f1e957de9dea4a6b data/create/loot_tables/blocks/dolomite_cobblestone_slab.json -59ff2dc7c0663b0a041a8b4dc66af3a17e117aa4 data/create/loot_tables/blocks/dolomite_cobblestone_stairs.json -d5fc5b3dc612cd748117e9d8b0ecda76e73f4514 data/create/loot_tables/blocks/dolomite_cobblestone_wall.json -6121c99e6e037dda9022af3a414aee444467ac1b data/create/loot_tables/blocks/dolomite_pillar.json -ef59a3bb6cb00927266a514b8a9741e1c3dd6070 data/create/loot_tables/blocks/encased_chain_drive.json -9055d82b983b673e1638d17b712b9fcd1f5a52e6 data/create/loot_tables/blocks/encased_fan.json -c8aa9bbed8fd703eb1853de0b7c9e04dffb7a511 data/create/loot_tables/blocks/encased_fluid_pipe.json -ddfc4764a6039d771e03af815ac4493da80d2e6b data/create/loot_tables/blocks/fancy_andesite_bricks.json -6de29951b4129dfd5c7fd6960e7dd8b8d371b451 data/create/loot_tables/blocks/fancy_andesite_bricks_slab.json -413c8bb80954679796cd9d18f808c28a7bdbe681 data/create/loot_tables/blocks/fancy_andesite_bricks_stairs.json -b51e0f9df7297f6d98d7fc24202c01c8437b613a data/create/loot_tables/blocks/fancy_andesite_bricks_wall.json -1e0f7ab66554911b37ffeeceef4d13ad3c12c7cf data/create/loot_tables/blocks/fancy_dark_scoria_bricks.json -13c74ed5609dc8758cf550c68a7d115a42ee5f15 data/create/loot_tables/blocks/fancy_dark_scoria_bricks_slab.json -692b7aab0fa9a1610cc87b469172baccd6f206bb data/create/loot_tables/blocks/fancy_dark_scoria_bricks_stairs.json -5600f9afd4271045383332799cae926cae03691e data/create/loot_tables/blocks/fancy_dark_scoria_bricks_wall.json -b272bdf3a70adb5477e73f1a6db112dadf83e750 data/create/loot_tables/blocks/fancy_diorite_bricks.json -80a87576fe18768dac2f13b238e9f731074c07a0 data/create/loot_tables/blocks/fancy_diorite_bricks_slab.json -686cf8fe6950fd336755ed6a65cd41f611a8cba7 data/create/loot_tables/blocks/fancy_diorite_bricks_stairs.json -a76222e64356951c6038c4b26a28465a1c51f609 data/create/loot_tables/blocks/fancy_diorite_bricks_wall.json -f21cc226848e6d65b1c1167acf6a84be97e22b8a data/create/loot_tables/blocks/fancy_dolomite_bricks.json -e47bd7a391a163dabe29763b77975dc38db41201 data/create/loot_tables/blocks/fancy_dolomite_bricks_slab.json -b1cb60875d96d403734793c848cb48d1af003ebe data/create/loot_tables/blocks/fancy_dolomite_bricks_stairs.json -35ea72b6aa72d027be3f565ffa8315b99d3f55d9 data/create/loot_tables/blocks/fancy_dolomite_bricks_wall.json -6d7ebe8708748780865a8c5c9acd1ea338734951 data/create/loot_tables/blocks/fancy_gabbro_bricks.json -c32966d3315e81c21d1cb116fb801dfc73865e2a data/create/loot_tables/blocks/fancy_gabbro_bricks_slab.json -dc70fcfb5bd4baf5418b630f5e3a8724e0bdad25 data/create/loot_tables/blocks/fancy_gabbro_bricks_stairs.json -030b562f049fbd403efbc84b88efcb6988e9ed74 data/create/loot_tables/blocks/fancy_gabbro_bricks_wall.json -c9f185553e94cd941a4058ab2194c279919c7778 data/create/loot_tables/blocks/fancy_granite_bricks.json -9748bdfc8350085d0baabc791bf7a39dc05a8e82 data/create/loot_tables/blocks/fancy_granite_bricks_slab.json -70266c8f9d1b150da78c40f3fd5ef51cd9e11090 data/create/loot_tables/blocks/fancy_granite_bricks_stairs.json -04fc099dc4f0e7e1e03a4e162c1c9f8e1443817f data/create/loot_tables/blocks/fancy_granite_bricks_wall.json -a919a7333a2309392ba6908cd2330d014c0b44da data/create/loot_tables/blocks/fancy_limestone_bricks.json -9774bbcd18fb216bcbc32e26fc4dd23072ed58ba data/create/loot_tables/blocks/fancy_limestone_bricks_slab.json -01d9d1a53ee36a84b689ea9018ed97b396dadf52 data/create/loot_tables/blocks/fancy_limestone_bricks_stairs.json -7d27790caf8d617c178f7b13cc6424813fad4f1f data/create/loot_tables/blocks/fancy_limestone_bricks_wall.json -03eaefe79ab0b61ad0bd0109db995059ed036d60 data/create/loot_tables/blocks/fancy_scoria_bricks.json -6105aaaed7ab75a6d4a9681bc0dc7556da375a76 data/create/loot_tables/blocks/fancy_scoria_bricks_slab.json -5f8f0283601f6abc1e0ee19861fc4eb8dfcd2914 data/create/loot_tables/blocks/fancy_scoria_bricks_stairs.json -664b145ec54ad8e2a26fac4ba64de9dc7c9d92e3 data/create/loot_tables/blocks/fancy_scoria_bricks_wall.json -7580387fd66509a5a265f1a332666b96f9ca2355 data/create/loot_tables/blocks/fancy_weathered_limestone_bricks.json -1864ecdcba9588e17004a55415ab993937117b68 data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_slab.json -1be3aae5c0aa8b3c3750db79699e9350adb12231 data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_stairs.json -6bb505bad78cbb01a5cb5a069435bf4ed0e62adf data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_wall.json -c8aa9bbed8fd703eb1853de0b7c9e04dffb7a511 data/create/loot_tables/blocks/fluid_pipe.json -108d27b697d2ea0719d74a704c6e344a8d63375b data/create/loot_tables/blocks/fluid_tank.json -40dbf1f193787f3c6437de8c0a828ba4e37f10fc data/create/loot_tables/blocks/fluid_valve.json -f37526c092c645045c22674dea6c7b1ec503c9c3 data/create/loot_tables/blocks/flywheel.json -ce0bb978b11935bc2d1218445f8ab18099af6b8a data/create/loot_tables/blocks/framed_glass.json -89bd90ecd7a1ce1f75bd873989cc58a84c8dcef9 data/create/loot_tables/blocks/framed_glass_pane.json -4063880eda871fe63a4eb549a19daecabce849e5 data/create/loot_tables/blocks/furnace_engine.json -88b3438e50322b731cdd8589e36a9ea497cfe56e data/create/loot_tables/blocks/gabbro.json -0356e003d8890d31b89d0ad98e32aae892da71f9 data/create/loot_tables/blocks/gabbro_bricks.json -bd93e42ebca985b8aeeaf0ea5fb736d496183615 data/create/loot_tables/blocks/gabbro_bricks_slab.json -e51893e1601c470da466b35b17251238e15d0361 data/create/loot_tables/blocks/gabbro_bricks_stairs.json -7064a46c81963ad06e14c1ed2f5a885a8895c459 data/create/loot_tables/blocks/gabbro_bricks_wall.json -54fb8b5b8ab3a22197e3c1b5b04767b898377da8 data/create/loot_tables/blocks/gabbro_cobblestone.json -8bb96e5257b0b6c09ce60bfe6c8b43a9d13dee95 data/create/loot_tables/blocks/gabbro_cobblestone_slab.json -54879fe6ca3b7271fbb94ec26bef1c3031942d4d data/create/loot_tables/blocks/gabbro_cobblestone_stairs.json -ae19749df10663efc51b8b27af310164f250ed38 data/create/loot_tables/blocks/gabbro_cobblestone_wall.json -e8d09c919e3b8125d7da0f38383c01bcfc61c7a8 data/create/loot_tables/blocks/gabbro_pillar.json -0ea37ff1af6c6a884670cd12ff1d8fdf223519c5 data/create/loot_tables/blocks/gantry_carriage.json -f2883656e417a78e5e4093002eb1e36ffa1157e9 data/create/loot_tables/blocks/gantry_shaft.json -b0109b4a4f0f738cbbe6b5911e8c3c0310b76f99 data/create/loot_tables/blocks/gearbox.json -5f39461c5c9d3ad8d84195b06b9468fe2b0fb269 data/create/loot_tables/blocks/gearshift.json -c8aa9bbed8fd703eb1853de0b7c9e04dffb7a511 data/create/loot_tables/blocks/glass_fluid_pipe.json -74371bc2b516ad9742ca081d82dc1b7f642e25b4 data/create/loot_tables/blocks/granite_bricks.json -f341c87b9d67f3281a4ca3fac99fccfb6ef81003 data/create/loot_tables/blocks/granite_bricks_slab.json -6b2c74992f261df4f539ff65919e2f4a58b146ec data/create/loot_tables/blocks/granite_bricks_stairs.json -8916645260d99be1e13421d343980d863a14a695 data/create/loot_tables/blocks/granite_bricks_wall.json -fa0ddf45d108f55550164113cb5cfd002586a9d4 data/create/loot_tables/blocks/granite_cobblestone.json -3495c41fbb9f93c957c957d03b220a2537680538 data/create/loot_tables/blocks/granite_cobblestone_slab.json -feca8a1f62e0e13fcb2252d5f782d74938b84431 data/create/loot_tables/blocks/granite_cobblestone_stairs.json -1d225a68b09d6f389aa7ed48aa05979bdaa482a9 data/create/loot_tables/blocks/granite_cobblestone_wall.json -87a4ac3db5ec80613b940abccc72fc4b37cee0ba data/create/loot_tables/blocks/granite_pillar.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/gray_sail.json -d014357b3a467b23473c8223f32471a04a9ff94c data/create/loot_tables/blocks/gray_seat.json -35f916fd0f8465a070270615dbddd716ff68d5bb data/create/loot_tables/blocks/gray_valve_handle.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/green_sail.json -a71599eecd3f1179e3d0367623460e798828aa6d data/create/loot_tables/blocks/green_seat.json -865ebead9601b29e6326dc9e1d4c1ca92f3b7a3b data/create/loot_tables/blocks/green_valve_handle.json -9bdc47ea3ffc52f037f12f40f387e6b72a352c4e data/create/loot_tables/blocks/hand_crank.json -22012e7759f1dbccbb06bcaf0311a54190270825 data/create/loot_tables/blocks/horizontal_framed_glass.json -5d3f585539942f13bbc458a0a002849c1f034fc1 data/create/loot_tables/blocks/horizontal_framed_glass_pane.json -1b28cc5e1e535aa0c62d4a75ad76fcb40bf6232c data/create/loot_tables/blocks/hose_pulley.json -ef3890c4fa262959cf31a0063fd21919da86eda1 data/create/loot_tables/blocks/item_drain.json -cf2bfae903e7f8510962e672b6266c0e74176aae data/create/loot_tables/blocks/jungle_window.json -1a3a19517f95fc632286d3cc693bfee4a59dfa0a data/create/loot_tables/blocks/jungle_window_pane.json -4d948f80fb7a8b6b99897544681f43fe3d2058f0 data/create/loot_tables/blocks/large_cogwheel.json -49cab25e7aa6431d4c1e180cdceb76b6f6f73fe5 data/create/loot_tables/blocks/layered_andesite.json -7610175c7f064bcb3ba95d20d37dfae5f9ca7bac data/create/loot_tables/blocks/layered_dark_scoria.json -03673bb95dcb0a5f2fac2b0dc6b7d6b988787f8b data/create/loot_tables/blocks/layered_diorite.json -bc9a3e6dfa7635e7385c540ebc15716ce04b7071 data/create/loot_tables/blocks/layered_dolomite.json -870016126097f1fcffb3a9f0402667a8b3aa7d9e data/create/loot_tables/blocks/layered_gabbro.json -fa8a5922f7346a15a80b5c7e5dfc26d24ea98728 data/create/loot_tables/blocks/layered_granite.json -197ecf9c00c06f6014ecbec678a5466492902cb0 data/create/loot_tables/blocks/layered_limestone.json -0ec9e366708637a01e600a2a12cc267d81b3f69b data/create/loot_tables/blocks/layered_scoria.json -54816065cd735dfe53b1eb551110ba18c6e3746a data/create/loot_tables/blocks/layered_weathered_limestone.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/light_blue_sail.json -b403848d3a4b4ad7a048e70c21e200e40d0c67e3 data/create/loot_tables/blocks/light_blue_seat.json -32afe3fff74ccda4151567961fa6c0b8e3735358 data/create/loot_tables/blocks/light_blue_valve_handle.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/light_gray_sail.json -0cc2b20cb6e2dae6cf9d759c85926663f6066c99 data/create/loot_tables/blocks/light_gray_seat.json -8cc64a1dfb7ce7be2c063248d912c68ad2fe999c data/create/loot_tables/blocks/light_gray_valve_handle.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/lime_sail.json -f7893090c6ecb4862c90c408b7f9ce8316f8b608 data/create/loot_tables/blocks/lime_seat.json -cae6d16c8967164698efbce3b91018a8e79a81e9 data/create/loot_tables/blocks/lime_valve_handle.json -7dfd638cc6f0d22bbc8fcbdb7212a3bfc8c85223 data/create/loot_tables/blocks/limesand.json -d476eed7b5f0c7438d2e517fc60cd23f19234056 data/create/loot_tables/blocks/limestone.json -57134f7d3d32fc1c48f2a20c4be84388587092bc data/create/loot_tables/blocks/limestone_bricks.json -1b59a36aa1a889c42d4b8b939f5eeee2967222d0 data/create/loot_tables/blocks/limestone_bricks_slab.json -41ed1d0750e8ddd7e7e75fd7e4cafde6346d1afe data/create/loot_tables/blocks/limestone_bricks_stairs.json -0b8b29ef8b5da9527fb56e676de210f7f5b4c1b4 data/create/loot_tables/blocks/limestone_bricks_wall.json -9fa612159a498b2475489f984ce4fee18f971568 data/create/loot_tables/blocks/limestone_cobblestone.json -ebb8f7a60d6d9debc53a1f16749d61b980dd1d18 data/create/loot_tables/blocks/limestone_cobblestone_slab.json -8db1e3f0dac48b91a4839206a7d5a88cef415fdc data/create/loot_tables/blocks/limestone_cobblestone_stairs.json -92fb16606f289ad33860270d098fad2522b24e09 data/create/loot_tables/blocks/limestone_cobblestone_wall.json -371115e5ceb08c07a9ab2371509960c31e0baa8a data/create/loot_tables/blocks/limestone_pillar.json -aa751d2e8a7889907c08c4bec6f6ca266230b6d7 data/create/loot_tables/blocks/linear_chassis.json -4005c244387ea824202c4c7cd44403e537d9766b data/create/loot_tables/blocks/lit_blaze_burner.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/magenta_sail.json -9e5e017cd3b4f544f487a5ca22ef610a4addc8ec data/create/loot_tables/blocks/magenta_seat.json -517e983d7387ec0d86845d4cf3deaa6d68c71170 data/create/loot_tables/blocks/magenta_valve_handle.json -e64c32da44b7e92dbef36fcb448c42b9bd9ae47c data/create/loot_tables/blocks/mechanical_arm.json -90ddf7b5c3b61758a4ad12a1e6ef16fe6ebf7794 data/create/loot_tables/blocks/mechanical_bearing.json -e93872a90e4f4642a003539e7db28fdacfdcd114 data/create/loot_tables/blocks/mechanical_crafter.json -dee1e06d953c0ca4e37799aee9073fdd43a3dc76 data/create/loot_tables/blocks/mechanical_drill.json -95fa2d3e9cf4aacc42617b1f5ddbf25eeb025770 data/create/loot_tables/blocks/mechanical_harvester.json -b12efeeef5682966016ce6ea2d171eecd33d9667 data/create/loot_tables/blocks/mechanical_mixer.json -2599be757a55464af338ef0a01e3772690d7eaf8 data/create/loot_tables/blocks/mechanical_piston.json -1087b6c6d88dc7c71ed81e1d3e180fe065e6d098 data/create/loot_tables/blocks/mechanical_piston_head.json -d9e217fcc668a04ee495968f8ccf9966271b6cea data/create/loot_tables/blocks/mechanical_plough.json -0e0742d066bda87ba5cc835a4028efb99e70b2f2 data/create/loot_tables/blocks/mechanical_press.json -e94a78187bcf7f235244b2c656732ba9a5821dd0 data/create/loot_tables/blocks/mechanical_pump.json -321daee16d6fad25ecc84da1b2830556d67e2a19 data/create/loot_tables/blocks/mechanical_saw.json -b13066b9e627db6954a30b115908602f1298576b data/create/loot_tables/blocks/metal_bracket.json -efbd4689e7d6740b80357203d1e02196f0752efa data/create/loot_tables/blocks/millstone.json -205f5899101262f31f5c1a88bb7d954918d08d04 data/create/loot_tables/blocks/minecart_anchor.json -53215ac772bee2f88052266b82213aaf668660e9 data/create/loot_tables/blocks/mossy_andesite.json -1bf4a13a44e5cc03d730b2aa537e60426062786e data/create/loot_tables/blocks/mossy_dark_scoria.json -956e6cc0c6314c9c01610b643785eed48d2d9317 data/create/loot_tables/blocks/mossy_diorite.json -726a61c0894bfcb98912118872d152b480ef3148 data/create/loot_tables/blocks/mossy_dolomite.json -be7e00f97bd20f2b8e1fe943e5e8324c2a44d765 data/create/loot_tables/blocks/mossy_gabbro.json -bd4ff2a38643d53cdc63e1af08af90e9adadcc0f data/create/loot_tables/blocks/mossy_granite.json -3f678fb5dd7279af65b8868765d7c8a5ee1023d2 data/create/loot_tables/blocks/mossy_limestone.json -7107b08ed07b23964df537ae689b48af29b80a2f data/create/loot_tables/blocks/mossy_scoria.json -fdff3d59c214ecbcc2ddcaef778ea661df128b56 data/create/loot_tables/blocks/mossy_weathered_limestone.json -fedbee3e023d469c9f3aba9d11d5be6cdae77083 data/create/loot_tables/blocks/mysterious_cuckoo_clock.json -ecd7afac9eb0989075fced6626e1061d5487c2f4 data/create/loot_tables/blocks/natural_scoria.json -d3ea271bb5774c73d44ab2e73195c9d5a4ff9c92 data/create/loot_tables/blocks/nixie_tube.json -6237eb3999181f1db09ca01b08e7785b70722d3b data/create/loot_tables/blocks/nozzle.json -0b2b142cfb3ebe9d4506e498a8e31f48d00db58d data/create/loot_tables/blocks/oak_window.json -90cc4d5857f47c48e2b82f394de9567023c5c8ce data/create/loot_tables/blocks/oak_window_pane.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/orange_sail.json -2333aaea940816b6bc8454ba24e0c9f52af94ac0 data/create/loot_tables/blocks/orange_seat.json -13338687962ef5b48dd9d142a2a862637d5c6953 data/create/loot_tables/blocks/orange_valve_handle.json -267e9e24fac93e3496a80fcb6ed8e9d1c329d2d2 data/create/loot_tables/blocks/ornate_iron_window.json -1fe77a16f4c86993b5fb30f1f48362787fd7cd0b data/create/loot_tables/blocks/ornate_iron_window_pane.json -8d91485a5f353c6fb84e16bd0d9d4a55aaeb31ab data/create/loot_tables/blocks/overgrown_andesite.json -2110e98310c61952b98100f01ea348dce062d945 data/create/loot_tables/blocks/overgrown_dark_scoria.json -552fa22bf8265abde5d7426681b18ef89a8f1159 data/create/loot_tables/blocks/overgrown_diorite.json -a7ff6100cb4694804e83f6bb0a5c17442f6ea7d0 data/create/loot_tables/blocks/overgrown_dolomite.json -bab9f6fb35f2ba4aa45fd726a8e94f90ef155bfb data/create/loot_tables/blocks/overgrown_gabbro.json -4725f5810b606bddc62ad288b039b2b28a8ba40d data/create/loot_tables/blocks/overgrown_granite.json -4b4acf9026d68de21b5804903556a505f913a778 data/create/loot_tables/blocks/overgrown_limestone.json -e0fc59a8645dae8f87e62b34c08014077e14de66 data/create/loot_tables/blocks/overgrown_scoria.json -8af10a6b2d07ed1b84ce617502ad68044262e701 data/create/loot_tables/blocks/overgrown_weathered_limestone.json -fc529ec8d55abf361ba1b8c38875839530b082c6 data/create/loot_tables/blocks/paved_andesite.json -d2b507115f64319f26785ce909eb0141a9f9d6d7 data/create/loot_tables/blocks/paved_andesite_slab.json -4dbc7c7537e680e4e7c8a5ba4e4ed394d788b10d data/create/loot_tables/blocks/paved_andesite_stairs.json -550795c90bce7ee25d12611ac04333dc2f04c727 data/create/loot_tables/blocks/paved_andesite_wall.json -6e2abd4ccd9f1835237a074ee897306049faeeaf data/create/loot_tables/blocks/paved_dark_scoria.json -d9642c4ef3e7efa3479627e9ee0ddda93baeeaec data/create/loot_tables/blocks/paved_dark_scoria_slab.json -c6b0ff8dc016dd42b22c408c3419f6711f1b3080 data/create/loot_tables/blocks/paved_dark_scoria_stairs.json -974783eeb365799e9a506d304ef2933695f28fd4 data/create/loot_tables/blocks/paved_dark_scoria_wall.json -ffbf1aa8e79c473a3c9e23b1b5b47b5b5028d3d1 data/create/loot_tables/blocks/paved_diorite.json -077ec4b8e967de13f467dd5577c299353cf0c8b5 data/create/loot_tables/blocks/paved_diorite_slab.json -bb07e230483cf3bee30b9d9f6eb4976dabac02d7 data/create/loot_tables/blocks/paved_diorite_stairs.json -a32cc9641d0a5ddc1d0e3203c8b5f889f8c8dfc4 data/create/loot_tables/blocks/paved_diorite_wall.json -3ba353c436a3ff7af9174f103453fb5828c09294 data/create/loot_tables/blocks/paved_dolomite.json -df5ef5fa0ae95765435f518cedc63df27df03c60 data/create/loot_tables/blocks/paved_dolomite_slab.json -4ae91089463b12b3cd83504b9479f8bf12131523 data/create/loot_tables/blocks/paved_dolomite_stairs.json -54f2b73b5bc1cdfb9967cc8739fdb5964e0823b3 data/create/loot_tables/blocks/paved_dolomite_wall.json -22845a058f1ce2e998bbb9934bd042b3bd6e6b81 data/create/loot_tables/blocks/paved_gabbro.json -c61e86f4f82340072b63a2eccf1e944f85990d94 data/create/loot_tables/blocks/paved_gabbro_slab.json -9bf714ac05d6ab5d2eb64af9b42333180eac3483 data/create/loot_tables/blocks/paved_gabbro_stairs.json -49faaf2df21b468bb033fafc406753c2303e3410 data/create/loot_tables/blocks/paved_gabbro_wall.json -6ce5f4468d05e4458a38ec916b42e45cf1478ae6 data/create/loot_tables/blocks/paved_granite.json -1c656ae7dc434094419b3f906acacfbfdd3716f0 data/create/loot_tables/blocks/paved_granite_slab.json -598924af51d35e3a1115896c161a31a72d5f0905 data/create/loot_tables/blocks/paved_granite_stairs.json -8c4a5acdf69eb5d1fa50453592f07dc28e4da813 data/create/loot_tables/blocks/paved_granite_wall.json -32a8d96e95cb0b784656b36078905c72ad51ee70 data/create/loot_tables/blocks/paved_limestone.json -e44f9e93023232a240905a2ca4ef0ec71b9ec35a data/create/loot_tables/blocks/paved_limestone_slab.json -a16ba0798803221478012d37db8555bb36e0a9ac data/create/loot_tables/blocks/paved_limestone_stairs.json -fde4316b1469c689370264fcdca37ac4929906c4 data/create/loot_tables/blocks/paved_limestone_wall.json -6d832782d9e73ff9f94920aaa0335d7e86aa65e9 data/create/loot_tables/blocks/paved_scoria.json -eb87b6c339efa712dec346f84189e0a519f3bfa9 data/create/loot_tables/blocks/paved_scoria_slab.json -3a72097f8e8ff3df80c540f5e8b54435e319c479 data/create/loot_tables/blocks/paved_scoria_stairs.json -7b717c3176a2a55d728f2102c6f9d82cc6305fb2 data/create/loot_tables/blocks/paved_scoria_wall.json -dfeba5c6de20e9ec0252e43b7c4046f017284d3d data/create/loot_tables/blocks/paved_weathered_limestone.json -09789862582b5409cd446f734cd53b6f807342cf data/create/loot_tables/blocks/paved_weathered_limestone_slab.json -67b9227237ed2a8c09c4183c0f2ab1b3bd07084b data/create/loot_tables/blocks/paved_weathered_limestone_stairs.json -d3e4ab984aef19ee21a1c5b868eb3fde96c05afd data/create/loot_tables/blocks/paved_weathered_limestone_wall.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/pink_sail.json -6f32e1217986407e41358e9417de63602c78e810 data/create/loot_tables/blocks/pink_seat.json -d85b09659f08a73513c57b1b2e5ec7fc4b6f340a data/create/loot_tables/blocks/pink_valve_handle.json -1087b6c6d88dc7c71ed81e1d3e180fe065e6d098 data/create/loot_tables/blocks/piston_extension_pole.json -05302657546d8d410e367e84d4d5e01f01523236 data/create/loot_tables/blocks/polished_dark_scoria.json -d3e0339ae3f25eca37279dc22676e07c1d80a9bb data/create/loot_tables/blocks/polished_dark_scoria_slab.json -a105d9992122370d80d190fcabcadcf167f71bd3 data/create/loot_tables/blocks/polished_dark_scoria_stairs.json -3298bdd51f488399459e9be88610296c8fdbf880 data/create/loot_tables/blocks/polished_dark_scoria_wall.json -9faa9435b97de565947686a8d5ecb29fff5aca8c data/create/loot_tables/blocks/polished_dolomite.json -7bb70c7613df2accfbe81164a3c73fb5d27bf0fb data/create/loot_tables/blocks/polished_dolomite_slab.json -25d03f9ad84709dc86ef660b78384c5e6b4a566c data/create/loot_tables/blocks/polished_dolomite_stairs.json -73b2aae50efbef2f69177dfdb55a4fe60c377f71 data/create/loot_tables/blocks/polished_dolomite_wall.json -3963878203d8383de9190ea08bafb85a83f7c6bb data/create/loot_tables/blocks/polished_gabbro.json -bb41b7dd97fe6114ca45319868d98d75bb3d824e data/create/loot_tables/blocks/polished_gabbro_slab.json -d7af796369513af346c7325866433f7e0fea0ab7 data/create/loot_tables/blocks/polished_gabbro_stairs.json -f54e5452a659d452e936424f35e4fdf7b2817843 data/create/loot_tables/blocks/polished_gabbro_wall.json -9f9c0531d0a6fd6041a24390126531c8d8fd5b2e data/create/loot_tables/blocks/polished_limestone.json -6b5343b5f1b59ca30dc9cff6f40b6d0fc37f0057 data/create/loot_tables/blocks/polished_limestone_slab.json -ddad935d589d85c2b2c4666caf4215771fb7dfbc data/create/loot_tables/blocks/polished_limestone_stairs.json -142148b74e61ae778f45465fc1df0aaae59e8fef data/create/loot_tables/blocks/polished_limestone_wall.json -51cbf4f5df6382161121f8b3b773d04cea36636b data/create/loot_tables/blocks/polished_scoria.json -9fd9b4a384ea06b3f8522b8397a5e1a997a0a6ca data/create/loot_tables/blocks/polished_scoria_slab.json -125e1fa323de8b565e17b1eedf1ca779bb2fddf7 data/create/loot_tables/blocks/polished_scoria_stairs.json -c7029af40b6f5dd2cd8f2ae7dfb89b37074624e6 data/create/loot_tables/blocks/polished_scoria_wall.json -6da8efd3289ceeb187f7037397329dcece287683 data/create/loot_tables/blocks/polished_weathered_limestone.json -93f7be402a8088d33a94954572e111bcd71f11c8 data/create/loot_tables/blocks/polished_weathered_limestone_slab.json -6ef650c723d409c7a678ffac45212e22e37581c0 data/create/loot_tables/blocks/polished_weathered_limestone_stairs.json -58715bc033e4740dbb754f91c93a22b9d06828e6 data/create/loot_tables/blocks/polished_weathered_limestone_wall.json -ac945ab9e78d52daff38b9c288824ec6f643b23a data/create/loot_tables/blocks/portable_fluid_interface.json -fbe98efcb1a5970b6795fdbbb671fee704c0945f data/create/loot_tables/blocks/portable_storage_interface.json -6a46f00d9de7050eb9748d5dbed182caa6b29949 data/create/loot_tables/blocks/powered_latch.json -a3fb7d3e3bf9dc73ce754002f10c469d57db1f71 data/create/loot_tables/blocks/powered_toggle_latch.json -205f5899101262f31f5c1a88bb7d954918d08d04 data/create/loot_tables/blocks/pulley_magnet.json -e8fb62c91226ac107dee45c5ebc54c8dd0aee224 data/create/loot_tables/blocks/pulse_repeater.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/purple_sail.json -d7f6caa568e6508177a644fb78dc18ce26c9b2c0 data/create/loot_tables/blocks/purple_seat.json -773e4dc856044dabfe9d2323cbda0460dfb626ee data/create/loot_tables/blocks/purple_valve_handle.json -768420dab8785909891e52c4d77a182d99ba11d3 data/create/loot_tables/blocks/radial_chassis.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/red_sail.json -71b0fa3b174efe94a2a735ab2426c376c0ef674a data/create/loot_tables/blocks/red_seat.json -59ee0fd35978068fbce0882e0b207db7eeb202c0 data/create/loot_tables/blocks/red_valve_handle.json -f5907a694206facc01f61f3428f72488486761c7 data/create/loot_tables/blocks/redstone_contact.json -886a0c1386fb12104b736a15689030aaff771270 data/create/loot_tables/blocks/redstone_link.json -5569a01114939be4b09cc1414e33d7211d7aada3 data/create/loot_tables/blocks/refined_radiance_casing.json -97c945de837a6360c0ab7e1371f16ebc1645f6ea data/create/loot_tables/blocks/reinforced_rail.json -205f5899101262f31f5c1a88bb7d954918d08d04 data/create/loot_tables/blocks/rope.json -cecaac07bd275bb1ae9e302f0bf44b581e74105d data/create/loot_tables/blocks/rope_pulley.json -aa6af37356d65105efab2503ffe75f778cfe873b data/create/loot_tables/blocks/rotation_speed_controller.json -30de11bec82606fead9d6bff7bba0232e97f1039 data/create/loot_tables/blocks/sail_frame.json -069701cb804b6522c18624a0d4f3f949ff8b0281 data/create/loot_tables/blocks/schematic_table.json -a2b172dc749176d4df34729007019605fc6dd150 data/create/loot_tables/blocks/schematicannon.json -5c1bd2b940fa04ab487155ca10c551dd9b0fbf37 data/create/loot_tables/blocks/scoria.json -bb670ac5dd2fa4c743bc268cd0547926eb6cdb68 data/create/loot_tables/blocks/scoria_bricks.json -a7217ea301a282d0ef52f2d8c06dd8683398408d data/create/loot_tables/blocks/scoria_bricks_slab.json -58a188f3ebfeb3d19323c3f8dfa3e020a7f6cdc4 data/create/loot_tables/blocks/scoria_bricks_stairs.json -81dae28911c6ff8d8330a597fc1e4eab1e77942d data/create/loot_tables/blocks/scoria_bricks_wall.json -c55969dc0f736f770e3c27d9f2609d20d379fed1 data/create/loot_tables/blocks/scoria_cobblestone.json -4e9284ff133bc53ef5a55788c2e80079bb3c6817 data/create/loot_tables/blocks/scoria_cobblestone_slab.json -3205ea5dd97df68f733f54aa3ab3f98a5ce20942 data/create/loot_tables/blocks/scoria_cobblestone_stairs.json -d2139e9daa55c09cd262b15c980d65c554347e45 data/create/loot_tables/blocks/scoria_cobblestone_wall.json -82fb40738f53892571ad83789ff45315e887c811 data/create/loot_tables/blocks/scoria_pillar.json -f70c5b7e7da7abffc82e3d1828499799883bbe85 data/create/loot_tables/blocks/secondary_linear_chassis.json -e4f6dccb8bce21b5214c1d8cfb440fc0ba4159d7 data/create/loot_tables/blocks/sequenced_gearshift.json -49f6b51c0618aa0c0133dc1f034ff6c031318cac data/create/loot_tables/blocks/shadow_steel_casing.json -b127cb6920e6d7d9c8b2402cb186402a9a8dd3fc data/create/loot_tables/blocks/shaft.json -22bbb9770388d2a30fa8e95e9a06b7546d66a606 data/create/loot_tables/blocks/smart_chute.json -9e4d8220e513f5ecef27f60001681e9d66331d7b data/create/loot_tables/blocks/smart_fluid_pipe.json -70b6e82e9198d3910877e62c2eab86d46ca27089 data/create/loot_tables/blocks/speedometer.json -f6c497d625de67ea9377e840208b1be539d13b73 data/create/loot_tables/blocks/spout.json -a23a1e332c9ba84474e3c0588e8a0857afe346e0 data/create/loot_tables/blocks/spruce_window.json -3ee2350936ea82fef716bc58e4cd088a384616f0 data/create/loot_tables/blocks/spruce_window_pane.json -111a3bb893abb899652a923b10ca7dc5ea424e5f data/create/loot_tables/blocks/sticker.json -8d2970acd61b96844a4308d87e858b1612d5862e data/create/loot_tables/blocks/sticky_mechanical_piston.json -ec2889e712702644092197a4b41a682fb953817d data/create/loot_tables/blocks/stockpile_switch.json -3479775008a256bc35f98b31655975f7d5c836b2 data/create/loot_tables/blocks/stressometer.json -05e843ca6eb5e299bf41de123977a1045c120ad4 data/create/loot_tables/blocks/tiled_glass.json -e999969f05d2625e61757aa82092d232b99f6e0a data/create/loot_tables/blocks/tiled_glass_pane.json -7b66ad2c48449bafd0cdbd086ac41218cb73a814 data/create/loot_tables/blocks/turntable.json -028e293b5cd694017962f67dc80dba719f904e28 data/create/loot_tables/blocks/vertical_framed_glass.json -d0156602dd5f4a274c293df67e19374820c72890 data/create/loot_tables/blocks/vertical_framed_glass_pane.json -1afc5ede08e72221e33910603fa7acd0b3c7a2ee data/create/loot_tables/blocks/warped_window.json -f334fd2b9a92b0646674239e7e34e142fe2c5fad data/create/loot_tables/blocks/warped_window_pane.json -2883c63ceb1273009dbf91cb0693756cadf79a1a data/create/loot_tables/blocks/water_wheel.json -6cbc693f915f409bc21c6084a4f75071bd660f7b data/create/loot_tables/blocks/weathered_limestone.json -c1f379baad36a20fc767be094db10480a0378184 data/create/loot_tables/blocks/weathered_limestone_bricks.json -43be7e49b9a8a75077066aa824a0f784aa741683 data/create/loot_tables/blocks/weathered_limestone_bricks_slab.json -c2a62f12680d04ed4f586c501bb026e367243dd2 data/create/loot_tables/blocks/weathered_limestone_bricks_stairs.json -1b1016be0cc0bdf599f3e6b84c6663436e8d5835 data/create/loot_tables/blocks/weathered_limestone_bricks_wall.json -2500dc22c1f8793053d223958a5763a0f9554874 data/create/loot_tables/blocks/weathered_limestone_cobblestone.json -8b5e676938d5b356054d336e1716944178d35a42 data/create/loot_tables/blocks/weathered_limestone_cobblestone_slab.json -a89f425c47c3831071b556697169a3124370aed7 data/create/loot_tables/blocks/weathered_limestone_cobblestone_stairs.json -e8f3af61d9a2fd1ff5b32c9bb474ed005e6d70c4 data/create/loot_tables/blocks/weathered_limestone_cobblestone_wall.json -54358a64639957cc66ffa5296ff45723f7adf00e data/create/loot_tables/blocks/weathered_limestone_pillar.json -e3969f1c5966c4992b3280a06e1d6c5000c37df5 data/create/loot_tables/blocks/weighted_ejector.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/white_sail.json -969eda31556feb5a68e350762848d17453275fee data/create/loot_tables/blocks/white_seat.json -79fe374f8e677088f928a3a49ff5eeed6128d165 data/create/loot_tables/blocks/white_valve_handle.json -941ea78ea7c0f0061c3d3569ecea333ae6a16bf1 data/create/loot_tables/blocks/windmill_bearing.json -728c8719e653825c030913df94ce845fdc6d79b7 data/create/loot_tables/blocks/wooden_bracket.json -28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/yellow_sail.json -37ead431a278928a09b260ae06a448e2c791a73e data/create/loot_tables/blocks/yellow_seat.json -899bb208908a2f9bec5e544ff47526f3e24db720 data/create/loot_tables/blocks/yellow_valve_handle.json -94661e726b3d19271550359ae898a5590939512e data/create/loot_tables/blocks/zinc_block.json -37248ca92d474e440b91c27e3c8e78e568328100 data/create/loot_tables/blocks/zinc_ore.json -b65bac8bc2fbfd476040c1aab1c0588b8bd59ebe data/create/recipes/acacia_window.json -35b4da9c14da60584c32e959efc2223f64bb3ec2 data/create/recipes/acacia_window_pane.json -57fc55848415db3e9b74e2cc2f6dacfb1b13a6cc data/create/recipes/andesite.json -96bb0bceb7798c96d5cf9b9c24b8ef822080cb1e data/create/recipes/andesite_bricks_from_andesite_stonecutting.json -01867b07039615dc69bad1b9fd217a1d86e69062 data/create/recipes/andesite_bricks_slab.json -376ada0e08cc797c705c22ec35fe54baa5f24efe data/create/recipes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json -c5af0b289a80e863bdc63bd048a667da738d8555 data/create/recipes/andesite_bricks_stairs.json -7909f6c160263b0ebf0b7078f5593f61304d339c data/create/recipes/andesite_bricks_stairs_from_andesite_bricks_stonecutting.json -ec38ebac57252c1236f071309e588f48b39c2357 data/create/recipes/andesite_bricks_wall.json -38983792eb1f8e1c189a2eeb5113f48e014774a8 data/create/recipes/andesite_bricks_wall_from_andesite_bricks_stonecutting.json -c0cc57304d2082913fc596aa273ef83525ddc615 data/create/recipes/andesite_cobblestone_from_andesite_stonecutting.json -518cadbaf9372b6144b91be1bd80770ddbc42948 data/create/recipes/andesite_cobblestone_slab.json -dbed532f975d4cd9b12bb7331520aa6a7ab057ec data/create/recipes/andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting.json -4ed1069d4c484990e73a638d5d70c4b2b102b8eb data/create/recipes/andesite_cobblestone_stairs.json -bb88bb3c7656adb5159910c6c03a0b0d908ff10d data/create/recipes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json -555386a3e6d29110aadb762eb1b0a3622c6680b8 data/create/recipes/andesite_cobblestone_wall.json -51fa768e66043a7f5629b19b0bc7a4e95281037f data/create/recipes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json -a961cdd11e807bc4658bbdba6c278801b5981234 data/create/recipes/andesite_pillar.json -dcdad7a04838ef202b42f84a15243e3d2472b14e data/create/recipes/andesite_pillar_from_andesite_stonecutting.json -2b291b77860254b7ba8500cf2199a04ca1fca7b5 data/create/recipes/birch_window.json -288d80210f7efb4664e2e9c9d9111049863e5f60 data/create/recipes/birch_window_pane.json -a4a9159c349dba7269c6b32c481f1df90b9e805a data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json -adb384440f91411692689707d5c767c1065ac06c data/create/recipes/blasting/brass_ingot_from_crushed.json -c21420fbf2080dba5f95bdc9a19743ba09e1f1c9 data/create/recipes/blasting/copper_ingot_from_crushed.json -c6f0509618f703f1a48313e46d934bd862096699 data/create/recipes/blasting/copper_ingot_from_ore.json -d9021504be855cd2d4d91503a82b84233052adb0 data/create/recipes/blasting/gold_ingot_from_crushed.json -f2307aa01ddf7accb3fe19c4d3f9b46dec1acf97 data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json -8315c188802bd64f7226a9e942be45173112c7ac data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json -a000546cea7ea3fcf7fdd741d367d3d2da744871 data/create/recipes/blasting/ingot_lead_compat_mekanism.json -368fd45a8e9d5d2fc0e1f8af1ffb48984b85601c data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json -d167828a4fe3a20d765831c1df433fc3c8efeab8 data/create/recipes/blasting/ingot_osmium_compat_mekanism.json -9b5a388f0f8a3a8fae9e6bbf6460913b7c1f6fe7 data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json -7997e66e5e7aebe2c6da764902d78e3bf5f4c530 data/create/recipes/blasting/ingot_tin_compat_mekanism.json -ba7498521a1e07b9bd46ec230d952fb232eaaba0 data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json -ee290750b334b7996ba856a8f66f4948346c99f6 data/create/recipes/blasting/ingot_uranium_compat_mekanism.json -69cda0f54c47cd44c296608cc379db855602410f data/create/recipes/blasting/iron_ingot_from_crushed.json -0fae477ff5d1852ed7c36d5a94aa25c96604da5d data/create/recipes/blasting/lead_ingot_compat_eidolon.json -65a44735ffa0c3e471a1df30b987d8c3cf1764fc data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json -aeb345e5b4c266ac9e2ef6929b153cb535468d01 data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json -606b46f5af59d7bd71462807ceb95edebb09a07e data/create/recipes/blasting/lead_ingot_compat_thermal.json -91691cb14043e8222c38a18bb103f874b39d30b1 data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json -bd26be2cc7044537628e10ff057a7ce78b720025 data/create/recipes/blasting/nickel_ingot_compat_thermal.json -a99be7aae1706cce96a3b6fadd38295bb53d10b7 data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json -3419a88787e331d59e0da8b9084d8c8a72a84ec0 data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json -88ee97cacce93436dcb6d2cb37219435bcaaf3cb data/create/recipes/blasting/silver_ingot_compat_iceandfire.json -84b73c8ef561ab0ecc2954cd86160595975811d6 data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json -3ce20049c90fc3ce446efac1d166b5e1b2855980 data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json -c49e88f38ad624a56865bb293e2b81da09ebdf37 data/create/recipes/blasting/silver_ingot_compat_thermal.json -44a31af2877854f1b22691eb9b0dd831f80628f0 data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json -dd44cf0e09b1b34b4d2c254ab3d10d05a02717aa data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json -539c30c3c06489815b0a356735a0dd42ac432b26 data/create/recipes/blasting/tin_ingot_compat_thermal.json -363e231126694b3ed8dc539b9dfb1c949bacbf5e data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json -70b58fa5ee4ca088f5cd9d4bce2853b1bbf98780 data/create/recipes/blasting/zinc_ingot_from_crushed.json -397a2b5d5d3b072066c3d7a9546769560e4674a3 data/create/recipes/blasting/zinc_ingot_from_ore.json -339bcf4a9c4e7b36c15970aa671af8620703b23e data/create/recipes/campfire_cooking/bread.json -8851b4a339f22bed4da120c3e34d1f32120d0d66 data/create/recipes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json -66937d62734328f4bff6254e6755b3490d4dfa16 data/create/recipes/chiseled_dolomite_from_dolomite_stonecutting.json -74f565a44400c4abd7b5d6073830b9b46dd71fc6 data/create/recipes/chiseled_gabbro_from_gabbro_stonecutting.json -c323b106e88b7de77fea71ff12494abdbb818d15 data/create/recipes/chiseled_limestone_from_limestone_stonecutting.json -da9a919b476954c1de34826aa7706bf6056a8f12 data/create/recipes/chiseled_scoria_from_scoria_stonecutting.json -09faa4ddcf9f3907dcdb3ab3e8b68c1deb2486e5 data/create/recipes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json -ca137d5bce3b5f10069041657fdf630529d06bda data/create/recipes/compacting/andesite_from_flint.json -f7879d404d7a848d818278b4e788f285a9087e63 data/create/recipes/compacting/blaze_cake.json -27c23592d8fec03072a04544d3598ca9b1c798ff data/create/recipes/compacting/chocolate.json -7b2ef15dd28d1d8a450ea49a82dfb361d1adde4c data/create/recipes/compacting/diorite_from_flint.json -7657603e95ccf83dd0d4b104635db66e531d092a data/create/recipes/compacting/granite_from_flint.json -30030b15caa11b3a7c0104adb62fe74e8c7c0df1 data/create/recipes/crafting/appliances/copper_backtank.json -9ad82ac5ce02654b7af7f1a570a6b2c01e140da3 data/create/recipes/crafting/appliances/diving_boots.json -813081c6421b34e161ec44e8e470994c282f76be data/create/recipes/crafting/appliances/diving_helmet.json -19526da3a59fc136654ff1bc93c0251581f397a9 data/create/recipes/crafting/appliances/dough.json -7b5f863dda3d05a79cb85943a178eba0bd8a7dc7 data/create/recipes/crafting/appliances/slime_ball.json -b159ba84428eee6ef6e23df1766f2a18f2c8a63e data/create/recipes/crafting/appliances/tree_fertilizer.json -660e92da2b1b6698b1c0df74bd74a56a25fb3eca data/create/recipes/crafting/curiosities/minecart_coupling.json -fcbc04d0a7eaf820a74bc7e4736a4a581e0a9dff data/create/recipes/crafting/curiosities/wand_of_symmetry.json -cc56d21a25286a9024e506dde9fa161230eaf46d data/create/recipes/crafting/kinetics/adjustable_chain_gearshift.json -88de51b451469698665b7319e5b9cfb9a87ae3e0 data/create/recipes/crafting/kinetics/analog_lever.json -cf1f3a6306d47025cebe153cf05949ef69ccbe5a data/create/recipes/crafting/kinetics/attribute_filter.json -059d12526529b2896ed583555373afa31839a0de data/create/recipes/crafting/kinetics/basin.json -dcf98e667d321fb4bd9fa6dfec7927a84cdbd5d6 data/create/recipes/crafting/kinetics/belt_connector.json -1123903a11b13448b61cf8f8a5dc2e8013d39ac0 data/create/recipes/crafting/kinetics/black_seat.json -a6243a671bf852a6f92e1927e234ecf23b1c903d data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json -c237d1cd362454b25d3756e742c4a2237b5ec2db data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json -0b747fc291b86fa14f86569160d56a48a15c69d3 data/create/recipes/crafting/kinetics/blue_seat.json -30240bae036699b8c9404893983cb7b70332159e data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json -249c1f67d8b56262d286a027d50023e5d672b1c9 data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json -23fe800a45e81a08eb0aa732c5cb52e4e8ebfe86 data/create/recipes/crafting/kinetics/brass_hand.json -c50077a130bc43cd3659faa02ce95789399478b2 data/create/recipes/crafting/kinetics/brown_seat.json -a3c99b38fc8896c9971a5e9dcbae747786ff610d data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json -43233c87cfb80d57345a561c3dd2646c8d3c0d8a data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json -860796dce8756c4cd234f18bbe52108f3b2254c2 data/create/recipes/crafting/kinetics/cart_assembler.json -abf8a28b4b8ae4ba15beed938736ef3a5a7b27ff data/create/recipes/crafting/kinetics/chute.json -a80e3eabbeba2931d0d58dd9492018a0d78da8b5 data/create/recipes/crafting/kinetics/clockwork_bearing.json -501ad764d087b40ce36f3d4256b0d5ee25b2081e data/create/recipes/crafting/kinetics/clutch.json -e46bcc6778ff5118252fe6371ef817ae1302253a data/create/recipes/crafting/kinetics/cogwheel.json -11fe2ccc11f470e5735c3e848a944f889697ff73 data/create/recipes/crafting/kinetics/controller_rail.json -3093be508f6597eee2f3230cd9072f12d2821a6f data/create/recipes/crafting/kinetics/copper_valve_handle.json -886caa21481e62d44d70fd103f8d29f9bac64d60 data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json -59db5170cec390fe6c20a27d6154deebe044580c data/create/recipes/crafting/kinetics/crafter_slot_cover.json -cc2ab4b619aa55c03db18b67a62e12b6089e7019 data/create/recipes/crafting/kinetics/cuckoo_clock.json -f11892864a26c4ba79eb46d890a1a4bd96a1ad93 data/create/recipes/crafting/kinetics/cyan_seat.json -8c35fd379244f72f73e1be6115ed8f5f5484f599 data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json -dc62d932f6a3723e050cb043fea233efd685f775 data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json -ad1c3ce1e98b8483512bdd754f2e5930c7b3ae85 data/create/recipes/crafting/kinetics/deployer.json -be86df1c4d7af14bc5dcfe044d07c03b6c6d2a75 data/create/recipes/crafting/kinetics/depot.json -9c5d30f25a130d591b924c50e5c83e3b787c2758 data/create/recipes/crafting/kinetics/empty_blaze_burner.json -73cd487885be8d5190f24319b4a927b8e34c21cd data/create/recipes/crafting/kinetics/encased_chain_drive.json -b07496e4ba5bc56a2c5a395b612c68ba21328867 data/create/recipes/crafting/kinetics/encased_fan.json -0dd0cc11eaa6789fc612af3231ed247893852178 data/create/recipes/crafting/kinetics/filter.json -f4ae37f736d06ccda5fbba7831a7a174ec916a05 data/create/recipes/crafting/kinetics/fluid_pipe.json -86ad4d2820e8e2b01de8d977af7796119dfb7430 data/create/recipes/crafting/kinetics/fluid_tank.json -3dad2a849796df268cd3a06ed37376f2cc529957 data/create/recipes/crafting/kinetics/fluid_valve.json -84153bd478c0e63a04c77579d6595043f604b7ab data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json -9e75756423b7f9372a2330a7140f80b1b87bd30e data/create/recipes/crafting/kinetics/gantry_carriage.json -21095a156547d4a7d215964be793f1e960b81c09 data/create/recipes/crafting/kinetics/gantry_shaft.json -5eb05cdf88bccdaddfe7ebfbd8b70d1196d422a6 data/create/recipes/crafting/kinetics/gearbox.json -b5da8c58f6b8aba525ae8a12ad906db37b78a566 data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json -4d4124b4f1df38d892cb19da19c6464522d3e37d data/create/recipes/crafting/kinetics/gearshift.json -5b07af1b09125f874500c3fb140efda90061a19e data/create/recipes/crafting/kinetics/goggles.json -beb7715310352988d5a58d1b39c62f02544795f8 data/create/recipes/crafting/kinetics/gray_seat.json -14e8927183f91c09a2d96fd68d1a722d192b29e8 data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json -b7fa20d10c0e0e7270b1c0d6f3881b8e25b39bea data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json -9899501f18e7f3452d4ab4bf658079ab414aa176 data/create/recipes/crafting/kinetics/green_seat.json -6f65a84e00f25d956a6ae834678ff781569b243a data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json -63edaccace961a65aa7bd406d36894c7ca4816b8 data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json -9f08bdaeec88e04a43c2dc103869f9648deee079 data/create/recipes/crafting/kinetics/hand_crank.json -d10639b0c3999481531fe0a9383a1bb4af60225e data/create/recipes/crafting/kinetics/hose_pulley.json -f4fbb11ef55f3431bd387f3f6f258513bfbc8011 data/create/recipes/crafting/kinetics/item_drain.json -237541c1c318b8426734c1c43be31fbd01413d39 data/create/recipes/crafting/kinetics/large_cogwheel.json -a33e3301fc6d3a446e61a1c4b8a93aff079baeba data/create/recipes/crafting/kinetics/light_blue_seat.json -958bb5d3aeb8d8e5dbf5d97cf5fd9ff5151575dc data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json -df1942d27ce3d0548872fe39d3cac24af3122b61 data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json -9531407075ad027e01063aeabc40ae3e4c100df3 data/create/recipes/crafting/kinetics/light_gray_seat.json -fb66f55b31a60f2168d3b9e80a56ecadebb1db75 data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json -e78fec9814d6d0c5c4669c17a8f4d86979972624 data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json -3e18f619a50c1e5fabd6d3acc6d029e4cfec661f data/create/recipes/crafting/kinetics/lime_seat.json -d214afbd44e580f5fd1ebb4f16f07ffe34d87cba data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json -505a6d895319b1c73509045ecf5d9dc4e8554cde data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json -61332f88f51bbd465ee0da879e706b994710d949 data/create/recipes/crafting/kinetics/linear_chassis.json -9bf76daab65d048a135d70db522989ebc77ccaf1 data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json -d7d96071874a87edf7bbdcf7a462f95a130d2991 data/create/recipes/crafting/kinetics/magenta_seat.json -5836881feef8fa8b18e4cceb9c3a9a2748b8cf3a data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json -2ea43d6527dcb734578067ff442ec20395b0093b data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json -f3f3d484de6411652472db0ca52c612c23f81278 data/create/recipes/crafting/kinetics/mechanical_arm.json -946389078db31de69a7dc4fec5feebddf48dcfc3 data/create/recipes/crafting/kinetics/mechanical_bearing.json -a5c7aad0d86cbb66b8688d295e62547da4a2ce0f data/create/recipes/crafting/kinetics/mechanical_crafter.json -4372830100d39c4a89ff397a62b01940e1a28cb3 data/create/recipes/crafting/kinetics/mechanical_drill.json -0972ab663a9f51ffc63463ee7329efe516321fbb data/create/recipes/crafting/kinetics/mechanical_harvester.json -431fd34eae60e5af6afd0f9a7afb6cb513d828b2 data/create/recipes/crafting/kinetics/mechanical_mixer.json -ac9003ad3320fe2009c1793a3c6e86bdf20ca832 data/create/recipes/crafting/kinetics/mechanical_piston.json -8a2f9068d6fab81f46699f897e619461ca89e38f data/create/recipes/crafting/kinetics/mechanical_plough.json -ce8e269907aae5549cea04141bd231f4a20e6453 data/create/recipes/crafting/kinetics/mechanical_press.json -5a685078d3c9d7dbe68080b7b6f2a44fc41582c5 data/create/recipes/crafting/kinetics/mechanical_pump.json -ce28bcb47a379976d4a1bdfcfd1cdd0bae0bcdae data/create/recipes/crafting/kinetics/mechanical_saw.json -353146e9501096b4cd9632ad5500b0a2406c6f5d data/create/recipes/crafting/kinetics/metal_bracket.json -58d9046e61eae40958181388186a35dc07cc9a59 data/create/recipes/crafting/kinetics/millstone.json -13fa2887d3c988973c9222ce5e2e3dd0d9bd8374 data/create/recipes/crafting/kinetics/minecart_from_contraption_cart.json -be4c7fdb0ba1e9ee6d3dcf200dc2718ad83ec8fb data/create/recipes/crafting/kinetics/mysterious_cuckoo_clock.json -99935fbbb83fe102454096a2dcafe09d572d9ad3 data/create/recipes/crafting/kinetics/nixie_tube.json -6b1b626394d7269a6861a836992ccdb344b6e7dd data/create/recipes/crafting/kinetics/nozzle.json -9c41cd91a0716d591ed6d1b5128ec731b418850f data/create/recipes/crafting/kinetics/orange_seat.json -a8da214f0a521be1204b669f118348a142bc9a3d data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json -2fa6b1dd7fe3c8d5bb60345d6b7c5213a54d7e31 data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json -af871a02d363a619fff8e9dde753aa417b265a80 data/create/recipes/crafting/kinetics/pink_seat.json -840dc5aac716e3d1b79883e8db4bf56f2dc427f9 data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json -7e73bcde2b599f1ae5a241dd707c8ab6ce8c5a6e data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json -5399c3496a90bed9428c48fdd334ad4f763cbf9a data/create/recipes/crafting/kinetics/piston_extension_pole.json -a8e996bed77d3d20725f9d592c250392b3adb106 data/create/recipes/crafting/kinetics/portable_fluid_interface.json -7ed5699349faf2981228769c873057105a5ea3ea data/create/recipes/crafting/kinetics/portable_storage_interface.json -16199a6729005a279854cb1838401f6e73bdebae data/create/recipes/crafting/kinetics/propeller.json -76ba751b65d312d1b34229d76fff2111b593091a data/create/recipes/crafting/kinetics/purple_seat.json -e6c462d64e1de9c7fca95f9c9a25b8d1575979da data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json -9332957af2e72dee5fc78abcf1995773e08f7561 data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json -af84b939ced1c0254a27469f857f571afbadc4f6 data/create/recipes/crafting/kinetics/radial_chassis.json -1059f08b016e1c222f13bd9976d0fcd8fc982619 data/create/recipes/crafting/kinetics/red_seat.json -0827e86e4b5f9d7023ccc19922bcbbaefd5b42d8 data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json -5a10019d23726940152e26af3239d55d16bc7880 data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json -af525e135eb927b64462120d201ecae7a7ec61ed data/create/recipes/crafting/kinetics/rope_pulley.json -e9f1597d40f62c2247b319303f375f0da271346f data/create/recipes/crafting/kinetics/rotation_speed_controller.json -d0d7fb94621f6f02fa3137666f20e677022d9d5b data/create/recipes/crafting/kinetics/sail_frame.json -66922e18791c87fadb7629cdf32d3dd2f50ccd13 data/create/recipes/crafting/kinetics/secondary_linear_chassisfrom_conversion.json -a17db27e61baa45f8a6ecb46a6d2a5a464704f8b data/create/recipes/crafting/kinetics/sequenced_gearshift.json -2e36438665bfb97265fd4e6ea85505970eae67fd data/create/recipes/crafting/kinetics/shaft.json -683c9e128a976282eaa6cdbbee3914e4c66b1676 data/create/recipes/crafting/kinetics/smart_chute.json -319e75dc4be645efd4809dafc1331581a8022e93 data/create/recipes/crafting/kinetics/smart_fluid_pipe.json -b1a74f0b51fa37ca1ed814266b3d69b8b7e69fa3 data/create/recipes/crafting/kinetics/speedometer.json -8d632845deeb723e1a56083536ee5f9d60de2fcb data/create/recipes/crafting/kinetics/speedometerfrom_conversion.json -eea9d4066cd2fafef40b50b79323dcc603fa6388 data/create/recipes/crafting/kinetics/spout.json -e532a5c405e48b415e3fcd4f7c6183ea335cb915 data/create/recipes/crafting/kinetics/sticker.json -3be40664acfd150d0617bc138dc2dd9d54a21b3a data/create/recipes/crafting/kinetics/sticky_mechanical_piston.json -af5854ee2fa3be195ad9abcdeebe6ed7306b651c data/create/recipes/crafting/kinetics/stressometerfrom_conversion.json -21f885a674603367b67e1e993c175638cbda9ea3 data/create/recipes/crafting/kinetics/super_glue.json -8494f5fcd85a740fa0f0384e3522d8cdd905ce49 data/create/recipes/crafting/kinetics/turntable.json -057c889b0a306f44b8835c896663154ccd9ff12f data/create/recipes/crafting/kinetics/vertical_gearboxfrom_conversion.json -4fb009b86a51b2e259bd1f73848803f6276dd820 data/create/recipes/crafting/kinetics/water_wheel.json -06b5b371ae9dd81df8fd3dee6d3559b1ed0db35c data/create/recipes/crafting/kinetics/weighted_ejector.json -f508d510576c93712e7f5265345a32e8818bbf0d data/create/recipes/crafting/kinetics/whisk.json -d80a741d2f0d4f742217b43d7e4d37f003ec9f9d data/create/recipes/crafting/kinetics/white_sail.json -f4d88aa2edea548d29cf2678a111d8bb5db7720a data/create/recipes/crafting/kinetics/white_seat.json -7e0d276cd56f04f35d02c25810bffdf8fc297fcd data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json -4d3890621caa0bdbb752a395c1f5761dbbc1121e data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json -8508255518d3718a0d8c2f536f69ffe9ed48a855 data/create/recipes/crafting/kinetics/windmill_bearing.json -d11eee4005372b1d0fad283b28c8016d823b5e37 data/create/recipes/crafting/kinetics/wooden_bracket.json -3ec8bb5660656f1c676035d8ba5460462c1d1865 data/create/recipes/crafting/kinetics/wrench.json -5579e58473474c4e59efd1ee39ddf0140d66b618 data/create/recipes/crafting/kinetics/yellow_seat.json -f055d233ac7ee9eac840a658afa01bedd793ff38 data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json -19c5c8bddeec51c9b47183c728e9ec4313c54410 data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json -3f6f3a547dc06c9462da880360f29b49ac3f5e2a data/create/recipes/crafting/logistics/adjustable_crate.json -c465151b64381e2222203bf069b717435fdc2b26 data/create/recipes/crafting/logistics/adjustable_pulse_repeater.json -34bcdffae0b104829161c86b7d161068f890daa2 data/create/recipes/crafting/logistics/adjustable_repeater.json -fc75c87159569cb6ee978e6d51b0c3b0f504b5de data/create/recipes/crafting/logistics/andesite_funnel.json -660e824ab6042c145f02ffcfe95a34c38f113e19 data/create/recipes/crafting/logistics/andesite_tunnel.json -9b4e74f9a950191134d978bf45c3339212677b0d data/create/recipes/crafting/logistics/brass_funnel.json -2ae06df0357c494b53db0ddf9655c60ef2022d0b data/create/recipes/crafting/logistics/brass_tunnel.json -8559045b42abd99490fb9a3cf5d06b08fd014b38 data/create/recipes/crafting/logistics/content_observer.json -a32ac53848862837f3044ff9c81ed62c1134fe4f data/create/recipes/crafting/logistics/powered_latch.json -660eb73bcc66c1528cbd4d4204ad6b771f4bd721 data/create/recipes/crafting/logistics/powered_toggle_latch.json -74b8a38d252cce564cc63db2ade41ed2d656d025 data/create/recipes/crafting/logistics/pulse_repeater.json -739f0d8b7f98a5639ed37f7fb8ce474d5e6ba0c6 data/create/recipes/crafting/logistics/redstone_contact.json -bc511f7c225750743ae3e985502fa65beb1e7b8d data/create/recipes/crafting/logistics/redstone_link.json -10b16358664f2bb8a11589ef8ba3d69ee8d3b9fc data/create/recipes/crafting/logistics/stockpile_switch.json -0dc99b8a8c68d6a9250c3a1167ffb565be9622ec data/create/recipes/crafting/materials/andesite_alloy.json -8bb306454795fd6a2066152717c169e0e8aaf480 data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json -1e54883620660cb5562d8354de0e49bcca81e470 data/create/recipes/crafting/materials/andesite_casing.json -fa23f8ff9f43ed39a70a86d0c9080102d57d14b6 data/create/recipes/crafting/materials/brass_block_from_compacting.json -94bbe2869e4926d7b8df8a73f3cd41e86d0da6b0 data/create/recipes/crafting/materials/brass_casing.json -6a7d69e7e6abeb643f3158c575061e3edac01421 data/create/recipes/crafting/materials/brass_ingot_from_compacting.json -7e10c06f4d77b17efb03252801d9fe189de8aefe data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json -49c263368f8c02509332654c0ce97b7472d45cd3 data/create/recipes/crafting/materials/brass_nugget_from_decompacting.json -a51337920f2e261101179201c13dcb1b6ed28934 data/create/recipes/crafting/materials/copper_block_from_compacting.json -9ef75592334f5c72c889cdeb5280b6b9220b6d45 data/create/recipes/crafting/materials/copper_casing.json -67ce2cf2f99d053a3b36abaf8c466b2b58cca195 data/create/recipes/crafting/materials/copper_ingot_from_compacting.json -e0912ff39ab4e94f390b685ef873d6326a637abd data/create/recipes/crafting/materials/copper_ingot_from_decompacting.json -6fdd6922da25a4f7b50e0213b2203f6ae4c64784 data/create/recipes/crafting/materials/copper_nugget_from_decompacting.json -7cd3500890430496381cb56c432a233f78b21a25 data/create/recipes/crafting/materials/electron_tube.json -9c9e40ffd41ce46c65113080a92ff9b4f27e5fab data/create/recipes/crafting/materials/red_sand_paper.json -7ff4df8c25b7647463a88dfd5d750a5562d5015c data/create/recipes/crafting/materials/refined_radiance_casing.json -7eb292bc564de70227f4bf947050bcdbfc5a8d67 data/create/recipes/crafting/materials/rose_quartz.json -5ca47ec1bca9a5ce28aabd9868b74b71c829ca07 data/create/recipes/crafting/materials/sand_paper.json -12c6ce7a1d229575fefffc449907fd285a6acecd data/create/recipes/crafting/materials/shadow_steel_casing.json -e1ac783d1f8fd96a1dd1088cf736e95ee3f7b025 data/create/recipes/crafting/materials/zinc_block_from_compacting.json -06cc0ec46bc5a7d2e98dbd4ece82d451c5f79de9 data/create/recipes/crafting/materials/zinc_ingot_from_compacting.json -fe1d69b1e33d5748eb3c0ea732b8d67e2d612203 data/create/recipes/crafting/materials/zinc_ingot_from_decompacting.json -4b66d8769b6a7c5c294e2affd0dad4b3c70be62c data/create/recipes/crafting/materials/zinc_nugget_from_decompacting.json -83eb4279cce9bddd89afb939ee75d47e0aae7ceb data/create/recipes/crafting/palettes/copper_shingles.json -575e01de24b4a8327c6b140627096d6364707ec5 data/create/recipes/crafting/palettes/copper_shingles_from_tiles.json -48e6a00e9bddc8fd930278294d2cfe8fbf266b2d data/create/recipes/crafting/palettes/copper_tiles.json -fe95f8f5f15edb0a5ff8da5a4757c9f8910b51bd data/create/recipes/crafting/palettes/dark_scoria.json -0b7acc249bed992387aa9702a2c05836ecf584df data/create/recipes/crafting/schematics/empty_schematic.json -5c47ac2e2b596439a684126fef7265f13de2379b data/create/recipes/crafting/schematics/schematic_and_quill.json -9fb943be76c51a24aa9d8a09de5b7bd17b44ab08 data/create/recipes/crafting/schematics/schematic_table.json -1a810338ea15ab5ac2f37e87579c56f72b2b371b data/create/recipes/crafting/schematics/schematicannon.json -4629d9a1a8a98a6b5b8b82c4507ca9e321c3a210 data/create/recipes/crimson_window.json -72cffde4281a1e34d77aa91c847e811833b68f21 data/create/recipes/crimson_window_pane.json -18ece8e366b73d19950f9a5a5c93a92c857da2e9 data/create/recipes/crushing/aluminum_ore.json -3da7a3cdb84f44e259b5399a94ddfbf94ebebd37 data/create/recipes/crushing/blaze_rod.json -5878767e89be5a522b8f28d6a2d7b2f8566cf0dd data/create/recipes/crushing/brass_block.json -b83ef0af844ca068e0353330b8273bace5b6a8c3 data/create/recipes/crushing/coal_ore.json -da4ed79975391ec9f263869936b84474f1f727d3 data/create/recipes/crushing/copper_block.json -b576c6e51e5b6a0623e024ac90cdf4d3a9265e4b data/create/recipes/crushing/copper_ore.json -4c482db5575b74b4111800602d7fce22b2e6d32a data/create/recipes/crushing/diamond_horse_armor.json -28ba8cf655bd11bb6c600cd862b98349c812915f data/create/recipes/crushing/diamond_ore.json -e1bb927c62c59f5bf5063bd110da9231de378a1f data/create/recipes/crushing/emerald_ore.json -b26b1f0dccf2ffb194ce12173890a83e93369b39 data/create/recipes/crushing/glowstone.json -274ee397285ded906792a0a19e54faefc496a931 data/create/recipes/crushing/gold_ore.json -55c0656723bd5a87089965651fe268b2d2956771 data/create/recipes/crushing/golden_horse_armor.json -7ce0637578ab3198de54ac74111b6d458eaf08bd data/create/recipes/crushing/gravel.json -a7c97582bae243ab04ff5ff9914b24af25d40d59 data/create/recipes/crushing/iron_horse_armor.json -9ad2394a8835c0d59edd699d646ae64b266612f3 data/create/recipes/crushing/iron_ore.json -5be5d90f862da95d9fd15663b71bff126fd04441 data/create/recipes/crushing/lapis_ore.json -62e2768ae8f0de8d2e50a0916d4961f7836b5f04 data/create/recipes/crushing/lead_ore.json -e870d049abc5cd5f389f70414c67e76ddc14060d data/create/recipes/crushing/leather_horse_armor.json -2bc66f89a751a440c93de5f1d28d54f9b5a0da77 data/create/recipes/crushing/nether_quartz_ore.json -6e424d7e9f7d8b585384053a713db28f9d36448b data/create/recipes/crushing/nether_wart_block.json -8003e7db3ee11066b365c251f04f84028820de94 data/create/recipes/crushing/netherrack.json -7b4c7587374fb77088f226187771de520ada548b data/create/recipes/crushing/nickel_ore.json -dd4b9e88a723f6c3f2456f36ef2354cd86d85433 data/create/recipes/crushing/obsidian.json -4a71aea480a6e6dd844c452155af1c30d70c5c09 data/create/recipes/crushing/osmium_ore.json -5e057c5e46f744fb63d9c1d51c113fd2bb95bfb7 data/create/recipes/crushing/platinum_ore.json -67197bbbb9667ab481410d21cb014bf9ca71ea60 data/create/recipes/crushing/prismarine_crystals.json -d068d6b1c0ffddf989188b826cf948e997af184d data/create/recipes/crushing/quicksilver_ore.json -03874de476273de5aab8758f23d1ae638847843b data/create/recipes/crushing/redstone_ore.json -8d2e8f0f24bebc920430de9f187536e42c952608 data/create/recipes/crushing/sand.json -2583968bd8227c0aa464741e2b5716367acd1536 data/create/recipes/crushing/silver_ore.json -e288b431c6a313a637cdc6208137faa17f6d8c4c data/create/recipes/crushing/tin_ore.json -307f30eb1180bca140572d08951c06b01a85beb0 data/create/recipes/crushing/uranium_ore.json -b6b97f139ee0a06a4ec1ed9f43e1f845b3c502d3 data/create/recipes/crushing/wool.json -967bea8eabac8fab8de547ddd6670230f400c111 data/create/recipes/crushing/zinc_block.json -0c9692950385949ba605065b6fbce32a75f9ee8a data/create/recipes/crushing/zinc_ore.json -86b1e391fe567ad1ca9f27c963e16c2f6e6b3bc9 data/create/recipes/cutting/acacia_log.json -3601e7100d6de215a524a12c641b5111c95d314c data/create/recipes/cutting/acacia_wood.json -68687da80b9dc7ea69729b0e16d3e75efed8679a data/create/recipes/cutting/andesite_alloy.json -08e2da1149421b9edffdd227f40f6023d7e8ff0e data/create/recipes/cutting/birch_log.json -f3e6a435ccdfac3da0482e0eee825f75485370dd data/create/recipes/cutting/birch_wood.json -7d9e56b0dc595052fbdcca6bad0375cf937146f6 data/create/recipes/cutting/crimson_hyphae.json -0c877153c4e080cf1c9a07247e7f5b59e7cfc9a8 data/create/recipes/cutting/crimson_stem.json -8d71bb2524538a0d8fd044427cf7134bc2b31d8b data/create/recipes/cutting/dark_oak_log.json -bb4c6b1ef57e5aceeaf8c1840e880e671788256f data/create/recipes/cutting/dark_oak_wood.json -f0eb32c6d9f7a5a78f08ee6ac3b97f70747c89f9 data/create/recipes/cutting/jungle_log.json -f218210af2282903968f84df77b16cac7a9d244e data/create/recipes/cutting/jungle_wood.json -fd565e84aff897968be805c03623757c11ea57ed data/create/recipes/cutting/oak_log.json -2bf4234c994073addb7341fa1ef8b721572dde37 data/create/recipes/cutting/oak_wood.json -2cd588872f6bbf63686a92a12735aa65d1960fe3 data/create/recipes/cutting/spruce_log.json -5ae29d81388c3d0d7966e703b6e9463ea58221ef data/create/recipes/cutting/spruce_wood.json -9f14b915695407155fdf806b1e5ecf91e0860c5b data/create/recipes/cutting/stripped_acacia_log.json -c7f0e3b7a46676ede1ed775ec8aa8b969e1fe598 data/create/recipes/cutting/stripped_acacia_wood.json -4c657d8ff753789853c8d705fb5ae01caeef5cc1 data/create/recipes/cutting/stripped_birch_log.json -53f47375955f65844c077c8bb06a9eeb67e0b53f data/create/recipes/cutting/stripped_birch_wood.json -c2d6c83bb3144c6013e169de8f54c5f380ad094f data/create/recipes/cutting/stripped_crimson_hyphae.json -affb6d0e171d77a6a27fc83b1a916eb95ed89516 data/create/recipes/cutting/stripped_crimson_stem.json -9cab5363d43559823d4679da0a64a0a603983cb6 data/create/recipes/cutting/stripped_dark_oak_log.json -c63bc7d8a81b3499390de84fc49d726c9018896d data/create/recipes/cutting/stripped_dark_oak_wood.json -e923bfbc5d9b02e020693378723b4d55fc60f79a data/create/recipes/cutting/stripped_jungle_log.json -2dba1962f0a267d72444ec448432b81143fc42da data/create/recipes/cutting/stripped_jungle_wood.json -ff68462a712267db1f1124d37a4877217edd5c85 data/create/recipes/cutting/stripped_oak_log.json -84ffcff96d79f88012bceae0e346da6be4da9802 data/create/recipes/cutting/stripped_oak_wood.json -2b5f34ba42521004f999140056c997b07acde4e9 data/create/recipes/cutting/stripped_spruce_log.json -6c3776c4d4190dba4f70d1f6995715002b37b3a8 data/create/recipes/cutting/stripped_spruce_wood.json -135e9d58965c5715eb6c34a637714f61b38714f7 data/create/recipes/cutting/stripped_warped_hyphae.json -f3c2cd996214e92e95e452d0f6e86ada59e65c78 data/create/recipes/cutting/stripped_warped_stem.json -a022f2d541f04a9e2bed6b72af4e74703076fcbe data/create/recipes/cutting/warped_hyphae.json -1bd01df5540df7db06afde28a3f9ebe4d25e4001 data/create/recipes/cutting/warped_stem.json -f2c317e03ac4d42fb631e1625607061e10c480fe data/create/recipes/dark_oak_window.json -d9dbae6e237eb38e53a619a0f1b339fca7c59b4d data/create/recipes/dark_oak_window_pane.json -2ff8ac7eaabef52dcb173d7af388c28307559aaa data/create/recipes/dark_scoria.json -55596a590962e3ddd40949917661f0bd94408274 data/create/recipes/dark_scoria_bricks_from_dark_scoria_stonecutting.json -2489fc29c47d3c9cb63f5f2f09dc79ea1ca1728e data/create/recipes/dark_scoria_bricks_slab.json -86f4d54ebcc5bc8786c72167395d8efee833744c data/create/recipes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json -471d1883452978264af939ccac9b6845ffd569a5 data/create/recipes/dark_scoria_bricks_stairs.json -136967d1939b95f5cc75072eaa17ae47dc89fdad data/create/recipes/dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting.json -bacfaa195752d5688d29eaca78578e51c379aa7f data/create/recipes/dark_scoria_bricks_wall.json -fd94541b20370d88177c798fb4f3e173e5ecd9eb data/create/recipes/dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting.json -a45731bfbe8cf6d036e24d71617ca77c2e91ebe0 data/create/recipes/dark_scoria_cobblestone_from_dark_scoria_stonecutting.json -3f00c98949d2a9ee7057c75cfaf10f693d7afe4f data/create/recipes/dark_scoria_cobblestone_slab.json -f1d783d94c378d3ca81531996dd220c01559b4f3 data/create/recipes/dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting.json -d6ca23af29947b474c28987bb8a4b488bfa78363 data/create/recipes/dark_scoria_cobblestone_stairs.json -4758fca3e1888ce298e5c173c62097631843e0fb data/create/recipes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json -f3a72b45daef00035ecb17b9cd7f8985a5f9e9ef data/create/recipes/dark_scoria_cobblestone_wall.json -0f2c14d40ed9013d45e331000ea03d39430f9d22 data/create/recipes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json -31b7e65165cb0dbcd95362a81905b19fe4282cf3 data/create/recipes/dark_scoria_pillar.json -681f45f03b15dc1a8a72cf72042e725d3f0cc7ef data/create/recipes/dark_scoria_pillar_from_dark_scoria_stonecutting.json -0871ced2a434838e2db8f3df85af84b0cb4e40ad data/create/recipes/diorite.json -25c0fe29d1c2cedcaf21fac6cdfcce45dbf810bf data/create/recipes/diorite_bricks_from_diorite_stonecutting.json -ff4a8687bdff339a10e0b813788bca272332abd9 data/create/recipes/diorite_bricks_slab.json -7c49a389f9222fdfd6653d9fbcb1ca05bf207aa8 data/create/recipes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json -04dfda7e1c02d35a862d5b5974f0e3dbdb7c57e7 data/create/recipes/diorite_bricks_stairs.json -ec6ce026ef13455f384882f5caa49c80dcc39c3a data/create/recipes/diorite_bricks_stairs_from_diorite_bricks_stonecutting.json -e2900dad086daefc7ed843da6f2fe0251b5d9c21 data/create/recipes/diorite_bricks_wall.json -5e80ca479cff8471ea9a08676bdbd04cdcaecbf5 data/create/recipes/diorite_bricks_wall_from_diorite_bricks_stonecutting.json -e8909c42980f4ede1dc8fa46c8b80fb63da0a64d data/create/recipes/diorite_cobblestone_from_diorite_stonecutting.json -f2c95f81b6effb2ca310fb38ee3bbe7eccb3615d data/create/recipes/diorite_cobblestone_slab.json -5df48e568e87ed7c39d0ee4c860d309ab4d5b97f data/create/recipes/diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting.json -24263c12b2a53af6beeb0e7cbd8e6865773b88d0 data/create/recipes/diorite_cobblestone_stairs.json -119741ea88d16a468b5e814459b30981d1212419 data/create/recipes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json -f764471aab017775e0d7a6d43a9e36b186db3ac2 data/create/recipes/diorite_cobblestone_wall.json -d3628d5ce836d3b9072be3d4cf30416146cccad2 data/create/recipes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json -d69d767a77ae62f8e53342dffda4c627906439d7 data/create/recipes/diorite_pillar.json -3019172274fdfcc606ad0f5569db433913231c28 data/create/recipes/diorite_pillar_from_diorite_stonecutting.json -2f1bf27611c640ec454be0e73ed75f596a4f1add data/create/recipes/dolomite.json -6ee0f10522f4acfe554e4743fa2ba1d8297a12f2 data/create/recipes/dolomite_bricks_from_dolomite_stonecutting.json -88a9b8e89e67455a9c4f1c3dbff813a3c3bd1609 data/create/recipes/dolomite_bricks_slab.json -3adfb9924ada35d58275533425802b4829f058ac data/create/recipes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json -13ceb35e0adb6b08958544b89f8d6fa339696d8e data/create/recipes/dolomite_bricks_stairs.json -587deb3d09ff77318d36ec10af67371c141d54e0 data/create/recipes/dolomite_bricks_stairs_from_dolomite_bricks_stonecutting.json -6deb71ec498c99622bf9951e112ef65e38f22522 data/create/recipes/dolomite_bricks_wall.json -8796b485e75cfe021573b1d9d5ef45599f4296f6 data/create/recipes/dolomite_bricks_wall_from_dolomite_bricks_stonecutting.json -a371be60d1ae1bd3f789a140a623d89839256cb1 data/create/recipes/dolomite_cobblestone_from_dolomite_stonecutting.json -abd5079de42a905674cc722d89cfab2d6871bb67 data/create/recipes/dolomite_cobblestone_slab.json -1dd9dd521b281581b203bb08351cc3d40c0bbe5f data/create/recipes/dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting.json -ddda28bb6efc43b7e3149756daf53e1664187283 data/create/recipes/dolomite_cobblestone_stairs.json -94de6eeb72977050e6c0b73edad6e46681d2a9af data/create/recipes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json -0e5f741034bac11c6005410dc559573536201e77 data/create/recipes/dolomite_cobblestone_wall.json -500ecdfdcf34e9d26256948e206aab4f0b79e659 data/create/recipes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json -ff39e629b242ae91e23aec86b0a1f757dd938305 data/create/recipes/dolomite_pillar.json -b4a8d14d9a20e812e0acb691b5b511a87e8b0576 data/create/recipes/dolomite_pillar_from_dolomite_stonecutting.json -d81ceba2946286d374801e698a4ca2116395cbad data/create/recipes/emptying/builders_tea.json -20b7c7c62fa2e33199e08188dd8836844a6d9cfd data/create/recipes/emptying/honey_bottle.json -28a0f9a45671de2e6db19fa66374e245feeed142 data/create/recipes/emptying/milk_bucket.json -0e11aa1accb71ed62e212f23a7069b7b7b4e8119 data/create/recipes/fancy_andesite_bricks_from_andesite_stonecutting.json -8b86fc9a9416adeaab3f26192a73a481887675c3 data/create/recipes/fancy_andesite_bricks_slab.json -c7b762b25c7a6705dba3e922e981be851ac4f36b data/create/recipes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json -0a9904d4f88187a8029ed2ddebf23b3b83c430f6 data/create/recipes/fancy_andesite_bricks_stairs.json -13395eb48bdeca3c49b805d0cfa6e3fd86281a10 data/create/recipes/fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting.json -1594c042f121377fb2b458e6191dff9a2ca1226a data/create/recipes/fancy_andesite_bricks_wall.json -6462def9d5aba9d9a1696c46a2eea67a69c96344 data/create/recipes/fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting.json -9f33ce41d7f18430afbe6a1c4d5fc02fe06ec453 data/create/recipes/fancy_dark_scoria_bricks_from_dark_scoria_stonecutting.json -18ead8c5d5426ef04c31b381c7c084c76c09fd7c data/create/recipes/fancy_dark_scoria_bricks_slab.json -64239d4d243873d674bd9aae7e8f33bc7bd49b72 data/create/recipes/fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting.json -275c6078576d15dc00da42af97bb92750b8a4951 data/create/recipes/fancy_dark_scoria_bricks_stairs.json -6507a4d4d88883caafec7ee3b83b2eefd6d7869b data/create/recipes/fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting.json -34569b4c4a4847e7aae75a3ac090196813dcb612 data/create/recipes/fancy_dark_scoria_bricks_wall.json -6b75c3559fa97fa857de59a1e8b26a98bd582506 data/create/recipes/fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting.json -2cc2b560341ceb2b5d30c25a00bb8549b0dd32cc data/create/recipes/fancy_diorite_bricks_from_diorite_stonecutting.json -74f83f0bc12746171a62e27b3073d2ffa11d66f7 data/create/recipes/fancy_diorite_bricks_slab.json -ab577c2f0ace690d8334c09cbe3079da3568603a data/create/recipes/fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting.json -251748e90839169cd9e7b1b0cf9ddf926a8ee73c data/create/recipes/fancy_diorite_bricks_stairs.json -af23b733b76e3a1d0dcfa69d1153aa7827ead0fa data/create/recipes/fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting.json -a7f4b307a84f817228893caf257d07ff118026c6 data/create/recipes/fancy_diorite_bricks_wall.json -d0c75c36c90619fe78b13c00ee807fbf3a49cd71 data/create/recipes/fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting.json -7ff2a8503f752d07ac447a636c4f13c44c536b9b data/create/recipes/fancy_dolomite_bricks_from_dolomite_stonecutting.json -e37d7449b6ba57c2440ef4a91d4f98c65d06ef3c data/create/recipes/fancy_dolomite_bricks_slab.json -18c31b4e2dfaefacaa3a8b614f7a322197f59221 data/create/recipes/fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting.json -45228000ec1dff7db39e1b3733cadc2d83222c52 data/create/recipes/fancy_dolomite_bricks_stairs.json -cbf50f1b606a14b59b127e8192089e2b54d6632e data/create/recipes/fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting.json -744168a01a04ee317ec170b0b80f758a00387124 data/create/recipes/fancy_dolomite_bricks_wall.json -46d3f924f2b0b580a257303d99edaba23380f534 data/create/recipes/fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting.json -f2c48a64e4f384cfa69b7c60b0561bc5611d0d64 data/create/recipes/fancy_gabbro_bricks_from_gabbro_stonecutting.json -43368bb227a5c8d3c3b78e65b98a41c10767dd3b data/create/recipes/fancy_gabbro_bricks_slab.json -32a77ff3471fc5a88c5492ef6eb4aadb796648ce data/create/recipes/fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting.json -0388082c982f32858865e2de20c6e088d3c4377d data/create/recipes/fancy_gabbro_bricks_stairs.json -1a47b2f3aedcd98b3ca88f2a0889572e46e794a8 data/create/recipes/fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting.json -5cdbf50d7ae2a4581b29596e56c4bed54bcd60cf data/create/recipes/fancy_gabbro_bricks_wall.json -d0027afab8d9beaabbf5812d92bc3b01abd14047 data/create/recipes/fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting.json -5fd73258b8d78e35541809e38947da8231cc7b93 data/create/recipes/fancy_granite_bricks_from_granite_stonecutting.json -e2454812e7d81c4c952948cfdb65944107c54988 data/create/recipes/fancy_granite_bricks_slab.json -67a0375b3fb68dac3460b39fcd4b250e8f600176 data/create/recipes/fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting.json -516568feeacb1ddd80d6f9d75f452704e8fc1167 data/create/recipes/fancy_granite_bricks_stairs.json -7b6b684b62a81ee4f912590bea46fe61d8ff16ff data/create/recipes/fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting.json -623bc299de4d60e138034c1f94db969bea60244d data/create/recipes/fancy_granite_bricks_wall.json -c8c07ff10ff7388422c8ad2343180e341a9322b0 data/create/recipes/fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting.json -58d8db7cd064c9ec8e3baeb4ee6d3e45f13e4aa8 data/create/recipes/fancy_limestone_bricks_from_limestone_stonecutting.json -2aa411470b1ff2c469a6a75fbfd31fe1a3e0c61f data/create/recipes/fancy_limestone_bricks_slab.json -621e1c5408fc144fc63da8d52a61c7d73f4ff7b1 data/create/recipes/fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting.json -93ea6268c9506edb52ebf6434b34b3664fa7a09d data/create/recipes/fancy_limestone_bricks_stairs.json -e7c974e24144f85b1fea80dafd5bd4215584462b data/create/recipes/fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting.json -898e9cbdd86cc44ebab36a34fce01735b469e40c data/create/recipes/fancy_limestone_bricks_wall.json -3d34e5a588a3e3d3de17fca617b158e36d5c6b3d data/create/recipes/fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting.json -f9b9dea5e973f100d5cd3080740dd574ac0981ac data/create/recipes/fancy_scoria_bricks_from_scoria_stonecutting.json -cbe79cd606b595938ad7607e1b5f19820ab4d003 data/create/recipes/fancy_scoria_bricks_slab.json -1596333d32a1eb6ea282992680e550cc9e62bf65 data/create/recipes/fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting.json -b61539b7d3d3fbd12d576ce62c64700bab51b29f data/create/recipes/fancy_scoria_bricks_stairs.json -0e62dd47368f6e8f779c3f18bc2a24de43623252 data/create/recipes/fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting.json -d56c72aaa827b4f59402fc47521dcd0455f002b6 data/create/recipes/fancy_scoria_bricks_wall.json -afed7fdc479a3510fa92501675643f266933ee0d data/create/recipes/fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting.json -bd355332d17adcb0460b1d43146ca288efb78395 data/create/recipes/fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting.json -015e8fd3011cc7b6db64b62ec19d4dccc2a1e58b data/create/recipes/fancy_weathered_limestone_bricks_slab.json -76fe30c9b84f6d7d2210996fc7a522935cf36af3 data/create/recipes/fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting.json -3359e9f3a5190b6c0639b6e648fee50bc06d3166 data/create/recipes/fancy_weathered_limestone_bricks_stairs.json -d2ab9ce73636773165564506580f2ec13bd1fc50 data/create/recipes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json -36947f27d2b2e57b00440fd5acd06a7554e5a387 data/create/recipes/fancy_weathered_limestone_bricks_wall.json -1d0e41ca98e48073c72adf4077610c96e592f9a5 data/create/recipes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json -133e79f78a7f2c2f63ac7695d2be57d56e8955f4 data/create/recipes/filling/blaze_cake.json -642e96ce5dd2f31e7a33c6ef4060eecb0bf2aa86 data/create/recipes/filling/builders_tea.json -1367357fc36adc4b67467d90589ef91e657380a4 data/create/recipes/filling/chocolate_glazed_berries.json -5bec6c2068a3c1005810d18bd45ce916389b5423 data/create/recipes/filling/glowstone.json -5eb6227ccb6fa940b662d3ec029c3bd61fe61c8d data/create/recipes/filling/grass_block.json -244f27eadefefbc966ac384ac087c57d19484321 data/create/recipes/filling/gunpowder.json -c8ca74a6cd071308a1750a2ad1153e79422598a0 data/create/recipes/filling/honey_bottle.json -d20703b67dd5e4c9b75718db02d575b1c7415c12 data/create/recipes/filling/honeyed_apple.json -c83e77a9799b6ca34dd73aa76b56159f2103c48c data/create/recipes/filling/milk_bucket.json -08ce1420d1551ecfef5988977436c087123851a6 data/create/recipes/filling/redstone.json -fb8e4378cd2240644a4b5c0d06e27ad772ec7695 data/create/recipes/filling/sweet_roll.json -5b8bbde7f8b270ab75fac18d6858f2fadbc0efa3 data/create/recipes/framed_glass_from_glass_colorless_stonecutting.json -d697de0c9b706ca4e18da7a2d769e7e5fe8d769d data/create/recipes/framed_glass_pane.json -147e7a160b82c8128f8fa7c3c6e7f7d652b89a36 data/create/recipes/gabbro.json -a0dae50faaa1b7142bb4309675e3084c68daa547 data/create/recipes/gabbro_bricks_from_gabbro_stonecutting.json -a19f047fa8507e994eb026795c86bc10ff5c373b data/create/recipes/gabbro_bricks_slab.json -84d83643f7987864eca0e2ca7cda4330ad9f1f86 data/create/recipes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json -7254ce767a38462ac9f175ebc9814e20f41a9a2c data/create/recipes/gabbro_bricks_stairs.json -60804fe6f0827d6128ff957850d465e7a0dbda46 data/create/recipes/gabbro_bricks_stairs_from_gabbro_bricks_stonecutting.json -0b864591d74db18aa3436b225933a1e5d6147241 data/create/recipes/gabbro_bricks_wall.json -f5aefaf797566e8d1608f6ce2cb12b424e8fed88 data/create/recipes/gabbro_bricks_wall_from_gabbro_bricks_stonecutting.json -4cefbfd6db877fc636de1468e3a4edcc8cf632c8 data/create/recipes/gabbro_cobblestone_from_gabbro_stonecutting.json -b83eb36d80138a1a92bcc3f8c738ff3a1260a2b1 data/create/recipes/gabbro_cobblestone_slab.json -073095d26cb265459fd04ad00e6075aa783b9f54 data/create/recipes/gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting.json -ad96ac7f096bd042729bcebe4e135ebe25a25243 data/create/recipes/gabbro_cobblestone_stairs.json -f7407fd04cfe7558d53c44cb33dfd8ff8a736ae3 data/create/recipes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json -73c4b5ad4677a380cc904bc6f82537bfe2713713 data/create/recipes/gabbro_cobblestone_wall.json -8171880f4374f9102949b85e9a17e0b313caf3a6 data/create/recipes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json -6e52667c2f9ec62a95ba27676fdc07a8222f1746 data/create/recipes/gabbro_pillar.json -da3743119130ef0946b05b21a84c2fe5926dccd5 data/create/recipes/gabbro_pillar_from_gabbro_stonecutting.json -dc21523e591068eb5df7b287c9eef7b773b7d5d0 data/create/recipes/granite.json -5664bad03fce4a4724e8fd21c9c02ca6ae900df9 data/create/recipes/granite_bricks_from_granite_stonecutting.json -1c5265828318670a11bd1e439b6a6005edb37487 data/create/recipes/granite_bricks_slab.json -0f460bda24ff799a9ef948933cfb50ef038739d4 data/create/recipes/granite_bricks_slab_from_granite_bricks_stonecutting.json -eb0ee969784d6d655589c84c72bf276c745df4e1 data/create/recipes/granite_bricks_stairs.json -5dbe6ab9bb6cbdf828f731ea87d6000fbe5daa60 data/create/recipes/granite_bricks_stairs_from_granite_bricks_stonecutting.json -da89cd42c12e5da506e9b35be446896d8f7333b9 data/create/recipes/granite_bricks_wall.json -b06a6ba2290d2a12a7774a6b6978fff10c982d72 data/create/recipes/granite_bricks_wall_from_granite_bricks_stonecutting.json -ea30ea610474af708e34042ae1b2af30014fc432 data/create/recipes/granite_cobblestone_from_granite_stonecutting.json -26f1b09623e93372471a653f384eadf3bb140a8c data/create/recipes/granite_cobblestone_slab.json -6a5e9afa1bdc92dc4ba73479ba7ed3bb18bd9f11 data/create/recipes/granite_cobblestone_slab_from_granite_cobblestone_stonecutting.json -99847acc7c4762e5976213e5c82402d8fdf1f0c9 data/create/recipes/granite_cobblestone_stairs.json -fa02e54eaa63121998593403736ecbe86ae03518 data/create/recipes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json -5626c6c9c764c364daf74e3b0db4b8dbad5a7ca2 data/create/recipes/granite_cobblestone_wall.json -c84f7bfa2d901684dbc7c0afa133a9c87e6e9975 data/create/recipes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json -41ba9d3b7b1b0eb99a61d69774ccc0490804e5d1 data/create/recipes/granite_pillar.json -d0c541bbefb9f3f861ae5751645493c8e1687b5c data/create/recipes/granite_pillar_from_granite_stonecutting.json -05908d48b6ac0c117da0b4b9ae4ae5e933ed900e data/create/recipes/horizontal_framed_glass_from_glass_colorless_stonecutting.json -4e8d49934f9899f788d45d4347bfc085b2836699 data/create/recipes/horizontal_framed_glass_pane.json -c3ccd16b7fe9878cc734d699b4c8b219ad556f46 data/create/recipes/jungle_window.json -76dab06d0bda78c4247f76d6a849e1aa083fceb1 data/create/recipes/jungle_window_pane.json -fc00b0e336c45698df1f94ad470f9941e19b0e24 data/create/recipes/layered_andesite_from_andesite_stonecutting.json -7d66cee5fc4b1f4a94d05ada6ec731bb3a788d0e data/create/recipes/layered_dark_scoria_from_dark_scoria_stonecutting.json -938b2805fbed7a68afe26e4cf9b20ac5d3c3a91f data/create/recipes/layered_diorite_from_diorite_stonecutting.json -a50ba6bd628a3fec6ccbfd38a8bfb78c3b3bc3eb data/create/recipes/layered_dolomite_from_dolomite_stonecutting.json -b49c314e171f31a39f38aabad767d8d3be613602 data/create/recipes/layered_gabbro_from_gabbro_stonecutting.json -321027b7062a70243b7f24149186630d05f8943b data/create/recipes/layered_granite_from_granite_stonecutting.json -9712031277020c39e8e643690a6a968c5e275a75 data/create/recipes/layered_limestone_from_limestone_stonecutting.json -fdfbe941eb56a98c3d28639154b7bcd4dcc66dfa data/create/recipes/layered_scoria_from_scoria_stonecutting.json -cc070e83594b20cf697aa5dbb8c4e09dbf576d00 data/create/recipes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json -90253fc317a2551c50da7693df4a60e8543d2d64 data/create/recipes/limestone.json -3b43347da62a69c6e76e6a0261f840f46ff90038 data/create/recipes/limestone_bricks_from_limestone_stonecutting.json -aed4b037af6921e9337213dc09a215ab7a18adde data/create/recipes/limestone_bricks_slab.json -7222e1f13c6aec69ea37c84b4aca3e2322ef00d2 data/create/recipes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json -9480a9b8e8aa733df42f80486ce1f251ded417bb data/create/recipes/limestone_bricks_stairs.json -206c116313d0b906de969dd7ece9da82be05d45b data/create/recipes/limestone_bricks_stairs_from_limestone_bricks_stonecutting.json -cd5faabca5e37a2394bde992a4247d925256eff9 data/create/recipes/limestone_bricks_wall.json -08295b9cdfa322ea65368152b7f195825742b99b data/create/recipes/limestone_bricks_wall_from_limestone_bricks_stonecutting.json -5415fb299442e19c38eb883427338aa60aa77d72 data/create/recipes/limestone_cobblestone_from_limestone_stonecutting.json -385b7a83c7f4a0e2a8e2467b3a0ebd31be8744b9 data/create/recipes/limestone_cobblestone_slab.json -4862f534ee6d4638dd47fd344fdaf567a5e840ed data/create/recipes/limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting.json -d583004ff53d2af07c7c21886fe4beacdcd7015f data/create/recipes/limestone_cobblestone_stairs.json -cb5adf8b68b745b4a0addc04c41fa21ae68808cd data/create/recipes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json -bbf64f7eb3868e354756e57348493e2b1ae6b0d9 data/create/recipes/limestone_cobblestone_wall.json -88fa2b1ab746d5e13a8afd6e7e7d80ad843e0016 data/create/recipes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json -327bb8a6535b60bb65d0dda9d5205e988bc82526 data/create/recipes/limestone_pillar.json -c2e15ac0c9109bad3face6d13efc32d7116b4c25 data/create/recipes/limestone_pillar_from_limestone_stonecutting.json -88173753ceaf121c5430bbf928a40e3c046dbfe0 data/create/recipes/mechanical_crafting/crushing_wheel.json -357cb3a50ebedcc347396c5cb26a04eb4bd96fea data/create/recipes/mechanical_crafting/extendo_grip.json -de7fea84434753873dfa2b929d9b5f5f86ac6a5c data/create/recipes/mechanical_crafting/flywheel.json -e491fd8a8873308270f9dc2a57ac8f2c70431dcc data/create/recipes/mechanical_crafting/furnace_engine.json -ce17f8ab6e051f45a12e55f1642ad1b8a0f8510f data/create/recipes/mechanical_crafting/integrated_circuit.json -98f877bf8f3f8a686fc6cf7479a0fba5744248ce data/create/recipes/milling/allium.json -8c7e1cbc87c7ca7df2bf949957e89422fef8ad94 data/create/recipes/milling/aluminum_ore.json -bcff4d30ae09a0729bce8b2dbde4ddd6719a998b data/create/recipes/milling/andesite.json -ac3f1c92115a113a1ea7e5543c1e061e3d2a0b36 data/create/recipes/milling/azure_bluet.json -95d673bb272d273c2ad25bf01723dd978642faed data/create/recipes/milling/blue_orchid.json -25d008621c461a1f6fef0e45913dc8654c645ea3 data/create/recipes/milling/bone.json -8c09dc48b3e3c3c6bfdc4ed7683bdee860802172 data/create/recipes/milling/bone_meal.json -c152f6ae0c5bdcd4eaf3e714864a318f462b64a0 data/create/recipes/milling/cactus.json -b8eff5bcc773a7ce75146423e5997ee24f69a92c data/create/recipes/milling/charcoal.json -e34c20506e9054da0e3b22fb27a093222eeb9a9c data/create/recipes/milling/clay.json -ccce7e6d1ab703d6567046b9c99c254e8baa88f7 data/create/recipes/milling/coal.json -851e4f3b84f431003264bc902a3351b6d769c897 data/create/recipes/milling/cobblestone.json -929d5c69bfd4eefc33766954e1ed7cbc284180b6 data/create/recipes/milling/cocoa_beans.json -a1d947988d0c31be6a7f86db255328d704c90bda data/create/recipes/milling/copper_ore.json -31da5a1a6cc6f6cf90bf091d968d8b6f8555b292 data/create/recipes/milling/cornflower.json -623c1a134f8ce6b7d52476b6da8e8d210dba7bb1 data/create/recipes/milling/dandelion.json -62652b87e4f6435be9900afd4725e7a5782bc9d1 data/create/recipes/milling/diorite.json -28bad3c34cf0f5e20c48486c15130f6c552a93ec data/create/recipes/milling/fern.json -9acaae7f887c815a5d2195e4847f276161e94fec data/create/recipes/milling/gold_ore.json -51d692a94c69e10e3b77542f9cd98500104d5a42 data/create/recipes/milling/granite.json -6f9d6891b2bc2e6f1dc24a7802f9a0f7982e9d20 data/create/recipes/milling/grass.json -407a82fb6ca49d8e6159b0e900f856021b1dd771 data/create/recipes/milling/gravel.json -7932570ab897c0afe71ca368372f7628cb2c9b31 data/create/recipes/milling/ink_sac.json -b73e22d4234fa32a649c57d3a83a1b9c8f89f358 data/create/recipes/milling/iron_ore.json -b2e80b5752eec591f4110f6a5fc5e052aeecab78 data/create/recipes/milling/lapis_lazuli.json -1720439fd1c8eb808d1a1d29510b71860afbdec2 data/create/recipes/milling/large_fern.json -63e4d80308ac542d36e82a4689267fce4d8c86bf data/create/recipes/milling/lead_ore.json -3c8a3b3d8c91e107c2ff64b2115f5cf94197fc91 data/create/recipes/milling/lilac.json -f2a7518eeef43052785dff6c3bf305c8c74c4789 data/create/recipes/milling/lily_of_the_valley.json -051ccd86b1dc037c7c12a4abde6bd4f7e5bc7bb0 data/create/recipes/milling/nickel_ore.json -5ba9cd55d4a551350b64ecbbff6bfd32e130c00c data/create/recipes/milling/orange_tulip.json -856cb5f8aa2b4c3a292fb71348bd060b4cd5fe1d data/create/recipes/milling/osmium_ore.json -e5f121e244cd0afa2fe3d76a1e15ca9974bee96b data/create/recipes/milling/oxeye_daisy.json -077edce210beb2cbe5e37062b0518be473784dc7 data/create/recipes/milling/peony.json -00c67bfbfc780b0d0343c9d31fda9f477341bc88 data/create/recipes/milling/pink_tulip.json -6b176880d75ab9f7fd80fa175d4c18c129c1dad7 data/create/recipes/milling/platinum_ore.json -47fabce9ae3fbc2cc888697b11e6d48748631ef5 data/create/recipes/milling/poppy.json -c338d5ad841673364d514800074268b83852e944 data/create/recipes/milling/quicksilver_ore.json -ea6fb7e30fa22cd87ff4760288e11f909b78ac86 data/create/recipes/milling/red_tulip.json -bda581c2039f41f7d55527814a46903f10da7e05 data/create/recipes/milling/rose_bush.json -54be62a1bf098a370d315f79068ec326e4f4d6c2 data/create/recipes/milling/saddle.json -8bc6124293f4efb5f2d0fa4a3166c6d00a88a14c data/create/recipes/milling/sand.json -42c5837c16132632da52325cddea3cdbb318e822 data/create/recipes/milling/sandstone.json -87e30347cc28aa5fb2daefae4c25fa81ce92b0f1 data/create/recipes/milling/silver_ore.json -1e14bd30032aab6dfaff5bca50c791332ffc1aaa data/create/recipes/milling/sugar_cane.json -af2beca9f934601ad029f34bad08be3cee07f6b4 data/create/recipes/milling/sunflower.json -949c7aa8f5172c07b0b5ea178d8046ffaac9f527 data/create/recipes/milling/tall_grass.json -542ffcedc9b1467ec41c6f4e162453e76fa1ead1 data/create/recipes/milling/terracotta.json -2af15c24fecb0c25017f23ec74f2f4a343b92c65 data/create/recipes/milling/tin_ore.json -aa0db51304fc877f9670e6c331a94bd38ca853ce data/create/recipes/milling/uranium_ore.json -4f61f0efbd980407d4e0fa1067dd320f01496c6c data/create/recipes/milling/wheat.json -0a598bfc39ad473856887703d7971ba3a70339f8 data/create/recipes/milling/white_tulip.json -19a16516ce26afddef5604b118899a50671a9a9a data/create/recipes/milling/wither_rose.json -eec880075efd6008b604a4b8064d782752b4bad6 data/create/recipes/milling/wool.json -2363962d6c8ad337b1fd9dfb2bd2c82388b911a5 data/create/recipes/milling/zinc_ore.json -b3cc5e61bab40ca6135dc1f706f3ab447e9f78bf data/create/recipes/mixing/andesite_alloy.json -ce9dc7dacb85cb23a7187c19a115b40e597ad36b data/create/recipes/mixing/andesite_alloy_from_zinc.json -3417f9399ce0fb32fc4bce94c772b40d780c9006 data/create/recipes/mixing/brass_ingot.json -ab602a53a5d8d057aad910dd1c5529cde2d587ab data/create/recipes/mixing/chocolate.json -0e29b4ce13750aab5a60ae54cbec8776569b35e0 data/create/recipes/mixing/chromatic_compound.json -d9a3dff1288d675ab812eef1eb73cb27dcc71bd2 data/create/recipes/mixing/crushed_brass.json -cd9a78454bce20cf3557f5c44febae77ebd43e54 data/create/recipes/mixing/lava_from_cobble.json -0f89b3f2d81585591513619b8d1e8694eb874316 data/create/recipes/mixing/tea.json -1998c6f84f871d6da58ec29d729401d18f8f1aa1 data/create/recipes/mossy_andesite_from_andesite_stonecutting.json -89929d9cb11b5c589b2ecfa821c61add1ef7b62b data/create/recipes/mossy_dark_scoria_from_dark_scoria_stonecutting.json -4b8b1191dd3a21294293dc5ad237af89b849df28 data/create/recipes/mossy_diorite_from_diorite_stonecutting.json -f343c547a57df1e26d29d1cbb3ffe1ef2cd14817 data/create/recipes/mossy_dolomite_from_dolomite_stonecutting.json -3cbde30612758159b7f6bff90904e2cd048632a1 data/create/recipes/mossy_gabbro_from_gabbro_stonecutting.json -3cd67b80b2d51d1cae8031b6c248f7dff0866e6d data/create/recipes/mossy_granite_from_granite_stonecutting.json -f4ed015bde948b6330cd00f0ae2d05263d4eaa59 data/create/recipes/mossy_limestone_from_limestone_stonecutting.json -1e5efd72a84b858513cf7665334ddc17debbf6a2 data/create/recipes/mossy_scoria_from_scoria_stonecutting.json -2545b5e7501404df697e3856620a51b63ec8cbfc data/create/recipes/mossy_weathered_limestone_from_weathered_limestone_stonecutting.json -4865d07d0e07e22d41b961f0673041e087df7d5f data/create/recipes/oak_window.json -f06c8d1565a1f4d4914436b21e32d147de868d46 data/create/recipes/oak_window_pane.json -850e67f6f890de9cb8e4c6865aa4ecb8a316c240 data/create/recipes/ornate_iron_window.json -4ef1a7279f8deff6e2fd5fe027ec903694656bf9 data/create/recipes/ornate_iron_window_pane.json -d1cd83af24f6086fdc5e2a50bf43fe4e566afa37 data/create/recipes/overgrown_andesite_from_andesite_stonecutting.json -84691017310f584b19cdc492f0317e116c672390 data/create/recipes/overgrown_dark_scoria_from_dark_scoria_stonecutting.json -a5dde9dbbf0e64cc2079ecfc2bef714b001bf53d data/create/recipes/overgrown_diorite_from_diorite_stonecutting.json -2da9b98576904c989bf4400936fc674db097ab18 data/create/recipes/overgrown_dolomite_from_dolomite_stonecutting.json -97398ac8d96eda316a041ffc88ddbc9a776fda34 data/create/recipes/overgrown_gabbro_from_gabbro_stonecutting.json -baa92780173e406436d9ec1f0322281f497de029 data/create/recipes/overgrown_granite_from_granite_stonecutting.json -efb68cc19159266401cc5ab884212e586dc29e90 data/create/recipes/overgrown_limestone_from_limestone_stonecutting.json -55b6b09f363f2006dee94ad39dedeccb0598a1b8 data/create/recipes/overgrown_scoria_from_scoria_stonecutting.json -bef26dcd24e09ed6e9791df99de86b6eebcb2f6b data/create/recipes/overgrown_weathered_limestone_from_weathered_limestone_stonecutting.json -1497610b8e99e3f631f420bba09997c07b6223c5 data/create/recipes/paved_andesite_from_andesite_stonecutting.json -3426f20650b9ac72a5d1afaa96712a5256943c77 data/create/recipes/paved_andesite_slab.json -91b6ad4ca7a643f5741a0555bda3a8227122e702 data/create/recipes/paved_andesite_slab_from_paved_andesite_stonecutting.json -0f9ad9311c0c48c5fd700582211dcb6d22966e5f data/create/recipes/paved_andesite_stairs.json -ec4062997ebb02f0dfd709f45333f107255ba213 data/create/recipes/paved_andesite_stairs_from_paved_andesite_stonecutting.json -3e4d35656d434639217aaf1fb39bf51d1802084e data/create/recipes/paved_andesite_wall.json -6cf4dd767926475e011a9972a75af6a25fcd16f6 data/create/recipes/paved_andesite_wall_from_paved_andesite_stonecutting.json -87a243fba517a911fc99926739c4518ce73a976f data/create/recipes/paved_dark_scoria_from_dark_scoria_stonecutting.json -34c4290525e160b808e77aeef27c16c246ec664c data/create/recipes/paved_dark_scoria_slab.json -6c5fc5bbabbd40b38f2aa6eaf52116b94b2f30ce data/create/recipes/paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting.json -e2115cb4b2f4879033088358c3d5a8f32af38ad1 data/create/recipes/paved_dark_scoria_stairs.json -04889aa4b526e7f2386b4f6f07c846daec1c6edd data/create/recipes/paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting.json -d08114db883109dc9da7a84584b5d87b4d63d0a7 data/create/recipes/paved_dark_scoria_wall.json -32335784ef65c552bbf679e4faa414d1fd1a34f8 data/create/recipes/paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting.json -a19031440afbf2e93c08b416e1937974415d2f13 data/create/recipes/paved_diorite_from_diorite_stonecutting.json -9217438247650f62b9df022c72f3ce48a021a1c1 data/create/recipes/paved_diorite_slab.json -8362f7271738bbcc51bd1322ed342ae2e837b170 data/create/recipes/paved_diorite_slab_from_paved_diorite_stonecutting.json -7cff89507fa45fdbe60dbd4744c40c3ad59fcb6c data/create/recipes/paved_diorite_stairs.json -1978bcb0dc8b9d1864065a13853b2ed5b3fee9b1 data/create/recipes/paved_diorite_stairs_from_paved_diorite_stonecutting.json -786da65c6559caaa339cb18ed936464356c979dc data/create/recipes/paved_diorite_wall.json -f542866e26ea390b04d52fc2f848c43d4f56c159 data/create/recipes/paved_diorite_wall_from_paved_diorite_stonecutting.json -0c7bab439203680c127de68c469cf301b48b4b49 data/create/recipes/paved_dolomite_from_dolomite_stonecutting.json -d198c3eb0d7577d895773544c06ae98f3da9bb3e data/create/recipes/paved_dolomite_slab.json -3aa094643aa68afcf04ed08274d0180516259b1c data/create/recipes/paved_dolomite_slab_from_paved_dolomite_stonecutting.json -acddf0fb9fe7b312cbcbf7d0270e7f2f8ee6fb8f data/create/recipes/paved_dolomite_stairs.json -3fe979b7197ccbbd1b111a6deaa225a59404943c data/create/recipes/paved_dolomite_stairs_from_paved_dolomite_stonecutting.json -b2de5b85b0f771d6cc4ea7f7a26f5a3330615482 data/create/recipes/paved_dolomite_wall.json -8e68dd0fd5541ff9ceb28abacb05fc398041d30a data/create/recipes/paved_dolomite_wall_from_paved_dolomite_stonecutting.json -132b209951c2682ec37978d09269ff8506c6a0b7 data/create/recipes/paved_gabbro_from_gabbro_stonecutting.json -7234c8b68f58febfd602cb66e9843fe9de8281fd data/create/recipes/paved_gabbro_slab.json -90208da408a9735817f289a0c44bfce000627160 data/create/recipes/paved_gabbro_slab_from_paved_gabbro_stonecutting.json -19de216b47391772fb547619cdd6a37644896354 data/create/recipes/paved_gabbro_stairs.json -40a180ac262296a4fe86883d985f2f859b98fe32 data/create/recipes/paved_gabbro_stairs_from_paved_gabbro_stonecutting.json -6334a275032005ec48fe8f75c9649eda1cf174f6 data/create/recipes/paved_gabbro_wall.json -f0b3edac566b5c58d962120322cc33fbd0ba08b1 data/create/recipes/paved_gabbro_wall_from_paved_gabbro_stonecutting.json -a49df3fa16a75d09f19df4625d812ffbeca32b8f data/create/recipes/paved_granite_from_granite_stonecutting.json -e2abda9b3498b966bd2ad67299fbc3cec6c776ad data/create/recipes/paved_granite_slab.json -6d46326a8528a9d92aaa60d35e336ef0ee62d152 data/create/recipes/paved_granite_slab_from_paved_granite_stonecutting.json -0d2e0c5a2f98b57ffec14758681602e7efe68e48 data/create/recipes/paved_granite_stairs.json -0522b44adad471c2997e73dac55f60812b79dddf data/create/recipes/paved_granite_stairs_from_paved_granite_stonecutting.json -eabf6e8a67df5be460f5f2f67bdf8d7771177be2 data/create/recipes/paved_granite_wall.json -7263491bbdca3b58aaa4cb2969427731051285b3 data/create/recipes/paved_granite_wall_from_paved_granite_stonecutting.json -323d9395aaef33d700d355e7de88217fffbf9200 data/create/recipes/paved_limestone_from_limestone_stonecutting.json -daee9ab598afe8a051d9708cc83c3186494e4276 data/create/recipes/paved_limestone_slab.json -39eb8b265a38cfaa31de94e821da08dc0dc723e9 data/create/recipes/paved_limestone_slab_from_paved_limestone_stonecutting.json -a17e6304ea513508a52c9637997fd1b106d5cc59 data/create/recipes/paved_limestone_stairs.json -94696e5be4ff10f5d535f38b0adb1edf5db560ff data/create/recipes/paved_limestone_stairs_from_paved_limestone_stonecutting.json -8e189b3ada3a9538aa419b4be0367d29b25b6ef1 data/create/recipes/paved_limestone_wall.json -5cde15ebe8cc3a359c9796c170e25f1987d8dd08 data/create/recipes/paved_limestone_wall_from_paved_limestone_stonecutting.json -6d0773e2d7dc6ab1a076fc9260aac36f8cae6307 data/create/recipes/paved_scoria_from_scoria_stonecutting.json -5744b4c159922562f037cd97cb510586d7fbd5de data/create/recipes/paved_scoria_slab.json -562684440f40d975487fb290625a64c5db4fd716 data/create/recipes/paved_scoria_slab_from_paved_scoria_stonecutting.json -061bb8a676a4f613df5501de6f4c9fbf2cf26a5d data/create/recipes/paved_scoria_stairs.json -4932e50c093a6e1da9f8cb98eaf7d40bae67152c data/create/recipes/paved_scoria_stairs_from_paved_scoria_stonecutting.json -8e5ac9208e8d6adfa636d47501b2ad772a95d87a data/create/recipes/paved_scoria_wall.json -afec32d685e7845a8e081f98911a0a05dc77c9ea data/create/recipes/paved_scoria_wall_from_paved_scoria_stonecutting.json -435fbfc17112a12ddb7ad6031aaa6ec5400e98e2 data/create/recipes/paved_weathered_limestone_from_weathered_limestone_stonecutting.json -809d10b264dbba7bb17ff23b826dfda169147bba data/create/recipes/paved_weathered_limestone_slab.json -00b28f6b0eab99a2b91c3db22f9e5f54b0118e3e data/create/recipes/paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting.json -f2a140cbaddefd387fd94f0ce94df763a585dd4f data/create/recipes/paved_weathered_limestone_stairs.json -9f02f552173ae1c85750bb16aa6bbbfb87a5a7f1 data/create/recipes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json -cc4a5a893b10ffdfcc10085323d89d34a1b8f122 data/create/recipes/paved_weathered_limestone_wall.json -d996f6505433a74cd8bdab04c0e0bac1b9a2da16 data/create/recipes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json -c32e1418b17011c8c423d44ee20f2b86e82e7626 data/create/recipes/polished_dark_scoria.json -753c85bfb84a5d31f9670478042321702a589dc8 data/create/recipes/polished_dark_scoria_from_dark_scoria_stonecutting.json -d3c78c504672fec3316b206505c2cb5fc8daf822 data/create/recipes/polished_dark_scoria_slab.json -bcc5a7325b7f7110e6b382e7ad60fc547222d3ad data/create/recipes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json -c7d7e5f39099a71482cdfbebe1ef2dfd508ae768 data/create/recipes/polished_dark_scoria_stairs.json -364d77f01b380bbb0036810f6e0df09773ea8e1c data/create/recipes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json -396b6c97b5e7f608b293dee51be97717c3430bc4 data/create/recipes/polished_dark_scoria_wall.json -62b0769e0208831db822f6d2b986fff6aee60729 data/create/recipes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json -a1561acc26948db5cffc041d85b1d26204754caf data/create/recipes/polished_dolomite.json -da91fd1ccaac64f7ef9737f3c773490d0c0b10d1 data/create/recipes/polished_dolomite_from_dolomite_stonecutting.json -75288e75b604eacfbc19cb51cb4d4759bdeaafa5 data/create/recipes/polished_dolomite_slab.json -9a89eaf5f00d8fb10297de61248f8d11dded8c4b data/create/recipes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json -3b8ff952c40e0ff9cc187b055262ded9125ea391 data/create/recipes/polished_dolomite_stairs.json -e2dce404e4bcde076615ed0d0cf6fab769d441d5 data/create/recipes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json -8f2f4643886d166609b198704dcadb5e87b6323e data/create/recipes/polished_dolomite_wall.json -3b5d553e408a8b6385932e2a8082fcb5bdead0d1 data/create/recipes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json -5873547a8561849a73c0d2cca3faba3e8b65b33d data/create/recipes/polished_gabbro.json -ba3e1444b9d1804411cc9c7536c657806dc37c1d data/create/recipes/polished_gabbro_from_gabbro_stonecutting.json -b7d29a29fde4868b4ceef1437e5d00975068bc58 data/create/recipes/polished_gabbro_slab.json -f7a62c1edc74e54fc0c747f23d7da182d49ef7b6 data/create/recipes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json -4a60779ff57969d960e3dab827ec95f8632b877b data/create/recipes/polished_gabbro_stairs.json -7df6fd466badaa3cef5e2ad0e78bbb3b6429805e data/create/recipes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json -ec70334e13e05cff7e04e7dc6b23be273c235e50 data/create/recipes/polished_gabbro_wall.json -5176a8fe5a48592c7b487518a57c962c24e3e751 data/create/recipes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json -59a01eb264c302fe455639bcafa4afb97de2379e data/create/recipes/polished_limestone.json -0e88c98c9ef0d15523b23b00f8afde71d9d8e3e9 data/create/recipes/polished_limestone_from_limestone_stonecutting.json -135fd40e291c7cfdc73c14496654008da9dd797d data/create/recipes/polished_limestone_slab.json -4ce225832ab45daf6b5bc013c6f8762fdbe9ff0f data/create/recipes/polished_limestone_slab_from_polished_limestone_stonecutting.json -fee3d0ec8d4f27d82acd5d0e3a2a142900e18be3 data/create/recipes/polished_limestone_stairs.json -6780c8bd8747ebb6db7e0adfc486ce00e7e2cf26 data/create/recipes/polished_limestone_stairs_from_polished_limestone_stonecutting.json -44b1f3873fe8150abbacab10ff3cc2033a01b4a0 data/create/recipes/polished_limestone_wall.json -d68a27e463d31ba5eed19181c0335824601b9e68 data/create/recipes/polished_limestone_wall_from_polished_limestone_stonecutting.json -82b5b5fc1d2f789b48a48a7dc846aeb505b0c3c1 data/create/recipes/polished_scoria.json -9d6926822ea6f2bb38ba55204278fe82fd453d16 data/create/recipes/polished_scoria_from_scoria_stonecutting.json -814efd67d3f061d0c0ba104993c868e075a4fd3e data/create/recipes/polished_scoria_slab.json -8696f262927ae55ce72af1a34cae68fd6ccc4050 data/create/recipes/polished_scoria_slab_from_polished_scoria_stonecutting.json -efe648aa4fd0f22faa78c016dbe2d083462e1ad6 data/create/recipes/polished_scoria_stairs.json -ba6dd9ad0c69b088c1a9e33000bd5b9bcedb0ca0 data/create/recipes/polished_scoria_stairs_from_polished_scoria_stonecutting.json -8319042a131a9dcabae016009b807b91c491f8d3 data/create/recipes/polished_scoria_wall.json -bc9a83e7793768723031ff14269e43c83687b9f3 data/create/recipes/polished_scoria_wall_from_polished_scoria_stonecutting.json -d9d188d55d9bb94bceaad8de3ccb02532b021576 data/create/recipes/polished_weathered_limestone.json -73b468de08f3e0542b7020129faff3a40b3fee67 data/create/recipes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json -c0924d72a856c3182b89996a6ceaffd56930c455 data/create/recipes/polished_weathered_limestone_slab.json -1f5503d22859a08eef824d33f6ed48335f66c423 data/create/recipes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json -d51106184083761635fa902c09c45436c414ddab data/create/recipes/polished_weathered_limestone_stairs.json -9d4382462376e85c2627b8150b09acd3b063e347 data/create/recipes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json -7dd58714cf8fc4614ae2e1c2981471da3a52f06c data/create/recipes/polished_weathered_limestone_wall.json -eae06580a0a5f486cde35426716d50fcb3ba5bb3 data/create/recipes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json -9c8b3ec11152820acd5ee99971fd22c1484c8815 data/create/recipes/pressing/brass_ingot.json -4a51cb6066e87613c13bdc6d3427929080ef1def data/create/recipes/pressing/copper_ingot.json -0fa8386648398724f6fd373178b706c6b11ddefc data/create/recipes/pressing/gold_ingot.json -a104ef6eb8872a40ea7b2ef67ae54cec943162f0 data/create/recipes/pressing/iron_ingot.json -7f9e72ec02a9926656744a95066f8aa304514565 data/create/recipes/pressing/lapis_block.json -654e274b07af172c22838d47e0974367c20101d4 data/create/recipes/pressing/path.json -bd57ccc8eb4357b4a5af021db7b806b514cd2558 data/create/recipes/pressing/sugar_cane.json -141173778757d87e7f2e9466bdab6ff1263c8e98 data/create/recipes/sandpaper_polishing/rose_quartz.json -5ab9c8271a9e1d4a863940aeafd1f8816cb37a29 data/create/recipes/scoria.json -d59c68621c78ff5d2c51be4440dea603480efed8 data/create/recipes/scoria_bricks_from_scoria_stonecutting.json -a7a28cf77955c2b4ed3687205dd24162e461aa30 data/create/recipes/scoria_bricks_slab.json -0577ffde98e7a027b21c430cd71cdafdd3cee3a3 data/create/recipes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json -3d4518cc3ea9cfadd6dbfcb38d60f81479649e5f data/create/recipes/scoria_bricks_stairs.json -bdc4ee71382328003362566b253056908e174639 data/create/recipes/scoria_bricks_stairs_from_scoria_bricks_stonecutting.json -8db3d58ada7ff6e8f786134404a9986f4e0c2f0b data/create/recipes/scoria_bricks_wall.json -cbbba807521f37f5fc4b29369ccdcced789fc60c data/create/recipes/scoria_bricks_wall_from_scoria_bricks_stonecutting.json -9bd112689f6ab682abf4a7be5d112e9f93e2096d data/create/recipes/scoria_cobblestone_from_scoria_stonecutting.json -f7b7ff190929ae525297fecb3c116f32fc05fd88 data/create/recipes/scoria_cobblestone_slab.json -9ba4578f0bd402b5af442a4064c61007566c71cb data/create/recipes/scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting.json -21e20f6dbda115545de271e37292bef5fcfacff8 data/create/recipes/scoria_cobblestone_stairs.json -3b761af694be85e5e087d1e4247322dbde37e429 data/create/recipes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json -78d3e625d8657b005fa78327aa318278c4ed1a97 data/create/recipes/scoria_cobblestone_wall.json -a9096822db9d12b6014d6d34e52de5821305c03f data/create/recipes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json -a513468ce4d55fe3b3919bd76ba2bd5b6fac4d4e data/create/recipes/scoria_pillar.json -2e0ecbd3619f080d0fc6fe48307c5a5bcc2e91b4 data/create/recipes/scoria_pillar_from_scoria_stonecutting.json -4e817b521623966fa24186731a70f0e14c03168e data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json -ae90f50589bc06b44765ac8cbb9fbdc2b58fdb32 data/create/recipes/smelting/brass_ingot_from_crushed.json -64cbf425effba00ff2e31d95cffc2be2e0191932 data/create/recipes/smelting/bread.json -68aae31e827e192e28e1f950b0bfdeb4ec1860c7 data/create/recipes/smelting/copper_ingot_from_crushed.json -7fab4012e343cc14137f02f2a051deb813ffacf6 data/create/recipes/smelting/copper_ingot_from_ore.json -c460e8e09340ff3f5b61cfd99137ea3a69de3079 data/create/recipes/smelting/dolomite.json -5cccc708796df044fdd4ed03a12b0432c75af971 data/create/recipes/smelting/gabbro.json -11857aff0104cce17a318e440b6b38cf414f7174 data/create/recipes/smelting/glass_from_framed_glass.json -8097d4c4c67188e48306b3bc26c95813bb66f970 data/create/recipes/smelting/glass_from_horizontal_framed_glass.json -4a370d04bc50fd081fbb33b3de029b92c2c6e9f3 data/create/recipes/smelting/glass_from_tiled_glass.json -28717c180696abf7f57c10b3ba424a4e492ec39e data/create/recipes/smelting/glass_from_vertical_framed_glass.json -daaa640dbfaa86685de636b89afe2fdd74cd0cf9 data/create/recipes/smelting/glass_pane_from_framed_glass_pane.json -3a9d729f22b603f9149d2da78e3eb66c4135a7e2 data/create/recipes/smelting/glass_pane_from_horizontal_framed_glass_pane.json -48bdeff8ca1ae7bf732fc870fb0fa294de56188a data/create/recipes/smelting/glass_pane_from_tiled_glass_pane.json -7035be7cce5a38c794d9cc872801329af81bac46 data/create/recipes/smelting/glass_pane_from_vertical_framed_glass_pane.json -b032c79090adad2262ae94609e0b3747327d51a2 data/create/recipes/smelting/gold_ingot_from_crushed.json -5cd79470a32c77fc7347a04ad2096df08769a59f data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json -ce34f496dca15378b5e4b21c70505e9d1184848d data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json -7a9e989c963ebbb286eb8d7a291e8b6a7a96408c data/create/recipes/smelting/ingot_lead_compat_mekanism.json -428b3981a13c63381115384496d89375e3d20837 data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json -36a8f88fe3a9b09674bbba99a8f41c8ac5542cdb data/create/recipes/smelting/ingot_osmium_compat_mekanism.json -456ec25989f6d882fc931764341d8217386cf9ab data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json -d2ab440819e4534f717315b7a737bcc2883072ed data/create/recipes/smelting/ingot_tin_compat_mekanism.json -7ca0d75c667e171f2abc5faeb96ef17282b130ac data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json -6179556218ef8de57e7a7093498b5c810af9bd7f data/create/recipes/smelting/ingot_uranium_compat_mekanism.json -fe3e4c244c34aa6948243fabd6b42f04f80d4992 data/create/recipes/smelting/iron_ingot_from_crushed.json -e558e9ca1460f081972ad8f7fb98c148548cbb57 data/create/recipes/smelting/lead_ingot_compat_eidolon.json -4a1e8041f44bb36d29ec624fc78bdfd0ac875953 data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json -76433e1605c03dec670d95e9541770c53f4a5aaf data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json -5247ec83241f698e363d676ad1f19070c736f150 data/create/recipes/smelting/lead_ingot_compat_thermal.json -bf0e5df5a88e583e39a4e14b006cbf33b99611e1 data/create/recipes/smelting/limestone.json -6a9ef35f3e5fc37602d887687924547ea77bffcd data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json -76b02e4111687e1013a2ae0d171fb01f5787626f data/create/recipes/smelting/nickel_ingot_compat_thermal.json -86725fc9711c6e7971a4b396aa089ad191089bb3 data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json -92c308baf81fe2c8a63c90b0dfc7cf8cc2183c4b data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json -2c230522bb0946bde6a51442cb15c5efeea99b15 data/create/recipes/smelting/scoria.json -f5317c85a9e10a5f9346e13aef8bb364a5203346 data/create/recipes/smelting/scoria_from_natural.json -893a857a02ef643296473148216da05102a09e05 data/create/recipes/smelting/silver_ingot_compat_iceandfire.json -96c2b799b812e469bb1785200d68c1e8f8cfacf7 data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json -21c5fbce648ca8812d4c75e3c71934bc269e2216 data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json -c01f5fdef7419a2da5e0f24d61637ec35a006fd1 data/create/recipes/smelting/silver_ingot_compat_thermal.json -3e977195d8c825365753eb609e3bccca3302a0a3 data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json -07bc2816c79de888e8f8f5954c6f917f6ab37176 data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json -8d6139a5463119f2930476c429c175e14c7c7a58 data/create/recipes/smelting/tin_ingot_compat_thermal.json -4284a72dcd1819d9a9a644a955d3398d489e10fe data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json -a5d23be4cc959eb47d84b210190abaafcf41f022 data/create/recipes/smelting/zinc_ingot_from_crushed.json -2d8e448bbe841871c5d9a022149c5f34fd5c0df1 data/create/recipes/smelting/zinc_ingot_from_ore.json -ce7c3c6e1da9d6684c9537d1a558423925d89f33 data/create/recipes/smoking/bread.json -6b1d2483fe717657f7188f6490eab2da715609e8 data/create/recipes/splashing/black_concrete_powder.json -1aedfde11712827604bbef34e992c411c0b02876 data/create/recipes/splashing/blue_concrete_powder.json -6e11d592dc9b19c4cd9bf2df2aa46b7ec4d9a331 data/create/recipes/splashing/brown_concrete_powder.json -c22dc50b7c8dea74dae9018506989fa14a340796 data/create/recipes/splashing/crushed_brass.json -d43ec1edc4743dc5a3483c327dc010a12d81dbf5 data/create/recipes/splashing/crushed_copper_ore.json -a1112c785f4571c0a9900288081eb216c729a17b data/create/recipes/splashing/crushed_gold_ore.json -f3b03dd4532086a785d6bbc9de081ab8adf58146 data/create/recipes/splashing/crushed_iron_ore.json -d2d6137fd7a3155263cfffef45f760b99f26f26b data/create/recipes/splashing/crushed_zinc_ore.json -42cee25fabf4f0f9fb4815a98134eaf38ae197d0 data/create/recipes/splashing/cyan_concrete_powder.json -2705d04043f39e4604dd89d8a0ff34ed01548849 data/create/recipes/splashing/eidolon/crushed_lead_ore.json -c4d680eed98791fe45fa93aeeae9e8dbd508d6f5 data/create/recipes/splashing/gravel.json -7af4d9ae50af13da0d4fc814687f9586ff872798 data/create/recipes/splashing/gray_concrete_powder.json -23fb61c0e4bcca58fa7241db9cbef07bf4bd9a9b data/create/recipes/splashing/green_concrete_powder.json -0a15fffe26190b78d2177c8302c92fc2232ce398 data/create/recipes/splashing/ice.json -42e05e89ad9c83bd74ea67878930056ee0491fa8 data/create/recipes/splashing/iceandfire/crushed_silver_ore.json -1c978c74c949e9325a4078f25d8b39ed2d70f4a0 data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json -10ce4f124a8caf28027f4976f49a54561bfb7d18 data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json -ab433eb5d0739ca5932588f48308151d7e0bacc2 data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json -690fe5c0fbdad61827862f21ee3a59dc385a0f93 data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json -0c8391170e5918872b06d371f694fcd72e173c5b data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json -601e460575d3d1f45dca3e259f5a7c2701f45888 data/create/recipes/splashing/light_blue_concrete_powder.json -11792305bc949f08e7c1199ead8430f20848fa54 data/create/recipes/splashing/light_gray_concrete_powder.json -a43d7c9a6369a48ef7d1396f2c11dc1f3704a61e data/create/recipes/splashing/lime_concrete_powder.json -67d97de29a9075a7ba8edb6e47c997b02600557e data/create/recipes/splashing/limestone.json -862f7b68bb107d7c4ecc82ddd10c788eb0a07b03 data/create/recipes/splashing/magenta_concrete_powder.json -004e05fed3684de8603905d9c9381cbbd789a882 data/create/recipes/splashing/magma_block.json -1ac44e66e1999b7127156492008e08e9607b158e data/create/recipes/splashing/mekanism/crushed_lead_ore.json -f627573eefe0353b32d7c48abd7dcbcf13613004 data/create/recipes/splashing/mekanism/crushed_osmium_ore.json -a1828cb3c934c4146008d1d10d04adb80a80ac94 data/create/recipes/splashing/mekanism/crushed_tin_ore.json -751c1d11d19054d514eb99d24a73945236dc9116 data/create/recipes/splashing/mekanism/crushed_uranium_ore.json -ea4a295149091e3b4b8388cb9d4dd2ab509d666e data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json -1ecac82da1ccc381e303dc64e8033c13cf66fb59 data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json -fd1751c804bfc156c7bd97955fabb19f9a4b94ec data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json -123db4bca699bf1d2571727f4b7fcf9d3ef82e37 data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json -625c2d68ad722209523925375bc4f7494667feb2 data/create/recipes/splashing/orange_concrete_powder.json -fb0c5fb2da0ac1fd236b19823747b9c15b536b02 data/create/recipes/splashing/pink_concrete_powder.json -2599fcd240eacdf4ace0dffe64f026d0bb4919d9 data/create/recipes/splashing/purple_concrete_powder.json -9c10bfdd047fb9ac17d51ebdd38bc8be0883d970 data/create/recipes/splashing/red_concrete_powder.json -87ddb764bcff88c12686d171540cea4cc6edaf16 data/create/recipes/splashing/red_sand.json -3a5dea804e0aec6fa8711eb07b006d8b1de098ff data/create/recipes/splashing/sand.json -94eb5e36f8f0f47d1846d6cd21a04f5ad39e4a67 data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json -8ba14fdc6c3ebe54a8b70cedaf0f9951cbd756ed data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json -8a4c5d280c423d1f1272a56abb7cc8cf36bf2486 data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json -fc9889cf6c0594b3635670b85f5cfec628a78537 data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json -14f525e426a5a14a5d5279afe07582896de90a96 data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json -62c8dbed54fac6a95f89f18b6e68ddceb534dbd3 data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json -4140a1f16467dd690e458561871c456f9f826f27 data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json -cf0dcdb8ec3f3e75b315faa377eccef662dea71f data/create/recipes/splashing/soul_sand.json -ba660fe5786c95a359a6ddfdeb73d7109cbebe5d data/create/recipes/splashing/stained_glass.json -c7a51fd1b730d48991cf6b4f1b56da4144537f1d data/create/recipes/splashing/stained_glass_pane.json -0dab1568708dfa19a2f4c3d06074bb12d477b89c data/create/recipes/splashing/thermal/crushed_lead_ore.json -1bb810e459ab32eaa33e29d4868f4d057b5b3273 data/create/recipes/splashing/thermal/crushed_nickel_ore.json -13a59189b523238f8e39b928d129993608c6ffbc data/create/recipes/splashing/thermal/crushed_silver_ore.json -b7287dc1142ec6f5d6945424f3a183784bd5e270 data/create/recipes/splashing/thermal/crushed_tin_ore.json -39bd2780c1d3066e6b5b8d3b029f058f5ea63165 data/create/recipes/splashing/wheat_flour.json -24cedf74a5a118fa03c7e91a3fdaae3e41f6ec40 data/create/recipes/splashing/white_concrete_powder.json -4ad9a4699a6e28c4406ab2aa453bbe50fcb34abc data/create/recipes/splashing/wool.json -e2c1774577aeb0756fb1d092245d9d77e40ba5f8 data/create/recipes/splashing/yellow_concrete_powder.json -7a4e163767827fc8cef3646204c2f2bf0f8aac99 data/create/recipes/spruce_window.json -96d515ff0172dafa04d650ab69d68ed508e99e6f data/create/recipes/spruce_window_pane.json -1f689453146c7dd2d315e8b5fb5e7cdc0aaf0fa2 data/create/recipes/tiled_glass_from_glass_colorless_stonecutting.json -39bd4bcaad003edbe035c91ffde61c51ee1edb87 data/create/recipes/tiled_glass_pane.json -7c6778a30bb670762c3a410cb19d1effc55a7063 data/create/recipes/vertical_framed_glass_from_glass_colorless_stonecutting.json -dc6093427210bd7034a0e2184f6a1630c7b33b3e data/create/recipes/vertical_framed_glass_pane.json -40ec72d571002206c276aec5de72459155e043ce data/create/recipes/warped_window.json -8f4b0a3cfb0073f1414bf18c0d4e5e751c4a9185 data/create/recipes/warped_window_pane.json -e483f41ab4e959bda4d88c23817913843d0fbef6 data/create/recipes/weathered_limestone.json -f75f25d3259dd51c29bee6ada2a4540a7a2bbeab data/create/recipes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json -f58ef5eb552fc7dcd89f30aa4231286ecef5e00a data/create/recipes/weathered_limestone_bricks_slab.json -ca9b163b3aaa526d6c3b070c2a7e50a56a38c6f4 data/create/recipes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json -78830f6b06ed83c914c95cf569ae40e00834984d data/create/recipes/weathered_limestone_bricks_stairs.json -bbc1016dd20a324237cf887005383cb92ba6acfb data/create/recipes/weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting.json -52afaf129d04be832d57547e1d2c419b1c18ca83 data/create/recipes/weathered_limestone_bricks_wall.json -a80bc42cfed70bb4031cb320fe08eaa778659b79 data/create/recipes/weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting.json -f67d26c9db68e027282960cae984319c39bdac0d data/create/recipes/weathered_limestone_cobblestone_from_weathered_limestone_stonecutting.json -651c1aa80635e174d6eb6581b3e84dd760cb7493 data/create/recipes/weathered_limestone_cobblestone_slab.json -6750a61430fa1f48bd3b461dbd3a279b1fce80c9 data/create/recipes/weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting.json -aad8a7c3352a93c5da437a14e633c327e72ae8fe data/create/recipes/weathered_limestone_cobblestone_stairs.json -f18eb3abd962e80d452ff68eb12e70fa379da2f8 data/create/recipes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json -d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone_cobblestone_wall.json -0f3c993eb6dd3f37953f304b8fad15bf60469ef4 data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json -6eceb25fabbb6b389ca35de3b829ad061c9c456a data/create/recipes/weathered_limestone_pillar.json -11667414f73bc2d00bda7c5c1a7d2934bf6e9165 data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json -20c20a12b0baff2ba493b1405db7d2d8a15b81af data/create/tags/blocks/brittle.json -330bfb3850ba3964b10b1bccbc3cbb9b012cae54 data/create/tags/blocks/fan_heaters.json -3bc64e3a1e7980237435b1770a9ba2102d57fcd4 data/create/tags/blocks/fan_transparent.json -74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/non_movable.json -c81ea194e808985847159b201140d4aa4cbcca65 data/create/tags/blocks/safe_nbt.json -c9ac7e3e5ec18554e7184168d65e9b8e44ef5610 data/create/tags/blocks/sails.json -6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json -50936b211d94167a35ec78c89954082a336b6269 data/create/tags/blocks/valve_handles.json -eac71740fb12bdb38b5dfaa2268613d7ba82b809 data/create/tags/blocks/windmill_sails.json -74700d556ca80c7a1db5fd4efb09c3ddb26cad66 data/create/tags/blocks/windowable.json -081f5aa35602fc27af2ca01ea9f2fd5e7eb284dc data/create/tags/items/create_ingots.json -94c62bf22678ef55b2b8a5398a7960e5b00682dc data/create/tags/items/crushed_ores.json -6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/items/seats.json -c7efc23c08d5e3602c84ff43dac18f72b1cfced3 data/create/tags/items/upright_on_belt.json -50936b211d94167a35ec78c89954082a336b6269 data/create/tags/items/valve_handles.json -16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data/forge/tags/blocks/glass/colorless.json -81d3eb40b048160fcc2d6bb7ff12b49276297efd data/forge/tags/blocks/glass_panes.json -4b700ee8aa748c2ec70c29ef1589844879c0deae data/forge/tags/blocks/ores.json -4a0b13a9835106de9a1dd0a71a02372abb48e7b6 data/forge/tags/blocks/ores/copper.json -d5ea262a0f5fb210612d22521818e26cf08e591a data/forge/tags/blocks/ores/zinc.json -508730d3822c54d355329bf6a33d58071653afad data/forge/tags/blocks/storage_blocks.json -ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/blocks/storage_blocks/brass.json -f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/blocks/storage_blocks/copper.json -7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/blocks/storage_blocks/zinc.json -6b73c57912934d09233ad2966110968a6109f2c9 data/forge/tags/fluids/chocolate.json -391c9b2be5740aea943a8a5fe27eb327e2d973b0 data/forge/tags/fluids/honey.json -aa729fedc4fcca0f0a18bf7b00075af06bf5357f data/forge/tags/fluids/milk.json -d6a4e4fe1204b718010543a28a9b9ec4e0977bd7 data/forge/tags/fluids/tea.json -d9ffc62a496946fc4848934e7c0a6e917337f8be data/forge/tags/items/beacon_payment.json -05ca51cdc60a5e109b5a0e3b782de13d34ebcb24 data/forge/tags/items/cobblestone.json -16bcb8fcbe9170c2c11f1ca8d99d8b36cd812bbd data/forge/tags/items/glass/colorless.json -81d3eb40b048160fcc2d6bb7ff12b49276297efd data/forge/tags/items/glass_panes.json -d9ffc62a496946fc4848934e7c0a6e917337f8be data/forge/tags/items/ingots.json -2dfd21017cb51d4bdc18d977a7d16f103cc3a985 data/forge/tags/items/ingots/brass.json -8e0ca32df10a50544f54fbe3dbfe485971b23315 data/forge/tags/items/ingots/copper.json -2f9ac80569a5cc168061742f9e3c36277d4d056e data/forge/tags/items/ingots/zinc.json -bcf15289cbadd429a48bd9accb4d2d5f75353a61 data/forge/tags/items/nuggets.json -cc82188fe8d986f4457301ed4f75ae833d263601 data/forge/tags/items/nuggets/brass.json -7affb30e30a252566a77467994b0c99331f1076c data/forge/tags/items/nuggets/copper.json -0d8cb5092ee6ec01ea09324c80d649ba05549799 data/forge/tags/items/nuggets/zinc.json -4b700ee8aa748c2ec70c29ef1589844879c0deae data/forge/tags/items/ores.json -4a0b13a9835106de9a1dd0a71a02372abb48e7b6 data/forge/tags/items/ores/copper.json -d5ea262a0f5fb210612d22521818e26cf08e591a data/forge/tags/items/ores/zinc.json -0ecf8a5392faf244b8cab3c7ddd45d5b34954050 data/forge/tags/items/plates.json -39f0d70ec10597e85df7c4783bbc5e0e4a5ffb80 data/forge/tags/items/plates/brass.json -c3dab5fe379bc1b7b10d4a0ba7009eee1b75a27c data/forge/tags/items/plates/copper.json -fb9bfb4c84ed9cf2da8c4b2fbc4cd4d9f37d3016 data/forge/tags/items/plates/gold.json -04d947ed7a5066f3cfe75a8dc564fe2dca8a9c93 data/forge/tags/items/plates/iron.json -4d598b23d07b6a0bfd89da11a30ce119a8660632 data/forge/tags/items/plates/lapis_lazuli.json -508730d3822c54d355329bf6a33d58071653afad data/forge/tags/items/storage_blocks.json -ff1900963bc4cd8ceffa78d58ef1952ceacb2fb7 data/forge/tags/items/storage_blocks/brass.json -f6c8f34ceb475546dba5cc6ff288863ea795d20b data/forge/tags/items/storage_blocks/copper.json -7f71a774800111e50b42de0e6159ed2d2a807d32 data/forge/tags/items/storage_blocks/zinc.json -1376cd1f92903a1c4e1422719b1aa102438a216e data/minecraft/advancements/createchromatic_age.json -2072c51afc5bbc6c9d64fd086803193d8a3c40de data/minecraft/tags/blocks/base_stone_overworld.json -508730d3822c54d355329bf6a33d58071653afad data/minecraft/tags/blocks/beacon_base_blocks.json -69f596fcb065e26b02ce246760432b5174191b76 data/minecraft/tags/blocks/impermeable.json -378b01e288301e0835d3d25167889077a2070780 data/minecraft/tags/blocks/rails.json -29e6f7e3d4be9a9b0af1fca5d32fa55e29905ce2 data/minecraft/tags/blocks/slabs.json -0d188ad2c33d10ee8f0d455c4e63a4460a8302fb data/minecraft/tags/blocks/stairs.json -92584f914c53e00c111f9ff5e3894e2e3594946b data/minecraft/tags/blocks/walls.json -09d26bcd0f94459f945219997277c4fbf14adeb7 data/minecraft/tags/fluids/water.json -49cadea86f6b63d5065b859a0d0e7ad772cf51d6 data/minecraft/tags/items/piglin_loved.json -29e6f7e3d4be9a9b0af1fca5d32fa55e29905ce2 data/minecraft/tags/items/slabs.json -0d188ad2c33d10ee8f0d455c4e63a4460a8302fb data/minecraft/tags/items/stairs.json -92584f914c53e00c111f9ff5e3894e2e3594946b data/minecraft/tags/items/walls.json diff --git a/src/generated/resources/assets/create/blockstates/acacia_window.json b/src/generated/resources/assets/create/blockstates/acacia_window.json deleted file mode 100644 index db4969dd6..000000000 --- a/src/generated/resources/assets/create/blockstates/acacia_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/acacia_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/acacia_window_pane.json b/src/generated/resources/assets/create/blockstates/acacia_window_pane.json deleted file mode 100644 index 6f968dffc..000000000 --- a/src/generated/resources/assets/create/blockstates/acacia_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/acacia_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/acacia_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/acacia_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/acacia_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/acacia_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/acacia_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/acacia_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/acacia_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/acacia_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/adjustable_chain_gearshift.json b/src/generated/resources/assets/create/blockstates/adjustable_chain_gearshift.json deleted file mode 100644 index 1e034b365..000000000 --- a/src/generated/resources/assets/create/blockstates/adjustable_chain_gearshift.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "variants": { - "axis=x,axis_along_first=false,part=start,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal", - "x": 180 - }, - "axis=y,axis_along_first=false,part=start,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_vertical" - }, - "axis=z,axis_along_first=false,part=start,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal", - "x": 270, - "y": 90 - }, - "axis=x,axis_along_first=true,part=start,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal", - "x": 270 - }, - "axis=y,axis_along_first=true,part=start,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_vertical", - "y": 270 - }, - "axis=z,axis_along_first=true,part=start,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal", - "y": 90 - }, - "axis=x,axis_along_first=false,part=middle,powered=false": { - "model": "create:block/adjustable_chain_gearshift_middle_horizontal" - }, - "axis=y,axis_along_first=false,part=middle,powered=false": { - "model": "create:block/adjustable_chain_gearshift_middle_vertical" - }, - "axis=z,axis_along_first=false,part=middle,powered=false": { - "model": "create:block/adjustable_chain_gearshift_middle_horizontal", - "x": 90, - "y": 90 - }, - "axis=x,axis_along_first=true,part=middle,powered=false": { - "model": "create:block/adjustable_chain_gearshift_middle_horizontal", - "x": 90 - }, - "axis=y,axis_along_first=true,part=middle,powered=false": { - "model": "create:block/adjustable_chain_gearshift_middle_vertical", - "y": 90 - }, - "axis=z,axis_along_first=true,part=middle,powered=false": { - "model": "create:block/adjustable_chain_gearshift_middle_horizontal", - "y": 90 - }, - "axis=x,axis_along_first=false,part=end,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal" - }, - "axis=y,axis_along_first=false,part=end,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_vertical", - "y": 180 - }, - "axis=z,axis_along_first=false,part=end,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal", - "x": 90, - "y": 90 - }, - "axis=x,axis_along_first=true,part=end,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal", - "x": 90 - }, - "axis=y,axis_along_first=true,part=end,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_vertical", - "y": 90 - }, - "axis=z,axis_along_first=true,part=end,powered=false": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal", - "y": 270 - }, - "axis=x,axis_along_first=false,part=none,powered=false": { - "model": "create:block/adjustable_chain_gearshift_single", - "y": 90 - }, - "axis=y,axis_along_first=false,part=none,powered=false": { - "model": "create:block/adjustable_chain_gearshift_single", - "x": 90 - }, - "axis=z,axis_along_first=false,part=none,powered=false": { - "model": "create:block/adjustable_chain_gearshift_single" - }, - "axis=x,axis_along_first=true,part=none,powered=false": { - "model": "create:block/adjustable_chain_gearshift_single", - "y": 90 - }, - "axis=y,axis_along_first=true,part=none,powered=false": { - "model": "create:block/adjustable_chain_gearshift_single", - "x": 90 - }, - "axis=z,axis_along_first=true,part=none,powered=false": { - "model": "create:block/adjustable_chain_gearshift_single" - }, - "axis=x,axis_along_first=false,part=start,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal_powered", - "x": 180 - }, - "axis=y,axis_along_first=false,part=start,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_vertical_powered" - }, - "axis=z,axis_along_first=false,part=start,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal_powered", - "x": 270, - "y": 90 - }, - "axis=x,axis_along_first=true,part=start,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal_powered", - "x": 270 - }, - "axis=y,axis_along_first=true,part=start,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_vertical_powered", - "y": 270 - }, - "axis=z,axis_along_first=true,part=start,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal_powered", - "y": 90 - }, - "axis=x,axis_along_first=false,part=middle,powered=true": { - "model": "create:block/adjustable_chain_gearshift_middle_horizontal_powered" - }, - "axis=y,axis_along_first=false,part=middle,powered=true": { - "model": "create:block/adjustable_chain_gearshift_middle_vertical_powered" - }, - "axis=z,axis_along_first=false,part=middle,powered=true": { - "model": "create:block/adjustable_chain_gearshift_middle_horizontal_powered", - "x": 90, - "y": 90 - }, - "axis=x,axis_along_first=true,part=middle,powered=true": { - "model": "create:block/adjustable_chain_gearshift_middle_horizontal_powered", - "x": 90 - }, - "axis=y,axis_along_first=true,part=middle,powered=true": { - "model": "create:block/adjustable_chain_gearshift_middle_vertical_powered", - "y": 90 - }, - "axis=z,axis_along_first=true,part=middle,powered=true": { - "model": "create:block/adjustable_chain_gearshift_middle_horizontal_powered", - "y": 90 - }, - "axis=x,axis_along_first=false,part=end,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal_powered" - }, - "axis=y,axis_along_first=false,part=end,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_vertical_powered", - "y": 180 - }, - "axis=z,axis_along_first=false,part=end,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal_powered", - "x": 90, - "y": 90 - }, - "axis=x,axis_along_first=true,part=end,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal_powered", - "x": 90 - }, - "axis=y,axis_along_first=true,part=end,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_vertical_powered", - "y": 90 - }, - "axis=z,axis_along_first=true,part=end,powered=true": { - "model": "create:block/adjustable_chain_gearshift_end_horizontal_powered", - "y": 270 - }, - "axis=x,axis_along_first=false,part=none,powered=true": { - "model": "create:block/adjustable_chain_gearshift_single_powered", - "y": 90 - }, - "axis=y,axis_along_first=false,part=none,powered=true": { - "model": "create:block/adjustable_chain_gearshift_single_powered", - "x": 90 - }, - "axis=z,axis_along_first=false,part=none,powered=true": { - "model": "create:block/adjustable_chain_gearshift_single_powered" - }, - "axis=x,axis_along_first=true,part=none,powered=true": { - "model": "create:block/adjustable_chain_gearshift_single_powered", - "y": 90 - }, - "axis=y,axis_along_first=true,part=none,powered=true": { - "model": "create:block/adjustable_chain_gearshift_single_powered", - "x": 90 - }, - "axis=z,axis_along_first=true,part=none,powered=true": { - "model": "create:block/adjustable_chain_gearshift_single_powered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/adjustable_crate.json b/src/generated/resources/assets/create/blockstates/adjustable_crate.json deleted file mode 100644 index f34e3aaf6..000000000 --- a/src/generated/resources/assets/create/blockstates/adjustable_crate.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "variants": { - "double=false,facing=down": { - "model": "create:block/crate/brass/single" - }, - "double=true,facing=down": { - "model": "create:block/crate/brass/top" - }, - "double=false,facing=up": { - "model": "create:block/crate/brass/single" - }, - "double=true,facing=up": { - "model": "create:block/crate/brass/bottom" - }, - "double=false,facing=north": { - "model": "create:block/crate/brass/single" - }, - "double=true,facing=north": { - "model": "create:block/crate/brass/right" - }, - "double=false,facing=south": { - "model": "create:block/crate/brass/single" - }, - "double=true,facing=south": { - "model": "create:block/crate/brass/left" - }, - "double=false,facing=west": { - "model": "create:block/crate/brass/single" - }, - "double=true,facing=west": { - "model": "create:block/crate/brass/left", - "y": 90 - }, - "double=false,facing=east": { - "model": "create:block/crate/brass/single" - }, - "double=true,facing=east": { - "model": "create:block/crate/brass/right", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/adjustable_pulse_repeater.json b/src/generated/resources/assets/create/blockstates/adjustable_pulse_repeater.json deleted file mode 100644 index 111089cfb..000000000 --- a/src/generated/resources/assets/create/blockstates/adjustable_pulse_repeater.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "variants": { - "facing=north,powered=false,powering=false": { - "model": "create:block/diodes/adjustable_pulse_repeater", - "y": 180 - }, - "facing=south,powered=false,powering=false": { - "model": "create:block/diodes/adjustable_pulse_repeater" - }, - "facing=west,powered=false,powering=false": { - "model": "create:block/diodes/adjustable_pulse_repeater", - "y": 90 - }, - "facing=east,powered=false,powering=false": { - "model": "create:block/diodes/adjustable_pulse_repeater", - "y": 270 - }, - "facing=north,powered=true,powering=false": { - "model": "create:block/adjustable_pulse_repeater_powered", - "y": 180 - }, - "facing=south,powered=true,powering=false": { - "model": "create:block/adjustable_pulse_repeater_powered" - }, - "facing=west,powered=true,powering=false": { - "model": "create:block/adjustable_pulse_repeater_powered", - "y": 90 - }, - "facing=east,powered=true,powering=false": { - "model": "create:block/adjustable_pulse_repeater_powered", - "y": 270 - }, - "facing=north,powered=false,powering=true": { - "model": "create:block/adjustable_pulse_repeater_powering", - "y": 180 - }, - "facing=south,powered=false,powering=true": { - "model": "create:block/adjustable_pulse_repeater_powering" - }, - "facing=west,powered=false,powering=true": { - "model": "create:block/adjustable_pulse_repeater_powering", - "y": 90 - }, - "facing=east,powered=false,powering=true": { - "model": "create:block/adjustable_pulse_repeater_powering", - "y": 270 - }, - "facing=north,powered=true,powering=true": { - "model": "create:block/adjustable_pulse_repeater_powered_powering", - "y": 180 - }, - "facing=south,powered=true,powering=true": { - "model": "create:block/adjustable_pulse_repeater_powered_powering" - }, - "facing=west,powered=true,powering=true": { - "model": "create:block/adjustable_pulse_repeater_powered_powering", - "y": 90 - }, - "facing=east,powered=true,powering=true": { - "model": "create:block/adjustable_pulse_repeater_powered_powering", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/adjustable_repeater.json b/src/generated/resources/assets/create/blockstates/adjustable_repeater.json deleted file mode 100644 index 357a10e08..000000000 --- a/src/generated/resources/assets/create/blockstates/adjustable_repeater.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "variants": { - "facing=north,powered=false,powering=false": { - "model": "create:block/diodes/adjustable_repeater", - "y": 180 - }, - "facing=south,powered=false,powering=false": { - "model": "create:block/diodes/adjustable_repeater" - }, - "facing=west,powered=false,powering=false": { - "model": "create:block/diodes/adjustable_repeater", - "y": 90 - }, - "facing=east,powered=false,powering=false": { - "model": "create:block/diodes/adjustable_repeater", - "y": 270 - }, - "facing=north,powered=true,powering=false": { - "model": "create:block/adjustable_repeater_powered", - "y": 180 - }, - "facing=south,powered=true,powering=false": { - "model": "create:block/adjustable_repeater_powered" - }, - "facing=west,powered=true,powering=false": { - "model": "create:block/adjustable_repeater_powered", - "y": 90 - }, - "facing=east,powered=true,powering=false": { - "model": "create:block/adjustable_repeater_powered", - "y": 270 - }, - "facing=north,powered=false,powering=true": { - "model": "create:block/adjustable_repeater_powering", - "y": 180 - }, - "facing=south,powered=false,powering=true": { - "model": "create:block/adjustable_repeater_powering" - }, - "facing=west,powered=false,powering=true": { - "model": "create:block/adjustable_repeater_powering", - "y": 90 - }, - "facing=east,powered=false,powering=true": { - "model": "create:block/adjustable_repeater_powering", - "y": 270 - }, - "facing=north,powered=true,powering=true": { - "model": "create:block/adjustable_repeater_powered_powering", - "y": 180 - }, - "facing=south,powered=true,powering=true": { - "model": "create:block/adjustable_repeater_powered_powering" - }, - "facing=west,powered=true,powering=true": { - "model": "create:block/adjustable_repeater_powered_powering", - "y": 90 - }, - "facing=east,powered=true,powering=true": { - "model": "create:block/adjustable_repeater_powered_powering", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/analog_lever.json b/src/generated/resources/assets/create/blockstates/analog_lever.json deleted file mode 100644 index a20c14925..000000000 --- a/src/generated/resources/assets/create/blockstates/analog_lever.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "variants": { - "face=floor,facing=north": { - "model": "create:block/analog_lever/block" - }, - "face=wall,facing=north": { - "model": "create:block/analog_lever/block", - "x": 90 - }, - "face=ceiling,facing=north": { - "model": "create:block/analog_lever/block", - "x": 180, - "y": 180 - }, - "face=floor,facing=south": { - "model": "create:block/analog_lever/block", - "y": 180 - }, - "face=wall,facing=south": { - "model": "create:block/analog_lever/block", - "x": 90, - "y": 180 - }, - "face=ceiling,facing=south": { - "model": "create:block/analog_lever/block", - "x": 180 - }, - "face=floor,facing=west": { - "model": "create:block/analog_lever/block", - "y": 270 - }, - "face=wall,facing=west": { - "model": "create:block/analog_lever/block", - "x": 90, - "y": 270 - }, - "face=ceiling,facing=west": { - "model": "create:block/analog_lever/block", - "x": 180, - "y": 90 - }, - "face=floor,facing=east": { - "model": "create:block/analog_lever/block", - "y": 90 - }, - "face=wall,facing=east": { - "model": "create:block/analog_lever/block", - "x": 90, - "y": 90 - }, - "face=ceiling,facing=east": { - "model": "create:block/analog_lever/block", - "x": 180, - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json b/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json deleted file mode 100644 index 4bbd11c49..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_belt_funnel.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "variants": { - "facing=north,powered=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel__retracted" - }, - "facing=south,powered=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel__retracted", - "y": 180 - }, - "facing=west,powered=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel__retracted", - "y": 270 - }, - "facing=east,powered=false,shape=retracted": { - "model": "create:block/andesite_belt_funnel__retracted", - "y": 90 - }, - "facing=north,powered=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel__powered_retracted" - }, - "facing=south,powered=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel__powered_retracted", - "y": 180 - }, - "facing=west,powered=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel__powered_retracted", - "y": 270 - }, - "facing=east,powered=true,shape=retracted": { - "model": "create:block/andesite_belt_funnel__powered_retracted", - "y": 90 - }, - "facing=north,powered=false,shape=extended": { - "model": "create:block/andesite_belt_funnel__extended" - }, - "facing=south,powered=false,shape=extended": { - "model": "create:block/andesite_belt_funnel__extended", - "y": 180 - }, - "facing=west,powered=false,shape=extended": { - "model": "create:block/andesite_belt_funnel__extended", - "y": 270 - }, - "facing=east,powered=false,shape=extended": { - "model": "create:block/andesite_belt_funnel__extended", - "y": 90 - }, - "facing=north,powered=true,shape=extended": { - "model": "create:block/andesite_belt_funnel__powered_extended" - }, - "facing=south,powered=true,shape=extended": { - "model": "create:block/andesite_belt_funnel__powered_extended", - "y": 180 - }, - "facing=west,powered=true,shape=extended": { - "model": "create:block/andesite_belt_funnel__powered_extended", - "y": 270 - }, - "facing=east,powered=true,shape=extended": { - "model": "create:block/andesite_belt_funnel__powered_extended", - "y": 90 - }, - "facing=north,powered=false,shape=pushing": { - "model": "create:block/andesite_belt_funnel__pushing" - }, - "facing=south,powered=false,shape=pushing": { - "model": "create:block/andesite_belt_funnel__pushing", - "y": 180 - }, - "facing=west,powered=false,shape=pushing": { - "model": "create:block/andesite_belt_funnel__pushing", - "y": 270 - }, - "facing=east,powered=false,shape=pushing": { - "model": "create:block/andesite_belt_funnel__pushing", - "y": 90 - }, - "facing=north,powered=true,shape=pushing": { - "model": "create:block/andesite_belt_funnel__powered_pushing" - }, - "facing=south,powered=true,shape=pushing": { - "model": "create:block/andesite_belt_funnel__powered_pushing", - "y": 180 - }, - "facing=west,powered=true,shape=pushing": { - "model": "create:block/andesite_belt_funnel__powered_pushing", - "y": 270 - }, - "facing=east,powered=true,shape=pushing": { - "model": "create:block/andesite_belt_funnel__powered_pushing", - "y": 90 - }, - "facing=north,powered=false,shape=pulling": { - "model": "create:block/andesite_belt_funnel__pulling" - }, - "facing=south,powered=false,shape=pulling": { - "model": "create:block/andesite_belt_funnel__pulling", - "y": 180 - }, - "facing=west,powered=false,shape=pulling": { - "model": "create:block/andesite_belt_funnel__pulling", - "y": 270 - }, - "facing=east,powered=false,shape=pulling": { - "model": "create:block/andesite_belt_funnel__pulling", - "y": 90 - }, - "facing=north,powered=true,shape=pulling": { - "model": "create:block/andesite_belt_funnel__powered_pulling" - }, - "facing=south,powered=true,shape=pulling": { - "model": "create:block/andesite_belt_funnel__powered_pulling", - "y": 180 - }, - "facing=west,powered=true,shape=pulling": { - "model": "create:block/andesite_belt_funnel__powered_pulling", - "y": 270 - }, - "facing=east,powered=true,shape=pulling": { - "model": "create:block/andesite_belt_funnel__powered_pulling", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_bricks.json b/src/generated/resources/assets/create/blockstates/andesite_bricks.json deleted file mode 100644 index e57a5b23c..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/andesite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_bricks_slab.json b/src/generated/resources/assets/create/blockstates/andesite_bricks_slab.json deleted file mode 100644 index f9798fee1..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/andesite_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/andesite_bricks_slab" - }, - "type=double": { - "model": "create:block/andesite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/andesite_bricks_stairs.json deleted file mode 100644 index 860c5526a..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/andesite_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/andesite_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/andesite_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/andesite_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/andesite_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/andesite_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/andesite_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/andesite_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/andesite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/andesite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/andesite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/andesite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/andesite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/andesite_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/andesite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/andesite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/andesite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/andesite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/andesite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/andesite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/andesite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/andesite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/andesite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/andesite_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/andesite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/andesite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/andesite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/andesite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/andesite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/andesite_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/andesite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/andesite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/andesite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/andesite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/andesite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/andesite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/andesite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/andesite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/andesite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/andesite_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_bricks_wall.json b/src/generated/resources/assets/create/blockstates/andesite_bricks_wall.json deleted file mode 100644 index c61b14289..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/andesite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_casing.json b/src/generated/resources/assets/create/blockstates/andesite_casing.json deleted file mode 100644 index 7fdc66c31..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/andesite_casing" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_cobblestone.json b/src/generated/resources/assets/create/blockstates/andesite_cobblestone.json deleted file mode 100644 index 465111fbc..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/andesite_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/andesite_cobblestone_slab.json deleted file mode 100644 index 4e5d187a6..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/andesite_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/andesite_cobblestone_slab" - }, - "type=double": { - "model": "create:block/andesite_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/andesite_cobblestone_stairs.json deleted file mode 100644 index 918460382..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/andesite_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/andesite_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/andesite_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/andesite_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/andesite_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/andesite_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/andesite_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/andesite_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/andesite_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/andesite_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/andesite_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/andesite_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/andesite_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/andesite_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/andesite_cobblestone_wall.json deleted file mode 100644 index 9545abd75..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/andesite_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_encased_shaft.json b/src/generated/resources/assets/create/blockstates/andesite_encased_shaft.json deleted file mode 100644 index c78b4a1c4..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_encased_shaft.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/encased_shaft/block_andesite", - "x": 90, - "y": 90, - "uvlock": true - }, - "axis=y": { - "model": "create:block/encased_shaft/block_andesite", - "uvlock": true - }, - "axis=z": { - "model": "create:block/encased_shaft/block_andesite", - "x": 90, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_funnel.json b/src/generated/resources/assets/create/blockstates/andesite_funnel.json deleted file mode 100644 index 9ea4b09ee..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_funnel.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "variants": { - "extracting=false,facing=down,powered=false": { - "model": "create:block/andesite_funnel_vertical_filterless_pull", - "x": 180, - "y": 180 - }, - "extracting=true,facing=down,powered=false": { - "model": "create:block/andesite_funnel_vertical_filterless_push", - "x": 180, - "y": 180 - }, - "extracting=false,facing=up,powered=false": { - "model": "create:block/andesite_funnel_vertical_filterless_pull", - "y": 180 - }, - "extracting=true,facing=up,powered=false": { - "model": "create:block/andesite_funnel_vertical_filterless_push", - "y": 180 - }, - "extracting=false,facing=north,powered=false": { - "model": "create:block/andesite_funnel_horizontal_pull" - }, - "extracting=true,facing=north,powered=false": { - "model": "create:block/andesite_funnel_horizontal_push" - }, - "extracting=false,facing=south,powered=false": { - "model": "create:block/andesite_funnel_horizontal_pull", - "y": 180 - }, - "extracting=true,facing=south,powered=false": { - "model": "create:block/andesite_funnel_horizontal_push", - "y": 180 - }, - "extracting=false,facing=west,powered=false": { - "model": "create:block/andesite_funnel_horizontal_pull", - "y": 270 - }, - "extracting=true,facing=west,powered=false": { - "model": "create:block/andesite_funnel_horizontal_push", - "y": 270 - }, - "extracting=false,facing=east,powered=false": { - "model": "create:block/andesite_funnel_horizontal_pull", - "y": 90 - }, - "extracting=true,facing=east,powered=false": { - "model": "create:block/andesite_funnel_horizontal_push", - "y": 90 - }, - "extracting=false,facing=down,powered=true": { - "model": "create:block/andesite_funnel_vertical_filterless_pull_powered", - "x": 180, - "y": 180 - }, - "extracting=true,facing=down,powered=true": { - "model": "create:block/andesite_funnel_vertical_filterless_push_powered", - "x": 180, - "y": 180 - }, - "extracting=false,facing=up,powered=true": { - "model": "create:block/andesite_funnel_vertical_filterless_pull_powered", - "y": 180 - }, - "extracting=true,facing=up,powered=true": { - "model": "create:block/andesite_funnel_vertical_filterless_push_powered", - "y": 180 - }, - "extracting=false,facing=north,powered=true": { - "model": "create:block/andesite_funnel_horizontal_pull_powered" - }, - "extracting=true,facing=north,powered=true": { - "model": "create:block/andesite_funnel_horizontal_push_powered" - }, - "extracting=false,facing=south,powered=true": { - "model": "create:block/andesite_funnel_horizontal_pull_powered", - "y": 180 - }, - "extracting=true,facing=south,powered=true": { - "model": "create:block/andesite_funnel_horizontal_push_powered", - "y": 180 - }, - "extracting=false,facing=west,powered=true": { - "model": "create:block/andesite_funnel_horizontal_pull_powered", - "y": 270 - }, - "extracting=true,facing=west,powered=true": { - "model": "create:block/andesite_funnel_horizontal_push_powered", - "y": 270 - }, - "extracting=false,facing=east,powered=true": { - "model": "create:block/andesite_funnel_horizontal_pull_powered", - "y": 90 - }, - "extracting=true,facing=east,powered=true": { - "model": "create:block/andesite_funnel_horizontal_push_powered", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_pillar.json b/src/generated/resources/assets/create/blockstates/andesite_pillar.json deleted file mode 100644 index a66fb4522..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/andesite_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/andesite_pillar" - }, - "axis=z": { - "model": "create:block/andesite_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/andesite_tunnel.json b/src/generated/resources/assets/create/blockstates/andesite_tunnel.json deleted file mode 100644 index c38dbb250..000000000 --- a/src/generated/resources/assets/create/blockstates/andesite_tunnel.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "variants": { - "axis=x,shape=straight": { - "model": "create:block/andesite_tunnel/straight" - }, - "axis=z,shape=straight": { - "model": "create:block/andesite_tunnel/straight", - "y": 90 - }, - "axis=x,shape=window": { - "model": "create:block/andesite_tunnel/window" - }, - "axis=z,shape=window": { - "model": "create:block/andesite_tunnel/window", - "y": 90 - }, - "axis=x,shape=closed": { - "model": "create:block/andesite_tunnel/straight" - }, - "axis=z,shape=closed": { - "model": "create:block/andesite_tunnel/straight", - "y": 90 - }, - "axis=x,shape=t_left": { - "model": "create:block/andesite_tunnel/t_left" - }, - "axis=z,shape=t_left": { - "model": "create:block/andesite_tunnel/t_left", - "y": 90 - }, - "axis=x,shape=t_right": { - "model": "create:block/andesite_tunnel/t_right" - }, - "axis=z,shape=t_right": { - "model": "create:block/andesite_tunnel/t_right", - "y": 90 - }, - "axis=x,shape=cross": { - "model": "create:block/andesite_tunnel/cross" - }, - "axis=z,shape=cross": { - "model": "create:block/andesite_tunnel/cross", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/basin.json b/src/generated/resources/assets/create/blockstates/basin.json deleted file mode 100644 index 0e511666e..000000000 --- a/src/generated/resources/assets/create/blockstates/basin.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/basin/block" - }, - "facing=north": { - "model": "create:block/basin/block_directional", - "y": 180 - }, - "facing=south": { - "model": "create:block/basin/block_directional" - }, - "facing=west": { - "model": "create:block/basin/block_directional", - "y": 90 - }, - "facing=east": { - "model": "create:block/basin/block_directional", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/belt.json b/src/generated/resources/assets/create/blockstates/belt.json deleted file mode 100644 index c09a0cb21..000000000 --- a/src/generated/resources/assets/create/blockstates/belt.json +++ /dev/null @@ -1,652 +0,0 @@ -{ - "variants": { - "casing=false,facing=north,part=start,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=north,part=start,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_start", - "y": 180 - }, - "casing=false,facing=south,part=start,slope=horizontal": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=start,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_start" - }, - "casing=false,facing=west,part=start,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=west,part=start,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_start", - "y": 90 - }, - "casing=false,facing=east,part=start,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=start,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_start", - "y": 270 - }, - "casing=false,facing=north,part=middle,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=north,part=middle,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_middle", - "y": 180 - }, - "casing=false,facing=south,part=middle,slope=horizontal": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=middle,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_middle" - }, - "casing=false,facing=west,part=middle,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=west,part=middle,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_middle", - "y": 90 - }, - "casing=false,facing=east,part=middle,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=middle,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_middle", - "y": 270 - }, - "casing=false,facing=north,part=end,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=north,part=end,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_end", - "y": 180 - }, - "casing=false,facing=south,part=end,slope=horizontal": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=end,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_end" - }, - "casing=false,facing=west,part=end,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=west,part=end,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_end", - "y": 90 - }, - "casing=false,facing=east,part=end,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=end,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_end", - "y": 270 - }, - "casing=false,facing=north,part=pulley,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=north,part=pulley,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_pulley", - "y": 180 - }, - "casing=false,facing=south,part=pulley,slope=horizontal": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=pulley,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_pulley" - }, - "casing=false,facing=west,part=pulley,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=west,part=pulley,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_pulley", - "y": 90 - }, - "casing=false,facing=east,part=pulley,slope=horizontal": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=pulley,slope=horizontal": { - "model": "create:block/belt_casing/horizontal_pulley", - "y": 270 - }, - "casing=false,facing=north,part=start,slope=upward": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=north,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_start" - }, - "casing=false,facing=south,part=start,slope=upward": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=south,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_start", - "y": 180 - }, - "casing=false,facing=west,part=start,slope=upward": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=west,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_start", - "y": 270 - }, - "casing=false,facing=east,part=start,slope=upward": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=east,part=start,slope=upward": { - "model": "create:block/belt_casing/diagonal_start", - "y": 90 - }, - "casing=false,facing=north,part=middle,slope=upward": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=north,part=middle,slope=upward": { - "model": "create:block/belt_casing/diagonal_middle" - }, - "casing=false,facing=south,part=middle,slope=upward": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=south,part=middle,slope=upward": { - "model": "create:block/belt_casing/diagonal_middle", - "y": 180 - }, - "casing=false,facing=west,part=middle,slope=upward": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=west,part=middle,slope=upward": { - "model": "create:block/belt_casing/diagonal_middle", - "y": 270 - }, - "casing=false,facing=east,part=middle,slope=upward": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=east,part=middle,slope=upward": { - "model": "create:block/belt_casing/diagonal_middle", - "y": 90 - }, - "casing=false,facing=north,part=end,slope=upward": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=north,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_end" - }, - "casing=false,facing=south,part=end,slope=upward": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=south,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_end", - "y": 180 - }, - "casing=false,facing=west,part=end,slope=upward": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=west,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_end", - "y": 270 - }, - "casing=false,facing=east,part=end,slope=upward": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=east,part=end,slope=upward": { - "model": "create:block/belt_casing/diagonal_end", - "y": 90 - }, - "casing=false,facing=north,part=pulley,slope=upward": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=north,part=pulley,slope=upward": { - "model": "create:block/belt_casing/diagonal_pulley" - }, - "casing=false,facing=south,part=pulley,slope=upward": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=south,part=pulley,slope=upward": { - "model": "create:block/belt_casing/diagonal_pulley", - "y": 180 - }, - "casing=false,facing=west,part=pulley,slope=upward": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=west,part=pulley,slope=upward": { - "model": "create:block/belt_casing/diagonal_pulley", - "y": 270 - }, - "casing=false,facing=east,part=pulley,slope=upward": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=east,part=pulley,slope=upward": { - "model": "create:block/belt_casing/diagonal_pulley", - "y": 90 - }, - "casing=false,facing=north,part=start,slope=downward": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=north,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_end", - "y": 180 - }, - "casing=false,facing=south,part=start,slope=downward": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_end" - }, - "casing=false,facing=west,part=start,slope=downward": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=west,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_end", - "y": 90 - }, - "casing=false,facing=east,part=start,slope=downward": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=start,slope=downward": { - "model": "create:block/belt_casing/diagonal_end", - "y": 270 - }, - "casing=false,facing=north,part=middle,slope=downward": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=north,part=middle,slope=downward": { - "model": "create:block/belt_casing/diagonal_middle", - "y": 180 - }, - "casing=false,facing=south,part=middle,slope=downward": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=middle,slope=downward": { - "model": "create:block/belt_casing/diagonal_middle" - }, - "casing=false,facing=west,part=middle,slope=downward": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=west,part=middle,slope=downward": { - "model": "create:block/belt_casing/diagonal_middle", - "y": 90 - }, - "casing=false,facing=east,part=middle,slope=downward": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=middle,slope=downward": { - "model": "create:block/belt_casing/diagonal_middle", - "y": 270 - }, - "casing=false,facing=north,part=end,slope=downward": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=north,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_start", - "y": 180 - }, - "casing=false,facing=south,part=end,slope=downward": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_start" - }, - "casing=false,facing=west,part=end,slope=downward": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=west,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_start", - "y": 90 - }, - "casing=false,facing=east,part=end,slope=downward": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=end,slope=downward": { - "model": "create:block/belt_casing/diagonal_start", - "y": 270 - }, - "casing=false,facing=north,part=pulley,slope=downward": { - "model": "create:block/belt/particle", - "y": 180 - }, - "casing=true,facing=north,part=pulley,slope=downward": { - "model": "create:block/belt_casing/diagonal_pulley", - "y": 180 - }, - "casing=false,facing=south,part=pulley,slope=downward": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=pulley,slope=downward": { - "model": "create:block/belt_casing/diagonal_pulley" - }, - "casing=false,facing=west,part=pulley,slope=downward": { - "model": "create:block/belt/particle", - "y": 90 - }, - "casing=true,facing=west,part=pulley,slope=downward": { - "model": "create:block/belt_casing/diagonal_pulley", - "y": 90 - }, - "casing=false,facing=east,part=pulley,slope=downward": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=pulley,slope=downward": { - "model": "create:block/belt_casing/diagonal_pulley", - "y": 270 - }, - "casing=false,facing=north,part=start,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 180 - }, - "casing=true,facing=north,part=start,slope=vertical": { - "model": "create:block/belt_casing/sideways_end", - "x": 90, - "y": 270 - }, - "casing=false,facing=south,part=start,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90 - }, - "casing=true,facing=south,part=start,slope=vertical": { - "model": "create:block/belt_casing/sideways_start", - "x": 90, - "y": 90 - }, - "casing=false,facing=west,part=start,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 90 - }, - "casing=true,facing=west,part=start,slope=vertical": { - "model": "create:block/belt_casing/sideways_end", - "x": 90, - "y": 180 - }, - "casing=false,facing=east,part=start,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 270 - }, - "casing=true,facing=east,part=start,slope=vertical": { - "model": "create:block/belt_casing/sideways_start", - "x": 90 - }, - "casing=false,facing=north,part=middle,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 180 - }, - "casing=true,facing=north,part=middle,slope=vertical": { - "model": "create:block/belt_casing/sideways_middle", - "x": 90, - "y": 270 - }, - "casing=false,facing=south,part=middle,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90 - }, - "casing=true,facing=south,part=middle,slope=vertical": { - "model": "create:block/belt_casing/sideways_middle", - "x": 90, - "y": 90 - }, - "casing=false,facing=west,part=middle,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 90 - }, - "casing=true,facing=west,part=middle,slope=vertical": { - "model": "create:block/belt_casing/sideways_middle", - "x": 90, - "y": 180 - }, - "casing=false,facing=east,part=middle,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 270 - }, - "casing=true,facing=east,part=middle,slope=vertical": { - "model": "create:block/belt_casing/sideways_middle", - "x": 90 - }, - "casing=false,facing=north,part=end,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 180 - }, - "casing=true,facing=north,part=end,slope=vertical": { - "model": "create:block/belt_casing/sideways_start", - "x": 90, - "y": 270 - }, - "casing=false,facing=south,part=end,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90 - }, - "casing=true,facing=south,part=end,slope=vertical": { - "model": "create:block/belt_casing/sideways_end", - "x": 90, - "y": 90 - }, - "casing=false,facing=west,part=end,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 90 - }, - "casing=true,facing=west,part=end,slope=vertical": { - "model": "create:block/belt_casing/sideways_start", - "x": 90, - "y": 180 - }, - "casing=false,facing=east,part=end,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 270 - }, - "casing=true,facing=east,part=end,slope=vertical": { - "model": "create:block/belt_casing/sideways_end", - "x": 90 - }, - "casing=false,facing=north,part=pulley,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 180 - }, - "casing=true,facing=north,part=pulley,slope=vertical": { - "model": "create:block/belt_casing/sideways_pulley", - "x": 90, - "y": 270 - }, - "casing=false,facing=south,part=pulley,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90 - }, - "casing=true,facing=south,part=pulley,slope=vertical": { - "model": "create:block/belt_casing/sideways_pulley", - "x": 90, - "y": 90 - }, - "casing=false,facing=west,part=pulley,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 90 - }, - "casing=true,facing=west,part=pulley,slope=vertical": { - "model": "create:block/belt_casing/sideways_pulley", - "x": 90, - "y": 180 - }, - "casing=false,facing=east,part=pulley,slope=vertical": { - "model": "create:block/belt/particle", - "x": 90, - "y": 270 - }, - "casing=true,facing=east,part=pulley,slope=vertical": { - "model": "create:block/belt_casing/sideways_pulley", - "x": 90 - }, - "casing=false,facing=north,part=start,slope=sideways": { - "model": "create:block/belt/particle", - "x": 180, - "y": 180 - }, - "casing=true,facing=north,part=start,slope=sideways": { - "model": "create:block/belt_casing/sideways_end", - "x": 180, - "y": 180 - }, - "casing=false,facing=south,part=start,slope=sideways": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=start,slope=sideways": { - "model": "create:block/belt_casing/sideways_start" - }, - "casing=false,facing=west,part=start,slope=sideways": { - "model": "create:block/belt/particle", - "x": 180, - "y": 90 - }, - "casing=true,facing=west,part=start,slope=sideways": { - "model": "create:block/belt_casing/sideways_end", - "x": 180, - "y": 90 - }, - "casing=false,facing=east,part=start,slope=sideways": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=start,slope=sideways": { - "model": "create:block/belt_casing/sideways_start", - "y": 270 - }, - "casing=false,facing=north,part=middle,slope=sideways": { - "model": "create:block/belt/particle", - "x": 180, - "y": 180 - }, - "casing=true,facing=north,part=middle,slope=sideways": { - "model": "create:block/belt_casing/sideways_middle", - "x": 180, - "y": 180 - }, - "casing=false,facing=south,part=middle,slope=sideways": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=middle,slope=sideways": { - "model": "create:block/belt_casing/sideways_middle" - }, - "casing=false,facing=west,part=middle,slope=sideways": { - "model": "create:block/belt/particle", - "x": 180, - "y": 90 - }, - "casing=true,facing=west,part=middle,slope=sideways": { - "model": "create:block/belt_casing/sideways_middle", - "x": 180, - "y": 90 - }, - "casing=false,facing=east,part=middle,slope=sideways": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=middle,slope=sideways": { - "model": "create:block/belt_casing/sideways_middle", - "y": 270 - }, - "casing=false,facing=north,part=end,slope=sideways": { - "model": "create:block/belt/particle", - "x": 180, - "y": 180 - }, - "casing=true,facing=north,part=end,slope=sideways": { - "model": "create:block/belt_casing/sideways_start", - "x": 180, - "y": 180 - }, - "casing=false,facing=south,part=end,slope=sideways": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=end,slope=sideways": { - "model": "create:block/belt_casing/sideways_end" - }, - "casing=false,facing=west,part=end,slope=sideways": { - "model": "create:block/belt/particle", - "x": 180, - "y": 90 - }, - "casing=true,facing=west,part=end,slope=sideways": { - "model": "create:block/belt_casing/sideways_start", - "x": 180, - "y": 90 - }, - "casing=false,facing=east,part=end,slope=sideways": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=end,slope=sideways": { - "model": "create:block/belt_casing/sideways_end", - "y": 270 - }, - "casing=false,facing=north,part=pulley,slope=sideways": { - "model": "create:block/belt/particle", - "x": 180, - "y": 180 - }, - "casing=true,facing=north,part=pulley,slope=sideways": { - "model": "create:block/belt_casing/sideways_pulley", - "x": 180, - "y": 180 - }, - "casing=false,facing=south,part=pulley,slope=sideways": { - "model": "create:block/belt/particle" - }, - "casing=true,facing=south,part=pulley,slope=sideways": { - "model": "create:block/belt_casing/sideways_pulley" - }, - "casing=false,facing=west,part=pulley,slope=sideways": { - "model": "create:block/belt/particle", - "x": 180, - "y": 90 - }, - "casing=true,facing=west,part=pulley,slope=sideways": { - "model": "create:block/belt_casing/sideways_pulley", - "x": 180, - "y": 90 - }, - "casing=false,facing=east,part=pulley,slope=sideways": { - "model": "create:block/belt/particle", - "y": 270 - }, - "casing=true,facing=east,part=pulley,slope=sideways": { - "model": "create:block/belt_casing/sideways_pulley", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/birch_window.json b/src/generated/resources/assets/create/blockstates/birch_window.json deleted file mode 100644 index 3448f2e10..000000000 --- a/src/generated/resources/assets/create/blockstates/birch_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/birch_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/birch_window_pane.json b/src/generated/resources/assets/create/blockstates/birch_window_pane.json deleted file mode 100644 index 63d3598a6..000000000 --- a/src/generated/resources/assets/create/blockstates/birch_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/birch_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/birch_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/birch_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/birch_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/birch_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/birch_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/birch_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/birch_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/birch_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/black_sail.json b/src/generated/resources/assets/create/blockstates/black_sail.json deleted file mode 100644 index 04c433e99..000000000 --- a/src/generated/resources/assets/create/blockstates/black_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/black_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/black_sail" - }, - "facing=north": { - "model": "create:block/black_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/black_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/black_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/black_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/black_seat.json b/src/generated/resources/assets/create/blockstates/black_seat.json deleted file mode 100644 index f232c6c76..000000000 --- a/src/generated/resources/assets/create/blockstates/black_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/black_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/black_valve_handle.json b/src/generated/resources/assets/create/blockstates/black_valve_handle.json deleted file mode 100644 index ab5f48af8..000000000 --- a/src/generated/resources/assets/create/blockstates/black_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/black_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/black_valve_handle" - }, - "facing=north": { - "model": "create:block/black_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/black_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/black_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/black_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/blaze_burner.json b/src/generated/resources/assets/create/blockstates/blaze_burner.json deleted file mode 100644 index 076b83aae..000000000 --- a/src/generated/resources/assets/create/blockstates/blaze_burner.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/blaze_burner/block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/blue_sail.json b/src/generated/resources/assets/create/blockstates/blue_sail.json deleted file mode 100644 index bbd4eb965..000000000 --- a/src/generated/resources/assets/create/blockstates/blue_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/blue_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/blue_sail" - }, - "facing=north": { - "model": "create:block/blue_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/blue_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/blue_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/blue_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/blue_seat.json b/src/generated/resources/assets/create/blockstates/blue_seat.json deleted file mode 100644 index 10e98b04a..000000000 --- a/src/generated/resources/assets/create/blockstates/blue_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/blue_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/blue_valve_handle.json b/src/generated/resources/assets/create/blockstates/blue_valve_handle.json deleted file mode 100644 index fa05f73c2..000000000 --- a/src/generated/resources/assets/create/blockstates/blue_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/blue_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/blue_valve_handle" - }, - "facing=north": { - "model": "create:block/blue_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/blue_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/blue_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/blue_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json b/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json deleted file mode 100644 index 5f68caef4..000000000 --- a/src/generated/resources/assets/create/blockstates/brass_belt_funnel.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "variants": { - "facing=north,powered=false,shape=retracted": { - "model": "create:block/brass_belt_funnel__retracted" - }, - "facing=south,powered=false,shape=retracted": { - "model": "create:block/brass_belt_funnel__retracted", - "y": 180 - }, - "facing=west,powered=false,shape=retracted": { - "model": "create:block/brass_belt_funnel__retracted", - "y": 270 - }, - "facing=east,powered=false,shape=retracted": { - "model": "create:block/brass_belt_funnel__retracted", - "y": 90 - }, - "facing=north,powered=true,shape=retracted": { - "model": "create:block/brass_belt_funnel__powered_retracted" - }, - "facing=south,powered=true,shape=retracted": { - "model": "create:block/brass_belt_funnel__powered_retracted", - "y": 180 - }, - "facing=west,powered=true,shape=retracted": { - "model": "create:block/brass_belt_funnel__powered_retracted", - "y": 270 - }, - "facing=east,powered=true,shape=retracted": { - "model": "create:block/brass_belt_funnel__powered_retracted", - "y": 90 - }, - "facing=north,powered=false,shape=extended": { - "model": "create:block/brass_belt_funnel__extended" - }, - "facing=south,powered=false,shape=extended": { - "model": "create:block/brass_belt_funnel__extended", - "y": 180 - }, - "facing=west,powered=false,shape=extended": { - "model": "create:block/brass_belt_funnel__extended", - "y": 270 - }, - "facing=east,powered=false,shape=extended": { - "model": "create:block/brass_belt_funnel__extended", - "y": 90 - }, - "facing=north,powered=true,shape=extended": { - "model": "create:block/brass_belt_funnel__powered_extended" - }, - "facing=south,powered=true,shape=extended": { - "model": "create:block/brass_belt_funnel__powered_extended", - "y": 180 - }, - "facing=west,powered=true,shape=extended": { - "model": "create:block/brass_belt_funnel__powered_extended", - "y": 270 - }, - "facing=east,powered=true,shape=extended": { - "model": "create:block/brass_belt_funnel__powered_extended", - "y": 90 - }, - "facing=north,powered=false,shape=pushing": { - "model": "create:block/brass_belt_funnel__pushing" - }, - "facing=south,powered=false,shape=pushing": { - "model": "create:block/brass_belt_funnel__pushing", - "y": 180 - }, - "facing=west,powered=false,shape=pushing": { - "model": "create:block/brass_belt_funnel__pushing", - "y": 270 - }, - "facing=east,powered=false,shape=pushing": { - "model": "create:block/brass_belt_funnel__pushing", - "y": 90 - }, - "facing=north,powered=true,shape=pushing": { - "model": "create:block/brass_belt_funnel__powered_pushing" - }, - "facing=south,powered=true,shape=pushing": { - "model": "create:block/brass_belt_funnel__powered_pushing", - "y": 180 - }, - "facing=west,powered=true,shape=pushing": { - "model": "create:block/brass_belt_funnel__powered_pushing", - "y": 270 - }, - "facing=east,powered=true,shape=pushing": { - "model": "create:block/brass_belt_funnel__powered_pushing", - "y": 90 - }, - "facing=north,powered=false,shape=pulling": { - "model": "create:block/brass_belt_funnel__pulling" - }, - "facing=south,powered=false,shape=pulling": { - "model": "create:block/brass_belt_funnel__pulling", - "y": 180 - }, - "facing=west,powered=false,shape=pulling": { - "model": "create:block/brass_belt_funnel__pulling", - "y": 270 - }, - "facing=east,powered=false,shape=pulling": { - "model": "create:block/brass_belt_funnel__pulling", - "y": 90 - }, - "facing=north,powered=true,shape=pulling": { - "model": "create:block/brass_belt_funnel__powered_pulling" - }, - "facing=south,powered=true,shape=pulling": { - "model": "create:block/brass_belt_funnel__powered_pulling", - "y": 180 - }, - "facing=west,powered=true,shape=pulling": { - "model": "create:block/brass_belt_funnel__powered_pulling", - "y": 270 - }, - "facing=east,powered=true,shape=pulling": { - "model": "create:block/brass_belt_funnel__powered_pulling", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_block.json b/src/generated/resources/assets/create/blockstates/brass_block.json deleted file mode 100644 index 05cea719e..000000000 --- a/src/generated/resources/assets/create/blockstates/brass_block.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/brass_block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_casing.json b/src/generated/resources/assets/create/blockstates/brass_casing.json deleted file mode 100644 index 4cc3d6e46..000000000 --- a/src/generated/resources/assets/create/blockstates/brass_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/brass_casing" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_encased_shaft.json b/src/generated/resources/assets/create/blockstates/brass_encased_shaft.json deleted file mode 100644 index af3983628..000000000 --- a/src/generated/resources/assets/create/blockstates/brass_encased_shaft.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/encased_shaft/block_brass", - "x": 90, - "y": 90, - "uvlock": true - }, - "axis=y": { - "model": "create:block/encased_shaft/block_brass", - "uvlock": true - }, - "axis=z": { - "model": "create:block/encased_shaft/block_brass", - "x": 90, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_funnel.json b/src/generated/resources/assets/create/blockstates/brass_funnel.json deleted file mode 100644 index 19a543d73..000000000 --- a/src/generated/resources/assets/create/blockstates/brass_funnel.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "variants": { - "extracting=false,facing=down,powered=false": { - "model": "create:block/brass_funnel_vertical_pull", - "x": 180, - "y": 180 - }, - "extracting=true,facing=down,powered=false": { - "model": "create:block/brass_funnel_vertical_push", - "x": 180, - "y": 180 - }, - "extracting=false,facing=up,powered=false": { - "model": "create:block/brass_funnel_vertical_pull", - "y": 180 - }, - "extracting=true,facing=up,powered=false": { - "model": "create:block/brass_funnel_vertical_push", - "y": 180 - }, - "extracting=false,facing=north,powered=false": { - "model": "create:block/brass_funnel_horizontal_pull" - }, - "extracting=true,facing=north,powered=false": { - "model": "create:block/brass_funnel_horizontal_push" - }, - "extracting=false,facing=south,powered=false": { - "model": "create:block/brass_funnel_horizontal_pull", - "y": 180 - }, - "extracting=true,facing=south,powered=false": { - "model": "create:block/brass_funnel_horizontal_push", - "y": 180 - }, - "extracting=false,facing=west,powered=false": { - "model": "create:block/brass_funnel_horizontal_pull", - "y": 270 - }, - "extracting=true,facing=west,powered=false": { - "model": "create:block/brass_funnel_horizontal_push", - "y": 270 - }, - "extracting=false,facing=east,powered=false": { - "model": "create:block/brass_funnel_horizontal_pull", - "y": 90 - }, - "extracting=true,facing=east,powered=false": { - "model": "create:block/brass_funnel_horizontal_push", - "y": 90 - }, - "extracting=false,facing=down,powered=true": { - "model": "create:block/brass_funnel_vertical_pull_powered", - "x": 180, - "y": 180 - }, - "extracting=true,facing=down,powered=true": { - "model": "create:block/brass_funnel_vertical_push_powered", - "x": 180, - "y": 180 - }, - "extracting=false,facing=up,powered=true": { - "model": "create:block/brass_funnel_vertical_pull_powered", - "y": 180 - }, - "extracting=true,facing=up,powered=true": { - "model": "create:block/brass_funnel_vertical_push_powered", - "y": 180 - }, - "extracting=false,facing=north,powered=true": { - "model": "create:block/brass_funnel_horizontal_pull_powered" - }, - "extracting=true,facing=north,powered=true": { - "model": "create:block/brass_funnel_horizontal_push_powered" - }, - "extracting=false,facing=south,powered=true": { - "model": "create:block/brass_funnel_horizontal_pull_powered", - "y": 180 - }, - "extracting=true,facing=south,powered=true": { - "model": "create:block/brass_funnel_horizontal_push_powered", - "y": 180 - }, - "extracting=false,facing=west,powered=true": { - "model": "create:block/brass_funnel_horizontal_pull_powered", - "y": 270 - }, - "extracting=true,facing=west,powered=true": { - "model": "create:block/brass_funnel_horizontal_push_powered", - "y": 270 - }, - "extracting=false,facing=east,powered=true": { - "model": "create:block/brass_funnel_horizontal_pull_powered", - "y": 90 - }, - "extracting=true,facing=east,powered=true": { - "model": "create:block/brass_funnel_horizontal_push_powered", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brass_tunnel.json b/src/generated/resources/assets/create/blockstates/brass_tunnel.json deleted file mode 100644 index 1566c2619..000000000 --- a/src/generated/resources/assets/create/blockstates/brass_tunnel.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "variants": { - "axis=x,shape=straight": { - "model": "create:block/brass_tunnel/straight" - }, - "axis=z,shape=straight": { - "model": "create:block/brass_tunnel/straight", - "y": 90 - }, - "axis=x,shape=window": { - "model": "create:block/brass_tunnel/window" - }, - "axis=z,shape=window": { - "model": "create:block/brass_tunnel/window", - "y": 90 - }, - "axis=x,shape=closed": { - "model": "create:block/brass_tunnel/straight" - }, - "axis=z,shape=closed": { - "model": "create:block/brass_tunnel/straight", - "y": 90 - }, - "axis=x,shape=t_left": { - "model": "create:block/brass_tunnel/t_left" - }, - "axis=z,shape=t_left": { - "model": "create:block/brass_tunnel/t_left", - "y": 90 - }, - "axis=x,shape=t_right": { - "model": "create:block/brass_tunnel/t_right" - }, - "axis=z,shape=t_right": { - "model": "create:block/brass_tunnel/t_right", - "y": 90 - }, - "axis=x,shape=cross": { - "model": "create:block/brass_tunnel/cross" - }, - "axis=z,shape=cross": { - "model": "create:block/brass_tunnel/cross", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brown_sail.json b/src/generated/resources/assets/create/blockstates/brown_sail.json deleted file mode 100644 index 9e99f2044..000000000 --- a/src/generated/resources/assets/create/blockstates/brown_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/brown_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/brown_sail" - }, - "facing=north": { - "model": "create:block/brown_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/brown_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/brown_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/brown_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brown_seat.json b/src/generated/resources/assets/create/blockstates/brown_seat.json deleted file mode 100644 index 2b501fab7..000000000 --- a/src/generated/resources/assets/create/blockstates/brown_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/brown_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/brown_valve_handle.json b/src/generated/resources/assets/create/blockstates/brown_valve_handle.json deleted file mode 100644 index aac125cd9..000000000 --- a/src/generated/resources/assets/create/blockstates/brown_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/brown_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/brown_valve_handle" - }, - "facing=north": { - "model": "create:block/brown_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/brown_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/brown_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/brown_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/cart_assembler.json b/src/generated/resources/assets/create/blockstates/cart_assembler.json deleted file mode 100644 index 0349a4837..000000000 --- a/src/generated/resources/assets/create/blockstates/cart_assembler.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "variants": { - "powered=false,rail_type=regular,shape=north_south": { - "model": "create:block/cart_assembler/block_regular" - }, - "powered=true,rail_type=regular,shape=north_south": { - "model": "create:block/cart_assembler/block_regular_powered" - }, - "powered=false,rail_type=powered_rail,shape=north_south": { - "model": "create:block/cart_assembler/block_powered_rail" - }, - "powered=true,rail_type=powered_rail,shape=north_south": { - "model": "create:block/cart_assembler/block_powered_rail_powered" - }, - "powered=false,rail_type=detector_rail,shape=north_south": { - "model": "create:block/cart_assembler/block_detector_rail" - }, - "powered=true,rail_type=detector_rail,shape=north_south": { - "model": "create:block/cart_assembler/block_detector_rail_powered" - }, - "powered=false,rail_type=activator_rail,shape=north_south": { - "model": "create:block/cart_assembler/block_activator_rail" - }, - "powered=true,rail_type=activator_rail,shape=north_south": { - "model": "create:block/cart_assembler/block_activator_rail_powered" - }, - "powered=false,rail_type=controller_rail,shape=north_south": { - "model": "create:block/cart_assembler/block_controller_rail" - }, - "powered=true,rail_type=controller_rail,shape=north_south": { - "model": "create:block/cart_assembler/block_controller_rail_powered" - }, - "powered=false,rail_type=controller_rail_backwards,shape=north_south": { - "model": "create:block/cart_assembler/block_controller_rail", - "y": 180 - }, - "powered=true,rail_type=controller_rail_backwards,shape=north_south": { - "model": "create:block/cart_assembler/block_controller_rail_powered", - "y": 180 - }, - "powered=false,rail_type=regular,shape=east_west": { - "model": "create:block/cart_assembler/block_regular", - "y": 270 - }, - "powered=true,rail_type=regular,shape=east_west": { - "model": "create:block/cart_assembler/block_regular_powered", - "y": 270 - }, - "powered=false,rail_type=powered_rail,shape=east_west": { - "model": "create:block/cart_assembler/block_powered_rail", - "y": 270 - }, - "powered=true,rail_type=powered_rail,shape=east_west": { - "model": "create:block/cart_assembler/block_powered_rail_powered", - "y": 270 - }, - "powered=false,rail_type=detector_rail,shape=east_west": { - "model": "create:block/cart_assembler/block_detector_rail", - "y": 270 - }, - "powered=true,rail_type=detector_rail,shape=east_west": { - "model": "create:block/cart_assembler/block_detector_rail_powered", - "y": 270 - }, - "powered=false,rail_type=activator_rail,shape=east_west": { - "model": "create:block/cart_assembler/block_activator_rail", - "y": 270 - }, - "powered=true,rail_type=activator_rail,shape=east_west": { - "model": "create:block/cart_assembler/block_activator_rail_powered", - "y": 270 - }, - "powered=false,rail_type=controller_rail,shape=east_west": { - "model": "create:block/cart_assembler/block_controller_rail", - "y": 270 - }, - "powered=true,rail_type=controller_rail,shape=east_west": { - "model": "create:block/cart_assembler/block_controller_rail_powered", - "y": 270 - }, - "powered=false,rail_type=controller_rail_backwards,shape=east_west": { - "model": "create:block/cart_assembler/block_controller_rail", - "y": 90 - }, - "powered=true,rail_type=controller_rail_backwards,shape=east_west": { - "model": "create:block/cart_assembler/block_controller_rail_powered", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chiseled_dark_scoria.json b/src/generated/resources/assets/create/blockstates/chiseled_dark_scoria.json deleted file mode 100644 index fcb566049..000000000 --- a/src/generated/resources/assets/create/blockstates/chiseled_dark_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/chiseled_dark_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chiseled_dolomite.json b/src/generated/resources/assets/create/blockstates/chiseled_dolomite.json deleted file mode 100644 index 077c8bb6d..000000000 --- a/src/generated/resources/assets/create/blockstates/chiseled_dolomite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/chiseled_dolomite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chiseled_gabbro.json b/src/generated/resources/assets/create/blockstates/chiseled_gabbro.json deleted file mode 100644 index b0584fada..000000000 --- a/src/generated/resources/assets/create/blockstates/chiseled_gabbro.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/chiseled_gabbro" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chiseled_limestone.json b/src/generated/resources/assets/create/blockstates/chiseled_limestone.json deleted file mode 100644 index 29e92918a..000000000 --- a/src/generated/resources/assets/create/blockstates/chiseled_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/chiseled_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chiseled_scoria.json b/src/generated/resources/assets/create/blockstates/chiseled_scoria.json deleted file mode 100644 index 031c049b0..000000000 --- a/src/generated/resources/assets/create/blockstates/chiseled_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/chiseled_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chiseled_weathered_limestone.json b/src/generated/resources/assets/create/blockstates/chiseled_weathered_limestone.json deleted file mode 100644 index 43037ee29..000000000 --- a/src/generated/resources/assets/create/blockstates/chiseled_weathered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/chiseled_weathered_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chocolate.json b/src/generated/resources/assets/create/blockstates/chocolate.json deleted file mode 100644 index d373c6e9b..000000000 --- a/src/generated/resources/assets/create/blockstates/chocolate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/chocolate" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chute.json b/src/generated/resources/assets/create/blockstates/chute.json deleted file mode 100644 index 3e82ef8a8..000000000 --- a/src/generated/resources/assets/create/blockstates/chute.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "variants": { - "facing=down,shape=intersection": { - "model": "create:block/chute/block_intersection" - }, - "facing=north,shape=intersection": { - "model": "create:block/chute/block_diagonal_intersection", - "y": 180 - }, - "facing=south,shape=intersection": { - "model": "create:block/chute/block_diagonal_intersection" - }, - "facing=west,shape=intersection": { - "model": "create:block/chute/block_diagonal_intersection", - "y": 90 - }, - "facing=east,shape=intersection": { - "model": "create:block/chute/block_diagonal_intersection", - "y": 270 - }, - "facing=down,shape=window": { - "model": "create:block/chute/block_windowed" - }, - "facing=north,shape=window": { - "model": "create:block/chute/block_diagonal", - "y": 180 - }, - "facing=south,shape=window": { - "model": "create:block/chute/block_diagonal" - }, - "facing=west,shape=window": { - "model": "create:block/chute/block_diagonal", - "y": 90 - }, - "facing=east,shape=window": { - "model": "create:block/chute/block_diagonal", - "y": 270 - }, - "facing=down,shape=normal": { - "model": "create:block/chute/block" - }, - "facing=north,shape=normal": { - "model": "create:block/chute/block_diagonal", - "y": 180 - }, - "facing=south,shape=normal": { - "model": "create:block/chute/block_diagonal" - }, - "facing=west,shape=normal": { - "model": "create:block/chute/block_diagonal", - "y": 90 - }, - "facing=east,shape=normal": { - "model": "create:block/chute/block_diagonal", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/clockwork_bearing.json b/src/generated/resources/assets/create/blockstates/clockwork_bearing.json deleted file mode 100644 index 38ad28d30..000000000 --- a/src/generated/resources/assets/create/blockstates/clockwork_bearing.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/clockwork_bearing", - "x": 180 - }, - "facing=up": { - "model": "create:block/clockwork_bearing" - }, - "facing=north": { - "model": "create:block/clockwork_bearing", - "x": 90 - }, - "facing=south": { - "model": "create:block/clockwork_bearing", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/clockwork_bearing", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/clockwork_bearing", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/clutch.json b/src/generated/resources/assets/create/blockstates/clutch.json deleted file mode 100644 index d07be4675..000000000 --- a/src/generated/resources/assets/create/blockstates/clutch.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "axis=x,powered=false": { - "model": "create:block/clutch/block", - "x": 90, - "y": 90 - }, - "axis=y,powered=false": { - "model": "create:block/clutch/block" - }, - "axis=z,powered=false": { - "model": "create:block/clutch/block", - "x": 90, - "y": 180 - }, - "axis=x,powered=true": { - "model": "create:block/clutch/block_powered", - "x": 90, - "y": 90 - }, - "axis=y,powered=true": { - "model": "create:block/clutch/block_powered" - }, - "axis=z,powered=true": { - "model": "create:block/clutch/block_powered", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/cogwheel.json b/src/generated/resources/assets/create/blockstates/cogwheel.json deleted file mode 100644 index 213f20515..000000000 --- a/src/generated/resources/assets/create/blockstates/cogwheel.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/cogwheel", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/cogwheel" - }, - "axis=z": { - "model": "create:block/cogwheel", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/content_observer.json b/src/generated/resources/assets/create/blockstates/content_observer.json deleted file mode 100644 index e66a1472c..000000000 --- a/src/generated/resources/assets/create/blockstates/content_observer.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "variants": { - "facing=north,powered=false": { - "model": "create:block/content_observer/block" - }, - "facing=south,powered=false": { - "model": "create:block/content_observer/block", - "y": 180 - }, - "facing=west,powered=false": { - "model": "create:block/content_observer/block", - "y": 270 - }, - "facing=east,powered=false": { - "model": "create:block/content_observer/block", - "y": 90 - }, - "facing=north,powered=true": { - "model": "create:block/content_observer/block_powered" - }, - "facing=south,powered=true": { - "model": "create:block/content_observer/block_powered", - "y": 180 - }, - "facing=west,powered=true": { - "model": "create:block/content_observer/block_powered", - "y": 270 - }, - "facing=east,powered=true": { - "model": "create:block/content_observer/block_powered", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/controller_rail.json b/src/generated/resources/assets/create/blockstates/controller_rail.json deleted file mode 100644 index 033305478..000000000 --- a/src/generated/resources/assets/create/blockstates/controller_rail.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "variants": { - "backwards=false,shape=north_south": { - "model": "create:block/controller_rail/block_north_south" - }, - "backwards=true,shape=north_south": { - "model": "create:block/controller_rail/block_north_south", - "y": 180 - }, - "backwards=false,shape=east_west": { - "model": "create:block/controller_rail/block_north_south", - "y": 270 - }, - "backwards=true,shape=east_west": { - "model": "create:block/controller_rail/block_north_south", - "y": 90 - }, - "backwards=false,shape=ascending_east": { - "model": "create:block/controller_rail/block_ascending_south", - "y": 270 - }, - "backwards=true,shape=ascending_east": { - "model": "create:block/controller_rail/block_ascending_north", - "y": 90 - }, - "backwards=false,shape=ascending_west": { - "model": "create:block/controller_rail/block_ascending_north", - "y": 270 - }, - "backwards=true,shape=ascending_west": { - "model": "create:block/controller_rail/block_ascending_south", - "y": 90 - }, - "backwards=false,shape=ascending_north": { - "model": "create:block/controller_rail/block_ascending_north" - }, - "backwards=true,shape=ascending_north": { - "model": "create:block/controller_rail/block_ascending_south", - "y": 180 - }, - "backwards=false,shape=ascending_south": { - "model": "create:block/controller_rail/block_ascending_south" - }, - "backwards=true,shape=ascending_south": { - "model": "create:block/controller_rail/block_ascending_north", - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copper_backtank.json b/src/generated/resources/assets/create/blockstates/copper_backtank.json deleted file mode 100644 index 7aa8d2045..000000000 --- a/src/generated/resources/assets/create/blockstates/copper_backtank.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "variants": { - "facing=north,waterlogged=false": { - "model": "create:block/copper_backtank/block" - }, - "facing=south,waterlogged=false": { - "model": "create:block/copper_backtank/block", - "y": 180 - }, - "facing=west,waterlogged=false": { - "model": "create:block/copper_backtank/block", - "y": 270 - }, - "facing=east,waterlogged=false": { - "model": "create:block/copper_backtank/block", - "y": 90 - }, - "facing=north,waterlogged=true": { - "model": "create:block/copper_backtank/block" - }, - "facing=south,waterlogged=true": { - "model": "create:block/copper_backtank/block", - "y": 180 - }, - "facing=west,waterlogged=true": { - "model": "create:block/copper_backtank/block", - "y": 270 - }, - "facing=east,waterlogged=true": { - "model": "create:block/copper_backtank/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copper_block.json b/src/generated/resources/assets/create/blockstates/copper_block.json deleted file mode 100644 index 50233ad0f..000000000 --- a/src/generated/resources/assets/create/blockstates/copper_block.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "variants": { - "oxidization=0": { - "model": "create:block/oxidized/copper_block_0" - }, - "oxidization=1": { - "model": "create:block/oxidized/copper_block_1" - }, - "oxidization=2": { - "model": "create:block/oxidized/copper_block_2" - }, - "oxidization=3": { - "model": "create:block/oxidized/copper_block_3" - }, - "oxidization=4": { - "model": "create:block/oxidized/copper_block_4" - }, - "oxidization=5": { - "model": "create:block/oxidized/copper_block_5" - }, - "oxidization=6": { - "model": "create:block/oxidized/copper_block_6" - }, - "oxidization=7": { - "model": "create:block/oxidized/copper_block_7" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copper_casing.json b/src/generated/resources/assets/create/blockstates/copper_casing.json deleted file mode 100644 index 56b13703f..000000000 --- a/src/generated/resources/assets/create/blockstates/copper_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/copper_casing" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copper_ore.json b/src/generated/resources/assets/create/blockstates/copper_ore.json deleted file mode 100644 index 5e125609b..000000000 --- a/src/generated/resources/assets/create/blockstates/copper_ore.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "variants": { - "oxidization=0": { - "model": "create:block/oxidized/copper_ore_0" - }, - "oxidization=1": { - "model": "create:block/oxidized/copper_ore_1" - }, - "oxidization=2": { - "model": "create:block/oxidized/copper_ore_2" - }, - "oxidization=3": { - "model": "create:block/oxidized/copper_ore_3" - }, - "oxidization=4": { - "model": "create:block/oxidized/copper_ore_4" - }, - "oxidization=5": { - "model": "create:block/oxidized/copper_ore_5" - }, - "oxidization=6": { - "model": "create:block/oxidized/copper_ore_6" - }, - "oxidization=7": { - "model": "create:block/oxidized/copper_ore_7" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copper_shingles.json b/src/generated/resources/assets/create/blockstates/copper_shingles.json deleted file mode 100644 index ea8971d81..000000000 --- a/src/generated/resources/assets/create/blockstates/copper_shingles.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "variants": { - "oxidization=0": { - "model": "create:block/oxidized/copper_shingles_0" - }, - "oxidization=1": { - "model": "create:block/oxidized/copper_shingles_1" - }, - "oxidization=2": { - "model": "create:block/oxidized/copper_shingles_2" - }, - "oxidization=3": { - "model": "create:block/oxidized/copper_shingles_3" - }, - "oxidization=4": { - "model": "create:block/oxidized/copper_shingles_4" - }, - "oxidization=5": { - "model": "create:block/oxidized/copper_shingles_5" - }, - "oxidization=6": { - "model": "create:block/oxidized/copper_shingles_6" - }, - "oxidization=7": { - "model": "create:block/oxidized/copper_shingles_7" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copper_tiles.json b/src/generated/resources/assets/create/blockstates/copper_tiles.json deleted file mode 100644 index 74895de71..000000000 --- a/src/generated/resources/assets/create/blockstates/copper_tiles.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "variants": { - "oxidization=0": { - "model": "create:block/oxidized/copper_tiles_0" - }, - "oxidization=1": { - "model": "create:block/oxidized/copper_tiles_1" - }, - "oxidization=2": { - "model": "create:block/oxidized/copper_tiles_2" - }, - "oxidization=3": { - "model": "create:block/oxidized/copper_tiles_3" - }, - "oxidization=4": { - "model": "create:block/oxidized/copper_tiles_4" - }, - "oxidization=5": { - "model": "create:block/oxidized/copper_tiles_5" - }, - "oxidization=6": { - "model": "create:block/oxidized/copper_tiles_6" - }, - "oxidization=7": { - "model": "create:block/oxidized/copper_tiles_7" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/copper_valve_handle.json b/src/generated/resources/assets/create/blockstates/copper_valve_handle.json deleted file mode 100644 index d8e371297..000000000 --- a/src/generated/resources/assets/create/blockstates/copper_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/copper_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/copper_valve_handle" - }, - "facing=north": { - "model": "create:block/copper_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/copper_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/copper_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/copper_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/creative_crate.json b/src/generated/resources/assets/create/blockstates/creative_crate.json deleted file mode 100644 index 89413592c..000000000 --- a/src/generated/resources/assets/create/blockstates/creative_crate.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "variants": { - "double=false,facing=down": { - "model": "create:block/crate/creative/single" - }, - "double=true,facing=down": { - "model": "create:block/crate/creative/top" - }, - "double=false,facing=up": { - "model": "create:block/crate/creative/single" - }, - "double=true,facing=up": { - "model": "create:block/crate/creative/bottom" - }, - "double=false,facing=north": { - "model": "create:block/crate/creative/single" - }, - "double=true,facing=north": { - "model": "create:block/crate/creative/right" - }, - "double=false,facing=south": { - "model": "create:block/crate/creative/single" - }, - "double=true,facing=south": { - "model": "create:block/crate/creative/left" - }, - "double=false,facing=west": { - "model": "create:block/crate/creative/single" - }, - "double=true,facing=west": { - "model": "create:block/crate/creative/left", - "y": 90 - }, - "double=false,facing=east": { - "model": "create:block/crate/creative/single" - }, - "double=true,facing=east": { - "model": "create:block/crate/creative/right", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/creative_fluid_tank.json b/src/generated/resources/assets/create/blockstates/creative_fluid_tank.json deleted file mode 100644 index 45118d24e..000000000 --- a/src/generated/resources/assets/create/blockstates/creative_fluid_tank.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "variants": { - "bottom=false,shape=plain,top=false": { - "model": "create:block/creative_middle" - }, - "bottom=true,shape=plain,top=false": { - "model": "create:block/creative_bottom" - }, - "bottom=false,shape=window,top=false": { - "model": "create:block/creative_middle_window" - }, - "bottom=true,shape=window,top=false": { - "model": "create:block/creative_bottom_window" - }, - "bottom=false,shape=window_nw,top=false": { - "model": "create:block/creative_middle_window_nw" - }, - "bottom=true,shape=window_nw,top=false": { - "model": "create:block/creative_bottom_window_nw" - }, - "bottom=false,shape=window_sw,top=false": { - "model": "create:block/creative_middle_window_sw" - }, - "bottom=true,shape=window_sw,top=false": { - "model": "create:block/creative_bottom_window_sw" - }, - "bottom=false,shape=window_ne,top=false": { - "model": "create:block/creative_middle_window_ne" - }, - "bottom=true,shape=window_ne,top=false": { - "model": "create:block/creative_bottom_window_ne" - }, - "bottom=false,shape=window_se,top=false": { - "model": "create:block/creative_middle_window_se" - }, - "bottom=true,shape=window_se,top=false": { - "model": "create:block/creative_bottom_window_se" - }, - "bottom=false,shape=plain,top=true": { - "model": "create:block/creative_top" - }, - "bottom=true,shape=plain,top=true": { - "model": "create:block/creative_single" - }, - "bottom=false,shape=window,top=true": { - "model": "create:block/creative_top_window" - }, - "bottom=true,shape=window,top=true": { - "model": "create:block/creative_single_window" - }, - "bottom=false,shape=window_nw,top=true": { - "model": "create:block/creative_top_window_nw" - }, - "bottom=true,shape=window_nw,top=true": { - "model": "create:block/creative_single_window_nw" - }, - "bottom=false,shape=window_sw,top=true": { - "model": "create:block/creative_top_window_sw" - }, - "bottom=true,shape=window_sw,top=true": { - "model": "create:block/creative_single_window_sw" - }, - "bottom=false,shape=window_ne,top=true": { - "model": "create:block/creative_top_window_ne" - }, - "bottom=true,shape=window_ne,top=true": { - "model": "create:block/creative_single_window_ne" - }, - "bottom=false,shape=window_se,top=true": { - "model": "create:block/creative_top_window_se" - }, - "bottom=true,shape=window_se,top=true": { - "model": "create:block/creative_single_window_se" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/creative_motor.json b/src/generated/resources/assets/create/blockstates/creative_motor.json deleted file mode 100644 index b7cb5e4c8..000000000 --- a/src/generated/resources/assets/create/blockstates/creative_motor.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/creative_motor/block_vertical", - "x": 180 - }, - "facing=up": { - "model": "create:block/creative_motor/block_vertical" - }, - "facing=north": { - "model": "create:block/creative_motor/block", - "y": 180 - }, - "facing=south": { - "model": "create:block/creative_motor/block" - }, - "facing=west": { - "model": "create:block/creative_motor/block", - "y": 90 - }, - "facing=east": { - "model": "create:block/creative_motor/block", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/crimson_window.json b/src/generated/resources/assets/create/blockstates/crimson_window.json deleted file mode 100644 index c6e0efa37..000000000 --- a/src/generated/resources/assets/create/blockstates/crimson_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/crimson_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/crimson_window_pane.json b/src/generated/resources/assets/create/blockstates/crimson_window_pane.json deleted file mode 100644 index 017e51dbf..000000000 --- a/src/generated/resources/assets/create/blockstates/crimson_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/crimson_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/crimson_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/crimson_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/crimson_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/crimson_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/crimson_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/crimson_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/crimson_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/crimson_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/crushing_wheel.json b/src/generated/resources/assets/create/blockstates/crushing_wheel.json deleted file mode 100644 index b0a631e3a..000000000 --- a/src/generated/resources/assets/create/blockstates/crushing_wheel.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/crushing_wheel", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/crushing_wheel" - }, - "axis=z": { - "model": "create:block/crushing_wheel", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/crushing_wheel_controller.json b/src/generated/resources/assets/create/blockstates/crushing_wheel_controller.json deleted file mode 100644 index 2f859dc9e..000000000 --- a/src/generated/resources/assets/create/blockstates/crushing_wheel_controller.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "valid=false": { - "model": "minecraft:block/air" - }, - "valid=true": { - "model": "minecraft:block/air" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/cuckoo_clock.json b/src/generated/resources/assets/create/blockstates/cuckoo_clock.json deleted file mode 100644 index df80ece2d..000000000 --- a/src/generated/resources/assets/create/blockstates/cuckoo_clock.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/cuckoo_clock/block" - }, - "facing=south": { - "model": "create:block/cuckoo_clock/block", - "y": 180 - }, - "facing=west": { - "model": "create:block/cuckoo_clock/block", - "y": 270 - }, - "facing=east": { - "model": "create:block/cuckoo_clock/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/cyan_sail.json b/src/generated/resources/assets/create/blockstates/cyan_sail.json deleted file mode 100644 index f5049536d..000000000 --- a/src/generated/resources/assets/create/blockstates/cyan_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/cyan_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/cyan_sail" - }, - "facing=north": { - "model": "create:block/cyan_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/cyan_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/cyan_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/cyan_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/cyan_seat.json b/src/generated/resources/assets/create/blockstates/cyan_seat.json deleted file mode 100644 index a40f1bf88..000000000 --- a/src/generated/resources/assets/create/blockstates/cyan_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/cyan_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json b/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json deleted file mode 100644 index ca7d5322d..000000000 --- a/src/generated/resources/assets/create/blockstates/cyan_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/cyan_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/cyan_valve_handle" - }, - "facing=north": { - "model": "create:block/cyan_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/cyan_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/cyan_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/cyan_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_oak_window.json b/src/generated/resources/assets/create/blockstates/dark_oak_window.json deleted file mode 100644 index 1e9eea88d..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_oak_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/dark_oak_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_oak_window_pane.json b/src/generated/resources/assets/create/blockstates/dark_oak_window_pane.json deleted file mode 100644 index 23745e9da..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_oak_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/dark_oak_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/dark_oak_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/dark_oak_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/dark_oak_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/dark_oak_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/dark_oak_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/dark_oak_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/dark_oak_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/dark_oak_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria.json b/src/generated/resources/assets/create/blockstates/dark_scoria.json deleted file mode 100644 index 05504501d..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/dark_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_bricks.json b/src/generated/resources/assets/create/blockstates/dark_scoria_bricks.json deleted file mode 100644 index d8a797142..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/dark_scoria_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_slab.json b/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_slab.json deleted file mode 100644 index f66283bbc..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/dark_scoria_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/dark_scoria_bricks_slab" - }, - "type=double": { - "model": "create:block/dark_scoria_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_stairs.json deleted file mode 100644 index be1d02130..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/dark_scoria_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/dark_scoria_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/dark_scoria_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/dark_scoria_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/dark_scoria_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/dark_scoria_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/dark_scoria_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/dark_scoria_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/dark_scoria_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/dark_scoria_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/dark_scoria_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/dark_scoria_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/dark_scoria_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/dark_scoria_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_wall.json b/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_wall.json deleted file mode 100644 index 77c65d167..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/dark_scoria_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone.json b/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone.json deleted file mode 100644 index c5b25cf13..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/dark_scoria_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_slab.json deleted file mode 100644 index d51226c83..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/dark_scoria_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/dark_scoria_cobblestone_slab" - }, - "type=double": { - "model": "create:block/dark_scoria_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_stairs.json deleted file mode 100644 index 9131261c9..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/dark_scoria_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/dark_scoria_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/dark_scoria_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/dark_scoria_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/dark_scoria_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/dark_scoria_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/dark_scoria_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/dark_scoria_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/dark_scoria_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_wall.json deleted file mode 100644 index 474c26d7f..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/dark_scoria_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dark_scoria_pillar.json b/src/generated/resources/assets/create/blockstates/dark_scoria_pillar.json deleted file mode 100644 index 00c3b9a06..000000000 --- a/src/generated/resources/assets/create/blockstates/dark_scoria_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/dark_scoria_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/dark_scoria_pillar" - }, - "axis=z": { - "model": "create:block/dark_scoria_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/deployer.json b/src/generated/resources/assets/create/blockstates/deployer.json deleted file mode 100644 index e2be81afe..000000000 --- a/src/generated/resources/assets/create/blockstates/deployer.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down": { - "model": "create:block/deployer/horizontal", - "x": 270, - "y": 90 - }, - "axis_along_first=true,facing=down": { - "model": "create:block/deployer/horizontal", - "x": 270 - }, - "axis_along_first=false,facing=up": { - "model": "create:block/deployer/horizontal", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=up": { - "model": "create:block/deployer/horizontal", - "x": 90 - }, - "axis_along_first=false,facing=north": { - "model": "create:block/deployer/vertical", - "y": 180 - }, - "axis_along_first=true,facing=north": { - "model": "create:block/deployer/horizontal", - "y": 180 - }, - "axis_along_first=false,facing=south": { - "model": "create:block/deployer/vertical" - }, - "axis_along_first=true,facing=south": { - "model": "create:block/deployer/horizontal" - }, - "axis_along_first=false,facing=west": { - "model": "create:block/deployer/horizontal", - "y": 90 - }, - "axis_along_first=true,facing=west": { - "model": "create:block/deployer/vertical", - "y": 90 - }, - "axis_along_first=false,facing=east": { - "model": "create:block/deployer/horizontal", - "y": 270 - }, - "axis_along_first=true,facing=east": { - "model": "create:block/deployer/vertical", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/depot.json b/src/generated/resources/assets/create/blockstates/depot.json deleted file mode 100644 index f1af801d0..000000000 --- a/src/generated/resources/assets/create/blockstates/depot.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/depot/block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_bricks.json b/src/generated/resources/assets/create/blockstates/diorite_bricks.json deleted file mode 100644 index 9fabe35c5..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/diorite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_bricks_slab.json b/src/generated/resources/assets/create/blockstates/diorite_bricks_slab.json deleted file mode 100644 index c45a3743e..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/diorite_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/diorite_bricks_slab" - }, - "type=double": { - "model": "create:block/diorite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/diorite_bricks_stairs.json deleted file mode 100644 index e869ccac4..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/diorite_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/diorite_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/diorite_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/diorite_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/diorite_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/diorite_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/diorite_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/diorite_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/diorite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/diorite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/diorite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/diorite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/diorite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/diorite_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/diorite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/diorite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/diorite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/diorite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/diorite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/diorite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/diorite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/diorite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/diorite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/diorite_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/diorite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/diorite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/diorite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/diorite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/diorite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/diorite_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/diorite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/diorite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/diorite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/diorite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/diorite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/diorite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/diorite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/diorite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/diorite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/diorite_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_bricks_wall.json b/src/generated/resources/assets/create/blockstates/diorite_bricks_wall.json deleted file mode 100644 index 008ed559b..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/diorite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_cobblestone.json b/src/generated/resources/assets/create/blockstates/diorite_cobblestone.json deleted file mode 100644 index b678e7b0d..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/diorite_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/diorite_cobblestone_slab.json deleted file mode 100644 index ac32b4caa..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/diorite_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/diorite_cobblestone_slab" - }, - "type=double": { - "model": "create:block/diorite_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/diorite_cobblestone_stairs.json deleted file mode 100644 index 5824deef4..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/diorite_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/diorite_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/diorite_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/diorite_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/diorite_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/diorite_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/diorite_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/diorite_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/diorite_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/diorite_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/diorite_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/diorite_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/diorite_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/diorite_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/diorite_cobblestone_wall.json deleted file mode 100644 index 66dabb707..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/diorite_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/diorite_pillar.json b/src/generated/resources/assets/create/blockstates/diorite_pillar.json deleted file mode 100644 index 84214a905..000000000 --- a/src/generated/resources/assets/create/blockstates/diorite_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/diorite_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/diorite_pillar" - }, - "axis=z": { - "model": "create:block/diorite_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite.json b/src/generated/resources/assets/create/blockstates/dolomite.json deleted file mode 100644 index 68d0d6bad..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/dolomite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_bricks.json b/src/generated/resources/assets/create/blockstates/dolomite_bricks.json deleted file mode 100644 index 3b9cf8dfd..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/dolomite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_bricks_slab.json b/src/generated/resources/assets/create/blockstates/dolomite_bricks_slab.json deleted file mode 100644 index f8829dad8..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/dolomite_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/dolomite_bricks_slab" - }, - "type=double": { - "model": "create:block/dolomite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/dolomite_bricks_stairs.json deleted file mode 100644 index 65cd64f8c..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/dolomite_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/dolomite_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/dolomite_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/dolomite_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/dolomite_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/dolomite_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/dolomite_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/dolomite_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/dolomite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/dolomite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/dolomite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/dolomite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/dolomite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/dolomite_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/dolomite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/dolomite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/dolomite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/dolomite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/dolomite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/dolomite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/dolomite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/dolomite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/dolomite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/dolomite_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/dolomite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/dolomite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/dolomite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/dolomite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/dolomite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/dolomite_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/dolomite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/dolomite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/dolomite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/dolomite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/dolomite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/dolomite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/dolomite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/dolomite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/dolomite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/dolomite_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_bricks_wall.json b/src/generated/resources/assets/create/blockstates/dolomite_bricks_wall.json deleted file mode 100644 index 3ce371328..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/dolomite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_cobblestone.json b/src/generated/resources/assets/create/blockstates/dolomite_cobblestone.json deleted file mode 100644 index 614af86e8..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/dolomite_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_slab.json deleted file mode 100644 index e5e9c86dd..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/dolomite_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/dolomite_cobblestone_slab" - }, - "type=double": { - "model": "create:block/dolomite_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_stairs.json deleted file mode 100644 index 222f05abe..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/dolomite_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/dolomite_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/dolomite_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/dolomite_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/dolomite_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/dolomite_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/dolomite_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/dolomite_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/dolomite_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/dolomite_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/dolomite_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/dolomite_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/dolomite_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/dolomite_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_wall.json deleted file mode 100644 index c4cff7514..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/dolomite_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/dolomite_pillar.json b/src/generated/resources/assets/create/blockstates/dolomite_pillar.json deleted file mode 100644 index 650b05d53..000000000 --- a/src/generated/resources/assets/create/blockstates/dolomite_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/dolomite_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/dolomite_pillar" - }, - "axis=z": { - "model": "create:block/dolomite_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/encased_chain_drive.json b/src/generated/resources/assets/create/blockstates/encased_chain_drive.json deleted file mode 100644 index 6e8df78a8..000000000 --- a/src/generated/resources/assets/create/blockstates/encased_chain_drive.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "variants": { - "axis=x,axis_along_first=false,part=start": { - "model": "create:block/encased_chain_drive/end_horizontal", - "x": 180 - }, - "axis=y,axis_along_first=false,part=start": { - "model": "create:block/encased_chain_drive/end_vertical" - }, - "axis=z,axis_along_first=false,part=start": { - "model": "create:block/encased_chain_drive/end_horizontal", - "x": 270, - "y": 90 - }, - "axis=x,axis_along_first=true,part=start": { - "model": "create:block/encased_chain_drive/end_horizontal", - "x": 270 - }, - "axis=y,axis_along_first=true,part=start": { - "model": "create:block/encased_chain_drive/end_vertical", - "y": 270 - }, - "axis=z,axis_along_first=true,part=start": { - "model": "create:block/encased_chain_drive/end_horizontal", - "y": 90 - }, - "axis=x,axis_along_first=false,part=middle": { - "model": "create:block/encased_chain_drive/middle_horizontal" - }, - "axis=y,axis_along_first=false,part=middle": { - "model": "create:block/encased_chain_drive/middle_vertical" - }, - "axis=z,axis_along_first=false,part=middle": { - "model": "create:block/encased_chain_drive/middle_horizontal", - "x": 90, - "y": 90 - }, - "axis=x,axis_along_first=true,part=middle": { - "model": "create:block/encased_chain_drive/middle_horizontal", - "x": 90 - }, - "axis=y,axis_along_first=true,part=middle": { - "model": "create:block/encased_chain_drive/middle_vertical", - "y": 90 - }, - "axis=z,axis_along_first=true,part=middle": { - "model": "create:block/encased_chain_drive/middle_horizontal", - "y": 90 - }, - "axis=x,axis_along_first=false,part=end": { - "model": "create:block/encased_chain_drive/end_horizontal" - }, - "axis=y,axis_along_first=false,part=end": { - "model": "create:block/encased_chain_drive/end_vertical", - "y": 180 - }, - "axis=z,axis_along_first=false,part=end": { - "model": "create:block/encased_chain_drive/end_horizontal", - "x": 90, - "y": 90 - }, - "axis=x,axis_along_first=true,part=end": { - "model": "create:block/encased_chain_drive/end_horizontal", - "x": 90 - }, - "axis=y,axis_along_first=true,part=end": { - "model": "create:block/encased_chain_drive/end_vertical", - "y": 90 - }, - "axis=z,axis_along_first=true,part=end": { - "model": "create:block/encased_chain_drive/end_horizontal", - "y": 270 - }, - "axis=x,axis_along_first=false,part=none": { - "model": "create:block/encased_chain_drive/single", - "y": 90 - }, - "axis=y,axis_along_first=false,part=none": { - "model": "create:block/encased_chain_drive/single", - "x": 90 - }, - "axis=z,axis_along_first=false,part=none": { - "model": "create:block/encased_chain_drive/single" - }, - "axis=x,axis_along_first=true,part=none": { - "model": "create:block/encased_chain_drive/single", - "y": 90 - }, - "axis=y,axis_along_first=true,part=none": { - "model": "create:block/encased_chain_drive/single", - "x": 90 - }, - "axis=z,axis_along_first=true,part=none": { - "model": "create:block/encased_chain_drive/single" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/encased_fan.json b/src/generated/resources/assets/create/blockstates/encased_fan.json deleted file mode 100644 index 8ef6e2d1f..000000000 --- a/src/generated/resources/assets/create/blockstates/encased_fan.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/encased_fan/block", - "x": 180 - }, - "facing=up": { - "model": "create:block/encased_fan/block" - }, - "facing=north": { - "model": "create:block/encased_fan/block", - "x": 90 - }, - "facing=south": { - "model": "create:block/encased_fan/block", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/encased_fan/block", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/encased_fan/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json b/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json deleted file mode 100644 index dc11492f3..000000000 --- a/src/generated/resources/assets/create/blockstates/encased_fluid_pipe.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "multipart": [ - { - "when": { - "down": "false" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_flat", - "x": -90 - } - }, - { - "when": { - "up": "false" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_flat", - "x": 90 - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_flat", - "y": 180 - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_flat" - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_flat", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_flat", - "y": 270 - } - }, - { - "when": { - "down": "true" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_open", - "x": -90 - } - }, - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_open", - "x": 90 - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_open", - "y": 180 - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_open" - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_open", - "y": 90 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/encased_fluid_pipe/block_open", - "y": 270 - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks.json deleted file mode 100644 index 9a2bd1194..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_andesite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_slab.json deleted file mode 100644 index 449303892..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_andesite_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_andesite_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_andesite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_stairs.json deleted file mode 100644 index 238ac168e..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_andesite_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_andesite_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_andesite_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_andesite_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_andesite_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_andesite_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_andesite_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_andesite_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_andesite_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_andesite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_andesite_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_andesite_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_andesite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_andesite_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_wall.json deleted file mode 100644 index c97282dfc..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_andesite_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_andesite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks.json deleted file mode 100644 index b3fce7442..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_dark_scoria_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_slab.json deleted file mode 100644 index 9b1931e8e..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_dark_scoria_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_dark_scoria_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_dark_scoria_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_stairs.json deleted file mode 100644 index fad791483..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_dark_scoria_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_dark_scoria_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_dark_scoria_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_dark_scoria_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_dark_scoria_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_dark_scoria_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_dark_scoria_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_dark_scoria_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_dark_scoria_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_wall.json deleted file mode 100644 index 45d53b90d..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_dark_scoria_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_dark_scoria_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks.json deleted file mode 100644 index 679e5b9d7..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_diorite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_slab.json deleted file mode 100644 index bbc60857c..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_diorite_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_diorite_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_diorite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_stairs.json deleted file mode 100644 index 12fb518bb..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_diorite_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_diorite_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_diorite_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_diorite_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_diorite_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_diorite_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_diorite_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_diorite_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_diorite_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_diorite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_diorite_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_diorite_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_diorite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_diorite_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_wall.json deleted file mode 100644 index 798706852..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_diorite_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_diorite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks.json deleted file mode 100644 index 118c36707..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_dolomite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_slab.json deleted file mode 100644 index e4bb03eb6..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_dolomite_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_dolomite_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_dolomite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_stairs.json deleted file mode 100644 index 8a61c4a78..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_dolomite_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_dolomite_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_dolomite_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_dolomite_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_dolomite_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_dolomite_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_dolomite_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_dolomite_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_dolomite_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_wall.json deleted file mode 100644 index 1236a6155..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_dolomite_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_dolomite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks.json deleted file mode 100644 index d7b6d1076..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_gabbro_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_slab.json deleted file mode 100644 index 8f7a3d02d..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_gabbro_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_gabbro_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_gabbro_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_stairs.json deleted file mode 100644 index f58d606bf..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_gabbro_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_gabbro_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_gabbro_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_gabbro_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_gabbro_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_gabbro_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_gabbro_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_gabbro_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_gabbro_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_wall.json deleted file mode 100644 index f66422d97..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_gabbro_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_gabbro_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_granite_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_granite_bricks.json deleted file mode 100644 index 96b3b41b3..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_granite_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_granite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_slab.json deleted file mode 100644 index 315ac69ec..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_granite_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_granite_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_granite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_stairs.json deleted file mode 100644 index a5d5a2ab0..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_granite_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_granite_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_granite_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_granite_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_granite_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_granite_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_granite_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_granite_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_granite_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_granite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_granite_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_granite_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_granite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_granite_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_wall.json deleted file mode 100644 index c9d673885..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_granite_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_granite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks.json deleted file mode 100644 index ba0fa0f69..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_limestone_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_slab.json deleted file mode 100644 index d8e783750..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_limestone_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_limestone_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_limestone_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_stairs.json deleted file mode 100644 index 45d139f37..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_limestone_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_limestone_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_limestone_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_limestone_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_limestone_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_limestone_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_limestone_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_limestone_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_limestone_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_limestone_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_limestone_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_limestone_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_limestone_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_limestone_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_wall.json deleted file mode 100644 index da2db84b1..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_limestone_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_limestone_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks.json deleted file mode 100644 index 7b6458c7b..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_scoria_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_slab.json deleted file mode 100644 index 8eff9ecab..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_scoria_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_scoria_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_scoria_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_stairs.json deleted file mode 100644 index 24c5e3e36..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_scoria_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_scoria_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_scoria_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_scoria_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_scoria_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_scoria_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_scoria_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_scoria_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_scoria_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_scoria_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_scoria_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_scoria_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_scoria_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_scoria_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_wall.json deleted file mode 100644 index bb19e64ea..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_scoria_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_scoria_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks.json b/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks.json deleted file mode 100644 index fad2e3b84..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/fancy_weathered_limestone_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json b/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json deleted file mode 100644 index 22b3f46ee..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/fancy_weathered_limestone_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/fancy_weathered_limestone_bricks_slab" - }, - "type=double": { - "model": "create:block/fancy_weathered_limestone_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json deleted file mode 100644 index 6f9d80f39..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/fancy_weathered_limestone_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json b/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json deleted file mode 100644 index 1bd59925e..000000000 --- a/src/generated/resources/assets/create/blockstates/fancy_weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/fancy_weathered_limestone_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fluid_pipe.json b/src/generated/resources/assets/create/blockstates/fluid_pipe.json deleted file mode 100644 index e76540a4a..000000000 --- a/src/generated/resources/assets/create/blockstates/fluid_pipe.json +++ /dev/null @@ -1,425 +0,0 @@ -{ - "multipart": [ - { - "when": { - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/block_end", - "x": 180, - "y": 90 - } - }, - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/block_end", - "y": 90 - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/block_end", - "x": 90 - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/block_end", - "x": 90, - "y": 180 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/block_end", - "x": 90, - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/block_end", - "x": 90, - "y": 90 - } - }, - { - "when": { - "up": "true", - "north": "true", - "south": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lu_x" - } - }, - { - "when": { - "up": "true", - "north": "false", - "south": "true", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/ru_x" - } - }, - { - "when": { - "up": "false", - "north": "true", - "south": "false", - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ld_x" - } - }, - { - "when": { - "up": "false", - "north": "false", - "south": "true", - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/rd_x" - } - }, - { - "when": { - "up": "true", - "north": "false", - "south": "false", - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_x" - } - }, - { - "when": { - "up": "true", - "north": "false", - "south": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_x" - } - }, - { - "when": { - "up": "false", - "north": "false", - "south": "false", - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_x" - } - }, - { - "when": { - "up": "false", - "north": "true", - "south": "true", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_x" - } - }, - { - "when": { - "up": "false", - "north": "true", - "south": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_x" - } - }, - { - "when": { - "up": "false", - "north": "false", - "south": "true", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_x" - } - }, - { - "when": { - "up": "false", - "north": "false", - "south": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/none_x" - } - }, - { - "when": { - "south": "true", - "west": "true", - "east": "false", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lu_y" - } - }, - { - "when": { - "south": "true", - "west": "false", - "east": "true", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/ru_y" - } - }, - { - "when": { - "south": "false", - "west": "true", - "east": "false", - "north": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ld_y" - } - }, - { - "when": { - "south": "false", - "west": "false", - "east": "true", - "north": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/rd_y" - } - }, - { - "when": { - "south": "true", - "west": "false", - "east": "false", - "north": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_y" - } - }, - { - "when": { - "south": "true", - "west": "false", - "east": "false", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_y" - } - }, - { - "when": { - "south": "false", - "west": "false", - "east": "false", - "north": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_y" - } - }, - { - "when": { - "south": "false", - "west": "true", - "east": "true", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_y" - } - }, - { - "when": { - "south": "false", - "west": "true", - "east": "false", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_y" - } - }, - { - "when": { - "south": "false", - "west": "false", - "east": "true", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_y" - } - }, - { - "when": { - "south": "false", - "west": "false", - "east": "false", - "north": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/none_y" - } - }, - { - "when": { - "up": "true", - "east": "true", - "west": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lu_z" - } - }, - { - "when": { - "up": "true", - "east": "false", - "west": "true", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/ru_z" - } - }, - { - "when": { - "up": "false", - "east": "true", - "west": "false", - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ld_z" - } - }, - { - "when": { - "up": "false", - "east": "false", - "west": "true", - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/rd_z" - } - }, - { - "when": { - "up": "true", - "east": "false", - "west": "false", - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_z" - } - }, - { - "when": { - "up": "true", - "east": "false", - "west": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_z" - } - }, - { - "when": { - "up": "false", - "east": "false", - "west": "false", - "down": "true" - }, - "apply": { - "model": "create:block/fluid_pipe/ud_z" - } - }, - { - "when": { - "up": "false", - "east": "true", - "west": "true", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_z" - } - }, - { - "when": { - "up": "false", - "east": "true", - "west": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_z" - } - }, - { - "when": { - "up": "false", - "east": "false", - "west": "true", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/lr_z" - } - }, - { - "when": { - "up": "false", - "east": "false", - "west": "false", - "down": "false" - }, - "apply": { - "model": "create:block/fluid_pipe/none_z" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fluid_tank.json b/src/generated/resources/assets/create/blockstates/fluid_tank.json deleted file mode 100644 index ab140d245..000000000 --- a/src/generated/resources/assets/create/blockstates/fluid_tank.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "variants": { - "bottom=false,shape=plain,top=false": { - "model": "create:block/fluid_tank/block_middle" - }, - "bottom=true,shape=plain,top=false": { - "model": "create:block/fluid_tank/block_bottom" - }, - "bottom=false,shape=window,top=false": { - "model": "create:block/fluid_tank/block_middle_window" - }, - "bottom=true,shape=window,top=false": { - "model": "create:block/fluid_tank/block_bottom_window" - }, - "bottom=false,shape=window_nw,top=false": { - "model": "create:block/fluid_tank/block_middle_window_nw" - }, - "bottom=true,shape=window_nw,top=false": { - "model": "create:block/fluid_tank/block_bottom_window_nw" - }, - "bottom=false,shape=window_sw,top=false": { - "model": "create:block/fluid_tank/block_middle_window_sw" - }, - "bottom=true,shape=window_sw,top=false": { - "model": "create:block/fluid_tank/block_bottom_window_sw" - }, - "bottom=false,shape=window_ne,top=false": { - "model": "create:block/fluid_tank/block_middle_window_ne" - }, - "bottom=true,shape=window_ne,top=false": { - "model": "create:block/fluid_tank/block_bottom_window_ne" - }, - "bottom=false,shape=window_se,top=false": { - "model": "create:block/fluid_tank/block_middle_window_se" - }, - "bottom=true,shape=window_se,top=false": { - "model": "create:block/fluid_tank/block_bottom_window_se" - }, - "bottom=false,shape=plain,top=true": { - "model": "create:block/fluid_tank/block_top" - }, - "bottom=true,shape=plain,top=true": { - "model": "create:block/fluid_tank/block_single" - }, - "bottom=false,shape=window,top=true": { - "model": "create:block/fluid_tank/block_top_window" - }, - "bottom=true,shape=window,top=true": { - "model": "create:block/fluid_tank/block_single_window" - }, - "bottom=false,shape=window_nw,top=true": { - "model": "create:block/fluid_tank/block_top_window_nw" - }, - "bottom=true,shape=window_nw,top=true": { - "model": "create:block/fluid_tank/block_single_window_nw" - }, - "bottom=false,shape=window_sw,top=true": { - "model": "create:block/fluid_tank/block_top_window_sw" - }, - "bottom=true,shape=window_sw,top=true": { - "model": "create:block/fluid_tank/block_single_window_sw" - }, - "bottom=false,shape=window_ne,top=true": { - "model": "create:block/fluid_tank/block_top_window_ne" - }, - "bottom=true,shape=window_ne,top=true": { - "model": "create:block/fluid_tank/block_single_window_ne" - }, - "bottom=false,shape=window_se,top=true": { - "model": "create:block/fluid_tank/block_top_window_se" - }, - "bottom=true,shape=window_se,top=true": { - "model": "create:block/fluid_tank/block_single_window_se" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/fluid_valve.json b/src/generated/resources/assets/create/blockstates/fluid_valve.json deleted file mode 100644 index 41d048d24..000000000 --- a/src/generated/resources/assets/create/blockstates/fluid_valve.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "variants": { - "axis_along_first=false,enabled=false,facing=down": { - "model": "create:block/fluid_valve/block_horizontal_closed", - "x": 270, - "y": 90 - }, - "axis_along_first=true,enabled=false,facing=down": { - "model": "create:block/fluid_valve/block_horizontal_closed", - "x": 270 - }, - "axis_along_first=false,enabled=true,facing=down": { - "model": "create:block/fluid_valve/block_horizontal_open", - "x": 270, - "y": 90 - }, - "axis_along_first=true,enabled=true,facing=down": { - "model": "create:block/fluid_valve/block_horizontal_open", - "x": 270 - }, - "axis_along_first=false,enabled=false,facing=up": { - "model": "create:block/fluid_valve/block_horizontal_closed", - "x": 90, - "y": 90 - }, - "axis_along_first=true,enabled=false,facing=up": { - "model": "create:block/fluid_valve/block_horizontal_closed", - "x": 90 - }, - "axis_along_first=false,enabled=true,facing=up": { - "model": "create:block/fluid_valve/block_horizontal_open", - "x": 90, - "y": 90 - }, - "axis_along_first=true,enabled=true,facing=up": { - "model": "create:block/fluid_valve/block_horizontal_open", - "x": 90 - }, - "axis_along_first=false,enabled=false,facing=north": { - "model": "create:block/fluid_valve/block_vertical_closed", - "y": 180 - }, - "axis_along_first=true,enabled=false,facing=north": { - "model": "create:block/fluid_valve/block_horizontal_closed", - "y": 180 - }, - "axis_along_first=false,enabled=true,facing=north": { - "model": "create:block/fluid_valve/block_vertical_open", - "y": 180 - }, - "axis_along_first=true,enabled=true,facing=north": { - "model": "create:block/fluid_valve/block_horizontal_open", - "y": 180 - }, - "axis_along_first=false,enabled=false,facing=south": { - "model": "create:block/fluid_valve/block_vertical_closed" - }, - "axis_along_first=true,enabled=false,facing=south": { - "model": "create:block/fluid_valve/block_horizontal_closed" - }, - "axis_along_first=false,enabled=true,facing=south": { - "model": "create:block/fluid_valve/block_vertical_open" - }, - "axis_along_first=true,enabled=true,facing=south": { - "model": "create:block/fluid_valve/block_horizontal_open" - }, - "axis_along_first=false,enabled=false,facing=west": { - "model": "create:block/fluid_valve/block_horizontal_closed", - "y": 90 - }, - "axis_along_first=true,enabled=false,facing=west": { - "model": "create:block/fluid_valve/block_vertical_closed", - "y": 90 - }, - "axis_along_first=false,enabled=true,facing=west": { - "model": "create:block/fluid_valve/block_horizontal_open", - "y": 90 - }, - "axis_along_first=true,enabled=true,facing=west": { - "model": "create:block/fluid_valve/block_vertical_open", - "y": 90 - }, - "axis_along_first=false,enabled=false,facing=east": { - "model": "create:block/fluid_valve/block_horizontal_closed", - "y": 270 - }, - "axis_along_first=true,enabled=false,facing=east": { - "model": "create:block/fluid_valve/block_vertical_closed", - "y": 270 - }, - "axis_along_first=false,enabled=true,facing=east": { - "model": "create:block/fluid_valve/block_horizontal_open", - "y": 270 - }, - "axis_along_first=true,enabled=true,facing=east": { - "model": "create:block/fluid_valve/block_vertical_open", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/flywheel.json b/src/generated/resources/assets/create/blockstates/flywheel.json deleted file mode 100644 index 380bc21bb..000000000 --- a/src/generated/resources/assets/create/blockstates/flywheel.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "variants": { - "connection=none,facing=north": { - "model": "create:block/flywheel/casing_none", - "y": 270 - }, - "connection=left,facing=north": { - "model": "create:block/flywheel/casing_left", - "y": 270 - }, - "connection=right,facing=north": { - "model": "create:block/flywheel/casing_right", - "y": 270 - }, - "connection=none,facing=south": { - "model": "create:block/flywheel/casing_none", - "y": 90 - }, - "connection=left,facing=south": { - "model": "create:block/flywheel/casing_left", - "y": 90 - }, - "connection=right,facing=south": { - "model": "create:block/flywheel/casing_right", - "y": 90 - }, - "connection=none,facing=west": { - "model": "create:block/flywheel/casing_none", - "y": 180 - }, - "connection=left,facing=west": { - "model": "create:block/flywheel/casing_left", - "y": 180 - }, - "connection=right,facing=west": { - "model": "create:block/flywheel/casing_right", - "y": 180 - }, - "connection=none,facing=east": { - "model": "create:block/flywheel/casing_none" - }, - "connection=left,facing=east": { - "model": "create:block/flywheel/casing_left" - }, - "connection=right,facing=east": { - "model": "create:block/flywheel/casing_right" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/framed_glass.json b/src/generated/resources/assets/create/blockstates/framed_glass.json deleted file mode 100644 index 30accaee6..000000000 --- a/src/generated/resources/assets/create/blockstates/framed_glass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/framed_glass" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/framed_glass_pane.json b/src/generated/resources/assets/create/blockstates/framed_glass_pane.json deleted file mode 100644 index 99f80b10b..000000000 --- a/src/generated/resources/assets/create/blockstates/framed_glass_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/framed_glass_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/framed_glass_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/framed_glass_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/framed_glass_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/framed_glass_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/framed_glass_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/framed_glass_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/framed_glass_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/framed_glass_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/furnace_engine.json b/src/generated/resources/assets/create/blockstates/furnace_engine.json deleted file mode 100644 index 6d10935d6..000000000 --- a/src/generated/resources/assets/create/blockstates/furnace_engine.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/furnace_engine/block" - }, - "facing=south": { - "model": "create:block/furnace_engine/block", - "y": 180 - }, - "facing=west": { - "model": "create:block/furnace_engine/block", - "y": 270 - }, - "facing=east": { - "model": "create:block/furnace_engine/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro.json b/src/generated/resources/assets/create/blockstates/gabbro.json deleted file mode 100644 index d729a5b42..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/gabbro" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_bricks.json b/src/generated/resources/assets/create/blockstates/gabbro_bricks.json deleted file mode 100644 index 20db78e5b..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/gabbro_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_bricks_slab.json b/src/generated/resources/assets/create/blockstates/gabbro_bricks_slab.json deleted file mode 100644 index 853351896..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/gabbro_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/gabbro_bricks_slab" - }, - "type=double": { - "model": "create:block/gabbro_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/gabbro_bricks_stairs.json deleted file mode 100644 index b49272cf3..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/gabbro_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/gabbro_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/gabbro_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/gabbro_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/gabbro_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/gabbro_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/gabbro_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/gabbro_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/gabbro_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/gabbro_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/gabbro_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/gabbro_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/gabbro_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/gabbro_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/gabbro_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/gabbro_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/gabbro_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/gabbro_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/gabbro_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/gabbro_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/gabbro_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/gabbro_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/gabbro_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/gabbro_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/gabbro_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/gabbro_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/gabbro_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/gabbro_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/gabbro_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/gabbro_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/gabbro_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/gabbro_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/gabbro_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/gabbro_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/gabbro_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/gabbro_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/gabbro_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/gabbro_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/gabbro_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/gabbro_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_bricks_wall.json b/src/generated/resources/assets/create/blockstates/gabbro_bricks_wall.json deleted file mode 100644 index 3efa0c023..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/gabbro_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_cobblestone.json b/src/generated/resources/assets/create/blockstates/gabbro_cobblestone.json deleted file mode 100644 index fb8e3c567..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/gabbro_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_slab.json deleted file mode 100644 index ab99ce1ce..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/gabbro_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/gabbro_cobblestone_slab" - }, - "type=double": { - "model": "create:block/gabbro_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_stairs.json deleted file mode 100644 index 2d8c42d91..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/gabbro_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/gabbro_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/gabbro_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/gabbro_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/gabbro_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/gabbro_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/gabbro_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/gabbro_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/gabbro_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/gabbro_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/gabbro_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/gabbro_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/gabbro_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/gabbro_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_wall.json deleted file mode 100644 index 3901f8fe9..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/gabbro_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gabbro_pillar.json b/src/generated/resources/assets/create/blockstates/gabbro_pillar.json deleted file mode 100644 index 5d40feab8..000000000 --- a/src/generated/resources/assets/create/blockstates/gabbro_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/gabbro_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/gabbro_pillar" - }, - "axis=z": { - "model": "create:block/gabbro_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gantry_carriage.json b/src/generated/resources/assets/create/blockstates/gantry_carriage.json deleted file mode 100644 index 06cac5b0c..000000000 --- a/src/generated/resources/assets/create/blockstates/gantry_carriage.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down": { - "model": "create:block/gantry_carriage/horizontal", - "x": 270, - "y": 90 - }, - "axis_along_first=true,facing=down": { - "model": "create:block/gantry_carriage/horizontal", - "x": 270 - }, - "axis_along_first=false,facing=up": { - "model": "create:block/gantry_carriage/horizontal", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=up": { - "model": "create:block/gantry_carriage/horizontal", - "x": 90 - }, - "axis_along_first=false,facing=north": { - "model": "create:block/gantry_carriage/vertical", - "y": 180 - }, - "axis_along_first=true,facing=north": { - "model": "create:block/gantry_carriage/horizontal", - "y": 180 - }, - "axis_along_first=false,facing=south": { - "model": "create:block/gantry_carriage/vertical" - }, - "axis_along_first=true,facing=south": { - "model": "create:block/gantry_carriage/horizontal" - }, - "axis_along_first=false,facing=west": { - "model": "create:block/gantry_carriage/horizontal", - "y": 90 - }, - "axis_along_first=true,facing=west": { - "model": "create:block/gantry_carriage/vertical", - "y": 90 - }, - "axis_along_first=false,facing=east": { - "model": "create:block/gantry_carriage/horizontal", - "y": 270 - }, - "axis_along_first=true,facing=east": { - "model": "create:block/gantry_carriage/vertical", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gantry_shaft.json b/src/generated/resources/assets/create/blockstates/gantry_shaft.json deleted file mode 100644 index 379d7a3da..000000000 --- a/src/generated/resources/assets/create/blockstates/gantry_shaft.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "variants": { - "facing=down,part=start,powered=false": { - "model": "create:block/gantry_shaft_start_flipped", - "x": 180 - }, - "facing=up,part=start,powered=false": { - "model": "create:block/gantry_shaft/block_start" - }, - "facing=north,part=start,powered=false": { - "model": "create:block/gantry_shaft_start_flipped", - "x": 90 - }, - "facing=south,part=start,powered=false": { - "model": "create:block/gantry_shaft/block_start", - "x": 90, - "y": 180 - }, - "facing=west,part=start,powered=false": { - "model": "create:block/gantry_shaft_start_flipped", - "x": 90, - "y": 270 - }, - "facing=east,part=start,powered=false": { - "model": "create:block/gantry_shaft/block_start", - "x": 90, - "y": 90 - }, - "facing=down,part=middle,powered=false": { - "model": "create:block/gantry_shaft_middle_flipped", - "x": 180 - }, - "facing=up,part=middle,powered=false": { - "model": "create:block/gantry_shaft/block_middle" - }, - "facing=north,part=middle,powered=false": { - "model": "create:block/gantry_shaft_middle_flipped", - "x": 90 - }, - "facing=south,part=middle,powered=false": { - "model": "create:block/gantry_shaft/block_middle", - "x": 90, - "y": 180 - }, - "facing=west,part=middle,powered=false": { - "model": "create:block/gantry_shaft_middle_flipped", - "x": 90, - "y": 270 - }, - "facing=east,part=middle,powered=false": { - "model": "create:block/gantry_shaft/block_middle", - "x": 90, - "y": 90 - }, - "facing=down,part=end,powered=false": { - "model": "create:block/gantry_shaft_end_flipped", - "x": 180 - }, - "facing=up,part=end,powered=false": { - "model": "create:block/gantry_shaft/block_end" - }, - "facing=north,part=end,powered=false": { - "model": "create:block/gantry_shaft_end_flipped", - "x": 90 - }, - "facing=south,part=end,powered=false": { - "model": "create:block/gantry_shaft/block_end", - "x": 90, - "y": 180 - }, - "facing=west,part=end,powered=false": { - "model": "create:block/gantry_shaft_end_flipped", - "x": 90, - "y": 270 - }, - "facing=east,part=end,powered=false": { - "model": "create:block/gantry_shaft/block_end", - "x": 90, - "y": 90 - }, - "facing=down,part=single,powered=false": { - "model": "create:block/gantry_shaft_single_flipped", - "x": 180 - }, - "facing=up,part=single,powered=false": { - "model": "create:block/gantry_shaft/block_single" - }, - "facing=north,part=single,powered=false": { - "model": "create:block/gantry_shaft_single_flipped", - "x": 90 - }, - "facing=south,part=single,powered=false": { - "model": "create:block/gantry_shaft/block_single", - "x": 90, - "y": 180 - }, - "facing=west,part=single,powered=false": { - "model": "create:block/gantry_shaft_single_flipped", - "x": 90, - "y": 270 - }, - "facing=east,part=single,powered=false": { - "model": "create:block/gantry_shaft/block_single", - "x": 90, - "y": 90 - }, - "facing=down,part=start,powered=true": { - "model": "create:block/gantry_shaft_start_powered_flipped", - "x": 180 - }, - "facing=up,part=start,powered=true": { - "model": "create:block/gantry_shaft_start_powered" - }, - "facing=north,part=start,powered=true": { - "model": "create:block/gantry_shaft_start_powered_flipped", - "x": 90 - }, - "facing=south,part=start,powered=true": { - "model": "create:block/gantry_shaft_start_powered", - "x": 90, - "y": 180 - }, - "facing=west,part=start,powered=true": { - "model": "create:block/gantry_shaft_start_powered_flipped", - "x": 90, - "y": 270 - }, - "facing=east,part=start,powered=true": { - "model": "create:block/gantry_shaft_start_powered", - "x": 90, - "y": 90 - }, - "facing=down,part=middle,powered=true": { - "model": "create:block/gantry_shaft_middle_powered_flipped", - "x": 180 - }, - "facing=up,part=middle,powered=true": { - "model": "create:block/gantry_shaft_middle_powered" - }, - "facing=north,part=middle,powered=true": { - "model": "create:block/gantry_shaft_middle_powered_flipped", - "x": 90 - }, - "facing=south,part=middle,powered=true": { - "model": "create:block/gantry_shaft_middle_powered", - "x": 90, - "y": 180 - }, - "facing=west,part=middle,powered=true": { - "model": "create:block/gantry_shaft_middle_powered_flipped", - "x": 90, - "y": 270 - }, - "facing=east,part=middle,powered=true": { - "model": "create:block/gantry_shaft_middle_powered", - "x": 90, - "y": 90 - }, - "facing=down,part=end,powered=true": { - "model": "create:block/gantry_shaft_end_powered_flipped", - "x": 180 - }, - "facing=up,part=end,powered=true": { - "model": "create:block/gantry_shaft_end_powered" - }, - "facing=north,part=end,powered=true": { - "model": "create:block/gantry_shaft_end_powered_flipped", - "x": 90 - }, - "facing=south,part=end,powered=true": { - "model": "create:block/gantry_shaft_end_powered", - "x": 90, - "y": 180 - }, - "facing=west,part=end,powered=true": { - "model": "create:block/gantry_shaft_end_powered_flipped", - "x": 90, - "y": 270 - }, - "facing=east,part=end,powered=true": { - "model": "create:block/gantry_shaft_end_powered", - "x": 90, - "y": 90 - }, - "facing=down,part=single,powered=true": { - "model": "create:block/gantry_shaft_single_powered_flipped", - "x": 180 - }, - "facing=up,part=single,powered=true": { - "model": "create:block/gantry_shaft_single_powered" - }, - "facing=north,part=single,powered=true": { - "model": "create:block/gantry_shaft_single_powered_flipped", - "x": 90 - }, - "facing=south,part=single,powered=true": { - "model": "create:block/gantry_shaft_single_powered", - "x": 90, - "y": 180 - }, - "facing=west,part=single,powered=true": { - "model": "create:block/gantry_shaft_single_powered_flipped", - "x": 90, - "y": 270 - }, - "facing=east,part=single,powered=true": { - "model": "create:block/gantry_shaft_single_powered", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gearbox.json b/src/generated/resources/assets/create/blockstates/gearbox.json deleted file mode 100644 index 2c7b4ca20..000000000 --- a/src/generated/resources/assets/create/blockstates/gearbox.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/gearbox/block", - "x": 90, - "y": 90, - "uvlock": true - }, - "axis=y": { - "model": "create:block/gearbox/block", - "uvlock": true - }, - "axis=z": { - "model": "create:block/gearbox/block", - "x": 90, - "y": 180, - "uvlock": true - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gearshift.json b/src/generated/resources/assets/create/blockstates/gearshift.json deleted file mode 100644 index 7efea836f..000000000 --- a/src/generated/resources/assets/create/blockstates/gearshift.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "axis=x,powered=false": { - "model": "create:block/gearshift/block", - "x": 90, - "y": 90 - }, - "axis=y,powered=false": { - "model": "create:block/gearshift/block" - }, - "axis=z,powered=false": { - "model": "create:block/gearshift/block", - "x": 90, - "y": 180 - }, - "axis=x,powered=true": { - "model": "create:block/gearshift/block_powered", - "x": 90, - "y": 90 - }, - "axis=y,powered=true": { - "model": "create:block/gearshift/block_powered" - }, - "axis=z,powered=true": { - "model": "create:block/gearshift/block_powered", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/glass_fluid_pipe.json b/src/generated/resources/assets/create/blockstates/glass_fluid_pipe.json deleted file mode 100644 index 190223a77..000000000 --- a/src/generated/resources/assets/create/blockstates/glass_fluid_pipe.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "alt=false,axis=x": { - "model": "create:block/fluid_pipe/window", - "x": 90, - "y": 90 - }, - "alt=true,axis=x": { - "model": "create:block/fluid_pipe/window_alt", - "x": 90, - "y": 90 - }, - "alt=false,axis=y": { - "model": "create:block/fluid_pipe/window" - }, - "alt=true,axis=y": { - "model": "create:block/fluid_pipe/window_alt" - }, - "alt=false,axis=z": { - "model": "create:block/fluid_pipe/window", - "x": 90, - "y": 180 - }, - "alt=true,axis=z": { - "model": "create:block/fluid_pipe/window_alt", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_bricks.json b/src/generated/resources/assets/create/blockstates/granite_bricks.json deleted file mode 100644 index 1fce7c5bd..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/granite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_bricks_slab.json b/src/generated/resources/assets/create/blockstates/granite_bricks_slab.json deleted file mode 100644 index 6d9949a54..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/granite_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/granite_bricks_slab" - }, - "type=double": { - "model": "create:block/granite_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/granite_bricks_stairs.json deleted file mode 100644 index 9dc4c6e08..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/granite_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/granite_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/granite_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/granite_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/granite_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/granite_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/granite_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/granite_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/granite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/granite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/granite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/granite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/granite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/granite_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/granite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/granite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/granite_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/granite_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/granite_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/granite_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/granite_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/granite_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/granite_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/granite_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/granite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/granite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/granite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/granite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/granite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/granite_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/granite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/granite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/granite_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/granite_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/granite_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/granite_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/granite_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/granite_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/granite_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/granite_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_bricks_wall.json b/src/generated/resources/assets/create/blockstates/granite_bricks_wall.json deleted file mode 100644 index 0cda531a3..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/granite_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/granite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/granite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/granite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/granite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/granite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/granite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/granite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/granite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_cobblestone.json b/src/generated/resources/assets/create/blockstates/granite_cobblestone.json deleted file mode 100644 index 4e0170435..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/granite_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/granite_cobblestone_slab.json deleted file mode 100644 index 9796c398b..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/granite_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/granite_cobblestone_slab" - }, - "type=double": { - "model": "create:block/granite_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/granite_cobblestone_stairs.json deleted file mode 100644 index 001941eb1..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/granite_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/granite_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/granite_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/granite_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/granite_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/granite_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/granite_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/granite_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/granite_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/granite_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/granite_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/granite_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/granite_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/granite_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/granite_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/granite_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/granite_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/granite_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/granite_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/granite_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/granite_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/granite_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/granite_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/granite_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/granite_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/granite_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/granite_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/granite_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/granite_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/granite_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/granite_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/granite_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/granite_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/granite_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/granite_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/granite_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/granite_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/granite_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/granite_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/granite_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/granite_cobblestone_wall.json deleted file mode 100644 index 64cb78f94..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/granite_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/granite_pillar.json b/src/generated/resources/assets/create/blockstates/granite_pillar.json deleted file mode 100644 index 8d01d6201..000000000 --- a/src/generated/resources/assets/create/blockstates/granite_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/granite_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/granite_pillar" - }, - "axis=z": { - "model": "create:block/granite_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gray_sail.json b/src/generated/resources/assets/create/blockstates/gray_sail.json deleted file mode 100644 index a8295fe9e..000000000 --- a/src/generated/resources/assets/create/blockstates/gray_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/gray_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/gray_sail" - }, - "facing=north": { - "model": "create:block/gray_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/gray_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/gray_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/gray_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gray_seat.json b/src/generated/resources/assets/create/blockstates/gray_seat.json deleted file mode 100644 index 271ea6449..000000000 --- a/src/generated/resources/assets/create/blockstates/gray_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/gray_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/gray_valve_handle.json b/src/generated/resources/assets/create/blockstates/gray_valve_handle.json deleted file mode 100644 index 9b85eb843..000000000 --- a/src/generated/resources/assets/create/blockstates/gray_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/gray_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/gray_valve_handle" - }, - "facing=north": { - "model": "create:block/gray_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/gray_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/gray_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/gray_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/green_sail.json b/src/generated/resources/assets/create/blockstates/green_sail.json deleted file mode 100644 index 5ee371035..000000000 --- a/src/generated/resources/assets/create/blockstates/green_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/green_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/green_sail" - }, - "facing=north": { - "model": "create:block/green_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/green_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/green_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/green_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/green_seat.json b/src/generated/resources/assets/create/blockstates/green_seat.json deleted file mode 100644 index b799ebf68..000000000 --- a/src/generated/resources/assets/create/blockstates/green_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/green_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/green_valve_handle.json b/src/generated/resources/assets/create/blockstates/green_valve_handle.json deleted file mode 100644 index aed9eac23..000000000 --- a/src/generated/resources/assets/create/blockstates/green_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/green_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/green_valve_handle" - }, - "facing=north": { - "model": "create:block/green_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/green_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/green_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/green_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/hand_crank.json b/src/generated/resources/assets/create/blockstates/hand_crank.json deleted file mode 100644 index e10d67ce0..000000000 --- a/src/generated/resources/assets/create/blockstates/hand_crank.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/hand_crank/block", - "x": 180 - }, - "facing=up": { - "model": "create:block/hand_crank/block" - }, - "facing=north": { - "model": "create:block/hand_crank/block", - "x": 90 - }, - "facing=south": { - "model": "create:block/hand_crank/block", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/hand_crank/block", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/hand_crank/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/honey.json b/src/generated/resources/assets/create/blockstates/honey.json deleted file mode 100644 index 60b561e56..000000000 --- a/src/generated/resources/assets/create/blockstates/honey.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/honey" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/horizontal_framed_glass.json b/src/generated/resources/assets/create/blockstates/horizontal_framed_glass.json deleted file mode 100644 index b1041887a..000000000 --- a/src/generated/resources/assets/create/blockstates/horizontal_framed_glass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/horizontal_framed_glass" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/horizontal_framed_glass_pane.json b/src/generated/resources/assets/create/blockstates/horizontal_framed_glass_pane.json deleted file mode 100644 index 85d2dc809..000000000 --- a/src/generated/resources/assets/create/blockstates/horizontal_framed_glass_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/horizontal_framed_glass_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/horizontal_framed_glass_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/horizontal_framed_glass_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/horizontal_framed_glass_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/horizontal_framed_glass_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/horizontal_framed_glass_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/horizontal_framed_glass_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/horizontal_framed_glass_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/horizontal_framed_glass_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/hose_pulley.json b/src/generated/resources/assets/create/blockstates/hose_pulley.json deleted file mode 100644 index b69e3b7db..000000000 --- a/src/generated/resources/assets/create/blockstates/hose_pulley.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/hose_pulley/block" - }, - "facing=south": { - "model": "create:block/hose_pulley/block", - "y": 180 - }, - "facing=west": { - "model": "create:block/hose_pulley/block", - "y": 270 - }, - "facing=east": { - "model": "create:block/hose_pulley/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/item_drain.json b/src/generated/resources/assets/create/blockstates/item_drain.json deleted file mode 100644 index 139085ae4..000000000 --- a/src/generated/resources/assets/create/blockstates/item_drain.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/item_drain" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/jungle_window.json b/src/generated/resources/assets/create/blockstates/jungle_window.json deleted file mode 100644 index bdd18ba10..000000000 --- a/src/generated/resources/assets/create/blockstates/jungle_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/jungle_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/jungle_window_pane.json b/src/generated/resources/assets/create/blockstates/jungle_window_pane.json deleted file mode 100644 index 00b0c5a9d..000000000 --- a/src/generated/resources/assets/create/blockstates/jungle_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/jungle_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/jungle_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/jungle_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/jungle_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/jungle_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/jungle_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/jungle_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/jungle_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/jungle_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/large_cogwheel.json b/src/generated/resources/assets/create/blockstates/large_cogwheel.json deleted file mode 100644 index 620157584..000000000 --- a/src/generated/resources/assets/create/blockstates/large_cogwheel.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/large_cogwheel", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/large_cogwheel" - }, - "axis=z": { - "model": "create:block/large_cogwheel", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_andesite.json b/src/generated/resources/assets/create/blockstates/layered_andesite.json deleted file mode 100644 index 598e0084b..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_andesite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_andesite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_dark_scoria.json b/src/generated/resources/assets/create/blockstates/layered_dark_scoria.json deleted file mode 100644 index 476ecfebb..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_dark_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_dark_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_diorite.json b/src/generated/resources/assets/create/blockstates/layered_diorite.json deleted file mode 100644 index 4e4b5b041..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_diorite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_diorite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_dolomite.json b/src/generated/resources/assets/create/blockstates/layered_dolomite.json deleted file mode 100644 index 5e9516a01..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_dolomite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_dolomite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_gabbro.json b/src/generated/resources/assets/create/blockstates/layered_gabbro.json deleted file mode 100644 index c96a34db9..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_gabbro.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_gabbro" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_granite.json b/src/generated/resources/assets/create/blockstates/layered_granite.json deleted file mode 100644 index 5319b45f0..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_granite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_granite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_limestone.json b/src/generated/resources/assets/create/blockstates/layered_limestone.json deleted file mode 100644 index 0cbbf5809..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_scoria.json b/src/generated/resources/assets/create/blockstates/layered_scoria.json deleted file mode 100644 index 884c229f2..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/layered_weathered_limestone.json b/src/generated/resources/assets/create/blockstates/layered_weathered_limestone.json deleted file mode 100644 index adb98dac9..000000000 --- a/src/generated/resources/assets/create/blockstates/layered_weathered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/layered_weathered_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/light_blue_sail.json b/src/generated/resources/assets/create/blockstates/light_blue_sail.json deleted file mode 100644 index f11f20a7b..000000000 --- a/src/generated/resources/assets/create/blockstates/light_blue_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/light_blue_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/light_blue_sail" - }, - "facing=north": { - "model": "create:block/light_blue_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/light_blue_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/light_blue_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/light_blue_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/light_blue_seat.json b/src/generated/resources/assets/create/blockstates/light_blue_seat.json deleted file mode 100644 index fac160941..000000000 --- a/src/generated/resources/assets/create/blockstates/light_blue_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/light_blue_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json b/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json deleted file mode 100644 index e42c11775..000000000 --- a/src/generated/resources/assets/create/blockstates/light_blue_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/light_blue_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/light_blue_valve_handle" - }, - "facing=north": { - "model": "create:block/light_blue_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/light_blue_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/light_blue_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/light_blue_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/light_gray_sail.json b/src/generated/resources/assets/create/blockstates/light_gray_sail.json deleted file mode 100644 index c1bb74562..000000000 --- a/src/generated/resources/assets/create/blockstates/light_gray_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/light_gray_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/light_gray_sail" - }, - "facing=north": { - "model": "create:block/light_gray_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/light_gray_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/light_gray_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/light_gray_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/light_gray_seat.json b/src/generated/resources/assets/create/blockstates/light_gray_seat.json deleted file mode 100644 index ed9d20dfa..000000000 --- a/src/generated/resources/assets/create/blockstates/light_gray_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/light_gray_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json b/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json deleted file mode 100644 index 488dc982a..000000000 --- a/src/generated/resources/assets/create/blockstates/light_gray_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/light_gray_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/light_gray_valve_handle" - }, - "facing=north": { - "model": "create:block/light_gray_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/light_gray_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/light_gray_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/light_gray_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/lime_sail.json b/src/generated/resources/assets/create/blockstates/lime_sail.json deleted file mode 100644 index 7aeea435a..000000000 --- a/src/generated/resources/assets/create/blockstates/lime_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/lime_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/lime_sail" - }, - "facing=north": { - "model": "create:block/lime_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/lime_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/lime_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/lime_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/lime_seat.json b/src/generated/resources/assets/create/blockstates/lime_seat.json deleted file mode 100644 index f9ae64b35..000000000 --- a/src/generated/resources/assets/create/blockstates/lime_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/lime_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/lime_valve_handle.json b/src/generated/resources/assets/create/blockstates/lime_valve_handle.json deleted file mode 100644 index e761549f8..000000000 --- a/src/generated/resources/assets/create/blockstates/lime_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/lime_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/lime_valve_handle" - }, - "facing=north": { - "model": "create:block/lime_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/lime_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/lime_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/lime_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limesand.json b/src/generated/resources/assets/create/blockstates/limesand.json deleted file mode 100644 index 2bac440b2..000000000 --- a/src/generated/resources/assets/create/blockstates/limesand.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/limesand" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone.json b/src/generated/resources/assets/create/blockstates/limestone.json deleted file mode 100644 index 2cc44dc9b..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_bricks.json b/src/generated/resources/assets/create/blockstates/limestone_bricks.json deleted file mode 100644 index ed0347022..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/limestone_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_bricks_slab.json b/src/generated/resources/assets/create/blockstates/limestone_bricks_slab.json deleted file mode 100644 index bfdccf58e..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/limestone_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/limestone_bricks_slab" - }, - "type=double": { - "model": "create:block/limestone_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/limestone_bricks_stairs.json deleted file mode 100644 index f26bfe6fd..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/limestone_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/limestone_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/limestone_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/limestone_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/limestone_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/limestone_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/limestone_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/limestone_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/limestone_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/limestone_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/limestone_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/limestone_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/limestone_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/limestone_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/limestone_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/limestone_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/limestone_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/limestone_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/limestone_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/limestone_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/limestone_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/limestone_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/limestone_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/limestone_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/limestone_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/limestone_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/limestone_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/limestone_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/limestone_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/limestone_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/limestone_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/limestone_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/limestone_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/limestone_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/limestone_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/limestone_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/limestone_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/limestone_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/limestone_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/limestone_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_bricks_wall.json b/src/generated/resources/assets/create/blockstates/limestone_bricks_wall.json deleted file mode 100644 index 3eb285415..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/limestone_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_cobblestone.json b/src/generated/resources/assets/create/blockstates/limestone_cobblestone.json deleted file mode 100644 index ec47a9c97..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/limestone_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/limestone_cobblestone_slab.json deleted file mode 100644 index c45c5fb13..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/limestone_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/limestone_cobblestone_slab" - }, - "type=double": { - "model": "create:block/limestone_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/limestone_cobblestone_stairs.json deleted file mode 100644 index 293e4b1dd..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/limestone_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/limestone_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/limestone_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/limestone_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/limestone_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/limestone_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/limestone_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/limestone_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/limestone_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/limestone_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/limestone_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/limestone_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/limestone_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/limestone_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/limestone_cobblestone_wall.json deleted file mode 100644 index 2b38424fc..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/limestone_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/limestone_pillar.json b/src/generated/resources/assets/create/blockstates/limestone_pillar.json deleted file mode 100644 index eebf52dc0..000000000 --- a/src/generated/resources/assets/create/blockstates/limestone_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/limestone_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/limestone_pillar" - }, - "axis=z": { - "model": "create:block/limestone_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/linear_chassis.json b/src/generated/resources/assets/create/blockstates/linear_chassis.json deleted file mode 100644 index a8000d0c9..000000000 --- a/src/generated/resources/assets/create/blockstates/linear_chassis.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "variants": { - "axis=x,sticky_bottom=false,sticky_top=false": { - "model": "create:block/linear_chassis", - "x": 90, - "y": 90 - }, - "axis=y,sticky_bottom=false,sticky_top=false": { - "model": "create:block/linear_chassis" - }, - "axis=z,sticky_bottom=false,sticky_top=false": { - "model": "create:block/linear_chassis", - "x": 90, - "y": 180 - }, - "axis=x,sticky_bottom=true,sticky_top=false": { - "model": "create:block/linear_chassis_bottom", - "x": 90, - "y": 90 - }, - "axis=y,sticky_bottom=true,sticky_top=false": { - "model": "create:block/linear_chassis_bottom" - }, - "axis=z,sticky_bottom=true,sticky_top=false": { - "model": "create:block/linear_chassis_bottom", - "x": 90, - "y": 180 - }, - "axis=x,sticky_bottom=false,sticky_top=true": { - "model": "create:block/linear_chassis_top", - "x": 90, - "y": 90 - }, - "axis=y,sticky_bottom=false,sticky_top=true": { - "model": "create:block/linear_chassis_top" - }, - "axis=z,sticky_bottom=false,sticky_top=true": { - "model": "create:block/linear_chassis_top", - "x": 90, - "y": 180 - }, - "axis=x,sticky_bottom=true,sticky_top=true": { - "model": "create:block/linear_chassis_top_bottom", - "x": 90, - "y": 90 - }, - "axis=y,sticky_bottom=true,sticky_top=true": { - "model": "create:block/linear_chassis_top_bottom" - }, - "axis=z,sticky_bottom=true,sticky_top=true": { - "model": "create:block/linear_chassis_top_bottom", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/lit_blaze_burner.json b/src/generated/resources/assets/create/blockstates/lit_blaze_burner.json deleted file mode 100644 index 5befc1351..000000000 --- a/src/generated/resources/assets/create/blockstates/lit_blaze_burner.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/blaze_burner/block_with_fire" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/magenta_sail.json b/src/generated/resources/assets/create/blockstates/magenta_sail.json deleted file mode 100644 index 78b975de0..000000000 --- a/src/generated/resources/assets/create/blockstates/magenta_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/magenta_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/magenta_sail" - }, - "facing=north": { - "model": "create:block/magenta_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/magenta_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/magenta_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/magenta_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/magenta_seat.json b/src/generated/resources/assets/create/blockstates/magenta_seat.json deleted file mode 100644 index 6b8bc862f..000000000 --- a/src/generated/resources/assets/create/blockstates/magenta_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/magenta_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json b/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json deleted file mode 100644 index bfcd42027..000000000 --- a/src/generated/resources/assets/create/blockstates/magenta_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/magenta_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/magenta_valve_handle" - }, - "facing=north": { - "model": "create:block/magenta_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/magenta_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/magenta_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/magenta_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_arm.json b/src/generated/resources/assets/create/blockstates/mechanical_arm.json deleted file mode 100644 index b283c0432..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_arm.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "variants": { - "ceiling=false": { - "model": "create:block/mechanical_arm/block" - }, - "ceiling=true": { - "model": "create:block/mechanical_arm/block", - "x": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_bearing.json b/src/generated/resources/assets/create/blockstates/mechanical_bearing.json deleted file mode 100644 index 97fd52d1f..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_bearing.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/mechanical_bearing", - "x": 180 - }, - "facing=up": { - "model": "create:block/mechanical_bearing" - }, - "facing=north": { - "model": "create:block/mechanical_bearing", - "x": 90 - }, - "facing=south": { - "model": "create:block/mechanical_bearing", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/mechanical_bearing", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/mechanical_bearing", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_crafter.json b/src/generated/resources/assets/create/blockstates/mechanical_crafter.json deleted file mode 100644 index 4a74d8676..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_crafter.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "variants": { - "facing=north,pointing=up": { - "model": "create:block/mechanical_crafter/block" - }, - "facing=south,pointing=up": { - "model": "create:block/mechanical_crafter/block", - "y": 180 - }, - "facing=west,pointing=up": { - "model": "create:block/mechanical_crafter/block", - "y": 270 - }, - "facing=east,pointing=up": { - "model": "create:block/mechanical_crafter/block", - "y": 90 - }, - "facing=north,pointing=left": { - "model": "create:block/mechanical_crafter/block" - }, - "facing=south,pointing=left": { - "model": "create:block/mechanical_crafter/block", - "y": 180 - }, - "facing=west,pointing=left": { - "model": "create:block/mechanical_crafter/block", - "y": 270 - }, - "facing=east,pointing=left": { - "model": "create:block/mechanical_crafter/block", - "y": 90 - }, - "facing=north,pointing=down": { - "model": "create:block/mechanical_crafter/block" - }, - "facing=south,pointing=down": { - "model": "create:block/mechanical_crafter/block", - "y": 180 - }, - "facing=west,pointing=down": { - "model": "create:block/mechanical_crafter/block", - "y": 270 - }, - "facing=east,pointing=down": { - "model": "create:block/mechanical_crafter/block", - "y": 90 - }, - "facing=north,pointing=right": { - "model": "create:block/mechanical_crafter/block" - }, - "facing=south,pointing=right": { - "model": "create:block/mechanical_crafter/block", - "y": 180 - }, - "facing=west,pointing=right": { - "model": "create:block/mechanical_crafter/block", - "y": 270 - }, - "facing=east,pointing=right": { - "model": "create:block/mechanical_crafter/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_drill.json b/src/generated/resources/assets/create/blockstates/mechanical_drill.json deleted file mode 100644 index ead643cc9..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_drill.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/mechanical_drill/block", - "x": 180 - }, - "facing=up": { - "model": "create:block/mechanical_drill/block" - }, - "facing=north": { - "model": "create:block/mechanical_drill/block", - "x": 90 - }, - "facing=south": { - "model": "create:block/mechanical_drill/block", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/mechanical_drill/block", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/mechanical_drill/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_harvester.json b/src/generated/resources/assets/create/blockstates/mechanical_harvester.json deleted file mode 100644 index 3c36b8627..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_harvester.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/mechanical_harvester/block" - }, - "facing=south": { - "model": "create:block/mechanical_harvester/block", - "y": 180 - }, - "facing=west": { - "model": "create:block/mechanical_harvester/block", - "y": 270 - }, - "facing=east": { - "model": "create:block/mechanical_harvester/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_mixer.json b/src/generated/resources/assets/create/blockstates/mechanical_mixer.json deleted file mode 100644 index 3f9b0b0d8..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_mixer.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mechanical_mixer/block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_piston.json b/src/generated/resources/assets/create/blockstates/mechanical_piston.json deleted file mode 100644 index 0b7e8ebfb..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_piston.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down,state=retracted": { - "model": "create:block/mechanical_piston/normal/block", - "x": 180 - }, - "axis_along_first=true,facing=down,state=retracted": { - "model": "create:block/mechanical_piston/normal/block_rotated", - "x": 180 - }, - "axis_along_first=false,facing=up,state=retracted": { - "model": "create:block/mechanical_piston/normal/block" - }, - "axis_along_first=true,facing=up,state=retracted": { - "model": "create:block/mechanical_piston/normal/block_rotated" - }, - "axis_along_first=false,facing=north,state=retracted": { - "model": "create:block/mechanical_piston/normal/block", - "x": 90 - }, - "axis_along_first=true,facing=north,state=retracted": { - "model": "create:block/mechanical_piston/normal/block_rotated", - "x": 90 - }, - "axis_along_first=false,facing=south,state=retracted": { - "model": "create:block/mechanical_piston/normal/block", - "x": 90, - "y": 180 - }, - "axis_along_first=true,facing=south,state=retracted": { - "model": "create:block/mechanical_piston/normal/block_rotated", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=west,state=retracted": { - "model": "create:block/mechanical_piston/normal/block_rotated", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=west,state=retracted": { - "model": "create:block/mechanical_piston/normal/block", - "x": 90, - "y": 270 - }, - "axis_along_first=false,facing=east,state=retracted": { - "model": "create:block/mechanical_piston/normal/block_rotated", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=east,state=retracted": { - "model": "create:block/mechanical_piston/normal/block", - "x": 90, - "y": 90 - }, - "axis_along_first=false,facing=down,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 180 - }, - "axis_along_first=true,facing=down,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 180 - }, - "axis_along_first=false,facing=up,state=moving": { - "model": "create:block/mechanical_piston/moving/block" - }, - "axis_along_first=true,facing=up,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated" - }, - "axis_along_first=false,facing=north,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 90 - }, - "axis_along_first=true,facing=north,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 90 - }, - "axis_along_first=false,facing=south,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 90, - "y": 180 - }, - "axis_along_first=true,facing=south,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=west,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=west,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 90, - "y": 270 - }, - "axis_along_first=false,facing=east,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=east,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 90, - "y": 90 - }, - "axis_along_first=false,facing=down,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 180 - }, - "axis_along_first=true,facing=down,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 180 - }, - "axis_along_first=false,facing=up,state=extended": { - "model": "create:block/mechanical_piston/extended/block" - }, - "axis_along_first=true,facing=up,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated" - }, - "axis_along_first=false,facing=north,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 90 - }, - "axis_along_first=true,facing=north,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 90 - }, - "axis_along_first=false,facing=south,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 90, - "y": 180 - }, - "axis_along_first=true,facing=south,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=west,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=west,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 90, - "y": 270 - }, - "axis_along_first=false,facing=east,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=east,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json b/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json deleted file mode 100644 index a97257b0a..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_piston_head.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "variants": { - "facing=down,type=normal": { - "model": "create:block/mechanical_piston/normal/head", - "x": 180 - }, - "facing=up,type=normal": { - "model": "create:block/mechanical_piston/normal/head" - }, - "facing=north,type=normal": { - "model": "create:block/mechanical_piston/normal/head", - "x": 90 - }, - "facing=south,type=normal": { - "model": "create:block/mechanical_piston/normal/head", - "x": 90, - "y": 180 - }, - "facing=west,type=normal": { - "model": "create:block/mechanical_piston/normal/head", - "x": 90, - "y": 270 - }, - "facing=east,type=normal": { - "model": "create:block/mechanical_piston/normal/head", - "x": 90, - "y": 90 - }, - "facing=down,type=sticky": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 180 - }, - "facing=up,type=sticky": { - "model": "create:block/mechanical_piston/sticky/head" - }, - "facing=north,type=sticky": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 90 - }, - "facing=south,type=sticky": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 90, - "y": 180 - }, - "facing=west,type=sticky": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 90, - "y": 270 - }, - "facing=east,type=sticky": { - "model": "create:block/mechanical_piston/sticky/head", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_plough.json b/src/generated/resources/assets/create/blockstates/mechanical_plough.json deleted file mode 100644 index 83bfa6dbd..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_plough.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/mechanical_plough" - }, - "facing=south": { - "model": "create:block/mechanical_plough", - "y": 180 - }, - "facing=west": { - "model": "create:block/mechanical_plough", - "y": 270 - }, - "facing=east": { - "model": "create:block/mechanical_plough", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_press.json b/src/generated/resources/assets/create/blockstates/mechanical_press.json deleted file mode 100644 index 5508dd837..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_press.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/mechanical_press/block" - }, - "facing=south": { - "model": "create:block/mechanical_press/block", - "y": 180 - }, - "facing=west": { - "model": "create:block/mechanical_press/block", - "y": 270 - }, - "facing=east": { - "model": "create:block/mechanical_press/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_pump.json b/src/generated/resources/assets/create/blockstates/mechanical_pump.json deleted file mode 100644 index 3b8c68f80..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_pump.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/mechanical_pump/block", - "x": 180 - }, - "facing=up": { - "model": "create:block/mechanical_pump/block" - }, - "facing=north": { - "model": "create:block/mechanical_pump/block", - "x": 90 - }, - "facing=south": { - "model": "create:block/mechanical_pump/block", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/mechanical_pump/block", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/mechanical_pump/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mechanical_saw.json b/src/generated/resources/assets/create/blockstates/mechanical_saw.json deleted file mode 100644 index bad1bc6d7..000000000 --- a/src/generated/resources/assets/create/blockstates/mechanical_saw.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down": { - "model": "create:block/mechanical_saw/vertical", - "x": 180 - }, - "axis_along_first=true,facing=down": { - "model": "create:block/mechanical_saw/vertical", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up": { - "model": "create:block/mechanical_saw/vertical" - }, - "axis_along_first=true,facing=up": { - "model": "create:block/mechanical_saw/vertical", - "y": 90 - }, - "axis_along_first=false,facing=north": { - "model": "create:block/mechanical_saw/horizontal", - "y": 180 - }, - "axis_along_first=true,facing=north": { - "model": "create:block/mechanical_saw/horizontal", - "y": 180 - }, - "axis_along_first=false,facing=south": { - "model": "create:block/mechanical_saw/horizontal" - }, - "axis_along_first=true,facing=south": { - "model": "create:block/mechanical_saw/horizontal" - }, - "axis_along_first=false,facing=west": { - "model": "create:block/mechanical_saw/horizontal", - "y": 90 - }, - "axis_along_first=true,facing=west": { - "model": "create:block/mechanical_saw/horizontal", - "y": 90 - }, - "axis_along_first=false,facing=east": { - "model": "create:block/mechanical_saw/horizontal", - "y": 270 - }, - "axis_along_first=true,facing=east": { - "model": "create:block/mechanical_saw/horizontal", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/metal_bracket.json b/src/generated/resources/assets/create/blockstates/metal_bracket.json deleted file mode 100644 index 12e229a33..000000000 --- a/src/generated/resources/assets/create/blockstates/metal_bracket.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down,type=pipe": { - "model": "create:block/bracket/pipe/ground_metal", - "x": 180 - }, - "axis_along_first=true,facing=down,type=pipe": { - "model": "create:block/bracket/pipe/ground_metal", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up,type=pipe": { - "model": "create:block/bracket/pipe/ground_metal" - }, - "axis_along_first=true,facing=up,type=pipe": { - "model": "create:block/bracket/pipe/ground_metal", - "y": 90 - }, - "axis_along_first=false,facing=north,type=pipe": { - "model": "create:block/bracket/pipe/wall_metal", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=north,type=pipe": { - "model": "create:block/bracket/pipe/wall_metal", - "y": 270 - }, - "axis_along_first=false,facing=south,type=pipe": { - "model": "create:block/bracket/pipe/wall_metal", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=south,type=pipe": { - "model": "create:block/bracket/pipe/wall_metal", - "y": 90 - }, - "axis_along_first=false,facing=west,type=pipe": { - "model": "create:block/bracket/pipe/wall_metal", - "y": 180 - }, - "axis_along_first=true,facing=west,type=pipe": { - "model": "create:block/bracket/pipe/wall_metal", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=east,type=pipe": { - "model": "create:block/bracket/pipe/wall_metal" - }, - "axis_along_first=true,facing=east,type=pipe": { - "model": "create:block/bracket/pipe/wall_metal", - "x": 90 - }, - "axis_along_first=false,facing=down,type=cog": { - "model": "create:block/bracket/cog/ground_metal", - "x": 180 - }, - "axis_along_first=true,facing=down,type=cog": { - "model": "create:block/bracket/cog/ground_metal", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up,type=cog": { - "model": "create:block/bracket/cog/ground_metal" - }, - "axis_along_first=true,facing=up,type=cog": { - "model": "create:block/bracket/cog/ground_metal", - "y": 90 - }, - "axis_along_first=false,facing=north,type=cog": { - "model": "create:block/bracket/cog/wall_metal", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=north,type=cog": { - "model": "create:block/bracket/cog/wall_metal", - "y": 270 - }, - "axis_along_first=false,facing=south,type=cog": { - "model": "create:block/bracket/cog/wall_metal", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=south,type=cog": { - "model": "create:block/bracket/cog/wall_metal", - "y": 90 - }, - "axis_along_first=false,facing=west,type=cog": { - "model": "create:block/bracket/cog/wall_metal", - "y": 180 - }, - "axis_along_first=true,facing=west,type=cog": { - "model": "create:block/bracket/cog/wall_metal", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=east,type=cog": { - "model": "create:block/bracket/cog/wall_metal" - }, - "axis_along_first=true,facing=east,type=cog": { - "model": "create:block/bracket/cog/wall_metal", - "x": 90 - }, - "axis_along_first=false,facing=down,type=shaft": { - "model": "create:block/bracket/shaft/ground_metal", - "x": 180 - }, - "axis_along_first=true,facing=down,type=shaft": { - "model": "create:block/bracket/shaft/ground_metal", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up,type=shaft": { - "model": "create:block/bracket/shaft/ground_metal" - }, - "axis_along_first=true,facing=up,type=shaft": { - "model": "create:block/bracket/shaft/ground_metal", - "y": 90 - }, - "axis_along_first=false,facing=north,type=shaft": { - "model": "create:block/bracket/shaft/wall_metal", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=north,type=shaft": { - "model": "create:block/bracket/shaft/wall_metal", - "y": 270 - }, - "axis_along_first=false,facing=south,type=shaft": { - "model": "create:block/bracket/shaft/wall_metal", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=south,type=shaft": { - "model": "create:block/bracket/shaft/wall_metal", - "y": 90 - }, - "axis_along_first=false,facing=west,type=shaft": { - "model": "create:block/bracket/shaft/wall_metal", - "y": 180 - }, - "axis_along_first=true,facing=west,type=shaft": { - "model": "create:block/bracket/shaft/wall_metal", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=east,type=shaft": { - "model": "create:block/bracket/shaft/wall_metal" - }, - "axis_along_first=true,facing=east,type=shaft": { - "model": "create:block/bracket/shaft/wall_metal", - "x": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/millstone.json b/src/generated/resources/assets/create/blockstates/millstone.json deleted file mode 100644 index 6d97d9aab..000000000 --- a/src/generated/resources/assets/create/blockstates/millstone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/millstone/block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/minecart_anchor.json b/src/generated/resources/assets/create/blockstates/minecart_anchor.json deleted file mode 100644 index e2be29cc3..000000000 --- a/src/generated/resources/assets/create/blockstates/minecart_anchor.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/cart_assembler/minecart_anchor" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_andesite.json b/src/generated/resources/assets/create/blockstates/mossy_andesite.json deleted file mode 100644 index d8a740fb7..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_andesite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_andesite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_dark_scoria.json b/src/generated/resources/assets/create/blockstates/mossy_dark_scoria.json deleted file mode 100644 index 2f4619fa0..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_dark_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_dark_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_diorite.json b/src/generated/resources/assets/create/blockstates/mossy_diorite.json deleted file mode 100644 index 1c0286c28..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_diorite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_diorite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_dolomite.json b/src/generated/resources/assets/create/blockstates/mossy_dolomite.json deleted file mode 100644 index 7dee7320e..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_dolomite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_dolomite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_gabbro.json b/src/generated/resources/assets/create/blockstates/mossy_gabbro.json deleted file mode 100644 index 0ac8ff6fc..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_gabbro.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_gabbro" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_granite.json b/src/generated/resources/assets/create/blockstates/mossy_granite.json deleted file mode 100644 index b1b5e5bde..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_granite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_granite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_limestone.json b/src/generated/resources/assets/create/blockstates/mossy_limestone.json deleted file mode 100644 index b9a0d1b41..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_scoria.json b/src/generated/resources/assets/create/blockstates/mossy_scoria.json deleted file mode 100644 index 6b4216f4e..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mossy_weathered_limestone.json b/src/generated/resources/assets/create/blockstates/mossy_weathered_limestone.json deleted file mode 100644 index 63c596fad..000000000 --- a/src/generated/resources/assets/create/blockstates/mossy_weathered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/mossy_weathered_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/mysterious_cuckoo_clock.json b/src/generated/resources/assets/create/blockstates/mysterious_cuckoo_clock.json deleted file mode 100644 index df80ece2d..000000000 --- a/src/generated/resources/assets/create/blockstates/mysterious_cuckoo_clock.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/cuckoo_clock/block" - }, - "facing=south": { - "model": "create:block/cuckoo_clock/block", - "y": 180 - }, - "facing=west": { - "model": "create:block/cuckoo_clock/block", - "y": 270 - }, - "facing=east": { - "model": "create:block/cuckoo_clock/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/natural_scoria.json b/src/generated/resources/assets/create/blockstates/natural_scoria.json deleted file mode 100644 index 539566a3d..000000000 --- a/src/generated/resources/assets/create/blockstates/natural_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/natural_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/nixie_tube.json b/src/generated/resources/assets/create/blockstates/nixie_tube.json deleted file mode 100644 index aa96a9615..000000000 --- a/src/generated/resources/assets/create/blockstates/nixie_tube.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "variants": { - "ceiling=false,facing=north": { - "model": "create:block/nixie_tube/block", - "y": 180 - }, - "ceiling=true,facing=north": { - "model": "create:block/nixie_tube/block", - "x": 180, - "y": 180 - }, - "ceiling=false,facing=south": { - "model": "create:block/nixie_tube/block" - }, - "ceiling=true,facing=south": { - "model": "create:block/nixie_tube/block", - "x": 180 - }, - "ceiling=false,facing=west": { - "model": "create:block/nixie_tube/block", - "y": 90 - }, - "ceiling=true,facing=west": { - "model": "create:block/nixie_tube/block", - "x": 180, - "y": 90 - }, - "ceiling=false,facing=east": { - "model": "create:block/nixie_tube/block", - "y": 270 - }, - "ceiling=true,facing=east": { - "model": "create:block/nixie_tube/block", - "x": 180, - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/nozzle.json b/src/generated/resources/assets/create/blockstates/nozzle.json deleted file mode 100644 index f8b8eef95..000000000 --- a/src/generated/resources/assets/create/blockstates/nozzle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/nozzle/block", - "x": 180 - }, - "facing=up": { - "model": "create:block/nozzle/block" - }, - "facing=north": { - "model": "create:block/nozzle/block", - "x": 90 - }, - "facing=south": { - "model": "create:block/nozzle/block", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/nozzle/block", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/nozzle/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/oak_window.json b/src/generated/resources/assets/create/blockstates/oak_window.json deleted file mode 100644 index a4073be78..000000000 --- a/src/generated/resources/assets/create/blockstates/oak_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/oak_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/oak_window_pane.json b/src/generated/resources/assets/create/blockstates/oak_window_pane.json deleted file mode 100644 index 42b8f1226..000000000 --- a/src/generated/resources/assets/create/blockstates/oak_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/oak_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/oak_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/oak_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/oak_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/oak_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/oak_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/oak_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/oak_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/oak_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/orange_sail.json b/src/generated/resources/assets/create/blockstates/orange_sail.json deleted file mode 100644 index 5495d60aa..000000000 --- a/src/generated/resources/assets/create/blockstates/orange_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/orange_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/orange_sail" - }, - "facing=north": { - "model": "create:block/orange_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/orange_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/orange_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/orange_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/orange_seat.json b/src/generated/resources/assets/create/blockstates/orange_seat.json deleted file mode 100644 index 3c7cbfce2..000000000 --- a/src/generated/resources/assets/create/blockstates/orange_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/orange_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/orange_valve_handle.json b/src/generated/resources/assets/create/blockstates/orange_valve_handle.json deleted file mode 100644 index 696d65489..000000000 --- a/src/generated/resources/assets/create/blockstates/orange_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/orange_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/orange_valve_handle" - }, - "facing=north": { - "model": "create:block/orange_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/orange_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/orange_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/orange_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/ornate_iron_window.json b/src/generated/resources/assets/create/blockstates/ornate_iron_window.json deleted file mode 100644 index 933d27cd0..000000000 --- a/src/generated/resources/assets/create/blockstates/ornate_iron_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/ornate_iron_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/ornate_iron_window_pane.json b/src/generated/resources/assets/create/blockstates/ornate_iron_window_pane.json deleted file mode 100644 index 0f3f4b6d9..000000000 --- a/src/generated/resources/assets/create/blockstates/ornate_iron_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/ornate_iron_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/ornate_iron_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/ornate_iron_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/ornate_iron_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/ornate_iron_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/ornate_iron_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/ornate_iron_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/ornate_iron_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/ornate_iron_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_andesite.json b/src/generated/resources/assets/create/blockstates/overgrown_andesite.json deleted file mode 100644 index 442c31114..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_andesite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_andesite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_dark_scoria.json b/src/generated/resources/assets/create/blockstates/overgrown_dark_scoria.json deleted file mode 100644 index 48201e74d..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_dark_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_dark_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_diorite.json b/src/generated/resources/assets/create/blockstates/overgrown_diorite.json deleted file mode 100644 index fc5db1318..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_diorite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_diorite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_dolomite.json b/src/generated/resources/assets/create/blockstates/overgrown_dolomite.json deleted file mode 100644 index d1d4e1462..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_dolomite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_dolomite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_gabbro.json b/src/generated/resources/assets/create/blockstates/overgrown_gabbro.json deleted file mode 100644 index 61d51cedd..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_gabbro.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_gabbro" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_granite.json b/src/generated/resources/assets/create/blockstates/overgrown_granite.json deleted file mode 100644 index beb8ccca0..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_granite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_granite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_limestone.json b/src/generated/resources/assets/create/blockstates/overgrown_limestone.json deleted file mode 100644 index d8116719c..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_scoria.json b/src/generated/resources/assets/create/blockstates/overgrown_scoria.json deleted file mode 100644 index 896e60da9..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/overgrown_weathered_limestone.json b/src/generated/resources/assets/create/blockstates/overgrown_weathered_limestone.json deleted file mode 100644 index 804e8efc1..000000000 --- a/src/generated/resources/assets/create/blockstates/overgrown_weathered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/overgrown_weathered_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_andesite.json b/src/generated/resources/assets/create/blockstates/paved_andesite.json deleted file mode 100644 index 410697f2b..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_andesite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_andesite" - }, - "covered=true": { - "model": "create:block/paved_andesite_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_andesite_slab.json b/src/generated/resources/assets/create/blockstates/paved_andesite_slab.json deleted file mode 100644 index ccdf0ae69..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_andesite_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_andesite_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_andesite_slab" - }, - "type=double": { - "model": "create:block/paved_andesite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_andesite_stairs.json b/src/generated/resources/assets/create/blockstates/paved_andesite_stairs.json deleted file mode 100644 index 6ea14781b..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_andesite_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_andesite_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_andesite_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_andesite_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_andesite_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_andesite_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_andesite_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_andesite_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_andesite_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_andesite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_andesite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_andesite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_andesite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_andesite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_andesite_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_andesite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_andesite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_andesite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_andesite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_andesite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_andesite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_andesite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_andesite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_andesite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_andesite_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_andesite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_andesite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_andesite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_andesite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_andesite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_andesite_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_andesite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_andesite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_andesite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_andesite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_andesite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_andesite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_andesite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_andesite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_andesite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_andesite_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_andesite_wall.json b/src/generated/resources/assets/create/blockstates/paved_andesite_wall.json deleted file mode 100644 index daf37db29..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_andesite_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_andesite_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_andesite_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_andesite_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_andesite_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_andesite_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_andesite_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_andesite_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_andesite_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_andesite_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_dark_scoria.json b/src/generated/resources/assets/create/blockstates/paved_dark_scoria.json deleted file mode 100644 index f4c267299..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_dark_scoria.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_dark_scoria" - }, - "covered=true": { - "model": "create:block/paved_dark_scoria_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_dark_scoria_slab.json b/src/generated/resources/assets/create/blockstates/paved_dark_scoria_slab.json deleted file mode 100644 index 68d22ee39..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_dark_scoria_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_dark_scoria_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_dark_scoria_slab" - }, - "type=double": { - "model": "create:block/paved_dark_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_dark_scoria_stairs.json b/src/generated/resources/assets/create/blockstates/paved_dark_scoria_stairs.json deleted file mode 100644 index dd3662ced..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_dark_scoria_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_dark_scoria_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_dark_scoria_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_dark_scoria_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_dark_scoria_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_dark_scoria_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_dark_scoria_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_dark_scoria_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_dark_scoria_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_dark_scoria_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_dark_scoria_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_dark_scoria_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_dark_scoria_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_dark_scoria_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_dark_scoria_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_dark_scoria_wall.json b/src/generated/resources/assets/create/blockstates/paved_dark_scoria_wall.json deleted file mode 100644 index 5dce13372..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_dark_scoria_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_dark_scoria_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_diorite.json b/src/generated/resources/assets/create/blockstates/paved_diorite.json deleted file mode 100644 index 1fe53d5fa..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_diorite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_diorite" - }, - "covered=true": { - "model": "create:block/paved_diorite_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_diorite_slab.json b/src/generated/resources/assets/create/blockstates/paved_diorite_slab.json deleted file mode 100644 index 4660878ca..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_diorite_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_diorite_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_diorite_slab" - }, - "type=double": { - "model": "create:block/paved_diorite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_diorite_stairs.json b/src/generated/resources/assets/create/blockstates/paved_diorite_stairs.json deleted file mode 100644 index d8d1b00f8..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_diorite_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_diorite_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_diorite_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_diorite_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_diorite_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_diorite_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_diorite_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_diorite_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_diorite_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_diorite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_diorite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_diorite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_diorite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_diorite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_diorite_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_diorite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_diorite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_diorite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_diorite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_diorite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_diorite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_diorite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_diorite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_diorite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_diorite_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_diorite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_diorite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_diorite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_diorite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_diorite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_diorite_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_diorite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_diorite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_diorite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_diorite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_diorite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_diorite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_diorite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_diorite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_diorite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_diorite_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_diorite_wall.json b/src/generated/resources/assets/create/blockstates/paved_diorite_wall.json deleted file mode 100644 index 7b55e8da7..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_diorite_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_diorite_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_diorite_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_diorite_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_diorite_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_diorite_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_diorite_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_diorite_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_diorite_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_diorite_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_dolomite.json b/src/generated/resources/assets/create/blockstates/paved_dolomite.json deleted file mode 100644 index 7526a1699..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_dolomite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_dolomite" - }, - "covered=true": { - "model": "create:block/paved_dolomite_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_dolomite_slab.json b/src/generated/resources/assets/create/blockstates/paved_dolomite_slab.json deleted file mode 100644 index 905d1c8d3..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_dolomite_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_dolomite_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_dolomite_slab" - }, - "type=double": { - "model": "create:block/paved_dolomite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_dolomite_stairs.json b/src/generated/resources/assets/create/blockstates/paved_dolomite_stairs.json deleted file mode 100644 index 16ebc03d4..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_dolomite_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_dolomite_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_dolomite_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_dolomite_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_dolomite_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_dolomite_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_dolomite_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_dolomite_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_dolomite_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_dolomite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_dolomite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_dolomite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_dolomite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_dolomite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_dolomite_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_dolomite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_dolomite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_dolomite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_dolomite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_dolomite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_dolomite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_dolomite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_dolomite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_dolomite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_dolomite_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_dolomite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_dolomite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_dolomite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_dolomite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_dolomite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_dolomite_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_dolomite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_dolomite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_dolomite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_dolomite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_dolomite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_dolomite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_dolomite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_dolomite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_dolomite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_dolomite_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_dolomite_wall.json b/src/generated/resources/assets/create/blockstates/paved_dolomite_wall.json deleted file mode 100644 index d5acceed9..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_dolomite_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_dolomite_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_gabbro.json b/src/generated/resources/assets/create/blockstates/paved_gabbro.json deleted file mode 100644 index 1c3c0a601..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_gabbro.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_gabbro" - }, - "covered=true": { - "model": "create:block/paved_gabbro_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_gabbro_slab.json b/src/generated/resources/assets/create/blockstates/paved_gabbro_slab.json deleted file mode 100644 index 4ebb9faa2..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_gabbro_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_gabbro_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_gabbro_slab" - }, - "type=double": { - "model": "create:block/paved_gabbro" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_gabbro_stairs.json b/src/generated/resources/assets/create/blockstates/paved_gabbro_stairs.json deleted file mode 100644 index 7775dd390..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_gabbro_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_gabbro_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_gabbro_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_gabbro_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_gabbro_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_gabbro_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_gabbro_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_gabbro_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_gabbro_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_gabbro_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_gabbro_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_gabbro_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_gabbro_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_gabbro_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_gabbro_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_gabbro_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_gabbro_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_gabbro_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_gabbro_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_gabbro_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_gabbro_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_gabbro_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_gabbro_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_gabbro_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_gabbro_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_gabbro_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_gabbro_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_gabbro_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_gabbro_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_gabbro_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_gabbro_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_gabbro_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_gabbro_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_gabbro_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_gabbro_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_gabbro_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_gabbro_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_gabbro_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_gabbro_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_gabbro_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_gabbro_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_gabbro_wall.json b/src/generated/resources/assets/create/blockstates/paved_gabbro_wall.json deleted file mode 100644 index 18190ab4d..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_gabbro_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_gabbro_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_granite.json b/src/generated/resources/assets/create/blockstates/paved_granite.json deleted file mode 100644 index 48d4ae9b9..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_granite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_granite" - }, - "covered=true": { - "model": "create:block/paved_granite_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_granite_slab.json b/src/generated/resources/assets/create/blockstates/paved_granite_slab.json deleted file mode 100644 index 986821447..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_granite_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_granite_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_granite_slab" - }, - "type=double": { - "model": "create:block/paved_granite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_granite_stairs.json b/src/generated/resources/assets/create/blockstates/paved_granite_stairs.json deleted file mode 100644 index e39727523..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_granite_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_granite_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_granite_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_granite_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_granite_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_granite_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_granite_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_granite_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_granite_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_granite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_granite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_granite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_granite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_granite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_granite_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_granite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_granite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_granite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_granite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_granite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_granite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_granite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_granite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_granite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_granite_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_granite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_granite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_granite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_granite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_granite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_granite_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_granite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_granite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_granite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_granite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_granite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_granite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_granite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_granite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_granite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_granite_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_granite_wall.json b/src/generated/resources/assets/create/blockstates/paved_granite_wall.json deleted file mode 100644 index bf92fbebb..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_granite_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_granite_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_granite_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_granite_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_granite_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_granite_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_granite_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_granite_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_granite_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_granite_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_limestone.json b/src/generated/resources/assets/create/blockstates/paved_limestone.json deleted file mode 100644 index d67574dc2..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_limestone.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_limestone" - }, - "covered=true": { - "model": "create:block/paved_limestone_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_limestone_slab.json b/src/generated/resources/assets/create/blockstates/paved_limestone_slab.json deleted file mode 100644 index 1152cc54b..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_limestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_limestone_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_limestone_slab" - }, - "type=double": { - "model": "create:block/paved_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_limestone_stairs.json b/src/generated/resources/assets/create/blockstates/paved_limestone_stairs.json deleted file mode 100644 index 6ed0b95a1..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_limestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_limestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_limestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_limestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_limestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_limestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_limestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_limestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_limestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_limestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_limestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_limestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_limestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_limestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_limestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_limestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_limestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_limestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_limestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_limestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_limestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_limestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_limestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_limestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_limestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_limestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_limestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_limestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_limestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_limestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_limestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_limestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_limestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_limestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_limestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_limestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_limestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_limestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_limestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_limestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_limestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_limestone_wall.json b/src/generated/resources/assets/create/blockstates/paved_limestone_wall.json deleted file mode 100644 index a2d544dfc..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_limestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_limestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_limestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_limestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_limestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_limestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_limestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_limestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_limestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_limestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_scoria.json b/src/generated/resources/assets/create/blockstates/paved_scoria.json deleted file mode 100644 index 220f2c1af..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_scoria.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_scoria" - }, - "covered=true": { - "model": "create:block/paved_scoria_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_scoria_slab.json b/src/generated/resources/assets/create/blockstates/paved_scoria_slab.json deleted file mode 100644 index 11f3b098d..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_scoria_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_scoria_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_scoria_slab" - }, - "type=double": { - "model": "create:block/paved_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_scoria_stairs.json b/src/generated/resources/assets/create/blockstates/paved_scoria_stairs.json deleted file mode 100644 index b80abbd4c..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_scoria_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_scoria_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_scoria_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_scoria_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_scoria_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_scoria_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_scoria_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_scoria_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_scoria_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_scoria_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_scoria_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_scoria_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_scoria_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_scoria_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_scoria_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_scoria_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_scoria_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_scoria_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_scoria_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_scoria_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_scoria_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_scoria_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_scoria_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_scoria_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_scoria_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_scoria_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_scoria_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_scoria_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_scoria_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_scoria_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_scoria_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_scoria_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_scoria_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_scoria_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_scoria_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_scoria_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_scoria_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_scoria_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_scoria_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_scoria_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_scoria_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_scoria_wall.json b/src/generated/resources/assets/create/blockstates/paved_scoria_wall.json deleted file mode 100644 index 2fd74720b..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_scoria_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_scoria_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_scoria_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_scoria_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_scoria_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_scoria_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_scoria_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_scoria_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_scoria_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_scoria_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_weathered_limestone.json b/src/generated/resources/assets/create/blockstates/paved_weathered_limestone.json deleted file mode 100644 index a9747a9d7..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_weathered_limestone.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "covered=false": { - "model": "create:block/paved_weathered_limestone" - }, - "covered=true": { - "model": "create:block/paved_weathered_limestone_covered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_slab.json b/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_slab.json deleted file mode 100644 index f8b7ddd22..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/paved_weathered_limestone_slab_top" - }, - "type=bottom": { - "model": "create:block/paved_weathered_limestone_slab" - }, - "type=double": { - "model": "create:block/paved_weathered_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_stairs.json b/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_stairs.json deleted file mode 100644 index 6eb3c1c5f..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/paved_weathered_limestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/paved_weathered_limestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/paved_weathered_limestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/paved_weathered_limestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/paved_weathered_limestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/paved_weathered_limestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/paved_weathered_limestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/paved_weathered_limestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/paved_weathered_limestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/paved_weathered_limestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/paved_weathered_limestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/paved_weathered_limestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/paved_weathered_limestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/paved_weathered_limestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_wall.json b/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_wall.json deleted file mode 100644 index a710f77bc..000000000 --- a/src/generated/resources/assets/create/blockstates/paved_weathered_limestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/paved_weathered_limestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/pink_sail.json b/src/generated/resources/assets/create/blockstates/pink_sail.json deleted file mode 100644 index 454f70dfc..000000000 --- a/src/generated/resources/assets/create/blockstates/pink_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/pink_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/pink_sail" - }, - "facing=north": { - "model": "create:block/pink_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/pink_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/pink_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/pink_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/pink_seat.json b/src/generated/resources/assets/create/blockstates/pink_seat.json deleted file mode 100644 index 93a0255d3..000000000 --- a/src/generated/resources/assets/create/blockstates/pink_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/pink_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/pink_valve_handle.json b/src/generated/resources/assets/create/blockstates/pink_valve_handle.json deleted file mode 100644 index 6097d8dee..000000000 --- a/src/generated/resources/assets/create/blockstates/pink_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/pink_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/pink_valve_handle" - }, - "facing=north": { - "model": "create:block/pink_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/pink_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/pink_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/pink_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/piston_extension_pole.json b/src/generated/resources/assets/create/blockstates/piston_extension_pole.json deleted file mode 100644 index 987043b22..000000000 --- a/src/generated/resources/assets/create/blockstates/piston_extension_pole.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/piston_extension_pole", - "x": 180 - }, - "facing=up": { - "model": "create:block/piston_extension_pole" - }, - "facing=north": { - "model": "create:block/piston_extension_pole", - "x": 90 - }, - "facing=south": { - "model": "create:block/piston_extension_pole", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/piston_extension_pole", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/piston_extension_pole", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_dark_scoria.json b/src/generated/resources/assets/create/blockstates/polished_dark_scoria.json deleted file mode 100644 index 2358409c7..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_dark_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/polished_dark_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_dark_scoria_slab.json b/src/generated/resources/assets/create/blockstates/polished_dark_scoria_slab.json deleted file mode 100644 index 9dfc9ff51..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_dark_scoria_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/polished_dark_scoria_slab_top" - }, - "type=bottom": { - "model": "create:block/polished_dark_scoria_slab" - }, - "type=double": { - "model": "create:block/polished_dark_scoria_slab_double" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_dark_scoria_stairs.json b/src/generated/resources/assets/create/blockstates/polished_dark_scoria_stairs.json deleted file mode 100644 index a84fa7f53..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_dark_scoria_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/polished_dark_scoria_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/polished_dark_scoria_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/polished_dark_scoria_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/polished_dark_scoria_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/polished_dark_scoria_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/polished_dark_scoria_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/polished_dark_scoria_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/polished_dark_scoria_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/polished_dark_scoria_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/polished_dark_scoria_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/polished_dark_scoria_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/polished_dark_scoria_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/polished_dark_scoria_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/polished_dark_scoria_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_dark_scoria_wall.json b/src/generated/resources/assets/create/blockstates/polished_dark_scoria_wall.json deleted file mode 100644 index 498927a06..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_dark_scoria_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/polished_dark_scoria_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_dolomite.json b/src/generated/resources/assets/create/blockstates/polished_dolomite.json deleted file mode 100644 index 7b3ac28e2..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_dolomite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/polished_dolomite" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_dolomite_slab.json b/src/generated/resources/assets/create/blockstates/polished_dolomite_slab.json deleted file mode 100644 index e90068f8e..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_dolomite_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/polished_dolomite_slab_top" - }, - "type=bottom": { - "model": "create:block/polished_dolomite_slab" - }, - "type=double": { - "model": "create:block/polished_dolomite_slab_double" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_dolomite_stairs.json b/src/generated/resources/assets/create/blockstates/polished_dolomite_stairs.json deleted file mode 100644 index b67d83cfe..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_dolomite_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/polished_dolomite_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/polished_dolomite_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/polished_dolomite_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/polished_dolomite_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/polished_dolomite_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/polished_dolomite_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/polished_dolomite_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/polished_dolomite_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/polished_dolomite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/polished_dolomite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/polished_dolomite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/polished_dolomite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/polished_dolomite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/polished_dolomite_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/polished_dolomite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/polished_dolomite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/polished_dolomite_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/polished_dolomite_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/polished_dolomite_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/polished_dolomite_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/polished_dolomite_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/polished_dolomite_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/polished_dolomite_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/polished_dolomite_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/polished_dolomite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/polished_dolomite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/polished_dolomite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/polished_dolomite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/polished_dolomite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/polished_dolomite_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/polished_dolomite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/polished_dolomite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/polished_dolomite_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/polished_dolomite_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/polished_dolomite_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/polished_dolomite_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/polished_dolomite_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/polished_dolomite_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/polished_dolomite_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/polished_dolomite_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_dolomite_wall.json b/src/generated/resources/assets/create/blockstates/polished_dolomite_wall.json deleted file mode 100644 index 4250d68ec..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_dolomite_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/polished_dolomite_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_gabbro.json b/src/generated/resources/assets/create/blockstates/polished_gabbro.json deleted file mode 100644 index 266322b14..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_gabbro.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/polished_gabbro" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_gabbro_slab.json b/src/generated/resources/assets/create/blockstates/polished_gabbro_slab.json deleted file mode 100644 index c25126adf..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_gabbro_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/polished_gabbro_slab_top" - }, - "type=bottom": { - "model": "create:block/polished_gabbro_slab" - }, - "type=double": { - "model": "create:block/polished_gabbro_slab_double" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_gabbro_stairs.json b/src/generated/resources/assets/create/blockstates/polished_gabbro_stairs.json deleted file mode 100644 index 8bcad94ba..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_gabbro_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/polished_gabbro_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/polished_gabbro_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/polished_gabbro_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/polished_gabbro_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/polished_gabbro_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/polished_gabbro_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/polished_gabbro_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/polished_gabbro_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/polished_gabbro_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/polished_gabbro_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/polished_gabbro_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/polished_gabbro_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/polished_gabbro_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/polished_gabbro_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/polished_gabbro_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/polished_gabbro_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/polished_gabbro_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/polished_gabbro_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/polished_gabbro_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/polished_gabbro_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/polished_gabbro_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/polished_gabbro_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/polished_gabbro_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/polished_gabbro_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/polished_gabbro_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/polished_gabbro_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/polished_gabbro_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/polished_gabbro_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/polished_gabbro_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/polished_gabbro_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/polished_gabbro_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/polished_gabbro_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/polished_gabbro_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/polished_gabbro_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/polished_gabbro_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/polished_gabbro_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/polished_gabbro_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/polished_gabbro_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/polished_gabbro_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/polished_gabbro_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_gabbro_wall.json b/src/generated/resources/assets/create/blockstates/polished_gabbro_wall.json deleted file mode 100644 index 082ff1323..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_gabbro_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/polished_gabbro_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_limestone.json b/src/generated/resources/assets/create/blockstates/polished_limestone.json deleted file mode 100644 index 8b888a8c7..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/polished_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_limestone_slab.json b/src/generated/resources/assets/create/blockstates/polished_limestone_slab.json deleted file mode 100644 index ed880c36d..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_limestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/polished_limestone_slab_top" - }, - "type=bottom": { - "model": "create:block/polished_limestone_slab" - }, - "type=double": { - "model": "create:block/polished_limestone_slab_double" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_limestone_stairs.json b/src/generated/resources/assets/create/blockstates/polished_limestone_stairs.json deleted file mode 100644 index 788b8106e..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_limestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/polished_limestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/polished_limestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/polished_limestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/polished_limestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/polished_limestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/polished_limestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/polished_limestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/polished_limestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/polished_limestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/polished_limestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/polished_limestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/polished_limestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/polished_limestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/polished_limestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/polished_limestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/polished_limestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/polished_limestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/polished_limestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/polished_limestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/polished_limestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/polished_limestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/polished_limestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/polished_limestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/polished_limestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/polished_limestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/polished_limestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/polished_limestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/polished_limestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/polished_limestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/polished_limestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/polished_limestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/polished_limestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/polished_limestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/polished_limestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/polished_limestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/polished_limestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/polished_limestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/polished_limestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/polished_limestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/polished_limestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_limestone_wall.json b/src/generated/resources/assets/create/blockstates/polished_limestone_wall.json deleted file mode 100644 index e4a051fdd..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_limestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/polished_limestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/polished_limestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/polished_limestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/polished_limestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/polished_limestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/polished_limestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/polished_limestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/polished_limestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/polished_limestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_scoria.json b/src/generated/resources/assets/create/blockstates/polished_scoria.json deleted file mode 100644 index cf18797a5..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/polished_scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_scoria_slab.json b/src/generated/resources/assets/create/blockstates/polished_scoria_slab.json deleted file mode 100644 index 5612a69c2..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_scoria_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/polished_scoria_slab_top" - }, - "type=bottom": { - "model": "create:block/polished_scoria_slab" - }, - "type=double": { - "model": "create:block/polished_scoria_slab_double" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_scoria_stairs.json b/src/generated/resources/assets/create/blockstates/polished_scoria_stairs.json deleted file mode 100644 index e6ee9ea22..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_scoria_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/polished_scoria_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/polished_scoria_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/polished_scoria_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/polished_scoria_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/polished_scoria_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/polished_scoria_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/polished_scoria_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/polished_scoria_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/polished_scoria_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/polished_scoria_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/polished_scoria_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/polished_scoria_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/polished_scoria_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/polished_scoria_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/polished_scoria_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/polished_scoria_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/polished_scoria_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/polished_scoria_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/polished_scoria_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/polished_scoria_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/polished_scoria_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/polished_scoria_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/polished_scoria_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/polished_scoria_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/polished_scoria_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/polished_scoria_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/polished_scoria_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/polished_scoria_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/polished_scoria_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/polished_scoria_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/polished_scoria_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/polished_scoria_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/polished_scoria_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/polished_scoria_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/polished_scoria_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/polished_scoria_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/polished_scoria_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/polished_scoria_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/polished_scoria_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/polished_scoria_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_scoria_wall.json b/src/generated/resources/assets/create/blockstates/polished_scoria_wall.json deleted file mode 100644 index f953ab90f..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_scoria_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/polished_scoria_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/polished_scoria_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/polished_scoria_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/polished_scoria_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/polished_scoria_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/polished_scoria_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/polished_scoria_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/polished_scoria_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/polished_scoria_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_weathered_limestone.json b/src/generated/resources/assets/create/blockstates/polished_weathered_limestone.json deleted file mode 100644 index 8656c0100..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_weathered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/polished_weathered_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_slab.json b/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_slab.json deleted file mode 100644 index a7c74eac4..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/polished_weathered_limestone_slab_top" - }, - "type=bottom": { - "model": "create:block/polished_weathered_limestone_slab" - }, - "type=double": { - "model": "create:block/polished_weathered_limestone_slab_double" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_stairs.json b/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_stairs.json deleted file mode 100644 index a3dfe6897..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/polished_weathered_limestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/polished_weathered_limestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/polished_weathered_limestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/polished_weathered_limestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/polished_weathered_limestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/polished_weathered_limestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/polished_weathered_limestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/polished_weathered_limestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/polished_weathered_limestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/polished_weathered_limestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/polished_weathered_limestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/polished_weathered_limestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/polished_weathered_limestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/polished_weathered_limestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_wall.json b/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_wall.json deleted file mode 100644 index 5d5778461..000000000 --- a/src/generated/resources/assets/create/blockstates/polished_weathered_limestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/polished_weathered_limestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/portable_fluid_interface.json b/src/generated/resources/assets/create/blockstates/portable_fluid_interface.json deleted file mode 100644 index e231a5b5a..000000000 --- a/src/generated/resources/assets/create/blockstates/portable_fluid_interface.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/portable_fluid_interface/block", - "x": 180 - }, - "facing=up": { - "model": "create:block/portable_fluid_interface/block" - }, - "facing=north": { - "model": "create:block/portable_fluid_interface/block", - "x": 90 - }, - "facing=south": { - "model": "create:block/portable_fluid_interface/block", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/portable_fluid_interface/block", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/portable_fluid_interface/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/portable_storage_interface.json b/src/generated/resources/assets/create/blockstates/portable_storage_interface.json deleted file mode 100644 index 331749529..000000000 --- a/src/generated/resources/assets/create/blockstates/portable_storage_interface.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/portable_storage_interface/block", - "x": 180 - }, - "facing=up": { - "model": "create:block/portable_storage_interface/block" - }, - "facing=north": { - "model": "create:block/portable_storage_interface/block", - "x": 90 - }, - "facing=south": { - "model": "create:block/portable_storage_interface/block", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/portable_storage_interface/block", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/portable_storage_interface/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/powered_latch.json b/src/generated/resources/assets/create/blockstates/powered_latch.json deleted file mode 100644 index 34fff0296..000000000 --- a/src/generated/resources/assets/create/blockstates/powered_latch.json +++ /dev/null @@ -1,124 +0,0 @@ -{ - "variants": { - "facing=north,powered=false,powered_side=false,powering=false": { - "model": "create:block/powered_latch", - "y": 180 - }, - "facing=south,powered=false,powered_side=false,powering=false": { - "model": "create:block/powered_latch" - }, - "facing=west,powered=false,powered_side=false,powering=false": { - "model": "create:block/powered_latch", - "y": 90 - }, - "facing=east,powered=false,powered_side=false,powering=false": { - "model": "create:block/powered_latch", - "y": 270 - }, - "facing=north,powered=true,powered_side=false,powering=false": { - "model": "create:block/powered_latch", - "y": 180 - }, - "facing=south,powered=true,powered_side=false,powering=false": { - "model": "create:block/powered_latch" - }, - "facing=west,powered=true,powered_side=false,powering=false": { - "model": "create:block/powered_latch", - "y": 90 - }, - "facing=east,powered=true,powered_side=false,powering=false": { - "model": "create:block/powered_latch", - "y": 270 - }, - "facing=north,powered=false,powered_side=true,powering=false": { - "model": "create:block/powered_latch", - "y": 180 - }, - "facing=south,powered=false,powered_side=true,powering=false": { - "model": "create:block/powered_latch" - }, - "facing=west,powered=false,powered_side=true,powering=false": { - "model": "create:block/powered_latch", - "y": 90 - }, - "facing=east,powered=false,powered_side=true,powering=false": { - "model": "create:block/powered_latch", - "y": 270 - }, - "facing=north,powered=true,powered_side=true,powering=false": { - "model": "create:block/powered_latch", - "y": 180 - }, - "facing=south,powered=true,powered_side=true,powering=false": { - "model": "create:block/powered_latch" - }, - "facing=west,powered=true,powered_side=true,powering=false": { - "model": "create:block/powered_latch", - "y": 90 - }, - "facing=east,powered=true,powered_side=true,powering=false": { - "model": "create:block/powered_latch", - "y": 270 - }, - "facing=north,powered=false,powered_side=false,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 180 - }, - "facing=south,powered=false,powered_side=false,powering=true": { - "model": "create:block/powered_latch_powered" - }, - "facing=west,powered=false,powered_side=false,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 90 - }, - "facing=east,powered=false,powered_side=false,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 270 - }, - "facing=north,powered=true,powered_side=false,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 180 - }, - "facing=south,powered=true,powered_side=false,powering=true": { - "model": "create:block/powered_latch_powered" - }, - "facing=west,powered=true,powered_side=false,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 90 - }, - "facing=east,powered=true,powered_side=false,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 270 - }, - "facing=north,powered=false,powered_side=true,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 180 - }, - "facing=south,powered=false,powered_side=true,powering=true": { - "model": "create:block/powered_latch_powered" - }, - "facing=west,powered=false,powered_side=true,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 90 - }, - "facing=east,powered=false,powered_side=true,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 270 - }, - "facing=north,powered=true,powered_side=true,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 180 - }, - "facing=south,powered=true,powered_side=true,powering=true": { - "model": "create:block/powered_latch_powered" - }, - "facing=west,powered=true,powered_side=true,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 90 - }, - "facing=east,powered=true,powered_side=true,powering=true": { - "model": "create:block/powered_latch_powered", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/powered_toggle_latch.json b/src/generated/resources/assets/create/blockstates/powered_toggle_latch.json deleted file mode 100644 index ed39f54e7..000000000 --- a/src/generated/resources/assets/create/blockstates/powered_toggle_latch.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "variants": { - "facing=north,powered=false,powering=false": { - "model": "create:block/diodes/latch_off", - "y": 180 - }, - "facing=south,powered=false,powering=false": { - "model": "create:block/diodes/latch_off" - }, - "facing=west,powered=false,powering=false": { - "model": "create:block/diodes/latch_off", - "y": 90 - }, - "facing=east,powered=false,powering=false": { - "model": "create:block/diodes/latch_off", - "y": 270 - }, - "facing=north,powered=true,powering=false": { - "model": "create:block/powered_toggle_latch_off_powered", - "y": 180 - }, - "facing=south,powered=true,powering=false": { - "model": "create:block/powered_toggle_latch_off_powered" - }, - "facing=west,powered=true,powering=false": { - "model": "create:block/powered_toggle_latch_off_powered", - "y": 90 - }, - "facing=east,powered=true,powering=false": { - "model": "create:block/powered_toggle_latch_off_powered", - "y": 270 - }, - "facing=north,powered=false,powering=true": { - "model": "create:block/diodes/latch_on", - "y": 180 - }, - "facing=south,powered=false,powering=true": { - "model": "create:block/diodes/latch_on" - }, - "facing=west,powered=false,powering=true": { - "model": "create:block/diodes/latch_on", - "y": 90 - }, - "facing=east,powered=false,powering=true": { - "model": "create:block/diodes/latch_on", - "y": 270 - }, - "facing=north,powered=true,powering=true": { - "model": "create:block/powered_toggle_latch_on_powered", - "y": 180 - }, - "facing=south,powered=true,powering=true": { - "model": "create:block/powered_toggle_latch_on_powered" - }, - "facing=west,powered=true,powering=true": { - "model": "create:block/powered_toggle_latch_on_powered", - "y": 90 - }, - "facing=east,powered=true,powering=true": { - "model": "create:block/powered_toggle_latch_on_powered", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/pulley_magnet.json b/src/generated/resources/assets/create/blockstates/pulley_magnet.json deleted file mode 100644 index 00052c498..000000000 --- a/src/generated/resources/assets/create/blockstates/pulley_magnet.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/rope_pulley/pulley_magnet" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/pulse_repeater.json b/src/generated/resources/assets/create/blockstates/pulse_repeater.json deleted file mode 100644 index fe93a99de..000000000 --- a/src/generated/resources/assets/create/blockstates/pulse_repeater.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "variants": { - "facing=north,powered=false,pulsing=false": { - "model": "create:block/diodes/pulse_repeater", - "y": 180 - }, - "facing=south,powered=false,pulsing=false": { - "model": "create:block/diodes/pulse_repeater" - }, - "facing=west,powered=false,pulsing=false": { - "model": "create:block/diodes/pulse_repeater", - "y": 90 - }, - "facing=east,powered=false,pulsing=false": { - "model": "create:block/diodes/pulse_repeater", - "y": 270 - }, - "facing=north,powered=true,pulsing=false": { - "model": "create:block/pulse_repeater_powered", - "y": 180 - }, - "facing=south,powered=true,pulsing=false": { - "model": "create:block/pulse_repeater_powered" - }, - "facing=west,powered=true,pulsing=false": { - "model": "create:block/pulse_repeater_powered", - "y": 90 - }, - "facing=east,powered=true,pulsing=false": { - "model": "create:block/pulse_repeater_powered", - "y": 270 - }, - "facing=north,powered=false,pulsing=true": { - "model": "create:block/pulse_repeater_pulsing", - "y": 180 - }, - "facing=south,powered=false,pulsing=true": { - "model": "create:block/pulse_repeater_pulsing" - }, - "facing=west,powered=false,pulsing=true": { - "model": "create:block/pulse_repeater_pulsing", - "y": 90 - }, - "facing=east,powered=false,pulsing=true": { - "model": "create:block/pulse_repeater_pulsing", - "y": 270 - }, - "facing=north,powered=true,pulsing=true": { - "model": "create:block/pulse_repeater_pulsing", - "y": 180 - }, - "facing=south,powered=true,pulsing=true": { - "model": "create:block/pulse_repeater_pulsing" - }, - "facing=west,powered=true,pulsing=true": { - "model": "create:block/pulse_repeater_pulsing", - "y": 90 - }, - "facing=east,powered=true,pulsing=true": { - "model": "create:block/pulse_repeater_pulsing", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/purple_sail.json b/src/generated/resources/assets/create/blockstates/purple_sail.json deleted file mode 100644 index 385efaf9b..000000000 --- a/src/generated/resources/assets/create/blockstates/purple_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/purple_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/purple_sail" - }, - "facing=north": { - "model": "create:block/purple_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/purple_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/purple_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/purple_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/purple_seat.json b/src/generated/resources/assets/create/blockstates/purple_seat.json deleted file mode 100644 index bfb1a6f60..000000000 --- a/src/generated/resources/assets/create/blockstates/purple_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/purple_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/purple_valve_handle.json b/src/generated/resources/assets/create/blockstates/purple_valve_handle.json deleted file mode 100644 index caaa8c991..000000000 --- a/src/generated/resources/assets/create/blockstates/purple_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/purple_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/purple_valve_handle" - }, - "facing=north": { - "model": "create:block/purple_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/purple_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/purple_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/purple_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json deleted file mode 100644 index 8bd829ffc..000000000 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ /dev/null @@ -1,267 +0,0 @@ -{ - "multipart": [ - { - "when": { - "axis": "x" - }, - "apply": { - "model": "create:block/radial_chassis/base", - "x": 90, - "y": 90 - } - }, - { - "when": { - "axis": "y" - }, - "apply": { - "model": "create:block/radial_chassis/base" - } - }, - { - "when": { - "axis": "z" - }, - "apply": { - "model": "create:block/radial_chassis/base", - "x": 90 - } - }, - { - "when": { - "axis": "x", - "sticky_south": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_x_sticky", - "x": 180 - } - }, - { - "when": { - "axis": "y", - "sticky_south": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_y_sticky" - } - }, - { - "when": { - "axis": "z", - "sticky_south": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_x_sticky", - "x": 180, - "y": 90 - } - }, - { - "when": { - "axis": "x", - "sticky_south": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_x", - "x": 180 - } - }, - { - "when": { - "axis": "y", - "sticky_south": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_y" - } - }, - { - "when": { - "axis": "z", - "sticky_south": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_x", - "x": 180, - "y": 90 - } - }, - { - "when": { - "axis": "x", - "sticky_west": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_x_sticky", - "x": 90 - } - }, - { - "when": { - "axis": "y", - "sticky_west": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_y_sticky", - "y": 90 - } - }, - { - "when": { - "axis": "z", - "sticky_west": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_z_sticky", - "y": 180 - } - }, - { - "when": { - "axis": "x", - "sticky_west": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_x", - "x": 90 - } - }, - { - "when": { - "axis": "y", - "sticky_west": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_y", - "y": 90 - } - }, - { - "when": { - "axis": "z", - "sticky_west": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_z", - "y": 180 - } - }, - { - "when": { - "axis": "x", - "sticky_north": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_x_sticky" - } - }, - { - "when": { - "axis": "y", - "sticky_north": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_y_sticky", - "y": 180 - } - }, - { - "when": { - "axis": "z", - "sticky_north": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_x_sticky", - "y": 90 - } - }, - { - "when": { - "axis": "x", - "sticky_north": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_x" - } - }, - { - "when": { - "axis": "y", - "sticky_north": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_y", - "y": 180 - } - }, - { - "when": { - "axis": "z", - "sticky_north": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_x", - "y": 90 - } - }, - { - "when": { - "axis": "x", - "sticky_east": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_x_sticky", - "x": 270 - } - }, - { - "when": { - "axis": "y", - "sticky_east": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_y_sticky", - "y": 270 - } - }, - { - "when": { - "axis": "z", - "sticky_east": "true" - }, - "apply": { - "model": "create:block/radial_chassis_side_z_sticky" - } - }, - { - "when": { - "axis": "x", - "sticky_east": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_x", - "x": 270 - } - }, - { - "when": { - "axis": "y", - "sticky_east": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_y", - "y": 270 - } - }, - { - "when": { - "axis": "z", - "sticky_east": "false" - }, - "apply": { - "model": "create:block/radial_chassis_side_z" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/red_sail.json b/src/generated/resources/assets/create/blockstates/red_sail.json deleted file mode 100644 index c1059f149..000000000 --- a/src/generated/resources/assets/create/blockstates/red_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/red_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/red_sail" - }, - "facing=north": { - "model": "create:block/red_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/red_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/red_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/red_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/red_seat.json b/src/generated/resources/assets/create/blockstates/red_seat.json deleted file mode 100644 index 329cbdd13..000000000 --- a/src/generated/resources/assets/create/blockstates/red_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/red_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/red_valve_handle.json b/src/generated/resources/assets/create/blockstates/red_valve_handle.json deleted file mode 100644 index 0bff1aa0f..000000000 --- a/src/generated/resources/assets/create/blockstates/red_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/red_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/red_valve_handle" - }, - "facing=north": { - "model": "create:block/red_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/red_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/red_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/red_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/redstone_contact.json b/src/generated/resources/assets/create/blockstates/redstone_contact.json deleted file mode 100644 index 6f8031cab..000000000 --- a/src/generated/resources/assets/create/blockstates/redstone_contact.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "variants": { - "facing=down,powered=false": { - "model": "create:block/redstone_contact/block", - "x": 180 - }, - "facing=up,powered=false": { - "model": "create:block/redstone_contact/block" - }, - "facing=north,powered=false": { - "model": "create:block/redstone_contact/block", - "x": 90 - }, - "facing=south,powered=false": { - "model": "create:block/redstone_contact/block", - "x": 90, - "y": 180 - }, - "facing=west,powered=false": { - "model": "create:block/redstone_contact/block", - "x": 90, - "y": 270 - }, - "facing=east,powered=false": { - "model": "create:block/redstone_contact/block", - "x": 90, - "y": 90 - }, - "facing=down,powered=true": { - "model": "create:block/redstone_contact/block_powered", - "x": 180 - }, - "facing=up,powered=true": { - "model": "create:block/redstone_contact/block_powered" - }, - "facing=north,powered=true": { - "model": "create:block/redstone_contact/block_powered", - "x": 90 - }, - "facing=south,powered=true": { - "model": "create:block/redstone_contact/block_powered", - "x": 90, - "y": 180 - }, - "facing=west,powered=true": { - "model": "create:block/redstone_contact/block_powered", - "x": 90, - "y": 270 - }, - "facing=east,powered=true": { - "model": "create:block/redstone_contact/block_powered", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/redstone_link.json b/src/generated/resources/assets/create/blockstates/redstone_link.json deleted file mode 100644 index 81498cfb2..000000000 --- a/src/generated/resources/assets/create/blockstates/redstone_link.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "variants": { - "facing=down,powered=false,receiver=false": { - "model": "create:block/redstone_link/transmitter", - "x": 180, - "y": 180 - }, - "facing=up,powered=false,receiver=false": { - "model": "create:block/redstone_link/transmitter", - "y": 180 - }, - "facing=north,powered=false,receiver=false": { - "model": "create:block/redstone_link/transmitter_vertical", - "x": 270, - "y": 180 - }, - "facing=south,powered=false,receiver=false": { - "model": "create:block/redstone_link/transmitter_vertical", - "x": 270 - }, - "facing=west,powered=false,receiver=false": { - "model": "create:block/redstone_link/transmitter_vertical", - "x": 270, - "y": 90 - }, - "facing=east,powered=false,receiver=false": { - "model": "create:block/redstone_link/transmitter_vertical", - "x": 270, - "y": 270 - }, - "facing=down,powered=true,receiver=false": { - "model": "create:block/redstone_link/transmitter_powered", - "x": 180, - "y": 180 - }, - "facing=up,powered=true,receiver=false": { - "model": "create:block/redstone_link/transmitter_powered", - "y": 180 - }, - "facing=north,powered=true,receiver=false": { - "model": "create:block/redstone_link/transmitter_vertical_powered", - "x": 270, - "y": 180 - }, - "facing=south,powered=true,receiver=false": { - "model": "create:block/redstone_link/transmitter_vertical_powered", - "x": 270 - }, - "facing=west,powered=true,receiver=false": { - "model": "create:block/redstone_link/transmitter_vertical_powered", - "x": 270, - "y": 90 - }, - "facing=east,powered=true,receiver=false": { - "model": "create:block/redstone_link/transmitter_vertical_powered", - "x": 270, - "y": 270 - }, - "facing=down,powered=false,receiver=true": { - "model": "create:block/redstone_link/receiver", - "x": 180, - "y": 180 - }, - "facing=up,powered=false,receiver=true": { - "model": "create:block/redstone_link/receiver", - "y": 180 - }, - "facing=north,powered=false,receiver=true": { - "model": "create:block/redstone_link/receiver_vertical", - "x": 270, - "y": 180 - }, - "facing=south,powered=false,receiver=true": { - "model": "create:block/redstone_link/receiver_vertical", - "x": 270 - }, - "facing=west,powered=false,receiver=true": { - "model": "create:block/redstone_link/receiver_vertical", - "x": 270, - "y": 90 - }, - "facing=east,powered=false,receiver=true": { - "model": "create:block/redstone_link/receiver_vertical", - "x": 270, - "y": 270 - }, - "facing=down,powered=true,receiver=true": { - "model": "create:block/redstone_link/receiver_powered", - "x": 180, - "y": 180 - }, - "facing=up,powered=true,receiver=true": { - "model": "create:block/redstone_link/receiver_powered", - "y": 180 - }, - "facing=north,powered=true,receiver=true": { - "model": "create:block/redstone_link/receiver_vertical_powered", - "x": 270, - "y": 180 - }, - "facing=south,powered=true,receiver=true": { - "model": "create:block/redstone_link/receiver_vertical_powered", - "x": 270 - }, - "facing=west,powered=true,receiver=true": { - "model": "create:block/redstone_link/receiver_vertical_powered", - "x": 270, - "y": 90 - }, - "facing=east,powered=true,receiver=true": { - "model": "create:block/redstone_link/receiver_vertical_powered", - "x": 270, - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/refined_radiance_casing.json b/src/generated/resources/assets/create/blockstates/refined_radiance_casing.json deleted file mode 100644 index b43052bac..000000000 --- a/src/generated/resources/assets/create/blockstates/refined_radiance_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/refined_radiance_casing" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/reinforced_rail.json b/src/generated/resources/assets/create/blockstates/reinforced_rail.json deleted file mode 100644 index 8f825264d..000000000 --- a/src/generated/resources/assets/create/blockstates/reinforced_rail.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "variants": { - "connects_n=false,connects_s=false,shape=north_south": { - "model": "create:block/reinforced_rail/block" - }, - "connects_n=true,connects_s=false,shape=north_south": { - "model": "create:block/reinforced_rail/block_n" - }, - "connects_n=false,connects_s=true,shape=north_south": { - "model": "create:block/reinforced_rail/block_s" - }, - "connects_n=true,connects_s=true,shape=north_south": { - "model": "create:block/reinforced_rail/block_s_n" - }, - "connects_n=false,connects_s=false,shape=east_west": { - "model": "create:block/reinforced_rail/block", - "y": 90 - }, - "connects_n=true,connects_s=false,shape=east_west": { - "model": "create:block/reinforced_rail/block_n", - "y": 90 - }, - "connects_n=false,connects_s=true,shape=east_west": { - "model": "create:block/reinforced_rail/block_s", - "y": 90 - }, - "connects_n=true,connects_s=true,shape=east_west": { - "model": "create:block/reinforced_rail/block_s_n", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/rope.json b/src/generated/resources/assets/create/blockstates/rope.json deleted file mode 100644 index 30114f6af..000000000 --- a/src/generated/resources/assets/create/blockstates/rope.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/rope_pulley/rope" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/rope_pulley.json b/src/generated/resources/assets/create/blockstates/rope_pulley.json deleted file mode 100644 index e9fc41c9f..000000000 --- a/src/generated/resources/assets/create/blockstates/rope_pulley.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/rope_pulley/block", - "y": 90 - }, - "axis=z": { - "model": "create:block/rope_pulley/block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/rotation_speed_controller.json b/src/generated/resources/assets/create/blockstates/rotation_speed_controller.json deleted file mode 100644 index ebae30eac..000000000 --- a/src/generated/resources/assets/create/blockstates/rotation_speed_controller.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/rotation_speed_controller/block", - "y": 90 - }, - "axis=z": { - "model": "create:block/rotation_speed_controller/block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/sail_frame.json b/src/generated/resources/assets/create/blockstates/sail_frame.json deleted file mode 100644 index 1ffee979f..000000000 --- a/src/generated/resources/assets/create/blockstates/sail_frame.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/sail_frame", - "x": 180 - }, - "facing=up": { - "model": "create:block/sail_frame" - }, - "facing=north": { - "model": "create:block/sail_frame", - "x": 90 - }, - "facing=south": { - "model": "create:block/sail_frame", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/sail_frame", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/sail_frame", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/schematic_table.json b/src/generated/resources/assets/create/blockstates/schematic_table.json deleted file mode 100644 index 77ddfeeb4..000000000 --- a/src/generated/resources/assets/create/blockstates/schematic_table.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/schematic_table", - "y": 180 - }, - "facing=south": { - "model": "create:block/schematic_table" - }, - "facing=west": { - "model": "create:block/schematic_table", - "y": 90 - }, - "facing=east": { - "model": "create:block/schematic_table", - "y": 270 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/schematicannon.json b/src/generated/resources/assets/create/blockstates/schematicannon.json deleted file mode 100644 index 293ef7572..000000000 --- a/src/generated/resources/assets/create/blockstates/schematicannon.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/schematicannon/block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria.json b/src/generated/resources/assets/create/blockstates/scoria.json deleted file mode 100644 index bc531bf1d..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/scoria" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_bricks.json b/src/generated/resources/assets/create/blockstates/scoria_bricks.json deleted file mode 100644 index eb413b99a..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/scoria_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_bricks_slab.json b/src/generated/resources/assets/create/blockstates/scoria_bricks_slab.json deleted file mode 100644 index 564ed5ac9..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/scoria_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/scoria_bricks_slab" - }, - "type=double": { - "model": "create:block/scoria_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/scoria_bricks_stairs.json deleted file mode 100644 index f09782271..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/scoria_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/scoria_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/scoria_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/scoria_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/scoria_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/scoria_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/scoria_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/scoria_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/scoria_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/scoria_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/scoria_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/scoria_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/scoria_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/scoria_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/scoria_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/scoria_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/scoria_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/scoria_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/scoria_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/scoria_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/scoria_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/scoria_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/scoria_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/scoria_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/scoria_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/scoria_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/scoria_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/scoria_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/scoria_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/scoria_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/scoria_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/scoria_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/scoria_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/scoria_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/scoria_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/scoria_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/scoria_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/scoria_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/scoria_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/scoria_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_bricks_wall.json b/src/generated/resources/assets/create/blockstates/scoria_bricks_wall.json deleted file mode 100644 index c87c5f586..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/scoria_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_cobblestone.json b/src/generated/resources/assets/create/blockstates/scoria_cobblestone.json deleted file mode 100644 index 26ba2af22..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/scoria_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/scoria_cobblestone_slab.json deleted file mode 100644 index 038878f77..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/scoria_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/scoria_cobblestone_slab" - }, - "type=double": { - "model": "create:block/scoria_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/scoria_cobblestone_stairs.json deleted file mode 100644 index daba6eaba..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/scoria_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/scoria_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/scoria_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/scoria_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/scoria_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/scoria_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/scoria_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/scoria_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/scoria_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/scoria_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/scoria_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/scoria_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/scoria_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/scoria_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/scoria_cobblestone_wall.json deleted file mode 100644 index 481d02091..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/scoria_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/scoria_pillar.json b/src/generated/resources/assets/create/blockstates/scoria_pillar.json deleted file mode 100644 index b7e1e85f8..000000000 --- a/src/generated/resources/assets/create/blockstates/scoria_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/scoria_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/scoria_pillar" - }, - "axis=z": { - "model": "create:block/scoria_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/secondary_linear_chassis.json b/src/generated/resources/assets/create/blockstates/secondary_linear_chassis.json deleted file mode 100644 index afc5faf57..000000000 --- a/src/generated/resources/assets/create/blockstates/secondary_linear_chassis.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "variants": { - "axis=x,sticky_bottom=false,sticky_top=false": { - "model": "create:block/secondary_linear_chassis", - "x": 90, - "y": 90 - }, - "axis=y,sticky_bottom=false,sticky_top=false": { - "model": "create:block/secondary_linear_chassis" - }, - "axis=z,sticky_bottom=false,sticky_top=false": { - "model": "create:block/secondary_linear_chassis", - "x": 90, - "y": 180 - }, - "axis=x,sticky_bottom=true,sticky_top=false": { - "model": "create:block/secondary_linear_chassis_bottom", - "x": 90, - "y": 90 - }, - "axis=y,sticky_bottom=true,sticky_top=false": { - "model": "create:block/secondary_linear_chassis_bottom" - }, - "axis=z,sticky_bottom=true,sticky_top=false": { - "model": "create:block/secondary_linear_chassis_bottom", - "x": 90, - "y": 180 - }, - "axis=x,sticky_bottom=false,sticky_top=true": { - "model": "create:block/secondary_linear_chassis_top", - "x": 90, - "y": 90 - }, - "axis=y,sticky_bottom=false,sticky_top=true": { - "model": "create:block/secondary_linear_chassis_top" - }, - "axis=z,sticky_bottom=false,sticky_top=true": { - "model": "create:block/secondary_linear_chassis_top", - "x": 90, - "y": 180 - }, - "axis=x,sticky_bottom=true,sticky_top=true": { - "model": "create:block/secondary_linear_chassis_top_bottom", - "x": 90, - "y": 90 - }, - "axis=y,sticky_bottom=true,sticky_top=true": { - "model": "create:block/secondary_linear_chassis_top_bottom" - }, - "axis=z,sticky_bottom=true,sticky_top=true": { - "model": "create:block/secondary_linear_chassis_top_bottom", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/sequenced_gearshift.json b/src/generated/resources/assets/create/blockstates/sequenced_gearshift.json deleted file mode 100644 index c8dca37cc..000000000 --- a/src/generated/resources/assets/create/blockstates/sequenced_gearshift.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "variants": { - "axis=x,state=0,vertical=false": { - "model": "create:block/sequenced_gearshift/idle", - "y": 90 - }, - "axis=z,state=0,vertical=false": { - "model": "create:block/sequenced_gearshift/idle" - }, - "axis=x,state=1,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_1", - "y": 90 - }, - "axis=z,state=1,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_1" - }, - "axis=x,state=2,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_2", - "y": 90 - }, - "axis=z,state=2,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_2" - }, - "axis=x,state=3,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_3", - "y": 90 - }, - "axis=z,state=3,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_3" - }, - "axis=x,state=4,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_4", - "y": 90 - }, - "axis=z,state=4,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_4" - }, - "axis=x,state=5,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_5", - "y": 90 - }, - "axis=z,state=5,vertical=false": { - "model": "create:block/sequenced_gearshift/seq_5" - }, - "axis=x,state=0,vertical=true": { - "model": "create:block/sequenced_gearshift/idle", - "x": 90, - "y": 90 - }, - "axis=z,state=0,vertical=true": { - "model": "create:block/sequenced_gearshift/idle", - "x": 90 - }, - "axis=x,state=1,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_1", - "x": 90, - "y": 90 - }, - "axis=z,state=1,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_1", - "x": 90 - }, - "axis=x,state=2,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_2", - "x": 90, - "y": 90 - }, - "axis=z,state=2,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_2", - "x": 90 - }, - "axis=x,state=3,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_3", - "x": 90, - "y": 90 - }, - "axis=z,state=3,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_3", - "x": 90 - }, - "axis=x,state=4,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_4", - "x": 90, - "y": 90 - }, - "axis=z,state=4,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_4", - "x": 90 - }, - "axis=x,state=5,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_5", - "x": 90, - "y": 90 - }, - "axis=z,state=5,vertical=true": { - "model": "create:block/sequenced_gearshift/seq_5", - "x": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/shadow_steel_casing.json b/src/generated/resources/assets/create/blockstates/shadow_steel_casing.json deleted file mode 100644 index 9caf34364..000000000 --- a/src/generated/resources/assets/create/blockstates/shadow_steel_casing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/shadow_steel_casing" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/shaft.json b/src/generated/resources/assets/create/blockstates/shaft.json deleted file mode 100644 index c4cc5b98b..000000000 --- a/src/generated/resources/assets/create/blockstates/shaft.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/shaft", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/shaft" - }, - "axis=z": { - "model": "create:block/shaft", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/smart_chute.json b/src/generated/resources/assets/create/blockstates/smart_chute.json deleted file mode 100644 index 6f7f38d80..000000000 --- a/src/generated/resources/assets/create/blockstates/smart_chute.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "variants": { - "powered=false": { - "model": "create:block/smart_chute/block" - }, - "powered=true": { - "model": "create:block/smart_chute/block_powered" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/smart_fluid_pipe.json b/src/generated/resources/assets/create/blockstates/smart_fluid_pipe.json deleted file mode 100644 index cf7adfc36..000000000 --- a/src/generated/resources/assets/create/blockstates/smart_fluid_pipe.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "variants": { - "face=floor,facing=north": { - "model": "create:block/smart_fluid_pipe/block", - "y": 180 - }, - "face=wall,facing=north": { - "model": "create:block/smart_fluid_pipe/block", - "x": 270, - "y": 180 - }, - "face=ceiling,facing=north": { - "model": "create:block/smart_fluid_pipe/block", - "x": 180 - }, - "face=floor,facing=south": { - "model": "create:block/smart_fluid_pipe/block" - }, - "face=wall,facing=south": { - "model": "create:block/smart_fluid_pipe/block", - "x": 270 - }, - "face=ceiling,facing=south": { - "model": "create:block/smart_fluid_pipe/block", - "x": 180, - "y": 180 - }, - "face=floor,facing=west": { - "model": "create:block/smart_fluid_pipe/block", - "y": 90 - }, - "face=wall,facing=west": { - "model": "create:block/smart_fluid_pipe/block", - "x": 270, - "y": 90 - }, - "face=ceiling,facing=west": { - "model": "create:block/smart_fluid_pipe/block", - "x": 180, - "y": 270 - }, - "face=floor,facing=east": { - "model": "create:block/smart_fluid_pipe/block", - "y": 270 - }, - "face=wall,facing=east": { - "model": "create:block/smart_fluid_pipe/block", - "x": 270, - "y": 270 - }, - "face=ceiling,facing=east": { - "model": "create:block/smart_fluid_pipe/block", - "x": 180, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/speedometer.json b/src/generated/resources/assets/create/blockstates/speedometer.json deleted file mode 100644 index 1946e3d39..000000000 --- a/src/generated/resources/assets/create/blockstates/speedometer.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down": { - "model": "create:block/gauge/base", - "x": 180 - }, - "axis_along_first=true,facing=down": { - "model": "create:block/gauge/base", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up": { - "model": "create:block/gauge/base" - }, - "axis_along_first=true,facing=up": { - "model": "create:block/gauge/base", - "y": 90 - }, - "axis_along_first=false,facing=north": { - "model": "create:block/gauge/base_wall", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=north": { - "model": "create:block/gauge/base_wall", - "y": 270 - }, - "axis_along_first=false,facing=south": { - "model": "create:block/gauge/base_wall", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=south": { - "model": "create:block/gauge/base_wall", - "y": 90 - }, - "axis_along_first=false,facing=west": { - "model": "create:block/gauge/base_wall", - "y": 180 - }, - "axis_along_first=true,facing=west": { - "model": "create:block/gauge/base_wall", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=east": { - "model": "create:block/gauge/base_wall" - }, - "axis_along_first=true,facing=east": { - "model": "create:block/gauge/base_wall", - "x": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/spout.json b/src/generated/resources/assets/create/blockstates/spout.json deleted file mode 100644 index a0bb1a940..000000000 --- a/src/generated/resources/assets/create/blockstates/spout.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/spout/block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/spruce_window.json b/src/generated/resources/assets/create/blockstates/spruce_window.json deleted file mode 100644 index aa0d1abf5..000000000 --- a/src/generated/resources/assets/create/blockstates/spruce_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/spruce_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/spruce_window_pane.json b/src/generated/resources/assets/create/blockstates/spruce_window_pane.json deleted file mode 100644 index bbb78953e..000000000 --- a/src/generated/resources/assets/create/blockstates/spruce_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/spruce_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/spruce_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/spruce_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/spruce_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/spruce_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/spruce_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/spruce_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/spruce_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/spruce_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/sticker.json b/src/generated/resources/assets/create/blockstates/sticker.json deleted file mode 100644 index 1949f8b4e..000000000 --- a/src/generated/resources/assets/create/blockstates/sticker.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "variants": { - "extended=false,facing=down,powered=false": { - "model": "create:block/sticker/block", - "x": 180 - }, - "extended=true,facing=down,powered=false": { - "model": "create:block/sticker/block", - "x": 180 - }, - "extended=false,facing=up,powered=false": { - "model": "create:block/sticker/block" - }, - "extended=true,facing=up,powered=false": { - "model": "create:block/sticker/block" - }, - "extended=false,facing=north,powered=false": { - "model": "create:block/sticker/block", - "x": 90 - }, - "extended=true,facing=north,powered=false": { - "model": "create:block/sticker/block", - "x": 90 - }, - "extended=false,facing=south,powered=false": { - "model": "create:block/sticker/block", - "x": 90, - "y": 180 - }, - "extended=true,facing=south,powered=false": { - "model": "create:block/sticker/block", - "x": 90, - "y": 180 - }, - "extended=false,facing=west,powered=false": { - "model": "create:block/sticker/block", - "x": 90, - "y": 270 - }, - "extended=true,facing=west,powered=false": { - "model": "create:block/sticker/block", - "x": 90, - "y": 270 - }, - "extended=false,facing=east,powered=false": { - "model": "create:block/sticker/block", - "x": 90, - "y": 90 - }, - "extended=true,facing=east,powered=false": { - "model": "create:block/sticker/block", - "x": 90, - "y": 90 - }, - "extended=false,facing=down,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 180 - }, - "extended=true,facing=down,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 180 - }, - "extended=false,facing=up,powered=true": { - "model": "create:block/sticker/block_powered" - }, - "extended=true,facing=up,powered=true": { - "model": "create:block/sticker/block_powered" - }, - "extended=false,facing=north,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 90 - }, - "extended=true,facing=north,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 90 - }, - "extended=false,facing=south,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 90, - "y": 180 - }, - "extended=true,facing=south,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 90, - "y": 180 - }, - "extended=false,facing=west,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 90, - "y": 270 - }, - "extended=true,facing=west,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 90, - "y": 270 - }, - "extended=false,facing=east,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 90, - "y": 90 - }, - "extended=true,facing=east,powered=true": { - "model": "create:block/sticker/block_powered", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/sticky_mechanical_piston.json b/src/generated/resources/assets/create/blockstates/sticky_mechanical_piston.json deleted file mode 100644 index 755bd2516..000000000 --- a/src/generated/resources/assets/create/blockstates/sticky_mechanical_piston.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block", - "x": 180 - }, - "axis_along_first=true,facing=down,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block_rotated", - "x": 180 - }, - "axis_along_first=false,facing=up,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block" - }, - "axis_along_first=true,facing=up,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block_rotated" - }, - "axis_along_first=false,facing=north,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block", - "x": 90 - }, - "axis_along_first=true,facing=north,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block_rotated", - "x": 90 - }, - "axis_along_first=false,facing=south,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block", - "x": 90, - "y": 180 - }, - "axis_along_first=true,facing=south,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block_rotated", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=west,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block_rotated", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=west,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block", - "x": 90, - "y": 270 - }, - "axis_along_first=false,facing=east,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block_rotated", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=east,state=retracted": { - "model": "create:block/mechanical_piston/sticky/block", - "x": 90, - "y": 90 - }, - "axis_along_first=false,facing=down,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 180 - }, - "axis_along_first=true,facing=down,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 180 - }, - "axis_along_first=false,facing=up,state=moving": { - "model": "create:block/mechanical_piston/moving/block" - }, - "axis_along_first=true,facing=up,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated" - }, - "axis_along_first=false,facing=north,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 90 - }, - "axis_along_first=true,facing=north,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 90 - }, - "axis_along_first=false,facing=south,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 90, - "y": 180 - }, - "axis_along_first=true,facing=south,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=west,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=west,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 90, - "y": 270 - }, - "axis_along_first=false,facing=east,state=moving": { - "model": "create:block/mechanical_piston/moving/block_rotated", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=east,state=moving": { - "model": "create:block/mechanical_piston/moving/block", - "x": 90, - "y": 90 - }, - "axis_along_first=false,facing=down,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 180 - }, - "axis_along_first=true,facing=down,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 180 - }, - "axis_along_first=false,facing=up,state=extended": { - "model": "create:block/mechanical_piston/extended/block" - }, - "axis_along_first=true,facing=up,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated" - }, - "axis_along_first=false,facing=north,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 90 - }, - "axis_along_first=true,facing=north,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 90 - }, - "axis_along_first=false,facing=south,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 90, - "y": 180 - }, - "axis_along_first=true,facing=south,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=west,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=west,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 90, - "y": 270 - }, - "axis_along_first=false,facing=east,state=extended": { - "model": "create:block/mechanical_piston/extended/block_rotated", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=east,state=extended": { - "model": "create:block/mechanical_piston/extended/block", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/stockpile_switch.json b/src/generated/resources/assets/create/blockstates/stockpile_switch.json deleted file mode 100644 index c5f9e6ae3..000000000 --- a/src/generated/resources/assets/create/blockstates/stockpile_switch.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "variants": { - "facing=north,indicator=0": { - "model": "create:block/stockpile_switch_0" - }, - "facing=south,indicator=0": { - "model": "create:block/stockpile_switch_0", - "y": 180 - }, - "facing=west,indicator=0": { - "model": "create:block/stockpile_switch_0", - "y": 270 - }, - "facing=east,indicator=0": { - "model": "create:block/stockpile_switch_0", - "y": 90 - }, - "facing=north,indicator=1": { - "model": "create:block/stockpile_switch_1" - }, - "facing=south,indicator=1": { - "model": "create:block/stockpile_switch_1", - "y": 180 - }, - "facing=west,indicator=1": { - "model": "create:block/stockpile_switch_1", - "y": 270 - }, - "facing=east,indicator=1": { - "model": "create:block/stockpile_switch_1", - "y": 90 - }, - "facing=north,indicator=2": { - "model": "create:block/stockpile_switch_2" - }, - "facing=south,indicator=2": { - "model": "create:block/stockpile_switch_2", - "y": 180 - }, - "facing=west,indicator=2": { - "model": "create:block/stockpile_switch_2", - "y": 270 - }, - "facing=east,indicator=2": { - "model": "create:block/stockpile_switch_2", - "y": 90 - }, - "facing=north,indicator=3": { - "model": "create:block/stockpile_switch_3" - }, - "facing=south,indicator=3": { - "model": "create:block/stockpile_switch_3", - "y": 180 - }, - "facing=west,indicator=3": { - "model": "create:block/stockpile_switch_3", - "y": 270 - }, - "facing=east,indicator=3": { - "model": "create:block/stockpile_switch_3", - "y": 90 - }, - "facing=north,indicator=4": { - "model": "create:block/stockpile_switch_4" - }, - "facing=south,indicator=4": { - "model": "create:block/stockpile_switch_4", - "y": 180 - }, - "facing=west,indicator=4": { - "model": "create:block/stockpile_switch_4", - "y": 270 - }, - "facing=east,indicator=4": { - "model": "create:block/stockpile_switch_4", - "y": 90 - }, - "facing=north,indicator=5": { - "model": "create:block/stockpile_switch_5" - }, - "facing=south,indicator=5": { - "model": "create:block/stockpile_switch_5", - "y": 180 - }, - "facing=west,indicator=5": { - "model": "create:block/stockpile_switch_5", - "y": 270 - }, - "facing=east,indicator=5": { - "model": "create:block/stockpile_switch_5", - "y": 90 - }, - "facing=north,indicator=6": { - "model": "create:block/stockpile_switch_6" - }, - "facing=south,indicator=6": { - "model": "create:block/stockpile_switch_6", - "y": 180 - }, - "facing=west,indicator=6": { - "model": "create:block/stockpile_switch_6", - "y": 270 - }, - "facing=east,indicator=6": { - "model": "create:block/stockpile_switch_6", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/stressometer.json b/src/generated/resources/assets/create/blockstates/stressometer.json deleted file mode 100644 index 1946e3d39..000000000 --- a/src/generated/resources/assets/create/blockstates/stressometer.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down": { - "model": "create:block/gauge/base", - "x": 180 - }, - "axis_along_first=true,facing=down": { - "model": "create:block/gauge/base", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up": { - "model": "create:block/gauge/base" - }, - "axis_along_first=true,facing=up": { - "model": "create:block/gauge/base", - "y": 90 - }, - "axis_along_first=false,facing=north": { - "model": "create:block/gauge/base_wall", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=north": { - "model": "create:block/gauge/base_wall", - "y": 270 - }, - "axis_along_first=false,facing=south": { - "model": "create:block/gauge/base_wall", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=south": { - "model": "create:block/gauge/base_wall", - "y": 90 - }, - "axis_along_first=false,facing=west": { - "model": "create:block/gauge/base_wall", - "y": 180 - }, - "axis_along_first=true,facing=west": { - "model": "create:block/gauge/base_wall", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=east": { - "model": "create:block/gauge/base_wall" - }, - "axis_along_first=true,facing=east": { - "model": "create:block/gauge/base_wall", - "x": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/tiled_glass.json b/src/generated/resources/assets/create/blockstates/tiled_glass.json deleted file mode 100644 index 516c9b989..000000000 --- a/src/generated/resources/assets/create/blockstates/tiled_glass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/tiled_glass" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/tiled_glass_pane.json b/src/generated/resources/assets/create/blockstates/tiled_glass_pane.json deleted file mode 100644 index 858a7d4d9..000000000 --- a/src/generated/resources/assets/create/blockstates/tiled_glass_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/tiled_glass_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/tiled_glass_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/tiled_glass_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/tiled_glass_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/tiled_glass_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/tiled_glass_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/tiled_glass_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/tiled_glass_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/tiled_glass_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/turntable.json b/src/generated/resources/assets/create/blockstates/turntable.json deleted file mode 100644 index 27b800e77..000000000 --- a/src/generated/resources/assets/create/blockstates/turntable.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/turntable" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/vertical_framed_glass.json b/src/generated/resources/assets/create/blockstates/vertical_framed_glass.json deleted file mode 100644 index d6fe30474..000000000 --- a/src/generated/resources/assets/create/blockstates/vertical_framed_glass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/vertical_framed_glass" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/vertical_framed_glass_pane.json b/src/generated/resources/assets/create/blockstates/vertical_framed_glass_pane.json deleted file mode 100644 index 8bd050d7e..000000000 --- a/src/generated/resources/assets/create/blockstates/vertical_framed_glass_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/vertical_framed_glass_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/vertical_framed_glass_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/vertical_framed_glass_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/vertical_framed_glass_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/vertical_framed_glass_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/vertical_framed_glass_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/vertical_framed_glass_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/vertical_framed_glass_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/vertical_framed_glass_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/warped_window.json b/src/generated/resources/assets/create/blockstates/warped_window.json deleted file mode 100644 index 682ab912f..000000000 --- a/src/generated/resources/assets/create/blockstates/warped_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/warped_window" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/warped_window_pane.json b/src/generated/resources/assets/create/blockstates/warped_window_pane.json deleted file mode 100644 index 7cf4fb592..000000000 --- a/src/generated/resources/assets/create/blockstates/warped_window_pane.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "multipart": [ - { - "apply": { - "model": "create:block/warped_window_pane_post" - } - }, - { - "when": { - "north": "true" - }, - "apply": { - "model": "create:block/warped_window_pane_side" - } - }, - { - "when": { - "north": "false" - }, - "apply": { - "model": "create:block/warped_window_pane_noside" - } - }, - { - "when": { - "south": "true" - }, - "apply": { - "model": "create:block/warped_window_pane_side_alt" - } - }, - { - "when": { - "south": "false" - }, - "apply": { - "model": "create:block/warped_window_pane_noside_alt", - "y": 90 - } - }, - { - "when": { - "west": "true" - }, - "apply": { - "model": "create:block/warped_window_pane_side_alt", - "y": 90 - } - }, - { - "when": { - "west": "false" - }, - "apply": { - "model": "create:block/warped_window_pane_noside", - "y": 270 - } - }, - { - "when": { - "east": "true" - }, - "apply": { - "model": "create:block/warped_window_pane_side", - "y": 90 - } - }, - { - "when": { - "east": "false" - }, - "apply": { - "model": "create:block/warped_window_pane_noside_alt" - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/water_wheel.json b/src/generated/resources/assets/create/blockstates/water_wheel.json deleted file mode 100644 index c9b0731b7..000000000 --- a/src/generated/resources/assets/create/blockstates/water_wheel.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/water_wheel", - "x": 90 - }, - "facing=south": { - "model": "create:block/water_wheel", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/water_wheel", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/water_wheel", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone.json b/src/generated/resources/assets/create/blockstates/weathered_limestone.json deleted file mode 100644 index f23b4eba8..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/weathered_limestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks.json deleted file mode 100644 index 049b3728d..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/weathered_limestone_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_slab.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_slab.json deleted file mode 100644 index 716394886..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/weathered_limestone_bricks_slab_top" - }, - "type=bottom": { - "model": "create:block/weathered_limestone_bricks_slab" - }, - "type=double": { - "model": "create:block/weathered_limestone_bricks" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_stairs.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_stairs.json deleted file mode 100644 index 58b671bd4..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/weathered_limestone_bricks_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/weathered_limestone_bricks_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/weathered_limestone_bricks_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/weathered_limestone_bricks_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/weathered_limestone_bricks_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/weathered_limestone_bricks_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/weathered_limestone_bricks_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/weathered_limestone_bricks_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/weathered_limestone_bricks_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/weathered_limestone_bricks_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/weathered_limestone_bricks_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/weathered_limestone_bricks_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/weathered_limestone_bricks_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/weathered_limestone_bricks_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_wall.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_wall.json deleted file mode 100644 index d9b7d7946..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/weathered_limestone_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone.json deleted file mode 100644 index f33320bf8..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/weathered_limestone_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_slab.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_slab.json deleted file mode 100644 index bc523c62d..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_slab.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "variants": { - "type=top": { - "model": "create:block/weathered_limestone_cobblestone_slab_top" - }, - "type=bottom": { - "model": "create:block/weathered_limestone_cobblestone_slab" - }, - "type=double": { - "model": "create:block/weathered_limestone_cobblestone" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_stairs.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_stairs.json deleted file mode 100644 index 6bad1678d..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_stairs.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "variants": { - "facing=north,half=top,shape=straight": { - "model": "create:block/weathered_limestone_cobblestone_stairs", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=straight": { - "model": "create:block/weathered_limestone_cobblestone_stairs", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=straight": { - "model": "create:block/weathered_limestone_cobblestone_stairs", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=straight": { - "model": "create:block/weathered_limestone_cobblestone_stairs", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=straight": { - "model": "create:block/weathered_limestone_cobblestone_stairs", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=straight": { - "model": "create:block/weathered_limestone_cobblestone_stairs", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=straight": { - "model": "create:block/weathered_limestone_cobblestone_stairs", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=straight": { - "model": "create:block/weathered_limestone_cobblestone_stairs" - }, - "facing=north,half=top,shape=inner_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=inner_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=inner_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=inner_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner" - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=inner_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=inner_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=inner_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=inner_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_inner" - }, - "facing=north,half=top,shape=outer_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=south,half=top,shape=outer_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=west,half=top,shape=outer_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=east,half=top,shape=outer_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer" - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=north,half=top,shape=outer_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "x": 180, - "uvlock": true - }, - "facing=south,half=top,shape=outer_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "x": 180, - "y": 180, - "uvlock": true - }, - "facing=west,half=top,shape=outer_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "x": 180, - "y": 270, - "uvlock": true - }, - "facing=east,half=top,shape=outer_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "x": 180, - "y": 90, - "uvlock": true - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "y": 270, - "uvlock": true - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "y": 90, - "uvlock": true - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer", - "y": 180, - "uvlock": true - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "create:block/weathered_limestone_cobblestone_stairs_outer" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_wall.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_wall.json deleted file mode 100644 index 9c94bc591..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_cobblestone_wall.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_post" - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_side", - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "create:block/weathered_limestone_cobblestone_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weathered_limestone_pillar.json b/src/generated/resources/assets/create/blockstates/weathered_limestone_pillar.json deleted file mode 100644 index caa909816..000000000 --- a/src/generated/resources/assets/create/blockstates/weathered_limestone_pillar.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "variants": { - "axis=x": { - "model": "create:block/weathered_limestone_pillar", - "x": 90, - "y": 90 - }, - "axis=y": { - "model": "create:block/weathered_limestone_pillar" - }, - "axis=z": { - "model": "create:block/weathered_limestone_pillar", - "x": 90, - "y": 180 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/weighted_ejector.json b/src/generated/resources/assets/create/blockstates/weighted_ejector.json deleted file mode 100644 index 12044c3db..000000000 --- a/src/generated/resources/assets/create/blockstates/weighted_ejector.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/weighted_ejector/block" - }, - "facing=south": { - "model": "create:block/weighted_ejector/block", - "y": 180 - }, - "facing=west": { - "model": "create:block/weighted_ejector/block", - "y": 270 - }, - "facing=east": { - "model": "create:block/weighted_ejector/block", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/white_sail.json b/src/generated/resources/assets/create/blockstates/white_sail.json deleted file mode 100644 index 30b186772..000000000 --- a/src/generated/resources/assets/create/blockstates/white_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/white_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/white_sail" - }, - "facing=north": { - "model": "create:block/white_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/white_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/white_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/white_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/white_seat.json b/src/generated/resources/assets/create/blockstates/white_seat.json deleted file mode 100644 index 46d275648..000000000 --- a/src/generated/resources/assets/create/blockstates/white_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/white_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/white_valve_handle.json b/src/generated/resources/assets/create/blockstates/white_valve_handle.json deleted file mode 100644 index ced0ad42e..000000000 --- a/src/generated/resources/assets/create/blockstates/white_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/white_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/white_valve_handle" - }, - "facing=north": { - "model": "create:block/white_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/white_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/white_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/white_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/windmill_bearing.json b/src/generated/resources/assets/create/blockstates/windmill_bearing.json deleted file mode 100644 index 80df46d4c..000000000 --- a/src/generated/resources/assets/create/blockstates/windmill_bearing.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/windmill_bearing", - "x": 180 - }, - "facing=up": { - "model": "create:block/windmill_bearing" - }, - "facing=north": { - "model": "create:block/windmill_bearing", - "x": 90 - }, - "facing=south": { - "model": "create:block/windmill_bearing", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/windmill_bearing", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/windmill_bearing", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/wooden_bracket.json b/src/generated/resources/assets/create/blockstates/wooden_bracket.json deleted file mode 100644 index b677cf3cd..000000000 --- a/src/generated/resources/assets/create/blockstates/wooden_bracket.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "variants": { - "axis_along_first=false,facing=down,type=pipe": { - "model": "create:block/bracket/pipe/ground_wooden", - "x": 180 - }, - "axis_along_first=true,facing=down,type=pipe": { - "model": "create:block/bracket/pipe/ground_wooden", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up,type=pipe": { - "model": "create:block/bracket/pipe/ground_wooden" - }, - "axis_along_first=true,facing=up,type=pipe": { - "model": "create:block/bracket/pipe/ground_wooden", - "y": 90 - }, - "axis_along_first=false,facing=north,type=pipe": { - "model": "create:block/bracket/pipe/wall_wooden", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=north,type=pipe": { - "model": "create:block/bracket/pipe/wall_wooden", - "y": 270 - }, - "axis_along_first=false,facing=south,type=pipe": { - "model": "create:block/bracket/pipe/wall_wooden", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=south,type=pipe": { - "model": "create:block/bracket/pipe/wall_wooden", - "y": 90 - }, - "axis_along_first=false,facing=west,type=pipe": { - "model": "create:block/bracket/pipe/wall_wooden", - "y": 180 - }, - "axis_along_first=true,facing=west,type=pipe": { - "model": "create:block/bracket/pipe/wall_wooden", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=east,type=pipe": { - "model": "create:block/bracket/pipe/wall_wooden" - }, - "axis_along_first=true,facing=east,type=pipe": { - "model": "create:block/bracket/pipe/wall_wooden", - "x": 90 - }, - "axis_along_first=false,facing=down,type=cog": { - "model": "create:block/bracket/cog/ground_wooden", - "x": 180 - }, - "axis_along_first=true,facing=down,type=cog": { - "model": "create:block/bracket/cog/ground_wooden", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up,type=cog": { - "model": "create:block/bracket/cog/ground_wooden" - }, - "axis_along_first=true,facing=up,type=cog": { - "model": "create:block/bracket/cog/ground_wooden", - "y": 90 - }, - "axis_along_first=false,facing=north,type=cog": { - "model": "create:block/bracket/cog/wall_wooden", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=north,type=cog": { - "model": "create:block/bracket/cog/wall_wooden", - "y": 270 - }, - "axis_along_first=false,facing=south,type=cog": { - "model": "create:block/bracket/cog/wall_wooden", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=south,type=cog": { - "model": "create:block/bracket/cog/wall_wooden", - "y": 90 - }, - "axis_along_first=false,facing=west,type=cog": { - "model": "create:block/bracket/cog/wall_wooden", - "y": 180 - }, - "axis_along_first=true,facing=west,type=cog": { - "model": "create:block/bracket/cog/wall_wooden", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=east,type=cog": { - "model": "create:block/bracket/cog/wall_wooden" - }, - "axis_along_first=true,facing=east,type=cog": { - "model": "create:block/bracket/cog/wall_wooden", - "x": 90 - }, - "axis_along_first=false,facing=down,type=shaft": { - "model": "create:block/bracket/shaft/ground_wooden", - "x": 180 - }, - "axis_along_first=true,facing=down,type=shaft": { - "model": "create:block/bracket/shaft/ground_wooden", - "x": 180, - "y": 90 - }, - "axis_along_first=false,facing=up,type=shaft": { - "model": "create:block/bracket/shaft/ground_wooden" - }, - "axis_along_first=true,facing=up,type=shaft": { - "model": "create:block/bracket/shaft/ground_wooden", - "y": 90 - }, - "axis_along_first=false,facing=north,type=shaft": { - "model": "create:block/bracket/shaft/wall_wooden", - "x": 90, - "y": 270 - }, - "axis_along_first=true,facing=north,type=shaft": { - "model": "create:block/bracket/shaft/wall_wooden", - "y": 270 - }, - "axis_along_first=false,facing=south,type=shaft": { - "model": "create:block/bracket/shaft/wall_wooden", - "x": 90, - "y": 90 - }, - "axis_along_first=true,facing=south,type=shaft": { - "model": "create:block/bracket/shaft/wall_wooden", - "y": 90 - }, - "axis_along_first=false,facing=west,type=shaft": { - "model": "create:block/bracket/shaft/wall_wooden", - "y": 180 - }, - "axis_along_first=true,facing=west,type=shaft": { - "model": "create:block/bracket/shaft/wall_wooden", - "x": 90, - "y": 180 - }, - "axis_along_first=false,facing=east,type=shaft": { - "model": "create:block/bracket/shaft/wall_wooden" - }, - "axis_along_first=true,facing=east,type=shaft": { - "model": "create:block/bracket/shaft/wall_wooden", - "x": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/yellow_sail.json b/src/generated/resources/assets/create/blockstates/yellow_sail.json deleted file mode 100644 index 3f3deb7b0..000000000 --- a/src/generated/resources/assets/create/blockstates/yellow_sail.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/yellow_sail", - "x": 180 - }, - "facing=up": { - "model": "create:block/yellow_sail" - }, - "facing=north": { - "model": "create:block/yellow_sail", - "x": 90 - }, - "facing=south": { - "model": "create:block/yellow_sail", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/yellow_sail", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/yellow_sail", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/yellow_seat.json b/src/generated/resources/assets/create/blockstates/yellow_seat.json deleted file mode 100644 index a5be9be3f..000000000 --- a/src/generated/resources/assets/create/blockstates/yellow_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/yellow_seat" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json b/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json deleted file mode 100644 index 0edbf38a0..000000000 --- a/src/generated/resources/assets/create/blockstates/yellow_valve_handle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variants": { - "facing=down": { - "model": "create:block/yellow_valve_handle", - "x": 180 - }, - "facing=up": { - "model": "create:block/yellow_valve_handle" - }, - "facing=north": { - "model": "create:block/yellow_valve_handle", - "x": 90 - }, - "facing=south": { - "model": "create:block/yellow_valve_handle", - "x": 90, - "y": 180 - }, - "facing=west": { - "model": "create:block/yellow_valve_handle", - "x": 90, - "y": 270 - }, - "facing=east": { - "model": "create:block/yellow_valve_handle", - "x": 90, - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/zinc_block.json b/src/generated/resources/assets/create/blockstates/zinc_block.json deleted file mode 100644 index ec9887ace..000000000 --- a/src/generated/resources/assets/create/blockstates/zinc_block.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/zinc_block" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/zinc_ore.json b/src/generated/resources/assets/create/blockstates/zinc_ore.json deleted file mode 100644 index d3b6cc27a..000000000 --- a/src/generated/resources/assets/create/blockstates/zinc_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "create:block/zinc_ore" - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json deleted file mode 100644 index 2428052fc..000000000 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ /dev/null @@ -1,497 +0,0 @@ -{ - "block.create.acacia_window": "\u028Dopu\u0131M \u0250\u0131\u0254\u0250\u0254\u2C6F", - "block.create.acacia_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u0250\u0131\u0254\u0250\u0254\u2C6F", - "block.create.adjustable_chain_gearshift": "\u0287\u025F\u0131\u0265s\u0279\u0250\u01DD\u2141 u\u0131\u0250\u0265\u0186 \u01DD\u05DFq\u0250\u0287sn\u0638p\u2C6F", - "block.create.adjustable_crate": "\u01DD\u0287\u0250\u0279\u0186 \u01DD\u05DFq\u0250\u0287sn\u0638p\u2C6F", - "block.create.adjustable_pulse_repeater": "\u0279\u01DD\u0287\u0250\u01DDd\u01DD\u1D1A \u01DDs\u05DFn\u0500 \u01DD\u05DFq\u0250\u0287sn\u0638p\u2C6F", - "block.create.adjustable_repeater": "\u0279\u01DD\u0287\u0250\u01DDd\u01DD\u1D1A \u01DD\u05DFq\u0250\u0287sn\u0638p\u2C6F", - "block.create.analog_lever": "\u0279\u01DD\u028C\u01DD\uA780 bo\u05DF\u0250u\u2C6F", - "block.create.andesite_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_casing": "bu\u0131s\u0250\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.andesite_tunnel": "\u05DF\u01DDuun\u27D8 \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "block.create.basin": "u\u0131s\u0250\u15FA", - "block.create.belt": "\u0287\u05DF\u01DD\u15FA", - "block.create.birch_window": "\u028Dopu\u0131M \u0265\u0254\u0279\u0131\u15FA", - "block.create.birch_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u0265\u0254\u0279\u0131\u15FA", - "block.create.black_sail": "\u05DF\u0131\u0250S \u029E\u0254\u0250\u05DF\u15FA", - "block.create.black_seat": "\u0287\u0250\u01DDS \u029E\u0254\u0250\u05DF\u15FA", - "block.create.black_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u029E\u0254\u0250\u05DF\u15FA", - "block.create.blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA", - "block.create.blue_sail": "\u05DF\u0131\u0250S \u01DDn\u05DF\u15FA", - "block.create.blue_seat": "\u0287\u0250\u01DDS \u01DDn\u05DF\u15FA", - "block.create.blue_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u01DDn\u05DF\u15FA", - "block.create.brass_belt_funnel": "\u05DF\u01DDuun\u2132 \u0287\u05DF\u01DD\u15FA ss\u0250\u0279\u15FA", - "block.create.brass_block": "ss\u0250\u0279\u15FA \u025Fo \u029E\u0254o\u05DF\u15FA", - "block.create.brass_casing": "bu\u0131s\u0250\u0186 ss\u0250\u0279\u15FA", - "block.create.brass_encased_shaft": "\u0287\u025F\u0250\u0265S p\u01DDs\u0250\u0254u\u018E ss\u0250\u0279\u15FA", - "block.create.brass_funnel": "\u05DF\u01DDuun\u2132 ss\u0250\u0279\u15FA", - "block.create.brass_tunnel": "\u05DF\u01DDuun\u27D8 ss\u0250\u0279\u15FA", - "block.create.brown_sail": "\u05DF\u0131\u0250S u\u028Do\u0279\u15FA", - "block.create.brown_seat": "\u0287\u0250\u01DDS u\u028Do\u0279\u15FA", - "block.create.brown_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B u\u028Do\u0279\u15FA", - "block.create.cart_assembler": "\u0279\u01DD\u05DFq\u026F\u01DDss\u2C6F \u0287\u0279\u0250\u0186", - "block.create.chiseled_dark_scoria": "\u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", - "block.create.chiseled_dolomite": "\u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", - "block.create.chiseled_gabbro": "o\u0279qq\u0250\u2141 p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", - "block.create.chiseled_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", - "block.create.chiseled_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", - "block.create.chiseled_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", - "block.create.chocolate": "\u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186", - "block.create.chromatic_projector": "\u0279o\u0287\u0254\u01DD\u0638o\u0279\u0500 \u0254\u0131\u0287\u0250\u026Fo\u0279\u0265\u0186", - "block.create.chute": "\u01DD\u0287n\u0265\u0186", - "block.create.clockwork_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186", - "block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186", - "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", - "block.create.content_observer": "\u0279\u01DD\u028C\u0279\u01DDsqO \u0287u\u01DD\u0287uo\u0186", - "block.create.controller_rail": "\u05DF\u0131\u0250\u1D1A \u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186", - "block.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", - "block.create.copper_block": "\u0279\u01DDddo\u0186 \u025Fo \u029E\u0254o\u05DF\u15FA", - "block.create.copper_casing": "bu\u0131s\u0250\u0186 \u0279\u01DDddo\u0186", - "block.create.copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186", - "block.create.copper_shingles": "s\u01DD\u05DFbu\u0131\u0265S \u0279\u01DDddo\u0186", - "block.create.copper_tiles": "s\u01DD\u05DF\u0131\u27D8 \u0279\u01DDddo\u0186", - "block.create.copper_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u0279\u01DDddo\u0186", - "block.create.creative_crate": "\u01DD\u0287\u0250\u0279\u0186 \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", - "block.create.creative_fluid_tank": "\u029Eu\u0250\u27D8 p\u0131n\u05DF\u2132 \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", - "block.create.creative_motor": "\u0279o\u0287oW \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", - "block.create.crimson_window": "\u028Dopu\u0131M uos\u026F\u0131\u0279\u0186", - "block.create.crimson_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M uos\u026F\u0131\u0279\u0186", - "block.create.crushing_wheel": "\u05DF\u01DD\u01DD\u0265M bu\u0131\u0265sn\u0279\u0186", - "block.create.crushing_wheel_controller": "\u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186 \u05DF\u01DD\u01DD\u0265M bu\u0131\u0265sn\u0279\u0186", - "block.create.cuckoo_clock": "\u029E\u0254o\u05DF\u0186 oo\u029E\u0254n\u0186", - "block.create.cyan_sail": "\u05DF\u0131\u0250S u\u0250\u028E\u0186", - "block.create.cyan_seat": "\u0287\u0250\u01DDS u\u0250\u028E\u0186", - "block.create.cyan_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B u\u0250\u028E\u0186", - "block.create.dark_oak_window": "\u028Dopu\u0131M \u029E\u0250O \u029E\u0279\u0250\u15E1", - "block.create.dark_oak_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u029E\u0250O \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria": "\u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.dark_scoria_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1", - "block.create.deployer": "\u0279\u01DD\u028Eo\u05DFd\u01DD\u15E1", - "block.create.depot": "\u0287od\u01DD\u15E1", - "block.create.diorite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.diorite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.diorite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.diorite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.diorite_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.diorite_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.diorite_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.diorite_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.diorite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131\u0279o\u0131\u15E1", - "block.create.dolomite": "\u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.dolomite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1", - "block.create.encased_chain_drive": "\u01DD\u028C\u0131\u0279\u15E1 u\u0131\u0250\u0265\u0186 p\u01DDs\u0250\u0254u\u018E", - "block.create.encased_fan": "u\u0250\u2132 p\u01DDs\u0250\u0254u\u018E", - "block.create.encased_fluid_pipe": "\u01DDd\u0131\u0500 p\u0131n\u05DF\u2132 p\u01DDs\u0250\u0254u\u018E", - "block.create.fancy_andesite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F \u028E\u0254u\u0250\u2132", - "block.create.fancy_andesite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F \u028E\u0254u\u0250\u2132", - "block.create.fancy_andesite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F \u028E\u0254u\u0250\u2132", - "block.create.fancy_andesite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131s\u01DDpu\u2C6F \u028E\u0254u\u0250\u2132", - "block.create.fancy_dark_scoria_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_dark_scoria_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_dark_scoria_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_dark_scoria_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_diorite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_diorite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_diorite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_diorite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u0279o\u0131\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_dolomite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_dolomite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_dolomite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_dolomite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 \u028E\u0254u\u0250\u2132", - "block.create.fancy_gabbro_bricks": "s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141 \u028E\u0254u\u0250\u2132", - "block.create.fancy_gabbro_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141 \u028E\u0254u\u0250\u2132", - "block.create.fancy_gabbro_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141 \u028E\u0254u\u0250\u2132", - "block.create.fancy_gabbro_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141 \u028E\u0254u\u0250\u2132", - "block.create.fancy_granite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131u\u0250\u0279\u2141 \u028E\u0254u\u0250\u2132", - "block.create.fancy_granite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131u\u0250\u0279\u2141 \u028E\u0254u\u0250\u2132", - "block.create.fancy_granite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131u\u0250\u0279\u2141 \u028E\u0254u\u0250\u2132", - "block.create.fancy_granite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131u\u0250\u0279\u2141 \u028E\u0254u\u0250\u2132", - "block.create.fancy_limestone_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 \u028E\u0254u\u0250\u2132", - "block.create.fancy_limestone_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 \u028E\u0254u\u0250\u2132", - "block.create.fancy_limestone_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 \u028E\u0254u\u0250\u2132", - "block.create.fancy_limestone_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 \u028E\u0254u\u0250\u2132", - "block.create.fancy_scoria_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u028E\u0254u\u0250\u2132", - "block.create.fancy_scoria_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u028E\u0254u\u0250\u2132", - "block.create.fancy_scoria_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u028E\u0254u\u0250\u2132", - "block.create.fancy_scoria_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S \u028E\u0254u\u0250\u2132", - "block.create.fancy_weathered_limestone_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132", - "block.create.fancy_weathered_limestone_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132", - "block.create.fancy_weathered_limestone_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132", - "block.create.fancy_weathered_limestone_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028E\u0254u\u0250\u2132", - "block.create.fluid_pipe": "\u01DDd\u0131\u0500 p\u0131n\u05DF\u2132", - "block.create.fluid_tank": "\u029Eu\u0250\u27D8 p\u0131n\u05DF\u2132", - "block.create.fluid_valve": "\u01DD\u028C\u05DF\u0250\u039B p\u0131n\u05DF\u2132", - "block.create.flywheel": "\u05DF\u01DD\u01DD\u0265\u028D\u028E\u05DF\u2132", - "block.create.framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132", - "block.create.framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132", - "block.create.furnace_engine": "\u01DDu\u0131bu\u018E \u01DD\u0254\u0250u\u0279n\u2132", - "block.create.gabbro": "o\u0279qq\u0250\u2141", - "block.create.gabbro_bricks": "s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141", - "block.create.gabbro_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141", - "block.create.gabbro_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141", - "block.create.gabbro_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA o\u0279qq\u0250\u2141", - "block.create.gabbro_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 o\u0279qq\u0250\u2141", - "block.create.gabbro_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 o\u0279qq\u0250\u2141", - "block.create.gabbro_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 o\u0279qq\u0250\u2141", - "block.create.gabbro_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 o\u0279qq\u0250\u2141", - "block.create.gabbro_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 o\u0279qq\u0250\u2141", - "block.create.gantry_carriage": "\u01DDb\u0250\u0131\u0279\u0279\u0250\u0186 \u028E\u0279\u0287u\u0250\u2141", - "block.create.gantry_shaft": "\u0287\u025F\u0250\u0265S \u028E\u0279\u0287u\u0250\u2141", - "block.create.gearbox": "xoq\u0279\u0250\u01DD\u2141", - "block.create.gearshift": "\u0287\u025F\u0131\u0265s\u0279\u0250\u01DD\u2141", - "block.create.glass_fluid_pipe": "\u01DDd\u0131\u0500 p\u0131n\u05DF\u2132 ss\u0250\u05DF\u2141", - "block.create.granite_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.granite_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.granite_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.granite_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.granite_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.granite_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.granite_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.granite_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.granite_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DD\u0287\u0131u\u0250\u0279\u2141", - "block.create.gray_sail": "\u05DF\u0131\u0250S \u028E\u0250\u0279\u2141", - "block.create.gray_seat": "\u0287\u0250\u01DDS \u028E\u0250\u0279\u2141", - "block.create.gray_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u028E\u0250\u0279\u2141", - "block.create.green_sail": "\u05DF\u0131\u0250S u\u01DD\u01DD\u0279\u2141", - "block.create.green_seat": "\u0287\u0250\u01DDS u\u01DD\u01DD\u0279\u2141", - "block.create.green_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B u\u01DD\u01DD\u0279\u2141", - "block.create.hand_crank": "\u029Eu\u0250\u0279\u0186 pu\u0250H", - "block.create.honey": "\u028E\u01DDuoH", - "block.create.horizontal_framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0287uoz\u0131\u0279oH", - "block.create.horizontal_framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0287uoz\u0131\u0279oH", - "block.create.hose_pulley": "\u028E\u01DD\u05DF\u05DFn\u0500 \u01DDsoH", - "block.create.item_drain": "u\u0131\u0250\u0279\u15E1 \u026F\u01DD\u0287I", - "block.create.jungle_window": "\u028Dopu\u0131M \u01DD\u05DFbun\u017F", - "block.create.jungle_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u01DD\u05DFbun\u017F", - "block.create.large_cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186 \u01DDb\u0279\u0250\uA780", - "block.create.layered_andesite": "\u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.layered_dark_scoria": "\u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.layered_diorite": "\u01DD\u0287\u0131\u0279o\u0131\u15E1 p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.layered_dolomite": "\u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.layered_gabbro": "o\u0279qq\u0250\u2141 p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.layered_granite": "\u01DD\u0287\u0131u\u0250\u0279\u2141 p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.layered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.layered_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.layered_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u0279\u01DD\u028E\u0250\uA780", - "block.create.light_blue_sail": "\u05DF\u0131\u0250S \u01DDn\u05DF\u15FA \u0287\u0265b\u0131\uA780", - "block.create.light_blue_seat": "\u0287\u0250\u01DDS \u01DDn\u05DF\u15FA \u0287\u0265b\u0131\uA780", - "block.create.light_blue_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u01DDn\u05DF\u15FA \u0287\u0265b\u0131\uA780", - "block.create.light_gray_sail": "\u05DF\u0131\u0250S \u028E\u0250\u0279\u2141 \u0287\u0265b\u0131\uA780", - "block.create.light_gray_seat": "\u0287\u0250\u01DDS \u028E\u0250\u0279\u2141 \u0287\u0265b\u0131\uA780", - "block.create.light_gray_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u028E\u0250\u0279\u2141 \u0287\u0265b\u0131\uA780", - "block.create.lime_sail": "\u05DF\u0131\u0250S \u01DD\u026F\u0131\uA780", - "block.create.lime_seat": "\u0287\u0250\u01DDS \u01DD\u026F\u0131\uA780", - "block.create.lime_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u01DD\u026F\u0131\uA780", - "block.create.limesand": "pu\u0250s\u01DD\u026F\u0131\uA780", - "block.create.limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.limestone_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780", - "block.create.linear_chassis": "s\u0131ss\u0250\u0265\u0186 \u0279\u0250\u01DDu\u0131\uA780", - "block.create.lit_blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA \u0287\u0131\uA780", - "block.create.magenta_sail": "\u05DF\u0131\u0250S \u0250\u0287u\u01DDb\u0250W", - "block.create.magenta_seat": "\u0287\u0250\u01DDS \u0250\u0287u\u01DDb\u0250W", - "block.create.magenta_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u0250\u0287u\u01DDb\u0250W", - "block.create.mechanical_arm": "\u026F\u0279\u2C6F \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_crafter": "\u0279\u01DD\u0287\u025F\u0250\u0279\u0186 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_drill": "\u05DF\u05DF\u0131\u0279\u15E1 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_harvester": "\u0279\u01DD\u0287s\u01DD\u028C\u0279\u0250H \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_mixer": "\u0279\u01DDx\u0131W \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_piston": "uo\u0287s\u0131\u0500 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_piston_head": "p\u0250\u01DDH uo\u0287s\u0131\u0500 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_plough": "\u0265bno\u05DF\u0500 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_press": "ss\u01DD\u0279\u0500 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_pump": "d\u026Fn\u0500 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.mechanical_saw": "\u028D\u0250S \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "block.create.metal_bracket": "\u0287\u01DD\u029E\u0254\u0250\u0279\u15FA \u05DF\u0250\u0287\u01DDW", - "block.create.millstone": "\u01DDuo\u0287s\u05DF\u05DF\u0131W", - "block.create.minecart_anchor": "\u0279o\u0265\u0254u\u2C6F \u0287\u0279\u0250\u0254\u01DDu\u0131W", - "block.create.mossy_andesite": "\u01DD\u0287\u0131s\u01DDpu\u2C6F \u028EssoW", - "block.create.mossy_dark_scoria": "\u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 \u028EssoW", - "block.create.mossy_diorite": "\u01DD\u0287\u0131\u0279o\u0131\u15E1 \u028EssoW", - "block.create.mossy_dolomite": "\u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 \u028EssoW", - "block.create.mossy_gabbro": "o\u0279qq\u0250\u2141 \u028EssoW", - "block.create.mossy_granite": "\u01DD\u0287\u0131u\u0250\u0279\u2141 \u028EssoW", - "block.create.mossy_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 \u028EssoW", - "block.create.mossy_scoria": "\u0250\u0131\u0279o\u0254S \u028EssoW", - "block.create.mossy_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM \u028EssoW", - "block.create.mysterious_cuckoo_clock": "\u029E\u0254o\u05DF\u0186 oo\u029E\u0254n\u0186", - "block.create.natural_scoria": "\u0250\u0131\u0279o\u0254S \u05DF\u0250\u0279n\u0287\u0250N", - "block.create.nixie_tube": "\u01DDqn\u27D8 \u01DD\u0131x\u0131N", - "block.create.nozzle": "\u01DD\u05DFzzoN", - "block.create.oak_window": "\u028Dopu\u0131M \u029E\u0250O", - "block.create.oak_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u029E\u0250O", - "block.create.orange_sail": "\u05DF\u0131\u0250S \u01DDbu\u0250\u0279O", - "block.create.orange_seat": "\u0287\u0250\u01DDS \u01DDbu\u0250\u0279O", - "block.create.orange_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u01DDbu\u0250\u0279O", - "block.create.ornate_iron_window": "\u028Dopu\u0131M uo\u0279I \u01DD\u0287\u0250u\u0279O", - "block.create.ornate_iron_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M uo\u0279I \u01DD\u0287\u0250u\u0279O", - "block.create.overgrown_andesite": "\u01DD\u0287\u0131s\u01DDpu\u2C6F u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.overgrown_dark_scoria": "\u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.overgrown_diorite": "\u01DD\u0287\u0131\u0279o\u0131\u15E1 u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.overgrown_dolomite": "\u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.overgrown_gabbro": "o\u0279qq\u0250\u2141 u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.overgrown_granite": "\u01DD\u0287\u0131u\u0250\u0279\u2141 u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.overgrown_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.overgrown_scoria": "\u0250\u0131\u0279o\u0254S u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.overgrown_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM u\u028Do\u0279b\u0279\u01DD\u028CO", - "block.create.paved_andesite": "\u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u028C\u0250\u0500", - "block.create.paved_andesite_slab": "q\u0250\u05DFS \u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u028C\u0250\u0500", - "block.create.paved_andesite_stairs": "s\u0279\u0131\u0250\u0287S \u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u028C\u0250\u0500", - "block.create.paved_andesite_wall": "\u05DF\u05DF\u0250M \u01DD\u0287\u0131s\u01DDpu\u2C6F p\u01DD\u028C\u0250\u0500", - "block.create.paved_dark_scoria": "\u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_dark_scoria_slab": "q\u0250\u05DFS \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_dark_scoria_stairs": "s\u0279\u0131\u0250\u0287S \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_dark_scoria_wall": "\u05DF\u05DF\u0250M \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_diorite": "\u01DD\u0287\u0131\u0279o\u0131\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_diorite_slab": "q\u0250\u05DFS \u01DD\u0287\u0131\u0279o\u0131\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_diorite_stairs": "s\u0279\u0131\u0250\u0287S \u01DD\u0287\u0131\u0279o\u0131\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_diorite_wall": "\u05DF\u05DF\u0250M \u01DD\u0287\u0131\u0279o\u0131\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_dolomite": "\u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_dolomite_slab": "q\u0250\u05DFS \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_dolomite_stairs": "s\u0279\u0131\u0250\u0287S \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_dolomite_wall": "\u05DF\u05DF\u0250M \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u028C\u0250\u0500", - "block.create.paved_gabbro": "o\u0279qq\u0250\u2141 p\u01DD\u028C\u0250\u0500", - "block.create.paved_gabbro_slab": "q\u0250\u05DFS o\u0279qq\u0250\u2141 p\u01DD\u028C\u0250\u0500", - "block.create.paved_gabbro_stairs": "s\u0279\u0131\u0250\u0287S o\u0279qq\u0250\u2141 p\u01DD\u028C\u0250\u0500", - "block.create.paved_gabbro_wall": "\u05DF\u05DF\u0250M o\u0279qq\u0250\u2141 p\u01DD\u028C\u0250\u0500", - "block.create.paved_granite": "\u01DD\u0287\u0131u\u0250\u0279\u2141 p\u01DD\u028C\u0250\u0500", - "block.create.paved_granite_slab": "q\u0250\u05DFS \u01DD\u0287\u0131u\u0250\u0279\u2141 p\u01DD\u028C\u0250\u0500", - "block.create.paved_granite_stairs": "s\u0279\u0131\u0250\u0287S \u01DD\u0287\u0131u\u0250\u0279\u2141 p\u01DD\u028C\u0250\u0500", - "block.create.paved_granite_wall": "\u05DF\u05DF\u0250M \u01DD\u0287\u0131u\u0250\u0279\u2141 p\u01DD\u028C\u0250\u0500", - "block.create.paved_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u028C\u0250\u0500", - "block.create.paved_limestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u028C\u0250\u0500", - "block.create.paved_limestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u028C\u0250\u0500", - "block.create.paved_limestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u028C\u0250\u0500", - "block.create.paved_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u028C\u0250\u0500", - "block.create.paved_scoria_slab": "q\u0250\u05DFS \u0250\u0131\u0279o\u0254S p\u01DD\u028C\u0250\u0500", - "block.create.paved_scoria_stairs": "s\u0279\u0131\u0250\u0287S \u0250\u0131\u0279o\u0254S p\u01DD\u028C\u0250\u0500", - "block.create.paved_scoria_wall": "\u05DF\u05DF\u0250M \u0250\u0131\u0279o\u0254S p\u01DD\u028C\u0250\u0500", - "block.create.paved_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u028C\u0250\u0500", - "block.create.paved_weathered_limestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u028C\u0250\u0500", - "block.create.paved_weathered_limestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u028C\u0250\u0500", - "block.create.paved_weathered_limestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u028C\u0250\u0500", - "block.create.pink_sail": "\u05DF\u0131\u0250S \u029Eu\u0131\u0500", - "block.create.pink_seat": "\u0287\u0250\u01DDS \u029Eu\u0131\u0500", - "block.create.pink_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u029Eu\u0131\u0500", - "block.create.piston_extension_pole": "\u01DD\u05DFo\u0500 uo\u0131su\u01DD\u0287x\u018E uo\u0287s\u0131\u0500", - "block.create.polished_dark_scoria": "\u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_dark_scoria_slab": "q\u0250\u05DFS \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_dark_scoria_stairs": "s\u0279\u0131\u0250\u0287S \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_dark_scoria_wall": "\u05DF\u05DF\u0250M \u0250\u0131\u0279o\u0254S \u029E\u0279\u0250\u15E1 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_dolomite": "\u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_dolomite_slab": "q\u0250\u05DFS \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_dolomite_stairs": "s\u0279\u0131\u0250\u0287S \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_dolomite_wall": "\u05DF\u05DF\u0250M \u01DD\u0287\u0131\u026Fo\u05DFo\u15E1 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_gabbro": "o\u0279qq\u0250\u2141 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_gabbro_slab": "q\u0250\u05DFS o\u0279qq\u0250\u2141 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_gabbro_stairs": "s\u0279\u0131\u0250\u0287S o\u0279qq\u0250\u2141 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_gabbro_wall": "\u05DF\u05DF\u0250M o\u0279qq\u0250\u2141 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_limestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_limestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_limestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_scoria_slab": "q\u0250\u05DFS \u0250\u0131\u0279o\u0254S p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_scoria_stairs": "s\u0279\u0131\u0250\u0287S \u0250\u0131\u0279o\u0254S p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_scoria_wall": "\u05DF\u05DF\u0250M \u0250\u0131\u0279o\u0254S p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_weathered_limestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_weathered_limestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.polished_weathered_limestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u0265s\u0131\u05DFo\u0500", - "block.create.portable_fluid_interface": "\u01DD\u0254\u0250\u025F\u0279\u01DD\u0287uI p\u0131n\u05DF\u2132 \u01DD\u05DFq\u0250\u0287\u0279o\u0500", - "block.create.portable_storage_interface": "\u01DD\u0254\u0250\u025F\u0279\u01DD\u0287uI \u01DDb\u0250\u0279o\u0287S \u01DD\u05DFq\u0250\u0287\u0279o\u0500", - "block.create.powered_latch": "\u0265\u0254\u0287\u0250\uA780 p\u01DD\u0279\u01DD\u028Do\u0500", - "block.create.powered_toggle_latch": "\u0265\u0254\u0287\u0250\uA780 \u01DD\u05DFbbo\u27D8 p\u01DD\u0279\u01DD\u028Do\u0500", - "block.create.pulley_magnet": "\u0287\u01DDub\u0250W \u028E\u01DD\u05DF\u05DFn\u0500", - "block.create.pulse_repeater": "\u0279\u01DD\u0287\u0250\u01DDd\u01DD\u1D1A \u01DDs\u05DFn\u0500", - "block.create.purple_sail": "\u05DF\u0131\u0250S \u01DD\u05DFd\u0279n\u0500", - "block.create.purple_seat": "\u0287\u0250\u01DDS \u01DD\u05DFd\u0279n\u0500", - "block.create.purple_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u01DD\u05DFd\u0279n\u0500", - "block.create.radial_chassis": "s\u0131ss\u0250\u0265\u0186 \u05DF\u0250\u0131p\u0250\u1D1A", - "block.create.red_sail": "\u05DF\u0131\u0250S p\u01DD\u1D1A", - "block.create.red_seat": "\u0287\u0250\u01DDS p\u01DD\u1D1A", - "block.create.red_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B p\u01DD\u1D1A", - "block.create.redstone_contact": "\u0287\u0254\u0250\u0287uo\u0186 \u01DDuo\u0287sp\u01DD\u1D1A", - "block.create.redstone_link": "\u029Eu\u0131\uA780 \u01DDuo\u0287sp\u01DD\u1D1A", - "block.create.refined_radiance_casing": "bu\u0131s\u0250\u0186 \u0287u\u0250\u0131p\u0250\u1D1A", - "block.create.reinforced_rail": "\u05DF\u0131\u0250\u1D1A p\u01DD\u0254\u0279o\u025Fu\u0131\u01DD\u1D1A", - "block.create.rope": "\u01DDdo\u1D1A", - "block.create.rope_pulley": "\u028E\u01DD\u05DF\u05DFn\u0500 \u01DDdo\u1D1A", - "block.create.rotation_speed_controller": "\u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186 p\u01DD\u01DDdS uo\u0131\u0287\u0250\u0287o\u1D1A", - "block.create.sail_frame": "\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0131\u0250S", - "block.create.schematic_table": "\u01DD\u05DFq\u0250\u27D8 \u0254\u0131\u0287\u0250\u026F\u01DD\u0265\u0254S", - "block.create.schematicannon": "uouu\u0250\u0254\u0131\u0287\u0250\u026F\u01DD\u0265\u0254S", - "block.create.scoria": "\u0250\u0131\u0279o\u0254S", - "block.create.scoria_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S", - "block.create.scoria_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S", - "block.create.scoria_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S", - "block.create.scoria_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u0250\u0131\u0279o\u0254S", - "block.create.scoria_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S", - "block.create.scoria_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S", - "block.create.scoria_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S", - "block.create.scoria_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u0250\u0131\u0279o\u0254S", - "block.create.scoria_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u0250\u0131\u0279o\u0254S", - "block.create.secondary_linear_chassis": "s\u0131ss\u0250\u0265\u0186 \u0279\u0250\u01DDu\u0131\uA780 \u028E\u0279\u0250puo\u0254\u01DDS", - "block.create.sequenced_gearshift": "\u0287\u025F\u0131\u0265s\u0279\u0250\u01DD\u2141 p\u01DD\u0254u\u01DDnb\u01DDS", - "block.create.shadow_steel_casing": "bu\u0131s\u0250\u0186 \u028Dop\u0250\u0265S", - "block.create.shaft": "\u0287\u025F\u0250\u0265S", - "block.create.smart_chute": "\u01DD\u0287n\u0265\u0186 \u0287\u0279\u0250\u026FS", - "block.create.smart_fluid_pipe": "\u01DDd\u0131\u0500 p\u0131n\u05DF\u2132 \u0287\u0279\u0250\u026FS", - "block.create.speedometer": "\u0279\u01DD\u0287\u01DD\u026Fop\u01DD\u01DDdS", - "block.create.spout": "\u0287nodS", - "block.create.spruce_window": "\u028Dopu\u0131M \u01DD\u0254n\u0279dS", - "block.create.spruce_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M \u01DD\u0254n\u0279dS", - "block.create.sticker": "\u0279\u01DD\u029E\u0254\u0131\u0287S", - "block.create.sticky_mechanical_piston": "uo\u0287s\u0131\u0500 \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW \u028E\u029E\u0254\u0131\u0287S", - "block.create.stockpile_switch": "\u0265\u0254\u0287\u0131\u028DS \u01DD\u05DF\u0131d\u029E\u0254o\u0287S", - "block.create.stressometer": "\u0279\u01DD\u0287\u01DD\u026Foss\u01DD\u0279\u0287S", - "block.create.tiled_glass": "ss\u0250\u05DF\u2141 p\u01DD\u05DF\u0131\u27D8", - "block.create.tiled_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u05DF\u0131\u27D8", - "block.create.turntable": "\u01DD\u05DFq\u0250\u0287u\u0279n\u27D8", - "block.create.vertical_framed_glass": "ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", - "block.create.vertical_framed_glass_pane": "\u01DDu\u0250\u0500 ss\u0250\u05DF\u2141 p\u01DD\u026F\u0250\u0279\u2132 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", - "block.create.warped_window": "\u028Dopu\u0131M p\u01DDd\u0279\u0250M", - "block.create.warped_window_pane": "\u01DDu\u0250\u0500 \u028Dopu\u0131M p\u01DDd\u0279\u0250M", - "block.create.water_wheel": "\u05DF\u01DD\u01DD\u0265M \u0279\u01DD\u0287\u0250M", - "block.create.weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_bricks": "s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_bricks_slab": "q\u0250\u05DFS s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_bricks_stairs": "s\u0279\u0131\u0250\u0287S s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_bricks_wall": "\u05DF\u05DF\u0250M s\u029E\u0254\u0131\u0279\u15FA \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_cobblestone": "\u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_cobblestone_slab": "q\u0250\u05DFS \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_cobblestone_stairs": "s\u0279\u0131\u0250\u0287S \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_cobblestone_wall": "\u05DF\u05DF\u0250M \u01DDuo\u0287s\u01DD\u05DFqqo\u0186 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weathered_limestone_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", - "block.create.weighted_ejector": "\u0279o\u0287\u0254\u01DD\u0638\u018E p\u01DD\u0287\u0265b\u0131\u01DDM", - "block.create.white_sail": "\u05DF\u0131\u0250S \u01DD\u0287\u0131\u0265M", - "block.create.white_seat": "\u0287\u0250\u01DDS \u01DD\u0287\u0131\u0265M", - "block.create.white_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u01DD\u0287\u0131\u0265M", - "block.create.windmill_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u05DF\u05DF\u0131\u026Fpu\u0131M", - "block.create.wooden_bracket": "\u0287\u01DD\u029E\u0254\u0250\u0279\u15FA u\u01DDpooM", - "block.create.yellow_sail": "\u05DF\u0131\u0250S \u028Do\u05DF\u05DF\u01DD\u028E", - "block.create.yellow_seat": "\u0287\u0250\u01DDS \u028Do\u05DF\u05DF\u01DD\u028E", - "block.create.yellow_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u028Do\u05DF\u05DF\u01DD\u028E", - "block.create.zinc_block": "\u0254u\u0131Z \u025Fo \u029E\u0254o\u05DF\u15FA", - "block.create.zinc_ore": "\u01DD\u0279O \u0254u\u0131Z", - "entity.create.contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186", - "entity.create.crafting_blueprint": "\u0287u\u0131\u0279d\u01DDn\u05DF\u15FA bu\u0131\u0287\u025F\u0250\u0279\u0186", - "entity.create.gantry_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0287u\u0250\u2141", - "entity.create.seat": "\u0287\u0250\u01DDS", - "entity.create.stationary_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0250uo\u0131\u0287\u0250\u0287S", - "entity.create.super_glue": "\u01DDn\u05DF\u2141 \u0279\u01DDdnS", - "fluid.create.milk": "\u029E\u05DF\u0131W", - "fluid.create.potion": "uo\u0131\u0287o\u0500", - "fluid.create.tea": "\u0250\u01DD\u27D8 s,\u0279\u01DDp\u05DF\u0131n\u15FA", - "item.create.andesite_alloy": "\u028Eo\u05DF\u05DF\u2C6F \u01DD\u0287\u0131s\u01DDpu\u2C6F", - "item.create.attribute_filter": "\u0279\u01DD\u0287\u05DF\u0131\u2132 \u01DD\u0287nq\u0131\u0279\u0287\u0287\u2C6F", - "item.create.bar_of_chocolate": "\u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186 \u025Fo \u0279\u0250\u15FA", - "item.create.belt_connector": "\u0287\u05DF\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", - "item.create.blaze_cake": "\u01DD\u029E\u0250\u0186 \u01DDz\u0250\u05DF\u15FA", - "item.create.blaze_cake_base": "\u01DDs\u0250\u15FA \u01DD\u029E\u0250\u0186 \u01DDz\u0250\u05DF\u15FA", - "item.create.brass_hand": "pu\u0250H ss\u0250\u0279\u15FA", - "item.create.brass_ingot": "\u0287obuI ss\u0250\u0279\u15FA", - "item.create.brass_nugget": "\u0287\u01DDbbnN ss\u0250\u0279\u15FA", - "item.create.brass_sheet": "\u0287\u01DD\u01DD\u0265S ss\u0250\u0279\u15FA", - "item.create.builders_tea": "\u0250\u01DD\u27D8 s,\u0279\u01DDp\u05DF\u0131n\u15FA", - "item.create.chest_minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W \u0287s\u01DD\u0265\u0186", - "item.create.chocolate_bucket": "\u0287\u01DD\u029E\u0254n\u15FA \u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186", - "item.create.chocolate_glazed_berries": "s\u01DD\u0131\u0279\u0279\u01DD\u15FA p\u01DDz\u0250\u05DF\u2141 \u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186", - "item.create.chromatic_compound": "punod\u026Fo\u0186 \u0254\u0131\u0287\u0250\u026Fo\u0279\u0265\u0186", - "item.create.cinder_flour": "\u0279no\u05DF\u2132 \u0279\u01DDpu\u0131\u0186", - "item.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", - "item.create.copper_ingot": "\u0287obuI \u0279\u01DDddo\u0186", - "item.create.copper_nugget": "\u0287\u01DDbbnN \u0279\u01DDddo\u0186", - "item.create.copper_sheet": "\u0287\u01DD\u01DD\u0265S \u0279\u01DDddo\u0186", - "item.create.crafter_slot_cover": "\u0279\u01DD\u028Co\u0186 \u0287o\u05DFS \u0279\u01DD\u0287\u025F\u0250\u0279\u0186", - "item.create.crafting_blueprint": "\u0287u\u0131\u0279d\u01DDn\u05DF\u15FA bu\u0131\u0287\u025F\u0250\u0279\u0186", - "item.create.crushed_aluminum_ore": "\u01DD\u0279O \u026Fnu\u0131\u026Fn\u05DF\u2C6F p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_brass": "ss\u0250\u0279\u15FA p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186 p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_gold_ore": "\u01DD\u0279O p\u05DFo\u2141 p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_iron_ore": "\u01DD\u0279O uo\u0279I p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_lead_ore": "\u01DD\u0279O p\u0250\u01DD\uA780 p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_nickel_ore": "\u01DD\u0279O \u05DF\u01DD\u029E\u0254\u0131N p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_osmium_ore": "\u01DD\u0279O \u026Fn\u0131\u026FsO p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_platinum_ore": "\u01DD\u0279O \u026Fnu\u0131\u0287\u0250\u05DF\u0500 p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_quicksilver_ore": "\u01DD\u0279O \u0279\u01DD\u028C\u05DF\u0131s\u029E\u0254\u0131n\u1F49 p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_silver_ore": "\u01DD\u0279O \u0279\u01DD\u028C\u05DF\u0131S p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_tin_ore": "\u01DD\u0279O u\u0131\u27D8 p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_uranium_ore": "\u01DD\u0279O \u026Fn\u0131u\u0250\u0279\u2229 p\u01DD\u0265sn\u0279\u0186", - "item.create.crushed_zinc_ore": "\u01DD\u0279O \u0254u\u0131Z p\u01DD\u0265sn\u0279\u0186", - "item.create.diving_boots": "s\u0287oo\u15FA bu\u0131\u028C\u0131\u15E1", - "item.create.diving_helmet": "\u0287\u01DD\u026F\u05DF\u01DDH bu\u0131\u028C\u0131\u15E1", - "item.create.dough": "\u0265bno\u15E1", - "item.create.electron_tube": "\u01DDqn\u27D8 uo\u0279\u0287\u0254\u01DD\u05DF\u018E", - "item.create.empty_blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA \u028E\u0287d\u026F\u018E", - "item.create.empty_schematic": "\u0254\u0131\u0287\u0250\u026F\u01DD\u0265\u0254S \u028E\u0287d\u026F\u018E", - "item.create.extendo_grip": "d\u0131\u0279\u2141 opu\u01DD\u0287x\u018E", - "item.create.filter": "\u0279\u01DD\u0287\u05DF\u0131\u2132", - "item.create.furnace_minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W \u01DD\u0254\u0250u\u0279n\u2132", - "item.create.goggles": "s\u01DD\u05DFbbo\u2141 s,\u0279\u01DD\u01DDu\u0131bu\u018E", - "item.create.golden_sheet": "\u0287\u01DD\u01DD\u0265S u\u01DDp\u05DFo\u2141", - "item.create.handheld_worldshaper": "\u0279\u01DDd\u0250\u0265sp\u05DF\u0279oM \u01DD\u028C\u0131\u0287\u0250\u01DD\u0279\u0186", - "item.create.honey_bucket": "\u0287\u01DD\u029E\u0254n\u15FA \u028E\u01DDuoH", - "item.create.honeyed_apple": "\u01DD\u05DFdd\u2C6F p\u01DD\u028E\u01DDuoH", - "item.create.integrated_circuit": "\u0287\u0131n\u0254\u0279\u0131\u0186 p\u01DD\u0287\u0250\u0279b\u01DD\u0287uI", - "item.create.iron_sheet": "\u0287\u01DD\u01DD\u0265S uo\u0279I", - "item.create.lapis_sheet": "\u0287\u01DD\u01DD\u0265S s\u0131d\u0250\uA780", - "item.create.linked_controller": "\u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186 p\u01DD\u029Eu\u0131\uA780", - "item.create.minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W", - "item.create.minecart_coupling": "bu\u0131\u05DFdno\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W", - "item.create.polished_rose_quartz": "z\u0287\u0279\u0250n\u1F49 \u01DDso\u1D1A p\u01DD\u0265s\u0131\u05DFo\u0500", - "item.create.powdered_obsidian": "u\u0250\u0131p\u0131sqO p\u01DD\u0279\u01DDp\u028Do\u0500", - "item.create.propeller": "\u0279\u01DD\u05DF\u05DF\u01DDdo\u0279\u0500", - "item.create.red_sand_paper": "\u0279\u01DDd\u0250\u0500 pu\u0250S p\u01DD\u1D1A", - "item.create.refined_radiance": "\u01DD\u0254u\u0250\u0131p\u0250\u1D1A p\u01DDu\u0131\u025F\u01DD\u1D1A", - "item.create.rose_quartz": "z\u0287\u0279\u0250n\u1F49 \u01DDso\u1D1A", - "item.create.sand_paper": "\u0279\u01DDd\u0250\u0500 pu\u0250S", - "item.create.schematic": "\u0254\u0131\u0287\u0250\u026F\u01DD\u0265\u0254S", - "item.create.schematic_and_quill": "\u05DF\u05DF\u0131n\u1F49 pu\u2C6F \u0254\u0131\u0287\u0250\u026F\u01DD\u0265\u0254S", - "item.create.shadow_steel": "\u05DF\u01DD\u01DD\u0287S \u028Dop\u0250\u0265S", - "item.create.super_glue": "\u01DDn\u05DF\u2141 \u0279\u01DDdnS", - "item.create.sweet_roll": "\u05DF\u05DFo\u1D1A \u0287\u01DD\u01DD\u028DS", - "item.create.tree_fertilizer": "\u0279\u01DDz\u0131\u05DF\u0131\u0287\u0279\u01DD\u2132 \u01DD\u01DD\u0279\u27D8", - "item.create.vertical_gearbox": "xoq\u0279\u0250\u01DD\u2141 \u05DF\u0250\u0254\u0131\u0287\u0279\u01DD\u039B", - "item.create.wand_of_symmetry": "\u028E\u0279\u0287\u01DD\u026F\u026F\u028ES \u025FO pu\u0250M", - "item.create.wheat_flour": "\u0279no\u05DF\u2132 \u0287\u0250\u01DD\u0265M", - "item.create.whisk": "\u029Es\u0131\u0265M", - "item.create.wrench": "\u0265\u0254u\u01DD\u0279M", - "item.create.zinc_ingot": "\u0287obuI \u0254u\u0131Z", - "item.create.zinc_nugget": "\u0287\u01DDbbnN \u0254u\u0131Z" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json deleted file mode 100644 index 3dbb3ce81..000000000 --- a/src/generated/resources/assets/create/lang/en_us.json +++ /dev/null @@ -1,2141 +0,0 @@ -{ - - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "Acacia Window", - "block.create.acacia_window_pane": "Acacia Window Pane", - "block.create.adjustable_chain_gearshift": "Adjustable Chain Gearshift", - "block.create.adjustable_crate": "Adjustable Crate", - "block.create.adjustable_pulse_repeater": "Adjustable Pulse Repeater", - "block.create.adjustable_repeater": "Adjustable Repeater", - "block.create.analog_lever": "Analog Lever", - "block.create.andesite_belt_funnel": "Andesite Belt Funnel", - "block.create.andesite_bricks": "Andesite Bricks", - "block.create.andesite_bricks_slab": "Andesite Bricks Slab", - "block.create.andesite_bricks_stairs": "Andesite Bricks Stairs", - "block.create.andesite_bricks_wall": "Andesite Bricks Wall", - "block.create.andesite_casing": "Andesite Casing", - "block.create.andesite_cobblestone": "Andesite Cobblestone", - "block.create.andesite_cobblestone_slab": "Andesite Cobblestone Slab", - "block.create.andesite_cobblestone_stairs": "Andesite Cobblestone Stairs", - "block.create.andesite_cobblestone_wall": "Andesite Cobblestone Wall", - "block.create.andesite_encased_shaft": "Andesite Encased Shaft", - "block.create.andesite_funnel": "Andesite Funnel", - "block.create.andesite_pillar": "Andesite Pillar", - "block.create.andesite_tunnel": "Andesite Tunnel", - "block.create.basin": "Basin", - "block.create.belt": "Belt", - "block.create.birch_window": "Birch Window", - "block.create.birch_window_pane": "Birch Window Pane", - "block.create.black_sail": "Black Sail", - "block.create.black_seat": "Black Seat", - "block.create.black_valve_handle": "Black Valve Handle", - "block.create.blaze_burner": "Blaze Burner", - "block.create.blue_sail": "Blue Sail", - "block.create.blue_seat": "Blue Seat", - "block.create.blue_valve_handle": "Blue Valve Handle", - "block.create.brass_belt_funnel": "Brass Belt Funnel", - "block.create.brass_block": "Block of Brass", - "block.create.brass_casing": "Brass Casing", - "block.create.brass_encased_shaft": "Brass Encased Shaft", - "block.create.brass_funnel": "Brass Funnel", - "block.create.brass_tunnel": "Brass Tunnel", - "block.create.brown_sail": "Brown Sail", - "block.create.brown_seat": "Brown Seat", - "block.create.brown_valve_handle": "Brown Valve Handle", - "block.create.cart_assembler": "Cart Assembler", - "block.create.chiseled_dark_scoria": "Chiseled Dark Scoria", - "block.create.chiseled_dolomite": "Chiseled Dolomite", - "block.create.chiseled_gabbro": "Chiseled Gabbro", - "block.create.chiseled_limestone": "Chiseled Limestone", - "block.create.chiseled_scoria": "Chiseled Scoria", - "block.create.chiseled_weathered_limestone": "Chiseled Weathered Limestone", - "block.create.chocolate": "Chocolate", - "block.create.chromatic_projector": "Chromatic Projector", - "block.create.chute": "Chute", - "block.create.clockwork_bearing": "Clockwork Bearing", - "block.create.clutch": "Clutch", - "block.create.cogwheel": "Cogwheel", - "block.create.content_observer": "Content Observer", - "block.create.controller_rail": "Controller Rail", - "block.create.copper_backtank": "Copper Backtank", - "block.create.copper_block": "Block of Copper", - "block.create.copper_casing": "Copper Casing", - "block.create.copper_ore": "Copper Ore", - "block.create.copper_shingles": "Copper Shingles", - "block.create.copper_tiles": "Copper Tiles", - "block.create.copper_valve_handle": "Copper Valve Handle", - "block.create.creative_crate": "Creative Crate", - "block.create.creative_fluid_tank": "Creative Fluid Tank", - "block.create.creative_motor": "Creative Motor", - "block.create.crimson_window": "Crimson Window", - "block.create.crimson_window_pane": "Crimson Window Pane", - "block.create.crushing_wheel": "Crushing Wheel", - "block.create.crushing_wheel_controller": "Crushing Wheel Controller", - "block.create.cuckoo_clock": "Cuckoo Clock", - "block.create.cyan_sail": "Cyan Sail", - "block.create.cyan_seat": "Cyan Seat", - "block.create.cyan_valve_handle": "Cyan Valve Handle", - "block.create.dark_oak_window": "Dark Oak Window", - "block.create.dark_oak_window_pane": "Dark Oak Window Pane", - "block.create.dark_scoria": "Dark Scoria", - "block.create.dark_scoria_bricks": "Dark Scoria Bricks", - "block.create.dark_scoria_bricks_slab": "Dark Scoria Bricks Slab", - "block.create.dark_scoria_bricks_stairs": "Dark Scoria Bricks Stairs", - "block.create.dark_scoria_bricks_wall": "Dark Scoria Bricks Wall", - "block.create.dark_scoria_cobblestone": "Dark Scoria Cobblestone", - "block.create.dark_scoria_cobblestone_slab": "Dark Scoria Cobblestone Slab", - "block.create.dark_scoria_cobblestone_stairs": "Dark Scoria Cobblestone Stairs", - "block.create.dark_scoria_cobblestone_wall": "Dark Scoria Cobblestone Wall", - "block.create.dark_scoria_pillar": "Dark Scoria Pillar", - "block.create.deployer": "Deployer", - "block.create.depot": "Depot", - "block.create.diorite_bricks": "Diorite Bricks", - "block.create.diorite_bricks_slab": "Diorite Bricks Slab", - "block.create.diorite_bricks_stairs": "Diorite Bricks Stairs", - "block.create.diorite_bricks_wall": "Diorite Bricks Wall", - "block.create.diorite_cobblestone": "Diorite Cobblestone", - "block.create.diorite_cobblestone_slab": "Diorite Cobblestone Slab", - "block.create.diorite_cobblestone_stairs": "Diorite Cobblestone Stairs", - "block.create.diorite_cobblestone_wall": "Diorite Cobblestone Wall", - "block.create.diorite_pillar": "Diorite Pillar", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_bricks": "Dolomite Bricks", - "block.create.dolomite_bricks_slab": "Dolomite Bricks Slab", - "block.create.dolomite_bricks_stairs": "Dolomite Bricks Stairs", - "block.create.dolomite_bricks_wall": "Dolomite Bricks Wall", - "block.create.dolomite_cobblestone": "Dolomite Cobblestone", - "block.create.dolomite_cobblestone_slab": "Dolomite Cobblestone Slab", - "block.create.dolomite_cobblestone_stairs": "Dolomite Cobblestone Stairs", - "block.create.dolomite_cobblestone_wall": "Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "Dolomite Pillar", - "block.create.encased_chain_drive": "Encased Chain Drive", - "block.create.encased_fan": "Encased Fan", - "block.create.encased_fluid_pipe": "Encased Fluid Pipe", - "block.create.fancy_andesite_bricks": "Fancy Andesite Bricks", - "block.create.fancy_andesite_bricks_slab": "Fancy Andesite Bricks Slab", - "block.create.fancy_andesite_bricks_stairs": "Fancy Andesite Bricks Stairs", - "block.create.fancy_andesite_bricks_wall": "Fancy Andesite Bricks Wall", - "block.create.fancy_dark_scoria_bricks": "Fancy Dark Scoria Bricks", - "block.create.fancy_dark_scoria_bricks_slab": "Fancy Dark Scoria Bricks Slab", - "block.create.fancy_dark_scoria_bricks_stairs": "Fancy Dark Scoria Bricks Stairs", - "block.create.fancy_dark_scoria_bricks_wall": "Fancy Dark Scoria Bricks Wall", - "block.create.fancy_diorite_bricks": "Fancy Diorite Bricks", - "block.create.fancy_diorite_bricks_slab": "Fancy Diorite Bricks Slab", - "block.create.fancy_diorite_bricks_stairs": "Fancy Diorite Bricks Stairs", - "block.create.fancy_diorite_bricks_wall": "Fancy Diorite Bricks Wall", - "block.create.fancy_dolomite_bricks": "Fancy Dolomite Bricks", - "block.create.fancy_dolomite_bricks_slab": "Fancy Dolomite Bricks Slab", - "block.create.fancy_dolomite_bricks_stairs": "Fancy Dolomite Bricks Stairs", - "block.create.fancy_dolomite_bricks_wall": "Fancy Dolomite Bricks Wall", - "block.create.fancy_gabbro_bricks": "Fancy Gabbro Bricks", - "block.create.fancy_gabbro_bricks_slab": "Fancy Gabbro Bricks Slab", - "block.create.fancy_gabbro_bricks_stairs": "Fancy Gabbro Bricks Stairs", - "block.create.fancy_gabbro_bricks_wall": "Fancy Gabbro Bricks Wall", - "block.create.fancy_granite_bricks": "Fancy Granite Bricks", - "block.create.fancy_granite_bricks_slab": "Fancy Granite Bricks Slab", - "block.create.fancy_granite_bricks_stairs": "Fancy Granite Bricks Stairs", - "block.create.fancy_granite_bricks_wall": "Fancy Granite Bricks Wall", - "block.create.fancy_limestone_bricks": "Fancy Limestone Bricks", - "block.create.fancy_limestone_bricks_slab": "Fancy Limestone Bricks Slab", - "block.create.fancy_limestone_bricks_stairs": "Fancy Limestone Bricks Stairs", - "block.create.fancy_limestone_bricks_wall": "Fancy Limestone Bricks Wall", - "block.create.fancy_scoria_bricks": "Fancy Scoria Bricks", - "block.create.fancy_scoria_bricks_slab": "Fancy Scoria Bricks Slab", - "block.create.fancy_scoria_bricks_stairs": "Fancy Scoria Bricks Stairs", - "block.create.fancy_scoria_bricks_wall": "Fancy Scoria Bricks Wall", - "block.create.fancy_weathered_limestone_bricks": "Fancy Weathered Limestone Bricks", - "block.create.fancy_weathered_limestone_bricks_slab": "Fancy Weathered Limestone Bricks Slab", - "block.create.fancy_weathered_limestone_bricks_stairs": "Fancy Weathered Limestone Bricks Stairs", - "block.create.fancy_weathered_limestone_bricks_wall": "Fancy Weathered Limestone Bricks Wall", - "block.create.fluid_pipe": "Fluid Pipe", - "block.create.fluid_tank": "Fluid Tank", - "block.create.fluid_valve": "Fluid Valve", - "block.create.flywheel": "Flywheel", - "block.create.framed_glass": "Framed Glass", - "block.create.framed_glass_pane": "Framed Glass Pane", - "block.create.furnace_engine": "Furnace Engine", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Gabbro Bricks", - "block.create.gabbro_bricks_slab": "Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "Gabbro Bricks Stairs", - "block.create.gabbro_bricks_wall": "Gabbro Bricks Wall", - "block.create.gabbro_cobblestone": "Gabbro Cobblestone", - "block.create.gabbro_cobblestone_slab": "Gabbro Cobblestone Slab", - "block.create.gabbro_cobblestone_stairs": "Gabbro Cobblestone Stairs", - "block.create.gabbro_cobblestone_wall": "Gabbro Cobblestone Wall", - "block.create.gabbro_pillar": "Gabbro Pillar", - "block.create.gantry_carriage": "Gantry Carriage", - "block.create.gantry_shaft": "Gantry Shaft", - "block.create.gearbox": "Gearbox", - "block.create.gearshift": "Gearshift", - "block.create.glass_fluid_pipe": "Glass Fluid Pipe", - "block.create.granite_bricks": "Granite Bricks", - "block.create.granite_bricks_slab": "Granite Bricks Slab", - "block.create.granite_bricks_stairs": "Granite Bricks Stairs", - "block.create.granite_bricks_wall": "Granite Bricks Wall", - "block.create.granite_cobblestone": "Granite Cobblestone", - "block.create.granite_cobblestone_slab": "Granite Cobblestone Slab", - "block.create.granite_cobblestone_stairs": "Granite Cobblestone Stairs", - "block.create.granite_cobblestone_wall": "Granite Cobblestone Wall", - "block.create.granite_pillar": "Granite Pillar", - "block.create.gray_sail": "Gray Sail", - "block.create.gray_seat": "Gray Seat", - "block.create.gray_valve_handle": "Gray Valve Handle", - "block.create.green_sail": "Green Sail", - "block.create.green_seat": "Green Seat", - "block.create.green_valve_handle": "Green Valve Handle", - "block.create.hand_crank": "Hand Crank", - "block.create.honey": "Honey", - "block.create.horizontal_framed_glass": "Horizontal Framed Glass", - "block.create.horizontal_framed_glass_pane": "Horizontal Framed Glass Pane", - "block.create.hose_pulley": "Hose Pulley", - "block.create.item_drain": "Item Drain", - "block.create.jungle_window": "Jungle Window", - "block.create.jungle_window_pane": "Jungle Window Pane", - "block.create.large_cogwheel": "Large Cogwheel", - "block.create.layered_andesite": "Layered Andesite", - "block.create.layered_dark_scoria": "Layered Dark Scoria", - "block.create.layered_diorite": "Layered Diorite", - "block.create.layered_dolomite": "Layered Dolomite", - "block.create.layered_gabbro": "Layered Gabbro", - "block.create.layered_granite": "Layered Granite", - "block.create.layered_limestone": "Layered Limestone", - "block.create.layered_scoria": "Layered Scoria", - "block.create.layered_weathered_limestone": "Layered Weathered Limestone", - "block.create.light_blue_sail": "Light Blue Sail", - "block.create.light_blue_seat": "Light Blue Seat", - "block.create.light_blue_valve_handle": "Light Blue Valve Handle", - "block.create.light_gray_sail": "Light Gray Sail", - "block.create.light_gray_seat": "Light Gray Seat", - "block.create.light_gray_valve_handle": "Light Gray Valve Handle", - "block.create.lime_sail": "Lime Sail", - "block.create.lime_seat": "Lime Seat", - "block.create.lime_valve_handle": "Lime Valve Handle", - "block.create.limesand": "Limesand", - "block.create.limestone": "Limestone", - "block.create.limestone_bricks": "Limestone Bricks", - "block.create.limestone_bricks_slab": "Limestone Bricks Slab", - "block.create.limestone_bricks_stairs": "Limestone Bricks Stairs", - "block.create.limestone_bricks_wall": "Limestone Bricks Wall", - "block.create.limestone_cobblestone": "Limestone Cobblestone", - "block.create.limestone_cobblestone_slab": "Limestone Cobblestone Slab", - "block.create.limestone_cobblestone_stairs": "Limestone Cobblestone Stairs", - "block.create.limestone_cobblestone_wall": "Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Limestone Pillar", - "block.create.linear_chassis": "Linear Chassis", - "block.create.lit_blaze_burner": "Lit Blaze Burner", - "block.create.magenta_sail": "Magenta Sail", - "block.create.magenta_seat": "Magenta Seat", - "block.create.magenta_valve_handle": "Magenta Valve Handle", - "block.create.mechanical_arm": "Mechanical Arm", - "block.create.mechanical_bearing": "Mechanical Bearing", - "block.create.mechanical_crafter": "Mechanical Crafter", - "block.create.mechanical_drill": "Mechanical Drill", - "block.create.mechanical_harvester": "Mechanical Harvester", - "block.create.mechanical_mixer": "Mechanical Mixer", - "block.create.mechanical_piston": "Mechanical Piston", - "block.create.mechanical_piston_head": "Mechanical Piston Head", - "block.create.mechanical_plough": "Mechanical Plough", - "block.create.mechanical_press": "Mechanical Press", - "block.create.mechanical_pump": "Mechanical Pump", - "block.create.mechanical_saw": "Mechanical Saw", - "block.create.metal_bracket": "Metal Bracket", - "block.create.millstone": "Millstone", - "block.create.minecart_anchor": "Minecart Anchor", - "block.create.mossy_andesite": "Mossy Andesite", - "block.create.mossy_dark_scoria": "Mossy Dark Scoria", - "block.create.mossy_diorite": "Mossy Diorite", - "block.create.mossy_dolomite": "Mossy Dolomite", - "block.create.mossy_gabbro": "Mossy Gabbro", - "block.create.mossy_granite": "Mossy Granite", - "block.create.mossy_limestone": "Mossy Limestone", - "block.create.mossy_scoria": "Mossy Scoria", - "block.create.mossy_weathered_limestone": "Mossy Weathered Limestone", - "block.create.mysterious_cuckoo_clock": "Cuckoo Clock", - "block.create.natural_scoria": "Natural Scoria", - "block.create.nixie_tube": "Nixie Tube", - "block.create.nozzle": "Nozzle", - "block.create.oak_window": "Oak Window", - "block.create.oak_window_pane": "Oak Window Pane", - "block.create.orange_sail": "Orange Sail", - "block.create.orange_seat": "Orange Seat", - "block.create.orange_valve_handle": "Orange Valve Handle", - "block.create.ornate_iron_window": "Ornate Iron Window", - "block.create.ornate_iron_window_pane": "Ornate Iron Window Pane", - "block.create.overgrown_andesite": "Overgrown Andesite", - "block.create.overgrown_dark_scoria": "Overgrown Dark Scoria", - "block.create.overgrown_diorite": "Overgrown Diorite", - "block.create.overgrown_dolomite": "Overgrown Dolomite", - "block.create.overgrown_gabbro": "Overgrown Gabbro", - "block.create.overgrown_granite": "Overgrown Granite", - "block.create.overgrown_limestone": "Overgrown Limestone", - "block.create.overgrown_scoria": "Overgrown Scoria", - "block.create.overgrown_weathered_limestone": "Overgrown Weathered Limestone", - "block.create.paved_andesite": "Paved Andesite", - "block.create.paved_andesite_slab": "Paved Andesite Slab", - "block.create.paved_andesite_stairs": "Paved Andesite Stairs", - "block.create.paved_andesite_wall": "Paved Andesite Wall", - "block.create.paved_dark_scoria": "Paved Dark Scoria", - "block.create.paved_dark_scoria_slab": "Paved Dark Scoria Slab", - "block.create.paved_dark_scoria_stairs": "Paved Dark Scoria Stairs", - "block.create.paved_dark_scoria_wall": "Paved Dark Scoria Wall", - "block.create.paved_diorite": "Paved Diorite", - "block.create.paved_diorite_slab": "Paved Diorite Slab", - "block.create.paved_diorite_stairs": "Paved Diorite Stairs", - "block.create.paved_diorite_wall": "Paved Diorite Wall", - "block.create.paved_dolomite": "Paved Dolomite", - "block.create.paved_dolomite_slab": "Paved Dolomite Slab", - "block.create.paved_dolomite_stairs": "Paved Dolomite Stairs", - "block.create.paved_dolomite_wall": "Paved Dolomite Wall", - "block.create.paved_gabbro": "Paved Gabbro", - "block.create.paved_gabbro_slab": "Paved Gabbro Slab", - "block.create.paved_gabbro_stairs": "Paved Gabbro Stairs", - "block.create.paved_gabbro_wall": "Paved Gabbro Wall", - "block.create.paved_granite": "Paved Granite", - "block.create.paved_granite_slab": "Paved Granite Slab", - "block.create.paved_granite_stairs": "Paved Granite Stairs", - "block.create.paved_granite_wall": "Paved Granite Wall", - "block.create.paved_limestone": "Paved Limestone", - "block.create.paved_limestone_slab": "Paved Limestone Slab", - "block.create.paved_limestone_stairs": "Paved Limestone Stairs", - "block.create.paved_limestone_wall": "Paved Limestone Wall", - "block.create.paved_scoria": "Paved Scoria", - "block.create.paved_scoria_slab": "Paved Scoria Slab", - "block.create.paved_scoria_stairs": "Paved Scoria Stairs", - "block.create.paved_scoria_wall": "Paved Scoria Wall", - "block.create.paved_weathered_limestone": "Paved Weathered Limestone", - "block.create.paved_weathered_limestone_slab": "Paved Weathered Limestone Slab", - "block.create.paved_weathered_limestone_stairs": "Paved Weathered Limestone Stairs", - "block.create.paved_weathered_limestone_wall": "Paved Weathered Limestone Wall", - "block.create.pink_sail": "Pink Sail", - "block.create.pink_seat": "Pink Seat", - "block.create.pink_valve_handle": "Pink Valve Handle", - "block.create.piston_extension_pole": "Piston Extension Pole", - "block.create.polished_dark_scoria": "Polished Dark Scoria", - "block.create.polished_dark_scoria_slab": "Polished Dark Scoria Slab", - "block.create.polished_dark_scoria_stairs": "Polished Dark Scoria Stairs", - "block.create.polished_dark_scoria_wall": "Polished Dark Scoria Wall", - "block.create.polished_dolomite": "Polished Dolomite", - "block.create.polished_dolomite_slab": "Polished Dolomite Slab", - "block.create.polished_dolomite_stairs": "Polished Dolomite Stairs", - "block.create.polished_dolomite_wall": "Polished Dolomite Wall", - "block.create.polished_gabbro": "Polished Gabbro", - "block.create.polished_gabbro_slab": "Polished Gabbro Slab", - "block.create.polished_gabbro_stairs": "Polished Gabbro Stairs", - "block.create.polished_gabbro_wall": "Polished Gabbro Wall", - "block.create.polished_limestone": "Polished Limestone", - "block.create.polished_limestone_slab": "Polished Limestone Slab", - "block.create.polished_limestone_stairs": "Polished Limestone Stairs", - "block.create.polished_limestone_wall": "Polished Limestone Wall", - "block.create.polished_scoria": "Polished Scoria", - "block.create.polished_scoria_slab": "Polished Scoria Slab", - "block.create.polished_scoria_stairs": "Polished Scoria Stairs", - "block.create.polished_scoria_wall": "Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Polished Weathered Limestone", - "block.create.polished_weathered_limestone_slab": "Polished Weathered Limestone Slab", - "block.create.polished_weathered_limestone_stairs": "Polished Weathered Limestone Stairs", - "block.create.polished_weathered_limestone_wall": "Polished Weathered Limestone Wall", - "block.create.portable_fluid_interface": "Portable Fluid Interface", - "block.create.portable_storage_interface": "Portable Storage Interface", - "block.create.powered_latch": "Powered Latch", - "block.create.powered_toggle_latch": "Powered Toggle Latch", - "block.create.pulley_magnet": "Pulley Magnet", - "block.create.pulse_repeater": "Pulse Repeater", - "block.create.purple_sail": "Purple Sail", - "block.create.purple_seat": "Purple Seat", - "block.create.purple_valve_handle": "Purple Valve Handle", - "block.create.radial_chassis": "Radial Chassis", - "block.create.red_sail": "Red Sail", - "block.create.red_seat": "Red Seat", - "block.create.red_valve_handle": "Red Valve Handle", - "block.create.redstone_contact": "Redstone Contact", - "block.create.redstone_link": "Redstone Link", - "block.create.refined_radiance_casing": "Radiant Casing", - "block.create.reinforced_rail": "Reinforced Rail", - "block.create.rope": "Rope", - "block.create.rope_pulley": "Rope Pulley", - "block.create.rotation_speed_controller": "Rotation Speed Controller", - "block.create.sail_frame": "Sail Frame", - "block.create.schematic_table": "Schematic Table", - "block.create.schematicannon": "Schematicannon", - "block.create.scoria": "Scoria", - "block.create.scoria_bricks": "Scoria Bricks", - "block.create.scoria_bricks_slab": "Scoria Bricks Slab", - "block.create.scoria_bricks_stairs": "Scoria Bricks Stairs", - "block.create.scoria_bricks_wall": "Scoria Bricks Wall", - "block.create.scoria_cobblestone": "Scoria Cobblestone", - "block.create.scoria_cobblestone_slab": "Scoria Cobblestone Slab", - "block.create.scoria_cobblestone_stairs": "Scoria Cobblestone Stairs", - "block.create.scoria_cobblestone_wall": "Scoria Cobblestone Wall", - "block.create.scoria_pillar": "Scoria Pillar", - "block.create.secondary_linear_chassis": "Secondary Linear Chassis", - "block.create.sequenced_gearshift": "Sequenced Gearshift", - "block.create.shadow_steel_casing": "Shadow Casing", - "block.create.shaft": "Shaft", - "block.create.smart_chute": "Smart Chute", - "block.create.smart_fluid_pipe": "Smart Fluid Pipe", - "block.create.speedometer": "Speedometer", - "block.create.spout": "Spout", - "block.create.spruce_window": "Spruce Window", - "block.create.spruce_window_pane": "Spruce Window Pane", - "block.create.sticker": "Sticker", - "block.create.sticky_mechanical_piston": "Sticky Mechanical Piston", - "block.create.stockpile_switch": "Stockpile Switch", - "block.create.stressometer": "Stressometer", - "block.create.tiled_glass": "Tiled Glass", - "block.create.tiled_glass_pane": "Tiled Glass Pane", - "block.create.turntable": "Turntable", - "block.create.vertical_framed_glass": "Vertical Framed Glass", - "block.create.vertical_framed_glass_pane": "Vertical Framed Glass Pane", - "block.create.warped_window": "Warped Window", - "block.create.warped_window_pane": "Warped Window Pane", - "block.create.water_wheel": "Water Wheel", - "block.create.weathered_limestone": "Weathered Limestone", - "block.create.weathered_limestone_bricks": "Weathered Limestone Bricks", - "block.create.weathered_limestone_bricks_slab": "Weathered Limestone Bricks Slab", - "block.create.weathered_limestone_bricks_stairs": "Weathered Limestone Bricks Stairs", - "block.create.weathered_limestone_bricks_wall": "Weathered Limestone Bricks Wall", - "block.create.weathered_limestone_cobblestone": "Weathered Limestone Cobblestone", - "block.create.weathered_limestone_cobblestone_slab": "Weathered Limestone Cobblestone Slab", - "block.create.weathered_limestone_cobblestone_stairs": "Weathered Limestone Cobblestone Stairs", - "block.create.weathered_limestone_cobblestone_wall": "Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Weathered Limestone Pillar", - "block.create.weighted_ejector": "Weighted Ejector", - "block.create.white_sail": "White Sail", - "block.create.white_seat": "White Seat", - "block.create.white_valve_handle": "White Valve Handle", - "block.create.windmill_bearing": "Windmill Bearing", - "block.create.wooden_bracket": "Wooden Bracket", - "block.create.yellow_sail": "Yellow Sail", - "block.create.yellow_seat": "Yellow Seat", - "block.create.yellow_valve_handle": "Yellow Valve Handle", - "block.create.zinc_block": "Block of Zinc", - "block.create.zinc_ore": "Zinc Ore", - "entity.create.contraption": "Contraption", - "entity.create.crafting_blueprint": "Crafting Blueprint", - "entity.create.gantry_contraption": "Gantry Contraption", - "entity.create.seat": "Seat", - "entity.create.stationary_contraption": "Stationary Contraption", - "entity.create.super_glue": "Super Glue", - "fluid.create.milk": "Milk", - "fluid.create.potion": "Potion", - "fluid.create.tea": "Builder's Tea", - "item.create.andesite_alloy": "Andesite Alloy", - "item.create.attribute_filter": "Attribute Filter", - "item.create.bar_of_chocolate": "Bar of Chocolate", - "item.create.belt_connector": "Mechanical Belt", - "item.create.blaze_cake": "Blaze Cake", - "item.create.blaze_cake_base": "Blaze Cake Base", - "item.create.brass_hand": "Brass Hand", - "item.create.brass_ingot": "Brass Ingot", - "item.create.brass_nugget": "Brass Nugget", - "item.create.brass_sheet": "Brass Sheet", - "item.create.builders_tea": "Builder's Tea", - "item.create.chest_minecart_contraption": "Chest Minecart Contraption", - "item.create.chocolate_bucket": "Chocolate Bucket", - "item.create.chocolate_glazed_berries": "Chocolate Glazed Berries", - "item.create.chromatic_compound": "Chromatic Compound", - "item.create.cinder_flour": "Cinder Flour", - "item.create.copper_backtank": "Copper Backtank", - "item.create.copper_ingot": "Copper Ingot", - "item.create.copper_nugget": "Copper Nugget", - "item.create.copper_sheet": "Copper Sheet", - "item.create.crafter_slot_cover": "Crafter Slot Cover", - "item.create.crafting_blueprint": "Crafting Blueprint", - "item.create.crushed_aluminum_ore": "Crushed Aluminum Ore", - "item.create.crushed_brass": "Crushed Brass", - "item.create.crushed_copper_ore": "Crushed Copper Ore", - "item.create.crushed_gold_ore": "Crushed Gold Ore", - "item.create.crushed_iron_ore": "Crushed Iron Ore", - "item.create.crushed_lead_ore": "Crushed Lead Ore", - "item.create.crushed_nickel_ore": "Crushed Nickel Ore", - "item.create.crushed_osmium_ore": "Crushed Osmium Ore", - "item.create.crushed_platinum_ore": "Crushed Platinum Ore", - "item.create.crushed_quicksilver_ore": "Crushed Quicksilver Ore", - "item.create.crushed_silver_ore": "Crushed Silver Ore", - "item.create.crushed_tin_ore": "Crushed Tin Ore", - "item.create.crushed_uranium_ore": "Crushed Uranium Ore", - "item.create.crushed_zinc_ore": "Crushed Zinc Ore", - "item.create.diving_boots": "Diving Boots", - "item.create.diving_helmet": "Diving Helmet", - "item.create.dough": "Dough", - "item.create.electron_tube": "Electron Tube", - "item.create.empty_blaze_burner": "Empty Blaze Burner", - "item.create.empty_schematic": "Empty Schematic", - "item.create.extendo_grip": "Extendo Grip", - "item.create.filter": "Filter", - "item.create.furnace_minecart_contraption": "Furnace Minecart Contraption", - "item.create.goggles": "Engineer's Goggles", - "item.create.golden_sheet": "Golden Sheet", - "item.create.handheld_worldshaper": "Creative Worldshaper", - "item.create.honey_bucket": "Honey Bucket", - "item.create.honeyed_apple": "Honeyed Apple", - "item.create.integrated_circuit": "Integrated Circuit", - "item.create.iron_sheet": "Iron Sheet", - "item.create.lapis_sheet": "Lapis Sheet", - "item.create.linked_controller": "Linked Controller", - "item.create.minecart_contraption": "Minecart Contraption", - "item.create.minecart_coupling": "Minecart Coupling", - "item.create.polished_rose_quartz": "Polished Rose Quartz", - "item.create.powdered_obsidian": "Powdered Obsidian", - "item.create.propeller": "Propeller", - "item.create.red_sand_paper": "Red Sand Paper", - "item.create.refined_radiance": "Refined Radiance", - "item.create.rose_quartz": "Rose Quartz", - "item.create.sand_paper": "Sand Paper", - "item.create.schematic": "Schematic", - "item.create.schematic_and_quill": "Schematic And Quill", - "item.create.shadow_steel": "Shadow Steel", - "item.create.super_glue": "Super Glue", - "item.create.sweet_roll": "Sweet Roll", - "item.create.tree_fertilizer": "Tree Fertilizer", - "item.create.vertical_gearbox": "Vertical Gearbox", - "item.create.wand_of_symmetry": "Wand Of Symmetry", - "item.create.wheat_flour": "Wheat Flour", - "item.create.whisk": "Whisk", - "item.create.wrench": "Wrench", - "item.create.zinc_ingot": "Zinc Ingot", - "item.create.zinc_nugget": "Zinc Nugget", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Welcome to Create", - "advancement.create.root.desc": "It's time to start building some amazing Contraptions!", - "advancement.create.andesite_alloy": "Alliterations Aplenty", - "advancement.create.andesite_alloy.desc": "Create's materials have weird names, Andesite Alloy is one of them.", - "advancement.create.its_alive": "It's Alive!", - "advancement.create.its_alive.desc": "Watch your first kinetic component spin.", - "advancement.create.shifting_gears": "Shifting Gears", - "advancement.create.shifting_gears.desc": "Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your contraption.", - "advancement.create.overstressed": "Overstressed", - "advancement.create.overstressed.desc": "Experience the limits of stress firsthand.", - "advancement.create.belt": "Kelp Drive", - "advancement.create.belt.desc": "Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "Take cover!", - "advancement.create.tunnel.desc": "Embellish your mechanical belt with a Tunnel.", - "advancement.create.splitter_tunnel": "Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "Tumbling down", - "advancement.create.chute.desc": "Place a chute, the vertical counterpart of the belt.", - "advancement.create.upward_chute": "Aerial Abduction", - "advancement.create.upward_chute.desc": "Watch a thrown item fly up into a fan-powered chute.", - "advancement.create.belt_funnel": "Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "Place a sideways funnel on top of a belt or depot to create a special type.", - "advancement.create.belt_funnel_kiss": "The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "Make two belt mounted funnels kiss.", - "advancement.create.fan": "Mechanical Airbender", - "advancement.create.fan.desc": "Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "Geothermal Space Heater", - "advancement.create.fan_lava.desc": "Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "Wacky Washing", - "advancement.create.fan_water.desc": "Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "Mechanical Bellows", - "advancement.create.fan_smoke.desc": "Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "Configure Conveniently", - "advancement.create.wrench.desc": "Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "But How Fast Exactly?", - "advancement.create.speedometer.desc": "Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "But How Stressed Exactly?", - "advancement.create.stressometer.desc": "Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "Boom, Reinforced!", - "advancement.create.reinforced.desc": "Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "Tasteful power", - "advancement.create.chocolate_wheel.desc": "Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "Magma Wheel", - "advancement.create.lava_wheel.desc": "This shouldn't have worked.", - "advancement.create.cuckoo": "Is it time?", - "advancement.create.cuckoo.desc": "Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "Pocket Crusher", - "advancement.create.millstone.desc": "Place and power a Millstone.", - "advancement.create.windmill": "A mild Breeze", - "advancement.create.windmill.desc": "Assemble a windmill.", - "advancement.create.maxed_windmill": "A strong breeze", - "advancement.create.maxed_windmill.desc": "Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "The Andesite Age", - "advancement.create.andesite_casing.desc": "Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "Stationary Breakers", - "advancement.create.mechanical_drill.desc": "Place and power a Mechanical Drill.", - "advancement.create.press": "Press Goes 'Bonk!'", - "advancement.create.press.desc": "Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "Stationary Chopping", - "advancement.create.mechanical_saw.desc": "Place and power a Mechanical Saw.", - "advancement.create.basin": "Basin Operation", - "advancement.create.basin.desc": "Place a Basin and try throwing items into it.", - "advancement.create.mixer": "Mixin' It Up", - "advancement.create.mixer.desc": "Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "A living Fireplace", - "advancement.create.blaze_burner.desc": "Obtain a Blaze Burner.", - "advancement.create.compact": "Automated Compacting", - "advancement.create.compact.desc": "Use a Press and a Basin to compact some items.", - "advancement.create.brass": "Actual Alloys", - "advancement.create.brass.desc": "Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "The Brass Age", - "advancement.create.brass_casing.desc": "Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "The Copper Age", - "advancement.create.copper_casing.desc": "Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "Sploosh", - "advancement.create.spout.desc": "Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "Global Brewery", - "advancement.create.spout_potion.desc": "Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "A world of Imagination", - "advancement.create.chocolate.desc": "Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "Tumble Draining", - "advancement.create.item_drain.desc": "Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "Let it roll!", - "advancement.create.chained_item_drain.desc": "Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "Flow Spy", - "advancement.create.glass_pipe.desc": "Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "Never cross the Streams!", - "advancement.create.pipe_collision.desc": "Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "There's a leak!", - "advancement.create.pipe_spill.desc": "Watch an open end of a pipe take or place fluids into the world.", - "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.infinite_water": "Draining the Ocean", - "advancement.create.infinite_water.desc": "Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "Automated Assembly", - "advancement.create.crafter.desc": "Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "Signs of Style", - "advancement.create.nixie_tube.desc": "Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "Poke, Place, and Attack", - "advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "Engineers hate him!", - "advancement.create.speed_controller.desc": "Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "Heart of the Factory", - "advancement.create.flywheel.desc": "Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "High levels of Stress", - "advancement.create.overstress_flywheel.desc": "Overstress a Furnace Engine.", - "advancement.create.integrated_circuit": "Complex Calculation", - "advancement.create.integrated_circuit.desc": "Assemble an Integrated Circuit.", - "advancement.create.mechanical_arm": "Busy Hands!", - "advancement.create.mechanical_arm.desc": "Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox.", - "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_blaze_burner": "Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "Pound It, Bro!", - "advancement.create.fist_bump.desc": "Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "A Pair of Giants", - "advancement.create.crushing_wheel.desc": "Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "Sugar Rush", - "advancement.create.blaze_cake.desc": "Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "Bipolar Minerals", - "advancement.create.chromatic_compound.desc": "Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "Void Returner", - "advancement.create.shadow_steel.desc": "Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "Bright and Inspiring", - "advancement.create.refined_radiance.desc": "Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "The Chromatic Age", - "advancement.create.chromatic_age.desc": "Create casing blocks of the light and dark.", - "advancement.create.wand_of_symmetry": "Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Get hold of an Extendo Grip.", - "advancement.create.dual_extendo_grip": "Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "End of Beta", - "advancement.create.eob.desc": "Expect more content here in the future. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Palettes", - "death.attack.create.crush": "%1$s was processed by Crushing Wheels", - "death.attack.create.fan_fire": "%1$s was burned to death by hot air", - "death.attack.create.fan_lava": "%1$s was burned to death by lava fan", - "death.attack.create.mechanical_drill": "%1$s was impaled by a Mechanical Drill", - "death.attack.create.mechanical_saw": "%1$s got cut in half by a Mechanical Saw", - "death.attack.create.cuckoo_clock_explosion": "%1$s was blown up by tampered cuckoo clock", - "create.block.deployer.damage_source_name": "a rogue Deployer", - "create.block.cart_assembler.invalid": "Place your Cart Assembler on a rail block", - "create.menu.return": "Return to Menu", - "create.menu.configure": "Configure...", - "create.menu.getting_started": "Getting Started", - "create.menu.project_page": "Project Page", - "create.menu.report_bugs": "Report Issues", - "create.menu.support": "Support Us", - "create.recipe.crushing": "Crushing", - "create.recipe.milling": "Milling", - "create.recipe.fan_washing": "Bulk Washing", - "create.recipe.fan_washing.fan": "Fan behind Flowing Water", - "create.recipe.fan_smoking": "Bulk Smoking", - "create.recipe.fan_smoking.fan": "Fan behind Fire", - "create.recipe.fan_blasting": "Bulk Blasting", - "create.recipe.fan_blasting.fan": "Fan behind Lava", - "create.recipe.pressing": "Pressing", - "create.recipe.mixing": "Mixing", - "create.recipe.deploying": "Deploying", - "create.recipe.automatic_shapeless": "Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "Automated Brewing", - "create.recipe.packing": "Compacting", - "create.recipe.automatic_packing": "Automated Packing", - "create.recipe.sawing": "Sawing", - "create.recipe.mechanical_crafting": "Mechanical Crafting", - "create.recipe.automatic_shaped": "Automated Shaped Crafting", - "create.recipe.block_cutting": "Block Cutting", - "create.recipe.wood_cutting": "Wood Cutting", - "create.recipe.sandpaper_polishing": "Sandpaper Polishing", - "create.recipe.mystery_conversion": "Mysterious Conversion", - "create.recipe.spout_filling": "Filling by Spout", - "create.recipe.draining": "Item Draining", - "create.recipe.processing.chance": "%1$s%% Chance", - "create.recipe.heat_requirement.none": "No Heating Required", - "create.recipe.heat_requirement.heated": "Heated", - "create.recipe.heat_requirement.superheated": "Super-Heated", - - "create.generic.range": "Range", - "create.generic.radius": "Radius", - "create.generic.width": "Width", - "create.generic.height": "Height", - "create.generic.length": "Length", - "create.generic.speed": "Speed", - "create.generic.delay": "Delay", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Seconds", - "create.generic.unit.minutes": "Minutes", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "Clockwise", - "create.generic.counter_clockwise": "Counter-Clockwise", - - "create.action.scroll": "Scroll", - "create.action.confirm": "Confirm", - "create.action.abort": "Abort", - "create.action.saveToFile": "Save", - "create.action.discard": "Discard", - - "create.keyinfo.toolmenu": "Focus Tool Menu", - "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", - - "create.gui.scrollInput.defaultTitle": "Choose an Option:", - "create.gui.scrollInput.scrollToModify": "Scroll to Modify", - "create.gui.scrollInput.scrollToAdjustAmount": "Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "Scroll to Select", - "create.gui.scrollInput.shiftScrollsFaster": "Shift to Scroll Faster", - "create.gui.toolmenu.focusKey": "Hold [%1$s] to Focus", - "create.gui.toolmenu.cycle": "[SCROLL] to Cycle", - "create.gui.symmetryWand.mirrorType": "Mirror", - "create.gui.symmetryWand.orientation": "Orientation", - - "create.symmetry.mirror.plane": "Mirror Once", - "create.symmetry.mirror.doublePlane": "Rectangular", - "create.symmetry.mirror.triplePlane": "Octagonal", - - "create.orientation.orthogonal": "Orthogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Along Z", - "create.orientation.alongX": "Along X", - - "create.gui.terrainzapper.title": "Handheld Blockzapper", - "create.gui.terrainzapper.searchDiagonal": "Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "Pattern", - "create.gui.terrainzapper.pattern.solid": "Solid", - "create.gui.terrainzapper.pattern.checkered": "Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "25% Roll", - "create.gui.terrainzapper.pattern.chance50": "50% Roll", - "create.gui.terrainzapper.pattern.chance75": "75% Roll", - "create.gui.terrainzapper.placement": "Placement", - "create.gui.terrainzapper.placement.merged": "Merged", - "create.gui.terrainzapper.placement.attached": "Attached", - "create.gui.terrainzapper.placement.inserted": "Inserted", - "create.gui.terrainzapper.brush": "Brush", - "create.gui.terrainzapper.brush.cuboid": "Cuboid", - "create.gui.terrainzapper.brush.sphere": "Sphere", - "create.gui.terrainzapper.brush.cylinder": "Cylinder", - "create.gui.terrainzapper.brush.surface": "Surface", - "create.gui.terrainzapper.brush.cluster": "Cluster", - "create.gui.terrainzapper.tool": "Tool", - "create.gui.terrainzapper.tool.fill": "Fill", - "create.gui.terrainzapper.tool.place": "Place", - "create.gui.terrainzapper.tool.replace": "Replace", - "create.gui.terrainzapper.tool.clear": "Clear", - "create.gui.terrainzapper.tool.overlay": "Overlay", - "create.gui.terrainzapper.tool.flatten": "Flatten", - - "create.terrainzapper.shiftRightClickToSet": "Shift-Right-Click to Select a Shape", - "create.terrainzapper.usingBlock": "Using: %1$s", - "create.terrainzapper.leftClickToSet": "Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "Couplings cannot form a loop", - "create.minecart_coupling.removed": "Removed all couplings from minecart", - "create.minecart_coupling.too_far": "Minecarts are too far apart", - - "create.contraptions.movement_mode": "Movement Mode", - "create.contraptions.movement_mode.move_place": "Always Place when Stopped", - "create.contraptions.movement_mode.move_place_returned": "Place only in Starting Position", - "create.contraptions.movement_mode.move_never_place": "Place only when Anchor Destroyed", - "create.contraptions.movement_mode.rotate_place": "Always Place when Stopped", - "create.contraptions.movement_mode.rotate_place_returned": "Only Place near Initial Angle", - "create.contraptions.movement_mode.rotate_never_place": "Only Place when Anchor Destroyed", - "create.contraptions.cart_movement_mode": "Cart Movement Mode", - "create.contraptions.cart_movement_mode.rotate": "Always face toward motion", - "create.contraptions.cart_movement_mode.rotate_paused": "Pause actors while rotating", - "create.contraptions.cart_movement_mode.rotation_locked": "Lock rotation", - "create.contraptions.windmill.rotation_direction": "Rotation Direction", - "create.contraptions.clockwork.clock_hands": "Clock Hands", - "create.contraptions.clockwork.hour_first": "Hour hand first", - "create.contraptions.clockwork.minute_first": "Minute hand first", - "create.contraptions.clockwork.hour_first_24": "24-Hour hand first", - - "create.logistics.filter": "Filter", - "create.logistics.recipe_filter": "Recipe Filter", - "create.logistics.fluid_filter": "Fluid Filter", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Applied filter to %1$s.", - "create.logistics.filter.apply_click_again": "Applied filter to %1$s, click again to copy the amount.", - "create.logistics.filter.apply_count": "Applied extraction count to filter.", - - "create.gui.goggles.generator_stats": "Generator Stats:", - "create.gui.goggles.kinetic_stats": "Kinetic Stats:", - "create.gui.goggles.at_current_speed": "at current speed", - "create.gui.goggles.pole_length": "Pole Length:", - "create.gui.goggles.fluid_container": "Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "Capacity: ", - "create.gui.assembly.exception": "This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "Gauge Information:", - "create.gui.speedometer.title": "Rotation Speed", - "create.gui.stressometer.title": "Network Stress", - "create.gui.stressometer.capacity": "Remaining Capacity", - "create.gui.stressometer.overstressed": "Overstressed", - "create.gui.stressometer.no_rotation": "No Rotation", - "create.gui.contraptions.not_fast_enough": "It appears that this %1$s is _not_ rotating with _enough_ _speed_.", - "create.gui.contraptions.network_overstressed": "It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "Adjustable Crate", - "create.gui.adjustable_crate.storageSpace": "Storage Space", - "create.gui.stockpile_switch.title": "Stockpile Switch", - "create.gui.stockpile_switch.invert_signal": "Invert Signal", - "create.gui.stockpile_switch.move_to_lower_at": "Move to lower lane at %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Move to upper lane at %1$s%%", - "create.gui.sequenced_gearshift.title": "Sequenced Gearshift", - "create.gui.sequenced_gearshift.instruction": "Instruction", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Turn", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "End", - "create.gui.sequenced_gearshift.instruction.end": "End", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "Await", - "create.gui.sequenced_gearshift.speed": "Speed, Direction", - "create.gui.sequenced_gearshift.speed.forward": "Input speed, Forwards", - "create.gui.sequenced_gearshift.speed.forward_fast": "Double speed, Forwards", - "create.gui.sequenced_gearshift.speed.back": "Input speed, Reversed", - "create.gui.sequenced_gearshift.speed.back_fast": "Double speed, Reversed", - - "create.schematicAndQuill.dimensions": "Schematic Size: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "First position set.", - "create.schematicAndQuill.secondPos": "Second position set.", - "create.schematicAndQuill.noTarget": "Hold [Ctrl] to select Air blocks.", - "create.schematicAndQuill.abort": "Removed selection.", - "create.schematicAndQuill.title": "Schematic Name:", - "create.schematicAndQuill.convert": "Save and Upload Immediately", - "create.schematicAndQuill.fallbackName": "My Schematic", - "create.schematicAndQuill.saved": "Saved as %1$s", - - "create.schematic.invalid": "[!] Invalid Item - Use the Schematic Table instead", - "create.schematic.position": "Position", - "create.schematic.rotation": "Rotation", - "create.schematic.rotation.none": "None", - "create.schematic.rotation.cw90": "Clockwise 90", - "create.schematic.rotation.cw180": "Clockwise 180", - "create.schematic.rotation.cw270": "Clockwise 270", - "create.schematic.mirror": "Mirror", - "create.schematic.mirror.none": "None", - "create.schematic.mirror.frontBack": "Front-Back", - "create.schematic.mirror.leftRight": "Left-Right", - "create.schematic.tool.deploy": "Position", - "create.schematic.tool.move": "Move XZ", - "create.schematic.tool.movey": "Move Y", - "create.schematic.tool.rotate": "Rotate", - "create.schematic.tool.print": "Print", - "create.schematic.tool.flip": "Mirror", - "create.schematic.tool.deploy.description.0": "Moves the structure to a location.", - "create.schematic.tool.deploy.description.1": "Right-Click on the ground to place.", - "create.schematic.tool.deploy.description.2": "Hold [Ctrl] to select at a fixed distance.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Scroll to change the distance.", - "create.schematic.tool.move.description.0": "Shifts the Schematic Horizontally.", - "create.schematic.tool.move.description.1": "Point at the Schematic and [CTRL]-Scroll to push it.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Shifts the Schematic Vertically.", - "create.schematic.tool.movey.description.1": "[CTRL]-Scroll to move it up/down.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Rotates the Schematic around its center.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Scroll to rotate by 90 Degrees.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Instantly places the structure in the world.", - "create.schematic.tool.print.description.1": "[Right-Click] to confirm placement at the current location.", - "create.schematic.tool.print.description.2": "This tool is for Creative Mode only.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Flips the Schematic along the face you select.", - "create.schematic.tool.flip.description.1": "Point at the Schematic and [CTRL]-Scroll to flip it.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Syncing...", - "create.schematics.uploadTooLarge": "Your schematic exceeds limitations specified by the server.", - "create.schematics.maxAllowedSize": "The maximum allowed schematic file size is:", - - "create.gui.schematicTable.refresh": "Refresh Files", - "create.gui.schematicTable.open_folder": "Open Folder", - "create.gui.schematicTable.title": "Schematic Table", - "create.gui.schematicTable.availableSchematics": "Available Schematics", - "create.gui.schematicTable.noSchematics": "No Schematics Saved", - "create.gui.schematicTable.uploading": "Uploading...", - "create.gui.schematicTable.finished": "Upload Finished!", - "create.gui.schematicannon.title": "Schematicannon", - "create.gui.schematicannon.listPrinter": "Checklist Printer", - "create.gui.schematicannon.gunpowderLevel": "Gunpowder at %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Shots left: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "With backup: %1$s", - "create.gui.schematicannon.optionEnabled": "Currently Enabled", - "create.gui.schematicannon.optionDisabled": "Currently Disabled", - "create.gui.schematicannon.showOptions": "Show Printer Settings", - "create.gui.schematicannon.option.dontReplaceSolid": "Don't Replace Solid Blocks", - "create.gui.schematicannon.option.replaceWithSolid": "Replace Solid with Solid", - "create.gui.schematicannon.option.replaceWithAny": "Replace Solid with Any", - "create.gui.schematicannon.option.replaceWithEmpty": "Replace Solid with Empty", - "create.gui.schematicannon.option.skipMissing": "Skip missing Blocks", - "create.gui.schematicannon.option.skipTileEntities": "Protect Tile Entities", - "create.gui.schematicannon.slot.gunpowder": "Add gunpowder to fuel the cannon", - "create.gui.schematicannon.slot.listPrinter": "Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "Add your Schematic here. Make sure it is deployed at a specific location.", - "create.gui.schematicannon.option.skipMissing.description": "If the cannon cannot find a required Block for placement, it will continue at the next Location.", - "create.gui.schematicannon.option.skipTileEntities.description": "The cannon will avoid replacing data holding blocks such as Chests.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "The cannon will never replace any Solid blocks in its working area, only non-Solid and Air.", - "create.gui.schematicannon.option.replaceWithSolid.description": "The cannon will only replace Solid blocks in its working area if the Schematic contains a solid Block at the Location.", - "create.gui.schematicannon.option.replaceWithAny.description": "The cannon will replace Solid blocks in its working area if the Schematic contains any Block at the Location.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "The cannon will clear out all blocks in its working area, including those replaced by Air.", - - "create.schematicannon.status.idle": "Idle", - "create.schematicannon.status.ready": "Ready", - "create.schematicannon.status.running": "Running", - "create.schematicannon.status.finished": "Finished", - "create.schematicannon.status.paused": "Paused", - "create.schematicannon.status.stopped": "Stopped", - "create.schematicannon.status.noGunpowder": "Out of Gunpowder", - "create.schematicannon.status.targetNotLoaded": "Target is not loaded", - "create.schematicannon.status.targetOutsideRange": "Target too far away", - "create.schematicannon.status.searching": "Searching", - "create.schematicannon.status.skipping": "Skipping", - "create.schematicannon.status.missingBlock": "Missing Item:", - "create.schematicannon.status.placing": "Placing", - "create.schematicannon.status.clearing": "Clearing Blocks", - "create.schematicannon.status.schematicInvalid": "Schematic Invalid", - "create.schematicannon.status.schematicNotPlaced": "Schematic not Positioned", - "create.schematicannon.status.schematicExpired": "Schematic File Expired", - - "create.materialChecklist": "Material Checklist", - "create.materialChecklist.blocksNotLoaded": "* Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "Deny-List", - "create.gui.filter.deny_list.description": "Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "Allow-List", - "create.gui.filter.allow_list.description": "Items pass if they match any of the above. An empty Allow-List rejects everything.", - "create.gui.filter.respect_data": "Respect Data", - "create.gui.filter.respect_data.description": "Items only match if their durability, enchantments, and other attributes match as well.", - "create.gui.filter.ignore_data": "Ignore Data", - "create.gui.filter.ignore_data.description": "Items match regardless of their attributes.", - - "create.item_attributes.placeable": "is placeable", - "create.item_attributes.placeable.inverted": "is not placeable", - "create.item_attributes.consumable": "can be eaten", - "create.item_attributes.consumable.inverted": "cannot be eaten", - "create.item_attributes.smeltable": "can be Smelted", - "create.item_attributes.smeltable.inverted": "cannot be Smelted", - "create.item_attributes.washable": "can be Washed", - "create.item_attributes.washable.inverted": "cannot be Washed", - "create.item_attributes.smokable": "can be Smoked", - "create.item_attributes.smokable.inverted": "cannot be Smoked", - "create.item_attributes.crushable": "can be Crushed", - "create.item_attributes.crushable.inverted": "cannot be Crushed", - "create.item_attributes.blastable": "is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "is not smeltable in Blast Furnace", - "create.item_attributes.enchanted": "is enchanted", - "create.item_attributes.enchanted.inverted": "is unenchanted", - "create.item_attributes.damaged": "is damaged", - "create.item_attributes.damaged.inverted": "is not damaged", - "create.item_attributes.badly_damaged": "is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "is not heavily damaged", - "create.item_attributes.not_stackable": "cannot stack", - "create.item_attributes.not_stackable.inverted": "can be stacked", - "create.item_attributes.equipable": "can be equipped", - "create.item_attributes.equipable.inverted": "cannot be equipped", - "create.item_attributes.furnace_fuel": "is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "is not furnace fuel", - "create.item_attributes.in_tag": "is tagged %1$s", - "create.item_attributes.in_tag.inverted": "is not tagged %1$s", - "create.item_attributes.in_item_group": "is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "is not in group '%1$s'", - "create.item_attributes.added_by": "was added by %1$s", - "create.item_attributes.added_by.inverted": "was not added by %1$s", - "create.item_attributes.has_enchant": "is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "is not enchanted with %1$s", - "create.item_attributes.color": "is dyed %1$s", - "create.item_attributes.color.inverted": "is not dyed %1$s", - "create.item_attributes.max_enchanted": "is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "is not enchanted at max level", - "create.item_attributes.has_fluid": "contains %1$s", - "create.item_attributes.has_fluid.inverted": "does not contain %1$s", - "create.item_attributes.has_name": "has the custom name %1$s", - "create.item_attributes.has_name.inverted": "does not have the custom name %1$s", - "create.item_attributes.book_author": "was authored by %1$s", - "create.item_attributes.book_author.inverted": "was not authored by %1$s", - "create.item_attributes.book_copy_original": "is an original", - "create.item_attributes.book_copy_original.inverted": "is not an original", - "create.item_attributes.book_copy_first": "is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "is not a first-generation copy", - "create.item_attributes.book_copy_second": "is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "is not a tattered mess", - "create.item_attributes.astralsorcery_crystal": "has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_constellation": "is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "is not attuned to %1$s", - "create.item_attributes.astralsorcery_perk_gem": "has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "does not have perk attribute %1$s", - "create.item_attributes.astralsorcery_amulet": "improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "does not improve %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "No attributes selected", - "create.gui.attribute_filter.selected_attributes": "Selected attributes:", - "create.gui.attribute_filter.add_attribute": "Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "Deny-List", - "create.gui.attribute_filter.deny_list.description": "Items pass if they do NOT have any of the selected attributes.", - "create.gui.attribute_filter.add_reference_item": "Add Reference Item", - - "create.tooltip.holdForDescription": "Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Speed Requirement: %1$s", - "create.tooltip.speedRequirement.none": "None", - "create.tooltip.speedRequirement.medium": "Moderate", - "create.tooltip.speedRequirement.high": "Fast", - "create.tooltip.stressImpact": "Kinetic Stress Impact: %1$s", - "create.tooltip.stressImpact.low": "Low", - "create.tooltip.stressImpact.medium": "Moderate", - "create.tooltip.stressImpact.high": "High", - "create.tooltip.stressImpact.overstressed": "Overstressed", - "create.tooltip.capacityProvided": "Kinetic Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "Small", - "create.tooltip.capacityProvided.medium": "Medium", - "create.tooltip.capacityProvided.high": "Large", - "create.tooltip.generationSpeed": "Generates at %1$s %2$s", - "create.tooltip.analogStrength": "Analog Strength: %1$s/15", - - "create.mechanical_arm.extract_from": "Take items from %1$s", - "create.mechanical_arm.deposit_to": "Deposit items to %1$s", - "create.mechanical_arm.summary": "Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "%1$s selected interaction point(s) removed due to range limitations.", - - "create.weighted_ejector.target_set": "Target Selected", - "create.weighted_ejector.target_not_valid": "Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "When Multiple Outputs Available", - - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "Prefer First Target", - - "create.tunnel.selection_mode.split": "Split", - "create.tunnel.selection_mode.forced_split": "Forced Split", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "Prefer Nearest", - "create.tunnel.selection_mode.randomize": "Randomize", - "create.tunnel.selection_mode.synchronize": "Synchronize Inputs", - - "create.tooltip.chute.header": "Chute Information", - "create.tooltip.chute.items_move_down": "Items move Downward", - "create.tooltip.chute.items_move_up": "Items move Upward", - "create.tooltip.chute.no_fans_attached": "No attached fans", - "create.tooltip.chute.fans_push_up": "Fans push from Below", - "create.tooltip.chute.fans_push_down": "Fans push 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.contains": "Contains: %1$s x%2$s", - "create.linked_controller.bind_mode": "Bind mode active", - "create.linked_controller.press_keybind": "Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "Display Slot", - "create.crafting_blueprint.inferred": "Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "Secondary Display Slot", - "create.crafting_blueprint.optional": "Optional", - "create.hint.hose_pulley.title": "Bottomless Supply", - "create.hint.hose_pulley": "The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "No Targets", - "create.hint.mechanical_arm_no_targets": "It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "Update Bearing", - "create.hint.empty_bearing": "_Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "Deployer Item Overflow", - "create.hint.full_deployer": "It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - - "create.gui.config.overlay1": "Hi :)", - "create.gui.config.overlay2": "This is a sample overlay", - "create.gui.config.overlay3": "Click or drag with your mouse", - "create.gui.config.overlay4": "to move this preview", - "create.gui.config.overlay5": "Press ESC to exit this screen", - "create.gui.config.overlay6": "and save the new position", - "create.gui.config.overlay7": "Run /create overlay reset", - "create.gui.config.overlay8": "to reset to the default position", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "Contraption stops", - "create.subtitle.mixing": "Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "Mechanical Press bonks", - "create.subtitle.worldshaper_place": "Worldshaper zaps", - "create.subtitle.depot_slide": "Item slides", - "create.subtitle.saw_activate_stone": "Mechanical Saw activates", - "create.subtitle.blaze_munch": "Blaze Burner munches", - "create.subtitle.funnel_flap": "Funnel Flaps", - "create.subtitle.schematicannon_finish": "Schematicannon dings", - "create.subtitle.scroll_value": "Scroll-input clicks", - "create.subtitle.crafter_craft": "Crafter crafts", - "create.subtitle.saw_process": "Mechanical Saw processes", - "create.subtitle.cranking": "Hand Crank turns", - "create.subtitle.wrench_remove": "Component breaks", - "create.subtitle.cogs": "Cogwheels rumble", - "create.subtitle.slime_added": "Slime squishes", - "create.subtitle.wrench_rotate": "Wrench used", - "create.subtitle.saw_activate_wood": "Mechanical Saw activates", - "create.subtitle.deployer_polish": "Deployer applies polish", - "create.subtitle.deny": "Declining boop", - "create.subtitle.controller_click": "Controller clicks", - "create.subtitle.schematicannon_launch_block": "Schematicannon fires", - "create.subtitle.copper_armor_equip": "Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "Mechanical Press clangs", - "create.subtitle.contraption_assemble": "Contraption moves", - "create.subtitle.crafter_click": "Crafter clicks", - "create.subtitle.depot_plop": "Item lands", - "create.subtitle.confirm": "Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", - - "block.create.metal_bracket.tooltip": "METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", - - "block.create.copper_casing.tooltip": "COPPER CASING", - "block.create.copper_casing.tooltip.summary": "Robust machine casing with a variety of uses. Safe for decoration.", - "block.create.copper_casing.tooltip.condition1": "When used on Fluid Pipe", - "block.create.copper_casing.tooltip.behaviour1": "_Encases_ the _Fluid Pipe_ with the _Copper Casing_. Encased Fluid pipes will _lock their connections_ in place, no longer reacting to changes to neighbouring pipes.", - - "block.create.encased_fluid_pipe.tooltip": "ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "A _Fluid Pipe_ encased with the _Copper Casing_.", - - "block.create.seat.tooltip": "SEAT", - "block.create.seat.tooltip.summary": "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": "Right click on Seat", - "block.create.seat.tooltip.behaviour1": "Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", - - "item.create.blaze_cake.tooltip": "BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", - - "block.create.fluid_pipe.tooltip": "FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "Used for moving _fluids_ around. Needs a _Mechanical Pump_ to get the _fluid_ moving.", - "block.create.fluid_pipe.tooltip.condition1": "Fluid Transfer", - "block.create.fluid_pipe.tooltip.behaviour1": "Can connect to _fluid containers_ such as _Tanks_ or _Basins_. Exposed _pipe_ ends can also drain or place fluid blocks. Be careful of leaks!", - "block.create.fluid_pipe.tooltip.condition2": "Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "Used for _placing_ or _draining_ large _fluid bodies_ in the world.", - "block.create.hose_pulley.tooltip.condition1": "When Powered by Kinetics", - "block.create.hose_pulley.tooltip.behaviour1": "_Raises_ or _Lowers_ the hose, location of the hose determines up to which _height extraction_ or _filling_ will act.", - "block.create.hose_pulley.tooltip.condition2": "When Fluids pulled from Pulley", - "block.create.hose_pulley.tooltip.behaviour2": "Starts _taking fluid_ blocks from the body the hose end was lowered into. Very _large bodies_ of fluids will be _considered infinite_.", - "block.create.hose_pulley.tooltip.condition3": "When Fluids pushed to Pulley", - "block.create.hose_pulley.tooltip.behaviour3": "Starts _filling fluid_ into the world _up to_ the _hose_ ends' _height_.", - - "block.create.fluid_tank.tooltip": "FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "_Stores_ all your favourite _fluids_. Scales in width and height.", - "block.create.fluid_tank.tooltip.condition1": "Right-clicked with Wrench", - "block.create.fluid_tank.tooltip.behaviour1": "Changes the optional window", - - "block.create.creative_fluid_tank.tooltip": "CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "This _Fluid Tank_ allows infinite replication of any Fluid. Scales in width and height.", - "block.create.creative_fluid_tank.tooltip.condition1": "When Fluid in Tank", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Anything _extracting_ from this tank will provide an _endless supply_ of the fluid specified. Fluids _inserted_ into this tank will be _voided._", - "block.create.creative_fluid_tank.tooltip.condition2": "Right-clicked with Wrench", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Changes the optional window", - - "block.create.fluid_valve.tooltip": "FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "Halts the flow of fluid down a pipe.", - "block.create.fluid_valve.tooltip.condition1": "Controllable flow", - "block.create.fluid_valve.tooltip.behaviour1": "Applied _rotational force_ will force the _valve_ to close, ceasing the flow of _fluids_. Reverse the direction of the _rotational force_ to re-open the valve.", - - "block.create.mechanical_pump.tooltip": "MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "Takes _rotational force_ and uses it to move _fluid_ along a _pipe_. Has a maximum range of effect in both directions. (16 blocks by default)", - "block.create.mechanical_pump.tooltip.condition1": "Fluid Flow", - "block.create.mechanical_pump.tooltip.behaviour1": "Applied _rotational force_ creates pressure that forces _fluid_ through the _pipe_ network. Reverse the direction of the _rotational force_ to switch the direction that the _fluid_ flows.", - "block.create.mechanical_pump.tooltip.control1": "Right-clicked with Wrench", - "block.create.mechanical_pump.tooltip.action1": "Reverses the direction of the _pump_, switching the default direction of the flow", - - "block.create.smart_fluid_pipe.tooltip": "SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "A _fluid pipe_ with a filter. Can specify which _fluids_ pass through.", - "block.create.smart_fluid_pipe.tooltip.condition1": "When Fluids are pushed into it", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Smart pipes receiving fluid that does not match its filter will block the flow.", - "block.create.smart_fluid_pipe.tooltip.condition2": "When adjacent to fluid container", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Smart pipes _starting_ a _flow_ from any container will only extract fluids that _match_ its _filter._", - - "block.create.spout.tooltip": "SPOUT", - "block.create.spout.tooltip.summary": "An injector for refilling your _fluid items._", - "block.create.spout.tooltip.condition1": "Fluid Transfer", - "block.create.spout.tooltip.behaviour1": "When a _fluid container item_ such as a _bucket_ or _bottle_ is placed underneath, the spout will attempt to refill it with it's own stored _fluid_.", - "block.create.spout.tooltip.condition2": "Fluid Automation", - "block.create.spout.tooltip.behaviour2": "The spout placed above a _belt_ or _depot_ will react automatically with a _fluid container item_ that passes beneath it.", - - "block.create.item_drain.tooltip": "ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "A grated depot for emptying your _fluid items._", - "block.create.item_drain.tooltip.condition1": "Fluid Transfer", - "block.create.item_drain.tooltip.behaviour1": "When a _fluid container item_ such as a _bucket_ or _bottle_ is inserted from the side, the drain will attempt to empty it into its own _fluid container_. The item will then be ejected on the opposite side.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "Perfectly mirrors Block placement across configured planes.", - "item.create.wand_of_symmetry.tooltip.condition1": "When in Hotbar", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Stays Active", - "item.create.wand_of_symmetry.tooltip.control1": "R-Click on Ground", - "item.create.wand_of_symmetry.tooltip.action1": "_Creates_ or _Moves_ the Mirror", - "item.create.wand_of_symmetry.tooltip.control2": "R-Click in the Air", - "item.create.wand_of_symmetry.tooltip.action2": "_Removes_ the active Mirror", - "item.create.wand_of_symmetry.tooltip.control3": "R-Click while Sneaking", - "item.create.wand_of_symmetry.tooltip.action3": "Opens the _Configuration Interface_", - - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "Handy tool for creating _landscapes_ and _terrain features_.", - "item.create.handheld_worldshaper.tooltip.control1": "L-Click at Block", - "item.create.handheld_worldshaper.tooltip.action1": "Sets blocks placed by the tool to the targeted block.", - "item.create.handheld_worldshaper.tooltip.control2": "R-Click at Block", - "item.create.handheld_worldshaper.tooltip.action2": "Applies the currently selected _Brush_ and _Tool_ at the targeted location.", - "item.create.handheld_worldshaper.tooltip.control3": "R-Click while Sneaking", - "item.create.handheld_worldshaper.tooltip.action3": "Opens the _Configuration Interface_", - - "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "A powerful combination of minerals suitable for speeding up the growth of common tree types.", - "item.create.tree_fertilizer.tooltip.condition1": "When used on a Sapling", - "item.create.tree_fertilizer.tooltip.behaviour1": "Grows Trees _regardless_ of their _spacing conditions_", - - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder.", - "item.create.extendo_grip.tooltip.condition1": "When in Off-Hand", - "item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.", - - "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "_Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", - "item.create.filter.tooltip.condition1": "When in filter slot", - "item.create.filter.tooltip.behaviour1": "_Controls_ item flow according to its _configuration_.", - "item.create.filter.tooltip.condition2": "When R-Clicked", - "item.create.filter.tooltip.behaviour2": "Opens the _configuration interface_.", - - "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "_Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", - "item.create.attribute_filter.tooltip.condition1": "When in filter slot", - "item.create.attribute_filter.tooltip.behaviour1": "_Controls_ item flow according to its _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "When R-Clicked", - "item.create.attribute_filter.tooltip.behaviour2": "Opens the _configuration interface_.", - - "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "Used as a recipe ingredient and for writing at the _Schematic Table_.", - - "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "Holds a structure to be positioned and placed into the world. Position the Hologram as desired and use a _Schematicannon_ to build it.", - "item.create.schematic.tooltip.condition1": "When Held", - "item.create.schematic.tooltip.behaviour1": "Can be positioned using the Tools on Screen.", - "item.create.schematic.tooltip.control1": "R-Click while Sneaking", - "item.create.schematic.tooltip.action1": "Opens an _Interface_ for entering exact _Coordinates_.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "Used for saving a Structure in your world to a .nbt file.", - "item.create.schematic_and_quill.tooltip.condition1": "Step 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Select two corner points using R-Click.", - "item.create.schematic_and_quill.tooltip.condition2": "Step 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scroll_ on the faces to adjust the size. R-Click again to Save.", - "item.create.schematic_and_quill.tooltip.control1": "R-Click", - "item.create.schematic_and_quill.tooltip.action1": "Select a corner point / confirm save.", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl Held", - "item.create.schematic_and_quill.tooltip.action2": "Select points in _mid-air_. _Scroll_ to adjust the distance.", - "item.create.schematic_and_quill.tooltip.control3": "R-Click while Sneaking", - "item.create.schematic_and_quill.tooltip.action3": "_Resets_ and removes the selection.", - - "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "Shoots blocks to recreate a deployed _Schematic_ in the World. Uses items from adjacent Inventories and _Gunpowder_ as fuel.", - "block.create.schematicannon.tooltip.condition1": "When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "Opens the _Interface_", - - "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "Writes saved Schematics onto an _Empty Schematic_.", - "block.create.schematic_table.tooltip.condition1": "When given an Empty Schematic", - "block.create.schematic_table.tooltip.behaviour1": "Uploads a chosen File from your Schematics Folder.", - - "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "A pair of glasses to augment your vision with useful _kinetic information_.", - "item.create.goggles.tooltip.condition1": "When worn", - "item.create.goggles.tooltip.behaviour1": "Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", - "item.create.goggles.tooltip.condition2": "When looking at gauge", - "item.create.goggles.tooltip.behaviour2": "Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", - "item.create.goggles.tooltip.condition3": "When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", - "item.create.wrench.tooltip.control1": "Right-Click a kinetic block", - "item.create.wrench.tooltip.action1": "_Rotates components_ toward or away from the face with which you interacted.", - "item.create.wrench.tooltip.control2": "R-Click while Sneaking", - "item.create.wrench.tooltip.action2": "_Disassembles Kinetic components_ and places them back in _your inventory_.", - - "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", - - "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "Fine craftsmanship for _decorating_ a space and _keeping track of time_.", - "block.create.cuckoo_clock.tooltip.condition1": "When Powered by Kinetics", - "block.create.cuckoo_clock.tooltip.behaviour1": "Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", - - "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "Turns _Rotational Force_ into refined Motion Sickness.", - - "block.create.portable_fluid_interface.tooltip": "PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "A portable interchange point for _moving fluids_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley. Two meeting interfaces have to _face each other_ and be spaced _1-2 blocks apart_.", - "block.create.portable_fluid_interface.tooltip.condition1": "While Moving", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Interacts with stationary _portable storage interfaces_ to transfer fluids to or from the contraption. Pipes inserting into or extracting from the _Stationary Interface_ will interact with the tanks on the contraption _directly._ The structure will briefly stall as Fluids are exchanged.", - "block.create.portable_fluid_interface.tooltip.condition2": "When Powered by Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "_Disengages_ any active connection immediately.", - - "block.create.stockpile_switch.tooltip": "STOCKPILE SWITCH", - "block.create.stockpile_switch.tooltip.summary": "Toggles a Redstone signal based on the amount of _Stored Items_ in the attached Container. Comes with a handy filter. As opposed to a _Comparator,_ the _Stockpile Switch_ allows configuration of _thresholds,_ at which signals are inverted.", - "block.create.stockpile_switch.tooltip.condition1": "When R-Clicked", - "block.create.stockpile_switch.tooltip.behaviour1": "Opens the _Configuration Interface_.", - - "block.create.content_observer.tooltip": "CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "_Detects Items_ inside _containers_ and _conveyors_ matching a configured _filter_. While the observed _inventory_, _belt_ or _chute contains_ a matching item, this component will emit a _Redstone Signal_. When an observed _funnel transfers_ a matching item, this component will emit a _Redstone Pulse_.", - - "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "This _Item Container_ allows Manual control over its capacity. It can hold up to _16 Stacks_ of any Item. Supports _Redstone Comparators_.", - "block.create.adjustable_crate.tooltip.condition1": "When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "This _Storage Container_ allows infinite replication of any item. Place next to a _Schematicannon_ to remove any material requirements.", - "block.create.creative_crate.tooltip.condition1": "When Item in Filter Slot", - "block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", - - "block.create.controller_rail.tooltip": "CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "_Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", - "item.create.sand_paper.tooltip.condition1": "When Used", - "item.create.sand_paper.tooltip.behaviour1": "Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", - - "item.create.builders_tea.tooltip": "BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "The perfect drink to get the day started- _Motivating_ and _Saturating._", - - "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "A Chromatic material forged from _absorbed light_.", - - "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "A Chromatic material forged _in the void_.", - - "item.create.minecart_coupling.tooltip": "MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "_Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "_Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Please keep this item away from children.", - "create.tooltip.randomWipDescription1": "A baby panda dies every time you use this item. Every. Time.", - "create.tooltip.randomWipDescription2": "Use at your own risk.", - "create.tooltip.randomWipDescription3": "This is not the item you are looking for, *finger-wiggles* please disperse.", - "create.tooltip.randomWipDescription4": "This item will self-destruct in 10 seconds. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Believe me, it's useless.", - "create.tooltip.randomWipDescription6": "By using this item, you hereby consent to our disclaimer and agree to its terms.", - "create.tooltip.randomWipDescription7": "This one maybe isn't for you. What about that one?", - "create.tooltip.randomWipDescription8": "Use it and regret your decision immediately.", - "create.gui.chromatic_projector.title": "Chromatic Projector", - "create.gui.chromatic_projector.filter.invert": "Invert", - "create.gui.chromatic_projector.filter.sepia": "Sepia", - "create.gui.chromatic_projector.filter.grayscale": "Grayscale", - "create.gui.chromatic_projector.filter.saturate": "Saturate", - "create.gui.chromatic_projector.filter.hue_shift": "Hue shift", - "create.gui.chromatic_projector.filter.darken": "Darken", - "create.gui.chromatic_projector.filter.contrast": "Contrast", - "create.gui.chromatic_projector.filter.end": "End", - "create.gui.chromatic_projector.filter": "Filter", - "create.gui.chromatic_projector.surface": "Surface", - "create.gui.chromatic_projector.field": "Field", - "create.gui.chromatic_projector.strength": "Strength", - "create.gui.chromatic_projector.radius": "Radius", - "create.gui.chromatic_projector.feather": "Feather", - "create.gui.chromatic_projector.density": "Density", - "create.gui.chromatic_projector.fade": "Fade", - "create.gui.chromatic_projector.blend": "Blend", - "_": "->------------------------] Ponder Content [------------------------<-", - "create.ponder.hold_to_ponder": "Hold [%1$s] to Ponder", - "create.ponder.subject": "Subject of this scene", - "create.ponder.pondering": "Pondering about...", - "create.ponder.identify_mode": "Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "Associated Entries", - "create.ponder.close": "Close", - "create.ponder.identify": "Identify", - "create.ponder.next": "Next Scene", - "create.ponder.previous": "Previous Scene", - "create.ponder.replay": "Replay", - "create.ponder.think_back": "Think Back", - "create.ponder.slow_text": "Comfy Reading", - "create.ponder.shared.movement_anchors": "With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "Sneak +", - "create.ponder.shared.storage_on_contraption": "Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "Source: 16 RPM", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "Contraption Actors", - "create.ponder.tag.contraption_actor.description": "Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "Item Transportation", - "create.ponder.tag.logistics.description": "Components which help moving items around", - "create.ponder.tag.movement_anchor": "Movement Anchors", - "create.ponder.tag.movement_anchor.description": "Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "Creative Mode", - "create.ponder.tag.creative.description": "Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "Aesthetics", - "create.ponder.tag.decoration.description": "Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "Components which make use of Rotational Force", - "create.ponder.tag.redstone": "Logic Components", - "create.ponder.tag.redstone.description": "Components which help with redstone engineering", - "create.ponder.tag.fluids": "Fluid Manipulators", - "create.ponder.tag.fluids.description": "Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "The remainder will continue on its path", - - "create.ponder.basin.header": "Processing Items in the Basin", - "create.ponder.basin.text_1": "A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "A number of options are applicable here", - "create.ponder.basin.text_5": "Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "Encasing Belts", - "create.ponder.belt_casing.text_1": "Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "3. They can connect vertically", - "create.ponder.belt_directions.text_5": "4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "The Brass Funnel", - "create.ponder.brass_funnel.text_1": "Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "12 RPM", - "create.ponder.chute.header": "Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "Using the Deployer", - "create.ponder.deployer.text_1": "Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "Items can also be inserted automatically", - "create.ponder.deployer.text_12": "Deployers carry a filter slot", - "create.ponder.deployer.text_13": "When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "Deployers can:", - "create.ponder.deployer.text_5": "Place Blocks,", - "create.ponder.deployer.text_6": "Use Items,", - "create.ponder.deployer.text_7": "Activate Blocks,", - "create.ponder.deployer.text_8": "Harvest blocks", - "create.ponder.deployer.text_9": "and Attack Mobs", - - "create.ponder.deployer_contraption.header": "Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "Using Depots", - "create.ponder.depot.text_1": "Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "Funnel compatibility", - "create.ponder.funnel_compat.text_1": "Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "Vertical Saws", - "create.ponder.funnel_compat.text_3": "Depots", - "create.ponder.funnel_compat.text_4": "Item Drains", - - "create.ponder.funnel_direction.header": "Direction of Transfer", - "create.ponder.funnel_direction.text_1": "Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "Using funnels", - "create.ponder.funnel_intro.text_1": "Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "Redstone control", - "create.ponder.funnel_redstone.text_1": "Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "Direct transfer", - "create.ponder.funnel_transfer.text_1": "Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "Straight connections will be reversed", - - "create.ponder.gearshift.header": "Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "Input", - "create.ponder.mechanical_arm_modes.text_2": "Outputs", - "create.ponder.mechanical_arm_modes.text_3": "Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "Processing Items in the Millstone", - "create.ponder.millstone.text_1": "Millstones process items by grinding them", - "create.ponder.millstone.text_2": "They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "Throw or Insert items at the top", - "create.ponder.millstone.text_4": "After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "Piston Extension Poles", - "create.ponder.piston_pole.text_1": "Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "...on and back off", - "create.ponder.powered_toggle_latch.text_4": "Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "Redstone Contacts", - "create.ponder.redstone_contact.text_1": "Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "Using Redstone Links", - "create.ponder.redstone_link.text_1": "Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "Assembling Windmills using Sails", - "create.ponder.sail.text_1": "Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "Encasing Shafts", - "create.ponder.shaft_casing.text_1": "Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json deleted file mode 100644 index 8f302cd31..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 968", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "Akazienholzfenster", - "block.create.acacia_window_pane": "Akazienholzfensterscheibe", - "block.create.adjustable_chain_gearshift": "Verstellbares Kettengetriebe", - "block.create.adjustable_crate": "Verstellbare Kiste", - "block.create.adjustable_pulse_repeater": "Verstellbarer Pulsverstärker", - "block.create.adjustable_repeater": "Verstellbarer Verstärker", - "block.create.analog_lever": "Analoger Schalter", - "block.create.andesite_belt_funnel": "Riementrichter aus Andesit", - "block.create.andesite_bricks": "Andesitziegel", - "block.create.andesite_bricks_slab": "Andesitziegelstufe", - "block.create.andesite_bricks_stairs": "Andesitziegeltreppe", - "block.create.andesite_bricks_wall": "Andesitziegelmauer", - "block.create.andesite_casing": "Andesitrahmen", - "block.create.andesite_cobblestone": "Andesitbruchstein", - "block.create.andesite_cobblestone_slab": "Andesitbruchsteinstufe", - "block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe", - "block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer", - "block.create.andesite_encased_shaft": "Andesitummantelte Welle", - "block.create.andesite_funnel": "Andesit Trichter", - "block.create.andesite_pillar": "Andesitsäule", - "block.create.andesite_tunnel": "Andesittunnel", - "block.create.basin": "Behälter", - "block.create.belt": "Mechanischer Riemen", - "block.create.birch_window": "Birkenholzfenster", - "block.create.birch_window_pane": "Birkenholzfensterscheibe", - "block.create.black_sail": "Schwarzes Segel", - "block.create.black_seat": "Schwarzer Sitz", - "block.create.black_valve_handle": "Schwarzer Ventilgriff", - "block.create.blaze_burner": "Lohenbrenner", - "block.create.blue_sail": "Blaues Segel", - "block.create.blue_seat": "Blauer Sitz", - "block.create.blue_valve_handle": "Blauer Ventilgriff", - "block.create.brass_belt_funnel": "Riementrichter aus Messing", - "block.create.brass_block": "Messing Block", - "block.create.brass_casing": "Messingrahmen", - "block.create.brass_encased_shaft": "Messingummantelte Welle", - "block.create.brass_funnel": "Messingtrichter", - "block.create.brass_tunnel": "Messingtunnel", - "block.create.brown_sail": "Braunes Segel", - "block.create.brown_seat": "Brauner Sitz", - "block.create.brown_valve_handle": "Brauner Ventilgriff", - "block.create.cart_assembler": "Lorenmonteur", - "block.create.chiseled_dark_scoria": "Gemeißelte dunkle Schlacke", - "block.create.chiseled_dolomite": "Gemeißeltes Dolomit", - "block.create.chiseled_gabbro": "Gemeißeltes Gabbro", - "block.create.chiseled_limestone": "Gemeißelter Kalkstein", - "block.create.chiseled_scoria": "Gemeißelte Schlacke", - "block.create.chiseled_weathered_limestone": "Gemeißelter verwitterter Kalkstein", - "block.create.chocolate": "Schokolade", - "block.create.chute": "Rinne", - "block.create.clockwork_bearing": "Uhrwerk-Lager", - "block.create.clutch": "Kupplung", - "block.create.cogwheel": "Zahnrad", - "block.create.content_observer": "Inhaltsbeobachter", - "block.create.controller_rail": "Steuerungsschiene", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "Kupfer Block", - "block.create.copper_casing": "Kupferrahmen", - "block.create.copper_ore": "Kupfererz", - "block.create.copper_shingles": "Kupferschindeln", - "block.create.copper_tiles": "Kupferfliesen", - "block.create.copper_valve_handle": "Kupfer Ventilgriff", - "block.create.creative_crate": "Kreative anpassbare Kiste", - "block.create.creative_fluid_tank": "Kreativer Flüssigkeitstank", - "block.create.creative_motor": "Kreativer Motor", - "block.create.crimson_window": "UNLOCALIZED: Crimson Window", - "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", - "block.create.crushing_wheel": "Mahlwerkrad", - "block.create.crushing_wheel_controller": "Mahlwerkrad Steurung", - "block.create.cuckoo_clock": "Kuckucksuhr", - "block.create.cyan_sail": "Türkises Segel", - "block.create.cyan_seat": "Türkiser Sitz", - "block.create.cyan_valve_handle": "Türkiser Ventilgriff", - "block.create.dark_oak_window": "Schwarzeichenholzfenster", - "block.create.dark_oak_window_pane": "Schwarzeichenholzfensterscheibe", - "block.create.dark_scoria": "Dunkle Schlacke", - "block.create.dark_scoria_bricks": "Dunkle Schlackenziegel", - "block.create.dark_scoria_bricks_slab": "Dunkle Schlackenziegelstufe", - "block.create.dark_scoria_bricks_stairs": "Dunkle Schlackenziegeltreppe", - "block.create.dark_scoria_bricks_wall": "Dunkle Schlackenziegelmauer", - "block.create.dark_scoria_cobblestone": "Dunkler Schlackebruchstein", - "block.create.dark_scoria_cobblestone_slab": "Dunkle Schlackebruchsteinstufe", - "block.create.dark_scoria_cobblestone_stairs": "Dunkle Schlackebruchsteintreppe", - "block.create.dark_scoria_cobblestone_wall": "Dunkle Schlackebruchsteinmauer", - "block.create.dark_scoria_pillar": "Dunkle Schlackesäule", - "block.create.deployer": "Einsatzgerät", - "block.create.depot": "Depot", - "block.create.diorite_bricks": "Dioritziegel", - "block.create.diorite_bricks_slab": "Dioritziegelstufe", - "block.create.diorite_bricks_stairs": "Dioritziegeltreppe", - "block.create.diorite_bricks_wall": "Dioritziegelmauer", - "block.create.diorite_cobblestone": "Dioritbruchstein", - "block.create.diorite_cobblestone_slab": "Dioritbruchsteinstufe", - "block.create.diorite_cobblestone_stairs": "Dioritbruchsteintreppe", - "block.create.diorite_cobblestone_wall": "Dioritbruchsteinmauer", - "block.create.diorite_pillar": "Dioritsäule", - "block.create.dolomite": "Dolomit", - "block.create.dolomite_bricks": "Dolomitziegel", - "block.create.dolomite_bricks_slab": "Dolomitziegelstufe", - "block.create.dolomite_bricks_stairs": "Dolomitziegeltreppe", - "block.create.dolomite_bricks_wall": "Dolomitziegelmauer", - "block.create.dolomite_cobblestone": "Dolomitbruchstein", - "block.create.dolomite_cobblestone_slab": "Dolomitbruchsteinstufe", - "block.create.dolomite_cobblestone_stairs": "Dolomitbruchsteintreppe", - "block.create.dolomite_cobblestone_wall": "Dolomitbruchsteinmauer", - "block.create.dolomite_pillar": "Dolomitsäule", - "block.create.encased_chain_drive": "Ummantelter Kettenriemen", - "block.create.encased_fan": "Ummantelter Lüfter", - "block.create.encased_fluid_pipe": "Ummanteltes Rohr", - "block.create.fancy_andesite_bricks": "Schicke Andesitziegel", - "block.create.fancy_andesite_bricks_slab": "Schicke Andesitziegelstufe", - "block.create.fancy_andesite_bricks_stairs": "Schicke Andesitziegeltreppe", - "block.create.fancy_andesite_bricks_wall": "Schicke Andesitziegelmauer", - "block.create.fancy_dark_scoria_bricks": "Schicke dunkle Schlackenziegel", - "block.create.fancy_dark_scoria_bricks_slab": "Schicke dunkle Schlackenziegelstufe", - "block.create.fancy_dark_scoria_bricks_stairs": "Schicke dunkle Schlackenziegeltreppe", - "block.create.fancy_dark_scoria_bricks_wall": "Schicke dunkle Schlackenziegelmauer", - "block.create.fancy_diorite_bricks": "Schöne Dioritziegel", - "block.create.fancy_diorite_bricks_slab": "Schöne Dioritziegelstufe", - "block.create.fancy_diorite_bricks_stairs": "Schöne Dioritziegeltreppe", - "block.create.fancy_diorite_bricks_wall": "Schöne Dioritziegelmauer", - "block.create.fancy_dolomite_bricks": "Schöne Dolomitziegel", - "block.create.fancy_dolomite_bricks_slab": "Schöne Dolomitziegelstufe", - "block.create.fancy_dolomite_bricks_stairs": "Schöne Dolomitziegeltreppe", - "block.create.fancy_dolomite_bricks_wall": "Schöne Dolomitziegelmauer", - "block.create.fancy_gabbro_bricks": "Schöne Gabbroziegel", - "block.create.fancy_gabbro_bricks_slab": "Schöne Gabbroziegelstufe", - "block.create.fancy_gabbro_bricks_stairs": "Schöne Gabbroziegeltreppe", - "block.create.fancy_gabbro_bricks_wall": "Schöne Gabbroziegelmauer", - "block.create.fancy_granite_bricks": "Schöne Granitziegel", - "block.create.fancy_granite_bricks_slab": "Schöne Granitziegelstufe", - "block.create.fancy_granite_bricks_stairs": "Schöne Granitziegeltreppe", - "block.create.fancy_granite_bricks_wall": "Schöne Granitziegelmauer", - "block.create.fancy_limestone_bricks": "Schöne Kalksteinziegel", - "block.create.fancy_limestone_bricks_slab": "Schöne Kalksteinziegelstufe", - "block.create.fancy_limestone_bricks_stairs": "Schöne Kalksteinziegeltreppe", - "block.create.fancy_limestone_bricks_wall": "Schöne Kalksteinziegelmauer", - "block.create.fancy_scoria_bricks": "Schöne Schlackenziegel", - "block.create.fancy_scoria_bricks_slab": "Schöne Schlackenziegelstufe", - "block.create.fancy_scoria_bricks_stairs": "Schöne Schlackenziegeltreppe", - "block.create.fancy_scoria_bricks_wall": "Schöne Schlackenziegelmauer", - "block.create.fancy_weathered_limestone_bricks": "Schöne Verwitterte Kalksteinziegel", - "block.create.fancy_weathered_limestone_bricks_slab": "Schöne Verwitterte Kalksteinziegelstufe", - "block.create.fancy_weathered_limestone_bricks_stairs": "Schöne Verwitterte Kalksteinziegeltreppe", - "block.create.fancy_weathered_limestone_bricks_wall": "Schöne Verwitterte Kalksteinziegelmauer", - "block.create.fluid_pipe": "Flüssigkeitsrohr", - "block.create.fluid_tank": "Flüssigkeitstank", - "block.create.fluid_valve": "Flüssigkeitsventil", - "block.create.flywheel": "Schwungrad", - "block.create.framed_glass": "Gerahmtes Glas", - "block.create.framed_glass_pane": "Gerahmte Glasscheibe", - "block.create.furnace_engine": "Ofenmotor", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Gabbroziegel", - "block.create.gabbro_bricks_slab": "Gabbroziegelstufe", - "block.create.gabbro_bricks_stairs": "Gabbroziegeltreppe", - "block.create.gabbro_bricks_wall": "Gabbroziegelmauer", - "block.create.gabbro_cobblestone": "Gabbrobruchstein", - "block.create.gabbro_cobblestone_slab": "Gabbrobruchstein", - "block.create.gabbro_cobblestone_stairs": "Gabbrobruchstein", - "block.create.gabbro_cobblestone_wall": "Gabbrobruchstein", - "block.create.gabbro_pillar": "Gabbrosäule", - "block.create.gantry_carriage": "Portalkranwagen", - "block.create.gantry_shaft": "Portalkranachse", - "block.create.gearbox": "Getriebe", - "block.create.gearshift": "Gangschaltung", - "block.create.glass_fluid_pipe": "Glasrohr", - "block.create.granite_bricks": "Granitziegel", - "block.create.granite_bricks_slab": "Granitziegelstufe", - "block.create.granite_bricks_stairs": "Granitziegeltreppe", - "block.create.granite_bricks_wall": "Granitziegelmauer", - "block.create.granite_cobblestone": "Granitbruchstein", - "block.create.granite_cobblestone_slab": "Granitbruchsteinstufe", - "block.create.granite_cobblestone_stairs": "Granitbruchtreppe", - "block.create.granite_cobblestone_wall": "Granitbruchsteinmauer", - "block.create.granite_pillar": "Granitsäule", - "block.create.gray_sail": "Graues Segel", - "block.create.gray_seat": "Grauer Sitz", - "block.create.gray_valve_handle": "Grauer Ventilgriff", - "block.create.green_sail": "Grünes Segel", - "block.create.green_seat": "Grüner Sitz", - "block.create.green_valve_handle": "Grüner Ventilgriff", - "block.create.hand_crank": "Handkurbel", - "block.create.honey": "Honig", - "block.create.horizontal_framed_glass": "Horizontal Gerahmtes Glas", - "block.create.horizontal_framed_glass_pane": "Horizontal Gerahmte Glasscheibe", - "block.create.hose_pulley": "Umlenkrolle", - "block.create.item_drain": "Abfluss", - "block.create.jungle_window": "Tropenholzfenster", - "block.create.jungle_window_pane": "Tropenholzfensterscheibe", - "block.create.large_cogwheel": "Großes Zahnrad", - "block.create.layered_andesite": "Geschichteter Andesit", - "block.create.layered_dark_scoria": "Geschichtete Dunkle Schlacke", - "block.create.layered_diorite": "Geschichteter Diorit", - "block.create.layered_dolomite": "Geschichteter Dolomit", - "block.create.layered_gabbro": "Geschichteter Gabbro", - "block.create.layered_granite": "Geschichteter Granit", - "block.create.layered_limestone": "Geschichteter Kalkstein", - "block.create.layered_scoria": "Geschichtete Schlacke", - "block.create.layered_weathered_limestone": "Geschichteter Verwitterter Kalkstein", - "block.create.light_blue_sail": "Hellblaues Segel", - "block.create.light_blue_seat": "Hellblauer Sitz", - "block.create.light_blue_valve_handle": "Hellblauer Ventilgriff", - "block.create.light_gray_sail": "Hellgraues Segel", - "block.create.light_gray_seat": "Hellgrauer Sitz", - "block.create.light_gray_valve_handle": "Hellgrauer Ventilgriff", - "block.create.lime_sail": "Hellgrünes Segel", - "block.create.lime_seat": "Hellgrüner Sitz", - "block.create.lime_valve_handle": "Hellgrüner Ventilgriff", - "block.create.limesand": "Kalksand", - "block.create.limestone": "Kalkstein", - "block.create.limestone_bricks": "Kalksteinziegel", - "block.create.limestone_bricks_slab": "Kalksteinziegelstufe", - "block.create.limestone_bricks_stairs": "Kalksteinziegeltreppe", - "block.create.limestone_bricks_wall": "Kalksteinziegelmauer", - "block.create.limestone_cobblestone": "Kalkbruchstein", - "block.create.limestone_cobblestone_slab": "Kalkbruchsteinstufe", - "block.create.limestone_cobblestone_stairs": "Kalkbruchsteintreppe", - "block.create.limestone_cobblestone_wall": "Kalkbruchsteinmauer", - "block.create.limestone_pillar": "Kalksteinsäule", - "block.create.linear_chassis": "Schubgerüst", - "block.create.lit_blaze_burner": "Aktiver Lohenbrenner", - "block.create.magenta_sail": "Magenta Segel", - "block.create.magenta_seat": "Magenta Sitz", - "block.create.magenta_valve_handle": "Magenta Ventilgriff", - "block.create.mechanical_arm": "Mechanischer Arm", - "block.create.mechanical_bearing": "Mechanisches Lager", - "block.create.mechanical_crafter": "Mechanische Handwerkseinheit", - "block.create.mechanical_drill": "Mechanischer Bohrer", - "block.create.mechanical_harvester": "Mechanische Erntemaschine", - "block.create.mechanical_mixer": "Mechanischer Mixer", - "block.create.mechanical_piston": "Mechanischer Kolben", - "block.create.mechanical_piston_head": "Mechanisches Kolbenende", - "block.create.mechanical_plough": "Mechanischer Pflug", - "block.create.mechanical_press": "Mechanische Presse", - "block.create.mechanical_pump": "Mechanische Pumpe", - "block.create.mechanical_saw": "Mechanische Säge", - "block.create.metal_bracket": "Metallhalterung", - "block.create.millstone": "Mahlstein", - "block.create.minecart_anchor": "Lorenanker", - "block.create.mossy_andesite": "Moosiger Andesit", - "block.create.mossy_dark_scoria": "Moosige Dunkle Schlacke", - "block.create.mossy_diorite": "Moosiger Diorit", - "block.create.mossy_dolomite": "Moosiger Dolomit", - "block.create.mossy_gabbro": "Moosiger Gabbro", - "block.create.mossy_granite": "Moosiger Granit", - "block.create.mossy_limestone": "Moosiger Kalkstein", - "block.create.mossy_scoria": "Moosige Schlacke", - "block.create.mossy_weathered_limestone": "Moosiger Verwitterter Kalkstein", - "block.create.mysterious_cuckoo_clock": "Kuckucksuhr", - "block.create.natural_scoria": "Natürliche Schlacke", - "block.create.nixie_tube": "Nixie-Röhre", - "block.create.nozzle": "Düse", - "block.create.oak_window": "Eichenfenster", - "block.create.oak_window_pane": "Eichenfensterscheibe", - "block.create.orange_sail": "Oranges Segel", - "block.create.orange_seat": "Oranger Sitz", - "block.create.orange_valve_handle": "Oranger Ventilgriff", - "block.create.ornate_iron_window": "Kunstvolles Eisenfenster", - "block.create.ornate_iron_window_pane": "Kunstvolle Eisenfensterscheibe", - "block.create.overgrown_andesite": "Überwachsener Andesit", - "block.create.overgrown_dark_scoria": "Überwachsene Dunkle Schlacke", - "block.create.overgrown_diorite": "Überwachsener Diorit", - "block.create.overgrown_dolomite": "Überwachsener Dolomit", - "block.create.overgrown_gabbro": "Überwachsener Gabbro", - "block.create.overgrown_granite": "Überwachsener Granit", - "block.create.overgrown_limestone": "Überwachsener Kalkstein", - "block.create.overgrown_scoria": "Überwachsener Schlacke", - "block.create.overgrown_weathered_limestone": "Überwachsener Verwitterter Kalkstein", - "block.create.paved_andesite": "Gepflasterter Andesit", - "block.create.paved_andesite_slab": "Gepflasterte Andesitstufe", - "block.create.paved_andesite_stairs": "Gepflasterte Andesittreppe", - "block.create.paved_andesite_wall": "Gepflasterte Andesitmauer", - "block.create.paved_dark_scoria": "Gepflasterte Dunkle Schlacke", - "block.create.paved_dark_scoria_slab": "Gepflasterte Dunkle Schlackenstufe", - "block.create.paved_dark_scoria_stairs": "Gepflasterte Dunkle Schlackentreppe", - "block.create.paved_dark_scoria_wall": "Gepflasterte Dunkle Schlackenmauer", - "block.create.paved_diorite": "Gepflasterter Diorit", - "block.create.paved_diorite_slab": "Gepflasterte Dioritstufe", - "block.create.paved_diorite_stairs": "Gepflasterte Diorittreppe", - "block.create.paved_diorite_wall": "Gepflasterte Dioritmauer", - "block.create.paved_dolomite": "Gepflasterter Dolomit", - "block.create.paved_dolomite_slab": "Gepflasterte Dolomitstufe", - "block.create.paved_dolomite_stairs": "Gepflasterte Dolomittreppe", - "block.create.paved_dolomite_wall": "Gepflasterte Dolomitmauer", - "block.create.paved_gabbro": "Gepflasterter Gabbro", - "block.create.paved_gabbro_slab": "Gepflasterte Gabbrostufe", - "block.create.paved_gabbro_stairs": "Gepflasterte Gabbrotreppe", - "block.create.paved_gabbro_wall": "Gepflasterte Gabbromauer", - "block.create.paved_granite": "Gepflasterter Granit", - "block.create.paved_granite_slab": "Gepflasterte Granitstufe", - "block.create.paved_granite_stairs": "Gepflasterte Granittreppe", - "block.create.paved_granite_wall": "Gepflasterte Granitmauer", - "block.create.paved_limestone": "Gepflasterter Kalkstein", - "block.create.paved_limestone_slab": "Gepflasterte Kalksteinstufe", - "block.create.paved_limestone_stairs": "Gepflasterte Kalksteintreppe", - "block.create.paved_limestone_wall": "Gepflasterte Kalksteinmauer", - "block.create.paved_scoria": "Gepflasterte Schlacke", - "block.create.paved_scoria_slab": "Gepflasterte Schlackenstufe", - "block.create.paved_scoria_stairs": "Gepflasterte Schlackentreppe", - "block.create.paved_scoria_wall": "Gepflasterte Schlackenmauer", - "block.create.paved_weathered_limestone": "Gepflasterter Verwitterter Kalkstein", - "block.create.paved_weathered_limestone_slab": "Gepflasterte Verwitterte Kalksteinstufe", - "block.create.paved_weathered_limestone_stairs": "Gepflasterte Verwitterte Kalksteintreppe", - "block.create.paved_weathered_limestone_wall": "Gepflasterte Verwitterte Kalksteinmauer", - "block.create.pink_sail": "Rosa Segel", - "block.create.pink_seat": "Rosa Sitz", - "block.create.pink_valve_handle": "Rosa Ventilgriff", - "block.create.piston_extension_pole": "Kolben-Pleuelverlängerung", - "block.create.polished_dark_scoria": "Polierte Dunkle Schlacke", - "block.create.polished_dark_scoria_slab": "Polierte Dunkle Schlackenstufe", - "block.create.polished_dark_scoria_stairs": "Polierte Dunkle Schlackentreppe", - "block.create.polished_dark_scoria_wall": "Polierte Dunkle Schlackenmauer", - "block.create.polished_dolomite": "Polierter Dolomit", - "block.create.polished_dolomite_slab": "Polierte Dolomitstufe", - "block.create.polished_dolomite_stairs": "Polierte Dolomittreppe", - "block.create.polished_dolomite_wall": "Polierte Dolomitmauer", - "block.create.polished_gabbro": "Polierter Gabbro", - "block.create.polished_gabbro_slab": "Polierte Gabbrostufe", - "block.create.polished_gabbro_stairs": "Polierte Gabbrotreppe", - "block.create.polished_gabbro_wall": "Polierte Gabbromauer", - "block.create.polished_limestone": "Polierter Kalkstein", - "block.create.polished_limestone_slab": "Polierte Kalksteinstufe", - "block.create.polished_limestone_stairs": "Polierte Kalksteintreppe", - "block.create.polished_limestone_wall": "Polierte Kalksteinmauer", - "block.create.polished_scoria": "Polierte Schlacke", - "block.create.polished_scoria_slab": "Polierte Schlackenstufe", - "block.create.polished_scoria_stairs": "Polierte Schlackentreppe", - "block.create.polished_scoria_wall": "Polierte Schlackenmauer", - "block.create.polished_weathered_limestone": "Polierter Verwitterter Kalkstein", - "block.create.polished_weathered_limestone_slab": "Polierte Verwitterte Kalksteinstufe", - "block.create.polished_weathered_limestone_stairs": "Polierte Verwitterte Kalksteintreppe", - "block.create.polished_weathered_limestone_wall": "Polierte Verwitterte Kalksteinmauer", - "block.create.portable_fluid_interface": "Portable Flüssigkeitsschnittstelle", - "block.create.portable_storage_interface": "Portable Lagerschnittstelle", - "block.create.powered_latch": "RS-Flipflop", - "block.create.powered_toggle_latch": "T-Flipflop", - "block.create.pulley_magnet": "Rollenmagnet", - "block.create.pulse_repeater": "Pulsierender Verstärker", - "block.create.purple_sail": "Lila Segel", - "block.create.purple_seat": "Lila Sitz", - "block.create.purple_valve_handle": "Lila Ventilgriff", - "block.create.radial_chassis": "Drehgerüst", - "block.create.red_sail": "Rote Segel", - "block.create.red_seat": "Roter Sitz", - "block.create.red_valve_handle": "Roter Ventilgriff", - "block.create.redstone_contact": "Redstone-Kontakt", - "block.create.redstone_link": "Redstone-Verbindung", - "block.create.refined_radiance_casing": "Glanzgehäuse", - "block.create.reinforced_rail": "Verstärkte Schiene", - "block.create.rope": "Seil", - "block.create.rope_pulley": "Seilrolle", - "block.create.rotation_speed_controller": "Rotationsgeschwindigkeitsregler", - "block.create.sail_frame": "Segelrahmen", - "block.create.schematic_table": "Bauplantisch", - "block.create.schematicannon": "Bauplankanone", - "block.create.scoria": "Schlacke", - "block.create.scoria_bricks": "Schlackenziegel", - "block.create.scoria_bricks_slab": "Schlackenziegelstufe", - "block.create.scoria_bricks_stairs": "Schlackenziegeltreppe", - "block.create.scoria_bricks_wall": "Schlackenziegelmauer", - "block.create.scoria_cobblestone": "Schlackenbruchstein", - "block.create.scoria_cobblestone_slab": "Schlackenpflasterstufe", - "block.create.scoria_cobblestone_stairs": "Schlackenpflastertreppe", - "block.create.scoria_cobblestone_wall": "Schlackenpflastermauer", - "block.create.scoria_pillar": "Schlackensäule", - "block.create.secondary_linear_chassis": "Sekundäres Schubgerüst", - "block.create.sequenced_gearshift": "Sequenzielle Gangschaltung", - "block.create.shadow_steel_casing": "Schattengehäuse", - "block.create.shaft": "Welle", - "block.create.smart_chute": "Schlaue Rinne", - "block.create.smart_fluid_pipe": "Schlaues Flüssigkeitsrohr", - "block.create.speedometer": "Tachometer", - "block.create.spout": "Ausguss", - "block.create.spruce_window": "Fichtenfenster", - "block.create.spruce_window_pane": "Fichtenfensterscheibe", - "block.create.sticker": "Ankleber", - "block.create.sticky_mechanical_piston": "Klebriger Mechanischer Kolben", - "block.create.stockpile_switch": "Vorratssensor", - "block.create.stressometer": "Stressometer", - "block.create.tiled_glass": "Glasfliesen", - "block.create.tiled_glass_pane": "Glasfliesenscheibe", - "block.create.turntable": "Drehtisch", - "block.create.vertical_framed_glass": "Vertikal Gerahmtes Glas", - "block.create.vertical_framed_glass_pane": "Vertikal Gerahmte Glasscheibe", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", - "block.create.water_wheel": "Wasserrad", - "block.create.weathered_limestone": "Verwitterter Kalkstein", - "block.create.weathered_limestone_bricks": "Verwitterte Kalksteinziegel", - "block.create.weathered_limestone_bricks_slab": "Verwitterte Kalksteinziegelstufe", - "block.create.weathered_limestone_bricks_stairs": "Verwitterte Kalksteinziegeltreppe", - "block.create.weathered_limestone_bricks_wall": "Verwitterte Kalksteinziegelmauer", - "block.create.weathered_limestone_cobblestone": "Verwittertes Kalksteinpflaster", - "block.create.weathered_limestone_cobblestone_slab": "Verwitterte Kalksteinpflasterstufe", - "block.create.weathered_limestone_cobblestone_stairs": "Verwitterte Kalksteinpflastertreppe", - "block.create.weathered_limestone_cobblestone_wall": "Verwitterte Limestonepflastermauer", - "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", - "block.create.weighted_ejector": "Gewichteter Werfer", - "block.create.white_sail": "Weiße Segel", - "block.create.white_seat": "Weißer Sitz", - "block.create.white_valve_handle": "Weißer Ventilgriff", - "block.create.windmill_bearing": "Windmühlenlager", - "block.create.wooden_bracket": "Holzhalterung", - "block.create.yellow_sail": "Gelbes Segel", - "block.create.yellow_seat": "Gelber Sitz", - "block.create.yellow_valve_handle": "Gelber Ventilgriff", - "block.create.zinc_block": "Zinkblock", - "block.create.zinc_ore": "Zinkerz", - "entity.create.contraption": "Vorrichtung", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "Portalkran Vorrichtung", - "entity.create.seat": "Sitz", - "entity.create.stationary_contraption": "Stationäre Vorrichtung", - "entity.create.super_glue": "Superkleber", - "fluid.create.milk": "Milch", - "fluid.create.potion": "Trank", - "fluid.create.tea": "Bauherrentee", - "item.create.andesite_alloy": "Andesitlegierung", - "item.create.attribute_filter": "Attribut Filter", - "item.create.bar_of_chocolate": "Schokoladentafel", - "item.create.belt_connector": "Mechanischer Riemen", - "item.create.blaze_cake": "Lohenkuchen", - "item.create.blaze_cake_base": "Lohenkuchenbasis", - "item.create.brass_hand": "Messing Hand", - "item.create.brass_ingot": "Messingbarren", - "item.create.brass_nugget": "Messingklumpen", - "item.create.brass_sheet": "Messingblech", - "item.create.builders_tea": "Baumeisters Tee", - "item.create.chest_minecart_contraption": "Güterloren Vorrichtung", - "item.create.chocolate_bucket": "Schokoladeneimer", - "item.create.chocolate_glazed_berries": "Schokoladenglasierte Beeren", - "item.create.chromatic_compound": "Chromatische Verbindung", - "item.create.cinder_flour": "Aschenmehl", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "Kupferbarren", - "item.create.copper_nugget": "Kupferklumpen", - "item.create.copper_sheet": "Kupferblech", - "item.create.crafter_slot_cover": "Handwerkseinheit Slot Abdeckung", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "Zerkleinertes Aluminiumerz", - "item.create.crushed_brass": "Zerkleinertes Messing", - "item.create.crushed_copper_ore": "Zerkleinertes Kupfererz", - "item.create.crushed_gold_ore": "Zerkleinertes Golderz", - "item.create.crushed_iron_ore": "Zerkleinertes Eisenerz", - "item.create.crushed_lead_ore": "Zerkleinertes Bleierz", - "item.create.crushed_nickel_ore": "Zerkleinertes Nickelerz", - "item.create.crushed_osmium_ore": "Zerkleinertes Osmiumerz", - "item.create.crushed_platinum_ore": "Zerkleinertes Platinerz", - "item.create.crushed_quicksilver_ore": "Zerkleinertes Quecksilbererz", - "item.create.crushed_silver_ore": "Zerkleinertes Silbererz", - "item.create.crushed_tin_ore": "Zerkleinertes Zinnerz", - "item.create.crushed_uranium_ore": "Zerkleinertes Uranerz", - "item.create.crushed_zinc_ore": "Zerkleinertes Zinkerz", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "Teig", - "item.create.electron_tube": "Elektronenröhre", - "item.create.empty_blaze_burner": "Leerer Lohenbrenner", - "item.create.empty_schematic": "Leerer Bauplan", - "item.create.extendo_grip": "Extendo Griff", - "item.create.filter": "Filter", - "item.create.furnace_minecart_contraption": "Antriebsloren Vorrichtung", - "item.create.goggles": "Ingenieursbrille", - "item.create.golden_sheet": "Goldblech", - "item.create.handheld_worldshaper": "Geländeformer", - "item.create.honey_bucket": "Honigeimer", - "item.create.honeyed_apple": "Honigapfel", - "item.create.integrated_circuit": "Integrierter Schaltkreis", - "item.create.iron_sheet": "Eisenblech", - "item.create.lapis_sheet": "Lapislazuliblech", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "Loren Vorrichtung", - "item.create.minecart_coupling": "Lorenkupplung", - "item.create.polished_rose_quartz": "Polierter Rosenquarz", - "item.create.powdered_obsidian": "Pulverisierter Obsidian", - "item.create.propeller": "Propeller", - "item.create.red_sand_paper": "Rotes Schmirgelpapier", - "item.create.refined_radiance": "Raffinierter Glanz", - "item.create.rose_quartz": "Rosenquarz", - "item.create.sand_paper": "Schmirgelpapier", - "item.create.schematic": "Bauplan", - "item.create.schematic_and_quill": "Bauplan und Feder", - "item.create.shadow_steel": "Schattenstahl", - "item.create.super_glue": "Superkleber", - "item.create.sweet_roll": "Rosinenschnecke", - "item.create.tree_fertilizer": "Baumdünger", - "item.create.vertical_gearbox": "Vertikales Getriebe", - "item.create.wand_of_symmetry": "Symmetriestab", - "item.create.wheat_flour": "Weizenmehl", - "item.create.whisk": "Rührstab", - "item.create.wrench": "Schraubenschlüssel", - "item.create.zinc_ingot": "Zinkbarren", - "item.create.zinc_nugget": "Zinkklumpen", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Willkommen zu Create", - "advancement.create.root.desc": "Es ist Zeit mit dem Bauen von tollen Apparaten zu starten!", - "advancement.create.andesite_alloy": "Alliterationen in Massen", - "advancement.create.andesite_alloy.desc": "Create's Materialien haben verrückte Namen, Eisenlegierung ist im Deutschen leider keine.", - "advancement.create.its_alive": "Es ist am leben!", - "advancement.create.its_alive.desc": "Gucke deinem erstem beweglichen Teil beim drehen zu.", - "advancement.create.shifting_gears": "Wechsel deine Gänge", - "advancement.create.shifting_gears.desc": "Verbinde ein großes Zahnrad mit einem kleinem, um die Geschwindigkeit deiner Apparate zu verändern.", - "advancement.create.overstressed": "Überfordert", - "advancement.create.overstressed.desc": "Erfahre die Limits der Belastung aus erster Hand.", - "advancement.create.belt": "Befördere es alles", - "advancement.create.belt.desc": "Verbinde zwei Wllen mit einem Mechanischem Riemen", - "advancement.create.tunnel": "Geht in Deckung!", - "advancement.create.tunnel.desc": "Verschönere deinen Mechanischem Riemen mit einem Tunnel.", - "advancement.create.splitter_tunnel": "Divide & Conquer", - "advancement.create.splitter_tunnel.desc": "Mache einen Teiler aus einer Gruppe von Messingtunneln.", - "advancement.create.chute": "Abstürzen", - "advancement.create.chute.desc": "Platziere eine Rinne, das vertikale Gegenstück des Riemens.", - "advancement.create.upward_chute": "Luftentführung", - "advancement.create.upward_chute.desc": "Sieh einen geworfenen Gegenstand in eine propellerbetriebene Rinne fliegen.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", - "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", - "advancement.create.fan": "Mechanischer Luftbändiger", - "advancement.create.fan.desc": "Reite den Luftstrom eines eingeschlossenen Propellers.", - "advancement.create.fan_lava": "UNLOCALIZED: Geothermal Space Heater", - "advancement.create.fan_lava.desc": "UNLOCALIZED: Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "UNLOCALIZED: Wacky Washing", - "advancement.create.fan_water.desc": "UNLOCALIZED: Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "UNLOCALIZED: Mechanical Bellows", - "advancement.create.fan_smoke.desc": "UNLOCALIZED: Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", - "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "UNLOCALIZED: Stress-O-Vision", - "advancement.create.goggles.desc": "UNLOCALIZED: Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "UNLOCALIZED: But How Fast Exactly?", - "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "UNLOCALIZED: But How Stressed Exactly?", - "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "UNLOCALIZED: Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "UNLOCALIZED: Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "UNLOCALIZED: Boom, Reinforced!", - "advancement.create.reinforced.desc": "UNLOCALIZED: Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power", - "advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", - "advancement.create.cuckoo": "UNLOCALIZED: Is it time?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", - "advancement.create.windmill": "UNLOCALIZED: A mild Breeze", - "advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill.", - "advancement.create.maxed_windmill": "UNLOCALIZED: A strong breeze", - "advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary Breakers", - "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical Drill.", - "advancement.create.press": "UNLOCALIZED: Press Goes 'Bonk!'", - "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "UNLOCALIZED: Beep Boop", - "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", - "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical Saw.", - "advancement.create.basin": "UNLOCALIZED: Basin Operation", - "advancement.create.basin.desc": "UNLOCALIZED: Place a Basin and try throwing items into it.", - "advancement.create.mixer": "UNLOCALIZED: Mixin' It Up", - "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "UNLOCALIZED: A living Fireplace", - "advancement.create.blaze_burner.desc": "UNLOCALIZED: Obtain a Blaze Burner.", - "advancement.create.compact": "UNLOCALIZED: Automated Compacting", - "advancement.create.compact.desc": "UNLOCALIZED: Use a Press and a Basin to compact some items.", - "advancement.create.brass": "UNLOCALIZED: Actual Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "UNLOCALIZED: Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "UNLOCALIZED: A world of Imagination", - "advancement.create.chocolate.desc": "UNLOCALIZED: Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.item_drain.desc": "UNLOCALIZED: Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "UNLOCALIZED: Let it roll!", - "advancement.create.chained_item_drain.desc": "UNLOCALIZED: Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "UNLOCALIZED: Flow Spy", - "advancement.create.glass_pipe.desc": "UNLOCALIZED: Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "UNLOCALIZED: Never cross the Streams!", - "advancement.create.pipe_collision.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "UNLOCALIZED: There's a leak!", - "advancement.create.pipe_spill.desc": "UNLOCALIZED: Watch an open end of a pipe take or place fluids into the world.", - "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.infinite_water": "UNLOCALIZED: Draining the Ocean", - "advancement.create.infinite_water.desc": "UNLOCALIZED: Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "UNLOCALIZED: Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "UNLOCALIZED: Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "UNLOCALIZED: Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "UNLOCALIZED: Signs of Style", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers hate him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", - "advancement.create.integrated_circuit": "UNLOCALIZED: Complex Calculation", - "advancement.create.integrated_circuit.desc": "UNLOCALIZED: Assemble an Integrated Circuit.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "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_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Beschaffe einen Extendo Griff.", - "advancement.create.dual_extendo_grip": "Ultimatives Boing-Zeitalter", - "advancement.create.dual_extendo_grip.desc": "Schwinge zwei Extendo Griffe gleichzeitig für eine übermenschliche Reichweite.", - "advancement.create.eob": "Ende der Beta", - "advancement.create.eob.desc": "Erwarte mehr Inhalt in der Zukunft. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Paletten", - "death.attack.create.crush": "%1$s stolperte in ein Mahlwerk", - "death.attack.create.fan_fire": "%1$s hat heiße Luft eingeatmet", - "death.attack.create.fan_lava": "%1$s wurde von Lava verweht", - "death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert", - "death.attack.create.mechanical_saw": "%1$s wurde zersägt", - "death.attack.create.cuckoo_clock_explosion": "%1$s wurde durch eine falsche Kuckucksuhr gesprengt", - "create.block.deployer.damage_source_name": "einem Finger", - "create.block.cart_assembler.invalid": "Platziere deinen Lorenmonteur auf einer Schiene.", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Mahlen (Mahlwerk)", - "create.recipe.milling": "Mahlen (Mahlstein)", - "create.recipe.fan_washing": "Sammelwaschen", - "create.recipe.fan_washing.fan": "Propeller hinter fließendem Wasser", - "create.recipe.fan_smoking": "Sammelräuchern", - "create.recipe.fan_smoking.fan": "Propeller hinter Feuer", - "create.recipe.fan_blasting": "Sammelschmelzen", - "create.recipe.fan_blasting.fan": "Propeller hinter Lava", - "create.recipe.pressing": "Mechanische Presse", - "create.recipe.mixing": "Mixen", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "Automatisiertes Formloses Bauen", - "create.recipe.automatic_brewing": "Automatisiertes Brauen", - "create.recipe.packing": "Komprimieren", - "create.recipe.automatic_packing": "Automatisiertes Packen", - "create.recipe.sawing": "Sägen", - "create.recipe.mechanical_crafting": "Mechanisches Bauen", - "create.recipe.automatic_shaped": "Automatisiertes Geformtes Bauen", - "create.recipe.block_cutting": "Schneiden von Blöcken", - "create.recipe.wood_cutting": "Schneiden von Holz", - "create.recipe.sandpaper_polishing": "Schleifen", - "create.recipe.mystery_conversion": "Mysteriöse Konvertierung", - "create.recipe.spout_filling": "Befüllung per Ausguss", - "create.recipe.draining": "Gegenstandsablassung", - "create.recipe.processing.chance": "Chance: %1$s%%", - "create.recipe.heat_requirement.none": "Keine Hitze benötigt", - "create.recipe.heat_requirement.heated": "Wenig Hitze benötigt", - "create.recipe.heat_requirement.superheated": "Viel Hitze benötigt", - - "create.generic.range": "Reichweite", - "create.generic.radius": "Radius", - "create.generic.width": "Breite", - "create.generic.height": "Höhe", - "create.generic.length": "Länge", - "create.generic.speed": "Geschwindigkeit", - "create.generic.delay": "Verzögerung", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Sekunden", - "create.generic.unit.minutes": "Minuten", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "Uhrzeigersinn", - "create.generic.counter_clockwise": "Gegen-Uhrzeigersinn", - - "create.action.scroll": "Wechseln", - "create.action.confirm": "Bestätigen", - "create.action.abort": "Abbrechen", - "create.action.saveToFile": "Speichern", - "create.action.discard": "Löschen", - - "create.keyinfo.toolmenu": "Werkzeugmenü", - "create.keyinfo.scrollup": "Simuliere Mausrad hoch (In der Welt)", - "create.keyinfo.scrolldown": "Simuliere Mausrad runter (In der Welt)", - - "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", - "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", - "create.gui.scrollInput.scrollToAdjustAmount": "Mausrad um Betrag anzupassen", - "create.gui.scrollInput.scrollToSelect": "Mausrad zum Auswählen", - "create.gui.scrollInput.shiftScrollsFaster": "Shift zum schnelleren Auswählen", - "create.gui.toolmenu.focusKey": "Halte [%1$s] zum Fokussieren", - "create.gui.toolmenu.cycle": "[Mausrad] zum Wechseln", - "create.gui.symmetryWand.mirrorType": "Spiegeln", - "create.gui.symmetryWand.orientation": "Orientierung", - - "create.symmetry.mirror.plane": "Einfach Spiegeln", - "create.symmetry.mirror.doublePlane": "Rechteckig", - "create.symmetry.mirror.triplePlane": "Achteckig", - - "create.orientation.orthogonal": "Orthogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Entlang Z", - "create.orientation.alongX": "Entlang X", - - "create.gui.terrainzapper.title": "Tragbarer Geländeformer", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "Platzierung", - "create.gui.terrainzapper.placement.merged": "Zusammengeführt", - "create.gui.terrainzapper.placement.attached": "Angefügt", - "create.gui.terrainzapper.placement.inserted": "Eingefügt", - "create.gui.terrainzapper.brush": "Pinsel", - "create.gui.terrainzapper.brush.cuboid": "Quader", - "create.gui.terrainzapper.brush.sphere": "Kugel", - "create.gui.terrainzapper.brush.cylinder": "Zylinder", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "Werkzeug", - "create.gui.terrainzapper.tool.fill": "Füllen", - "create.gui.terrainzapper.tool.place": "Platzieren", - "create.gui.terrainzapper.tool.replace": "Ersetzen", - "create.gui.terrainzapper.tool.clear": "Löschen", - "create.gui.terrainzapper.tool.overlay": "Überlagern", - "create.gui.terrainzapper.tool.flatten": "Abflachen", - - "create.terrainzapper.shiftRightClickToSet": "Shift-Rechts-Klick um eine Form auszuwählen", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "Jede Lore kann nicht mehr als zwei Kupplungen haben", - "create.minecart_coupling.unloaded": "Teile des Zuges scheinen in nicht geladenen Chunks zu sein", - "create.minecart_coupling.no_loops": "Kupplungen können keine Schleife bilden", - "create.minecart_coupling.removed": "Alle Kupplungen wurden von der Lore entfernt", - "create.minecart_coupling.too_far": "Loren sind zu weit entfernt", - - "create.contraptions.movement_mode": "Bewegungsmodus", - "create.contraptions.movement_mode.move_place": "Platziere immer wenn gestoppt", - "create.contraptions.movement_mode.move_place_returned": "Platziere nur in Ausgangsposition", - "create.contraptions.movement_mode.move_never_place": "Platziere nur wenn Anker zerstört", - "create.contraptions.movement_mode.rotate_place": "Platziere immer wenn gestoppt", - "create.contraptions.movement_mode.rotate_place_returned": "Platziere nur nahe des Ausgangswinkels", - "create.contraptions.movement_mode.rotate_never_place": "Platziere nur wenn Anker zerstört", - "create.contraptions.cart_movement_mode": "Loren-Bewegungsmodus", - "create.contraptions.cart_movement_mode.rotate": "Zeige immer in Bewegungsrichtung", - "create.contraptions.cart_movement_mode.rotate_paused": "Pausiere Akteure beim drehen", - "create.contraptions.cart_movement_mode.rotation_locked": "Sperre Rotation", - "create.contraptions.windmill.rotation_direction": "Rotationsrichtung", - "create.contraptions.clockwork.clock_hands": "Uhrzeiger", - "create.contraptions.clockwork.hour_first": "Stundenzeiger zuerst", - "create.contraptions.clockwork.minute_first": "Minutenzeiger zuerst", - "create.contraptions.clockwork.hour_first_24": "24-Stunden-Zeiger zuerst", - - "create.logistics.filter": "Filter", - "create.logistics.recipe_filter": "Rezeptfilter", - "create.logistics.fluid_filter": "Flüssigkeitsfilter", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filter angewendet auf %1$s.", - "create.logistics.filter.apply_click_again": "Filter angewendet auf %1$s, klicke nochmal um Menge zu kopieren.", - "create.logistics.filter.apply_count": "Extraktionsmenge auf Filter angewendet.", - - "create.gui.goggles.generator_stats": "Generator Statistik:", - "create.gui.goggles.kinetic_stats": "Kinetische Statistik:", - "create.gui.goggles.at_current_speed": "bei derzeitiger Geschwindigkeit", - "create.gui.goggles.pole_length": "Stab Länge:", - "create.gui.goggles.fluid_container": "Flüssigkeitstank Info:", - "create.gui.goggles.fluid_container.capacity": "Kapazität:", - "create.gui.assembly.exception": "Diese Vorrichtung konnte nicht gebaut werden:", - "create.gui.assembly.exception.unmovableBlock": "Unbeweglicher Block (%4$s) bei [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "Der Block bei [%1$s,%2$s,%3$s] war nicht in einem geladenen Chunk", - "create.gui.assembly.exception.structureTooLarge": "In dieser Vorrichtung sind zu viele Blöcke enthalten.\nDas konfigurierte Maximum ist: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "Es sind zu viele Pleuelverlängerungen an diesen Kolben angebracht.\nDas konfigurierte Maximum ist: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Dem Kolben fehlen ein paar Pleuelverlängerungen", - "create.gui.assembly.exception.not_enough_sails": "Angebrachte Struktur enthält nicht genug segelähnliche Blöcke: %1$s\nEin Minimum von %2$s ist erforderlich", - "create.gui.gauge.info_header": "Messgerät Information:", - "create.gui.speedometer.title": "Rotationsgeschwindigkeit", - "create.gui.stressometer.title": "Netzwerkbelastung", - "create.gui.stressometer.capacity": "Verbleibende Kapazität", - "create.gui.stressometer.overstressed": "Überbelastet", - "create.gui.stressometer.no_rotation": "Keine Rotation", - "create.gui.contraptions.not_fast_enough": "Wie es scheint dreht sich dieses %1$s _nicht_ _schnell_ _genug_.", - "create.gui.contraptions.network_overstressed": "Wie es scheint ist diese Vorrichtung _überbelastet_. Füge mehr Quellen hinzu oder _verlangsame_ die Komponenten mit hoher _Belastungsauswirkung_.", - "create.gui.adjustable_crate.title": "Lagerraum", - "create.gui.adjustable_crate.storageSpace": "Lagerraum", - "create.gui.stockpile_switch.title": "Vorratssensor", - "create.gui.stockpile_switch.invert_signal": "Invertiere Signal", - "create.gui.stockpile_switch.move_to_lower_at": "Gehe zu unterer Spur bei %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Gehe zu oberer Spur bei %1$s%%", - "create.gui.sequenced_gearshift.title": "Sequenzielle Gangschaltung", - "create.gui.sequenced_gearshift.instruction": "Befehl", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Drehe um Winkel", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Drehe", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Winkel", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Drehe um Kolben/Seilrolle/Portalkran zu bewegen", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Kolben", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distanz", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "Verzögerung", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Dauer", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "Beende", - "create.gui.sequenced_gearshift.instruction.end": "Beende", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Warte auf neues Redstone Signal", - "create.gui.sequenced_gearshift.instruction.await": "Warte", - "create.gui.sequenced_gearshift.speed": "Geschwindigkeit, Richtung", - "create.gui.sequenced_gearshift.speed.forward": "Eingangsgeschwindigkeit, Vorwärts", - "create.gui.sequenced_gearshift.speed.forward_fast": "Doppelte Geschwindigkeit, Vorwärts", - "create.gui.sequenced_gearshift.speed.back": "Eingangsgeschwindigkeit, Umgekehrt", - "create.gui.sequenced_gearshift.speed.back_fast": "Doppelte Geschwindigkeit, Umgekehrt", - - "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", - "create.schematicAndQuill.secondPos": "Zweite Position festgelegt.", - "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", - "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", - "create.schematicAndQuill.title": "Bauplanname:", - "create.schematicAndQuill.convert": "Speichere und lade sofort hoch", - "create.schematicAndQuill.fallbackName": "Mein Bauplan", - "create.schematicAndQuill.saved": "Gespeichert als %1$s", - - "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", - "create.schematic.position": "Position", - "create.schematic.rotation": "Rotation", - "create.schematic.rotation.none": "Nein", - "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", - "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", - "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", - "create.schematic.mirror": "Spiegeln", - "create.schematic.mirror.none": "Nein", - "create.schematic.mirror.frontBack": "Vor-Zurück", - "create.schematic.mirror.leftRight": "Links-Rechts", - "create.schematic.tool.deploy": "Positionieren", - "create.schematic.tool.move": "XZ Bewegen", - "create.schematic.tool.movey": "Y Bewegen", - "create.schematic.tool.rotate": "Rotieren", - "create.schematic.tool.print": "Drucken", - "create.schematic.tool.flip": "Umdrehen", - "create.schematic.tool.deploy.description.0": "Bewegt die Struktur an einen anderen ort.", - "create.schematic.tool.deploy.description.1": "Mit Rechtsklick auf den Boden platzieren.", - "create.schematic.tool.deploy.description.2": "[Strg] halten, um in einer bestimmten Entfernung zu arbeiten.", - "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", - "create.schematic.tool.move.description.0": "Bewegt das Schema horizontal", - "create.schematic.tool.move.description.1": "Zeig auf das Schema und benutze [Strg]-Mausrad.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Bewegt das Schema vertikal", - "create.schematic.tool.movey.description.1": "[Strg]-Mausrad zum hoch- und runterbewegen", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Rotiert das Schema um seine Mitte.", - "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Platziert sofort die Struktur in der Welt", - "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", - "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", - "create.schematic.tool.flip.description.1": "Zeige auf das Schema und benutze [Strg]-Mausrad.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", - "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", - - "create.gui.schematicTable.refresh": "Aktualisiere Dateien", - "create.gui.schematicTable.open_folder": "Öffne Ordner", - "create.gui.schematicTable.title": "Bauplantisch", - "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", - "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", - "create.gui.schematicTable.uploading": "Hochladen...", - "create.gui.schematicTable.finished": "Hochgeladen!", - "create.gui.schematicannon.title": "Bauplankanone", - "create.gui.schematicannon.listPrinter": "Materiallistendruck", - "create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%", - "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", - "create.gui.schematicannon.shotsRemainingWithBackup": "Mit Reserve: %1$s", - "create.gui.schematicannon.optionEnabled": "Aktiviert", - "create.gui.schematicannon.optionDisabled": "Deaktiviert", - "create.gui.schematicannon.showOptions": "Zeige Drucker Einstellungen", - "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", - "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", - "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", - "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", - "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", - "create.gui.schematicannon.option.skipTileEntities": "Tile Entities ignorieren", - "create.gui.schematicannon.slot.gunpowder": "Füge Schwarzpulver hinzu um die Kanone zu betreiben", - "create.gui.schematicannon.slot.listPrinter": "Platziere hier Bücher um eine Checkliste für deinen Bauplan zu drucken", - "create.gui.schematicannon.slot.schematic": "Füge Bauplan hier hinzu. Stelle sicher dass er an einer spezifischen Position bereitgestellt wird.", - "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", - "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", - "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", - - "create.schematicannon.status.idle": "Aus", - "create.schematicannon.status.ready": "Bereit", - "create.schematicannon.status.running": "An", - "create.schematicannon.status.finished": "Fertig", - "create.schematicannon.status.paused": "Pausiert", - "create.schematicannon.status.stopped": "Gestoppt", - "create.schematicannon.status.noGunpowder": "Schwarzpulver leer", - "create.schematicannon.status.targetNotLoaded": "Kein Block geladen", - "create.schematicannon.status.targetOutsideRange": "Ziel zu weit weg", - "create.schematicannon.status.searching": "Suchen", - "create.schematicannon.status.skipping": "Überspringen", - "create.schematicannon.status.missingBlock": "Fehlender Block:", - "create.schematicannon.status.placing": "Platzieren", - "create.schematicannon.status.clearing": "Blöcke entfernen", - "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", - "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", - "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", - - "create.materialChecklist": "Material Checkliste", - "create.materialChecklist.blocksNotLoaded": "* Haftungsausschluss *\n\nMaterialliste könnte inakkurat seit da es möglich ist dass releveante Chunks nicht geladen sind.", - - "create.gui.filter.deny_list": "Verweigert-Liste", - "create.gui.filter.deny_list.description": "Gegenstände werden nur weitergegeben wenn sie NICHT mit einem der oben genannten übereinstimmen. Eine leere Verweigert-Liste akzeptiert alles.", - "create.gui.filter.allow_list": "Erlaubt-Liste", - "create.gui.filter.allow_list.description": "Gegenstände werden nur weitergegeben wenn sie mit einem der oben genannten übereinstimmen. Eine leere Erlaubt-Liste lehnt alles ab.", - "create.gui.filter.respect_data": "Respektiere Daten", - "create.gui.filter.respect_data.description": "Gegenstände stimmen nur überein wenn ihre Haltbarkeit, Verzauberungen, und andere Attribute ebenfalls passen.", - "create.gui.filter.ignore_data": "Ignoriere Daten", - "create.gui.filter.ignore_data.description": "Gegenstände stimmen unabhängig ihrer Attribute überein.", - - "create.item_attributes.placeable": "UNLOCALIZED: is placeable", - "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", - "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", - "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", - "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", - "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", - "create.item_attributes.washable": "UNLOCALIZED: can be Washed", - "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", - "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", - "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", - "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", - "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", - "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", - "create.item_attributes.damaged": "UNLOCALIZED: is damaged", - "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", - "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", - "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", - "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", - "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", - "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", - "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", - "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", - "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", - "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", - "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", - "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "Keine Attribute ausgewählt", - "create.gui.attribute_filter.selected_attributes": "Ausgewählte Attribute:", - "create.gui.attribute_filter.add_attribute": "Füge Attribut zur Liste hinzu", - "create.gui.attribute_filter.add_inverted_attribute": "Füge gegenteiliges Attribut zur Liste hinzu", - "create.gui.attribute_filter.allow_list_disjunctive": "Erlaubt-Liste (Irgendeins)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Gegenstände werden weitergereicht wenn sie irgendeins der ausgewählten Attribute haben.", - "create.gui.attribute_filter.allow_list_conjunctive": "Erlaubt-Liste (Alle)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Gegenstände werden nur weitergereicht wenn sie ALLE der ausgewählten Attribute haben.", - "create.gui.attribute_filter.deny_list": "Verweigert-Liste", - "create.gui.attribute_filter.deny_list.description": "Gegenstände werden nur weitergereicht wenn sie KEINES der ausgewählten Attribute haben.", - "create.gui.attribute_filter.add_reference_item": "Füge Referenz-Gegenstand hinzu", - - "create.tooltip.holdForDescription": "Halte [%1$s] für eine Zusammenfassung", - "create.tooltip.holdForControls": "Halte [%1$s] für die Steuerung", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Strg", - "create.tooltip.speedRequirement": "Geschwindigkeitsanforderung: %1$s", - "create.tooltip.speedRequirement.none": "Keine", - "create.tooltip.speedRequirement.medium": "Moderat", - "create.tooltip.speedRequirement.high": "Schnell", - "create.tooltip.stressImpact": "Kinetische Belastungsauswirkung: %1$s", - "create.tooltip.stressImpact.low": "Niedrig", - "create.tooltip.stressImpact.medium": "Moderat", - "create.tooltip.stressImpact.high": "Hoch", - "create.tooltip.stressImpact.overstressed": "Überbelastet", - "create.tooltip.capacityProvided": "Kinetische Belastungskapazität: %1$s", - "create.tooltip.capacityProvided.low": "Niedrig", - "create.tooltip.capacityProvided.medium": "Mittel", - "create.tooltip.capacityProvided.high": "Groß", - "create.tooltip.generationSpeed": "Generiert mit %1$s %2$s", - "create.tooltip.analogStrength": "Analoge Stärke: %1$s/15", - - "create.mechanical_arm.extract_from": "Nehme Gegenstände von %1$s", - "create.mechanical_arm.deposit_to": "Lege Gegenstände in %1$s", - "create.mechanical_arm.summary": "Mechanischer Arm hat %1$s Eingabe(n) und %2$s Ausgabe(n).", - "create.mechanical_arm.points_outside_range": "%1$s ausgewählte(r) Interaktionspunkt(e) entfernt aufgrund Reichweitenlimitierungen.", - - "create.weighted_ejector.target_set": "Ziel ausgewählt", - "create.weighted_ejector.target_not_valid": "Werfe auf angrenzenden Block (Ziel war nicht gültig)", - "create.weighted_ejector.no_target": "Werfe auf angrenzenden Block (Kein Ziel war ausgewählt)", - "create.weighted_ejector.targeting": "Werfe nach [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Geworfene Stapelgröße", - - "create.logistics.when_multiple_outputs_available": "Wenn mehrere Ausgaben verfügbar sind", - - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Gezwungener Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "Bevorzuge erstes Ziel", - - "create.tunnel.selection_mode.split": "Aufteilung", - "create.tunnel.selection_mode.forced_split": "Gezwungene Aufteilung", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Gezwungener Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "Bevorzuge Naheliegensten", - "create.tunnel.selection_mode.randomize": "Zufällig", - "create.tunnel.selection_mode.synchronize": "Synchronisiere Eingaben", - - "create.tooltip.chute.header": "Rinnen Information", - "create.tooltip.chute.items_move_down": "Gegenstände bewegen sich nach unten", - "create.tooltip.chute.items_move_up": "Gegenstände bewegen sich nach oben", - "create.tooltip.chute.no_fans_attached": "Keine angeschlossenen Propeller", - "create.tooltip.chute.fans_push_up": "Propeller schieben von unterhalb", - "create.tooltip.chute.fans_push_down": "Propeller schieben von oberhalb", - "create.tooltip.chute.fans_pull_up": "Propeller ziehen von oberhalb", - "create.tooltip.chute.fans_pull_down": "Propeller ziehen von unterhalb", - "create.tooltip.chute.contains": "Enthält: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "Endlose Versorgung", - "create.hint.hose_pulley": "Das angewählte Gewässer wird als unendlich betrachtet.", - "create.hint.mechanical_arm_no_targets.title": "Keine Ziele", - "create.hint.mechanical_arm_no_targets": "Es schein dieser _Mechanische_ _Arm_ hat keine _Ziele_. Wähle Riemen, Depots oder Trichter und andere Blöcke indem du sie _Rechts-Klickst_ während du den _Mechanischen_ _Arm_ in deiner _Hand_ _hälst_.", - "create.hint.empty_bearing.title": "Aktualisiere Lager", - "create.hint.empty_bearing": "_Rechts-Klicke_ das Lager mit einer _leeren_ _Hand_ um die Struktur die du davor gebaut hast _anzubringen_.", - "create.hint.full_deployer.title": "Einsatzgerät Gegenstand Überlauf", - "create.hint.full_deployer": "Es scheint, dieses _Einsatzgerät_ enthält _überflüssige_ _Gegenstände_ die _extrahiert_ werden müssen. Nutze _Trichter_ oder anderes um ihn von seinem Überfluss zu befreien.", - - "create.gui.config.overlay1": "Hi :)", - "create.gui.config.overlay2": "Dies ist ein Beispiel Overlay", - "create.gui.config.overlay3": "Klicke oder ziehe mit deiner Maus", - "create.gui.config.overlay4": "um diese Vorschau zu bewegen", - "create.gui.config.overlay5": "Drücke ESC um diesen Bildschirm zu verlassen", - "create.gui.config.overlay6": "und die neue Position zu speichern", - "create.gui.config.overlay7": "Benutze /create overlay reset", - "create.gui.config.overlay8": "um die Standardposition zurückzusetzen", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server Tick ist derzeitig um %s ms verlangsamt :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server Tick ist jetzt um %s ms verlangsamt >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server Tick ist jetzt wieder auf normaler Geschwindigkeit :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: Benutze /killtps stop um den Server Tick wieder auf normale Geschwindigkeit zu bringen", - "create.command.killTPSCommand.status.usage.1": "[Create]: Benutze /killtps start um den Server Tick künstlich zu verlangsamen", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "Lohe kaut glücklich", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "Bauplankanone endet", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "Schleim matscht", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "Bauplankanone schießt", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "BEISPIELGEGENSTAND (nur ein Marker, um zu zeigen, dass dieser Tooltip existiert)", - "item.create.example_item.tooltip.summary": "Eine Kurzbeschreibung eines Gegenstands. _Unterstriche_ heben einen Begriff hervor.", - "item.create.example_item.tooltip.condition1": "Wenn dies", - "item.create.example_item.tooltip.behaviour1": "dann tut dieser Gegenstand das. (Verhalten wird mit der Shift-Taste angezeigt)", - "item.create.example_item.tooltip.condition2": "Und wenn dies", - "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", - "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", - "item.create.example_item.tooltip.action1": "wird diese Steuerung gezeigt.", - - "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", - - "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", - - "block.create.copper_casing.tooltip": "UNLOCALIZED: COPPER CASING", - "block.create.copper_casing.tooltip.summary": "UNLOCALIZED: Robust machine casing with a variety of uses. Safe for decoration.", - "block.create.copper_casing.tooltip.condition1": "UNLOCALIZED: When used on Fluid Pipe", - "block.create.copper_casing.tooltip.behaviour1": "UNLOCALIZED: _Encases_ the _Fluid Pipe_ with the _Copper Casing_. Encased Fluid pipes will _lock their connections_ in place, no longer reacting to changes to neighbouring pipes.", - - "block.create.encased_fluid_pipe.tooltip": "UNLOCALIZED: ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "UNLOCALIZED: A _Fluid Pipe_ encased with the _Copper Casing_.", - - "block.create.seat.tooltip": "UNLOCALIZED: SEAT", - "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.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", - - "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", - - "block.create.fluid_pipe.tooltip": "UNLOCALIZED: FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "UNLOCALIZED: Used for moving _fluids_ around. Needs a _Mechanical Pump_ to get the _fluid_ moving.", - "block.create.fluid_pipe.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.fluid_pipe.tooltip.behaviour1": "UNLOCALIZED: Can connect to _fluid containers_ such as _Tanks_ or _Basins_. Exposed _pipe_ ends can also drain or place fluid blocks. Be careful of leaks!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "UNLOCALIZED: HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "UNLOCALIZED: Used for _placing_ or _draining_ large _fluid bodies_ in the world.", - "block.create.hose_pulley.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.hose_pulley.tooltip.behaviour1": "UNLOCALIZED: _Raises_ or _Lowers_ the hose, location of the hose determines up to which _height extraction_ or _filling_ will act.", - "block.create.hose_pulley.tooltip.condition2": "UNLOCALIZED: When Fluids pulled from Pulley", - "block.create.hose_pulley.tooltip.behaviour2": "UNLOCALIZED: Starts _taking fluid_ blocks from the body the hose end was lowered into. Very _large bodies_ of fluids will be _considered infinite_.", - "block.create.hose_pulley.tooltip.condition3": "UNLOCALIZED: When Fluids pushed to Pulley", - "block.create.hose_pulley.tooltip.behaviour3": "UNLOCALIZED: Starts _filling fluid_ into the world _up to_ the _hose_ ends' _height_.", - - "block.create.fluid_tank.tooltip": "UNLOCALIZED: FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "UNLOCALIZED: _Stores_ all your favourite _fluids_. Scales in width and height.", - "block.create.fluid_tank.tooltip.condition1": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_tank.tooltip.behaviour1": "UNLOCALIZED: Changes the optional window", - - "block.create.creative_fluid_tank.tooltip": "UNLOCALIZED: CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "UNLOCALIZED: This _Fluid Tank_ allows infinite replication of any Fluid. Scales in width and height.", - "block.create.creative_fluid_tank.tooltip.condition1": "UNLOCALIZED: When Fluid in Tank", - "block.create.creative_fluid_tank.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this tank will provide an _endless supply_ of the fluid specified. Fluids _inserted_ into this tank will be _voided._", - "block.create.creative_fluid_tank.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.creative_fluid_tank.tooltip.behaviour2": "UNLOCALIZED: Changes the optional window", - - "block.create.fluid_valve.tooltip": "UNLOCALIZED: FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "UNLOCALIZED: Halts the flow of fluid down a pipe.", - "block.create.fluid_valve.tooltip.condition1": "UNLOCALIZED: Controllable flow", - "block.create.fluid_valve.tooltip.behaviour1": "UNLOCALIZED: Applied _rotational force_ will force the _valve_ to close, ceasing the flow of _fluids_. Reverse the direction of the _rotational force_ to re-open the valve.", - - "block.create.mechanical_pump.tooltip": "UNLOCALIZED: MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "UNLOCALIZED: Takes _rotational force_ and uses it to move _fluid_ along a _pipe_. Has a maximum range of effect in both directions. (16 blocks by default)", - "block.create.mechanical_pump.tooltip.condition1": "UNLOCALIZED: Fluid Flow", - "block.create.mechanical_pump.tooltip.behaviour1": "UNLOCALIZED: Applied _rotational force_ creates pressure that forces _fluid_ through the _pipe_ network. Reverse the direction of the _rotational force_ to switch the direction that the _fluid_ flows.", - "block.create.mechanical_pump.tooltip.control1": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.mechanical_pump.tooltip.action1": "UNLOCALIZED: Reverses the direction of the _pump_, switching the default direction of the flow", - - "block.create.smart_fluid_pipe.tooltip": "UNLOCALIZED: SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "UNLOCALIZED: A _fluid pipe_ with a filter. Can specify which _fluids_ pass through.", - "block.create.smart_fluid_pipe.tooltip.condition1": "UNLOCALIZED: When Fluids are pushed into it", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "UNLOCALIZED: Smart pipes receiving fluid that does not match its filter will block the flow.", - "block.create.smart_fluid_pipe.tooltip.condition2": "UNLOCALIZED: When adjacent to fluid container", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Smart pipes _starting_ a _flow_ from any container will only extract fluids that _match_ its _filter._", - - "block.create.spout.tooltip": "UNLOCALIZED: SPOUT", - "block.create.spout.tooltip.summary": "UNLOCALIZED: An injector for refilling your _fluid items._", - "block.create.spout.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.spout.tooltip.behaviour1": "UNLOCALIZED: When a _fluid container item_ such as a _bucket_ or _bottle_ is placed underneath, the spout will attempt to refill it with it's own stored _fluid_.", - "block.create.spout.tooltip.condition2": "UNLOCALIZED: Fluid Automation", - "block.create.spout.tooltip.behaviour2": "UNLOCALIZED: The spout placed above a _belt_ or _depot_ will react automatically with a _fluid container item_ that passes beneath it.", - - "block.create.item_drain.tooltip": "UNLOCALIZED: ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "UNLOCALIZED: A grated depot for emptying your _fluid items._", - "block.create.item_drain.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.item_drain.tooltip.behaviour1": "UNLOCALIZED: When a _fluid container item_ such as a _bucket_ or _bottle_ is inserted from the side, the drain will attempt to empty it into its own _fluid container_. The item will then be ejected on the opposite side.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRIESTAB", - "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", - "item.create.wand_of_symmetry.tooltip.condition1": "Wenn in der Schnellleiste", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Bleibt aktiv", - "item.create.wand_of_symmetry.tooltip.control1": "R-Klick auf Boden", - "item.create.wand_of_symmetry.tooltip.action1": "_Erstellt_ oder _Bewegt_ den Spiegel", - "item.create.wand_of_symmetry.tooltip.control2": "R-Klick in die Luft", - "item.create.wand_of_symmetry.tooltip.action2": "_Löscht_ den aktiven Spiegel", - "item.create.wand_of_symmetry.tooltip.control3": "R-Klick beim Schleichen", - "item.create.wand_of_symmetry.tooltip.action3": "Öffnet das _Konfigurationsmenü_", - - "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", - "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", - "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", - "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", - "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", - "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", - "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_", - - "item.create.tree_fertilizer.tooltip": "BAUMDÜNGER", - "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", - "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", - "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", - - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.", - "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", - "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - - "item.create.filter.tooltip": "UNLOCALIZED: FILTER", - "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", - "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - - "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", - "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - - "item.create.empty_schematic.tooltip": "LEERER BAUPLAN", - "item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet", - - "item.create.schematic.tooltip": "BAUPLAN", - "item.create.schematic.tooltip.summary": "Beschreibt eine Struktur, die in der Welt platziert werden kann. Positioniere das Hologramm wie gewünscht und verwende eine _Bauplankanone_, um die Struktur zu bauen.", - "item.create.schematic.tooltip.condition1": "Wenn gehalten", - "item.create.schematic.tooltip.behaviour1": "Kann mit den Werkzeugen auf dem Bildschirm positioniert werden", - "item.create.schematic.tooltip.control1": "R-Klick beim Schleichen", - "item.create.schematic.tooltip.action1": "Öffnet ein Menü zur Eingabe exakter _Koordinaten_.", - - "item.create.schematic_and_quill.tooltip": "BAUPLAN UND FEDER", - "item.create.schematic_and_quill.tooltip.summary": "Wird benutzt, um eine existierende Struktur in der Welt als eine .nbt-Datei zu speichern.", - "item.create.schematic_and_quill.tooltip.condition1": "Schritt 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Wähle zwei Eckpunkte mit R-Klick aus", - "item.create.schematic_and_quill.tooltip.condition2": "Schritt 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "Auf den Oberflächen _Strg-Scrollen_ um die Größe zu verändern. Nochmals R-Klick um zu speichern.", - "item.create.schematic_and_quill.tooltip.control1": "R-Klick", - "item.create.schematic_and_quill.tooltip.action1": "Einen Eckpunkt auswählen / Speichern bestätigen", - "item.create.schematic_and_quill.tooltip.control2": "Strg gedrückt halten", - "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", - "item.create.schematic_and_quill.tooltip.control3": "R-Klick beim Schleichen", - "item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.", - - "block.create.schematicannon.tooltip": "BAUPLANKANONE", - "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "BAUPLANTISCH", - "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", - "block.create.schematic_table.tooltip.condition1": "Wenn ein Leerer Bauplan bereitgestellt wird", - "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", - - "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", - "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic information_.", - "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", - "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", - "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", - "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", - "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", - "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", - "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates components_ toward or away from the face with which you interacted.", - "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", - "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles Kinetic components_ and places them back in _your inventory_.", - - "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", - "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", - - "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping track of time_.", - "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", - - "block.create.turntable.tooltip": "DREHTISCH", - "block.create.turntable.tooltip.summary": "Wandelt _Rotationsenergie_ in starkes Schwindelgefühl um.", - - "block.create.portable_fluid_interface.tooltip": "UNLOCALIZED: PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving fluids_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley. Two meeting interfaces have to _face each other_ and be spaced _1-2 blocks apart_.", - "block.create.portable_fluid_interface.tooltip.condition1": "UNLOCALIZED: While Moving", - "block.create.portable_fluid_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _portable storage interfaces_ to transfer fluids to or from the contraption. Pipes inserting into or extracting from the _Stationary Interface_ will interact with the tanks on the contraption _directly._ The structure will briefly stall as Fluids are exchanged.", - "block.create.portable_fluid_interface.tooltip.condition2": "UNLOCALIZED: When Powered by Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "UNLOCALIZED: _Disengages_ any active connection immediately.", - - "block.create.stockpile_switch.tooltip": "VORRATSSENSOR", - "block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.", - "block.create.stockpile_switch.tooltip.condition1": "Wenn unter dem unteren Limit", - "block.create.stockpile_switch.tooltip.behaviour1": "Wird das Redstone-Signal ausgeschaltet.", - - "block.create.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ inside _containers_ and _conveyors_ matching a configured _filter_. While the observed _inventory_, _belt_ or _chute contains_ a matching item, this component will emit a _Redstone Signal_. When an observed _funnel transfers_ a matching item, this component will emit a _Redstone Pulse_.", - - "block.create.adjustable_crate.tooltip": "LAGERRAUM", - "block.create.adjustable_crate.tooltip.summary": "Dieser _Speicherbehälter_ erlaubt manuelle Kontrolle über seine Kapazität. Er kann bis zu _16_ _Stacks_ von jeglichem Gegenstand beinhalten.", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "BAUPLANKANONENMACHER", - "block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.", - "block.create.creative_crate.tooltip.condition1": "Wenn Gegenstand in Filter Slot", - "block.create.creative_crate.tooltip.behaviour1": "Alles _extrahierende_ von diesem Container wird einen _endlosen Vorrat_ des angegebenen Gegenstands zur Verfügung stellen. In diese Kiste _eingefügte_ Gegenstände werden _entsorgt_.", - - "block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", - "item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", - "item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", - - "item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._", - - "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed light_.", - - "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in the void_.", - - "item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Bitte halte dies fern von Kindern", - "create.tooltip.randomWipDescription1": "Ein Babypanda stirbt jedes mal wenn du diesen Gegenstand benutzt. Jedes. Mal.", - "create.tooltip.randomWipDescription2": "Benutzung auf eigene Gefahr.", - "create.tooltip.randomWipDescription3": "Dies ist nicht der Gegenstand den du suchst, *wackelt mit Finger* bitte geht auseinander.", - "create.tooltip.randomWipDescription4": "Dieser Gegenstand wird sich in 10 Sekunden selbst zerstören. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Glaub mir, es ist nutzlos.", - "create.tooltip.randomWipDescription6": "Bei der Verwendung dieses Gegenstands stimmst du hiermit unserem Haftungsausschluss zu und nimmst dessen Bedingungen an.", - "create.tooltip.randomWipDescription7": "Dieser ist nicht für dich. Wie wäre es mit dem?", - "create.tooltip.randomWipDescription8": "Benutze es und bereue deine Entscheidung umgehend.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json deleted file mode 100644 index c3cedde14..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 669", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "Ventana de acacia", - "block.create.acacia_window_pane": "Panel de ventana de acacia", - "block.create.adjustable_chain_gearshift": "Cadena de transmisión ajustable", - "block.create.adjustable_crate": "Caja ajustable", - "block.create.adjustable_pulse_repeater": "Repetidor de pulso ajustable", - "block.create.adjustable_repeater": "Repetidor ajustable", - "block.create.analog_lever": "Palanca analógica", - "block.create.andesite_belt_funnel": "Embudo de cinta de andesita", - "block.create.andesite_bricks": "Ladrillos de andesita", - "block.create.andesite_bricks_slab": "Losa de ladrillos de andesita", - "block.create.andesite_bricks_stairs": "Escaleras de ladrillos de andesita", - "block.create.andesite_bricks_wall": "Pared de ladrillos de andesita", - "block.create.andesite_casing": "Revestidor de andesita", - "block.create.andesite_cobblestone": "Adoquín de andesita", - "block.create.andesite_cobblestone_slab": "Losa de adoquín de andesita", - "block.create.andesite_cobblestone_stairs": "Escaleras de adoquines de andesita", - "block.create.andesite_cobblestone_wall": "Muro de adoquines de andesita", - "block.create.andesite_encased_shaft": "Eje revestido de andesita", - "block.create.andesite_funnel": "Embudo de andesita", - "block.create.andesite_pillar": "Poste de andesita", - "block.create.andesite_tunnel": "Túnel de Andesita", - "block.create.basin": "Cuenca", - "block.create.belt": "Cinta", - "block.create.birch_window": "Ventana de abedul", - "block.create.birch_window_pane": "Panel de ventana de abedul", - "block.create.black_sail": "Vela negra", - "block.create.black_seat": "Asiento negro", - "block.create.black_valve_handle": "Asa de válvula negra", - "block.create.blaze_burner": "Quemador de Blaze", - "block.create.blue_sail": "Vela azul", - "block.create.blue_seat": "Asiento azul", - "block.create.blue_valve_handle": "Asa de válvula azul", - "block.create.brass_belt_funnel": "Embudo de cinta de latón", - "block.create.brass_block": "Bloque de latón", - "block.create.brass_casing": "Revestidor de latón", - "block.create.brass_encased_shaft": "Eje revestido de latón", - "block.create.brass_funnel": "Embudo de latón", - "block.create.brass_tunnel": "Túnel de latón", - "block.create.brown_sail": "Vela marrón", - "block.create.brown_seat": "Asiento marrón", - "block.create.brown_valve_handle": "Asa de válvula marrón", - "block.create.cart_assembler": "Ensamblador de vagonetas", - "block.create.chiseled_dark_scoria": "Escoria oscura cincelada", - "block.create.chiseled_dolomite": "Dolomita cincelada", - "block.create.chiseled_gabbro": "Gabro cincelado", - "block.create.chiseled_limestone": "Caliza cincelada", - "block.create.chiseled_scoria": "Escoria cincelada", - "block.create.chiseled_weathered_limestone": "Piedra caliza erosionada cincelada", - "block.create.chocolate": "Chocolate", - "block.create.chute": "Ducto", - "block.create.clockwork_bearing": "Rodamiento de reloj", - "block.create.clutch": "Embrague", - "block.create.cogwheel": "Rueda dentada", - "block.create.content_observer": "Observador de contenidos", - "block.create.controller_rail": "Raíl de control", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "Bloque de cobre", - "block.create.copper_casing": "Revestidor de caliza", - "block.create.copper_ore": "Mineral de cobre", - "block.create.copper_shingles": "Bloque de tejas de cobre", - "block.create.copper_tiles": "Bloque de baldosas de cobre", - "block.create.copper_valve_handle": "Asa de válvula de cobre", - "block.create.creative_crate": "Caja creativa", - "block.create.creative_fluid_tank": "Tanque de fluidos creativo", - "block.create.creative_motor": "Motor creativo", - "block.create.crimson_window": "UNLOCALIZED: Crimson Window", - "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", - "block.create.crushing_wheel": "Rueda trituradora", - "block.create.crushing_wheel_controller": "Controlador de Rueda trituradora", - "block.create.cuckoo_clock": "Reloj Cucú", - "block.create.cyan_sail": "Vela cian", - "block.create.cyan_seat": "Asiento cian", - "block.create.cyan_valve_handle": "Asa de válvula cian", - "block.create.dark_oak_window": "Ventana de roble oscuro", - "block.create.dark_oak_window_pane": "Panel de ventana de roble oscuro", - "block.create.dark_scoria": "Escoria oscura", - "block.create.dark_scoria_bricks": "Ladrillos de escoria oscura", - "block.create.dark_scoria_bricks_slab": "Losa de ladrillos de escoria oscura", - "block.create.dark_scoria_bricks_stairs": "Escaleras de ladrillos de escoria oscura", - "block.create.dark_scoria_bricks_wall": "Pared de ladrillos de escoria oscura", - "block.create.dark_scoria_cobblestone": "Adoquines de escoria oscura", - "block.create.dark_scoria_cobblestone_slab": "Losa de adoquines de escoria oscura", - "block.create.dark_scoria_cobblestone_stairs": "Escaleras de adoquines de escoria oscura", - "block.create.dark_scoria_cobblestone_wall": "Pared de adoquines de escoria oscura", - "block.create.dark_scoria_pillar": "Pilar de escoria oscura", - "block.create.deployer": "Desplegador", - "block.create.depot": "Depósito", - "block.create.diorite_bricks": "Ladrillos de diorita", - "block.create.diorite_bricks_slab": "Losa de ladrillos de diorita", - "block.create.diorite_bricks_stairs": "Escaleras de ladrillos de diorita", - "block.create.diorite_bricks_wall": "Pared de ladrillos de diorita", - "block.create.diorite_cobblestone": "Adoquín de diorita", - "block.create.diorite_cobblestone_slab": "Losa de adoquínes de diorita", - "block.create.diorite_cobblestone_stairs": "Escaleras de adoquines de diorita", - "block.create.diorite_cobblestone_wall": "Pared de adoquines de diorita", - "block.create.diorite_pillar": "Pilar de diorita", - "block.create.dolomite": "Dolomita", - "block.create.dolomite_bricks": "Ladrillos de dolomita", - "block.create.dolomite_bricks_slab": "Losa de ladrillos de dolomita", - "block.create.dolomite_bricks_stairs": "Escaleras de ladrillos de dolomita", - "block.create.dolomite_bricks_wall": "Pared de ladrillos de dolomita", - "block.create.dolomite_cobblestone": "Adoquín de dolomita", - "block.create.dolomite_cobblestone_slab": "Losa de adoquín de dolomita", - "block.create.dolomite_cobblestone_stairs": "Escaleras de adoquines de dolomita", - "block.create.dolomite_cobblestone_wall": "Pared de adoquines de dolomita", - "block.create.dolomite_pillar": "Pilar de dolomita", - "block.create.encased_chain_drive": "Cadena de transmisión revestida", - "block.create.encased_fan": "Ventilador revestido", - "block.create.encased_fluid_pipe": "Tubería de fluidos de cobre reforzada", - "block.create.fancy_andesite_bricks": "Ladrillos de andesita elegantes", - "block.create.fancy_andesite_bricks_slab": "Ladrillos de andesita elegantes", - "block.create.fancy_andesite_bricks_stairs": "Escaleras de ladrillos de andesita elegantes", - "block.create.fancy_andesite_bricks_wall": "Pared de ladrillos de andesita elegantes", - "block.create.fancy_dark_scoria_bricks": "Ladrillos de escoria oscura elegantes", - "block.create.fancy_dark_scoria_bricks_slab": "Losa de ladrillos de escoria oscura elegantes", - "block.create.fancy_dark_scoria_bricks_stairs": "Escalera de ladrillos de escoria oscura elegantes", - "block.create.fancy_dark_scoria_bricks_wall": "Pared de ladrillos de escoria oscura elegantes", - "block.create.fancy_diorite_bricks": "Ladrillos de diorita elegantes", - "block.create.fancy_diorite_bricks_slab": "Losa de ladrillos de diorita elegantes", - "block.create.fancy_diorite_bricks_stairs": "Escaleras de ladrillos de diorita elegantes", - "block.create.fancy_diorite_bricks_wall": "Pared de ladrillos de diorita elegantes", - "block.create.fancy_dolomite_bricks": "Ladrillos de dolomita elegantes", - "block.create.fancy_dolomite_bricks_slab": "Losa de ladrillos de dolomita elegantes", - "block.create.fancy_dolomite_bricks_stairs": "Escaleras de ladrillos de dolomita elegantes", - "block.create.fancy_dolomite_bricks_wall": "Pared de ladrillos de dolomita elegantes", - "block.create.fancy_gabbro_bricks": "Ladrillos de gabro elegantes", - "block.create.fancy_gabbro_bricks_slab": "Losa de ladrillos de gabro elegantes", - "block.create.fancy_gabbro_bricks_stairs": "Escaleras de ladrillos de gabro elegantes", - "block.create.fancy_gabbro_bricks_wall": "Pared de ladrillos de gabro elegantes", - "block.create.fancy_granite_bricks": "Ladrillos de granito elegantes", - "block.create.fancy_granite_bricks_slab": "Losa de ladrillos de granito elegantes", - "block.create.fancy_granite_bricks_stairs": "Escaleras de ladrillos de granito elegantes", - "block.create.fancy_granite_bricks_wall": "Pared de ladrillos de granito elegantes", - "block.create.fancy_limestone_bricks": "Ladrillos de piedra caliza elegantes", - "block.create.fancy_limestone_bricks_slab": "Losa de ladrillos de piedra caliza elegantes", - "block.create.fancy_limestone_bricks_stairs": "Escaleras de ladrillos de piedra caliza elegantes", - "block.create.fancy_limestone_bricks_wall": "Pared de ladrillos de piedra caliza elegantes", - "block.create.fancy_scoria_bricks": "Ladrillos de escoria elegantes", - "block.create.fancy_scoria_bricks_slab": "Losa de ladrillos de escoria elegantes", - "block.create.fancy_scoria_bricks_stairs": "Escaleras de ladrillos de escoria elegantes", - "block.create.fancy_scoria_bricks_wall": "Pared de ladrillos de escoria elegantes", - "block.create.fancy_weathered_limestone_bricks": "Ladrillos de piedra de caliza erosionada elegantes", - "block.create.fancy_weathered_limestone_bricks_slab": "Losa de ladrillos de caliza erosionada elegantes", - "block.create.fancy_weathered_limestone_bricks_stairs": "Escaleras de ladrillos de caliza erosionada elegantes", - "block.create.fancy_weathered_limestone_bricks_wall": "Pared de ladrillos de caliza erosionada elegantes", - "block.create.fluid_pipe": "Tubería de fluidos de cobre", - "block.create.fluid_tank": "Depósito de fluidos", - "block.create.fluid_valve": "Válvula de fluidos", - "block.create.flywheel": "Rueda de inercia", - "block.create.framed_glass": "Cristal enmarcado", - "block.create.framed_glass_pane": "Panel de cristal enmarcado", - "block.create.furnace_engine": "Motor de horno", - "block.create.gabbro": "Gabro", - "block.create.gabbro_bricks": "Ladrillos de gabro", - "block.create.gabbro_bricks_slab": "Losa de ladrillos de gabro", - "block.create.gabbro_bricks_stairs": "Escaleras de ladrillos de gabro", - "block.create.gabbro_bricks_wall": "Pared de ladrillos de gabro", - "block.create.gabbro_cobblestone": "Adoquín de gabro", - "block.create.gabbro_cobblestone_slab": "Losa de adoquínes de gabro", - "block.create.gabbro_cobblestone_stairs": "Escaleras de adoquínes de gabro", - "block.create.gabbro_cobblestone_wall": "Pared de adoquínes de gabro", - "block.create.gabbro_pillar": "Pilar de gabro", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "Eje de grúa", - "block.create.gearbox": "Caja de transmisión", - "block.create.gearshift": "Caja de cambios", - "block.create.glass_fluid_pipe": "Tubería de fluidos de cristal", - "block.create.granite_bricks": "Ladrillos de granito", - "block.create.granite_bricks_slab": "Losa de ladrillos de granito", - "block.create.granite_bricks_stairs": "Escaleras de ladrillos de granito", - "block.create.granite_bricks_wall": "Pared de ladrillos de granito", - "block.create.granite_cobblestone": "Adoquín de granito", - "block.create.granite_cobblestone_slab": "Losa de adoquínes de granito", - "block.create.granite_cobblestone_stairs": "Escaleras de adoquínes de granito", - "block.create.granite_cobblestone_wall": "Pared de adoquínes de granito", - "block.create.granite_pillar": "Pilar de granito", - "block.create.gray_sail": "Vela gris", - "block.create.gray_seat": "Asiento gris", - "block.create.gray_valve_handle": "Asa de válvula gris", - "block.create.green_sail": "Vela verde", - "block.create.green_seat": "Asiento verde", - "block.create.green_valve_handle": "Asa de válvula verde", - "block.create.hand_crank": "Manivela", - "block.create.honey": "Miel", - "block.create.horizontal_framed_glass": "Cristal con marco horizontal", - "block.create.horizontal_framed_glass_pane": "Panel de cristal con marco horizontal", - "block.create.hose_pulley": "Polea de manguera", - "block.create.item_drain": "Drenador de elementos", - "block.create.jungle_window": "Ventana de jungla", - "block.create.jungle_window_pane": "Panel de ventana de jungla", - "block.create.large_cogwheel": "Rueda dentada grande", - "block.create.layered_andesite": "Andesita estratificada", - "block.create.layered_dark_scoria": "Escoria oscura estratificada", - "block.create.layered_diorite": "Diorita estratificada", - "block.create.layered_dolomite": "Dolomita estratificada", - "block.create.layered_gabbro": "Gabro estratificado", - "block.create.layered_granite": "Granito estratificado", - "block.create.layered_limestone": "Piedra caliza estratificada", - "block.create.layered_scoria": "Escoria estratificada", - "block.create.layered_weathered_limestone": "Caliza erosionada estratificada", - "block.create.light_blue_sail": "Vela azul claro", - "block.create.light_blue_seat": "Asiento azul claro", - "block.create.light_blue_valve_handle": "Asa de válvula azul claro", - "block.create.light_gray_sail": "Vela gris claro", - "block.create.light_gray_seat": "Asiento gris claro", - "block.create.light_gray_valve_handle": "Asa de válvula gris claro", - "block.create.lime_sail": "Vela lima", - "block.create.lime_seat": "Asiento lima", - "block.create.lime_valve_handle": "Asa de válvula lima", - "block.create.limesand": "Arena caliza", - "block.create.limestone": "Piedra caliza", - "block.create.limestone_bricks": "Ladrillos de piedra caliza", - "block.create.limestone_bricks_slab": "Losa de ladrillos de piedra caliza", - "block.create.limestone_bricks_stairs": "Escaleras de ladrillos de piedra caliza", - "block.create.limestone_bricks_wall": "Pared de ladrillos de piedra caliza", - "block.create.limestone_cobblestone": "Adoquínes de piedra caliza", - "block.create.limestone_cobblestone_slab": "Losa de adoquines de piedra caliza", - "block.create.limestone_cobblestone_stairs": "Escaleras de adoquines de piedra caliza", - "block.create.limestone_cobblestone_wall": "Pared de adoquines de piedra caliza", - "block.create.limestone_pillar": "Pilar de piedra caliza", - "block.create.linear_chassis": "Chasis lineal", - "block.create.lit_blaze_burner": "Quemador de Blaze encendido", - "block.create.magenta_sail": "Vela magenta", - "block.create.magenta_seat": "Asiento magenta", - "block.create.magenta_valve_handle": "Asa de válvula magenta", - "block.create.mechanical_arm": "Brazo mecánico", - "block.create.mechanical_bearing": "Rodamiento mecánico", - "block.create.mechanical_crafter": "Autoensamblador mecánico", - "block.create.mechanical_drill": "Taladro mecánico", - "block.create.mechanical_harvester": "Cosechadora mecánica", - "block.create.mechanical_mixer": "Mezcladora mecánica", - "block.create.mechanical_piston": "Pistón mecánico", - "block.create.mechanical_piston_head": "Cabezal de pistón mecánico", - "block.create.mechanical_plough": "Arado mecánico", - "block.create.mechanical_press": "Prensa mecánica", - "block.create.mechanical_pump": "Bomba mecánica", - "block.create.mechanical_saw": "Sierra mecánica", - "block.create.metal_bracket": "Soporte de metal para ejes", - "block.create.millstone": "Piedra de molino", - "block.create.minecart_anchor": "Ancla de vagonetas", - "block.create.mossy_andesite": "Andesita musgosa", - "block.create.mossy_dark_scoria": "Escoria oscura musgosa", - "block.create.mossy_diorite": "Diorita musgosa", - "block.create.mossy_dolomite": "Dolomita musgosa", - "block.create.mossy_gabbro": "Gabro musgoso", - "block.create.mossy_granite": "Granito musgoso", - "block.create.mossy_limestone": "Caliza musgosa", - "block.create.mossy_scoria": "Escoria musgosa", - "block.create.mossy_weathered_limestone": "Caliza erosionada musgosa", - "block.create.mysterious_cuckoo_clock": "Reloj cucú", - "block.create.natural_scoria": "Escoria natural", - "block.create.nixie_tube": "Tubo Nixie", - "block.create.nozzle": "Boquilla", - "block.create.oak_window": "Ventana de roble", - "block.create.oak_window_pane": "Panel de ventana de roble", - "block.create.orange_sail": "Vela naranja", - "block.create.orange_seat": "Asiento naranja", - "block.create.orange_valve_handle": "Asa de válvula naranja", - "block.create.ornate_iron_window": "Ventana de hierro ornamentada", - "block.create.ornate_iron_window_pane": "Panel de ventana de hierro ornamentada", - "block.create.overgrown_andesite": "Andesita sobredimensionada", - "block.create.overgrown_dark_scoria": "Escoria oscura sobredimensionada", - "block.create.overgrown_diorite": "Diorita sobredimensionada", - "block.create.overgrown_dolomite": "Dolomita sobredimensionada", - "block.create.overgrown_gabbro": "Gabro sobredimensionado", - "block.create.overgrown_granite": "Granito sobredimensionado", - "block.create.overgrown_limestone": "Caliza sobredimensionada", - "block.create.overgrown_scoria": "Escoria sobredimensionada", - "block.create.overgrown_weathered_limestone": "Caliza erosionada sobredimensionada", - "block.create.paved_andesite": "Andesita pavimentada", - "block.create.paved_andesite_slab": "Losa de andesita pavimentada", - "block.create.paved_andesite_stairs": "Escaleras de andesita pavimentada", - "block.create.paved_andesite_wall": "Pared de andesita pavimentada", - "block.create.paved_dark_scoria": "Escoria oscura pavimentada", - "block.create.paved_dark_scoria_slab": "Losa de escoria oscura pavimentada", - "block.create.paved_dark_scoria_stairs": "Escaleras de escoria oscura pavimentada", - "block.create.paved_dark_scoria_wall": "Pared de escoria oscura pavimentad", - "block.create.paved_diorite": "Diorita pavimentada", - "block.create.paved_diorite_slab": "Losa de diorita pavimentada", - "block.create.paved_diorite_stairs": "Escaleras de diorita pavimentada", - "block.create.paved_diorite_wall": "Pared de diorita pavimentad", - "block.create.paved_dolomite": "Dolomita pavimentada", - "block.create.paved_dolomite_slab": "Losa de dolomita pavimentada", - "block.create.paved_dolomite_stairs": "Escaleras de dolomita pavimentada", - "block.create.paved_dolomite_wall": "Pared de dolomita pavimentada", - "block.create.paved_gabbro": "Gabro pavimentado", - "block.create.paved_gabbro_slab": "Losa de gabro pavimentado", - "block.create.paved_gabbro_stairs": "Escaleras de gabro pavimentado", - "block.create.paved_gabbro_wall": "Pared de gabro pavimentado", - "block.create.paved_granite": "Granito pavimentado", - "block.create.paved_granite_slab": "Losa de granito pavimentado", - "block.create.paved_granite_stairs": "Escaleras de granito pavimentado", - "block.create.paved_granite_wall": "Pared de granito pavimentado", - "block.create.paved_limestone": "Piedra caliza pavimentada", - "block.create.paved_limestone_slab": "Losa de piedra caliza pavimentada", - "block.create.paved_limestone_stairs": "Escaleras de piedra caliza pavimentada", - "block.create.paved_limestone_wall": "Pared de piedra caliza pavimentada", - "block.create.paved_scoria": "Escoria pavimentada", - "block.create.paved_scoria_slab": "Losa de escoria pavimentada", - "block.create.paved_scoria_stairs": "Escaleras de escoria pavimentada", - "block.create.paved_scoria_wall": "Pared de escoria pavimentada", - "block.create.paved_weathered_limestone": "Piedra caliza erosionada pavimentada", - "block.create.paved_weathered_limestone_slab": "Losa de piedra caliza erosionada pavimentada", - "block.create.paved_weathered_limestone_stairs": "Escaleras de piedra caliza erosionada pavimentada", - "block.create.paved_weathered_limestone_wall": "Pared de piedra caliza erosionada pavimentada", - "block.create.pink_sail": "Vela rosa", - "block.create.pink_seat": "Asiento rosa", - "block.create.pink_valve_handle": "Asa de válvula rosa", - "block.create.piston_extension_pole": "Pértiga de extensión de pistón", - "block.create.polished_dark_scoria": "Escoria oscura pulida", - "block.create.polished_dark_scoria_slab": "Losa de escoria oscura pulida", - "block.create.polished_dark_scoria_stairs": "Escaleras de escoria oscura pulida", - "block.create.polished_dark_scoria_wall": "Pared de escoria oscura pulida", - "block.create.polished_dolomite": "Dolomita pulida", - "block.create.polished_dolomite_slab": "Losa de dolomita pulida", - "block.create.polished_dolomite_stairs": "Escaleras de dolomita pulidas", - "block.create.polished_dolomite_wall": "Pared de dolomita pulida", - "block.create.polished_gabbro": "Gabro pulido", - "block.create.polished_gabbro_slab": "Losa de gabro pulido", - "block.create.polished_gabbro_stairs": "Escaleras de gabro pulido", - "block.create.polished_gabbro_wall": "Pared de gabro pulido", - "block.create.polished_limestone": "Piedra caliza pulida", - "block.create.polished_limestone_slab": "Losa de piedra caliza pulida", - "block.create.polished_limestone_stairs": "Escaleras de piedra caliza pulidas", - "block.create.polished_limestone_wall": "Pared de piedra caliza pulida", - "block.create.polished_scoria": "Escoria pulida", - "block.create.polished_scoria_slab": "Losa de escoria pulida", - "block.create.polished_scoria_stairs": "Escaleras de losa pulida", - "block.create.polished_scoria_wall": "Pared de escoria pulida", - "block.create.polished_weathered_limestone": "Piedra caliza erosionada pulida", - "block.create.polished_weathered_limestone_slab": "Losa de piedra caliza erosionada pulida", - "block.create.polished_weathered_limestone_stairs": "Escaleras de piedra caliza erosionada pulida", - "block.create.polished_weathered_limestone_wall": "Pared de piedra caliza erosionada pulida", - "block.create.portable_fluid_interface": "Interfaz de fluidos portátil", - "block.create.portable_storage_interface": "Interfaz de almacenamiento portátil", - "block.create.powered_latch": "Palanca motorizada", - "block.create.powered_toggle_latch": "Palanca de cierre motorizada", - "block.create.pulley_magnet": "Imán de la polea", - "block.create.pulse_repeater": "Repetidor de pulsos de Redstone", - "block.create.purple_sail": "Vela morada", - "block.create.purple_seat": "Asiento morado", - "block.create.purple_valve_handle": "Asa de válvula morada", - "block.create.radial_chassis": "Chasis radial", - "block.create.red_sail": "Vela roja", - "block.create.red_seat": "Asiento rojo", - "block.create.red_valve_handle": "Asa de válvula roja", - "block.create.redstone_contact": "Contacto de Redstone", - "block.create.redstone_link": "Enlace de Redstone", - "block.create.refined_radiance_casing": "Revestidor de radiante", - "block.create.reinforced_rail": "Raíl reforzado", - "block.create.rope": "Cuerda", - "block.create.rope_pulley": "Polea de cuerda", - "block.create.rotation_speed_controller": "Controlador de velocidad de rotación", - "block.create.sail_frame": "Marco de vela", - "block.create.schematic_table": "Tabla de esquemas", - "block.create.schematicannon": "Schematicannon", - "block.create.scoria": "Escoria", - "block.create.scoria_bricks": "Ladrillos de escoria", - "block.create.scoria_bricks_slab": "Losa de ladrillos de escoria", - "block.create.scoria_bricks_stairs": "Escaleras de ladrillos de escoria", - "block.create.scoria_bricks_wall": "Pared de ladrillos de escoria", - "block.create.scoria_cobblestone": "Adoquín de escoria", - "block.create.scoria_cobblestone_slab": "Losa de adoquínes de escoria", - "block.create.scoria_cobblestone_stairs": "Escaleras de adoquines de escoria", - "block.create.scoria_cobblestone_wall": "Pared de adoquines de escoria", - "block.create.scoria_pillar": "Pilar de escoria", - "block.create.secondary_linear_chassis": "Chasis lineal secundario", - "block.create.sequenced_gearshift": "Palanca de cambios secuencial", - "block.create.shadow_steel_casing": "Revestidor sombrío", - "block.create.shaft": "Eje", - "block.create.smart_chute": "Ducto inteligente", - "block.create.smart_fluid_pipe": "Tubería de fluidos inteligente", - "block.create.speedometer": "Velocímetro", - "block.create.spout": "Surtidor", - "block.create.spruce_window": "Ventana de abeto", - "block.create.spruce_window_pane": "Panel de ventana de abeto", - "block.create.sticker": "UNLOCALIZED: Sticker", - "block.create.sticky_mechanical_piston": "Pistón mecánico pegajoso", - "block.create.stockpile_switch": "Interruptor de acopio", - "block.create.stressometer": "Estresómetro", - "block.create.tiled_glass": "Vidrio esmaltado", - "block.create.tiled_glass_pane": "Panel de vidrio esmaltado", - "block.create.turntable": "Plataforma giratoria mecánica", - "block.create.vertical_framed_glass": "Vidrio esmaltado vertical", - "block.create.vertical_framed_glass_pane": "Panel de vidrio esmaltado vertical", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", - "block.create.water_wheel": "Rueda hidráulica mecánica", - "block.create.weathered_limestone": "Piedra caliza erosionada", - "block.create.weathered_limestone_bricks": "Ladrillos de piedra caliza erosionada", - "block.create.weathered_limestone_bricks_slab": "Losa de piedra caliza erosionada", - "block.create.weathered_limestone_bricks_stairs": "Escaleras de ladrillos de piedra caliza erosionada", - "block.create.weathered_limestone_bricks_wall": "Pared de ladrillos de piedra caliza erosionada", - "block.create.weathered_limestone_cobblestone": "Adoquín de piedra caliza erosionada", - "block.create.weathered_limestone_cobblestone_slab": "Losa de adoquín de piedra caliza erosionada", - "block.create.weathered_limestone_cobblestone_stairs": "Escaleras de adoquín de piedra caliza erosionada", - "block.create.weathered_limestone_cobblestone_wall": "Pared de adoquínes de piedra caliza erosionada", - "block.create.weathered_limestone_pillar": "Pilar de piedra caliza erosionada", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", - "block.create.white_sail": "Vela blanca", - "block.create.white_seat": "Asiento blanco", - "block.create.white_valve_handle": "Asa de válvula blanco", - "block.create.windmill_bearing": "Rodamiento del molino de viento", - "block.create.wooden_bracket": "Soporte de madera para ejes", - "block.create.yellow_sail": "Vela amarilla", - "block.create.yellow_seat": "Asiento amarillo", - "block.create.yellow_valve_handle": "Asa de válvula amarillo", - "block.create.zinc_block": "Bloque de zinc", - "block.create.zinc_ore": "Mineral de zinc", - "entity.create.contraption": "Artilugio", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "Artilugio de grúa", - "entity.create.seat": "Asiento", - "entity.create.stationary_contraption": "Artilugio estacionario", - "entity.create.super_glue": "Super Pegamento", - "fluid.create.milk": "Leche", - "fluid.create.potion": "Poción", - "fluid.create.tea": "Té del Constructor", - "item.create.andesite_alloy": "Aleación de andesita", - "item.create.attribute_filter": "Filtro de atributos", - "item.create.bar_of_chocolate": "Barra de chocolate", - "item.create.belt_connector": "Correa", - "item.create.blaze_cake": "Pastel de Blaze", - "item.create.blaze_cake_base": "Base de Pastel de Blaze", - "item.create.brass_hand": "Mano de latón", - "item.create.brass_ingot": "Lingote de latón", - "item.create.brass_nugget": "Pepita de latón", - "item.create.brass_sheet": "Lámina de latón", - "item.create.builders_tea": "Té del Constructor", - "item.create.chest_minecart_contraption": "Artilugio de vagoneta con cofre", - "item.create.chocolate_bucket": "Cubo de chocolate", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", - "item.create.chromatic_compound": "Compuesto cromático", - "item.create.cinder_flour": "Harina de ceniza", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "Lingote de cobre", - "item.create.copper_nugget": "Pepita de cobre", - "item.create.copper_sheet": "Lámina de cobre", - "item.create.crafter_slot_cover": "Tapa de ranura del Autoensamblador mecánico", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "Mineral de aluminio molido", - "item.create.crushed_brass": "Latón molido", - "item.create.crushed_copper_ore": "Mineral de cobre molido", - "item.create.crushed_gold_ore": "Mineral de oro molido", - "item.create.crushed_iron_ore": "Mineral de hierro molido", - "item.create.crushed_lead_ore": "Mineral de plomo molido", - "item.create.crushed_nickel_ore": "Mineral de níquel molido", - "item.create.crushed_osmium_ore": "Mineral de osmio molido", - "item.create.crushed_platinum_ore": "Mineral de platino molido", - "item.create.crushed_quicksilver_ore": "Mineral de mercurio molido", - "item.create.crushed_silver_ore": "Mineral de plata molido", - "item.create.crushed_tin_ore": "Mineral de estaño molido", - "item.create.crushed_uranium_ore": "Mineral de uranio molido", - "item.create.crushed_zinc_ore": "Mineral de zinc molido", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "Masilla", - "item.create.electron_tube": "Tubo de electrones", - "item.create.empty_blaze_burner": "Quemador de Blaze vacío", - "item.create.empty_schematic": "Esquema vacío", - "item.create.extendo_grip": "Agarre extendido", - "item.create.filter": "Filtro", - "item.create.furnace_minecart_contraption": "Artilugio de vagoneta de horno", - "item.create.goggles": "Gafas del Ingeniero", - "item.create.golden_sheet": "Lámina de oro", - "item.create.handheld_worldshaper": "Worldshaper", - "item.create.honey_bucket": "Cubo de miel", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", - "item.create.integrated_circuit": "Chip de circuito integrado", - "item.create.iron_sheet": "Lámina de hierro", - "item.create.lapis_sheet": "Lámina de lapislázuli", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "Artilugio de vagoneta", - "item.create.minecart_coupling": "Acoplamiento de vagoneta", - "item.create.polished_rose_quartz": "Cuarzo rosado pulido", - "item.create.powdered_obsidian": "Obsidiana en polvo", - "item.create.propeller": "Hélice", - "item.create.red_sand_paper": "Papel de lija rojo", - "item.create.refined_radiance": "Resplandor refinado", - "item.create.rose_quartz": "Cuarzo rosado", - "item.create.sand_paper": "Papel de lija", - "item.create.schematic": "Esquema", - "item.create.schematic_and_quill": "Esquema y Pluma", - "item.create.shadow_steel": "Acero sombrío", - "item.create.super_glue": "Super Pegamento", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", - "item.create.tree_fertilizer": "Fertilizador de árboles", - "item.create.vertical_gearbox": "Caja de transmisión vertical", - "item.create.wand_of_symmetry": "Varita de simetría", - "item.create.wheat_flour": "Harina de trigo", - "item.create.whisk": "Batidora", - "item.create.wrench": "Llave inglesa", - "item.create.zinc_ingot": "Lingote de zinc", - "item.create.zinc_nugget": "Pepita de zinc", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Bienvenido a Create", - "advancement.create.root.desc": "¡Es hora de empezar a construir increíbles Artilugios!", - "advancement.create.andesite_alloy": "Aliteraciones en abundancia", - "advancement.create.andesite_alloy.desc": "Los materiales de Create tienen nombres extraños, la aleación de andesita es uno de ellos.", - "advancement.create.its_alive": "Está Vivo!", - "advancement.create.its_alive.desc": "Vea cómo gira su primer componente cinético.", - "advancement.create.shifting_gears": "Cambiando de marcha", - "advancement.create.shifting_gears.desc": "Conecta una rueda dentada grande a una pequeña, lo que te permitirá cambiar la velocidad de tu artilugio.", - "advancement.create.overstressed": "Sobrecargado", - "advancement.create.overstressed.desc": "Experimenta los límites del estrés.", - "advancement.create.belt": "Paseo de algas", - "advancement.create.belt.desc": "Conectar dos ejes con una correa.", - "advancement.create.tunnel": "Cúbrete!", - "advancement.create.tunnel.desc": "Embellece tu correa con un Túnel.", - "advancement.create.splitter_tunnel": "Divide y vencerás", - "advancement.create.splitter_tunnel.desc": "Crear un divisor con un grupo de túneles de latón.", - "advancement.create.chute": "Caída en picado", - "advancement.create.chute.desc": "Coloque un ducto, la contrapartida vertical de la cinta.", - "advancement.create.upward_chute": "Abducción aérea", - "advancement.create.upward_chute.desc": "Observe cómo un objeto lanzado vuela hacia un paracaídas impulsado por un ventilador.", - "advancement.create.belt_funnel": "Colgantes con forma de embudo", - "advancement.create.belt_funnel.desc": "Coloca un embudo lateral encima de una cinta o depósito para crear un tipo especial.", - "advancement.create.belt_funnel_kiss": "Los loros y las aletas", - "advancement.create.belt_funnel_kiss.desc": "Haz besar dos embudos montados con una cinta.", - "advancement.create.fan": "Maestro mecánico del aire", - "advancement.create.fan.desc": "Monta la corriente de aire proporcionada por un ventilador revestido.", - "advancement.create.fan_lava": "Calentador geotérmico", - "advancement.create.fan_lava.desc": "Quedar atrapado en una corriente de aire que funde las cosas.", - "advancement.create.fan_water": "Lavado de la ropa", - "advancement.create.fan_water.desc": "Quedar atrapado en una corriente de aire que lava las cosas.", - "advancement.create.fan_smoke": "Fuelle mecánico", - "advancement.create.fan_smoke.desc": "Quedar atrapado en una corriente de aire que humea los artículos.", - "advancement.create.wrench": "Configurar convenientemente", - "advancement.create.wrench.desc": "Crea una llave inglesa para ayudarte a construir tus artilugios.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Crea unas Gafas del Ingeniero para ayudarte a obtener más información cinética de los componentes.", - "advancement.create.speedometer": "Pero, ¿con qué rapidez exactamente??", - "advancement.create.speedometer.desc": "Coloca y alimenta un Velocímetro. Míralo a través de las gafas para leer su valor exacto.", - "advancement.create.stressometer": "Pero, ¿cuán estresado exactamente??", - "advancement.create.stressometer.desc": "Coloca y alimenta un Estresómetro. Míralo a través de las gafas para leer su valor exacto.", - "advancement.create.aesthetics": "Boom, Estética!", - "advancement.create.aesthetics.desc": "Colocar los soportes en un eje, tubo y rueda dentada.", - "advancement.create.reinforced": "Boom, Reforzado!", - "advancement.create.reinforced.desc": "Utilizar bloques de revestimiento en un eje, un tubo y una cinta.", - "advancement.create.water_wheel": "Aprovechar la hidráulica", - "advancement.create.water_wheel.desc": "Coloca una Rueda hidráulica e intenta hacerla girar.", - "advancement.create.chocolate_wheel": "Potencia de buen gusto", - "advancement.create.chocolate_wheel.desc": "Hacer funcionar una rueda de agua con chocolate fundido.", - "advancement.create.lava_wheel": "Rueda de Magma", - "advancement.create.lava_wheel.desc": "Esto no debió haber funcionado.", - "advancement.create.cuckoo": "¿Es el momento?", - "advancement.create.cuckoo.desc": "Presenciar cómo un Reloj de cucú anuncia la hora de acostarse.", - "advancement.create.millstone": "Triturador de bolsillo", - "advancement.create.millstone.desc": "Colocar y alimentar una Piedra de molino.", - "advancement.create.windmill": "Una suave brisa", - "advancement.create.windmill.desc": "Montar un molino de viento.", - "advancement.create.maxed_windmill": "Una fuerte brisa", - "advancement.create.maxed_windmill.desc": "Montar un molino de viento de máxima intensidad.", - "advancement.create.andesite_casing": "La edad de la andesita", - "advancement.create.andesite_casing.desc": "Utiliza un poco de aleación de andesita y madera para crear un revestimiento básico.", - "advancement.create.mechanical_drill": "Interruptores fijos", - "advancement.create.mechanical_drill.desc": "Colocar y alimentar un taladro mecánico.", - "advancement.create.press": "¡La prensa se pone en marcha!", - "advancement.create.press.desc": "Activa una prensa mecánica y utilízala para crear algunas láminas.", - "advancement.create.polished_rose_quartz": "Diamantes rosas", - "advancement.create.polished_rose_quartz.desc": "Utiliza un trozo de papel de lija para pulir el cuarzo rosa hasta que se vuelva transparente.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Haz algunos Tubos de Electrones, útiles en la fabricación de maquinaria menos primitiva.", - "advancement.create.mechanical_saw": "Picado estacionario", - "advancement.create.mechanical_saw.desc": "Colocar y alimentar una sierra mecánica.", - "advancement.create.basin": "Funcionamiento de la cuenca", - "advancement.create.basin.desc": "Coloca una Cuenca e intenta arrojar objetos en ella.", - "advancement.create.mixer": "Mezcla de colores", - "advancement.create.mixer.desc": "Coloque una batidora mecánica sobre el lavabo, enciéndala y empiece a mezclar algunos ingredientes.", - "advancement.create.blaze_burner": "Una chimenea viva", - "advancement.create.blaze_burner.desc": "Obtener un Quemador de Blaze.", - "advancement.create.compact": "Compactación automática", - "advancement.create.compact.desc": "Utiliza una prensa y una palangana para compactar algunos elementos.", - "advancement.create.brass": "Aleaciones reales", - "advancement.create.brass.desc": "Utiliza Cobre molido y Zinc molido para crear algo de latón.", - "advancement.create.brass_casing": "La Edad de Latón", - "advancement.create.brass_casing.desc": "Utiliza el latón recién obtenido y algo de madera para crear un revestimiento más avanzado.", - "advancement.create.copper_casing": "La Edad de Cobre", - "advancement.create.copper_casing.desc": "Utiliza algunas láminas de cobre y madera para crear algunos revestimientos de cobre.", - "advancement.create.spout": "Sploosh", - "advancement.create.spout.desc": "Observar el llenado de un elemento fluido usando una boquilla.", - "advancement.create.spout_potion": "Cervecera global", - "advancement.create.spout_potion.desc": "Mira cómo un pico llena una botella con líquido de poción.", - "advancement.create.chocolate": "Un mundo de imaginación", - "advancement.create.chocolate.desc": "Obtener un cubo de chocolate fundido.", - "advancement.create.item_drain": "Drenaje de la ropa", - "advancement.create.item_drain.desc": "Ver cómo se vacía un elemento fluido mediante una drenadora de elementos.", - "advancement.create.chained_item_drain": "Déjalo rodar!", - "advancement.create.chained_item_drain.desc": "Observa cómo un objeto rueda por varios drenadores de elementos encadenados.", - "advancement.create.glass_pipe": "Espía del flujo", - "advancement.create.glass_pipe.desc": "Observe cómo se propaga el fluido a través de una tubería de fluidos con ventanas. Las tuberías de fluido rectas se convierten en ventanas cuando se utiliza una llave en ellas.", - "advancement.create.pipe_collision": "No cruzar nunca los arroyos", - "advancement.create.pipe_collision.desc": "Vea cómo se unen dos fluidos en su red de tuberías.", - "advancement.create.pipe_spill": "¡Hay una fuga!", - "advancement.create.pipe_spill.desc": "Observe cómo un extremo abierto de una tubería toma o deposita fluidos en el mundo.", - "advancement.create.hose_pulley": "Vertidos industriales", - "advancement.create.hose_pulley.desc": "Bajar una polea de manguera y ver cómo se vacía o se llena un cuerpo de líquido.", - "advancement.create.infinite_water": "Drenando el océano", - "advancement.create.infinite_water.desc": "Bombea de una masa de agua lo suficientemente grande como para ser considerada infinita.", - "advancement.create.infinite_lava": "Drenaje del núcleo de los planetas", - "advancement.create.infinite_lava.desc": "Bombea de una masa de lava lo suficientemente grande como para ser considerada infinita.", - "advancement.create.infinite_chocolate": "Ahogándose en la imaginación", - "advancement.create.infinite_chocolate.desc": "Bombea desde una masa de chocolate fundido lo suficientemente grande como para ser considerado infinito.", - "advancement.create.crafter": "Montaje automatizado", - "advancement.create.crafter.desc": "Coloca y alimenta algunos autoensambladores.", - "advancement.create.clockwork_bearing": "Artilugio a la hora", - "advancement.create.clockwork_bearing.desc": "Ensamblar una estructura montada sobre un rodamiento de relojería.", - "advancement.create.nixie_tube": "Signos de estilo", - "advancement.create.nixie_tube.desc": "Obtener y colocar un par de Tubos Nixie.", - "advancement.create.deployer": "Picar, colocar y atacar", - "advancement.create.deployer.desc": "Coloca y potencia un Desplegador, el reflejo perfecto de ti mismo.", - "advancement.create.speed_controller": "Los ingenieros lo odian!", - "advancement.create.speed_controller.desc": "Coloque un regulador de velocidad de rotación, el dispositivo definitivo para cambiar de marcha.", - "advancement.create.flywheel": "El corazón de la fábrica", - "advancement.create.flywheel.desc": "Conectar con éxito un motor a la rueda de inercia.", - "advancement.create.overstress_flywheel": "Altos niveles de estrés", - "advancement.create.overstress_flywheel.desc": "Sobrecargar un Motor de Horno.", - "advancement.create.integrated_circuit": "Cálculos complejos", - "advancement.create.integrated_circuit.desc": "Ensamblar un chip de circuito integrado.", - "advancement.create.mechanical_arm": "Manos ocupadas!", - "advancement.create.mechanical_arm.desc": "Crea un brazo mecánico, selecciona las entradas y salidas, colócalo en el suelo y dale energía; luego observa cómo hace todo el trabajo por ti.", - "advancement.create.musical_arm": "Tócame la melodía!", - "advancement.create.musical_arm.desc": "Vea cómo un brazo mecánico maneja su Jukebox.", - "advancement.create.arm_many_targets": "Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "Programar un brazo mecánico con diez o más posiciones de salida.", - "advancement.create.arm_blaze_burner": "Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "Instruya un brazo mecánico para alimentar su Quemador de Blaze.", - "advancement.create.fist_bump": "¡Pégale, hermano!", - "advancement.create.fist_bump.desc": "Hacer que dos Desplegadores se den un puñetazo.", - "advancement.create.crushing_wheel": "Un par de gigantes", - "advancement.create.crushing_wheel.desc": "Crea algunas Ruedas de trituración para descomponer más materiales de forma más eficaz.", - "advancement.create.blaze_cake": "Fiebre del azúcar", - "advancement.create.blaze_cake.desc": "Hornea en tu Quemador de Blaze un pastel especial.", - "advancement.create.chromatic_compound": "Minerales bipolares", - "advancement.create.chromatic_compound.desc": "Crea una Barra de Compuesto Cromático.", - "advancement.create.shadow_steel": "Retorno del vacío", - "advancement.create.shadow_steel.desc": "Crea Acero Sombrío, una barra de metal de la nada.", - "advancement.create.refined_radiance": "Brillante e inspirador", - "advancement.create.refined_radiance.desc": "Crea un Resplandor refinado, una poderosa sustancia cromática.", - "advancement.create.chromatic_age": "La edad cromática", - "advancement.create.chromatic_age.desc": "Crear bloques de revestimiento de la luz y la oscuridad.", - "advancement.create.wand_of_symmetry": "Espejos radiantes", - "advancement.create.wand_of_symmetry.desc": "Crear un bastón de simetría.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Hazte con un Agarre extentido.", - "advancement.create.dual_extendo_grip": "La última edad del boing", - "advancement.create.dual_extendo_grip.desc": "Doble Empuñadura extendida para un alcance sobrehumano.", - "advancement.create.eob": "Fin de la beta", - "advancement.create.eob.desc": "Espere más contenido aquí en el futuro. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Paletas", - "death.attack.create.crush": "%1$s se procesó por las Ruedas de trituración", - "death.attack.create.fan_fire": "%1$s murió quemado por el aire caliente", - "death.attack.create.fan_lava": "%1$s murió quemado por un abanico de lava", - "death.attack.create.mechanical_drill": "%1$s fue empalado por un taladro mecánico", - "death.attack.create.mechanical_saw": "%1$s fue cortado por la mitad por una sierra mecánica", - "death.attack.create.cuckoo_clock_explosion": "%1$s fue volado por los aires por un reloj cucú manipulado", - "create.block.deployer.damage_source_name": "un Desplegador rebelde", - "create.block.cart_assembler.invalid": "Coloque su Ensamblador de vagonetas en un bloque de Raíles", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Trituración", - "create.recipe.milling": "Fresado", - "create.recipe.fan_washing": "Lavado a granel", - "create.recipe.fan_washing.fan": "Ventilador detrás del agua fluyente", - "create.recipe.fan_smoking": "Ahumador a granel", - "create.recipe.fan_smoking.fan": "Ventilador detrás del fuego", - "create.recipe.fan_blasting": "Voladuras a granel", - "create.recipe.fan_blasting.fan": "Ventilador detrás de la lava", - "create.recipe.pressing": "Prensando", - "create.recipe.mixing": "Mezclando", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "Elaboración automatizada de productos sin forma", - "create.recipe.automatic_brewing": "Elaboración de cerveza automatizada", - "create.recipe.packing": "Compactando", - "create.recipe.automatic_packing": "Embalaje automatizado", - "create.recipe.sawing": "Aserrando", - "create.recipe.mechanical_crafting": "Elaboración mecánica", - "create.recipe.automatic_shaped": "Elaboración automatizada de productos con forma", - "create.recipe.block_cutting": "Corte de bloques", - "create.recipe.wood_cutting": "Corte de maderas", - "create.recipe.sandpaper_polishing": "Pulido con papel de lija", - "create.recipe.mystery_conversion": "Conversión misteriosa", - "create.recipe.spout_filling": "Llenar por el pico", - "create.recipe.draining": "Drenador de elementos", - "create.recipe.processing.chance": "%1$s%% Chance", - "create.recipe.heat_requirement.none": "No es necesario calentar", - "create.recipe.heat_requirement.heated": "Calentado", - "create.recipe.heat_requirement.superheated": "Súper-Calentado", - - "create.generic.range": "Rango", - "create.generic.radius": "Radio", - "create.generic.width": "Ancho", - "create.generic.height": "Alto", - "create.generic.length": "Largo", - "create.generic.speed": "Velocidad", - "create.generic.delay": "Retraso", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Segundos", - "create.generic.unit.minutes": "Minutos", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "En el sentido de las agujas del reloj", - "create.generic.counter_clockwise": "En sentido contrario a las agujas del reloj", - - "create.action.scroll": "Desplazar", - "create.action.confirm": "Confirmar", - "create.action.abort": "Abortar", - "create.action.saveToFile": "Guardar", - "create.action.discard": "Descartar", - - "create.keyinfo.toolmenu": "Menú de la Herramienta de Enfoque", - "create.keyinfo.scrollup": "Simular usar la rueda del ratón hacia arriba (en el mundo)", - "create.keyinfo.scrolldown": "Simular usar la rueda del ratón hacia abajo (en el mundo)", - - "create.gui.scrollInput.defaultTitle": "Seleccione una opción:", - "create.gui.scrollInput.scrollToModify": "Usa la rueda del ratón para Modificar", - "create.gui.scrollInput.scrollToAdjustAmount": "Usa la rueda del ratón para ajustar la cantidad", - "create.gui.scrollInput.scrollToSelect": "Usa la rueda del ratón para Seleccionar", - "create.gui.scrollInput.shiftScrollsFaster": "Shift para usar la rueda del ratón más rápido", - "create.gui.toolmenu.focusKey": "Mantenga [%1$s] para enfocar", - "create.gui.toolmenu.cycle": "[RUEDA DEL RATÓN] para el ciclo", - "create.gui.symmetryWand.mirrorType": "Espejado", - "create.gui.symmetryWand.orientation": "Orientación", - - "create.symmetry.mirror.plane": "Plano de espejo", - "create.symmetry.mirror.doublePlane": "Rectangular", - "create.symmetry.mirror.triplePlane": "Octogonal", - - "create.orientation.orthogonal": "Ortogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "A lo largo de Z", - "create.orientation.alongX": "A lo largo de X", - - "create.gui.terrainzapper.title": "Worldshaper", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "Colocación", - "create.gui.terrainzapper.placement.merged": "Fusionado", - "create.gui.terrainzapper.placement.attached": "Adjuntado", - "create.gui.terrainzapper.placement.inserted": "Insertado", - "create.gui.terrainzapper.brush": "Pincel", - "create.gui.terrainzapper.brush.cuboid": "Cuboide", - "create.gui.terrainzapper.brush.sphere": "Esfera", - "create.gui.terrainzapper.brush.cylinder": "Cilindro", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "Herramienta", - "create.gui.terrainzapper.tool.fill": "Llenar", - "create.gui.terrainzapper.tool.place": "Sitio", - "create.gui.terrainzapper.tool.replace": "Sustituir", - "create.gui.terrainzapper.tool.clear": "Borrar", - "create.gui.terrainzapper.tool.overlay": "Superposición", - "create.gui.terrainzapper.tool.flatten": "Aplanar", - - "create.terrainzapper.shiftRightClickToSet": "Shift+Clic con el botón derecho para seleccionar una forma", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "Las vagonetas no pueden tener más de dos enganches cada una", - "create.minecart_coupling.unloaded": "Algunas partes de su tren parecen estar en chunks no cargados", - "create.minecart_coupling.no_loops": "Los acoplamientos no pueden formar un bucle", - "create.minecart_coupling.removed": "Se han retirado todos los acoplamientos de la vagoneta", - "create.minecart_coupling.too_far": "Las vagonetas están demasiado separadas", - - "create.contraptions.movement_mode": "Modo de movimiento", - "create.contraptions.movement_mode.move_place": "Colocar siempre al detenerse", - "create.contraptions.movement_mode.move_place_returned": "Colocar sólo en la posición inicial", - "create.contraptions.movement_mode.move_never_place": "Colocar sólo cuando se destruye el ancla", - "create.contraptions.movement_mode.rotate_place": "Colocar siempre al detenerse", - "create.contraptions.movement_mode.rotate_place_returned": "Colocar sólo cerca del ángulo inicial", - "create.contraptions.movement_mode.rotate_never_place": "Colocar sólo cuando se destruye el ancla", - "create.contraptions.cart_movement_mode": "Modo de movimiento de la vagoneta", - "create.contraptions.cart_movement_mode.rotate": "Siempre de cara al movimiento", - "create.contraptions.cart_movement_mode.rotate_paused": "Pausar a los actores mientras giran", - "create.contraptions.cart_movement_mode.rotation_locked": "Bloquear rotación", - "create.contraptions.windmill.rotation_direction": "Dirección de rotación", - "create.contraptions.clockwork.clock_hands": "Manecillas de reloj", - "create.contraptions.clockwork.hour_first": "La manecilla de las horas primero", - "create.contraptions.clockwork.minute_first": "La manecilla de los minutos primero", - "create.contraptions.clockwork.hour_first_24": "La manecilla del día primero", - - "create.logistics.filter": "Filtro", - "create.logistics.recipe_filter": "Filtro de recetas", - "create.logistics.fluid_filter": "Filtro de fluidos", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filtro aplicado a %1$s.", - "create.logistics.filter.apply_click_again": "Filtro aplicado a %1$s, haga clic de nuevo para copiar la cantidad.", - "create.logistics.filter.apply_count": "Aplicado recuento de extracciones al filtro.", - - "create.gui.goggles.generator_stats": "Estadísticas del generador:", - "create.gui.goggles.kinetic_stats": "Estadísticas cinéticas:", - "create.gui.goggles.at_current_speed": "con la velocidad actual", - "create.gui.goggles.pole_length": "Longitud del poste:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "Este artilugio no se pudo montar:", - "create.gui.assembly.exception.unmovableBlock": "Bloque inamovible (%4$s) en [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "El bloque en [%1$s,%2$s,%3$s] no estaba en un chunk cargado", - "create.gui.assembly.exception.structureTooLarge": "Hay demasiados bloques incluídos en el artilugio.\nEl máximo configurado es: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "Hay demasiadas Pértigas de extensión conectadas a este Pistón.\nEl máximo configurado es: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Faltan pértigas de extensión para el Pistón", - "create.gui.assembly.exception.not_enough_sails": "La estructura adjunta no incluye suficientes bloques tipo vela: %1$s\nSe requiere un mínimo de %2$s", - "create.gui.gauge.info_header": "Información sobre el medidor:", - "create.gui.speedometer.title": "Velocidad de rotación", - "create.gui.stressometer.title": "Estrés de la red", - "create.gui.stressometer.capacity": "Capacidad restante", - "create.gui.stressometer.overstressed": "Sobrecargado", - "create.gui.stressometer.no_rotation": "Sin rotación", - "create.gui.contraptions.not_fast_enough": "Parece que este %1$s no está girando con _suficiente_ velocidad_.", - "create.gui.contraptions.network_overstressed": "Parece que este artilugio está _sobrecargado_. Añade más fuentes o _desacelera_ los componentes con un _impacto_ de alto estrés.", - "create.gui.adjustable_crate.title": "Caja ajustable", - "create.gui.adjustable_crate.storageSpace": "Espacio de almacenamiento", - "create.gui.stockpile_switch.title": "Interruptor de acopio", - "create.gui.stockpile_switch.invert_signal": "Invertir señal", - "create.gui.stockpile_switch.move_to_lower_at": "Pasar al carril inferior en %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Pasar al carril superior en %1$s%%", - "create.gui.sequenced_gearshift.title": "Cambio de marchas secuenciado", - "create.gui.sequenced_gearshift.instruction": "Instrucción", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Giro por ángulo", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Giro", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Ángulo", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Giro para mover el pistón/polea/grúa", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Pistón", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distancia", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Tiempo de retraso", - "create.gui.sequenced_gearshift.instruction.delay": "Retraso", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Duración", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "Fin", - "create.gui.sequenced_gearshift.instruction.end": "Fin", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "En espera de un Pulso de Redstone", - "create.gui.sequenced_gearshift.instruction.await": "En espera", - "create.gui.sequenced_gearshift.speed": "Velocidad, Dirección", - "create.gui.sequenced_gearshift.speed.forward": "Velocidad de entrada, hacia adelante", - "create.gui.sequenced_gearshift.speed.forward_fast": "Doble velocidad, hacia adelante", - "create.gui.sequenced_gearshift.speed.back": "Velocidad de entrada, Invertida", - "create.gui.sequenced_gearshift.speed.back_fast": "Doble velocidad, Invertida", - - "create.schematicAndQuill.dimensions": "Tamaño del esquema: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Primera posición fijada.", - "create.schematicAndQuill.secondPos": "Segunda posición fijada.", - "create.schematicAndQuill.noTarget": "Mantenga [Ctrl] para seleccionar los bloques del aire.", - "create.schematicAndQuill.abort": "Selección eliminada.", - "create.schematicAndQuill.title": "Nombre del esquema:", - "create.schematicAndQuill.convert": "Guardar y desplegar inmediatamente", - "create.schematicAndQuill.fallbackName": "Mi esquema", - "create.schematicAndQuill.saved": "Guardado como %1$s", - - "create.schematic.invalid": "[!] Elemento no válido - Utilice la tabla de esquemas en su lugar", - "create.schematic.position": "Posición", - "create.schematic.rotation": "Rotación", - "create.schematic.rotation.none": "Ninguno", - "create.schematic.rotation.cw90": "En el sentido de las agujas del reloj 90", - "create.schematic.rotation.cw180": "En el sentido de las agujas del reloj 180", - "create.schematic.rotation.cw270": "En el sentido de las agujas del reloj 270", - "create.schematic.mirror": "Espejado", - "create.schematic.mirror.none": "Ninguno", - "create.schematic.mirror.frontBack": "Delante-detrás", - "create.schematic.mirror.leftRight": "Izquierda-Derecha", - "create.schematic.tool.deploy": "Despliegue", - "create.schematic.tool.move": "Mover XZ", - "create.schematic.tool.movey": "Mover Y", - "create.schematic.tool.rotate": "Rotar", - "create.schematic.tool.print": "Imprimir", - "create.schematic.tool.flip": "Voltear", - "create.schematic.tool.deploy.description.0": "Mueve la estructura a un lugar.", - "create.schematic.tool.deploy.description.1": "Haga clic con el botón derecho del ratón en el suelo para colocar.", - "create.schematic.tool.deploy.description.2": "Mantenga [Ctrl] para seleccionar a una distancia fija.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Rueda del ratón para cambiar la distancia.", - "create.schematic.tool.move.description.0": "Desplaza el esquema horizontalmente.", - "create.schematic.tool.move.description.1": "Apunta al Esquema y [CTRL]-Rueda del ratón para ponerlo.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Desplaza el esquema verticalmente..", - "create.schematic.tool.movey.description.1": "[CTRL]-Rueda del ratón para moverlo hacia arriba/abajo.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Gira el esquema alrededor de su centro.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Rueda del ratón para girar 90 grados.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Sitúa instantáneamente la estructura en el mundo.", - "create.schematic.tool.print.description.1": "[Clic derecho] para confirmar la colocación en el lugar actual.", - "create.schematic.tool.print.description.2": "Esta herramienta es sólo para el Modo Creativo.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Voltea el Esquema a lo largo de la cara que seleccione.", - "create.schematic.tool.flip.description.1": "Apunta al esquema y [CTRL]-Rueda del ratón para voltearlo.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Sincronizando...", - "create.schematics.uploadTooLarge": "Tu esquema excede las limitaciones especificadas por el servidor.", - "create.schematics.maxAllowedSize": "El tamaño máximo permitido del archivo del esquema es:", - - "create.gui.schematicTable.refresh": "Refrescar archivos", - "create.gui.schematicTable.open_folder": "Abrir carpeta", - "create.gui.schematicTable.title": "Tabla de esquemas", - "create.gui.schematicTable.availableSchematics": "Esquemas disponibles", - "create.gui.schematicTable.noSchematics": "No hay esquemas guardados", - "create.gui.schematicTable.uploading": "Subiendo...", - "create.gui.schematicTable.finished": "Subida finalizada!", - "create.gui.schematicannon.title": "Schematicannon", - "create.gui.schematicannon.listPrinter": "Lista de control de la impresora", - "create.gui.schematicannon.gunpowderLevel": "Pólvora %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Disparos restantes: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Con respaldo: %1$s", - "create.gui.schematicannon.optionEnabled": "Actualmente habilitado", - "create.gui.schematicannon.optionDisabled": "Actualmente deshabilitado", - "create.gui.schematicannon.showOptions": "Mostrar la configuración de la impresora", - "create.gui.schematicannon.option.dontReplaceSolid": "No sustituír los bloques sólidos", - "create.gui.schematicannon.option.replaceWithSolid": "Sustituir sólido por sólido", - "create.gui.schematicannon.option.replaceWithAny": "Sustituir sólido por cualquiera", - "create.gui.schematicannon.option.replaceWithEmpty": "Sustituir sólido por vacío", - "create.gui.schematicannon.option.skipMissing": "Omitir los bloques que faltan", - "create.gui.schematicannon.option.skipTileEntities": "Proteger a las entidades", - "create.gui.schematicannon.slot.gunpowder": "Añade pólvora para alimentar el cañón", - "create.gui.schematicannon.slot.listPrinter": "Coloque los libros aquí para imprimir una lista de comprobación para su esquema", - "create.gui.schematicannon.slot.schematic": "Añada su esquema aquí. Asegúrese de que se despliega en un lugar específico.", - "create.gui.schematicannon.option.skipMissing.description": "Si el cañón no encuentra un bloque necesario para su colocación, continuará en la siguiente ubicación.", - "create.gui.schematicannon.option.skipTileEntities.description": "El cañón evitará reemplazar los bloques que contienen datos, como los Cofres.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "El cañón nunca sustituirá ningún bloque sólido en su zona de trabajo, sólo los no sólidos y el aire.", - "create.gui.schematicannon.option.replaceWithSolid.description": "El cañón sólo reemplazará los bloques sólidos en su área de trabajo si el esquema contiene un bloque sólido en la ubicación.", - "create.gui.schematicannon.option.replaceWithAny.description": "El cañón reemplazará los bloques sólidos en su área de trabajo si el esquema contiene algún bloque en la ubicación.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "El cañón eliminará todos los bloques de su zona de trabajo, incluidos los sustituidos por Aire.", - - "create.schematicannon.status.idle": "Inactivo", - "create.schematicannon.status.ready": "Listo", - "create.schematicannon.status.running": "Funcionando", - "create.schematicannon.status.finished": "Finished", - "create.schematicannon.status.paused": "Pausado", - "create.schematicannon.status.stopped": "Detenido", - "create.schematicannon.status.noGunpowder": "Sin pólvora", - "create.schematicannon.status.targetNotLoaded": "El objetivo no está cargado", - "create.schematicannon.status.targetOutsideRange": "Objetivo demasiado lejano", - "create.schematicannon.status.searching": "Buscando", - "create.schematicannon.status.skipping": "Omitiendo", - "create.schematicannon.status.missingBlock": "Elementos perdidos:", - "create.schematicannon.status.placing": "Colocando", - "create.schematicannon.status.clearing": "Limpiando bloques", - "create.schematicannon.status.schematicInvalid": "Esquema inválido", - "create.schematicannon.status.schematicNotPlaced": "Esquema no desplegado", - "create.schematicannon.status.schematicExpired": "Archivo de esquemas caducado", - - "create.materialChecklist": "Lista de control del material", - "create.materialChecklist.blocksNotLoaded": "* Descargo de Responsabilidad *\n\nLa lista de materiales puede ser inexacta debido a que no se han cargado los chunks pertinentes.", - - "create.gui.filter.deny_list": "Lista de denegados", - "create.gui.filter.deny_list.description": "Los elementos pasan si NO coinciden con ninguno de los anteriores. Una lista de denegación vacía acepta todo.", - "create.gui.filter.allow_list": "Lista de permitidos", - "create.gui.filter.allow_list.description": "Los elementos pasan si coinciden con alguno de los anteriores. Una lista de permitidos vacía rechaza todo.", - "create.gui.filter.respect_data": "Respetar datos", - "create.gui.filter.respect_data.description": "Los objetos sólo coinciden si su durabilidad, encantos y otros atributos también coinciden.", - "create.gui.filter.ignore_data": "Ignorar datos", - "create.gui.filter.ignore_data.description": "Los artículos coinciden independientemente de sus atributos.", - - "create.item_attributes.placeable": "se puede colocar", - "create.item_attributes.placeable.inverted": "no se puede colocar", - "create.item_attributes.consumable": "se puede comer", - "create.item_attributes.consumable.inverted": "no se puede comer", - "create.item_attributes.smeltable": "se puede fundir", - "create.item_attributes.smeltable.inverted": "no se puede fundir", - "create.item_attributes.washable": "se puede lavar", - "create.item_attributes.washable.inverted": "no se puede lavar", - "create.item_attributes.smokable": "puede ser ahumado", - "create.item_attributes.smokable.inverted": "no puede ser ahumado", - "create.item_attributes.crushable": "puede ser molido", - "create.item_attributes.crushable.inverted": "no puede ser molido", - "create.item_attributes.blastable": "es fundible en el alto horno", - "create.item_attributes.blastable.inverted": "no es fundible en el alto horno", - "create.item_attributes.enchanted": "está encantado", - "create.item_attributes.enchanted.inverted": "no está encantado", - "create.item_attributes.damaged": "está dañado", - "create.item_attributes.damaged.inverted": "no está dañado", - "create.item_attributes.badly_damaged": "está muy dañado", - "create.item_attributes.badly_damaged.inverted": "no está muy dañado", - "create.item_attributes.not_stackable": "no se puede apilar", - "create.item_attributes.not_stackable.inverted": "se puede apilar", - "create.item_attributes.equipable": "se puede equipar", - "create.item_attributes.equipable.inverted": "no se puede equipar", - "create.item_attributes.furnace_fuel": "es combustible para hornos", - "create.item_attributes.furnace_fuel.inverted": "no es combustible para hornos", - "create.item_attributes.in_tag": "está etiquetado %1$s", - "create.item_attributes.in_tag.inverted": "no está etiquetado %1$s", - "create.item_attributes.in_item_group": "está en el grupo '%1$s'", - "create.item_attributes.in_item_group.inverted": "no está en el grupo '%1$s'", - "create.item_attributes.added_by": "fue añadido por %1$s", - "create.item_attributes.added_by.inverted": "no fue añadida por %1$s", - "create.item_attributes.has_enchant": "está encantado con %1$s", - "create.item_attributes.has_enchant.inverted": "no está encantado con %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.has_fluid": "contiene %1$s", - "create.item_attributes.has_fluid.inverted": "no contiene %1$s", - "create.item_attributes.has_name": "tiene el nombre personalizado %1$s", - "create.item_attributes.has_name.inverted": "no tiene el nombre personalizado %1$s", - "create.item_attributes.book_author": "es obra de %1$s", - "create.item_attributes.book_author.inverted": "no es es obra de %1$s", - "create.item_attributes.book_copy_original": "es un original", - "create.item_attributes.book_copy_original.inverted": "no es un original", - "create.item_attributes.book_copy_first": "es una copia de primera generación", - "create.item_attributes.book_copy_first.inverted": "no es una copia de primera generación", - "create.item_attributes.book_copy_second": "es una copia de segunda generación", - "create.item_attributes.book_copy_second.inverted": "no es una copia de segunda generación", - "create.item_attributes.book_copy_tattered": "es un desordenado desastre", - "create.item_attributes.book_copy_tattered.inverted": "no es un desordenado desastre", - "create.item_attributes.astralsorcery_crystal": "tiene el atributo de cristal %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "no tiene atributo de cristal %1$s", - "create.item_attributes.astralsorcery_constellation": "está en sintonía con %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "no está en sintonía con %1$s", - "create.item_attributes.astralsorcery_perk_gem": "tiene el atributo ventaja %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "no tiene el atributo ventaja %1$s", - "create.item_attributes.astralsorcery_amulet": "mejora %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "no mejora %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "No hay atributos seleccionados", - "create.gui.attribute_filter.selected_attributes": "Atributos seleccionados:", - "create.gui.attribute_filter.add_attribute": "Añadir atributo a la lista", - "create.gui.attribute_filter.add_inverted_attribute": "Añadir atributo invertido a la Lista", - "create.gui.attribute_filter.allow_list_disjunctive": "Lista de permitidos (Cualquiera)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Los elementos pasan si tienen alguno de los atributos seleccionados", - "create.gui.attribute_filter.allow_list_conjunctive": "Lista de permitidos (Todos)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Los elementos pasan sólo si tienen TODOS los atributos seleccionados", - "create.gui.attribute_filter.deny_list": "Lista de denegados", - "create.gui.attribute_filter.deny_list.description": "Los elementos pasan si NO tienen ninguno de los atributos seleccionados", - "create.gui.attribute_filter.add_reference_item": "Añadir elemento de referencia", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Requisitos de velocidad: %1$s", - "create.tooltip.speedRequirement.none": "Ninguno", - "create.tooltip.speedRequirement.medium": "Moderado", - "create.tooltip.speedRequirement.high": "Rápido", - "create.tooltip.stressImpact": "Impacto de estrés: %1$s", - "create.tooltip.stressImpact.low": "Bajo", - "create.tooltip.stressImpact.medium": "Moderado", - "create.tooltip.stressImpact.high": "Alto", - "create.tooltip.stressImpact.overstressed": "Sobrecargado", - "create.tooltip.capacityProvided": "Capacidad de estrés: %1$s", - "create.tooltip.capacityProvided.low": "Pequeña", - "create.tooltip.capacityProvided.medium": "Media", - "create.tooltip.capacityProvided.high": "Grande", - "create.tooltip.generationSpeed": "Genera en %1$s %2$s", - "create.tooltip.analogStrength": "Fuerza analógica: %1$s/15", - - "create.mechanical_arm.extract_from": "Extraer elementos de %1$s", - "create.mechanical_arm.deposit_to": "Depositar elementos en %1$s", - "create.mechanical_arm.summary": "El brazo mecánico tiene %1$s entrada(s) y %2$s salida(s)", - "create.mechanical_arm.points_outside_range": "%1$s punto(s) de interacción seleccionado(s) eliminado(s) debido a las limitaciones de rango", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "Cuando hay múltiples salidas disponibles", - - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Round Robin forzado", - "create.mechanical_arm.selection_mode.prefer_first": "Preferir el primer objetivo", - - "create.tunnel.selection_mode.split": "División", - "create.tunnel.selection_mode.forced_split": "División forzada", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Round Robin forzado", - "create.tunnel.selection_mode.prefer_nearest": "Preferir el más cercano", - "create.tunnel.selection_mode.randomize": "Aleatorizar", - "create.tunnel.selection_mode.synchronize": "Sincronizar entradas", - - "create.tooltip.chute.header": "Información del ducto", - "create.tooltip.chute.items_move_down": "Los elementos se mueven hacia abajo", - "create.tooltip.chute.items_move_up": "Los elementos se mueven hacia arriba", - "create.tooltip.chute.no_fans_attached": "No hay ventiladores adjuntos", - "create.tooltip.chute.fans_push_up": "Los ventiladores empujan desde abajo", - "create.tooltip.chute.fans_push_down": "Los ventiladores empujan desde arriba", - "create.tooltip.chute.fans_pull_up": "Los ventiladores tiran desde arriba", - "create.tooltip.chute.fans_pull_down": "Los ventiladores tiran desde abajo", - "create.tooltip.chute.contains": "Contiene: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "Suministro sin fondo", - "create.hint.hose_pulley": "La masa de fluido objetivo se considera infinita", - "create.hint.mechanical_arm_no_targets.title": "No hay objetivos", - "create.hint.mechanical_arm_no_targets": "Parece que a este _brazo mecánico_ no se le ha asignado ningún _objetivo._ Selecciona correas, depósitos, embudos y otros bloques haciendo _clic derecho_ sobre ellos mientras _sostienes_ el _brazo mecánico_ en tu _mano_.", - "create.hint.empty_bearing.title": "Rodamiento de reloj", - "create.hint.empty_bearing": "_Haz clic con el botón derecho del ratón_ en el rodamiento con la _mano vacía_ para _adherir_ la estructura que acabas de construir delante de él", - "create.hint.full_deployer.title": "Desbordamiento de elementos del desplegador", - "create.hint.full_deployer": "Parece que este _Desplegador_ contiene _elementos_ en exceso que necesitan ser _extraídos._ Usa un _tolva,_embudo_ u otro medio para liberarlo de su desbordamiento.", - - "create.gui.config.overlay1": "Hola :)", - "create.gui.config.overlay2": "Esta es una muestra de la superposición", - "create.gui.config.overlay3": "Haga clic o arrastre con el ratón", - "create.gui.config.overlay4": "para mover esta vista previa", - "create.gui.config.overlay5": "Pulsar ESC para salir de esta pantalla", - "create.gui.config.overlay6": "y guardar la nueva posición", - "create.gui.config.overlay7": "Ejecute /create overlay reset", - "create.gui.config.overlay8": "para restablecer la posición por defecto", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Crear]: El tick del servidor está actualmente ralentizado en %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Crear]: El tick del servidor está ralentizado en %s ms ahora >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: El tick del servidor ha vuelto a su velocidad normal :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: usar /killtps stop para que el servidor vuelva a la velocidad normal", - "create.command.killTPSCommand.status.usage.1": "[Create]: usar /killtps start para ralentizar artificialmente el tick del servidor", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "Blaze mastica felizmente", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "Acabados de Schematicannon", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "Slime aplastado", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "Disparos de Schematicannon", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "La Prensa Mecánica se activa", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EJEMPLO DE ITEM (sólo un marcador de que este tooltip existe)", - "item.create.example_item.tooltip.summary": "Una breve descripción del elemento. Los puntajes bajos resaltan un término", - "item.create.example_item.tooltip.condition1": "Cuando este", - "item.create.example_item.tooltip.behaviour1": "Entonces este elemento hace esto. (los comportamientos se muestran en el turno)", - "item.create.example_item.tooltip.condition2": "Y cuando esto", - "item.create.example_item.tooltip.behaviour2": "Puedes añadir tantos comportamientos como quieras", - "item.create.example_item.tooltip.control1": "Cuando se pulsa Ctrl", - "item.create.example_item.tooltip.action1": "Se muestran estos controles", - - "block.create.wooden_bracket.tooltip": "SOPORTE DE MADERA PARA EJES", - "block.create.wooden_bracket.tooltip.summary": "Decora tus _Ejes_, _Ruedas dentadas_ y _Ductos_ con un refuerzo acogedor y de madera.", - - "block.create.metal_bracket.tooltip": "SOPORTE DE METAL PARA EJES", - "block.create.metal_bracket.tooltip.summary": "Decora tus _Ejes_, _Ruedas dentadas_ y _Ductos_ con un poco de refuerzo industrial robusto.", - - "block.create.copper_casing.tooltip": "REVESTIDOR DE COBRE", - "block.create.copper_casing.tooltip.summary": "Robusta máquina de revestimientos con una gran variedad de usos. Seguro para la decoración.", - "block.create.copper_casing.tooltip.condition1": "Cuando se utiliza en una tubería de fluidos", - "block.create.copper_casing.tooltip.behaviour1": "_Reviste_ la _Tubería de fluidos_ con _Revestimiento de cobre_. Las tuberías de fluidos revestidas _bloquean sus conexiones_ en su lugar, dejando de reaccionar a los cambios en las tuberías vecinas.", - - "block.create.encased_fluid_pipe.tooltip": "TUBO DE FLUIDOS REFORZADO", - "block.create.encased_fluid_pipe.tooltip.summary": "Un tubo de fluidos reforzado con más cobre.", - - "block.create.seat.tooltip": "ASIENTO", - "block.create.seat.tooltip.summary": "¡Siéntate y disfruta del viaje! Anclará a un jugador en un _contrafuerte_ en movimiento. También es ideal para los muebles estáticos. Viene en una variedad de colores.", - "block.create.seat.tooltip.condition1": "Click derecho en el asiento", - "block.create.seat.tooltip.behaviour1": "Sienta al jugador en el _Asiento_. Pulsa shift izquierdo para dejar el _Asiento_.", - - "item.create.blaze_cake.tooltip": "PASTEL DE BLAZE", - "item.create.blaze_cake.tooltip.summary": "Un delicioso regalo para sus esforzados _Quemadores de blaze_. Los pone en marcha!.", - - "block.create.fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS DE COBRE", - "block.create.fluid_pipe.tooltip.summary": "Se utiliza para mover _fluidos_. Necesita una _bomba mecánica_ para que el _fluido_ se mueva.", - "block.create.fluid_pipe.tooltip.condition1": "Transferencia de fluidos", - "block.create.fluid_pipe.tooltip.behaviour1": "Puede conectarse a _contenedores de fluidos_ como _depósitos_ o _cuencas_. Los extremos expuestos de los _tubos_ también pueden drenar o colocar bloques de fluido. ¡Cuidado con las fugas!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "POLEA DE MANGUERA", - "block.create.hose_pulley.tooltip.summary": "Se utiliza para _colocar_ o _drenar_ grandes _cuerpos fluidos_ en el mundo", - "block.create.hose_pulley.tooltip.condition1": "Cuando se alimenta por cinética", - "block.create.hose_pulley.tooltip.behaviour1": "_Sube_ o _baja_ la manguera, la ubicación de la manguera determina hasta qué _altura de extracción_ o _llenado_ actuará.", - "block.create.hose_pulley.tooltip.condition2": "Cuando los fluidos se extraen de la polea", - "block.create.hose_pulley.tooltip.behaviour2": "Comienza a _tomar bloques de fluidos_ del cuerpo al que se bajó el extremo de la manguera. Los cuerpos muy _grandes_ de fluidos se _considerarán infinitos_.", - "block.create.hose_pulley.tooltip.condition3": "Cuando los fluidos son empujados a la polea", - "block.create.hose_pulley.tooltip.behaviour3": "Comienza a _llenar de fluido_ el mundo hasta la _altura_ de los extremos de la _manguera_", - - "block.create.fluid_tank.tooltip": "TANQUE DE FLUIDOS", - "block.create.fluid_tank.tooltip.summary": "Almacena todos tus _líquidos_ favoritos. Escala en anchura y altura.", - "block.create.fluid_tank.tooltip.condition1": "Cuando se hace click derecho con la Llave Inglesa", - "block.create.fluid_tank.tooltip.behaviour1": "Cambia la ventana opcional", - - "block.create.creative_fluid_tank.tooltip": "TANQUE DE FLUIDOS CREATIVO", - "block.create.creative_fluid_tank.tooltip.summary": "Este _Tanque de Fluidos_ permite la replicación infinita de cualquier Fluido. Escala en anchura y altura.", - "block.create.creative_fluid_tank.tooltip.condition1": "Cuando hay fluido en el tanque", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Todo lo que se _extraiga_ de este tanque proporcionará un _suministro ilimitado_ del fluido especificado. Los fluidos _insertados_ en este tanque serán _evitados._", - "block.create.creative_fluid_tank.tooltip.condition2": "Cuando se hace clic derecho con una Llave Inglesa", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Cambia la ventana opcional", - - "block.create.fluid_valve.tooltip": "VALVULA DE FLUIDOS", - "block.create.fluid_valve.tooltip.summary": "Detiene el flujo de un fluido por una tubería", - "block.create.fluid_valve.tooltip.condition1": "Flujo controlable", - "block.create.fluid_valve.tooltip.behaviour1": "La _fuerza de rotación_ aplicada obligará a la _válvula_ a cerrarse, cesando el flujo de _fluidos_. Invierta la dirección de la _fuerza de rotación_ para volver a abrir la válvula", - - "block.create.mechanical_pump.tooltip": "BOMBA MECÁNICA", - "block.create.mechanical_pump.tooltip.summary": "Toma la _fuerza de rotación_ y la utiliza para mover el _fluido_ a lo largo de un _tubo_. Tiene un rango máximo de efecto en ambas direcciones. (16 bloques por defecto)", - "block.create.mechanical_pump.tooltip.condition1": "Flujo de fluido", - "block.create.mechanical_pump.tooltip.behaviour1": "La _fuerza de rotación_ aplicada crea una presión que obliga al _fluido_ a pasar por la red de _tuberías_. Invierte la dirección de la _fuerza de rotación_ para cambiar la dirección en la que fluye el _fluido_", - "block.create.mechanical_pump.tooltip.control1": "Pulsando con el botón derecho del ratón con la Llave Inglesa", - "block.create.mechanical_pump.tooltip.action1": "Invierte la dirección de la _bomba_, cambiando la dirección por defecto del flujo", - - "block.create.smart_fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS INTELIGENTE", - "block.create.smart_fluid_pipe.tooltip.summary": "Una _tubería de fluidos_ con un filtro. Puede especificar qué _fluidos_ pasan por ella", - "block.create.smart_fluid_pipe.tooltip.condition1": "Cuando se introducen fluidos en ella", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Las tuberías inteligentes que reciban fluidos que no coincidan con su filtro bloquearán el flujo", - "block.create.smart_fluid_pipe.tooltip.condition2": "Cuando es adyacente a un contenedor de fluido", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Las tuberías inteligentes que _inicien_ un _flujo_ desde cualquier contenedor sólo extraerán fluidos que _coincidan_ con su _filtro._", - - "block.create.spout.tooltip": "SURTIDOR", - "block.create.spout.tooltip.summary": "Un inyector para rellenar tus elementos de _fluidos._", - "block.create.spout.tooltip.condition1": "Transferencia de fluidos", - "block.create.spout.tooltip.behaviour1": "Cuando se coloca un _contenedor de fluidos_ como un _cubo_ o una _botella_ debajo, el caño intentará rellenarlo con su propio _fluido_ almacenado", - "block.create.spout.tooltip.condition2": "Automatización de fluidos", - "block.create.spout.tooltip.behaviour2": "El caño colocado encima de una _cinta_ o _depósito_ reaccionará automáticamente con un contenedor de fluidos_ que pase por debajo", - - "block.create.item_drain.tooltip": "DRENADOR DE ELEMENTOS", - "block.create.item_drain.tooltip.summary": "Un depósito rallado para vaciar tus _artículos fluidos._", - "block.create.item_drain.tooltip.condition1": "Transferencia de fluidos", - "block.create.item_drain.tooltip.behaviour1": "Cuando un _contenedor de fluidos_, como un _cubo_ o una _botella_, se inserta desde el lateral, el desagüe intentará vaciarlo en su propio _contenedor de fluidos_. El artículo será entonces expulsado por el lado opuesto", - - "item.create.wand_of_symmetry.tooltip": "VARITA DE SIMETRÍA", - "item.create.wand_of_symmetry.tooltip.summary": "Refleja perfectamente la colocación de bloques en los planos configurados", - "item.create.wand_of_symmetry.tooltip.condition1": "Mientras está en el inventario rápido", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Permanece activo", - "item.create.wand_of_symmetry.tooltip.control1": "Click derecho en el suelo", - "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _Mueve_ el Espejo", - "item.create.wand_of_symmetry.tooltip.control2": "Click derecho en el aire", - "item.create.wand_of_symmetry.tooltip.action2": "_Quita_ el Espejo activo", - "item.create.wand_of_symmetry.tooltip.control3": "Click derecho mientras se agacha", - "item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz de Configuración_", - - "item.create.handheld_worldshaper.tooltip": "WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "Práctica herramienta para crear _paisajes_ y _características del terreno_", - "item.create.handheld_worldshaper.tooltip.control1": "Click izquierdo en un bloque", - "item.create.handheld_worldshaper.tooltip.action1": "Establece los bloques colocados por la herramienta en el bloque objetivo", - "item.create.handheld_worldshaper.tooltip.control2": "Click derecho en un bloque", - "item.create.handheld_worldshaper.tooltip.action2": "Aplica el _pincel_ y la _herramienta_ actualmente seleccionadas en el lugar deseado.", - "item.create.handheld_worldshaper.tooltip.control3": "Click derecho mientras se agacha", - "item.create.handheld_worldshaper.tooltip.action3": "Abre la _Interfaz de Configuración_", - - "item.create.tree_fertilizer.tooltip": "FERTILIZANTE PARA ÁRBOLES", - "item.create.tree_fertilizer.tooltip.summary": "Una potente combinación de minerales adecuada para acelerar el crecimiento de los tipos de árboles más comunes", - "item.create.tree_fertilizer.tooltip.condition1": "Cuando se utiliza en un árbol joven", - "item.create.tree_fertilizer.tooltip.behaviour1": "Hace crecer los árboles _independientemente_ de sus condiciones de _espacio_", - - "item.create.extendo_grip.tooltip": "AGARRE EXTENDIDO", - "item.create.extendo_grip.tooltip.summary": "¡Boioioing! Aumenta enormemente la _distancia de alcance_ del portador", - "item.create.extendo_grip.tooltip.condition1": "Cuando está fuera de la mano", - "item.create.extendo_grip.tooltip.behaviour1": "Aumenta la _distancia de alcance_ de los objetos usados en la _mano principal_", - - "item.create.filter.tooltip": "FILTRO", - "item.create.filter.tooltip.summary": "Controla las salidas_ y _entradas_ de los dispositivos logísticos con más _precisión_, comparándolas con un _conjunto de elementos_ o varios _filtros anidados_", - "item.create.filter.tooltip.condition1": "Cuando está en la ranura del filtro", - "item.create.filter.tooltip.behaviour1": "Controla_ el flujo del elemento según su _configuración_", - "item.create.filter.tooltip.condition2": "Cuando se hace clic derecho", - "item.create.filter.tooltip.behaviour2": "Abre la interfaz de _configuración_", - - "item.create.attribute_filter.tooltip": "FILTRO DE ATRIBUTOS", - "item.create.attribute_filter.tooltip.summary": "Controla las salidas_ y las _entradas_ de los dispositivos logísticos con más _precisión_, comparándolas con un _conjunto de _atributos_ y _categorías_ de artículos", - "item.create.attribute_filter.tooltip.condition1": "Cuando está en la ranura del filtro", - "item.create.attribute_filter.tooltip.behaviour1": "Controla el flujo del elemento según su _configuración_", - "item.create.attribute_filter.tooltip.condition2": "Cuando se hace clic derecho", - "item.create.attribute_filter.tooltip.behaviour2": "Abre la interfaz de _configuración_", - - "item.create.empty_schematic.tooltip": "ESQUEMA VACÍO", - "item.create.empty_schematic.tooltip.summary": "Se utiliza como ingrediente de las recetas y para escribir en la _tabla de esquemas_", - - "item.create.schematic.tooltip": "ESQUEMA", - "item.create.schematic.tooltip.summary": "Contiene una estructura para ser posicionada y colocada en el mundo. Posiciona el holograma como se desee y utiliza un _Esquematicannon_ para construirlo", - "item.create.schematic.tooltip.condition1": "Cuando se mantiene", - "item.create.schematic.tooltip.behaviour1": "Se puede posicionar utilizando las herramientas en pantalla", - "item.create.schematic.tooltip.control1": "Click derecho mientras se agacha", - "item.create.schematic.tooltip.action1": "Abre una _Interfaz_ para introducir las _Coordenadas_ exactas", - - "item.create.schematic_and_quill.tooltip": "ESQUEMA Y PLUMA", - "item.create.schematic_and_quill.tooltip.summary": "Se utiliza para guardar una estructura de tu mundo en un archivo .nbt", - "item.create.schematic_and_quill.tooltip.condition1": "Paso 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Selecciona dos puntos de esquina usando click derecho", - "item.create.schematic_and_quill.tooltip.condition2": "Paso 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Rueda del ratón_ en las caras para ajustar el tamaño. Click derecho de nuevo para guardar", - "item.create.schematic_and_quill.tooltip.control1": "Click derecho", - "item.create.schematic_and_quill.tooltip.action1": "Seleccionar un punto de esquina / confirmar guardar", - "item.create.schematic_and_quill.tooltip.control2": "Al mantener Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Seleccionar puntos en _medio del aire_. Rueda del ratón para ajustar la distancia", - "item.create.schematic_and_quill.tooltip.control3": "Click derecho mientras se agacha", - "item.create.schematic_and_quill.tooltip.action3": "Reinicia_ y elimina la selección", - - "block.create.schematicannon.tooltip": "ESQUEMATICAÑÓN", - "block.create.schematicannon.tooltip.summary": "Dispara bloques para recrear un _Esquema_ desplegado en el Mundo. Utiliza elementos de los inventarios adyacentes y _Pólvora_ como combustible.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "TABLA DE ESQUEMAS", - "block.create.schematic_table.tooltip.summary": "Escribe los esquemas guardados en un _esquema vacío_", - "block.create.schematic_table.tooltip.condition1": "Cuando se da un esquema vacío", - "block.create.schematic_table.tooltip.behaviour1": "Carga un archivo elegido de la carpeta de esquemas", - - "item.create.goggles.tooltip": "GAFAS DEL INGENIERO", - "item.create.goggles.tooltip.summary": "Un par de gafas para aumentar tu visión con útil información _cinética_", - "item.create.goggles.tooltip.condition1": "Cuando se llevan puestas", - "item.create.goggles.tooltip.behaviour1": "Muestra _indicadores de color_ correspondientes al _Nivel de velocidad_ de un componente cinético colocado, así como el _Impacto de estrés_ y la _Capacidad_ de los componentes individuales.", - "item.create.goggles.tooltip.condition2": "Al mirar el medidor", - "item.create.goggles.tooltip.behaviour2": "Muestra información detallada sobre _Velocidad_ o _Estrés_ de la red a la que está conectado el medidor", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "LLAVE INGLESA", - "item.create.wrench.tooltip.summary": "Una herramienta útil para trabajar en artilugios cinéticos. Se puede utilizar para _Rotar_, _Desmantelar_ y para _Configurar_ componentes", - "item.create.wrench.tooltip.control1": "Click con el botón derecho en un bloque cinético", - "item.create.wrench.tooltip.action1": "_Rota los componentes_ hacia o desde la cara con la que ha interactuado", - "item.create.wrench.tooltip.control2": "Click derecho mientras te agachas", - "item.create.wrench.tooltip.action2": "Desmonta los componentes cinéticos_ y los devuelve a _tu inventario_", - - "block.create.nozzle.tooltip": "BOQUILLA", - "block.create.nozzle.tooltip.summary": "Se acopla a la parte delantera de un _ventilador revestido_ para distribuir su efecto sobre las entidades en _todas las direcciones_", - - "block.create.cuckoo_clock.tooltip": "RELOJ DE CUCO", - "block.create.cuckoo_clock.tooltip.summary": "Fina artesanía para _decorar_ un espacio y _contar el tiempo_", - "block.create.cuckoo_clock.tooltip.condition1": "Cuando es alimentado por cinética", - "block.create.cuckoo_clock.tooltip.behaviour1": "Muestra la _hora actual_ y toca una melodía dos veces al día. Se activa_ una vez al _mediodía_ y al anochecer, en cuanto _los jugadores pueden dormir_", - - "block.create.turntable.tooltip": "PLATAFORMA GIRATORIA", - "block.create.turntable.tooltip.summary": "Convierte la _fuerza de rotación_ en un refinado mareo", - - "block.create.portable_fluid_interface.tooltip": "INTERFAZ DE FLUIDO PORTÁTIL", - "block.create.portable_fluid_interface.tooltip.summary": "Punto de intercambio portátil para _mover fluidos_ hacia y desde una _estructura_ movida por un pistón, rodamiento, vagoneta o polea. Para cumplirse dos interfaces tienen que _enfrentarse_ y estar separadas _1-2 bloques_", - "block.create.portable_fluid_interface.tooltip.condition1": "Mientras se mueve", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Interactúa con las _interfaces de almacenamiento portátiles_ estacionarias para transferir fluidos hacia o desde el artilugio. Las tuberías que se inserten en la _interfaz estacionaria_ o se extraigan de ella interactuarán con los depósitos del artilugio _directamente._ La estructura se paralizará brevemente mientras se intercambian fluidos.", - "block.create.portable_fluid_interface.tooltip.condition2": "Cuando se alimenta con Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "_Desconecta_ cualquier conexión activa inmediatamente", - - "block.create.stockpile_switch.tooltip": "INTERRUPTOR DE ACOPIO", - "block.create.stockpile_switch.tooltip.summary": "Activa una señal de Redstone en función de la cantidad de _Artículos almacenados_ en el Contenedor adjunto. Viene con un práctico filtro. A diferencia de un _Comparador,_ el _Interruptor de acopio_ permite la configuración de _Umbrales,_ a partir de los cuales se invierten las señales", - "block.create.stockpile_switch.tooltip.condition1": "Cuando haces click derecho", - "block.create.stockpile_switch.tooltip.behaviour1": "Abre la _Interfaz de Configuración_", - - "block.create.content_observer.tooltip": "OBSERVADOR DE CONTENIDO", - "block.create.content_observer.tooltip.summary": "_Detecta artículos_ dentro de _contenedores_ y _transportadores_ que coinciden con un _filtro_ configurado. Mientras el _inventario_, la _cinta_ o la _canaleta_ observados contengan_ un artículo que coincida, este componente emitirá una _señal de Redstone_. Cuando un _túnel observado transfiere_ un artículo coincidente, este componente emitirá un _Pulso de Redstone_", - - "block.create.adjustable_crate.tooltip": "CAJA AJUSTABLE", - "block.create.adjustable_crate.tooltip.summary": "Este _Contenedor de Artículos_ permite el control manual de su capacidad. Puede contener hasta _16 pilas_ de cualquier objeto. Soporta _Comparadores de Redstone_", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "CAJA CREATIVA", - "block.create.creative_crate.tooltip.summary": "Este _Contenedor de Almacenamiento_ permite la replicación infinita de cualquier elemento. Colócalo junto a un _Schematicannon_ para eliminar cualquier requisito de material", - "block.create.creative_crate.tooltip.condition1": "Cuando el artículo está en la ranura del filtro", - "block.create.creative_crate.tooltip.behaviour1": "Todo lo que se _extraiga_ de este contenedor proporcionará un _suministro ilimitado_ del elemento especificado. Los elementos _insertados_ en esta caja serán _evitados._", - - "block.create.controller_rail.tooltip": "RAÍL DE CONTROL", - "block.create.controller_rail.tooltip.summary": "Un _raíl energizado unidireccional_ capaz de _controlar con precisión_ la _velocidad de movimiento_ de una vagoneta", - "block.create.controller_rail.tooltip.condition1": "Cuando es impulsado por Redstone", - "block.create.controller_rail.tooltip.behaviour1": "_Acelera_ o _Desacelera_ pasando _vagonetas_ correspondientes a la _fuerza de la señal_. Propaga la energía de Redstone a los Raíles de control adyacentes. Al alimentar dos Raíles de control con diferentes intensidades, los carriles entre ellos interpolarán su señal", - - "item.create.sand_paper.tooltip": "PAPEL DE LIJA", - "item.create.sand_paper.tooltip.summary": "Un papel rugoso que se puede utilizar para _pulir materiales_. Se puede aplicar automáticamente con el Desplegador", - "item.create.sand_paper.tooltip.condition1": "Cuando se usa", - "item.create.sand_paper.tooltip.behaviour1": "Aplica el pulido a los objetos sostenidos en la _mano libre_ o tirados en el _suelo_ cuando se _miran_", - - "item.create.builders_tea.tooltip": "TÉ DEL CONSTRUCTOR", - "item.create.builders_tea.tooltip.summary": "La bebida perfecta para empezar el día- _Motivante_ y _Saturante._", - - "item.create.refined_radiance.tooltip": "RESPLANDOR REFINADO", - "item.create.refined_radiance.tooltip.summary": "Material cromático forjado a partir de _luz absorbida_", - - "item.create.shadow_steel.tooltip": "ACERO SOMBRÍO", - "item.create.shadow_steel.tooltip.summary": "Un material cromático forjado _en el vacío_", - - "item.create.minecart_coupling.tooltip": "ENSAMBLADOR DE VAGONETAS", - "item.create.minecart_coupling.tooltip.summary": "_Encadena_ todas tus _Vagonetas_ o _Artilugios de vagoneta_ para formar un majestuoso Tren", - "item.create.minecart_coupling.tooltip.condition1": "Cuando se utiliza en Vagonetas", - "item.create.minecart_coupling.tooltip.behaviour1": "_Acopla_ dos Vagonetas, intentando mantenerlas a una _distancia constante_ mientras se mueven", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "¡Trabajo en curso!", - "create.tooltip.randomWipDescription0": "Por favor, mantenga este artículo fuera del alcance de los niños", - "create.tooltip.randomWipDescription1": "Un bebé panda muere cada vez que usas este objeto. Cada vez. Cada vez", - "create.tooltip.randomWipDescription2": "Úsalo bajo tu propio riesgo", - "create.tooltip.randomWipDescription3": "Este no es el objeto que buscas, *mueve los dedos* por favor, dispérsate", - "create.tooltip.randomWipDescription4": "Este objeto se autodestruirá en 10 segundos. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Créeme, es inútil", - "create.tooltip.randomWipDescription6": "Al utilizar este elemento, aceptas nuestra exención de responsabilidad y estás de acuerdo con sus términos", - "create.tooltip.randomWipDescription7": "Este quizás no es para ti. ¿Qué tal ese?", - "create.tooltip.randomWipDescription8": "Úsalo y arrepiéntete de tu decisión inmediatamente", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/es_mx.json b/src/generated/resources/assets/create/lang/unfinished/es_mx.json deleted file mode 100644 index ab2a1d3c4..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/es_mx.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 1292", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "Ventana de Acacia", - "block.create.acacia_window_pane": "Panel de Ventana de Acacia", - "block.create.adjustable_chain_gearshift": "Cambio Ajustable de Velocidad de Cadena", - "block.create.adjustable_crate": "Caja Ajustable", - "block.create.adjustable_pulse_repeater": "Repetidor de Pulso Ajustable", - "block.create.adjustable_repeater": "Repetidor Ajustable", - "block.create.analog_lever": "Palanca Analogica", - "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", - "block.create.andesite_bricks": "Ladrillos de Andesita", - "block.create.andesite_bricks_slab": "Losa de Ladrillos de Andesita", - "block.create.andesite_bricks_stairs": "Escaleras de Ladrillos de Andesita", - "block.create.andesite_bricks_wall": "Pared de Ladrillos de Andesita", - "block.create.andesite_casing": "Carcasa de Andesita", - "block.create.andesite_cobblestone": "Piedra Labrada de Andesita", - "block.create.andesite_cobblestone_slab": "Losa de Piedra Labrada de Andesita", - "block.create.andesite_cobblestone_stairs": "Escaleras de Piedra Labrada de Andesita", - "block.create.andesite_cobblestone_wall": "Pared de Piedra Labrada de Andesita", - "block.create.andesite_encased_shaft": "Eje empotrado de Andesita", - "block.create.andesite_funnel": "Embudo de Andesita", - "block.create.andesite_pillar": "Pilar de Andesita", - "block.create.andesite_tunnel": "Túnel de Andesita", - "block.create.basin": "Cuenco", - "block.create.belt": "Correa", - "block.create.birch_window": "Ventana de Abedul", - "block.create.birch_window_pane": "Panel de Ventana de Abedul", - "block.create.black_sail": "Vela Negra", - "block.create.black_seat": "Asiento Negro", - "block.create.black_valve_handle": "Manija de Válvula Negra", - "block.create.blaze_burner": "Quemador de Blaze", - "block.create.blue_sail": "Vela Azul", - "block.create.blue_seat": "Asiento Azul", - "block.create.blue_valve_handle": "Manija de Válvula Azul", - "block.create.brass_belt_funnel": "UNLOCALIZED:Brass Belt Funnel", - "block.create.brass_block": "Bloque de Latón", - "block.create.brass_casing": "Carcasa de Latón", - "block.create.brass_encased_shaft": "Eje empotrado de Latón", - "block.create.brass_funnel": "Embudo de Latón", - "block.create.brass_tunnel": "Túnel de Latón", - "block.create.brown_sail": "Vela Café", - "block.create.brown_seat": "Asiento Café ", - "block.create.brown_valve_handle": "Manija de Válvula Café", - "block.create.cart_assembler": "Ensamblador de Vagonetas", - "block.create.chiseled_dark_scoria": "Escoria Oscura Grabada", - "block.create.chiseled_dolomite": "Dolomita Grabada", - "block.create.chiseled_gabbro": "Gabro Grabado", - "block.create.chiseled_limestone": "Caliza Grabada", - "block.create.chiseled_scoria": "Escoria Grabada", - "block.create.chiseled_weathered_limestone": "Caliza Meteorizada Grabada", - "block.create.chocolate": "Chocolate", - "block.create.chute": "Vertedor", - "block.create.clockwork_bearing": "Rodamiento de Reloj", - "block.create.clutch": "Embrague", - "block.create.cogwheel": "Rueda Dentada", - "block.create.content_observer": "Observador de Contenido", - "block.create.controller_rail": "Vía de Control", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "Bloque de Cobre", - "block.create.copper_casing": "Carcasa de Cobre", - "block.create.copper_ore": "Mineral de Cobre", - "block.create.copper_shingles": "Techado de Cobre", - "block.create.copper_tiles": "Baldosas de Cobre", - "block.create.copper_valve_handle": "Manija de Válvula de Cobre", - "block.create.creative_crate": "Caja del Creativo", - "block.create.creative_fluid_tank": "Tanque de Fluido del Creativo", - "block.create.creative_motor": "Motor del Creativo", - "block.create.crimson_window": "Ventana Carmesí", - "block.create.crimson_window_pane": "Panel de Ventana Carmesí", - "block.create.crushing_wheel": "Rueda Trituradora", - "block.create.crushing_wheel_controller": "UNLOCALIZED:Crushing Wheel Controller", - "block.create.cuckoo_clock": "Reloj Cuco", - "block.create.cyan_sail": "Vela Cian", - "block.create.cyan_seat": "Asiento Cian", - "block.create.cyan_valve_handle": "Manija de Válvula Cian", - "block.create.dark_oak_window": "Ventana de Roble Oscuro", - "block.create.dark_oak_window_pane": "Panel de Ventana de Roble Oscuro", - "block.create.dark_scoria": "Escoria Oscura", - "block.create.dark_scoria_bricks": "Ladrillos de Escoria Oscura", - "block.create.dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura", - "block.create.dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura", - "block.create.dark_scoria_bricks_wall": "Pared de Ladrillos de Escoria Oscura", - "block.create.dark_scoria_cobblestone": "Piedra Labrada de Escoria Oscura", - "block.create.dark_scoria_cobblestone_slab": "Losa de Piedra Labrada de Escoria Oscura", - "block.create.dark_scoria_cobblestone_stairs": "Escaleras de Piedra Labrada de Escoria Oscura", - "block.create.dark_scoria_cobblestone_wall": "Pared de Piedra Labrada de Escoria Oscura", - "block.create.dark_scoria_pillar": "Pilar de Escoria Oscura", - "block.create.deployer": "Desplegador", - "block.create.depot": "Depósito", - "block.create.diorite_bricks": "Ladrillos de Diorita", - "block.create.diorite_bricks_slab": "Losa de Ladrillos de Diorita", - "block.create.diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita", - "block.create.diorite_bricks_wall": "Pared de Ladrillos de Diorita", - "block.create.diorite_cobblestone": "Piedra Labrada de Diorita", - "block.create.diorite_cobblestone_slab": "Losa de Piedra Labrada de Diorita", - "block.create.diorite_cobblestone_stairs": "Escaleras de Piedra Labrada de Diorita", - "block.create.diorite_cobblestone_wall": "Pared de Piedra Labrada de Diorita", - "block.create.diorite_pillar": "Pared de Diorita", - "block.create.dolomite": "Dolomita", - "block.create.dolomite_bricks": "Ladrillos de Dolomita", - "block.create.dolomite_bricks_slab": "Losa de Ladrillos de Dolomita", - "block.create.dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita", - "block.create.dolomite_bricks_wall": "Pared de Ladrillos de Dolomita", - "block.create.dolomite_cobblestone": "Piedra Labrada de Dolomita", - "block.create.dolomite_cobblestone_slab": "Losa de Piedra Labrada de Dolomita", - "block.create.dolomite_cobblestone_stairs": "Escaleras de Piedra Labrada de Dolomita", - "block.create.dolomite_cobblestone_wall": "Pared de Piedra Labrada de Dolomita", - "block.create.dolomite_pillar": "Pilar de Dolomita", - "block.create.encased_chain_drive": "Transmisión de Cadena Empotrada", - "block.create.encased_fan": "Ventilador Acoplado", - "block.create.encased_fluid_pipe": "Tubería de Fluidos Recubierta", - "block.create.fancy_andesite_bricks": "Ladrillos de Andesita Elegantes", - "block.create.fancy_andesite_bricks_slab": "Losa de Ladrillos de Andesita Elegantes", - "block.create.fancy_andesite_bricks_stairs": "Escaleras de Ladrillos de Andesita Elegantes", - "block.create.fancy_andesite_bricks_wall": "Pared de Ladrillos de Andesita Elegantes", - "block.create.fancy_dark_scoria_bricks": "Ladrillos de Escoria Oscura Elegantes", - "block.create.fancy_dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura Elegantes", - "block.create.fancy_dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura Elegantes", - "block.create.fancy_dark_scoria_bricks_wall": "Pared de Ladrillos de Escoria Oscura Elegantes", - "block.create.fancy_diorite_bricks": "Ladrillos de Diorita Elegantes", - "block.create.fancy_diorite_bricks_slab": "Losa de Ladrillos de Diorita Elegantes", - "block.create.fancy_diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita Elegantes", - "block.create.fancy_diorite_bricks_wall": "Pared de Ladrillos de Diorita Elegantes", - "block.create.fancy_dolomite_bricks": "Ladrillos de Dolomita Elegantes", - "block.create.fancy_dolomite_bricks_slab": "Losa de Ladrillos de Dolomita Elegantes", - "block.create.fancy_dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita Elegantes", - "block.create.fancy_dolomite_bricks_wall": "Pared de Ladrillos de Dolomita Elegantes", - "block.create.fancy_gabbro_bricks": "Ladrillos de Gabro Elegantes", - "block.create.fancy_gabbro_bricks_slab": "Losa Ladrillos de Gabro Elegantes", - "block.create.fancy_gabbro_bricks_stairs": "Escaleras Ladrillos de Gabro Elegantes", - "block.create.fancy_gabbro_bricks_wall": "Pared de Ladrillos de Gabro Elegantes", - "block.create.fancy_granite_bricks": "Ladrillos de Granito Elegantes", - "block.create.fancy_granite_bricks_slab": "Losa de Ladrillos de Granito Elegantes", - "block.create.fancy_granite_bricks_stairs": "Escaleras de Ladrillos de Granito Elegantes", - "block.create.fancy_granite_bricks_wall": "Pared de Ladrillos de Granito Elegantes", - "block.create.fancy_limestone_bricks": "Ladrillos de Caliza Elegantes", - "block.create.fancy_limestone_bricks_slab": "Losa de Ladrillos de Caliza Elegantes", - "block.create.fancy_limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza Elegantes", - "block.create.fancy_limestone_bricks_wall": "Pared de Ladrillos de Caliza Elegantes", - "block.create.fancy_scoria_bricks": "Ladrillos de Escoria Elegantes", - "block.create.fancy_scoria_bricks_slab": "Losa de Ladrillos de Escoria Elegantes", - "block.create.fancy_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Elegantes", - "block.create.fancy_scoria_bricks_wall": "Pared de Ladrillos de Escoria Elegantes", - "block.create.fancy_weathered_limestone_bricks": "Ladrillos de Caliza Meteorizada Elegantes", - "block.create.fancy_weathered_limestone_bricks_slab": "Losa de Ladrillos de Caliza Meteorizada Elegantes", - "block.create.fancy_weathered_limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza Meteorizada Elegantes", - "block.create.fancy_weathered_limestone_bricks_wall": "Pared de Ladrillos de Caliza Meteorizada Elegantes", - "block.create.fluid_pipe": "Tubería de Fluidos", - "block.create.fluid_tank": "Tanque de Fluidos", - "block.create.fluid_valve": "Válvula de Fluidos", - "block.create.flywheel": "Rueda de Inercia", - "block.create.framed_glass": "Vidrio Enmarcado", - "block.create.framed_glass_pane": "Panel de Vidrio Enmarcado", - "block.create.furnace_engine": "Motor de Horno", - "block.create.gabbro": "Gabro", - "block.create.gabbro_bricks": "Ladrillos de Gabro", - "block.create.gabbro_bricks_slab": "Losa de Ladrillos de Gabro", - "block.create.gabbro_bricks_stairs": "Escaleras de Ladrillos de Gabro", - "block.create.gabbro_bricks_wall": "Pared de Ladrillos de Gabro", - "block.create.gabbro_cobblestone": "Piedra Labrada de Gabro", - "block.create.gabbro_cobblestone_slab": "Losa de Piedra Labrada de Gabro", - "block.create.gabbro_cobblestone_stairs": "Escaleras de Piedra Labrada de Gabro", - "block.create.gabbro_cobblestone_wall": "Pared de Piedra Labrada de Gabro", - "block.create.gabbro_pillar": "Pilar de Gabro", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft", - "block.create.gearbox": "Transmisión", - "block.create.gearshift": "Cambio de Marcha", - "block.create.glass_fluid_pipe": "Tubería de Fluidos de Vidrio", - "block.create.granite_bricks": "Ladrillos de Granito", - "block.create.granite_bricks_slab": "Losa de Ladrillos de Granito", - "block.create.granite_bricks_stairs": "Escaleras de Ladrillos de Granito", - "block.create.granite_bricks_wall": "Pared de Ladrillos de Granito", - "block.create.granite_cobblestone": "Piedra Labrada de Granito", - "block.create.granite_cobblestone_slab": "Losa de Piedra Labrada de Granito", - "block.create.granite_cobblestone_stairs": "Escaleras de Piedra Labrada de Granito", - "block.create.granite_cobblestone_wall": "Pared de Piedra Labrada de Granito", - "block.create.granite_pillar": "Pilar de Granito", - "block.create.gray_sail": "Vela Gris", - "block.create.gray_seat": "Asiento Gris", - "block.create.gray_valve_handle": "Manija de Válvula Gris", - "block.create.green_sail": "Vela Verde", - "block.create.green_seat": "Asiento Verde", - "block.create.green_valve_handle": "Manija de Válvula Verde", - "block.create.hand_crank": "Manivela", - "block.create.honey": "Miel", - "block.create.horizontal_framed_glass": "Vidrio Enmarcado Horizontal", - "block.create.horizontal_framed_glass_pane": "Panel de Vidrio Enmarcado Horizontal", - "block.create.hose_pulley": "Polea con Manguera", - "block.create.item_drain": "Extractor de Fluidos", - "block.create.jungle_window": "Ventana de Jungla", - "block.create.jungle_window_pane": "Panel de Ventana de Jungla", - "block.create.large_cogwheel": "Rueda Dentada Grande", - "block.create.layered_andesite": "Andesita en Capas", - "block.create.layered_dark_scoria": "Escoria Oscura en Capas", - "block.create.layered_diorite": "Diorita en Capas", - "block.create.layered_dolomite": "Dolomita en Capas", - "block.create.layered_gabbro": "Gabro en Capas", - "block.create.layered_granite": "Granito en Capas", - "block.create.layered_limestone": "Caliza en Capas", - "block.create.layered_scoria": "Escoria en Capas", - "block.create.layered_weathered_limestone": "Caliza Meteorizada en Capas", - "block.create.light_blue_sail": "Vela Azul Claro", - "block.create.light_blue_seat": "Asiento Azul Claro", - "block.create.light_blue_valve_handle": "Manija de Válvula Azul Claro", - "block.create.light_gray_sail": "Vela Gris Claro", - "block.create.light_gray_seat": "Asiento Gris Claro", - "block.create.light_gray_valve_handle": "Manija de Válvula Gris Claro", - "block.create.lime_sail": "Vela Verde Lima", - "block.create.lime_seat": "Asiento Verde Lima", - "block.create.lime_valve_handle": "Manija de Válvula Verde Lima", - "block.create.limesand": "Arena de Caliza", - "block.create.limestone": "Caliza", - "block.create.limestone_bricks": "Ladrillos de Caliza", - "block.create.limestone_bricks_slab": "Losa de Ladrillos de Caliza", - "block.create.limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza", - "block.create.limestone_bricks_wall": "Pared de Ladrillos de Caliza", - "block.create.limestone_cobblestone": "Piedra Labrada de Caliza", - "block.create.limestone_cobblestone_slab": "Losa de Piedra Labrada de Caliza", - "block.create.limestone_cobblestone_stairs": "Escaleras de Piedra Labrada de Caliza", - "block.create.limestone_cobblestone_wall": "Pared de Piedra Labrada de Caliza", - "block.create.limestone_pillar": "Pilar de Caliza", - "block.create.linear_chassis": "Chasis Lineal", - "block.create.lit_blaze_burner": "Quemador de Blaze Iluminado", - "block.create.magenta_sail": "Vela Magenta", - "block.create.magenta_seat": "Asiento Magenta", - "block.create.magenta_valve_handle": "Manija de Válvula Magenta", - "block.create.mechanical_arm": "Brazo Mecánico", - "block.create.mechanical_bearing": "Rodamiento Mecánico", - "block.create.mechanical_crafter": "Crafter Mecánico", - "block.create.mechanical_drill": "Taladro Mecánico", - "block.create.mechanical_harvester": "Cosechador Mecánico", - "block.create.mechanical_mixer": "Mezcladora Mecánica", - "block.create.mechanical_piston": "Pistón Mecánico", - "block.create.mechanical_piston_head": "Cabeza de Pistón Mecánico", - "block.create.mechanical_plough": "Arado Mecánico", - "block.create.mechanical_press": "Prensa Mecánica", - "block.create.mechanical_pump": "Bomba Mecánica", - "block.create.mechanical_saw": "Sierra Mecánica", - "block.create.metal_bracket": "Soporte de Metal", - "block.create.millstone": "Molino", - "block.create.minecart_anchor": "Ancla de Vagonetas", - "block.create.mossy_andesite": "Andesita Musgosa", - "block.create.mossy_dark_scoria": "Escoria Oscura Musgosa", - "block.create.mossy_diorite": "Diorita Musgosa", - "block.create.mossy_dolomite": "Dolomita Musgosa", - "block.create.mossy_gabbro": "Gabro Musgoso", - "block.create.mossy_granite": "Granito Musgoso", - "block.create.mossy_limestone": "Caliza Musgosa", - "block.create.mossy_scoria": "Escoria Musgosa", - "block.create.mossy_weathered_limestone": "Caliza Meteorizada Musgosa", - "block.create.mysterious_cuckoo_clock": "Reloj Cuco", - "block.create.natural_scoria": "Escoria Natural", - "block.create.nixie_tube": "Tubo Nixie", - "block.create.nozzle": "Boquilla", - "block.create.oak_window": "Ventana de Roble", - "block.create.oak_window_pane": "Panel de Ventana de Roble", - "block.create.orange_sail": "Vela Naranja", - "block.create.orange_seat": "Asiento Naranja", - "block.create.orange_valve_handle": "Manija de Válvula Naranja", - "block.create.ornate_iron_window": "Ventana Ornamentada", - "block.create.ornate_iron_window_pane": "Panel de Ventana Ornamentada", - "block.create.overgrown_andesite": "Andesita Descuidada", - "block.create.overgrown_dark_scoria": "Escoria Oscura Descuidada", - "block.create.overgrown_diorite": "Diorita Descuidada", - "block.create.overgrown_dolomite": "Dolomita Descuidada", - "block.create.overgrown_gabbro": "Gabro Descuidado", - "block.create.overgrown_granite": "Granito Descuidado", - "block.create.overgrown_limestone": "Caliza Descuidada", - "block.create.overgrown_scoria": "Escoria Descuidada", - "block.create.overgrown_weathered_limestone": "Caliza Meteorizada Descuidada", - "block.create.paved_andesite": "Andesita Pavimentada", - "block.create.paved_andesite_slab": "Losa de Andesita Pavimentada", - "block.create.paved_andesite_stairs": "Escaleras de Andesita Pavimentada", - "block.create.paved_andesite_wall": "Pared de Andesita Pavimentada", - "block.create.paved_dark_scoria": "Escoria Oscura Pavimentada", - "block.create.paved_dark_scoria_slab": "Losa de Escoria Oscura Pavimentada", - "block.create.paved_dark_scoria_stairs": "Escaleras de Escoria Oscura Pavimentada", - "block.create.paved_dark_scoria_wall": "Pared de Escoria Oscura Pavimentada", - "block.create.paved_diorite": "Diorita Pavimentada", - "block.create.paved_diorite_slab": "Losa de Diorita Pavimentada", - "block.create.paved_diorite_stairs": "Escaleras de Diorita Pavimentada", - "block.create.paved_diorite_wall": "Pared de Diorita Pavimentada", - "block.create.paved_dolomite": "Dolomita Pavimentada", - "block.create.paved_dolomite_slab": "Losa de Dolomita Pavimentada", - "block.create.paved_dolomite_stairs": "Escaleras de Dolomita Pavimentada", - "block.create.paved_dolomite_wall": "Pared de Dolomita Pavimentada", - "block.create.paved_gabbro": "Gabro Pavimentado", - "block.create.paved_gabbro_slab": "Losa de Gabro Pavimentado", - "block.create.paved_gabbro_stairs": "Escaleras de Gabro Pavimentado", - "block.create.paved_gabbro_wall": "Pared de Gabro Pavimentado", - "block.create.paved_granite": "Granito Pavimentado", - "block.create.paved_granite_slab": "Losa de Granito Pavimentado", - "block.create.paved_granite_stairs": "Escaleras de Granito Pavimentado", - "block.create.paved_granite_wall": "Pared de Granito Pavimentado", - "block.create.paved_limestone": "Caliza Pavimentada", - "block.create.paved_limestone_slab": "Losa de Caliza Pavimentada", - "block.create.paved_limestone_stairs": "Escaleras de Caliza Pavimentada", - "block.create.paved_limestone_wall": "Pared de Caliza Pavimentada", - "block.create.paved_scoria": "Escoria Pavimentada", - "block.create.paved_scoria_slab": "Losa de Escoria Pavimentada", - "block.create.paved_scoria_stairs": "Escaleras de Escoria Pavimentada", - "block.create.paved_scoria_wall": "Pared de Escoria Pavimentada", - "block.create.paved_weathered_limestone": "Caliza Meteorizada Pavimentada", - "block.create.paved_weathered_limestone_slab": "Losa de Caliza Meteorizada Pavimentada", - "block.create.paved_weathered_limestone_stairs": "Escaleras de Caliza Meteorizada Pavimentada", - "block.create.paved_weathered_limestone_wall": "Pared de Caliza Meteorizada Pavimentada", - "block.create.pink_sail": "Vela Rosa", - "block.create.pink_seat": "Asiento Rosa", - "block.create.pink_valve_handle": "Manija de Válvula Rosa", - "block.create.piston_extension_pole": "Poste de Extensión de Pistón", - "block.create.polished_dark_scoria": "Escoria Oscura Pulida", - "block.create.polished_dark_scoria_slab": "Losa de Escoria Oscura Pulida", - "block.create.polished_dark_scoria_stairs": "Escaleras de Escoria Oscura Pulida", - "block.create.polished_dark_scoria_wall": "Pared de Escoria Oscura Pulida", - "block.create.polished_dolomite": "Dolomita Pulida", - "block.create.polished_dolomite_slab": "Losa de Dolomita Pulida", - "block.create.polished_dolomite_stairs": "Escaleras de Dolomita Pulida", - "block.create.polished_dolomite_wall": "Pared de Dolomita Pulida", - "block.create.polished_gabbro": "Gabro Pulido", - "block.create.polished_gabbro_slab": "Losa de Gabro Pulido", - "block.create.polished_gabbro_stairs": "Escaleras de Gabro Pulido", - "block.create.polished_gabbro_wall": "Pared de Gabro Pulido", - "block.create.polished_limestone": "Caliza Pulida", - "block.create.polished_limestone_slab": "Losa de Caliza Pulida", - "block.create.polished_limestone_stairs": "Escaleras de Caliza Pulida", - "block.create.polished_limestone_wall": "Pared de Caliza Pulida", - "block.create.polished_scoria": "Escoria Pulida", - "block.create.polished_scoria_slab": "Losa de Escoria Pulida", - "block.create.polished_scoria_stairs": "Escaleras de Escoria Pulida", - "block.create.polished_scoria_wall": "Pared de Escoria Pulida", - "block.create.polished_weathered_limestone": "Caliza Meteorizada Pulida", - "block.create.polished_weathered_limestone_slab": "Losa de Escoria Pulida", - "block.create.polished_weathered_limestone_stairs": "Escaleras de Escoria Pulida", - "block.create.polished_weathered_limestone_wall": "Pared de Escoria Pulida", - "block.create.portable_fluid_interface": "Interfaz de Fluidos Portable", - "block.create.portable_storage_interface": "Interfaz de Almacenamiento Portable", - "block.create.powered_latch": "Cerradura Electrica", - "block.create.powered_toggle_latch": "Cerradura Electrica de Palanca", - "block.create.pulley_magnet": "Polea con Imán", - "block.create.pulse_repeater": "Repetidor de Pulso", - "block.create.purple_sail": "Vela Morada", - "block.create.purple_seat": "Asiento Morado", - "block.create.purple_valve_handle": "Manija de Válvula Morada", - "block.create.radial_chassis": "Chasis Radial", - "block.create.red_sail": "Vela Roja", - "block.create.red_seat": "Asiento Rojo", - "block.create.red_valve_handle": "Manija de Válvula Roja", - "block.create.redstone_contact": "Contacto de Redstone", - "block.create.redstone_link": "Enlace de Redstone", - "block.create.refined_radiance_casing": "Carcasa Radiante", - "block.create.reinforced_rail": "Vía Reforzada", - "block.create.rope": "Cuerda", - "block.create.rope_pulley": "Polea con Cuerda", - "block.create.rotation_speed_controller": "Controlador de Velocidad de Rotación", - "block.create.sail_frame": "Marco de Vela", - "block.create.schematic_table": "Mesa de Esquemas", - "block.create.schematicannon": "Esquemacañon", - "block.create.scoria": "Escoria", - "block.create.scoria_bricks": "Ladrillos de Escoria", - "block.create.scoria_bricks_slab": "Losa de Ladrillos de Escoria", - "block.create.scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria", - "block.create.scoria_bricks_wall": "Pared de Ladrillos de Escoria", - "block.create.scoria_cobblestone": "Piedra Labrada de Escoria", - "block.create.scoria_cobblestone_slab": "Losa de Piedra Labrada de Escoria", - "block.create.scoria_cobblestone_stairs": "Escaleras de Piedra Labrada de Escoria", - "block.create.scoria_cobblestone_wall": "Pared de Piedra Labrada de Escoria", - "block.create.scoria_pillar": "Pilar de Escoria", - "block.create.secondary_linear_chassis": "Chasis Lineal Secundario", - "block.create.sequenced_gearshift": "Cambio de Marcha Secuenciado", - "block.create.shadow_steel_casing": "Carcasa Sombría", - "block.create.shaft": "Eje", - "block.create.smart_chute": "UNLOCALIZED: Smart Chute", - "block.create.smart_fluid_pipe": "Tubería de Fluidos Inteligente", - "block.create.speedometer": "Velocímetro", - "block.create.spout": "Canaleta", - "block.create.spruce_window": "Ventana de Abeto", - "block.create.spruce_window_pane": "Panel de Ventana de Abeto", - "block.create.sticker": "UNLOCALIZED: Sticker", - "block.create.sticky_mechanical_piston": "Pistón Mecánico Pegajoso", - "block.create.stockpile_switch": "Interruptor de Pila", - "block.create.stressometer": "Estresómetro", - "block.create.tiled_glass": "Vidrio de Azulejos", - "block.create.tiled_glass_pane": "Panel de Vidrio de Azulejos", - "block.create.turntable": "Mesa Giratoria", - "block.create.vertical_framed_glass": "Vidrio Enmarcado Vertical", - "block.create.vertical_framed_glass_pane": "Panel de Vidrio Enmarcado Vertical", - "block.create.warped_window": "Ventana Distorsionada", - "block.create.warped_window_pane": "Panel de ventana Distorsionada", - "block.create.water_wheel": "Rueda Hidráulica", - "block.create.weathered_limestone": "Caliza Meteorizada", - "block.create.weathered_limestone_bricks": "Ladrillos de Caliza Meteorizada", - "block.create.weathered_limestone_bricks_slab": "Losa de Caliza Meteorizada", - "block.create.weathered_limestone_bricks_stairs": "Escaleras de Caliza Meteorizada", - "block.create.weathered_limestone_bricks_wall": "Pared de Caliza Meteorizada", - "block.create.weathered_limestone_cobblestone": "Piedra Labrada de Caliza Meteorizada", - "block.create.weathered_limestone_cobblestone_slab": "Losa de Piedra Labrada de Caliza Meteorizada", - "block.create.weathered_limestone_cobblestone_stairs": "Escaleras de Piedra Labrada de Caliza Meteorizada", - "block.create.weathered_limestone_cobblestone_wall": "Pared de Piedra Labrada de Caliza Meteorizada", - "block.create.weathered_limestone_pillar": "Pilar de Caliza Meteorizada", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", - "block.create.white_sail": "Vela Blanca", - "block.create.white_seat": "Asiento Blanco", - "block.create.white_valve_handle": "Manija de Válvula Blanca", - "block.create.windmill_bearing": "Rodamiento de Molino de Viento", - "block.create.wooden_bracket": "Soporte de Madera", - "block.create.yellow_sail": "Vela Amarilla", - "block.create.yellow_seat": "Asiento Amarillo", - "block.create.yellow_valve_handle": "Manija de Válvula Amarilla", - "block.create.zinc_block": "Bloque de Zinc", - "block.create.zinc_ore": "Mineral de Zinc", - "entity.create.contraption": "Artefacto", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", - "entity.create.seat": "Asiento", - "entity.create.stationary_contraption": "Artefacto Estacionario", - "entity.create.super_glue": "Super Pegamento", - "fluid.create.milk": "Leche", - "fluid.create.potion": "Poción", - "fluid.create.tea": "Té del Constructor", - "item.create.andesite_alloy": "Aleación de Andesita", - "item.create.attribute_filter": "Filtro por Atributos", - "item.create.bar_of_chocolate": "Barra de Chocolate", - "item.create.belt_connector": "Conector de Correa", - "item.create.blaze_cake": "Pastel de Blaze", - "item.create.blaze_cake_base": "Base de Pastel de Blaze", - "item.create.brass_hand": "Mano de Latón", - "item.create.brass_ingot": "Lingote de Latón", - "item.create.brass_nugget": "Pepita de Latón", - "item.create.brass_sheet": "Lámina de Latón", - "item.create.builders_tea": "Té del Constructor", - "item.create.chest_minecart_contraption": "Artefacto de Vagón con Cofre", - "item.create.chocolate_bucket": "Cubeta de Chocolate", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", - "item.create.chromatic_compound": "Compuesto Cromático", - "item.create.cinder_flour": "Ceniza Molida", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "Lingote de Cobre", - "item.create.copper_nugget": "Pepita de Cobre", - "item.create.copper_sheet": "Lámina de Cobre", - "item.create.crafter_slot_cover": "Cubierta de Ranura del Crafter", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "Mineral de Aluminio Molido", - "item.create.crushed_brass": "Latón Molido", - "item.create.crushed_copper_ore": "Mineral de Cobre Molido", - "item.create.crushed_gold_ore": "Mineral de Oro Molido", - "item.create.crushed_iron_ore": "Mineral de Hierro Molido", - "item.create.crushed_lead_ore": "Mineral de Plomo Molido", - "item.create.crushed_nickel_ore": "Mineral de Nickel Molido", - "item.create.crushed_osmium_ore": "Mineral de Osmio Molido", - "item.create.crushed_platinum_ore": "Mineral de Platino Molido", - "item.create.crushed_quicksilver_ore": "Mineral de Mercurio Molido", - "item.create.crushed_silver_ore": "Mineral de Plata Molido", - "item.create.crushed_tin_ore": "Mineral de Estaño Molido", - "item.create.crushed_uranium_ore": "Mineral de Uranio Molido", - "item.create.crushed_zinc_ore": "Mineral de Zinc Molido", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "Masa", - "item.create.electron_tube": "Válvula Electrónica", - "item.create.empty_blaze_burner": "Quemador de Blaze Vacío", - "item.create.empty_schematic": "Esquema Vacío", - "item.create.extendo_grip": "Brazo Extensor", - "item.create.filter": "Filtro", - "item.create.furnace_minecart_contraption": "Artefacto de Vagón con Horno", - "item.create.goggles": "Gafas de Protección para Ingenieros", - "item.create.golden_sheet": "Lámina de Oro", - "item.create.handheld_worldshaper": "Pistola de Manipulación de Mundo", - "item.create.honey_bucket": "Cubeta de Miel", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", - "item.create.integrated_circuit": "Circuito Integrado", - "item.create.iron_sheet": "Lámina de Hierro", - "item.create.lapis_sheet": "Lámina de Lapislázuli", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "Artefacto de Vagón", - "item.create.minecart_coupling": "Acoplamiento de Vagonetas", - "item.create.polished_rose_quartz": "Cuarzo Rosa Pulido", - "item.create.powdered_obsidian": "Polvo de Obsidiana", - "item.create.propeller": "Hélice", - "item.create.red_sand_paper": "Papel de Arena Roja", - "item.create.refined_radiance": "Radiancia Refinada", - "item.create.rose_quartz": "Cuarzo Rosa", - "item.create.sand_paper": "Papel de Arena", - "item.create.schematic": "Esquema", - "item.create.schematic_and_quill": "Esquema y Pluma", - "item.create.shadow_steel": "Acero Sombrío", - "item.create.super_glue": "Super Pegamento", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", - "item.create.tree_fertilizer": "Fertilizador de Árboles", - "item.create.vertical_gearbox": "Transmisión Vertical", - "item.create.wand_of_symmetry": "Vara de la Simetria", - "item.create.wheat_flour": "Harina de Trigo", - "item.create.whisk": "Batidor", - "item.create.wrench": "Llave Inglesa", - "item.create.zinc_ingot": "Lingote de Zinc", - "item.create.zinc_nugget": "Pepita de Zinc", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "UNLOCALIZED: Welcome to Create", - "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", - "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", - "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", - "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", - "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", - "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gears", - "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your contraption.", - "advancement.create.overstressed": "UNLOCALIZED: Overstressed", - "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", - "advancement.create.belt": "UNLOCALIZED: Kelp Drive", - "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "UNLOCALIZED: Take cover!", - "advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your mechanical belt with a Tunnel.", - "advancement.create.splitter_tunnel": "UNLOCALIZED: Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "UNLOCALIZED: Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "UNLOCALIZED: Tumbling down", - "advancement.create.chute.desc": "UNLOCALIZED: Place a chute, the vertical counterpart of the belt.", - "advancement.create.upward_chute": "UNLOCALIZED: Aerial Abduction", - "advancement.create.upward_chute.desc": "UNLOCALIZED: Watch a thrown item fly up into a fan-powered chute.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", - "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", - "advancement.create.fan": "UNLOCALIZED: Mechanical Airbender", - "advancement.create.fan.desc": "UNLOCALIZED: Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "UNLOCALIZED: Geothermal Space Heater", - "advancement.create.fan_lava.desc": "UNLOCALIZED: Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "UNLOCALIZED: Wacky Washing", - "advancement.create.fan_water.desc": "UNLOCALIZED: Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "UNLOCALIZED: Mechanical Bellows", - "advancement.create.fan_smoke.desc": "UNLOCALIZED: Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", - "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "UNLOCALIZED: Stress-O-Vision", - "advancement.create.goggles.desc": "UNLOCALIZED: Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "UNLOCALIZED: But How Fast Exactly?", - "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "UNLOCALIZED: But How Stressed Exactly?", - "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "UNLOCALIZED: Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "UNLOCALIZED: Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "UNLOCALIZED: Boom, Reinforced!", - "advancement.create.reinforced.desc": "UNLOCALIZED: Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power", - "advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", - "advancement.create.cuckoo": "UNLOCALIZED: Is it time?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", - "advancement.create.windmill": "UNLOCALIZED: A mild Breeze", - "advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill.", - "advancement.create.maxed_windmill": "UNLOCALIZED: A strong breeze", - "advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary Breakers", - "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical Drill.", - "advancement.create.press": "UNLOCALIZED: Press Goes 'Bonk!'", - "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "UNLOCALIZED: Beep Boop", - "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", - "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical Saw.", - "advancement.create.basin": "UNLOCALIZED: Basin Operation", - "advancement.create.basin.desc": "UNLOCALIZED: Place a Basin and try throwing items into it.", - "advancement.create.mixer": "UNLOCALIZED: Mixin' It Up", - "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "UNLOCALIZED: A living Fireplace", - "advancement.create.blaze_burner.desc": "UNLOCALIZED: Obtain a Blaze Burner.", - "advancement.create.compact": "UNLOCALIZED: Automated Compacting", - "advancement.create.compact.desc": "UNLOCALIZED: Use a Press and a Basin to compact some items.", - "advancement.create.brass": "UNLOCALIZED: Actual Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "UNLOCALIZED: Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "UNLOCALIZED: A world of Imagination", - "advancement.create.chocolate.desc": "UNLOCALIZED: Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.item_drain.desc": "UNLOCALIZED: Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "UNLOCALIZED: Let it roll!", - "advancement.create.chained_item_drain.desc": "UNLOCALIZED: Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "UNLOCALIZED: Flow Spy", - "advancement.create.glass_pipe.desc": "UNLOCALIZED: Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "UNLOCALIZED: Never cross the Streams!", - "advancement.create.pipe_collision.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "UNLOCALIZED: There's a leak!", - "advancement.create.pipe_spill.desc": "UNLOCALIZED: Watch an open end of a pipe take or place fluids into the world.", - "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.infinite_water": "UNLOCALIZED: Draining the Ocean", - "advancement.create.infinite_water.desc": "UNLOCALIZED: Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "UNLOCALIZED: Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "UNLOCALIZED: Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "UNLOCALIZED: Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "UNLOCALIZED: Signs of Style", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers hate him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", - "advancement.create.integrated_circuit": "UNLOCALIZED: Complex Calculation", - "advancement.create.integrated_circuit.desc": "UNLOCALIZED: Assemble an Integrated Circuit.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "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_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", - "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", - "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "UNLOCALIZED: End of Beta", - "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "UNLOCALIZED: Create", - "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "UNLOCALIZED: %1$s was processed by Crushing Wheels", - "death.attack.create.fan_fire": "UNLOCALIZED: %1$s was burned to death by hot air", - "death.attack.create.fan_lava": "UNLOCALIZED: %1$s was burned to death by lava fan", - "death.attack.create.mechanical_drill": "UNLOCALIZED: %1$s was impaled by a Mechanical Drill", - "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by a Mechanical Saw", - "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", - "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", - "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "UNLOCALIZED: Crushing", - "create.recipe.milling": "UNLOCALIZED: Milling", - "create.recipe.fan_washing": "UNLOCALIZED: Bulk Washing", - "create.recipe.fan_washing.fan": "UNLOCALIZED: Fan behind Flowing Water", - "create.recipe.fan_smoking": "UNLOCALIZED: Bulk Smoking", - "create.recipe.fan_smoking.fan": "UNLOCALIZED: Fan behind Fire", - "create.recipe.fan_blasting": "UNLOCALIZED: Bulk Blasting", - "create.recipe.fan_blasting.fan": "UNLOCALIZED: Fan behind Lava", - "create.recipe.pressing": "UNLOCALIZED: Pressing", - "create.recipe.mixing": "UNLOCALIZED: Mixing", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", - "create.recipe.packing": "UNLOCALIZED: Compacting", - "create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing", - "create.recipe.sawing": "UNLOCALIZED: Sawing", - "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", - "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", - "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", - "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", - "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", - "create.recipe.draining": "UNLOCALIZED: Item Draining", - "create.recipe.processing.chance": "UNLOCALIZED: %1$s%% Chance", - "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", - "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", - "create.recipe.heat_requirement.superheated": "UNLOCALIZED: Super-Heated", - - "create.generic.range": "UNLOCALIZED: Range", - "create.generic.radius": "UNLOCALIZED: Radius", - "create.generic.width": "UNLOCALIZED: Width", - "create.generic.height": "UNLOCALIZED: Height", - "create.generic.length": "UNLOCALIZED: Length", - "create.generic.speed": "UNLOCALIZED: Speed", - "create.generic.delay": "UNLOCALIZED: Delay", - "create.generic.unit.ticks": "UNLOCALIZED: Ticks", - "create.generic.unit.seconds": "UNLOCALIZED: Seconds", - "create.generic.unit.minutes": "UNLOCALIZED: Minutes", - "create.generic.unit.rpm": "UNLOCALIZED: RPM", - "create.generic.unit.stress": "UNLOCALIZED: su", - "create.generic.unit.degrees": "UNLOCALIZED: °", - "create.generic.unit.millibuckets": "UNLOCALIZED: %1$smB", - "create.generic.clockwise": "UNLOCALIZED: Clockwise", - "create.generic.counter_clockwise": "UNLOCALIZED: Counter-Clockwise", - - "create.action.scroll": "UNLOCALIZED: Scroll", - "create.action.confirm": "UNLOCALIZED: Confirm", - "create.action.abort": "UNLOCALIZED: Abort", - "create.action.saveToFile": "UNLOCALIZED: Save", - "create.action.discard": "UNLOCALIZED: Discard", - - "create.keyinfo.toolmenu": "UNLOCALIZED: Focus Tool Menu", - "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - - "create.gui.scrollInput.defaultTitle": "UNLOCALIZED: Choose an Option:", - "create.gui.scrollInput.scrollToModify": "UNLOCALIZED: Scroll to Modify", - "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "UNLOCALIZED: Scroll to Select", - "create.gui.scrollInput.shiftScrollsFaster": "UNLOCALIZED: Shift to Scroll Faster", - "create.gui.toolmenu.focusKey": "UNLOCALIZED: Hold [%1$s] to Focus", - "create.gui.toolmenu.cycle": "UNLOCALIZED: [SCROLL] to Cycle", - "create.gui.symmetryWand.mirrorType": "UNLOCALIZED: Mirror", - "create.gui.symmetryWand.orientation": "UNLOCALIZED: Orientation", - - "create.symmetry.mirror.plane": "UNLOCALIZED: Mirror Once", - "create.symmetry.mirror.doublePlane": "UNLOCALIZED: Rectangular", - "create.symmetry.mirror.triplePlane": "UNLOCALIZED: Octagonal", - - "create.orientation.orthogonal": "UNLOCALIZED: Orthogonal", - "create.orientation.diagonal": "UNLOCALIZED: Diagonal", - "create.orientation.horizontal": "UNLOCALIZED: Horizontal", - "create.orientation.alongZ": "UNLOCALIZED: Along Z", - "create.orientation.alongX": "UNLOCALIZED: Along X", - - "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", - "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", - "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", - "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", - "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", - "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", - "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", - "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", - "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", - "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", - "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", - "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", - "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", - "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", - - "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", - "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", - "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", - - "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", - "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", - "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", - "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", - "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", - "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", - "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", - "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", - "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", - "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", - "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", - "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", - "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", - - "create.logistics.filter": "UNLOCALIZED: Filter", - "create.logistics.recipe_filter": "UNLOCALIZED: Recipe Filter", - "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", - "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", - "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", - "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", - "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", - "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", - - "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", - "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", - "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", - "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", - "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", - "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", - "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", - "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", - "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", - "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", - "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "UNLOCALIZED: Adjustable Crate", - "create.gui.adjustable_crate.storageSpace": "UNLOCALIZED: Storage Space", - "create.gui.stockpile_switch.title": "UNLOCALIZED: Stockpile Switch", - "create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal", - "create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%", - "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", - "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", - "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", - "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", - "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", - "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", - - "create.schematicAndQuill.dimensions": "UNLOCALIZED: Schematic Size: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "UNLOCALIZED: First position set.", - "create.schematicAndQuill.secondPos": "UNLOCALIZED: Second position set.", - "create.schematicAndQuill.noTarget": "UNLOCALIZED: Hold [Ctrl] to select Air blocks.", - "create.schematicAndQuill.abort": "UNLOCALIZED: Removed selection.", - "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Upload Immediately", - "create.schematicAndQuill.fallbackName": "UNLOCALIZED: My Schematic", - "create.schematicAndQuill.saved": "UNLOCALIZED: Saved as %1$s", - - "create.schematic.invalid": "UNLOCALIZED: [!] Invalid Item - Use the Schematic Table instead", - "create.schematic.position": "UNLOCALIZED: Position", - "create.schematic.rotation": "UNLOCALIZED: Rotation", - "create.schematic.rotation.none": "UNLOCALIZED: None", - "create.schematic.rotation.cw90": "UNLOCALIZED: Clockwise 90", - "create.schematic.rotation.cw180": "UNLOCALIZED: Clockwise 180", - "create.schematic.rotation.cw270": "UNLOCALIZED: Clockwise 270", - "create.schematic.mirror": "UNLOCALIZED: Mirror", - "create.schematic.mirror.none": "UNLOCALIZED: None", - "create.schematic.mirror.frontBack": "UNLOCALIZED: Front-Back", - "create.schematic.mirror.leftRight": "UNLOCALIZED: Left-Right", - "create.schematic.tool.deploy": "UNLOCALIZED: Position", - "create.schematic.tool.move": "UNLOCALIZED: Move XZ", - "create.schematic.tool.movey": "UNLOCALIZED: Move Y", - "create.schematic.tool.rotate": "UNLOCALIZED: Rotate", - "create.schematic.tool.print": "UNLOCALIZED: Print", - "create.schematic.tool.flip": "UNLOCALIZED: Mirror", - "create.schematic.tool.deploy.description.0": "UNLOCALIZED: Moves the structure to a location.", - "create.schematic.tool.deploy.description.1": "UNLOCALIZED: Right-Click on the ground to place.", - "create.schematic.tool.deploy.description.2": "UNLOCALIZED: Hold [Ctrl] to select at a fixed distance.", - "create.schematic.tool.deploy.description.3": "UNLOCALIZED: [Ctrl]-Scroll to change the distance.", - "create.schematic.tool.move.description.0": "UNLOCALIZED: Shifts the Schematic Horizontally.", - "create.schematic.tool.move.description.1": "UNLOCALIZED: Point at the Schematic and [CTRL]-Scroll to push it.", - "create.schematic.tool.move.description.2": "UNLOCALIZED: ", - "create.schematic.tool.move.description.3": "UNLOCALIZED: ", - "create.schematic.tool.movey.description.0": "UNLOCALIZED: Shifts the Schematic Vertically.", - "create.schematic.tool.movey.description.1": "UNLOCALIZED: [CTRL]-Scroll to move it up/down.", - "create.schematic.tool.movey.description.2": "UNLOCALIZED: ", - "create.schematic.tool.movey.description.3": "UNLOCALIZED: ", - "create.schematic.tool.rotate.description.0": "UNLOCALIZED: Rotates the Schematic around its center.", - "create.schematic.tool.rotate.description.1": "UNLOCALIZED: [CTRL]-Scroll to rotate by 90 Degrees.", - "create.schematic.tool.rotate.description.2": "UNLOCALIZED: ", - "create.schematic.tool.rotate.description.3": "UNLOCALIZED: ", - "create.schematic.tool.print.description.0": "UNLOCALIZED: Instantly places the structure in the world.", - "create.schematic.tool.print.description.1": "UNLOCALIZED: [Right-Click] to confirm placement at the current location.", - "create.schematic.tool.print.description.2": "UNLOCALIZED: This tool is for Creative Mode only.", - "create.schematic.tool.print.description.3": "UNLOCALIZED: ", - "create.schematic.tool.flip.description.0": "UNLOCALIZED: Flips the Schematic along the face you select.", - "create.schematic.tool.flip.description.1": "UNLOCALIZED: Point at the Schematic and [CTRL]-Scroll to flip it.", - "create.schematic.tool.flip.description.2": "UNLOCALIZED: ", - "create.schematic.tool.flip.description.3": "UNLOCALIZED: ", - - "create.schematics.synchronizing": "UNLOCALIZED: Syncing...", - "create.schematics.uploadTooLarge": "UNLOCALIZED: Your schematic exceeds limitations specified by the server.", - "create.schematics.maxAllowedSize": "UNLOCALIZED: The maximum allowed schematic file size is:", - - "create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files", - "create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder", - "create.gui.schematicTable.title": "UNLOCALIZED: Schematic Table", - "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", - "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", - "create.gui.schematicTable.uploading": "UNLOCALIZED: Uploading...", - "create.gui.schematicTable.finished": "UNLOCALIZED: Upload Finished!", - "create.gui.schematicannon.title": "UNLOCALIZED: Schematicannon", - "create.gui.schematicannon.listPrinter": "UNLOCALIZED: Checklist Printer", - "create.gui.schematicannon.gunpowderLevel": "UNLOCALIZED: Gunpowder at %1$s%%", - "create.gui.schematicannon.shotsRemaining": "UNLOCALIZED: Shots left: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "UNLOCALIZED: With backup: %1$s", - "create.gui.schematicannon.optionEnabled": "UNLOCALIZED: Currently Enabled", - "create.gui.schematicannon.optionDisabled": "UNLOCALIZED: Currently Disabled", - "create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings", - "create.gui.schematicannon.option.dontReplaceSolid": "UNLOCALIZED: Don't Replace Solid Blocks", - "create.gui.schematicannon.option.replaceWithSolid": "UNLOCALIZED: Replace Solid with Solid", - "create.gui.schematicannon.option.replaceWithAny": "UNLOCALIZED: Replace Solid with Any", - "create.gui.schematicannon.option.replaceWithEmpty": "UNLOCALIZED: Replace Solid with Empty", - "create.gui.schematicannon.option.skipMissing": "UNLOCALIZED: Skip missing Blocks", - "create.gui.schematicannon.option.skipTileEntities": "UNLOCALIZED: Protect Tile Entities", - "create.gui.schematicannon.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon", - "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", - "create.gui.schematicannon.option.skipMissing.description": "UNLOCALIZED: If the cannon cannot find a required Block for placement, it will continue at the next Location.", - "create.gui.schematicannon.option.skipTileEntities.description": "UNLOCALIZED: The cannon will avoid replacing data holding blocks such as Chests.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "UNLOCALIZED: The cannon will never replace any Solid blocks in its working area, only non-Solid and Air.", - "create.gui.schematicannon.option.replaceWithSolid.description": "UNLOCALIZED: The cannon will only replace Solid blocks in its working area if the Schematic contains a solid Block at the Location.", - "create.gui.schematicannon.option.replaceWithAny.description": "UNLOCALIZED: The cannon will replace Solid blocks in its working area if the Schematic contains any Block at the Location.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "UNLOCALIZED: The cannon will clear out all blocks in its working area, including those replaced by Air.", - - "create.schematicannon.status.idle": "UNLOCALIZED: Idle", - "create.schematicannon.status.ready": "UNLOCALIZED: Ready", - "create.schematicannon.status.running": "UNLOCALIZED: Running", - "create.schematicannon.status.finished": "UNLOCALIZED: Finished", - "create.schematicannon.status.paused": "UNLOCALIZED: Paused", - "create.schematicannon.status.stopped": "UNLOCALIZED: Stopped", - "create.schematicannon.status.noGunpowder": "UNLOCALIZED: Out of Gunpowder", - "create.schematicannon.status.targetNotLoaded": "UNLOCALIZED: Target is not loaded", - "create.schematicannon.status.targetOutsideRange": "UNLOCALIZED: Target too far away", - "create.schematicannon.status.searching": "UNLOCALIZED: Searching", - "create.schematicannon.status.skipping": "UNLOCALIZED: Skipping", - "create.schematicannon.status.missingBlock": "UNLOCALIZED: Missing Item:", - "create.schematicannon.status.placing": "UNLOCALIZED: Placing", - "create.schematicannon.status.clearing": "UNLOCALIZED: Clearing Blocks", - "create.schematicannon.status.schematicInvalid": "UNLOCALIZED: Schematic Invalid", - "create.schematicannon.status.schematicNotPlaced": "UNLOCALIZED: Schematic not Positioned", - "create.schematicannon.status.schematicExpired": "UNLOCALIZED: Schematic File Expired", - - "create.materialChecklist": "UNLOCALIZED: Material Checklist", - "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", - "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", - "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", - "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", - "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", - "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", - - "create.item_attributes.placeable": "UNLOCALIZED: is placeable", - "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", - "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", - "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", - "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", - "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", - "create.item_attributes.washable": "UNLOCALIZED: can be Washed", - "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", - "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", - "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", - "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", - "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", - "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", - "create.item_attributes.damaged": "UNLOCALIZED: is damaged", - "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", - "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", - "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", - "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", - "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", - "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", - "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", - "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", - "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", - "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", - "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", - "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", - "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", - "create.gui.attribute_filter.add_attribute": "UNLOCALIZED: Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.attribute_filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", - "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "UNLOCALIZED: Shift", - "create.tooltip.keyCtrl": "UNLOCALIZED: Ctrl", - "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", - "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", - "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", - "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", - "create.tooltip.stressImpact": "UNLOCALIZED: Kinetic Stress Impact: %1$s", - "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", - "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", - "create.tooltip.stressImpact.high": "UNLOCALIZED: High", - "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", - "create.tooltip.capacityProvided": "UNLOCALIZED: Kinetic Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", - "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", - "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", - "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", - "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", - - "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", - "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", - "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", - - "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", - - "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", - "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", - "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", - "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", - "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", - - "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", - "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", - "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", - "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", - "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", - "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push 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.contains": "UNLOCALIZED: Contains: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", - "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", - "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", - "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", - "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", - - "create.command.killTPSCommand": "UNLOCALIZED: killtps", - "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "SOPORTE DE MADERA", - "block.create.wooden_bracket.tooltip.summary": "_Decora_ tus _ejes,_ _ruedas_ _dentadas_ y _tuberías_ con un pequeño y acogedor refuerzo de madera", - - "block.create.metal_bracket.tooltip": "SOPORTE DE METAL", - "block.create.metal_bracket.tooltip.summary": "_Decora_ tus _ejes,_ _ruedas_ _dentadas_ y _tuberías_ con un robusto refuerzo industrial de metal", - - "block.create.copper_casing.tooltip": "CARCASA DE COBRE", - "block.create.copper_casing.tooltip.summary": "Una simple carcasa para máquinas con una variedad de usos. Segura para la decoración.", - "block.create.copper_casing.tooltip.condition1": "Cuando se usa en una Tubería de Fluidos", - "block.create.copper_casing.tooltip.behaviour1": "Recubre la _Tubería_ _de_ _Fluidos_ con la _Carcasa_ _de_ _Cobre._ Las tuberías recubiertas _bloquearán_ _sus_ _conexiones_ en su lugar, ya no reaccionarán a los cambios de las tuberías vecinas.", - - "block.create.encased_fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS RECUBIERTA", - "block.create.encased_fluid_pipe.tooltip.summary": "Una _Tubería_ _de_ _Fluidos_ recubierta con una _Carcasa_ _de_ _Cobre_", - - "block.create.seat.tooltip": "ASIENTO", - "block.create.seat.tooltip.summary": "¡Siéntese y disfrute del paseo! Anclará a un jugador en una _artefacto_ en movimiento. ¡También es Grandioso para las construcciones estáticas! Viene en una variedad de colores.", - "block.create.seat.tooltip.condition1": "Click Derecho en el asiento", - "block.create.seat.tooltip.behaviour1": "Sienta al jugador en el _asiento_ . Presiona el shift izquierdo para salir del _asiento._", - - "item.create.blaze_cake.tooltip": "PASTEL DE BLAZE", - "item.create.blaze_cake.tooltip.summary": "Un delicioso regalo para tus grandiosos _quemadores_ _de_ _blaze._ ¡Los enciende a todos!", - - "block.create.fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS", - "block.create.fluid_pipe.tooltip.summary": "Se usa para mover _fluidos._ Necesita una _bomba_ _mecánica_ para mover el fluido.", - "block.create.fluid_pipe.tooltip.condition1": "Transferencia de fluidos", - "block.create.fluid_pipe.tooltip.behaviour1": "Puede conectarse a _contenedores_ _de_ _fluidos_ como _tanques_ o _cuencas._ Los extremos expuestos de las _tuberías_ también pueden drenar o colocar bloques de fluido. ¡Ten cuidado con las fugas!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "POLEA CON MANGUERA", - "block.create.hose_pulley.tooltip.summary": "Se utiliza para _colocar_ o _drenar_ grandes _cuerpos_ _de_ _fluido_ en el mundo.", - "block.create.hose_pulley.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.hose_pulley.tooltip.behaviour1": "_Sube_ o _baja_ la manguera, La ubicación de la manguera determina hasta qué _altura_ actuará la _extracción_ o el _llenado_ .", - "block.create.hose_pulley.tooltip.condition2": "Cuando los fluidos son extraídos de la polea", - "block.create.hose_pulley.tooltip.behaviour2": "Empieza a _extraer_ bloques de _líquido_ del cuerpo en el que se bajó la punta de la manguera. Los cuerpos de fluido _muy_ _grandes_ serán _considerados_ _infinitos_ .", - "block.create.hose_pulley.tooltip.condition3": "Cuando los fluidos son empujados a la polea", - "block.create.hose_pulley.tooltip.behaviour3": "Comienza a _llenar_ con _fluido_ en el mundo _hasta_ _arriba_ a la _altura_ de la _punta_ _de_ _la_ _manguera_ .", - - "block.create.fluid_tank.tooltip": "TANQUE DE FLUIDOS", - "block.create.fluid_tank.tooltip.summary": "Almacena todos tus _fluidos_ favoritos. Escala en anchura y altura.", - "block.create.fluid_tank.tooltip.condition1": "Click Derecho con una Llave Inglesa", - "block.create.fluid_tank.tooltip.behaviour1": "Cambia la ventana opcional", - - "block.create.creative_fluid_tank.tooltip": "TANQUE DE FLUIDOS DEL CREATIVO", - "block.create.creative_fluid_tank.tooltip.summary": "Este _Tanque_ _de_ _Fluidos_ permite la replicación infinita de cualquier Fluido. Escala en anchura y altura.", - "block.create.creative_fluid_tank.tooltip.condition1": "Cuando hay fluido en el tanque", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Cualquier cosa que _extraiga_ de este tanque proporcionará un _suministro_ _ilimitado_ del fluido especificado. Los fluidos _insertados_ en este tanque serán _eliminados._", - "block.create.creative_fluid_tank.tooltip.condition2": "Click Derecho con una Llave Inglesa", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Cambia la ventana opcional", - - "block.create.fluid_valve.tooltip": "VÁLVULAL DE FLUIDOS", - "block.create.fluid_valve.tooltip.summary": "Detiene el flujo de fluido por una tubería.", - "block.create.fluid_valve.tooltip.condition1": "Flujo controlable", - "block.create.fluid_valve.tooltip.behaviour1": "Aplicando una _fuerza_ _de_ _rotación_ forzará a la _válvula_ a cerrarse, cesando el flujo de _fluidos._ Invierte la dirección de la _fuerza_ _de_ _rotación_ para reabrir la válvula.", - - "block.create.mechanical_pump.tooltip": "BOMBA MECÁNICA", - "block.create.mechanical_pump.tooltip.summary": "Toma la _fuerza_ _de_ _rotación_ y la usa para mover el _fluido_ a lo largo de un _tubo._ Tiene un rango de efecto máximo en ambas direcciones. (16 bloques por defecto)", - "block.create.mechanical_pump.tooltip.condition1": "Flujo de fluidos", - "block.create.mechanical_pump.tooltip.behaviour1": "La _fuerza_ _de_ _rotación_ aplicada crea una presión que fuerza el _fluido_ a través de la red de _tuberías._ Invierte la dirección de la fuerza de rotación para cambiar la dirección en la que fluye el _fluido._", - "block.create.mechanical_pump.tooltip.control1": "Click Derecho con una Llave Inglesa", - "block.create.mechanical_pump.tooltip.action1": "Invierte la dirección de la _bomba,_ cambiando la dirección por defecto del flujo", - - "block.create.smart_fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS INTELIGENTE", - "block.create.smart_fluid_pipe.tooltip.summary": "Una _tubería_ _de_ _fluidos_ con un filtro. Puede especificar que _fluidos_ pasan por ella.", - "block.create.smart_fluid_pipe.tooltip.condition1": "Cuando los fluidos son empujados hacia ella", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Las tuberías inteligentes que reciben un fluido que no coincide con su filtro bloquearán el flujo.", - "block.create.smart_fluid_pipe.tooltip.condition2": "Cuando está adyacente a un recipiente de fluido", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Las tuberías inteligentes que _inicien_ un _flujo_ desde cualquier contenedor sólo extraerán los fluidos que _coincidan_ con su _filtro._", - - "block.create.spout.tooltip": "CANALETA", - "block.create.spout.tooltip.summary": "Un inyector para rellenar sus _objetos_ con _fluidos._", - "block.create.spout.tooltip.condition1": "Transferencia de fluidos", - "block.create.spout.tooltip.behaviour1": "Cuando se coloca un _objeto_ que puede _contener_ _fluidos_ como una _cubeta_ o _botella_ debajo, la canaleta intentará rellenarlo con su propio _fluido_ almacenado.", - "block.create.spout.tooltip.condition2": "Automatización de fluidos", - "block.create.spout.tooltip.behaviour2": "La canaleta colocada sobre una _correa_ o _depósito_ reaccionará automáticamente con un _contenedor_ _de_ _líquido_ que pase por debajo de él.", - - "block.create.item_drain.tooltip": "ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "Un depósito con rejilla para vaciar sus _objetos_ _con_ _fluidos._", - "block.create.item_drain.tooltip.condition1": "Transferencia de fluidos", - "block.create.item_drain.tooltip.behaviour1": "Cuando se inserta un _contenedor_ _de_ _fluidos_ como una _cubeta_ o _botella_ desde el lado, el extractor intentará vaciarlo en su propio _contenedor_ de _fluidos._ El objeto será entonces expulsado por el lado opuesto.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "Crea un 'espejo' que refleja perfectamente la colocación de bloques a través de los planos configurados.", - "item.create.wand_of_symmetry.tooltip.condition1": "Cuando esta en la barra de ítems", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Se mantiene activo", - "item.create.wand_of_symmetry.tooltip.control1": "Click Derecho en el suelo", - "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _mueve_ el 'espejo'.", - "item.create.wand_of_symmetry.tooltip.control2": "Click Derecho en el aire", - "item.create.wand_of_symmetry.tooltip.action2": "_Remueve_ el 'espejo' activo", - "item.create.wand_of_symmetry.tooltip.control3": "Click Derecho cuando se esta agachado", - "item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración_", - - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "Una herramienta útil para crear _paisajes_ y _características_ en el _terreno._", - "item.create.handheld_worldshaper.tooltip.control1": "Click Izquierdo a un bloque", - "item.create.handheld_worldshaper.tooltip.action1": "Establece los bloques que serán colocados por la herramienta en el bloque objetivo.", - "item.create.handheld_worldshaper.tooltip.control2": "Click Derecho en un bloque", - "item.create.handheld_worldshaper.tooltip.action2": "Aplica el _Pincel_ y la _Herramienta_ actualmente seleccionados en el lugar objetivo.", - "item.create.handheld_worldshaper.tooltip.control3": "Click Derecho mientras se está agachado", - "item.create.handheld_worldshaper.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración._", - - "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "Una poderosa combinación de minerales adecuados para acelerar el crecimiento de los tipos de árboles comunes.", - "item.create.tree_fertilizer.tooltip.condition1": "Cuando se usa en un retoño de árbol", - "item.create.tree_fertilizer.tooltip.behaviour1": "Hace crecer los árboles, sin importar el espacio entre ellos.", - - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "Boioioing! En gran medida, _aumenta_ _la_ _distancia_ _de_ _alcance_ del portador.", - "item.create.extendo_grip.tooltip.condition1": "Cuando está en la mano secundaria", - "item.create.extendo_grip.tooltip.behaviour1": "Aumenta el rango de alcance de los objetos usados en la _mano_ _principal._", - - "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "_Controla_ las _salidas_ y _entradas_ de los dispositivos logísticos con más _precisión,_ comparándolas con un _conjunto_ _de_ _objetos_ o varios _filtros_ _anidados._", - "item.create.filter.tooltip.condition1": "Cuando está en la ranura del filtro", - "item.create.filter.tooltip.behaviour1": "_Controla_ el flujo de objetos según su _configuración._", - "item.create.filter.tooltip.condition2": "Con Click Derecho", - "item.create.filter.tooltip.behaviour2": "Abre la _Interfaz_ _de_ _Configuración._", - - "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "_Controla_ las _salidas_ y _entradas_ de los dispositivos logísticos con más _precisión,_ comparándolas con un _conjunto_ _de_ _atributos_ _de_ _objetos_ y _categorias._", - "item.create.attribute_filter.tooltip.condition1": "Cuando está en la ranura del filtro", - "item.create.attribute_filter.tooltip.behaviour1": "_Controla_ el flujo de objetos según su _configuración._", - "item.create.attribute_filter.tooltip.condition2": "Con Click Derecho", - "item.create.attribute_filter.tooltip.behaviour2": "Abre la _Interfaz_ _de_ _Configuración._", - - "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "Se usa como ingrediente en una receta y para escribir en la _Mesa_ _de_ _Esquemas._", - - "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "Sostiene una estructura para ser posicionada y colocada en el mundo. Posiciona el Holograma como se desee y usa un _Esquemacañon_ para construirlo.", - "item.create.schematic.tooltip.condition1": "Cuando es sostenido", - "item.create.schematic.tooltip.behaviour1": "Se puede posicionar usando las Herramientas en Pantalla.", - "item.create.schematic.tooltip.control1": "Click Derecho mientras se está agachado", - "item.create.schematic.tooltip.action1": "Abre una _interfaz_ para introducir las _coordenadas_ exactas.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "Se usa para guardar una estructura de tu mundo en un archivo .nbt", - "item.create.schematic_and_quill.tooltip.condition1": "Paso 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Selecciona dos esquinas con Click Derecho.", - "item.create.schematic_and_quill.tooltip.condition2": "Paso 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ _+_ _girar_ _rueda_ _del_ _ratón_ en las caras para ajustar el tamaño. Click Derecho de nuevo para Guardar.", - "item.create.schematic_and_quill.tooltip.control1": "Click Derecho", - "item.create.schematic_and_quill.tooltip.action1": "Selecciona una esquina / confirma el guardado.", - "item.create.schematic_and_quill.tooltip.control2": "Manteniendo la tecla Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Selecciona los puntos en _medio_ _del_ _aire._ _Girar_ _rueda_ _del_ _ratón_ para ajustar la distancia.", - "item.create.schematic_and_quill.tooltip.control3": "Click Derecho mientras se está agachado", - "item.create.schematic_and_quill.tooltip.action3": "_Reinicia_ y quita la selección.", - - "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "Dispara bloques para recrear un _esquema_ ya desplegado en el mundo. Utiliza objetos de los inventarios adyacentes y _Pólvora_ como combustible.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "Escribe los esquemas guardados en un _Esquema_ _Vacío._", - "block.create.schematic_table.tooltip.condition1": "Cuando se le da un esquema vacío", - "block.create.schematic_table.tooltip.behaviour1": "Carga un archivo elegido de su carpeta de esquemas.", - - "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "Un par de gafas para aumentar la visión con _información_ _cinética_ útil.", - "item.create.goggles.tooltip.condition1": "Cuando se usan", - "item.create.goggles.tooltip.behaviour1": "Muestra _indicadores_ _con_ _colores_ correspondientes al _Nivel_ _de_ _Velocidad_ de un componente cinético colocado, así como _Impacto_ _de_ _Estrés_ y _Capacidad_ de los componentes individuales.", - "item.create.goggles.tooltip.condition2": "Al mirar el medidor", - "item.create.goggles.tooltip.behaviour2": "Muestra información detallada sobre la _velocidad_ o el _estrés_ de la red a la que está conectado el medidor.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "Una herramienta útil para trabajar en artefactos cinéticos. Se puede utilizar para _Rotar,_ _Desmantelar_ y _Configurar_ componentes.", - "item.create.wrench.tooltip.control1": "Click Derecho en un bloqueo cinético", - "item.create.wrench.tooltip.action1": "_Gira_ los componentes hacia o en contra de la cara con la que interactuó.", - "item.create.wrench.tooltip.control2": "Click Derecho mientras se está agachado", - "item.create.wrench.tooltip.action2": "_Desmonta_ los _componentes_ _cinéticos_ y los coloca de nuevo en _tú_ _inventario._", - - "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", - "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", - - "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping track of time_.", - "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", - - "block.create.turntable.tooltip": "UNLOCALIZED: TURNTABLE", - "block.create.turntable.tooltip.summary": "UNLOCALIZED: Turns _Rotational Force_ into refined Motion Sickness.", - - "block.create.portable_fluid_interface.tooltip": "UNLOCALIZED: PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving fluids_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley. Two meeting interfaces have to _face each other_ and be spaced _1-2 blocks apart_.", - "block.create.portable_fluid_interface.tooltip.condition1": "UNLOCALIZED: While Moving", - "block.create.portable_fluid_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _portable storage interfaces_ to transfer fluids to or from the contraption. Pipes inserting into or extracting from the _Stationary Interface_ will interact with the tanks on the contraption _directly._ The structure will briefly stall as Fluids are exchanged.", - "block.create.portable_fluid_interface.tooltip.condition2": "UNLOCALIZED: When Powered by Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "UNLOCALIZED: _Disengages_ any active connection immediately.", - - "block.create.stockpile_switch.tooltip": "UNLOCALIZED: STOCKPILE SWITCH", - "block.create.stockpile_switch.tooltip.summary": "UNLOCALIZED: Toggles a Redstone signal based on the amount of _Stored Items_ in the attached Container. Comes with a handy filter. As opposed to a _Comparator,_ the _Stockpile Switch_ allows configuration of _thresholds,_ at which signals are inverted.", - "block.create.stockpile_switch.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.stockpile_switch.tooltip.behaviour1": "UNLOCALIZED: Opens the _Configuration Interface_.", - - "block.create.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ inside _containers_ and _conveyors_ matching a configured _filter_. While the observed _inventory_, _belt_ or _chute contains_ a matching item, this component will emit a _Redstone Signal_. When an observed _funnel transfers_ a matching item, this component will emit a _Redstone Pulse_.", - - "block.create.adjustable_crate.tooltip": "UNLOCALIZED: ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "UNLOCALIZED: This _Item Container_ allows Manual control over its capacity. It can hold up to _16 Stacks_ of any Item. Supports _Redstone Comparators_.", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "UNLOCALIZED: THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "UNLOCALIZED: This _Storage Container_ allows infinite replication of any item. Place next to a _Schematicannon_ to remove any material requirements.", - "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.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", - "item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", - "item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", - - "item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._", - - "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed light_.", - - "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in the void_.", - - "item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - - "create.tooltip.wip": "UNLOCALIZED: WIP", - "create.tooltip.workInProgress": "UNLOCALIZED: Work in progress!", - "create.tooltip.randomWipDescription0": "UNLOCALIZED: Please keep this item away from children.", - "create.tooltip.randomWipDescription1": "UNLOCALIZED: A baby panda dies every time you use this item. Every. Time.", - "create.tooltip.randomWipDescription2": "UNLOCALIZED: Use at your own risk.", - "create.tooltip.randomWipDescription3": "UNLOCALIZED: This is not the item you are looking for, *finger-wiggles* please disperse.", - "create.tooltip.randomWipDescription4": "UNLOCALIZED: This item will self-destruct in 10 seconds. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "UNLOCALIZED: Believe me, it's useless.", - "create.tooltip.randomWipDescription6": "UNLOCALIZED: By using this item, you hereby consent to our disclaimer and agree to its terms.", - "create.tooltip.randomWipDescription7": "UNLOCALIZED: This one maybe isn't for you. What about that one?", - "create.tooltip.randomWipDescription8": "UNLOCALIZED: Use it and regret your decision immediately.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json deleted file mode 100644 index 900028973..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 1220", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "Fenêtre en acacia", - "block.create.acacia_window_pane": "Vitre en acacia", - "block.create.adjustable_chain_gearshift": "UNLOCALIZED: Adjustable Chain Gearshift", - "block.create.adjustable_crate": "Caisse ajustable", - "block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable", - "block.create.adjustable_repeater": "Répéteur réglable", - "block.create.analog_lever": "Levier analogique", - "block.create.andesite_belt_funnel": "Entonnoir en andésite pour tapis roulant", - "block.create.andesite_bricks": "Briques d'andésite", - "block.create.andesite_bricks_slab": "Dalle en briques d'andésite", - "block.create.andesite_bricks_stairs": "Escalier en briques d'andésite", - "block.create.andesite_bricks_wall": "Mur en briques d'andésite", - "block.create.andesite_casing": "Revêtement en andésite", - "block.create.andesite_cobblestone": "Pierres d'andésite", - "block.create.andesite_cobblestone_slab": "Dalles en pierres d'andésite", - "block.create.andesite_cobblestone_stairs": "Escaliers en pierres d'andésite", - "block.create.andesite_cobblestone_wall": "Mur en pierres d'andésite", - "block.create.andesite_encased_shaft": "Rotor dans un revêtement en andésite", - "block.create.andesite_funnel": "Entonnoir en andésite", - "block.create.andesite_pillar": "Pilier en andésite", - "block.create.andesite_tunnel": "Tunnel en andésite", - "block.create.basin": "Bassin", - "block.create.belt": "Tapis roulant", - "block.create.birch_window": "Fenêtre en bouleau", - "block.create.birch_window_pane": "Vitre en bouleau", - "block.create.black_sail": "Voile noire", - "block.create.black_seat": "Siège noir", - "block.create.black_valve_handle": "Vanne noire", - "block.create.blaze_burner": "Brûleur à blaze", - "block.create.blue_sail": "Voile bleue", - "block.create.blue_seat": "Siège bleu", - "block.create.blue_valve_handle": "Vanne bleue", - "block.create.brass_belt_funnel": "Entonnoir en laiton pour tapis roulant", - "block.create.brass_block": "Bloc de laiton", - "block.create.brass_casing": "Revêtement en laiton", - "block.create.brass_encased_shaft": "Rotor dans un revêtement en laiton", - "block.create.brass_funnel": "Entonnoir en laiton", - "block.create.brass_tunnel": "Tunnel en laiton", - "block.create.brown_sail": "Voile brune", - "block.create.brown_seat": "Siège brun", - "block.create.brown_valve_handle": "Vanne brune", - "block.create.cart_assembler": "Assembleur de wagon", - "block.create.chiseled_dark_scoria": "Scoria sombre taillé", - "block.create.chiseled_dolomite": "Dolomite taillée", - "block.create.chiseled_gabbro": "Gabbro taillé", - "block.create.chiseled_limestone": "Calcaire taillé", - "block.create.chiseled_scoria": "Scoria taillé", - "block.create.chiseled_weathered_limestone": "Calcaire altéré taillé", - "block.create.chocolate": "Chocolat", - "block.create.chute": "Glissière", - "block.create.clockwork_bearing": "Roulement mécanique horloger", - "block.create.clutch": "Embrayage", - "block.create.cogwheel": "Roue dentée", - "block.create.content_observer": "Observateur de contenu", - "block.create.controller_rail": "Rails controlleurs", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "Bloc de cuivre", - "block.create.copper_casing": "Revêtement en cuivre", - "block.create.copper_ore": "Minerai de cuivre", - "block.create.copper_shingles": "Bardeaux de cuivre", - "block.create.copper_tiles": "Tuiles en cuivre", - "block.create.copper_valve_handle": "Vanne en cuivre", - "block.create.creative_crate": "Créateur de schémacanon", - "block.create.creative_fluid_tank": "Réservoir créatif", - "block.create.creative_motor": "Moteur", - "block.create.crimson_window": "UNLOCALIZED: Crimson Window", - "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", - "block.create.crushing_wheel": "Roue de concassage", - "block.create.crushing_wheel_controller": "Contrôleur de roue de concassage", - "block.create.cuckoo_clock": "Horloge à coucou", - "block.create.cyan_sail": "Voile cyan", - "block.create.cyan_seat": "Siège cyan", - "block.create.cyan_valve_handle": "Vanne cyan", - "block.create.dark_oak_window": "fenêtre en chêne sombre", - "block.create.dark_oak_window_pane": "Vitre en chêne sombre", - "block.create.dark_scoria": "Scorie sombre", - "block.create.dark_scoria_bricks": "Briques de scorie sombre", - "block.create.dark_scoria_bricks_slab": "Dalles de briques de scorie sombre", - "block.create.dark_scoria_bricks_stairs": "Escaliers de briques de scorie sombre", - "block.create.dark_scoria_bricks_wall": "Muret de briques de scorie sombre", - "block.create.dark_scoria_cobblestone": "Pierres de scorie sombre", - "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", - "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", - "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", - "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "Déployeur", - "block.create.depot": "Dépot", - "block.create.diorite_bricks": "Briques de diorite", - "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", - "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", - "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", - "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", - "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", - "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", - "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", - "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_bricks": "Briques de dolomite", - "block.create.dolomite_bricks_slab": "Dalle de briques de dolomite", - "block.create.dolomite_bricks_stairs": "Escaliers de briques de dolomite", - "block.create.dolomite_bricks_wall": "Muret de briques de dolomite", - "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", - "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", - "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", - "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "Pillier de dolomite", - "block.create.encased_chain_drive": "Chaine de transmission", - "block.create.encased_fan": "Ventilateur enchâssé", - "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", - "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", - "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", - "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", - "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", - "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", - "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", - "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", - "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", - "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", - "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", - "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", - "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", - "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", - "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", - "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", - "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", - "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", - "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", - "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", - "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", - "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", - "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", - "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", - "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", - "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", - "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", - "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", - "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", - "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", - "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", - "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", - "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", - "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", - "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", - "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", - "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", - "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.fluid_valve": "UNLOCALIZED: Fluid Valve", - "block.create.flywheel": "Volant d'inertie", - "block.create.framed_glass": "Grande fenêtre en verre", - "block.create.framed_glass_pane": "Grande vitre encadrée", - "block.create.furnace_engine": "Moteur de four", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Briques de gabbro", - "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "Escaliers en briques de gabbro", - "block.create.gabbro_bricks_wall": "Muret en briques de gabbro", - "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", - "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", - "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", - "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", - "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft", - "block.create.gearbox": "Boîte à roue dentée", - "block.create.gearshift": "Décaleur de rotation", - "block.create.glass_fluid_pipe": "UNLOCALIZED: Glass Fluid Pipe", - "block.create.granite_bricks": "Briques de granite", - "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", - "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", - "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", - "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", - "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", - "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", - "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", - "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", - "block.create.gray_sail": "UNLOCALIZED: Gray Sail", - "block.create.gray_seat": "UNLOCALIZED: Gray Seat", - "block.create.gray_valve_handle": "UNLOCALIZED: Gray Valve Handle", - "block.create.green_sail": "UNLOCALIZED: Green Sail", - "block.create.green_seat": "UNLOCALIZED: Green Seat", - "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", - "block.create.hand_crank": "Manivelle", - "block.create.honey": "UNLOCALIZED: Honey", - "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", - "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", - "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", - "block.create.item_drain": "UNLOCALIZED: Item Drain", - "block.create.jungle_window": "UNLOCALIZED: Jungle Window", - "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Grande roue dentée", - "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", - "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", - "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", - "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", - "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", - "block.create.layered_granite": "UNLOCALIZED: Layered Granite", - "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", - "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", - "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.light_blue_sail": "UNLOCALIZED: Light Blue Sail", - "block.create.light_blue_seat": "UNLOCALIZED: Light Blue Seat", - "block.create.light_blue_valve_handle": "UNLOCALIZED: Light Blue Valve Handle", - "block.create.light_gray_sail": "UNLOCALIZED: Light Gray Sail", - "block.create.light_gray_seat": "UNLOCALIZED: Light Gray Seat", - "block.create.light_gray_valve_handle": "UNLOCALIZED: Light Gray Valve Handle", - "block.create.lime_sail": "UNLOCALIZED: Lime Sail", - "block.create.lime_seat": "UNLOCALIZED: Lime Seat", - "block.create.lime_valve_handle": "UNLOCALIZED: Lime Valve Handle", - "block.create.limesand": "Chaux", - "block.create.limestone": "Calcaire", - "block.create.limestone_bricks": "Briques de calcaire", - "block.create.limestone_bricks_slab": "Dalle de briques de calcaire", - "block.create.limestone_bricks_stairs": "Escaliers de briques de calcaire", - "block.create.limestone_bricks_wall": "Muret de briques de calcaire", - "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", - "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", - "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", - "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Pillier de calcaire", - "block.create.linear_chassis": "Châssis linéaire", - "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", - "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", - "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", - "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", - "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "Roulement mécanique", - "block.create.mechanical_crafter": "Établi mécanique", - "block.create.mechanical_drill": "Perceuse mécanique", - "block.create.mechanical_harvester": "Récolteuse mécanique", - "block.create.mechanical_mixer": "Mixeur mécanique", - "block.create.mechanical_piston": "Piston mécanique", - "block.create.mechanical_piston_head": "Tête de piston mécanique", - "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "Presse mécanique", - "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "Scie mécanique", - "block.create.metal_bracket": "UNLOCALIZED: Metal Bracket", - "block.create.millstone": "UNLOCALIZED: Millstone", - "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", - "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", - "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", - "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", - "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", - "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", - "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", - "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", - "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", - "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", - "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.natural_scoria": "Scorie naturelle", - "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", - "block.create.nozzle": "Buse", - "block.create.oak_window": "UNLOCALIZED: Oak Window", - "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", - "block.create.orange_sail": "UNLOCALIZED: Orange Sail", - "block.create.orange_seat": "UNLOCALIZED: Orange Seat", - "block.create.orange_valve_handle": "UNLOCALIZED: Orange Valve Handle", - "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", - "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", - "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", - "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", - "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", - "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", - "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", - "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", - "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", - "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", - "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", - "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", - "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", - "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", - "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", - "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", - "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", - "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", - "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", - "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", - "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", - "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", - "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", - "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", - "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", - "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", - "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", - "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", - "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", - "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", - "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", - "block.create.paved_granite": "UNLOCALIZED: Paved Granite", - "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", - "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", - "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", - "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", - "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", - "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", - "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", - "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", - "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", - "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", - "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", - "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", - "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", - "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", - "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.pink_sail": "UNLOCALIZED: Pink Sail", - "block.create.pink_seat": "UNLOCALIZED: Pink Seat", - "block.create.pink_valve_handle": "UNLOCALIZED: Pink Valve Handle", - "block.create.piston_extension_pole": "Barre d'extension de piston", - "block.create.polished_dark_scoria": "Scorie sombre polie", - "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", - "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", - "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "Dolomite polie", - "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", - "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", - "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "Gabbro poli", - "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", - "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", - "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "Calcaire poli", - "block.create.polished_limestone_slab": "Dalle de calcaire polie", - "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", - "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", - "block.create.polished_scoria": "Scorie polie", - "block.create.polished_scoria_slab": "Dalle de scorie polie", - "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", - "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Calcaire altéré polies", - "block.create.polished_weathered_limestone_slab": "Dalle de calcaire altéré", - "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", - "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", - "block.create.portable_fluid_interface": "UNLOCALIZED: Portable Fluid Interface", - "block.create.portable_storage_interface": "Interface de stockage portable", - "block.create.powered_latch": "Verrou alimenté", - "block.create.powered_toggle_latch": "Verrou alimenté à bascule", - "block.create.pulley_magnet": "Aimant de poulie", - "block.create.pulse_repeater": "Répéteur d'impulsions", - "block.create.purple_sail": "UNLOCALIZED: Purple Sail", - "block.create.purple_seat": "UNLOCALIZED: Purple Seat", - "block.create.purple_valve_handle": "UNLOCALIZED: Purple Valve Handle", - "block.create.radial_chassis": "Châssis radial", - "block.create.red_sail": "UNLOCALIZED: Red Sail", - "block.create.red_seat": "UNLOCALIZED: Red Seat", - "block.create.red_valve_handle": "UNLOCALIZED: Red Valve Handle", - "block.create.redstone_contact": "Contact de redstone", - "block.create.redstone_link": "Liaison Redstone", - "block.create.refined_radiance_casing": "UNLOCALIZED: Radiant Casing", - "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "Corde", - "block.create.rope_pulley": "Poulie à corde", - "block.create.rotation_speed_controller": "Contrôleur de vitesse de rotation", - "block.create.sail_frame": "UNLOCALIZED: Sail Frame", - "block.create.schematic_table": "Table à schéma", - "block.create.schematicannon": "Schémacanon", - "block.create.scoria": "Scorie", - "block.create.scoria_bricks": "Briques de scorie", - "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", - "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", - "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", - "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", - "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", - "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", - "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", - "block.create.scoria_pillar": "Pillier de scorie", - "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "Décaleur de rotation séquencé", - "block.create.shadow_steel_casing": "UNLOCALIZED: Shadow Casing", - "block.create.shaft": "Rotor", - "block.create.smart_chute": "UNLOCALIZED: Smart Chute", - "block.create.smart_fluid_pipe": "UNLOCALIZED: Smart Fluid Pipe", - "block.create.speedometer": "Compteur de vitesse", - "block.create.spout": "UNLOCALIZED: Spout", - "block.create.spruce_window": "UNLOCALIZED: Spruce Window", - "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticker": "UNLOCALIZED: Sticker", - "block.create.sticky_mechanical_piston": "Piston mécanique collant", - "block.create.stockpile_switch": "Détecteur de stockage", - "block.create.stressometer": "Stressomètre", - "block.create.tiled_glass": "Verre carrelé", - "block.create.tiled_glass_pane": "Vitre carrelé", - "block.create.turntable": "Plaque tournante", - "block.create.vertical_framed_glass": "Fenêtre en verre verticale", - "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", - "block.create.water_wheel": "Roue à eau", - "block.create.weathered_limestone": "Calcaire altéré", - "block.create.weathered_limestone_bricks": "Briques de Calcaire altéré", - "block.create.weathered_limestone_bricks_slab": "Dalle de briques de Calcaire altéré", - "block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de Calcaire altéré", - "block.create.weathered_limestone_bricks_wall": "Muret de briques de Calcaire altéré", - "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", - "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", - "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", - "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Pillier de Calcaire altéré", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", - "block.create.white_sail": "UNLOCALIZED: White Sail", - "block.create.white_seat": "UNLOCALIZED: White Seat", - "block.create.white_valve_handle": "UNLOCALIZED: White Valve Handle", - "block.create.windmill_bearing": "UNLOCALIZED: Windmill Bearing", - "block.create.wooden_bracket": "UNLOCALIZED: Wooden Bracket", - "block.create.yellow_sail": "UNLOCALIZED: Yellow Sail", - "block.create.yellow_seat": "UNLOCALIZED: Yellow Seat", - "block.create.yellow_valve_handle": "UNLOCALIZED: Yellow Valve Handle", - "block.create.zinc_block": "Bloc de zinc", - "block.create.zinc_ore": "Minerai de zinc", - "entity.create.contraption": "Engin", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", - "entity.create.seat": "Siège", - "entity.create.stationary_contraption": "Engin stationnaire", - "entity.create.super_glue": "Colle extra-forte", - "fluid.create.milk": "Lait", - "fluid.create.potion": "Potion", - "fluid.create.tea": "Thé du constructeur", - "item.create.andesite_alloy": "Alliage d'andésite", - "item.create.attribute_filter": "Filtre d'attribut", - "item.create.bar_of_chocolate": "Barre de chocolat", - "item.create.belt_connector": "Tapis roulant", - "item.create.blaze_cake": "Cake au blaze", - "item.create.blaze_cake_base": "Base d'un cake au blase", - "item.create.brass_hand": "Main", - "item.create.brass_ingot": "Lingot de laiton", - "item.create.brass_nugget": "Pépite de laiton", - "item.create.brass_sheet": "Plaques de laiton", - "item.create.builders_tea": "Thé du constructeur", - "item.create.chest_minecart_contraption": "Engin de wagonnet avec coffre", - "item.create.chocolate_bucket": "Seau de chocolat", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", - "item.create.chromatic_compound": "Composé chromatique", - "item.create.cinder_flour": "Farine de braise", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "Lingot de cuivre", - "item.create.copper_nugget": "Pépite de cuivre", - "item.create.copper_sheet": "Plaques de cuivre", - "item.create.crafter_slot_cover": "Couvercle", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "Aluminium concassé", - "item.create.crushed_brass": "Laiton concassé", - "item.create.crushed_copper_ore": "Cuivre concassé", - "item.create.crushed_gold_ore": "Or concassé", - "item.create.crushed_iron_ore": "Fer concassé", - "item.create.crushed_lead_ore": "Plomb concassé", - "item.create.crushed_nickel_ore": "Nickel concassé", - "item.create.crushed_osmium_ore": "Osmium concassé", - "item.create.crushed_platinum_ore": "Platinium concassé", - "item.create.crushed_quicksilver_ore": "Vif-argent concassé", - "item.create.crushed_silver_ore": "Argent concassé", - "item.create.crushed_tin_ore": "Etain concassé", - "item.create.crushed_uranium_ore": "Uranium concassé", - "item.create.crushed_zinc_ore": "Zinc concassé", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "Pâte", - "item.create.electron_tube": "Tube électronique", - "item.create.empty_blaze_burner": "Brûleur à blaze vide", - "item.create.empty_schematic": "Schéma vide", - "item.create.extendo_grip": "Extendo Grip", - "item.create.filter": "Filtre", - "item.create.furnace_minecart_contraption": "Engin de wagon avec fourneau", - "item.create.goggles": "Lunettes d'ingénieur", - "item.create.golden_sheet": "Feuille d'or", - "item.create.handheld_worldshaper": "Térraformeur portable", - "item.create.honey_bucket": "Seau de miel", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", - "item.create.integrated_circuit": "Circuit intégré", - "item.create.iron_sheet": "Plaque de Fer", - "item.create.lapis_sheet": "Feuille de lapis", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "Engin de wagonnet", - "item.create.minecart_coupling": "Lien pour wagonnet", - "item.create.polished_rose_quartz": "Quartz rose poli", - "item.create.powdered_obsidian": "Obsidienne concassée", - "item.create.propeller": "Hélice", - "item.create.red_sand_paper": "Papier de verre rouge", - "item.create.refined_radiance": "Éclat raffiné", - "item.create.rose_quartz": "Quartz rose", - "item.create.sand_paper": "Papier de verre", - "item.create.schematic": "Schéma", - "item.create.schematic_and_quill": "Schéma et plume", - "item.create.shadow_steel": "Acier sombre", - "item.create.super_glue": "Colle extra-forte", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", - "item.create.tree_fertilizer": "Engrais pour arbres", - "item.create.vertical_gearbox": "Boîte de transfert verticale", - "item.create.wand_of_symmetry": "Bâton de symétrie", - "item.create.wheat_flour": "Farine", - "item.create.whisk": "Fouet", - "item.create.wrench": "Clé", - "item.create.zinc_ingot": "Barre de zinc", - "item.create.zinc_nugget": "Pépite de zinc", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Bienvenue dans Create.", - "advancement.create.root.desc": "Le temps de la redstone est révolu!", - "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", - "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.its_alive": "Ça bouge!", - "advancement.create.its_alive.desc": "Regardez vos bremiers composants tourner.", - "advancement.create.shifting_gears": "rotor de transmission", - "advancement.create.shifting_gears.desc": "Connectez une roue dentée à une grande roue dentée afin de changer la vitesse de votre engin", - "advancement.create.overstressed": "Surtension", - "advancement.create.overstressed.desc": "Testez d'abord les limites de la force mécanique", - "advancement.create.belt": "UNLOCALIZED: Kelp Drive", - "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "UNLOCALIZED: Take cover!", - "advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your mechanical belt with a Tunnel.", - "advancement.create.splitter_tunnel": "UNLOCALIZED: Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "UNLOCALIZED: Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "UNLOCALIZED: Tumbling down", - "advancement.create.chute.desc": "UNLOCALIZED: Place a chute, the vertical counterpart of the belt.", - "advancement.create.upward_chute": "UNLOCALIZED: Aerial Abduction", - "advancement.create.upward_chute.desc": "UNLOCALIZED: Watch a thrown item fly up into a fan-powered chute.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", - "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", - "advancement.create.fan": "UNLOCALIZED: Mechanical Airbender", - "advancement.create.fan.desc": "UNLOCALIZED: Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "UNLOCALIZED: Geothermal Space Heater", - "advancement.create.fan_lava.desc": "UNLOCALIZED: Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "UNLOCALIZED: Wacky Washing", - "advancement.create.fan_water.desc": "UNLOCALIZED: Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "UNLOCALIZED: Mechanical Bellows", - "advancement.create.fan_smoke.desc": "UNLOCALIZED: Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", - "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "UNLOCALIZED: Stress-O-Vision", - "advancement.create.goggles.desc": "UNLOCALIZED: Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "UNLOCALIZED: But How Fast Exactly?", - "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "UNLOCALIZED: But How Stressed Exactly?", - "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "UNLOCALIZED: Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "UNLOCALIZED: Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "UNLOCALIZED: Boom, Reinforced!", - "advancement.create.reinforced.desc": "UNLOCALIZED: Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power", - "advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "Roue à aubes... dans de la lave?", - "advancement.create.lava_wheel.desc": "Cela... N'aurait pas dû fonctionner.", - "advancement.create.cuckoo": "C'est déjà l'heure?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", - "advancement.create.windmill": "Une brise moyenne...", - "advancement.create.windmill.desc": "Construire un moulin à vent", - "advancement.create.maxed_windmill": "Et une forte brise.", - "advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary Breakers", - "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical Drill.", - "advancement.create.press": "UNLOCALIZED: Press Goes 'Bonk!'", - "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "UNLOCALIZED: Beep Boop", - "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", - "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical Saw.", - "advancement.create.basin": "UNLOCALIZED: Basin Operation", - "advancement.create.basin.desc": "UNLOCALIZED: Place a Basin and try throwing items into it.", - "advancement.create.mixer": "UNLOCALIZED: Mixin' It Up", - "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "UNLOCALIZED: A living Fireplace", - "advancement.create.blaze_burner.desc": "UNLOCALIZED: Obtain a Blaze Burner.", - "advancement.create.compact": "UNLOCALIZED: Automated Compacting", - "advancement.create.compact.desc": "UNLOCALIZED: Use a Press and a Basin to compact some items.", - "advancement.create.brass": "UNLOCALIZED: Actual Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "UNLOCALIZED: Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "UNLOCALIZED: A world of Imagination", - "advancement.create.chocolate.desc": "UNLOCALIZED: Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.item_drain.desc": "UNLOCALIZED: Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "UNLOCALIZED: Let it roll!", - "advancement.create.chained_item_drain.desc": "UNLOCALIZED: Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "UNLOCALIZED: Flow Spy", - "advancement.create.glass_pipe.desc": "UNLOCALIZED: Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "UNLOCALIZED: Never cross the Streams!", - "advancement.create.pipe_collision.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "UNLOCALIZED: There's a leak!", - "advancement.create.pipe_spill.desc": "UNLOCALIZED: Watch an open end of a pipe take or place fluids into the world.", - "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.infinite_water": "UNLOCALIZED: Draining the Ocean", - "advancement.create.infinite_water.desc": "UNLOCALIZED: Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "UNLOCALIZED: Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "UNLOCALIZED: Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "UNLOCALIZED: Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "UNLOCALIZED: Signs of Style", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers hate him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", - "advancement.create.integrated_circuit": "UNLOCALIZED: Complex Calculation", - "advancement.create.integrated_circuit.desc": "UNLOCALIZED: Assemble an Integrated Circuit.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "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_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", - "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", - "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "UNLOCALIZED: End of Beta", - "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Palettes", - "death.attack.create.crush": "%1$s a été concassé.e", - "death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud", - "death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave", - "death.attack.create.mechanical_drill": "%1$s a été empalé par une perceuse mécanique", - "death.attack.create.mechanical_saw": "%1$s a été coupé en deux par une scie mécanique", - "death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée", - "create.block.deployer.damage_source_name": "un déployeur voyou", - "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Ecrasement", - "create.recipe.milling": "Mouture", - "create.recipe.fan_washing": "Lavage", - "create.recipe.fan_washing.fan": "Ventilateur derrière de l'eau", - "create.recipe.fan_smoking": "Fumage", - "create.recipe.fan_smoking.fan": "Ventilateur derrière du feu", - "create.recipe.fan_blasting": "Fonte", - "create.recipe.fan_blasting.fan": "Ventilateur derrière de la lave", - "create.recipe.pressing": "Pressage", - "create.recipe.mixing": "Mixage", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "Alchimie automatisée", - "create.recipe.packing": "Compactage", - "create.recipe.automatic_packing": "Compactage automatisé", - "create.recipe.sawing": "Sciage", - "create.recipe.mechanical_crafting": "Fabrication mécanique", - "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", - "create.recipe.block_cutting": "Coupe de bloc", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "Polissage au papier de verre", - "create.recipe.mystery_conversion": "Métamorphose chromatique", - "create.recipe.spout_filling": "Remplissage par un bec verseur", - "create.recipe.draining": "UNLOCALIZED: Item Draining", - "create.recipe.processing.chance": "%1$s%% de chance", - "create.recipe.heat_requirement.none": "Pas de chauffage requis", - "create.recipe.heat_requirement.heated": "Chauffé", - "create.recipe.heat_requirement.superheated": "Surchauffé", - - "create.generic.range": "Portée", - "create.generic.radius": "Rayon", - "create.generic.width": "Largeur", - "create.generic.height": "Hauteur", - "create.generic.length": "Longueur", - "create.generic.speed": "Vitesse", - "create.generic.delay": "Delai", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Secondes", - "create.generic.unit.minutes": "Minutes", - "create.generic.unit.rpm": "tr/min", - "create.generic.unit.stress": "us", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smS", - "create.generic.clockwise": "dans le sens horaire", - "create.generic.counter_clockwise": "dans le sens anti-horaire", - - "create.action.scroll": "Faire défiler", - "create.action.confirm": "Confirmer", - "create.action.abort": "Abandonner", - "create.action.saveToFile": "Sauvegarder", - "create.action.discard": "Annuler", - - "create.keyinfo.toolmenu": "Focus sur le menu de l'outil", - "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - - "create.gui.scrollInput.defaultTitle": "Choisissez une option:", - "create.gui.scrollInput.scrollToModify": "Faites défiler pour modifier", - "create.gui.scrollInput.scrollToAdjustAmount": "Faites défiler pour ajuster le montant", - "create.gui.scrollInput.scrollToSelect": "Faites défiler pour sélectionner", - "create.gui.scrollInput.shiftScrollsFaster": "Maj pour défiler plus rapidement", - "create.gui.toolmenu.focusKey": "Enfoncez [%1$s] pour focus", - "create.gui.toolmenu.cycle": "[SCROLL] pour cycler", - "create.gui.symmetryWand.mirrorType": "Mirroir", - "create.gui.symmetryWand.orientation": "Orientation", - - "create.symmetry.mirror.plane": "Miroir une fois", - "create.symmetry.mirror.doublePlane": "Rectangulaire", - "create.symmetry.mirror.triplePlane": "Octogonal", - - "create.orientation.orthogonal": "Orthogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Sur Z", - "create.orientation.alongX": "Sur X", - - "create.gui.terrainzapper.title": "Térraformeur portable", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "Placement", - "create.gui.terrainzapper.placement.merged": "Fusionner", - "create.gui.terrainzapper.placement.attached": "Attacher", - "create.gui.terrainzapper.placement.inserted": "Inserer", - "create.gui.terrainzapper.brush": "Pinceau", - "create.gui.terrainzapper.brush.cuboid": "Cuboïde", - "create.gui.terrainzapper.brush.sphere": "Sphère", - "create.gui.terrainzapper.brush.cylinder": "Cylindre", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "Outil", - "create.gui.terrainzapper.tool.fill": "Remplir", - "create.gui.terrainzapper.tool.place": "Placer", - "create.gui.terrainzapper.tool.replace": "Remplacer", - "create.gui.terrainzapper.tool.clear": "Effacer", - "create.gui.terrainzapper.tool.overlay": "Recouvrir", - "create.gui.terrainzapper.tool.flatten": "Applatir", - - "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", - "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", - "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", - - "create.contraptions.movement_mode": "Mode de mouvement", - "create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt", - "create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ", - "create.contraptions.movement_mode.move_never_place": "Ne placer que Quand l'ancre est détruite", - "create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt", - "create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial", - "create.contraptions.movement_mode.rotate_never_place": "Ne placer que Quand l'ancre est détruite", - "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", - "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", - "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", - "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", - "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", - "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", - "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", - "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", - - "create.logistics.filter": "Filtre", - "create.logistics.recipe_filter": "Filtre de recettes", - "create.logistics.fluid_filter": "Filtre de fuides", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filtre appliqué à %1$s.", - "create.logistics.filter.apply_click_again": "Filtre appliqué à %1$s, appuiez de nouveau pour copier le montant", - "create.logistics.filter.apply_count": "Montant d'extraction appliqué au filtre", - - "create.gui.goggles.generator_stats": "Statistiques du générateur:", - "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", - "create.gui.goggles.at_current_speed": "À la vitesse actuelle", - "create.gui.goggles.pole_length": "Longueur de la barre", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "Informations sur la jauge:", - "create.gui.speedometer.title": "Vitesse de rotation", - "create.gui.stressometer.title": "Stress du réseau", - "create.gui.stressometer.capacity": "Capacité restante", - "create.gui.stressometer.overstressed": "Surmenée", - "create.gui.stressometer.no_rotation": "Pas de rotation", - "create.gui.contraptions.not_fast_enough": "Il semblerais que ce.t.te %1$s ne tourne _pas_ à la _vitesse_ _suffisante_.", - "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "Caisse réglable", - "create.gui.adjustable_crate.storageSpace": "Espace de stockage", - "create.gui.stockpile_switch.title": "Commutateur de stockage", - "create.gui.stockpile_switch.invert_signal": "Inverser le signal", - "create.gui.stockpile_switch.move_to_lower_at": "Bouger sur la ligne du bas à %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Bouger sur la ligne de haut à %1$s%%", - "create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé", - "create.gui.sequenced_gearshift.instruction": "Instructions", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Tourner", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "Fin", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "create.gui.sequenced_gearshift.speed": "Vitesse, direction", - "create.gui.sequenced_gearshift.speed.forward": "Vitesse d'entrée, normal", - "create.gui.sequenced_gearshift.speed.forward_fast": "Vitesse double, normal", - "create.gui.sequenced_gearshift.speed.back": "Vitesse d'entrée, inversé", - "create.gui.sequenced_gearshift.speed.back_fast": "Vitesse double, inversée", - - "create.schematicAndQuill.dimensions": "Taille du schéma: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Première position définie.", - "create.schematicAndQuill.secondPos": "Seconde position définie.", - "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", - "create.schematicAndQuill.abort": "Sélection supprimée.", - "create.schematicAndQuill.title": "Nom du schéma:", - "create.schematicAndQuill.convert": "Enregistrer et déployer immédiatement", - "create.schematicAndQuill.fallbackName": "Mon schéma", - "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", - - "create.schematic.invalid": "[!] objet invalide - Utilisez plutôt la table à schéma", - "create.schematic.position": "Position", - "create.schematic.rotation": "Rotation", - "create.schematic.rotation.none": "Aucune", - "create.schematic.rotation.cw90": "Sens horaire 90", - "create.schematic.rotation.cw180": "Sens horaire 180", - "create.schematic.rotation.cw270": "Sens horaire 270", - "create.schematic.mirror": "Mirroir", - "create.schematic.mirror.none": "Aucun", - "create.schematic.mirror.frontBack": "Avant-Arrière", - "create.schematic.mirror.leftRight": "Gauche-Droite", - "create.schematic.tool.deploy": "Déployer", - "create.schematic.tool.move": "Déplacer XZ", - "create.schematic.tool.movey": "Déplacer Y", - "create.schematic.tool.rotate": "Tourner", - "create.schematic.tool.print": "Imprimer", - "create.schematic.tool.flip": "Retourner", - "create.schematic.tool.deploy.description.0": "Déplace la structure vers un emplacement.", - "create.schematic.tool.deploy.description.1": "Clic droit sur le sol pour placer.", - "create.schematic.tool.deploy.description.2": "Maintenez [Ctrl] pour sélectionner à une distance fixe.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Défiler pour changer la distance.", - "create.schematic.tool.move.description.0": "Décale le schéma horizontalement.", - "create.schematic.tool.move.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le pousser.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Décale le schéma verticalement.", - "create.schematic.tool.movey.description.1": "[CTRL]-Défiler pour le déplacer vers le haut / bas.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Fait pivoter le schéma autour de son centre.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Défiler pour faire une rotation de 90 degrés.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Place instantanément la structure dans le monde.", - "create.schematic.tool.print.description.1": "[Clic droit] pour confirmer le placement à l'emplacement actuel.", - "create.schematic.tool.print.description.2": "Cet outil est uniquement pour le mode créatif.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Retourne le schéma le long de la face que vous sélectionnez.", - "create.schematic.tool.flip.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le retourner.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Votre schéma est trop grand.", - "create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:", - - "create.gui.schematicTable.refresh": "Actualiser les fichiers", - "create.gui.schematicTable.open_folder": "Ouvrir le dossier", - "create.gui.schematicTable.title": "Table à schéma", - "create.gui.schematicTable.availableSchematics": "Schémas disponibles", - "create.gui.schematicTable.noSchematics": "Aucun schéma enregistré", - "create.gui.schematicTable.uploading": "Téléchargement...", - "create.gui.schematicTable.finished": "Téléchargement terminé!", - "create.gui.schematicannon.title": "Schémacanon", - "create.gui.schematicannon.listPrinter": "Imprimante de liste de matériaux", - "create.gui.schematicannon.gunpowderLevel": "Poudre à canon à %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Tirs restants: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Avec sauvegarde: %1$s", - "create.gui.schematicannon.optionEnabled": "Actuellement activé", - "create.gui.schematicannon.optionDisabled": "Actuellement désactivé", - "create.gui.schematicannon.showOptions": "Afficher les paramètres d'impression", - "create.gui.schematicannon.option.dontReplaceSolid": "Ne remplacez pas les blocs solides", - "create.gui.schematicannon.option.replaceWithSolid": "Remplacer solide par solide", - "create.gui.schematicannon.option.replaceWithAny": "Remplacer le solide par n'importe quoi", - "create.gui.schematicannon.option.replaceWithEmpty": "Remplacer le solide par rien", - "create.gui.schematicannon.option.skipMissing": "Ignorer les blocs manquants", - "create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities", - "create.gui.schematicannon.slot.gunpowder": "Ajouter de la poudre a canon pour alimenter le canon", - "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", - "create.gui.schematicannon.option.skipMissing.description": "Si le canon ne peut pas trouver un bloc requis pour le placement, il continuera au prochain emplacement.", - "create.gui.schematicannon.option.skipTileEntities.description": "Le canon évitera de remplacer les blocs de stockage de données tels que les coffres.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Le canon ne remplacera jamais les blocs solides dans sa zone de travail, seulement non solides et air.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Le canon ne remplacera les blocs solides dans sa zone de travail que si le schéma contient un bloc solide à l'emplacement.", - "create.gui.schematicannon.option.replaceWithAny.description": "Le canon remplacera les blocs solides dans sa zone de travail si le schéma contient un bloc à l'emplacement.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Le canon effacera tous les blocs dans sa zone de travail, y compris ceux remplacés par de l'air.", - - "create.schematicannon.status.idle": "Repos", - "create.schematicannon.status.ready": "Prêt", - "create.schematicannon.status.running": "En cours", - "create.schematicannon.status.finished": "Terminé", - "create.schematicannon.status.paused": "Pausé", - "create.schematicannon.status.stopped": "Arrêté", - "create.schematicannon.status.noGunpowder": "Plus de poudre à canon", - "create.schematicannon.status.targetNotLoaded": "Le bloc n'est pas chargé", - "create.schematicannon.status.targetOutsideRange": "Cible trop lointaine", - "create.schematicannon.status.searching": "Recherche", - "create.schematicannon.status.skipping": "Saut", - "create.schematicannon.status.missingBlock": "Blocs manquants:", - "create.schematicannon.status.placing": "Placement", - "create.schematicannon.status.clearing": "Suppression des blocs", - "create.schematicannon.status.schematicInvalid": "Schéma non valide", - "create.schematicannon.status.schematicNotPlaced": "Schéma non déployé", - "create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration", - - "create.materialChecklist": "Liste des matériaux", - "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "Liste noire", - "create.gui.filter.deny_list.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.", - "create.gui.filter.allow_list": "Liste blanche", - "create.gui.filter.allow_list.description": "Les éléments réussissent s'ils correspondent à l'un des éléments ci-dessus. Une liste blanche vide rejette tout.", - "create.gui.filter.respect_data": "Respect des données", - "create.gui.filter.respect_data.description": "Les objets ne correspondent que si leur durabilité, leurs enchantements et autres attributs correspondent également.", - "create.gui.filter.ignore_data": "Ignorer les données", - "create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.", - - "create.item_attributes.placeable": "est placeable", - "create.item_attributes.placeable.inverted": "n'est pas plaçable", - "create.item_attributes.consumable": "peut être mangé", - "create.item_attributes.consumable.inverted": "ne peut pas être mangé", - "create.item_attributes.smeltable": "peut être fondu", - "create.item_attributes.smeltable.inverted": "ne peut pas être fondu", - "create.item_attributes.washable": "peut être lavé", - "create.item_attributes.washable.inverted": "ne peut pas être lavé", - "create.item_attributes.smokable": "peut être fumé", - "create.item_attributes.smokable.inverted": "ne peut pas être fumé", - "create.item_attributes.crushable": "peut être concassé", - "create.item_attributes.crushable.inverted": "ne peut pas être concassé", - "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.enchanted": "est enchanté", - "create.item_attributes.enchanted.inverted": "n'est pas enchanté", - "create.item_attributes.damaged": "est endommagé", - "create.item_attributes.damaged.inverted": "n'est pas endomagé", - "create.item_attributes.badly_damaged": "est fortement damaged", - "create.item_attributes.badly_damaged.inverted": "n'est pas fortement endomagé", - "create.item_attributes.not_stackable": "ne peut pas s'empiler", - "create.item_attributes.not_stackable.inverted": "peut être empilé", - "create.item_attributes.equipable": "peut être équipé", - "create.item_attributes.equipable.inverted": "ne peut pas être équipé", - "create.item_attributes.furnace_fuel": "est du combustible", - "create.item_attributes.furnace_fuel.inverted": "n'est pas un combustible", - "create.item_attributes.in_tag": "est étiqueté %1$s", - "create.item_attributes.in_tag.inverted": "n'est pas étiqueté", - "create.item_attributes.in_item_group": "appartient à %1$s", - "create.item_attributes.in_item_group.inverted": "n'appartient pas à %1$s'", - "create.item_attributes.added_by": "a été ajouté par %1$s", - "create.item_attributes.added_by.inverted": "n'a pas été ajouté par %1$s", - "create.item_attributes.has_enchant": "est enchanté %1$s", - "create.item_attributes.has_enchant.inverted": "n'est pas enchenté %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.has_fluid": "contient %1$s", - "create.item_attributes.has_fluid.inverted": "ne contient pas %1$s", - "create.item_attributes.has_name": "est renommé %1$s", - "create.item_attributes.has_name.inverted": "n'est pas renommé %1$s", - "create.item_attributes.book_author": "a été écrit par %1$s", - "create.item_attributes.book_author.inverted": "n'a pas été écrit par %1$s", - "create.item_attributes.book_copy_original": "est originel", - "create.item_attributes.book_copy_original.inverted": "n'est pas originel", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "Aucun attribut sélectionné", - "create.gui.attribute_filter.selected_attributes": "Attributs sélectionnés:", - "create.gui.attribute_filter.add_attribute": "UNLOCALIZED: Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "Liste blanche (n'importe)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Les objets réussissent s'ils possèdent l'un des attributs sélectionnés.", - "create.gui.attribute_filter.allow_list_conjunctive": "Liste blanche (tout)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Les objets ne passent que s'ils ont TOUS les attributs sélectionnés.", - "create.gui.attribute_filter.deny_list": "Liste noire", - "create.gui.attribute_filter.deny_list.description": "Les éléments réussissent s'ils n'ont AUCUN des attributs sélectionnés.", - "create.gui.attribute_filter.add_reference_item": "Ajouter un objet de référence", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Maj", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Vitesse requise: %1$s", - "create.tooltip.speedRequirement.none": "Aucune", - "create.tooltip.speedRequirement.medium": "Modérée", - "create.tooltip.speedRequirement.high": "Rapide", - "create.tooltip.stressImpact": "Impact du stress: %1$s", - "create.tooltip.stressImpact.low": "Faible", - "create.tooltip.stressImpact.medium": "Modéré", - "create.tooltip.stressImpact.high": "Elevé", - "create.tooltip.stressImpact.overstressed": "Surmené", - "create.tooltip.capacityProvided": "Capacité de stress: %1$s", - "create.tooltip.capacityProvided.low": "Petite", - "create.tooltip.capacityProvided.medium": "Moyenne", - "create.tooltip.capacityProvided.high": "Grande", - "create.tooltip.generationSpeed": "Génère à %1$s %2$s", - "create.tooltip.analogStrength": "Force analogique: %1$s/15", - - "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", - "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", - "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", - - "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", - - "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", - "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", - "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", - "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", - "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", - - "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", - "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", - "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", - "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", - "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", - "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push 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.contains": "UNLOCALIZED: Contains: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", - "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", - "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", - "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", - "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "Fin de schémacanon", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "Bruit de slime", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "Tir de schémacanon", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "Activation de la presse mechanique", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "OBJET EXEMPLE (juste une indication que cette info-bulle existe)", - "item.create.example_item.tooltip.summary": "Une brève description de l'objet. Les _underscores_ surligne les mots.", - "item.create.example_item.tooltip.condition1": "Quand ceci", - "item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)", - "item.create.example_item.tooltip.condition2": "Et quand cela", - "item.create.example_item.tooltip.behaviour2": "Vous pouvez ajouter autant de comportements que vous le souhaitez", - "item.create.example_item.tooltip.control1": "Quand Ctrl enfoncé", - "item.create.example_item.tooltip.action1": "Ces commandes sont affichées.", - - "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", - - "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", - - "block.create.copper_casing.tooltip": "UNLOCALIZED: COPPER CASING", - "block.create.copper_casing.tooltip.summary": "UNLOCALIZED: Robust machine casing with a variety of uses. Safe for decoration.", - "block.create.copper_casing.tooltip.condition1": "UNLOCALIZED: When used on Fluid Pipe", - "block.create.copper_casing.tooltip.behaviour1": "UNLOCALIZED: _Encases_ the _Fluid Pipe_ with the _Copper Casing_. Encased Fluid pipes will _lock their connections_ in place, no longer reacting to changes to neighbouring pipes.", - - "block.create.encased_fluid_pipe.tooltip": "UNLOCALIZED: ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "UNLOCALIZED: A _Fluid Pipe_ encased with the _Copper Casing_.", - - "block.create.seat.tooltip": "UNLOCALIZED: SEAT", - "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.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", - - "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", - - "block.create.fluid_pipe.tooltip": "UNLOCALIZED: FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "UNLOCALIZED: Used for moving _fluids_ around. Needs a _Mechanical Pump_ to get the _fluid_ moving.", - "block.create.fluid_pipe.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.fluid_pipe.tooltip.behaviour1": "UNLOCALIZED: Can connect to _fluid containers_ such as _Tanks_ or _Basins_. Exposed _pipe_ ends can also drain or place fluid blocks. Be careful of leaks!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "UNLOCALIZED: HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "UNLOCALIZED: Used for _placing_ or _draining_ large _fluid bodies_ in the world.", - "block.create.hose_pulley.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.hose_pulley.tooltip.behaviour1": "UNLOCALIZED: _Raises_ or _Lowers_ the hose, location of the hose determines up to which _height extraction_ or _filling_ will act.", - "block.create.hose_pulley.tooltip.condition2": "UNLOCALIZED: When Fluids pulled from Pulley", - "block.create.hose_pulley.tooltip.behaviour2": "UNLOCALIZED: Starts _taking fluid_ blocks from the body the hose end was lowered into. Very _large bodies_ of fluids will be _considered infinite_.", - "block.create.hose_pulley.tooltip.condition3": "UNLOCALIZED: When Fluids pushed to Pulley", - "block.create.hose_pulley.tooltip.behaviour3": "UNLOCALIZED: Starts _filling fluid_ into the world _up to_ the _hose_ ends' _height_.", - - "block.create.fluid_tank.tooltip": "UNLOCALIZED: FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "UNLOCALIZED: _Stores_ all your favourite _fluids_. Scales in width and height.", - "block.create.fluid_tank.tooltip.condition1": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_tank.tooltip.behaviour1": "UNLOCALIZED: Changes the optional window", - - "block.create.creative_fluid_tank.tooltip": "UNLOCALIZED: CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "UNLOCALIZED: This _Fluid Tank_ allows infinite replication of any Fluid. Scales in width and height.", - "block.create.creative_fluid_tank.tooltip.condition1": "UNLOCALIZED: When Fluid in Tank", - "block.create.creative_fluid_tank.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this tank will provide an _endless supply_ of the fluid specified. Fluids _inserted_ into this tank will be _voided._", - "block.create.creative_fluid_tank.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.creative_fluid_tank.tooltip.behaviour2": "UNLOCALIZED: Changes the optional window", - - "block.create.fluid_valve.tooltip": "UNLOCALIZED: FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "UNLOCALIZED: Halts the flow of fluid down a pipe.", - "block.create.fluid_valve.tooltip.condition1": "UNLOCALIZED: Controllable flow", - "block.create.fluid_valve.tooltip.behaviour1": "UNLOCALIZED: Applied _rotational force_ will force the _valve_ to close, ceasing the flow of _fluids_. Reverse the direction of the _rotational force_ to re-open the valve.", - - "block.create.mechanical_pump.tooltip": "UNLOCALIZED: MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "UNLOCALIZED: Takes _rotational force_ and uses it to move _fluid_ along a _pipe_. Has a maximum range of effect in both directions. (16 blocks by default)", - "block.create.mechanical_pump.tooltip.condition1": "UNLOCALIZED: Fluid Flow", - "block.create.mechanical_pump.tooltip.behaviour1": "UNLOCALIZED: Applied _rotational force_ creates pressure that forces _fluid_ through the _pipe_ network. Reverse the direction of the _rotational force_ to switch the direction that the _fluid_ flows.", - "block.create.mechanical_pump.tooltip.control1": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.mechanical_pump.tooltip.action1": "UNLOCALIZED: Reverses the direction of the _pump_, switching the default direction of the flow", - - "block.create.smart_fluid_pipe.tooltip": "UNLOCALIZED: SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "UNLOCALIZED: A _fluid pipe_ with a filter. Can specify which _fluids_ pass through.", - "block.create.smart_fluid_pipe.tooltip.condition1": "UNLOCALIZED: When Fluids are pushed into it", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "UNLOCALIZED: Smart pipes receiving fluid that does not match its filter will block the flow.", - "block.create.smart_fluid_pipe.tooltip.condition2": "UNLOCALIZED: When adjacent to fluid container", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Smart pipes _starting_ a _flow_ from any container will only extract fluids that _match_ its _filter._", - - "block.create.spout.tooltip": "UNLOCALIZED: SPOUT", - "block.create.spout.tooltip.summary": "UNLOCALIZED: An injector for refilling your _fluid items._", - "block.create.spout.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.spout.tooltip.behaviour1": "UNLOCALIZED: When a _fluid container item_ such as a _bucket_ or _bottle_ is placed underneath, the spout will attempt to refill it with it's own stored _fluid_.", - "block.create.spout.tooltip.condition2": "UNLOCALIZED: Fluid Automation", - "block.create.spout.tooltip.behaviour2": "UNLOCALIZED: The spout placed above a _belt_ or _depot_ will react automatically with a _fluid container item_ that passes beneath it.", - - "block.create.item_drain.tooltip": "UNLOCALIZED: ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "UNLOCALIZED: A grated depot for emptying your _fluid items._", - "block.create.item_drain.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.item_drain.tooltip.behaviour1": "UNLOCALIZED: When a _fluid container item_ such as a _bucket_ or _bottle_ is inserted from the side, the drain will attempt to empty it into its own _fluid container_. The item will then be ejected on the opposite side.", - - "item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE", - "item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.", - "item.create.wand_of_symmetry.tooltip.condition1": "Quand positionné dans la barre active", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Reste actif", - "item.create.wand_of_symmetry.tooltip.control1": "Clic droit au sol", - "item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir", - "item.create.wand_of_symmetry.tooltip.control2": "Clic droit dans les airs", - "item.create.wand_of_symmetry.tooltip.action2": "_Retire_ le mirroir actif", - "item.create.wand_of_symmetry.tooltip.control3": "Clic droit en étant accroupi", - "item.create.wand_of_symmetry.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", - - "item.create.handheld_worldshaper.tooltip": "TERRAFORMEUR", - "item.create.handheld_worldshaper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", - "item.create.handheld_worldshaper.tooltip.control1": "Clic gauche sur un bloc", - "item.create.handheld_worldshaper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", - "item.create.handheld_worldshaper.tooltip.control2": "Clic droit sur un bloc", - "item.create.handheld_worldshaper.tooltip.action2": "Applique le _pinceau_ et l'_outil_ actuellement sélectionnés à l'emplacement ciblé.", - "item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi", - "item.create.handheld_worldshaper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", - - "item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRES", - "item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'rotors communs.", - "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'rotor", - "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des rotors _indépendamment_ de leurs _conditions_ _d'emplacement_", - - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.", - "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", - "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - - "item.create.filter.tooltip": "FILTRE", - "item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", - "item.create.filter.tooltip.condition1": "Quand dans l'emplacement de filtre", - "item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", - "item.create.filter.tooltip.condition2": "Clic droit", - "item.create.filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", - - "item.create.attribute_filter.tooltip": "FILTRE D'ATTRIBUTS", - "item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", - "item.create.attribute_filter.tooltip.condition1": "Quand dans l'emplacement de filtre", - "item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "Clic droit", - "item.create.attribute_filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", - - "item.create.empty_schematic.tooltip": "SCHÉMA VIDE", - "item.create.empty_schematic.tooltip.summary": "Utilisé comme ingrédient de recette et pour écrire à la _table_ _à_ _schéma_.", - - "item.create.schematic.tooltip": "SCHÉMA", - "item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.", - "item.create.schematic.tooltip.condition1": "Quand tenu en main", - "item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.", - "item.create.schematic.tooltip.control1": "Clic droit en étant accroupi", - "item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.", - - "item.create.schematic_and_quill.tooltip": "SCHÉMA ET PLUME", - "item.create.schematic_and_quill.tooltip.summary": "Utilisé pour enregistrer une structure de votre monde dans un fichier .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Étape 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Sélectionnez deux points d'angle à l'aide du clic droit.", - "item.create.schematic_and_quill.tooltip.condition2": "Étape 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Défilement_ sur les faces pour ajuster la taille. Cliquez à nouveau pour enregistrer.", - "item.create.schematic_and_quill.tooltip.control1": "Clic droit", - "item.create.schematic_and_quill.tooltip.action1": "Sélectionnez un point d'angle / confirmez la sauvegarde.", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl maintenu", - "item.create.schematic_and_quill.tooltip.action2": "Sélectionnez des points _dans_ _les_ _airs_. Faites défiler pour régler la distance.", - "item.create.schematic_and_quill.tooltip.control3": "Clic droit en étant accroupi", - "item.create.schematic_and_quill.tooltip.action3": "_Réinitialise_ et supprime la sélection.", - - "block.create.schematicannon.tooltip": "SCHÉMACANON", - "block.create.schematicannon.tooltip.summary": "Tire des blocs pour recréer un _schéma_ déployé dans le monde. Utilise des objets des inventaires adjacents et de la _poudre_ _à_ _canon_ comme carburant.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "TABLE À SCHÉMA", - "block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.", - "block.create.schematic_table.tooltip.condition1": "Quand donné un schéma vide", - "block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.", - - "item.create.goggles.tooltip": "LUNETTES", - "item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.", - "item.create.goggles.tooltip.condition1": "Quand portées", - "item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.", - "item.create.goggles.tooltip.condition2": "Quand vision portée sur une jauge", - "item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "CLÉ", - "item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.", - "item.create.wrench.tooltip.control1": "Clic droit sur un bloc de Create", - "item.create.wrench.tooltip.action1": "_Tourne_ le _composant_ le long de l'axe dépendant de la face avec lequel vous avez interagi.", - "item.create.wrench.tooltip.control2": "Clic droit en étant accroupi", - "item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.", - - "block.create.nozzle.tooltip": "BUSE", - "block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ enchâssé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.", - - "block.create.cuckoo_clock.tooltip": "COUCOU", - "block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.", - "block.create.cuckoo_clock.tooltip.condition1": "Quand tourné", - "block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.", - - "block.create.turntable.tooltip": "PLAQUE TOURNANTE", - "block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en énergie cinétique.", - - "block.create.portable_fluid_interface.tooltip": "UNLOCALIZED: PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving fluids_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley. Two meeting interfaces have to _face each other_ and be spaced _1-2 blocks apart_.", - "block.create.portable_fluid_interface.tooltip.condition1": "UNLOCALIZED: While Moving", - "block.create.portable_fluid_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _portable storage interfaces_ to transfer fluids to or from the contraption. Pipes inserting into or extracting from the _Stationary Interface_ will interact with the tanks on the contraption _directly._ The structure will briefly stall as Fluids are exchanged.", - "block.create.portable_fluid_interface.tooltip.condition2": "UNLOCALIZED: When Powered by Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "UNLOCALIZED: _Disengages_ any active connection immediately.", - - "block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE", - "block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.", - "block.create.stockpile_switch.tooltip.condition1": "Lorsqu'en dessous de la limite de stockage minimum", - "block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_", - - "block.create.content_observer.tooltip": "OBSERVATEUR DE CONTENU", - "block.create.content_observer.tooltip.summary": "_Détecte les objets_ à l'intérieur des _conteneurs_ et des _transporteurs_ correspondant à un _filtre_ configuré. Tant que l'_inventaire_, le _tapis roulant_ ou la _glissière_ observé _contient_ un objet correspondant, ce composant émet un _signal de redstone_. Quand un _entonnoir_ observé _transfère_ un objet correspondant, ce composant émet une _impulsion de redstone_.", - - "block.create.adjustable_crate.tooltip": "CAISSE AJUSTABLE", - "block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "CAISSE CRÉATIVE", - "block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.", - "block.create.creative_crate.tooltip.condition1": "Quand un objet se trouve dans l'emplacement de filtrage", - "block.create.creative_crate.tooltip.behaviour1": "Tout ce qui _extrait_ de ce conteneur aura une _alimentation illimitée_ de l'objet spécifié. Les objets _insérés_ dans cette caisse seront _éliminés_.", - - "block.create.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "PAPIER DE VERRE", - "item.create.sand_paper.tooltip.summary": "Un papier rugueux qui peut être utilisé pour _polir des matériaux_. Peut être appliqué automatiquement à l'aide du déployeur.", - "item.create.sand_paper.tooltip.condition1": "Quand utilisé", - "item.create.sand_paper.tooltip.behaviour1": "Polit les objets qui se tenus dans la _main secondaire_ ou par terre quand on les _regarde_.", - - "item.create.builders_tea.tooltip": "THÉ DU CONSTRUCTEUR", - "item.create.builders_tea.tooltip.summary": "La boisson parfaite pour commencer la journée - _motivante_ et _rasasiante_.", - - "item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ", - "item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.", - - "item.create.shadow_steel.tooltip": "ACIER SOMBRE", - "item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.", - - "item.create.minecart_coupling.tooltip": "LIEN POUR WAGONS", - "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - - "create.tooltip.wip": "En cours", - "create.tooltip.workInProgress": "En cours!", - "create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.", - "create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.", - "create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.", - "create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agite les doigts* circulez.", - "create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Croyez-moi, c'est inutile.", - "create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.", - "create.tooltip.randomWipDescription7": "Celui-ci n'est peut-être pas pour vous. Que dire de celui-là?", - "create.tooltip.randomWipDescription8": "Utilisez-le et regrettez immédiatement votre décision.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json deleted file mode 100644 index cb2f4c0c1..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 686", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "Finestra di acacia", - "block.create.acacia_window_pane": "Pannello di finestra di acacia", - "block.create.adjustable_chain_gearshift": "Cambio a catena regolabile", - "block.create.adjustable_crate": "Baule regolabile", - "block.create.adjustable_pulse_repeater": "Ripetitore di impulsi regolabile", - "block.create.adjustable_repeater": "Ripetitore regolabile", - "block.create.analog_lever": "Leva analogica", - "block.create.andesite_belt_funnel": "Imbuto per nastro di andesite", - "block.create.andesite_bricks": "Mattoni di andesite", - "block.create.andesite_bricks_slab": "Lastra di mattoni di andesite", - "block.create.andesite_bricks_stairs": "Scalini di mattoni di andesite", - "block.create.andesite_bricks_wall": "Muretto di mattoni di andesite", - "block.create.andesite_casing": "Involucro di andesite", - "block.create.andesite_cobblestone": "Pietrisco di andesite", - "block.create.andesite_cobblestone_slab": "Lastra di pietrisco di andesite", - "block.create.andesite_cobblestone_stairs": "Scalini di pietrisco di andesite", - "block.create.andesite_cobblestone_wall": "Muretto di pietrisco di andesite", - "block.create.andesite_encased_shaft": "Albero incassato di andesite", - "block.create.andesite_funnel": "Imbuto di andesite", - "block.create.andesite_pillar": "Pilastro di andesite", - "block.create.andesite_tunnel": "Tunnel di andesite", - "block.create.basin": "Bacinella", - "block.create.belt": "Nastro meccanico", - "block.create.birch_window": "Finestra di betulla", - "block.create.birch_window_pane": "Pannello di finestra di betulla", - "block.create.black_sail": "Vela nera", - "block.create.black_seat": "Sedile nero", - "block.create.black_valve_handle": "Maniglia per valvola nera", - "block.create.blaze_burner": "Inceneritore di blaze", - "block.create.blue_sail": "Vela blu", - "block.create.blue_seat": "Sedile blu", - "block.create.blue_valve_handle": "Maniglia per valvola blu", - "block.create.brass_belt_funnel": "Imbuto per nastro di ottone", - "block.create.brass_block": "Blocco di ottone", - "block.create.brass_casing": "Involucro di ottone", - "block.create.brass_encased_shaft": "Albero incassato di ottone", - "block.create.brass_funnel": "Imbuto di ottone", - "block.create.brass_tunnel": "Tunnel di ottone", - "block.create.brown_sail": "Vela marrone", - "block.create.brown_seat": "Sedile marrone", - "block.create.brown_valve_handle": "Maniglia per valvola marrone", - "block.create.cart_assembler": "Assemblatore di carrelli da miniera", - "block.create.chiseled_dark_scoria": "Scoria scura cesellata", - "block.create.chiseled_dolomite": "Dolomite cesellata", - "block.create.chiseled_gabbro": "Gabbro cesellato", - "block.create.chiseled_limestone": "Calcare cesellato", - "block.create.chiseled_scoria": "Scoria cesellata", - "block.create.chiseled_weathered_limestone": "Calcare consumato cesellato", - "block.create.chocolate": "Cioccolato", - "block.create.chute": "Scivolo", - "block.create.clockwork_bearing": "Supporto dell'orologio", - "block.create.clutch": "Frizione", - "block.create.cogwheel": "Ruota dentata", - "block.create.content_observer": "Osservatore dei contenuti", - "block.create.controller_rail": "Binario di controllo", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "Blocco di rame", - "block.create.copper_casing": "Involucro di rame", - "block.create.copper_ore": "Rame grezzo", - "block.create.copper_shingles": "Tegole di rame", - "block.create.copper_tiles": "Piastrelle di rame", - "block.create.copper_valve_handle": "Maniglia per valvola di rame", - "block.create.creative_crate": "Creatore cannoneschematico", - "block.create.creative_fluid_tank": "Serbatoio per fluidi (creativa)", - "block.create.creative_motor": "Motore (creativa)", - "block.create.crimson_window": "UNLOCALIZED: Crimson Window", - "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", - "block.create.crushing_wheel": "Ruota di frantumazione", - "block.create.crushing_wheel_controller": "Telecomando per ruota di frantumazione", - "block.create.cuckoo_clock": "Orologio a cucù", - "block.create.cyan_sail": "Vela ciano", - "block.create.cyan_seat": "Sedile ciano", - "block.create.cyan_valve_handle": "Maniglia per valvola ciano", - "block.create.dark_oak_window": "Finestra di quercia scura", - "block.create.dark_oak_window_pane": "Pannello di finestra di quercia scura", - "block.create.dark_scoria": "Scoria scura", - "block.create.dark_scoria_bricks": "Mattoni di scoria scura", - "block.create.dark_scoria_bricks_slab": "Lastra di mattoni di scoria scura", - "block.create.dark_scoria_bricks_stairs": "Scalini di mattoni di scoria scura", - "block.create.dark_scoria_bricks_wall": "Muretto di mattoni di scoria scura", - "block.create.dark_scoria_cobblestone": "Pietrisco di scoria scura", - "block.create.dark_scoria_cobblestone_slab": "Lastra di pietrisco di scoria scura", - "block.create.dark_scoria_cobblestone_stairs": "Scalini di pietrisco di scoria scura", - "block.create.dark_scoria_cobblestone_wall": "Muretto di pietrisco di scoria scura", - "block.create.dark_scoria_pillar": "Pilastro di scoria scura", - "block.create.deployer": "Installatore", - "block.create.depot": "Deposito", - "block.create.diorite_bricks": "Mattoni di diorite", - "block.create.diorite_bricks_slab": "Lastra di mattoni di diorite", - "block.create.diorite_bricks_stairs": "Scalini di mattoni di diorite", - "block.create.diorite_bricks_wall": "Muretto di mattoni di diorite", - "block.create.diorite_cobblestone": "Pietrisco di diorite", - "block.create.diorite_cobblestone_slab": "Lastra di pietrisco di diorite", - "block.create.diorite_cobblestone_stairs": "Scalini di pietrisco di diorite", - "block.create.diorite_cobblestone_wall": "Muretto di pietrisco di diorite", - "block.create.diorite_pillar": "Pilastro di diorite", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_bricks": "Mattoni di dolomite", - "block.create.dolomite_bricks_slab": "Lastra di mattoni di dolomite", - "block.create.dolomite_bricks_stairs": "Scalini di mattoni di dolomite", - "block.create.dolomite_bricks_wall": "Muretto di mattoni di dolomite", - "block.create.dolomite_cobblestone": "Pietrisco di dolomite", - "block.create.dolomite_cobblestone_slab": "Lastra di pietrisco di dolomite", - "block.create.dolomite_cobblestone_stairs": "Scalini di pietrisco di dolomite", - "block.create.dolomite_cobblestone_wall": "Muretto di pietrisco di dolomite", - "block.create.dolomite_pillar": "Pilastro di dolomite", - "block.create.encased_chain_drive": "Trasmissione a catena incassata", - "block.create.encased_fan": "Ventilatore incassato", - "block.create.encased_fluid_pipe": "Tubo per fluidi incassato", - "block.create.fancy_andesite_bricks": "Mattoni di andesite decorati", - "block.create.fancy_andesite_bricks_slab": "Lastra di mattoni di andesite decorati", - "block.create.fancy_andesite_bricks_stairs": "Scalini di mattoni di andesite decorati", - "block.create.fancy_andesite_bricks_wall": "Muretto di mattoni di andesite decorati", - "block.create.fancy_dark_scoria_bricks": "Mattoni di scoria scura decorati", - "block.create.fancy_dark_scoria_bricks_slab": "Lastra di mattoni di scoria scura decorati", - "block.create.fancy_dark_scoria_bricks_stairs": "Scalini di mattoni di scoria scura decorati", - "block.create.fancy_dark_scoria_bricks_wall": "Muretto di mattoni di scoria scura decorati", - "block.create.fancy_diorite_bricks": "Mattoni di diorite decorati", - "block.create.fancy_diorite_bricks_slab": "Lastra di mattoni di diorite decorati", - "block.create.fancy_diorite_bricks_stairs": "Scalini di mattoni di diorite decorati", - "block.create.fancy_diorite_bricks_wall": "Muretto di mattoni di diorite decorati", - "block.create.fancy_dolomite_bricks": "Mattoni di dolomite decorati", - "block.create.fancy_dolomite_bricks_slab": "Lastra di mattoni di dolomite decorati", - "block.create.fancy_dolomite_bricks_stairs": "Scalini di mattoni di dolomite decorati", - "block.create.fancy_dolomite_bricks_wall": "Muretto di mattoni di dolomite decorati", - "block.create.fancy_gabbro_bricks": "Mattoni di gabbro decorati", - "block.create.fancy_gabbro_bricks_slab": "Lastra di mattoni di gabbro decorati", - "block.create.fancy_gabbro_bricks_stairs": "Scalini di mattoni di gabbro decorati", - "block.create.fancy_gabbro_bricks_wall": "Muretto di mattoni di gabbro decorati", - "block.create.fancy_granite_bricks": "Mattoni di granito decorati", - "block.create.fancy_granite_bricks_slab": "Lastra di mattoni di granito decorati", - "block.create.fancy_granite_bricks_stairs": "Scalini di mattoni di granito decorati", - "block.create.fancy_granite_bricks_wall": "Muretto di mattoni di granito decorati", - "block.create.fancy_limestone_bricks": "Mattoni di calcare decorati", - "block.create.fancy_limestone_bricks_slab": "Lastra di mattoni di calcare decorati", - "block.create.fancy_limestone_bricks_stairs": "Scalini di mattoni di calcare decorati", - "block.create.fancy_limestone_bricks_wall": "Muretto di mattoni di calcare decorati", - "block.create.fancy_scoria_bricks": "Mattoni di scoria decorati", - "block.create.fancy_scoria_bricks_slab": "Lastra di mattoni di scoria decorati", - "block.create.fancy_scoria_bricks_stairs": "Scalini di mattoni di scoria decorati", - "block.create.fancy_scoria_bricks_wall": "Muretto di mattoni di scoria decorati", - "block.create.fancy_weathered_limestone_bricks": "Mattoni di calcare consumato decorati", - "block.create.fancy_weathered_limestone_bricks_slab": "Lastra di mattoni di calcare consumato decorati", - "block.create.fancy_weathered_limestone_bricks_stairs": "Scalini di mattoni di calcare consumato decorati", - "block.create.fancy_weathered_limestone_bricks_wall": "Muretto di mattoni di calcare consumato decorati", - "block.create.fluid_pipe": "Tubo per fluidi", - "block.create.fluid_tank": "Serbatoio per fluidi", - "block.create.fluid_valve": "Valvola per fluidi", - "block.create.flywheel": "Volano", - "block.create.framed_glass": "Finestra di vetro", - "block.create.framed_glass_pane": "Pannello di finestra di vetro", - "block.create.furnace_engine": "Motore fornace", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Mattoni di gabbro", - "block.create.gabbro_bricks_slab": "Lastra di mattoni di gabbro", - "block.create.gabbro_bricks_stairs": "Scalini di mattoni di gabbro", - "block.create.gabbro_bricks_wall": "Muretto di mattoni di gabbro", - "block.create.gabbro_cobblestone": "Pietrisco di gabbro", - "block.create.gabbro_cobblestone_slab": "Lastra di pietrisco di gabbro", - "block.create.gabbro_cobblestone_stairs": "Scalini di pietrisco di gabbro", - "block.create.gabbro_cobblestone_wall": "Muretto di pietrisco di gabbro", - "block.create.gabbro_pillar": "Pilastro di gabbro", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "Albero a portale", - "block.create.gearbox": "Riduttore", - "block.create.gearshift": "Cambio", - "block.create.glass_fluid_pipe": "Tubo per fluidi con vetrata", - "block.create.granite_bricks": "Mattoni di granito", - "block.create.granite_bricks_slab": "Lastra di mattoni di granito", - "block.create.granite_bricks_stairs": "Scalini di mattoni di granito", - "block.create.granite_bricks_wall": "Muretto di mattoni di granito", - "block.create.granite_cobblestone": "Pietrisco di granito", - "block.create.granite_cobblestone_slab": "Lastra di pietrisco di granito", - "block.create.granite_cobblestone_stairs": "Scalini di pietrisco di granito", - "block.create.granite_cobblestone_wall": "Muretto di pietrisco di granito", - "block.create.granite_pillar": "Pilastro di granito", - "block.create.gray_sail": "Vela grigia", - "block.create.gray_seat": "Sedile grigio", - "block.create.gray_valve_handle": "Maniglia per valvola grigia", - "block.create.green_sail": "Vela verde", - "block.create.green_seat": "Sedile verde", - "block.create.green_valve_handle": "Maniglia per valvola verde", - "block.create.hand_crank": "Manovella", - "block.create.honey": "Miele", - "block.create.horizontal_framed_glass": "Finestra di vetro orizzontale", - "block.create.horizontal_framed_glass_pane": "Pannello di finestra di vetro orizzontale", - "block.create.hose_pulley": "Carrucola per tubi", - "block.create.item_drain": "Drenante di oggetti", - "block.create.jungle_window": "Finestra della giungla", - "block.create.jungle_window_pane": "Pannello di finestra della giungla", - "block.create.large_cogwheel": "Ruota dentata grande", - "block.create.layered_andesite": "Andesite stratificata", - "block.create.layered_dark_scoria": "Scoria scura stratificata", - "block.create.layered_diorite": "Diorite stratificata", - "block.create.layered_dolomite": "Dolomite stratificata", - "block.create.layered_gabbro": "Gabbro stratificato", - "block.create.layered_granite": "Granito stratificato", - "block.create.layered_limestone": "Calcare stratificato", - "block.create.layered_scoria": "Scoria stratificata", - "block.create.layered_weathered_limestone": "Calcare consumato stratificato", - "block.create.light_blue_sail": "Vela azzurra", - "block.create.light_blue_seat": "Sedile azzurro", - "block.create.light_blue_valve_handle": "Maniglia per valvola azzurra", - "block.create.light_gray_sail": "Vela grigio chiaro", - "block.create.light_gray_seat": "Sedile grigio chiaro", - "block.create.light_gray_valve_handle": "Maniglia per valvola grigio chiaro", - "block.create.lime_sail": "Vela lime", - "block.create.lime_seat": "Sedile lime", - "block.create.lime_valve_handle": "Maniglia per valvola lime", - "block.create.limesand": "Arenaria calcarea", - "block.create.limestone": "Calcare", - "block.create.limestone_bricks": "Mattoni di calcare", - "block.create.limestone_bricks_slab": "Lastra di mattoni di calcare", - "block.create.limestone_bricks_stairs": "Scalini di mattoni di calcare", - "block.create.limestone_bricks_wall": "Muretto di mattoni di calcare", - "block.create.limestone_cobblestone": "Pietrisco di calcare", - "block.create.limestone_cobblestone_slab": "Lastra di pietrisco di calcare", - "block.create.limestone_cobblestone_stairs": "Scalini di pietrisco di calcare", - "block.create.limestone_cobblestone_wall": "Muretto di pietrisco di calcare", - "block.create.limestone_pillar": "Pilastro di calcare", - "block.create.linear_chassis": "Telaio lineare", - "block.create.lit_blaze_burner": "Inceneritore di blaze acceso", - "block.create.magenta_sail": "Vela magenta", - "block.create.magenta_seat": "Sedile magenta", - "block.create.magenta_valve_handle": "Maniglia per valvola magenta", - "block.create.mechanical_arm": "Braccio meccanico", - "block.create.mechanical_bearing": "Supporto meccanico", - "block.create.mechanical_crafter": "Costruttore meccanico", - "block.create.mechanical_drill": "Trapano meccanico", - "block.create.mechanical_harvester": "Mietitrice meccanica", - "block.create.mechanical_mixer": "Miscelatore meccanico", - "block.create.mechanical_piston": "Pistone meccanico", - "block.create.mechanical_piston_head": "Testa di pistone meccanico", - "block.create.mechanical_plough": "Aratro meccanico", - "block.create.mechanical_press": "Pressa meccanica", - "block.create.mechanical_pump": "Pompa meccanica", - "block.create.mechanical_saw": "Sega meccanica", - "block.create.metal_bracket": "Supporto di metallo", - "block.create.millstone": "Macina", - "block.create.minecart_anchor": "Ancora per carrello da miniera", - "block.create.mossy_andesite": "Andesite muschiosa", - "block.create.mossy_dark_scoria": "Scoria scura muschiosa", - "block.create.mossy_diorite": "Diorite muschiosa", - "block.create.mossy_dolomite": "Dolomite muschiosa", - "block.create.mossy_gabbro": "Gabbro muschioso", - "block.create.mossy_granite": "Granito muschioso", - "block.create.mossy_limestone": "Calcare muschioso", - "block.create.mossy_scoria": "Scoria muschiosa", - "block.create.mossy_weathered_limestone": "Calcare consumato muschioso", - "block.create.mysterious_cuckoo_clock": "Orologio a cucù misterioso", - "block.create.natural_scoria": "Scoria naturale", - "block.create.nixie_tube": "Tubo nixie", - "block.create.nozzle": "Ugello", - "block.create.oak_window": "Finestra di quercia", - "block.create.oak_window_pane": "Pannello di finestra di quercia", - "block.create.orange_sail": "Vela arancione", - "block.create.orange_seat": "Sedile arancione", - "block.create.orange_valve_handle": "Maniglia per valvola arancione", - "block.create.ornate_iron_window": "Finestra di ferro ornata", - "block.create.ornate_iron_window_pane": "Pannello di finestra di ferro ornata", - "block.create.overgrown_andesite": "Andesite coperta", - "block.create.overgrown_dark_scoria": "Scoria scura coperta", - "block.create.overgrown_diorite": "Diorite coperta", - "block.create.overgrown_dolomite": "Dolomite coperta", - "block.create.overgrown_gabbro": "Gabbro coperto", - "block.create.overgrown_granite": "Granito coperto", - "block.create.overgrown_limestone": "Calcare coperto", - "block.create.overgrown_scoria": "Scoria coperta", - "block.create.overgrown_weathered_limestone": "Calcare consumato coperto", - "block.create.paved_andesite": "Andesite lastricata", - "block.create.paved_andesite_slab": "Lastra di andesite lastricata", - "block.create.paved_andesite_stairs": "Scalini di andesite lastricata", - "block.create.paved_andesite_wall": "Muretto di andesite lastricata", - "block.create.paved_dark_scoria": "Scoria scura lastricata", - "block.create.paved_dark_scoria_slab": "Lastra di scoria scura lastricata", - "block.create.paved_dark_scoria_stairs": "Scalini di scoria scura lastricata", - "block.create.paved_dark_scoria_wall": "Muretto di scoria scura lastricata", - "block.create.paved_diorite": "Diorite lastricata", - "block.create.paved_diorite_slab": "Lastra di diorite lastricata", - "block.create.paved_diorite_stairs": "Scalini di diorite lastricata", - "block.create.paved_diorite_wall": "Muretto di diorite lastricata", - "block.create.paved_dolomite": "Dolomite lastricata", - "block.create.paved_dolomite_slab": "Lastra di dolomite lastricata", - "block.create.paved_dolomite_stairs": "Scalini di dolomite lastricata", - "block.create.paved_dolomite_wall": "Muretto di dolomite lastricata", - "block.create.paved_gabbro": "Gabbro lastricato", - "block.create.paved_gabbro_slab": "Lastra di gabbro lastricato", - "block.create.paved_gabbro_stairs": "Scalini di gabbro lastricato", - "block.create.paved_gabbro_wall": "Muretto di gabbro lastricato", - "block.create.paved_granite": "Granito lastricato", - "block.create.paved_granite_slab": "Lastra di granito lastricato", - "block.create.paved_granite_stairs": "Scalini di granito lastricato", - "block.create.paved_granite_wall": "Muretto di granito lastricato", - "block.create.paved_limestone": "Calcare lastricato", - "block.create.paved_limestone_slab": "Lastra di calcare lastricato", - "block.create.paved_limestone_stairs": "Scalini di calcare lastricato", - "block.create.paved_limestone_wall": "Muretto di calcare lastricato", - "block.create.paved_scoria": "Scoria lastricata", - "block.create.paved_scoria_slab": "Lastra di scoria lastricata", - "block.create.paved_scoria_stairs": "Scalini di scoria lastricata", - "block.create.paved_scoria_wall": "Muretto di scoria lastricata", - "block.create.paved_weathered_limestone": "Calcare consumato lastricato", - "block.create.paved_weathered_limestone_slab": "Lastra di calcare consumato lastricato", - "block.create.paved_weathered_limestone_stairs": "Scalini di calcare consumato lastricato", - "block.create.paved_weathered_limestone_wall": "Muretto di calcare consumato lastricato", - "block.create.pink_sail": "Vela rosa", - "block.create.pink_seat": "Sedile rosa", - "block.create.pink_valve_handle": "Maniglia per valvola rosa", - "block.create.piston_extension_pole": "Palo di pistone", - "block.create.polished_dark_scoria": "Scoria scura levigata", - "block.create.polished_dark_scoria_slab": "Lastra di scoria scura levigata", - "block.create.polished_dark_scoria_stairs": "Scalini di scoria scura levigata", - "block.create.polished_dark_scoria_wall": "Muretto di scoria scura levigata", - "block.create.polished_dolomite": "Dolomite levigata", - "block.create.polished_dolomite_slab": "Lastra di dolomite levigata", - "block.create.polished_dolomite_stairs": "Scalini di dolomite levigata", - "block.create.polished_dolomite_wall": "Muretto di dolomite levigata", - "block.create.polished_gabbro": "Gabbro levigato", - "block.create.polished_gabbro_slab": "Lastra di gabbro levigato", - "block.create.polished_gabbro_stairs": "Scalini di gabbro levigato", - "block.create.polished_gabbro_wall": "Muretto di gabbro levigato", - "block.create.polished_limestone": "Calcare levigato", - "block.create.polished_limestone_slab": "Lastra di calcare levigato", - "block.create.polished_limestone_stairs": "Scalini di calcare levigato", - "block.create.polished_limestone_wall": "Muretto di calcare levigato", - "block.create.polished_scoria": "Scoria levigata", - "block.create.polished_scoria_slab": "Lastra di scoria levigata", - "block.create.polished_scoria_stairs": "Scalini di scoria levigata", - "block.create.polished_scoria_wall": "Muretto di scoria levigata", - "block.create.polished_weathered_limestone": "Calcare consumato levigato", - "block.create.polished_weathered_limestone_slab": "Lastra di calcare consumato levigato", - "block.create.polished_weathered_limestone_stairs": "Scalini di calcare consumato levigato", - "block.create.polished_weathered_limestone_wall": "Muretto di calcare consumato levigato", - "block.create.portable_fluid_interface": "Interfaccia per fluidi portatile", - "block.create.portable_storage_interface": "Interfaccia di archiviazione portatile", - "block.create.powered_latch": "Leva alimentata", - "block.create.powered_toggle_latch": "Leva alimentata alterata", - "block.create.pulley_magnet": "Magnete della carrucola", - "block.create.pulse_repeater": "Ripetitore di impulsi", - "block.create.purple_sail": "Vela viola", - "block.create.purple_seat": "Sedile viola", - "block.create.purple_valve_handle": "Maniglia per valvola viola", - "block.create.radial_chassis": "Telaio radiale", - "block.create.red_sail": "Vela rossa", - "block.create.red_seat": "Sedile rosso", - "block.create.red_valve_handle": "Maniglia per valvola rossa", - "block.create.redstone_contact": "Contatto redstone", - "block.create.redstone_link": "Collegamento redstone", - "block.create.refined_radiance_casing": "Involucro radiante", - "block.create.reinforced_rail": "Binario rinforzato", - "block.create.rope": "Corda", - "block.create.rope_pulley": "Carrucola per corde", - "block.create.rotation_speed_controller": "Regolatore di velocità di rotazione", - "block.create.sail_frame": "Telaio per vela", - "block.create.schematic_table": "Banco schematico", - "block.create.schematicannon": "Cannoneschematico", - "block.create.scoria": "Scoria", - "block.create.scoria_bricks": "Mattoni di scoria", - "block.create.scoria_bricks_slab": "Lastra di mattoni di scoria", - "block.create.scoria_bricks_stairs": "Scalini di mattoni di scoria", - "block.create.scoria_bricks_wall": "Muretto di mattoni di scoria", - "block.create.scoria_cobblestone": "Pietrisco di scoria", - "block.create.scoria_cobblestone_slab": "Lastra di pietrisco di scoria", - "block.create.scoria_cobblestone_stairs": "Scalini di pietrisco di scoria", - "block.create.scoria_cobblestone_wall": "Muretto di pietrisco di scoria", - "block.create.scoria_pillar": "Pilastro di scoria", - "block.create.secondary_linear_chassis": "Telaio lineare secondario", - "block.create.sequenced_gearshift": "Cambio sequenziale", - "block.create.shadow_steel_casing": "Involucro ombra", - "block.create.shaft": "Albero", - "block.create.smart_chute": "Scivolo avanzato", - "block.create.smart_fluid_pipe": "Tubo per fluidi avanzato", - "block.create.speedometer": "Tachimetro", - "block.create.spout": "Spruzzo", - "block.create.spruce_window": "Finestra di abete", - "block.create.spruce_window_pane": "Pannello di finestra di abete", - "block.create.sticker": "UNLOCALIZED: Sticker", - "block.create.sticky_mechanical_piston": "Pistone meccanico appiccicoso", - "block.create.stockpile_switch": "Interruttore accumulatore", - "block.create.stressometer": "Stressometro", - "block.create.tiled_glass": "Vetro piastrellato", - "block.create.tiled_glass_pane": "Pannello di vetro piastrellato", - "block.create.turntable": "Piatto", - "block.create.vertical_framed_glass": "Finestra di vetro verticale", - "block.create.vertical_framed_glass_pane": "Pannello di finestra di vetro verticale", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", - "block.create.water_wheel": "Ruota idraulica", - "block.create.weathered_limestone": "Calcare consumato", - "block.create.weathered_limestone_bricks": "Mattoni di calcare consumato", - "block.create.weathered_limestone_bricks_slab": "Lastra di mattoni di calcare consumato", - "block.create.weathered_limestone_bricks_stairs": "Scalini di mattoni di calcare consumato", - "block.create.weathered_limestone_bricks_wall": "Muretto di mattoni di calcare consumato", - "block.create.weathered_limestone_cobblestone": "Pietrisco di calcare consumato", - "block.create.weathered_limestone_cobblestone_slab": "Lastra di pietrisco di calcare consumato", - "block.create.weathered_limestone_cobblestone_stairs": "Scalini di pietrisco di calcare consumato", - "block.create.weathered_limestone_cobblestone_wall": "Muretto di pietrisco di calcare consumato", - "block.create.weathered_limestone_pillar": "Pilastro di calcare consumato", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", - "block.create.white_sail": "Vela bianca", - "block.create.white_seat": "Sedile bianco", - "block.create.white_valve_handle": "Maniglia per valvola bianca", - "block.create.windmill_bearing": "Supporto per mulino a vento", - "block.create.wooden_bracket": "Supporto di legno", - "block.create.yellow_sail": "Vela gialla", - "block.create.yellow_seat": "Sedile giallo", - "block.create.yellow_valve_handle": "Maniglia per valvola gialla", - "block.create.zinc_block": "Blocco di zinco", - "block.create.zinc_ore": "Zinco grezzo", - "entity.create.contraption": "Contrazione", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", - "entity.create.seat": "Sedile", - "entity.create.stationary_contraption": "Contrazione stazionaria", - "entity.create.super_glue": "Super colla", - "fluid.create.milk": "Latte", - "fluid.create.potion": "Pozione", - "fluid.create.tea": "Tè del costruttore", - "item.create.andesite_alloy": "Lega di andesite", - "item.create.attribute_filter": "Filtro attributi", - "item.create.bar_of_chocolate": "Barretta di cioccolato", - "item.create.belt_connector": "Nastro meccanico", - "item.create.blaze_cake": "Torta per blaze", - "item.create.blaze_cake_base": "Base della torta per blaze", - "item.create.brass_hand": "Mano", - "item.create.brass_ingot": "Lingotto di ottone", - "item.create.brass_nugget": "Pepita di ottone", - "item.create.brass_sheet": "Lamiera di ottone", - "item.create.builders_tea": "Tè del costruttore", - "item.create.chest_minecart_contraption": "Contrazione per carrello da miniera con baule", - "item.create.chocolate_bucket": "Secchio di cioccolata", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", - "item.create.chromatic_compound": "Composto cromatico", - "item.create.cinder_flour": "Cenere farinosa", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "Lingotto di rame", - "item.create.copper_nugget": "Pepita di rame", - "item.create.copper_sheet": "Lamiera di rame", - "item.create.crafter_slot_cover": "Rivestimento per slot da costruzione", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "Alluminio grezzo frantumato", - "item.create.crushed_brass": "Ottone frantumato", - "item.create.crushed_copper_ore": "Rame grezzo frantumato", - "item.create.crushed_gold_ore": "Oro grezzo frantumato", - "item.create.crushed_iron_ore": "Ferro grezzo frantumato", - "item.create.crushed_lead_ore": "Piombo grezzo frantumato", - "item.create.crushed_nickel_ore": "Nichel grezzo frantumato", - "item.create.crushed_osmium_ore": "Osmio grezzo frantumato", - "item.create.crushed_platinum_ore": "Platino grezzo frantumato", - "item.create.crushed_quicksilver_ore": "Mercurio grezzo frantumato", - "item.create.crushed_silver_ore": "Argento grezzo frantumato", - "item.create.crushed_tin_ore": "Stagno grezzo frantumato", - "item.create.crushed_uranium_ore": "Uranio grezzo frantumato", - "item.create.crushed_zinc_ore": "Zinco grezzo frantumato", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "Impasto", - "item.create.electron_tube": "Valvola", - "item.create.empty_blaze_burner": "Inceneritore di blaze vuoto", - "item.create.empty_schematic": "Schematica vuota", - "item.create.extendo_grip": "Presa extendo", - "item.create.filter": "Filtro", - "item.create.furnace_minecart_contraption": "Contrazione per carrello da miniera con fornace", - "item.create.goggles": "Occhiali da ingegnere", - "item.create.golden_sheet": "Lamiera d'oro", - "item.create.handheld_worldshaper": "Plasmatore del mondo portatile", - "item.create.honey_bucket": "Secchio di miele", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", - "item.create.integrated_circuit": "Circuito integrato", - "item.create.iron_sheet": "Lamiera di ferro", - "item.create.lapis_sheet": "Lamiera di lapislazzuli", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "Contrazione per carrello da miniera", - "item.create.minecart_coupling": "Aggancio per carrelli da miniera", - "item.create.polished_rose_quartz": "Quarzo rosa levigato", - "item.create.powdered_obsidian": "Ossidiana in polvere", - "item.create.propeller": "Elica", - "item.create.red_sand_paper": "Carta vetrata rossa", - "item.create.refined_radiance": "Radiance raffinata", - "item.create.rose_quartz": "Quarzo rosa", - "item.create.sand_paper": "Carta vetrata", - "item.create.schematic": "Schematica", - "item.create.schematic_and_quill": "Schematica e penna d'oca", - "item.create.shadow_steel": "Acciaio oscuro", - "item.create.super_glue": "Super colla", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", - "item.create.tree_fertilizer": "Fertilizzante per alberi", - "item.create.vertical_gearbox": "Riduttore verticale", - "item.create.wand_of_symmetry": "Asta di simmetria", - "item.create.wheat_flour": "Farina di grano", - "item.create.whisk": "Frusta", - "item.create.wrench": "Chiave inglese", - "item.create.zinc_ingot": "Barra di zinco", - "item.create.zinc_nugget": "Pepita di zinco", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Benvenuti alla Create", - "advancement.create.root.desc": "È ora di iniziare a costruire marchingegni fantastici!", - "advancement.create.andesite_alloy": "Allitterazioni in abbondanza", - "advancement.create.andesite_alloy.desc": "I materiali della Create hanno nomi strani, 'lega di andesite' è uno di quelli.", - "advancement.create.its_alive": "Si muove!", - "advancement.create.its_alive.desc": "Guarda il tuo primo componente cinetico che gira.", - "advancement.create.shifting_gears": "Meccanismi moventi", - "advancement.create.shifting_gears.desc": "Aggancia una ruota dentata grande con una piccola, permettendoti di cambiare la velocità.", - "advancement.create.overstressed": "Sovrastressato", - "advancement.create.overstressed.desc": "Vivi l'esperienza dei limiti dello stress in prima persona.", - "advancement.create.belt": "Nastro trasportatore", - "advancement.create.belt.desc": "Connetti due alberi con un nastro meccanico.", - "advancement.create.tunnel": "Coprilo!", - "advancement.create.tunnel.desc": "Abbellisci il tuo nastro meccanico con un tunnel.", - "advancement.create.splitter_tunnel": "Dividi e conquista", - "advancement.create.splitter_tunnel.desc": "Crea un separatore con una serie di tubi in ottone.", - "advancement.create.chute": "Giù per il tubo", - "advancement.create.chute.desc": "Piazza uno scivolo, la controparte verticale del nastro.", - "advancement.create.upward_chute": "SI VOLAAAA", - "advancement.create.upward_chute.desc": "Fai cadere un oggetto e guardalo salire per uno scivolo.", - "advancement.create.belt_funnel": "Gli imbuti", - "advancement.create.belt_funnel.desc": "Piazza un imbuto laterale su un nastro o di un deposito per creare un genere speciale.", - "advancement.create.belt_funnel_kiss": "Che dolce...", - "advancement.create.belt_funnel_kiss.desc": "Fai in modo che due imbuti montati su un nastro si 'bacino'.", - "advancement.create.fan": "Il dominatore dei venti", - "advancement.create.fan.desc": "Cavalca la corrente d'aria di un ventilatore incassato.", - "advancement.create.fan_lava": "Qui si scioglie", - "advancement.create.fan_lava.desc": "Mettiti in mezzo ad una corrente d'aria che fonde le cose.", - "advancement.create.fan_water": "Lavaggio da brivido", - "advancement.create.fan_water.desc": "Mettiti in mezzo ad una corrente d'aria che lava le cose.", - "advancement.create.fan_smoke": "Coff coff", - "advancement.create.fan_smoke.desc": "Mettiti in mezzo ad una corrente d'aria che affumica le cose.", - "advancement.create.wrench": "Configurazione", - "advancement.create.wrench.desc": "Crea una chiave inglese per aiutarti con le tue macchine.", - "advancement.create.goggles": "Vedo tutto", - "advancement.create.goggles.desc": "Crea degli occhiali da ingegnere per aiutarti a vedere più informazioni sui componenti cinetici.", - "advancement.create.speedometer": "Che velocità!", - "advancement.create.speedometer.desc": "Piazza e alimenta un tachimetro. Guardalo con gli occhiali per leggere il suo esatto valore.", - "advancement.create.stressometer": "Che stress!", - "advancement.create.stressometer.desc": "Piazza e alimenta un tachimetro. Guardalo con gli occhiali per leggere il suo esatto valore.", - "advancement.create.aesthetics": "Esteticamente perfetto", - "advancement.create.aesthetics.desc": "Piazza dei supporti su alberi, tubi e ruote dentate.", - "advancement.create.reinforced": "Rinforzato!", - "advancement.create.reinforced.desc": "Usa degli involucri appropriati su alberi, tubi e nastri meccanici.", - "advancement.create.water_wheel": "Ingegneria idraulica", - "advancement.create.water_wheel.desc": "Piazza una ruota idraulica e prova a farla girare!", - "advancement.create.chocolate_wheel": "Potere... tanto potere", - "advancement.create.chocolate_wheel.desc": "Fai girare una ruota idraulica con del cioccolato fuso.", - "advancement.create.lava_wheel": "Ruota magmatica", - "advancement.create.lava_wheel.desc": "Non dovrebbe funzionare così.", - "advancement.create.cuckoo": "È ora?", - "advancement.create.cuckoo.desc": "Aspetta che un orologio a cucù annunci l'ora di andare a dormire.", - "advancement.create.millstone": "Frantumatore portatile", - "advancement.create.millstone.desc": "Piazza e alimenta una macina.", - "advancement.create.windmill": "Una lieve brezza", - "advancement.create.windmill.desc": "Assembla un mulino a vento.", - "advancement.create.maxed_windmill": "Un vento potente", - "advancement.create.maxed_windmill.desc": "Assembla un mulino a vento con la massima potenza.", - "advancement.create.andesite_casing": "L'era dell'andesite", - "advancement.create.andesite_casing.desc": "Usa della lega di andesite e del legno per creare un involucro basilare.", - "advancement.create.mechanical_drill": "Distruttore statico", - "advancement.create.mechanical_drill.desc": "Piazza e alimenta una trivella meccanica.", - "advancement.create.press": "Come fa la pressa? BONK", - "advancement.create.press.desc": "Alimenta una pressa meccanica e usala per creare delle lamiere.", - "advancement.create.polished_rose_quartz": "Diamanti rosa", - "advancement.create.polished_rose_quartz.desc": "Usa un pezzo di carta vetrata per levigare il quarzo rosa finché non diventa trasparente.", - "advancement.create.electron_tube": "BeEp bOoP", - "advancement.create.electron_tube.desc": "Crea delle valvole, utile nella creazione di macchinari basici.", - "advancement.create.mechanical_saw": "Taglialegna statico", - "advancement.create.mechanical_saw.desc": "Piazza e alimenta una sega meccanica.", - "advancement.create.basin": "Operazione bacinella", - "advancement.create.basin.desc": "Piazza una bacinella e buttaci dentro degli oggetti.", - "advancement.create.mixer": "Facciamo un bel mix", - "advancement.create.mixer.desc": "Piazza un miscelatore meccanico sobra una bacinella, alimentalo e inizia a mischiare alcuni ingredienti.", - "advancement.create.blaze_burner": "Un camino vivente", - "advancement.create.blaze_burner.desc": "Ottieni un inceneritore di blaze.", - "advancement.create.compact": "Compattazione automatica", - "advancement.create.compact.desc": "Usa una pressa e una bacinella per compattare certi oggetti.", - "advancement.create.brass": "L'ottone", - "advancement.create.brass.desc": "Usa il rame e lo zinco frantumati per creare dell'ottone.", - "advancement.create.brass_casing": "L'era dell'ottone", - "advancement.create.brass_casing.desc": "Usa l'ottone e del legno per creare involucri più avanzati.", - "advancement.create.copper_casing": "L'era del rame", - "advancement.create.copper_casing.desc": "Usa delle lamiere di ottone e del legno per creare involucri di ottone.", - "advancement.create.spout": "SPLASH", - "advancement.create.spout.desc": "Guarda mentre un oggetto fluido viene versato con uno spruzzo.", - "advancement.create.spout_potion": "Birrificio mondiale", - "advancement.create.spout_potion.desc": "Guarda mentre uno spruzzo riempie una bottiglia col liquido di una pozione.", - "advancement.create.chocolate": "Viva il cioccolato", - "advancement.create.chocolate.desc": "Ottieni un secchio di cioccolato fuso", - "advancement.create.item_drain": "Svuotamento completo", - "advancement.create.item_drain.desc": "Guarda un oggetto mentre viene svuotato da un drenante di oggetti.", - "advancement.create.chained_item_drain": "Lascialo rotolare", - "advancement.create.chained_item_drain.desc": "Guarda un oggetto rotolare attraverso una serie di drenanti di oggetti concatenati.", - "advancement.create.glass_pipe": "Spiare il flusso", - "advancement.create.glass_pipe.desc": "Guarda mentre un fluido si propaga attraverso un tubo per fluidi con vetrata. Puoi aggiungere una vetrata cliccando con una chiave inglese sui tubi per fluidi dritti.", - "advancement.create.pipe_collision": "Mai incrociare due correnti!", - "advancement.create.pipe_collision.desc": "Guarda mentre due fluidi diversi si incrociano nella tua rete di tubi.", - "advancement.create.pipe_spill": "Ci dev'essere una perdita...", - "advancement.create.pipe_spill.desc": "Guarda mentre l'estremità aperta di un tubo assorbe o piazza dei fluidi nel mondo esterno.", - "advancement.create.hose_pulley": "Spillamento industriale", - "advancement.create.hose_pulley.desc": "Tira giù una carrucola per tubi e guardala drenare o riempire un corpo dal fluido.", - "advancement.create.infinite_water": "Drenare un oceano", - "advancement.create.infinite_water.desc": "Pompa da un corpo d'acqua abbastanza esteso da essere considerato infinito.", - "advancement.create.infinite_lava": "Drenare il nucleo di un pianeta", - "advancement.create.infinite_lava.desc": "Pompa da un corpo di lava abbastanza esteso da essere considerato infinito.", - "advancement.create.infinite_chocolate": "Drenare la Fabbrica di Cioccolato", - "advancement.create.infinite_chocolate.desc": "Pompa da un corpo di cioccolato fuso abbastanza esteso da essere considerato infinito.", - "advancement.create.crafter": "Assemblamento automatico", - "advancement.create.crafter.desc": "Piazza e alimenta dei costruttori meccanici.", - "advancement.create.clockwork_bearing": "Tic toc tic toc", - "advancement.create.clockwork_bearing.desc": "Assembla una struttura montata su un supporto dell'orologio.", - "advancement.create.nixie_tube": "Segni di stile", - "advancement.create.nixie_tube.desc": "Ottieni e piazza un paio di tubi nixie.", - "advancement.create.deployer": "Piazza e attacca", - "advancement.create.deployer.desc": "Piazza e alimenta un installatore, il riflesso perfetto di te stesso.", - "advancement.create.speed_controller": "Gli ingegneri lo odiano", - "advancement.create.speed_controller.desc": "Piazza un regolatore di velocità di rotazione, il dispositivo più avanzato in termini di meccanica.", - "advancement.create.flywheel": "Il cuore della fabbrica", - "advancement.create.flywheel.desc": "Collega un motore ad un volano.", - "advancement.create.overstress_flywheel": "Alti livelli di stress", - "advancement.create.overstress_flywheel.desc": "Sovrastressa un motore fornace.", - "advancement.create.integrated_circuit": "Calcolo complesso", - "advancement.create.integrated_circuit.desc": "Assembla un circuito integrato.", - "advancement.create.mechanical_arm": "Mani occupate!", - "advancement.create.mechanical_arm.desc": "Costruisci un braccio meccanico, seleziona gli input e gli output, piazzalo e alimentalo; poi guardalo mentre fa il lavoro sporco al tuo posto.", - "advancement.create.musical_arm": "DJ, metti su la musica!", - "advancement.create.musical_arm.desc": "Guarda mentre un braccio meccanico attiva un giradischi.", - "advancement.create.arm_many_targets": "Organizzatore seriale", - "advancement.create.arm_many_targets.desc": "Programma un braccio meccanico con 10 o più posizioni di output.", - "advancement.create.arm_blaze_burner": "Combustibili", - "advancement.create.arm_blaze_burner.desc": "Istruisci il tuo braccio meccanico ad alimentare un inceneritore di blaze.", - "advancement.create.fist_bump": "Mano a mano!", - "advancement.create.fist_bump.desc": "Metti uno contro l'altro due installatori.", - "advancement.create.crushing_wheel": "Una coppia di giganti", - "advancement.create.crushing_wheel.desc": "Crea delle ruote di frantumazione per frantumare i materiali.", - "advancement.create.blaze_cake": "Sugar Rush", - "advancement.create.blaze_cake.desc": "Dai una torta di blaze al tuo inceneritore.", - "advancement.create.chromatic_compound": "Minerali bipolari", - "advancement.create.chromatic_compound.desc": "Crea una barra di composto cromatico.", - "advancement.create.shadow_steel": "Il ritorno del Vuoto", - "advancement.create.shadow_steel.desc": "Crea l'acciaio oscuro, una barra di metallo composta dalla non-esistenza.", - "advancement.create.refined_radiance": "Illumina e ispira", - "advancement.create.refined_radiance.desc": "Crea la radiance raffinata, una sostanza cromatica potente.", - "advancement.create.chromatic_age": "L'era cromatica", - "advancement.create.chromatic_age.desc": "Crea involucri di luce e d'ombra.", - "advancement.create.wand_of_symmetry": "Perfettamente simmetrico", - "advancement.create.wand_of_symmetry.desc": "Crea un'asta di simmetria.", - "advancement.create.extendo_grip": "BOIOIOING", - "advancement.create.extendo_grip.desc": "Procurati una presa extendo.", - "advancement.create.dual_extendo_grip": "Boingaggio estremo", - "advancement.create.dual_extendo_grip.desc": "Brandisci due prese extendo per raggiungere il superuomo.", - "advancement.create.eob": "Fine della beta", - "advancement.create.eob.desc": "Aspettati altri contenuti in futuro. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create: Blocchi", - "death.attack.create.crush": "%1$s è stato frantumato", - "death.attack.create.fan_fire": "%1$s è stato bruciato dall'aria calda", - "death.attack.create.fan_lava": "%1$s è stato bruciato dal ventilatore di lava", - "death.attack.create.mechanical_drill": "%1$s è stato trafitto dal trapano meccanico", - "death.attack.create.mechanical_saw": "%1$s è stato tagliato a metà dalla sega meccanica", - "death.attack.create.cuckoo_clock_explosion": "%1$s è saltato in aria da un orologio a cucù manomesso", - "create.block.deployer.damage_source_name": "un disadattato", - "create.block.cart_assembler.invalid": "Piazza il tuo assemblatore di carrelli da miniera su un binario", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Frantumazione", - "create.recipe.milling": "Macinatura", - "create.recipe.fan_washing": "Lavaggio volumetrico", - "create.recipe.fan_washing.fan": "Ventilatore dietro l'acqua corrente", - "create.recipe.fan_smoking": "Fumo volumetrico", - "create.recipe.fan_smoking.fan": "Ventilatore dietro il fuoco", - "create.recipe.fan_blasting": "Esplosione volumetrica", - "create.recipe.fan_blasting.fan": "Ventilatore dietro la lava", - "create.recipe.pressing": "Pressatura", - "create.recipe.mixing": "Mescolamento", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "Costruzione informe automatizzata", - "create.recipe.automatic_brewing": "Fermentazione automatica", - "create.recipe.packing": "Compattazione", - "create.recipe.automatic_packing": "Imballaggio automatico", - "create.recipe.sawing": "Sega", - "create.recipe.mechanical_crafting": "Costruzione meccanica", - "create.recipe.automatic_shaped": "Costruzione con forma automatizzata", - "create.recipe.block_cutting": "Taglio di blocchi", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "Levigamento da carta vetrata", - "create.recipe.mystery_conversion": "Metamorfosi cromatica", - "create.recipe.spout_filling": "Riempimento da spruzzo", - "create.recipe.draining": "Drenaggio di oggetti", - "create.recipe.processing.chance": "%1$s%% di probabilità", - "create.recipe.heat_requirement.none": "Nessun riscaldamento", - "create.recipe.heat_requirement.heated": "Riscaldamento", - "create.recipe.heat_requirement.superheated": "Super riscaldamento", - - "create.generic.range": "Gamma", - "create.generic.radius": "Raggio", - "create.generic.width": "Larghezza", - "create.generic.height": "Altezza", - "create.generic.length": "Lunghezza", - "create.generic.speed": "Velocità", - "create.generic.delay": "Ritardo", - "create.generic.unit.ticks": "Tick", - "create.generic.unit.seconds": "Secondi", - "create.generic.unit.minutes": "Minuti", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$s mB", - "create.generic.clockwise": "Senso orario", - "create.generic.counter_clockwise": "Senso anti-orario", - - "create.action.scroll": "Scorri", - "create.action.confirm": "Conferma", - "create.action.abort": "Annulla", - "create.action.saveToFile": "Salva", - "create.action.discard": "Scarta", - - "create.keyinfo.toolmenu": "Focalizzazione sul menù degli strumenti", - "create.keyinfo.scrollup": "Simula rotellina del mouse verso su (nel mondo)", - "create.keyinfo.scrolldown": "Simula rotellina del mouse verso giù (nel mondo)", - - "create.gui.scrollInput.defaultTitle": "Scegli un'opzione:", - "create.gui.scrollInput.scrollToModify": "Scorri per modificare", - "create.gui.scrollInput.scrollToAdjustAmount": "Scorri fino a regolare l'importo", - "create.gui.scrollInput.scrollToSelect": "Scorri per selezionare", - "create.gui.scrollInput.shiftScrollsFaster": "Premi shift per scorrere più velocemente", - "create.gui.toolmenu.focusKey": "Premi [%1$s] per aprire il menù", - "create.gui.toolmenu.cycle": "[SCORRI] per navigare", - "create.gui.symmetryWand.mirrorType": "Specchio", - "create.gui.symmetryWand.orientation": "Orientamento", - - "create.symmetry.mirror.plane": "Singola", - "create.symmetry.mirror.doublePlane": "Rettangolare", - "create.symmetry.mirror.triplePlane": "Ottagonale", - - "create.orientation.orthogonal": "Ortogonale", - "create.orientation.diagonal": "Diagonale", - "create.orientation.horizontal": "Orizzontale", - "create.orientation.alongZ": "Lungo Z", - "create.orientation.alongX": "Lungo X", - - "create.gui.terrainzapper.title": "Plasmatore del mondo", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "Piazzamento", - "create.gui.terrainzapper.placement.merged": "Fuso", - "create.gui.terrainzapper.placement.attached": "Attaccato", - "create.gui.terrainzapper.placement.inserted": "Inserito", - "create.gui.terrainzapper.brush": "Pennello", - "create.gui.terrainzapper.brush.cuboid": "Cuboide", - "create.gui.terrainzapper.brush.sphere": "Sferico", - "create.gui.terrainzapper.brush.cylinder": "Cilindrico", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "Strumento", - "create.gui.terrainzapper.tool.fill": "Riempi", - "create.gui.terrainzapper.tool.place": "Piazza", - "create.gui.terrainzapper.tool.replace": "Sostituisci", - "create.gui.terrainzapper.tool.clear": "Ripulisci", - "create.gui.terrainzapper.tool.overlay": "Ricopri", - "create.gui.terrainzapper.tool.flatten": "Appiattisci", - - "create.terrainzapper.shiftRightClickToSet": "Clic destro e shift per selezionare una forma", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "I carrelli da miniera non possono avere più di due agganci ciascuno", - "create.minecart_coupling.unloaded": "Parti del tuo treno sembrano essere in mezzo a chunk non caricati", - "create.minecart_coupling.no_loops": "Gli agganci non possono creare un loop", - "create.minecart_coupling.removed": "Agganci rimossi dai carrelli da miniera", - "create.minecart_coupling.too_far": "Carrelli da miniera troppo distanti", - - "create.contraptions.movement_mode": "Modalità movimento", - "create.contraptions.movement_mode.move_place": "Posizionare sempre quando è fermo", - "create.contraptions.movement_mode.move_place_returned": "Posiziona solo nella posizione iniziale", - "create.contraptions.movement_mode.move_never_place": "Posiziona solo quando distrutto", - "create.contraptions.movement_mode.rotate_place": "Ruota sempre quando è fermo", - "create.contraptions.movement_mode.rotate_place_returned": "Ruota solo vicino all'angolo iniziale", - "create.contraptions.movement_mode.rotate_never_place": "Ruota solo quando l'ancora viene distrutta", - "create.contraptions.cart_movement_mode": "Modalità movimento carrello da miniera", - "create.contraptions.cart_movement_mode.rotate": "Rivolta sempre verso il movimento", - "create.contraptions.cart_movement_mode.rotate_paused": "Pausa durante la rotazione", - "create.contraptions.cart_movement_mode.rotation_locked": "Blocca rotazione", - "create.contraptions.windmill.rotation_direction": "Direzione di rotazione", - "create.contraptions.clockwork.clock_hands": "Lancette dell'orologio", - "create.contraptions.clockwork.hour_first": "Prima lancetta delle ore", - "create.contraptions.clockwork.minute_first": "Prima lancetta dei minuti", - "create.contraptions.clockwork.hour_first_24": "Prima lancetta delle 24 ore", - - "create.logistics.filter": "Filtro", - "create.logistics.recipe_filter": "Filtro ricette", - "create.logistics.fluid_filter": "Filtro fluidi", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filtro applicato a %1$s.", - "create.logistics.filter.apply_click_again": "Filtro applicato a %1$s, clicca di nuovo per copiare.", - "create.logistics.filter.apply_count": "Conteggio estrazione applicato ai filtri.", - - "create.gui.goggles.generator_stats": "Statistiche del generatore:", - "create.gui.goggles.kinetic_stats": "Statistiche cinetiche:", - "create.gui.goggles.at_current_speed": "Alla velocità attuale", - "create.gui.goggles.pole_length": "Lunghezza palo:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "Informazioni sul calibro:", - "create.gui.speedometer.title": "Velocità di rotazione", - "create.gui.stressometer.title": "Stress della rete", - "create.gui.stressometer.capacity": "Capacità rimanente", - "create.gui.stressometer.overstressed": "Sovrastressato", - "create.gui.stressometer.no_rotation": "Nessuna rotazione", - "create.gui.contraptions.not_fast_enough": "Sembra che questo %1$s _non_ stia girando con una _velocità_ _sufficiente_.", - "create.gui.contraptions.network_overstressed": "Sembra che questo marchingegno sia _sovraccarico_. Aggiungi più fonti o _rallenta_ i componenti con un forte _impatto_ _di_ _stress_.", - "create.gui.adjustable_crate.title": "Baule regolabile", - "create.gui.adjustable_crate.storageSpace": "Spazio di immagazzinamento", - "create.gui.stockpile_switch.title": "Interruttore accumulatore", - "create.gui.stockpile_switch.invert_signal": "Inverti segnale", - "create.gui.stockpile_switch.move_to_lower_at": "Muovi giù al %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Muovi su al %1$s%%", - "create.gui.sequenced_gearshift.title": "Cambio sequenziale", - "create.gui.sequenced_gearshift.instruction": "Istruzione", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Gira", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angolo", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Pistone", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distanza", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "Fine", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "create.gui.sequenced_gearshift.speed": "Velocità, direzione", - "create.gui.sequenced_gearshift.speed.forward": "Velocità di ingresso, avanti", - "create.gui.sequenced_gearshift.speed.forward_fast": "Doppia velocità, avanti", - "create.gui.sequenced_gearshift.speed.back": "Velocità di ingresso, invertita", - "create.gui.sequenced_gearshift.speed.back_fast": "Doppia velocità, invertita", - - "create.schematicAndQuill.dimensions": "Dimensione schematica: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Prima posizione impostata.", - "create.schematicAndQuill.secondPos": "Seconda posizione impostata.", - "create.schematicAndQuill.noTarget": "Premi [Ctrl] per selezionare il blocco d'aria.", - "create.schematicAndQuill.abort": "Selezione rimossa.", - "create.schematicAndQuill.title": "Nome schematica:", - "create.schematicAndQuill.convert": "Salva e piazza immediatamente", - "create.schematicAndQuill.fallbackName": "La mia schematica", - "create.schematicAndQuill.saved": "Salvata come %1$s", - - "create.schematic.invalid": "[!] Oggetto non valido - utilizza il banco schematico", - "create.schematic.position": "Posizione", - "create.schematic.rotation": "Rotazione", - "create.schematic.rotation.none": "Nessuna", - "create.schematic.rotation.cw90": "Senso orario 90", - "create.schematic.rotation.cw180": "Senso orario 180", - "create.schematic.rotation.cw270": "Senso orario 270", - "create.schematic.mirror": "Specchio", - "create.schematic.mirror.none": "Nessuno", - "create.schematic.mirror.frontBack": "Fronte-retro", - "create.schematic.mirror.leftRight": "Sinistra-destra", - "create.schematic.tool.deploy": "Installa", - "create.schematic.tool.move": "Muovi XZ", - "create.schematic.tool.movey": "Muovi Y", - "create.schematic.tool.rotate": "Ruota", - "create.schematic.tool.print": "Stampa", - "create.schematic.tool.flip": "Capovolgi", - "create.schematic.tool.deploy.description.0": "Sposta la struttura in una posizione.", - "create.schematic.tool.deploy.description.1": "Clic destro sul terreno per posizionarla.", - "create.schematic.tool.deploy.description.2": "Premi [Ctrl] per selezionare a distanza fissa.", - "create.schematic.tool.deploy.description.3": "[Ctrl] e scorri per cambiare la distanza.", - "create.schematic.tool.move.description.0": "Sposta la schematica in orizzontale.", - "create.schematic.tool.move.description.1": "Indica la schematica e premi [Ctrl] mentre scorri per spingerla.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Sposta la schematica verticalmente.", - "create.schematic.tool.movey.description.1": "[Ctrl] e scorri per spostarla su/giù.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Ruota la schematica attorno al suo centro.", - "create.schematic.tool.rotate.description.1": "[Ctrl] e scorri per ruotarla di 90 gradi.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Posiziona istantaneamente la struttura nel mondo.", - "create.schematic.tool.print.description.1": "Clic destro per confermare la posizione corrente.", - "create.schematic.tool.print.description.2": "Questo strumento è solo per la modalità creativa.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Capovolge la schematica lungo la faccia selezionata.", - "create.schematic.tool.flip.description.1": "Indica la schematica e premi [Ctrl] mentre scorri per capovolgerla.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Sincronizzazione...", - "create.schematics.uploadTooLarge": "La schematica è troppo grande.", - "create.schematics.maxAllowedSize": "La dimensione massima consentita del file schematica è:", - - "create.gui.schematicTable.refresh": "Ricarica file", - "create.gui.schematicTable.open_folder": "Apri cartella", - "create.gui.schematicTable.title": "Banco schematico", - "create.gui.schematicTable.availableSchematics": "Schematiche disponibili", - "create.gui.schematicTable.noSchematics": "Nessuna schematica salvata", - "create.gui.schematicTable.uploading": "Caricamento...", - "create.gui.schematicTable.finished": "Caricamento finito!", - "create.gui.schematicannon.title": "Cannoneschematico", - "create.gui.schematicannon.listPrinter": "Stampante lista dei materiali", - "create.gui.schematicannon.gunpowderLevel": "Polvere da sparo al %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Spari rimanenti: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Con il backup: %1$s", - "create.gui.schematicannon.optionEnabled": "Attualmente abilitato", - "create.gui.schematicannon.optionDisabled": "Attualmente disabilitato", - "create.gui.schematicannon.showOptions": "Mostra impostazioni stampante", - "create.gui.schematicannon.option.dontReplaceSolid": "Non sostituire i blocchi solidi", - "create.gui.schematicannon.option.replaceWithSolid": "Sostituisci solidi con solidi", - "create.gui.schematicannon.option.replaceWithAny": "Sostituisci solidi con qualsiasi", - "create.gui.schematicannon.option.replaceWithEmpty": "Sostituisci solidi col vuoto", - "create.gui.schematicannon.option.skipMissing": "Salta i blocchi mancanti", - "create.gui.schematicannon.option.skipTileEntities": "Proteggi i blocchi entità", - "create.gui.schematicannon.slot.gunpowder": "Aggiungi polvere da sparo per alimentare il cannone", - "create.gui.schematicannon.slot.listPrinter": "Piazza qui i libri per stampare una lista di controllo per la tua schematica", - "create.gui.schematicannon.slot.schematic": "Aggiungi qui la tua schematica. Assicurati che sia piazzata in una posizione specifica.", - "create.gui.schematicannon.option.skipMissing.description": "Se il cannone non riesce a trovare un blocco richiesto per il posizionamento, continuerà nella posizione successiva.", - "create.gui.schematicannon.option.skipTileEntities.description": "Il cannone eviterà di sostituire i blocchi di dati come bauli.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Il cannone non sostituirà mai alcun blocco solido nella sua area di lavoro, solo non solidi e aria.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene un blocco solido nella posizione.", - "create.gui.schematicannon.option.replaceWithAny.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene qualche blocco nella posizione.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Il cannone eliminerà tutti i blocchi nell'area di lavoro, compresi quelli sostituiti dall'aria.", - - "create.schematicannon.status.idle": "Inattivo", - "create.schematicannon.status.ready": "Pronto", - "create.schematicannon.status.running": "In esecuzione", - "create.schematicannon.status.finished": "Finito", - "create.schematicannon.status.paused": "In pausa", - "create.schematicannon.status.stopped": "Fermo", - "create.schematicannon.status.noGunpowder": "Polvere da sparo mancante", - "create.schematicannon.status.targetNotLoaded": "Il blocco non è caricato", - "create.schematicannon.status.targetOutsideRange": "Obiettivo troppo lontano", - "create.schematicannon.status.searching": "Ricerca", - "create.schematicannon.status.skipping": "Skip", - "create.schematicannon.status.missingBlock": "Blocco mancante:", - "create.schematicannon.status.placing": "Piazzamento", - "create.schematicannon.status.clearing": "Cancellazione blocchi", - "create.schematicannon.status.schematicInvalid": "Schematica non valida", - "create.schematicannon.status.schematicNotPlaced": "Schematica non implementata", - "create.schematicannon.status.schematicExpired": "File schematica scaduto", - - "create.materialChecklist": "Lista di controllo dei materiali", - "create.materialChecklist.blocksNotLoaded": "* Disclaimer *\n\nLa lista dei materiali potrebbe non essere accurata a causa di molti chunk non caricati.", - - "create.gui.filter.deny_list": "Lista nera", - "create.gui.filter.deny_list.description": "Gli oggetti passano se NON corrispondono a nessuno dei precedenti. Una lista nera vuota accetta tutto.", - "create.gui.filter.allow_list": "Lista bianca", - "create.gui.filter.allow_list.description": "Gli oggetti passano se corrispondono a qualcuno dei precedenti. Una lista bianca vuota rifiuta tutto.", - "create.gui.filter.respect_data": "Rispetto dei dati", - "create.gui.filter.respect_data.description": "Gli oggetti corrispondono solo se la loro durata, incantesimi e altri attributi corrispondono.", - "create.gui.filter.ignore_data": "Ignora dati", - "create.gui.filter.ignore_data.description": "Gli oggetti corrispondono indipendentemente dai loro attributi.", - - "create.item_attributes.placeable": "è posizionabile", - "create.item_attributes.placeable.inverted": "non è posizionabile", - "create.item_attributes.consumable": "è commestibile", - "create.item_attributes.consumable.inverted": "non è commestibile", - "create.item_attributes.smeltable": "può essere fuso", - "create.item_attributes.smeltable.inverted": "non può essere fuso", - "create.item_attributes.washable": "può essere lavato", - "create.item_attributes.washable.inverted": "non può essere lavato", - "create.item_attributes.smokable": "può essere affumicato", - "create.item_attributes.smokable.inverted": "non può essere affumicato", - "create.item_attributes.crushable": "può essere frantumato", - "create.item_attributes.crushable.inverted": "non può essere frantumato", - "create.item_attributes.blastable": "è fondibile in un forno fusorio", - "create.item_attributes.blastable.inverted": "non è fondibile in un forno fusorio", - "create.item_attributes.enchanted": "è incantato", - "create.item_attributes.enchanted.inverted": "non è incantato", - "create.item_attributes.damaged": "è danneggiato", - "create.item_attributes.damaged.inverted": "non è danneggiato", - "create.item_attributes.badly_damaged": "è gravemente danneggiato", - "create.item_attributes.badly_damaged.inverted": "non è gravemente danneggiato", - "create.item_attributes.not_stackable": "non è impilabile", - "create.item_attributes.not_stackable.inverted": "è impilabile", - "create.item_attributes.equipable": "può essere equipaggiato", - "create.item_attributes.equipable.inverted": "non può essere equipaggiato", - "create.item_attributes.furnace_fuel": "è un combustibile per fornace", - "create.item_attributes.furnace_fuel.inverted": "non è un combustibile per fornace", - "create.item_attributes.in_tag": "è etichettato %1$s", - "create.item_attributes.in_tag.inverted": "non è etichettato %1$s", - "create.item_attributes.in_item_group": "appartiene a %1$s", - "create.item_attributes.in_item_group.inverted": "non appartiene a '%1$s'", - "create.item_attributes.added_by": "è stato aggiunto da %1$s", - "create.item_attributes.added_by.inverted": "non è stato aggiunto da %1$s", - "create.item_attributes.has_enchant": "è stato incantato con %1$s", - "create.item_attributes.has_enchant.inverted": "non è stato incantato con %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.has_fluid": "contiene %1$s", - "create.item_attributes.has_fluid.inverted": "non contiene %1$s", - "create.item_attributes.has_name": "è stato rinominato in %1$s", - "create.item_attributes.has_name.inverted": "non è stato rinominato in %1$s", - "create.item_attributes.book_author": "è stato autorizzato da %1$s", - "create.item_attributes.book_author.inverted": "non è stato autorizzato da %1$s", - "create.item_attributes.book_copy_original": "è una copia originale", - "create.item_attributes.book_copy_original.inverted": "non è una copia originale", - "create.item_attributes.book_copy_first": "è una copia di prima generazione", - "create.item_attributes.book_copy_first.inverted": "non è una copia di prima generazione", - "create.item_attributes.book_copy_second": "è una copia di seconda generazione", - "create.item_attributes.book_copy_second.inverted": "non è una copia di seconda generazione", - "create.item_attributes.book_copy_tattered": "è in condizioni precarie", - "create.item_attributes.book_copy_tattered.inverted": "non è in condizioni precarie", - "create.item_attributes.astralsorcery_crystal": "ha l'attributo del cristallo %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "non ha l'attributo del cristallo %1$s", - "create.item_attributes.astralsorcery_constellation": "è in sintonia con %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "non è in sintonia con %1$s", - "create.item_attributes.astralsorcery_perk_gem": "ha l'attributo benefico %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "non ha l'attributo benefico %1$s", - "create.item_attributes.astralsorcery_amulet": "migliora %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "non migliora %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "Nessun attributo selezionato", - "create.gui.attribute_filter.selected_attributes": "Attributi selezionati:", - "create.gui.attribute_filter.add_attribute": "Aggiungi attributi alla lista", - "create.gui.attribute_filter.add_inverted_attribute": "Aggiungi attributo opposto alla lista", - "create.gui.attribute_filter.allow_list_disjunctive": "Lista bianca (qualsiasi)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Gli oggetti passano se hanno almeno uno degli attributi selezionati.", - "create.gui.attribute_filter.allow_list_conjunctive": "Lista Bianca (tutti)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Gli oggetti passano solo se hanno TUTTI gli attributi selezionati.", - "create.gui.attribute_filter.deny_list": "Lista nera", - "create.gui.attribute_filter.deny_list.description": "Gli oggetti passano se NON hanno nessuno degli attributi selezionati.", - "create.gui.attribute_filter.add_reference_item": "Aggiungi oggetto di riferimento.", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Velocità richiesta: %1$s", - "create.tooltip.speedRequirement.none": "Nessuna", - "create.tooltip.speedRequirement.medium": "Moderata", - "create.tooltip.speedRequirement.high": "Veloce", - "create.tooltip.stressImpact": "Impatto sullo stress: %1$s", - "create.tooltip.stressImpact.low": "Basso", - "create.tooltip.stressImpact.medium": "Moderato", - "create.tooltip.stressImpact.high": "Alto", - "create.tooltip.stressImpact.overstressed": "Sovrastressato", - "create.tooltip.capacityProvided": "Capacità dello stress: %1$s", - "create.tooltip.capacityProvided.low": "Piccola", - "create.tooltip.capacityProvided.medium": "Media", - "create.tooltip.capacityProvided.high": "Grande", - "create.tooltip.generationSpeed": "Genera %1$s %2$s", - "create.tooltip.analogStrength": "Forza analogica: %1$s/15", - - "create.mechanical_arm.extract_from": "Prendi oggetti da %1$s", - "create.mechanical_arm.deposit_to": "Deposita oggetti su %1$s", - "create.mechanical_arm.summary": "Il braccio meccanico ha %1$s input e %2$s output.", - "create.mechanical_arm.points_outside_range": "%1$s punti di interazione selezionati rimossi per limiti di gamma.", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "Quando disponibili diversi output", - - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Round Robin forzato", - "create.mechanical_arm.selection_mode.prefer_first": "Preferisci il primo bersaglio", - - "create.tunnel.selection_mode.split": "Diviso", - "create.tunnel.selection_mode.forced_split": "Diviso forzato", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Round Robin forzato", - "create.tunnel.selection_mode.prefer_nearest": "Preferisci il più vicino", - "create.tunnel.selection_mode.randomize": "Casuale", - "create.tunnel.selection_mode.synchronize": "Sincronizza input", - - "create.tooltip.chute.header": "Informazioni sullo scivolo", - "create.tooltip.chute.items_move_down": "Gli oggetti si spostano verso il basso", - "create.tooltip.chute.items_move_up": "Gli oggetti si spostano verso l'alto", - "create.tooltip.chute.no_fans_attached": "Nessun ventilatore attaccato", - "create.tooltip.chute.fans_push_up": "I ventilatori spingono da sotto", - "create.tooltip.chute.fans_push_down": "I ventilatori spingono da sopra", - "create.tooltip.chute.fans_pull_up": "I ventilatori tirano da sopra", - "create.tooltip.chute.fans_pull_down": "I ventilatori tirano da sotto", - "create.tooltip.chute.contains": "Contiene: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "Buco senza fondo", - "create.hint.hose_pulley": "Il corpo fluido selezionato è considerato infinito.", - "create.hint.mechanical_arm_no_targets.title": "Nessun bersaglio", - "create.hint.mechanical_arm_no_targets": "Sembra che questo _braccio_ _meccanico_ non sia stato assegnato a nessun _bersaglio_. Seleziona nastri, depositi, imbuti e altri blocchi _cliccandoli_ _col_ _destro_ e _tenendo_ _in_ _mano_ il _braccio_ _meccanico_.", - "create.hint.empty_bearing.title": "Aggiorna il supporto", - "create.hint.empty_bearing": "_Clicca_ _col_ _destro_ il supporto con una _mano_ _vuota_ per _attaccarci_ la struttura che ci hai appena costruito davanti.", - "create.hint.full_deployer.title": "Overflow di oggetti dell'installatore", - "create.hint.full_deployer": "Sembra che questo _installatore_ contenga _oggetti_ _eccessivi_ che necessitano di essere _estratti_. Usa una _tramoggia_, un _imbuto_ o altro per liberarlo dall'overflow.", - - "create.gui.config.overlay1": "Ciao :)", - "create.gui.config.overlay2": "Questo overlay è di esempio", - "create.gui.config.overlay3": "Cliccalo o trascinalo col mouse", - "create.gui.config.overlay4": "per muovere questa anteprima", - "create.gui.config.overlay5": "Premi Esc per uscire e", - "create.gui.config.overlay6": "salvare la nuova posizione", - "create.gui.config.overlay7": "Fai /create per resettare", - "create.gui.config.overlay8": "l'overlay alla posizione standard", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Il tick del server è attualmente rallentato di %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Il tick del server è ora rallentato di %s ms >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Il tick del server è tornato alla velocità normale :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps per riportare il tick del server alla velocità normale", - "create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps avvia per rallentare artificialmente il tick del server", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "Il blaze lo gusta felicemente", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "Finiture cannoneschematico", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "Slime schiacciato", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "Tiri del cannoneschematico", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "Pressa meccanica attiva", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "OGGETTO DI ESEMPIO (solo un indicatore che esiste nella descrizione)", - "item.create.example_item.tooltip.summary": "Una breve descrizione dell'oggetto. La _sottolineatura_ evidenzia un termine.", - "item.create.example_item.tooltip.condition1": "Quando questo", - "item.create.example_item.tooltip.behaviour1": "Quindi questo articolo fa questo. (i comportamenti mostrati con shift)", - "item.create.example_item.tooltip.condition2": "E quando questo", - "item.create.example_item.tooltip.behaviour2": "Puoi aggiungere tutti i comportamenti che desideri", - "item.create.example_item.tooltip.control1": "Quando premi Ctrl", - "item.create.example_item.tooltip.action1": "Questi controlli vengono visualizzati.", - - "block.create.wooden_bracket.tooltip": "SUPPORTO DI LEGNO", - "block.create.wooden_bracket.tooltip.summary": "_Decora_ i tuoi _alberi_, _ruote dentate_ e _tubi_ rinforzandoli col legno.", - - "block.create.metal_bracket.tooltip": "SUPPORTO DI METALLO", - "block.create.metal_bracket.tooltip.summary": "_Decora_ i tuoi _alberi_, _ruote dentate_ e _tubi_ rinforzandoli col ferro.", - - "block.create.copper_casing.tooltip": "INVOLUCRO DI RAME", - "block.create.copper_casing.tooltip.summary": "Involucro per macchine robusto con una varietà di usi. Utile per decorare.", - "block.create.copper_casing.tooltip.condition1": "Quando usato su un tubo per fluidi", - "block.create.copper_casing.tooltip.behaviour1": "_Riveste_ il _tubo per fluidi_ con l'_involucro di rame_. I tubi per fluidi incassati _bloccano le loro connessioni_, non reagendo più ai cambiamenti dei tubi vicini.", - - "block.create.encased_fluid_pipe.tooltip": "TUBO PER FLUIDI INCASSATO", - "block.create.encased_fluid_pipe.tooltip.summary": "Un _tubo per fluidi_ incassato con l'_involucro di rame_.", - - "block.create.seat.tooltip": "SEDILE", - "block.create.seat.tooltip.summary": "Siediti e goditi l'escursione! Ancora un giocatore a una macchina _in movimento_. Perfetto anche per l'arredamento! Dispone di una varietà di colori.", - "block.create.seat.tooltip.condition1": "Clicca col destro sul sedile", - "block.create.seat.tooltip.behaviour1": "Fa sedere il giocatore sul _sedile_. Premi L-Shift per alzarti dal _sedile_.", - - "item.create.blaze_cake.tooltip": "TORTA PER BLAZE", - "item.create.blaze_cake.tooltip.summary": "Un delizioso trattamento per i tuoi _inceneritori di blaze_. Alimentali col fuoco!", - - "block.create.fluid_pipe.tooltip": "TUBO PER FLUIDI", - "block.create.fluid_pipe.tooltip.summary": "Usato per muovere _fluidi_ attraverso i tubi. Necessita di una _pompa meccanica_ per questo.", - "block.create.fluid_pipe.tooltip.condition1": "Trasferimento di fluidi", - "block.create.fluid_pipe.tooltip.behaviour1": "Può collegarsi ai contenitori di fluidi come _serbatoi_ o _bacinelle_. Gli estremi dei _tubi_ esposti possono anche drenare o piazzare blocchi di fluidi. Attento alle perdite!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "CARRUCOLA PER TUBI", - "block.create.hose_pulley.tooltip.summary": "Usata per _piazzare_ o _drenare_ vasti corpi fluidi.", - "block.create.hose_pulley.tooltip.condition1": "Quando alimentata da energia cinetica", - "block.create.hose_pulley.tooltip.behaviour1": "Tira su o giù la carrucola, la posizione della carrucola determina fino a dove c'è da _riempire_ o _svuotare_ il corpo.", - "block.create.hose_pulley.tooltip.condition2": "Quando un fluido è tirato dalla carrucola", - "block.create.hose_pulley.tooltip.behaviour2": "Inizia a _prendere blocchi_ di fluidi da dove la carrucola è stata abbassata. _Vasti corpi_ fluidi vengono considerati _infiniti_.", - "block.create.hose_pulley.tooltip.condition3": "Quando un fluido è spinto dalla carrucola", - "block.create.hose_pulley.tooltip.behaviour3": "Inizia a riempire col fluido _fino_ all'_altezza della carrucola_.", - - "block.create.fluid_tank.tooltip": "SERBATOIO PER FLUIDI", - "block.create.fluid_tank.tooltip.summary": "_Immagazzina_ i _fluidi_ che vuoi. Scala in larghezza e altezza.", - "block.create.fluid_tank.tooltip.condition1": "Clic destro con la chiave inglese", - "block.create.fluid_tank.tooltip.behaviour1": "Aggiungi/rimuovi vetrata", - - "block.create.creative_fluid_tank.tooltip": "SERBATOIO PER LIQUIDI (CREATIVA)", - "block.create.creative_fluid_tank.tooltip.summary": "Questo _serbatoio per liquidi_ permette di replicare infinite volte un certo _fluido_. Scala in larghezza e altezza.", - "block.create.creative_fluid_tank.tooltip.condition1": "Quando un fluido è nel serbatoio", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Qualsiasi _estrazione_ da questo serbatoio fornisce un'_alimentazione infinita_ del fluido in questione. I fluidi _inseriti_ in questo serbatoio verranno _svuotati_.", - "block.create.creative_fluid_tank.tooltip.condition2": "Clic destro con la chiave inglese", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Aggiungi/rimuovi vetrata", - - "block.create.fluid_valve.tooltip": "VALVOLA PER FLUIDI", - "block.create.fluid_valve.tooltip.summary": "Regola il flusso di un fluido lungo un tubo.", - "block.create.fluid_valve.tooltip.condition1": "Flusso controllabile", - "block.create.fluid_valve.tooltip.behaviour1": "Applicare una _forza rotazionale_ forza la _valvola_ a chiudersi, cessando lo scorrere di _fluidi_. Inverti la direzione della _forza rotazionale_ per riaprire la valvola.", - - "block.create.mechanical_pump.tooltip": "POMPA MECCANICA", - "block.create.mechanical_pump.tooltip.summary": "Utilizza la _forza rotazionale_ per muovere i _fluidi_ lungo un _tubo_. Ha un massimo raggio d'effetto in entrambe le direzioni. (16 blocchi di default)", - "block.create.mechanical_pump.tooltip.condition1": "Flusso del fluido", - "block.create.mechanical_pump.tooltip.behaviour1": "La _forza rotazionale_ applicata crea una pressione che pompa il _fluido_ in una rete di _tubi_. Inverti la direzione della _forza rotazionale_ per cambiare la direzione in cui il _fluido_ scorre.", - "block.create.mechanical_pump.tooltip.control1": "Clic destro con la chiave inglese", - "block.create.mechanical_pump.tooltip.action1": "Inverte la direzione della _pompa_, cambiando la direzione standard del flusso.", - - "block.create.smart_fluid_pipe.tooltip": "TUBO PER FLUIDI AVANZATO", - "block.create.smart_fluid_pipe.tooltip.summary": "Un _tubo per fluidi_ con filtro. Puoi specificare quali _fluidi_ possono passare.", - "block.create.smart_fluid_pipe.tooltip.condition1": "Quando un fluido è spinto dentro", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Un tubo avanzato che riceve un fluido che non corrisponde al suo filtro ne blocca lo scorrere.", - "block.create.smart_fluid_pipe.tooltip.condition2": "Quando adiacente a un contenitore di fluidi", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "I tubi avanzati che _danno inizio_ ad un _flusso_ da qualsiasi contenitore estraggono solo i fluidi che _corrispondono_ al loro _filtro_.", - - "block.create.spout.tooltip": "SPRUZZO", - "block.create.spout.tooltip.summary": "Uno spruzzo per riempire i tuoi _oggetti per fluidi_.", - "block.create.spout.tooltip.condition1": "Trasferimento di fluidi", - "block.create.spout.tooltip.behaviour1": "Quando un _oggetto contenitore di fluidi_ come un _secchio_ o un'_ampolla_ è piazzato sotto, lo spruzzo lo riempie col _fluido_ al suo interno.", - "block.create.spout.tooltip.condition2": "Automazione di fluidi", - "block.create.spout.tooltip.behaviour2": "Lo spruzzo piazzato su un _nastro_ o un _deposito_ reagisce automaticamente con gli _oggetti contenitori di fluidi_ che ci passano sotto.", - - "block.create.item_drain.tooltip": "DRENANTE DI OGGETTI", - "block.create.item_drain.tooltip.summary": "Come un deposito, ma è grigliato per svuotare gli _oggetti riempiti da fluidi_.", - "block.create.item_drain.tooltip.condition1": "Trasferimento di fluidi", - "block.create.item_drain.tooltip.behaviour1": "Quando un _oggetto contenitore di fluidi_ come un _secchio_ o un'_ampolla_ è inserito a lato, il drenante lo svuota nel suo _contenitore di fluidi_. L'oggetto verrà poi espulso dal lato opposto.", - - "item.create.wand_of_symmetry.tooltip": "ASTA DI SIMMETRIA", - "item.create.wand_of_symmetry.tooltip.summary": "Rispecchia perfettamente il posizionamento dei blocchi su piani configurati.", - "item.create.wand_of_symmetry.tooltip.condition1": "Nella hotbar", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Rimane attivo", - "item.create.wand_of_symmetry.tooltip.control1": "Clic destro sul terreno", - "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _sposta_ lo specchio", - "item.create.wand_of_symmetry.tooltip.control2": "Clic destro in aria", - "item.create.wand_of_symmetry.tooltip.action2": "_Rimuove_ lo specchio attivo", - "item.create.wand_of_symmetry.tooltip.control3": "Clic destro da accovacciato", - "item.create.wand_of_symmetry.tooltip.action3": "Apre l'_interfaccia_ _di_ _configurazione_", - - "item.create.handheld_worldshaper.tooltip": "PLASMATORE DEL MONDO PORTATILE", - "item.create.handheld_worldshaper.tooltip.summary": "Strumento per la creazione di _paesaggi_ e _caratteristiche_ _del_ _terreno_.", - "item.create.handheld_worldshaper.tooltip.control1": "Clic sinistro su un blocco", - "item.create.handheld_worldshaper.tooltip.action1": "Imposta i blocchi posizionati dallo strumento sul blocco selezionato.", - "item.create.handheld_worldshaper.tooltip.control2": "Clic destro su un blocco", - "item.create.handheld_worldshaper.tooltip.action2": "Applica il _pennello_ e lo _strumento_ attualmente selezionati nella posizione selezionata.", - "item.create.handheld_worldshaper.tooltip.control3": "Clic destro da accovacciato", - "item.create.handheld_worldshaper.tooltip.action3": "Apre l'_interfaccia_ _di_ _configurazione_", - - "item.create.tree_fertilizer.tooltip": "FERTILIZZANTE PER ALBERI", - "item.create.tree_fertilizer.tooltip.summary": "Una potente combinazione di minerali adatta ad accelerare la crescita di tipi di alberi comuni.", - "item.create.tree_fertilizer.tooltip.condition1": "Se utilizzato su un arboscello", - "item.create.tree_fertilizer.tooltip.behaviour1": "Fa crescere gli alberi _indipendentemente_ dalle _condizioni_ _di_ _spazio_", - - "item.create.extendo_grip.tooltip": "PRESA EXTENDO", - "item.create.extendo_grip.tooltip.summary": "Boioioing! _Incrementa notevolmente la distanza per piazzare_ di chi lo brandisce.", - "item.create.extendo_grip.tooltip.condition1": "Quando in mano secondaria", - "item.create.extendo_grip.tooltip.behaviour1": "Incrementa la _distanza per piazzare_ degli oggetti usati nella _mano primaria_.", - - "item.create.filter.tooltip": "FILTRO", - "item.create.filter.tooltip.summary": "_Controlla_ _gli_ _output_ e gli _input_ dei dispositivi logistici con maggiore _precisione_, confrontandoli con una _serie_ _di_ _oggetti_ o diversi _filtri_ _nidificati_.", - "item.create.filter.tooltip.condition1": "Quando si trova nello slot del filtro", - "item.create.filter.tooltip.behaviour1": "_Controlla_ il flusso degli oggetti in base alla sua _configurazione_.", - "item.create.filter.tooltip.condition2": "Clic destro su di esso", - "item.create.filter.tooltip.behaviour2": "Apre l'_interfaccia_ _di_ _configurazione_.", - - "item.create.attribute_filter.tooltip": "FILTRO ATTRIBUTI", - "item.create.attribute_filter.tooltip.summary": "_Controlla_ _gli_ _output_ e gli _input_ dei dispositivi logistici con maggiore _precisione_, abbinandolo a una _serie_ _di_ _attributi_ e _categorie_ di oggetti.", - "item.create.attribute_filter.tooltip.condition1": "Quando si trova nello slot del filtro", - "item.create.attribute_filter.tooltip.behaviour1": "_Controlla_ il flusso degli oggetti in base alla sua _configurazione_.", - "item.create.attribute_filter.tooltip.condition2": "Clic destro su di esso", - "item.create.attribute_filter.tooltip.behaviour2": "Apre l'_interfaccia_ _di_ _configurazione_.", - - "item.create.empty_schematic.tooltip": "SCHEMATICA VUOTA", - "item.create.empty_schematic.tooltip.summary": "Utilizzato come ingrediente per ricette e per la scrittura al _banco_ _schematico_.", - - "item.create.schematic.tooltip": "SCHEMATICA", - "item.create.schematic.tooltip.summary": "Contiene una struttura da posizionare e collocare nel mondo. Posiziona l'ologramma come desiderato e usa un _Cannoneschematico_ per costruirla.", - "item.create.schematic.tooltip.condition1": "In mano", - "item.create.schematic.tooltip.behaviour1": "Può essere posizionato utilizzando gli strumenti sullo schermo.", - "item.create.schematic.tooltip.control1": "Clic destro da accovacciato", - "item.create.schematic.tooltip.action1": "Apre un'_interfaccia_ per l'immissione di _coordinate_ esatte.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATICA E PENNA D'OCA", - "item.create.schematic_and_quill.tooltip.summary": "Utilizzato per salvare una struttura nel tuo mondo in un file .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Passo 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Seleziona due punti d'angolo usando il clic destro.", - "item.create.schematic_and_quill.tooltip.condition2": "Passo 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "Premi _Ctrl_ e _scorri_ sulle facciate per regolare le dimensioni. Clic destro di nuovo per salvare.", - "item.create.schematic_and_quill.tooltip.control1": "Clic-Destro", - "item.create.schematic_and_quill.tooltip.action1": "Seleziona un punto d'angolo / conferma il salvataggio.", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl premuto", - "item.create.schematic_and_quill.tooltip.action2": "Seleziona i punti a _mezz'aria_. _Scorri_ per regolare la distanza.", - "item.create.schematic_and_quill.tooltip.control3": "Clic destro da accovacciato", - "item.create.schematic_and_quill.tooltip.action3": "_Resetta_ e rimuove la selezione.", - - "block.create.schematicannon.tooltip": "CANNONESCHEMATICO", - "block.create.schematicannon.tooltip.summary": "Spara blocchi per ricreare una _schematica_ distribuita nel mondo. Usa gli oggetti degli inventari adiacenti e della _polvere da sparo_ come combustibile.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "BANCO SCHEMATICO", - "block.create.schematic_table.tooltip.summary": "Scrive schematiche salvate su una _schematica_ _vuota_.", - "block.create.schematic_table.tooltip.condition1": "Quando viene fornita una schematica vuota", - "block.create.schematic_table.tooltip.behaviour1": "Carica un file selezionato dalla cartella Schematics.", - - "item.create.goggles.tooltip": "OCCHIALI DA INGEGNERE", - "item.create.goggles.tooltip.summary": "Un paio di occhiali per migliorare la tua visione con utili _informazioni_ _cinetiche_.", - "item.create.goggles.tooltip.condition1": "Quando indossati", - "item.create.goggles.tooltip.behaviour1": "Mostra gli _indicatori_ _colorati_ corrispondenti al _livello_ _di_ _velocità_ di un componente cinetico posizionato, nonché all'_impatto_ _dello_ _stress_ e la capacità dei singoli componenti.", - "item.create.goggles.tooltip.condition2": "Quando si guarda il calibro", - "item.create.goggles.tooltip.behaviour2": "Mostra informazioni dettagliate sulla _velocità_ o lo _stress_ della rete a cui è collegato il misuratore.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "CHIAVE INGLESE", - "item.create.wrench.tooltip.summary": "Uno strumento utile per lavorare su congegni cinetici. Può essere usato per _ruotare_, _smontare_ e _configurare_ i componenti.", - "item.create.wrench.tooltip.control1": "Clic destro su un blocco cinetico", - "item.create.wrench.tooltip.action1": "_Ruota_ _i_ _componenti_ verso o lontano dalla facciata con cui hai interagito.", - "item.create.wrench.tooltip.control2": "Clic destro da accovacciato", - "item.create.wrench.tooltip.action2": "_Smonta_ _i_ _componenti_ _cinetici_ e li rimette nel _tuo_ _inventario_.", - - "block.create.nozzle.tooltip": "UGELLO", - "block.create.nozzle.tooltip.summary": "Attacca la parte anteriore di un _ventilatore_ _incassato_ per distribuire il suo effetto sulle entità in _tutte_ _le_ _direzioni_.", - - "block.create.cuckoo_clock.tooltip": "OROLOGIO A CUCÙ", - "block.create.cuckoo_clock.tooltip.summary": "Artigianato raffinato per _decorare_ uno spazio e _tener_ _traccia_ _del_ _tempo_.", - "block.create.cuckoo_clock.tooltip.condition1": "Quando in rotazione", - "block.create.cuckoo_clock.tooltip.behaviour1": "Mostra l'_ora_ _corrente_ e suona una melodia due volte al giorno. Si _attiva_ una volta a mezzogiorno e al crepuscolo, non appena i _giocatori_ _possono_ _dormire_.", - - "block.create.turntable.tooltip": "PIATTO", - "block.create.turntable.tooltip.summary": "Assorbe la _forza_ _di_ _rotazione_, girando.", - - "block.create.portable_fluid_interface.tooltip": "INTERFACCIA PER FLUIDI PORTATILE", - "block.create.portable_fluid_interface.tooltip.summary": "Un punto di interscambio portatile per _spostare_ _fluidi_ a e da una _struttura_ mossa da un pistone, supporto, carrello da miniera o carrucola. Due interfacce che si incontrano devono essere piazzate _con le facciate anteriori che si guardano_ e spaziate di _1-2 blocchi_.", - "block.create.portable_fluid_interface.tooltip.condition1": "In movimento", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Interagisce con le _interfacce di archiviazione portatili_ stazionarie per trasferire i fluidi a o dalla macchina. I tubi che immettono o estraggono dall'_interfaccia stazionaria_ interagiscono _direttamente_ con i serbatoi della macchina. La struttura si fermerà per un attimo per lo scambio di fluidi.", - "block.create.portable_fluid_interface.tooltip.condition2": "Quando alimentata da redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "_Disinnesca_ qualsiasi collegamento attivo immediatamente.", - - "block.create.stockpile_switch.tooltip": "INTERRUTTORE ACCUMULATORE", - "block.create.stockpile_switch.tooltip.summary": "Attiva/disattiva un segnale redstone in base allo _spazio_ _di_ _stoccaggio_ nel contenitore collegato.", - "block.create.stockpile_switch.tooltip.condition1": "Quando inferiore al limite inferiore", - "block.create.stockpile_switch.tooltip.behaviour1": "Smette di fornire il _segnale_ _redstone_", - - "block.create.content_observer.tooltip": "OSSERVATORE DEI CONTENUTI", - "block.create.content_observer.tooltip.summary": "_Rileva oggetti_ dentro i _contenitori_ ed i _nastri_ corrispondenti ad un _filtro_. Quando l'_inventario_ del blocco, _nastro_ or _scivolo_ contiene un oggetto corrispondente, questo componente emetterà un _segnale redstone_. Quando un _imbuto_ osservato _trasferisce_ un oggetto corrispondente, questo componente emetterà un _segnale redstone_ temporaneo.", - - "block.create.adjustable_crate.tooltip": "BAULE REGOLABILE", - "block.create.adjustable_crate.tooltip.summary": "Questo _contenitore_ _di_ _stoccaggio_ consente il controllo manuale sulla sua capacità. Può contenere fino a _16_ _pile_ di qualsiasi oggetto. Supporta _comparatori_ _redstone_.", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "CREATORE CANNONESCHEMATICO", - "block.create.creative_crate.tooltip.summary": "Fornisce una scorta infinita di blocchi ai _cannoneschematici_ adiacenti.", - "block.create.creative_crate.tooltip.condition1": "Quando un oggetto è nel filtro", - "block.create.creative_crate.tooltip.behaviour1": "Qualsiasi _estrazione_ da questo contenitore fornisce _provviste infinite_ dell'oggetto in questione. Gli oggetti _inseriti_ in questo baule verranno _svuotati_.", - - "block.create.controller_rail.tooltip": "BINARIO DI CONTROLLO", - "block.create.controller_rail.tooltip.summary": "Un _binario alimentato unidirezionale_ capace di _controllare precisamente_ la _velocità di movimento_ di un carrello da miniera.", - "block.create.controller_rail.tooltip.condition1": "Quando alimentato da redstone", - "block.create.controller_rail.tooltip.behaviour1": "_Accelera o _decelera_ i _carrelli da miniera_ che passano, a seconda della _potenza del segnale_. Propaga il segnale redstone ai binari di controllo adiacenti. Alimentare due binari di controllo con segnali differenti farà in modo che i binari tra di loro interpoleranno il segnale.", - - "item.create.sand_paper.tooltip": "CARTA VETRATA", - "item.create.sand_paper.tooltip.summary": "Una superficie di carta ruvida che può essere usata per _levigare_. Può essere applicata automaticamente usando l'installatore.", - "item.create.sand_paper.tooltip.condition1": "Quando utilizzata", - "item.create.sand_paper.tooltip.behaviour1": "Applica una levigatura agli oggetti tenuti in _mano secondaria_ o per _terra_ quando li si _guarda_.", - - "item.create.builders_tea.tooltip": "TÈ DEL COSTRUTTORE", - "item.create.builders_tea.tooltip.summary": "La bevanda perfetta per iniziare la giornata - _motiva_ e _satura._", - - "item.create.refined_radiance.tooltip": "RADIANCE RAFFINATA", - "item.create.refined_radiance.tooltip.summary": "Un materiale cromatico forgiato dalla _luce_ _assorbita_.", - - "item.create.shadow_steel.tooltip": "ACCIAIO OSCURO", - "item.create.shadow_steel.tooltip.summary": "Un materiale cromatico forgiato _nel_ _vuoto_.", - - "item.create.minecart_coupling.tooltip": "AGGANCIO PER CARRELLI DA MINIERA", - "item.create.minecart_coupling.tooltip.summary": "_Concatena_ i _carrelli da miniera_ le _macchine su carrello_ insieme per formare un treno maestoso.", - "item.create.minecart_coupling.tooltip.condition1": "Quando usato su un carrello da miniera", - "item.create.minecart_coupling.tooltip.behaviour1": "_Concatena_ due carrelli insieme, provando a tenerli uniti a una _distanza costante_ mentre si muovono.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Si prega di tenere questo oggetto lontano dai bambini.", - "create.tooltip.randomWipDescription1": "Un cucciolo di panda muore ogni volta che usi questo oggetto. Ogni. Volta.", - "create.tooltip.randomWipDescription2": "Da utilizzare a proprio rischio.", - "create.tooltip.randomWipDescription3": "Questo non è l'oggetto che stai cercando, *le dita si muovono* per favore stai in disparte.", - "create.tooltip.randomWipDescription4": "Questo oggetto si autodistruggerà tra 10 secondi. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Credimi, è inutile.", - "create.tooltip.randomWipDescription6": "Utilizzando questo articolo, acconsenti al nostro disclaimer e accetti i suoi termini.", - "create.tooltip.randomWipDescription7": "Questo forse non fa per te. Che ne dici di quello?", - "create.tooltip.randomWipDescription8": "Usalo e rimpiangi immediatamente la tua decisione.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json deleted file mode 100644 index 050bf7304..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ /dev/null @@ -1,2127 +0,0 @@ -{ - "_": "Missing Localizations: 50", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "アカシアの窓", - "block.create.acacia_window_pane": "アカシアの窓パネル", - "block.create.adjustable_chain_gearshift": "可変チェーンギアシフト", - "block.create.adjustable_crate": "可変クレート", - "block.create.adjustable_pulse_repeater": "可変パルスリピーター", - "block.create.adjustable_repeater": "可変リピーター", - "block.create.analog_lever": "アナログレバー", - "block.create.andesite_belt_funnel": "安山岩のベルトファンネル", - "block.create.andesite_bricks": "安山岩レンガ", - "block.create.andesite_bricks_slab": "安山岩レンガのハーフブロック", - "block.create.andesite_bricks_stairs": "安山岩レンガの階段", - "block.create.andesite_bricks_wall": "安山岩レンガの壁", - "block.create.andesite_casing": "安山岩ケーシング", - "block.create.andesite_cobblestone": "安山岩の丸石", - "block.create.andesite_cobblestone_slab": "安山岩の丸石のハーフブロック", - "block.create.andesite_cobblestone_stairs": "安山岩の丸石の階段", - "block.create.andesite_cobblestone_wall": "安山岩の丸石の壁", - "block.create.andesite_encased_shaft": "安山岩のケース入りシャフト", - "block.create.andesite_funnel": "安山岩ファンネル", - "block.create.andesite_pillar": "安山岩の柱", - "block.create.andesite_tunnel": "安山岩トンネル", - "block.create.basin": "鉢", - "block.create.belt": "メカニカルベルト", - "block.create.birch_window": "シラカバの窓", - "block.create.birch_window_pane": "シラカバの窓パネル", - "block.create.black_sail": "黒色の帆", - "block.create.black_seat": "黒色のシート", - "block.create.black_valve_handle": "黒色のバルブハンドル", - "block.create.blaze_burner": "ブレイズバーナー", - "block.create.blue_sail": "青色の帆", - "block.create.blue_seat": "青色のシート", - "block.create.blue_valve_handle": "青色のバルブハンドル", - "block.create.brass_belt_funnel": "真鍮のベルトファンネル", - "block.create.brass_block": "真鍮ブロック", - "block.create.brass_casing": "真鍮ケーシング", - "block.create.brass_encased_shaft": "真鍮のケース入りシャフト", - "block.create.brass_funnel": "真鍮ファンネル", - "block.create.brass_tunnel": "真鍮トンネル", - "block.create.brown_sail": "茶色の帆", - "block.create.brown_seat": "茶色のシート", - "block.create.brown_valve_handle": "茶色のバルブハンドル", - "block.create.cart_assembler": "トロッコアセンブラ", - "block.create.chiseled_dark_scoria": "模様入りのダークスコリア", - "block.create.chiseled_dolomite": "模様入りの苦灰岩", - "block.create.chiseled_gabbro": "模様入りの斑れい岩", - "block.create.chiseled_limestone": "模様入りの石灰岩", - "block.create.chiseled_scoria": "模様入りのスコリア", - "block.create.chiseled_weathered_limestone": "模様入りの風化した石灰岩", - "block.create.chocolate": "チョコレート", - "block.create.chute": "シュート", - "block.create.clockwork_bearing": "時計仕掛けのベアリング", - "block.create.clutch": "クラッチ", - "block.create.cogwheel": "歯車", - "block.create.content_observer": "コンテンツオブザーバー", - "block.create.controller_rail": "コントローラーレール", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "銅ブロック", - "block.create.copper_casing": "銅ケーシング", - "block.create.copper_ore": "銅鉱石", - "block.create.copper_shingles": "銅の屋根板", - "block.create.copper_tiles": "銅のタイル", - "block.create.copper_valve_handle": "銅のバルブハンドル", - "block.create.creative_crate": "クリエティブクレート", - "block.create.creative_fluid_tank": "クリエイティブ液体タンク", - "block.create.creative_motor": "クリエイティブモーター", - "block.create.crimson_window": "真紅の窓", - "block.create.crimson_window_pane": "真紅の窓パネル", - "block.create.crushing_wheel": "破砕ホイール", - "block.create.crushing_wheel_controller": "破砕ホイールコントローラー", - "block.create.cuckoo_clock": "鳩時計", - "block.create.cyan_sail": "水色の帆", - "block.create.cyan_seat": "水色のシート", - "block.create.cyan_valve_handle": "水色のバルブハンドル", - "block.create.dark_oak_window": "ダークオークの窓", - "block.create.dark_oak_window_pane": "ダークオークの窓パネル", - "block.create.dark_scoria": "ダークスコリア", - "block.create.dark_scoria_bricks": "ダークスコリアレンガ", - "block.create.dark_scoria_bricks_slab": "ダークスコリアレンガのハーフブロック", - "block.create.dark_scoria_bricks_stairs": "ダークスコリアレンガの階段", - "block.create.dark_scoria_bricks_wall": "ダークスコリアレンガの壁", - "block.create.dark_scoria_cobblestone": "ダークスコリアの丸石", - "block.create.dark_scoria_cobblestone_slab": "ダークスコリアの丸石のハーフブロック", - "block.create.dark_scoria_cobblestone_stairs": "ダークスコリアの丸石の階段", - "block.create.dark_scoria_cobblestone_wall": "ダークスコリアの丸石の壁", - "block.create.dark_scoria_pillar": "ダークスコリアの柱", - "block.create.deployer": "デプロイヤー", - "block.create.depot": "デポ", - "block.create.diorite_bricks": "閃緑岩レンガ", - "block.create.diorite_bricks_slab": "閃緑岩レンガのハーフブロック", - "block.create.diorite_bricks_stairs": "閃緑岩レンガの階段", - "block.create.diorite_bricks_wall": "閃緑岩レンガの壁", - "block.create.diorite_cobblestone": "閃緑岩の丸石", - "block.create.diorite_cobblestone_slab": "閃緑岩の丸石のハーフブロック", - "block.create.diorite_cobblestone_stairs": "閃緑岩の丸石の階段", - "block.create.diorite_cobblestone_wall": "閃緑岩の丸石の壁", - "block.create.diorite_pillar": "閃緑岩の柱", - "block.create.dolomite": "苦灰岩", - "block.create.dolomite_bricks": "苦灰岩レンガ", - "block.create.dolomite_bricks_slab": "苦灰岩レンガのハーフブロック", - "block.create.dolomite_bricks_stairs": "苦灰岩レンガの階段", - "block.create.dolomite_bricks_wall": "苦灰岩レンガの壁", - "block.create.dolomite_cobblestone": "苦灰岩の丸石", - "block.create.dolomite_cobblestone_slab": "苦灰岩の丸石のハーフブロック", - "block.create.dolomite_cobblestone_stairs": "苦灰岩の丸石の階段", - "block.create.dolomite_cobblestone_wall": "苦灰岩の丸石の壁", - "block.create.dolomite_pillar": "苦灰岩の柱", - "block.create.encased_chain_drive": "ケース入りチェーンドライブ", - "block.create.encased_fan": "ケース入りファン", - "block.create.encased_fluid_pipe": "ケース入り液体パイプ", - "block.create.fancy_andesite_bricks": "装飾された安山岩レンガ", - "block.create.fancy_andesite_bricks_slab": "装飾された安山岩レンガのハーフブロック", - "block.create.fancy_andesite_bricks_stairs": "装飾された安山岩レンガの階段", - "block.create.fancy_andesite_bricks_wall": "装飾された安山岩レンガの壁", - "block.create.fancy_dark_scoria_bricks": "装飾されたダークスコリアレンガ", - "block.create.fancy_dark_scoria_bricks_slab": "装飾されたダークスコリアレンガのハーフブロック", - "block.create.fancy_dark_scoria_bricks_stairs": "装飾されたダークスコリアレンガの階段", - "block.create.fancy_dark_scoria_bricks_wall": "装飾されたダークスコリアレンガの壁", - "block.create.fancy_diorite_bricks": "装飾された閃緑岩レンガ", - "block.create.fancy_diorite_bricks_slab": "装飾された閃緑岩レンガのハーフブロック", - "block.create.fancy_diorite_bricks_stairs": "装飾された閃緑岩レンガの階段", - "block.create.fancy_diorite_bricks_wall": "装飾された閃緑岩レンガの壁", - "block.create.fancy_dolomite_bricks": "装飾された苦灰岩レンガ", - "block.create.fancy_dolomite_bricks_slab": "装飾された苦灰岩レンガのハーフブロック", - "block.create.fancy_dolomite_bricks_stairs": "装飾された苦灰岩レンガの階段", - "block.create.fancy_dolomite_bricks_wall": "装飾された苦灰岩レンガの壁", - "block.create.fancy_gabbro_bricks": "装飾された斑れい岩レンガ", - "block.create.fancy_gabbro_bricks_slab": "装飾された斑れい岩レンガのハーフブロック", - "block.create.fancy_gabbro_bricks_stairs": "装飾された斑れい岩レンガの階段", - "block.create.fancy_gabbro_bricks_wall": "装飾された斑れい岩レンガの壁", - "block.create.fancy_granite_bricks": "装飾された花崗岩レンガ", - "block.create.fancy_granite_bricks_slab": "装飾された花崗岩レンガのハーフブロック", - "block.create.fancy_granite_bricks_stairs": "装飾された花崗岩レンガの階段", - "block.create.fancy_granite_bricks_wall": "装飾された花崗岩レンガの壁", - "block.create.fancy_limestone_bricks": "装飾された石灰岩レンガ", - "block.create.fancy_limestone_bricks_slab": "装飾された石灰岩レンガのハーフブロック", - "block.create.fancy_limestone_bricks_stairs": "装飾された石灰岩レンガの階段", - "block.create.fancy_limestone_bricks_wall": "装飾された石灰岩レンガの壁", - "block.create.fancy_scoria_bricks": "装飾されたスコリアレンガ", - "block.create.fancy_scoria_bricks_slab": "装飾されたスコリアレンガのハーフブロック", - "block.create.fancy_scoria_bricks_stairs": "装飾されたスコリアレンガの階段", - "block.create.fancy_scoria_bricks_wall": "装飾されたスコリアレンガの壁", - "block.create.fancy_weathered_limestone_bricks": "装飾された風化した石灰岩レンガ", - "block.create.fancy_weathered_limestone_bricks_slab": "装飾された風化した石灰岩レンガのハーフブロック", - "block.create.fancy_weathered_limestone_bricks_stairs": "装飾された風化した石灰岩レンガの階段", - "block.create.fancy_weathered_limestone_bricks_wall": "装飾された風化した石灰岩レンガの壁", - "block.create.fluid_pipe": "液体パイプ", - "block.create.fluid_tank": "液体タンク", - "block.create.fluid_valve": "液体バルブ", - "block.create.flywheel": "勢車", - "block.create.framed_glass": "ガラス窓", - "block.create.framed_glass_pane": "ガラス窓板", - "block.create.furnace_engine": "かまどエンジン", - "block.create.gabbro": "斑れい岩", - "block.create.gabbro_bricks": "斑れい岩レンガ", - "block.create.gabbro_bricks_slab": "斑れい岩レンガのハーフブロック", - "block.create.gabbro_bricks_stairs": "斑れい岩レンガの階段", - "block.create.gabbro_bricks_wall": "斑れい岩レンガの壁", - "block.create.gabbro_cobblestone": "斑れい岩の丸石", - "block.create.gabbro_cobblestone_slab": "斑れい岩の丸石のハーフブロック", - "block.create.gabbro_cobblestone_stairs": "斑れい岩の丸石の階段", - "block.create.gabbro_cobblestone_wall": "斑れい岩の丸石の壁", - "block.create.gabbro_pillar": "斑れい岩の柱", - "block.create.gantry_carriage": "ガントリーキャリッジ", - "block.create.gantry_shaft": "ガントリーシャフト", - "block.create.gearbox": "ギアボックス", - "block.create.gearshift": "ギアシフト", - "block.create.glass_fluid_pipe": "ガラスの液体パイプ", - "block.create.granite_bricks": "花崗岩レンガ", - "block.create.granite_bricks_slab": "花崗岩レンガのハーフブロック", - "block.create.granite_bricks_stairs": "花崗岩レンガの階段", - "block.create.granite_bricks_wall": "花崗岩レンガの壁", - "block.create.granite_cobblestone": "花崗岩の丸石", - "block.create.granite_cobblestone_slab": "花崗岩の丸石のハーフブロック", - "block.create.granite_cobblestone_stairs": "花崗岩の丸石の階段", - "block.create.granite_cobblestone_wall": "花崗岩の丸石の壁", - "block.create.granite_pillar": "花崗岩の柱", - "block.create.gray_sail": "灰色の帆", - "block.create.gray_seat": "灰色のシート", - "block.create.gray_valve_handle": "灰色のバルブハンドル", - "block.create.green_sail": "緑色の帆", - "block.create.green_seat": "緑色のシート", - "block.create.green_valve_handle": "緑色のバルブハンドル", - "block.create.hand_crank": "ハンドクランク", - "block.create.honey": "ハチミツ", - "block.create.horizontal_framed_glass": "横型ガラス窓", - "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", - "block.create.hose_pulley": "ホースプーリー", - "block.create.item_drain": "アイテム排液口", - "block.create.jungle_window": "ジャングルの窓", - "block.create.jungle_window_pane": "ジャングルの窓パネル", - "block.create.large_cogwheel": "大きな歯車", - "block.create.layered_andesite": "安山岩の組石", - "block.create.layered_dark_scoria": "ダークスコリアの組石", - "block.create.layered_diorite": "閃緑岩の組石", - "block.create.layered_dolomite": "苦灰岩の組石", - "block.create.layered_gabbro": "斑れい岩の組石", - "block.create.layered_granite": "花崗岩の組石", - "block.create.layered_limestone": "石灰岩の組石", - "block.create.layered_scoria": "スコリアの組石", - "block.create.layered_weathered_limestone": "風化した石灰岩の組石", - "block.create.light_blue_sail": "空色の帆", - "block.create.light_blue_seat": "空色のシート", - "block.create.light_blue_valve_handle": "空色のバルブハンドル", - "block.create.light_gray_sail": "薄灰色の帆", - "block.create.light_gray_seat": "薄灰色のシート", - "block.create.light_gray_valve_handle": "薄灰色のバルブハンドル", - "block.create.lime_sail": "黄緑色の帆", - "block.create.lime_seat": "黄緑色のシート", - "block.create.lime_valve_handle": "黄緑色のバルブハンドル", - "block.create.limesand": "石灰砕砂", - "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩レンガ", - "block.create.limestone_bricks_slab": "石灰岩レンガのハーフブロック", - "block.create.limestone_bricks_stairs": "石灰岩レンガの階段", - "block.create.limestone_bricks_wall": "石灰岩レンガの壁", - "block.create.limestone_cobblestone": "石灰岩の丸石", - "block.create.limestone_cobblestone_slab": "石灰岩の丸石のハーフブロック", - "block.create.limestone_cobblestone_stairs": "石灰岩の丸石の階段", - "block.create.limestone_cobblestone_wall": "石灰岩の丸石の壁", - "block.create.limestone_pillar": "石灰岩の柱", - "block.create.linear_chassis": "リニアシャーシ", - "block.create.lit_blaze_burner": "燃焼中のブレイズバーナー", - "block.create.magenta_sail": "赤紫色の帆", - "block.create.magenta_seat": "赤紫色のシート", - "block.create.magenta_valve_handle": "赤紫色のバルブハンドル", - "block.create.mechanical_arm": "メカニカルアーム", - "block.create.mechanical_bearing": "メカニカルベアリング", - "block.create.mechanical_crafter": "メカニカルクラフター", - "block.create.mechanical_drill": "メカニカルドリル", - "block.create.mechanical_harvester": "メカニカルハーベスター", - "block.create.mechanical_mixer": "メカニカルミキサー", - "block.create.mechanical_piston": "メカニカルピストン", - "block.create.mechanical_piston_head": "メカニカルピストンヘッド", - "block.create.mechanical_plough": "メカニカルプラウ", - "block.create.mechanical_press": "メカニカルプレス", - "block.create.mechanical_pump": "メカニカルポンプ", - "block.create.mechanical_saw": "メカニカルソー", - "block.create.metal_bracket": "金属ブラケット", - "block.create.millstone": "石臼", - "block.create.minecart_anchor": "トロッコアンカー", - "block.create.mossy_andesite": "苔むした安山岩", - "block.create.mossy_dark_scoria": "苔むしたダークスコリア", - "block.create.mossy_diorite": "苔むした閃緑岩", - "block.create.mossy_dolomite": "苔むした苦灰岩", - "block.create.mossy_gabbro": "苔むした斑れい岩", - "block.create.mossy_granite": "苔むした花崗岩", - "block.create.mossy_limestone": "苔むした石灰岩", - "block.create.mossy_scoria": "苔むしたスコリア", - "block.create.mossy_weathered_limestone": "苔むした風化した石灰岩", - "block.create.mysterious_cuckoo_clock": "鳩時計", - "block.create.natural_scoria": "天然スコリア", - "block.create.nixie_tube": "ニキシー管", - "block.create.nozzle": "ノズル", - "block.create.oak_window": "オークの窓", - "block.create.oak_window_pane": "オークの窓パネル", - "block.create.orange_sail": "橙色の帆", - "block.create.orange_seat": "橙色のシート", - "block.create.orange_valve_handle": "橙色のバルブハンドル", - "block.create.ornate_iron_window": "鉄の装飾ガラス", - "block.create.ornate_iron_window_pane": "鉄の装飾ガラスパネル", - "block.create.overgrown_andesite": "生い茂った安山岩", - "block.create.overgrown_dark_scoria": "生い茂ったダークスコリア", - "block.create.overgrown_diorite": "生い茂った閃緑岩", - "block.create.overgrown_dolomite": "生い茂った苦灰岩", - "block.create.overgrown_gabbro": "生い茂った斑れい岩", - "block.create.overgrown_granite": "生い茂った花崗岩", - "block.create.overgrown_limestone": "生い茂った石灰岩", - "block.create.overgrown_scoria": "生い茂ったスコリア", - "block.create.overgrown_weathered_limestone": "生い茂った風化した石灰岩", - "block.create.paved_andesite": "舗装された安山岩", - "block.create.paved_andesite_slab": "舗装された安山岩のハーフブロック", - "block.create.paved_andesite_stairs": "舗装された安山岩の階段", - "block.create.paved_andesite_wall": "舗装された安山岩の壁", - "block.create.paved_dark_scoria": "舗装されたダークスコリア", - "block.create.paved_dark_scoria_slab": "舗装されたダークスコリアのハーフブロック", - "block.create.paved_dark_scoria_stairs": "舗装されたダークスコリアの階段", - "block.create.paved_dark_scoria_wall": "舗装されたダークスコリアの壁", - "block.create.paved_diorite": "舗装された閃緑岩", - "block.create.paved_diorite_slab": "舗装された閃緑岩のハーフブロック", - "block.create.paved_diorite_stairs": "舗装された閃緑岩の階段", - "block.create.paved_diorite_wall": "舗装された閃緑岩の壁", - "block.create.paved_dolomite": "舗装された苦灰岩", - "block.create.paved_dolomite_slab": "舗装された苦灰岩のハーフブロック", - "block.create.paved_dolomite_stairs": "舗装された苦灰岩の階段", - "block.create.paved_dolomite_wall": "舗装された苦灰岩の壁", - "block.create.paved_gabbro": "舗装された斑れい岩", - "block.create.paved_gabbro_slab": "舗装された斑れい岩のハーフブロック", - "block.create.paved_gabbro_stairs": "舗装された斑れい岩の階段", - "block.create.paved_gabbro_wall": "舗装された斑れい岩の壁", - "block.create.paved_granite": "舗装された花崗岩", - "block.create.paved_granite_slab": "舗装された花崗岩のハーフブロック", - "block.create.paved_granite_stairs": "舗装された花崗岩の階段", - "block.create.paved_granite_wall": "舗装された花崗岩の壁", - "block.create.paved_limestone": "舗装された石灰岩", - "block.create.paved_limestone_slab": "舗装された石灰岩のハーフブロック", - "block.create.paved_limestone_stairs": "舗装された石灰岩の階段", - "block.create.paved_limestone_wall": "舗装された石灰岩の壁", - "block.create.paved_scoria": "舗装されたスコリア", - "block.create.paved_scoria_slab": "舗装されたスコリアのハーフブロック", - "block.create.paved_scoria_stairs": "舗装されたスコリアの階段", - "block.create.paved_scoria_wall": "舗装されたスコリアの壁", - "block.create.paved_weathered_limestone": "舗装された風化した石灰岩", - "block.create.paved_weathered_limestone_slab": "舗装された風化した石灰岩のハーフブロック", - "block.create.paved_weathered_limestone_stairs": "舗装された風化した石灰岩の階段", - "block.create.paved_weathered_limestone_wall": "舗装された風化した石灰岩の壁", - "block.create.pink_sail": "桃色の帆", - "block.create.pink_seat": "桃色のシート", - "block.create.pink_valve_handle": "桃色のバルブハンドル", - "block.create.piston_extension_pole": "ピストン延長ポール", - "block.create.polished_dark_scoria": "磨かれたダークスコリア", - "block.create.polished_dark_scoria_slab": "磨かれたダークスコリアのハーフブロック", - "block.create.polished_dark_scoria_stairs": "磨かれたダークスコリアの階段", - "block.create.polished_dark_scoria_wall": "磨かれたダークスコリアの壁", - "block.create.polished_dolomite": "磨かれた苦灰岩", - "block.create.polished_dolomite_slab": "磨かれた苦灰岩のハーフブロック", - "block.create.polished_dolomite_stairs": "磨かれた苦灰岩の階段", - "block.create.polished_dolomite_wall": "磨かれた苦灰岩の壁", - "block.create.polished_gabbro": "磨かれた斑れい岩", - "block.create.polished_gabbro_slab": "磨かれた斑れい岩のハーフブロック", - "block.create.polished_gabbro_stairs": "磨かれた斑れい岩の階段", - "block.create.polished_gabbro_wall": "磨かれた斑れい岩の壁", - "block.create.polished_limestone": "磨かれた石灰岩", - "block.create.polished_limestone_slab": "磨かれた石灰岩のハーフブロック", - "block.create.polished_limestone_stairs": "磨かれた石灰岩の階段", - "block.create.polished_limestone_wall": "磨かれた石灰岩の壁", - "block.create.polished_scoria": "磨かれたスコリア", - "block.create.polished_scoria_slab": "磨かれたスコリアのハーフブロック", - "block.create.polished_scoria_stairs": "磨かれたスコリアの階段", - "block.create.polished_scoria_wall": "磨かれたスコリアの壁", - "block.create.polished_weathered_limestone": "磨かれた風化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨かれた風化石灰岩のハーフブロック", - "block.create.polished_weathered_limestone_stairs": "磨かれた風化した石灰岩の階段", - "block.create.polished_weathered_limestone_wall": "磨かれた風化した石灰岩の壁", - "block.create.portable_fluid_interface": "ポータブル液体インターフェース", - "block.create.portable_storage_interface": "ポータブルストレージインターフェース", - "block.create.powered_latch": "パワードラッチ", - "block.create.powered_toggle_latch": "パワードトグルラッチ", - "block.create.pulley_magnet": "プーリーマグネット", - "block.create.pulse_repeater": "パルスリピーター", - "block.create.purple_sail": "紫色の帆", - "block.create.purple_seat": "紫色のシート", - "block.create.purple_valve_handle": "紫色のバルブハンドル", - "block.create.radial_chassis": "ラジアルシャーシ", - "block.create.red_sail": "赤色の帆", - "block.create.red_seat": "赤色のシート", - "block.create.red_valve_handle": "赤色のバルブハンドル", - "block.create.redstone_contact": "レッドストーンコンタクト", - "block.create.redstone_link": "レッドストーンリンク", - "block.create.refined_radiance_casing": "光輝ケーシング", - "block.create.reinforced_rail": "補強レール", - "block.create.rope": "ロープ", - "block.create.rope_pulley": "ローププーリー", - "block.create.rotation_speed_controller": "回転速度コントローラー", - "block.create.sail_frame": "帆のフレーム", - "block.create.schematic_table": "概略図テーブル", - "block.create.schematicannon": "概略図砲", - "block.create.scoria": "スコリア", - "block.create.scoria_bricks": "スコリアレンガ", - "block.create.scoria_bricks_slab": "スコリアレンガのハーフブロック", - "block.create.scoria_bricks_stairs": "スコリアレンガの階段", - "block.create.scoria_bricks_wall": "スコリアレンガの壁", - "block.create.scoria_cobblestone": "スコリアの丸石", - "block.create.scoria_cobblestone_slab": "スコリアの丸石のハーフブロック", - "block.create.scoria_cobblestone_stairs": "スコリアの丸石の階段", - "block.create.scoria_cobblestone_wall": "スコリアの丸石の壁", - "block.create.scoria_pillar": "スコリアの柱", - "block.create.secondary_linear_chassis": "セカンダリリニアシャーシ", - "block.create.sequenced_gearshift": "シーケンスギアシフト", - "block.create.shadow_steel_casing": "シャドウケーシング", - "block.create.shaft": "シャフト", - "block.create.smart_chute": "スマートシュート", - "block.create.smart_fluid_pipe": "スマート液体パイプ", - "block.create.speedometer": "速度メーター", - "block.create.spout": "アイテム注液口", - "block.create.spruce_window": "マツの窓", - "block.create.spruce_window_pane": "マツの窓パネル", - "block.create.sticker": "スティッカー", - "block.create.sticky_mechanical_piston": "粘着メカニカルピストン", - "block.create.stockpile_switch": "在庫スイッチ", - "block.create.stressometer": "応力メーター", - "block.create.tiled_glass": "タイルガラス", - "block.create.tiled_glass_pane": "タイルガラス板", - "block.create.turntable": "ターンテーブル", - "block.create.vertical_framed_glass": "縦型ガラス窓", - "block.create.vertical_framed_glass_pane": "縦型ガラス窓板", - "block.create.warped_window": "歪んだ窓", - "block.create.warped_window_pane": "歪んだ窓パネル", - "block.create.water_wheel": "水車", - "block.create.weathered_limestone": "風化した石灰岩", - "block.create.weathered_limestone_bricks": "風化した石灰岩レンガ", - "block.create.weathered_limestone_bricks_slab": "風化した石灰岩レンガのハーフブロック", - "block.create.weathered_limestone_bricks_stairs": "風化した石灰岩レンガの階段", - "block.create.weathered_limestone_bricks_wall": "風化した石灰岩レンガの壁", - "block.create.weathered_limestone_cobblestone": "風化した石灰岩の丸石", - "block.create.weathered_limestone_cobblestone_slab": "風化した石灰岩の丸石のハーフブロック", - "block.create.weathered_limestone_cobblestone_stairs": "風化した石灰岩の丸石の階段", - "block.create.weathered_limestone_cobblestone_wall": "風化した石灰岩の丸石の壁", - "block.create.weathered_limestone_pillar": "風化した石灰岩の柱", - "block.create.weighted_ejector": "重量射出機", - "block.create.white_sail": "白色の帆", - "block.create.white_seat": "白色のシート", - "block.create.white_valve_handle": "白色のバルブハンドル", - "block.create.windmill_bearing": "風車ベアリング", - "block.create.wooden_bracket": "木製ブラケット", - "block.create.yellow_sail": "黄色の帆", - "block.create.yellow_seat": "黄色のシート", - "block.create.yellow_valve_handle": "黄色のバルブハンドル", - "block.create.zinc_block": "亜鉛ブロック", - "block.create.zinc_ore": "亜鉛鉱石", - "entity.create.contraption": "からくり", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "ガントリーからくり", - "entity.create.seat": "シート", - "entity.create.stationary_contraption": "付設からくり", - "entity.create.super_glue": "超粘着剤", - "fluid.create.milk": "牛乳", - "fluid.create.potion": "ポーション", - "fluid.create.tea": "建築家のお茶", - "item.create.andesite_alloy": "安山岩合金", - "item.create.attribute_filter": "属性フィルター", - "item.create.bar_of_chocolate": "チョコレートバー", - "item.create.belt_connector": "メカニカルベルト", - "item.create.blaze_cake": "ブレイズケーキ", - "item.create.blaze_cake_base": "ブレイズケーキの型", - "item.create.brass_hand": "真鍮の手", - "item.create.brass_ingot": "真鍮インゴット", - "item.create.brass_nugget": "真鍮塊", - "item.create.brass_sheet": "真鍮シート", - "item.create.builders_tea": "建築家のお茶", - "item.create.chest_minecart_contraption": "からくりチェスト付きトロッコ", - "item.create.chocolate_bucket": "チョコレート入りバケツ", - "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", - "item.create.chromatic_compound": "色彩の化合物", - "item.create.cinder_flour": "ネザーラックの粉", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "銅インゴット", - "item.create.copper_nugget": "銅塊", - "item.create.copper_sheet": "銅板", - "item.create.crafter_slot_cover": "クラフタースロットカバー", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "砕いたアルミニウム鉱石", - "item.create.crushed_brass": "砕いた真鍮", - "item.create.crushed_copper_ore": "砕いた銅鉱石", - "item.create.crushed_gold_ore": "砕いた金鉱石", - "item.create.crushed_iron_ore": "砕いた鉄鉱石", - "item.create.crushed_lead_ore": "砕いた鉛鉱石", - "item.create.crushed_nickel_ore": "砕いたニッケル鉱石", - "item.create.crushed_osmium_ore": "砕いたオスミウム鉱石", - "item.create.crushed_platinum_ore": "砕いたプラチナ鉱石", - "item.create.crushed_quicksilver_ore": "砕いた水銀鉱石", - "item.create.crushed_silver_ore": "砕いた銀鉱石", - "item.create.crushed_tin_ore": "砕いた錫鉱石", - "item.create.crushed_uranium_ore": "砕いたウラン鉱石", - "item.create.crushed_zinc_ore": "砕いた亜鉛鉱石", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "生地", - "item.create.electron_tube": "電子管", - "item.create.empty_blaze_burner": "空のブレイズバーナー", - "item.create.empty_schematic": "空の概略図", - "item.create.extendo_grip": "マジックハンド", - "item.create.filter": "フィルター", - "item.create.furnace_minecart_contraption": "からくりかまど付きトロッコ", - "item.create.goggles": "エンジニアのゴーグル", - "item.create.golden_sheet": "金板", - "item.create.handheld_worldshaper": "携帯型ワールドシェーパー", - "item.create.honey_bucket": "ハチミツ入りバケツ", - "item.create.honeyed_apple": "リンゴのハチミツかけ", - "item.create.integrated_circuit": "集積回路", - "item.create.iron_sheet": "鉄板", - "item.create.lapis_sheet": "ラピスラズリ板", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "からくり付きトロッコ", - "item.create.minecart_coupling": "トロッコ連結器", - "item.create.polished_rose_quartz": "磨かれたローズクォーツ", - "item.create.powdered_obsidian": "黒曜石の粉", - "item.create.propeller": "プロペラ", - "item.create.red_sand_paper": "赤い紙やすり", - "item.create.refined_radiance": "高貴な光輝", - "item.create.rose_quartz": "ローズクォーツ", - "item.create.sand_paper": "紙やすり", - "item.create.schematic": "概略図", - "item.create.schematic_and_quill": "概略図と羽根ペン", - "item.create.shadow_steel": "シャドウスチール", - "item.create.super_glue": "超粘着剤", - "item.create.sweet_roll": "スイートロール", - "item.create.tree_fertilizer": "樹木の肥料", - "item.create.vertical_gearbox": "垂直ギアボックス", - "item.create.wand_of_symmetry": "対称の杖", - "item.create.wheat_flour": "小麦粉", - "item.create.whisk": "泡立て器", - "item.create.wrench": "レンチ", - "item.create.zinc_ingot": "亜鉛インゴット", - "item.create.zinc_nugget": "亜鉛塊", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Createへようこそ", - "advancement.create.root.desc": "素晴らしいからくり機構を作る時間だ!", - "advancement.create.andesite_alloy": "大いに押韻", - "advancement.create.andesite_alloy.desc": "Createの素材には変な名前がついています、安山岩合金もその一つです", - "advancement.create.its_alive": "こいつ…動くぞ!", - "advancement.create.its_alive.desc": "機械の回転を初めて見る", - "advancement.create.shifting_gears": "ギアシフト!", - "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせて回転速度を変更する", - "advancement.create.overstressed": "超過応力", - "advancement.create.overstressed.desc": "応力の限界を肌で感じる", - "advancement.create.belt": "コンブ駆動", - "advancement.create.belt.desc": "2つのシャフトをメカニカルベルトで繋ぐ", - "advancement.create.tunnel": "隠せ!", - "advancement.create.tunnel.desc": "メカニカルベルトをトンネルで装飾する", - "advancement.create.splitter_tunnel": "困難は分割せよ", - "advancement.create.splitter_tunnel.desc": "真鍮トンネルで仕分け機を作る", - "advancement.create.chute": "転がり落ちる", - "advancement.create.chute.desc": "メカニカルベルトの垂直バージョン、シュートを設置する", - "advancement.create.upward_chute": "空への誘い", - "advancement.create.upward_chute.desc": "落ちているアイテムがファンで駆動するシュートに飛んでいく様子を見る", - "advancement.create.belt_funnel": "ファンネルのぶらさがってる、ひらひらしたやつ", - "advancement.create.belt_funnel.desc": "ベルトやデポ等の上に横向きのファンネルを置き、特殊形態にする", - "advancement.create.belt_funnel_kiss": "オウムと羽ばたき", - "advancement.create.belt_funnel_kiss.desc": "2つのベルトに載せたファンネルにキスをさせる", - "advancement.create.fan": "メカニカルエアベンダー", - "advancement.create.fan.desc": "ケース入りファンから出る風に乗る", - "advancement.create.fan_lava": "地熱暖房器具", - "advancement.create.fan_lava.desc": "アイテムを精錬する熱風に巻き込まれる", - "advancement.create.fan_water": "奇妙な洗濯機", - "advancement.create.fan_water.desc": "アイテムを洗浄する涼風に巻き込まれる", - "advancement.create.fan_smoke": "メカニカルふいご", - "advancement.create.fan_smoke.desc": "アイテムを燻製する暖風に巻き込まれる", - "advancement.create.wrench": "便利に設定", - "advancement.create.wrench.desc": "からくり作りに役立つレンチを作る", - "advancement.create.goggles": "応力をこの目で", - "advancement.create.goggles.desc": "機械からより多くの情報を手に入れるために、エンジニアのゴーグルを作る", - "advancement.create.speedometer": "正確な速度は?", - "advancement.create.speedometer.desc": "動作中の速度メーターをゴーグルで見て、正確な値を読み取る", - "advancement.create.stressometer": "正確な応力は?", - "advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る", - "advancement.create.aesthetics": "装飾ブーム!", - "advancement.create.aesthetics.desc": "シャフト、パイプ、歯車に木製ブラケットや金属ブラケットを取り付ける", - "advancement.create.reinforced": "補強ブーム!", - "advancement.create.reinforced.desc": "シャフト、パイプ、メカニカルベルトなどにケーシングブロックを取り付ける", - "advancement.create.water_wheel": "水力を使おう", - "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", - "advancement.create.chocolate_wheel": "味わい深い原動機", - "advancement.create.chocolate_wheel.desc": "溶けたチョコレートで水車を回す", - "advancement.create.lava_wheel": "マグマ・ホイール", - "advancement.create.lava_wheel.desc": "残念、これは無理だ", - "advancement.create.cuckoo": "今がその時だ", - "advancement.create.cuckoo.desc": "鳩時計が就寝時間を告げるのを目撃する", - "advancement.create.millstone": "ポケット粉砕機", - "advancement.create.millstone.desc": "石臼を置いて、回転させる", - "advancement.create.windmill": "凱風快晴", - "advancement.create.windmill.desc": "風車を組み立てる", - "advancement.create.maxed_windmill": "雄風", - "advancement.create.maxed_windmill.desc": "最強の風車を組み立てる", - "advancement.create.andesite_casing": "安山岩の時代", - "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", - "advancement.create.mechanical_drill": "固定式採掘装置", - "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、回転させる", - "advancement.create.press": "プレスで「ドン!」", - "advancement.create.press.desc": "メカニカルプレスを稼働させて、いずれかのシートを作る", - "advancement.create.polished_rose_quartz": "ピンク色のダイヤモンド", - "advancement.create.polished_rose_quartz.desc": "紙やすりでローズクォーツをピカピカになるまで磨く", - "advancement.create.electron_tube": "ピッポッパ", - "advancement.create.electron_tube.desc": "便利な次世代の機械のために電子管を作る", - "advancement.create.mechanical_saw": "固定式伐採装置", - "advancement.create.mechanical_saw.desc": "メカニカルソーを稼働させる", - "advancement.create.basin": "お茶碗の作法", - "advancement.create.basin.desc": "鉢を設置して、アイテムを投げ入れる", - "advancement.create.mixer": "いざ混合", - "advancement.create.mixer.desc": "鉢の上にメカニカルミキサーを設置して、素材をかき混ぜる", - "advancement.create.blaze_burner": "生き生きとしたインテリア", - "advancement.create.blaze_burner.desc": "ブレイズバーナーを手に入れる", - "advancement.create.compact": "自動圧縮", - "advancement.create.compact.desc": "鉢の上にメカニカルプレスを設置して、素材を圧縮する", - "advancement.create.brass": "本物の合金", - "advancement.create.brass.desc": "砕いた銅と砕いた亜鉛を使って真鍮を作る", - "advancement.create.brass_casing": "真鍮の時代", - "advancement.create.brass_casing.desc": "新しく入手した真鍮と木材を使って、次世代のケーシングを作る", - "advancement.create.copper_casing": "銅の時代", - "advancement.create.copper_casing.desc": "銅と木材を使って銅ケーシングを作る", - "advancement.create.spout": "ぱしゃぱしゃ", - "advancement.create.spout.desc": "アイテム注液口が液体を充填している様子を見る", - "advancement.create.spout_potion": "大きな醸造台", - "advancement.create.spout_potion.desc": "アイテム注液口がポーションを瓶に詰めているところを見る", - "advancement.create.chocolate": "夢の世界", - "advancement.create.chocolate.desc": "溶けたチョコレート入りバケツを手に入れる", - "advancement.create.item_drain": "バケツをひっくり返したような", - "advancement.create.item_drain.desc": "アイテム排液口が液体アイテムを空にしている様子を見る", - "advancement.create.chained_item_drain": "鉛筆転がし!", - "advancement.create.chained_item_drain.desc": "自動化したアイテム排液口の上を転がるアイテムを見る", - "advancement.create.glass_pipe": "フロウ・スパイ", - "advancement.create.glass_pipe.desc": "まっすぐな液体パイプにレンチを使って、窓から通る液体を見る", - "advancement.create.pipe_collision": "流れを合流させるな!", - "advancement.create.pipe_collision.desc": "パイプの中で2つの液体がぶつかる様子を見よう", - "advancement.create.pipe_spill": "漏れてる!", - "advancement.create.pipe_spill.desc": "パイプの端を露出させて液体が吹き出しているところを見る", - "advancement.create.hose_pulley": "工業排水", - "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", - "advancement.create.infinite_water": "海の水ぜんぶ抜く大作戦", - "advancement.create.infinite_water.desc": "無限と言えるほどの大量の水を吸引する", - "advancement.create.infinite_lava": "星の核ぜんぶ抜く大作戦", - "advancement.create.infinite_lava.desc": "無限と言えるほどの大量の溶岩を吸引する", - "advancement.create.infinite_chocolate": "空想に溺れて", - "advancement.create.infinite_chocolate.desc": "無限と言えるほどの大量の溶けたチョコレートを吸引する", - "advancement.create.crafter": "自動作業台", - "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", - "advancement.create.clockwork_bearing": "時計仕掛け", - "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングの上に構造物を組み立てる", - "advancement.create.nixie_tube": "イカした看板", - "advancement.create.nixie_tube.desc": "ニキシー管を手に入れて、設置する", - "advancement.create.deployer": "突く、置く、殴る!", - "advancement.create.deployer.desc": "自分の手と全く同じ動きをするデプロイヤーを設置して、稼働させる", - "advancement.create.speed_controller": "Engineers hate him!", - "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", - "advancement.create.flywheel": "工場の心臓部", - "advancement.create.flywheel.desc": "かまどエンジンを勢車に繋ぐ", - "advancement.create.overstress_flywheel": "ハイレベル応力", - "advancement.create.overstress_flywheel.desc": "かまどエンジンに超過応力をかける", - "advancement.create.integrated_circuit": "複素数の計算", - "advancement.create.integrated_circuit.desc": "集積回路を組み立てる", - "advancement.create.mechanical_arm": "手が離せない!", - "advancement.create.mechanical_arm.desc": "搬入元と搬出先を設定したメカニカルアームを設置して、稼働させ、あなたのために一生懸命労働している様子を見る", - "advancement.create.musical_arm": "お気に入りの曲を流して!", - "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る", - "advancement.create.arm_many_targets": "整理整頓", - "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する", - "advancement.create.arm_blaze_burner": "燃料補給", - "advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる", - "advancement.create.fist_bump": "グータッチだ、兄弟!", - "advancement.create.fist_bump.desc": "2つのデプロイヤーにグータッチさせる", - "advancement.create.crushing_wheel": "巨大な一対", - "advancement.create.crushing_wheel.desc": "より効率的に粉砕するために、破砕ホイールを作る", - "advancement.create.blaze_cake": "シュガー・ラッシュ", - "advancement.create.blaze_cake.desc": "ブレイズバーナーで特別なケーキを焼く", - "advancement.create.chromatic_compound": "二極性化合物", - "advancement.create.chromatic_compound.desc": "色彩の化合物を作る", - "advancement.create.shadow_steel": "奈落からの帰還", - "advancement.create.shadow_steel.desc": "究極の虚無、「シャドウスチール」を作る", - "advancement.create.refined_radiance": "光輝の吹入", - "advancement.create.refined_radiance.desc": "究極の色彩、「高貴な光輝」を作る", - "advancement.create.chromatic_age": "色彩の時代", - "advancement.create.chromatic_age.desc": "光と闇のケーシングを作る", - "advancement.create.wand_of_symmetry": "輝く鏡", - "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", - "advancement.create.extendo_grip": "ビヨヨーン!", - "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", - "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", - "advancement.create.dual_extendo_grip.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる", - "advancement.create.eob": "ベータ版はここまで", - "advancement.create.eob.desc": "今後のコンテンツにもご期待ください <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Palettes", - "death.attack.create.crush": "%1$s は破砕ホイールによって処理されました", - "death.attack.create.fan_fire": "%1$s は熱風で焼死した", - "death.attack.create.fan_lava": "%1$s は溶岩ファンによって焼死した", - "death.attack.create.mechanical_drill": "%1$s はメカニカルドリルに突き刺さった", - "death.attack.create.mechanical_saw": "%1$s はメカニカルソーで半分にカットされた", - "death.attack.create.cuckoo_clock_explosion": "%1$s は改ざんされた鳩時計に爆破された", - "create.block.deployer.damage_source_name": "悪いデプロイヤー", - "create.block.cart_assembler.invalid": "トロッコアセンブラはレールの上にのみ設置できます", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "粉砕", - "create.recipe.milling": "製粉", - "create.recipe.fan_washing": "一括洗浄", - "create.recipe.fan_washing.fan": "水の奥のケース入りファン", - "create.recipe.fan_smoking": "一括燻製", - "create.recipe.fan_smoking.fan": "炎の奥のケース入りファン", - "create.recipe.fan_blasting": "一括精錬", - "create.recipe.fan_blasting.fan": "溶岩の奥のケース入りファン", - "create.recipe.pressing": "プレス", - "create.recipe.mixing": "混合", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "自動不定形クラフト", - "create.recipe.automatic_brewing": "自動醸造", - "create.recipe.packing": "圧縮", - "create.recipe.automatic_packing": "自動圧縮クラフト", - "create.recipe.sawing": "製材", - "create.recipe.mechanical_crafting": "メカニカルクラフト", - "create.recipe.automatic_shaped": "自動定形クラフト", - "create.recipe.block_cutting": "自動石切", - "create.recipe.wood_cutting": "自動製材", - "create.recipe.sandpaper_polishing": "紙やすりでの研磨", - "create.recipe.mystery_conversion": "神秘の変転", - "create.recipe.spout_filling": "アイテム注液口による注入", - "create.recipe.draining": "アイテムから排液", - "create.recipe.processing.chance": "%1$s%%チャンス", - "create.recipe.heat_requirement.none": "加熱不要", - "create.recipe.heat_requirement.heated": "加熱が必要", - "create.recipe.heat_requirement.superheated": "極度の加熱が必要", - - "create.generic.range": "範囲", - "create.generic.radius": "半径", - "create.generic.width": "幅", - "create.generic.height": "高さ", - "create.generic.length": "長さ", - "create.generic.speed": "回転速度", - "create.generic.delay": "遅延", - "create.generic.unit.ticks": "ティック", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "度", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "時計回り", - "create.generic.counter_clockwise": "反時計回り", - - "create.action.scroll": "スクロール", - "create.action.confirm": "確認", - "create.action.abort": "中止", - "create.action.saveToFile": "保存", - "create.action.discard": "捨てる", - - "create.keyinfo.toolmenu": "ツールメニューをフォーカスする", - "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(この世界で)", - "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(この世界で)", - - "create.gui.scrollInput.defaultTitle": "オプションを選択:", - "create.gui.scrollInput.scrollToModify": "スクロールして変更", - "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして値を調整", - "create.gui.scrollInput.scrollToSelect": "スクロールして選択", - "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", - "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカスする", - "create.gui.toolmenu.cycle": "[スクロール] で循環", - "create.gui.symmetryWand.mirrorType": "ミラーの種類", - "create.gui.symmetryWand.orientation": "方向", - - "create.symmetry.mirror.plane": "線対称", - "create.symmetry.mirror.doublePlane": "長方形", - "create.symmetry.mirror.triplePlane": "八角形", - - "create.orientation.orthogonal": "直交", - "create.orientation.diagonal": "対角線", - "create.orientation.horizontal": "横型", - "create.orientation.alongZ": "Z に沿る", - "create.orientation.alongX": "X に沿る", - - "create.gui.terrainzapper.title": "携帯型ワールドシェーパー", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "配置", - "create.gui.terrainzapper.placement.merged": "合併", - "create.gui.terrainzapper.placement.attached": "添える", - "create.gui.terrainzapper.placement.inserted": "挿入", - "create.gui.terrainzapper.brush": "ブラシ", - "create.gui.terrainzapper.brush.cuboid": "直方体", - "create.gui.terrainzapper.brush.sphere": "球体", - "create.gui.terrainzapper.brush.cylinder": "円筒", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "ツール", - "create.gui.terrainzapper.tool.fill": "埋立", - "create.gui.terrainzapper.tool.place": "設置", - "create.gui.terrainzapper.tool.replace": "置換", - "create.gui.terrainzapper.tool.clear": "削除", - "create.gui.terrainzapper.tool.overlay": "被せる", - "create.gui.terrainzapper.tool.flatten": "なだらかに", - - "create.terrainzapper.shiftRightClickToSet": "シフト-右クリックで形状を選択", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", - "create.minecart_coupling.unloaded": "列車の一部のあるチャンクがロードされていません", - "create.minecart_coupling.no_loops": "ループ状に連結させることはできません", - "create.minecart_coupling.removed": "トロッコの連結をすべて解除しました", - "create.minecart_coupling.too_far": "トロッコ同士が離れすぎています", - - "create.contraptions.movement_mode": "移動モード", - "create.contraptions.movement_mode.move_place": "停止時に常に配置", - "create.contraptions.movement_mode.move_place_returned": "開始位置のみに配置", - "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ配置", - "create.contraptions.movement_mode.rotate_place": "停止時に常に配置", - "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ配置", - "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ配置", - "create.contraptions.cart_movement_mode": "トロッコ移動モード", - "create.contraptions.cart_movement_mode.rotate": "常に動いている方向を向く", - "create.contraptions.cart_movement_mode.rotate_paused": "回転中に一時停止する", - "create.contraptions.cart_movement_mode.rotation_locked": "常に向きを固定する", - "create.contraptions.windmill.rotation_direction": "回転方向", - "create.contraptions.clockwork.clock_hands": "時計の針", - "create.contraptions.clockwork.hour_first": "時針を最初に", - "create.contraptions.clockwork.minute_first": "分針を最初に", - "create.contraptions.clockwork.hour_first_24": "1周24時間時針を最初に", - - "create.logistics.filter": "フィルター", - "create.logistics.recipe_filter": "レシピフィルター", - "create.logistics.fluid_filter": "液体フィルター", - "create.logistics.firstFrequency": "一次周波数", - "create.logistics.secondFrequency": "二次周波数", - "create.logistics.filter.apply": "フィルターを%1$sに適用しました。", - "create.logistics.filter.apply_click_again": "フィルターを%1$sに適用しました。再度クリックすると数量をコピーします", - "create.logistics.filter.apply_count": "搬出カウントをフィルターに適用しました。", - - "create.gui.goggles.generator_stats": "原動機の統計:", - "create.gui.goggles.kinetic_stats": "動力の統計:", - "create.gui.goggles.at_current_speed": "現在の回転速度", - "create.gui.goggles.pole_length": "ポールの長さ:", - "create.gui.goggles.fluid_container": "液体コンテナの情報:", - "create.gui.goggles.fluid_container.capacity": "容量: ", - "create.gui.assembly.exception": "このからくりは組み立ることができません。:", - "create.gui.assembly.exception.unmovableBlock": "移動できないブロック(%4$s)、[%1$s %2$s %3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "[%1$s %2$s %3$s] のブロックがロードされているチャンクにありません。", - "create.gui.assembly.exception.structureTooLarge": "からくりに含まれるブロックが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "このピストンに取り付けられている拡張ポールが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.noPistonPoles": "ピストンに延長ポールが不足しています。", - "create.gui.assembly.exception.not_enough_sails": "この構造物は帆ブロックが足りていません。: %1$s\nAが最低でも%2$sコ必要です。", - "create.gui.gauge.info_header": "メーターの情報:", - "create.gui.speedometer.title": "回転速度", - "create.gui.stressometer.title": "ネットワークの応力", - "create.gui.stressometer.capacity": "残りの応力許容量", - "create.gui.stressometer.overstressed": "超過応力", - "create.gui.stressometer.no_rotation": "回転なし", - "create.gui.contraptions.not_fast_enough": "この %1$s は_十分な_回転を_していない_ようです。", - "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", - "create.gui.adjustable_crate.title": "可変クレート", - "create.gui.adjustable_crate.storageSpace": "収納スペース", - "create.gui.stockpile_switch.title": "在庫スイッチ", - "create.gui.stockpile_switch.invert_signal": "信号を反転", - "create.gui.stockpile_switch.move_to_lower_at": "動作の下限は%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "動作の上限は%1$s%%", - "create.gui.sequenced_gearshift.title": "シーケンスギアシフト", - "create.gui.sequenced_gearshift.instruction": "命令", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "回す角度", - "create.gui.sequenced_gearshift.instruction.turn_angle": "回転", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度分だけ回す", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "ピストン/プーリー/ガントリーを動かすために回す", - "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "一定時間待つ", - "create.gui.sequenced_gearshift.instruction.delay": "遅延", - "create.gui.sequenced_gearshift.instruction.delay.duration": "待機時間", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "終了", - "create.gui.sequenced_gearshift.instruction.end": "終了", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "レッドストーンパルスを待つ", - "create.gui.sequenced_gearshift.instruction.await": "待機", - "create.gui.sequenced_gearshift.speed": "回転速度, 方向", - "create.gui.sequenced_gearshift.speed.forward": "入力速度, 正転", - "create.gui.sequenced_gearshift.speed.forward_fast": "倍速, 正転", - "create.gui.sequenced_gearshift.speed.back": "入力速度, 反転", - "create.gui.sequenced_gearshift.speed.back_fast": "倍速, 反転", - - "create.schematicAndQuill.dimensions": "概略図サイズ: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "最初の位置セット", - "create.schematicAndQuill.secondPos": "2番目の位置セット", - "create.schematicAndQuill.noTarget": "[Ctrl] を押したままで空気ブロックを選択します", - "create.schematicAndQuill.abort": "選択を削除しました", - "create.schematicAndQuill.title": "概略図名:", - "create.schematicAndQuill.convert": "保存してすぐに適用", - "create.schematicAndQuill.fallbackName": "My Schematic", - "create.schematicAndQuill.saved": "%1$s として保存しました", - - "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使ってください", - "create.schematic.position": "位置", - "create.schematic.rotation": "回転", - "create.schematic.rotation.none": "無し", - "create.schematic.rotation.cw90": "時計回りに90", - "create.schematic.rotation.cw180": "時計回りに180", - "create.schematic.rotation.cw270": "時計回りに270", - "create.schematic.mirror": "ミラー", - "create.schematic.mirror.none": "無し", - "create.schematic.mirror.frontBack": "正面-背面", - "create.schematic.mirror.leftRight": "左-右", - "create.schematic.tool.deploy": "配置する", - "create.schematic.tool.move": "XZを移動", - "create.schematic.tool.movey": "Yを移動", - "create.schematic.tool.rotate": "回転", - "create.schematic.tool.print": "印刷", - "create.schematic.tool.flip": "裏返し", - "create.schematic.tool.deploy.description.0": "構造物を特定の場所に移動します", - "create.schematic.tool.deploy.description.1": "地面を右クリックして配置します", - "create.schematic.tool.deploy.description.2": "[Ctrl] を押したまま、一定の距離で選択します", - "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールして距離を変更します", - "create.schematic.tool.move.description.0": "概略図を水平に動かします", - "create.schematic.tool.move.description.1": "概略図を向け、 [Ctrl]-スクロールして押し出します", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "概略図を垂直に動かします", - "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールして上下に移動します", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "概略図をその中心を中心に回転させます", - "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールして90度回転します", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "構造物を即座にワールドに配置します", - "create.schematic.tool.print.description.1": "[右クリック] して、現在の場所への配置を確認します", - "create.schematic.tool.print.description.2": "このツールはクリエイティブモード専用です", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "選択した面に沿って概略図を反転します", - "create.schematic.tool.flip.description.1": "概略図をポイントし、 [Ctrl]-スクロールして反転します", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "同期しています...", - "create.schematics.uploadTooLarge": "概略図が大きすぎます", - "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズは:", - - "create.gui.schematicTable.refresh": "ファイルを更新する", - "create.gui.schematicTable.open_folder": "フォルダを開く", - "create.gui.schematicTable.title": "概略図テーブル", - "create.gui.schematicTable.availableSchematics": "利用可能な概略図", - "create.gui.schematicTable.noSchematics": "保存された概略図はありません", - "create.gui.schematicTable.uploading": "アップロードしています...", - "create.gui.schematicTable.finished": "アップロードが完了しました!", - "create.gui.schematicannon.title": "概略図砲", - "create.gui.schematicannon.listPrinter": "材料リストプリンター", - "create.gui.schematicannon.gunpowderLevel": "火薬残量: %1$s%%", - "create.gui.schematicannon.shotsRemaining": "残りショット数: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップ: %1$s", - "create.gui.schematicannon.optionEnabled": "現在 有効", - "create.gui.schematicannon.optionDisabled": "現在 無効", - "create.gui.schematicannon.showOptions": "プリンターの設定を表示する", - "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置き換えない", - "create.gui.schematicannon.option.replaceWithSolid": "固体を固体に置き換える", - "create.gui.schematicannon.option.replaceWithAny": "固体を任意のものに置き換える", - "create.gui.schematicannon.option.replaceWithEmpty": "空の固体と交換", - "create.gui.schematicannon.option.skipMissing": "不足しているブロックをスキップ", - "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", - "create.gui.schematicannon.slot.gunpowder": "火薬を燃料として概略図砲に入れてください。", - "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストをプリントアウトします。", - "create.gui.schematicannon.slot.schematic": "あなたの概略図をここに入れてください。特定の場所に配置されていることを確認してください。", - "create.gui.schematicannon.option.skipMissing.description": "大砲が配置に必要なブロックを見つけられない場合、次の場所に進みます。", - "create.gui.schematicannon.option.skipTileEntities.description": "大砲は、チェストなどのデータ保持ブロックの交換を回避します。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲は、その作業範囲の固体ブロックを置き換えることはなく、非固体と空気のみを置き換えます。", - "create.gui.schematicannon.option.replaceWithSolid.description": "大砲は、概略図の位置に固体ブロックが含まれている場合にのみ、その作業範囲の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithAny.description": "概略図の場所にブロックが含まれている場合、大砲はその作業範囲の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲は、空気に置き換えられたものを含め、その作業エリア内のすべてのブロックを一掃します。", - - "create.schematicannon.status.idle": "停止中", - "create.schematicannon.status.ready": "準備完了", - "create.schematicannon.status.running": "稼働中", - "create.schematicannon.status.finished": "完成", - "create.schematicannon.status.paused": "一時停止中", - "create.schematicannon.status.stopped": "停止", - "create.schematicannon.status.noGunpowder": "火薬不足", - "create.schematicannon.status.targetNotLoaded": "ブロックが読み込まれていません", - "create.schematicannon.status.targetOutsideRange": "ターゲットが遠すぎます", - "create.schematicannon.status.searching": "検索中", - "create.schematicannon.status.skipping": "スキップ", - "create.schematicannon.status.missingBlock": "不明なブロック:", - "create.schematicannon.status.placing": "配置中", - "create.schematicannon.status.clearing": "ブロックをクリア中", - "create.schematicannon.status.schematicInvalid": "概略図が無効です", - "create.schematicannon.status.schematicNotPlaced": "配置されていない概略図です", - "create.schematicannon.status.schematicExpired": "概略図ファイルが期限切れです", - - "create.materialChecklist": "素材チェックリスト", - "create.materialChecklist.blocksNotLoaded": "*免責事項*\n\n素材チェックリストは関連するチャンクがロードされていないため、不正確な場合があります。", - - "create.gui.filter.deny_list": "ブラックリスト", - "create.gui.filter.deny_list.description": "上記のいずれにも一致しない場合、アイテムは通り抜けます。空のブラックリストはすべてを受け入れます。", - "create.gui.filter.allow_list": "ホワイトリスト", - "create.gui.filter.allow_list.description": "上記のいずれかに一致した場合、アイテムは通り抜けます。空のホワイトリストはすべてを拒否します。", - "create.gui.filter.respect_data": "データを重視", - "create.gui.filter.respect_data.description": "アイテムは、耐久性、エンチャント、その他の属性も一致する場合にのみ一致します。", - "create.gui.filter.ignore_data": "データを無視", - "create.gui.filter.ignore_data.description": "アイテムは属性に関係なく一致します。", - - "create.item_attributes.placeable": "設置可能か", - "create.item_attributes.placeable.inverted": "設置不可能か", - "create.item_attributes.consumable": "食べられるか", - "create.item_attributes.consumable.inverted": "食べられないか", - "create.item_attributes.smeltable": "精錬可能か", - "create.item_attributes.smeltable.inverted": "精錬不可能か", - "create.item_attributes.washable": "洗浄可能か", - "create.item_attributes.washable.inverted": "洗浄不可能か", - "create.item_attributes.smokable": "燻製器で調理可能か", - "create.item_attributes.smokable.inverted": "燻製器で調理不可能か", - "create.item_attributes.crushable": "粉砕可能か", - "create.item_attributes.crushable.inverted": "粉砕不可能か", - "create.item_attributes.blastable": "溶鉱炉で精錬可能か", - "create.item_attributes.blastable.inverted": "溶鉱炉で精錬不可能か", - "create.item_attributes.enchanted": "エンチャント済みか", - "create.item_attributes.enchanted.inverted": "エンチャントなしか", - "create.item_attributes.damaged": "破損してるか", - "create.item_attributes.damaged.inverted": "破損していないか", - "create.item_attributes.badly_damaged": "ひどく損傷してるか", - "create.item_attributes.badly_damaged.inverted": "ひどく損傷していないか", - "create.item_attributes.not_stackable": "スタック可能か", - "create.item_attributes.not_stackable.inverted": "スタック不可能か", - "create.item_attributes.equipable": "装備可能か", - "create.item_attributes.equipable.inverted": "装備不可能か", - "create.item_attributes.furnace_fuel": "かまどの燃料か", - "create.item_attributes.furnace_fuel.inverted": "かまどの燃料でないか", - "create.item_attributes.in_tag": "%1$sのタグが付けられてるか", - "create.item_attributes.in_tag.inverted": "%1$sのタグがついていないか", - "create.item_attributes.in_item_group": "%1$sに属してるか", - "create.item_attributes.in_item_group.inverted": "%1$sに属していないか", - "create.item_attributes.added_by": "%1$sによって追加されたか", - "create.item_attributes.added_by.inverted": "%1$sによって追加されていないか", - "create.item_attributes.has_enchant": "エンチャントされているか%1$s", - "create.item_attributes.has_enchant.inverted": "エンチャントがされていないか", - "create.item_attributes.color": "%1$sで染められているか", - "create.item_attributes.color.inverted": "%1$sで染められていないか", - "create.item_attributes.max_enchanted": "最大レベルのエンチャントがされているか", - "create.item_attributes.max_enchanted.inverted": "最大レベルのエンチャントがされていないか", - "create.item_attributes.has_fluid": "%1$sを含んでいるか", - "create.item_attributes.has_fluid.inverted": "%1$sを含んでいないか", - "create.item_attributes.has_name": "%1$sの名前が付けられているか", - "create.item_attributes.has_name.inverted": "%1$sの名前が付けられているか", - "create.item_attributes.book_author": "%1$sが署名したか", - "create.item_attributes.book_author.inverted": "%1$sが署名していないか", - "create.item_attributes.book_copy_original": "オリジナルか", - "create.item_attributes.book_copy_original.inverted": "オリジナルでないか", - "create.item_attributes.book_copy_first": "コピーか", - "create.item_attributes.book_copy_first.inverted": "コピーでないか", - "create.item_attributes.book_copy_second": "コピーのコピーか", - "create.item_attributes.book_copy_second.inverted": "コピーのコピーでないか", - "create.item_attributes.book_copy_tattered": "ボロボロか", - "create.item_attributes.book_copy_tattered.inverted": "ボロボロでないか", - "create.item_attributes.astralsorcery_crystal": "%1$s クリスタル属性を持つ", - "create.item_attributes.astralsorcery_crystal.inverted": "%1$s クリスタル属性を持たない", - "create.item_attributes.astralsorcery_constellation": "%1$s に同調している", - "create.item_attributes.astralsorcery_constellation.inverted": "%1$s に同調していない", - "create.item_attributes.astralsorcery_perk_gem": "%1$s 特典属性がある", - "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がない", - "create.item_attributes.astralsorcery_amulet": "%1$s 改善", - "create.item_attributes.astralsorcery_amulet.inverted": "%1$s 改善されない", - - "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", - "create.gui.attribute_filter.selected_attributes": "選択された属性:", - "create.gui.attribute_filter.add_attribute": "属性をリストに追加する", - "create.gui.attribute_filter.add_inverted_attribute": "反属性をリストに追加する", - "create.gui.attribute_filter.allow_list_disjunctive": "ホワイトリスト(いずれか)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "選択した属性のいずれかを持っている場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.allow_list_conjunctive": "ホワイトリスト(全て)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "選択した属性をすべてを持っている場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.deny_list": "ブラックリスト", - "create.gui.attribute_filter.deny_list.description": "選択された属性を持たない場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.add_reference_item": "参照アイテムを追加", - - "create.tooltip.holdForDescription": "説明を表示するには [%1$s] を長押し", - "create.tooltip.holdForControls": "操作方法を確認するには [%1$s] を長押し", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "必要な回転速度: %1$s", - "create.tooltip.speedRequirement.none": "無し", - "create.tooltip.speedRequirement.medium": "中速", - "create.tooltip.speedRequirement.high": "高速", - "create.tooltip.stressImpact": "応力への影響: %1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "超過応力", - "create.tooltip.capacityProvided": "応力許容量: %1$s", - "create.tooltip.capacityProvided.low": "小", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.generationSpeed": "%1$s %2$sを生成", - "create.tooltip.analogStrength": "アナログ強度: %1$s/15", - - "create.mechanical_arm.extract_from": "%1$sからアイテムを取得", - "create.mechanical_arm.deposit_to": "%1$sにアイテムを置く", - "create.mechanical_arm.summary": "メカニカルアームは%1$s個の搬入ブロックと%2$s個の搬出ブロックを持っています。", - "create.mechanical_arm.points_outside_range": "%1$s個の選択ブロックが射程限界のため、除外されました。", - - "create.weighted_ejector.target_set": "ターゲットを選択", - "create.weighted_ejector.target_not_valid": "隣接ブロックへの射出(ターゲットが無効)", - "create.weighted_ejector.no_target": "隣接ブロックへの射出(ターゲットが選択されていない)", - "create.weighted_ejector.targeting": "[%1$s,%2$s,%3$s]へ射出", - "create.weighted_ejector.stack_size": "射出スタック量", - - "create.logistics.when_multiple_outputs_available": "複数の搬出先が利用できるとき:", - - "create.mechanical_arm.selection_mode.round_robin": "順繰り分配", - "create.mechanical_arm.selection_mode.forced_round_robin": "強制順繰り分配", - "create.mechanical_arm.selection_mode.prefer_first": "最初のターゲットを優先", - - "create.tunnel.selection_mode.split": "スタック分割", - "create.tunnel.selection_mode.forced_split": "強制スタック分割", - "create.tunnel.selection_mode.round_robin": "順繰り分配", - "create.tunnel.selection_mode.forced_round_robin": "強制順繰り分配", - "create.tunnel.selection_mode.prefer_nearest": "近い所を優先", - "create.tunnel.selection_mode.randomize": "ランダム", - "create.tunnel.selection_mode.synchronize": "同期", - - "create.tooltip.chute.header": "シュート情報", - "create.tooltip.chute.items_move_down": "アイテムを下方向に移動します", - "create.tooltip.chute.items_move_up": "アイテムを上方向に移動します", - "create.tooltip.chute.no_fans_attached": "ファンは接続されていません", - "create.tooltip.chute.fans_push_up": "下からファンが押しています", - "create.tooltip.chute.fans_push_down": "ファンが上から押しています", - "create.tooltip.chute.fans_pull_up": "ファンが上から吸い込んでいます", - "create.tooltip.chute.fans_pull_down": "ファンが下から吸い込んでいます", - "create.tooltip.chute.contains": "内容物: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "底なし搬出", - "create.hint.hose_pulley": "対象となる液体は無限とみなされています。", - "create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません", - "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_ターゲット_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", - "create.hint.empty_bearing.title": "ベアリングの更新", - "create.hint.empty_bearing": "_素手_でベアリングを_右クリック_して、その前に先ほど作った構造物を_接続_します。", - "create.hint.full_deployer.title": "デプロイヤーのアイテムが溢れています", - "create.hint.full_deployer": "この_デプロイヤー_には、_搬出_する必要がある余分なアイテムが含まれています。_ ホッパー_や_漏斗_などの手段を利用して、溢れないようにしてください。", - - "create.gui.config.overlay1": "やぁ(・∀・)", - "create.gui.config.overlay2": "これはオーバーレイのサンプルです", - "create.gui.config.overlay3": "マウスでクリックまたはドラッグしてください", - "create.gui.config.overlay4": "クリックしてこのプレビューを移動します", - "create.gui.config.overlay5": "ESCを押してこの画面を終了します", - "create.gui.config.overlay6": "それと新しい位置を保存します", - "create.gui.config.overlay7": "オーバーレイのリセットを実行 /作成", - "create.gui.config.overlay8": "クリックして、デフォルトの位置にリセットします。", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーバーティックは現在 %s ms 遅くなっています :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーバーティックが %s ms 遅くなりました >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: サーバーティックが通常の速度に戻りました:D", - "create.command.killTPSCommand.status.usage.0": "[Create]: /killtps stopを使用してサーバーのティックを通常の速度に戻します", - "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用して、サーバーのティックを意図的に遅くします", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "からくりが止まる", - "create.subtitle.mixing": "混ぜる音", - "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "アイテムが滑る", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "ブレイズの咀嚼音", - "create.subtitle.funnel_flap": "ファンネルがはためく", - "create.subtitle.schematicannon_finish": "概略図砲が作業を終える", - "create.subtitle.scroll_value": "スクロールのカチカチ音", - "create.subtitle.crafter_craft": "メカニカルクラフターがクラフトする", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "ハンドクランクが回る", - "create.subtitle.wrench_remove": "機械を壊す", - "create.subtitle.cogs": "歯車がゴロゴロと鳴る", - "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", - "create.subtitle.wrench_rotate": "レンチを使う", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る", - "create.subtitle.contraption_assemble": "からくりが動く", - "create.subtitle.crafter_click": "メカニカルクラフターのカチカチ音", - "create.subtitle.depot_plop": "デプロイヤーにアイテムが入れられる", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "アイテムの例(ただ単にこのツールチップが存在することを示すマーカー)", - "item.create.example_item.tooltip.summary": "アイテムの簡単な説明。アンダーバーで用語を強調表示します。", - "item.create.example_item.tooltip.condition1": "これをしたとき", - "item.create.example_item.tooltip.behaviour1": "すると、このアイテムはこのようなことを行います。(シフトを押したときに表示される)", - "item.create.example_item.tooltip.condition2": "そしてこれをしたとき", - "item.create.example_item.tooltip.behaviour2": "好きなだけ挙動を追加できます。", - "item.create.example_item.tooltip.control1": "Ctrlを押したとき", - "item.create.example_item.tooltip.action1": "これらのコントロールが表示されます。", - - "block.create.wooden_bracket.tooltip": "木製ブラケット", - "block.create.wooden_bracket.tooltip.summary": "補強用の温かみのある木の欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", - - "block.create.metal_bracket.tooltip": "金属ブラケット", - "block.create.metal_bracket.tooltip.summary": "補強用の頑丈で工業的な欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", - - "block.create.copper_casing.tooltip": "銅ケーシング", - "block.create.copper_casing.tooltip.summary": "様々な用途に使える丈夫なマシンケーシング。飾り付けにも安心してお使いいただけます。", - "block.create.copper_casing.tooltip.condition1": "液体パイプに使ったとき", - "block.create.copper_casing.tooltip.behaviour1": "_液体パイプ_を_銅ケーシング_で_覆います_。ケース入り液体パイプは_接続状態を固定_し、隣にパイプ等を置いても接続が変化しなくなります。", - - "block.create.encased_fluid_pipe.tooltip": "ケース入り液体パイプ", - "block.create.encased_fluid_pipe.tooltip.summary": "銅ケーシングに覆われた液体パイプ", - - "block.create.seat.tooltip": "シート", - "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_構造物_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", - "block.create.seat.tooltip.condition1": "右クリックしたとき", - "block.create.seat.tooltip.behaviour1": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", - - "item.create.blaze_cake.tooltip": "ブレイズケーキ", - "item.create.blaze_cake.tooltip.summary": "働き者の_ブレイズバーナー_達に美味しいご馳走を。彼らを燃え上がらせよう(物理)!", - - "block.create.fluid_pipe.tooltip": "液体パイプ", - "block.create.fluid_pipe.tooltip.summary": "_液体_の輸送に使います。_液体_輸送にはメカニカルポンプが必要です。", - "block.create.fluid_pipe.tooltip.condition1": "液体輸送", - "block.create.fluid_pipe.tooltip.behaviour1": "_タンク_や_鉢_などの_液体コンテナ_に繋がります。また、_パイプ_の端が露出しているので液体を吹き出したり設置したりできます。液漏れ注意!", - "block.create.fluid_pipe.tooltip.condition2": "レンチで右クリックしたとき", - "block.create.fluid_pipe.tooltip.behaviour2": "可能ならパイプに窓を設けます。", - - "block.create.hose_pulley.tooltip": "ホースプーリー", - "block.create.hose_pulley.tooltip.summary": "ワールドの大量の_液体_を_吸引_したり、_放出_したりするのに使います。", - "block.create.hose_pulley.tooltip.condition1": "回転力を供給したとき", - "block.create.hose_pulley.tooltip.behaviour1": "ホースを_上げ下げ_して、どの程度の_高さ_まで_吸引_や_放出_を行うか決めます。", - "block.create.hose_pulley.tooltip.condition2": "プーリー本体から液体を吸い込むとき", - "block.create.hose_pulley.tooltip.behaviour2": "ホースの端がおろされた本体から_液体_ブロックを_吸引_し始めます。非常に_大量_の液体は_無限_と_みなされます_。", - "block.create.hose_pulley.tooltip.condition3": "プーリー本体に液体が押しこまれたとき", - "block.create.hose_pulley.tooltip.behaviour3": "ホースの端の_高さ_まで、_液体_の_放出_を始めます。", - - "block.create.fluid_tank.tooltip": "液体タンク", - "block.create.fluid_tank.tooltip.summary": "あなたのお気に入りのあらゆる_液体_を_貯蔵_できます。縦横に並べて大きさを調整できます。", - "block.create.fluid_tank.tooltip.condition1": "レンチで右クリックしたとき", - "block.create.fluid_tank.tooltip.behaviour1": "窓の付けたり、外したりします。", - - "block.create.creative_fluid_tank.tooltip": "クリエイティブ液体タンク", - "block.create.creative_fluid_tank.tooltip.summary": "この_液体タンク_は、あらゆる液体を無限に複製します。縦横に並べて大きさを調整できます。", - "block.create.creative_fluid_tank.tooltip.condition1": "液体がタンクに入っているとき", - "block.create.creative_fluid_tank.tooltip.behaviour1": "このタンクから何かを_取り出す_と、指定された液体が_無限_に_供給_されます。このタンクに_搬入_された液体は_消滅_します。", - "block.create.creative_fluid_tank.tooltip.condition2": "レンチで左クリックしたとき", - "block.create.creative_fluid_tank.tooltip.behaviour2": "窓を付け外しします。", - - "block.create.fluid_valve.tooltip": "液体バルブ", - "block.create.fluid_valve.tooltip.summary": "パイプ内の液体の流れを止めます。", - "block.create.fluid_valve.tooltip.condition1": "液体制御", - "block.create.fluid_valve.tooltip.behaviour1": "_回転力_を加えると_バルブ_は強制的に閉じ、_液体_の流れを止めます。_回転_方向を逆にするとバルブが再び開きます。", - - "block.create.mechanical_pump.tooltip": "メカニカルポンプ", - "block.create.mechanical_pump.tooltip.summary": "_回転力_を使って_パイプ_に沿って_液体_を輸送します。両方向に最大効果範囲があります。(デフォルト16ブロック)", - "block.create.mechanical_pump.tooltip.condition1": "液体輸送", - "block.create.mechanical_pump.tooltip.behaviour1": "_回転力_を加えると_パイプ_を流れる_液体_を移動させる圧力が発生します。_回転方向_を逆にすると、_液体_の流れる方向を切り替えられます。", - "block.create.mechanical_pump.tooltip.control1": "レンチで右クリックしたとき", - "block.create.mechanical_pump.tooltip.action1": "_ポンプ_の方向を反転させ、デフォルトの流れる方向を切り替えます。", - - "block.create.smart_fluid_pipe.tooltip": "スマート液体パイプ", - "block.create.smart_fluid_pipe.tooltip.summary": "フィルター付きの_液体パイプ_。どの_液体_を通過させるか設定できます。", - "block.create.smart_fluid_pipe.tooltip.condition1": "液体を搬入したとき", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "フィルターに合わない液体を搬入したスマート液体パイプは、流れを遮断します。", - "block.create.smart_fluid_pipe.tooltip.condition2": "液体コンテナに隣接しているとき", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "あらゆる容器から_流れ出す_スマート液体パイプは、その_フィルター_に_合った_液体のみを搬入します。", - - "block.create.spout.tooltip": "アイテム注液口", - "block.create.spout.tooltip.summary": "_液体_を注入する注液器。", - "block.create.spout.tooltip.condition1": "液体充填", - "block.create.spout.tooltip.behaviour1": "_バケツ_や_瓶_のような_容器アイテム_を下に置くと、貯蔵された_液体_でそれを満たします。", - "block.create.spout.tooltip.condition2": "液体自動化", - "block.create.spout.tooltip.behaviour2": "_ベルト_や_デポ_の上に置かれたアイテム注液口は、その下を通過する_容器アイテム_に反応します。", - - "block.create.item_drain.tooltip": "アイテム排液口", - "block.create.item_drain.tooltip.summary": "_液体アイテム_を空にする格子の付いたデポ。", - "block.create.item_drain.tooltip.condition1": "液体排液", - "block.create.item_drain.tooltip.behaviour1": "_バケツ_や_ボトル_などの_液体入り容器_を横から搬入すると、アイテム排液口はその_液体入り容器_に空にしようとします。その後、アイテムは反対側に排出されます。", - - "item.create.wand_of_symmetry.tooltip": "対称の杖", - "item.create.wand_of_symmetry.tooltip.summary": "対象の鏡をまたいだ範囲内のブロック設置を完全に複製します。", - "item.create.wand_of_symmetry.tooltip.condition1": "ホットバーにあるとき", - "item.create.wand_of_symmetry.tooltip.behaviour1": "対象の鏡は有効のまま", - "item.create.wand_of_symmetry.tooltip.control1": "地面を右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action1": "対象の鏡を_作成_または_移動_する", - "item.create.wand_of_symmetry.tooltip.control2": "空中を右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action2": "有効な対象の鏡を_削除_", - "item.create.wand_of_symmetry.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action3": "_設定インターフェース_を開きます。", - - "item.create.handheld_worldshaper.tooltip": "携帯型ワールドシェーパー", - "item.create.handheld_worldshaper.tooltip.summary": "特色ある_風景_や_地形_を作成する便利なツール。", - "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", - "item.create.handheld_worldshaper.tooltip.control2": "ブロックを右クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action2": "現在選択されている_ブラシ_と_ツール_を目標の場所に適用します。", - "item.create.handheld_worldshaper.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action3": "_設定インターフェース_を開きます。", - - "item.create.tree_fertilizer.tooltip": "樹木の肥料", - "item.create.tree_fertilizer.tooltip.summary": "一般的な種類の木の成長を早めるのに適したミネラルを配合した強力な肥料。", - "item.create.tree_fertilizer.tooltip.condition1": "苗木に使ったとき", - "item.create.tree_fertilizer.tooltip.behaviour1": "_間隔の条件_に_関係なく_苗木を成長させる", - - "item.create.extendo_grip.tooltip": "マジックハンド", - "item.create.extendo_grip.tooltip.summary": "ビヨヨーン!着用者の_射程_を大幅に_伸ばし_ます。", - "item.create.extendo_grip.tooltip.condition1": "オフハンドに装備したとき", - "item.create.extendo_grip.tooltip.behaviour1": "_メインハンド_で使うアイテムの_射程_を_伸ばし_ます。", - - "item.create.filter.tooltip": "フィルター", - "item.create.filter.tooltip.summary": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_入れ子になったフィルター_と照合します。", - "item.create.filter.tooltip.condition1": "フィルタースロットにセットしたとき", - "item.create.filter.tooltip.behaviour1": "_設定_に応じてアイテムの流れを_制御_します。", - "item.create.filter.tooltip.condition2": "右クリックしたとき", - "item.create.filter.tooltip.behaviour2": "_設定インターフェース_を開きます。", - - "item.create.attribute_filter.tooltip": "属性フィルター", - "item.create.attribute_filter.tooltip.summary": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、アイテムの_属性_と_カテゴリのセット_と照合します。", - "item.create.attribute_filter.tooltip.condition1": "フィルタースロットにセットしたとき", - "item.create.attribute_filter.tooltip.behaviour1": "_設定_に応じてアイテムの流れを_制御_します。", - "item.create.attribute_filter.tooltip.condition2": "右クリックしたとき", - "item.create.attribute_filter.tooltip.behaviour2": "_設定インターフェース_を開きます。", - - "item.create.empty_schematic.tooltip": "空の概略図", - "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図テーブル_での書き込みに使われます。", - - "item.create.schematic.tooltip": "概略図", - "item.create.schematic.tooltip.summary": "ワールドに設置できる構造物を保持します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築します。", - "item.create.schematic.tooltip.condition1": "持ったとき", - "item.create.schematic.tooltip.behaviour1": "画面上のツールを使ってホログラムを配置します。", - "item.create.schematic.tooltip.control1": "スニークしながら右クリックしたとき", - "item.create.schematic.tooltip.action1": "正確な_座標_を入力する_インターフェース_を開きます", - - "item.create.schematic_and_quill.tooltip": "概略図と羽根ペン", - "item.create.schematic_and_quill.tooltip.summary": "ワールドの構造物を.nbtファイルに保存できます。", - "item.create.schematic_and_quill.tooltip.condition1": "ステップ1", - "item.create.schematic_and_quill.tooltip.behaviour1": "右クリックして2つのコーナーポイントを選択します。", - "item.create.schematic_and_quill.tooltip.condition2": "ステップ2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押しながらスクロール_して、サイズを調整します。もう一度右クリックして保存します。", - "item.create.schematic_and_quill.tooltip.control1": "右クリックしたとき", - "item.create.schematic_and_quill.tooltip.action1": "コーナーポイントを選択/保存を確認します。", - "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押してるとき", - "item.create.schematic_and_quill.tooltip.action2": "_空中_でポイントを選択します。_スクロール_して距離を調整します。", - "item.create.schematic_and_quill.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.schematic_and_quill.tooltip.action3": "選択を_リセット_して削除します。", - - "block.create.schematicannon.tooltip": "概略図砲", - "block.create.schematicannon.tooltip.summary": "ブロックを撃って、展開された_概略図_をもとにワールドに設置します。隣接する収納ブロックからのアイテムを自動搬入し、_火薬_を燃料とします。", - "block.create.schematicannon.tooltip.condition1": "右クリックしたとき", - "block.create.schematicannon.tooltip.behaviour1": "_インターフェース_を開きます。", - - "block.create.schematic_table.tooltip": "概略図テーブル", - "block.create.schematic_table.tooltip.summary": "保存された構造物を_空の概略図_に書き込みます。", - "block.create.schematic_table.tooltip.condition1": "空の概略図を入れたとき", - "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", - - "item.create.goggles.tooltip": "ゴーグル", - "item.create.goggles.tooltip.summary": "有用な_回転力_の_情報_を視界に映す眼鏡。", - "item.create.goggles.tooltip.condition1": "着用したとき", - "item.create.goggles.tooltip.behaviour1": "設置された機械の_回転速度_および、_機械_の_応力への影響_と_許容量_を_色付きのインジケーター_で表示します。", - "item.create.goggles.tooltip.condition2": "計器を見たとき", - "item.create.goggles.tooltip.behaviour2": "計器が接続されているネットワークの_回転速度_または_応力_に関する詳細情報を表示します。", - "item.create.goggles.tooltip.condition3": "液体コンテナを見たとき", - "item.create.goggles.tooltip.behaviour3": "ブロックの_容量_と、その中に貯蔵されている_液体_の詳細情報を表示します。", - - "item.create.wrench.tooltip": "レンチ", - "item.create.wrench.tooltip.summary": "機械いじりに便利な道具。機械の_回転_、_解体_、_設定_に使います。", - "item.create.wrench.tooltip.control1": "機械を右クリックしたとき", - "item.create.wrench.tooltip.action1": "操作した面に向かって、または面から離れるように_機械_を_回転_させます。", - "item.create.wrench.tooltip.control2": "スニークしながら右クリックしたとき", - "item.create.wrench.tooltip.action2": "_機械を分解_し、_インベントリ_に戻します。", - - "block.create.nozzle.tooltip": "ノズル", - "block.create.nozzle.tooltip.summary": "_ケース入りファン_の前面に取り付けて、エンティティへの影響を_全方向_に分散します。", - - "block.create.cuckoo_clock.tooltip": "鳩時計", - "block.create.cuckoo_clock.tooltip.summary": "空間を_彩り_、_時間を刻む_素晴らしい細工。", - "block.create.cuckoo_clock.tooltip.condition1": "回転したとき", - "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。、_正午_と夕暮れに_プレイヤーが眠れる_時間になるとすぐに_再生_します。", - - "block.create.turntable.tooltip": "ターンテーブル", - "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", - - "block.create.portable_fluid_interface.tooltip": "ポータブル液体インターフェース", - "block.create.portable_fluid_interface.tooltip.summary": "ピストン、ベアリング、トロッコ、またはプーリーで移動する_構造物_との間で_液体_を_移動_させる可搬式の交換ポイント。2つのインターフェースは、互いに_向かい合って_、_1~2ブロック離す_必要があります。", - "block.create.portable_fluid_interface.tooltip.condition1": "動かしたとき", - "block.create.portable_fluid_interface.tooltip.behaviour1": "設置してある_ポータブル液体インターフェース_と相互作用して、構造物との間で液体を移動させます。_設置してあるインターフェース_に搬入、または搬出するパイプは、構造物のタンクと_直接_相互作用します。液体が交換される間、構造物は一時的に停止します。", - "block.create.portable_fluid_interface.tooltip.condition2": "レッドストーン信号を受けたとき", - "block.create.portable_fluid_interface.tooltip.behaviour2": "アクティブな接続を即座に_切断_します。", - - "block.create.stockpile_switch.tooltip": "在庫スイッチ", - "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_に基づいてレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転される_しきい値_を設定できます。", - "block.create.stockpile_switch.tooltip.condition1": "右クリックしたとき", - "block.create.stockpile_switch.tooltip.behaviour1": "_設定インターフェース_を開きます。", - - "block.create.content_observer.tooltip": "コンテンツオブザーバー", - "block.create.content_observer.tooltip.summary": "設定された_フィルター_に一致する_コンテナ_や_メカニカルベルト_内の_アイテム_を_検出_します。観察している_収納ブロック_、_ベルト_、または_シュート_に一致するアイテムが含まれている場合、このは_レッドストーン信号_を発します。観察された_ファンネル_が一致するアイテムを_運搬_すると、このコンポーネントは_レッドストーンパルス_を発します。", - - "block.create.adjustable_crate.tooltip": "可変クレート", - "block.create.adjustable_crate.tooltip.summary": "この_収納ブロック_は、容量を手動で調整できます。任意のアイテムを_16スタック_まで収納できます。_レッドストーンコンパレーター_に対応しています。", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "_インターフェース_を開きます。", - - "block.create.creative_crate.tooltip": "クリエイティブクレート", - "block.create.creative_crate.tooltip.summary": "この_収納ブロック_は、あらゆるアイテムを無限に複製します。隣接する_概略図砲_へブロックを無限に供給します。", - "block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき", - "block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定されたアイテムが_無限_に_搬出_されます。このクレートに_搬入_されたアイテムは_消滅_します。", - - "block.create.controller_rail.tooltip": "コントローラーレール", - "block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる_一方通行_の_パワード_レール", - "block.create.controller_rail.tooltip.condition1": "レッドストーン信号を受けたとき", - "block.create.controller_rail.tooltip.behaviour1": "通過する_トロッコ_を_信号の強度_に対応した移動速度に_加速_または_減速_します。また、隣接するコントローラレールにレッドストーン信号を伝達します。2つのコントローラレールに強度の異なるレッドストーン信号を供給すると、それらの間のレールはその信号の変化を補間します。", - - "item.create.sand_paper.tooltip": "紙やすり", - "item.create.sand_paper.tooltip.summary": "_素材_を_磨く_のに使える荒い紙。デプロイヤーに自動的で磨かせることもできます。", - "item.create.sand_paper.tooltip.condition1": "使ったとき", - "item.create.sand_paper.tooltip.behaviour1": "_オフハンド_で持っていたり、_視線先_の_ドロップ状態のアイテム_を磨きます。", - - "item.create.builders_tea.tooltip": "建築家のお茶", - "item.create.builders_tea.tooltip.summary": "_やる気_がみなぎる、一日の始まりに最適な飲み物。", - - "item.create.refined_radiance.tooltip": "高貴な光輝", - "item.create.refined_radiance.tooltip.summary": "_吸収した光輝_から鍛造した色彩素材。", - - "item.create.shadow_steel.tooltip": "シャドウスチール", - "item.create.shadow_steel.tooltip.summary": "_奈落の虚無_から鍛造した色彩素材。", - - "item.create.minecart_coupling.tooltip": "トロッコ連結器", - "item.create.minecart_coupling.tooltip.summary": "壮大な列車を作るために_トロッコ_や_からくり車両_を_連結_しよう。", - "item.create.minecart_coupling.tooltip.condition1": "トロッコに使ったとき", - "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "作業中です!", - "create.tooltip.randomWipDescription0": "お子様の手の届かないところに保管してください。", - "create.tooltip.randomWipDescription1": "赤ちゃんパンダは、このアイテムを使うたびに死にます。そう、いつでもね。", - "create.tooltip.randomWipDescription2": "自己責任。", - "create.tooltip.randomWipDescription3": "これはあなたが探しているアイテムではありません。*人差し指を振って*ちっちっちっ、解散!", - "create.tooltip.randomWipDescription4": "このアイテムは10秒で自爆します。10、9、8 ...", - "create.tooltip.randomWipDescription5": "私を信じて、それは無駄だ。", - "create.tooltip.randomWipDescription6": "このアイテムを使うことにより、お客様は免責事項に同意し、その条件を承諾するものとします。", - "create.tooltip.randomWipDescription7": "これは君に向いていないかもしれない。あれはどう??", - "create.tooltip.randomWipDescription8": "それを使ったことをすぐ後悔するだろう。", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "[%1$s] を長押しして思案画面を開く", - "create.ponder.subject": "このシーンの主題", - "create.ponder.pondering": "思案中...", - "create.ponder.identify_mode": "確認モードになっています.\n [%1$s] で一時停止を解除", - "create.ponder.associated": "関連項目", - "create.ponder.close": "閉じる", - "create.ponder.identify": "ブロック名を確認", - "create.ponder.next": "次のシーン", - "create.ponder.previous": "前のシーン", - "create.ponder.replay": "最初から", - "create.ponder.think_back": "戻る", - "create.ponder.slow_text": "熟考(スロー再生)", - "create.ponder.shared.movement_anchors": "シャーシや超粘着剤を使えば大きな構造物も動かせます", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "スニーク +", - "create.ponder.shared.storage_on_contraption": "構造物中の収納ブロックは自動的にドロップを拾います", - "create.ponder.shared.behaviour_modify_wrench": "この挙動はレンチを使って変更できます", - "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "動力源: 16 RPM", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "原動機", - "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械です", - "create.ponder.tag.contraption_actor": "からくり構造部品", - "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械です", - "create.ponder.tag.arm_targets": "メカニカルアームのターゲット", - "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロックです", - "create.ponder.tag.logistics": "輸送機械", - "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械です", - "create.ponder.tag.movement_anchor": "からくり機械", - "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすことができるからくりを作ることができる機械です", - "create.ponder.tag.creative": "クリエイティブ限定", - "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械です", - "create.ponder.tag.kinetic_relays": "伝達機械", - "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械です", - "create.ponder.tag.windmill_sails": "風車ベアリング用の帆", - "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても同じ効率です", - "create.ponder.tag.contraption_assembly": "ブロック組み立て用品", - "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械です", - "create.ponder.tag.decoration": "装飾", - "create.ponder.tag.decoration.description": "主に装飾に使うブロックです", - "create.ponder.tag.kinetic_appliances": "作業機械", - "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械です", - "create.ponder.tag.redstone": "制御機械", - "create.ponder.tag.redstone.description": "レッドストーン工学に役立つ機械です", - "create.ponder.tag.fluids": "液体制御機械", - "create.ponder.tag.fluids.description": "液体の輸送や利用に役立つ機械です", - - "create.ponder.adjustable_pulse_repeater.header": "可変パルスリピーターによる信号制御", - "create.ponder.adjustable_pulse_repeater.text_1": "可変パルスリピーターは信号を遅延し、短いパルスにして出力します", - "create.ponder.adjustable_pulse_repeater.text_2": "マウスホイールで遅延時間を調整できます", - "create.ponder.adjustable_pulse_repeater.text_3": "最大30分まで遅延時間を調整できます", - - "create.ponder.adjustable_repeater.header": "可変リピーターによる信号制御", - "create.ponder.adjustable_repeater.text_1": "可変リピーターは通常のレッドストーンリピーターと同様の動作をします", - "create.ponder.adjustable_repeater.text_2": "決められた時間だけ遅延します...", - "create.ponder.adjustable_repeater.text_3": "...そして同じ時間だけクールダウンします", - "create.ponder.adjustable_repeater.text_4": "マウスホイールで遅延時間を調整できます", - "create.ponder.adjustable_repeater.text_5": "最大30分まで遅延時間を調整できます", - - "create.ponder.analog_lever.header": "アナログレバーによる信号制御", - "create.ponder.analog_lever.text_1": "アナログレバーはコンパクトに正確なレッドストーン動力を出力できます。", - "create.ponder.analog_lever.text_2": "右クリックでレッドストーン強度を上げられます。", - "create.ponder.analog_lever.text_3": "スニークしながら右クリックでレッドストーン強度を下げられます。", - - "create.ponder.andesite_tunnel.header": "安山岩トンネルの使い方", - "create.ponder.andesite_tunnel.text_1": "安山岩のトンネルは、ベルトを隠せます", - "create.ponder.andesite_tunnel.text_2": "安山岩のトンネルが横につながっていると...", - "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", - "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", - - "create.ponder.basin.header": "鉢によるアイテム加工", - "create.ponder.basin.text_1": "鉢には材料となるアイテムや液体を入れられます", - "create.ponder.basin.text_2": "鉢は完成品アイテムを斜め下へ搬出しようとします", - "create.ponder.basin.text_3": "搬出できる機械が存在する場合、鉢には搬出用の蛇口が表示されます", - "create.ponder.basin.text_4": "ここではいくつかの選択肢があります", - "create.ponder.basin.text_5": "搬出したアイテムは下の収納ブロックに入ります", - "create.ponder.basin.text_6": "搬出先がない場合、鉢は完成品アイテムを保持します", - "create.ponder.basin.text_7": "これは、完成品アイテムを材料として再利用する必要がある場合に役立ちます", - "create.ponder.basin.text_8": "完成品アイテムは、鉢から搬出する必要があります", - "create.ponder.basin.text_9": "未処理のアイテムが搬出されないように、フィルターが必要になる場合があります", - - "create.ponder.bearing_modes.header": ":メカニカルベアリングの動作モード", - "create.ponder.bearing_modes.text_1": "止まったとき、ベアリングは格子に沿った近い角度に構造物を配置します", - "create.ponder.bearing_modes.text_2": "通常のブロックに戻らないように設定したり、開始時の角度のみブロックに戻るように設定することもできます", - - "create.ponder.belt_casing.header": "ケース入りベルト", - "create.ponder.belt_casing.text_1": "真鍮か安山岩のケーシングを使ってメカニカルベルトを飾れます", - "create.ponder.belt_casing.text_2": "ケーシングはレンチを使って外せます", - - "create.ponder.belt_connector.header": "メカニカルベルトの使い方", - "create.ponder.belt_connector.text_1": "メカニカルベルトを持って2つのシャフトを右クリックすると、シャフトにベルトコンベアを繋げて設置されます", - "create.ponder.belt_connector.text_2": "誤ったシャフトをクリックしてしまった場合、スニークしながら右クリックでキャンセルできます", - "create.ponder.belt_connector.text_3": "ベルトの何処にでもシャフトを追加できます", - "create.ponder.belt_connector.text_4": "ベルトを介して接続されたシャフトは、同じ速度・方向で回転します", - "create.ponder.belt_connector.text_5": "追加したシャフトは、レンチで取り除けま", - "create.ponder.belt_connector.text_6": "メカニカルベルトは見栄えのために染色できます", - - "create.ponder.belt_directions.header": "メカニカルベルトの有効な向きについて", - "create.ponder.belt_directions.text_1": "ベルトは自由な方向に接続できるわけではありません", - "create.ponder.belt_directions.text_2": "1.水平方向", - "create.ponder.belt_directions.text_3": "2.斜め", - "create.ponder.belt_directions.text_4": "3.垂直方向", - "create.ponder.belt_directions.text_5": "4.垂直方向のシャフトを水平に", - "create.ponder.belt_directions.text_6": "これらはすべて接続可能な方向です。ベルトの長さは2~20ブロックの間で自由に接続できます", - - "create.ponder.belt_transport.header": "メカニカルベルトによる運搬", - "create.ponder.belt_transport.text_1": "ベルトを動かすと、アイテムやエンティティを運べます", - "create.ponder.belt_transport.text_2": "素手で右クリックすると、ベルトからアイテムを取り出せます", - - "create.ponder.blaze_burner.header": "ブレイズバーナーへの餌やり", - "create.ponder.blaze_burner.text_1": "ブレイズバーナーは、鉢で加工するアイテムを加熱できます", - "create.ponder.blaze_burner.text_2": "その為には、ブレイズに燃料を与える必要があります", - "create.ponder.blaze_burner.text_3": "ブレイズケーキを与えると、バーナーはさらに強力な火力を出せます", - "create.ponder.blaze_burner.text_4": "供給作業は、デプロイヤーやメカニカルアームで自動化できます", - - "create.ponder.brass_funnel.header": "真鍮ファンネル", - "create.ponder.brass_funnel.text_1": "安山岩ファンネルでは、1回につき1つのアイテムしか搬出できません", - "create.ponder.brass_funnel.text_2": "真鍮ファンネルは、最大で1スタックのアイテムを搬出できます", - "create.ponder.brass_funnel.text_3": "フィルタースロットを見ながらスクロールすると、取り出すアイテム数を正確に調整できます", - "create.ponder.brass_funnel.text_4": "フィルタースロットにアイテムを設定すると、ファンネルは一致するアイテムのみを運搬できます", - - "create.ponder.brass_tunnel.header": "真鍮トンネルの使い方", - "create.ponder.brass_tunnel.text_1": "真鍮トンネルは、ベルトを隠せます", - "create.ponder.brass_tunnel.text_2": "真鍮トンネルには、搬出入面それぞれにフィルタースロットがあります", - "create.ponder.brass_tunnel.text_3": "搬入側のフィルターは、単純に一致しないアイテムを搬入しないようにします", - "create.ponder.brass_tunnel.text_4": "搬出側のフィルターは、搬出するアイテムを種類別に分類できます", - "create.ponder.brass_tunnel.text_5": "通過するアイテムが複数の口から搬出できる場合は、モードによってどのように搬出されるかが決まります", - "create.ponder.brass_tunnel.text_6": "並べられた複数のベルト上の真鍮製トンネルは接続されます", - "create.ponder.brass_tunnel.text_7": "搬入したアイテムは、接続されているすべての搬出口に分配されます", - "create.ponder.brass_tunnel.text_8": "アイテムをトンネルへ直接搬入することもできます", - - "create.ponder.brass_tunnel_modes.header": "真鍮トンネルのモード", - "create.ponder.brass_tunnel_modes.text_1": "真鍮トンネルはレンチを使って分配モードを変更できます", - "create.ponder.brass_tunnel_modes.text_10": "「同期」は、真鍮製トンネルのデフォルト設定です", - "create.ponder.brass_tunnel_modes.text_11": "アイテムはグループ内の全てのトンネルがアイテムを搬入できる場合のみ通過を許可します", - "create.ponder.brass_tunnel_modes.text_12": "これにより、影響を受ける全てのベルトに同じ割合でアイテムを供給できます", - "create.ponder.brass_tunnel_modes.text_2": "「スタック分割」は、アイテムを通せる搬出口の間でアイテムスタックを均等に分配しようとします", - "create.ponder.brass_tunnel_modes.text_3": "搬出口がアイテムを通せない場合はスキップされます ", - "create.ponder.brass_tunnel_modes.text_4": "「強制スタック分割」は搬出をスキップせず、それができるようになるまで待機します", - "create.ponder.brass_tunnel_modes.text_5": "「順繰り分配」 はスタックを分割せず、それぞれの搬出口から順番に搬出します ", - "create.ponder.brass_tunnel_modes.text_6": "繰り返しになりますが、搬出口がアイテムを通せない場合はスキップされます", - "create.ponder.brass_tunnel_modes.text_7": "「強制順繰り分配」は、搬出をスキップしません", - "create.ponder.brass_tunnel_modes.text_8": "「近い所を優先」アイテムの搬入口に最も近い搬出口から優先して分配します ", - "create.ponder.brass_tunnel_modes.text_9": "「ランダム」は、スタック全体をランダムに選択された搬出口に分配します ", - - "create.ponder.cart_assembler.header": "トロッコアセンブラによる構造物の移動", - "create.ponder.cart_assembler.text_1": "レッドストーン信号を受けたアセンブラは、通過するトロッコに接続された構造物を取り付けます", - "create.ponder.cart_assembler.text_2": "レッドストーン信号を受けていない場合、通過するトロッコの構造物を取り外し、ブロックへ戻します", - "create.ponder.cart_assembler.text_3": "トロッコにレンチを使うと、構造物を付けたまま別の場所へ運べます", - - "create.ponder.cart_assembler_dual.header": "列車を組み立てる", - "create.ponder.cart_assembler_dual.text_1": "2つのトロッコアセンブラが構造物を共有している場合...", - "create.ponder.cart_assembler_dual.text_2": "...どちらかにレッドストーン信号を受けると、列車が組み立てられます", - "create.ponder.cart_assembler_dual.text_3": "トロッコ連結器で接続されたトロッコと同様の動作をします", - - "create.ponder.cart_assembler_modes.header": "からくり付きトロッコの方向設定", - "create.ponder.cart_assembler_modes.text_1": "トロッコの構造物は、トロッコの動きに合わせて回転します", - "create.ponder.cart_assembler_modes.text_2": "アセンブラーが「常に向きを固定する」に設定されている場合、構造物の向きは変わりません", - - "create.ponder.cart_assembler_rails.header": "その他のトロッコとレールの種類", - "create.ponder.cart_assembler_rails.text_1": "通常のレールに設置されたトロッコアセンブラは、通過するカートの動きに影響を与えません", - "create.ponder.cart_assembler_rails.text_2": "パワードレールやコントローラーレールでは、レッドストーン信号を受けるまでトロッコは固定されます", - "create.ponder.cart_assembler_rails.text_3": "他のトロッコをアンカーとして使えます", - "create.ponder.cart_assembler_rails.text_4": "かまど付きトロッコは、構造物の収納ブロックから燃料を確保します", - - "create.ponder.chain_drive.header": "ケース入りチェーンドライブによる回転力の伝達", - "create.ponder.chain_drive.text_1": "チェーンドライブは、一列に並べると回転を伝達します", - "create.ponder.chain_drive.text_2": "この様に接続された全てのシャフトは、回転方向が同じです", - "create.ponder.chain_drive.text_3": "列のどの部分でも90度回転させて設置できます", - - "create.ponder.chain_gearshift.header": "チェーンギアシフトによる回転速度の制御", - "create.ponder.chain_gearshift.text_1": "信号を受けていないチェーンギアシフトは、チェーンドライブと同じように動作します", - "create.ponder.chain_gearshift.text_2": "信号を受けている時は、列内の他のチェーンドライブに伝達される速度が2倍になります", - "create.ponder.chain_gearshift.text_3": "信号を受けているチェーンギアシフトが動力源に無い場合、速度が半分になります", - "create.ponder.chain_gearshift.text_4": "いずれの場合も、列内のチェーンドライブは常に「信号入りチェーンギアシフト」の2倍の速度で動作します", - "create.ponder.chain_gearshift.text_5": "レッドストーン信号の強度で、比率を1と2の間でより正確に調整できます", - "create.ponder.chain_gearshift.text_6": "12 RPM", - - "create.ponder.chute.header": "シュートでの下方向へ運搬", - "create.ponder.chute.text_1": "シュートは、収納ブロックから垂直方向にアイテムを運搬できます", - "create.ponder.chute.text_2": "レンチを使って、窓を付けられます", - "create.ponder.chute.text_3": "シュートを側面に配置すると、斜めに接続されます", - - "create.ponder.chute_upward.header": "シュートでの上方向へ運搬", - "create.ponder.chute_upward.text_1": "シュートの上部または下部にファンを配置すると、アイテムを上方向へ運搬できます", - "create.ponder.chute_upward.text_2": "エンジニアのゴーグルを付けてシュートを見ると、移動方向の情報が表示されます", - "create.ponder.chute_upward.text_3": "ブロックで詰まっている端では、アイテムを側面から搬出入する必要があります", - - "create.ponder.clockwork_bearing.header": "時計仕掛けのベアリングを使った構造物のアニメーション", - "create.ponder.clockwork_bearing.text_1": "時計仕掛けのベアリングは、前面にブロックを取り付けられます", - "create.ponder.clockwork_bearing.text_2": "回転力を受けると、現在の時間に合わせて構造物が回転します", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "ベアリングを右クリックして、構造物のアニメーションを開始・停止します", - "create.ponder.clockwork_bearing.text_6": "時針の前に、2つ目の構造物を追加できます", - "create.ponder.clockwork_bearing.text_7": "2つの構造物が超粘着剤などでくっついていないことを確認してください", - "create.ponder.clockwork_bearing.text_8": "2つ目の構造物は分針として回転します", - - "create.ponder.clutch.header": "クラッチによる回転力の制御", - "create.ponder.clutch.text_1": "クラッチは直線に回転を伝達します", - "create.ponder.clutch.text_2": "レッドストーン信号を受けると、回転の伝達を停止します", - - "create.ponder.cog_speedup.header": "歯車による回転速度変化", - "create.ponder.cog_speedup.text_1": "大小の歯車は斜めに接続できます", - "create.ponder.cog_speedup.text_2": "大きな歯車から歯車に接続すると、伝達される回転速度が2倍になります", - "create.ponder.cog_speedup.text_3": "逆に接続すると、伝達される回転速度が半分になります", - - "create.ponder.cogwheel.header": "歯車による回転力の伝達", - "create.ponder.cogwheel.text_1": "歯車は隣接する歯車へ回転力を伝達します", - "create.ponder.cogwheel.text_2": "このように連結された隣のシャフトは、逆方向に回転します", - - "create.ponder.creative_motor.header": "クリエイティブモーターによる回転力の生成", - "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで調整できる原動機です", - "create.ponder.creative_motor.text_2": "背面パネルを見てスクロールすると、モーターの回転速度を変更できます", - - "create.ponder.crushing_wheels.header": "破砕ホイールによるアイテム加工", - "create.ponder.crushing_wheels.text_1": "一対の破砕ホイールは、非常に効果的にアイテムを粉砕できます", - "create.ponder.crushing_wheels.text_2": "動作には、互いに逆方向で回転させる必要があります", - "create.ponder.crushing_wheels.text_3": "上からアイテムを投げ入れたりして、搬入すると加工されます", - "create.ponder.crushing_wheels.text_4": "アイテムを搬出入を自動化することもできます", - - "create.ponder.deployer.header": "デプロイヤーの使い方", - "create.ponder.deployer.text_1": "回転力を供給したデプロイヤーは、プレイヤーの動作を模倣できます", - "create.ponder.deployer.text_10": "前面へアイテムを右クリックして、アイテムを搬出入できます", - "create.ponder.deployer.text_11": "自動でアイテムを搬出入することもできます", - "create.ponder.deployer.text_12": "デプロイヤーはフィルタースロットを持っています", - "create.ponder.deployer.text_13": "フィルターを設定すると、一致するアイテムを持っている時だけ稼働します", - "create.ponder.deployer.text_14": "また、フィルターに一致するアイテムのみが搬入されるようになり...", - "create.ponder.deployer.text_15": "...一致しないアイテムのみが搬出されます", - "create.ponder.deployer.text_2": "動作は、常に前方2ブロックの位置へ行われます", - "create.ponder.deployer.text_3": "真正面のブロックが邪魔になることはありません", - "create.ponder.deployer.text_4": "デプロイヤーは以下の動作に使えます", - "create.ponder.deployer.text_5": "ブロックの設置", - "create.ponder.deployer.text_6": "アイテムの使用", - "create.ponder.deployer.text_7": "ブロックの使用", - "create.ponder.deployer.text_8": "ブロックの収穫", - "create.ponder.deployer.text_9": "モブへの攻撃", - - "create.ponder.deployer_contraption.header": "からくりに組み込んでのデプロイヤーの使い方", - "create.ponder.deployer_contraption.text_1": "からくりの一部として、デプロイヤーを稼働させると...", - "create.ponder.deployer_contraption.text_2": "...稼働した場所ごとに稼働し、からくり内の収納ブロックのアイテムを使用します", - "create.ponder.deployer_contraption.text_3": "フィルタースロットを使って、どのアイテムを使用するか指定できます", - - "create.ponder.deployer_modes.header": "デプロイヤーのモード", - "create.ponder.deployer_modes.text_1": "デフォルトでは、デプロイヤーは右クリックの動作を模倣します", - "create.ponder.deployer_modes.text_2": "レンチを使えば、左クリックの動作を模倣するように設定できます", - - "create.ponder.deployer_redstone.header": "レッドストーン信号によるデプロイヤーの制御", - "create.ponder.deployer_redstone.text_1": "レッドストーン信号を受けている間、デプロイヤーは稼働しません", - "create.ponder.deployer_redstone.text_2": "デプロイヤーは停止する前に、開始したサイクルは終了させます", - "create.ponder.deployer_redstone.text_3": "その為、オフのパルス信号を使って丁度1サイクルだけ稼働させられます", - - "create.ponder.depot.header": "デポの使い方", - "create.ponder.depot.text_1": "デポは動かないメカニカルベルトのようなブロックです", - "create.ponder.depot.text_2": "右クリックして、手動でのアイテム搬出入できます", - "create.ponder.depot.text_3": "メカニカルベルトのように、載せたアイテムを加工できます", - "create.ponder.depot.text_4": "また、メカニカルアームにアイテムを供給することもできます", - - "create.ponder.empty_blaze_burner.header": "空のブレイズバーナーの使い方", - "create.ponder.empty_blaze_burner.text_1": "空のバーナーでブレイズを右クリックし捕獲できます", - "create.ponder.empty_blaze_burner.text_2": "また、ブレイズはスポーンブロックから直接捕獲することもできます", - "create.ponder.empty_blaze_burner.text_3": "これで、様々な機械で利用する理想的な熱源が得られます", - "create.ponder.empty_blaze_burner.text_4": "空のブレイズバーナーは火打石と打ち金を使って火を付ければ装飾にも使えます", - "create.ponder.empty_blaze_burner.text_5": "しかし、これは加工用の熱源には適していません", - - "create.ponder.fan_direction.header": "ケース入りファンの気流", - "create.ponder.fan_direction.text_1": "ケース入りファンは、回転力を利用して気流を生み出します", - "create.ponder.fan_direction.text_2": "気流の強さと方向は、供給される回転力に依存します", - - "create.ponder.fan_processing.header": "ケース付きファンによるアイテム加工", - "create.ponder.fan_processing.text_1": "溶岩を通過した気流は、加熱されます", - "create.ponder.fan_processing.text_2": "この気流に当てられたアイテムは精錬されます", - "create.ponder.fan_processing.text_3": "ただし、食品は焼却されてしまいます", - "create.ponder.fan_processing.text_4": "食品加工には、代わりに火を使った燻製気流を利用する必要があります", - "create.ponder.fan_processing.text_5": "水を通過する気流は、洗浄気流になります", - "create.ponder.fan_processing.text_6": "この気流を使って、いくつかの面白い加工ができます", - "create.ponder.fan_processing.text_7": "ファンの速度は処理速度とは関係がなく、範囲のみが変わります", - "create.ponder.fan_processing.text_8": "ファンでの加工は、デポやベルト上のアイテムにも行われます", - - "create.ponder.fan_source.header": "ケース入りファンによる回転力の生成", - "create.ponder.fan_source.text_1": "ファンを熱源に向けて設置すると、回転力を生成できます", - "create.ponder.fan_source.text_2": "レッドストーン信号を受けると、回転力が生成されます", - - "create.ponder.flywheel.header": "勢車による回転力の生成", - "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、勢車が必要です", - "create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています", - "create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", - - "create.ponder.funnel_compat.header": "ファンネルの互換性", - "create.ponder.funnel_compat.text_1": "ファンネルは、他のいくつかの機械とも相性が良いです", - "create.ponder.funnel_compat.text_2": "上向きのメカニカルソー", - "create.ponder.funnel_compat.text_3": "デポ", - "create.ponder.funnel_compat.text_4": "アイテム排液口など", - - "create.ponder.funnel_direction.header": "運搬の方向", - "create.ponder.funnel_direction.text_1": "通常の配置では、収納ブロックからアイテムを搬出ます", - "create.ponder.funnel_direction.text_2": "スニークしながら設置すると、収納ブロックにアイテムを搬入します", - "create.ponder.funnel_direction.text_3": "レンチを使って、設置後にファンネルのモードを変えられます", - "create.ponder.funnel_direction.text_4": "ほとんどの方向で同じことができます", - "create.ponder.funnel_direction.text_5": "ベルト上のファンネルは、ベルトの移動方向に応じて搬入/搬出が決まります", - - "create.ponder.funnel_intro.header": "ファンネルの使い方", - "create.ponder.funnel_intro.text_1": "ファンネルは、収納ブロックのアイテムを運搬するのに使います", - - "create.ponder.funnel_redstone.header": "レッドストーンコントロール", - "create.ponder.funnel_redstone.text_1": "レッドストーン信号によって、ファンネルが動作を防げます", - - "create.ponder.funnel_transfer.header": "直接運搬", - "create.ponder.funnel_transfer.text_1": "ファンネルでは、閉じた収納ブロック間を直接運搬することはできません", - "create.ponder.funnel_transfer.text_2": "この様な場合は、シュートやスマートシュートの方が適しています", - "create.ponder.funnel_transfer.text_3": "また水平方向の運搬も同様で、この場合メカニカルベルトの方が適しています", - - "create.ponder.furnace_engine.header": "かまどエンジンによる回転力の生成", - "create.ponder.furnace_engine.text_1": "かまどエンジンは、取り付けたかまどの稼働中に回転力を生成します", - "create.ponder.furnace_engine.text_2": "この回転力は、非常に大きな応力許容量を持っています", - "create.ponder.furnace_engine.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", - - "create.ponder.gantry_carriage.header": "ガントリーキャリッジの使い方", - "create.ponder.gantry_carriage.text_1": "ガントリーキャリッジは、ガントリーシャフトに取り付けてスライドさせられます", - "create.ponder.gantry_carriage.text_2": "ガントリーの仕掛けは、取り付けたブロックを動かせます", - - "create.ponder.gantry_cascaded.header": "立体ガンドリー", - "create.ponder.gantry_cascaded.text_1": "ガントリーシャフトは、超粘着剤を使わずにキャリッジに取り付けられます", - "create.ponder.gantry_cascaded.text_2": "そのガントリーシャフトに取り付けたキャリッジも同様です", - "create.ponder.gantry_cascaded.text_3": "このように、ガントリー機構を立体的に接続すると、複数の移動軸をカバーできます", - - "create.ponder.gantry_direction.header": "ガントリーの移動方向", - "create.ponder.gantry_direction.text_1": "ガントリーシャフトは、向きを反対に設置できます", - "create.ponder.gantry_direction.text_2": "キャリッジの移動方向は、シャフトの向きによって決まります", - "create.ponder.gantry_direction.text_3": "また、シャフトの回転方向にも依存します", - "create.ponder.gantry_direction.text_4": "キャリッジへ伝達する回転力も同じルールが適用されます", - - "create.ponder.gantry_redstone.header": "ガントリーでの回転力の伝播", - "create.ponder.gantry_redstone.text_1": "レッドストーン信号を受けたガントリーシャフトは、キャリッジの移動を停止します", - "create.ponder.gantry_redstone.text_2": "代わりに、その回転力がキャリッジの出力軸から伝達されます", - - "create.ponder.gantry_shaft.header": "ガントリーシャフトの使い方", - "create.ponder.gantry_shaft.text_1": "ガントリーシャフトは、ガントリー機構の基本となるものです。取り付けられたキャリッジはこのシャフトに沿って移動します", - "create.ponder.gantry_shaft.text_2": "ガントリーによるからくりは、取り付けたブロックを動かせます", - - "create.ponder.gearbox.header": "ギアボックスによる回転力の伝達", - "create.ponder.gearbox.text_1": "回転軸の向きを変えようとすると、すぐに機構がかさばってしまいます", - "create.ponder.gearbox.text_2": "これをコンパクトにしたものがギアボックスです", - "create.ponder.gearbox.text_3": "角を曲がったシャフトは鏡映しの方向に回転します", - "create.ponder.gearbox.text_4": "直線方向への接続は、回転方向が逆になります", - - "create.ponder.gearshift.header": "ギアシフトによる回転力の制御", - "create.ponder.gearshift.text_1": "ギアシフトは、直線に回転を伝達します", - "create.ponder.gearshift.text_2": "レッドストーン信号を受けると、回転方向を逆に伝達します", - - "create.ponder.hand_crank.header": "ハンドクランクによる回転力の生成", - "create.ponder.hand_crank.text_1": "ハンドクランクは手動で回転力を生み出す機械です", - "create.ponder.hand_crank.text_2": "右クリックし続けると、反時計回りに回転します", - "create.ponder.hand_crank.text_3": "回転速度は比較的速めです", - "create.ponder.hand_crank.text_4": "スニークしながら右クリックし続けると、時計回りに回転します", - - "create.ponder.large_cogwheel.header": "大きな歯車による回転力の伝達", - "create.ponder.large_cogwheel.text_1": "大きな歯車は、直角に接続できます", - "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えてに伝達するのに役立ちます", - - "create.ponder.linear_chassis_attachment.header": "リニアシャーシによるブロックの取り付け", - "create.ponder.linear_chassis_attachment.text_1": "リニアシャーシの特定の面は特殊な粘着面にできます", - "create.ponder.linear_chassis_attachment.text_2": "もう一度クリックすると、反対側の面も粘着面になります", - "create.ponder.linear_chassis_attachment.text_3": "素手でスニークしながら右クリックすると粘着剤を剥がせます", - "create.ponder.linear_chassis_attachment.text_4": "リニアシャーシの特殊な粘着面は、ブロックの列をまとめてくっつけることができます", - "create.ponder.linear_chassis_attachment.text_5": "レンチを使って、このシャーシの粘着範囲を正確に調整できます", - "create.ponder.linear_chassis_attachment.text_6": "CTRLを押しながらスクロールすると、接続している全てのシャーシブロックの範囲を調整できます", - "create.ponder.linear_chassis_attachment.text_7": "他の面にブロックを接着するには、超粘着剤を使う必要があります", - "create.ponder.linear_chassis_attachment.text_8": "この仕組みを使えば、どんな形の構造物もからくりとして動かせます", - - "create.ponder.linear_chassis_group.header": "リニアシャーシをグループで動かす", - "create.ponder.linear_chassis_group.text_1": "リニアシャーシは、隣の同じシャーシブロックと接続します", - "create.ponder.linear_chassis_group.text_2": "からくり機械で1つを動かすと、他のリニアシャーシも一緒に動きます", - "create.ponder.linear_chassis_group.text_3": "異なる種類のシャーシや、別の方向を向いているシャーシは接続されません", - - "create.ponder.mechanical_arm.header": "メカニカルアームの設定", - "create.ponder.mechanical_arm.text_1": "メカニカルアームを設置する前に、搬入元と搬出先を設定しなければなりません", - "create.ponder.mechanical_arm.text_2": "特定のブロックをターゲットと設定するには、アームを持ったまま右クリックしましょう", - "create.ponder.mechanical_arm.text_3": "搬入元(青)と搬出先(オレンジ)を切り替えるには、もう1度右クリックします", - "create.ponder.mechanical_arm.text_4": "アームを持ったまま左クリックすると選択が解除されます", - "create.ponder.mechanical_arm.text_5": "設置したメカニカルアームは、設定されたブロックをターゲットにします", - "create.ponder.mechanical_arm.text_6": "範囲内であれば、複数の搬入元と搬出先を設定できます", - "create.ponder.mechanical_arm.text_7": "しかし、あらゆる機械やブロックをターゲットにできるわけではありません", - "create.ponder.mechanical_arm.text_8": "そんな時はファンネルやデポを経由させましょう", - - "create.ponder.mechanical_arm_filtering.header": "メカニカルアームの搬出フィルタリング", - "create.ponder.mechanical_arm_filtering.text_1": "搬入元", - "create.ponder.mechanical_arm_filtering.text_2": "搬出先", - "create.ponder.mechanical_arm_filtering.text_3": "フィルターを使ってアームが搬出入するアイテムを制限したいと思っても", - "create.ponder.mechanical_arm_filtering.text_4": "メカニカルアーム自体には、フィルタリングオプションがありません", - "create.ponder.mechanical_arm_filtering.text_5": "そこで真鍮製ファンネル等をターゲットにした場合、アームにそのフィルターが反映されます", - "create.ponder.mechanical_arm_filtering.text_6": "アームは賢いので、搬出できないアイテムを拾うことはありません", - - "create.ponder.mechanical_arm_modes.header": "メカニカルアームの分配モード", - "create.ponder.mechanical_arm_modes.text_1": "搬入元", - "create.ponder.mechanical_arm_modes.text_2": "搬出先", - "create.ponder.mechanical_arm_modes.text_3": "アームに複数の有効な搬出先が設定されている場合...", - "create.ponder.mechanical_arm_modes.text_4": "...設定に従ってアイテムを分配します", - "create.ponder.mechanical_arm_modes.text_5": "レンチを持ってスクロールすると設定を変えられます", - "create.ponder.mechanical_arm_modes.text_6": "「順繰り分配」は、有効な全ての搬出先へ順番に搬出します", - "create.ponder.mechanical_arm_modes.text_7": "搬出先がそれ以上のアイテムを受け取れない場合、そこへの搬出はスキップされます", - "create.ponder.mechanical_arm_modes.text_8": "「強制順繰り分配」は、搬出をスキップせず、空きがでるまで待機します", - "create.ponder.mechanical_arm_modes.text_9": "「最初のターゲットを優先」は、設定した順番が先の方のターゲットに優先して搬出します", - - "create.ponder.mechanical_arm_redstone.header": "メカニカルアームのレッドストーン制御", - "create.ponder.mechanical_arm_redstone.text_1": "レッドストーン信号を受けると、メカニカルアームは稼働しません", - "create.ponder.mechanical_arm_redstone.text_2": "ただし、停止する前に開始した搬出入が終わるまで稼働し続けます", - "create.ponder.mechanical_arm_redstone.text_3": "それを利用し、反転したパルス信号を使って1回だけ稼働させられます", - - "create.ponder.mechanical_bearing.header": "メカニカルベアリングによる構造物の移動", - "create.ponder.mechanical_bearing.text_1": "メカニカルベアリングは、前方にブロックを取り付けられます", - "create.ponder.mechanical_bearing.text_2": "回転力を供給すると、組み立てた構造物を回転できます", - - "create.ponder.mechanical_crafter.header": "メカニカルクラフターの配置", - "create.ponder.mechanical_crafter.text_1": "メカニカルクラフターは、あらゆるクラフトレシピを自動化できます", - "create.ponder.mechanical_crafter.text_2": "レンチを使えばクラフターがアイテムを移動させるベルトの向きを変えられます", - "create.ponder.mechanical_crafter.text_3": "動かすためにはすべてのベルトが、外にベルトが向いている1つのクラフターへ続いていなければなりません", - "create.ponder.mechanical_crafter.text_4": "完成品は外に向かうベルトが指す方向にある収納ブロックに搬出されます", - "create.ponder.mechanical_crafter.text_5": "メカニカルクラフターを動かすには回転力が必要です", - "create.ponder.mechanical_crafter.text_6": "前面を右クリックすると手動でアイテムを搬入できます", - "create.ponder.mechanical_crafter.text_7": "1つのクラフターに続くベルトの全スロットにアイテムが入ると、クラフトが開始されます", - "create.ponder.mechanical_crafter.text_8": "スロットが埋まっていなくても、レッドストーンパルスを使って強制的にクラフトを開始できます", - - "create.ponder.mechanical_crafter_connect.header": "メカニカルクラフターの搬入口の共有", - "create.ponder.mechanical_crafter_connect.text_1": "アイテムは自動でクラフターに搬入することもできます", - "create.ponder.mechanical_crafter_connect.text_2": "背面でレンチを使うと、メカニカルクラフターが接続されます", - "create.ponder.mechanical_crafter_connect.text_3": "接続された全てのクラフターは、同じ搬入口からアイテムを搬入できるようになります", - - "create.ponder.mechanical_crafter_covers.header": "メカニカルクラフターとスロットカバー", - "create.ponder.mechanical_crafter_covers.text_1": "一部のレシピでは、ベルトの流れの隙間を埋める為に追加のクラフターが必要になります", - "create.ponder.mechanical_crafter_covers.text_2": "スロットカバーを使って、クラフターを空のスロットとして動作するように設定できます", - "create.ponder.mechanical_crafter_covers.text_3": "背面にレンチを使って接続したクラフターは、カバーしたクラフターを無視して同じアイテムを搬入できます", - - "create.ponder.mechanical_drill.header": "メカニカルドリルでブロックを破壊する", - "create.ponder.mechanical_drill.text_1": "メカニカルドリルは回転力を供給すると、目の前のブロックを破壊します", - "create.ponder.mechanical_drill.text_2": "採掘速度は回転速度に依存します", - - "create.ponder.mechanical_drill_contraption.header": "からくりに組み込んでのメカニカルドリルの使い方", - "create.ponder.mechanical_drill_contraption.text_1": "からくりの一部として、メカニカルドリルを動かすと...", - "create.ponder.mechanical_drill_contraption.text_2": "...ドリルは、移動先のブロックを破壊します", - - "create.ponder.mechanical_harvester.header": "からくりに組み込んでのメカニカルハーベスターの使い方", - "create.ponder.mechanical_harvester.text_1": "からくりの一部として、ハーベスターを動かすと...", - "create.ponder.mechanical_harvester.text_2": "...成熟した作物を収穫し、成長をリセットします", - - "create.ponder.mechanical_mixer.header": "メカニカルミキサーによるアイテム加工", - "create.ponder.mechanical_mixer.text_1": "ミキサーと鉢があれば、いくつかのクラフトレシピを自動化できます", - "create.ponder.mechanical_mixer.text_2": "自動化できるのは不定形レシピといくつかの追加レシピです", - "create.ponder.mechanical_mixer.text_3": "レシピの中には、ブレイズバーナーの熱を必要とするものもあります", - "create.ponder.mechanical_mixer.text_4": "フィルタースロットは、2つのレシピが競合する場合に使えます", - - "create.ponder.mechanical_piston.header": "メカニカルピストンによる構造物の移動", - "create.ponder.mechanical_piston.text_1": "メカニカルピストンは、前方にあるブロックを動かせます", - "create.ponder.mechanical_piston.text_2": "移動の速度と方向は、供給する回転力に依存します", - "create.ponder.mechanical_piston.text_3": "粘着性メカニカルピストンは、取り付けられたブロックを引き戻せます", - - "create.ponder.mechanical_piston_modes.header": "メカニカルピストンの動作モード", - "create.ponder.mechanical_piston_modes.text_1": "ピストンの動作が止まると、移動した構造物はブロックへ戻ります", - "create.ponder.mechanical_piston_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でのみブロックに戻るように設定できます", - - "create.ponder.mechanical_plough.header": "からくりに組み込んでのメカニカルプラウの使い方", - "create.ponder.mechanical_plough.text_1": "プラウを組み込んだからくりを動かすと...", - "create.ponder.mechanical_plough.text_2": "...当たり判定のないブロックが破壊されます", - "create.ponder.mechanical_plough.text_3": "さらに、プラウは土を耕やします", - "create.ponder.mechanical_plough.text_4": "また、エンティティを傷つけずに飛ばすこともできます", - - "create.ponder.mechanical_press.header": "メカニカルプレスによるアイテム加工", - "create.ponder.mechanical_press.text_1": "メカニカルプレスは、その下に配置されたアイテムを加工できます", - "create.ponder.mechanical_press.text_2": "加工するアイテムは下に落としたり、プレス機の下にあるデポに置いたり", - "create.ponder.mechanical_press.text_3": "アイテムがベルトへ供給されると...", - "create.ponder.mechanical_press.text_4": "...プレス機が自動的にアイテムを保持し、加工します", - - "create.ponder.mechanical_press_compacting.header": "メカニカルプレスでの圧縮加工", - "create.ponder.mechanical_press_compacting.text_1": "鉢に入れられたアイテムをプレスし、圧縮加工できます", - "create.ponder.mechanical_press_compacting.text_2": "圧縮加工には、2x2、3x3のクラフトレシピに加え、いくつかの追加レシピがあります", - "create.ponder.mechanical_press_compacting.text_3": "これらのレシピの中には、ブレイズバーナーの熱を必要とするものがあります", - "create.ponder.mechanical_press_compacting.text_4": "フィルタースロットは、2つのレシピが競合する場合に使えます", - - "create.ponder.mechanical_saw_breaker.header": "メカニカルソーによる伐採", - "create.ponder.mechanical_saw_breaker.text_1": "メカニカルソーは回転力を供給すると、目の前の木を伐採できます", - "create.ponder.mechanical_saw_breaker.text_2": "木を完全に伐採するには、木と地面を繋ぐ最後の根本を伐採しなければなりません", - - "create.ponder.mechanical_saw_contraption.header": "からくりに組み込んでのメカニカルソーの使い方", - "create.ponder.mechanical_saw_contraption.text_1": "ソーを組み込んだからくりを動かすと...", - "create.ponder.mechanical_saw_contraption.text_2": "...ソーは木を伐採します", - - "create.ponder.mechanical_saw_processing.header": "メカニカルソーでのアイテム加工", - "create.ponder.mechanical_saw_processing.text_1": "上向きのメカニカルソーは、様々なアイテムを加工できます", - "create.ponder.mechanical_saw_processing.text_2": "加工されたアイテムは、常にソーの回転方向とは逆に移動します", - "create.ponder.mechanical_saw_processing.text_3": "ソーはメカニカルベルトと繋げて加工できます", - "create.ponder.mechanical_saw_processing.text_4": "複数の完成品がある場合、フィルタースロットでどの完成品を作るかを指定できます", - "create.ponder.mechanical_saw_processing.text_5": "フィルターがない場合、ソーは全ての加工結果を順番に繰り返します", - - "create.ponder.millstone.header": "石臼でのアイテム加工", - "create.ponder.millstone.text_1": "石臼はアイテムを粉砕加工する機械です", - "create.ponder.millstone.text_2": "歯車を使って、側面から回転力を供給できます", - "create.ponder.millstone.text_3": "上からアイテムを投げ入れてアイテムを搬入できます", - "create.ponder.millstone.text_4": "しばらく待った後、右クリックで完成品を取り出せます", - "create.ponder.millstone.text_5": "加工品を搬出して自動化することもできます", - - "create.ponder.nixie_tube.header": "ニキシー管の使い方", - "create.ponder.nixie_tube.text_1": "ニキシー管は受けたレッドストーン信号の強度を表示します", - "create.ponder.nixie_tube.text_2": "金床で名付けた名札を使って、好きな文字を表示することもできます", - - "create.ponder.piston_pole.header": "ピストン延長ポール", - "create.ponder.piston_pole.text_1": "ポールが無いとメカニカルピストンは動きません", - "create.ponder.piston_pole.text_2": "後ろに付けたポールの長さによって、伸び縮みする長さが決まります", - - "create.ponder.portable_storage_interface.header": "稼働中のからくりとの搬出入", - "create.ponder.portable_storage_interface.text_1": "稼働中のからくりに組み込まれた収納ブロックは、プレイヤーが開くことはできません", - "create.ponder.portable_storage_interface.text_2": "この装置は、からくりを停止することなく、収納ブロックと搬出入できます", - "create.ponder.portable_storage_interface.text_3": "1~2ブロックの間隔をあけて、二つ目のインターフェースを設置しましょう", - "create.ponder.portable_storage_interface.text_4": "両者がすれ違うたびに接続されます", - "create.ponder.portable_storage_interface.text_5": "接続されている間、設置されている方のインターフェースはからくり内全ての収納ブロックのように振る舞います", - "create.ponder.portable_storage_interface.text_6": "アイテムを搬入したり...", - "create.ponder.portable_storage_interface.text_7": "...アイテムを搬出したりできます", - "create.ponder.portable_storage_interface.text_8": "しばらくの間アイテムのやり取りがないと、からくりは稼働を再開します", - - "create.ponder.portable_storage_interface_redstone.header": "レッドストーンによる制御", - "create.ponder.portable_storage_interface_redstone.text_1": "レッドストーン信号を受けている間、設置されたインターフェースは接続を行いません", - - "create.ponder.powered_latch.header": "パワードラッチによる信号制御", - "create.ponder.powered_latch.text_1": "パワードラッチはレッドストーン信号で制御できるレバーです", - "create.ponder.powered_latch.text_2": "後ろからの信号でオンに", - "create.ponder.powered_latch.text_3": "側面からの信号でオフに戻ります", - "create.ponder.powered_latch.text_4": "パワードラッチは、手動でも切り替えられます", - - "create.ponder.powered_toggle_latch.header": "パワードトグルラッチによる信号制御", - "create.ponder.powered_toggle_latch.text_1": "パワードトグルラッチはレッドストーン信号で切り替えできるレバーです", - "create.ponder.powered_toggle_latch.text_2": "後ろからの信号で切り替えできます", - "create.ponder.powered_toggle_latch.text_3": "何度も信号を送るとオンとオフと繰り返します", - "create.ponder.powered_toggle_latch.text_4": "パワードトグルラッチは、手動で切り替えることもできます", - - "create.ponder.pulse_repeater.header": "パルスリピーターによる信号制御", - "create.ponder.pulse_repeater.text_1": "パルスリピーターは、レッドストーン信号を短縮して1tickのパルス信号にします", - - "create.ponder.radial_chassis.header": "ラジアルシャーシによるブロックの取り付け", - "create.ponder.radial_chassis.text_1": "ラジアルシャーシは、同種のシャーシブロックと繋がります", - "create.ponder.radial_chassis.text_2": "からくり機械によって1つが動かされると、他も一緒に動きます", - "create.ponder.radial_chassis.text_3": "ラジアルシャーシの側面を粘着面にできます", - "create.ponder.radial_chassis.text_4": "もう一度クリックすると、他の全ての面も粘着面になります", - "create.ponder.radial_chassis.text_5": "素手でスニークしながら右クリックすると、粘着剤を剥がせます", - "create.ponder.radial_chassis.text_6": "ブロックが粘着面に設置されていると...", - "create.ponder.radial_chassis.text_7": "...その範囲内の繋がっている全てのブロックが取り付けられます", - "create.ponder.radial_chassis.text_8": "レンチを使って、シャーシの範囲の半径を正確に指定できます", - "create.ponder.radial_chassis.text_9": "どの粘着面とも繋がっていないブロックはくっつきません", - - "create.ponder.redstone_contact.header": "レッドストーンコンタクト", - "create.ponder.redstone_contact.text_1": "向かい合ったレッドストーンコンタクトは、レッドストーン信号を出力します", - "create.ponder.redstone_contact.text_2": "これは、片方のコンタクトがからくりの一部である場合でも同様です", - - "create.ponder.redstone_link.header": "レッドストーンリンクの使い方", - "create.ponder.redstone_link.text_1": "レッドストーンリンクは、レッドストーン信号を無線で送受信できます", - "create.ponder.redstone_link.text_2": "モードを切り替えるには、スニークしながら右クリックします", - "create.ponder.redstone_link.text_3": "レンチをもって右クリックでも、モードを切り替えられます", - "create.ponder.redstone_link.text_4": "受信機は、128ブロック以内の送信機のレッドストーン信号を受信します", - "create.ponder.redstone_link.text_5": "2つのスロットにアイテムを設定すると、周波数を設定できます", - "create.ponder.redstone_link.text_6": "周波数が一致するリンク同士のみが送受信を行います", - - "create.ponder.rope_pulley.header": "ローププーリーによる構造物の移動", - "create.ponder.rope_pulley.text_1": "ローププーリーは、回転力を供給するとブロックを垂直に動かせます", - "create.ponder.rope_pulley.text_2": "移動の方向と速度は、供給される回転力に依存します", - - "create.ponder.rope_pulley_attachment.header": "プーリーをからくりの一部として動かす", - "create.ponder.rope_pulley_attachment.text_1": "プーリーがからくりによって動かされると...", - "create.ponder.rope_pulley_attachment.text_2": "...プーリーと接続している構造物も一緒に動かされます", - "create.ponder.rope_pulley_attachment.text_3": "プーリーが稼働している間は動かせないことに注意してください", - - "create.ponder.rope_pulley_modes.header": "ローププーリーの動作モード", - "create.ponder.rope_pulley_modes.text_1": "プーリーの動きが止まると、移動した構造物はブロックに戻ります", - "create.ponder.rope_pulley_modes.text_2": "ブロックに戻らないように設定することも、動かし始めた場所でのみブロックに戻るように設定することもできます", - - "create.ponder.rotation_speed_controller.header": "回転速度コントローラーの使い方", - "create.ponder.rotation_speed_controller.text_1": "コントローラーは、側面の軸から上の大きな歯車に回転を伝達します", - "create.ponder.rotation_speed_controller.text_2": "側面のパネルを見てスクロールすると、伝達する回転速度を調整できます", - - "create.ponder.sail.header": "帆による風車の組み立て", - "create.ponder.sail.text_1": "帆は、風車を作るのに便利なブロックです", - "create.ponder.sail.text_2": "超粘着剤やシャーシなしに、ブロックや帆フレームに取り付けられます", - "create.ponder.sail.text_3": "染料で右クリックして染色できます", - "create.ponder.sail.text_4": "ハサミで右クリックすると、フレームに戻せます", - - "create.ponder.sail_frame.header": "帆フレームによる風車の組み立て", - "create.ponder.sail_frame.text_1": "帆フレームは、風車を作るのに便利なブロックです", - "create.ponder.sail_frame.text_2": "超粘着剤やシャーシなしに、ブロックや帆フレームに取り付けられます", - - "create.ponder.sequenced_gearshift.header": "シーケンスギアシフトによる回転の制御", - "create.ponder.sequenced_gearshift.text_1": "シーケンスギアシフトは、設定されたプログラムに従って回転を伝達します", - "create.ponder.sequenced_gearshift.text_2": "右クリックで設定インターフェースを開けます", - "create.ponder.sequenced_gearshift.text_3": "レッドストーン信号を受けると、設定されたプログラムを実行します", - "create.ponder.sequenced_gearshift.text_4": "終了すると止まり、また次のレッドストーン信号を受けると同じように実行します", - "create.ponder.sequenced_gearshift.text_5": "レッドストーンコンパレータで、現在の進捗を読み取れます", - - "create.ponder.shaft.header": "シャフトによる回転力の伝達", - "create.ponder.shaft.text_1": "シャフトはまっすぐに回転を伝達します", - - "create.ponder.shaft_casing.header": "ケース入りシャフト", - "create.ponder.shaft_casing.text_1": "真鍮製、安山岩製ケーシングを使って、シャフトを装飾できます", - - "create.ponder.smart_chute.header": "スマートシュートによるアイテムのフィルタリング", - "create.ponder.smart_chute.text_1": "スマートシュートは、垂直方向のシュートにフィルター機能を追加したものです", - "create.ponder.smart_chute.text_2": "フィルタースロットを使って、何を搬出入するかを設定できます", - "create.ponder.smart_chute.text_3": "マウスホイールで搬出するスタック量を指定できます", - "create.ponder.smart_chute.text_4": "レッドストーン信号で、スマートシュートを停止させることもできます", - - "create.ponder.speedometer.header": "速度メーターによる動力情報の監視", - "create.ponder.speedometer.text_1": "速度メーターは、接続された機械の現在の回転速度を表示します", - "create.ponder.speedometer.text_2": "エンジニアのゴーグルを装着していると、より詳細な情報を得られます", - "create.ponder.speedometer.text_3": "コンパレータは、速度メーターの測定値に応じたレッドストーン信号を出力します", - - "create.ponder.stabilized_bearings.header": "からくりの角度の固定", - "create.ponder.stabilized_bearings.text_1": "メカニカルベアリングが動いている構造物に組み込まれているとき ...", - "create.ponder.stabilized_bearings.text_2": "...自身の角度を真っ直ぐに保とうとします", - "create.ponder.stabilized_bearings.text_3": "ベアリングにブロックを取り付けると", - "create.ponder.stabilized_bearings.text_4": "ベアリングに取り付けたサブのからくり全体が角度を真っ直ぐに保ったままになります", - - "create.ponder.sticker.header": "スティッカーを使ったブロックの付け外し", - "create.ponder.sticker.text_1": "スティッカーは、ブロックの付け外しをレッドストーン信号で制御できます", - "create.ponder.sticker.text_2": "信号を受けると、状態が切り替わります", - "create.ponder.sticker.text_3": "付けているときは、からくりで動かされるとブロックも一緒に動きます", - "create.ponder.sticker.text_4": "もう一度信号を受けると、ブロックは離れます", - - "create.ponder.stressometer.header": "応力メーターによる動力情報の監視", - "create.ponder.stressometer.text_1": "応力メーターは、接続された動力ネットワークの現在の応力許容量を表示します", - "create.ponder.stressometer.text_2": "エンジニアのゴーグルを装着していると、より詳しい数値を見られます", - "create.ponder.stressometer.text_3": "コンパレータは、応力メーターの測定値に応じたレッドストーン信号を出力します", - - "create.ponder.super_glue.header": "超粘着剤によるブロックの取り付け", - "create.ponder.super_glue.text_1": "超粘着剤は、任意の2つのブロックの間に塗れます", - "create.ponder.super_glue.text_2": "貼り付けたブロックは、からくりに組み込まれると一緒に動きます", - "create.ponder.super_glue.text_3": "超粘着剤をオフハンドで持つと...", - "create.ponder.super_glue.text_4": "...設置したブロックは置いたブロックの面と接着されます", - "create.ponder.super_glue.text_5": "左クリックすれば超粘着剤を剥がせます", - - "create.ponder.valve_handle.header": "バルブハンドルによる回転力の生成", - "create.ponder.valve_handle.text_1": "バルブハンドルは手動で回転力を生み出す原動機です", - "create.ponder.valve_handle.text_2": "右クリックし続けると、反時計回りに回転します", - "create.ponder.valve_handle.text_3": "回転速度はゆっくりですが、正確です", - "create.ponder.valve_handle.text_4": "スニーク状態で右クリックし続けると、時計回りに回転します", - "create.ponder.valve_handle.text_5": "バルブハンドルは、染色できます", - - "create.ponder.water_wheel.header": "水車による回転力の生成", - "create.ponder.water_wheel.text_1": "水車は隣接する水流から回転力を生み出します", - "create.ponder.water_wheel.text_2": "水流を受ける面が多ければ多いほど、水車の回転速度は速くなります", - "create.ponder.water_wheel.text_3": "水車の羽根は水流に逆らわないように設置してください", - "create.ponder.water_wheel.text_4": "逆向きに設置すると、回転速度が落ちてしまいます", - - "create.ponder.weighted_ejector.header": "重量射出機の使い方", - "create.ponder.weighted_ejector.text_1": "射出機を持ちスニークしながら右クリックすると、ターゲットとなる位置を設定できます", - "create.ponder.weighted_ejector.text_10": "スタック数を設定すると、保持しているスタックがその量に達したときのみ射出するようになります", - "create.ponder.weighted_ejector.text_11": "他のエンティティが射出機を踏むと、いつでも射出機が稼働します", - "create.ponder.weighted_ejector.text_2": "設置された射出機は、設定した場所に物体を発射します", - "create.ponder.weighted_ejector.text_3": "ターゲットは、範囲内であれば高さや距離は問いません", - "create.ponder.weighted_ejector.text_4": "ただし、真正面方向以外へは射出できません", - "create.ponder.weighted_ejector.text_5": "有効なターゲットが設定されていない場合、真正面のブロックがターゲットになります", - "create.ponder.weighted_ejector.text_6": "巻き上げるには、回転力を供給する必要があります", - "create.ponder.weighted_ejector.text_7": "上にアイテムを置くと、射出機が稼働します", - "create.ponder.weighted_ejector.text_8": "ターゲットが満杯の収納ブロックの場合、射出機はそのブロックに空きがでるまで待機します", - "create.ponder.weighted_ejector.text_9": "レンチを使って、スタック量を調整できます", - - "create.ponder.weighted_ejector_redstone.header": "レッドストーン信号による重量射出機の制御", - "create.ponder.weighted_ejector_redstone.text_1": "レッドストーン信号を受けている間、射出機は稼働しません", - "create.ponder.weighted_ejector_redstone.text_2": "また、オブザーバーは射出機の稼働を検知できます", - - "create.ponder.weighted_ejector_tunnel.header": "重量射出機によるアイテムスタックの分割", - "create.ponder.weighted_ejector_tunnel.text_1": "真鍮製トンネルと組み合わせて、アイテムスタックを特定の量だけ分割できます", - "create.ponder.weighted_ejector_tunnel.text_2": "まず、側面の搬出口を優先させる為に、真鍮製トンネルを[最寄りを優先] に設定します", - "create.ponder.weighted_ejector_tunnel.text_3": "次に、射出機に分割したいスタック量を設定します", - "create.ponder.weighted_ejector_tunnel.text_4": "設定された量のアイテムスタックは側面の搬出口から搬出され...", - "create.ponder.weighted_ejector_tunnel.text_5": "...残りのアイテムはそのまま搬出されます", - - "create.ponder.windmill_source.header": "風車ベアリングによる回転力の生成", - "create.ponder.windmill_source.text_1": "風車ベアリングは手前にブロックを取り付けられます", - "create.ponder.windmill_source.text_2": "帆とみなされるブロックを十分な数取り付けられていれば、風車として機能します", - "create.ponder.windmill_source.text_3": "右クリックして風車ベアリングを起動すると、回転力を供給し始めます", - "create.ponder.windmill_source.text_4": "回転速度は帆ブロックの数で決まります", - "create.ponder.windmill_source.text_5": "レンチを使って回転方向を変えられます", - "create.ponder.windmill_source.text_6": "いつでもベアリングを右クリックすれば、回転を停止させて構造物を組み立てなおせます", - - "create.ponder.windmill_structure.header": "からくり風車", - "create.ponder.windmill_structure.text_1": "帆とみなされるブロックが8個以上あれば、どのような構造物でも風車として動きます", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json deleted file mode 100644 index fff79c695..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 739", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "아카시아 유리창", - "block.create.acacia_window_pane": "아카시아나무 유리판 ", - "block.create.adjustable_chain_gearshift": "벨트 변속기", - "block.create.adjustable_crate": "가변 창고", - "block.create.adjustable_pulse_repeater": "가변 펄스 리피터", - "block.create.adjustable_repeater": "가변 리피터", - "block.create.analog_lever": "아날로그 레버", - "block.create.andesite_belt_funnel": "안산암 깔때기", - "block.create.andesite_bricks": "안산암 벽돌", - "block.create.andesite_bricks_slab": "안산암 벽돌 반 블록", - "block.create.andesite_bricks_stairs": "안산암 벽돌 계단", - "block.create.andesite_bricks_wall": "안산암 벽돌 담장", - "block.create.andesite_casing": "안산암 케이스", - "block.create.andesite_cobblestone": "안산암 조약돌", - "block.create.andesite_cobblestone_slab": "안산암 조약돌 반 블록", - "block.create.andesite_cobblestone_stairs": "안산암 조약돌 계단", - "block.create.andesite_cobblestone_wall": "안산암 조약돌 담장", - "block.create.andesite_encased_shaft": "안산암 케이스를 씌운 축", - "block.create.andesite_funnel": "안산암 깔때기", - "block.create.andesite_pillar": "안산암 기둥", - "block.create.andesite_tunnel": "안산암 터널", - "block.create.basin": "대야", - "block.create.belt": "컨베이어 벨트", - "block.create.birch_window": "자작나무 유리창", - "block.create.birch_window_pane": "자작나무 유리판", - "block.create.black_sail": "검은색 날개", - "block.create.black_seat": "검은색 좌석", - "block.create.black_valve_handle": "검은색 밸브 손잡이", - "block.create.blaze_burner": "블레이즈 버너", - "block.create.blue_sail": "파란색 날개", - "block.create.blue_seat": "파란색 좌석", - "block.create.blue_valve_handle": "파란색 밸브 손잡이", - "block.create.brass_belt_funnel": "황동 깔때기", - "block.create.brass_block": "황동 블록", - "block.create.brass_casing": "황동 케이스", - "block.create.brass_encased_shaft": "황동 케이스를 씌운 축", - "block.create.brass_funnel": "황동 깔때기", - "block.create.brass_tunnel": "황동 터널", - "block.create.brown_sail": "갈색 날개", - "block.create.brown_seat": "갈색 좌석", - "block.create.brown_valve_handle": "갈색 밸브 손잡이", - "block.create.cart_assembler": "카트 조립기", - "block.create.chiseled_dark_scoria": "조각된 짙은 스코리아", - "block.create.chiseled_dolomite": "조각된 백운암", - "block.create.chiseled_gabbro": "조각된 반려암", - "block.create.chiseled_limestone": "조각된 석회암", - "block.create.chiseled_scoria": "조각된 스코리아", - "block.create.chiseled_weathered_limestone": "조각된 풍화된 석회암", - "block.create.chocolate": "초콜릿", - "block.create.chute": "슈트", - "block.create.clockwork_bearing": "시계 베어링", - "block.create.clutch": "클러치", - "block.create.cogwheel": "톱니바퀴", - "block.create.content_observer": "정보 감지기", - "block.create.controller_rail": "방향 레일", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "구리 블록", - "block.create.copper_casing": "구리 케이스", - "block.create.copper_ore": "구리 광석", - "block.create.copper_shingles": "구리 판자", - "block.create.copper_tiles": "구리 타일", - "block.create.copper_valve_handle": "구리 밸브 손잡이", - "block.create.creative_crate": "크리에이티브 창고", - "block.create.creative_fluid_tank": "크리에이티브 탱크", - "block.create.creative_motor": "크리에이티브 모터", - "block.create.crimson_window": "UNLOCALIZED: Crimson Window", - "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", - "block.create.crushing_wheel": "분쇄 휠", - "block.create.crushing_wheel_controller": "분쇄 휠 컨트롤러", - "block.create.cuckoo_clock": "뻐꾸기 시계", - "block.create.cyan_sail": "청록색 날개", - "block.create.cyan_seat": "청록색 좌석", - "block.create.cyan_valve_handle": "청록색 밸브 손잡이", - "block.create.dark_oak_window": "짙은 참나무 유리창", - "block.create.dark_oak_window_pane": "짙은 참나무 유리판", - "block.create.dark_scoria": "짙은 스코리아", - "block.create.dark_scoria_bricks": "짙은 스코리아 벽돌", - "block.create.dark_scoria_bricks_slab": "짙은 스코리아 벽돌 반 블록", - "block.create.dark_scoria_bricks_stairs": "짙은 스코리아 벽돌 계단", - "block.create.dark_scoria_bricks_wall": "짙은 스코리아 벽돌 담장", - "block.create.dark_scoria_cobblestone": "짙은 스코리아 조약돌", - "block.create.dark_scoria_cobblestone_slab": "짙은 스코리아 조약돌 반 블록", - "block.create.dark_scoria_cobblestone_stairs": "짙은 스코리아 조약돌 계단", - "block.create.dark_scoria_cobblestone_wall": "짙은 스코리아 조약돌 담장", - "block.create.dark_scoria_pillar": "짙은 스코리아 기둥", - "block.create.deployer": "배포기", - "block.create.depot": "아이템 거치대", - "block.create.diorite_bricks": "섬록암 벽돌", - "block.create.diorite_bricks_slab": "섬록암 벽돌 반 블록", - "block.create.diorite_bricks_stairs": "섬록암 벽돌 계단", - "block.create.diorite_bricks_wall": "섬록암 벽돌 담장", - "block.create.diorite_cobblestone": "섬록암 조약돌", - "block.create.diorite_cobblestone_slab": "섬록암 조약돌 반 블록", - "block.create.diorite_cobblestone_stairs": "섬록암 조약돌 계단", - "block.create.diorite_cobblestone_wall": "섬록암 조약돌 담장", - "block.create.diorite_pillar": "섬록암 기둥", - "block.create.dolomite": "백운암", - "block.create.dolomite_bricks": "백운암 벽돌", - "block.create.dolomite_bricks_slab": "백운암 벽돌 반 블록", - "block.create.dolomite_bricks_stairs": "백운암 벽돌 계단", - "block.create.dolomite_bricks_wall": "백운암 벽돌 담장", - "block.create.dolomite_cobblestone": "백운암 조약돌", - "block.create.dolomite_cobblestone_slab": "백운암 조약돌 반 블록", - "block.create.dolomite_cobblestone_stairs": "백운암 조약돌 계단", - "block.create.dolomite_cobblestone_wall": "백운암 조약돌 담장", - "block.create.dolomite_pillar": "백운암 기둥", - "block.create.encased_chain_drive": "케이스를 씌운 축", - "block.create.encased_fan": "선풍기", - "block.create.encased_fluid_pipe": "구리 케이스를 씌운 파이프", - "block.create.fancy_andesite_bricks": "장식된 안산암 벽돌", - "block.create.fancy_andesite_bricks_slab": "장식된 안산암 벽돌 반 블록", - "block.create.fancy_andesite_bricks_stairs": "장식된 안산암 벽돌 계단", - "block.create.fancy_andesite_bricks_wall": "장식된 안산암 벽돌 담장", - "block.create.fancy_dark_scoria_bricks": "장식된 짙은 스코리아 벽돌", - "block.create.fancy_dark_scoria_bricks_slab": "장식된 짙은 스코리아 벽돌 반 블록", - "block.create.fancy_dark_scoria_bricks_stairs": "장식된 짙은 스코리아 벽돌 계단", - "block.create.fancy_dark_scoria_bricks_wall": "장식된 짙은 스코리아 벽돌 담장", - "block.create.fancy_diorite_bricks": "장식된 섬록암 벽돌", - "block.create.fancy_diorite_bricks_slab": "장식된 섬록암 벽돌 반 블록", - "block.create.fancy_diorite_bricks_stairs": "장식된 섬록암 벽돌 계단", - "block.create.fancy_diorite_bricks_wall": "장식된 섬록암 벽돌 담장", - "block.create.fancy_dolomite_bricks": "장식된 백운암 벽돌", - "block.create.fancy_dolomite_bricks_slab": "장식된 백운암 벽돌 반 블록", - "block.create.fancy_dolomite_bricks_stairs": "장식된 백운암 벽돌 계단", - "block.create.fancy_dolomite_bricks_wall": "장식된 백운암 벽돌 담장", - "block.create.fancy_gabbro_bricks": "장식된 반려암 벽돌", - "block.create.fancy_gabbro_bricks_slab": "장식된 반려암 벽돌 반 블록", - "block.create.fancy_gabbro_bricks_stairs": "장식된 반려암 벽돌 계단", - "block.create.fancy_gabbro_bricks_wall": "장식된 반려암 벽돌 담장", - "block.create.fancy_granite_bricks": "장식된 화강암 벽돌", - "block.create.fancy_granite_bricks_slab": "장식된 화강암 벽돌 반 블록", - "block.create.fancy_granite_bricks_stairs": "장식된 화강암 벽돌 계단", - "block.create.fancy_granite_bricks_wall": "장식된 화강암 벽돌 담장", - "block.create.fancy_limestone_bricks": "장식된 석회암 벽돌", - "block.create.fancy_limestone_bricks_slab": "장식된 석회암 벽돌 반 블록", - "block.create.fancy_limestone_bricks_stairs": "장식된 석회암 벽돌 계단", - "block.create.fancy_limestone_bricks_wall": "장식된 석회암 벽돌 담장", - "block.create.fancy_scoria_bricks": "장식된 스코리아 벽돌", - "block.create.fancy_scoria_bricks_slab": "장식된 스코리아 벽돌 반 블록", - "block.create.fancy_scoria_bricks_stairs": "장식된 스코리아 벽돌 계단", - "block.create.fancy_scoria_bricks_wall": "장식된 스코리아 벽돌 담장", - "block.create.fancy_weathered_limestone_bricks": "장식된 풍화된 석회암 벽돌", - "block.create.fancy_weathered_limestone_bricks_slab": "장식된 풍화된 석회암 벽돌 반 블록", - "block.create.fancy_weathered_limestone_bricks_stairs": "장식된 풍화된 석회암 벽돌 계단", - "block.create.fancy_weathered_limestone_bricks_wall": "장식된 풍화된 석회암 벽돌 담장", - "block.create.fluid_pipe": "액체 파이프", - "block.create.fluid_tank": "액체 탱크", - "block.create.fluid_valve": "액체 밸브", - "block.create.flywheel": "플라이휠", - "block.create.framed_glass": "큰 유리", - "block.create.framed_glass_pane": "큰 유리판", - "block.create.furnace_engine": "화로 엔진", - "block.create.gabbro": "반려암", - "block.create.gabbro_bricks": "반려암 벽돌", - "block.create.gabbro_bricks_slab": "반려암 벽돌 반 블록", - "block.create.gabbro_bricks_stairs": "반려암 벽돌 계단", - "block.create.gabbro_bricks_wall": "반려암 벽돌 담장", - "block.create.gabbro_cobblestone": "반려암 조약돌", - "block.create.gabbro_cobblestone_slab": "반려암 조약돌 반 블록", - "block.create.gabbro_cobblestone_stairs": "반려암 조약돌 계단", - "block.create.gabbro_cobblestone_wall": "반려암 조약돌 담장", - "block.create.gabbro_pillar": "반려암 기둥", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft", - "block.create.gearbox": "기어박스", - "block.create.gearshift": "기어쉬프트", - "block.create.glass_fluid_pipe": "액체 파이프", - "block.create.granite_bricks": "화강암 벽돌", - "block.create.granite_bricks_slab": "화강함 벽돌 반 블록", - "block.create.granite_bricks_stairs": "화강함 벽돌 계단", - "block.create.granite_bricks_wall": "화강함 벽돌 담장", - "block.create.granite_cobblestone": "화강암 조약돌", - "block.create.granite_cobblestone_slab": "화강암 조약돌 반 블록", - "block.create.granite_cobblestone_stairs": "화강암 조약돌 계단", - "block.create.granite_cobblestone_wall": "화강암 조약돌 담장", - "block.create.granite_pillar": "화강암 기둥", - "block.create.gray_sail": "회색 날개", - "block.create.gray_seat": "회색 좌석", - "block.create.gray_valve_handle": "회색 밸브 손잡이", - "block.create.green_sail": "초록색 날개", - "block.create.green_seat": "초록색 좌석", - "block.create.green_valve_handle": "초록색 밸브 손잡이", - "block.create.hand_crank": "핸드 크랭크", - "block.create.honey": "꿀", - "block.create.horizontal_framed_glass": "수평 유리", - "block.create.horizontal_framed_glass_pane": "수평 유리판", - "block.create.hose_pulley": "호스 도르래", - "block.create.item_drain": "아이템 배수구", - "block.create.jungle_window": "정글나무 유리창", - "block.create.jungle_window_pane": "정글나무 유리판", - "block.create.large_cogwheel": "큰 톱니바퀴", - "block.create.layered_andesite": "층이 있는 안산암", - "block.create.layered_dark_scoria": "층이 있는 짙은 스코리아", - "block.create.layered_diorite": "층이 있는 섬록암", - "block.create.layered_dolomite": "층이 있는 백운암", - "block.create.layered_gabbro": "층이 있는 반려암", - "block.create.layered_granite": "층이 있는 화강암", - "block.create.layered_limestone": "층이 있는 석회암", - "block.create.layered_scoria": "층이 있는 스코리아", - "block.create.layered_weathered_limestone": "층이 있는 풍화된 석회암", - "block.create.light_blue_sail": "하늘색 날개", - "block.create.light_blue_seat": "하늘색 좌석", - "block.create.light_blue_valve_handle": "하늘색 밸브 손잡이", - "block.create.light_gray_sail": "회백색 날개", - "block.create.light_gray_seat": "회백색 좌석", - "block.create.light_gray_valve_handle": "회백색 밸브 손잡이", - "block.create.lime_sail": "연두색 날개", - "block.create.lime_seat": "연두색 좌석", - "block.create.lime_valve_handle": "연두색 밸브 손잡이", - "block.create.limesand": "석회모래", - "block.create.limestone": "석회암", - "block.create.limestone_bricks": "석회암 벽돌", - "block.create.limestone_bricks_slab": "석회암 벽돌 반 블록", - "block.create.limestone_bricks_stairs": "석회암 벽돌 계단", - "block.create.limestone_bricks_wall": "석회암 벽돌 담장", - "block.create.limestone_cobblestone": "석회암 조약돌", - "block.create.limestone_cobblestone_slab": "석회암 조약돌 반 블록", - "block.create.limestone_cobblestone_stairs": "석회암 조약돌 계단", - "block.create.limestone_cobblestone_wall": "석회암 조약돌 담장", - "block.create.limestone_pillar": "석회암 기둥", - "block.create.linear_chassis": "어두운 직선 섀시", - "block.create.lit_blaze_burner": "불타는 빈 블레이즈 버너", - "block.create.magenta_sail": "자홍색 날개", - "block.create.magenta_seat": "자홍색 좌석", - "block.create.magenta_valve_handle": "자홍색 밸브 손잡이", - "block.create.mechanical_arm": "기계 팔", - "block.create.mechanical_bearing": "베어링", - "block.create.mechanical_crafter": "기계식 조합기", - "block.create.mechanical_drill": "드릴", - "block.create.mechanical_harvester": "수확기", - "block.create.mechanical_mixer": "믹서", - "block.create.mechanical_piston": "기계식 피스톤", - "block.create.mechanical_piston_head": "기계식 피스톤 머리", - "block.create.mechanical_plough": "쟁기", - "block.create.mechanical_press": "압착기", - "block.create.mechanical_pump": "펌프", - "block.create.mechanical_saw": "톱", - "block.create.metal_bracket": "금속 지지대", - "block.create.millstone": "맷돌", - "block.create.minecart_anchor": "광산 수레 정박기", - "block.create.mossy_andesite": "이끼 낀 안산암", - "block.create.mossy_dark_scoria": "이끼 낀 짙은 스코리아", - "block.create.mossy_diorite": "이끼 낀 섬록암", - "block.create.mossy_dolomite": "이끼낀 백운암", - "block.create.mossy_gabbro": "이끼낀 반려암", - "block.create.mossy_granite": "이끼 낀 화강암 벽돌", - "block.create.mossy_limestone": "이끼 낀 석회암", - "block.create.mossy_scoria": "이끼 낀 스코리아", - "block.create.mossy_weathered_limestone": "이끼 낀 풍화된 석회암", - "block.create.mysterious_cuckoo_clock": "뻐꾸기 시계?", - "block.create.natural_scoria": "자연 스코리아", - "block.create.nixie_tube": "디지털 표시증", - "block.create.nozzle": "노즐", - "block.create.oak_window": "참나무 유리창", - "block.create.oak_window_pane": "참나무 유리판", - "block.create.orange_sail": "주황색 날개", - "block.create.orange_seat": "주황색 좌석", - "block.create.orange_valve_handle": "주황색 밸브 손잡이", - "block.create.ornate_iron_window": "장식된 철 유리창", - "block.create.ornate_iron_window_pane": "장식된 철 유리판", - "block.create.overgrown_andesite": "이끼로 뒤덮힌 안산암", - "block.create.overgrown_dark_scoria": "이끼가 뒤덮힌 짙은 스코리아", - "block.create.overgrown_diorite": "이끼로 뒤덮힌 섬록암", - "block.create.overgrown_dolomite": "이끼로 뒤덮힌 백운암", - "block.create.overgrown_gabbro": "이끼로 뒤덮힌 반려암", - "block.create.overgrown_granite": "이끼로 뒤덮힌 화강암 벽돌", - "block.create.overgrown_limestone": "이끼로 뒤덮힌 석회암", - "block.create.overgrown_scoria": "이끼로 뒤덮힌 스코리아", - "block.create.overgrown_weathered_limestone": "이끼로 뒤덮힌 풍화된 석회암", - "block.create.paved_andesite": "포장된 안산암", - "block.create.paved_andesite_slab": "포장된 안산암 반 블록", - "block.create.paved_andesite_stairs": "포장된 안산암 계단", - "block.create.paved_andesite_wall": "포장된 안산암 담장", - "block.create.paved_dark_scoria": "포장된 짙은 스코리아", - "block.create.paved_dark_scoria_slab": "포장된 스코리아 반 블록", - "block.create.paved_dark_scoria_stairs": "포장된 짙은 스코리 계단", - "block.create.paved_dark_scoria_wall": "포장된 짙은 스코리아 담장", - "block.create.paved_diorite": "포장된 섬록암", - "block.create.paved_diorite_slab": "포장된 섬록암 반 블록", - "block.create.paved_diorite_stairs": "포장된 섬록암 계단", - "block.create.paved_diorite_wall": "포장된 섬록암 담장", - "block.create.paved_dolomite": "포장된 백운암", - "block.create.paved_dolomite_slab": "포장된 백운암 반 블록", - "block.create.paved_dolomite_stairs": "포장된 백운암 계단", - "block.create.paved_dolomite_wall": "포장된 백운암 담장", - "block.create.paved_gabbro": "포장된 반려암", - "block.create.paved_gabbro_slab": "포장된 반려암 반 블록", - "block.create.paved_gabbro_stairs": "포장된 반려암 계단", - "block.create.paved_gabbro_wall": "포장된 반려암 담장", - "block.create.paved_granite": "포장된 화강암", - "block.create.paved_granite_slab": "포장된 화강암 반 블록", - "block.create.paved_granite_stairs": "포장된 화강암 계단", - "block.create.paved_granite_wall": "포장된 화강암 담장", - "block.create.paved_limestone": "포장된 석회암", - "block.create.paved_limestone_slab": "포장된 석회암 반 블록", - "block.create.paved_limestone_stairs": "포장된 석회암 계단", - "block.create.paved_limestone_wall": "포장된 석회암 담장", - "block.create.paved_scoria": "포장된 스코리아", - "block.create.paved_scoria_slab": "포장된 스코리아 반 블록", - "block.create.paved_scoria_stairs": "포장된 스코리아 계단", - "block.create.paved_scoria_wall": "포장된 스코리아 담장", - "block.create.paved_weathered_limestone": "포장된 풍화된 석회암", - "block.create.paved_weathered_limestone_slab": "포장된 풍화된 석회암 반 블록", - "block.create.paved_weathered_limestone_stairs": "포장된 풍화된 석회암 계단", - "block.create.paved_weathered_limestone_wall": "포장된 풍화된 석회암 담장", - "block.create.pink_sail": "분홍색 날개", - "block.create.pink_seat": "분홍색 좌석", - "block.create.pink_valve_handle": "분홍색 밸브 손잡이", - "block.create.piston_extension_pole": "피스톤 연장 축", - "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", - "block.create.polished_dark_scoria_slab": "윤나는 짙은 스코리아 반 블록", - "block.create.polished_dark_scoria_stairs": "윤나는 짙은 스코리아 계단", - "block.create.polished_dark_scoria_wall": "윤나는 짙은 스코리아 담장", - "block.create.polished_dolomite": "윤나는 백운암", - "block.create.polished_dolomite_slab": "윤나는 백운암 반 블록", - "block.create.polished_dolomite_stairs": "윤나는 백운암 계단", - "block.create.polished_dolomite_wall": "윤나는 백운암 담장", - "block.create.polished_gabbro": "윤나는 반려암", - "block.create.polished_gabbro_slab": "윤나는 반려암 반 블록", - "block.create.polished_gabbro_stairs": "윤나는 반려암 계단", - "block.create.polished_gabbro_wall": "윤나는 반려암 담장", - "block.create.polished_limestone": "윤나는 석회암", - "block.create.polished_limestone_slab": "윤나는 석회암 반 블록", - "block.create.polished_limestone_stairs": "윤나는 석회암 계단", - "block.create.polished_limestone_wall": "윤나는 석회암 담장", - "block.create.polished_scoria": "윤나는 스코리아", - "block.create.polished_scoria_slab": "윤나는 스코리아 반 블록", - "block.create.polished_scoria_stairs": "윤나는 스코리아 계단", - "block.create.polished_scoria_wall": "윤나는 스코리아 담장", - "block.create.polished_weathered_limestone": "윤나는 풍화된 석회암", - "block.create.polished_weathered_limestone_slab": "윤나는 풍화된 석회암 반 블록", - "block.create.polished_weathered_limestone_stairs": "윤나는 풍화된 석회암 계단", - "block.create.polished_weathered_limestone_wall": "윤나는 풍화된 석회암 담장", - "block.create.portable_fluid_interface": "이동식 액체 인터페이스", - "block.create.portable_storage_interface": "이동식 아이템 인터페이스", - "block.create.powered_latch": "레드스톤 걸쇠", - "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", - "block.create.pulley_magnet": "도르래 자석", - "block.create.pulse_repeater": "펄스 리피터", - "block.create.purple_sail": "보라색 날개", - "block.create.purple_seat": "보라색 좌석", - "block.create.purple_valve_handle": "보라색 밸브 손잡이", - "block.create.radial_chassis": "원형 섀시", - "block.create.red_sail": "빨간색 날개", - "block.create.red_seat": "빨간색 좌석", - "block.create.red_valve_handle": "빨간색 밸브 손잡이", - "block.create.redstone_contact": "동형 감지기", - "block.create.redstone_link": "레드스톤 링크", - "block.create.refined_radiance_casing": "빛나는 케이스", - "block.create.reinforced_rail": "강화된 레일", - "block.create.rope": "밧줄", - "block.create.rope_pulley": "밧줄 도르래", - "block.create.rotation_speed_controller": "회전 속도 컨트롤러", - "block.create.sail_frame": "풍차 날개 프레임", - "block.create.schematic_table": "청사진 테이블", - "block.create.schematicannon": "청사진 대포", - "block.create.scoria": "스코리아", - "block.create.scoria_bricks": "스코리아 벽돌", - "block.create.scoria_bricks_slab": "스코리아 벽돌 반 블록", - "block.create.scoria_bricks_stairs": "스코리아 벽돌 계단", - "block.create.scoria_bricks_wall": "스코리아 벽돌 담장", - "block.create.scoria_cobblestone": "스코리아 조약돌", - "block.create.scoria_cobblestone_slab": "스코리아 조약돌 반 블록", - "block.create.scoria_cobblestone_stairs": "스코리아 조약돌 계단", - "block.create.scoria_cobblestone_wall": "스코리아 조약돌 담장", - "block.create.scoria_pillar": "스코리아 기둥", - "block.create.secondary_linear_chassis": "밝은 직선 섀시", - "block.create.sequenced_gearshift": "순서 기어쉬프트", - "block.create.shadow_steel_casing": "그림자 케이스", - "block.create.shaft": "축", - "block.create.smart_chute": "UNLOCALIZED: Smart Chute", - "block.create.smart_fluid_pipe": "스마트 액체 파이프", - "block.create.speedometer": "속도 계측기", - "block.create.spout": "수도꼭지", - "block.create.spruce_window": "가문비나무 유리창", - "block.create.spruce_window_pane": "가문비나무 유리판", - "block.create.sticker": "UNLOCALIZED: Sticker", - "block.create.sticky_mechanical_piston": "끈끈이 기계식 피스톤", - "block.create.stockpile_switch": "수량 스위치", - "block.create.stressometer": "피로도 계측기", - "block.create.tiled_glass": "타일 유리", - "block.create.tiled_glass_pane": "타일 유리판", - "block.create.turntable": "돌림판", - "block.create.vertical_framed_glass": "수직 유리", - "block.create.vertical_framed_glass_pane": "수직 유리판", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", - "block.create.water_wheel": "물레방아", - "block.create.weathered_limestone": "풍화된 석회암", - "block.create.weathered_limestone_bricks": "풍화된 석회암 벽돌", - "block.create.weathered_limestone_bricks_slab": "풍화된 석회암 벽돌 반 블록", - "block.create.weathered_limestone_bricks_stairs": "풍화된 석회암 벽돌 계단", - "block.create.weathered_limestone_bricks_wall": "풍화된 석회암 벽돌 담장", - "block.create.weathered_limestone_cobblestone": "풍화된 석회암 조약돌", - "block.create.weathered_limestone_cobblestone_slab": "풍화된 석회암 조약돌 반 블록", - "block.create.weathered_limestone_cobblestone_stairs": "풍화된 석회암 조약돌 계단", - "block.create.weathered_limestone_cobblestone_wall": "풍화된 석회암 조약돌 담장", - "block.create.weathered_limestone_pillar": "풍화된 석회암 기둥", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", - "block.create.white_sail": "하얀색 날개", - "block.create.white_seat": "하얀색 좌석", - "block.create.white_valve_handle": "하얀색 밸브 손잡이", - "block.create.windmill_bearing": "풍차 베어링", - "block.create.wooden_bracket": "나무 지지대", - "block.create.yellow_sail": "노란색 날개", - "block.create.yellow_seat": "노란색 좌석", - "block.create.yellow_valve_handle": "노란색 밸브 손잡이", - "block.create.zinc_block": "아연 블", - "block.create.zinc_ore": "아연 광석", - "entity.create.contraption": "장치", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", - "entity.create.seat": "좌석", - "entity.create.stationary_contraption": "고정된 장치", - "entity.create.super_glue": "강력 접착제", - "fluid.create.milk": "우유", - "fluid.create.potion": "포션", - "fluid.create.tea": "건축가의 차", - "item.create.andesite_alloy": "안산암 합금", - "item.create.attribute_filter": "속성 필터 틀", - "item.create.bar_of_chocolate": "초콜릿 바", - "item.create.belt_connector": "기계식 벨트", - "item.create.blaze_cake": "블레이즈 케이크", - "item.create.blaze_cake_base": "블레이즈 케이크 틀", - "item.create.brass_hand": "황동 손", - "item.create.brass_ingot": "황동 주괴", - "item.create.brass_nugget": "황동 조각", - "item.create.brass_sheet": "황동 판", - "item.create.builders_tea": "건축가의 차", - "item.create.chest_minecart_contraption": "상자가 실린 광산 수레 장치", - "item.create.chocolate_bucket": "초콜릿 양동이", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", - "item.create.chromatic_compound": "색채 혼합물", - "item.create.cinder_flour": "잿가루", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "구리 주괴", - "item.create.copper_nugget": "구리 조각", - "item.create.copper_sheet": "구리 판", - "item.create.crafter_slot_cover": "조합기 슬롯 덮개", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", - "item.create.crushed_brass": "분쇄된 황동", - "item.create.crushed_copper_ore": "분쇄된 구리 광석", - "item.create.crushed_gold_ore": "분쇄된 금 광석", - "item.create.crushed_iron_ore": "분쇄된 철 광석", - "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", - "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", - "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", - "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", - "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", - "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", - "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", - "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", - "item.create.crushed_zinc_ore": "분쇄된 아연 광석", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "반죽", - "item.create.electron_tube": "전지 튜브", - "item.create.empty_blaze_burner": "빈 블레이즈 버너", - "item.create.empty_schematic": "빈 청사진", - "item.create.extendo_grip": "외장형 연장 팔", - "item.create.filter": "필터 틀", - "item.create.furnace_minecart_contraption": "화로가 실린 광산 수레 장치", - "item.create.goggles": "엔지니어의 고글", - "item.create.golden_sheet": "금 판", - "item.create.handheld_worldshaper": "휴대용 세계편집기", - "item.create.honey_bucket": "꿀 양동이", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", - "item.create.integrated_circuit": "집적 회로", - "item.create.iron_sheet": "철 판", - "item.create.lapis_sheet": "청금석 판", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "광산 수레 장치", - "item.create.minecart_coupling": "광산 수레 커플링", - "item.create.polished_rose_quartz": "윤나는 장밋빛 석영", - "item.create.powdered_obsidian": "흑요석 가루", - "item.create.propeller": "프로펠러", - "item.create.red_sand_paper": "붉은 사포", - "item.create.refined_radiance": "정제된 광채", - "item.create.rose_quartz": "장밋빛 석영", - "item.create.sand_paper": "사포", - "item.create.schematic": "청사진", - "item.create.schematic_and_quill": "청사진과 깃펜", - "item.create.shadow_steel": "그림자 강철", - "item.create.super_glue": "강력 접착제", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", - "item.create.tree_fertilizer": "나무 비료", - "item.create.vertical_gearbox": "수직 기어박스", - "item.create.wand_of_symmetry": "대칭의 지팡이", - "item.create.wheat_flour": "밀가루", - "item.create.whisk": "혼합기", - "item.create.wrench": "렌치", - "item.create.zinc_ingot": "아연 주괴", - "item.create.zinc_nugget": "아연 조각", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Create모드에 어서오세요", - "advancement.create.root.desc": "멋진 장치들을 만들 시간입니다!", - "advancement.create.andesite_alloy": "합금..?", - "advancement.create.andesite_alloy.desc": "암석으로도 합금을 만들 수 있나요?", - "advancement.create.its_alive": "살아 움직이는", - "advancement.create.its_alive.desc": "당신의 첫 장치가 움직이는 것을 보세요.", - "advancement.create.shifting_gears": "기어 변환", - "advancement.create.shifting_gears.desc": "크기가 다른 톱니바퀴를 연결하여 장치의 속도를 바꿀 수 있습니다.", - "advancement.create.overstressed": "과부화", - "advancement.create.overstressed.desc": "직접 피로도의 한계를 경험해보세요.", - "advancement.create.belt": "켈프 드라이브", - "advancement.create.belt.desc": "두 축에 컨베이어 벨트를 이으세요.", - "advancement.create.tunnel": "엄폐!", - "advancement.create.tunnel.desc": "터널을 이용해 벨트를 꾸며보세요.", - "advancement.create.splitter_tunnel": "분할 정복 알고리즘", - "advancement.create.splitter_tunnel.desc": "여러 황동 터널을 이용하여 분리기를 만드세요.", - "advancement.create.chute": "쏟아져 내려와", - "advancement.create.chute.desc": "수직 벨트역할을 하는 슈트를 설치하세요.", - "advancement.create.upward_chute": "공중 납치", - "advancement.create.upward_chute.desc": "아이템이 바람을 받은 슈트안에서 날아가는 것을 보세요.", - "advancement.create.belt_funnel": "펄럭거리는 깔기", - "advancement.create.belt_funnel.desc": "깔때기를 벨트나 아이템 거치대에 설치하여 특별한 모양을 만들어 보세요.", - "advancement.create.belt_funnel_kiss": "깔때기는 어떻게 태어나?", - "advancement.create.belt_funnel_kiss.desc": "두 벨트 깔때기를 만나게하세요. 쪽!", - "advancement.create.fan": "바람의 힘을 느껴라", - "advancement.create.fan.desc": "선풍기 바람을 느껴보세요.", - "advancement.create.fan_lava": "지열 난방기", - "advancement.create.fan_lava.desc": "아이템을 녹이는 바람을 느껴보세요.", - "advancement.create.fan_water": "축축한 세척", - "advancement.create.fan_water.desc": "아이템을 씻는 바람을 느껴보세요.", - "advancement.create.fan_smoke": "기계 풀무", - "advancement.create.fan_smoke.desc": "아이템을 굽는 바람을 느껴보세요.", - "advancement.create.wrench": "곡괭이여 잘 있거라", - "advancement.create.wrench.desc": "당신의 장치 설계를 도와줄 렌치를 만드세요.", - "advancement.create.goggles": "피로돋보기", - "advancement.create.goggles.desc": "장치에 대한 운동 정보를 가져다 줄 고글을 만드세요.", - "advancement.create.speedometer": "근데 얼마나 빨라?", - "advancement.create.speedometer.desc": "속도 계측기를 가동하세요. 고글을 통해 수치가 얼마나 되는지 보세요.", - "advancement.create.stressometer": "근데 얼마나 피로해?", - "advancement.create.stressometer.desc": "피로도 계측기를 가동하세요. 고글을 통해 수치가 얼마나 되는지 보세요.", - "advancement.create.aesthetics": "짠! 예술!", - "advancement.create.aesthetics.desc": "축, 파이프, 톱니바퀴에 지지대를 설치하세요.", - "advancement.create.reinforced": "짠! 강화!", - "advancement.create.reinforced.desc": "축, 파이프, 벨트에 적절한 케이스를 씌우세요.", - "advancement.create.water_wheel": "수력 동력화", - "advancement.create.water_wheel.desc": "물레방아를 설치하고 회전하게 만드세요!", - "advancement.create.chocolate_wheel": "초콜릿방아", - "advancement.create.chocolate_wheel.desc": "녹은 초콜릿으로 물레방아를 돌리세요.", - "advancement.create.lava_wheel": "불레방아", - "advancement.create.lava_wheel.desc": "이건 일어나지 않았어야 하는데...", - "advancement.create.cuckoo": "잘자...", - "advancement.create.cuckoo.desc": "뻐꾸기 시계가 잘 시간을 알리는 것을 관찰하세요.", - "advancement.create.millstone": "나만의 작은 분쇄기", - "advancement.create.millstone.desc": "멧돌을 설치하고 가동시키세요.", - "advancement.create.windmill": "선선한 바람", - "advancement.create.windmill.desc": "풍차 베어링을 작동시키세요.", - "advancement.create.maxed_windmill": "강한 바람", - "advancement.create.maxed_windmill.desc": "풍차 베어링을 최대 속력으로 작동시키세요.", - "advancement.create.andesite_casing": "안산암 시대", - "advancement.create.andesite_casing.desc": "안산암과 나무를 이용하여 기본 케이스를 만드세요.", - "advancement.create.mechanical_drill": "굴착기 가동", - "advancement.create.mechanical_drill.desc": "드릴을 설치하고 가동시키세요.", - "advancement.create.press": "'깡!'", - "advancement.create.press.desc": "프레스를 만들고 금속 판을 만들어보세요.", - "advancement.create.polished_rose_quartz": "장밋빛 다이아몬드", - "advancement.create.polished_rose_quartz.desc": "장밋빛 석영을 투명해지도록 열심히 사포질하세요.", - "advancement.create.electron_tube": "삐빅-", - "advancement.create.electron_tube.desc": "전지 튜브를 만드세요. 발전된 장치들에 쓰입니다.", - "advancement.create.mechanical_saw": "벌목기 가동", - "advancement.create.mechanical_saw.desc": "톱을 설치하고 가동시키세요.", - "advancement.create.basin": "대야 시스템", - "advancement.create.basin.desc": "대야를 설치하고 아이템을 던져보세요.", - "advancement.create.mixer": "섞고 돌리고 섞고", - "advancement.create.mixer.desc": "대야 위에 믹서를 설치하고, 가동시켜 재료를 만드세요.", - "advancement.create.blaze_burner": "살아있는 불", - "advancement.create.blaze_burner.desc": "블레이즈 버너를 얻으세요.", - "advancement.create.compact": "자동 압축", - "advancement.create.compact.desc": "대야와 압착기를 이용하서 아이템을 섞어보세요.", - "advancement.create.brass": "진짜 합금", - "advancement.create.brass.desc": "구리와 아연을 가지고 황동을 만드세요.", - "advancement.create.brass_casing": "황동기 시대", - "advancement.create.brass_casing.desc": "새롭게 얻은 황동과 나무를 가지고 업그레이드된 케이스를 만드세요.", - "advancement.create.copper_casing": "구리 시대", - "advancement.create.copper_casing.desc": "구리 판을 이용해 구리 케이스를 만드세요.", - "advancement.create.spout": "쪼르록", - "advancement.create.spout.desc": "수도꼭지가 아이템에 액체를 채우는 것을 보세요.", - "advancement.create.spout_potion": "대규모 양조", - "advancement.create.spout_potion.desc": "수도꼭지가 병에 포션을 채우는 것을 보세요.", - "advancement.create.chocolate": "상상의 세계", - "advancement.create.chocolate.desc": "양동이에 녹은 초콜릿을 채우세요.", - "advancement.create.item_drain": "회전 배수", - "advancement.create.item_drain.desc": "아이템 배수구가 액체를 비우는 것을 보세요.", - "advancement.create.chained_item_drain": "구른다!", - "advancement.create.chained_item_drain.desc": "아이템이 여러 배수구 위를 굴러가는 것을 보세요.", - "advancement.create.glass_pipe": "액체 엿보기", - "advancement.create.glass_pipe.desc": "액체가 창이 달린 파이프를 지나는 것을 보세요. 직선 파이프에 렌치로 우클릭하면 창문이 생깁니다.", - "advancement.create.pipe_collision": "액체를 만나게하지 마세요!", - "advancement.create.pipe_collision.desc": "파이프 안에서 두 액체를 만나게 하세요.", - "advancement.create.pipe_spill": "누출 사고", - "advancement.create.pipe_spill.desc": "파이프 끝을 열어 액체가 밖으로 나오는 것을 보세요.", - "advancement.create.hose_pulley": "공업 펌프", - "advancement.create.hose_pulley.desc": "호스 도르래를 사용하여 액체를 채우거나 빨아들이세요.", - "advancement.create.infinite_water": "바다를 흡수하다", - "advancement.create.infinite_water.desc": "무한으로 인식되는 물 웅덩이에서 물을 끌어올리세요.", - "advancement.create.infinite_lava": "세계의 핵을 흡수하다", - "advancement.create.infinite_lava.desc": "무한으로 인식되는 용암 웅덩이에서 용암을 끌어올리세요.", - "advancement.create.infinite_chocolate": "상상 속에 잠기다", - "advancement.create.infinite_chocolate.desc": "무한으로 인식되는 초콜릿 웅덩이에서 초콜릿을 끌어올리세요..", - "advancement.create.crafter": "자동 조합", - "advancement.create.crafter.desc": "기계식 조합기를 설치하고 가동시키세요.", - "advancement.create.clockwork_bearing": "시계 제작", - "advancement.create.clockwork_bearing.desc": "시계 베어링에 구조물을 달고 작동시키세요.", - "advancement.create.nixie_tube": "스타일있게 표시하기", - "advancement.create.nixie_tube.desc": "디지털 표시등을 얻고 설치하세요.", - "advancement.create.deployer": "찌르고, 설치하고, 공격!", - "advancement.create.deployer.desc": "당신의 분신, 배포기를 설치하고 가동시키세요.", - "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", - "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", - "advancement.create.flywheel": "공장의 심장", - "advancement.create.flywheel.desc": "화로엔진에 플라이휠을 연결하세요.", - "advancement.create.overstress_flywheel": "정말 높은 피로", - "advancement.create.overstress_flywheel.desc": "화로 엔진을 과부하하세요.", - "advancement.create.integrated_circuit": "복잡한 계산", - "advancement.create.integrated_circuit.desc": "집적 회로를 제작하세요.", - "advancement.create.mechanical_arm": "할일이 많아!", - "advancement.create.mechanical_arm.desc": "기계 팔을 조합하고, 입력부와 출력부를 정하고, 설치한 다음 돌리세요. 그리고 그것이 작동하는 것을 보세요.", - "advancement.create.musical_arm": "볼륨 최대로!", - "advancement.create.musical_arm.desc": "기계 팔이 주크박스를 작동시키는 것을 보세요.", - "advancement.create.arm_many_targets": "정리를 할 수 있는 정도의 능력", - "advancement.create.arm_many_targets.desc": "기계 팔에 10개 이상의 출력부를 설정하세요.", - "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", - "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", - "advancement.create.fist_bump": "하이파이브!", - "advancement.create.fist_bump.desc": "두 배포기를 서로 부딫치게 하세요.", - "advancement.create.crushing_wheel": "한 쌍의 거인들", - "advancement.create.crushing_wheel.desc": "더 많은 재료를 더 효율적으로 갈 분쇄 휠을 만드세요.", - "advancement.create.blaze_cake": "설탕 러시", - "advancement.create.blaze_cake.desc": "블레이즈 버너에게 줄 특별한 케이크를 만드세요.", - "advancement.create.chromatic_compound": "양극성 재료", - "advancement.create.chromatic_compound.desc": "색채 혼합물를 만드세요.", - "advancement.create.shadow_steel": "공허를 받아들이다", - "advancement.create.shadow_steel.desc": "무의 금속, 그림자 강철을 생성하세요.", - "advancement.create.refined_radiance": "빛으로 제련되다", - "advancement.create.refined_radiance.desc": "강력한 색채 물질, 정제된 빛을 생성하세요.", - "advancement.create.chromatic_age": "양극 시대", - "advancement.create.chromatic_age.desc": "빛과 어둠의 케이스를 제작하세요.", - "advancement.create.wand_of_symmetry": "빛나는 건축", - "advancement.create.wand_of_symmetry.desc": "대칭의 지팡이를 만드세요.", - "advancement.create.extendo_grip": "띠요오옹!", - "advancement.create.extendo_grip.desc": "외장형 연장 팔을 드세요.", - "advancement.create.dual_extendo_grip": "궁극의 띠용!", - "advancement.create.dual_extendo_grip.desc": "쌍으로 외장형 연장 팔을 들어 인간을 뛰어넘은 사거리를 가지세요.", - "advancement.create.eob": "End of Beta", - "advancement.create.eob.desc": "이후 업데이트를 기다려주세요. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create 팔레트", - "death.attack.create.crush": "%1$s이(가) 분쇄 휠에 의해 가공되었습니다", - "death.attack.create.fan_fire": "%1$s이(가) 뜨거운 바람에 의해 익어버렸습니다", - "death.attack.create.fan_lava": "%1$s이(가) 용암 바람으로 구워졌습니다", - "death.attack.create.mechanical_drill": "%1$s이(가) 드릴에 관통당했습니다", - "death.attack.create.mechanical_saw": "%1$s이(가) 톱날에 반으로 갈라져 죽었습니다", - "death.attack.create.cuckoo_clock_explosion": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", - "create.block.deployer.damage_source_name": "배포기", - "create.block.cart_assembler.invalid": "카트조립기를 레일 위에 설치하세요", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "분쇄", - "create.recipe.milling": "맷돌질", - "create.recipe.fan_washing": "세척", - "create.recipe.fan_washing.fan": "물과 선풍기", - "create.recipe.fan_smoking": "훈연", - "create.recipe.fan_smoking.fan": "불과 선풍기", - "create.recipe.fan_blasting": "제련", - "create.recipe.fan_blasting.fan": "용암과 선풍기", - "create.recipe.pressing": "압착", - "create.recipe.mixing": "혼합", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "무형 자동 조합", - "create.recipe.automatic_brewing": "자동 양조", - "create.recipe.packing": "압축", - "create.recipe.automatic_packing": "자동 압축", - "create.recipe.sawing": "제재", - "create.recipe.mechanical_crafting": "기계 조합", - "create.recipe.automatic_shaped": "유형 자동 조합", - "create.recipe.block_cutting": "블 절단", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "사포질", - "create.recipe.mystery_conversion": "?", - "create.recipe.spout_filling": "채우기", - "create.recipe.draining": "배수", - "create.recipe.processing.chance": "%1$s%% 확률", - "create.recipe.heat_requirement.none": "열이 필요하지 않음", - "create.recipe.heat_requirement.heated": "고온으로 가열됨", - "create.recipe.heat_requirement.superheated": "초고온으로 가열됨", - - "create.generic.range": "범위", - "create.generic.radius": "반지름", - "create.generic.width": "폭", - "create.generic.height": "높이", - "create.generic.length": "길이", - "create.generic.speed": "속도", - "create.generic.delay": "딜레이", - "create.generic.unit.ticks": "틱", - "create.generic.unit.seconds": "초", - "create.generic.unit.minutes": "분", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "시계 방향", - "create.generic.counter_clockwise": "시계 반대 방향", - - "create.action.scroll": "스크롤하세요", - "create.action.confirm": "확인", - "create.action.abort": "중단", - "create.action.saveToFile": "저장", - "create.action.discard": "삭제", - - "create.keyinfo.toolmenu": "메뉴 세부정보 보기", - "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", - - "create.gui.scrollInput.defaultTitle": "옵션을 선택하세요:", - "create.gui.scrollInput.scrollToModify": "스크롤로 수정하기", - "create.gui.scrollInput.scrollToAdjustAmount": "스크롤로 수량 조절하기", - "create.gui.scrollInput.scrollToSelect": "스크롤로 선택", - "create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스크롤로 빨리 수정하기", - "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", - "create.gui.toolmenu.cycle": "스크롤로 순환", - "create.gui.symmetryWand.mirrorType": "반사", - "create.gui.symmetryWand.orientation": "방위", - - "create.symmetry.mirror.plane": "거울 모드", - "create.symmetry.mirror.doublePlane": "사각형 모드", - "create.symmetry.mirror.triplePlane": "팔각형 모드", - - "create.orientation.orthogonal": "수직으로", - "create.orientation.diagonal": "대각선으로", - "create.orientation.horizontal": "수평으로", - "create.orientation.alongZ": "Z좌표를 따라", - "create.orientation.alongX": "X좌표를 따라", - - "create.gui.terrainzapper.title": "휴대용 세계편집기", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "설치방식", - "create.gui.terrainzapper.placement.merged": "선택한 블록에", - "create.gui.terrainzapper.placement.attached": "선택한 블록 옆에", - "create.gui.terrainzapper.placement.inserted": "선택한 블록 안에", - "create.gui.terrainzapper.brush": "브러쉬", - "create.gui.terrainzapper.brush.cuboid": "정육면체", - "create.gui.terrainzapper.brush.sphere": "구", - "create.gui.terrainzapper.brush.cylinder": "원통", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "도구", - "create.gui.terrainzapper.tool.fill": "채우기", - "create.gui.terrainzapper.tool.place": "설치", - "create.gui.terrainzapper.tool.replace": "대체", - "create.gui.terrainzapper.tool.clear": "지우기", - "create.gui.terrainzapper.tool.overlay": "덮어씌우기", - "create.gui.terrainzapper.tool.flatten": "평탄화", - - "create.terrainzapper.shiftRightClickToSet": "쉬프트-우클릭으로 모양 설정하기", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "광산 수레는 최대 2개의 커플링만 가질 수 있습니다", - "create.minecart_coupling.unloaded": "열차 일부분이 로딩되지 않은 청크에 있는 것 같습니다", - "create.minecart_coupling.no_loops": "커플링은 반복할 수 없습니다", - "create.minecart_coupling.removed": "광산 수레에서 모든 커플링을 제거했습니다.", - "create.minecart_coupling.too_far": "광산 수레들이 너무 멀리 떨어져 있습니다", - - "create.contraptions.movement_mode": "이동 설정", - "create.contraptions.movement_mode.move_place": "멈췄을때 항상 블록을 설치함", - "create.contraptions.movement_mode.move_place_returned": "멈췄을떄 최초 위치에서만 블록을 설치함", - "create.contraptions.movement_mode.move_never_place": "멈춰도 블록을 설치하지 않음", - "create.contraptions.movement_mode.rotate_place": "멈췄을때 항상 블록을 설치함", - "create.contraptions.movement_mode.rotate_place_returned": "멈췄을떄 최초 위치에서만 블록을 설치함", - "create.contraptions.movement_mode.rotate_never_place": "멈춰도 블록을 설치하지 않음", - "create.contraptions.cart_movement_mode": "수레 장치 이동 설정", - "create.contraptions.cart_movement_mode.rotate": "장치가 항상 전방을 향함", - "create.contraptions.cart_movement_mode.rotate_paused": "수레가 회전할때 장치 행동을 멈춤", - "create.contraptions.cart_movement_mode.rotation_locked": "장치가 회전하지 않음", - "create.contraptions.windmill.rotation_direction": "회전 방향", - "create.contraptions.clockwork.clock_hands": "시계 바늘", - "create.contraptions.clockwork.hour_first": "시침 먼저", - "create.contraptions.clockwork.minute_first": "분침 먼저", - "create.contraptions.clockwork.hour_first_24": "24시간 바늘 먼저", - - "create.logistics.filter": "필터", - "create.logistics.recipe_filter": "조합법 필터", - "create.logistics.fluid_filter": "액체 필터", - "create.logistics.firstFrequency": "주파수. #1", - "create.logistics.secondFrequency": "주파수. #2", - "create.logistics.filter.apply": "%1$s에 필터 저장됨", - "create.logistics.filter.apply_click_again": "%1$s에 필터 저장됨 / 다시 눌러 수량 복사하기", - "create.logistics.filter.apply_count": "필터에 추출 횟수를 적용했습니다.", - - "create.gui.goggles.generator_stats": "발동 상태:", - "create.gui.goggles.kinetic_stats": "가동 상태:", - "create.gui.goggles.at_current_speed": "현재 에너지량", - "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "게이지 정보:", - "create.gui.speedometer.title": "회전 속도", - "create.gui.stressometer.title": "네트워크 부하", - "create.gui.stressometer.capacity": "용량", - "create.gui.stressometer.overstressed": "과부하됨", - "create.gui.stressometer.no_rotation": "회전없음", - "create.gui.contraptions.not_fast_enough": "이 %1$s은(는) 작동하기에 _회전 속도_가 _부족합니다_", - "create.gui.contraptions.network_overstressed": "_과부하!_ _높은 피로도_ _용량_을 가진 발전기를 추가로 설치하거나 _장치 속도_를 _늦추세요_.", - "create.gui.adjustable_crate.title": "가변 창고 ", - "create.gui.adjustable_crate.storageSpace": "저장 공간", - "create.gui.stockpile_switch.title": "수량 스위치", - "create.gui.stockpile_switch.invert_signal": "신호 반전", - "create.gui.stockpile_switch.move_to_lower_at": "최소 신호 발동 비율:%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "최소 신호 유지 비율:%1$s%%", - "create.gui.sequenced_gearshift.title": "순서 기어쉬프트", - "create.gui.sequenced_gearshift.instruction": "설명", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "회전", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "각도", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "피스톤", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "거리", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "마침", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "create.gui.sequenced_gearshift.speed": "속도, 방향", - "create.gui.sequenced_gearshift.speed.forward": "입력된 속도, 그대로 회전", - "create.gui.sequenced_gearshift.speed.forward_fast": "입력된 속도의 2배, 그대로 회전", - "create.gui.sequenced_gearshift.speed.back": "입력된 속도, 반대로 회전", - "create.gui.sequenced_gearshift.speed.back_fast": "입력된 속도의 2배, 반대로 회전", - - "create.schematicAndQuill.dimensions": "청사진 크기: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "첫번쨰 위치 지정됨.", - "create.schematicAndQuill.secondPos": "두번째 위치 지정됨.", - "create.schematicAndQuill.noTarget": "[Ctrl]을 눌러 공기 블록을 선택하기.", - "create.schematicAndQuill.abort": "위치 제거됨.", - "create.schematicAndQuill.title": "청사진 이름", - "create.schematicAndQuill.convert": "저장하고 바로 설치하기", - "create.schematicAndQuill.fallbackName": "내 청사진", - "create.schematicAndQuill.saved": "%1$s로 저장됨", - - "create.schematic.invalid": "[!] 없는 아이템 - 청사진 테이블을 이용하세요", - "create.schematic.position": "위치", - "create.schematic.rotation": "회전", - "create.schematic.rotation.none": "없음", - "create.schematic.rotation.cw90": "90도 시계방향 회전", - "create.schematic.rotation.cw180": "180도 시계방향 회전", - "create.schematic.rotation.cw270": "270도 시계방향 회전", - "create.schematic.mirror": "거울", - "create.schematic.mirror.none": "없음", - "create.schematic.mirror.frontBack": "전-후", - "create.schematic.mirror.leftRight": "좌-우", - "create.schematic.tool.deploy": "전개", - "create.schematic.tool.move": "X/Z좌표 이동", - "create.schematic.tool.movey": "Y좌표 이동", - "create.schematic.tool.rotate": "회전", - "create.schematic.tool.print": "설치", - "create.schematic.tool.flip": "뒤집기", - "create.schematic.tool.deploy.description.0": "구조물을 해당 위치로 고정합니다.", - "create.schematic.tool.deploy.description.1": "땅에다 우클릭으로 설치합니다.", - "create.schematic.tool.deploy.description.2": "[Ctrl]을 눌러 플레이어-청사진의 거리를 설정합니다.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-스크롤로 거리를 조정합니다.", - "create.schematic.tool.move.description.0": "청사진을 수평 이동시킵니다.", - "create.schematic.tool.move.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "청사진을 수직 이동시킵니다.", - "create.schematic.tool.movey.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "청사진을 돌립니다.", - "create.schematic.tool.rotate.description.1": "[CTRL]-스크롤로 90도 돌립니다.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "구조물을 즉시 설치합니다.", - "create.schematic.tool.print.description.1": "[우클릭]으로 현재 지점에 설치를 허가합니다.", - "create.schematic.tool.print.description.2": "이 도구는 크리에이티브 모드 전용입니다.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "당신이 보는 면으로 청사진을 뒤집습니다.", - "create.schematic.tool.flip.description.1": "청사진을 보고 [CTRL]-스크롤로 뒤집습니다.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "동기화 중...", - "create.schematics.uploadTooLarge": "청사진이 너무 큽니다!.", - "create.schematics.maxAllowedSize": "최대 청사진 파일 크기는:", - - "create.gui.schematicTable.refresh": "파일 새로고침", - "create.gui.schematicTable.open_folder": "폴더 열기", - "create.gui.schematicTable.title": "청사진 테이블", - "create.gui.schematicTable.availableSchematics": "사용가능한 청사진", - "create.gui.schematicTable.noSchematics": "저장된 청사진 없음", - "create.gui.schematicTable.uploading": "업로딩 중...", - "create.gui.schematicTable.finished": "업로드 완료!", - "create.gui.schematicannon.title": "청사진 대포", - "create.gui.schematicannon.listPrinter": "재료 목록 프린터", - "create.gui.schematicannon.gunpowderLevel": "화약 용량 %1$s%%", - "create.gui.schematicannon.shotsRemaining": "남은 발포 수 : %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "화약 여분: %1$s", - "create.gui.schematicannon.optionEnabled": "현재 활성화 됨", - "create.gui.schematicannon.optionDisabled": "현재 비활성화 됨", - "create.gui.schematicannon.showOptions": "대포 설치 설정 열기", - "create.gui.schematicannon.option.dontReplaceSolid": "온전한 블록을 대체하지 않음", - "create.gui.schematicannon.option.replaceWithSolid": "온전한 블록을 재료로 대체함", - "create.gui.schematicannon.option.replaceWithAny": "온전한 블록을 아무 재료로 대체함", - "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블록을 공기로 채움", - "create.gui.schematicannon.option.skipMissing": "부족한 블록을 무시하고 진행", - "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", - "create.gui.schematicannon.slot.gunpowder": "화약을 넣어 대포 연료를 채우세요", - "create.gui.schematicannon.slot.listPrinter": "책을 넣어 건축 재료 체크리스트를 인쇄하세요", - "create.gui.schematicannon.slot.schematic": "여기에 청사진을 넣으세요. 건설 구역이 설정되어 있어야 합니다.", - "create.gui.schematicannon.option.skipMissing.description": "만약 대포가 설치에 필요한 블록을 찾지 못할 경우,건너뛰고 다음 블록 설치를 진행합니다.", - "create.gui.schematicannon.option.skipTileEntities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블록을 대체하지 않습니다.", - "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블록을 대포가 가진 재료로 대체합니다.", - "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블록을 대포가 가진 어떠한 재료로든 대체합니다.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "대포가 작업구역의 블록들을 제거하고 공기로 채웁니다.", - - "create.schematicannon.status.idle": "휴식", - "create.schematicannon.status.ready": "준비됨", - "create.schematicannon.status.running": "가동 중", - "create.schematicannon.status.finished": "완료", - "create.schematicannon.status.paused": "멈춤", - "create.schematicannon.status.stopped": "중단됨", - "create.schematicannon.status.noGunpowder": "화약이 부족함", - "create.schematicannon.status.targetNotLoaded": "블록이 준비되지 않음", - "create.schematicannon.status.targetOutsideRange": "목표가 너무 멀리 떨어져 있습니다.", - "create.schematicannon.status.searching": "검색 중", - "create.schematicannon.status.skipping": "건너뛰는 중", - "create.schematicannon.status.missingBlock": "부족한 블록:", - "create.schematicannon.status.placing": "설치 중", - "create.schematicannon.status.clearing": "블록을 제거하는 중", - "create.schematicannon.status.schematicInvalid": "청사진 없음", - "create.schematicannon.status.schematicNotPlaced": "청사진이 전개되지 않음", - "create.schematicannon.status.schematicExpired": "청사진 파일이 제거됨", - - "create.materialChecklist": "UNLOCALIZED: Material Checklist", - "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", - "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", - "create.gui.filter.respect_data": "상세정보 일치", - "create.gui.filter.respect_data.description": "위 목록 아이템의 내구도, 마법부여, 그리고 다른 NBT와 일치할 때 통과시킵니다.", - "create.gui.filter.ignore_data": "상세정보 무시", - "create.gui.filter.ignore_data.description": "상세정보와 상관없이 아이템 종류만 일치한다면 통과시킵니다.", - - "create.item_attributes.placeable": "설치할 수 있음", - "create.item_attributes.placeable.inverted": "설치할 수 없음", - "create.item_attributes.consumable": "먹을 수 있음", - "create.item_attributes.consumable.inverted": "먹을 수 없음", - "create.item_attributes.smeltable": "구워질 수 있음", - "create.item_attributes.smeltable.inverted": "구워질 수 없음", - "create.item_attributes.washable": "세척될 수 있음", - "create.item_attributes.washable.inverted": "세척될 수 없음", - "create.item_attributes.smokable": "훈연될 수 있음", - "create.item_attributes.smokable.inverted": "훈연될 수 없음", - "create.item_attributes.crushable": "분쇄될 수 있음", - "create.item_attributes.crushable.inverted": "분쇄될 수 없음", - "create.item_attributes.blastable": "용광로에 녹일 수 있음", - "create.item_attributes.blastable.inverted": "용광로에 녹일 수 없음", - "create.item_attributes.enchanted": "마법부여됨", - "create.item_attributes.enchanted.inverted": "마법부여되지 않음", - "create.item_attributes.damaged": "내구도가 닮", - "create.item_attributes.damaged.inverted": "내구도가 닳지 않음", - "create.item_attributes.badly_damaged": "심각하게 내구도가 닮", - "create.item_attributes.badly_damaged.inverted": "심각하게 내구도가 닳지 않음", - "create.item_attributes.not_stackable": "겹쳐질 수 없음", - "create.item_attributes.not_stackable.inverted": "겹쳐질 수 있음", - "create.item_attributes.equipable": "장착할 수 있음", - "create.item_attributes.equipable.inverted": "장착할 수 없음", - "create.item_attributes.furnace_fuel": "화로 연료로 쓸 수 있음", - "create.item_attributes.furnace_fuel.inverted": "화로 연료로 쓸 수 없음", - "create.item_attributes.in_tag": "%1$s로 등록됨", - "create.item_attributes.in_tag.inverted": "%1$s로 등록되지 않음", - "create.item_attributes.in_item_group": "%1$s탭에 속함", - "create.item_attributes.in_item_group.inverted": "%1$s탭에 속함", - "create.item_attributes.added_by": "%1$s모드가 추가함", - "create.item_attributes.added_by.inverted": "%1$s모드가 추가하지 않음", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "속성이 선택되지 않음", - "create.gui.attribute_filter.selected_attributes": "선택된 속성:", - "create.gui.attribute_filter.add_attribute": "리스트에 속성을 추가합니다", - "create.gui.attribute_filter.add_inverted_attribute": "리스트에 반대 속성을 추가합니다.", - "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.attribute_filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", - "create.gui.attribute_filter.add_reference_item": "참고할 아이템을 추가하기", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "회전속도 요구: %1$s", - "create.tooltip.speedRequirement.none": "없음", - "create.tooltip.speedRequirement.medium": "보통", - "create.tooltip.speedRequirement.high": "빠름", - "create.tooltip.stressImpact": "피로도 부하: %1$s", - "create.tooltip.stressImpact.low": "낮음", - "create.tooltip.stressImpact.medium": "보통", - "create.tooltip.stressImpact.high": "높음", - "create.tooltip.stressImpact.overstressed": "과부하됨", - "create.tooltip.capacityProvided": "피로도 용량: %1$s", - "create.tooltip.capacityProvided.low": "적음", - "create.tooltip.capacityProvided.medium": "보통", - "create.tooltip.capacityProvided.high": "큼", - "create.tooltip.generationSpeed": "%1$s %2$s만큼 발전함", - "create.tooltip.analogStrength": "레드스톤 출력: %1$s/15", - - "create.mechanical_arm.extract_from": "%1$s에서 아이템을 가져감", - "create.mechanical_arm.deposit_to": "%1$s에 아이템을 넣음", - "create.mechanical_arm.summary": "이 기계 팔은 %1$s개의 입력부와 %2$s개의 출력부를 가졌습니다.", - "create.mechanical_arm.points_outside_range": "%1$s개의 상호작용 포인트가 거리제한으로 인해 삭제되었습니다.", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "다수의 입력부가 존재할 때", - - "create.mechanical_arm.selection_mode.round_robin": "순서대로 옮김", - "create.mechanical_arm.selection_mode.forced_round_robin": "순서대로 옮김(강제적)", - "create.mechanical_arm.selection_mode.prefer_first": "첫 포인트 우선", - - "create.tunnel.selection_mode.split": "분리", - "create.tunnel.selection_mode.forced_split": "강제 분리", - "create.tunnel.selection_mode.round_robin": "순차적 배분", - "create.tunnel.selection_mode.forced_round_robin": "강제 순차적 배분", - "create.tunnel.selection_mode.prefer_nearest": "가까운 곳 선호", - "create.tunnel.selection_mode.randomize": "랜덤", - "create.tunnel.selection_mode.synchronize": "입력부 동기화", - - "create.tooltip.chute.header": "슈트 정보", - "create.tooltip.chute.items_move_down": "아이템이 아래로 이동합니다.", - "create.tooltip.chute.items_move_up": "아이템이 위로 이동합니다.", - "create.tooltip.chute.no_fans_attached": "선풍기가 부착되지 않음", - "create.tooltip.chute.fans_push_up": "선풍기가 아래에서 밈", - "create.tooltip.chute.fans_push_down": "선풍기가 위에서 밈", - "create.tooltip.chute.fans_pull_up": "선풍기가 위에서 당김", - "create.tooltip.chute.fans_pull_down": "선풍기가 아래에서 당김", - "create.tooltip.chute.contains": "UNLOCALIZED: Contains: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", - "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "목표 없음", - "create.hint.mechanical_arm_no_targets": "이 _기계 팔_은 _목표_가 설정되지 않은 것 같습니다. _기계 팔을 손에 들고_ 벨트, 아이템 거치대, 깔때기를 _우클릭_하여 목표로 지정하세요.", - "create.hint.empty_bearing.title": "베어링 업데이트_", - "create.hint.empty_bearing": "_맨 손_으로 베어링을 _우클릭_하여 구조물을 _부착_하세요.", - "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", - "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "블레이즈가 행복하게 섭취함", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "청사진 대포가 끝남", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "슬라임이 철퍽거림", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "압착기가 가동됨", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "나무 지지대", - "block.create.wooden_bracket.tooltip.summary": "나무를 이용해 _축, 톱니바퀴, 파이프_를 꾸며보세요.", - - "block.create.metal_bracket.tooltip": "금속 지지대", - "block.create.metal_bracket.tooltip.summary": "금속을 이용해 _축, 톱니바퀴, 파이프_를 꾸며보세요.", - - "block.create.copper_casing.tooltip": "구리 케이스", - "block.create.copper_casing.tooltip.summary": "다양한 용도로 쓰일 수 있는 견고한 기계 케이스입니다. 장식용으로 써도 무방합니다.", - "block.create.copper_casing.tooltip.condition1": "액체 파이프에 사용할 때", - "block.create.copper_casing.tooltip.behaviour1": "_액체_ _파이프_를 구리 케이스로 _덮습니다._ 케이스를 씌운 파이프는 _연결이 고정_되어, 다른 파이프와 상호작용하지 않습니다.", - - "block.create.encased_fluid_pipe.tooltip": "ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "_구리 케이스_를 씌운 액체 파이프입니다.", - - "block.create.seat.tooltip": "SEAT", - "block.create.seat.tooltip.summary": "앉아서 드라이브를 즐기세요! _움직이는 장치_에 _플레이어_를 _고정_시킵니다. 가구용으로도 좋습니다! 다양한 색깔이 존재합니다.", - "block.create.seat.tooltip.condition1": "좌석에 우클릭", - "block.create.seat.tooltip.behaviour1": "플레이어가 좌석에 _앉습니다_. _왼쪽 쉬프트_를 눌러 좌석에서 _일어섭니다_.", - - "item.create.blaze_cake.tooltip": "블레이즈 케이크", - "item.create.blaze_cake.tooltip.summary": "열심히 일하는 _블레이즈_ _버너_의 식사입니다. 그들을 더 화끈하게 만드세요!", - - "block.create.fluid_pipe.tooltip": "FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "_액체_를 수송시킬 때 쓰입니다. 액체를 옮기려면 _펌프_가 필요합니다.", - "block.create.fluid_pipe.tooltip.condition1": "액체 수송", - "block.create.fluid_pipe.tooltip.behaviour1": "_탱크_와 _대야_같은 _액체_ _저장소_에 연결할 수 있습니다. 노출된 파이프 구멍은 액체를 _흡입, 배출_할 수 있습니다. 누수에 주의하세요!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "세계에 _많은 양_의 액체를 _배출_하거나 _흡수_하는데 쓰입니다.", - "block.create.hose_pulley.tooltip.condition1": "동력을 받을 때", - "block.create.hose_pulley.tooltip.behaviour1": "호스를 올리거나 내립니다. _호스의 위치_로 액체를 _채우거나 빼낼_ 높이가 정해집니다.", - "block.create.hose_pulley.tooltip.condition2": "액체가 도르래에 흡수될 때", - "block.create.hose_pulley.tooltip.behaviour2": "_호스 끝의 높이_에서 액체 블록을 _흡수_하기 시작합니다. _매우 많은 양의 액체_는 무한으로 간주됩니다.", - "block.create.hose_pulley.tooltip.condition3": "액체가 도르래에서 배출 될 때", - "block.create.hose_pulley.tooltip.behaviour3": "_호스 끝의 높이_에서 액체를 _채우기_ 시작합니다.", - - "block.create.fluid_tank.tooltip": "FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "당신이 좋아하는 _액체_를 모두 _저장_하세요. 넓이와 높이를 조정할 수 있습니다.", - "block.create.fluid_tank.tooltip.condition1": "렌치로 우클릭", - "block.create.fluid_tank.tooltip.behaviour1": "창문 설정을 변경합니다.", - - "block.create.creative_fluid_tank.tooltip": "CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "이 액체 탱크는 모든 액체를 _무한정 복제_합니다. 넓이와 높이를 조정할 수 있습니다.", - "block.create.creative_fluid_tank.tooltip.condition1": "탱크에 액체가 들어있을 때", - "block.create.creative_fluid_tank.tooltip.behaviour1": "이 탱크에서 추출되는 액체는 _무한정 공급_됩니다. 이 탱크에 들어가는 액체는 _사라집니다_.", - "block.create.creative_fluid_tank.tooltip.condition2": "렌치로 우클릭", - "block.create.creative_fluid_tank.tooltip.behaviour2": "창문 설정을 변경합니다.", - - "block.create.fluid_valve.tooltip": "FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "파이프 속 액체의 흐름을 멈춥니다.", - "block.create.fluid_valve.tooltip.condition1": "설정가능한 흐름", - "block.create.fluid_valve.tooltip.behaviour1": "_회전력_은 밸브를 닫게만들어, 액체의 흐름을 _중지_시킵니다. _반대_ _방향의_ 회전력은 밸브를 다시 엽니다.", - - "block.create.mechanical_pump.tooltip": "MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "_회전력_을 가지고 액체를 파이프에서 _움직일_ _수_ _있게_ 합니다. 양방향 최대 범위가 있습니다. (기본설정은 16블록)", - "block.create.mechanical_pump.tooltip.condition1": "액체의 흐름", - "block.create.mechanical_pump.tooltip.behaviour1": "_회전력_이 파이프 안의 _액체_를 _움직이게_ 하는 압력을 발생시킵니다. 회전력의 방향을 _반전_시켜, 액체의 흐름을 _바꿀_ _수_ 있습니다.", - "block.create.mechanical_pump.tooltip.control1": "렌치로 우클릭", - "block.create.mechanical_pump.tooltip.action1": "_펌프_의 방향을 반전시켜, 흐름의 _기본_ _방향_을 바꿉니다.", - - "block.create.smart_fluid_pipe.tooltip": "SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "_필터_가 있는 액체 파이프입니다. 어떤 액체가 지나갈 수 있는지 _특정_할 수 있습니다.", - "block.create.smart_fluid_pipe.tooltip.condition1": "액체가 흘러들어올 때", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "_필터에 맞지 않는_ 액체는 멈춥니다.", - "block.create.smart_fluid_pipe.tooltip.condition2": "액체 용기에 접해있을 때", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "_필터에 맞는_ 액체만 빼냅니다.", - - "block.create.spout.tooltip": "SPOUT", - "block.create.spout.tooltip.summary": "액체 용기를 _리필_해주는 펌프입니다.", - "block.create.spout.tooltip.condition1": "액체 수송", - "block.create.spout.tooltip.behaviour1": "양동이나 물병같이 _액체를_ _담는_ _용기_가 아래에 있다면, 수도꼭지는 _자신이_ _가진_ _액체_로 채웁니다.", - "block.create.spout.tooltip.condition2": "액체 자동화", - "block.create.spout.tooltip.behaviour2": "수도꼭지가 _벨트_나 _아이템 거치대_위에 설치되어있다면, 아래를 지나가는 액체 용기와 _자동으로_ 반응합니다.", - - "block.create.item_drain.tooltip": "ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "액체 용기를 _비우기위해_ 철창을 붙인 아이템 거치대입니다.", - "block.create.item_drain.tooltip.condition1": "액체 수송", - "block.create.item_drain.tooltip.behaviour1": "_양동이나 병같은_ 액체 용기가 옆에서 들어오면, 배수구는 자신의 용기에 액체를 _쏟아낼_ 것입니다. 아이템은 반대편으로 배출됩니다.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "설정된 반사 모드에 따라 블록 설치를 _똑같이_ _재현_합니다.", - "item.create.wand_of_symmetry.tooltip.condition1": "단축바에 있을 때", - "item.create.wand_of_symmetry.tooltip.behaviour1": "활성화 유지", - "item.create.wand_of_symmetry.tooltip.control1": "땅에다 우클릭", - "item.create.wand_of_symmetry.tooltip.action1": "거울을 _생성하거나_ _옮깁니다_.", - "item.create.wand_of_symmetry.tooltip.control2": "공중에 우클릭", - "item.create.wand_of_symmetry.tooltip.action2": "활성화된 거을을 _제거합니다_.", - "item.create.wand_of_symmetry.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.wand_of_symmetry.tooltip.action3": "_설정_ _창_을 엽니다.", - - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "_지형경관_을 만들 때 좋은 간편한 도구입니다.", - "item.create.handheld_worldshaper.tooltip.control1": "블록을 보고 좌클릭", - "item.create.handheld_worldshaper.tooltip.action1": "이 도구로 설치할 블록을 설정합니다.", - "item.create.handheld_worldshaper.tooltip.control2": "블록을 보고 우클릭", - "item.create.handheld_worldshaper.tooltip.action2": "해당 위치에 설정된 _브러쉬_ 와 _도구_를 적용합니다.", - "item.create.handheld_worldshaper.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.handheld_worldshaper.tooltip.action3": "_설정_ _창_을 엽니다.", - - "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "일반적인 나무 종류들의 성장을 촉진시킬 강력한 미네랄의 혼합물입니다.", - "item.create.tree_fertilizer.tooltip.condition1": "묘목에 사용했을 때", - "item.create.tree_fertilizer.tooltip.behaviour1": "묘목을 주위 공간과 _상관없이_ 성장시킵니다.", - - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "띠요오옹! 사용자의 _사거리_를 늘려줍니다.", - "item.create.extendo_grip.tooltip.condition1": "다른 손에 있을 때", - "item.create.extendo_grip.tooltip.behaviour1": "_기존_ _손_에있는 아이템의 사거리를 늘립니다.", - - "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _아이템_ 목록에 따라 _조정_합니다.", - "item.create.filter.tooltip.condition1": "필터 슬롯에 있을 때", - "item.create.filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", - "item.create.filter.tooltip.condition2": "우클릭", - "item.create.filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", - - "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _속성_ 목록에 따라 _조정_합니다.", - "item.create.attribute_filter.tooltip.condition1": "필터 슬롯에 있을 때", - "item.create.attribute_filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", - "item.create.attribute_filter.tooltip.condition2": "우클릭", - "item.create.attribute_filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", - - "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "조합 재료로 쓰이거나 청사진 테이블에서 청사진을 불러올 때 쓰입니다.", - - "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "세계에 구조물을 _홀로그램으로_ 불러와 지정하고 설치합니다. 지정된 홀로그램은 _청사진_ _대포_의 _작업_ _영역_이 됩니다.", - "item.create.schematic.tooltip.condition1": "들고 있을 떄", - "item.create.schematic.tooltip.behaviour1": "UI의 도구로 _변경/설치_ 할 수 있습니다.", - "item.create.schematic.tooltip.control1": "웅크린 상태에서 우클릭", - "item.create.schematic.tooltip.action1": "정확한 _좌표_ 입력을 위한 창을 엽니다.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "세계에 있는 구조물을 _.nbt파일_로 저장할 때 쓰입니다.", - "item.create.schematic_and_quill.tooltip.condition1": "1단계", - "item.create.schematic_and_quill.tooltip.behaviour1": "_두_ _모서리_를 우클릭으로 선택하세요.", - "item.create.schematic_and_quill.tooltip.condition2": "2단계", - "item.create.schematic_and_quill.tooltip.behaviour2": "면을 바라보고 _Ctrl-스크롤_하여 크기를 조정하세요. 우클릭을 다시 하면 저장됩니다.", - "item.create.schematic_and_quill.tooltip.control1": "우클릭", - "item.create.schematic_and_quill.tooltip.action1": "모서리 선택 / 저장 확인", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl를 누르고 있을 때", - "item.create.schematic_and_quill.tooltip.action2": "_Scroll_를 이용하여 거리를 조정합니다.", - "item.create.schematic_and_quill.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.schematic_and_quill.tooltip.action3": "선택 영역을 리셋하고 _삭제_합니다.", - - "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "장착된 청사진을 바탕으로 블록들을 _발포_합니다. _화약_을 연료로 사용하고 주변 인벤토리 공간에서 아이템을 사용합니다.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "_빈_ _청사진_에 저장된 청사진을 불러옵니다.", - "block.create.schematic_table.tooltip.condition1": "빈 청사진을 넣을 때", - "block.create.schematic_table.tooltip.behaviour1": "Schematics 폴더에서 선택한 파일을 업로드합니다.", - - "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "_장치 정보_를 착용자의 시야에 띄어주는 안경입니다.", - "item.create.goggles.tooltip.condition1": "장착했을 때", - "item.create.goggles.tooltip.behaviour1": "해당 장치의 _속도_, _피로도_, _용량_을 레벨에 따라 에 따라 색상 UI를 보여줍니다.", - "item.create.goggles.tooltip.condition2": "계측기를 바라볼 때", - "item.create.goggles.tooltip.behaviour2": "계측기가 연결된 네트워크의 _속도_나 _스트레스_의 자세한 정보를 보여줍니다.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "장치 구성에 유용한 도구입니다. 장치를 _회전_, _설정_, _해체_하는 데 쓰입니다.", - "item.create.wrench.tooltip.control1": "장치에 우클릭", - "item.create.wrench.tooltip.action1": "사용자가 바라보는 _면으로_ 혹은 _반대로_ 장치를 돌립니다.", - "item.create.wrench.tooltip.control2": "웅크린 상태에서 우클릭", - "item.create.wrench.tooltip.action2": "_장치_를 _해체_하고 _즉시_ _인벤토리_로 넣습니다.", - - "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "덮힌 환풍기 _앞_에 붙여 환풍기의 효과를 _전방_으로 _확대_합니다.", - - "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "_시간의_ _흐름_을 알고 공간을 _꾸미는_ 데 좋은 공예품입니다.", - "block.create.cuckoo_clock.tooltip.condition1": "회전할 때", - "block.create.cuckoo_clock.tooltip.behaviour1": "현재 시각을 보여주고 하루에 두 번 울립니다. 점심과 플레이어가 바로 잘 수 있는 저녁에 울립니다.", - - "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "_회전력_으로 _멀미_를 일으킵니다.", - - "block.create.portable_fluid_interface.tooltip": "PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "움직이는 피스톤, 베어링, 수레, 밧줄 도르래에서 _액체를_ _교환하는_ 휴대용 장치입니다. 두 인터페이스는 _서로 마주보고_ _1-2블록_ 떨어져있어야 합니다.", - "block.create.portable_fluid_interface.tooltip.condition1": "움직일 때", - "block.create.portable_fluid_interface.tooltip.behaviour1": "_고정된 인터페이스_와 액체를 주고 받습니다. 고정된 인터페이스에 액체를 수송하는 것은 _움직이는 장치에 직접 수송하는 것_과 같습니다. 액체가 이동하는 동안 움직이는 장치는 _멈춥니다_", - "block.create.portable_fluid_interface.tooltip.condition2": "레드스톤 신호를 받을 때", - "block.create.portable_fluid_interface.tooltip.behaviour2": "활성화된 연결을 _해제_합니다.", - - "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "붙어있는 _저장소_에 들어있는 아이템을 기반으로 레드스톤 신호를 보냅니다. 필터도 제공됩니다. _비교기_와 반대로, 수량 스위치는 신호가 반전되는 _임계점_을 조절할 수 있습니다.", - "block.create.stockpile_switch.tooltip.condition1": "우클릭 할 때", - "block.create.stockpile_switch.tooltip.behaviour1": "UI를 엽니다.", - - "block.create.content_observer.tooltip": "CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "저장소나 벨트의 아이템을 등록된 _필터_를 이용해 _탐지_합니다. _인벤토리, 벨트, 슈트_ 안에 해당 아이템을 탐지하는 동안, 레드스톤 신호를 보냅니다. _깔대기_가 해당 아이템을 수송하면, _1틱_의 레드스톤 신호를 보냅니다.", - - "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "이 저장소는 용량을 _직접_ _정할_ 수 있습니다. 아무아이템이나 최대 16스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "이 상자는 아무 아이템을 _무한히_ 저장합니다. 청사진 대포 옆에 놓을 시 준비물을 _전부_ 공급합니다.", - "block.create.creative_crate.tooltip.condition1": "필터에 아이템을 설정할 시", - "block.create.creative_crate.tooltip.behaviour1": "선택된 아이템을 _무한정_으로 _빼낼_ 수 있습니다. 대신 _들어간_ 아이템은 _삭제_됩니다.", - - "block.create.controller_rail.tooltip": "CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "_광산 수레_의 _이동속도_를 _세밀하게_ _조정_할 수 있는 _양방향_ _전동 레일_입니다.", - "block.create.controller_rail.tooltip.condition1": "레드스톤 신호를 받을 때", - "block.create.controller_rail.tooltip.behaviour1": "_신호 세기에 따라_ 지나가는 수레를 _가속, 감속_합니다. 레드스톤 신호는 다른 방향 레일에도 전달됩니다. 두 방향레일에 다른 세기를 전달하면 중간 레일들은 두 세기 사이의 신호를 받습니다.", - - "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 배포기가 자동으로 쓸 수 있습니다.", - "item.create.sand_paper.tooltip.condition1": "사용할 때", - "item.create.sand_paper.tooltip.behaviour1": "_다른 손_에있는 아이템과 _바닥에 있는 아이템_을 윤냅니다.", - - "item.create.builders_tea.tooltip": "BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "하루를 시작하기에 좋은 음료입니다. _ 새로운 영감_을 줍니다.", - - "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "_흡수된_ _빛_으로 제련된 색채 혼합물입니다.", - - "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "_공허_에서 제련된 색채 혼합물입니다.", - - "item.create.minecart_coupling.tooltip": "MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "당신의 모든 _수레들을 이어 _멋진 _기차_를 만들어보세요.", - "item.create.minecart_coupling.tooltip.condition1": "광산 수레에 사용할 때", - "item.create.minecart_coupling.tooltip.behaviour1": "_두 수레를 묶어_ 이동할 때 고정된 _거리를 유지하게_ 합니다.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Please keep this item away from children.", - "create.tooltip.randomWipDescription1": "A baby panda dies every time you use this item. Every. Time.", - "create.tooltip.randomWipDescription2": "Use at your own risk.", - "create.tooltip.randomWipDescription3": "This is not the item you are looking for, *finger-wiggles* please disperse.", - "create.tooltip.randomWipDescription4": "This item will self-destruct in 10 seconds. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Believe me, it's useless.", - "create.tooltip.randomWipDescription6": "By using this item, you hereby consent to our disclaimer and agree to its terms.", - "create.tooltip.randomWipDescription7": "This one maybe isn't for you. What about that one?", - "create.tooltip.randomWipDescription8": "Use it and regret your decision immediately.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json deleted file mode 100644 index 2fcd26057..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 1603", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "UNLOCALIZED: Acacia Window", - "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", - "block.create.adjustable_chain_gearshift": "UNLOCALIZED: Adjustable Chain Gearshift", - "block.create.adjustable_crate": "FlexKrat", - "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", - "block.create.adjustable_repeater": "FlexSterker", - "block.create.analog_lever": "UNLOCALIZED: Analog Lever", - "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", - "block.create.andesite_bricks": "Andesietstenen", - "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", - "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", - "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", - "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", - "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", - "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", - "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", - "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", - "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", - "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", - "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", - "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", - "block.create.basin": "Bekken", - "block.create.belt": "Mechanische Transportband", - "block.create.birch_window": "UNLOCALIZED: Birch Window", - "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", - "block.create.black_sail": "UNLOCALIZED: Black Sail", - "block.create.black_seat": "UNLOCALIZED: Black Seat", - "block.create.black_valve_handle": "UNLOCALIZED: Black Valve Handle", - "block.create.blaze_burner": "UNLOCALIZED: Blaze Burner", - "block.create.blue_sail": "UNLOCALIZED: Blue Sail", - "block.create.blue_seat": "UNLOCALIZED: Blue Seat", - "block.create.blue_valve_handle": "UNLOCALIZED: Blue Valve Handle", - "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", - "block.create.brass_block": "UNLOCALIZED: Block of Brass", - "block.create.brass_casing": "UNLOCALIZED: Brass Casing", - "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", - "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", - "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", - "block.create.brown_sail": "UNLOCALIZED: Brown Sail", - "block.create.brown_seat": "UNLOCALIZED: Brown Seat", - "block.create.brown_valve_handle": "UNLOCALIZED: Brown Valve Handle", - "block.create.cart_assembler": "Kar Assembler", - "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", - "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", - "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", - "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", - "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", - "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", - "block.create.chocolate": "UNLOCALIZED: Chocolate", - "block.create.chute": "UNLOCALIZED: Chute", - "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", - "block.create.clutch": "Koppeling", - "block.create.cogwheel": "Tandwiel", - "block.create.content_observer": "UNLOCALIZED: Content Observer", - "block.create.controller_rail": "UNLOCALIZED: Controller Rail", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "UNLOCALIZED: Block of Copper", - "block.create.copper_casing": "UNLOCALIZED: Copper Casing", - "block.create.copper_ore": "UNLOCALIZED: Copper Ore", - "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", - "block.create.copper_tiles": "UNLOCALIZED: Copper Tiles", - "block.create.copper_valve_handle": "UNLOCALIZED: Copper Valve Handle", - "block.create.creative_crate": "Bouwtekeningkannon Creatiefeerder", - "block.create.creative_fluid_tank": "UNLOCALIZED: Creative Fluid Tank", - "block.create.creative_motor": "UNLOCALIZED: Creative Motor", - "block.create.crimson_window": "UNLOCALIZED: Crimson Window", - "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", - "block.create.crushing_wheel": "Verpulveraar", - "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.cyan_sail": "UNLOCALIZED: Cyan Sail", - "block.create.cyan_seat": "UNLOCALIZED: Cyan Seat", - "block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle", - "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", - "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", - "block.create.dark_scoria": "UNLOCALIZED: Dark Scoria", - "block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks", - "block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab", - "block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs", - "block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall", - "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", - "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", - "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", - "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", - "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "UNLOCALIZED: Deployer", - "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "Diorietstenen", - "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", - "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", - "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", - "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", - "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", - "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", - "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", - "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "Dolomiet", - "block.create.dolomite_bricks": "Dolomietstenen", - "block.create.dolomite_bricks_slab": "Dolomietstenen Plaat", - "block.create.dolomite_bricks_stairs": "Dolomietstenen Trap", - "block.create.dolomite_bricks_wall": "Dolomietstenen Muur", - "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", - "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", - "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", - "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "Dolomiet Pilaar", - "block.create.encased_chain_drive": "UNLOCALIZED: Encased Chain Drive", - "block.create.encased_fan": "Omhulsde Ventilator", - "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", - "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", - "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", - "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", - "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", - "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", - "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", - "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", - "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", - "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", - "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", - "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", - "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", - "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", - "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", - "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", - "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", - "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", - "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", - "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", - "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", - "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", - "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", - "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", - "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", - "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", - "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", - "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", - "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", - "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", - "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", - "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", - "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", - "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", - "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", - "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", - "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", - "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.fluid_valve": "UNLOCALIZED: Fluid Valve", - "block.create.flywheel": "UNLOCALIZED: Flywheel", - "block.create.framed_glass": "Ingelijst Glas", - "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Gabbrostenen", - "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "Gabbrostenen Trap", - "block.create.gabbro_bricks_wall": "Gabbrostenen Muur", - "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", - "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", - "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", - "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", - "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft", - "block.create.gearbox": "Versnellingsbak", - "block.create.gearshift": "Versnellingspook", - "block.create.glass_fluid_pipe": "UNLOCALIZED: Glass Fluid Pipe", - "block.create.granite_bricks": "Granietstenen", - "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", - "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", - "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", - "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", - "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", - "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", - "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", - "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", - "block.create.gray_sail": "UNLOCALIZED: Gray Sail", - "block.create.gray_seat": "UNLOCALIZED: Gray Seat", - "block.create.gray_valve_handle": "UNLOCALIZED: Gray Valve Handle", - "block.create.green_sail": "UNLOCALIZED: Green Sail", - "block.create.green_seat": "UNLOCALIZED: Green Seat", - "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", - "block.create.hand_crank": "UNLOCALIZED: Hand Crank", - "block.create.honey": "UNLOCALIZED: Honey", - "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", - "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", - "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", - "block.create.item_drain": "UNLOCALIZED: Item Drain", - "block.create.jungle_window": "UNLOCALIZED: Jungle Window", - "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Groot Tandwiel", - "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", - "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", - "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", - "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", - "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", - "block.create.layered_granite": "UNLOCALIZED: Layered Granite", - "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", - "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", - "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.light_blue_sail": "UNLOCALIZED: Light Blue Sail", - "block.create.light_blue_seat": "UNLOCALIZED: Light Blue Seat", - "block.create.light_blue_valve_handle": "UNLOCALIZED: Light Blue Valve Handle", - "block.create.light_gray_sail": "UNLOCALIZED: Light Gray Sail", - "block.create.light_gray_seat": "UNLOCALIZED: Light Gray Seat", - "block.create.light_gray_valve_handle": "UNLOCALIZED: Light Gray Valve Handle", - "block.create.lime_sail": "UNLOCALIZED: Lime Sail", - "block.create.lime_seat": "UNLOCALIZED: Lime Seat", - "block.create.lime_valve_handle": "UNLOCALIZED: Lime Valve Handle", - "block.create.limesand": "Kalkzand", - "block.create.limestone": "Kalksteen", - "block.create.limestone_bricks": "Kalksteenstenen", - "block.create.limestone_bricks_slab": "Kalksteenstenen Plaat", - "block.create.limestone_bricks_stairs": "Kalksteenstenen Trap", - "block.create.limestone_bricks_wall": "Kalksteenstenen Muur", - "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", - "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", - "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", - "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Kalksteen Pillar", - "block.create.linear_chassis": "Lineaar Frame", - "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", - "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", - "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", - "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", - "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "Mechanische Lager", - "block.create.mechanical_crafter": "Mechanische Werkbank", - "block.create.mechanical_drill": "Mechanische Boor", - "block.create.mechanical_harvester": "Mechanische Oogster", - "block.create.mechanical_mixer": "Mechanische Menger", - "block.create.mechanical_piston": "Mechanische Kleefzuiger", - "block.create.mechanical_piston_head": "Mechanische Zuigerhoofd", - "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "Mechanische Pers", - "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "Mechanische Zaag", - "block.create.metal_bracket": "UNLOCALIZED: Metal Bracket", - "block.create.millstone": "UNLOCALIZED: Millstone", - "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", - "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", - "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", - "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", - "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", - "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", - "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", - "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", - "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", - "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", - "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.natural_scoria": "UNLOCALIZED: Natural Scoria", - "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", - "block.create.nozzle": "UNLOCALIZED: Nozzle", - "block.create.oak_window": "UNLOCALIZED: Oak Window", - "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", - "block.create.orange_sail": "UNLOCALIZED: Orange Sail", - "block.create.orange_seat": "UNLOCALIZED: Orange Seat", - "block.create.orange_valve_handle": "UNLOCALIZED: Orange Valve Handle", - "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", - "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", - "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", - "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", - "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", - "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", - "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", - "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", - "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", - "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", - "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", - "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", - "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", - "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", - "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", - "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", - "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", - "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", - "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", - "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", - "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", - "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", - "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", - "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", - "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", - "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", - "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", - "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", - "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", - "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", - "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", - "block.create.paved_granite": "UNLOCALIZED: Paved Granite", - "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", - "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", - "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", - "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", - "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", - "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", - "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", - "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", - "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", - "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", - "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", - "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", - "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", - "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", - "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.pink_sail": "UNLOCALIZED: Pink Sail", - "block.create.pink_seat": "UNLOCALIZED: Pink Seat", - "block.create.pink_valve_handle": "UNLOCALIZED: Pink Valve Handle", - "block.create.piston_extension_pole": "Zuiger Verlengpaal", - "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", - "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", - "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", - "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "Gepolijste Dolomiet", - "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", - "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", - "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "Gepolijste Gabbro", - "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", - "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", - "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "Gepolijste Kalksteen", - "block.create.polished_limestone_slab": "Gepolijste Kalksteen Plaat", - "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", - "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", - "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", - "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", - "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", - "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Gepolijste Verweerde Kalksteen", - "block.create.polished_weathered_limestone_slab": "Gepolijste Verweerde Kalksteen Plaat", - "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", - "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", - "block.create.portable_fluid_interface": "UNLOCALIZED: Portable Fluid Interface", - "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", - "block.create.powered_latch": "UNLOCALIZED: Powered Latch", - "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", - "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", - "block.create.pulse_repeater": "Pulse Versterker", - "block.create.purple_sail": "UNLOCALIZED: Purple Sail", - "block.create.purple_seat": "UNLOCALIZED: Purple Seat", - "block.create.purple_valve_handle": "UNLOCALIZED: Purple Valve Handle", - "block.create.radial_chassis": "Rotation Frame", - "block.create.red_sail": "UNLOCALIZED: Red Sail", - "block.create.red_seat": "UNLOCALIZED: Red Seat", - "block.create.red_valve_handle": "UNLOCALIZED: Red Valve Handle", - "block.create.redstone_contact": "Redstone redstone_contact", - "block.create.redstone_link": "Redstone Brug", - "block.create.refined_radiance_casing": "UNLOCALIZED: Radiant Casing", - "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "UNLOCALIZED: Rope", - "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", - "block.create.rotation_speed_controller": "UNLOCALIZED: Rotation Speed Controller", - "block.create.sail_frame": "UNLOCALIZED: Sail Frame", - "block.create.schematic_table": "Bouwtekening Tafel", - "block.create.schematicannon": "Bouwtekeningkannon", - "block.create.scoria": "UNLOCALIZED: Scoria", - "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", - "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", - "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", - "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", - "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", - "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", - "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", - "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", - "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", - "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", - "block.create.shadow_steel_casing": "UNLOCALIZED: Shadow Casing", - "block.create.shaft": "Drijfas", - "block.create.smart_chute": "UNLOCALIZED: Smart Chute", - "block.create.smart_fluid_pipe": "UNLOCALIZED: Smart Fluid Pipe", - "block.create.speedometer": "Snelheidsmeter", - "block.create.spout": "UNLOCALIZED: Spout", - "block.create.spruce_window": "UNLOCALIZED: Spruce Window", - "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticker": "UNLOCALIZED: Sticker", - "block.create.sticky_mechanical_piston": "Mechanische Zuiger", - "block.create.stockpile_switch": "Voorraad Schakelaar", - "block.create.stressometer": "Stressmeter", - "block.create.tiled_glass": "Getegeld Glas", - "block.create.tiled_glass_pane": "Getegeld Glazen Paneel", - "block.create.turntable": "Draaischijf", - "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", - "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", - "block.create.water_wheel": "Waterrad", - "block.create.weathered_limestone": "Verweerde Kalksteen", - "block.create.weathered_limestone_bricks": "Verweerde Kalksteenstenen", - "block.create.weathered_limestone_bricks_slab": "Verweerde Kalksteenstenen Plaat", - "block.create.weathered_limestone_bricks_stairs": "Verweerde Kalksteenstenen Trap", - "block.create.weathered_limestone_bricks_wall": "Verweerde Kalksteenstenen Muur", - "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", - "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", - "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", - "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Verweerde Kalksteen Pilaar", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", - "block.create.white_sail": "UNLOCALIZED: White Sail", - "block.create.white_seat": "UNLOCALIZED: White Seat", - "block.create.white_valve_handle": "UNLOCALIZED: White Valve Handle", - "block.create.windmill_bearing": "UNLOCALIZED: Windmill Bearing", - "block.create.wooden_bracket": "UNLOCALIZED: Wooden Bracket", - "block.create.yellow_sail": "UNLOCALIZED: Yellow Sail", - "block.create.yellow_seat": "UNLOCALIZED: Yellow Seat", - "block.create.yellow_valve_handle": "UNLOCALIZED: Yellow Valve Handle", - "block.create.zinc_block": "UNLOCALIZED: Block of Zinc", - "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", - "entity.create.contraption": "UNLOCALIZED: Contraption", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", - "entity.create.seat": "UNLOCALIZED: Seat", - "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", - "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.milk": "UNLOCALIZED: Milk", - "fluid.create.potion": "UNLOCALIZED: Potion", - "fluid.create.tea": "UNLOCALIZED: Builder's Tea", - "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", - "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", - "item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate", - "item.create.belt_connector": "Mechanische Transportband", - "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", - "item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base", - "item.create.brass_hand": "UNLOCALIZED: Brass Hand", - "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", - "item.create.brass_nugget": "Brons klompje", - "item.create.brass_sheet": "Brons Platen", - "item.create.builders_tea": "UNLOCALIZED: Builder's Tea", - "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", - "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", - "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", - "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "Koperstaaf", - "item.create.copper_nugget": "Koper klompje", - "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", - "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", - "item.create.crushed_brass": "Gemalen Brons", - "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", - "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", - "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", - "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", - "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", - "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", - "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", - "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", - "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", - "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", - "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", - "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "Deeg", - "item.create.electron_tube": "UNLOCALIZED: Electron Tube", - "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", - "item.create.empty_schematic": "Lege bouwtekening", - "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", - "item.create.filter": "Filter", - "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", - "item.create.goggles": "Ingenieur's Bril", - "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_worldshaper": "UNLOCALIZED: Creative Worldshaper", - "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", - "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", - "item.create.iron_sheet": "IJzeren Platen", - "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", - "item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling", - "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", - "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "Propeller", - "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", - "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", - "item.create.rose_quartz": "Roze Kwarts", - "item.create.sand_paper": "UNLOCALIZED: Sand Paper", - "item.create.schematic": "Bouwtekening", - "item.create.schematic_and_quill": "Bouwtekening en Veer", - "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", - "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", - "item.create.tree_fertilizer": "Boom mest", - "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "Symmetrie Staf", - "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", - "item.create.whisk": "UNLOCALIZED: Whisk", - "item.create.wrench": "Moersleutel", - "item.create.zinc_ingot": "UNLOCALIZED: Zinc Ingot", - "item.create.zinc_nugget": "Zink Nugget", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "UNLOCALIZED: Welcome to Create", - "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", - "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", - "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", - "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", - "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", - "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gears", - "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your contraption.", - "advancement.create.overstressed": "UNLOCALIZED: Overstressed", - "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", - "advancement.create.belt": "UNLOCALIZED: Kelp Drive", - "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "UNLOCALIZED: Take cover!", - "advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your mechanical belt with a Tunnel.", - "advancement.create.splitter_tunnel": "UNLOCALIZED: Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "UNLOCALIZED: Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "UNLOCALIZED: Tumbling down", - "advancement.create.chute.desc": "UNLOCALIZED: Place a chute, the vertical counterpart of the belt.", - "advancement.create.upward_chute": "UNLOCALIZED: Aerial Abduction", - "advancement.create.upward_chute.desc": "UNLOCALIZED: Watch a thrown item fly up into a fan-powered chute.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", - "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", - "advancement.create.fan": "UNLOCALIZED: Mechanical Airbender", - "advancement.create.fan.desc": "UNLOCALIZED: Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "UNLOCALIZED: Geothermal Space Heater", - "advancement.create.fan_lava.desc": "UNLOCALIZED: Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "UNLOCALIZED: Wacky Washing", - "advancement.create.fan_water.desc": "UNLOCALIZED: Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "UNLOCALIZED: Mechanical Bellows", - "advancement.create.fan_smoke.desc": "UNLOCALIZED: Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", - "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "UNLOCALIZED: Stress-O-Vision", - "advancement.create.goggles.desc": "UNLOCALIZED: Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "UNLOCALIZED: But How Fast Exactly?", - "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "UNLOCALIZED: But How Stressed Exactly?", - "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "UNLOCALIZED: Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "UNLOCALIZED: Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "UNLOCALIZED: Boom, Reinforced!", - "advancement.create.reinforced.desc": "UNLOCALIZED: Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power", - "advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", - "advancement.create.cuckoo": "UNLOCALIZED: Is it time?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", - "advancement.create.windmill": "UNLOCALIZED: A mild Breeze", - "advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill.", - "advancement.create.maxed_windmill": "UNLOCALIZED: A strong breeze", - "advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary Breakers", - "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical Drill.", - "advancement.create.press": "UNLOCALIZED: Press Goes 'Bonk!'", - "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "UNLOCALIZED: Beep Boop", - "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", - "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical Saw.", - "advancement.create.basin": "UNLOCALIZED: Basin Operation", - "advancement.create.basin.desc": "UNLOCALIZED: Place a Basin and try throwing items into it.", - "advancement.create.mixer": "UNLOCALIZED: Mixin' It Up", - "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "UNLOCALIZED: A living Fireplace", - "advancement.create.blaze_burner.desc": "UNLOCALIZED: Obtain a Blaze Burner.", - "advancement.create.compact": "UNLOCALIZED: Automated Compacting", - "advancement.create.compact.desc": "UNLOCALIZED: Use a Press and a Basin to compact some items.", - "advancement.create.brass": "UNLOCALIZED: Actual Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "UNLOCALIZED: Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "UNLOCALIZED: A world of Imagination", - "advancement.create.chocolate.desc": "UNLOCALIZED: Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.item_drain.desc": "UNLOCALIZED: Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "UNLOCALIZED: Let it roll!", - "advancement.create.chained_item_drain.desc": "UNLOCALIZED: Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "UNLOCALIZED: Flow Spy", - "advancement.create.glass_pipe.desc": "UNLOCALIZED: Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "UNLOCALIZED: Never cross the Streams!", - "advancement.create.pipe_collision.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "UNLOCALIZED: There's a leak!", - "advancement.create.pipe_spill.desc": "UNLOCALIZED: Watch an open end of a pipe take or place fluids into the world.", - "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.infinite_water": "UNLOCALIZED: Draining the Ocean", - "advancement.create.infinite_water.desc": "UNLOCALIZED: Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "UNLOCALIZED: Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "UNLOCALIZED: Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "UNLOCALIZED: Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "UNLOCALIZED: Signs of Style", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers hate him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", - "advancement.create.integrated_circuit": "UNLOCALIZED: Complex Calculation", - "advancement.create.integrated_circuit.desc": "UNLOCALIZED: Assemble an Integrated Circuit.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "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_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", - "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", - "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "UNLOCALIZED: End of Beta", - "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "UNLOCALIZED: Create", - "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s is verwerkd door verpulverende wielen", - "death.attack.create.fan_fire": "%1$s is verbrand door hete lucht", - "death.attack.create.fan_lava": "%1$s is verbrand door een lava ventilator", - "death.attack.create.mechanical_drill": "%1$s is gespietst door een mechanische boor", - "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by a Mechanical Saw", - "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", - "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", - "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Verpulveren", - "create.recipe.milling": "UNLOCALIZED: Milling", - "create.recipe.fan_washing": "UNLOCALIZED: Bulk Washing", - "create.recipe.fan_washing.fan": "UNLOCALIZED: Fan behind Flowing Water", - "create.recipe.fan_smoking": "UNLOCALIZED: Bulk Smoking", - "create.recipe.fan_smoking.fan": "UNLOCALIZED: Fan behind Fire", - "create.recipe.fan_blasting": "UNLOCALIZED: Bulk Blasting", - "create.recipe.fan_blasting.fan": "UNLOCALIZED: Fan behind Lava", - "create.recipe.pressing": "Persen", - "create.recipe.mixing": "Mengen", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", - "create.recipe.packing": "Compressen", - "create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing", - "create.recipe.sawing": "UNLOCALIZED: Sawing", - "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", - "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", - "create.recipe.block_cutting": "Blok Zagen", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", - "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", - "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", - "create.recipe.draining": "UNLOCALIZED: Item Draining", - "create.recipe.processing.chance": "%1$s%% Kans", - "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", - "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", - "create.recipe.heat_requirement.superheated": "UNLOCALIZED: Super-Heated", - - "create.generic.range": "Omvang", - "create.generic.radius": "Radius", - "create.generic.width": "UNLOCALIZED: Width", - "create.generic.height": "UNLOCALIZED: Height", - "create.generic.length": "UNLOCALIZED: Length", - "create.generic.speed": "Snelheid", - "create.generic.delay": "Vertraging", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Seconden", - "create.generic.unit.minutes": "Minuten", - "create.generic.unit.rpm": "UNLOCALIZED: RPM", - "create.generic.unit.stress": "UNLOCALIZED: su", - "create.generic.unit.degrees": "UNLOCALIZED: °", - "create.generic.unit.millibuckets": "UNLOCALIZED: %1$smB", - "create.generic.clockwise": "UNLOCALIZED: Clockwise", - "create.generic.counter_clockwise": "UNLOCALIZED: Counter-Clockwise", - - "create.action.scroll": "Scroll", - "create.action.confirm": "Bevestigen", - "create.action.abort": "Afbreken", - "create.action.saveToFile": "Opslaan", - "create.action.discard": "Weggooien", - - "create.keyinfo.toolmenu": "Focus Gereedschap Menu", - "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - - "create.gui.scrollInput.defaultTitle": "Kies een optie:", - "create.gui.scrollInput.scrollToModify": "Scroll om aan te passen", - "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "Scroll om te selecteren", - "create.gui.scrollInput.shiftScrollsFaster": "Shift om sneller te Scrollen", - "create.gui.toolmenu.focusKey": "Hou [%1$s] ingedrukt om te Focusen", - "create.gui.toolmenu.cycle": "[SCROLL] om te Cycleën", - "create.gui.symmetryWand.mirrorType": "Spiegelen", - "create.gui.symmetryWand.orientation": "Orientatie", - - "create.symmetry.mirror.plane": "Spiegel één keer", - "create.symmetry.mirror.doublePlane": "Rechthoekig", - "create.symmetry.mirror.triplePlane": "Achthoekig", - - "create.orientation.orthogonal": "Orthogonaal", - "create.orientation.diagonal": "Diagonaal", - "create.orientation.horizontal": "Horizontaal", - "create.orientation.alongZ": "Langs Z-as", - "create.orientation.alongX": "Langs X-as", - - "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", - "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", - "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", - "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", - "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", - "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", - "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", - "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", - "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", - "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", - "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", - "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", - "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", - "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", - - "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", - "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", - "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", - - "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", - "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", - "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", - "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", - "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", - "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", - "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", - "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", - "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", - "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", - "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", - "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", - "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", - - "create.logistics.filter": "Filter", - "create.logistics.recipe_filter": "UNLOCALIZED: Recipe Filter", - "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", - "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", - "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", - - "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", - "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", - "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", - "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", - "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", - "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", - "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", - "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", - "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", - "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", - "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "FlexKrat", - "create.gui.adjustable_crate.storageSpace": "Opslagruimte", - "create.gui.stockpile_switch.title": "Voorraad Schakelaar", - "create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal", - "create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%", - "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", - "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", - "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", - "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", - "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", - "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", - - "create.schematicAndQuill.dimensions": "Bouwtekening Groote: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Eerste positie ingesteld.", - "create.schematicAndQuill.secondPos": "Tweede positie ingesteld.", - "create.schematicAndQuill.noTarget": "Houd [Ctrl] ingedrukt om een Lucht block te kiezen.", - "create.schematicAndQuill.abort": "Keuze verwijderd.", - "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Upload Immediately", - "create.schematicAndQuill.fallbackName": "Mijn Bouwtekening", - "create.schematicAndQuill.saved": "Opgeslagen als %1$s", - - "create.schematic.invalid": "[!] Invalide object - Gebruik inplaats hiervan de Bouwtekening Tafel", - "create.schematic.position": "Positie", - "create.schematic.rotation": "Rotatie", - "create.schematic.rotation.none": "Geen", - "create.schematic.rotation.cw90": "Met de klok mee 90", - "create.schematic.rotation.cw180": "Met de klok mee 180", - "create.schematic.rotation.cw270": "Met de klok mee 270", - "create.schematic.mirror": "Spiegel", - "create.schematic.mirror.none": "Geen", - "create.schematic.mirror.frontBack": "Voor naar achter", - "create.schematic.mirror.leftRight": "Links naar rechts", - "create.schematic.tool.deploy": "Inzetten", - "create.schematic.tool.move": "Verplaats XZ", - "create.schematic.tool.movey": "Verplaats Y", - "create.schematic.tool.rotate": "Draai", - "create.schematic.tool.print": "Print", - "create.schematic.tool.flip": "Omdraaien", - "create.schematic.tool.deploy.description.0": "Verplaatst de structuur naar een locatie.", - "create.schematic.tool.deploy.description.1": "Klik met rechts op de grond om te plaatsen.", - "create.schematic.tool.deploy.description.2": "Houd [Ctrl] ingedrukt om op een afstand te selecteren.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Scroll om de afstand te veranderen.", - "create.schematic.tool.move.description.0": "Verschuift de Bouwtekening Horizontaal", - "create.schematic.tool.move.description.1": "Wijs naar de Bouwtekening and [CTRL]-Scroll om hem te duwen.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Verschuift de Bouwtekening Verticaal", - "create.schematic.tool.movey.description.1": "[CTRL]-Scroll om het omhoog/omlaag te bewegen", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Draait de Bouwtekening om zijn midden..", - "create.schematic.tool.rotate.description.1": "[CTRL]-Scroll om te draaien met 90 graden", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Plaats onmiddelijk de structuur in de wereld.", - "create.schematic.tool.print.description.1": "Klik met rechts om het plaatsen in de wereld te bevestigen.", - "create.schematic.tool.print.description.2": "Deze tool is alleen voor de creatieve modus.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Hiermee draait u de Bouwtekening langs het gezicht dat u selecteert.", - "create.schematic.tool.flip.description.1": "Wijs naar de Bouwtekening en [CTRL]-Scroll om hem om te draaien.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchroniseren...", - "create.schematics.uploadTooLarge": "Jouw Bouwtekening is te groot!", - "create.schematics.maxAllowedSize": "De maximum toegestane grote van een Bouwtekings bestand is:", - - "create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files", - "create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder", - "create.gui.schematicTable.title": "Bouwtekening Tafel", - "create.gui.schematicTable.availableSchematics": "Beschikbare Bouwtekeningen", - "create.gui.schematicTable.noSchematics": "Geen Bouwtekeningen opgeslagen", - "create.gui.schematicTable.uploading": "Uploaden...", - "create.gui.schematicTable.finished": "Upload Klaar!", - "create.gui.schematicannon.title": "Bouwtekeningkannon", - "create.gui.schematicannon.listPrinter": "Materiaal lijst Printer", - "create.gui.schematicannon.gunpowderLevel": "Buskruit op %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Schoten over: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Met backup: %1$s", - "create.gui.schematicannon.optionEnabled": "Momenteel Ingeschakeld", - "create.gui.schematicannon.optionDisabled": "Momenteel Uitgeschakeld", - "create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings", - "create.gui.schematicannon.option.dontReplaceSolid": "Niet vaste blokken vervangen", - "create.gui.schematicannon.option.replaceWithSolid": "Vervang vast met vast", - "create.gui.schematicannon.option.replaceWithAny": "Vervang vast met alles", - "create.gui.schematicannon.option.replaceWithEmpty": "Vervang vast met leeg", - "create.gui.schematicannon.option.skipMissing": "Sla missende blokken over", - "create.gui.schematicannon.option.skipTileEntities": "Bescherm Tile Entities", - "create.gui.schematicannon.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon", - "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", - "create.gui.schematicannon.option.skipMissing.description": "Als het Bouwtekeningkannon niet een geschikt blok kan vinden om te plaatsen gaat hij door bij de volgende locatie.", - "create.gui.schematicannon.option.skipTileEntities.description": "Het Bouwtekeningkannon probeert blokken met data zoals kisten te vermijden", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Het Bouwtekeningkannon zal nooit vaste blokken in zijn gebied vervangen, alleen niet-vaste blokken en lucht", - "create.gui.schematicannon.option.replaceWithSolid.description": "Het Bouwtekeningkannon zal alleen vaste blokken in zijn gebied veranderen, als de bouwtekening een vast blok bevat op zijn locatie.", - "create.gui.schematicannon.option.replaceWithAny.description": "Het Bouwtekeningkannon zal vaste blokken in zijn gebied vervangen als, de bouwtekening een blok op bevat op zijn locatie.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Het Bouwtekeningkannon zal alle blokken in zijn gebied vervangen, inclusief blokken vervangen door lucht.", - - "create.schematicannon.status.idle": "IJdel", - "create.schematicannon.status.ready": "Paraat", - "create.schematicannon.status.running": "Draaiend", - "create.schematicannon.status.finished": "Klaar", - "create.schematicannon.status.paused": "Gepauzeerd", - "create.schematicannon.status.stopped": "Gestopt", - "create.schematicannon.status.noGunpowder": "Buskruit op", - "create.schematicannon.status.targetNotLoaded": "Blok is niet geladen", - "create.schematicannon.status.targetOutsideRange": "Doel is te ver weg", - "create.schematicannon.status.searching": "Aan het zoeken", - "create.schematicannon.status.skipping": "Aan het overslaan", - "create.schematicannon.status.missingBlock": "Missende Blok:", - "create.schematicannon.status.placing": "Aan het plaatsen", - "create.schematicannon.status.clearing": "Blokken aan het verwijderen", - "create.schematicannon.status.schematicInvalid": "Bouwtekening niet valide", - "create.schematicannon.status.schematicNotPlaced": "Bouwtekening niet geplaatst", - "create.schematicannon.status.schematicExpired": "Bouwtekening verlopen", - - "create.materialChecklist": "UNLOCALIZED: Material Checklist", - "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", - "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", - "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", - "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", - "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", - "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", - - "create.item_attributes.placeable": "UNLOCALIZED: is placeable", - "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", - "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", - "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", - "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", - "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", - "create.item_attributes.washable": "UNLOCALIZED: can be Washed", - "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", - "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", - "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", - "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", - "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", - "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", - "create.item_attributes.damaged": "UNLOCALIZED: is damaged", - "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", - "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", - "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", - "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", - "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", - "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", - "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", - "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", - "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", - "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", - "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", - "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", - "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", - "create.gui.attribute_filter.add_attribute": "UNLOCALIZED: Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.attribute_filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", - "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Snelheid eis: %1$s", - "create.tooltip.speedRequirement.none": "Geen", - "create.tooltip.speedRequirement.medium": "Gemiddeld", - "create.tooltip.speedRequirement.high": "Snel", - "create.tooltip.stressImpact": "Stress Impact: %1$s", - "create.tooltip.stressImpact.low": "Laag", - "create.tooltip.stressImpact.medium": "Gemiddeld", - "create.tooltip.stressImpact.high": "Hoog", - "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", - "create.tooltip.capacityProvided": "Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "Klein", - "create.tooltip.capacityProvided.medium": "Gemiddeld", - "create.tooltip.capacityProvided.high": "Groot", - "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", - "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", - - "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", - "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", - "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", - - "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", - - "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", - "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", - "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", - "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", - "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", - - "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", - "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", - "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", - "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", - "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", - "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push 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.contains": "UNLOCALIZED: Contains: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", - "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", - "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", - "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", - "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", - - "create.command.killTPSCommand": "UNLOCALIZED: killtps", - "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", - - "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", - - "block.create.copper_casing.tooltip": "UNLOCALIZED: COPPER CASING", - "block.create.copper_casing.tooltip.summary": "UNLOCALIZED: Robust machine casing with a variety of uses. Safe for decoration.", - "block.create.copper_casing.tooltip.condition1": "UNLOCALIZED: When used on Fluid Pipe", - "block.create.copper_casing.tooltip.behaviour1": "UNLOCALIZED: _Encases_ the _Fluid Pipe_ with the _Copper Casing_. Encased Fluid pipes will _lock their connections_ in place, no longer reacting to changes to neighbouring pipes.", - - "block.create.encased_fluid_pipe.tooltip": "UNLOCALIZED: ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "UNLOCALIZED: A _Fluid Pipe_ encased with the _Copper Casing_.", - - "block.create.seat.tooltip": "UNLOCALIZED: SEAT", - "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.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", - - "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", - - "block.create.fluid_pipe.tooltip": "UNLOCALIZED: FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "UNLOCALIZED: Used for moving _fluids_ around. Needs a _Mechanical Pump_ to get the _fluid_ moving.", - "block.create.fluid_pipe.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.fluid_pipe.tooltip.behaviour1": "UNLOCALIZED: Can connect to _fluid containers_ such as _Tanks_ or _Basins_. Exposed _pipe_ ends can also drain or place fluid blocks. Be careful of leaks!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "UNLOCALIZED: HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "UNLOCALIZED: Used for _placing_ or _draining_ large _fluid bodies_ in the world.", - "block.create.hose_pulley.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.hose_pulley.tooltip.behaviour1": "UNLOCALIZED: _Raises_ or _Lowers_ the hose, location of the hose determines up to which _height extraction_ or _filling_ will act.", - "block.create.hose_pulley.tooltip.condition2": "UNLOCALIZED: When Fluids pulled from Pulley", - "block.create.hose_pulley.tooltip.behaviour2": "UNLOCALIZED: Starts _taking fluid_ blocks from the body the hose end was lowered into. Very _large bodies_ of fluids will be _considered infinite_.", - "block.create.hose_pulley.tooltip.condition3": "UNLOCALIZED: When Fluids pushed to Pulley", - "block.create.hose_pulley.tooltip.behaviour3": "UNLOCALIZED: Starts _filling fluid_ into the world _up to_ the _hose_ ends' _height_.", - - "block.create.fluid_tank.tooltip": "UNLOCALIZED: FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "UNLOCALIZED: _Stores_ all your favourite _fluids_. Scales in width and height.", - "block.create.fluid_tank.tooltip.condition1": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_tank.tooltip.behaviour1": "UNLOCALIZED: Changes the optional window", - - "block.create.creative_fluid_tank.tooltip": "UNLOCALIZED: CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "UNLOCALIZED: This _Fluid Tank_ allows infinite replication of any Fluid. Scales in width and height.", - "block.create.creative_fluid_tank.tooltip.condition1": "UNLOCALIZED: When Fluid in Tank", - "block.create.creative_fluid_tank.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this tank will provide an _endless supply_ of the fluid specified. Fluids _inserted_ into this tank will be _voided._", - "block.create.creative_fluid_tank.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.creative_fluid_tank.tooltip.behaviour2": "UNLOCALIZED: Changes the optional window", - - "block.create.fluid_valve.tooltip": "UNLOCALIZED: FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "UNLOCALIZED: Halts the flow of fluid down a pipe.", - "block.create.fluid_valve.tooltip.condition1": "UNLOCALIZED: Controllable flow", - "block.create.fluid_valve.tooltip.behaviour1": "UNLOCALIZED: Applied _rotational force_ will force the _valve_ to close, ceasing the flow of _fluids_. Reverse the direction of the _rotational force_ to re-open the valve.", - - "block.create.mechanical_pump.tooltip": "UNLOCALIZED: MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "UNLOCALIZED: Takes _rotational force_ and uses it to move _fluid_ along a _pipe_. Has a maximum range of effect in both directions. (16 blocks by default)", - "block.create.mechanical_pump.tooltip.condition1": "UNLOCALIZED: Fluid Flow", - "block.create.mechanical_pump.tooltip.behaviour1": "UNLOCALIZED: Applied _rotational force_ creates pressure that forces _fluid_ through the _pipe_ network. Reverse the direction of the _rotational force_ to switch the direction that the _fluid_ flows.", - "block.create.mechanical_pump.tooltip.control1": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.mechanical_pump.tooltip.action1": "UNLOCALIZED: Reverses the direction of the _pump_, switching the default direction of the flow", - - "block.create.smart_fluid_pipe.tooltip": "UNLOCALIZED: SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "UNLOCALIZED: A _fluid pipe_ with a filter. Can specify which _fluids_ pass through.", - "block.create.smart_fluid_pipe.tooltip.condition1": "UNLOCALIZED: When Fluids are pushed into it", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "UNLOCALIZED: Smart pipes receiving fluid that does not match its filter will block the flow.", - "block.create.smart_fluid_pipe.tooltip.condition2": "UNLOCALIZED: When adjacent to fluid container", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Smart pipes _starting_ a _flow_ from any container will only extract fluids that _match_ its _filter._", - - "block.create.spout.tooltip": "UNLOCALIZED: SPOUT", - "block.create.spout.tooltip.summary": "UNLOCALIZED: An injector for refilling your _fluid items._", - "block.create.spout.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.spout.tooltip.behaviour1": "UNLOCALIZED: When a _fluid container item_ such as a _bucket_ or _bottle_ is placed underneath, the spout will attempt to refill it with it's own stored _fluid_.", - "block.create.spout.tooltip.condition2": "UNLOCALIZED: Fluid Automation", - "block.create.spout.tooltip.behaviour2": "UNLOCALIZED: The spout placed above a _belt_ or _depot_ will react automatically with a _fluid container item_ that passes beneath it.", - - "block.create.item_drain.tooltip": "UNLOCALIZED: ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "UNLOCALIZED: A grated depot for emptying your _fluid items._", - "block.create.item_drain.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.item_drain.tooltip.behaviour1": "UNLOCALIZED: When a _fluid container item_ such as a _bucket_ or _bottle_ is inserted from the side, the drain will attempt to empty it into its own _fluid container_. The item will then be ejected on the opposite side.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRIE STAF", - "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt uw blokplaatsing perfect over de geconfigureerde vlakken.", - "item.create.wand_of_symmetry.tooltip.condition1": "Waneer in de Actiebalk", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Blijft actief", - "item.create.wand_of_symmetry.tooltip.control1": "R-Klik op de Grond", - "item.create.wand_of_symmetry.tooltip.action1": "_Creëerd_ of _Beweegt_ de Spiegel", - "item.create.wand_of_symmetry.tooltip.control2": "R-Klik in de Lucht", - "item.create.wand_of_symmetry.tooltip.action2": "_Verwijderd_ de actieve Spiegel", - "item.create.wand_of_symmetry.tooltip.control3": "R-Klik terwijl je Sluipt", - "item.create.wand_of_symmetry.tooltip.action3": "Opent de _Configuratie_ _Interface_", - - "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", - "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", - "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", - "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", - "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", - "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", - "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_", - - "item.create.tree_fertilizer.tooltip": "BOOM MEST", - "item.create.tree_fertilizer.tooltip.summary": "Een krachtige combinatie van mineralen geschikt voor de meest voorkomende typen bomen.", - "item.create.tree_fertilizer.tooltip.condition1": "Wanneer gebruikt op Kiemplanten", - "item.create.tree_fertilizer.tooltip.behaviour1": "Groeit bomen onafhankelijk van beschikbare ruimte", - - "item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.", - "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", - "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - - "item.create.filter.tooltip": "UNLOCALIZED: FILTER", - "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", - "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - - "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", - "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - - "item.create.empty_schematic.tooltip": "LEGE BOUWTEKENING", - "item.create.empty_schematic.tooltip.summary": "Bruikbaar als ingredient in recepten en voor het schrijven aan de _BOUWTEKENING_ _TAFEL._", - - "item.create.schematic.tooltip": "BOUWTEKENING", - "item.create.schematic.tooltip.summary": "Bevat een structuur die gepositioneerd en geplaatst van worden in de wereld. Positineer het Hologram als gewilt en gebruik een _BOUWTEKENINGKANNON_ om het te bouwen.", - "item.create.schematic.tooltip.condition1": "Wanneer ingedrukt", - "item.create.schematic.tooltip.behaviour1": "Kan gepositioneerd worden met de knoppen op het scherm", - "item.create.schematic.tooltip.control1": "R-Klik terwijl je sluipt", - "item.create.schematic.tooltip.action1": "Opent een_Interface_ voor het invullen van preciese _coordinaten._", - - "item.create.schematic_and_quill.tooltip": "BOUWTEKENING EN VEER", - "item.create.schematic_and_quill.tooltip.summary": "Bruikbaar om een contructie in je wereld op te slaan naar een .nbt bestand.", - "item.create.schematic_and_quill.tooltip.condition1": "Stap 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Selecteer twee hoekpunten met R-Klik", - "item.create.schematic_and_quill.tooltip.condition2": "Stap 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scroll_ op de zijden om de groote aan te passen. R-Klik nogmaals om op te slaan.", - "item.create.schematic_and_quill.tooltip.control1": "R-Klik", - "item.create.schematic_and_quill.tooltip.action1": "Selecteer een hoekpunt / opslaan bevestigen", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl Ingedrukt houden", - "item.create.schematic_and_quill.tooltip.action2": "Selecteer punten in _de lucht._ _Scroll_ om de afstand aan te passen.", - "item.create.schematic_and_quill.tooltip.control3": "R-Klik terwijl je sluipt", - "item.create.schematic_and_quill.tooltip.action3": "_Resets_ en verwijderd de selectie.", - - "block.create.schematicannon.tooltip": "BOUWTEKENINGKANNON", - "block.create.schematicannon.tooltip.summary": "Schiet blokken om een gepostioneerde _Bouwtekening_ in de Wereld te creëeren. Gebruikt blokken uit naastgelegen inventarissen en _Buskruit_ als brandstof.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "BOUWTEKENING TAFEL", - "block.create.schematic_table.tooltip.summary": "Schrijft opgeslagen bouwtekeningen op een _Lege_ _Bouwtekening_", - "block.create.schematic_table.tooltip.condition1": "Wanneer voorzien van een lege Bouwtekening", - "block.create.schematic_table.tooltip.behaviour1": "Uploadt een gekozen bestand uit uw bouwtekeningenmap", - - "item.create.goggles.tooltip": "BRIL", - "item.create.goggles.tooltip.summary": "Een bril om je visie te augmenteren met _kinetische_ _informatie._", - "item.create.goggles.tooltip.condition1": "Wanneer gedragen", - "item.create.goggles.tooltip.behaviour1": "Laat _gekleurde_ _indicaties_ zien die corresponderen met de _Snelheid_ van een geplaatst kinetisch onderdeel.", - "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", - "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", - "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", - "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", - "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates components_ toward or away from the face with which you interacted.", - "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", - "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles Kinetic components_ and places them back in _your inventory_.", - - "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", - "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", - - "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping track of time_.", - "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", - - "block.create.turntable.tooltip": "DRAAISCHIJF", - "block.create.turntable.tooltip.summary": "Verandert _Rotatiekracht_ in verfijnde bewegingsziekte.", - - "block.create.portable_fluid_interface.tooltip": "UNLOCALIZED: PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving fluids_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley. Two meeting interfaces have to _face each other_ and be spaced _1-2 blocks apart_.", - "block.create.portable_fluid_interface.tooltip.condition1": "UNLOCALIZED: While Moving", - "block.create.portable_fluid_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _portable storage interfaces_ to transfer fluids to or from the contraption. Pipes inserting into or extracting from the _Stationary Interface_ will interact with the tanks on the contraption _directly._ The structure will briefly stall as Fluids are exchanged.", - "block.create.portable_fluid_interface.tooltip.condition2": "UNLOCALIZED: When Powered by Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "UNLOCALIZED: _Disengages_ any active connection immediately.", - - "block.create.stockpile_switch.tooltip": "VOORRAAD SCHAKELAAR", - "block.create.stockpile_switch.tooltip.summary": "Schakelt een Redstone signaal op basis van de _Opslagruimte_ in de aangesloten Container.", - "block.create.stockpile_switch.tooltip.condition1": "Wanneer onder de laagste limiet", - "block.create.stockpile_switch.tooltip.behaviour1": "Stopt met het aanbieden van _Redstone_ _Kracht_", - - "block.create.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ inside _containers_ and _conveyors_ matching a configured _filter_. While the observed _inventory_, _belt_ or _chute contains_ a matching item, this component will emit a _Redstone Signal_. When an observed _funnel transfers_ a matching item, this component will emit a _Redstone Pulse_.", - - "block.create.adjustable_crate.tooltip": "FLEXKRAT", - "block.create.adjustable_crate.tooltip.summary": "Met deze _Opslag_ _Container_ kan de capaciteit handmatig worden geregeld. Het kan tot _16_ _Stapels_ van elk item bevatten", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "CREATIEF KRAT", - "block.create.creative_crate.tooltip.summary": "Bied een eindloze vooraad blokken aan een aangeloten _Bouwtekeningkannon_", - "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.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", - "item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", - "item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", - - "item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._", - - "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed light_.", - - "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in the void_.", - - "item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Houdt dit object buiten bereik van kinderen.", - "create.tooltip.randomWipDescription1": "Een baby panda sterft elke keer als je dit object gebruikt.", - "create.tooltip.randomWipDescription2": "Gebruikt dit object op eigen risico.", - "create.tooltip.randomWipDescription3": "Niks te zien hier, vervolg uw weg.", - "create.tooltip.randomWipDescription4": "Dit object zal zichzelf vernietigen in 10 seconden.", - "create.tooltip.randomWipDescription5": "Geloof me, het is nuteloos.", - "create.tooltip.randomWipDescription6": "Door dit object te gebruiken stemt u in met onze disclaimer en gaat u akkoord met de algemene voorwaarden.", - "create.tooltip.randomWipDescription7": "Deze is misschien niet geschikt voor jou.", - "create.tooltip.randomWipDescription8": "Gebruikt het en je zal meteen spijt hebben.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json deleted file mode 100644 index d7397f94b..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ /dev/null @@ -1,2127 +0,0 @@ -{ - "_": "Missing Localizations: 26", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "Akacjowe okno", - "block.create.acacia_window_pane": "Akacjowa szyba okienna", - "block.create.adjustable_chain_gearshift": "Regulowany przekładnik łańcuchowy", - "block.create.adjustable_crate": "Regulowana skrzynka", - "block.create.adjustable_pulse_repeater": "Regulowany przekaźnik pulsu", - "block.create.adjustable_repeater": "Regulowany przekaźnik", - "block.create.analog_lever": "Dźwignia analogowa", - "block.create.andesite_belt_funnel": "Andezytowy lejek taśmowy", - "block.create.andesite_bricks": "Andezytowe cegły", - "block.create.andesite_bricks_slab": "Andezytowa ceglana płyta", - "block.create.andesite_bricks_stairs": "Andezytowe ceglane schody", - "block.create.andesite_bricks_wall": "Andezytowy ceglany murek", - "block.create.andesite_casing": "Andezytowa obudowa", - "block.create.andesite_cobblestone": "Andezytowy bruk", - "block.create.andesite_cobblestone_slab": "Andezytowa brukowa płyta", - "block.create.andesite_cobblestone_stairs": "Andezytowe brukowe schody", - "block.create.andesite_cobblestone_wall": "Andezytowy brukowy murek", - "block.create.andesite_encased_shaft": "Andezytowy izolowany wał", - "block.create.andesite_funnel": "Andezytowy lejek", - "block.create.andesite_pillar": "Andezytowy filar", - "block.create.andesite_tunnel": "Andezytowy tunel", - "block.create.basin": "Tygiel", - "block.create.belt": "Taśma", - "block.create.birch_window": "Brzozowe okno", - "block.create.birch_window_pane": "Brzozowa szyba okienna", - "block.create.black_sail": "Czarny żagiel", - "block.create.black_seat": "Czarne siedzenie", - "block.create.black_valve_handle": "Czarne pokrętło", - "block.create.blaze_burner": "Płomienny palnik", - "block.create.blue_sail": "Niebieski żagiel", - "block.create.blue_seat": "Niebieskie siedzenie", - "block.create.blue_valve_handle": "Niebieskie pokrętło", - "block.create.brass_belt_funnel": "Mosiężny lejek taśmowy", - "block.create.brass_block": "Blok mosiądzu", - "block.create.brass_casing": "Mosiężna obudowa", - "block.create.brass_encased_shaft": "Mosiężny izolowany wał", - "block.create.brass_funnel": "Mosiężny lejek", - "block.create.brass_tunnel": "Mosiężny tunel", - "block.create.brown_sail": "Brązowy żagiel", - "block.create.brown_seat": "Brązowe siedzenie", - "block.create.brown_valve_handle": "Brązowe pokrętło", - "block.create.cart_assembler": "Monter wagoników", - "block.create.chiseled_dark_scoria": "Rzeźbiony ciemny żużel", - "block.create.chiseled_dolomite": "Rzeźbiony dolomit", - "block.create.chiseled_gabbro": "Rzeźbione gabro", - "block.create.chiseled_limestone": "Rzeźbiony wapień", - "block.create.chiseled_scoria": "Rzeźbiony żużel", - "block.create.chiseled_weathered_limestone": "Rzeźbiony zwietrzały wapień", - "block.create.chocolate": "Czekolada", - "block.create.chute": "Zsyp", - "block.create.clockwork_bearing": "Mechanizm zegarowy", - "block.create.clutch": "Sprzęgło", - "block.create.cogwheel": "Koło zębate", - "block.create.content_observer": "Detektor zawartości", - "block.create.controller_rail": "Tory sterujące", - "block.create.copper_backtank": "Miedziany zbiornik w plecaku", - "block.create.copper_block": "Blok miedzi", - "block.create.copper_casing": "Miedziana Obudowa", - "block.create.copper_ore": "Ruda miedzi", - "block.create.copper_shingles": "Miedziane dachówki", - "block.create.copper_tiles": "Miedziane kafelki", - "block.create.copper_valve_handle": "Miedziane pokrętło", - "block.create.creative_crate": "Kreatywna skrzynka", - "block.create.creative_fluid_tank": "Kreatywny zbiornik", - "block.create.creative_motor": "Kreatywny silnik", - "block.create.crimson_window": "Szkarłatne okno", - "block.create.crimson_window_pane": "Szkarłatna szyba okienna", - "block.create.crushing_wheel": "Koło kruszące", - "block.create.crushing_wheel_controller": "Sterownik koła kruszącego", - "block.create.cuckoo_clock": "Zegar z kukułką", - "block.create.cyan_sail": "Błękitny żagiel", - "block.create.cyan_seat": "Błękitne siedzenie", - "block.create.cyan_valve_handle": "Błękitne pokrętło", - "block.create.dark_oak_window": "Ciemnodębowe okno", - "block.create.dark_oak_window_pane": "Ciemnodębowa szyba okienna", - "block.create.dark_scoria": "Ciemny żużel", - "block.create.dark_scoria_bricks": "Ciemne żużlowe cegły", - "block.create.dark_scoria_bricks_slab": "Ciemna żużlowa ceglana płyta", - "block.create.dark_scoria_bricks_stairs": "Ciemne żużlowe ceglane schody", - "block.create.dark_scoria_bricks_wall": "Ciemny żużlowy ceglany murek", - "block.create.dark_scoria_cobblestone": "Ciemny żużlowy bruk", - "block.create.dark_scoria_cobblestone_slab": "Ciemna żużlowa płyta", - "block.create.dark_scoria_cobblestone_stairs": "Ciemne żużlowe schody", - "block.create.dark_scoria_cobblestone_wall": "Ciemny żużlowy murek", - "block.create.dark_scoria_pillar": "Ciemny żużlowy filar", - "block.create.deployer": "Aplikator", - "block.create.depot": "Składnica", - "block.create.diorite_bricks": "Diorytowe cegły", - "block.create.diorite_bricks_slab": "Diorytowa ceglana płyta", - "block.create.diorite_bricks_stairs": "Diorytowe ceglane schody", - "block.create.diorite_bricks_wall": "Diorytowy ceglany murek", - "block.create.diorite_cobblestone": "Diorytowy bruk", - "block.create.diorite_cobblestone_slab": "Diorytowa brukowa płyta", - "block.create.diorite_cobblestone_stairs": "Diorytowe brukowe schody", - "block.create.diorite_cobblestone_wall": "Diorytowy brukowy murek", - "block.create.diorite_pillar": "Diorytowy filar", - "block.create.dolomite": "Dolomit", - "block.create.dolomite_bricks": "Dolomitowe cegły", - "block.create.dolomite_bricks_slab": "Dolomitowa ceglana płyta", - "block.create.dolomite_bricks_stairs": "Dolomitowe ceglane schody", - "block.create.dolomite_bricks_wall": "Dolomitowy ceglany murek", - "block.create.dolomite_cobblestone": "Dolomitowy bruk", - "block.create.dolomite_cobblestone_slab": "Dolomitowa brukowa płyta", - "block.create.dolomite_cobblestone_stairs": "Dolomitowe brukowe schody", - "block.create.dolomite_cobblestone_wall": "Dolomitowy brukowy murek", - "block.create.dolomite_pillar": "Dolomitowy filar", - "block.create.encased_chain_drive": "Izolowany przekaźnik łańcuchowy", - "block.create.encased_fan": "Izolowany wiatrak", - "block.create.encased_fluid_pipe": "Izolowana rura", - "block.create.fancy_andesite_bricks": "Eleganckie andezytowe cegły", - "block.create.fancy_andesite_bricks_slab": "Elegancka andezytowa ceglana płyta", - "block.create.fancy_andesite_bricks_stairs": "Eleganckie andezytowe ceglane schody", - "block.create.fancy_andesite_bricks_wall": "Elegancki andezytowy ceglany murek", - "block.create.fancy_dark_scoria_bricks": "Eleganckie ciemnożużlowe cegły", - "block.create.fancy_dark_scoria_bricks_slab": "Elegancka ciemnożużlowa ceglana płyta", - "block.create.fancy_dark_scoria_bricks_stairs": "Eleganckie ciemnożużlowe ceglane schody", - "block.create.fancy_dark_scoria_bricks_wall": "Elegancki ciemnożużlowy ceglany murek", - "block.create.fancy_diorite_bricks": "Eleganckie diorytowe cegły", - "block.create.fancy_diorite_bricks_slab": "Elegancka diorytowa ceglana płyta", - "block.create.fancy_diorite_bricks_stairs": "Eleganckie diorytowe ceglane schody", - "block.create.fancy_diorite_bricks_wall": "Elegancki diorytowy ceglany murek", - "block.create.fancy_dolomite_bricks": "Eleganckie dolomitowe cegły", - "block.create.fancy_dolomite_bricks_slab": "Elegancka dolomitowa ceglana płyta", - "block.create.fancy_dolomite_bricks_stairs": "Eleganckie dolomitowe ceglane schody", - "block.create.fancy_dolomite_bricks_wall": "Elegancki dolomitowy ceglany murek", - "block.create.fancy_gabbro_bricks": "Eleganckie gabrowe cegły", - "block.create.fancy_gabbro_bricks_slab": "Elegancka gabrowa ceglana płyta", - "block.create.fancy_gabbro_bricks_stairs": "Eleganckie gabrowe ceglane schody", - "block.create.fancy_gabbro_bricks_wall": "Elegancki gabrowy ceglany murek", - "block.create.fancy_granite_bricks": "Eleganckie granitowe cegły", - "block.create.fancy_granite_bricks_slab": "Elegancka granitowa ceglana płyta", - "block.create.fancy_granite_bricks_stairs": "Eleganckie granitowe ceglane schody", - "block.create.fancy_granite_bricks_wall": "Elegancki granitowy ceglany murek", - "block.create.fancy_limestone_bricks": "Eleganckie wapienne cegły", - "block.create.fancy_limestone_bricks_slab": "Elegancka wapienna ceglana płyta", - "block.create.fancy_limestone_bricks_stairs": "Eleganckie wapienne ceglane schody", - "block.create.fancy_limestone_bricks_wall": "Elegancki wapienny ceglany murek", - "block.create.fancy_scoria_bricks": "Eleganckie żużlowe cegły", - "block.create.fancy_scoria_bricks_slab": "Elegancka żużlowa ceglana płyta", - "block.create.fancy_scoria_bricks_stairs": "Eleganckie żużlowe ceglane schody", - "block.create.fancy_scoria_bricks_wall": "Elegancki żużlowy ceglany murek", - "block.create.fancy_weathered_limestone_bricks": "Eleganckie zwietrzałe wapienne cegły", - "block.create.fancy_weathered_limestone_bricks_slab": "Elegancka zwietrzała wapienna ceglana płyta", - "block.create.fancy_weathered_limestone_bricks_stairs": "Eleganckie zwietrzałe wapienne ceglane schody", - "block.create.fancy_weathered_limestone_bricks_wall": "Elegancki zwietrzały wapienny ceglany murek", - "block.create.fluid_pipe": "Rura", - "block.create.fluid_tank": "Zbiornik", - "block.create.fluid_valve": "Zawór", - "block.create.flywheel": "Koło zamachowe", - "block.create.framed_glass": "Oprawione okno", - "block.create.framed_glass_pane": "Oprawiona szyba", - "block.create.furnace_engine": "Silnik spalinowy", - "block.create.gabbro": "Gabro", - "block.create.gabbro_bricks": "Gabrowe cegły", - "block.create.gabbro_bricks_slab": "Gabrowa ceglana płyta", - "block.create.gabbro_bricks_stairs": "Gabrowe ceglane schody", - "block.create.gabbro_bricks_wall": "Gabrowy ceglany murek", - "block.create.gabbro_cobblestone": "Gabrowy bruk", - "block.create.gabbro_cobblestone_slab": "Gabrowa brukowa płyta", - "block.create.gabbro_cobblestone_stairs": "Gabrowe brukowe schody", - "block.create.gabbro_cobblestone_wall": "Gabrowy brukowy murek", - "block.create.gabbro_pillar": "Gabrowy filar", - "block.create.gantry_carriage": "Przenośnik suwnicowy", - "block.create.gantry_shaft": "Suwnica", - "block.create.gearbox": "Przekładnia", - "block.create.gearshift": "Przekładnik", - "block.create.glass_fluid_pipe": "Szklana rura", - "block.create.granite_bricks": "Granitowe cegły", - "block.create.granite_bricks_slab": "Granitowa ceglana płyta", - "block.create.granite_bricks_stairs": "Granitowe ceglane schody", - "block.create.granite_bricks_wall": "Granitowy ceglany murek", - "block.create.granite_cobblestone": "Granitowy bruk", - "block.create.granite_cobblestone_slab": "Granitowa brukowa płyta", - "block.create.granite_cobblestone_stairs": "Granitowe brukowe schody", - "block.create.granite_cobblestone_wall": "Granitowy brukowy murek", - "block.create.granite_pillar": "Granitowy filar", - "block.create.gray_sail": "Szary żagiel", - "block.create.gray_seat": "Szare siedzenie", - "block.create.gray_valve_handle": "Szare pokrętło", - "block.create.green_sail": "Zielony żagiel", - "block.create.green_seat": "Zielone siedzenie", - "block.create.green_valve_handle": "Zielone pokrętło", - "block.create.hand_crank": "Ręczna korba", - "block.create.honey": "Miód", - "block.create.horizontal_framed_glass": "Poziome oprawione szkło", - "block.create.horizontal_framed_glass_pane": "Pozioma oprawiona szyba", - "block.create.hose_pulley": "Krążek z wężem", - "block.create.item_drain": "Odpływ", - "block.create.jungle_window": "Dżunglowe okno", - "block.create.jungle_window_pane": "Dżunglowa szyba okienna", - "block.create.large_cogwheel": "Duże koło zębate", - "block.create.layered_andesite": "Warstwowy andezyt", - "block.create.layered_dark_scoria": "Warstwowy ciemny żużel", - "block.create.layered_diorite": "Warstwowy dioryt", - "block.create.layered_dolomite": "Warstwowy dolomit", - "block.create.layered_gabbro": "Warstwowe gabro", - "block.create.layered_granite": "Warstwowy granit", - "block.create.layered_limestone": "Warstwowy wapień", - "block.create.layered_scoria": "Warstwowy żużel", - "block.create.layered_weathered_limestone": "Warstwowy zwietrzały wapień", - "block.create.light_blue_sail": "Jasnoniebieski żagiel", - "block.create.light_blue_seat": "Jasnoniebieskie siedzenie", - "block.create.light_blue_valve_handle": "Jasnoniebieskie pokrętło", - "block.create.light_gray_sail": "Jasnoszary żagiel", - "block.create.light_gray_seat": "Jasnoszare siedzenie", - "block.create.light_gray_valve_handle": "Jasnoszare pokrętło", - "block.create.lime_sail": "Jasnozielony żagiel", - "block.create.lime_seat": "Jasnozielone siedzenie", - "block.create.lime_valve_handle": "Jasnozielone pokrętło", - "block.create.limesand": "Piasek wapienny", - "block.create.limestone": "Wapień", - "block.create.limestone_bricks": "Wapienne cegły", - "block.create.limestone_bricks_slab": "Wapienna ceglana płyta", - "block.create.limestone_bricks_stairs": "Wapienne ceglane schody", - "block.create.limestone_bricks_wall": "Wapienny ceglany murek", - "block.create.limestone_cobblestone": "Wapienny bruk", - "block.create.limestone_cobblestone_slab": "Wapienna brukowa płyta", - "block.create.limestone_cobblestone_stairs": "Wapienne brukowe schody", - "block.create.limestone_cobblestone_wall": "Wapienny brukowy murek", - "block.create.limestone_pillar": "Wapienny filar", - "block.create.linear_chassis": "Stelaż liniowy", - "block.create.lit_blaze_burner": "Zapalony płomienny palnik", - "block.create.magenta_sail": "Karmazynowy żagiel", - "block.create.magenta_seat": "Karmazynowe siedzenie", - "block.create.magenta_valve_handle": "Karmazynowe pokrętło", - "block.create.mechanical_arm": "Ramie mechaniczne", - "block.create.mechanical_bearing": "Mechaniczne łożysko", - "block.create.mechanical_crafter": "Mechaniczny stół rzemieślniczy", - "block.create.mechanical_drill": "Mechaniczne wiertło", - "block.create.mechanical_harvester": "Mechaniczna żniwiarka", - "block.create.mechanical_mixer": "Mechaniczny mikser", - "block.create.mechanical_piston": "Mechaniczny tłok", - "block.create.mechanical_piston_head": "Głowica mechanicznego tłoka", - "block.create.mechanical_plough": "Mechaniczny pług", - "block.create.mechanical_press": "Mechaniczna prasa", - "block.create.mechanical_pump": "Mechaniczna pompa", - "block.create.mechanical_saw": "Mechaniczna piła", - "block.create.metal_bracket": "Metalowy wspornik", - "block.create.millstone": "Młynek", - "block.create.minecart_anchor": "Kotwica wagonikowa", - "block.create.mossy_andesite": "Omszony andezyt", - "block.create.mossy_dark_scoria": "Zamszony ciemny żużel", - "block.create.mossy_diorite": "Zamszony dioryt", - "block.create.mossy_dolomite": "Zamszony dolomit", - "block.create.mossy_gabbro": "Zamszone gabro", - "block.create.mossy_granite": "Zamszony granit", - "block.create.mossy_limestone": "Zamszony wapień", - "block.create.mossy_scoria": "Zamszony żużel", - "block.create.mossy_weathered_limestone": "Zamszony zwietrzały wapień", - "block.create.mysterious_cuckoo_clock": "Zegar z kukułką", - "block.create.natural_scoria": "Naturalny żużel", - "block.create.nixie_tube": "Lampa cyfrowa", - "block.create.nozzle": "Dysza", - "block.create.oak_window": "Dębowe okno", - "block.create.oak_window_pane": "Dębowa szyba okienna", - "block.create.orange_sail": "Pomarańczowy żagiel", - "block.create.orange_seat": "Pomarańczowe siedzenie", - "block.create.orange_valve_handle": "Pomarańczowe pokrętło", - "block.create.ornate_iron_window": "Ozdobne żelazne okno", - "block.create.ornate_iron_window_pane": "Ozdobna żelazne szyba okienna", - "block.create.overgrown_andesite": "Zarośnięty andezyt", - "block.create.overgrown_dark_scoria": "Zarośnięty ciemny żużel", - "block.create.overgrown_diorite": "Zarośnięty dioryt", - "block.create.overgrown_dolomite": "Zarośnięty dolomit", - "block.create.overgrown_gabbro": "Zarośnięte gabro", - "block.create.overgrown_granite": "Zarośnięty granit", - "block.create.overgrown_limestone": "Zarośnięty wapień", - "block.create.overgrown_scoria": "Zarośnięty żużel", - "block.create.overgrown_weathered_limestone": "Zarośnięty zwietrzały wapień", - "block.create.paved_andesite": "Wygładzony andezyt", - "block.create.paved_andesite_slab": "Wygładzona andezytowa płyta", - "block.create.paved_andesite_stairs": "Wygładzone andezytowe schody", - "block.create.paved_andesite_wall": "Wygładzony andezytowy murek", - "block.create.paved_dark_scoria": "Wygładzony ciemny żużel", - "block.create.paved_dark_scoria_slab": "Wygładzona ciemnożużlowa płyta", - "block.create.paved_dark_scoria_stairs": "Wygładzone ciemnożużlowe schody", - "block.create.paved_dark_scoria_wall": "Wygładzony ciemnożużlowy murek", - "block.create.paved_diorite": "Wygładzony dioryt", - "block.create.paved_diorite_slab": "Wygładzona diorytowa płyta", - "block.create.paved_diorite_stairs": "Wygładzone diorytowe schody", - "block.create.paved_diorite_wall": "Wygładzony diorytowy murek", - "block.create.paved_dolomite": "Wygładzony dolomit", - "block.create.paved_dolomite_slab": "Wygładzona dolomitowa płyta", - "block.create.paved_dolomite_stairs": "Wygładzone dolomitowe schody", - "block.create.paved_dolomite_wall": "Wygładzony dolomitowy murek", - "block.create.paved_gabbro": "Wygładzone gabro", - "block.create.paved_gabbro_slab": "Wygładzona gabrowa płyta", - "block.create.paved_gabbro_stairs": "Wygładzone gabrowe schody", - "block.create.paved_gabbro_wall": "Wygładzony gabrowy murek", - "block.create.paved_granite": "Wygładzony granit", - "block.create.paved_granite_slab": "Wygładzona granitowa płyta", - "block.create.paved_granite_stairs": "Wygładzone granitowe schody", - "block.create.paved_granite_wall": "Wygładzony granitowy murek", - "block.create.paved_limestone": "Wygładzony wapień", - "block.create.paved_limestone_slab": "Wygładzona wapienna płyta", - "block.create.paved_limestone_stairs": "Wygładzone wapienne schody", - "block.create.paved_limestone_wall": "Wygładzony wapienny murek", - "block.create.paved_scoria": "Wygładzony żużel", - "block.create.paved_scoria_slab": "Wygładzona żużlowa płyta", - "block.create.paved_scoria_stairs": "Wygładzone żużlowe schody", - "block.create.paved_scoria_wall": "Wygładzony żużlowy murek", - "block.create.paved_weathered_limestone": "Wygładzony zwietrzały wapień", - "block.create.paved_weathered_limestone_slab": "Wygładzona zwietrzała wapienna płyta", - "block.create.paved_weathered_limestone_stairs": "Wygładzone zwietrzałe wapienne schody", - "block.create.paved_weathered_limestone_wall": "Wygładzony zwietrzały wapienny murek", - "block.create.pink_sail": "Różowy żagiel", - "block.create.pink_seat": "Różowe siedzenie", - "block.create.pink_valve_handle": "Różowe pokrętło", - "block.create.piston_extension_pole": "Przedłużenie tłoka", - "block.create.polished_dark_scoria": "Wypolerowany ciemny żużel", - "block.create.polished_dark_scoria_slab": "Wypolerowana ciemnożużlowa płyta", - "block.create.polished_dark_scoria_stairs": "Wypolerowane ciemnożużlowe schody", - "block.create.polished_dark_scoria_wall": "Wypolerowany ciemnożużlowy murek", - "block.create.polished_dolomite": "Wypolerowany dolomit", - "block.create.polished_dolomite_slab": "Wypolerowana dolomitowa płyta", - "block.create.polished_dolomite_stairs": "Wypolerowane dolomitowe schody", - "block.create.polished_dolomite_wall": "Wypolerowany dolomitowy murek", - "block.create.polished_gabbro": "Wypolerowane gabro", - "block.create.polished_gabbro_slab": "Wypolerowana gabrowa płyta", - "block.create.polished_gabbro_stairs": "Wypolerowane gabrowe schody", - "block.create.polished_gabbro_wall": "Wypolerowany gabrowy murek", - "block.create.polished_limestone": "Wypolerowany wapień", - "block.create.polished_limestone_slab": "Wypolerowana wapienna płyta", - "block.create.polished_limestone_stairs": "Wypolerowane wapienne schody", - "block.create.polished_limestone_wall": "Wypolerowany wapienny murek", - "block.create.polished_scoria": "Wypolerowany żużel", - "block.create.polished_scoria_slab": "Wypolerowana żużlowa płyta", - "block.create.polished_scoria_stairs": "Wypolerowane żużlowe schody", - "block.create.polished_scoria_wall": "Wypolerowany żużlowy murek", - "block.create.polished_weathered_limestone": "Wypolerowany zwietrzały wapień", - "block.create.polished_weathered_limestone_slab": "Wypolerowana zwietrzała wapienna płyta", - "block.create.polished_weathered_limestone_stairs": "Wypolerowane zwietrzałe wapienne schody", - "block.create.polished_weathered_limestone_wall": "Wypolerowany zwietrzały wapienny murek", - "block.create.portable_fluid_interface": "Przenośny interfejs płynów", - "block.create.portable_storage_interface": "Przenośny interfejs magazynu", - "block.create.powered_latch": "Zaawansowany zasilany przełącznik", - "block.create.powered_toggle_latch": "Zasilany przełącznik", - "block.create.pulley_magnet": "Krążek z magnesem", - "block.create.pulse_repeater": "Przekaźnik pulsowy", - "block.create.purple_sail": "Fioletowy żagiel", - "block.create.purple_seat": "Fioletowe siedzenie", - "block.create.purple_valve_handle": "Fioletowe pokrętło", - "block.create.radial_chassis": "Stelaż promienisty", - "block.create.red_sail": "Czerwony żagiel", - "block.create.red_seat": "Czerwone siedzenie", - "block.create.red_valve_handle": "Czerwone pokrętło", - "block.create.redstone_contact": "Przełącznik kontaktowy", - "block.create.redstone_link": "Emiter sygnału", - "block.create.refined_radiance_casing": "Świetlista obudowa", - "block.create.reinforced_rail": "Wzmocnione tory", - "block.create.rope": "Lina", - "block.create.rope_pulley": "Krążek z liną", - "block.create.rotation_speed_controller": "Sterownik prędkości obrotu", - "block.create.sail_frame": "Rama żagla", - "block.create.schematic_table": "Stół do planowania", - "block.create.schematicannon": "Schematoarmata", - "block.create.scoria": "Żużel", - "block.create.scoria_bricks": "Żużlowe cegły", - "block.create.scoria_bricks_slab": "Żużlowa ceglana płyta", - "block.create.scoria_bricks_stairs": "Żużlowe ceglane schody", - "block.create.scoria_bricks_wall": "Żużlowy ceglany murek", - "block.create.scoria_cobblestone": "Żużlowy bruk", - "block.create.scoria_cobblestone_slab": "Żużlowa brukowa płyta", - "block.create.scoria_cobblestone_stairs": "Żużlowe brukowe schody", - "block.create.scoria_cobblestone_wall": "Żużlowy brukowy murek", - "block.create.scoria_pillar": "Żużlowy filar", - "block.create.secondary_linear_chassis": "Drugorzędny liniowy stelaż", - "block.create.sequenced_gearshift": "Przekładnik sekwencjonalny", - "block.create.shadow_steel_casing": "Mroczna obudowa", - "block.create.shaft": "Wał", - "block.create.smart_chute": "Inteligentny Zsyp", - "block.create.smart_fluid_pipe": "Inteligentna rura", - "block.create.speedometer": "Prędkościomierz", - "block.create.spout": "Kanister", - "block.create.spruce_window": "Świerkowe okno", - "block.create.spruce_window_pane": "Świerkowa szyba okienna", - "block.create.sticker": "Przyklejacz", - "block.create.sticky_mechanical_piston": "Lepki mechaniczny tłok", - "block.create.stockpile_switch": "Przełącznik zawartościowy", - "block.create.stressometer": "Miernik obciążenia", - "block.create.tiled_glass": "Kafelkowane szkło", - "block.create.tiled_glass_pane": "Kafelkowana szyba", - "block.create.turntable": "Talerz obrotowy", - "block.create.vertical_framed_glass": "Pionowe oprawione szkło", - "block.create.vertical_framed_glass_pane": "Pionowa oprawiona szyba", - "block.create.warped_window": "Spaczone okno", - "block.create.warped_window_pane": "Spaczona szyba okienna", - "block.create.water_wheel": "Koło wodne", - "block.create.weathered_limestone": "Zwietrzały wapień", - "block.create.weathered_limestone_bricks": "Zwietrzałe wapienne cegły", - "block.create.weathered_limestone_bricks_slab": "Zwietrzała wapienna ceglana płyta", - "block.create.weathered_limestone_bricks_stairs": "Zwietrzałe wapienne ceglane schody", - "block.create.weathered_limestone_bricks_wall": "Zwietrzały wapienny ceglany murek", - "block.create.weathered_limestone_cobblestone": "Zwietrzały wapienny bruk", - "block.create.weathered_limestone_cobblestone_slab": "Zwietrzała wapienna brukowa płyta", - "block.create.weathered_limestone_cobblestone_stairs": "Zwietrzałe wapienne brukowe schody", - "block.create.weathered_limestone_cobblestone_wall": "Zwietrzały wapienny brukowy murek", - "block.create.weathered_limestone_pillar": "Zwietrzały wapienny filar", - "block.create.weighted_ejector": "Wyrzutnia odważnikowa", - "block.create.white_sail": "Biały żagiel", - "block.create.white_seat": "Białe siedzenie", - "block.create.white_valve_handle": "Białe pokrętło", - "block.create.windmill_bearing": "Łożysko wiatraka", - "block.create.wooden_bracket": "Drewniany wspornik", - "block.create.yellow_sail": "Żółty żagiel", - "block.create.yellow_seat": "Żółte siedzenie", - "block.create.yellow_valve_handle": "Żółte pokrętło", - "block.create.zinc_block": "Blok cynku", - "block.create.zinc_ore": "Ruda cynku", - "entity.create.contraption": "Maszyna", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "Maszyna suwnicowa", - "entity.create.seat": "Siedzenie", - "entity.create.stationary_contraption": "Maszyna stacjonarna", - "entity.create.super_glue": "Super Glue", - "fluid.create.milk": "Mleko", - "fluid.create.potion": "Mikstura", - "fluid.create.tea": "Herbatka Budowniczego", - "item.create.andesite_alloy": "Stop andezytu", - "item.create.attribute_filter": "Filtr atrybutowy", - "item.create.bar_of_chocolate": "Tabliczka czekolady", - "item.create.belt_connector": "Taśma", - "item.create.blaze_cake": "Płomienne ciasto", - "item.create.blaze_cake_base": "Baza płomiennego ciasta", - "item.create.brass_hand": "Mosiężna dłoń", - "item.create.brass_ingot": "Sztabka mosiądzu", - "item.create.brass_nugget": "Bryłka mosiądzu", - "item.create.brass_sheet": "Arkusz mosiądzu", - "item.create.builders_tea": "Herbatka Budowniczego", - "item.create.chest_minecart_contraption": "Maszyna w wagoniku ze skrzynią", - "item.create.chocolate_bucket": "Wiadro czekolady", - "item.create.chocolate_glazed_berries": "Jagody w czekoladzie", - "item.create.chromatic_compound": "Związek chromatyczny", - "item.create.cinder_flour": "Rozżarzona mąka", - "item.create.copper_backtank": "Miedziany zbiornik w plecaku", - "item.create.copper_ingot": "Sztabka miedzi", - "item.create.copper_nugget": "Bryłka miedzi", - "item.create.copper_sheet": "Arkusz miedzi", - "item.create.crafter_slot_cover": "Przykrywka na slot stołu rzemieślniczego", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "Rozkruszona ruda żelaza", - "item.create.crushed_brass": "Rozkruszony mosiądz", - "item.create.crushed_copper_ore": "Rozkruszona ruda miedzi", - "item.create.crushed_gold_ore": "Rozkruszona ruda złota", - "item.create.crushed_iron_ore": "Rozkruszona ruda żelaza", - "item.create.crushed_lead_ore": "Rozkruszona ruda ołowiu", - "item.create.crushed_nickel_ore": "Rozkruszona ruda niklu", - "item.create.crushed_osmium_ore": "Rozkruszona ruda osmu", - "item.create.crushed_platinum_ore": "Rozkruszona ruda platyny", - "item.create.crushed_quicksilver_ore": "Rozkruszona ruda rtęci", - "item.create.crushed_silver_ore": "Rozkruszona ruda srebra", - "item.create.crushed_tin_ore": "Rozkruszona ruda cyny", - "item.create.crushed_uranium_ore": "Rozkruszona ruda uranu", - "item.create.crushed_zinc_ore": "Rozkruszona ruda cynku", - "item.create.diving_boots": "Buty do nurkowania", - "item.create.diving_helmet": "Hełm do nurkowania", - "item.create.dough": "Ciasto", - "item.create.electron_tube": "Lampa elektronowa", - "item.create.empty_blaze_burner": "Pusty płomienny palnik", - "item.create.empty_schematic": "Pusty schemat", - "item.create.extendo_grip": "Wydłużony Chwytak", - "item.create.filter": "Filtr", - "item.create.furnace_minecart_contraption": "Maszyna w wagoniku z piecem", - "item.create.goggles": "Gogle inżyniera", - "item.create.golden_sheet": "Arkusz złota", - "item.create.handheld_worldshaper": "Ręczny kształter", - "item.create.honey_bucket": "Wiadro miodu", - "item.create.honeyed_apple": "Jabłko w miodzie", - "item.create.integrated_circuit": "Układ scalony", - "item.create.iron_sheet": "Arkusz żelaza", - "item.create.lapis_sheet": "Arkusz lazurytu", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "Maszyna w wagoniku", - "item.create.minecart_coupling": "Łącznik wagoników", - "item.create.polished_rose_quartz": "Wypolerowany kwarc różowy", - "item.create.powdered_obsidian": "Sproszkowany obsydian", - "item.create.propeller": "Śmigło", - "item.create.red_sand_paper": "Czerwony papier ścierny", - "item.create.refined_radiance": "Świetlisty materiał", - "item.create.rose_quartz": "Kwarc różowy", - "item.create.sand_paper": "Papier ścierny", - "item.create.schematic": "Schemat", - "item.create.schematic_and_quill": "Schemat z piórem", - "item.create.shadow_steel": "Mroczna stal", - "item.create.super_glue": "Super Glue", - "item.create.sweet_roll": "Słodka bułka", - "item.create.tree_fertilizer": "Nawóz do drzew", - "item.create.vertical_gearbox": "Pionowa przekładnia", - "item.create.wand_of_symmetry": "Różdżka symetrii", - "item.create.wheat_flour": "Mąka pszenna", - "item.create.whisk": "Trzepaczka", - "item.create.wrench": "Klucz", - "item.create.zinc_ingot": "Sztabka cynku", - "item.create.zinc_nugget": "Bryłka cynku", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Witaj w Create", - "advancement.create.root.desc": "Czas, aby zacząć tworzyć wspaniałe Maszyny!", - "advancement.create.andesite_alloy": "Słynne stopy", - "advancement.create.andesite_alloy.desc": "Materiały z Create mają czasami dziwne nazwy, stop andezytu jest jednym z nich.", - "advancement.create.its_alive": "To żyje!", - "advancement.create.its_alive.desc": "Patrz, jak Twój pierwszy ruchomy komponent się obraca.", - "advancement.create.shifting_gears": "Przekładnia", - "advancement.create.shifting_gears.desc": "Połącz duże koło zębate i małe koło zębate, co pozwoli zmienić prędkość obrotu Twojej maszyny.", - "advancement.create.overstressed": "Przeciążenie", - "advancement.create.overstressed.desc": "Doświadcz limitów obciążenia z pierwszej ręki.", - "advancement.create.belt": "Taśma produkcyjna", - "advancement.create.belt.desc": "Połącz dwa wały tworząc taśmociąg.", - "advancement.create.tunnel": "Światełko w tunelu", - "advancement.create.tunnel.desc": "Ulepsz swój taśmociąg dodając tunel.", - "advancement.create.splitter_tunnel": "Dziel i rządź", - "advancement.create.splitter_tunnel.desc": "Stwórz rozdzielacz przy pomocy kilku mosiężnych tuneli.", - "advancement.create.chute": "Czarna dziura", - "advancement.create.chute.desc": "Postaw zsyp - pionową część taśmociągu.", - "advancement.create.upward_chute": "Powietrzne porwanie", - "advancement.create.upward_chute.desc": "Wrzuć przedmiot do zsypu z wiatrakiem.", - "advancement.create.belt_funnel": "Sprzęt produkcyjny", - "advancement.create.belt_funnel.desc": "Postaw lejek lub składnicę na taśmociągu, aby dodać dodatkowe funkcje.", - "advancement.create.belt_funnel_kiss": "Zakochana para", - "advancement.create.belt_funnel_kiss.desc": "Spraw, aby dwa lejki na taśmociągu się pocałowały", - "advancement.create.fan": "Wisząc w powietrzu", - "advancement.create.fan.desc": "Unieś się w powietrze na izolowanym wiatraku.", - "advancement.create.fan_lava": "Ogrzewanie geotermalne", - "advancement.create.fan_lava.desc": "Wpadnij w strumień powietrza zdolnego do topienia metali.", - "advancement.create.fan_water": "Myjnia automatyczna", - "advancement.create.fan_water.desc": "Wpadnij w strumień powietrza przenoszącego krople wody.", - "advancement.create.fan_smoke": "Wędzarnia", - "advancement.create.fan_smoke.desc": "Wpadnij w strumień powietrza z dymem.", - "advancement.create.wrench": "Poręczna konfiguracja", - "advancement.create.wrench.desc": "Wytwórz klucz pomocny w pracy z maszynami.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Wytwórz gogle inżyniera, które pomogą Ci w zdobyciu większej ilości informacji o ruchomych komponentach.", - "advancement.create.speedometer": "Ale że jak szybko?", - "advancement.create.speedometer.desc": "Połóż i wpraw w ruch prędkościomierz. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", - "advancement.create.stressometer": "Ale że jakie obciążenie?", - "advancement.create.stressometer.desc": "Połóż i wpraw w ruch miernik obciążenia. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", - "advancement.create.aesthetics": "Estetyka!", - "advancement.create.aesthetics.desc": "Postaw wsporniki przy wale, rurze i kole zębatym.", - "advancement.create.reinforced": "Wzmocnienie!", - "advancement.create.reinforced.desc": "Użyj pasujących obudów na wale, rurze i kole zębatym.", - "advancement.create.water_wheel": "Energia odnawialna", - "advancement.create.water_wheel.desc": "Postaw koło wodne i spraw, aby zaczęło się kręcić!", - "advancement.create.chocolate_wheel": "Smakowita energia", - "advancement.create.chocolate_wheel.desc": "Wpraw w ruch koło wodne przy pomocy gorącej czekolady.", - "advancement.create.lava_wheel": "Koło magmowe", - "advancement.create.lava_wheel.desc": "To nigdy nie powinno było zadziałać.", - "advancement.create.cuckoo": "To już czas?", - "advancement.create.cuckoo.desc": "Bądź świadkiem tego, jak zegar z kukułką ogłasza porę snu.", - "advancement.create.millstone": "Kieszonkowy rozgniatacz", - "advancement.create.millstone.desc": "Postaw i wpraw w ruch młynek.", - "advancement.create.windmill": "Łagodna bryza", - "advancement.create.windmill.desc": "Skonstruuj działający wiatrak.", - "advancement.create.maxed_windmill": "Silna bryza", - "advancement.create.maxed_windmill.desc": "Skonstruuj wiatrak o maksymalnej sile.", - "advancement.create.andesite_casing": "Epoka andezytu łupanego", - "advancement.create.andesite_casing.desc": "Użyj stopu andezytu, aby wytworzyć podstawową obudowę.", - "advancement.create.mechanical_drill": "Wiertło stacjonarne", - "advancement.create.mechanical_drill.desc": "Postaw i wpraw w ruch mechaniczne wiertło.", - "advancement.create.press": "Prasa nie do końca drukarska", - "advancement.create.press.desc": "Wpraw w ruch prasę i wytłocz kilka metalowych arkuszy.", - "advancement.create.polished_rose_quartz": "Różowe diamenty", - "advancement.create.polished_rose_quartz.desc": "Poleruj różowy kwarc papierem ściernym tak długo, aż będzie przezroczysty.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Wytwórz kilka lamp elektronowych, przydatnych do konstrukcji mniej prymitywnych maszyn.", - "advancement.create.mechanical_saw": "Siekiera stacjonarna", - "advancement.create.mechanical_saw.desc": "Postaw i wpraw w ruch mechaniczną piłę.", - "advancement.create.basin": "Tygiel kulturowy", - "advancement.create.basin.desc": "Postaw tygiel i wrzuć do niego kilka przedmiotów.", - "advancement.create.mixer": "Pomieszanie z poplątaniem", - "advancement.create.mixer.desc": "Postaw nad tyglem mechaniczny mikser i użyj go do zmieszania przedmiotów na jednolitą masę.", - "advancement.create.blaze_burner": "Żywy ogień", - "advancement.create.blaze_burner.desc": "Zdobądź płomienny palnik.", - "advancement.create.compact": "Zautomatyzowane prasowanie", - "advancement.create.compact.desc": "Użyj prasy i tygla do sprasowania przedmiotów.", - "advancement.create.brass": "Prawdziwe stopy", - "advancement.create.brass.desc": "Zmieszaj sproszkowaną miedź i sproszkowany cynk, tworząc mosiądz.", - "advancement.create.brass_casing": "Epoka brązu", - "advancement.create.brass_casing.desc": "Użyj nowo poznany mosiądz i odrobiny drewna, aby wytworzyć ulepszoną obudowę.", - "advancement.create.copper_casing": "Epoka miedzi", - "advancement.create.copper_casing.desc": "Użyj arkuszy miedzi i odrobiny drewna, aby wytworzyć miedzianą obudowę.", - "advancement.create.spout": "Plum", - "advancement.create.spout.desc": "Patrz jak przedmiot napełnia się płynem przy użyciu kanistra.", - "advancement.create.spout_potion": "Globalny browar", - "advancement.create.spout_potion.desc": "Patrz jak butelka napełnia się miksturą.", - "advancement.create.chocolate": "Świat wyobraźni", - "advancement.create.chocolate.desc": "Zdobądź wiadro płynnej czekolady.", - "advancement.create.item_drain": "Szybki odpływ", - "advancement.create.item_drain.desc": "Patrz jak przedmiot jest opróżniany przy użyciu odpływu.", - "advancement.create.chained_item_drain": "Niech się dzieje!", - "advancement.create.chained_item_drain.desc": "Patrz jak przedmiot toczy się przez wiele połączonych odpływów.", - "advancement.create.glass_pipe": "Płynny podglądacz", - "advancement.create.glass_pipe.desc": "Patrz jak ciecz płynie przez rurę z okienkiem. Użyj klucza na prostej rurze, aby dodać do niej okno.", - "advancement.create.pipe_collision": "Nigdy nie krzyżuj strumieni!", - "advancement.create.pipe_collision.desc": "Patrz jak dwie ciecze spotykają się w Twoim systemie rur.", - "advancement.create.pipe_spill": "Mamy wyciek!", - "advancement.create.pipe_spill.desc": "Patrz jak otwarta część rury stawia lub pochłania ciecze.", - "advancement.create.hose_pulley": "Wyciek przemysłowy", - "advancement.create.hose_pulley.desc": "Obniż krążek z wężem, aby osuszyć lub wypełnić płynem jakiś obszar.", - "advancement.create.infinite_water": "Osuszanie oceanu", - "advancement.create.infinite_water.desc": "Wypompuj trochę wody z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.infinite_lava": "Prosto z jądra Ziemi", - "advancement.create.infinite_lava.desc": "Wypompuj trochę lawy z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.infinite_chocolate": "Tonę we własnej wyobraźni", - "advancement.create.infinite_chocolate.desc": "Wypompuj trochę czekolady z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.crafter": "Linia produkcyjna", - "advancement.create.crafter.desc": "Postaw i wpraw w ruch mechaniczny stół rzemieślniczy.", - "advancement.create.clockwork_bearing": "Jaką mamy godzinę?", - "advancement.create.clockwork_bearing.desc": "Skonstruuj strukturę obracającą się na mechanizmie zegarowym.", - "advancement.create.nixie_tube": "Oznaka stylu", - "advancement.create.nixie_tube.desc": "Wytwórz i postaw parę lamp cyfrowych.", - "advancement.create.deployer": "Postaw i zniszcz", - "advancement.create.deployer.desc": "Postaw i wpraw w ruch aplikator, Twoje idealne odbicie.", - "advancement.create.speed_controller": "Inżynierowie go nienawidzą!", - "advancement.create.speed_controller.desc": "Postaw sterownik prędkości obrotu, najlepsze narzędzie do zmiany przekładni.", - "advancement.create.flywheel": "Serce Fabryki", - "advancement.create.flywheel.desc": "Skutecznie podłącz silnik do koła zamachowego.", - "advancement.create.overstress_flywheel": "Wysoki poziom obciążenia", - "advancement.create.overstress_flywheel.desc": "Przeładuj silnik spalinowy.", - "advancement.create.integrated_circuit": "Skomplikowane obliczenia", - "advancement.create.integrated_circuit.desc": "Złóż układ scalony.", - "advancement.create.mechanical_arm": "Ręce pełne roboty", - "advancement.create.mechanical_arm.desc": "Wytwórz ramię mechaniczne, wybierz miejsca wejścia i wyjścia, postaw je i wpraw w ruch. Patrz jak robi wszystko za Ciebie.", - "advancement.create.musical_arm": "Zagraj coś dla mnie!", - "advancement.create.musical_arm.desc": "Patrz jak mechaniczne ramię obsługuje szafę grającą.", - "advancement.create.arm_many_targets": "Organizer", - "advancement.create.arm_many_targets.desc": "Zaprogramuj ramię mechaniczne z przynajmniej dziesięcioma miejscami wyjścia.", - "advancement.create.arm_blaze_burner": "Automatyczny wlot paliwowy", - "advancement.create.arm_blaze_burner.desc": "Poinstruuj ramię mechaniczne, jak napełniać płomienny palnik.", - "advancement.create.fist_bump": "Żółwik!", - "advancement.create.fist_bump.desc": "Spraw, aby dwa aplikatory stuknęły się pięścią.", - "advancement.create.crushing_wheel": "Nierozłączna para", - "advancement.create.crushing_wheel.desc": "Wytwórz parę kół kruszących, aby kruszyły więcej materiałów w krótszym czasie.", - "advancement.create.blaze_cake": "Przypływ energii", - "advancement.create.blaze_cake.desc": "Upiecz dla swojego palnika pyszne ciasto.", - "advancement.create.chromatic_compound": "Minerały dwubiegunowe", - "advancement.create.chromatic_compound.desc": "Wytwórz sztabkę związku chromatycznego.", - "advancement.create.shadow_steel": "Dar otchłani", - "advancement.create.shadow_steel.desc": "Uzyskaj mroczną stal, sztabkę pełną nicości.", - "advancement.create.refined_radiance": "Czysty blask", - "advancement.create.refined_radiance.desc": "Uzyskaj świetlisty materiał, silną substancję chromatyczną.", - "advancement.create.chromatic_age": "Epoka kolorów", - "advancement.create.chromatic_age.desc": "Wytwórz jasną i mroczną obudowę.", - "advancement.create.wand_of_symmetry": "Symetria.", - "advancement.create.wand_of_symmetry.desc": "Zdobądź różdżkę symetrii.", - "advancement.create.extendo_grip": "Dalej dalej ręce Gadżeta!", - "advancement.create.extendo_grip.desc": "Złap w ręce Wydłużony Chwytak.", - "advancement.create.dual_extendo_grip": "Bioniczne modyfikacje", - "advancement.create.dual_extendo_grip.desc": "Użyj dwóch Wydłużonych Chwytaków, aby posiąść nadludzki zasięg.", - "advancement.create.eob": "Koniec Bety", - "advancement.create.eob.desc": "Bądź gotowy na więcej treści w przyszłości. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Palety Create", - "death.attack.create.crush": "Gracz %1$s został zgnieciony przez koło kruszące", - "death.attack.create.fan_fire": "Gracz %1$s poparzył się gorącym powietrzem", - "death.attack.create.fan_lava": "Gracz %1$s poparzył się kroplami lawy", - "death.attack.create.mechanical_drill": "Gracz %1$s nabił się na mechaniczne wiertło", - "death.attack.create.mechanical_saw": "Gracz %1$s został przecięty na pół przez mechaniczną piłę", - "death.attack.create.cuckoo_clock_explosion": "Gracz %1$s został wysadzony w powietrze przez uszkodzony zegar z kukułką", - "create.block.deployer.damage_source_name": "zbuntowany aplikator", - "create.block.cart_assembler.invalid": "Postaw monter wagoników na torze", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Kruszenie", - "create.recipe.milling": "Mielenie", - "create.recipe.fan_washing": "Hurtowe płukanie", - "create.recipe.fan_washing.fan": "Wiatrak za płynącą wodą", - "create.recipe.fan_smoking": "Hurtowe wędzenie", - "create.recipe.fan_smoking.fan": "Wiatrak za ogniem", - "create.recipe.fan_blasting": "Hurtowe topienie", - "create.recipe.fan_blasting.fan": "Wiatrak za lawą", - "create.recipe.pressing": "Tłoczenie", - "create.recipe.mixing": "Mieszanie", - "create.recipe.deploying": "Aplikowanie", - "create.recipe.automatic_shapeless": "Zautomatyzowanie nieokreślone konstruowanie", - "create.recipe.automatic_brewing": "Zautomatyzowane warzenie", - "create.recipe.packing": "Prasowanie", - "create.recipe.automatic_packing": "Zautomatyzowane pakowanie", - "create.recipe.sawing": "Cięcie", - "create.recipe.mechanical_crafting": "Mechaniczne konstruowanie", - "create.recipe.automatic_shaped": "Zautomatyzowane określone konstruowanie", - "create.recipe.block_cutting": "Cięcie bloków", - "create.recipe.wood_cutting": "Cięcie drewna", - "create.recipe.sandpaper_polishing": "Polerowanie papierem ściernym", - "create.recipe.mystery_conversion": "Tajemnicza przemiana", - "create.recipe.spout_filling": "Wypełnianie", - "create.recipe.draining": "Osuszanie", - "create.recipe.processing.chance": "%1$s%% szans", - "create.recipe.heat_requirement.none": "Nie wymaga podgrzewania", - "create.recipe.heat_requirement.heated": "Podrzewane", - "create.recipe.heat_requirement.superheated": "Silnie podgrzewane", - - "create.generic.range": "Zasięg", - "create.generic.radius": "Promień", - "create.generic.width": "Szerokość", - "create.generic.height": "Wysokość", - "create.generic.length": "Długość", - "create.generic.speed": "Prędkość", - "create.generic.delay": "Opóźnienie", - "create.generic.unit.ticks": "Tiki", - "create.generic.unit.seconds": "Sekundy", - "create.generic.unit.minutes": "Minuty", - "create.generic.unit.rpm": "Ob/min", - "create.generic.unit.stress": "JO", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smW", - "create.generic.clockwise": "Zgodnie ze wskazówkami zegara", - "create.generic.counter_clockwise": "Przeciwnie do wskazówek zegara", - - "create.action.scroll": "Przewiń", - "create.action.confirm": "Potwierdź", - "create.action.abort": "Przerwij", - "create.action.saveToFile": "Zapisz", - "create.action.discard": "Odrzuć", - - "create.keyinfo.toolmenu": "Menu narzędzi", - "create.keyinfo.scrollup": "Symuluj przewijanie w górę (w świecie)", - "create.keyinfo.scrolldown": "Symuluj przewijanie w dół (w świecie)", - - "create.gui.scrollInput.defaultTitle": "Wybierz opcję:", - "create.gui.scrollInput.scrollToModify": "Przewiń, aby zmodyfikować", - "create.gui.scrollInput.scrollToAdjustAmount": "Przewiń, aby dostosować ilość", - "create.gui.scrollInput.scrollToSelect": "Przewiń, aby wybrać", - "create.gui.scrollInput.shiftScrollsFaster": "Naciśnij Shift, aby przewijać szybciej", - "create.gui.toolmenu.focusKey": "Przytrzymaj [%1$s], aby skupić", - "create.gui.toolmenu.cycle": "[SCROLL] przewijać", - "create.gui.symmetryWand.mirrorType": "Odbicie lustrzane", - "create.gui.symmetryWand.orientation": "Orientacja", - - "create.symmetry.mirror.plane": "Odbij lustrzanie raz", - "create.symmetry.mirror.doublePlane": "Prostokątnie", - "create.symmetry.mirror.triplePlane": "Ośmiokątnie", - - "create.orientation.orthogonal": "ortogonalnie", - "create.orientation.diagonal": "ukośnie", - "create.orientation.horizontal": "poziomo", - "create.orientation.alongZ": "Wzdłuż Z", - "create.orientation.alongX": "Wzdłuż X", - - "create.gui.terrainzapper.title": "Ręczny kształter", - "create.gui.terrainzapper.searchDiagonal": "Wzdłuż linii ukośnych", - "create.gui.terrainzapper.searchFuzzy": "Ignoruj krawędzie materiałów", - "create.gui.terrainzapper.patternSection": "Wzór", - "create.gui.terrainzapper.pattern.solid": "Ciągły", - "create.gui.terrainzapper.pattern.checkered": "Szachownica", - "create.gui.terrainzapper.pattern.inversecheckered": "Odrócona szachownica", - "create.gui.terrainzapper.pattern.chance25": "Obrót o 25%", - "create.gui.terrainzapper.pattern.chance50": "Obrót o 50%", - "create.gui.terrainzapper.pattern.chance75": "Obrót o 75%", - "create.gui.terrainzapper.placement": "Położenie", - "create.gui.terrainzapper.placement.merged": "Połączony", - "create.gui.terrainzapper.placement.attached": "Przyłączony", - "create.gui.terrainzapper.placement.inserted": "Wstawiony", - "create.gui.terrainzapper.brush": "Pędzel", - "create.gui.terrainzapper.brush.cuboid": "Prostopadłościan", - "create.gui.terrainzapper.brush.sphere": "Kula", - "create.gui.terrainzapper.brush.cylinder": "Walec", - "create.gui.terrainzapper.brush.surface": "Powierzchnia", - "create.gui.terrainzapper.brush.cluster": "Grupa", - "create.gui.terrainzapper.tool": "Narzędzie", - "create.gui.terrainzapper.tool.fill": "Wypełnianie", - "create.gui.terrainzapper.tool.place": "Stawianie", - "create.gui.terrainzapper.tool.replace": "Zamiana", - "create.gui.terrainzapper.tool.clear": "Czyszczenie", - "create.gui.terrainzapper.tool.overlay": "Pokrywanie", - "create.gui.terrainzapper.tool.flatten": "Wypłaszczanie", - - "create.terrainzapper.shiftRightClickToSet": "Shift+Prawe kliknięcie, aby wybrać kształt", - "create.terrainzapper.usingBlock": "Używając: %1$s", - "create.terrainzapper.leftClickToSet": "Kliknij LPM na blok aby ustawić materiał", - - "create.minecart_coupling.two_couplings_max": "Wagoniki nie mogą mieć więcej niż dwa łączniki każdy", - "create.minecart_coupling.unloaded": "Część twojego pociągu wydaje się być w niezaładowanych Chunkach.", - "create.minecart_coupling.no_loops": "Łączniki nie mogą tworzyć pętli", - "create.minecart_coupling.removed": "Usunięto z wagonika wszystkie łączniki", - "create.minecart_coupling.too_far": "Wagoniki są zbyt daleko od siebie", - - "create.contraptions.movement_mode": "Tryb poruszania", - "create.contraptions.movement_mode.move_place": "Zawsze stawiaj przy zatrzymaniu", - "create.contraptions.movement_mode.move_place_returned": "Stawiaj jedynie w pozycji startu", - "create.contraptions.movement_mode.move_never_place": "Stawiaj jedynie, gdy kotwica jest zniszczona", - "create.contraptions.movement_mode.rotate_place": "Zawsze stawiaj przy zatrzymaniu", - "create.contraptions.movement_mode.rotate_place_returned": "Stawiaj jedynie blisko kąta początkowego", - "create.contraptions.movement_mode.rotate_never_place": "Stawiaj jedynie, gdy kotwica jest zniszczona\n", - "create.contraptions.cart_movement_mode": "Tryb poruszania wagonika", - "create.contraptions.cart_movement_mode.rotate": "Zawsze kieruj w stronę ruchu", - "create.contraptions.cart_movement_mode.rotate_paused": "Zatrzymaj komponenty podczas obrotu", - "create.contraptions.cart_movement_mode.rotation_locked": "Zablokuj obrót", - "create.contraptions.windmill.rotation_direction": "Kierunek obrotu", - "create.contraptions.clockwork.clock_hands": "Wskazówki zegara", - "create.contraptions.clockwork.hour_first": "Najpierw wskazówka godzinowa", - "create.contraptions.clockwork.minute_first": "Najpierw wskazówka minutowa", - "create.contraptions.clockwork.hour_first_24": "Najpierw wskazówka 24-godzinna", - - "create.logistics.filter": "Filtr", - "create.logistics.recipe_filter": "Filtr receptur", - "create.logistics.fluid_filter": "Filtr płynów", - "create.logistics.firstFrequency": "Częst. #1", - "create.logistics.secondFrequency": "Częst. #2", - "create.logistics.filter.apply": "Zastosowano filtr na %1$s.", - "create.logistics.filter.apply_click_again": "Zastosowano filtr na %1$s; kliknij ponownie, aby skopiować ilość.", - "create.logistics.filter.apply_count": "Zastosowano limit wyciągania do filtra.", - - "create.gui.goggles.generator_stats": "Właściwości generatora:", - "create.gui.goggles.kinetic_stats": "Właściwości kinetyczne:", - "create.gui.goggles.at_current_speed": "przy obecnej prędkości", - "create.gui.goggles.pole_length": "Długość przedłużenia:", - "create.gui.goggles.fluid_container": "Informacje o zbiorniku:", - "create.gui.goggles.fluid_container.capacity": "Pojemność:", - "create.gui.assembly.exception": "Nie udało się zmontować maszyny:", - "create.gui.assembly.exception.unmovableBlock": "Nieprzesuwalny bloki (%4$s) na [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "Blok na [%1$s,%2$s,%3$s] nie był w załadowanym Chunku", - "create.gui.assembly.exception.structureTooLarge": "Zbyt dużo bloków w maszynie. Ustawione maksimum to: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "Zbyt dużo przedłużeń tłoka. Ustawione maksimum to: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Brakuje kilku przedłużeń tłoka", - "create.gui.assembly.exception.not_enough_sails": "Przyczepiona struktura nie zawiera wystarczająco żaglo-podobnych bloków: %1$s Wymagane minimum to %2$s", - "create.gui.gauge.info_header": "Informacje miernika:", - "create.gui.speedometer.title": "Prędkość obrotu", - "create.gui.stressometer.title": "Obciążenie systemu", - "create.gui.stressometer.capacity": "Pozostała pojemność", - "create.gui.stressometer.overstressed": "Przeciążenie", - "create.gui.stressometer.no_rotation": "Brak obrotu", - "create.gui.contraptions.not_fast_enough": "Wygląda na to, że %1$s_nie_ obraca się z _wystarczającą_ _prędkością_.", - "create.gui.contraptions.network_overstressed": "Wygląda na to, że ta maszyna jest _przeciążona_. Dodaj więcej źródeł lub _spowolnij_ komponenty z wysoką _wartością_ _obciążenia_.", - "create.gui.adjustable_crate.title": "Regulowana skrzynka", - "create.gui.adjustable_crate.storageSpace": "Pojemność", - "create.gui.stockpile_switch.title": "Przełącznik zawartościowy", - "create.gui.stockpile_switch.invert_signal": "Odwróć sygnał", - "create.gui.stockpile_switch.move_to_lower_at": "Zmień na niższą wartość przy %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Zmień na wyższą wartość przy %1$s%%", - "create.gui.sequenced_gearshift.title": "Przekładnik sekwencjonalny", - "create.gui.sequenced_gearshift.instruction": "Instrukcja", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Obróć o kąt", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Obróć", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Kąt", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Obróć, aby przesunąć tłok/krążek/przenośnik suwnicowy", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Tłok", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Dystans", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Opóźnienie czasowe", - "create.gui.sequenced_gearshift.instruction.delay": "Opóźn.", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Czas trwania", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "Koniec", - "create.gui.sequenced_gearshift.instruction.end": "Koniec", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Czekaj na kolejny puls", - "create.gui.sequenced_gearshift.instruction.await": "Czekaj", - "create.gui.sequenced_gearshift.speed": "Prędkość, kierunek", - "create.gui.sequenced_gearshift.speed.forward": "Prędkość wejściowa, do przodu", - "create.gui.sequenced_gearshift.speed.forward_fast": "Podwójna prędkość, do przodu", - "create.gui.sequenced_gearshift.speed.back": "Prędkość wejściowa, odwrotnie", - "create.gui.sequenced_gearshift.speed.back_fast": "Podwójna prędkość, odwrotnie", - - "create.schematicAndQuill.dimensions": "Wielkość schematu: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Ustawiono pierwszą pozycję.", - "create.schematicAndQuill.secondPos": "Ustawiono drugą pozycję.", - "create.schematicAndQuill.noTarget": "Trzymaj [Ctrl], aby zaznaczyć bloki powietrza.", - "create.schematicAndQuill.abort": "Usunięto zaznaczenie.", - "create.schematicAndQuill.title": "Nazwa schematu:", - "create.schematicAndQuill.convert": "Zapisz i wyślij natychmiastowo", - "create.schematicAndQuill.fallbackName": "Nowy schemat", - "create.schematicAndQuill.saved": "Zapisano jako %1$s", - - "create.schematic.invalid": "[!] Nieprawidłowy przedmiot - użyj stołu do planowania", - "create.schematic.position": "Pozycja", - "create.schematic.rotation": "Obrót", - "create.schematic.rotation.none": "Brak", - "create.schematic.rotation.cw90": "Zgodnie z zegarem 90", - "create.schematic.rotation.cw180": "Zgodnie z zegarem 180", - "create.schematic.rotation.cw270": "Zgodnie z zegarem 270", - "create.schematic.mirror": "Odbij", - "create.schematic.mirror.none": "Brak", - "create.schematic.mirror.frontBack": "Przód-tył", - "create.schematic.mirror.leftRight": "Prawo-lewo", - "create.schematic.tool.deploy": "Pozycja", - "create.schematic.tool.move": "Przesuń XZ", - "create.schematic.tool.movey": "Przesuń Y", - "create.schematic.tool.rotate": "Obróć", - "create.schematic.tool.print": "Drukuj", - "create.schematic.tool.flip": "Odbij", - "create.schematic.tool.deploy.description.0": "Przesuwa strukturę na pozycję.", - "create.schematic.tool.deploy.description.1": "Kliknij PPM na ziemię, aby postawić.", - "create.schematic.tool.deploy.description.2": "Trzymaj [Ctrl], aby zaznaczyć w określonej odległości.", - "create.schematic.tool.deploy.description.3": "[Ctrl]+Przewijanie, aby zmienić dystans", - "create.schematic.tool.move.description.0": "Przesuwa schemat poziomo.", - "create.schematic.tool.move.description.1": "Wskaż na schemat i [Ctrl]+Przewijaj, aby popchnąć.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Przesuwa schemat pionowo.", - "create.schematic.tool.movey.description.1": "[Ctrl]+Przewijanie, aby przesunąć w górę/dół.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Obraca schemat wokół jego środka.", - "create.schematic.tool.rotate.description.1": "[Ctrl]+Przewijanie, aby obrócić o 90 stopni.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Natychmiastowo stawia strukturę w świecie.", - "create.schematic.tool.print.description.1": "Kliknij PPM, aby potwierdzić ustawienie w obecnej pozycji.", - "create.schematic.tool.print.description.2": "Ta funkcja jest tylko dla trybu kreatywnego.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Odbija schemat w stronę, w jakiej wskazałeś.", - "create.schematic.tool.flip.description.1": "Wskaż na schemat [Ctrl]+Przewijaj, aby odbić", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchronizacja...", - "create.schematics.uploadTooLarge": "Twój schemat przekracza limity ustanowione przez serwer.", - "create.schematics.maxAllowedSize": "Maksymalna wielkość schematu to:", - - "create.gui.schematicTable.refresh": "Odśwież pliki", - "create.gui.schematicTable.open_folder": "Otwórz folder", - "create.gui.schematicTable.title": "Stół do planowania", - "create.gui.schematicTable.availableSchematics": "Dostępne schematy", - "create.gui.schematicTable.noSchematics": "Brak zapisanych schematów", - "create.gui.schematicTable.uploading": "Wysyłanie...", - "create.gui.schematicTable.finished": "Wysyłanie zakończone!", - "create.gui.schematicannon.title": "Schematoarmata", - "create.gui.schematicannon.listPrinter": "Drukowanie listy", - "create.gui.schematicannon.gunpowderLevel": "Ilość prochu: %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Pozostałe wystrzały: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Wliczając zapas: %1$s", - "create.gui.schematicannon.optionEnabled": "Obecnie włączone", - "create.gui.schematicannon.optionDisabled": "Obecnie wyłączone\n", - "create.gui.schematicannon.showOptions": "Pokaż ustawienia drukowania", - "create.gui.schematicannon.option.dontReplaceSolid": "Nie zastępuj stałych bloków", - "create.gui.schematicannon.option.replaceWithSolid": "Zastępuj stałe stałymi", - "create.gui.schematicannon.option.replaceWithAny": "Zastępuj stałe dowolnymi", - "create.gui.schematicannon.option.replaceWithEmpty": "Zastępuj stałe pustymi", - "create.gui.schematicannon.option.skipMissing": "Pomijaj brakujące bloki", - "create.gui.schematicannon.option.skipTileEntities": "Chroń byty bloków", - "create.gui.schematicannon.slot.gunpowder": "Dodaj prochu, aby załadować armatę", - "create.gui.schematicannon.slot.listPrinter": "Daj tu książki, aby wydrukować listę", - "create.gui.schematicannon.slot.schematic": "Daj tu swój schemat. Upewnij się, że jest postawiony w odpowiednim miejscu.", - "create.gui.schematicannon.option.skipMissing.description": "Jeśli armata nie znajdzie wymaganego bloku, przejdzie w następne miejsce", - "create.gui.schematicannon.option.skipTileEntities.description": "Armata będzie unikać zastępowania bloków przechowujących dane, takich jak skrzynie.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Armata nigdy nie będzie zastępować jakichkolwiek stałych bloków, jedynie nie-stałe i powietrze.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Armata będzie zastępować stałe bloki jedynie, jeśli schemat zawiera stały blok w tym miejscu.", - "create.gui.schematicannon.option.replaceWithAny.description": "Armata będzie zastępować stałe bloki jedynie, jeśli schemat zawiera dowolny blok w tym miejscu.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Armata usunie wszystkie bloki, wliczając te zastępowane przez powietrze.", - - "create.schematicannon.status.idle": "Niepracująca", - "create.schematicannon.status.ready": "Gotowa", - "create.schematicannon.status.running": "Działająca", - "create.schematicannon.status.finished": "Ukończone", - "create.schematicannon.status.paused": "Wstrzymana", - "create.schematicannon.status.stopped": "Zatrzymana", - "create.schematicannon.status.noGunpowder": "Koniec prochu", - "create.schematicannon.status.targetNotLoaded": "Cel nie jest załadowany", - "create.schematicannon.status.targetOutsideRange": "Cel jest za daleko", - "create.schematicannon.status.searching": "Szukanie", - "create.schematicannon.status.skipping": "Pomijanie", - "create.schematicannon.status.missingBlock": "Brakujący przedmiot:", - "create.schematicannon.status.placing": "Stawianie", - "create.schematicannon.status.clearing": "Usuwanie bloków", - "create.schematicannon.status.schematicInvalid": "Nieprawidłowy schemat", - "create.schematicannon.status.schematicNotPlaced": "Schemat nieustawiony", - "create.schematicannon.status.schematicExpired": "Schemat wygasł", - - "create.materialChecklist": "Lista materiałów", - "create.materialChecklist.blocksNotLoaded": "* Zastrzeżenie *\\n\\n Lista materiałów może być  niedokładna, bo znaczące Chunki nie są załadowane.", - - "create.gui.filter.deny_list": "Lista zabroniona", - "create.gui.filter.deny_list.description": "Przedmioty są przepuszczane, jeśli NIE pasują do żadnego z powyższych. Pusta lista przepuszcza wszystko.", - "create.gui.filter.allow_list": "Lista dozwolona", - "create.gui.filter.allow_list.description": "Przedmioty są przepuszczane, jeśli pasują do któregoś z powyższych. Pusta lista odrzuca wszystko", - "create.gui.filter.respect_data": "Bierz dane pod uwagę", - "create.gui.filter.respect_data.description": "Przedmioty pasują jedynie, jeśli ich wytrzymałość, zaklęcia i inne właściwości również pasują.", - "create.gui.filter.ignore_data": "Ignoruj dane", - "create.gui.filter.ignore_data.description": "Przedmioty pasują  pomimo ich właściwości.", - - "create.item_attributes.placeable": "jest stawialny", - "create.item_attributes.placeable.inverted": "nie jest stawialny", - "create.item_attributes.consumable": "jadalny", - "create.item_attributes.consumable.inverted": "niejadalny", - "create.item_attributes.smeltable": "może zostać przepalony", - "create.item_attributes.smeltable.inverted": "nie może zostać przepalony", - "create.item_attributes.washable": "może zostać opłukany", - "create.item_attributes.washable.inverted": "nie może zostać opłukany", - "create.item_attributes.smokable": "może być wędzony", - "create.item_attributes.smokable.inverted": "nie może być wędzony", - "create.item_attributes.crushable": "może być rozkruszony", - "create.item_attributes.crushable.inverted": "nie może być rozkruszony", - "create.item_attributes.blastable": "może być stopiony w piecu hutniczym", - "create.item_attributes.blastable.inverted": "nie może być stopiony w piecu hutniczym", - "create.item_attributes.enchanted": "jest zaklęty", - "create.item_attributes.enchanted.inverted": "nie jest zaklęty", - "create.item_attributes.damaged": "jest uszkodzony", - "create.item_attributes.damaged.inverted": "nie jest uszkodzony", - "create.item_attributes.badly_damaged": "jest silnie uszkodzony", - "create.item_attributes.badly_damaged.inverted": "nie jest silnie uszkodzony", - "create.item_attributes.not_stackable": "nie może być grupowany", - "create.item_attributes.not_stackable.inverted": "może być grupowany", - "create.item_attributes.equipable": "może zostać założony", - "create.item_attributes.equipable.inverted": "nie może zostać założony", - "create.item_attributes.furnace_fuel": "jest paliwem dla pieca", - "create.item_attributes.furnace_fuel.inverted": "nie jest paliwem dla pieca", - "create.item_attributes.in_tag": "posiada znacznik %1$s", - "create.item_attributes.in_tag.inverted": "nie posiada znacznika %1$s", - "create.item_attributes.in_item_group": "jest w grupie \"%1$s\"", - "create.item_attributes.in_item_group.inverted": "nie jest w grupie \"%1$s\"", - "create.item_attributes.added_by": "dodany przez %1$s", - "create.item_attributes.added_by.inverted": "niedodany przez %1$s", - "create.item_attributes.has_enchant": "posiada zaklęcie %1$s", - "create.item_attributes.has_enchant.inverted": "nie posiada zaklęcia %1$s", - "create.item_attributes.color": "jest zafarbowane, kolor %1$s", - "create.item_attributes.color.inverted": "nie jest zafarbowane, kolor %1$s", - "create.item_attributes.max_enchanted": "jest zaklęte na maksymalny poziom", - "create.item_attributes.max_enchanted.inverted": "nie jest zaklęte na maksymalny poziom", - "create.item_attributes.has_fluid": "zawiera %1$s", - "create.item_attributes.has_fluid.inverted": "nie zawiera %1$s", - "create.item_attributes.has_name": "posiada nazwę %1$s", - "create.item_attributes.has_name.inverted": "nie posiada nazwy %1$s", - "create.item_attributes.book_author": "autorem jest %1$s", - "create.item_attributes.book_author.inverted": "autorem nie jest %1$s", - "create.item_attributes.book_copy_original": "jest oryginałem", - "create.item_attributes.book_copy_original.inverted": "nie jest oryginałem", - "create.item_attributes.book_copy_first": "jest kopią oryginału", - "create.item_attributes.book_copy_first.inverted": "nie jest kopią oryginału", - "create.item_attributes.book_copy_second": "jest kopią kopii", - "create.item_attributes.book_copy_second.inverted": "nie jest kopią kopii", - "create.item_attributes.book_copy_tattered": "jest postrzępiona", - "create.item_attributes.book_copy_tattered.inverted": "nie jest postrzępiona", - "create.item_attributes.astralsorcery_crystal": "posiada właściwości kryształu %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "nie posiada właściwości kryształu %1$s", - "create.item_attributes.astralsorcery_constellation": "jest dopasowany do %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "nie jest dopasowany do %1$s", - "create.item_attributes.astralsorcery_perk_gem": "posiada dodatkową właściwość %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "nie posiada dodatkowej właściwości %1$s", - "create.item_attributes.astralsorcery_amulet": "ulepsza %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "nie ulepsza %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "Brak wybranych właściwości", - "create.gui.attribute_filter.selected_attributes": "Wybrane właściwości:", - "create.gui.attribute_filter.add_attribute": "Dodaj właściwość do listy ", - "create.gui.attribute_filter.add_inverted_attribute": "Dodaj przeciwną właściwość do listy", - "create.gui.attribute_filter.allow_list_disjunctive": "Lista dozwolona (dowolny)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Przedmioty są przepuszczane jedynie, jeśli posiada dowolny z wybranych właściwości.", - "create.gui.attribute_filter.allow_list_conjunctive": "Lista dozwolona (wszystkie)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Przedmioty są przepuszczane jedynie, jeśli posiada WSZYSTKIE z wybranych właściwości.", - "create.gui.attribute_filter.deny_list": "Lista zabroniona", - "create.gui.attribute_filter.deny_list.description": "Przedmioty są przepuszczane jedynie, jeśli nie posiadają ŻADNEGO z wybranych właściwości.", - "create.gui.attribute_filter.add_reference_item": "Dodaj przedmiot źródłowy", - - "create.tooltip.holdForDescription": "Przytrzymaj [%1$s], aby zobaczyć podsumowanie", - "create.tooltip.holdForControls": "Przytrzymaj [%1$s], aby zobaczyć sterowanie", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Wymagana prędkość: %1$s", - "create.tooltip.speedRequirement.none": "Brak", - "create.tooltip.speedRequirement.medium": "Umiarkowana", - "create.tooltip.speedRequirement.high": "Wysoka", - "create.tooltip.stressImpact": "Wpływ na obciążenie: %1$s", - "create.tooltip.stressImpact.low": "Niski", - "create.tooltip.stressImpact.medium": "Umiarkowany\n", - "create.tooltip.stressImpact.high": "Wysoki", - "create.tooltip.stressImpact.overstressed": "Przeciążenie", - "create.tooltip.capacityProvided": "Odporność na obciążenie: %1$s", - "create.tooltip.capacityProvided.low": "Niska", - "create.tooltip.capacityProvided.medium": "Średnia", - "create.tooltip.capacityProvided.high": "Wysoka", - "create.tooltip.generationSpeed": "Wytwarza %1$s %2$s", - "create.tooltip.analogStrength": "Siła analogowa: %1$s/15", - - "create.mechanical_arm.extract_from": "Wyciągaj przedmioty z %1$s", - "create.mechanical_arm.deposit_to": "Wkładaj przedmioty do %1$s", - "create.mechanical_arm.summary": "Mechaniczne ramię ma %1$s wejść i %2$s wyjść.", - "create.mechanical_arm.points_outside_range": "Usunięto %1$s wybranych punktów interakcji z powodu limitów zasięgu", - - "create.weighted_ejector.target_set": "Wybrano cel", - "create.weighted_ejector.target_not_valid": "Wyrzuca do  przylegających bloków (cel był nieprawidłowy)", - "create.weighted_ejector.no_target": "Wyrzuca do  przylegających bloków (nie wybrano celu)", - "create.weighted_ejector.targeting": "Wyrzuca do [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Wielkość wyrzucanego stosu", - - "create.logistics.when_multiple_outputs_available": "Kiedy wybrano wiele wyjść", - - "create.mechanical_arm.selection_mode.round_robin": "Dookoła", - "create.mechanical_arm.selection_mode.forced_round_robin": "Dookoła (wymuszone)", - "create.mechanical_arm.selection_mode.prefer_first": "Preferuj pierwszy cel", - - "create.tunnel.selection_mode.split": "Podziel", - "create.tunnel.selection_mode.forced_split": "Wymuś podział", - "create.tunnel.selection_mode.round_robin": "Dookoła", - "create.tunnel.selection_mode.forced_round_robin": "Dookoła (wymuszone)", - "create.tunnel.selection_mode.prefer_nearest": "Preferuj najbliższe", - "create.tunnel.selection_mode.randomize": "Losowo", - "create.tunnel.selection_mode.synchronize": "Synchronizuj wejścia", - - "create.tooltip.chute.header": "Informacja o zsypie", - "create.tooltip.chute.items_move_down": "Przedmioty w dół", - "create.tooltip.chute.items_move_up": "Przedmioty w górę", - "create.tooltip.chute.no_fans_attached": "Brak przyłączonych wiatraków", - "create.tooltip.chute.fans_push_up": "Wiatraki pchają od dołu", - "create.tooltip.chute.fans_push_down": "Wiatraki pchają od góry", - "create.tooltip.chute.fans_pull_up": "Wiatraki ciągną od góry", - "create.tooltip.chute.fans_pull_down": "Wiatraki ciągną od dołu", - "create.tooltip.chute.contains": "Zawiera: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "Niewyczerpany zapas", - "create.hint.hose_pulley": "Wybrane zbiornik cieczy jest uznany za nieskończony", - "create.hint.mechanical_arm_no_targets.title": "Brak celi", - "create.hint.mechanical_arm_no_targets": "Wygląda na to, że żadne _cele_ nie zostały przypisane do tego _mechanicznego_ _ramienia_. Wybierz taśmociągi, składnice, lejki i inne bloki _klikając_ na nie _PPM_, trzymając w _ręce_ _mechaniczne_ _ramię_", - "create.hint.empty_bearing.title": "Aktualizuj łożysko", - "create.hint.empty_bearing": "_Kliknij_ na łożysko _PPM_ pustą ręką, aby _przyczepić_ do niego strukturę zbudowaną z przodu.", - "create.hint.full_deployer.title": "Nadmiar przedmiotów w aplikatorze", - "create.hint.full_deployer": "Wygląda na to, że ten _aplikator_ zawiera _nadmiar_ _przedmiotów_, które muszą zostać _wyciągnięte_. Użyj _leji_, _lejków_ lub innych sposobów, aby uwolnić od przepełnienia.", - - "create.gui.config.overlay1": "Cześć :)", - "create.gui.config.overlay2": "To jest przykładowa nakładka", - "create.gui.config.overlay3": "Kliknij lub przeciągnij myszką", - "create.gui.config.overlay4": "aby przesunąć ten podgląd", - "create.gui.config.overlay5": "Naciśnij ESC, aby opuścić ten ekran", - "create.gui.config.overlay6": "i zapisać nową pozycję", - "create.gui.config.overlay7": "Uruchom \"/create overlay reset\"", - "create.gui.config.overlay8": "aby zresetować pozycję", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Obecne opóźnienie serwera to %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Serwer jest teraz opóźniony o %s >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Serwer wrócił do standardowej prędkości :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: Użyj \"/killtps stop\", aby przywrócić serwer do standardowej prędkości", - "create.command.killTPSCommand.status.usage.1": "[Create]: Użyj \"/killtps start\", aby sztucznie spowolnić serwer\n", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "Ta maszyna w wagoniku jest zbyt duża, aby ją podnieść", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "Maszyna staje", - "create.subtitle.mixing": "Dźwięki mieszania", - "create.subtitle.mechanical_press_activation_belt": "Mechaniczna prasa stuka", - "create.subtitle.worldshaper_place": "Kształter strzela", - "create.subtitle.depot_slide": "Przedmiot ślizga się", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "Płomyk szczęśliwie przeżuwa", - "create.subtitle.funnel_flap": "Lejek trzepocze", - "create.subtitle.schematicannon_finish": "Schematoarmata skończyła", - "create.subtitle.scroll_value": "Kliknięcie", - "create.subtitle.crafter_craft": "Mechaniczny stół rzemieślniczy konstruuje", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "Ręczna korba obraca się", - "create.subtitle.wrench_remove": "Komponent niszczy się", - "create.subtitle.cogs": "Koła zębate terkoczą", - "create.subtitle.slime_added": "Szlam plaska", - "create.subtitle.wrench_rotate": "Klucz skrzypi", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "Aplikator poleruje", - "create.subtitle.deny": "Dźwięk odmowy", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "Schematoarmata strzela", - "create.subtitle.copper_armor_equip": "Sprzęt do nurkowania pobrzękuje", - "create.subtitle.mechanical_press_activation": "Mechaniczna prasa się uruchamia", - "create.subtitle.contraption_assemble": "Maszyna przesuwa się", - "create.subtitle.crafter_click": "Mechaniczny stół rzemieślniczy stuka", - "create.subtitle.depot_plop": "Przedmiot ląduje", - "create.subtitle.confirm": "Dźwięk potwierdzenia", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "PRZYKŁADOWY PRZEDMIOT (jedynie znacznik, że ten dymek istnieje)", - "item.create.example_item.tooltip.summary": "Krótki opis przedmiotu. _Podkreślenia_, ha, podkreślają termin.", - "item.create.example_item.tooltip.condition1": "Kiedy to", - "item.create.example_item.tooltip.behaviour1": "Wtedy ten przedmiot to robi (zachowania pokazują się przy Shifcie)", - "item.create.example_item.tooltip.condition2": "A kiedy to", - "item.create.example_item.tooltip.behaviour2": "Możesz dodać tak wiele zachowań jak chcesz", - "item.create.example_item.tooltip.control1": "Kiedy przyciśnięto Ctrl", - "item.create.example_item.tooltip.action1": "Wyświetla się sterowanie.", - - "block.create.wooden_bracket.tooltip": "DREWNIANY WSPORNIK", - "block.create.wooden_bracket.tooltip.summary": "_Udekoruj_ swoje _wały_, _koła zębate_ i _rury_ drewnianą i przytulną podporą.", - - "block.create.metal_bracket.tooltip": "METALOWY WSPORNIK", - "block.create.metal_bracket.tooltip.summary": "_Udekoruj_ swoje _wały_, _koła zębate_ i _rury_ wytrzymałą, przemysłową podporą.", - - "block.create.copper_casing.tooltip": "MIEDZIANA OBUDOWA", - "block.create.copper_casing.tooltip.summary": "Solidna obudowa dla maszyn, z wieloma zastosowaniami. Przydatna w dekoracji.", - "block.create.copper_casing.tooltip.condition1": "Kiedy użyta na rurze", - "block.create.copper_casing.tooltip.behaviour1": "_Przykrywa_ rurę _miedzianą obudową_.  Połączenia izolowanych rur zostaną _unieruchomione_ i nie będą reagować na zmiany w ich otoczeniu.", - - "block.create.encased_fluid_pipe.tooltip": "IZOLOWANA RURA", - "block.create.encased_fluid_pipe.tooltip.summary": "Rura _przykryta_ miedzianą obudową.", - - "block.create.seat.tooltip": "SIEDZENIE", - "block.create.seat.tooltip.summary": "Usiądź i ciesz się jazdą! Przyczepi gracza do _ruchomej maszyny_.  Również świetne do tworzenia stojących mebli! Dostępne w wielu kolorach.", - "block.create.seat.tooltip.condition1": "Kliknięcie PPM na siedzenie", - "block.create.seat.tooltip.behaviour1": "Sadza gracza na _siedzeniu_. Naciśnij lewy Shift, aby opuścić _siedzenie_.", - - "item.create.blaze_cake.tooltip": "PŁOMIENNE CIASTO", - "item.create.blaze_cake.tooltip.summary": "Pyszna przekąska dla Twoich cięzko pracujących _płomiennych palników_. Rozpala je wszystkie!", - - "block.create.fluid_pipe.tooltip": "RURA", - "block.create.fluid_pipe.tooltip.summary": "Używana do transportu _płynów_. _Mechaniczna pompa_ jest potrzebna, aby wprawić płyny w ruch.", - "block.create.fluid_pipe.tooltip.condition1": "Transport płynów", - "block.create.fluid_pipe.tooltip.behaviour1": "Może połączyć się ze pojemnikami, takimi jak _tygle_ czy _zbiorniki_. Odsłonięte zakończenia rur mogą osuszać lub wypełniać płynami. Uważaj na przecieki!", - "block.create.fluid_pipe.tooltip.condition2": "Kliknięcie PPM z użyciem klucza", - "block.create.fluid_pipe.tooltip.behaviour2": "Tworzy w rurze _okno_, jeśli jest to możliwe.", - - "block.create.hose_pulley.tooltip": "KRĄŻEK Z WĘŻEM", - "block.create.hose_pulley.tooltip.summary": "Używane do _osuszania_ lub _wypełniania_ płynami.", - "block.create.hose_pulley.tooltip.condition1": "Kiedy zasilone siłą obrotową", - "block.create.hose_pulley.tooltip.behaviour1": "_Podnosi_ lub _opuszcza_ wąż; pozycja węża określa, do jakiej _wysokości_ będzie on działał.", - "block.create.hose_pulley.tooltip.condition2": "Kiedy płyny wyciągane są z węża", - "block.create.hose_pulley.tooltip.behaviour2": "Rozpoczyna _osuszanie_ bloków ze zbiornika, do którego opuszczono wąż. Bardzo duże zbiorniki będą uznawane za _nieskończone_.", - "block.create.hose_pulley.tooltip.condition3": "Kiedy płyny pompowane są do węża\n", - "block.create.hose_pulley.tooltip.behaviour3": "Rozpoczyna _wypełnianie_ bloków płynem, aż do wysokości węża.", - - "block.create.fluid_tank.tooltip": "ZBIORNIK", - "block.create.fluid_tank.tooltip.summary": "_Składuje_ wszystkie Twoje ulubione _płyny_. Zmienia rozmiar wraz z wysokością i szerokością.", - "block.create.fluid_tank.tooltip.condition1": "Kliknięcie PPM kluczem", - "block.create.fluid_tank.tooltip.behaviour1": "Tworzy w zbiorniku _okno_, jeśli jest to możliwe.", - - "block.create.creative_fluid_tank.tooltip": "KREATYWNY ZBIORNIK", - "block.create.creative_fluid_tank.tooltip.summary": "Ten _zbiornik_ pozwala na nieskończone powielanie każdego płynu. Zmienia rozmiar wraz z wysokością i szerokością.", - "block.create.creative_fluid_tank.tooltip.condition1": "Kiedy w zbiorniku", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Wszystko, co _wyciąga_ z tego zbiornika będzie dostarczać _nieskończoną ilość_ wybranego płynu. Płyny wpompowane do tego zbiornika będą niszczone.", - "block.create.creative_fluid_tank.tooltip.condition2": "Kliknięcie PPM kluczem", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Tworzy w zbiorniku _okno_, jeśli jest to możliwe.", - - "block.create.fluid_valve.tooltip": "ZAWÓR", - "block.create.fluid_valve.tooltip.summary": "Zatrzymuje przepływ płynu przez rurę", - "block.create.fluid_valve.tooltip.condition1": "Kontrola nad przepływem", - "block.create.fluid_valve.tooltip.behaviour1": "Zastosowanie _siły obrotu_ zamknie _zawór_, zatrzymując przepływ płynu. Odwróć kierunek siły obrotu, aby _otworzyć_ zawór.", - - "block.create.mechanical_pump.tooltip": "MECHANICZNA POMPA", - "block.create.mechanical_pump.tooltip.summary": "Pobiera _siłę obrotu_ i używa jej, aby pompować płyn przez _rurę_. Posiada maksymalny zasięg w obie strony. (domyślnie 16 bloków)", - "block.create.mechanical_pump.tooltip.condition1": "Przepływ", - "block.create.mechanical_pump.tooltip.behaviour1": "Zastosowanie _siły obrotu_ wytwarza ciśnienie, które przepycha _płyn_ przez system _rur_. Odwróć kierunek siły obrotu, aby odwrócić kierunek przepływu.", - "block.create.mechanical_pump.tooltip.control1": "Kliknięcie PPM kluczem", - "block.create.mechanical_pump.tooltip.action1": "Odwraca kierunek _pompowania_.", - - "block.create.smart_fluid_pipe.tooltip": "INTELIGENTA RURA", - "block.create.smart_fluid_pipe.tooltip.summary": "Rura z _filtrem_. Może wybrać, jakie płyny mogą zostać przepuszczone.", - "block.create.smart_fluid_pipe.tooltip.condition1": "Kiedy płyny są wepchnięte", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Inteligentne rury otrzymujące płyn, który nie pasuje do filtra, zablokują przepływ.", - "block.create.smart_fluid_pipe.tooltip.condition2": "Kiedy przylegający do zbiornika", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Inteligentne rury _rozpoczynające_ przepływ z dowolnego zbiornika będą wyciągać jedynie te płyny, które _pasują_ do _filtra_.", - - "block.create.spout.tooltip": "KANISTER", - "block.create.spout.tooltip.summary": "Przydatny do _napełniania_ płynami.", - "block.create.spout.tooltip.condition1": "Transport płynów", - "block.create.spout.tooltip.behaviour1": "Kiedy _pojemnik_, taki jak _wiaderko_ lub _butelka_ jest położona pod spodem, kanister spróbuje napełnić go przechowywanym wewnątrz _płynem_.", - "block.create.spout.tooltip.condition2": "Automatyzacja płynów", - "block.create.spout.tooltip.behaviour2": "Kanister postawiony nad _taśmociągiem_ lub _składnicą_ automatycznie zareaguje na _pojemniki_ przechodzące pod spodem.", - - "block.create.item_drain.tooltip": "ODPŁYW", - "block.create.item_drain.tooltip.summary": "Metalowa kratka do opróżniania _pojemników_ z _płynami_.", - "block.create.item_drain.tooltip.condition1": "Transport płynów", - "block.create.item_drain.tooltip.behaviour1": "Kiedy _pojemnik_, taki jak _wiaderko_ lub _butelka_ jest wsadzony od boku, odpływ spróbuje opróżnić go do własnego zbiornika. Przedmiot będzie następnie wyrzucony drugą stroną.", - - "item.create.wand_of_symmetry.tooltip": "RÓŻDŻKA SYMETRII", - "item.create.wand_of_symmetry.tooltip.summary": "Idealnie odbija lustrzanie bloki wzdłuż wybranych płaszczyzn.", - "item.create.wand_of_symmetry.tooltip.condition1": "Kiedy w pasku szybkiego wyboru", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Pozostaje aktywna", - "item.create.wand_of_symmetry.tooltip.control1": "Kliknięcie PPM na ziemię", - "item.create.wand_of_symmetry.tooltip.action1": "_Tworzy_ lub _przenosi_ lustro", - "item.create.wand_of_symmetry.tooltip.control2": "Kliknięcie PPM w powietrzu", - "item.create.wand_of_symmetry.tooltip.action2": "_Usuwa_ aktywne lustro", - "item.create.wand_of_symmetry.tooltip.control3": "Kliknięcie PPM w czasie skradania", - "item.create.wand_of_symmetry.tooltip.action3": "Otwiera _ustawienia_.", - - "item.create.handheld_worldshaper.tooltip": "RĘCZNY KSZTAŁTOWACZ", - "item.create.handheld_worldshaper.tooltip.summary": "Poręczne narzędzie do tworzenia _krajobrazów_ i _cech terenu_.", - "item.create.handheld_worldshaper.tooltip.control1": "Kliknięcie LPM na blok", - "item.create.handheld_worldshaper.tooltip.action1": "Przypisuje do narzędzia wybrany blok.", - "item.create.handheld_worldshaper.tooltip.control2": "Kliknięcie PPM na blok", - "item.create.handheld_worldshaper.tooltip.action2": "Stosuje obecnie wybrany _pędzel_ i _narzędzie_ w docelowej lokalizacji.", - "item.create.handheld_worldshaper.tooltip.control3": "Kliknięcie PPM w czasie skradania", - "item.create.handheld_worldshaper.tooltip.action3": "Otwiera _ustawienia_.", - - "item.create.tree_fertilizer.tooltip": "NAWÓZ DO DRZEW", - "item.create.tree_fertilizer.tooltip.summary": "Silna kombinacja minerałów odpowiednich do nawożenia pospolitych gatunków drzew", - "item.create.tree_fertilizer.tooltip.condition1": "Kiedy użyto na sadzonce", - "item.create.tree_fertilizer.tooltip.behaviour1": "Przyspiesza wzrost drzew, _pomimo dostępnej przestrzeni_.", - - "item.create.extendo_grip.tooltip": "WYDŁUŻONY CHWYTAK", - "item.create.extendo_grip.tooltip.summary": "Mocno _wydłuża zasięg_ rąk posiadacza.", - "item.create.extendo_grip.tooltip.condition1": "Kiedy w drugiej ręce", - "item.create.extendo_grip.tooltip.behaviour1": "_Wydłuża zasięg_ głównej ręki.", - - "item.create.filter.tooltip": "FILTR", - "item.create.filter.tooltip.summary": "_Kontroluje_ wejścia i wyjścia urządzeń logistycznych z _większą precyzją_, przypasowując przedmioty do listy przedmiotów zawartej w filtrze lub wielu filtrach schowanych jeden w drugi.", - "item.create.filter.tooltip.condition1": "Kiedy w slocie na filtr", - "item.create.filter.tooltip.behaviour1": "_Kontroluje_ przepływ przedmiotów według jego _konfiguracji_.", - "item.create.filter.tooltip.condition2": "Kliknięcie PPM", - "item.create.filter.tooltip.behaviour2": "Otwiera _ustawienia_.", - - "item.create.attribute_filter.tooltip": "FILTR ATRYBUTOWY", - "item.create.attribute_filter.tooltip.summary": "_Kontroluje_ wejścia i wyjścia urządzeń logistycznych z _większą precyzją_, przypasowując przedmioty do listy właściwości przedmiotów zawartej w filtrze.", - "item.create.attribute_filter.tooltip.condition1": "Kiedy w slocie na filtr", - "item.create.attribute_filter.tooltip.behaviour1": "_Kontroluje_ przepływ przedmiotów według jego _konfiguracji_.", - "item.create.attribute_filter.tooltip.condition2": "Kliknięcie PPM", - "item.create.attribute_filter.tooltip.behaviour2": "Otwiera _ustawienia_.", - - "item.create.empty_schematic.tooltip": "PUSTY SCHEMAT", - "item.create.empty_schematic.tooltip.summary": "Używany, jako składnik do receptur i do pisania w _stole do planowania_.", - - "item.create.schematic.tooltip": "SCHEMAT", - "item.create.schematic.tooltip.summary": "Przechowuje strukturę do postawienia w świecie. Ustaw hologram według uznania i użyj _Schematoarmaty_, aby ją zbudować.", - "item.create.schematic.tooltip.condition1": "Kiedy w ręce", - "item.create.schematic.tooltip.behaviour1": "Może zostać _ustawiona_ z użyciem narzędzi wyświetlonych na ekranie.", - "item.create.schematic.tooltip.control1": "Kliknięcie PPM w czasie skradania", - "item.create.schematic.tooltip.action1": "Otwiera _ustawienia_.", - - "item.create.schematic_and_quill.tooltip": "SCHEMAT Z PIÓREM", - "item.create.schematic_and_quill.tooltip.summary": "Używany do zapisania struktury z Twojego świata do pliku .nbt", - "item.create.schematic_and_quill.tooltip.condition1": "Krok 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Zaznacz dwa rogi prawym przyciskiem myszy.", - "item.create.schematic_and_quill.tooltip.condition2": "Krok 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_[Ctrl]+Przewijaj_ patrząc się na ściany, aby dostosować rozmiar. Kliknij znowu PPM, aby zapisać.", - "item.create.schematic_and_quill.tooltip.control1": "Kliknięcie PPM", - "item.create.schematic_and_quill.tooltip.action1": "Wybierz róg/potwierdź zapisanie.", - "item.create.schematic_and_quill.tooltip.control2": "Trzymane w ręce + Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Zaznacz rogi _w powietrzu_. _Przewijaj_, aby dostosować dystans.", - "item.create.schematic_and_quill.tooltip.control3": "Kliknięcie PPM w czasie skradania", - "item.create.schematic_and_quill.tooltip.action3": "_Resetuje_ i usuwa zaznaczenie.", - - "block.create.schematicannon.tooltip": "SCHEMATOARMATA", - "block.create.schematicannon.tooltip.summary": "Strzela blokami, aby odtworzyć wybrany schemat w świecie. Zużywa przedmioty z sąsiadujących bloków, potrzebuje _prochu_ jako paliwo.", - "block.create.schematicannon.tooltip.condition1": "Kliknięcie PPM", - "block.create.schematicannon.tooltip.behaviour1": "Otwiera _interfejs_.", - - "block.create.schematic_table.tooltip": "STÓŁ DO PLANOWANIA", - "block.create.schematic_table.tooltip.summary": "Przypisuje zapisane schematy do _pustego schematu_.", - "block.create.schematic_table.tooltip.condition1": "Kiedy włożono pusty schemat", - "block.create.schematic_table.tooltip.behaviour1": "Pobiera wybrany plik z Twojego folderu ze schematami", - - "item.create.goggles.tooltip": "GOGLE", - "item.create.goggles.tooltip.summary": "Para okularów służąca do rozszerzania Twojej wizji o _przydatne informacje_.", - "item.create.goggles.tooltip.condition1": "Kiedy założone", - "item.create.goggles.tooltip.behaviour1": "Pokazuje _kolorowe wskazówki_ odpowiadające _prędkości obrotu_ komponentu, jak i również ich _wpływ_ oraz _odporność na obciążenie_.", - "item.create.goggles.tooltip.condition2": "Patrząc na miernik", - "item.create.goggles.tooltip.behaviour2": "Pokazuje szczegółowe informacje na temat _prędkości_ lub _obciążenia_ systemu, do którego miernik jest podłączony.", - "item.create.goggles.tooltip.condition3": "Patrząc na zbiorniki", - "item.create.goggles.tooltip.behaviour3": "Pokazuje szczegółowe informacje na temat _pojemności_ zbiornika i wszelkich _płynów_ przechowywanych wewnątrz.", - - "item.create.wrench.tooltip": "KLUCZ", - "item.create.wrench.tooltip.summary": "Przydatne narzędzie do pracy z maszynami. Może być użyty do _obracania_, _rozbiórki_ i _konfiguracji_ komponentów.", - "item.create.wrench.tooltip.control1": "Kliknięcie PPM na ruchomy blok", - "item.create.wrench.tooltip.action1": "_Obraca_ komponenty do- lub od- strony, na którą kliknięto.", - "item.create.wrench.tooltip.control2": "Kliknięcie PPM w czasie skradania", - "item.create.wrench.tooltip.action2": "_Rozmontowuje_ komponenty i wkłada je z powrotem do _Twojego ekwipunku_.", - - "block.create.nozzle.tooltip": "DYSZA", - "block.create.nozzle.tooltip.summary": "Przyczep do przedniej części _izolowanego wiatraka_, aby rozprowadzić jego efekt na _wszystkie strony_.", - - "block.create.cuckoo_clock.tooltip": "ZEGAR Z KUKUŁKĄ", - "block.create.cuckoo_clock.tooltip.summary": "Kunsztowny wytwór do _dekoracji_ przestrzeni mieszkalnej i _mierzenia czasu_.", - "block.create.cuckoo_clock.tooltip.condition1": "Kiedy zasilony siłą obrotową", - "block.create.cuckoo_clock.tooltip.behaviour1": "Pokazuje _obecny czas_ i gra melodyjkę dwa razy dziennie. Aktywuje się raz w _południe_ i raz o zmierzchu, jak tylko _możliwy jest sen_.", - - "block.create.turntable.tooltip": "TALERZ OBROTOWY", - "block.create.turntable.tooltip.summary": "Zamienia _siłę obrotu_ na _chorobę lokomocyjną_.", - - "block.create.portable_fluid_interface.tooltip": "PRZENOŚNY INTERFEJS PŁYNÓW", - "block.create.portable_fluid_interface.tooltip.summary": "Przenośne miejsce wymiany służące do _transportu płynów_ z- i do _struktury_ przesuwanej przez tłok, łożysko, wagonik, lub krążek. Dwa interfejsy muszą być _skierowane w swoją stronę_ i być _od 1 do 2 bloków_ od siebie.", - "block.create.portable_fluid_interface.tooltip.condition1": "W czasie poruszania", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Współpracuje ze stojącymi _przenośnymi interfejsami magazynu_, aby przetransportować płyn z- lub do maszyny. Rury wpychające lub wyciągające ze _stojącego interfejsu_ będą działać na zbiorniki _bezpośrednio w maszynie_. Maszyna na chwile stanie, aby wymienić płyny.", - "block.create.portable_fluid_interface.tooltip.condition2": "Kiedy zasilony przez Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "Natychmiastowo _ucina_ jakiekolwiek aktywne połączenia.", - - "block.create.stockpile_switch.tooltip": "PRZEŁĄCZNIK ZAWARTOŚCIOWY", - "block.create.stockpile_switch.tooltip.summary": "Przełącza sygnał Redstone bazując na _ilości przedmiotów_ przechowywanych w sąsiadującym bloku. Może posiadać filtr. W odróżnieniu od _komparatora_, przełącznik zawartościowy pozwala na konfigurację _progów_, przy których sygnały są odwrotne.", - "block.create.stockpile_switch.tooltip.condition1": "Kliknięcie PPM", - "block.create.stockpile_switch.tooltip.behaviour1": "Otwiera _ustawienia_.", - - "block.create.content_observer.tooltip": "DETEKTOR ZAWARTOŚCI", - "block.create.content_observer.tooltip.summary": "_Wykrywa przedmioty_ zawarte w sąsiadującym _bloku_ lub _taśmociągu_, które pasują do ustalonego filtra. Kiedy obserwowany blok _zawiera_ ten przedmiot, detektor wyśle _sygnał Redstone_.", - - "block.create.adjustable_crate.tooltip": "REGULOWANA SKRZYNKA", - "block.create.adjustable_crate.tooltip.summary": "Ta skrzynia pozwala na _ręczną kontrolę_ jej pojemności. Może pomieścić do _16 stosów_ dowolnego przedmiotu. Działa z _komparatorami_.", - "block.create.adjustable_crate.tooltip.condition1": "Kliknięcie PPM", - "block.create.adjustable_crate.tooltip.behaviour1": "Otwiera _interfejs_.", - - "block.create.creative_crate.tooltip": "SKRZYNKA BEZ DNA", - "block.create.creative_crate.tooltip.summary": "Ta skrzynia pozwala na _nieskończone powielanie_ dowolnego przedmiotu. Postaw obok _Schematoarmaty_, aby usunąć wszelkie wymagania dotyczące materiałów.", - "block.create.creative_crate.tooltip.condition1": "Kiedy przedmiot jest w slocie na filtr", - "block.create.creative_crate.tooltip.behaviour1": "Bloki _wyciągające_ przedmioty z tego bloku będą miały _nieskończony zapas_ wybranego przedmiotu. Przedmioty włożone do tej skrzynki będą _usuwane_.", - - "block.create.controller_rail.tooltip": "TORY STERUJĄCE", - "block.create.controller_rail.tooltip.summary": "_Wielokierunkowy_ zasilany tor pozwalający na _dokładną kontrolę_ nad _prędkością wagonika_.", - "block.create.controller_rail.tooltip.condition1": "Kiedy zasilone przez Redstone", - "block.create.controller_rail.tooltip.behaviour1": "_Przyspiesza_ lub _spowalnia_ przejeżdżające _wagoniki_, bazując na sile sygnału. Przekazuje sygnał do sąsiadujących torów. Zasilenie dwóch połączonych torów innymi siłami sygnału spowoduje, że tory pomiędzy nimi będą miały stopniowo zmieniającą się siłę sygnału.", - - "item.create.sand_paper.tooltip": "PAPIER ŚCIERNY", - "item.create.sand_paper.tooltip.summary": "Szorstki papier używany do _polerowania_ materiałów. Może być automatycznie wykorzystywany z użyciem _aplikatora_.", - "item.create.sand_paper.tooltip.condition1": "Kiedy użyto", - "item.create.sand_paper.tooltip.behaviour1": "_Poleruje_ przedmioty trzymane w _drugiej ręce_ lub _leżące na ziemi_ w linii wzroku.", - - "item.create.builders_tea.tooltip": "HERBATKA BUDOWNICZEGO", - "item.create.builders_tea.tooltip.summary": "Idealny napój na początek dnia - _sycący_ i _motywujący_", - - "item.create.refined_radiance.tooltip": "ŚWIETLISTY MATERIAŁ", - "item.create.refined_radiance.tooltip.summary": "Chromatyczny materiał powstały z _absorbcji światła_.", - - "item.create.shadow_steel.tooltip": "MROCZNA STAL", - "item.create.shadow_steel.tooltip.summary": "Chromatyczny materiał powstały w _otchłani_.", - - "item.create.minecart_coupling.tooltip": "ŁĄCZNIK WAGONIKÓW", - "item.create.minecart_coupling.tooltip.summary": "_Łączy_ wszystkie Twoje _wagoniki_ lub _maszyny torowe_, tworząc majestatyczny pociąg.", - "item.create.minecart_coupling.tooltip.condition1": "Kiedy użyto na wagoniku", - "item.create.minecart_coupling.tooltip.behaviour1": "_Łączy_ dwa wagoniki, próbując utrzymać je w stałej odległości od siebie.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Praca w toku!", - "create.tooltip.randomWipDescription0": "Trzymać z dala od dzieci.", - "create.tooltip.randomWipDescription1": "Mała panda ginie za każdym razem, kiedy patrzysz na ten przedmiot. Za. Każdym. Razem.", - "create.tooltip.randomWipDescription2": "Używaj na własną odpowiedzialność.", - "create.tooltip.randomWipDescription3": "To nie ten przedmiot, którego szukasz, proszę się rozejść.", - "create.tooltip.randomWipDescription4": "Ten przedmiot ulegnie autodestrukcji za 10 sekund. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Uwierz mi, jest bezużyteczny.", - "create.tooltip.randomWipDescription6": "Używając tego przedmiotu, zgadzasz się na warunki umowy.", - "create.tooltip.randomWipDescription7": "Ten przedmiot chyba nie jest dla Ciebie. A może ten?", - "create.tooltip.randomWipDescription8": "Użyj tego i natychmiast będziesz tego żałował.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "Przytrzymaj [%1$s], aby przeanalizować", - "create.ponder.subject": "Temat tej sceny", - "create.ponder.pondering": "Temat analizy:", - "create.ponder.identify_mode": "Tryb identyfikacji aktywny. Naciśnij [%1$s], aby wyłączyć", - "create.ponder.associated": "Powiązane hasła", - "create.ponder.close": "Zamknij", - "create.ponder.identify": "Identyfikacja", - "create.ponder.next": "Następna scena", - "create.ponder.previous": "Poprzednia scena", - "create.ponder.replay": "Powtórka", - "create.ponder.think_back": "Powrót", - "create.ponder.slow_text": "Komfortowe czytanie", - "create.ponder.shared.movement_anchors": "Z pomocą stelaży lub Super Glue, większe struktury mogą być przesuwane.", - "create.ponder.shared.rpm32": "32 Ob/min", - "create.ponder.shared.sneak_and": "Skradanie +", - "create.ponder.shared.storage_on_contraption": "Pojemniki przyłączone do maszyny będą podnosiły przedmioty automatycznie", - "create.ponder.shared.behaviour_modify_wrench": "To zachowanie może być zmodyfikowane przy pomocy klucza", - "create.ponder.shared.rpm8": "8 Ob/min", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "Źródło: 16 Ob/min", - "create.ponder.shared.rpm16": "16 Ob/min", - "create.ponder.tag.kinetic_sources": "Źródła siły obrotowej", - "create.ponder.tag.kinetic_sources.description": "Komponenty, które generują siłę obrotu", - "create.ponder.tag.contraption_actor": "Komponenty aktywne maszyn", - "create.ponder.tag.contraption_actor.description": "Komponenty, które posiadają specjalne zachowanie będąc podłączonymi do maszyny", - "create.ponder.tag.arm_targets": "Cele dla mechanicznego ramienia", - "create.ponder.tag.arm_targets.description": "Komponenty, które mogą być wybrane, jako wejście lub wyjście dla mechanicznego ramienia", - "create.ponder.tag.logistics": "Transport przedmiotów", - "create.ponder.tag.logistics.description": "Komponenty, które pomagają w transporcie przedmiotów", - "create.ponder.tag.movement_anchor": "Komponenty ruchome", - "create.ponder.tag.movement_anchor.description": "Komponenty, które pozwalają na tworzenie ruchomych maszyn, poruszając ją na wiele różnych sposobów.", - "create.ponder.tag.creative": "Tryb kreatywny", - "create.ponder.tag.creative.description": "Komponenty niedostępne na trybie przetrwania", - "create.ponder.tag.kinetic_relays": "Bloki obrotowe", - "create.ponder.tag.kinetic_relays.description": "Komponenty, które pomagają w przekazywaniu siły obrotowej w inne miejsca", - "create.ponder.tag.windmill_sails": "Bloki żaglo-podobne", - "create.ponder.tag.windmill_sails.description": "Bloki, które dokładają się do siły, z jaką obracają się łopaty maszyny wiatrakowej.", - "create.ponder.tag.contraption_assembly": "Bloki do tworzenia maszyn", - "create.ponder.tag.contraption_assembly.description": "Narzędzia i komponenty używane do konstrukcji ruchomych maszyn", - "create.ponder.tag.decoration": "Dekoracje", - "create.ponder.tag.decoration.description": "Komponenty używane głównie do celów estetycznych", - "create.ponder.tag.kinetic_appliances": "Urządzenia obrotowe", - "create.ponder.tag.kinetic_appliances.description": "Komponenty używające siły obrotowej", - "create.ponder.tag.redstone": "Komponenty logiczne", - "create.ponder.tag.redstone.description": "Komponenty przydatne w Redstonie", - "create.ponder.tag.fluids": "Manipulator płynów", - "create.ponder.tag.fluids.description": "Komponenty przydatne przy pracy z płynami", - - "create.ponder.adjustable_pulse_repeater.header": "Kontrola sygnałów z wykorzystaniem regulowanych przekaźników pulsu", - "create.ponder.adjustable_pulse_repeater.text_1": "Regulowane przekaźniki pulsu emitują krótki puls po opóźnieniu", - "create.ponder.adjustable_pulse_repeater.text_2": "Używając rolki w myszce można modyfikować opóźnienie", - "create.ponder.adjustable_pulse_repeater.text_3": "Opóźnienia mogą mieć nawet do 30 minut", - - "create.ponder.adjustable_repeater.header": "Kontrola sygnałów z wykorzystaniem regulowanych przekaźników\n", - "create.ponder.adjustable_repeater.text_1": "Regulowane przekaźniki zachowują się podobnie do zwykłych przekaźników", - "create.ponder.adjustable_repeater.text_2": "Ładują się przez określony czas...", - "create.ponder.adjustable_repeater.text_3": "...i stygną przez ten sam czas", - "create.ponder.adjustable_repeater.text_4": "Używając rolki w myszce można modyfikować czas ładowania", - "create.ponder.adjustable_repeater.text_5": "Czasy ładowania mogą mieć nawet do 30 minut", - - "create.ponder.analog_lever.header": "Kontrola sygnałów z wykorzystaniem dźwigni analogowej", - "create.ponder.analog_lever.text_1": "Dźwignie analogowe są kompaktowymi i dokładnymi źródłami sygnału Redstone", - "create.ponder.analog_lever.text_2": "Kliknij PPM, aby zwiększyć wysyłaną przez nie siłę sygnału ", - "create.ponder.analog_lever.text_3": "Kliknij PPM skradając się, aby zmniejszyć wysyłaną przez nie siłę sygnału ", - - "create.ponder.andesite_tunnel.header": "Używanie andezytowych tuneli", - "create.ponder.andesite_tunnel.text_1": "Andezytowe tunele mogą być użyte do przykrycia Twoich taśmociągów", - "create.ponder.andesite_tunnel.text_2": "Kiedy andezytowy tunel ma połączenie z jego boku...", - "create.ponder.andesite_tunnel.text_3": "...będzie oddzielał dokładnie jeden przedmiot na każde wyjście", - "create.ponder.andesite_tunnel.text_4": "Reszta przedmiotów będzie kontynuowało swoją podróż", - - "create.ponder.basin.header": "Przetwarzanie przedmiotów w tyglu", - "create.ponder.basin.text_1": "Tygiel może przechowywać przedmioty i płyny do późniejszej obróbki", - "create.ponder.basin.text_2": "Po obróbce, tygle spróbują wyrzucić gotowy przedmiot z boku, jeden blok pod spodem", - "create.ponder.basin.text_3": "Jeśli stoi tam odpowiedni komponent, z boku tygla pojawi się wylot", - "create.ponder.basin.text_4": "Jest tu wiele opcji", - "create.ponder.basin.text_5": "Produkty będą pobrane przez poniższy pojemnik", - "create.ponder.basin.text_6": "Bez wylotu, tygiel zachowa produkty przez niego wytworzone", - "create.ponder.basin.text_7": "Może to być przydatne, jeśli przedmioty te muszą być ponownie użyte jako składniki", - "create.ponder.basin.text_8": "Gotowe przedmioty muszą być wyciągnięte z tygla", - "create.ponder.basin.text_9": "Filtr może być przydatny, aby zapobiec wyciąganiu nieprzerobionych przedmiotów", - - "create.ponder.bearing_modes.header": "Tryby ruchu dla mechanicznego łożyska", - "create.ponder.bearing_modes.text_1": "Kiedy zatrzymane, mechaniczne łożysko umieści strukturę w najbliższej możliwej przestrzeni", - "create.ponder.bearing_modes.text_2": "Może zostać ustawiony, aby nigdy nie powracał do stałych bloków, lub tylko blisko kąta, z jakiego zaczął", - - "create.ponder.belt_casing.header": "Przykrywanie taśmociągów", - "create.ponder.belt_casing.text_1": "Mosiężne lub andezytowe obudowy mogą być użyte do dekoracji taśmociągów", - "create.ponder.belt_casing.text_2": "Klucz może zostać użyty do usunięcia obudowy", - - "create.ponder.belt_connector.header": "Używanie taśmociągów", - "create.ponder.belt_connector.text_1": "Kliknięcie PPM na dwa wały połączy je taśmociągiem", - "create.ponder.belt_connector.text_2": "Przypadkowe wybory mogą być anulowane klikając na nie PPM skradając się", - "create.ponder.belt_connector.text_3": "Dodatkowe wały mogą zostać dodane w środku taśmociągu", - "create.ponder.belt_connector.text_4": "Wały połączone taśmociągiem będą się obracały z taką samą prędkością i kierunkiem", - "create.ponder.belt_connector.text_5": "Dodatkowe wały mogą zostać usunięte przy pomocy klucza", - "create.ponder.belt_connector.text_6": "Taśmociągi mogą zostać zabarwione w celach estetycznych", - - "create.ponder.belt_directions.header": "Prawidłowe orientacje taśmociągów", - "create.ponder.belt_directions.text_1": "Taśmociągi nie mogą się łączyć w losowych kierunkach", - "create.ponder.belt_directions.text_2": "1. Mogą się łączyć poziomo", - "create.ponder.belt_directions.text_3": "2. Mogą się łączyć ukośnie", - "create.ponder.belt_directions.text_4": "3. Mogą się łączyć pionowo", - "create.ponder.belt_directions.text_5": "4. I mogą łączyć pionowe wały poziomo", - "create.ponder.belt_directions.text_6": "To są wszystkie możliwe kierunki połączeń. Taśmociągi mogą mieć dowolną długość od 2 do 20 bloków", - - "create.ponder.belt_transport.header": "Używanie taśmociągów w celach logistycznych", - "create.ponder.belt_transport.text_1": "Ruchome taśmociągi będą przesuwały przedmioty lub inne byty", - "create.ponder.belt_transport.text_2": "Kliknij PPM pustą ręką, aby zabrać przedmiot z taśmociągu", - - "create.ponder.blaze_burner.header": "Napełnianie płomiennych palników", - "create.ponder.blaze_burner.text_1": "Płomienne palniki dają ciepło potrzebne do obróbki niektórych przedmiotów w tyglu", - "create.ponder.blaze_burner.text_2": "Aby uzyskać ciepło, płomyk uwięziony wewnątrz musi dostać jakieś łatwopalne przedmioty", - "create.ponder.blaze_burner.text_3": "Z użyciem płomiennego ciasta, palnik może uzyskać szczególnie wysoką temperaturę", - "create.ponder.blaze_burner.text_4": "Dostarczanie płomykowi przedmiotów może zostać zautomatyzowane z użyciem aplikatorów lub mechanicznych ramion", - - "create.ponder.brass_funnel.header": "Mosiężny lej", - "create.ponder.brass_funnel.text_1": "Andezytowe leje mogą pobierać jedynie pojedyncze przedmioty", - "create.ponder.brass_funnel.text_2": "Mosiężne leje mogą pobierać nawet pełne stosy", - "create.ponder.brass_funnel.text_3": "Przewijanie na slocie filtrującym pozwala na precyzyjną kontrolę nad maksymalną wielkością stosu", - "create.ponder.brass_funnel.text_4": "Użycie przedmiotu patrząc na slot filtrujący spowoduje, że lej będzie przesyłał tylko pasujące przedmioty", - - "create.ponder.brass_tunnel.header": "Używanie mosiężnych tuneli", - "create.ponder.brass_tunnel.text_1": "Mosiężne tunele mogą być użyte do przykrycia Twoich taśmociągów", - "create.ponder.brass_tunnel.text_2": "Mosiężne tunele posiadają slot filtrujący na każdej otwartej stronie", - "create.ponder.brass_tunnel.text_3": "Filtry przy wejściach zwyczajnie nie przepuszczają niepasujących przedmiotów", - "create.ponder.brass_tunnel.text_4": "Filtry przy wyjściach mogą być użyte do sortowania przedmiotów", - "create.ponder.brass_tunnel.text_5": "Jeśli przedmiot ma wiele możliwych wyjść, tryb dystrybucji zdecyduje jak mają się zachować", - "create.ponder.brass_tunnel.text_6": "Tunele na przylegających taśmociągach stworzą połączenie", - "create.ponder.brass_tunnel.text_7": "Przybyłe przedmioty będą dystrybuowane na wszystkie połączone wyjścia", - "create.ponder.brass_tunnel.text_8": "Przedmioty mogą być również wrzucone prosto do tunelu", - - "create.ponder.brass_tunnel_modes.header": "Tryby dystrybucji mosiężnego tunelu", - "create.ponder.brass_tunnel_modes.text_1": "Tryb dystrybucji mosiężnego tunelu może zostać wybrany z użyciem klucza", - "create.ponder.brass_tunnel_modes.text_10": "'Synchronizuj wejścia' jest trybem unikalnym dla mosiężnych tuneli", - "create.ponder.brass_tunnel_modes.text_11": "Przedmioty są przepuszczane jedynie, kiedy przed każdym połączonym tunelem czeka przedmiot", - "create.ponder.brass_tunnel_modes.text_12": "Dzięki temu mamy pewność, że każdy taśmociąg przesyła przedmioty z taką samą szybkością", - "create.ponder.brass_tunnel_modes.text_2": "Tryb 'Podziel' będzie starał się rozdzielić przedmioty do każdego wyjścia po równo", - "create.ponder.brass_tunnel_modes.text_3": "Jeśli wyjście nie może już przyjąć więcej przedmiotów, zostanie pominięte", - "create.ponder.brass_tunnel_modes.text_4": "Tryb 'Wymuś podział' nigdy nie pominie żadnego wyjścia, a zamiast tego będzie czekał, aż wszystkie będą wolne", - "create.ponder.brass_tunnel_modes.text_5": "Tryb 'Dookoła' zachowuje wielkość stosu, i rozprowadza je do każdego wyjścia po kolei", - "create.ponder.brass_tunnel_modes.text_6": "Znowu: jeśli wyjście nie może już przyjąć więcej przedmiotów, zostanie pominięte", - "create.ponder.brass_tunnel_modes.text_7": "Tryb 'Dookoła (wymuszony)' nigdy nie pominie żadnego wyjścia", - "create.ponder.brass_tunnel_modes.text_8": "Tryb 'Preferuj najbliższe' priorytetyzuje najbliższe wyjście od wejścia, z którego przybył przedmiot", - "create.ponder.brass_tunnel_modes.text_9": "Tryb 'Losowo' rozdystrybuuje całe stosy do losowych wyjść", - - "create.ponder.cart_assembler.header": "Przesuwanie maszyn z użyciem montera wagoników", - "create.ponder.cart_assembler.text_1": "Zasilony monter wagoników przyczepia dołączone struktury do przejeżdżających wagoników", - "create.ponder.cart_assembler.text_2": "Niezasilony, odczepia struktury on przejeżdżających wagoników", - "create.ponder.cart_assembler.text_3": "Klucz pomoże Ci przenieść gotowy wagonik w inne miejsce", - - "create.ponder.cart_assembler_dual.header": "Konstruowanie wielowagonikowych struktur", - "create.ponder.cart_assembler_dual.text_1": "Jeśli dwa montery wagoników dzielą ze sobą jedną strukturę...", - "create.ponder.cart_assembler_dual.text_2": "...zasilenie dowolnego z nich przyczepi konstrukcję do obu wagoników", - "create.ponder.cart_assembler_dual.text_3": "Wagoniki będą się zachowywać jak te połączone łącznikiem", - - "create.ponder.cart_assembler_modes.header": "Dostosowywanie orientacji maszyn w wagoniku", - "create.ponder.cart_assembler_modes.text_1": "Maszyny w wagoniku obracają się wraz z wagonikiem", - "create.ponder.cart_assembler_modes.text_2": "Jeśli monter jest ustawiony na tryb 'Zablokuj obrót', maszyna nigdy nie zmieni swojej orientacji", - - "create.ponder.cart_assembler_rails.header": "Inne typy wagoników i torów", - "create.ponder.cart_assembler_rails.text_1": "Montery wagoników stojące na zwykłych torach nie zmienią prędkości przejeżdżającego wagonika", - "create.ponder.cart_assembler_rails.text_2": "Jeśli stoi na zasilanych lub sterujących torach, wagonik będzie stał w miejscu tak długo, aż nie zostaną tory zasilone", - "create.ponder.cart_assembler_rails.text_3": "Inne typy wagoników mogą być użyte jako baza dla maszyny", - "create.ponder.cart_assembler_rails.text_4": "Wagoniki z piecem będą ciągle zasilane, pobierając paliwo z doczepionych pojemników", - - "create.ponder.chain_drive.header": "Przekazywanie siły obrotowej z użyciem przekaźników łańcuchowych", - "create.ponder.chain_drive.text_1": "Przekaźniki łańcuchowe przekazują obroty do wszystkich połączonych przekaźników", - "create.ponder.chain_drive.text_2": "Wszystkie wały połączone w ten sposób będą obracać się w tą samą stronę", - "create.ponder.chain_drive.text_3": "Dowolna część w rzędzie może być obrócona o 90 stopni", - - "create.ponder.chain_gearshift.header": "Kontrolowanie prędkości obrotu z użyciem przekładników łańcuchowych", - "create.ponder.chain_gearshift.text_1": "Niezasilone przekładniki łańcuchowe zachowują się dokładnie tak samo jak przekaźniki łańcuchowe", - "create.ponder.chain_gearshift.text_2": "Kiedy zasilone, prędkość przekazywana do pozostałych przekładników jest podwojona", - "create.ponder.chain_gearshift.text_3": "Jeśli zasilony przekładnik nie jest źródłem obrotów, jego prędkość będzie zmniejszona dwukrotnie", - "create.ponder.chain_gearshift.text_4": "W oby przypadkach, pozostałe przekładniki będą pracować z dwukrotnie większą prędkością niż ten, który jest zasilony", - "create.ponder.chain_gearshift.text_5": "Z użyciem sygnałów analogowych, ta różnica może być dostosowana z większą dokładnością - pomiędzy 1 a 2x", - "create.ponder.chain_gearshift.text_6": "12 Ob/min", - - "create.ponder.chute.header": "Transport przedmiotów w dół z użyciem zsypów", - "create.ponder.chute.text_1": "Zsypy mogą transportować przedmioty pionowo z- i do pojemników", - "create.ponder.chute.text_2": "Używając klucza można stworzyć okno", - "create.ponder.chute.text_3": "Stawiając zsyp na bocznej stronie innego zsypu, będzie on skośny", - - "create.ponder.chute_upward.header": "Transport przedmiotów w górę przez zsypy", - "create.ponder.chute_upward.text_1": "Używając izolowanych wiatraków pod zsypem możliwy jest transport przedmiotów w górę zsypu", - "create.ponder.chute_upward.text_2": "Patrzenie na zsyp przez Gogle Inżyniera pokazuje informacje o kierunku funkcjonowania zsypu", - "create.ponder.chute_upward.text_3": "Od 'zablokowanej' strony przedmioty muszą być wkładane/wyciągane od boku", - - "create.ponder.clockwork_bearing.header": "Używanie mechanizmu zegarowego", - "create.ponder.clockwork_bearing.text_1": "Mechanizmy zegarowe przyczepiają do siebie bloki, które mają z przodu", - "create.ponder.clockwork_bearing.text_2": "Po dostarczeniu siły obrotowej, struktura obróci się, pokazując obecną godzinę", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "Kliknij PPM na mechanizm, aby zatrzymać lub rozpocząć obrót struktury", - "create.ponder.clockwork_bearing.text_6": "Przed wskazówką godzinową, można dodać kolejną strukturę", - "create.ponder.clockwork_bearing.text_7": "Upewnij się, że obie struktury nie są ze sobą połączone", - "create.ponder.clockwork_bearing.text_8": "Druga struktura będzie działać jak wskazówka minutowa", - - "create.ponder.clutch.header": "Kontrolowanie obrotu z użyciem sprzęgła", - "create.ponder.clutch.text_1": "Sprzęgło przekazuje obrót w linii prostej", - "create.ponder.clutch.text_2": "Zasilony, przerywa połączenie", - - "create.ponder.cog_speedup.header": "Przekładnia z kół zębatych", - "create.ponder.cog_speedup.text_1": "Duże i małe koła zębate mogą być połączone po ukosie", - "create.ponder.cog_speedup.text_2": "Przekazując z dużego koła na małe, prędkość wzrośnie dwukrotnie", - "create.ponder.cog_speedup.text_3": "Przekazując na odwrót, prędkość spadnie dwukrotnie", - - "create.ponder.cogwheel.header": "Przekazywanie obrotu z użyciem kół zębatych", - "create.ponder.cogwheel.text_1": "Koła zębate przekazują obrót do sąsiadujących kół", - "create.ponder.cogwheel.text_2": "Koła połączone w ten sposób będą obracać się w przeciwnych kierunkach", - - "create.ponder.creative_motor.header": "Generowanie siły obrotowej z użyciem kreatywnego silnika", - "create.ponder.creative_motor.text_1": "Kreatywny silnik to kompaktowe i regulowane źródło siły obrotowej", - "create.ponder.creative_motor.text_2": "Przewijanie patrząc na tylny panel zmienia prędkość obrotu", - - "create.ponder.crushing_wheels.header": "Kruszenie przedmiotów", - "create.ponder.crushing_wheels.text_1": "Para kół kruszących kruszy przedmioty niezwykle efektywnie", - "create.ponder.crushing_wheels.text_2": "Powinny się one kręcić w przeciwnych kierunkach", - "create.ponder.crushing_wheels.text_3": "Przedmioty wrzucone od góry będą kruszone", - "create.ponder.crushing_wheels.text_4": "Przedmioty mogą zostać wrzucone i odebrane automatycznie", - - "create.ponder.deployer.header": "Używanie aplikatora", - "create.ponder.deployer.text_1": "Aplikator może imitować niektóre zachowania gracza, z użyciem siły obrotowej", - "create.ponder.deployer.text_10": "Kliknij PPM jego przód, aby dać mu przedmiot", - "create.ponder.deployer.text_11": "Przedmioty mogą też zostać dostarczone automatycznie", - "create.ponder.deployer.text_12": "Aplikatory posiadają slot filtrujący", - "create.ponder.deployer.text_13": "Kiedy filtr jest skonfigurowany, aplikator użyje tylko pasujących przedmiotów", - "create.ponder.deployer.text_14": "Od teraz jedynie pasujące przedmioty mogą być włożone...", - "create.ponder.deployer.text_15": "...i jedynie niepasujące przedmioty mogą być wyciągnięte", - "create.ponder.deployer.text_2": "Aplikator może używać przedmiotów jedynie 2 bloki przed nim", - "create.ponder.deployer.text_3": "Bloki bezpośrednio przed nim nie ograniczają go", - "create.ponder.deployer.text_4": "Aplikatory mogą:", - "create.ponder.deployer.text_5": "Stawiać bloki,", - "create.ponder.deployer.text_6": "Używać przedmiotów,", - "create.ponder.deployer.text_7": "Aktywować bloki,", - "create.ponder.deployer.text_8": "Kopać bloki", - "create.ponder.deployer.text_9": "i atakować moby", - - "create.ponder.deployer_contraption.header": "Używanie aplikatorów w maszynach", - "create.ponder.deployer_contraption.text_1": "Kiedy aplikatory są przesuwane, jako część ruchomej maszyny...", - "create.ponder.deployer_contraption.text_2": "...aktywują się przy każdym odwiedzonym bloku, pobierając przedmioty z pojemników przyczepionych do maszyny", - "create.ponder.deployer_contraption.text_3": "Slot filtrujący może być użyty do sprecyzowania, jakich przedmiotów używać", - - "create.ponder.deployer_modes.header": "Tryby aplikatora", - "create.ponder.deployer_modes.text_1": "Domyślnie, aplikator imituje prawe kliknięcie", - "create.ponder.deployer_modes.text_2": "Może być przestawiony na lewe kliknięcie używając klucza", - - "create.ponder.deployer_redstone.header": "Kontrolowanie aplikatorów z użyciem Redstone'a", - "create.ponder.deployer_redstone.text_1": "Zasilone przez Redstone, aplikatory nie aktywują się", - "create.ponder.deployer_redstone.text_2": "Przed zatrzymaniem, aplikatory dokończą już zaczętą czynność", - "create.ponder.deployer_redstone.text_3": "Chwilowe wyłączenie sygnału aktywuje więc aplikator dokładnie raz", - - "create.ponder.depot.header": "Używanie składnic", - "create.ponder.depot.text_1": "Składnice działają jak nieruchome elementy taśmociągu", - "create.ponder.depot.text_2": "Kliknij PPM, aby ręcznie położyć lub podnieść z niej przedmiot", - "create.ponder.depot.text_3": "Podobnie jak taśmociągi, składnica może dostarczać przedmioty do obróbki...", - "create.ponder.depot.text_4": "…jak i również dla mechanicznych ramion", - - "create.ponder.empty_blaze_burner.header": "Używanie pustych płomiennych palników", - "create.ponder.empty_blaze_burner.text_1": "Kliknij PPM na Płomyka trzymają w ręce pusty palnik, aby uwięzić go w środku", - "create.ponder.empty_blaze_burner.text_2": "Ewentualnie, Płomyk może być zabrany prosto z jego Spawnera", - "create.ponder.empty_blaze_burner.text_3": "Masz teraz idealne źródło ciepła dla przeróżnych maszyn", - "create.ponder.empty_blaze_burner.text_4": "Dla celów dekoracyjnych, puste palniki można też zapalić krzesiwem", - "create.ponder.empty_blaze_burner.text_5": "Nie będzie on dawał jednak ciepła", - - "create.ponder.fan_direction.header": "Przepływ powietrza przez izolowane wiatraki", - "create.ponder.fan_direction.text_1": "Izolowane wiatraki używają siły obrotowej, aby wytworzyć przepływ powietrza", - "create.ponder.fan_direction.text_2": "Siła i kierunek przepływu zależy od właściwości siły obrotu", - - "create.ponder.fan_processing.header": "Obróbka przedmiotów z użyciem izolowanych wiatraków", - "create.ponder.fan_processing.text_1": "Przepływając przez lawę, powietrze staje się gorące", - "create.ponder.fan_processing.text_2": "Przedmioty, które wpadną na jego drogę będą wytopione", - "create.ponder.fan_processing.text_3": "Wrzucone jedzenie będzie spalone na popiół", - "create.ponder.fan_processing.text_4": "Zamiast lawy można użyć ognia, aby wędzić surowe jedzenie", - "create.ponder.fan_processing.text_5": "Powietrze przepływające przez wodę będzie płukało przedmioty", - "create.ponder.fan_processing.text_6": "W ten sposób z niepozornych przedmiotów można otrzymać przedmioty znacznie bardziej interesujące...", - "create.ponder.fan_processing.text_7": "Prędkość wiatraka nie wpływa na szybkość obróbki, a jedynie na jego zasięg!", - "create.ponder.fan_processing.text_8": "Przepływ powietrza działa również na przedmioty na taśmociągach lub składnicach", - - "create.ponder.fan_source.header": "Generowanie siły obrotowej z użyciem izolowanych wiatraków", - "create.ponder.fan_source.text_1": "Wiatraki skierowane w stronę źródła ciepła generują siłę obrotową", - "create.ponder.fan_source.text_2": "Po zasileniu, wiatraki zaczną przesyłać siłę do przylegających komponentów", - - "create.ponder.flywheel.header": "Generowanie siły obrotowej z użyciem koła zamachowego", - "create.ponder.flywheel.text_1": "Koła zamachowe są wymagane, aby generować siłę obrotową przy pomocy silnika spalinowego", - "create.ponder.flywheel.text_2": "Wyprodukowana w ten sposób siła ma bardzo dużą odporność na obciążenie", - "create.ponder.flywheel.text_3": "Używając pieca hutniczego efektywność silnika spalinowego wzrośnie dwukrotnie", - - "create.ponder.funnel_compat.header": "Kompatybilność lejków", - "create.ponder.funnel_compat.text_1": "Lejki działają też z wieloma innymi komponentami", - "create.ponder.funnel_compat.text_2": "Pionowe piły", - "create.ponder.funnel_compat.text_3": "Składnice", - "create.ponder.funnel_compat.text_4": "Odpływy", - - "create.ponder.funnel_direction.header": "Kierunek transportu", - "create.ponder.funnel_direction.text_1": "Postawiony normalnie, wyciąga przedmioty z pojemnika", - "create.ponder.funnel_direction.text_2": "Postawiony w czasie skradania, wkłada przedmioty do pojemnika", - "create.ponder.funnel_direction.text_3": "Używając klucza, lejek może być odwrócony już po postawieniu", - "create.ponder.funnel_direction.text_4": "Takie same zasady stosują się do większości orientacji", - "create.ponder.funnel_direction.text_5": "Lejki na taśmociągach będą wyciągały/wkładały, bazując na ich kierunku poruszania się", - - "create.ponder.funnel_intro.header": "Używanie lejków", - "create.ponder.funnel_intro.text_1": "Lejki są idealne to transportu przedmiotów z- i do pojemników", - - "create.ponder.funnel_redstone.header": "Kontrola Redstonem", - "create.ponder.funnel_redstone.text_1": "Zasilenie spowoduje, że lejek przestanie działać", - - "create.ponder.funnel_transfer.header": "Bezpośredni transport", - "create.ponder.funnel_transfer.text_1": "Lejki nie mogą bezpośrednio transportować pomiędzy zamkniętymi pojemnikami", - "create.ponder.funnel_transfer.text_2": "Zsypy lub inteligentne zsypy mogą bardziej się do tego nadawać", - "create.ponder.funnel_transfer.text_3": "To samo tyczy się transportu poziomego. Taśmociąg może tutaj pomóc", - - "create.ponder.furnace_engine.header": "Generowanie siły obrotowej z użyciem silnika spalinowego", - "create.ponder.furnace_engine.text_1": "Silniki spalinowe generują siłę obrotową, gdy podłączonym do niego piec jest aktywny", - "create.ponder.furnace_engine.text_2": "Wyprodukowana w ten sposób siła ma bardzo dużą odporność na obciążenie", - "create.ponder.furnace_engine.text_3": "Używając pieca hutniczego efektywność silnika spalinowego wzrośnie dwukrotnie", - - "create.ponder.gantry_carriage.header": "Używanie przenośników suwnicowych", - "create.ponder.gantry_carriage.text_1": "Przenośnik suwnicowy może być zamontowany i przesuwany po suwnicy", - "create.ponder.gantry_carriage.text_2": "Może on przenosić dołączone bloki", - - "create.ponder.gantry_cascaded.header": "Kaskadowe suwnice", - "create.ponder.gantry_cascaded.text_1": "Suwnice można dołączyć do przenośnika suwnicowego bez użycia Super Glue", - "create.ponder.gantry_cascaded.text_2": "To samo tyczy się przenośników zamontowanych na przesuwanej suwnicy", - "create.ponder.gantry_cascaded.text_3": "Dlatego więc system suwnic może posiadać wiele osi ruchu", - - "create.ponder.gantry_direction.header": "Kierunek ruchu przenośnika", - "create.ponder.gantry_direction.text_1": "Suwnice mogą mieć odwrotne orientacje", - "create.ponder.gantry_direction.text_2": "Kierunek ruchu przenośnika zależy od orientacji jego suwnicy", - "create.ponder.gantry_direction.text_3": "…jak i kierunku obrotu suwnicy", - "create.ponder.gantry_direction.text_4": "Te same zasady stosują się do obrotu dołączonych elementów", - - "create.ponder.gantry_redstone.header": "Przenoszenie obrotu przez przenośniki", - "create.ponder.gantry_redstone.text_1": "Zasilone suwnice zatrzymują swoje przenośniki", - "create.ponder.gantry_redstone.text_2": "Zamiast tego, jej obrót przekazywany jest do wyjściowego wała przenośnika", - - "create.ponder.gantry_shaft.header": "Używanie suwnic", - "create.ponder.gantry_shaft.text_1": "Suwnice są podstawą całego mechanizmu suwnicowego. Dołączone przenośniki będą poruszać się wzdłuż suwnic", - "create.ponder.gantry_shaft.text_2": "Mechanizmy suwnicowe mogą przesuwać dołączone bloki", - - "create.ponder.gearbox.header": "Przenoszenie siły obrotowej z użyciem przekładni", - "create.ponder.gearbox.text_1": "Zmiany osi obrotu mogą bardzo szybko stać się bardzo duże", - "create.ponder.gearbox.text_2": "Przekładnia jest bardziej kompaktową wersją tego mechanizmu", - "create.ponder.gearbox.text_3": "Wały dookoła rogów obracają się w lustrzanych kierunkach", - "create.ponder.gearbox.text_4": "Proste połączenie będzie odwrócone", - - "create.ponder.gearshift.header": "Przenoszenie siły obrotowej z użyciem przekładnika", - "create.ponder.gearshift.text_1": "Przekładniki przenoszą obrót w linii prostej", - "create.ponder.gearshift.text_2": "Kiedy zasilone, kierunek obrotu odwraca się", - - "create.ponder.hand_crank.header": "Generowanie siły obrotowej z użyciem ręcznej korby", - "create.ponder.hand_crank.text_1": "Korby mogą być użyte przez gracza, aby ręcznie wprawić komponent w ruch", - "create.ponder.hand_crank.text_2": "Trzymaj PPM, aby obrócić ją odwrotnie niż wskazówki zegara", - "create.ponder.hand_crank.text_3": "Wytwarzana prędkość jest dosyć duża!", - "create.ponder.hand_crank.text_4": "Trzymaj PPM skradając się, aby obrócić ją zgodnie ze wskazówkami zegara", - - "create.ponder.large_cogwheel.header": "Przekazywanie siły obrotowej z użyciem dużych kół zębatych", - "create.ponder.large_cogwheel.text_1": "Duże koła zębate mogą się łączyć ze sobą pod kątem prostym", - "create.ponder.large_cogwheel.text_2": "Pomogą one w przekazywaniu siły obrotowej na inne osie obrotu", - - "create.ponder.linear_chassis_attachment.header": "Dołączanie bloków do stelaża liniowego", - "create.ponder.linear_chassis_attachment.text_1": "Odkryte strony stelaża mogą być oblepione szlamem", - "create.ponder.linear_chassis_attachment.text_2": "Kliknij ponownie, aby oblepić również drugą stronę", - "create.ponder.linear_chassis_attachment.text_3": "Kliknij PPM skradając się, aby usunąć szlam", - "create.ponder.linear_chassis_attachment.text_4": "Lepkie strony zabiorą ze sobą linie bloków przed sobą", - "create.ponder.linear_chassis_attachment.text_5": "Użyj klucza, aby ustawić maksymalny zasięg działania stelaża", - "create.ponder.linear_chassis_attachment.text_6": "Trzymając CTRL i przewijając dostosujesz maksymalny zasięg wszystkich połączonych stelaży", - "create.ponder.linear_chassis_attachment.text_7": "Przyłączanie bloków do innej strony wymaga użycia Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "Z wykorzystaniem tych mechanik, struktury w każdym kształcie mogą tworzyć maszyną", - - "create.ponder.linear_chassis_group.header": "Przesuwanie liniowych stelaży w grupach", - "create.ponder.linear_chassis_group.text_1": "Liniowe stelaże łączą się z identycznymi stelażami obok nich", - "create.ponder.linear_chassis_group.text_2": "Kiedy jeden z nich jest przesunięty, wszystkie inne są ciągnięte za nim", - "create.ponder.linear_chassis_group.text_3": "Stelaże innego typu lub postawione w innym kierunku nie zostaną połączone", - - "create.ponder.mechanical_arm.header": "Ustawianie mechanicznych ramion", - "create.ponder.mechanical_arm.text_1": "Wejścia i wyjścia muszą zostać przypisane do ramienia, zanim będzie można je postawić", - "create.ponder.mechanical_arm.text_2": "Kliknij PPM na blok trzymając ramię, aby przypisać do niego cel", - "create.ponder.mechanical_arm.text_3": "Kliknij ponownie, aby przełączyć pomiędzy wejściem (niebieski) i wyjściem (pomarańczowy)", - "create.ponder.mechanical_arm.text_4": "Kliknij LPM, aby usunąć zaznaczenie", - "create.ponder.mechanical_arm.text_5": "Po postawieniu, mechaniczne ramię będzie operować pomiędzy wybranymi blokami", - "create.ponder.mechanical_arm.text_6": "Mogą one mieć dowolną ilość wejść i wyjść w ich zasięgu", - "create.ponder.mechanical_arm.text_7": "Nie z każdym blokiem zawierającym przedmioty może ono jednak bezpośrednio pracować", - "create.ponder.mechanical_arm.text_8": "Lejki i składnice mogą zapełnić tą lukę", - - "create.ponder.mechanical_arm_filtering.header": "Filtrowanie wyjść z mechanicznego ramienia", - "create.ponder.mechanical_arm_filtering.text_1": "Wejścia", - "create.ponder.mechanical_arm_filtering.text_2": "Wyjścia", - "create.ponder.mechanical_arm_filtering.text_3": "Czasami potrzebne jest ograniczenie celów ramienia przy pomocy filtra", - "create.ponder.mechanical_arm_filtering.text_4": "Mechaniczne ramiona nie posiadają żadnych opcji filtrowanie same w sobie", - "create.ponder.mechanical_arm_filtering.text_5": "Mosiężne lejki ustawione jako cele komunikują ramieniu informacje o swoim filtrze", - "create.ponder.mechanical_arm_filtering.text_6": "Ramię jest wystarczająco mądre, aby nie podnosić przedmiotów, których nie mogłoby odstawić", - - "create.ponder.mechanical_arm_modes.header": "Tryby dystrybucji mechanicznego ramienia", - "create.ponder.mechanical_arm_modes.text_1": "Wejście", - "create.ponder.mechanical_arm_modes.text_2": "Wyjście", - "create.ponder.mechanical_arm_modes.text_3": "Kiedykolwiek ramię musi wybrać pomiędzy wieloma możliwymi wyjściami...", - "create.ponder.mechanical_arm_modes.text_4": "…będzie działać zgodnie z jego ustawieniami", - "create.ponder.mechanical_arm_modes.text_5": "Przewijanie trzymając klucz pozwoli ci na konfigurację", - "create.ponder.mechanical_arm_modes.text_6": "Tryb 'Dookoła' zwyczajnie pozwala na cykl pomiędzy wszystkimi dostępnymi wyjściami", - "create.ponder.mechanical_arm_modes.text_7": "Jeśli wyjście nie może przyjąć więcej przedmiotów, będzie ono pominięte", - "create.ponder.mechanical_arm_modes.text_8": "Tryb 'Dookoła (wymuszony)' nigdy nie pominie żadnego wyjścia i poczeka, aż będzie ono wolne", - "create.ponder.mechanical_arm_modes.text_9": "Tryb 'Preferuj pierwszy cel' priorytetyzuje cele ustawione przed postawieniem jako pierwsze", - - "create.ponder.mechanical_arm_redstone.header": "Kontrolowanie mechanicznych ramion z użyciem Redstone'a", - "create.ponder.mechanical_arm_redstone.text_1": "Kiedy zasilone, mechaniczne ramię przestanie działać", - "create.ponder.mechanical_arm_redstone.text_2": "Przed zatrzymaniem, ramiona dokończą zaczętą już czynność", - "create.ponder.mechanical_arm_redstone.text_3": "Chwilowe wyłączenie sygnału aktywuje więc ramię dokładnie raz", - - "create.ponder.mechanical_bearing.header": "Przesuwanie struktur z użyciem mechanicznego łożyska", - "create.ponder.mechanical_bearing.text_1": "Mechaniczne łożysko przyczepia do siebie blok, który jest przed nim", - "create.ponder.mechanical_bearing.text_2": "W momencie otrzymania siły obrotowej, stworzy on obracającą się maszynę", - - "create.ponder.mechanical_crafter.header": "Ustawianie mechanicznych stołów rzemieślniczych", - "create.ponder.mechanical_crafter.text_1": "Grupa mechanicznych stołów rzemieślniczych może być użyta, aby zautomatyzować każdą recepturę", - "create.ponder.mechanical_crafter.text_2": "Używając klucza, ścieżki stołów mogą zostać ułożone", - "create.ponder.mechanical_crafter.text_3": "Aby układ był poprawny, wszystkie ścieżki muszą prowadzić do jednego wyjścia po dowolnej stronie", - "create.ponder.mechanical_crafter.text_4": "Produkty będą umieszczone w bloku przy wyjściu", - "create.ponder.mechanical_crafter.text_5": "Mechaniczne stoły rzemieślnicze wymagają siły obrotowej, aby pracować", - "create.ponder.mechanical_crafter.text_6": "Kliknij PPM na ich przody, aby ręcznie włożyć tam przedmioty", - "create.ponder.mechanical_crafter.text_7": "Kiedy każdy slot zawiera przedmiot, rozpocznie się proces konstruowania", - "create.ponder.mechanical_crafter.text_8": "Dla receptur, które nie zajmują wszystkich slotów, start konstruowania można rozpocząć zasilając dowolny z nich", - - "create.ponder.mechanical_crafter_connect.header": "Łączenie ekwipunków mechanicznych stołów rzemieślniczych", - "create.ponder.mechanical_crafter_connect.text_1": "Przedmioty mogą być włożone do stołów automatycznie", - "create.ponder.mechanical_crafter_connect.text_2": "Klikając na ich tył kluczem, mechaniczne stoły rzemieślnicze może połączyć ze sobą", - "create.ponder.mechanical_crafter_connect.text_3": "Wszystkie połączone stoły mogą przyjmować teraz przedmioty z jednego miejsca", - - "create.ponder.mechanical_crafter_covers.header": "Przykrywanie slotów mechanicznych stołów rzemieślniczych", - "create.ponder.mechanical_crafter_covers.text_1": "Niektóre receptury wymagają zapełnienia dziury pomiędzy poszczególnymi stołami", - "create.ponder.mechanical_crafter_covers.text_2": "Używając przykrywek na slot, można wyłączyć jeden stół z użytku. Nie będzie on przyjmował przedmiotów, ale będzie łączył sąsiadujące sloty w jedną całość", - "create.ponder.mechanical_crafter_covers.text_3": "Połączone stoły również działają w przypadku przykrycia jednego ze slotów", - - "create.ponder.mechanical_drill.header": "Niszczenie bloków mechanicznym wiertłem", - "create.ponder.mechanical_drill.text_1": "Po otrzymaniu siły obrotowej, mechaniczne wiertło będzie niszczyć bloki bezpośrednio przed nim", - "create.ponder.mechanical_drill.text_2": "Jego prędkość niszczenia zależy od prędkości siły obrotowej", - - "create.ponder.mechanical_drill_contraption.header": "Używanie mechanicznych wierteł w maszynach", - "create.ponder.mechanical_drill_contraption.text_1": "Kiedy wiertła są przesuwane razem z maszyną...", - "create.ponder.mechanical_drill_contraption.text_2": "…zniszczą one bloki na ich drodze", - - "create.ponder.mechanical_harvester.header": "Używanie mechanicznych żniwiarek w maszynach", - "create.ponder.mechanical_harvester.text_1": "Kiedy żniwiarki są przesuwane razem z maszyną...", - "create.ponder.mechanical_harvester.text_2": "…zbiorą one dojrzałe plony na ich drodze", - - "create.ponder.mechanical_mixer.header": "Obróbka przedmiotów z użyciem mechanicznego miksera", - "create.ponder.mechanical_mixer.text_1": "Używając miksera i tygla, niektóre receptury mogą być zautomatyzowane", - "create.ponder.mechanical_mixer.text_2": "Dostępne są wszystkie receptury nieokreślone, plus kilka innych", - "create.ponder.mechanical_mixer.text_3": "Niektóre z nich mogą wymagać użycia płomiennego palnika", - "create.ponder.mechanical_mixer.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", - - "create.ponder.mechanical_piston.header": "Przesuwanie struktur z użyciem mechanicznego tłoka", - "create.ponder.mechanical_piston.text_1": "Mechaniczny tłok może przesuwać znajdujące się przed nim bloki", - "create.ponder.mechanical_piston.text_2": "Prędkość i kierunek ruchu zależy od dostarczonej siły obrotowej", - "create.ponder.mechanical_piston.text_3": "Lepkie mechaniczne tłoki mogą przyciągać doczepione bloki", - - "create.ponder.mechanical_piston_modes.header": "Tryby ruchu mechanicznych tłoków", - "create.ponder.mechanical_piston_modes.text_1": "Kiedy tłok zatrzyma się, przesuwana struktura znów stanie się zwyczajnymi blokami", - "create.ponder.mechanical_piston_modes.text_2": "Można go skonfigurować, aby bloki nigdy nie stawały się stałymi, lub tylko w pozycji początkowej", - - "create.ponder.mechanical_plough.header": "Używanie mechanicznych pługów w maszynach", - "create.ponder.mechanical_plough.text_1": "Kiedy pługi są przesuwane razem z maszyną...", - "create.ponder.mechanical_plough.text_2": "…zniszczą one niesolidne bloki na ich drodze", - "create.ponder.mechanical_plough.text_3": "Dodatkowo, pługi mogą orać pola", - "create.ponder.mechanical_plough.text_4": "…mogą też odrzucać moby bez ranienia ich", - - "create.ponder.mechanical_press.header": "Obróbka przedmiotów z użyciem mechanicznej prasy", - "create.ponder.mechanical_press.text_1": "Mechaniczna prasa może przetwarzać przedmioty znajdujące się pod nią", - "create.ponder.mechanical_press.text_2": "Przedmioty wejściowe mogą być rzucone pod prasę lub położone na składnicy", - "create.ponder.mechanical_press.text_3": "Kiedy przedmioty znajdują się na taśmociągu...", - "create.ponder.mechanical_press.text_4": "…prasa zatrzyma je i przetworzy - wszystko automatycznie", - - "create.ponder.mechanical_press_compacting.header": "Zbijanie przedmiotów z użyciem mechanicznej prasy", - "create.ponder.mechanical_press_compacting.text_1": "Prasowanie przedmiotów znajdujących się w tyglu sprawi, że staną się zbite", - "create.ponder.mechanical_press_compacting.text_2": "Można w ten sposób przetworzyć każdą recepturę, która wypełnia jednym przedmiotem kwadrat 2x2 lub 3x3", - "create.ponder.mechanical_press_compacting.text_3": "Niektóre z nich mogą wymagać użycia płomiennego palnika", - "create.ponder.mechanical_press_compacting.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", - - "create.ponder.mechanical_saw_breaker.header": "Ścinanie drzew z użyciem mechanicznej piły", - "create.ponder.mechanical_saw_breaker.text_1": "Po otrzymaniu siły obrotowej, mechaniczna piła zetnie każde znajdujące się przed nią drzewo", - "create.ponder.mechanical_saw_breaker.text_2": "Aby całkowicie ściąć drzewo, piła musi zniszczyć każdy blok łączący je z ziemią", - - "create.ponder.mechanical_saw_contraption.header": "Używanie mechanicznych pił w maszynach", - "create.ponder.mechanical_saw_contraption.text_1": "Kiedy piły są przesuwane razem z maszyną...", - "create.ponder.mechanical_saw_contraption.text_2": "…zetną one drzewa na ich drodze", - - "create.ponder.mechanical_saw_processing.header": "Obróbka przedmiotów z użyciem mechanicznej piły", - "create.ponder.mechanical_saw_processing.text_1": "Skierowana w górę mechaniczna piła może przetwarzać wiele różnych przedmiotów", - "create.ponder.mechanical_saw_processing.text_2": "Przerabiany przedmiot zawsze przesuwa się przeciwnie do kierunku obrotu piły", - "create.ponder.mechanical_saw_processing.text_3": "Piły mogą współpracować z taśmociągami", - "create.ponder.mechanical_saw_processing.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", - "create.ponder.mechanical_saw_processing.text_5": "Bez ustawionego filtra, piła przejdzie przez wszystkie receptury po kolei", - - "create.ponder.millstone.header": "Obróbka przedmiotów w młynku", - "create.ponder.millstone.text_1": "Młynek przetwarza przedmioty mieląc je", - "create.ponder.millstone.text_2": "Może być wprawiony w ruch od boku z użyciem kół zębatych", - "create.ponder.millstone.text_3": "Wrzuć lub włóż przedmiot od góry", - "create.ponder.millstone.text_4": "Po jakimś czasie, produkty mogą być zabrane prawym kliknięciem", - "create.ponder.millstone.text_5": "…lub w zautomatyzowany sposób", - - "create.ponder.nixie_tube.header": "Używanie lamp cyfrowych", - "create.ponder.nixie_tube.text_1": "Kiedy zasilone, lampy cyfrowe wyświetlą siłę sygnału Redstone, jaki otrzymują", - "create.ponder.nixie_tube.text_2": "Używając znaczników i kowadła można wyświetlić własny tekst", - - "create.ponder.piston_pole.header": "Przedłużenia tłoka", - "create.ponder.piston_pole.text_1": "Bez przyłączonych przedłużeń, mechaniczny tłok nie może się wysunąć", - "create.ponder.piston_pole.text_2": "Długość przedłużenia z tyłu ustala maksymalny zasięg tłoka", - - "create.ponder.portable_storage_interface.header": "Używanie przenośnych interfejsów magazynu", - "create.ponder.portable_storage_interface.text_1": "Pojemniki na ruchomych maszynach nie mogą być otwarte przez gracza", - "create.ponder.portable_storage_interface.text_2": "Ten komponent może współpracować z zawartością maszyny bez potrzeby jej zatrzymywania", - "create.ponder.portable_storage_interface.text_3": "Postaw drugi w odstępie od 1 do 2 bloków", - "create.ponder.portable_storage_interface.text_4": "Kiedy będą blisko siebie połączą się", - "create.ponder.portable_storage_interface.text_5": "Kiedy są połączone, stojący interfejs będzie reprezentował wszystkie pojemniki znajdujące się na maszynie", - "create.ponder.portable_storage_interface.text_6": "Przedmioty mogą być wsadzone...", - "create.ponder.portable_storage_interface.text_7": "…lub wyciągnięte z maszyny", - "create.ponder.portable_storage_interface.text_8": "W momencie, kiedy przed dłuższy czas żadne przedmioty nie będą wymieniane, maszyna zostanie odłączone i będzie kontynuowała swoją pracę", - - "create.ponder.portable_storage_interface_redstone.header": "Kontrola Redstonem", - "create.ponder.portable_storage_interface_redstone.text_1": "Zasilenie Redstonem zapobiegnie połączeniu się interfejsów", - - "create.ponder.powered_latch.header": "Kontrola sygnału z użyciem zaawansowanego zasilanego przełącznika", - "create.ponder.powered_latch.text_1": "Zaawansowane zasilane przełączniki to dźwignie, które można kontrolować przez Redstone", - "create.ponder.powered_latch.text_2": "Sygnały otrzymane z tyłu włączają je...", - "create.ponder.powered_latch.text_3": "...a sygnały od boku wyłączają", - "create.ponder.powered_latch.text_4": "Zaawansowane zasilane przełączniki mogą też być przełączone ręcznie", - - "create.ponder.powered_toggle_latch.header": "Kontrola sygnału z użyciem zasilanego przełącznika", - "create.ponder.powered_toggle_latch.text_1": "Zasilane przełączniki to dźwignie, które można kontrolować przez Redstone", - "create.ponder.powered_toggle_latch.text_2": "Sygnały otrzymane z tyłu przełączają je", - "create.ponder.powered_toggle_latch.text_3": "włączone... wyłączone...", - "create.ponder.powered_toggle_latch.text_4": "Zasilane przełączniki mogą też być przełączone ręcznie", - - "create.ponder.pulse_repeater.header": "Kontrola sygnału z użyciem przekaźników pulsowych", - "create.ponder.pulse_repeater.text_1": "Przekaźniki pulsowe skrócą dowolny sygnał do pojedynczego pulsu", - - "create.ponder.radial_chassis.header": "Przyłączanie bloków z użyciem stelaża promienistego", - "create.ponder.radial_chassis.text_1": "Stelaże promieniste łączą się z identycznymi stelażami w jednym rzędzie", - "create.ponder.radial_chassis.text_2": "Kiedy jeden z nich jest przesunięty, wszystkie inne również się przesuwają", - "create.ponder.radial_chassis.text_3": "Boczne ściany stelaży promienistych mogą zostać oblepione szlamem", - "create.ponder.radial_chassis.text_4": "Kliknij ponownie, aby oblepić wszystkie strony", - "create.ponder.radial_chassis.text_5": "Kliknij PPM skradając się, aby usunąć szlam", - "create.ponder.radial_chassis.text_6": "Lepkie strony zabiorą ze sobą przyczepione bloki...", - "create.ponder.radial_chassis.text_7": "...w określonym zasięgu", - "create.ponder.radial_chassis.text_8": "Użyj klucza, aby ustawić maksymalny zasięg działania stelaża", - "create.ponder.radial_chassis.text_9": "Bloki, które nie są w żaden sposób połączone z lepką stroną stelaża nie będą przesuwane", - - "create.ponder.redstone_contact.header": "Przełącznik kontaktowy", - "create.ponder.redstone_contact.text_1": "Przełączniki kontaktowe skierowane w swoją stronę będą emitować sygnał Redstone", - "create.ponder.redstone_contact.text_2": "Działa to też w momencie, kiedy jeden z nich jest częścią ruchomej maszyny", - - "create.ponder.redstone_link.header": "Używanie emiterów sygnału", - "create.ponder.redstone_link.text_1": "Emitery sygnału mogą przesyłać sygnał Redstone bezprzewodowo", - "create.ponder.redstone_link.text_2": "Kliknij PPM skradając się, aby przełączyć na tryb odbierania", - "create.ponder.redstone_link.text_3": "Prawe kliknięcie kluczek robi dokładnie to samo", - "create.ponder.redstone_link.text_4": "Odbiorniki emitują sygnał Redstone nadajników w zasięgu 128 bloków", - "create.ponder.redstone_link.text_5": "Wkładając przedmioty do dwóch slotów można sprecyzować częstotliwość", - "create.ponder.redstone_link.text_6": "Jedynie emitery z pasującymi częstotliwościami będą się ze sobą komunikować", - - "create.ponder.rope_pulley.header": "Przesuwanie struktur z użyciem krążków z liną", - "create.ponder.rope_pulley.text_1": "Krążki z liną mogę przesuwać pionowo bloki z wykorzystaniem siły obrotowej", - "create.ponder.rope_pulley.text_2": "Prędkość i kierunek ruchu zależą od dostarczonej siły obrotowej", - - "create.ponder.rope_pulley_attachment.header": "Przesuwanie krążków jako część maszyny", - "create.ponder.rope_pulley_attachment.text_1": "Kiedy krążek jest częścią ruchomej maszyny...", - "create.ponder.rope_pulley_attachment.text_2": "...przyczepiona do niego struktura również się przesunie", - "create.ponder.rope_pulley_attachment.text_3": "Pamiętaj, że krążki mogą pracować jedynie, jeśli same się nie poruszają", - - "create.ponder.rope_pulley_modes.header": "Tryby ruchu krążków z liną", - "create.ponder.rope_pulley_modes.text_1": "Kiedy krążek przestaje się obracać, przyczepiona do niego struktura staje się z powrotem blokami", - "create.ponder.rope_pulley_modes.text_2": "Można go skonfigurować, aby bloki nigdy nie stawały się stałymi, lub tylko w pozycji początkowej", - - "create.ponder.rotation_speed_controller.header": "Używanie sterownika prędkości obrotu", - "create.ponder.rotation_speed_controller.text_1": "Sterownik prędkości obrotu może przekazywać siłę obrotową z jego osi do dużego koła zębatego ponad nim", - "create.ponder.rotation_speed_controller.text_2": "Patrząc się na jego bok i przewijając można dostosować wyjściową prędkość", - - "create.ponder.sail.header": "Konstruowanie wiatraków z użyciem żagli", - "create.ponder.sail.text_1": "Żagle to bloki przydatne do konstrukcji wiatraków", - "create.ponder.sail.text_2": "Przyłączą się one do innych bloków i żagli, bez potrzeby użycia Super Glue lub stelaży", - "create.ponder.sail.text_3": "Kliknij PPM trzymając barwnik, aby je pomalować", - "create.ponder.sail.text_4": "Kliknij PPM trzymając nożyce, aby usunąć żagiel i zostawić samą ramę", - - "create.ponder.sail_frame.header": "Konstrukcja wiatraków z użyciem ram żagla", - "create.ponder.sail_frame.text_1": "Ramy żagla to bloki przydatne do konstrukcji wiatraków", - "create.ponder.sail_frame.text_2": "Przyłączą się one do innych bloków i ram, bez potrzeby użycia Super Glue lub stelaży", - - "create.ponder.sequenced_gearshift.header": "Kontrolowanie prędkości obrotu z użyciem przekładników sekwencjonalnych", - "create.ponder.sequenced_gearshift.text_1": "Przekładniki sekwencjonalne przekazują obrót poprzez wyznaczoną listę instrukcji", - "create.ponder.sequenced_gearshift.text_2": "Kliknij PPM, aby otworzyć interfejs", - "create.ponder.sequenced_gearshift.text_3": "Kiedy zostanie zasilony Redstonem, rozpocznie wykonywać swoją ustaloną sekwencję", - "create.ponder.sequenced_gearshift.text_4": "Po zakończeniu, czeka na następny sygnał i zaczyna od nowa", - "create.ponder.sequenced_gearshift.text_5": "Komparator może być użyty do odczytania obecnego postępu", - - "create.ponder.shaft.header": "Przekazywanie siły obrotowej z użyciem wałów", - "create.ponder.shaft.text_1": "Wały przekazują siłę obrotową w linii prostej", - - "create.ponder.shaft_casing.header": "Izolowanie wałów", - "create.ponder.shaft_casing.text_1": "Mosiężna lub andezytowa obudowa może być użyta do udekorowania wałów", - - "create.ponder.smart_chute.header": "Sortowanie przedmiotów z użyciem inteligentnych zsypów", - "create.ponder.smart_chute.text_1": "Inteligentny zsyp to pionowy zsyp z dodatkową kontrolą", - "create.ponder.smart_chute.text_2": "Poprzez slot filtrujący można zdecydować, które przedmioty mogą być transportowane", - "create.ponder.smart_chute.text_3": "Użyj rolki w myszce, aby sprecyzować maksymalną wielkość stosu", - "create.ponder.smart_chute.text_4": "Sygnał Redstone zatrzyma działanie inteligentnych zsypów", - - "create.ponder.speedometer.header": "Monitorowanie prędkości obrotu z użyciem prędkościomierza", - "create.ponder.speedometer.text_1": "Prędkościomierz wyświetla obecną prędkość przyłączonych komponentów", - "create.ponder.speedometer.text_2": "Mając na sobie gogle inżyniera, gracz może pozyskać dodatkowe informacje z miernika", - "create.ponder.speedometer.text_3": "Komparatory mogą emitować sygnał Redstone bazując na pomiarach prędkościomierza", - - "create.ponder.stabilized_bearings.header": "Stabilizowanie maszyn", - "create.ponder.stabilized_bearings.text_1": "Kiedy łożyska mechaniczne są częścią ruchomej maszyny...", - "create.ponder.stabilized_bearings.text_2": "...będą utrzymywać swoją obrotową część w pozycji wyjściowej", - "create.ponder.stabilized_bearings.text_3": "Znowu, łożysko przyłączy do siebie bloki znajdujące się przed nim", - "create.ponder.stabilized_bearings.text_4": "Rezultatem tego będzie to, że pod-maszyna będzie utrzymywała się w tej samej pozycji", - - "create.ponder.sticker.header": "Przyczepianie bloków z użyciem przyklejacza", - "create.ponder.sticker.text_1": "Przyklejacze są idealne do kontrolowanego przez Redstone przyczepiania bloków", - "create.ponder.sticker.text_2": "Po otrzymaniu sygnału, zmieni on swoje ułożenie", - "create.ponder.sticker.text_3": "Jeśli jest przesunięty razem z maszyną, przyklejony blok również się przesunie", - "create.ponder.sticker.text_4": "Po ponownym zasileniu blok zostanie odczepiony", - - "create.ponder.stressometer.header": "Monitorowanie obciążenia z użyciem miernika obciążenia", - "create.ponder.stressometer.text_1": "Miernik obciążenia wyświetla odporność na obciążenie systemu, do którego jest podłączony", - "create.ponder.stressometer.text_2": "Mając na sobie gogle inżyniera, gracz może pozyskać dodatkowe informacje z miernika", - "create.ponder.stressometer.text_3": "Komparatory mogą emitować sygnał Redstone bazując na pomiarach miernika", - - "create.ponder.super_glue.header": "Przyklejanie bloków z użycie Super Glue", - "create.ponder.super_glue.text_1": "Super Glue może zostać użyty pomiędzy dwoma blokami", - "create.ponder.super_glue.text_2": "Przyklejone bloki będą przesuwane razem ze strukturą, do której są przyklejone", - "create.ponder.super_glue.text_3": "Kiedy Super Glue jest trzymany w drugiej ręce...", - "create.ponder.super_glue.text_4": "...stawiane bloki będą automatycznie przyklejane", - "create.ponder.super_glue.text_5": "Super Glue może zostać usunięty lewym kliknięciem", - - "create.ponder.valve_handle.header": "Generowanie siły obrotowej z użyciem pokręteł", - "create.ponder.valve_handle.text_1": "Pokrętła mogą być użyte, aby ręcznie wytworzyć siłę obrotową bezpośrednio w miejscu postawienia", - "create.ponder.valve_handle.text_2": "Trzymaj PPM, aby obrócić ją odwrotnie niż wskazówki zegara", - "create.ponder.valve_handle.text_3": "Wytwarzana prędkość jest niewielka, ale pozwala na dokładny obrót", - "create.ponder.valve_handle.text_4": "Trzymaj PPM skradając się, aby obrócić ją zgodnie ze wskazówkami zegara", - "create.ponder.valve_handle.text_5": "Pokrętła mogą być zabarwione dla celów dekoracyjnych", - - "create.ponder.water_wheel.header": "Generowanie siły obrotowej z użyciem kół wodnych", - "create.ponder.water_wheel.text_1": "Koła wodne pobierają energię z prądów wodnych", - "create.ponder.water_wheel.text_2": "Im więcej stron ma dostęp do wody, tym szybciej koło się będzie obracać", - "create.ponder.water_wheel.text_3": "Łopaty koła wodnego powinny być zorientowane przeciwnie do prądu", - "create.ponder.water_wheel.text_4": "Będąc zorientowane z prądem nie będą zbyt efektywne", - - "create.ponder.weighted_ejector.header": "Używanie wyrzutni odważnikowych", - "create.ponder.weighted_ejector.text_1": "Kliknij PPM skradając się i mając w ręce wyrzutnię, aby wybrać jego cel", - "create.ponder.weighted_ejector.text_10": "Od teraz aktywuje się tylko w momencie, jeśli wystarczająca ilość przedmiotów znajdzie się na jego wierzchu", - "create.ponder.weighted_ejector.text_11": "Inne moby zawsze zostaną wyrzucone", - "create.ponder.weighted_ejector.text_2": "Postawiona wyrzutnia będzie strzelała przedmiotami w wybrane miejsce", - "create.ponder.weighted_ejector.text_3": "Cel może być na dowolnej wysokości i odległości w zasięgu wyrzutni", - "create.ponder.weighted_ejector.text_4": "Nie mogą być jednak przesunięte w bok", - "create.ponder.weighted_ejector.text_5": "Jeśli nie wybrano żadnego celu, wyrzuci ona przedmioty na blok bezpośrednio przed sobą", - "create.ponder.weighted_ejector.text_6": "Dostarcz siłę obrotową, aby ją załadować", - "create.ponder.weighted_ejector.text_7": "Przedmioty znajdujące się na jej wierzchu aktywują ją", - "create.ponder.weighted_ejector.text_8": "Jeśli celem jest blok mogący przechowywać przedmioty, wyrzutnia poczeka aż będzie tam miejsce", - "create.ponder.weighted_ejector.text_9": "Używając klucza można wybrać wielkość stosu, jaki ma być wyrzucony", - - "create.ponder.weighted_ejector_redstone.header": "Kontrolowanie wyrzutni odważnikowych z użyciem Redstone'a", - "create.ponder.weighted_ejector_redstone.text_1": "Zasilona Redstonem, wyrzutnia nie aktywuje się", - "create.ponder.weighted_ejector_redstone.text_2": "Ponad to, detektory mogą wykrywać, kiedy wyrzutnia się aktywuje", - - "create.ponder.weighted_ejector_tunnel.header": "Rozdzielanie stosów z użyciem wyrzutni odważnikowych", - "create.ponder.weighted_ejector_tunnel.text_1": "W połączeniu z mosiężnymi tunelami, wyrzutnie mogą", - "create.ponder.weighted_ejector_tunnel.text_2": "Po pierwsze, ustaw tunel na tryb 'Preferuj najbliższy', aby zpriorytetyzować boczne wyjście", - "create.ponder.weighted_ejector_tunnel.text_3": "Wielkość stosu ustawiona na wyrzutni ustala ilość, jaka ma być oddzielona", - "create.ponder.weighted_ejector_tunnel.text_4": "W momencie, kiedy stos o określonym rozmiarze opuści tunel...", - "create.ponder.weighted_ejector_tunnel.text_5": "...pozostała część będzie kontynuować swoją podróż", - - "create.ponder.windmill_source.header": "Generowanie siły obrotowej z użyciem łożysk wiatraka", - "create.ponder.windmill_source.text_1": "Łożysko wiatraka przyczepia do siebie bloki, które znajdują się przed nimi", - "create.ponder.windmill_source.text_2": "Jeśli wystarczająco żaglo-podobnych bloków jest przyłączonych do niego, może działać jak wiatrak", - "create.ponder.windmill_source.text_3": "Po aktywacji prawym kliknięciem, łożysko wiatraka zacznie generować siłę obrotową", - "create.ponder.windmill_source.text_4": "Ilość żagli ustala prędkość obrotu", - "create.ponder.windmill_source.text_5": "Użyj klucza, aby dostosować kierunek obrotu", - "create.ponder.windmill_source.text_6": "Kliknij PPM na łożysko, aby zatrzymać obrót i zmodyfikować dołączoną strukturę", - - "create.ponder.windmill_structure.header": "Wiatraki", - "create.ponder.windmill_structure.text_1": "Każda struktura jest uznawana za wiatrak w momencie, kiedy ma w sobie co najmniej 8 żaglo-podobnych bloków", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json deleted file mode 100644 index bf79ef1eb..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 1655", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "UNLOCALIZED: Acacia Window", - "block.create.acacia_window_pane": "UNLOCALIZED: Acacia Window Pane", - "block.create.adjustable_chain_gearshift": "UNLOCALIZED: Adjustable Chain Gearshift", - "block.create.adjustable_crate": "adjustable_crate", - "block.create.adjustable_pulse_repeater": "UNLOCALIZED: Adjustable Pulse Repeater", - "block.create.adjustable_repeater": "Repetidor Flex", - "block.create.analog_lever": "UNLOCALIZED: Analog Lever", - "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", - "block.create.andesite_bricks": "Tijolos de Andesite", - "block.create.andesite_bricks_slab": "UNLOCALIZED: Andesite Bricks Slab", - "block.create.andesite_bricks_stairs": "UNLOCALIZED: Andesite Bricks Stairs", - "block.create.andesite_bricks_wall": "UNLOCALIZED: Andesite Bricks Wall", - "block.create.andesite_casing": "UNLOCALIZED: Andesite Casing", - "block.create.andesite_cobblestone": "UNLOCALIZED: Andesite Cobblestone", - "block.create.andesite_cobblestone_slab": "UNLOCALIZED: Andesite Cobblestone Slab", - "block.create.andesite_cobblestone_stairs": "UNLOCALIZED: Andesite Cobblestone Stairs", - "block.create.andesite_cobblestone_wall": "UNLOCALIZED: Andesite Cobblestone Wall", - "block.create.andesite_encased_shaft": "UNLOCALIZED: Andesite Encased Shaft", - "block.create.andesite_funnel": "UNLOCALIZED: Andesite Funnel", - "block.create.andesite_pillar": "UNLOCALIZED: Andesite Pillar", - "block.create.andesite_tunnel": "UNLOCALIZED: Andesite Tunnel", - "block.create.basin": "UNLOCALIZED: Basin", - "block.create.belt": "Esteira Mecânica", - "block.create.birch_window": "UNLOCALIZED: Birch Window", - "block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane", - "block.create.black_sail": "UNLOCALIZED: Black Sail", - "block.create.black_seat": "UNLOCALIZED: Black Seat", - "block.create.black_valve_handle": "UNLOCALIZED: Black Valve Handle", - "block.create.blaze_burner": "UNLOCALIZED: Blaze Burner", - "block.create.blue_sail": "UNLOCALIZED: Blue Sail", - "block.create.blue_seat": "UNLOCALIZED: Blue Seat", - "block.create.blue_valve_handle": "UNLOCALIZED: Blue Valve Handle", - "block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel", - "block.create.brass_block": "UNLOCALIZED: Block of Brass", - "block.create.brass_casing": "UNLOCALIZED: Brass Casing", - "block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft", - "block.create.brass_funnel": "UNLOCALIZED: Brass Funnel", - "block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel", - "block.create.brown_sail": "UNLOCALIZED: Brown Sail", - "block.create.brown_seat": "UNLOCALIZED: Brown Seat", - "block.create.brown_valve_handle": "UNLOCALIZED: Brown Valve Handle", - "block.create.cart_assembler": "UNLOCALIZED: Cart Assembler", - "block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria", - "block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite", - "block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro", - "block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone", - "block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria", - "block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone", - "block.create.chocolate": "UNLOCALIZED: Chocolate", - "block.create.chute": "UNLOCALIZED: Chute", - "block.create.clockwork_bearing": "UNLOCALIZED: Clockwork Bearing", - "block.create.clutch": "Embreagem", - "block.create.cogwheel": "Roda Dentada", - "block.create.content_observer": "UNLOCALIZED: Content Observer", - "block.create.controller_rail": "UNLOCALIZED: Controller Rail", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "UNLOCALIZED: Block of Copper", - "block.create.copper_casing": "UNLOCALIZED: Copper Casing", - "block.create.copper_ore": "UNLOCALIZED: Copper Ore", - "block.create.copper_shingles": "UNLOCALIZED: Copper Shingles", - "block.create.copper_tiles": "UNLOCALIZED: Copper Tiles", - "block.create.copper_valve_handle": "UNLOCALIZED: Copper Valve Handle", - "block.create.creative_crate": "Criativador Esquemaannon", - "block.create.creative_fluid_tank": "UNLOCALIZED: Creative Fluid Tank", - "block.create.creative_motor": "UNLOCALIZED: Creative Motor", - "block.create.crimson_window": "UNLOCALIZED: Crimson Window", - "block.create.crimson_window_pane": "UNLOCALIZED: Crimson Window Pane", - "block.create.crushing_wheel": "Roda de Moer", - "block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller", - "block.create.cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.cyan_sail": "UNLOCALIZED: Cyan Sail", - "block.create.cyan_seat": "UNLOCALIZED: Cyan Seat", - "block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle", - "block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window", - "block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane", - "block.create.dark_scoria": "UNLOCALIZED: Dark Scoria", - "block.create.dark_scoria_bricks": "UNLOCALIZED: Dark Scoria Bricks", - "block.create.dark_scoria_bricks_slab": "UNLOCALIZED: Dark Scoria Bricks Slab", - "block.create.dark_scoria_bricks_stairs": "UNLOCALIZED: Dark Scoria Bricks Stairs", - "block.create.dark_scoria_bricks_wall": "UNLOCALIZED: Dark Scoria Bricks Wall", - "block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone", - "block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab", - "block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs", - "block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall", - "block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar", - "block.create.deployer": "UNLOCALIZED: Deployer", - "block.create.depot": "UNLOCALIZED: Depot", - "block.create.diorite_bricks": "Tijolos de Diorito", - "block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab", - "block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs", - "block.create.diorite_bricks_wall": "UNLOCALIZED: Diorite Bricks Wall", - "block.create.diorite_cobblestone": "UNLOCALIZED: Diorite Cobblestone", - "block.create.diorite_cobblestone_slab": "UNLOCALIZED: Diorite Cobblestone Slab", - "block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs", - "block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall", - "block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_bricks": "Tijolos de Dolomite", - "block.create.dolomite_bricks_slab": "Lajotas de Tijolos de Dolomite", - "block.create.dolomite_bricks_stairs": "Escadas de Tijolos de Dolomite", - "block.create.dolomite_bricks_wall": "Muro de Tijolos de Dolomite", - "block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone", - "block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab", - "block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs", - "block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall", - "block.create.dolomite_pillar": "Pilar de Dolomite", - "block.create.encased_chain_drive": "UNLOCALIZED: Encased Chain Drive", - "block.create.encased_fan": "Ventilador Revestida", - "block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe", - "block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks", - "block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab", - "block.create.fancy_andesite_bricks_stairs": "UNLOCALIZED: Fancy Andesite Bricks Stairs", - "block.create.fancy_andesite_bricks_wall": "UNLOCALIZED: Fancy Andesite Bricks Wall", - "block.create.fancy_dark_scoria_bricks": "UNLOCALIZED: Fancy Dark Scoria Bricks", - "block.create.fancy_dark_scoria_bricks_slab": "UNLOCALIZED: Fancy Dark Scoria Bricks Slab", - "block.create.fancy_dark_scoria_bricks_stairs": "UNLOCALIZED: Fancy Dark Scoria Bricks Stairs", - "block.create.fancy_dark_scoria_bricks_wall": "UNLOCALIZED: Fancy Dark Scoria Bricks Wall", - "block.create.fancy_diorite_bricks": "UNLOCALIZED: Fancy Diorite Bricks", - "block.create.fancy_diorite_bricks_slab": "UNLOCALIZED: Fancy Diorite Bricks Slab", - "block.create.fancy_diorite_bricks_stairs": "UNLOCALIZED: Fancy Diorite Bricks Stairs", - "block.create.fancy_diorite_bricks_wall": "UNLOCALIZED: Fancy Diorite Bricks Wall", - "block.create.fancy_dolomite_bricks": "UNLOCALIZED: Fancy Dolomite Bricks", - "block.create.fancy_dolomite_bricks_slab": "UNLOCALIZED: Fancy Dolomite Bricks Slab", - "block.create.fancy_dolomite_bricks_stairs": "UNLOCALIZED: Fancy Dolomite Bricks Stairs", - "block.create.fancy_dolomite_bricks_wall": "UNLOCALIZED: Fancy Dolomite Bricks Wall", - "block.create.fancy_gabbro_bricks": "UNLOCALIZED: Fancy Gabbro Bricks", - "block.create.fancy_gabbro_bricks_slab": "UNLOCALIZED: Fancy Gabbro Bricks Slab", - "block.create.fancy_gabbro_bricks_stairs": "UNLOCALIZED: Fancy Gabbro Bricks Stairs", - "block.create.fancy_gabbro_bricks_wall": "UNLOCALIZED: Fancy Gabbro Bricks Wall", - "block.create.fancy_granite_bricks": "UNLOCALIZED: Fancy Granite Bricks", - "block.create.fancy_granite_bricks_slab": "UNLOCALIZED: Fancy Granite Bricks Slab", - "block.create.fancy_granite_bricks_stairs": "UNLOCALIZED: Fancy Granite Bricks Stairs", - "block.create.fancy_granite_bricks_wall": "UNLOCALIZED: Fancy Granite Bricks Wall", - "block.create.fancy_limestone_bricks": "UNLOCALIZED: Fancy Limestone Bricks", - "block.create.fancy_limestone_bricks_slab": "UNLOCALIZED: Fancy Limestone Bricks Slab", - "block.create.fancy_limestone_bricks_stairs": "UNLOCALIZED: Fancy Limestone Bricks Stairs", - "block.create.fancy_limestone_bricks_wall": "UNLOCALIZED: Fancy Limestone Bricks Wall", - "block.create.fancy_scoria_bricks": "UNLOCALIZED: Fancy Scoria Bricks", - "block.create.fancy_scoria_bricks_slab": "UNLOCALIZED: Fancy Scoria Bricks Slab", - "block.create.fancy_scoria_bricks_stairs": "UNLOCALIZED: Fancy Scoria Bricks Stairs", - "block.create.fancy_scoria_bricks_wall": "UNLOCALIZED: Fancy Scoria Bricks Wall", - "block.create.fancy_weathered_limestone_bricks": "UNLOCALIZED: Fancy Weathered Limestone Bricks", - "block.create.fancy_weathered_limestone_bricks_slab": "UNLOCALIZED: Fancy Weathered Limestone Bricks Slab", - "block.create.fancy_weathered_limestone_bricks_stairs": "UNLOCALIZED: Fancy Weathered Limestone Bricks Stairs", - "block.create.fancy_weathered_limestone_bricks_wall": "UNLOCALIZED: Fancy Weathered Limestone Bricks Wall", - "block.create.fluid_pipe": "UNLOCALIZED: Fluid Pipe", - "block.create.fluid_tank": "UNLOCALIZED: Fluid Tank", - "block.create.fluid_valve": "UNLOCALIZED: Fluid Valve", - "block.create.flywheel": "UNLOCALIZED: Flywheel", - "block.create.framed_glass": "UNLOCALIZED: Framed Glass", - "block.create.framed_glass_pane": "UNLOCALIZED: Framed Glass Pane", - "block.create.furnace_engine": "UNLOCALIZED: Furnace Engine", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Tijolos de Gabbro", - "block.create.gabbro_bricks_slab": "UNLOCALIZED: Gabbro Bricks Slab", - "block.create.gabbro_bricks_stairs": "Escadas de Tijolos de Gabbro", - "block.create.gabbro_bricks_wall": "Muros de Tijolos de Gabbro", - "block.create.gabbro_cobblestone": "UNLOCALIZED: Gabbro Cobblestone", - "block.create.gabbro_cobblestone_slab": "UNLOCALIZED: Gabbro Cobblestone Slab", - "block.create.gabbro_cobblestone_stairs": "UNLOCALIZED: Gabbro Cobblestone Stairs", - "block.create.gabbro_cobblestone_wall": "UNLOCALIZED: Gabbro Cobblestone Wall", - "block.create.gabbro_pillar": "UNLOCALIZED: Gabbro Pillar", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft", - "block.create.gearbox": "Caixa de Transmissão", - "block.create.gearshift": "Câmbio", - "block.create.glass_fluid_pipe": "UNLOCALIZED: Glass Fluid Pipe", - "block.create.granite_bricks": "Tijolos de Granito", - "block.create.granite_bricks_slab": "UNLOCALIZED: Granite Bricks Slab", - "block.create.granite_bricks_stairs": "UNLOCALIZED: Granite Bricks Stairs", - "block.create.granite_bricks_wall": "UNLOCALIZED: Granite Bricks Wall", - "block.create.granite_cobblestone": "UNLOCALIZED: Granite Cobblestone", - "block.create.granite_cobblestone_slab": "UNLOCALIZED: Granite Cobblestone Slab", - "block.create.granite_cobblestone_stairs": "UNLOCALIZED: Granite Cobblestone Stairs", - "block.create.granite_cobblestone_wall": "UNLOCALIZED: Granite Cobblestone Wall", - "block.create.granite_pillar": "UNLOCALIZED: Granite Pillar", - "block.create.gray_sail": "UNLOCALIZED: Gray Sail", - "block.create.gray_seat": "UNLOCALIZED: Gray Seat", - "block.create.gray_valve_handle": "UNLOCALIZED: Gray Valve Handle", - "block.create.green_sail": "UNLOCALIZED: Green Sail", - "block.create.green_seat": "UNLOCALIZED: Green Seat", - "block.create.green_valve_handle": "UNLOCALIZED: Green Valve Handle", - "block.create.hand_crank": "UNLOCALIZED: Hand Crank", - "block.create.honey": "UNLOCALIZED: Honey", - "block.create.horizontal_framed_glass": "UNLOCALIZED: Horizontal Framed Glass", - "block.create.horizontal_framed_glass_pane": "UNLOCALIZED: Horizontal Framed Glass Pane", - "block.create.hose_pulley": "UNLOCALIZED: Hose Pulley", - "block.create.item_drain": "UNLOCALIZED: Item Drain", - "block.create.jungle_window": "UNLOCALIZED: Jungle Window", - "block.create.jungle_window_pane": "UNLOCALIZED: Jungle Window Pane", - "block.create.large_cogwheel": "Roda Dentada Grande", - "block.create.layered_andesite": "UNLOCALIZED: Layered Andesite", - "block.create.layered_dark_scoria": "UNLOCALIZED: Layered Dark Scoria", - "block.create.layered_diorite": "UNLOCALIZED: Layered Diorite", - "block.create.layered_dolomite": "UNLOCALIZED: Layered Dolomite", - "block.create.layered_gabbro": "UNLOCALIZED: Layered Gabbro", - "block.create.layered_granite": "UNLOCALIZED: Layered Granite", - "block.create.layered_limestone": "UNLOCALIZED: Layered Limestone", - "block.create.layered_scoria": "UNLOCALIZED: Layered Scoria", - "block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone", - "block.create.light_blue_sail": "UNLOCALIZED: Light Blue Sail", - "block.create.light_blue_seat": "UNLOCALIZED: Light Blue Seat", - "block.create.light_blue_valve_handle": "UNLOCALIZED: Light Blue Valve Handle", - "block.create.light_gray_sail": "UNLOCALIZED: Light Gray Sail", - "block.create.light_gray_seat": "UNLOCALIZED: Light Gray Seat", - "block.create.light_gray_valve_handle": "UNLOCALIZED: Light Gray Valve Handle", - "block.create.lime_sail": "UNLOCALIZED: Lime Sail", - "block.create.lime_seat": "UNLOCALIZED: Lime Seat", - "block.create.lime_valve_handle": "UNLOCALIZED: Lime Valve Handle", - "block.create.limesand": "Areia Calcária", - "block.create.limestone": "Calcário", - "block.create.limestone_bricks": "Tijolos de Calcário", - "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", - "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", - "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", - "block.create.limestone_cobblestone": "UNLOCALIZED: Limestone Cobblestone", - "block.create.limestone_cobblestone_slab": "UNLOCALIZED: Limestone Cobblestone Slab", - "block.create.limestone_cobblestone_stairs": "UNLOCALIZED: Limestone Cobblestone Stairs", - "block.create.limestone_cobblestone_wall": "UNLOCALIZED: Limestone Cobblestone Wall", - "block.create.limestone_pillar": "Pilar de Calcário", - "block.create.linear_chassis": "Chassis de Translado", - "block.create.lit_blaze_burner": "UNLOCALIZED: Lit Blaze Burner", - "block.create.magenta_sail": "UNLOCALIZED: Magenta Sail", - "block.create.magenta_seat": "UNLOCALIZED: Magenta Seat", - "block.create.magenta_valve_handle": "UNLOCALIZED: Magenta Valve Handle", - "block.create.mechanical_arm": "UNLOCALIZED: Mechanical Arm", - "block.create.mechanical_bearing": "Rolamento Mecânico", - "block.create.mechanical_crafter": "UNLOCALIZED: Mechanical Crafter", - "block.create.mechanical_drill": "Furadeira Mecânica", - "block.create.mechanical_harvester": "Coletor Mecânico", - "block.create.mechanical_mixer": "UNLOCALIZED: Mechanical Mixer", - "block.create.mechanical_piston": "Pistão Mecânico", - "block.create.mechanical_piston_head": "Cabeça do Pistão Mecânico", - "block.create.mechanical_plough": "UNLOCALIZED: Mechanical Plough", - "block.create.mechanical_press": "Prensa Mecânico", - "block.create.mechanical_pump": "UNLOCALIZED: Mechanical Pump", - "block.create.mechanical_saw": "UNLOCALIZED: Mechanical Saw", - "block.create.metal_bracket": "UNLOCALIZED: Metal Bracket", - "block.create.millstone": "UNLOCALIZED: Millstone", - "block.create.minecart_anchor": "UNLOCALIZED: Minecart Anchor", - "block.create.mossy_andesite": "UNLOCALIZED: Mossy Andesite", - "block.create.mossy_dark_scoria": "UNLOCALIZED: Mossy Dark Scoria", - "block.create.mossy_diorite": "UNLOCALIZED: Mossy Diorite", - "block.create.mossy_dolomite": "UNLOCALIZED: Mossy Dolomite", - "block.create.mossy_gabbro": "UNLOCALIZED: Mossy Gabbro", - "block.create.mossy_granite": "UNLOCALIZED: Mossy Granite", - "block.create.mossy_limestone": "UNLOCALIZED: Mossy Limestone", - "block.create.mossy_scoria": "UNLOCALIZED: Mossy Scoria", - "block.create.mossy_weathered_limestone": "UNLOCALIZED: Mossy Weathered Limestone", - "block.create.mysterious_cuckoo_clock": "UNLOCALIZED: Cuckoo Clock", - "block.create.natural_scoria": "UNLOCALIZED: Natural Scoria", - "block.create.nixie_tube": "UNLOCALIZED: Nixie Tube", - "block.create.nozzle": "UNLOCALIZED: Nozzle", - "block.create.oak_window": "UNLOCALIZED: Oak Window", - "block.create.oak_window_pane": "UNLOCALIZED: Oak Window Pane", - "block.create.orange_sail": "UNLOCALIZED: Orange Sail", - "block.create.orange_seat": "UNLOCALIZED: Orange Seat", - "block.create.orange_valve_handle": "UNLOCALIZED: Orange Valve Handle", - "block.create.ornate_iron_window": "UNLOCALIZED: Ornate Iron Window", - "block.create.ornate_iron_window_pane": "UNLOCALIZED: Ornate Iron Window Pane", - "block.create.overgrown_andesite": "UNLOCALIZED: Overgrown Andesite", - "block.create.overgrown_dark_scoria": "UNLOCALIZED: Overgrown Dark Scoria", - "block.create.overgrown_diorite": "UNLOCALIZED: Overgrown Diorite", - "block.create.overgrown_dolomite": "UNLOCALIZED: Overgrown Dolomite", - "block.create.overgrown_gabbro": "UNLOCALIZED: Overgrown Gabbro", - "block.create.overgrown_granite": "UNLOCALIZED: Overgrown Granite", - "block.create.overgrown_limestone": "UNLOCALIZED: Overgrown Limestone", - "block.create.overgrown_scoria": "UNLOCALIZED: Overgrown Scoria", - "block.create.overgrown_weathered_limestone": "UNLOCALIZED: Overgrown Weathered Limestone", - "block.create.paved_andesite": "UNLOCALIZED: Paved Andesite", - "block.create.paved_andesite_slab": "UNLOCALIZED: Paved Andesite Slab", - "block.create.paved_andesite_stairs": "UNLOCALIZED: Paved Andesite Stairs", - "block.create.paved_andesite_wall": "UNLOCALIZED: Paved Andesite Wall", - "block.create.paved_dark_scoria": "UNLOCALIZED: Paved Dark Scoria", - "block.create.paved_dark_scoria_slab": "UNLOCALIZED: Paved Dark Scoria Slab", - "block.create.paved_dark_scoria_stairs": "UNLOCALIZED: Paved Dark Scoria Stairs", - "block.create.paved_dark_scoria_wall": "UNLOCALIZED: Paved Dark Scoria Wall", - "block.create.paved_diorite": "UNLOCALIZED: Paved Diorite", - "block.create.paved_diorite_slab": "UNLOCALIZED: Paved Diorite Slab", - "block.create.paved_diorite_stairs": "UNLOCALIZED: Paved Diorite Stairs", - "block.create.paved_diorite_wall": "UNLOCALIZED: Paved Diorite Wall", - "block.create.paved_dolomite": "UNLOCALIZED: Paved Dolomite", - "block.create.paved_dolomite_slab": "UNLOCALIZED: Paved Dolomite Slab", - "block.create.paved_dolomite_stairs": "UNLOCALIZED: Paved Dolomite Stairs", - "block.create.paved_dolomite_wall": "UNLOCALIZED: Paved Dolomite Wall", - "block.create.paved_gabbro": "UNLOCALIZED: Paved Gabbro", - "block.create.paved_gabbro_slab": "UNLOCALIZED: Paved Gabbro Slab", - "block.create.paved_gabbro_stairs": "UNLOCALIZED: Paved Gabbro Stairs", - "block.create.paved_gabbro_wall": "UNLOCALIZED: Paved Gabbro Wall", - "block.create.paved_granite": "UNLOCALIZED: Paved Granite", - "block.create.paved_granite_slab": "UNLOCALIZED: Paved Granite Slab", - "block.create.paved_granite_stairs": "UNLOCALIZED: Paved Granite Stairs", - "block.create.paved_granite_wall": "UNLOCALIZED: Paved Granite Wall", - "block.create.paved_limestone": "UNLOCALIZED: Paved Limestone", - "block.create.paved_limestone_slab": "UNLOCALIZED: Paved Limestone Slab", - "block.create.paved_limestone_stairs": "UNLOCALIZED: Paved Limestone Stairs", - "block.create.paved_limestone_wall": "UNLOCALIZED: Paved Limestone Wall", - "block.create.paved_scoria": "UNLOCALIZED: Paved Scoria", - "block.create.paved_scoria_slab": "UNLOCALIZED: Paved Scoria Slab", - "block.create.paved_scoria_stairs": "UNLOCALIZED: Paved Scoria Stairs", - "block.create.paved_scoria_wall": "UNLOCALIZED: Paved Scoria Wall", - "block.create.paved_weathered_limestone": "UNLOCALIZED: Paved Weathered Limestone", - "block.create.paved_weathered_limestone_slab": "UNLOCALIZED: Paved Weathered Limestone Slab", - "block.create.paved_weathered_limestone_stairs": "UNLOCALIZED: Paved Weathered Limestone Stairs", - "block.create.paved_weathered_limestone_wall": "UNLOCALIZED: Paved Weathered Limestone Wall", - "block.create.pink_sail": "UNLOCALIZED: Pink Sail", - "block.create.pink_seat": "UNLOCALIZED: Pink Seat", - "block.create.pink_valve_handle": "UNLOCALIZED: Pink Valve Handle", - "block.create.piston_extension_pole": "Vara de Extensão do Pistão", - "block.create.polished_dark_scoria": "UNLOCALIZED: Polished Dark Scoria", - "block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab", - "block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs", - "block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall", - "block.create.polished_dolomite": "Dolomite Polido", - "block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab", - "block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs", - "block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall", - "block.create.polished_gabbro": "Gabbro Polido", - "block.create.polished_gabbro_slab": "UNLOCALIZED: Polished Gabbro Slab", - "block.create.polished_gabbro_stairs": "UNLOCALIZED: Polished Gabbro Stairs", - "block.create.polished_gabbro_wall": "UNLOCALIZED: Polished Gabbro Wall", - "block.create.polished_limestone": "Calcário Polido", - "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", - "block.create.polished_limestone_stairs": "UNLOCALIZED: Polished Limestone Stairs", - "block.create.polished_limestone_wall": "UNLOCALIZED: Polished Limestone Wall", - "block.create.polished_scoria": "UNLOCALIZED: Polished Scoria", - "block.create.polished_scoria_slab": "UNLOCALIZED: Polished Scoria Slab", - "block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs", - "block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall", - "block.create.polished_weathered_limestone": "Calcário Polido Resistido", - "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", - "block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs", - "block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall", - "block.create.portable_fluid_interface": "UNLOCALIZED: Portable Fluid Interface", - "block.create.portable_storage_interface": "UNLOCALIZED: Portable Storage Interface", - "block.create.powered_latch": "UNLOCALIZED: Powered Latch", - "block.create.powered_toggle_latch": "UNLOCALIZED: Powered Toggle Latch", - "block.create.pulley_magnet": "UNLOCALIZED: Pulley Magnet", - "block.create.pulse_repeater": "Repetidor de Pulso", - "block.create.purple_sail": "UNLOCALIZED: Purple Sail", - "block.create.purple_seat": "UNLOCALIZED: Purple Seat", - "block.create.purple_valve_handle": "UNLOCALIZED: Purple Valve Handle", - "block.create.radial_chassis": "Chassis de Rotação", - "block.create.red_sail": "UNLOCALIZED: Red Sail", - "block.create.red_seat": "UNLOCALIZED: Red Seat", - "block.create.red_valve_handle": "UNLOCALIZED: Red Valve Handle", - "block.create.redstone_contact": "Contato de Redstone", - "block.create.redstone_link": "Conexão de Redstone", - "block.create.refined_radiance_casing": "UNLOCALIZED: Radiant Casing", - "block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail", - "block.create.rope": "UNLOCALIZED: Rope", - "block.create.rope_pulley": "UNLOCALIZED: Rope Pulley", - "block.create.rotation_speed_controller": "UNLOCALIZED: Rotation Speed Controller", - "block.create.sail_frame": "UNLOCALIZED: Sail Frame", - "block.create.schematic_table": "Mesa de Esquematizar", - "block.create.schematicannon": "Esquemaannon", - "block.create.scoria": "UNLOCALIZED: Scoria", - "block.create.scoria_bricks": "UNLOCALIZED: Scoria Bricks", - "block.create.scoria_bricks_slab": "UNLOCALIZED: Scoria Bricks Slab", - "block.create.scoria_bricks_stairs": "UNLOCALIZED: Scoria Bricks Stairs", - "block.create.scoria_bricks_wall": "UNLOCALIZED: Scoria Bricks Wall", - "block.create.scoria_cobblestone": "UNLOCALIZED: Scoria Cobblestone", - "block.create.scoria_cobblestone_slab": "UNLOCALIZED: Scoria Cobblestone Slab", - "block.create.scoria_cobblestone_stairs": "UNLOCALIZED: Scoria Cobblestone Stairs", - "block.create.scoria_cobblestone_wall": "UNLOCALIZED: Scoria Cobblestone Wall", - "block.create.scoria_pillar": "UNLOCALIZED: Scoria Pillar", - "block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis", - "block.create.sequenced_gearshift": "UNLOCALIZED: Sequenced Gearshift", - "block.create.shadow_steel_casing": "UNLOCALIZED: Shadow Casing", - "block.create.shaft": "Eixo", - "block.create.smart_chute": "UNLOCALIZED: Smart Chute", - "block.create.smart_fluid_pipe": "UNLOCALIZED: Smart Fluid Pipe", - "block.create.speedometer": "UNLOCALIZED: Speedometer", - "block.create.spout": "UNLOCALIZED: Spout", - "block.create.spruce_window": "UNLOCALIZED: Spruce Window", - "block.create.spruce_window_pane": "UNLOCALIZED: Spruce Window Pane", - "block.create.sticker": "UNLOCALIZED: Sticker", - "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", - "block.create.stockpile_switch": "Disjuntor de Armazenamento", - "block.create.stressometer": "UNLOCALIZED: Stressometer", - "block.create.tiled_glass": "Vidro Entalhado", - "block.create.tiled_glass_pane": "Vidraça Entalhada", - "block.create.turntable": "Mesa giratória", - "block.create.vertical_framed_glass": "UNLOCALIZED: Vertical Framed Glass", - "block.create.vertical_framed_glass_pane": "UNLOCALIZED: Vertical Framed Glass Pane", - "block.create.warped_window": "UNLOCALIZED: Warped Window", - "block.create.warped_window_pane": "UNLOCALIZED: Warped Window Pane", - "block.create.water_wheel": "Roda de Água", - "block.create.weathered_limestone": "Calcário Resistido", - "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone", - "block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab", - "block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs", - "block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall", - "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", - "block.create.weighted_ejector": "UNLOCALIZED: Weighted Ejector", - "block.create.white_sail": "UNLOCALIZED: White Sail", - "block.create.white_seat": "UNLOCALIZED: White Seat", - "block.create.white_valve_handle": "UNLOCALIZED: White Valve Handle", - "block.create.windmill_bearing": "UNLOCALIZED: Windmill Bearing", - "block.create.wooden_bracket": "UNLOCALIZED: Wooden Bracket", - "block.create.yellow_sail": "UNLOCALIZED: Yellow Sail", - "block.create.yellow_seat": "UNLOCALIZED: Yellow Seat", - "block.create.yellow_valve_handle": "UNLOCALIZED: Yellow Valve Handle", - "block.create.zinc_block": "UNLOCALIZED: Block of Zinc", - "block.create.zinc_ore": "UNLOCALIZED: Zinc Ore", - "entity.create.contraption": "UNLOCALIZED: Contraption", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", - "entity.create.seat": "UNLOCALIZED: Seat", - "entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption", - "entity.create.super_glue": "UNLOCALIZED: Super Glue", - "fluid.create.milk": "UNLOCALIZED: Milk", - "fluid.create.potion": "UNLOCALIZED: Potion", - "fluid.create.tea": "UNLOCALIZED: Builder's Tea", - "item.create.andesite_alloy": "UNLOCALIZED: Andesite Alloy", - "item.create.attribute_filter": "UNLOCALIZED: Attribute Filter", - "item.create.bar_of_chocolate": "UNLOCALIZED: Bar of Chocolate", - "item.create.belt_connector": "Esteira Mecânica", - "item.create.blaze_cake": "UNLOCALIZED: Blaze Cake", - "item.create.blaze_cake_base": "UNLOCALIZED: Blaze Cake Base", - "item.create.brass_hand": "UNLOCALIZED: Brass Hand", - "item.create.brass_ingot": "UNLOCALIZED: Brass Ingot", - "item.create.brass_nugget": "UNLOCALIZED: Brass Nugget", - "item.create.brass_sheet": "UNLOCALIZED: Brass Sheet", - "item.create.builders_tea": "UNLOCALIZED: Builder's Tea", - "item.create.chest_minecart_contraption": "UNLOCALIZED: Chest Minecart Contraption", - "item.create.chocolate_bucket": "UNLOCALIZED: Chocolate Bucket", - "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", - "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", - "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", - "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", - "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", - "item.create.crafter_slot_cover": "UNLOCALIZED: Crafter Slot Cover", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "UNLOCALIZED: Crushed Aluminum Ore", - "item.create.crushed_brass": "UNLOCALIZED: Crushed Brass", - "item.create.crushed_copper_ore": "UNLOCALIZED: Crushed Copper Ore", - "item.create.crushed_gold_ore": "UNLOCALIZED: Crushed Gold Ore", - "item.create.crushed_iron_ore": "UNLOCALIZED: Crushed Iron Ore", - "item.create.crushed_lead_ore": "UNLOCALIZED: Crushed Lead Ore", - "item.create.crushed_nickel_ore": "UNLOCALIZED: Crushed Nickel Ore", - "item.create.crushed_osmium_ore": "UNLOCALIZED: Crushed Osmium Ore", - "item.create.crushed_platinum_ore": "UNLOCALIZED: Crushed Platinum Ore", - "item.create.crushed_quicksilver_ore": "UNLOCALIZED: Crushed Quicksilver Ore", - "item.create.crushed_silver_ore": "UNLOCALIZED: Crushed Silver Ore", - "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", - "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", - "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "Massa", - "item.create.electron_tube": "UNLOCALIZED: Electron Tube", - "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", - "item.create.empty_schematic": "Esquema vazio", - "item.create.extendo_grip": "UNLOCALIZED: Extendo Grip", - "item.create.filter": "Filtro", - "item.create.furnace_minecart_contraption": "UNLOCALIZED: Furnace Minecart Contraption", - "item.create.goggles": "UNLOCALIZED: Engineer's Goggles", - "item.create.golden_sheet": "UNLOCALIZED: Golden Sheet", - "item.create.handheld_worldshaper": "UNLOCALIZED: Creative Worldshaper", - "item.create.honey_bucket": "UNLOCALIZED: Honey Bucket", - "item.create.honeyed_apple": "UNLOCALIZED: Honeyed Apple", - "item.create.integrated_circuit": "UNLOCALIZED: Integrated Circuit", - "item.create.iron_sheet": "Placas de Ferro", - "item.create.lapis_sheet": "UNLOCALIZED: Lapis Sheet", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption", - "item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling", - "item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz", - "item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian", - "item.create.propeller": "Hélice", - "item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper", - "item.create.refined_radiance": "UNLOCALIZED: Refined Radiance", - "item.create.rose_quartz": "Quartzo Rosa", - "item.create.sand_paper": "UNLOCALIZED: Sand Paper", - "item.create.schematic": "Esquema", - "item.create.schematic_and_quill": "Esquema e pena", - "item.create.shadow_steel": "UNLOCALIZED: Shadow Steel", - "item.create.super_glue": "UNLOCALIZED: Super Glue", - "item.create.sweet_roll": "UNLOCALIZED: Sweet Roll", - "item.create.tree_fertilizer": "Fertilizante de Árvore", - "item.create.vertical_gearbox": "UNLOCALIZED: Vertical Gearbox", - "item.create.wand_of_symmetry": "Varinha de Simetria", - "item.create.wheat_flour": "UNLOCALIZED: Wheat Flour", - "item.create.whisk": "UNLOCALIZED: Whisk", - "item.create.wrench": "UNLOCALIZED: Wrench", - "item.create.zinc_ingot": "UNLOCALIZED: Zinc Ingot", - "item.create.zinc_nugget": "UNLOCALIZED: Zinc Nugget", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "UNLOCALIZED: Welcome to Create", - "advancement.create.root.desc": "UNLOCALIZED: It's time to start building some amazing Contraptions!", - "advancement.create.andesite_alloy": "UNLOCALIZED: Alliterations Aplenty", - "advancement.create.andesite_alloy.desc": "UNLOCALIZED: Create's materials have weird names, Andesite Alloy is one of them.", - "advancement.create.its_alive": "UNLOCALIZED: It's Alive!", - "advancement.create.its_alive.desc": "UNLOCALIZED: Watch your first kinetic component spin.", - "advancement.create.shifting_gears": "UNLOCALIZED: Shifting Gears", - "advancement.create.shifting_gears.desc": "UNLOCALIZED: Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your contraption.", - "advancement.create.overstressed": "UNLOCALIZED: Overstressed", - "advancement.create.overstressed.desc": "UNLOCALIZED: Experience the limits of stress firsthand.", - "advancement.create.belt": "UNLOCALIZED: Kelp Drive", - "advancement.create.belt.desc": "UNLOCALIZED: Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "UNLOCALIZED: Take cover!", - "advancement.create.tunnel.desc": "UNLOCALIZED: Embellish your mechanical belt with a Tunnel.", - "advancement.create.splitter_tunnel": "UNLOCALIZED: Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "UNLOCALIZED: Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "UNLOCALIZED: Tumbling down", - "advancement.create.chute.desc": "UNLOCALIZED: Place a chute, the vertical counterpart of the belt.", - "advancement.create.upward_chute": "UNLOCALIZED: Aerial Abduction", - "advancement.create.upward_chute.desc": "UNLOCALIZED: Watch a thrown item fly up into a fan-powered chute.", - "advancement.create.belt_funnel": "UNLOCALIZED: Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "UNLOCALIZED: Place a sideways funnel on top of a belt or depot to create a special type.", - "advancement.create.belt_funnel_kiss": "UNLOCALIZED: The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "UNLOCALIZED: Make two belt mounted funnels kiss.", - "advancement.create.fan": "UNLOCALIZED: Mechanical Airbender", - "advancement.create.fan.desc": "UNLOCALIZED: Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "UNLOCALIZED: Geothermal Space Heater", - "advancement.create.fan_lava.desc": "UNLOCALIZED: Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "UNLOCALIZED: Wacky Washing", - "advancement.create.fan_water.desc": "UNLOCALIZED: Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "UNLOCALIZED: Mechanical Bellows", - "advancement.create.fan_smoke.desc": "UNLOCALIZED: Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "UNLOCALIZED: Configure Conveniently", - "advancement.create.wrench.desc": "UNLOCALIZED: Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "UNLOCALIZED: Stress-O-Vision", - "advancement.create.goggles.desc": "UNLOCALIZED: Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "UNLOCALIZED: But How Fast Exactly?", - "advancement.create.speedometer.desc": "UNLOCALIZED: Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "UNLOCALIZED: But How Stressed Exactly?", - "advancement.create.stressometer.desc": "UNLOCALIZED: Place and power a Stressometer. Look at it through your goggles to read its exact value.", - "advancement.create.aesthetics": "UNLOCALIZED: Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "UNLOCALIZED: Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "UNLOCALIZED: Boom, Reinforced!", - "advancement.create.reinforced.desc": "UNLOCALIZED: Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "UNLOCALIZED: Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "UNLOCALIZED: Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "UNLOCALIZED: Tasteful power", - "advancement.create.chocolate_wheel.desc": "UNLOCALIZED: Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "UNLOCALIZED: Magma Wheel", - "advancement.create.lava_wheel.desc": "UNLOCALIZED: This shouldn't have worked.", - "advancement.create.cuckoo": "UNLOCALIZED: Is it time?", - "advancement.create.cuckoo.desc": "UNLOCALIZED: Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "UNLOCALIZED: Pocket Crusher", - "advancement.create.millstone.desc": "UNLOCALIZED: Place and power a Millstone.", - "advancement.create.windmill": "UNLOCALIZED: A mild Breeze", - "advancement.create.windmill.desc": "UNLOCALIZED: Assemble a windmill.", - "advancement.create.maxed_windmill": "UNLOCALIZED: A strong breeze", - "advancement.create.maxed_windmill.desc": "UNLOCALIZED: Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "UNLOCALIZED: The Andesite Age", - "advancement.create.andesite_casing.desc": "UNLOCALIZED: Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "UNLOCALIZED: Stationary Breakers", - "advancement.create.mechanical_drill.desc": "UNLOCALIZED: Place and power a Mechanical Drill.", - "advancement.create.press": "UNLOCALIZED: Press Goes 'Bonk!'", - "advancement.create.press.desc": "UNLOCALIZED: Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "UNLOCALIZED: Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "UNLOCALIZED: Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "UNLOCALIZED: Beep Boop", - "advancement.create.electron_tube.desc": "UNLOCALIZED: Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "UNLOCALIZED: Stationary Chopping", - "advancement.create.mechanical_saw.desc": "UNLOCALIZED: Place and power a Mechanical Saw.", - "advancement.create.basin": "UNLOCALIZED: Basin Operation", - "advancement.create.basin.desc": "UNLOCALIZED: Place a Basin and try throwing items into it.", - "advancement.create.mixer": "UNLOCALIZED: Mixin' It Up", - "advancement.create.mixer.desc": "UNLOCALIZED: Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "UNLOCALIZED: A living Fireplace", - "advancement.create.blaze_burner.desc": "UNLOCALIZED: Obtain a Blaze Burner.", - "advancement.create.compact": "UNLOCALIZED: Automated Compacting", - "advancement.create.compact.desc": "UNLOCALIZED: Use a Press and a Basin to compact some items.", - "advancement.create.brass": "UNLOCALIZED: Actual Alloys", - "advancement.create.brass.desc": "UNLOCALIZED: Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "UNLOCALIZED: The Brass Age", - "advancement.create.brass_casing.desc": "UNLOCALIZED: Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "UNLOCALIZED: The Copper Age", - "advancement.create.copper_casing.desc": "UNLOCALIZED: Use some Copper Sheets and Wood to create some Copper Casings.", - "advancement.create.spout": "UNLOCALIZED: Sploosh", - "advancement.create.spout.desc": "UNLOCALIZED: Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "UNLOCALIZED: Global Brewery", - "advancement.create.spout_potion.desc": "UNLOCALIZED: Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "UNLOCALIZED: A world of Imagination", - "advancement.create.chocolate.desc": "UNLOCALIZED: Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "UNLOCALIZED: Tumble Draining", - "advancement.create.item_drain.desc": "UNLOCALIZED: Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "UNLOCALIZED: Let it roll!", - "advancement.create.chained_item_drain.desc": "UNLOCALIZED: Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "UNLOCALIZED: Flow Spy", - "advancement.create.glass_pipe.desc": "UNLOCALIZED: Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "UNLOCALIZED: Never cross the Streams!", - "advancement.create.pipe_collision.desc": "UNLOCALIZED: Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "UNLOCALIZED: There's a leak!", - "advancement.create.pipe_spill.desc": "UNLOCALIZED: Watch an open end of a pipe take or place fluids into the world.", - "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.infinite_water": "UNLOCALIZED: Draining the Ocean", - "advancement.create.infinite_water.desc": "UNLOCALIZED: Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "UNLOCALIZED: Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "UNLOCALIZED: Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "UNLOCALIZED: Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "UNLOCALIZED: Pump from a body of Molten Chocolate large enough to be considered Infinite.", - "advancement.create.crafter": "UNLOCALIZED: Automated Assembly", - "advancement.create.crafter.desc": "UNLOCALIZED: Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "UNLOCALIZED: Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "UNLOCALIZED: Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "UNLOCALIZED: Signs of Style", - "advancement.create.nixie_tube.desc": "UNLOCALIZED: Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "UNLOCALIZED: Poke, Place, and Attack", - "advancement.create.deployer.desc": "UNLOCALIZED: Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "UNLOCALIZED: Engineers hate him!", - "advancement.create.speed_controller.desc": "UNLOCALIZED: Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "UNLOCALIZED: Heart of the Factory", - "advancement.create.flywheel.desc": "UNLOCALIZED: Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "UNLOCALIZED: High levels of Stress", - "advancement.create.overstress_flywheel.desc": "UNLOCALIZED: Overstress a Furnace Engine.", - "advancement.create.integrated_circuit": "UNLOCALIZED: Complex Calculation", - "advancement.create.integrated_circuit.desc": "UNLOCALIZED: Assemble an Integrated Circuit.", - "advancement.create.mechanical_arm": "UNLOCALIZED: Busy Hands!", - "advancement.create.mechanical_arm.desc": "UNLOCALIZED: Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "UNLOCALIZED: Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "UNLOCALIZED: Watch a Mechanical Arm operate your Jukebox.", - "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_blaze_burner": "UNLOCALIZED: Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "UNLOCALIZED: Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "UNLOCALIZED: Pound It, Bro!", - "advancement.create.fist_bump.desc": "UNLOCALIZED: Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "UNLOCALIZED: A Pair of Giants", - "advancement.create.crushing_wheel.desc": "UNLOCALIZED: Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "UNLOCALIZED: Sugar Rush", - "advancement.create.blaze_cake.desc": "UNLOCALIZED: Bake your blaze burner a special cake.", - "advancement.create.chromatic_compound": "UNLOCALIZED: Bipolar Minerals", - "advancement.create.chromatic_compound.desc": "UNLOCALIZED: Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "UNLOCALIZED: Void Returner", - "advancement.create.shadow_steel.desc": "UNLOCALIZED: Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "UNLOCALIZED: Bright and Inspiring", - "advancement.create.refined_radiance.desc": "UNLOCALIZED: Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "UNLOCALIZED: The Chromatic Age", - "advancement.create.chromatic_age.desc": "UNLOCALIZED: Create casing blocks of the light and dark.", - "advancement.create.wand_of_symmetry": "UNLOCALIZED: Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "UNLOCALIZED: Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "UNLOCALIZED: Boioioing!", - "advancement.create.extendo_grip.desc": "UNLOCALIZED: Get hold of an Extendo Grip.", - "advancement.create.dual_extendo_grip": "UNLOCALIZED: Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "UNLOCALIZED: Dual wield Extendo Grips for super-human reach.", - "advancement.create.eob": "UNLOCALIZED: End of Beta", - "advancement.create.eob.desc": "UNLOCALIZED: Expect more content here in the future. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "UNLOCALIZED: Create", - "itemGroup.create.palettes": "UNLOCALIZED: Create Palettes", - "death.attack.create.crush": "%1$s foi processado pelas Rodas de Moer", - "death.attack.create.fan_fire": "%1$s foi queimado por ar quente", - "death.attack.create.fan_lava": "%1$s foi queimado pelo ventilador de lava", - "death.attack.create.mechanical_drill": "%1$s foi empalado pela Furadeira Mecânica", - "death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by a Mechanical Saw", - "death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock", - "create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer", - "create.block.cart_assembler.invalid": "UNLOCALIZED: Place your Cart Assembler on a rail block", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Moendo", - "create.recipe.milling": "UNLOCALIZED: Milling", - "create.recipe.fan_washing": "UNLOCALIZED: Bulk Washing", - "create.recipe.fan_washing.fan": "UNLOCALIZED: Fan behind Flowing Water", - "create.recipe.fan_smoking": "UNLOCALIZED: Bulk Smoking", - "create.recipe.fan_smoking.fan": "UNLOCALIZED: Fan behind Fire", - "create.recipe.fan_blasting": "UNLOCALIZED: Bulk Blasting", - "create.recipe.fan_blasting.fan": "UNLOCALIZED: Fan behind Lava", - "create.recipe.pressing": "Prensa Mecânica", - "create.recipe.mixing": "UNLOCALIZED: Mixing", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "UNLOCALIZED: Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "UNLOCALIZED: Automated Brewing", - "create.recipe.packing": "UNLOCALIZED: Compacting", - "create.recipe.automatic_packing": "UNLOCALIZED: Automated Packing", - "create.recipe.sawing": "UNLOCALIZED: Sawing", - "create.recipe.mechanical_crafting": "UNLOCALIZED: Mechanical Crafting", - "create.recipe.automatic_shaped": "UNLOCALIZED: Automated Shaped Crafting", - "create.recipe.block_cutting": "UNLOCALIZED: Block Cutting", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "UNLOCALIZED: Sandpaper Polishing", - "create.recipe.mystery_conversion": "UNLOCALIZED: Mysterious Conversion", - "create.recipe.spout_filling": "UNLOCALIZED: Filling by Spout", - "create.recipe.draining": "UNLOCALIZED: Item Draining", - "create.recipe.processing.chance": "%1$s%% de chance", - "create.recipe.heat_requirement.none": "UNLOCALIZED: No Heating Required", - "create.recipe.heat_requirement.heated": "UNLOCALIZED: Heated", - "create.recipe.heat_requirement.superheated": "UNLOCALIZED: Super-Heated", - - "create.generic.range": "Área", - "create.generic.radius": "Raio", - "create.generic.width": "UNLOCALIZED: Width", - "create.generic.height": "UNLOCALIZED: Height", - "create.generic.length": "UNLOCALIZED: Length", - "create.generic.speed": "Velocidade", - "create.generic.delay": "Demorada", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Segundos", - "create.generic.unit.minutes": "Minutos", - "create.generic.unit.rpm": "UNLOCALIZED: RPM", - "create.generic.unit.stress": "UNLOCALIZED: su", - "create.generic.unit.degrees": "UNLOCALIZED: °", - "create.generic.unit.millibuckets": "UNLOCALIZED: %1$smB", - "create.generic.clockwise": "UNLOCALIZED: Clockwise", - "create.generic.counter_clockwise": "UNLOCALIZED: Counter-Clockwise", - - "create.action.scroll": "Rolar", - "create.action.confirm": "Confirmar", - "create.action.abort": "Abortar", - "create.action.saveToFile": "Salvar", - "create.action.discard": "Descartar", - - "create.keyinfo.toolmenu": "Menu Focal da Ferramenta", - "create.keyinfo.scrollup": "UNLOCALIZED: Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "UNLOCALIZED: Simulate Mousewheel Down (inworld)", - - "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", - "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", - "create.gui.scrollInput.scrollToAdjustAmount": "UNLOCALIZED: Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", - "create.gui.scrollInput.shiftScrollsFaster": "UNLOCALIZED: Shift to Scroll Faster", - "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", - "create.gui.toolmenu.cycle": "[SCROLL] para Circular", - "create.gui.symmetryWand.mirrorType": "Espelhar", - "create.gui.symmetryWand.orientation": "Orientação", - - "create.symmetry.mirror.plane": "Espelhar uma vez", - "create.symmetry.mirror.doublePlane": "Retangular", - "create.symmetry.mirror.triplePlane": "Octagonal", - - "create.orientation.orthogonal": "Ortogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Através de Z", - "create.orientation.alongX": "Através de X", - - "create.gui.terrainzapper.title": "UNLOCALIZED: Handheld Blockzapper", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "UNLOCALIZED: Placement", - "create.gui.terrainzapper.placement.merged": "UNLOCALIZED: Merged", - "create.gui.terrainzapper.placement.attached": "UNLOCALIZED: Attached", - "create.gui.terrainzapper.placement.inserted": "UNLOCALIZED: Inserted", - "create.gui.terrainzapper.brush": "UNLOCALIZED: Brush", - "create.gui.terrainzapper.brush.cuboid": "UNLOCALIZED: Cuboid", - "create.gui.terrainzapper.brush.sphere": "UNLOCALIZED: Sphere", - "create.gui.terrainzapper.brush.cylinder": "UNLOCALIZED: Cylinder", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "UNLOCALIZED: Tool", - "create.gui.terrainzapper.tool.fill": "UNLOCALIZED: Fill", - "create.gui.terrainzapper.tool.place": "UNLOCALIZED: Place", - "create.gui.terrainzapper.tool.replace": "UNLOCALIZED: Replace", - "create.gui.terrainzapper.tool.clear": "UNLOCALIZED: Clear", - "create.gui.terrainzapper.tool.overlay": "UNLOCALIZED: Overlay", - "create.gui.terrainzapper.tool.flatten": "UNLOCALIZED: Flatten", - - "create.terrainzapper.shiftRightClickToSet": "UNLOCALIZED: Shift-Right-Click to Select a Shape", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "UNLOCALIZED: Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "UNLOCALIZED: Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "UNLOCALIZED: Couplings cannot form a loop", - "create.minecart_coupling.removed": "UNLOCALIZED: Removed all couplings from minecart", - "create.minecart_coupling.too_far": "UNLOCALIZED: Minecarts are too far apart", - - "create.contraptions.movement_mode": "UNLOCALIZED: Movement Mode", - "create.contraptions.movement_mode.move_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.move_place_returned": "UNLOCALIZED: Place only in Starting Position", - "create.contraptions.movement_mode.move_never_place": "UNLOCALIZED: Place only when Anchor Destroyed", - "create.contraptions.movement_mode.rotate_place": "UNLOCALIZED: Always Place when Stopped", - "create.contraptions.movement_mode.rotate_place_returned": "UNLOCALIZED: Only Place near Initial Angle", - "create.contraptions.movement_mode.rotate_never_place": "UNLOCALIZED: Only Place when Anchor Destroyed", - "create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode", - "create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion", - "create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating", - "create.contraptions.cart_movement_mode.rotation_locked": "UNLOCALIZED: Lock rotation", - "create.contraptions.windmill.rotation_direction": "UNLOCALIZED: Rotation Direction", - "create.contraptions.clockwork.clock_hands": "UNLOCALIZED: Clock Hands", - "create.contraptions.clockwork.hour_first": "UNLOCALIZED: Hour hand first", - "create.contraptions.clockwork.minute_first": "UNLOCALIZED: Minute hand first", - "create.contraptions.clockwork.hour_first_24": "UNLOCALIZED: 24-Hour hand first", - - "create.logistics.filter": "Filtros", - "create.logistics.recipe_filter": "UNLOCALIZED: Recipe Filter", - "create.logistics.fluid_filter": "UNLOCALIZED: Fluid Filter", - "create.logistics.firstFrequency": "UNLOCALIZED: Freq. #1", - "create.logistics.secondFrequency": "UNLOCALIZED: Freq. #2", - "create.logistics.filter.apply": "UNLOCALIZED: Applied filter to %1$s.", - "create.logistics.filter.apply_click_again": "UNLOCALIZED: Applied filter to %1$s, click again to copy the amount.", - "create.logistics.filter.apply_count": "UNLOCALIZED: Applied extraction count to filter.", - - "create.gui.goggles.generator_stats": "UNLOCALIZED: Generator Stats:", - "create.gui.goggles.kinetic_stats": "UNLOCALIZED: Kinetic Stats:", - "create.gui.goggles.at_current_speed": "UNLOCALIZED: at current speed", - "create.gui.goggles.pole_length": "UNLOCALIZED: Pole Length:", - "create.gui.goggles.fluid_container": "UNLOCALIZED: Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "UNLOCALIZED: Capacity: ", - "create.gui.assembly.exception": "UNLOCALIZED: This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "UNLOCALIZED: Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "UNLOCALIZED: The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "UNLOCALIZED: There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "UNLOCALIZED: There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "UNLOCALIZED: The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "UNLOCALIZED: Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - "create.gui.gauge.info_header": "UNLOCALIZED: Gauge Information:", - "create.gui.speedometer.title": "UNLOCALIZED: Rotation Speed", - "create.gui.stressometer.title": "UNLOCALIZED: Network Stress", - "create.gui.stressometer.capacity": "UNLOCALIZED: Remaining Capacity", - "create.gui.stressometer.overstressed": "UNLOCALIZED: Overstressed", - "create.gui.stressometer.no_rotation": "UNLOCALIZED: No Rotation", - "create.gui.contraptions.not_fast_enough": "UNLOCALIZED: It appears that this %1$s is _not_ rotating with _enough_ _speed_.", - "create.gui.contraptions.network_overstressed": "UNLOCALIZED: It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - "create.gui.adjustable_crate.title": "adjustable_crate", - "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", - "create.gui.stockpile_switch.title": "Disjuntor de Armazenamento", - "create.gui.stockpile_switch.invert_signal": "UNLOCALIZED: Invert Signal", - "create.gui.stockpile_switch.move_to_lower_at": "UNLOCALIZED: Move to lower lane at %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "UNLOCALIZED: Move to upper lane at %1$s%%", - "create.gui.sequenced_gearshift.title": "UNLOCALIZED: Sequenced Gearshift", - "create.gui.sequenced_gearshift.instruction": "UNLOCALIZED: Instruction", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "UNLOCALIZED: Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "UNLOCALIZED: Turn", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "UNLOCALIZED: Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "UNLOCALIZED: Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "UNLOCALIZED: Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "UNLOCALIZED: Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "UNLOCALIZED: Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "UNLOCALIZED: Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.end": "UNLOCALIZED: End", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "UNLOCALIZED: Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "UNLOCALIZED: Await", - "create.gui.sequenced_gearshift.speed": "UNLOCALIZED: Speed, Direction", - "create.gui.sequenced_gearshift.speed.forward": "UNLOCALIZED: Input speed, Forwards", - "create.gui.sequenced_gearshift.speed.forward_fast": "UNLOCALIZED: Double speed, Forwards", - "create.gui.sequenced_gearshift.speed.back": "UNLOCALIZED: Input speed, Reversed", - "create.gui.sequenced_gearshift.speed.back_fast": "UNLOCALIZED: Double speed, Reversed", - - "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Primeira posição feita.", - "create.schematicAndQuill.secondPos": "Segunda posição feita.", - "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", - "create.schematicAndQuill.abort": "Seleção removida.", - "create.schematicAndQuill.title": "UNLOCALIZED: Schematic Name:", - "create.schematicAndQuill.convert": "UNLOCALIZED: Save and Upload Immediately", - "create.schematicAndQuill.fallbackName": "Meu Esquema", - "create.schematicAndQuill.saved": "Salvo como %1$s", - - "create.schematic.invalid": "[!] Item Inválido - Use a Mesa de Desenho no lugar", - "create.schematic.position": "Posição", - "create.schematic.rotation": "Rotação", - "create.schematic.rotation.none": "Nada", - "create.schematic.rotation.cw90": "Sentido horário 90", - "create.schematic.rotation.cw180": "Sentido horário 180", - "create.schematic.rotation.cw270": "Sentido horário 270", - "create.schematic.mirror": "Espelhar", - "create.schematic.mirror.none": "Nada", - "create.schematic.mirror.frontBack": "Frente para Trás", - "create.schematic.mirror.leftRight": "Esquerda para Direita", - "create.schematic.tool.deploy": "Concluir", - "create.schematic.tool.move": "Mover XZ", - "create.schematic.tool.movey": "Mover Y", - "create.schematic.tool.rotate": "Rodar", - "create.schematic.tool.print": "Imprimir", - "create.schematic.tool.flip": "Virar", - "create.schematic.tool.deploy.description.0": "Move o lugar da estrutura.", - "create.schematic.tool.deploy.description.1": "Botão-direito no chão para colocar.", - "create.schematic.tool.deploy.description.2": "Segure [Ctrl] para selecionar em uma distância fixa.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Rolar para mudar a distância.", - "create.schematic.tool.move.description.0": "Vira o Esquema Horizontalmente", - "create.schematic.tool.move.description.1": "Aponte ao Esquema e [CTRL]-Rolar para empurrar.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Vira o Esquema Verticalmente", - "create.schematic.tool.movey.description.1": "[CTRL]-Rolar para mover para cima/baixo", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Roda o Esquema em torno do seu centro.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Rolar para rolar 90 Graus", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Coloca estrutura no mundo instantaneamente", - "create.schematic.tool.print.description.1": "[Botão-Direito] para confirmar a posição atual.", - "create.schematic.tool.print.description.2": "Esta ferramenta é para o Modo Criativo apenas.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Gira o Esquema ao longo da face que você selecionar.", - "create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Sincronizando...", - "create.schematics.uploadTooLarge": "Seu esquema é muito grande", - "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", - - "create.gui.schematicTable.refresh": "UNLOCALIZED: Refresh Files", - "create.gui.schematicTable.open_folder": "UNLOCALIZED: Open Folder", - "create.gui.schematicTable.title": "Mesa de Desenho", - "create.gui.schematicTable.availableSchematics": "UNLOCALIZED: Available Schematics", - "create.gui.schematicTable.noSchematics": "UNLOCALIZED: No Schematics Saved", - "create.gui.schematicTable.uploading": "Importando...", - "create.gui.schematicTable.finished": "Envio Concluído!", - "create.gui.schematicannon.title": "Esquemaannon", - "create.gui.schematicannon.listPrinter": "Impressora de Lista de Materiais", - "create.gui.schematicannon.gunpowderLevel": "Pólvora em %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Disparos faltantes: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", - "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", - "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", - "create.gui.schematicannon.showOptions": "UNLOCALIZED: Show Printer Settings", - "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", - "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", - "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", - "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", - "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", - "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", - "create.gui.schematicannon.slot.gunpowder": "UNLOCALIZED: Add gunpowder to fuel the cannon", - "create.gui.schematicannon.slot.listPrinter": "UNLOCALIZED: Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "UNLOCALIZED: Add your Schematic here. Make sure it is deployed at a specific location.", - "create.gui.schematicannon.option.skipMissing.description": "Se o Esquemaannon não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", - "create.gui.schematicannon.option.skipTileEntities.description": "O Esquemaannon vai evitar substituir blocos que contêm dados como Baus.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "O canhão irá nunca substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", - "create.gui.schematicannon.option.replaceWithSolid.description": "O canhão irá apenas substituir Blocos sólidos na área de trabalho, se o Esquema conter um bloco Sólido naquela posição.", - "create.gui.schematicannon.option.replaceWithAny.description": "O canhão irá substituir Blocos sólidos na área de trabalho, se o Esquema conter qualquer Bloco naquela posição.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "O canhão irá limpar todos os blocos na área de trabalho, incluindo os substituídos por Ar.", - - "create.schematicannon.status.idle": "Ocioso", - "create.schematicannon.status.ready": "Pronto", - "create.schematicannon.status.running": "Trabalhando", - "create.schematicannon.status.finished": "Concluído", - "create.schematicannon.status.paused": "Pausado", - "create.schematicannon.status.stopped": "Parada", - "create.schematicannon.status.noGunpowder": "UNLOCALIZED: Out of Gunpowder", - "create.schematicannon.status.targetNotLoaded": "Bloco não carregado", - "create.schematicannon.status.targetOutsideRange": "Alvo está muito Longe", - "create.schematicannon.status.searching": "Procurando", - "create.schematicannon.status.skipping": "Pulando", - "create.schematicannon.status.missingBlock": "Bloco Faltante:", - "create.schematicannon.status.placing": "Colocando", - "create.schematicannon.status.clearing": "Limpando Blocos", - "create.schematicannon.status.schematicInvalid": "Esquema Inválido", - "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", - "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", - - "create.materialChecklist": "UNLOCALIZED: Material Checklist", - "create.materialChecklist.blocksNotLoaded": "UNLOCALIZED: * Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "UNLOCALIZED: Allow-List", - "create.gui.filter.allow_list.description": "UNLOCALIZED: Items pass if they match any of the above. An empty Allow-List rejects everything.", - "create.gui.filter.respect_data": "UNLOCALIZED: Respect Data", - "create.gui.filter.respect_data.description": "UNLOCALIZED: Items only match if their durability, enchantments, and other attributes match as well.", - "create.gui.filter.ignore_data": "UNLOCALIZED: Ignore Data", - "create.gui.filter.ignore_data.description": "UNLOCALIZED: Items match regardless of their attributes.", - - "create.item_attributes.placeable": "UNLOCALIZED: is placeable", - "create.item_attributes.placeable.inverted": "UNLOCALIZED: is not placeable", - "create.item_attributes.consumable": "UNLOCALIZED: can be eaten", - "create.item_attributes.consumable.inverted": "UNLOCALIZED: cannot be eaten", - "create.item_attributes.smeltable": "UNLOCALIZED: can be Smelted", - "create.item_attributes.smeltable.inverted": "UNLOCALIZED: cannot be Smelted", - "create.item_attributes.washable": "UNLOCALIZED: can be Washed", - "create.item_attributes.washable.inverted": "UNLOCALIZED: cannot be Washed", - "create.item_attributes.smokable": "UNLOCALIZED: can be Smoked", - "create.item_attributes.smokable.inverted": "UNLOCALIZED: cannot be Smoked", - "create.item_attributes.crushable": "UNLOCALIZED: can be Crushed", - "create.item_attributes.crushable.inverted": "UNLOCALIZED: cannot be Crushed", - "create.item_attributes.blastable": "UNLOCALIZED: is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "UNLOCALIZED: is not smeltable in Blast Furnace", - "create.item_attributes.enchanted": "UNLOCALIZED: is enchanted", - "create.item_attributes.enchanted.inverted": "UNLOCALIZED: is unenchanted", - "create.item_attributes.damaged": "UNLOCALIZED: is damaged", - "create.item_attributes.damaged.inverted": "UNLOCALIZED: is not damaged", - "create.item_attributes.badly_damaged": "UNLOCALIZED: is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "UNLOCALIZED: is not heavily damaged", - "create.item_attributes.not_stackable": "UNLOCALIZED: cannot stack", - "create.item_attributes.not_stackable.inverted": "UNLOCALIZED: can be stacked", - "create.item_attributes.equipable": "UNLOCALIZED: can be equipped", - "create.item_attributes.equipable.inverted": "UNLOCALIZED: cannot be equipped", - "create.item_attributes.furnace_fuel": "UNLOCALIZED: is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "UNLOCALIZED: is not furnace fuel", - "create.item_attributes.in_tag": "UNLOCALIZED: is tagged %1$s", - "create.item_attributes.in_tag.inverted": "UNLOCALIZED: is not tagged %1$s", - "create.item_attributes.in_item_group": "UNLOCALIZED: is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "UNLOCALIZED: is not in group '%1$s'", - "create.item_attributes.added_by": "UNLOCALIZED: was added by %1$s", - "create.item_attributes.added_by.inverted": "UNLOCALIZED: was not added by %1$s", - "create.item_attributes.has_enchant": "UNLOCALIZED: is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "UNLOCALIZED: is not enchanted with %1$s", - "create.item_attributes.color": "UNLOCALIZED: is dyed %1$s", - "create.item_attributes.color.inverted": "UNLOCALIZED: is not dyed %1$s", - "create.item_attributes.max_enchanted": "UNLOCALIZED: is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "UNLOCALIZED: is not enchanted at max level", - "create.item_attributes.has_fluid": "UNLOCALIZED: contains %1$s", - "create.item_attributes.has_fluid.inverted": "UNLOCALIZED: does not contain %1$s", - "create.item_attributes.has_name": "UNLOCALIZED: has the custom name %1$s", - "create.item_attributes.has_name.inverted": "UNLOCALIZED: does not have the custom name %1$s", - "create.item_attributes.book_author": "UNLOCALIZED: was authored by %1$s", - "create.item_attributes.book_author.inverted": "UNLOCALIZED: was not authored by %1$s", - "create.item_attributes.book_copy_original": "UNLOCALIZED: is an original", - "create.item_attributes.book_copy_original.inverted": "UNLOCALIZED: is not an original", - "create.item_attributes.book_copy_first": "UNLOCALIZED: is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "UNLOCALIZED: is not a first-generation copy", - "create.item_attributes.book_copy_second": "UNLOCALIZED: is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "UNLOCALIZED: is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "UNLOCALIZED: is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "UNLOCALIZED: is not a tattered mess", - "create.item_attributes.astralsorcery_crystal": "UNLOCALIZED: has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "UNLOCALIZED: does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_constellation": "UNLOCALIZED: is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "UNLOCALIZED: is not attuned to %1$s", - "create.item_attributes.astralsorcery_perk_gem": "UNLOCALIZED: has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "UNLOCALIZED: does not have perk attribute %1$s", - "create.item_attributes.astralsorcery_amulet": "UNLOCALIZED: improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "UNLOCALIZED: does not improve %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "UNLOCALIZED: No attributes selected", - "create.gui.attribute_filter.selected_attributes": "UNLOCALIZED: Selected attributes:", - "create.gui.attribute_filter.add_attribute": "UNLOCALIZED: Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "UNLOCALIZED: Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "UNLOCALIZED: Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "UNLOCALIZED: Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "UNLOCALIZED: Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "UNLOCALIZED: Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "UNLOCALIZED: Deny-List", - "create.gui.attribute_filter.deny_list.description": "UNLOCALIZED: Items pass if they do NOT have any of the selected attributes.", - "create.gui.attribute_filter.add_reference_item": "UNLOCALIZED: Add Reference Item", - - "create.tooltip.holdForDescription": "UNLOCALIZED: Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "UNLOCALIZED: Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "UNLOCALIZED: Speed Requirement: %1$s", - "create.tooltip.speedRequirement.none": "UNLOCALIZED: None", - "create.tooltip.speedRequirement.medium": "UNLOCALIZED: Moderate", - "create.tooltip.speedRequirement.high": "UNLOCALIZED: Fast", - "create.tooltip.stressImpact": "UNLOCALIZED: Kinetic Stress Impact: %1$s", - "create.tooltip.stressImpact.low": "UNLOCALIZED: Low", - "create.tooltip.stressImpact.medium": "UNLOCALIZED: Moderate", - "create.tooltip.stressImpact.high": "UNLOCALIZED: High", - "create.tooltip.stressImpact.overstressed": "UNLOCALIZED: Overstressed", - "create.tooltip.capacityProvided": "UNLOCALIZED: Kinetic Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "UNLOCALIZED: Small", - "create.tooltip.capacityProvided.medium": "UNLOCALIZED: Medium", - "create.tooltip.capacityProvided.high": "UNLOCALIZED: Large", - "create.tooltip.generationSpeed": "UNLOCALIZED: Generates at %1$s %2$s", - "create.tooltip.analogStrength": "UNLOCALIZED: Analog Strength: %1$s/15", - - "create.mechanical_arm.extract_from": "UNLOCALIZED: Take items from %1$s", - "create.mechanical_arm.deposit_to": "UNLOCALIZED: Deposit items to %1$s", - "create.mechanical_arm.summary": "UNLOCALIZED: Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "UNLOCALIZED: %1$s selected interaction point(s) removed due to range limitations.", - - "create.weighted_ejector.target_set": "UNLOCALIZED: Target Selected", - "create.weighted_ejector.target_not_valid": "UNLOCALIZED: Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "UNLOCALIZED: Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "UNLOCALIZED: Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "UNLOCALIZED: Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "UNLOCALIZED: When Multiple Outputs Available", - - "create.mechanical_arm.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "UNLOCALIZED: Prefer First Target", - - "create.tunnel.selection_mode.split": "UNLOCALIZED: Split", - "create.tunnel.selection_mode.forced_split": "UNLOCALIZED: Forced Split", - "create.tunnel.selection_mode.round_robin": "UNLOCALIZED: Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "UNLOCALIZED: Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "UNLOCALIZED: Prefer Nearest", - "create.tunnel.selection_mode.randomize": "UNLOCALIZED: Randomize", - "create.tunnel.selection_mode.synchronize": "UNLOCALIZED: Synchronize Inputs", - - "create.tooltip.chute.header": "UNLOCALIZED: Chute Information", - "create.tooltip.chute.items_move_down": "UNLOCALIZED: Items move Downward", - "create.tooltip.chute.items_move_up": "UNLOCALIZED: Items move Upward", - "create.tooltip.chute.no_fans_attached": "UNLOCALIZED: No attached fans", - "create.tooltip.chute.fans_push_up": "UNLOCALIZED: Fans push from Below", - "create.tooltip.chute.fans_push_down": "UNLOCALIZED: Fans push 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.contains": "UNLOCALIZED: Contains: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "UNLOCALIZED: Bottomless Supply", - "create.hint.hose_pulley": "UNLOCALIZED: The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "UNLOCALIZED: No Targets", - "create.hint.mechanical_arm_no_targets": "UNLOCALIZED: It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "UNLOCALIZED: Update Bearing", - "create.hint.empty_bearing": "UNLOCALIZED: _Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "UNLOCALIZED: Deployer Item Overflow", - "create.hint.full_deployer": "UNLOCALIZED: It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", - - "create.command.killTPSCommand": "UNLOCALIZED: killtps", - "create.command.killTPSCommand.status.slowed_by.0": "UNLOCALIZED: [Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "UNLOCALIZED: [Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "UNLOCALIZED: [Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "UNLOCALIZED: [Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "UNLOCALIZED: [Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "UNLOCALIZED: tickTime", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "UNLOCALIZED: Slime squishes", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "Quando this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And Quando this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "UNLOCALIZED: WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", - - "block.create.metal_bracket.tooltip": "UNLOCALIZED: METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "UNLOCALIZED: _Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", - - "block.create.copper_casing.tooltip": "UNLOCALIZED: COPPER CASING", - "block.create.copper_casing.tooltip.summary": "UNLOCALIZED: Robust machine casing with a variety of uses. Safe for decoration.", - "block.create.copper_casing.tooltip.condition1": "UNLOCALIZED: When used on Fluid Pipe", - "block.create.copper_casing.tooltip.behaviour1": "UNLOCALIZED: _Encases_ the _Fluid Pipe_ with the _Copper Casing_. Encased Fluid pipes will _lock their connections_ in place, no longer reacting to changes to neighbouring pipes.", - - "block.create.encased_fluid_pipe.tooltip": "UNLOCALIZED: ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "UNLOCALIZED: A _Fluid Pipe_ encased with the _Copper Casing_.", - - "block.create.seat.tooltip": "UNLOCALIZED: SEAT", - "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.behaviour1": "UNLOCALIZED: Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", - - "item.create.blaze_cake.tooltip": "UNLOCALIZED: BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "UNLOCALIZED: A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", - - "block.create.fluid_pipe.tooltip": "UNLOCALIZED: FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "UNLOCALIZED: Used for moving _fluids_ around. Needs a _Mechanical Pump_ to get the _fluid_ moving.", - "block.create.fluid_pipe.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.fluid_pipe.tooltip.behaviour1": "UNLOCALIZED: Can connect to _fluid containers_ such as _Tanks_ or _Basins_. Exposed _pipe_ ends can also drain or place fluid blocks. Be careful of leaks!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "UNLOCALIZED: HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "UNLOCALIZED: Used for _placing_ or _draining_ large _fluid bodies_ in the world.", - "block.create.hose_pulley.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.hose_pulley.tooltip.behaviour1": "UNLOCALIZED: _Raises_ or _Lowers_ the hose, location of the hose determines up to which _height extraction_ or _filling_ will act.", - "block.create.hose_pulley.tooltip.condition2": "UNLOCALIZED: When Fluids pulled from Pulley", - "block.create.hose_pulley.tooltip.behaviour2": "UNLOCALIZED: Starts _taking fluid_ blocks from the body the hose end was lowered into. Very _large bodies_ of fluids will be _considered infinite_.", - "block.create.hose_pulley.tooltip.condition3": "UNLOCALIZED: When Fluids pushed to Pulley", - "block.create.hose_pulley.tooltip.behaviour3": "UNLOCALIZED: Starts _filling fluid_ into the world _up to_ the _hose_ ends' _height_.", - - "block.create.fluid_tank.tooltip": "UNLOCALIZED: FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "UNLOCALIZED: _Stores_ all your favourite _fluids_. Scales in width and height.", - "block.create.fluid_tank.tooltip.condition1": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_tank.tooltip.behaviour1": "UNLOCALIZED: Changes the optional window", - - "block.create.creative_fluid_tank.tooltip": "UNLOCALIZED: CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "UNLOCALIZED: This _Fluid Tank_ allows infinite replication of any Fluid. Scales in width and height.", - "block.create.creative_fluid_tank.tooltip.condition1": "UNLOCALIZED: When Fluid in Tank", - "block.create.creative_fluid_tank.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this tank will provide an _endless supply_ of the fluid specified. Fluids _inserted_ into this tank will be _voided._", - "block.create.creative_fluid_tank.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.creative_fluid_tank.tooltip.behaviour2": "UNLOCALIZED: Changes the optional window", - - "block.create.fluid_valve.tooltip": "UNLOCALIZED: FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "UNLOCALIZED: Halts the flow of fluid down a pipe.", - "block.create.fluid_valve.tooltip.condition1": "UNLOCALIZED: Controllable flow", - "block.create.fluid_valve.tooltip.behaviour1": "UNLOCALIZED: Applied _rotational force_ will force the _valve_ to close, ceasing the flow of _fluids_. Reverse the direction of the _rotational force_ to re-open the valve.", - - "block.create.mechanical_pump.tooltip": "UNLOCALIZED: MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "UNLOCALIZED: Takes _rotational force_ and uses it to move _fluid_ along a _pipe_. Has a maximum range of effect in both directions. (16 blocks by default)", - "block.create.mechanical_pump.tooltip.condition1": "UNLOCALIZED: Fluid Flow", - "block.create.mechanical_pump.tooltip.behaviour1": "UNLOCALIZED: Applied _rotational force_ creates pressure that forces _fluid_ through the _pipe_ network. Reverse the direction of the _rotational force_ to switch the direction that the _fluid_ flows.", - "block.create.mechanical_pump.tooltip.control1": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.mechanical_pump.tooltip.action1": "UNLOCALIZED: Reverses the direction of the _pump_, switching the default direction of the flow", - - "block.create.smart_fluid_pipe.tooltip": "UNLOCALIZED: SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "UNLOCALIZED: A _fluid pipe_ with a filter. Can specify which _fluids_ pass through.", - "block.create.smart_fluid_pipe.tooltip.condition1": "UNLOCALIZED: When Fluids are pushed into it", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "UNLOCALIZED: Smart pipes receiving fluid that does not match its filter will block the flow.", - "block.create.smart_fluid_pipe.tooltip.condition2": "UNLOCALIZED: When adjacent to fluid container", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Smart pipes _starting_ a _flow_ from any container will only extract fluids that _match_ its _filter._", - - "block.create.spout.tooltip": "UNLOCALIZED: SPOUT", - "block.create.spout.tooltip.summary": "UNLOCALIZED: An injector for refilling your _fluid items._", - "block.create.spout.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.spout.tooltip.behaviour1": "UNLOCALIZED: When a _fluid container item_ such as a _bucket_ or _bottle_ is placed underneath, the spout will attempt to refill it with it's own stored _fluid_.", - "block.create.spout.tooltip.condition2": "UNLOCALIZED: Fluid Automation", - "block.create.spout.tooltip.behaviour2": "UNLOCALIZED: The spout placed above a _belt_ or _depot_ will react automatically with a _fluid container item_ that passes beneath it.", - - "block.create.item_drain.tooltip": "UNLOCALIZED: ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "UNLOCALIZED: A grated depot for emptying your _fluid items._", - "block.create.item_drain.tooltip.condition1": "UNLOCALIZED: Fluid Transfer", - "block.create.item_drain.tooltip.behaviour1": "UNLOCALIZED: When a _fluid container item_ such as a _bucket_ or _bottle_ is inserted from the side, the drain will attempt to empty it into its own _fluid container_. The item will then be ejected on the opposite side.", - - "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", - "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", - "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Mantem-se Ativo", - "item.create.wand_of_symmetry.tooltip.control1": "B-Direito no Chão", - "item.create.wand_of_symmetry.tooltip.action1": "_Cria_ ou _Move_ o Espelho", - "item.create.wand_of_symmetry.tooltip.control2": "B-Direito no Ar", - "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", - "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", - "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", - - "item.create.handheld_worldshaper.tooltip": "UNLOCALIZED: HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "UNLOCALIZED: Handy tool for creating _landscapes_ and _terrain features_.", - "item.create.handheld_worldshaper.tooltip.control1": "UNLOCALIZED: L-Click at Block", - "item.create.handheld_worldshaper.tooltip.action1": "UNLOCALIZED: Sets blocks placed by the tool to the targeted block.", - "item.create.handheld_worldshaper.tooltip.control2": "UNLOCALIZED: R-Click at Block", - "item.create.handheld_worldshaper.tooltip.action2": "UNLOCALIZED: Applies the currently selected _Brush_ and _Tool_ at the targeted location.", - "item.create.handheld_worldshaper.tooltip.control3": "UNLOCALIZED: R-Click while Sneaking", - "item.create.handheld_worldshaper.tooltip.action3": "UNLOCALIZED: Opens the _Configuration Interface_", - - "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", - "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", - "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.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.", - "item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand", - "item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.", - - "item.create.filter.tooltip": "UNLOCALIZED: FILTER", - "item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", - "item.create.filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - - "item.create.attribute_filter.tooltip": "UNLOCALIZED: ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", - "item.create.attribute_filter.tooltip.condition1": "UNLOCALIZED: When in filter slot", - "item.create.attribute_filter.tooltip.behaviour1": "UNLOCALIZED: _Controls_ item flow according to its _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "UNLOCALIZED: When R-Clicked", - "item.create.attribute_filter.tooltip.behaviour2": "UNLOCALIZED: Opens the _configuration interface_.", - - "item.create.empty_schematic.tooltip": "ESQUEMA VAZIO", - "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.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.condition1": "Quando Em mãos", - "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.action1": "Abre uma _Interface_ para informar as _Coordenadas_ exatas.", - - "item.create.schematic_and_quill.tooltip": "ESQUEMA E PENA", - "item.create.schematic_and_quill.tooltip.summary": "Usado para salvar uma Estrutura no mundo para um arquivo .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Passo 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Selecione duas coordenadas de extremidade usando B-Direito", - "item.create.schematic_and_quill.tooltip.condition2": "Passo 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Rolar_ nas faces para ajustar o tamanho. B-Direito de novo para Salvar.", - "item.create.schematic_and_quill.tooltip.control1": "B-Direito", - "item.create.schematic_and_quill.tooltip.action1": "Selecione um canto / confirmar salvamento", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl Pressionado", - "item.create.schematic_and_quill.tooltip.action2": "Selecione pontos no _meio_ _do_ _ar_. _Rolar_ para ajustar a distância.", - "item.create.schematic_and_quill.tooltip.control3": "B-Direito enquanto Abaixado", - "item.create.schematic_and_quill.tooltip.action3": "_Cancela_ e remove a seleção.", - - "block.create.schematicannon.tooltip": "ESQUEMAANNON", - "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "MESA DE ESQUEMATIZAR", - "block.create.schematic_table.tooltip.summary": "Escreve Esquemas salvos into um _Esquema_ _Vazio_", - "block.create.schematic_table.tooltip.condition1": "Quando recebe um Esquema Vazio", - "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", - - "item.create.goggles.tooltip": "UNLOCALIZED: GOGGLES", - "item.create.goggles.tooltip.summary": "UNLOCALIZED: A pair of glasses to augment your vision with useful _kinetic information_.", - "item.create.goggles.tooltip.condition1": "UNLOCALIZED: When worn", - "item.create.goggles.tooltip.behaviour1": "UNLOCALIZED: Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", - "item.create.goggles.tooltip.condition2": "UNLOCALIZED: When looking at gauge", - "item.create.goggles.tooltip.behaviour2": "UNLOCALIZED: Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", - "item.create.goggles.tooltip.condition3": "UNLOCALIZED: When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "UNLOCALIZED: Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "UNLOCALIZED: WRENCH", - "item.create.wrench.tooltip.summary": "UNLOCALIZED: A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", - "item.create.wrench.tooltip.control1": "UNLOCALIZED: Right-Click a kinetic block", - "item.create.wrench.tooltip.action1": "UNLOCALIZED: _Rotates components_ toward or away from the face with which you interacted.", - "item.create.wrench.tooltip.control2": "UNLOCALIZED: R-Click while Sneaking", - "item.create.wrench.tooltip.action2": "UNLOCALIZED: _Disassembles Kinetic components_ and places them back in _your inventory_.", - - "block.create.nozzle.tooltip": "UNLOCALIZED: NOZZLE", - "block.create.nozzle.tooltip.summary": "UNLOCALIZED: Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", - - "block.create.cuckoo_clock.tooltip": "UNLOCALIZED: CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "UNLOCALIZED: Fine craftsmanship for _decorating_ a space and _keeping track of time_.", - "block.create.cuckoo_clock.tooltip.condition1": "UNLOCALIZED: When Powered by Kinetics", - "block.create.cuckoo_clock.tooltip.behaviour1": "UNLOCALIZED: Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", - - "block.create.turntable.tooltip": "MESA GIRATÓRIA", - "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", - - "block.create.portable_fluid_interface.tooltip": "UNLOCALIZED: PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "UNLOCALIZED: A portable interchange point for _moving fluids_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley. Two meeting interfaces have to _face each other_ and be spaced _1-2 blocks apart_.", - "block.create.portable_fluid_interface.tooltip.condition1": "UNLOCALIZED: While Moving", - "block.create.portable_fluid_interface.tooltip.behaviour1": "UNLOCALIZED: Interacts with stationary _portable storage interfaces_ to transfer fluids to or from the contraption. Pipes inserting into or extracting from the _Stationary Interface_ will interact with the tanks on the contraption _directly._ The structure will briefly stall as Fluids are exchanged.", - "block.create.portable_fluid_interface.tooltip.condition2": "UNLOCALIZED: When Powered by Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "UNLOCALIZED: _Disengages_ any active connection immediately.", - - "block.create.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", - "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", - "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", - "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", - - "block.create.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ inside _containers_ and _conveyors_ matching a configured _filter_. While the observed _inventory_, _belt_ or _chute contains_ a matching item, this component will emit a _Redstone Signal_. When an observed _funnel transfers_ a matching item, this component will emit a _Redstone Pulse_.", - - "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "CRIATIVADOR ESQUEMAANNON", - "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para _Esquemaannons_ próximos", - "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.controller_rail.tooltip": "UNLOCALIZED: CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "UNLOCALIZED: A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "UNLOCALIZED: When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "UNLOCALIZED: _Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER", - "item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", - "item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used", - "item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", - - "item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._", - - "item.create.refined_radiance.tooltip": "UNLOCALIZED: REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "UNLOCALIZED: A Chromatic material forged from _absorbed light_.", - - "item.create.shadow_steel.tooltip": "UNLOCALIZED: SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "UNLOCALIZED: A Chromatic material forged _in the void_.", - - "item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - - "create.tooltip.wip": "UNLOCALIZED: WIP", - "create.tooltip.workInProgress": "UNLOCALIZED: Work in progress!", - "create.tooltip.randomWipDescription0": "UNLOCALIZED: Please keep this item away from children.", - "create.tooltip.randomWipDescription1": "UNLOCALIZED: A baby panda dies every time you use this item. Every. Time.", - "create.tooltip.randomWipDescription2": "UNLOCALIZED: Use at your own risk.", - "create.tooltip.randomWipDescription3": "UNLOCALIZED: This is not the item you are looking for, *finger-wiggles* please disperse.", - "create.tooltip.randomWipDescription4": "UNLOCALIZED: This item will self-destruct in 10 seconds. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "UNLOCALIZED: Believe me, it's useless.", - "create.tooltip.randomWipDescription6": "UNLOCALIZED: By using this item, you hereby consent to our disclaimer and agree to its terms.", - "create.tooltip.randomWipDescription7": "UNLOCALIZED: This one maybe isn't for you. What about that one?", - "create.tooltip.randomWipDescription8": "UNLOCALIZED: Use it and regret your decision immediately.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "UNLOCALIZED: Hold [%1$s] to Ponder", - "create.ponder.subject": "UNLOCALIZED: Subject of this scene", - "create.ponder.pondering": "UNLOCALIZED: Pondering about...", - "create.ponder.identify_mode": "UNLOCALIZED: Identify mode active.\nUnpause with [%1$s]", - "create.ponder.associated": "UNLOCALIZED: Associated Entries", - "create.ponder.close": "UNLOCALIZED: Close", - "create.ponder.identify": "UNLOCALIZED: Identify", - "create.ponder.next": "UNLOCALIZED: Next Scene", - "create.ponder.previous": "UNLOCALIZED: Previous Scene", - "create.ponder.replay": "UNLOCALIZED: Replay", - "create.ponder.think_back": "UNLOCALIZED: Think Back", - "create.ponder.slow_text": "UNLOCALIZED: Comfy Reading", - "create.ponder.shared.movement_anchors": "UNLOCALIZED: With the help of Chassis or Super Glue, larger structures can be moved.", - "create.ponder.shared.rpm32": "UNLOCALIZED: 32 RPM", - "create.ponder.shared.sneak_and": "UNLOCALIZED: Sneak +", - "create.ponder.shared.storage_on_contraption": "UNLOCALIZED: Inventories attached to the Contraption will pick up their drops automatically", - "create.ponder.shared.behaviour_modify_wrench": "UNLOCALIZED: This behaviour can be modified using a Wrench", - "create.ponder.shared.rpm8": "UNLOCALIZED: 8 RPM", - "create.ponder.shared.ctrl_and": "UNLOCALIZED: Ctrl +", - "create.ponder.shared.rpm16_source": "UNLOCALIZED: Source: 16 RPM", - "create.ponder.shared.rpm16": "UNLOCALIZED: 16 RPM", - "create.ponder.tag.kinetic_sources": "UNLOCALIZED: Kinetic Sources", - "create.ponder.tag.kinetic_sources.description": "UNLOCALIZED: Components which generate Rotational Force", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "UNLOCALIZED: Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "UNLOCALIZED: Targets for Mechanical Arms", - "create.ponder.tag.arm_targets.description": "UNLOCALIZED: Components which can be selected as inputs or outputs to the Mechanical Arm", - "create.ponder.tag.logistics": "UNLOCALIZED: Item Transportation", - "create.ponder.tag.logistics.description": "UNLOCALIZED: Components which help moving items around", - "create.ponder.tag.movement_anchor": "UNLOCALIZED: Movement Anchors", - "create.ponder.tag.movement_anchor.description": "UNLOCALIZED: Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "UNLOCALIZED: Creative Mode", - "create.ponder.tag.creative.description": "UNLOCALIZED: Components not usually available for Survival Mode", - "create.ponder.tag.kinetic_relays": "UNLOCALIZED: Kinetic Blocks", - "create.ponder.tag.kinetic_relays.description": "UNLOCALIZED: Components which help relaying Rotational Force elsewhere", - "create.ponder.tag.windmill_sails": "UNLOCALIZED: Sails for Windmill Bearings", - "create.ponder.tag.windmill_sails.description": "UNLOCALIZED: Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so.", - "create.ponder.tag.contraption_assembly": "UNLOCALIZED: Block Attachment Utility", - "create.ponder.tag.contraption_assembly.description": "UNLOCALIZED: Tools and Components used to assemble structures moved as an animated Contraption", - "create.ponder.tag.decoration": "UNLOCALIZED: Aesthetics", - "create.ponder.tag.decoration.description": "UNLOCALIZED: Components used mostly for decorative purposes", - "create.ponder.tag.kinetic_appliances": "UNLOCALIZED: Kinetic Appliances", - "create.ponder.tag.kinetic_appliances.description": "UNLOCALIZED: Components which make use of Rotational Force", - "create.ponder.tag.redstone": "UNLOCALIZED: Logic Components", - "create.ponder.tag.redstone.description": "UNLOCALIZED: Components which help with redstone engineering", - "create.ponder.tag.fluids": "UNLOCALIZED: Fluid Manipulators", - "create.ponder.tag.fluids.description": "UNLOCALIZED: Components which help relaying and making use of Fluids", - - "create.ponder.adjustable_pulse_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Pulse Repeaters", - "create.ponder.adjustable_pulse_repeater.text_1": "UNLOCALIZED: Adjustable Pulse Repeaters emit a short pulse at a delay", - "create.ponder.adjustable_pulse_repeater.text_2": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_pulse_repeater.text_3": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.adjustable_repeater.header": "UNLOCALIZED: Controlling signals using Adjustable Repeaters", - "create.ponder.adjustable_repeater.text_1": "UNLOCALIZED: Adjustable Repeaters behave similarly to regular Repeaters", - "create.ponder.adjustable_repeater.text_2": "UNLOCALIZED: They charge up for a set time...", - "create.ponder.adjustable_repeater.text_3": "UNLOCALIZED: ...and cool down for the same duration", - "create.ponder.adjustable_repeater.text_4": "UNLOCALIZED: Using the mouse wheel, the charge time can be configured", - "create.ponder.adjustable_repeater.text_5": "UNLOCALIZED: Configured delays can range up to 30 minutes", - - "create.ponder.analog_lever.header": "UNLOCALIZED: Controlling signals using the Analog Lever", - "create.ponder.analog_lever.text_1": "UNLOCALIZED: Analog Levers make for a compact and precise source of redstone power", - "create.ponder.analog_lever.text_2": "UNLOCALIZED: Right-click to increase its analog power output", - "create.ponder.analog_lever.text_3": "UNLOCALIZED: Right-click while Sneaking to decrease the power output again", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json deleted file mode 100644 index fc07035b7..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ /dev/null @@ -1,2124 +0,0 @@ -{ - "_": "Missing Localizations: 583", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "Акациевое окно", - "block.create.acacia_window_pane": "Панель из акациевого окна", - "block.create.adjustable_chain_gearshift": "Регулируемый цепной механизм", - "block.create.adjustable_crate": "Регулируемый ящик", - "block.create.adjustable_pulse_repeater": "Регулируемый импульсный повторитель", - "block.create.adjustable_repeater": "Регулируемый повторитель", - "block.create.analog_lever": "Аналоговый рычаг", - "block.create.andesite_belt_funnel": "Андезитовая конвейерная воронка", - "block.create.andesite_bricks": "Андезитовый кирпич", - "block.create.andesite_bricks_slab": "Плита из андезитового кирпича", - "block.create.andesite_bricks_stairs": "Ступени из андезитового кирпича", - "block.create.andesite_bricks_wall": "Стена из андезитового кирпича", - "block.create.andesite_casing": "Андезитовый корпус", - "block.create.andesite_cobblestone": "Андезит-булыжник", - "block.create.andesite_cobblestone_slab": "Андезит-булыжниковая плита", - "block.create.andesite_cobblestone_stairs": "Андезит-булыжниковые ступени", - "block.create.andesite_cobblestone_wall": "Андезит-булыжниковая стена", - "block.create.andesite_encased_shaft": "Вал в андезитовом корпусе", - "block.create.andesite_funnel": "Андезитовая воронка", - "block.create.andesite_pillar": "Андезитовая колонна", - "block.create.andesite_tunnel": "Андезитовый туннель", - "block.create.basin": "Чаша", - "block.create.belt": "Конвейер", - "block.create.birch_window": "Берёзовое окно", - "block.create.birch_window_pane": "Панель берёзового окна", - "block.create.black_sail": "Чёрный парус", - "block.create.black_seat": "Чёрное сиденье", - "block.create.black_valve_handle": "Чёрный ручной вентиль", - "block.create.blaze_burner": "Горелка Всполоха", - "block.create.blue_sail": "Синий парус", - "block.create.blue_seat": "Синее сиденье", - "block.create.blue_valve_handle": "Синий ручной вентиль", - "block.create.brass_belt_funnel": "Латунная конвейерная воронка", - "block.create.brass_block": "Латунный блок", - "block.create.brass_casing": "Латунный корпус", - "block.create.brass_encased_shaft": "Вал в латунном корпусе", - "block.create.brass_funnel": "Латунная воронка", - "block.create.brass_tunnel": "Латунный туннель", - "block.create.brown_sail": "Коричневый парус", - "block.create.brown_seat": "Коричневое сиденье", - "block.create.brown_valve_handle": "Коричневый ручной вентиль", - "block.create.cart_assembler": "Сборщик вагонеток", - "block.create.chiseled_dark_scoria": "Резной тёмный пепел", - "block.create.chiseled_dolomite": "Резной доломит", - "block.create.chiseled_gabbro": "Резной габбро", - "block.create.chiseled_limestone": "Резной известняк", - "block.create.chiseled_scoria": "Резной пепел", - "block.create.chiseled_weathered_limestone": "Выветренный резной известняк", - "block.create.chocolate": "Шоколад", - "block.create.chute": "Желоб", - "block.create.clockwork_bearing": "Часовой механизм", - "block.create.clutch": "Сцепление", - "block.create.cogwheel": "Шестерня", - "block.create.content_observer": "Наблюдетель за содержимым", - "block.create.controller_rail": "Контролирующая рельса", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "Медный блок", - "block.create.copper_casing": "Медный корпус", - "block.create.copper_ore": "Медная руда", - "block.create.copper_shingles": "Медная черепица", - "block.create.copper_tiles": "Медная плитка", - "block.create.copper_valve_handle": "Медный ручной вентиль", - "block.create.creative_crate": "Творческий ящик", - "block.create.creative_fluid_tank": "Творческий жидкостный бак", - "block.create.creative_motor": "Творческий мотор", - "block.create.crimson_window": "Багровое окно", - "block.create.crimson_window_pane": "Панель из багрового окна", - "block.create.crushing_wheel": "Колесо дробления", - "block.create.crushing_wheel_controller": "Контроллер колеса дробления", - "block.create.cuckoo_clock": "Часы с кукушкой", - "block.create.cyan_sail": "Бирюзовый парус", - "block.create.cyan_seat": "Бирюзовое сииденье", - "block.create.cyan_valve_handle": "Бирюзовый ручной вентиль", - "block.create.dark_oak_window": "Окно из тёмного дуба", - "block.create.dark_oak_window_pane": "Панель из окна из тёмного дуб", - "block.create.dark_scoria": "Тёмный пепел", - "block.create.dark_scoria_bricks": "Тёмный пепельный кирпич", - "block.create.dark_scoria_bricks_slab": "Плита из тёмного пепельного кирпича", - "block.create.dark_scoria_bricks_stairs": "Ступени из тёмного пепельного кирпича", - "block.create.dark_scoria_bricks_wall": "Стена из тёмного пепельного кирпича", - "block.create.dark_scoria_cobblestone": "Ступени из тёмного пепел-булыжника", - "block.create.dark_scoria_cobblestone_slab": "Плита из тёмного пепел-булыжника", - "block.create.dark_scoria_cobblestone_stairs": "Ступени из тёмного пепел-булыжника", - "block.create.dark_scoria_cobblestone_wall": "Стена из тёмного пепел-булыжника", - "block.create.dark_scoria_pillar": "Колонна из тёмного пепел-булыжника", - "block.create.deployer": "Автономный активатор", - "block.create.depot": "Депо", - "block.create.diorite_bricks": "Диоритовый кирпич", - "block.create.diorite_bricks_slab": "Плита из диоритового кирпича", - "block.create.diorite_bricks_stairs": "Ступени из диоритового кирпича", - "block.create.diorite_bricks_wall": "Стена из диоритового кирпича", - "block.create.diorite_cobblestone": "Диорит-булыжник", - "block.create.diorite_cobblestone_slab": "Плита из диорит-булыжника", - "block.create.diorite_cobblestone_stairs": "Ступени из диорит-булыжника", - "block.create.diorite_cobblestone_wall": "Стена из диорит-булыжника", - "block.create.diorite_pillar": "Диоритовая колонна", - "block.create.dolomite": "Доломит", - "block.create.dolomite_bricks": "Доломитовый кирпич", - "block.create.dolomite_bricks_slab": "Плита из доломитового кирпича", - "block.create.dolomite_bricks_stairs": "Ступени из доломитового кирпича", - "block.create.dolomite_bricks_wall": "Стена из доломитового кирпича", - "block.create.dolomite_cobblestone": "Доломит-булыжник", - "block.create.dolomite_cobblestone_slab": "Плита доломит-булыжника", - "block.create.dolomite_cobblestone_stairs": "Ступени доломит-булыжника", - "block.create.dolomite_cobblestone_wall": "Стена доломит-булыжника", - "block.create.dolomite_pillar": "Доломитовая колонна", - "block.create.encased_chain_drive": "Цепной привод в корпусе", - "block.create.encased_fan": "Вентилятор в корпусе", - "block.create.encased_fluid_pipe": "Жидкостная труба в корпусе", - "block.create.fancy_andesite_bricks": "Красивый андезитовый кирпич", - "block.create.fancy_andesite_bricks_slab": "Плита из красивого андезитового кирпича", - "block.create.fancy_andesite_bricks_stairs": "Ступени из красивого андезитового кирпича", - "block.create.fancy_andesite_bricks_wall": "Стена из красивого андезитового кирпича", - "block.create.fancy_dark_scoria_bricks": "Красивый тёмный пепельный кирпич", - "block.create.fancy_dark_scoria_bricks_slab": "Плита из красивого тёмного пепельного кирпича", - "block.create.fancy_dark_scoria_bricks_stairs": "Ступени из красивого тёмного пепельного кирпича", - "block.create.fancy_dark_scoria_bricks_wall": "Стена из красивого тёмного пепельного кирпича", - "block.create.fancy_diorite_bricks": "Красивый диоритовый кирпич", - "block.create.fancy_diorite_bricks_slab": "Плита из красивого диоритового кирпича", - "block.create.fancy_diorite_bricks_stairs": "Ступени из красивого диоритового кирпича", - "block.create.fancy_diorite_bricks_wall": "Стена из красивого диоритового кирпича", - "block.create.fancy_dolomite_bricks": "Красивый доломитовый кирпич", - "block.create.fancy_dolomite_bricks_slab": "Плита из красивого доломитового кирпича", - "block.create.fancy_dolomite_bricks_stairs": "Ступени из красивого доломитового кирпича", - "block.create.fancy_dolomite_bricks_wall": "Стена из красивого доломитового кирпича", - "block.create.fancy_gabbro_bricks": "Красивый габбро кирпич", - "block.create.fancy_gabbro_bricks_slab": "Плита из красивого габбро кирпича", - "block.create.fancy_gabbro_bricks_stairs": "Ступени из красивого габбро кирпича", - "block.create.fancy_gabbro_bricks_wall": "Стена из красивого габбро кирпича", - "block.create.fancy_granite_bricks": "Красивый гранитный кирпич", - "block.create.fancy_granite_bricks_slab": "Плита из красивого гранитного кирпича", - "block.create.fancy_granite_bricks_stairs": "Ступени из красивого гранитного кирпича", - "block.create.fancy_granite_bricks_wall": "Стена красивого гранитного кирпича", - "block.create.fancy_limestone_bricks": "Красивый известняковый кирпич", - "block.create.fancy_limestone_bricks_slab": "Плита из красивого известнякового кирпича", - "block.create.fancy_limestone_bricks_stairs": "Ступени из красивого известнякового кирпича", - "block.create.fancy_limestone_bricks_wall": "Стена из красивого известнякового кирпича", - "block.create.fancy_scoria_bricks": "Красивый пепельный кирпич", - "block.create.fancy_scoria_bricks_slab": "Плита из красивого пепельного кирпича", - "block.create.fancy_scoria_bricks_stairs": "Ступени из красивого пепельного кирпича", - "block.create.fancy_scoria_bricks_wall": "Стена из красивого пепельного кирпича", - "block.create.fancy_weathered_limestone_bricks": "Красивый выветренный известняковый кирпич", - "block.create.fancy_weathered_limestone_bricks_slab": "Плита из красивого выветренного известнякового кирпича", - "block.create.fancy_weathered_limestone_bricks_stairs": "Ступени из красивого выветренного известнякового кирпича", - "block.create.fancy_weathered_limestone_bricks_wall": "Стена из красивого выветренного известнякового кирпича", - "block.create.fluid_pipe": "Жидкостная труба", - "block.create.fluid_tank": "Жидкостный бак", - "block.create.fluid_valve": "Жидкостный клапан", - "block.create.flywheel": "Маховик", - "block.create.framed_glass": "Обрамлённое стекло", - "block.create.framed_glass_pane": "Обрамлённая стеклянная панель", - "block.create.furnace_engine": "Печной двигатель", - "block.create.gabbro": "Габбро", - "block.create.gabbro_bricks": "Габбровый кирпич", - "block.create.gabbro_bricks_slab": "Плита из габбро кирпича", - "block.create.gabbro_bricks_stairs": "Ступени из габбро кирпича", - "block.create.gabbro_bricks_wall": "Стена из габбро кирпича", - "block.create.gabbro_cobblestone": "Габбро-булыжник", - "block.create.gabbro_cobblestone_slab": "Плита из габбро-булыжника", - "block.create.gabbro_cobblestone_stairs": "Ступени из габбро-булыжника", - "block.create.gabbro_cobblestone_wall": "Стена из габбро-булыжника", - "block.create.gabbro_pillar": "Габбро колонна", - "block.create.gantry_carriage": "UNLOCALIZED: Gantry Carriage", - "block.create.gantry_shaft": "UNLOCALIZED: Gantry Shaft", - "block.create.gearbox": "Коробка передач", - "block.create.gearshift": "Реверсивный механизм", - "block.create.glass_fluid_pipe": "Стеклянная жидкостная труба", - "block.create.granite_bricks": "Гранитный кирпич", - "block.create.granite_bricks_slab": "Плита из гранитного кирпича", - "block.create.granite_bricks_stairs": "Ступени из гранитного кирпича", - "block.create.granite_bricks_wall": "Стена из гранитного кирпича", - "block.create.granite_cobblestone": "Гранит-булыжник", - "block.create.granite_cobblestone_slab": "Плита из гранит-булыжника", - "block.create.granite_cobblestone_stairs": "Ступени из гранит-булыжника", - "block.create.granite_cobblestone_wall": "Стена из гранит-булыжника", - "block.create.granite_pillar": "Гранитная колонна", - "block.create.gray_sail": "Серый парус", - "block.create.gray_seat": "Серое сиденье", - "block.create.gray_valve_handle": "Серый ручной вентиль", - "block.create.green_sail": "Зелёный парус", - "block.create.green_seat": "Зелёное сиденье", - "block.create.green_valve_handle": "Зелёный ручной вентиль", - "block.create.hand_crank": "Рукоятка", - "block.create.honey": "Мёд", - "block.create.horizontal_framed_glass": "Горизонтальное обрамлённое стекло", - "block.create.horizontal_framed_glass_pane": "Горизонтальная обрамлённая стеклянная панель", - "block.create.hose_pulley": "Шкив с шлангом", - "block.create.item_drain": "Предметный осушитель", - "block.create.jungle_window": "Окно из тропического дерева", - "block.create.jungle_window_pane": "Панель окна из тропического дерева", - "block.create.large_cogwheel": "Большая шестерня", - "block.create.layered_andesite": "Слоистый андезит", - "block.create.layered_dark_scoria": "Слоистый тёмный пепел", - "block.create.layered_diorite": "Слоистый диорит", - "block.create.layered_dolomite": "Слоистый доломит", - "block.create.layered_gabbro": "Слоистый габбро", - "block.create.layered_granite": "Слоистый гранит", - "block.create.layered_limestone": "Слоистый известняк", - "block.create.layered_scoria": "Слоистый пепел", - "block.create.layered_weathered_limestone": "Слоистый выветренный известняк", - "block.create.light_blue_sail": "Голубой парус", - "block.create.light_blue_seat": "Голубое сиденье", - "block.create.light_blue_valve_handle": "Голубой ручной вентиль", - "block.create.light_gray_sail": "Светло-серый парус", - "block.create.light_gray_seat": "Светло-серое сиденье", - "block.create.light_gray_valve_handle": "Светло-серый ручной вентиль", - "block.create.lime_sail": "Лаймовый парус", - "block.create.lime_seat": "Лаймовое сиденье", - "block.create.lime_valve_handle": "Лаймовый ручной вентиль", - "block.create.limesand": "Известковый песок", - "block.create.limestone": "Известняк", - "block.create.limestone_bricks": "Известняковый кирпич", - "block.create.limestone_bricks_slab": "Плита из известнякового кирпича", - "block.create.limestone_bricks_stairs": "Ступени из известнякового кирпича", - "block.create.limestone_bricks_wall": "Стена из известнякового кирпича", - "block.create.limestone_cobblestone": "Известняк-булыжник", - "block.create.limestone_cobblestone_slab": "Плита из известняк-булыжника", - "block.create.limestone_cobblestone_stairs": "Ступени из известняк-булыжника", - "block.create.limestone_cobblestone_wall": "Стена из известняк-булыжника", - "block.create.limestone_pillar": "Известковая колонна", - "block.create.linear_chassis": "Линейное шасси", - "block.create.lit_blaze_burner": "Зажжёная горелка Всполоха", - "block.create.magenta_sail": "Пурпурный парус", - "block.create.magenta_seat": "Пурпурное сиденье", - "block.create.magenta_valve_handle": "Пурпурный ручной вентиль", - "block.create.mechanical_arm": "Механическая рука", - "block.create.mechanical_bearing": "Механический вращатель", - "block.create.mechanical_crafter": "Механический крафтер", - "block.create.mechanical_drill": "Механическая дрель", - "block.create.mechanical_harvester": "Механический комбайн", - "block.create.mechanical_mixer": "Механический смешиватель", - "block.create.mechanical_piston": "Механический поршень", - "block.create.mechanical_piston_head": "Механическая головка поршня", - "block.create.mechanical_plough": "Механический плуг", - "block.create.mechanical_press": "Механический пресс", - "block.create.mechanical_pump": "Механическая помпа", - "block.create.mechanical_saw": "Механическая пила", - "block.create.metal_bracket": "Металлическая скоба", - "block.create.millstone": "Жернов", - "block.create.minecart_anchor": "Вагонеточный якорь", - "block.create.mossy_andesite": "Замшелый андезит", - "block.create.mossy_dark_scoria": "Замшелый тёмный пепел", - "block.create.mossy_diorite": "Замшелый диорит", - "block.create.mossy_dolomite": "Замшелый доломит", - "block.create.mossy_gabbro": "Замшелый габбро", - "block.create.mossy_granite": "Замшелый гранит", - "block.create.mossy_limestone": "Замшелый известняк", - "block.create.mossy_scoria": "Замшелый пепел", - "block.create.mossy_weathered_limestone": "Замшелый выветренный известняк", - "block.create.mysterious_cuckoo_clock": "Часы с кукушкой", - "block.create.natural_scoria": "Натуральный пепел", - "block.create.nixie_tube": "Газоразрядный индикатор", - "block.create.nozzle": "Форсунка", - "block.create.oak_window": "Дубовое окно", - "block.create.oak_window_pane": "Панель из дубового окна", - "block.create.orange_sail": "Оранжевый парус", - "block.create.orange_seat": "Оранжевое сиденье", - "block.create.orange_valve_handle": "Оранжевый ручной вентиль", - "block.create.ornate_iron_window": "Украшенное железное окно", - "block.create.ornate_iron_window_pane": "Панель из украшенного железного окна", - "block.create.overgrown_andesite": "Заросший андезит", - "block.create.overgrown_dark_scoria": "Заросший тёмный пепел", - "block.create.overgrown_diorite": "Заросший диорит", - "block.create.overgrown_dolomite": "Заросший доломит", - "block.create.overgrown_gabbro": "Заросший габбро", - "block.create.overgrown_granite": "Заросший гранит", - "block.create.overgrown_limestone": "Заросший известняк", - "block.create.overgrown_scoria": "Заросший пепел", - "block.create.overgrown_weathered_limestone": "Заросший выветренный известняк", - "block.create.paved_andesite": "Мощёный андезит", - "block.create.paved_andesite_slab": "Плита из мощёного андезита", - "block.create.paved_andesite_stairs": "Ступени из мощёного андезита", - "block.create.paved_andesite_wall": "Стена из мощёного андезита", - "block.create.paved_dark_scoria": "Мощёный тёмный пепел", - "block.create.paved_dark_scoria_slab": "Плита из мощёного пепла", - "block.create.paved_dark_scoria_stairs": "Ступени из мощёного пепла", - "block.create.paved_dark_scoria_wall": "Стена из мощёного тёмного пепла", - "block.create.paved_diorite": "Мощёный диорит", - "block.create.paved_diorite_slab": "Плита из мощёного диорита", - "block.create.paved_diorite_stairs": "Ступени из мощёного диорита", - "block.create.paved_diorite_wall": "Стена из мощёного диорита", - "block.create.paved_dolomite": "Мощёный доломит", - "block.create.paved_dolomite_slab": "Плита из мощёного доломита", - "block.create.paved_dolomite_stairs": "Ступени из мощёного доломита", - "block.create.paved_dolomite_wall": "Стена из мощёного доломита", - "block.create.paved_gabbro": "Мощёный габбро", - "block.create.paved_gabbro_slab": "Плита из мощёного габбро", - "block.create.paved_gabbro_stairs": "Ступени из мощёного габбро", - "block.create.paved_gabbro_wall": "Стена из мощёного габбро", - "block.create.paved_granite": "Мощёный гранит", - "block.create.paved_granite_slab": "Плита из мощёного гранита", - "block.create.paved_granite_stairs": "Ступени из мощёного гранита", - "block.create.paved_granite_wall": "Стена из мощёного гранита", - "block.create.paved_limestone": "Мощёный известняк", - "block.create.paved_limestone_slab": "Плита из мощёного известняка", - "block.create.paved_limestone_stairs": "Ступени из мощёного известняка", - "block.create.paved_limestone_wall": "Стена из мощёного известняка", - "block.create.paved_scoria": "Мощёный пепел", - "block.create.paved_scoria_slab": "Плита из мощёного пепла", - "block.create.paved_scoria_stairs": "Ступени из мощёного пепла", - "block.create.paved_scoria_wall": "Стена из мощёного пепла", - "block.create.paved_weathered_limestone": "Мощёный выветренный известняк", - "block.create.paved_weathered_limestone_slab": "Плита из мощёного выветренного известняка", - "block.create.paved_weathered_limestone_stairs": "Ступени из мощёного выветренного известняка", - "block.create.paved_weathered_limestone_wall": "Стена из мощёного выветренного известняка", - "block.create.pink_sail": "Розовый парус", - "block.create.pink_seat": "Розовое сиденье", - "block.create.pink_valve_handle": "Розовый ручной вентиль", - "block.create.piston_extension_pole": "Удлинитель поршня", - "block.create.polished_dark_scoria": "Полированный тёмный пепел", - "block.create.polished_dark_scoria_slab": "Плита из полированного тёмного пепла", - "block.create.polished_dark_scoria_stairs": "Ступени из полированного тёмного пепла", - "block.create.polished_dark_scoria_wall": "Стена из полированного тёмного пепла", - "block.create.polished_dolomite": "Полированный доломит", - "block.create.polished_dolomite_slab": "Плита из полированного доломита", - "block.create.polished_dolomite_stairs": "Ступени из полированного доломита", - "block.create.polished_dolomite_wall": "Стена из полированного доломита", - "block.create.polished_gabbro": "Полированный габро", - "block.create.polished_gabbro_slab": "Плита из полированного габро", - "block.create.polished_gabbro_stairs": "Ступени из полированного габро", - "block.create.polished_gabbro_wall": "Стена из полированного габро", - "block.create.polished_limestone": "Полированный известняк", - "block.create.polished_limestone_slab": "Плита из полированного известняка", - "block.create.polished_limestone_stairs": "Ступени из полированного известняка", - "block.create.polished_limestone_wall": "Стена из полированного известняка", - "block.create.polished_scoria": "Полированный пепел", - "block.create.polished_scoria_slab": "Плита из полированного пепла", - "block.create.polished_scoria_stairs": "Ступени из полированного пепла", - "block.create.polished_scoria_wall": "Стена из полированного пепла", - "block.create.polished_weathered_limestone": "Полированный выветренный известняк", - "block.create.polished_weathered_limestone_slab": "Плита из полированного выветренного известняка", - "block.create.polished_weathered_limestone_stairs": "Ступени из полированного выветренного известняка", - "block.create.polished_weathered_limestone_wall": "Стена из полированного выветренного известняка", - "block.create.portable_fluid_interface": "Портативный жидкостный интерфейс", - "block.create.portable_storage_interface": "Портативный интерфейс хранения", - "block.create.powered_latch": "Механизированная защёлка", - "block.create.powered_toggle_latch": "Механизированная рычаг-защёлка", - "block.create.pulley_magnet": "Магнитный шкив", - "block.create.pulse_repeater": "Импульсный повторитель", - "block.create.purple_sail": "Фиолетовый парус", - "block.create.purple_seat": "Фиолетовое сиденье", - "block.create.purple_valve_handle": "Фиолетовый ручной вентиль", - "block.create.radial_chassis": "Радиальное шасси", - "block.create.red_sail": "Красный парус", - "block.create.red_seat": "Красное сиденье", - "block.create.red_valve_handle": "Красный ручной вентиль", - "block.create.redstone_contact": "Контакт сигнала красного камня", - "block.create.redstone_link": "Беспроводной передатчик сигнала красного камня", - "block.create.refined_radiance_casing": "Сияющий корпус", - "block.create.reinforced_rail": "Усиленные рельсы", - "block.create.rope": "Канат", - "block.create.rope_pulley": "Лебёдка", - "block.create.rotation_speed_controller": "Регулятор скорости вращения", - "block.create.sail_frame": "Рама паруса", - "block.create.schematic_table": "Схематичный стол", - "block.create.schematicannon": "Схематичная пушка", - "block.create.scoria": "Пепел", - "block.create.scoria_bricks": "Пепельный кирпич", - "block.create.scoria_bricks_slab": "Плита из пепельного кирпича", - "block.create.scoria_bricks_stairs": "Ступени из пепельного кирпича", - "block.create.scoria_bricks_wall": "Стена из пепельного кирпича", - "block.create.scoria_cobblestone": "Пепел-булыжник", - "block.create.scoria_cobblestone_slab": "Плита из пепел-булыжника", - "block.create.scoria_cobblestone_stairs": "Ступени из пепел-булыжника", - "block.create.scoria_cobblestone_wall": "Стена из пепел-булыжника", - "block.create.scoria_pillar": "Колонна из пепла", - "block.create.secondary_linear_chassis": "Вторичное линейное шасси", - "block.create.sequenced_gearshift": "Последовательный переключатель передач", - "block.create.shadow_steel_casing": "Теневой корпус", - "block.create.shaft": "Вал", - "block.create.smart_chute": "Умный желоб", - "block.create.smart_fluid_pipe": "Умная жидкостная труба", - "block.create.speedometer": "Спидометр", - "block.create.spout": "Дозатор", - "block.create.spruce_window": "Еловое окно", - "block.create.spruce_window_pane": "Панель из елового окна", - "block.create.sticker": "Блок-липучка", - "block.create.sticky_mechanical_piston": "Липкий механический поршень", - "block.create.stockpile_switch": "Настраиваемый компаратор", - "block.create.stressometer": "Динамометр", - "block.create.tiled_glass": "Плиточное стекло", - "block.create.tiled_glass_pane": "Плиточная стеклянная панель", - "block.create.turntable": "Поворотный стол", - "block.create.vertical_framed_glass": "Вертикальное обрамлённое стекло", - "block.create.vertical_framed_glass_pane": "Вертикальная обрамлённая стеклянная панель", - "block.create.warped_window": "Искаженное окно", - "block.create.warped_window_pane": "Панель из искаженного окна", - "block.create.water_wheel": "Водяное колесо", - "block.create.weathered_limestone": "Выветренный известняк", - "block.create.weathered_limestone_bricks": "Выветренный известняковый кирпич", - "block.create.weathered_limestone_bricks_slab": "Плита из выветренного известнякового кирпича", - "block.create.weathered_limestone_bricks_stairs": "Ступени из выветренного известнякового кирпича", - "block.create.weathered_limestone_bricks_wall": "Стена из выветренного известнякового кирпича", - "block.create.weathered_limestone_cobblestone": "Выветренный известняк-булыжник", - "block.create.weathered_limestone_cobblestone_slab": "Плита из известняк-булыжника", - "block.create.weathered_limestone_cobblestone_stairs": "Ступени из известняк-булыжника", - "block.create.weathered_limestone_cobblestone_wall": "Стена из известняк-булыжника", - "block.create.weathered_limestone_pillar": "Колонна из выветренного известняка", - "block.create.weighted_ejector": "Взвешенная катапульта", - "block.create.white_sail": "Белый парус", - "block.create.white_seat": "Белое сиденье", - "block.create.white_valve_handle": "Белый ручной вентиль", - "block.create.windmill_bearing": "Подшипник ветряной мельницы", - "block.create.wooden_bracket": "Деревянная скоба", - "block.create.yellow_sail": "Жёлтый парус", - "block.create.yellow_seat": "Жёлтое сиденье", - "block.create.yellow_valve_handle": "Жёлтый ручной вентиль", - "block.create.zinc_block": "Цинковый блок", - "block.create.zinc_ore": "Цинковая руда", - "entity.create.contraption": "Штуковина", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption", - "entity.create.seat": "Сиденье", - "entity.create.stationary_contraption": "Стационарная штуковина", - "entity.create.super_glue": "Супер-клей", - "fluid.create.milk": "Молоко", - "fluid.create.potion": "Зелье", - "fluid.create.tea": "Чай Строителя", - "item.create.andesite_alloy": "Андезитовый сплав", - "item.create.attribute_filter": "Фильтр атрибутов", - "item.create.bar_of_chocolate": "Плитка шоколада", - "item.create.belt_connector": "Механический ремень", - "item.create.blaze_cake": "Торт Всполоха", - "item.create.blaze_cake_base": "Основа торта Всполоха", - "item.create.brass_hand": "Латунная рука", - "item.create.brass_ingot": "Латунный слиток", - "item.create.brass_nugget": "Кусочек латуни", - "item.create.brass_sheet": "Латунный лист", - "item.create.builders_tea": "Чай Строителя", - "item.create.chest_minecart_contraption": "Сундуко-вагонеточная штуковина", - "item.create.chocolate_bucket": "Ведро шоколада", - "item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури", - "item.create.chromatic_compound": "Хроматический компаунд", - "item.create.cinder_flour": "Незераковая пыль", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "Медный слиток", - "item.create.copper_nugget": "Кусочек меди", - "item.create.copper_sheet": "Медный лист", - "item.create.crafter_slot_cover": "Крышка на слот крафтера", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "Измельчённая алюминиевая руда", - "item.create.crushed_brass": "Дроблёная латунь", - "item.create.crushed_copper_ore": "Дроблёная медная руда", - "item.create.crushed_gold_ore": "Дроблёная золотая руда", - "item.create.crushed_iron_ore": "Дроблёная железная руда", - "item.create.crushed_lead_ore": "Дроблёная свинцовая руда", - "item.create.crushed_nickel_ore": "Дроблёная никелевая руда", - "item.create.crushed_osmium_ore": "Дроблёная осмиевая руда", - "item.create.crushed_platinum_ore": "Дроблёная платиновая руда", - "item.create.crushed_quicksilver_ore": "Дроблёная ртутная руда", - "item.create.crushed_silver_ore": "Дроблёная серебрянная руда", - "item.create.crushed_tin_ore": "Дроблёная оловянная руда", - "item.create.crushed_uranium_ore": "Дроблёная урановая руда", - "item.create.crushed_zinc_ore": "Дроблёная цинковая руда", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "Тесто", - "item.create.electron_tube": "Электронная лампа", - "item.create.empty_blaze_burner": "Пустая горелека Всполоха", - "item.create.empty_schematic": "Пустая схематика", - "item.create.extendo_grip": "Удлинённая рука", - "item.create.filter": "Фильтр", - "item.create.furnace_minecart_contraption": "Печно-вагонеточная штуковина", - "item.create.goggles": "Инженерные очки", - "item.create.golden_sheet": "Золотой лист", - "item.create.handheld_worldshaper": "Ручной редактор мира", - "item.create.honey_bucket": "Ведро мёда", - "item.create.honeyed_apple": "Яблоко в меду", - "item.create.integrated_circuit": "Интегральная схема", - "item.create.iron_sheet": "Железный лист", - "item.create.lapis_sheet": "Лазуритовый лист", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "Вагонеточная штуковина", - "item.create.minecart_coupling": "Связыватель вагонеток", - "item.create.polished_rose_quartz": "Полированный розовый кварц", - "item.create.powdered_obsidian": "Порошкообразный обсидиан", - "item.create.propeller": "Пропеллер", - "item.create.red_sand_paper": "Красная наждачная бумага", - "item.create.refined_radiance": "Изысканное сияние", - "item.create.rose_quartz": "Розовый кварц", - "item.create.sand_paper": "Наждачная бумага", - "item.create.schematic": "Схематика", - "item.create.schematic_and_quill": "Схематика и перо", - "item.create.shadow_steel": "Призрачная сталь", - "item.create.super_glue": "Супер-клей", - "item.create.sweet_roll": "Сладкий рулет", - "item.create.tree_fertilizer": "Удобрение для деревьев", - "item.create.vertical_gearbox": "Вертикальная коробка передач", - "item.create.wand_of_symmetry": "Жезл симметрии", - "item.create.wheat_flour": "Пшеничная мука", - "item.create.whisk": "Венчик", - "item.create.wrench": "Гаечный ключ", - "item.create.zinc_ingot": "Цинковый слиток", - "item.create.zinc_nugget": "Кусочек цинка", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Добро пожаловать в Create", - "advancement.create.root.desc": "Пришло время начать строить некоторые удивительные штуковины!", - "advancement.create.andesite_alloy": "Повторение - мать учения", - "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав", - "advancement.create.its_alive": "Оно живое!", - "advancement.create.its_alive.desc": "Смастерите ваш первый кинетический компонент вращения.", - "advancement.create.shifting_gears": "Механизм переключения", - "advancement.create.shifting_gears.desc": "Подсоедините большую шестерню к шестерне, что позволит изменить скорость вращения.", - "advancement.create.overstressed": "Перегрузка", - "advancement.create.overstressed.desc": "Столкнитесь с предельной перегрузкой лицом к лицу.", - "advancement.create.belt": "Передайте за проезд!", - "advancement.create.belt.desc": "Соедините два вала с помощью механического ремня.", - "advancement.create.tunnel": "В укрытие!", - "advancement.create.tunnel.desc": "Украсьте свой конвейер туннелем.", - "advancement.create.splitter_tunnel": "Разделяй и властвуй", - "advancement.create.splitter_tunnel.desc": "Создайте разделитель из группы латунных туннелей.", - "advancement.create.chute": "Упало", - "advancement.create.chute.desc": "Разместите желоб, вертикальный аналог конвейера.", - "advancement.create.upward_chute": "Воздушное похищение", - "advancement.create.upward_chute.desc": "Посмотрите как предмет засасывается в желоб с вентилятором.", - "advancement.create.belt_funnel": "Болтающиеся воронки", - "advancement.create.belt_funnel.desc": "Поместите воронку боком, сверху конвейера или депо, чтобы создать её специальный тип.", - "advancement.create.belt_funnel_kiss": "Механический ужин", - "advancement.create.belt_funnel_kiss.desc": "Заставте две смонтированные на ремнях воронки поцеловаться.", - "advancement.create.fan": "Механический маг воздуха", - "advancement.create.fan.desc": "Оседлайте поток воздуха от Венитлятора.", - "advancement.create.fan_lava": "Геотермальный пространственный нагреватель", - "advancement.create.fan_lava.desc": "Попадите в поток воздуха, плавящего вещи.", - "advancement.create.fan_water": "Сумасшедшая мойка", - "advancement.create.fan_water.desc": "Попадите в поток воздуха, моющего вещи.", - "advancement.create.fan_smoke": "Механические меха", - "advancement.create.fan_smoke.desc": "Попадите в поток воздуха, коптящего вещи.", - "advancement.create.wrench": "Конфигурировать удобно", - "advancement.create.wrench.desc": "Создайте гаечный ключ, чтобы помочь себе в создании изобретений.", - "advancement.create.goggles": "Стресс-о-зрение", - "advancement.create.goggles.desc": "Создайте инженерные очки, чтобы получить больше кинетической информации о компонентах.", - "advancement.create.speedometer": "Так быстро?", - "advancement.create.speedometer.desc": "Поставьте и подключите спидометр. Посмотрите на спидометр через очки, чтобы прочитать точное значение.", - "advancement.create.stressometer": "Так сильно?", - "advancement.create.stressometer.desc": "Поставьте и подключите динамометр. Посмотрите на динамометр через очки, чтобы прочитать точное значение.", - "advancement.create.aesthetics": "Бах! Эстетично!", - "advancement.create.aesthetics.desc": "Разместите скобы на валу, трубе или шестерне.", - "advancement.create.reinforced": "Бах! Усилено!", - "advancement.create.reinforced.desc": "Разместите подходящий блок корпуса на вал, трубу и конвейер.", - "advancement.create.water_wheel": "Гидравлика", - "advancement.create.water_wheel.desc": "Поставьте водяное колесо и попытайтесь заставить его вращаться!", - "advancement.create.chocolate_wheel": "Вкусная сила", - "advancement.create.chocolate_wheel.desc": "Зпустите водяное колесо с помощью раплавленного шоколада.", - "advancement.create.lava_wheel": "Адское колесо", - "advancement.create.lava_wheel.desc": "Это не должно было работать.", - "advancement.create.cuckoo": "Уже?", - "advancement.create.cuckoo.desc": "Станьте свидетелем того, как часы с кукушкой объявляют время сна.", - "advancement.create.millstone": "Карманная дробилка", - "advancement.create.millstone.desc": "Поставьте и приведите в действие жернов", - "advancement.create.windmill": "Ветерок", - "advancement.create.windmill.desc": "Соберите ветряную мельницу.", - "advancement.create.maxed_windmill": "Сильный ветер", - "advancement.create.maxed_windmill.desc": "Соберите ветряную мельницу максимальной силы.", - "advancement.create.andesite_casing": "Андезитовый век", - "advancement.create.andesite_casing.desc": "Используйте немного андезитового сплава и дерева для создания корпуса.", - "advancement.create.mechanical_drill": "Стационарные выключатели", - "advancement.create.mechanical_drill.desc": "Установите и приведите в действие механическую дрель", - "advancement.create.press": "Пресс делает «Бонк!»", - "advancement.create.press.desc": "Приведите механический пресс в действие и используйте его для создания пластин.", - "advancement.create.polished_rose_quartz": "Розовый алмаз", - "advancement.create.polished_rose_quartz.desc": "Используйте кусок наждачной бумаги, чтобы отполировать розовый кварц, пока он не станет прозрачным.", - "advancement.create.electron_tube": "Бип бип", - "advancement.create.electron_tube.desc": "Сделайте несколько электронных ламп, пригодных для изготовления менее примитивных машин.", - "advancement.create.mechanical_saw": "Стационарная рубка", - "advancement.create.mechanical_saw.desc": "Поставьте и подключите механическую пилу", - "advancement.create.basin": "Операция в чаше", - "advancement.create.basin.desc": "Поставьте чашу и попытайтесь бросить в неё предметы.", - "advancement.create.mixer": "Смешать, но не взбалтывать", - "advancement.create.mixer.desc": "Поставьте механический смешиватель над чашей, подключите его и начните смешивать некоторые ингредиенты.", - "advancement.create.blaze_burner": "Живая печка", - "advancement.create.blaze_burner.desc": "Получить Горелку Всполоха", - "advancement.create.compact": "Автоматическое уплотнение", - "advancement.create.compact.desc": "Используйте пресс и чашу для уплотнения некоторых предметов.", - "advancement.create.brass": "Действительный сплав", - "advancement.create.brass.desc": "Используйте дроблёную медь и дроблёный цинк, чтобы создать немного латуни.", - "advancement.create.brass_casing": "Бронзовый век", - "advancement.create.brass_casing.desc": "Используйте только что полученную латунь и немного дерева, чтобы создать более продвинутый корпус.", - "advancement.create.copper_casing": "Медный век", - "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания медного корпуса.", - "advancement.create.spout": "Буль", - "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора.", - "advancement.create.spout_potion": "Основательная пивоварня", - "advancement.create.spout_potion.desc": "Посмотрите как Дозатор наполняет бутылку зельем.", - "advancement.create.chocolate": "Сказочный мир", - "advancement.create.chocolate.desc": "Получите ведро расплавленного шоколада.", - "advancement.create.item_drain": "Осушение", - "advancement.create.item_drain.desc": "Посмотрите как жидкость выкачивается из предмета, в Предметном осушителе.", - "advancement.create.chained_item_drain": "Поехали!", - "advancement.create.chained_item_drain.desc": "Наблюдайте за тем как предмет едет через несколько соединённых предметных осушителей.", - "advancement.create.glass_pipe": "Поточный шпион", - "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании гаечного ключа.", - "advancement.create.pipe_collision": "Никогда не скрещивайте потоки!", - "advancement.create.pipe_collision.desc": "Наблюдайте за тем как две жидкости встречаются в вашей сети труб.", - "advancement.create.pipe_spill": "Протечка!", - "advancement.create.pipe_spill.desc": "Посмотрите как открытый конец трубы забирает или размещает блоки жидкости в мире.", - "advancement.create.hose_pulley": "Промышленный полив", - "advancement.create.hose_pulley.desc": "Опустите шланг и смотрите как он высасывает или заполнят пространство жидкостью.", - "advancement.create.infinite_water": "Осушение океана", - "advancement.create.infinite_water.desc": "Выкачивайте воду из резервуара, считающегося бесконечным.", - "advancement.create.infinite_lava": "Уничтожение ядра", - "advancement.create.infinite_lava.desc": "Выкачивайте лаву из бассейна, считающегося бесконечным.", - "advancement.create.infinite_chocolate": "Утопая в воображении", - "advancement.create.infinite_chocolate.desc": "Выкачивайте раславленный шоколад из резервуара, считающегося бесконечным.", - "advancement.create.crafter": "Автоматизированная сборка", - "advancement.create.crafter.desc": "Поставьте и подключите механический крафтер", - "advancement.create.clockwork_bearing": "Хитрые часы", - "advancement.create.clockwork_bearing.desc": "Соберите структуру, расположенную на часовом механизме.", - "advancement.create.nixie_tube": "Признаки стиля", - "advancement.create.nixie_tube.desc": "Получите и разместите пару Газоразрядных индикаторов.", - "advancement.create.deployer": "Тыкайте, ставьте и атакуйте", - "advancement.create.deployer.desc": "Приведите в действие автономный активатор, идеальное отражение себя.", - "advancement.create.speed_controller": "Его ненавидят инженеры!", - "advancement.create.speed_controller.desc": "Установите регулятор скорости вращения, идеальное устройство для переключения передач.", - "advancement.create.flywheel": "Сердце фабрики", - "advancement.create.flywheel.desc": "Успешно соедините двигатель с маховиком.", - "advancement.create.overstress_flywheel": "Перенапряжение", - "advancement.create.overstress_flywheel.desc": "Подайте слишком большую нагрузку на печной двигатель.", - "advancement.create.integrated_circuit": "Сложные вычисления", - "advancement.create.integrated_circuit.desc": "Создайте Интегральную схему.", - "advancement.create.mechanical_arm": "Золотые руки!", - "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выбирете входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу.", - "advancement.create.musical_arm": "Сбацай что-нибудь!", - "advancement.create.musical_arm.desc": "Посмотрите как механическая рука меняет пластинки.", - "advancement.create.arm_many_targets": "Организатор", - "advancement.create.arm_many_targets.desc": "Запрограммируйте механическую руку на 10 и больше выходов.", - "advancement.create.arm_blaze_burner": "Поджигатель", - "advancement.create.arm_blaze_burner.desc": "Запрограммируйте механическую руку на кормление Горелки Всполоха.", - "advancement.create.fist_bump": "Брось это, братан!", - "advancement.create.fist_bump.desc": "Сделайте два удара кулаком.", - "advancement.create.crushing_wheel": "Пара гигантов", - "advancement.create.crushing_wheel.desc": "Создайте несколько дробящих колес, чтобы более эффективно разрушать больше материалов.", - "advancement.create.blaze_cake": "Сахарная лихорадка", - "advancement.create.blaze_cake.desc": "Испеките особый торт для вашей Горелки Всполоха.", - "advancement.create.chromatic_compound": "Биполярные минералы", - "advancement.create.chromatic_compound.desc": "Создайте хроматический компаунд", - "advancement.create.shadow_steel": "Возвращение пустоты", - "advancement.create.shadow_steel.desc": "Создайте призрачную сталь, металлический слиток небытия.", - "advancement.create.refined_radiance": "Яркий и вдохновляющий", - "advancement.create.refined_radiance.desc": "Создайте изысканное сияние, мощное хроматическое вещество.", - "advancement.create.chromatic_age": "Хроматический век", - "advancement.create.chromatic_age.desc": "Создайте блоки корпуса из света и тьмы.", - "advancement.create.wand_of_symmetry": "Сияющие зеркала", - "advancement.create.wand_of_symmetry.desc": "Создайте жезл симметрии.", - "advancement.create.extendo_grip": "Кипение!", - "advancement.create.extendo_grip.desc": "Возьмите в руки удлинённую руку", - "advancement.create.dual_extendo_grip": "Окончательное выкипание", - "advancement.create.dual_extendo_grip.desc": "Две удлинённых руки для сверхчеловеческого охвата.", - "advancement.create.eob": "Конец бета-версии", - "advancement.create.eob.desc": "Ожидайте больше контента здесь в будущем. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create: Механизмы", - "itemGroup.create.palettes": "Create: Декор", - "death.attack.create.crush": "%1$s был передроблен", - "death.attack.create.fan_fire": "%1$s был сожжен до смерти горячим воздухом", - "death.attack.create.fan_lava": "%1$s был сожжен до смерти поклонником лавы", - "death.attack.create.mechanical_drill": "%1$s был пронзен с помощью механической дрели", - "death.attack.create.mechanical_saw": "%1$s был разрезан пополам механической пилой", - "death.attack.create.cuckoo_clock_explosion": "%1$s взорвали подделанные часы с кукушкой", - "create.block.deployer.damage_source_name": "автономным активатором", - "create.block.cart_assembler.invalid": "Поместите сборщик вагонеток на блок рельс", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "Измельчение", - "create.recipe.milling": "Помол", - "create.recipe.fan_washing": "Массовая промывка", - "create.recipe.fan_washing.fan": "Вентилятор за текущей водой", - "create.recipe.fan_smoking": "Массовое копчение", - "create.recipe.fan_smoking.fan": "Вентилятор за горящим огнём", - "create.recipe.fan_blasting": "Массовое плавление", - "create.recipe.fan_blasting.fan": "Вентилятор за текущей лавой", - "create.recipe.pressing": "Прессование", - "create.recipe.mixing": "Смешивание", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "Автоматическая бесформенная сборка", - "create.recipe.automatic_brewing": "Автоматическое смешивание", - "create.recipe.packing": "Прессование", - "create.recipe.automatic_packing": "Автоматическая упаковка", - "create.recipe.sawing": "Распиливание", - "create.recipe.mechanical_crafting": "Механическое создание", - "create.recipe.automatic_shaped": "Автоматическая форменная сборка", - "create.recipe.block_cutting": "Резка блока", - "create.recipe.wood_cutting": "UNLOCALIZED: Wood Cutting", - "create.recipe.sandpaper_polishing": "Полировка наждачной бумагой", - "create.recipe.mystery_conversion": "Хроматический метаморфоз", - "create.recipe.spout_filling": "Заполнение дозатором", - "create.recipe.draining": "Осушение предметов", - "create.recipe.processing.chance": "%1$s%% шанса", - "create.recipe.heat_requirement.none": "Не требует нагрева", - "create.recipe.heat_requirement.heated": "Нагрето", - "create.recipe.heat_requirement.superheated": "Перегрето", - - "create.generic.range": "Диапазон", - "create.generic.radius": "Радиус", - "create.generic.width": "Ширина", - "create.generic.height": "Высота", - "create.generic.length": "Длина", - "create.generic.speed": "Скорость", - "create.generic.delay": "Задержка", - "create.generic.unit.ticks": "тиков", - "create.generic.unit.seconds": "секунд", - "create.generic.unit.minutes": "минут", - "create.generic.unit.rpm": "об./мин.", - "create.generic.unit.stress": "Н*м", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "По часовой стрелке", - "create.generic.counter_clockwise": "Против часовой стрелки", - - "create.action.scroll": "Прокрутка", - "create.action.confirm": "Подтвердить", - "create.action.abort": "Прервать", - "create.action.saveToFile": "Сохранить", - "create.action.discard": "Отказаться", - - "create.keyinfo.toolmenu": "Меню инструмента фокусировки", - "create.keyinfo.scrollup": "Имитация движения мыши вверх (в мире)", - "create.keyinfo.scrolldown": "Имитация движения мыши вниз (в мире)", - - "create.gui.scrollInput.defaultTitle": "Выбрать опцию:", - "create.gui.scrollInput.scrollToModify": "Прокрутите, чтобы изменить", - "create.gui.scrollInput.scrollToAdjustAmount": "Прокрутите, чтобы настроить количество", - "create.gui.scrollInput.scrollToSelect": "Прокрутите, чтобы выбрать", - "create.gui.scrollInput.shiftScrollsFaster": "Нажмите Shift для быстрой прокрутки", - "create.gui.toolmenu.focusKey": "Удерживайте [%1$s] для смены задач", - "create.gui.toolmenu.cycle": "[Прокрутка] для переключения", - "create.gui.symmetryWand.mirrorType": "Зеркало", - "create.gui.symmetryWand.orientation": "Ориентация", - - "create.symmetry.mirror.plane": "Одинарное", - "create.symmetry.mirror.doublePlane": "Двойное", - "create.symmetry.mirror.triplePlane": "Тройное", - - "create.orientation.orthogonal": "Перпендикуляр.", - "create.orientation.diagonal": "Диагональ.", - "create.orientation.horizontal": "Горизонталь.", - "create.orientation.alongZ": "Вдоль Z", - "create.orientation.alongX": "Вдоль X", - - "create.gui.terrainzapper.title": "Ручной редактор мира", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "Размещение", - "create.gui.terrainzapper.placement.merged": "Слитый", - "create.gui.terrainzapper.placement.attached": "Прикреплённый", - "create.gui.terrainzapper.placement.inserted": "Вставленный", - "create.gui.terrainzapper.brush": "Обычный", - "create.gui.terrainzapper.brush.cuboid": "Куб", - "create.gui.terrainzapper.brush.sphere": "Сфера", - "create.gui.terrainzapper.brush.cylinder": "Цилиндр", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "Инструмент", - "create.gui.terrainzapper.tool.fill": "Заполнить", - "create.gui.terrainzapper.tool.place": "Поставить", - "create.gui.terrainzapper.tool.replace": "Заменить", - "create.gui.terrainzapper.tool.clear": "Очистить", - "create.gui.terrainzapper.tool.overlay": "Наложение", - "create.gui.terrainzapper.tool.flatten": "Выравнивание", - - "create.terrainzapper.shiftRightClickToSet": "ПКМ крадучись, чтобы выбрать форму", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "Вагонетки могут иметь только две связи", - "create.minecart_coupling.unloaded": "Кажется, часть вашего поезда в незагруженных чанках", - "create.minecart_coupling.no_loops": "Связыватели не могут образовывать петлю", - "create.minecart_coupling.removed": "Убраны все связи между вагонетками", - "create.minecart_coupling.too_far": "Вагонетки слишком далеко друг от друга", - - "create.contraptions.movement_mode": "Режим движения", - "create.contraptions.movement_mode.move_place": "Всегда ставить при остановке", - "create.contraptions.movement_mode.move_place_returned": "Ставить только в исходное положение", - "create.contraptions.movement_mode.move_never_place": "Ставить только, когда якорь уничтожен", - "create.contraptions.movement_mode.rotate_place": "Всегда ставить при остановке", - "create.contraptions.movement_mode.rotate_place_returned": "Только место возле начального угла", - "create.contraptions.movement_mode.rotate_never_place": "Только место, когда якорь уничтожен", - "create.contraptions.cart_movement_mode": "Режим движения вагонетки", - "create.contraptions.cart_movement_mode.rotate": "Всегда лицом к движению", - "create.contraptions.cart_movement_mode.rotate_paused": "Пауза во время вращения", - "create.contraptions.cart_movement_mode.rotation_locked": "Блокировка вращения", - "create.contraptions.windmill.rotation_direction": "Направление вращения", - "create.contraptions.clockwork.clock_hands": "Стрелки часов", - "create.contraptions.clockwork.hour_first": "Сначала часовая стрелка", - "create.contraptions.clockwork.minute_first": "Сначала минутная стрелка", - "create.contraptions.clockwork.hour_first_24": "Сначала 24-часовая стрелка", - - "create.logistics.filter": "Фильтр", - "create.logistics.recipe_filter": "Фильтр рецепта", - "create.logistics.fluid_filter": "Фильтр жидкости", - "create.logistics.firstFrequency": "Частота #1", - "create.logistics.secondFrequency": "Частота #2", - "create.logistics.filter.apply": "Фильтр применён к %1$s.", - "create.logistics.filter.apply_click_again": "Фильтр применён к %1$s, кликните еще раз чтобы скопировать количество.", - "create.logistics.filter.apply_count": "Применено извлекаемое количество к фильтру.", - - "create.gui.goggles.generator_stats": "Статистика генератора:", - "create.gui.goggles.kinetic_stats": "Кинетическая статистика:", - "create.gui.goggles.at_current_speed": "На текущей скорости", - "create.gui.goggles.pole_length": "Длина поршня", - "create.gui.goggles.fluid_container": "Информация о жидкостном контейнере:", - "create.gui.goggles.fluid_container.capacity": "Ёмкость: ", - "create.gui.assembly.exception": "Невозможно собрать эту штуковину:", - "create.gui.assembly.exception.unmovableBlock": "Несдвигаемый блок (%4$s) на [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "Блок на [%1$s,%2$s,%3$s] не был в загруженном чанке", - "create.gui.assembly.exception.structureTooLarge": "Штуковина состоит из слишком большого количества Блоков.\nТекущий максимум: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много Удлинителей прикреплено к этому Поршню.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Поршню нехватает Удлинителей", - "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура не содержит достаточно парусопободных блоков: %1$s\nМинимум из %2$s необходим", - "create.gui.gauge.info_header": "Калибровочная информация:", - "create.gui.speedometer.title": "Скорость вращения", - "create.gui.stressometer.title": "Сетевой момент", - "create.gui.stressometer.capacity": "Оставшаяся емкость", - "create.gui.stressometer.overstressed": "Перегрузка", - "create.gui.stressometer.no_rotation": "Нет вращения", - "create.gui.contraptions.not_fast_enough": "Похоже, что этот %1$s _не_ вращается с_достаточной_ _скоростью_.", - "create.gui.contraptions.network_overstressed": "Похоже, что эта штуковина _перегружена_. Добавьте больше источников или _замедлите_ _скорость_ компонентов с высоким _влиянием_ на _момент_.", - "create.gui.adjustable_crate.title": "Регулируемый ящик", - "create.gui.adjustable_crate.storageSpace": "Ёмкость", - "create.gui.stockpile_switch.title": "Настраиваемый компаратор", - "create.gui.stockpile_switch.invert_signal": "Инвертировать сигнал", - "create.gui.stockpile_switch.move_to_lower_at": "Двигаться к нижней линии при %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Двигаться к верхней линии при %1$s%%", - "create.gui.sequenced_gearshift.title": "Последовательное переключение передач", - "create.gui.sequenced_gearshift.instruction": "Инструкция", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Повернуть на угол", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Повернуть", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Угол", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "UNLOCALIZED: Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Поршень", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Расстояние", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Временная задержка", - "create.gui.sequenced_gearshift.instruction.delay": "Задержка", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Длительность", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "Конец", - "create.gui.sequenced_gearshift.instruction.end": "Конец", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Ожидать нового Импульса Редстоун Сигнала", - "create.gui.sequenced_gearshift.instruction.await": "Ожидать", - "create.gui.sequenced_gearshift.speed": "Скорость, Направление", - "create.gui.sequenced_gearshift.speed.forward": "Скорость ввода, вперед", - "create.gui.sequenced_gearshift.speed.forward_fast": "Двойная скорость, вперед", - "create.gui.sequenced_gearshift.speed.back": "Скорость ввода, реверс", - "create.gui.sequenced_gearshift.speed.back_fast": "Двойная скорость, реверс", - - "create.schematicAndQuill.dimensions": "Размер схематики: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Первая позиция установлена.", - "create.schematicAndQuill.secondPos": "Вторая позиция установлена.", - "create.schematicAndQuill.noTarget": "Удерживайте [Ctrl], чтобы выбрать воздушные блоки.", - "create.schematicAndQuill.abort": "Выделение убрано", - "create.schematicAndQuill.title": "Имя схематики:", - "create.schematicAndQuill.convert": "Сохранить и развернуть немедленно", - "create.schematicAndQuill.fallbackName": "Моя схематика", - "create.schematicAndQuill.saved": "Сохранено как %1$s", - - "create.schematic.invalid": "[!] Недопустимый предмет — вместо этого используйте схематичный стол", - "create.schematic.position": "Позиция", - "create.schematic.rotation": "Вращение", - "create.schematic.rotation.none": "Нет", - "create.schematic.rotation.cw90": "По час. стрелке 90", - "create.schematic.rotation.cw180": "По час. стрелке 180", - "create.schematic.rotation.cw270": "По час. стрелке 270", - "create.schematic.mirror": "Зеркало", - "create.schematic.mirror.none": "Нет", - "create.schematic.mirror.frontBack": "Спереди-сзади", - "create.schematic.mirror.leftRight": "Влево-вправо", - "create.schematic.tool.deploy": "Развернуть", - "create.schematic.tool.move": "Подвинуть XZ", - "create.schematic.tool.movey": "Подвинуть Y", - "create.schematic.tool.rotate": "Вращать", - "create.schematic.tool.print": "Печать", - "create.schematic.tool.flip": "Перевернуть", - "create.schematic.tool.deploy.description.0": "Перемещает структуру в локации.", - "create.schematic.tool.deploy.description.1": "Щелкните ПКМ на земле, чтобы разместить.", - "create.schematic.tool.deploy.description.2": "Удерживайте [Ctrl], чтобы выбрать фиксированное расстояние.", - "create.schematic.tool.deploy.description.3": "[Ctrl] и прокрутка, чтобы изменить расстояние.", - "create.schematic.tool.move.description.0": "Сдвинуть схему по горизонтали.", - "create.schematic.tool.move.description.1": "Наведите курсор на схему и нажмите [CTRL] и прокрутка, чтобы нажать на нее.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Сдвигает схему по вертикали.", - "create.schematic.tool.movey.description.1": "[CTRL] и прокрутка - переместить вверх/вниз.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Вращает схематику вокруг ее центра.", - "create.schematic.tool.rotate.description.1": "[CTRL] и прокрутка вращать на 90 градусов.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Мгновенно размещает структуру в мире.", - "create.schematic.tool.print.description.1": "[ПКМ], чтобы подтвердить размещение в текущем местоположении.", - "create.schematic.tool.print.description.2": "Этот инструмент предназначен только для творческого режима.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Переверните схему вдоль выбранного лица.", - "create.schematic.tool.flip.description.1": "Наведите курсор на схему и [CTRL] + прокрутка, чтобы перевернуть ее.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Синхронизация..", - "create.schematics.uploadTooLarge": "Ваша схематика слишком велика.", - "create.schematics.maxAllowedSize": "Максимально допустимый размер файла:", - - "create.gui.schematicTable.refresh": "Обновить файлы", - "create.gui.schematicTable.open_folder": "Открыть папку", - "create.gui.schematicTable.title": "Схематичный стол", - "create.gui.schematicTable.availableSchematics": "Доступные схемы", - "create.gui.schematicTable.noSchematics": "Схемы не сохранены", - "create.gui.schematicTable.uploading": "Загрузка ...", - "create.gui.schematicTable.finished": "Загрузка завершена!", - "create.gui.schematicannon.title": "Схематичная пушка", - "create.gui.schematicannon.listPrinter": "Список материалов", - "create.gui.schematicannon.gunpowderLevel": "Порох на %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Выстрелов осталось: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "С резервной копией: %1$s", - "create.gui.schematicannon.optionEnabled": "В настоящее время включен", - "create.gui.schematicannon.optionDisabled": "В настоящее время отключен", - "create.gui.schematicannon.showOptions": "Показать настройки печати", - "create.gui.schematicannon.option.dontReplaceSolid": "Не заменять целые блоки", - "create.gui.schematicannon.option.replaceWithSolid": "Заменять целые блоки целыми блоками", - "create.gui.schematicannon.option.replaceWithAny": "Заменять целые блоки чем угодно", - "create.gui.schematicannon.option.replaceWithEmpty": "Заменять целые блоки пустотой", - "create.gui.schematicannon.option.skipMissing": "Пропускать отсутствующие блоки", - "create.gui.schematicannon.option.skipTileEntities": "Защитить имущество", - "create.gui.schematicannon.slot.gunpowder": "Добавьте порох чтобы запитать пушку", - "create.gui.schematicannon.slot.listPrinter": "Положите книгу чтобы создать список предметов для схематики", - "create.gui.schematicannon.slot.schematic": "Положите свою схематику здесь. Убедитесь что она размещена в правильном месте", - "create.gui.schematicannon.option.skipMissing.description": "Если пушка не может найти требуемый блок, она будет строить в следующем месте.", - "create.gui.schematicannon.option.skipTileEntities.description": "Пушка не будет заменять блоки хранения данных, такие как сундуки.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Пушка никогда не заменит целые блоки, только не целые и воздух.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Пушка будет заменять целый блок только в случае, если в схеме в этом месте расположен целый блок.", - "create.gui.schematicannon.option.replaceWithAny.description": "Пушка будет заменять целые блоки, если в схеме в этом месте есть что-либо.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Пушка отчистит все блоки, включая замену на воздух.", - - "create.schematicannon.status.idle": "Бездействует", - "create.schematicannon.status.ready": "Готова", - "create.schematicannon.status.running": "Работает", - "create.schematicannon.status.finished": "Закончила", - "create.schematicannon.status.paused": "Приостановлена", - "create.schematicannon.status.stopped": "Остановлена", - "create.schematicannon.status.noGunpowder": "Требуется порох", - "create.schematicannon.status.targetNotLoaded": "Цель не загружена", - "create.schematicannon.status.targetOutsideRange": "Цель слишком далеко", - "create.schematicannon.status.searching": "Поиск", - "create.schematicannon.status.skipping": "Пропуск", - "create.schematicannon.status.missingBlock": "Требует блок:", - "create.schematicannon.status.placing": "Стройка", - "create.schematicannon.status.clearing": "Очистка", - "create.schematicannon.status.schematicInvalid": "Неверная схема", - "create.schematicannon.status.schematicNotPlaced": "Схема не загружена", - "create.schematicannon.status.schematicExpired": "Срок действия файла схемы истек", - - "create.materialChecklist": "Список материалов", - "create.materialChecklist.blocksNotLoaded": "* Дисклеймер *\n\nСписок материалов может быть неточным из-за незагруженных чанков.", - - "create.gui.filter.deny_list": "Чёрный список", - "create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой черный список принимает все.", - "create.gui.filter.allow_list": "Белый список", - "create.gui.filter.allow_list.description": "Предметы проходят, если они соответствуют любому из вышеперечисленных. Пустой белый список отвергает все.", - "create.gui.filter.respect_data": "Использование данных", - "create.gui.filter.respect_data.description": "Предметы совпадают только в том случае, если их прочность, чары и другие атрибуты совпадают.", - "create.gui.filter.ignore_data": "Игнорирование данных", - "create.gui.filter.ignore_data.description": "Предметы совпадают независимо от их атрибутов.", - - "create.item_attributes.placeable": "можно разместить", - "create.item_attributes.placeable.inverted": "нельзя разместить", - "create.item_attributes.consumable": "можно съесть", - "create.item_attributes.consumable.inverted": "нельзя съесть", - "create.item_attributes.smeltable": "можно расплавить", - "create.item_attributes.smeltable.inverted": "нельзя расплавить", - "create.item_attributes.washable": "можно промыть", - "create.item_attributes.washable.inverted": "нельзя промыть", - "create.item_attributes.smokable": "можно прокоптить", - "create.item_attributes.smokable.inverted": "нельзя прокоптить", - "create.item_attributes.crushable": "можно измельчить", - "create.item_attributes.crushable.inverted": "нельзя разместить", - "create.item_attributes.blastable": "плавится в доменной печи", - "create.item_attributes.blastable.inverted": "не плавится в доменной печи", - "create.item_attributes.enchanted": "зачарован", - "create.item_attributes.enchanted.inverted": "не зачарован", - "create.item_attributes.damaged": "повреждён", - "create.item_attributes.damaged.inverted": "не повреждён", - "create.item_attributes.badly_damaged": "сильно повреждён", - "create.item_attributes.badly_damaged.inverted": "не сильно повреждён", - "create.item_attributes.not_stackable": "не может складываться", - "create.item_attributes.not_stackable.inverted": "складывается", - "create.item_attributes.equipable": "может быть надет", - "create.item_attributes.equipable.inverted": "не может быть надет", - "create.item_attributes.furnace_fuel": "является топливом", - "create.item_attributes.furnace_fuel.inverted": "не является топливом", - "create.item_attributes.in_tag": "помечен %1$s", - "create.item_attributes.in_tag.inverted": "не помечен %1$s", - "create.item_attributes.in_item_group": "принадлежит %1$s", - "create.item_attributes.in_item_group.inverted": "не принадлежит '%1$s'", - "create.item_attributes.added_by": "был добавлен %1$s", - "create.item_attributes.added_by.inverted": "не был добавлен %1$s", - "create.item_attributes.has_enchant": "зачарован на %1$s", - "create.item_attributes.has_enchant.inverted": "не зачарован на %1$s", - "create.item_attributes.color": "Покрашено в %1$s", - "create.item_attributes.color.inverted": "Не покрашено в %1$s", - "create.item_attributes.max_enchanted": "Зачаровано за максимальный уровень", - "create.item_attributes.max_enchanted.inverted": "Не зачаровано за максимальный уровень", - "create.item_attributes.has_fluid": "содержит %1$s", - "create.item_attributes.has_fluid.inverted": "не содержит %1$s", - "create.item_attributes.has_name": "имеет нестандартное имя %1$s", - "create.item_attributes.has_name.inverted": "не имеет нестандартное имя%1$s", - "create.item_attributes.book_author": "подписана %1$s", - "create.item_attributes.book_author.inverted": "неподписана %1$s", - "create.item_attributes.book_copy_original": "оригинал", - "create.item_attributes.book_copy_original.inverted": "не оригинал", - "create.item_attributes.book_copy_first": "копия первого порядка", - "create.item_attributes.book_copy_first.inverted": "не копия первого порядка", - "create.item_attributes.book_copy_second": "копия второго порядка", - "create.item_attributes.book_copy_second.inverted": "не копия второго порядка", - "create.item_attributes.book_copy_tattered": "полный беспорядок", - "create.item_attributes.book_copy_tattered.inverted": "не полный беспорядок", - "create.item_attributes.astralsorcery_crystal": "имеет характеристики кристалла %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "не имеет характеристики кристалла %1$s", - "create.item_attributes.astralsorcery_constellation": "настроено на %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "не настроено на %1$s", - "create.item_attributes.astralsorcery_perk_gem": "имеет характеристики перка %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "не имеет характеристики перка %1$s", - "create.item_attributes.astralsorcery_amulet": "исправляет %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "не исправляет %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "Атрибуты не выбраны", - "create.gui.attribute_filter.selected_attributes": "Выбранные атрибуты:", - "create.gui.attribute_filter.add_attribute": "Добавлены атрибуты", - "create.gui.attribute_filter.add_inverted_attribute": "Добавлены противоположные атрибуты в список", - "create.gui.attribute_filter.allow_list_disjunctive": "Белый список (любой)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Предметы проходят, если у них есть какой-либо из выбранных атрибутов.", - "create.gui.attribute_filter.allow_list_conjunctive": "Белый список (все)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Предметы проходят, только если они имеют ВСЕ выбранные атрибуты.", - "create.gui.attribute_filter.deny_list": "Чёрный список", - "create.gui.attribute_filter.deny_list.description": "Предметы проходят, если они НЕ имеют ни одного из выбранных атрибутов.", - "create.gui.attribute_filter.add_reference_item": "Добавить предмет", - - "create.tooltip.holdForDescription": "Удерживайте [%1$s] для Сводки", - "create.tooltip.holdForControls": "Удерживайте [%1$s] для Управления", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Требование к скорости: %1$s", - "create.tooltip.speedRequirement.none": "Нет", - "create.tooltip.speedRequirement.medium": "Умеренная", - "create.tooltip.speedRequirement.high": "Быстрая", - "create.tooltip.stressImpact": "Требование к крутящему моменту: %1$s", - "create.tooltip.stressImpact.low": "Низкий", - "create.tooltip.stressImpact.medium": "Средний", - "create.tooltip.stressImpact.high": "Высокий", - "create.tooltip.stressImpact.overstressed": "Перегрузка", - "create.tooltip.capacityProvided": "Ёмкостный крутящий момент: %1$s", - "create.tooltip.capacityProvided.low": "Маленький", - "create.tooltip.capacityProvided.medium": "Средний", - "create.tooltip.capacityProvided.high": "Большой", - "create.tooltip.generationSpeed": "Создаёт %1$s %2$s", - "create.tooltip.analogStrength": "Аналоговая сила: %1$s/15", - - "create.mechanical_arm.extract_from": "Берёт предметы из %1$s", - "create.mechanical_arm.deposit_to": "Складывает предметы в %1$s", - "create.mechanical_arm.summary": "Механическая рука имеет %1$s вход(ов) и %2$s выход(ов).", - "create.mechanical_arm.points_outside_range": "%1$s выбранные точки взаимодействия удалены из-за ограничений диапазона.", - - "create.weighted_ejector.target_set": "Цель выбрана", - "create.weighted_ejector.target_not_valid": "Бросает до близлежащего блока (Неподходящая Цель)", - "create.weighted_ejector.no_target": "Бросает до близлежащего блока (Цель не была Выбрана)", - "create.weighted_ejector.targeting": "Бросает до [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Размер Бросаемого Стака", - - "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", - - "create.mechanical_arm.selection_mode.round_robin": "По кругу", - "create.mechanical_arm.selection_mode.forced_round_robin": "Принудительно по кругу", - "create.mechanical_arm.selection_mode.prefer_first": "Предпочтительна первичная цель", - - "create.tunnel.selection_mode.split": "Разделить", - "create.tunnel.selection_mode.forced_split": "Принудительно разделить", - "create.tunnel.selection_mode.round_robin": "По кругу", - "create.tunnel.selection_mode.forced_round_robin": "Принудительно по кругу", - "create.tunnel.selection_mode.prefer_nearest": "Придпочтительно ближайшее", - "create.tunnel.selection_mode.randomize": "Случайно", - "create.tunnel.selection_mode.synchronize": "Синхронизировать входы", - - "create.tooltip.chute.header": "Инвормация о желобе", - "create.tooltip.chute.items_move_down": "Предметы двигаются вниз", - "create.tooltip.chute.items_move_up": "Предметы двигаются вверх", - "create.tooltip.chute.no_fans_attached": "Нет подключеных вентиляторов", - "create.tooltip.chute.fans_push_up": "Вентилятор толкает снизу", - "create.tooltip.chute.fans_push_down": "Вентилятор толкает сверху", - "create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху", - "create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу", - "create.tooltip.chute.contains": "Содержит: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "Безграничное снабжение", - "create.hint.hose_pulley": "Целевой водный резервуар считается бесконечным.", - "create.hint.mechanical_arm_no_targets.title": "Нет целей", - "create.hint.mechanical_arm_no_targets": "Кажется, эта _Механическая рука_ не имеет никаких целей. Выберите _ремни_, _депо_, _воронки_, или другие блоки, с помощью _правого клика_, удерживая _Механическую руку_.", - "create.hint.empty_bearing.title": "Обновить подшипник", - "create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы только что построили перед ним.", - "create.hint.full_deployer.title": "Переполнение автономного активатора", - "create.hint.full_deployer": "Похоже, этот _автономный активатор_ содержит _лишние_ _предметы_, которые необходимо _извлечь_. Используйте _воронку_ или _другие способы_, чтобы освободить его от переполнения.", - - "create.gui.config.overlay1": "Привет :)", - "create.gui.config.overlay2": "Это образец оверлея", - "create.gui.config.overlay3": "Кликни и тащи с помощью мыши", - "create.gui.config.overlay4": "чтобы переместить его", - "create.gui.config.overlay5": "Нажми ESC чтобы выйти", - "create.gui.config.overlay6": "и сохранить новую позицию", - "create.gui.config.overlay7": "Введи /create overlay reset", - "create.gui.config.overlay8": "чтобы сбросить позицию до стандартной", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Тики сервера в настоящее время замедлены на %s мс :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Тики сервера теперь замедлены на %s мс >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Тики сервера вернулись в норму :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: используйте /killtps stop , чтобы вернуть тик сервера на обычную скорость", - "create.command.killTPSCommand.status.usage.1": "[Create]: используйте /killtps start <Время тика>, чтобы искусственно замедлить тик сервера", - "create.command.killTPSCommand.argument.tickTime": "Время тика", - - "create.contraption.minecart_contraption_too_big": "UNLOCALIZED: This Cart Contraption seems too big to pick up", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "Всполох радостно жуёт", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "Схематичная пушка закончила работу", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "Намазывание слизи", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "Механический пресс активирован", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя уютное деревянное укрепление.", - - "block.create.metal_bracket.tooltip": "METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя прочное индустриальное укрепление.", - - "block.create.copper_casing.tooltip": "COPPER CASING", - "block.create.copper_casing.tooltip.summary": "Прочный машинный корпус для разнообразного использования. Безопасно для украшения.", - "block.create.copper_casing.tooltip.condition1": "При использовании на жидкостной трубе", - "block.create.copper_casing.tooltip.behaviour1": "Покрывает _жидкостную трубу_ _корпусом_. Трубы в корпусе _закрепят свои соединения_ и не будут соединятся с другими трубами, расположенными по соседству.", - - "block.create.encased_fluid_pipe.tooltip": "ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "_Труба_ в _Медном корпусе_.", - - "block.create.seat.tooltip": "SEAT", - "block.create.seat.tooltip.summary": "Присядьте и насладитесь поездкой! Привязывает игроков к собранным _устройствам_. Отлично выглядит как простая мебель! Можно окрасить в разные цвета.", - "block.create.seat.tooltip.condition1": "ПКМ по сиденью", - "block.create.seat.tooltip.behaviour1": "Сажает игрока на _Сиденье_. Нажмите _кнопку_ _приседания_ чтобы слезть.", - - "item.create.blaze_cake.tooltip": "BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "Вкусное угощения для вашей трудяги _Горелки Всполоха_. Зажигает их всех!", - - "block.create.fluid_pipe.tooltip": "FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "Используется для транспортировки _жидкостей_. Требует _Механическую помпу_ для движения _жидкости_.", - "block.create.fluid_pipe.tooltip.condition1": "Транспортировка жидкости", - "block.create.fluid_pipe.tooltip.behaviour1": "Может соединяться с _жидкостными контейнерами_, такими как _бак_ или _чаша_. Открытые части _трубы_ могут собирать или размещать блоки жидкости в мире. Опасайтесь протечек!", - "block.create.fluid_pipe.tooltip.condition2": "ПКМ _Ключом_", - "block.create.fluid_pipe.tooltip.behaviour2": "Устанавливает окно на трубе если возможно", - - "block.create.hose_pulley.tooltip": "HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "Используется для _размещения_ или _удаления_ больших _жидкостных резервуаров_ в мире.", - "block.create.hose_pulley.tooltip.condition1": "Когда управляется кинетически", - "block.create.hose_pulley.tooltip.behaviour1": "_Поднимает_ или _опускает_ шланг, расположение которого определяет максимальную высоту _сбора_ или _размещения_ жидкости.", - "block.create.hose_pulley.tooltip.condition2": "Когда жидкости вытягиваются из шланга", - "block.create.hose_pulley.tooltip.behaviour2": "Начинает _собирать_ блоки жидкости из резервуара, в который опущен шланг. Очень _большие резервуары_ жидкости будут считаться _бесконечными_.", - "block.create.hose_pulley.tooltip.condition3": "Когда жидкости закачиваются в шланг", - "block.create.hose_pulley.tooltip.behaviour3": "Начинает _заполнять_ жидкостью мир, до уровня расположения конца шланга.", - - "block.create.fluid_tank.tooltip": "FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "_Хранит_ ваши любимые _жидкости_. Скалируется в высоту и ширину.", - "block.create.fluid_tank.tooltip.condition1": "Правый клик с гаечным ключом", - "block.create.fluid_tank.tooltip.behaviour1": "Переключает опциональное отображение окна", - - "block.create.creative_fluid_tank.tooltip": "CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "Этот _Жидкостный бак_ позволяет иметь бесконечную репликацию любой жидкости. Скалируется в высоту и ширину.", - "block.create.creative_fluid_tank.tooltip.condition1": "Когда жидкость в баке", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Всё что _извлекает_ из бака, будет снабжаться _бесконечным запасом_ жидкости. Жидкости _закачивающиеся_ в бак будут _удаляться_.", - "block.create.creative_fluid_tank.tooltip.condition2": "Правый клик с гаечным ключом", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Переключает опциональное отображение окна.", - - "block.create.fluid_valve.tooltip": "FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "Останавливает поток жидкости по трубе.", - "block.create.fluid_valve.tooltip.condition1": "Контролируемый поток", - "block.create.fluid_valve.tooltip.behaviour1": "Приложенная _Вращательная сила_ заставит _клапан_ закрыться, останавливая поток _жидкости_. Измените направление _вращательной силы_, чтобы снова открыть клапан.", - - "block.create.mechanical_pump.tooltip": "MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "Принимает _Вращательную силу_ и использует ее для перемещения _жидкости_ вдоль _труб_. Имеет максимальный диапазон действия в обоих направлениях. (По умолчанию 16 блоков)", - "block.create.mechanical_pump.tooltip.condition1": "Поток жидкости", - "block.create.mechanical_pump.tooltip.behaviour1": "Приложенная _вращательная сила_ создает давление, которое заставляет _жидкость_ проходить через сеть _труб_. Измените направление _вращательной силы_, чтобы изменить направление потока _жидкости_.", - "block.create.mechanical_pump.tooltip.control1": "Правый клик с гаечным ключом", - "block.create.mechanical_pump.tooltip.action1": "Изменяет направление _помпы_, меняя направление потока жидкости", - - "block.create.smart_fluid_pipe.tooltip": "SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "_Жидкостная труба_ с фильтром. Можно настроить какие _жидкости_ могу пройти.", - "block.create.smart_fluid_pipe.tooltip.condition1": "При закачивании жидкостей внутрь", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Умные трубы заблокируют поток жидкости, если она не соответствует фильтру.", - "block.create.smart_fluid_pipe.tooltip.condition2": "Когда подключена к жидкостному контейнеру", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Умные трубы _будут_ создавать _поток_ только той жидкости, что _соответствует_ _фильтру_.", - - "block.create.spout.tooltip": "SPOUT", - "block.create.spout.tooltip.summary": "Форсунка для пополнения предметов, имеющих возможность хранить жидкость.", - "block.create.spout.tooltip.condition1": "Транспортировка жидкости", - "block.create.spout.tooltip.behaviour1": "Когда предмет, _с возможностью содержать жидкость_, такой как _ведро_ или _бутылочка_, размещён под дозатором, дозатор будет пытаться заполнить предмет содержащейся в нём _жидкостью_.", - "block.create.spout.tooltip.condition2": "Автоматизация жидкости", - "block.create.spout.tooltip.behaviour2": "Дозатор расположеный над _конвейером_ или _депо_ будет автоматически взаимодействовать с _предметами, которые могут содержать жидкость_, которые проходят под ним.", - - "block.create.item_drain.tooltip": "ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "Депо с решёткой, которое может выкачивать _жидкость_ из ваших _предметов_", - "block.create.item_drain.tooltip.condition1": "Транспортировка жидкости", - "block.create.item_drain.tooltip.behaviour1": "Когда _предмет с жидкостью_, такой как _ведро_ или _бутылочка_ вставлены с боку, предметный осушитель будет автоматически извлекать жидкость, в свой собственный _бак_. Предмет будет выброшен с противоположной стороны.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", - "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", - "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", - "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", - "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", - "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", - "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадучись", - "item.create.wand_of_symmetry.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", - - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "Удобный инструмент для создания _ландшафтов_ и _рельефа_ _местности_.", - "item.create.handheld_worldshaper.tooltip.control1": "ЛКМ на блок", - "item.create.handheld_worldshaper.tooltip.action1": "Устанавливает блоки, помещенные инструментом, в целевой блок.", - "item.create.handheld_worldshaper.tooltip.control2": "ПКМ на блок", - "item.create.handheld_worldshaper.tooltip.action2": "Применяет выбранную _кисть_ и _инструмент_ в выбранном месте.", - "item.create.handheld_worldshaper.tooltip.control3": "ПКМ крадучись", - "item.create.handheld_worldshaper.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", - - "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "Мощная комбинация минералов подходит для ускорения роста распространенных типов деревьев.", - "item.create.tree_fertilizer.tooltip.condition1": "При использовании на саженце", - "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья,_независимо_ от _условий_ _их_ _расположения_", - - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "Бойоиоинг! Значительно _увеличивает_ _досягаемость_ владельца.", - "item.create.extendo_grip.tooltip.condition1": "Находясь в другой руке", - "item.create.extendo_grip.tooltip.behaviour1": "Увеличьте _расстояние_ _досягаемости_ предметов, используемых в _главной_ _руке_.", - - "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "Управляет_ _выходами_ и входами логистических устройств с _большей_ _точностью_, _сопоставляя_ их со _списком_ _предметов_ или несколькими _вложенными_ _фильтрами_.", - "item.create.filter.tooltip.condition1": "Когда в слоте фильтра", - "item.create.filter.tooltip.behaviour1": "_Управляет_ потоком предметов в соответствии с его _конфигурацией_.", - "item.create.filter.tooltip.condition2": "При ПКМ", - "item.create.filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", - - "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "_Управляет_ _выходами_ и _входами_ логистических устройств с _большей_ _точностью_, сопоставляя их с набором _атрибутов_ и _категорий предметов_.", - "item.create.attribute_filter.tooltip.condition1": "Когда в слоте фильтра", - "item.create.attribute_filter.tooltip.behaviour1": "_Управляет_ потоком предметов в соответствии с его _конфигурацией_.", - "item.create.attribute_filter.tooltip.condition2": "ПКМ", - "item.create.attribute_filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", - - "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "Используется в качестве ингредиента рецепта и для записи в _Схематичный столе_", - - "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "Содержит структуру, которая будет позиционироваться и помещаться в мир. Расположите голограмму по своему усмотрению и используйте _схематичную пушку_ для ее построения.", - "item.create.schematic.tooltip.condition1": "При удерживании", - "item.create.schematic.tooltip.behaviour1": "Может быть позиционирован с помощью инструментов на экране.", - "item.create.schematic.tooltip.control1": "ПКМ крадучись", - "item.create.schematic.tooltip.action1": "Открывает _интерфейс_ для ввода _точных_ _координат_.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в вашем мире в файл .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две угловые точки, используя ПКМ.", - "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ и _прокрутка_ на голограмме для изменения размера. Нажмите ПКМ, чтобы сохранить.", - "item.create.schematic_and_quill.tooltip.control1": "ПКМ", - "item.create.schematic_and_quill.tooltip.action1": "Выберите угловые точки / подтвердите сохранение.", - "item.create.schematic_and_quill.tooltip.control2": "Удержание Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Выберите точки в воздухе. Прокрутка для настройки расстояния.", - "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадучись", - "item.create.schematic_and_quill.tooltip.action3": "_Сбрасывает_ и _удаляет_ выделение.", - - "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "_Ставит блоки_ для воссоздания _схематики_ в мире. Использует предметы из _соседнего_ _инвентаря_ и _порох_ в качестве _топлива_.", - "block.create.schematicannon.tooltip.condition1": "ПКМ", - "block.create.schematicannon.tooltip.behaviour1": "Открывает _Интерфейс_", - - "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "Записывает сохраненные схематики в _пустые_ _схематики_.", - "block.create.schematic_table.tooltip.condition1": "Когда дана пустая схема", - "block.create.schematic_table.tooltip.behaviour1": "Загружает выбранный файл из вашей папки Schematics.", - - "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "Очки для улучшения зрения с помощью полезной кинетической информации.", - "item.create.goggles.tooltip.condition1": "При ношении", - "item.create.goggles.tooltip.behaviour1": "Показывает _цветные_ _индикаторы_, соответствующие _уровню_ _скорости_ размещённого кинетического компонента, а также воздействию момента и мощности отдельных компонентов.", - "item.create.goggles.tooltip.condition2": "При взгляде на датчик", - "item.create.goggles.tooltip.behaviour2": "Показывает подробную информацию о скорости или моменте сети, к которой подключён датчик.", - "item.create.goggles.tooltip.condition3": "При взгляде на жидкостные контейнеры", - "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _Ёмкости_ блока и о хранящейся в нём хранится _Жидкости_.", - - "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "Полезный _инструмент_ для работы с _кинетическими_ штуковинами. Может использоваться для _поворота_, _демонтажа_ и _настройки_ компонентов.", - "item.create.wrench.tooltip.control1": "ПКМ по кинетическому блоку", - "item.create.wrench.tooltip.action1": "_Поворачивает_ _компонент_ с которым вы взаимодействуете _к_ _лицу_ или _от_ _лица_.", - "item.create.wrench.tooltip.control2": "ПКМ крадучись", - "item.create.wrench.tooltip.action2": "Разбирает кинетические компоненты и помещает их обратно в ваш инвентарь.", - - "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "Прикрепите к передней части _вентилятора_, чтобы распределить его влияние на сущностей _во_ _всех_ _направлениях_.", - - "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "_Прекрасное_ _мастерство_ для _украшения_ пространства и _отслеживания_ _времени_.", - "block.create.cuckoo_clock.tooltip.condition1": "При вращении", - "block.create.cuckoo_clock.tooltip.behaviour1": "Показывает текущее время и напевает мелодию два раза в день. _Активируется_ _один_ _раз_ в _полдень_ и в _сумерках_, как только _игроки_ _могут_ _спать_.", - - "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "Преобразует _силу_ _вращения_ прямиком в морскую болезнь.", - - "block.create.portable_fluid_interface.tooltip": "PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "Переносная точка обмена для _перемещения жидкостей_ из или в конструкцию, перемещаемую _поршнем_, _подшипником_, _вагонеткой_ или _лебёдкой_. Два смежных интерфейса должны располагаться _лицом друг_ _к другу_, на расстоянии _1-2 блока друг от друга_.", - "block.create.portable_fluid_interface.tooltip.condition1": "При движении", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Взаимодействует со стационарными _переносными интерфейсами хранения_ для передачи жидкостей в устройство или из него. Трубы, вставленые в _Стационарный интерфейс_, будут напрямую взаимодействовать с резервуарами на устройстве. Конструкция на короткое время остановится для обмена жидкостями.", - "block.create.portable_fluid_interface.tooltip.condition2": "При получении сигнала редстоуна", - "block.create.portable_fluid_interface.tooltip.behaviour2": "Немедленно _разрывает_ текущие соединения.", - - "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "Подаёт сигнал красного камня в зависимости от _заполниности_ _прикреплённого_ _ящика_.", - "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего предела", - "block.create.stockpile_switch.tooltip.behaviour1": "Не подаёт _сигнал_ _красного_ _камня_.", - - "block.create.content_observer.tooltip": "CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и _конвейеров_, соответствующие настроенному _фильтру_. Если наблюдаемый инвентарь, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _ воронка передает_ соответствующий предмет, этот компонент испускает _импульс_.", - - "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "Этот контейнер для хранения позволяет вручную контролировать его емкость. Он может вместить до 16 стэков любого предмета. Поддерживает компараторы.", - "block.create.adjustable_crate.tooltip.condition1": "ПКМ", - "block.create.adjustable_crate.tooltip.behaviour1": "Открывает _Интерфейс_.", - - "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "Этот _контейнер_ для _хранения_ позволяющий _бесконечную_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалу.", - "block.create.creative_crate.tooltip.condition1": "Когда предмет в слоте фильтра", - "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _вставленные_ в этот ящик, будут _аннулированы_.", - - "block.create.controller_rail.tooltip": "CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "_Все-направленные запитанные рельсы_, позволяющие _точную настройку_ _скорости_ вагонеток.", - "block.create.controller_rail.tooltip.condition1": "Когда запитано редстоун-сигналом", - "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на велечину зависящую от _силы сигнала_. Распространая сигнал красного камня на соседние контролирующие рельсы. Питание двух контроллирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", - - "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью автономного активатора.", - "item.create.sand_paper.tooltip.condition1": "Когда используется", - "item.create.sand_paper.tooltip.behaviour1": "Полирует предметы во _второй руке_, или лежащие _на полу_, если _смотреть на них_", - - "item.create.builders_tea.tooltip": "BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "Идеальный напиток для начала дня. _Мотивирует и насыщает_.", - - "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "Хроматический материал, _добытый_ _из_ _поглощенного_ _света_.", - - "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "Хроматический материал, _добытый_ _в_ _пустоте_.", - - "item.create.minecart_coupling.tooltip": "MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Перевозочные устройства_ вместе, чтобы создать великолепный поезд.", - "item.create.minecart_coupling.tooltip.condition1": "При использовании на вагонетке", - "item.create.minecart_coupling.tooltip.behaviour1": "_Соединяет_ две вагонетки вместе, пытаясь держать их на _определенной дистанции_ при движении.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Работа продолжается!", - "create.tooltip.randomWipDescription0": "Пожалуйста держите этот предмет подальше от детей!", - "create.tooltip.randomWipDescription1": "Маленькая панда умирает каждый раз, когда вы используете этот предмет. Каждый. Раз.", - "create.tooltip.randomWipDescription2": "Используйте на свой страх и риск.", - "create.tooltip.randomWipDescription3": "Это не тот предмет, который вы ищете, *шевелит пальцами* пожалуйста, ускорьтесь.", - "create.tooltip.randomWipDescription4": "Этот предмет самоуничтожится через 10 секунд. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Поверьте мне, это бесполезно.", - "create.tooltip.randomWipDescription6": "Используя этот пункт, вы тем самым соглашаетесь с нашим отказом от ответственности и соглашаетесь с его условиями.", - "create.tooltip.randomWipDescription7": "Этот, возможно, но не для тебя. Как насчет этого?", - "create.tooltip.randomWipDescription8": "Используя его, вы немедленно пожалеете о своем решении.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "Удерживайте [%1$s] для Размышления", - "create.ponder.subject": "Субъект этой сцены", - "create.ponder.pondering": "Размышляем о...", - "create.ponder.identify_mode": "Режим Идентификации включён.\nУбрать паузу: [%1$s]", - "create.ponder.associated": "Связанные статьи", - "create.ponder.close": "Закрыть", - "create.ponder.identify": "Определить", - "create.ponder.next": "Следующая сцена", - "create.ponder.previous": "Предыдущая сцена", - "create.ponder.replay": "Воспроизвести снова", - "create.ponder.think_back": "Подумать о предыдущем", - "create.ponder.slow_text": "Удобное чтение", - "create.ponder.shared.movement_anchors": "С помощью Суперклея или Шасси, более крупные структуры могут быть сдивинуты.", - "create.ponder.shared.rpm32": "32 об./мин.", - "create.ponder.shared.sneak_and": "Красться +", - "create.ponder.shared.storage_on_contraption": "Присоединённые к Штуковине инвентари будут подбирать вещи автоматически", - "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Ключом", - "create.ponder.shared.rpm8": "8 об./мин.", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "Источник: 16 об./мин.", - "create.ponder.shared.rpm16": "16 об./мин.", - "create.ponder.tag.kinetic_sources": "Кинетические источники", - "create.ponder.tag.kinetic_sources.description": "Компоненты, генерирующие Силу Вращения", - "create.ponder.tag.contraption_actor": "UNLOCALIZED: Contraption Actors", - "create.ponder.tag.contraption_actor.description": "Компоненты, проявляющие особое поведение когда прикреплены к двигающейся штуковине", - "create.ponder.tag.arm_targets": "Цели для Механической Руки", - "create.ponder.tag.arm_targets.description": "Компоненты, которые могут быть выбраны входами или выходами для Механической Руки", - "create.ponder.tag.logistics": "Транспортировка Предметов", - "create.ponder.tag.logistics.description": "Компоненты, помогающие перемещать предметы", - "create.ponder.tag.movement_anchor": "Опоры Движения", - "create.ponder.tag.movement_anchor.description": "Компоненты, позволяющие создавать двигающиеся штуковины, оживляя прикрепленную структуру разными способами", - "create.ponder.tag.creative": "Творческий режим", - "create.ponder.tag.creative.description": "Компоненты обычычно недоступные в Режиме Выживания", - "create.ponder.tag.kinetic_relays": "Кинетические блоки", - "create.ponder.tag.kinetic_relays.description": "Компоненты, помогающие передавать Силу Вращения куда-нибудь", - "create.ponder.tag.windmill_sails": "Паруса для Мельничных Подшипников", - "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Мельницы. Каждый из этих блоков имеет одинаковую эффективность в деле.", - "create.ponder.tag.contraption_assembly": "Приспособления для присоединения блоков", - "create.ponder.tag.contraption_assembly.description": "Инструменты и Компоненты используемые для сборки структур передвигаемых как движущиеся Штуковины", - "create.ponder.tag.decoration": "Эстетика", - "create.ponder.tag.decoration.description": "Компоненты, чаще всего используемые для декоративных целей", - "create.ponder.tag.kinetic_appliances": "Кинетические Приборы", - "create.ponder.tag.kinetic_appliances.description": "Компоненты, использующие Силу Вращения", - "create.ponder.tag.redstone": "Логические Компоненты", - "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструироваением Редстоун Схем", - "create.ponder.tag.fluids": "Жидкостные Манипуляторы", - "create.ponder.tag.fluids.description": "Компоненты, помогающие перемещать и использовать Жидкости", - - "create.ponder.adjustable_pulse_repeater.header": "Управлении сигналами с помощью Регулируемого импульсного повторителя", - "create.ponder.adjustable_pulse_repeater.text_1": "Регулируемые импульсные повторители испускают короткий импульс с задержкой", - "create.ponder.adjustable_pulse_repeater.text_2": "Используя колесо мыши, время зарядки может быть настроено", - "create.ponder.adjustable_pulse_repeater.text_3": "Настраиваемая задержка может достигать 30 минут", - - "create.ponder.adjustable_repeater.header": "Управлении сигналами с помощью Регулируемого повторителя", - "create.ponder.adjustable_repeater.text_1": "Регулируемые повторители ведут себя схожим образом с обычными Повторителями", - "create.ponder.adjustable_repeater.text_2": "Они заряжаются за заданное время...", - "create.ponder.adjustable_repeater.text_3": "...и разряжаются за столько же времени", - "create.ponder.adjustable_repeater.text_4": "Используя колесо мыши, время зарядки может быть настроено", - "create.ponder.adjustable_repeater.text_5": "Настраиваемая задержка может достигать 30 минут", - - "create.ponder.analog_lever.header": "Управлении сигналами используя Аналоговый Рычаг", - "create.ponder.analog_lever.text_1": "Аналоговый Рычаг создан как компактный и точный источник Редстоун Сигнала", - "create.ponder.analog_lever.text_2": "ПКМ чтобы увеличить силу выходного сигнала", - "create.ponder.analog_lever.text_3": "ПКМ Крадучись чтобы уменьшить силу выходного сигнала снова", - - "create.ponder.andesite_tunnel.header": "UNLOCALIZED: Using Andesite Tunnels", - "create.ponder.andesite_tunnel.text_1": "UNLOCALIZED: Andesite Tunnels can be used to cover up your belts", - "create.ponder.andesite_tunnel.text_2": "UNLOCALIZED: Whenever an Andesite Tunnel has connections to the sides...", - "create.ponder.andesite_tunnel.text_3": "UNLOCALIZED: ...they will split exactly one item off of any passing stacks", - "create.ponder.andesite_tunnel.text_4": "UNLOCALIZED: The remainder will continue on its path", - - "create.ponder.basin.header": "UNLOCALIZED: Processing Items in the Basin", - "create.ponder.basin.text_1": "UNLOCALIZED: A Basin can hold Items and Fluids for Processing", - "create.ponder.basin.text_2": "UNLOCALIZED: After a processing step, basins try to output below to the side of them", - "create.ponder.basin.text_3": "UNLOCALIZED: When a valid component is present, the Basin will show an output faucet", - "create.ponder.basin.text_4": "UNLOCALIZED: A number of options are applicable here", - "create.ponder.basin.text_5": "UNLOCALIZED: Outputs will be caught by the inventory below", - "create.ponder.basin.text_6": "UNLOCALIZED: Without output faucet, the Basin will retain items created in its processing", - "create.ponder.basin.text_7": "UNLOCALIZED: This can be useful if outputs should be re-used as ingredients", - "create.ponder.basin.text_8": "UNLOCALIZED: Desired outputs will then have to be extracted from the basin", - "create.ponder.basin.text_9": "UNLOCALIZED: A Filter might be necessary to avoid pulling out un-processed items", - - "create.ponder.bearing_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Bearing", - "create.ponder.bearing_modes.text_1": "UNLOCALIZED: When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle", - "create.ponder.bearing_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only near the angle it started at", - - "create.ponder.belt_casing.header": "UNLOCALIZED: Encasing Belts", - "create.ponder.belt_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Mechanical Belts", - "create.ponder.belt_casing.text_2": "UNLOCALIZED: A wrench can be used to remove the casing", - - "create.ponder.belt_connector.header": "UNLOCALIZED: Using Mechanical Belts", - "create.ponder.belt_connector.text_1": "UNLOCALIZED: Right-Clicking two shafts with a belt item will connect them together", - "create.ponder.belt_connector.text_2": "UNLOCALIZED: Accidental selections can be canceled with Right-Click while Sneaking", - "create.ponder.belt_connector.text_3": "UNLOCALIZED: Additional Shafts can be added throughout the Belt", - "create.ponder.belt_connector.text_4": "UNLOCALIZED: Shafts connected via Belts will rotate with Identical Speed and Direction", - "create.ponder.belt_connector.text_5": "UNLOCALIZED: Added shafts can be removed using the wrench", - "create.ponder.belt_connector.text_6": "UNLOCALIZED: Mechanical Belts can be dyed for aesthetic purposes", - - "create.ponder.belt_directions.header": "UNLOCALIZED: Valid Orientations for Mechanical Belts", - "create.ponder.belt_directions.text_1": "UNLOCALIZED: Belts cannot connect in arbitrary directions", - "create.ponder.belt_directions.text_2": "UNLOCALIZED: 1. They can connect horizontally", - "create.ponder.belt_directions.text_3": "UNLOCALIZED: 2. They can connect diagonally", - "create.ponder.belt_directions.text_4": "UNLOCALIZED: 3. They can connect vertically", - "create.ponder.belt_directions.text_5": "UNLOCALIZED: 4. And they can connect vertical shafts horizontally", - "create.ponder.belt_directions.text_6": "UNLOCALIZED: These are all possible directions. Belts can span any Length between 2 and 20 blocks", - - "create.ponder.belt_transport.header": "UNLOCALIZED: Using Mechanical Belts for Logistics", - "create.ponder.belt_transport.text_1": "UNLOCALIZED: Moving belts will transport Items and other Entities", - "create.ponder.belt_transport.text_2": "UNLOCALIZED: Right-Click with an empty hand to take items off a belt", - - "create.ponder.blaze_burner.header": "UNLOCALIZED: Feeding Blaze Burners", - "create.ponder.blaze_burner.text_1": "UNLOCALIZED: Blaze Burners can provide Heat to Items processed in a Basin", - "create.ponder.blaze_burner.text_2": "UNLOCALIZED: For this, the Blaze has to be fed with flammable items", - "create.ponder.blaze_burner.text_3": "UNLOCALIZED: With a Blaze Cake, the Burner can reach an even stronger level of heat", - "create.ponder.blaze_burner.text_4": "UNLOCALIZED: The feeding process can be automated using Deployers or Mechanical Arms", - - "create.ponder.brass_funnel.header": "UNLOCALIZED: The Brass Funnel", - "create.ponder.brass_funnel.text_1": "UNLOCALIZED: Andesite Funnels can only ever extract single items.", - "create.ponder.brass_funnel.text_2": "UNLOCALIZED: Brass Funnels can extract up to a full stack.", - "create.ponder.brass_funnel.text_3": "UNLOCALIZED: Scrolling on the filter slot allows for precise control over the extracted stack size.", - "create.ponder.brass_funnel.text_4": "UNLOCALIZED: Using items on the filter slot will restrict the funnel to only transfer matching stacks.", - - "create.ponder.brass_tunnel.header": "UNLOCALIZED: Using Brass Tunnels", - "create.ponder.brass_tunnel.text_1": "UNLOCALIZED: Brass Tunnels can be used to cover up your belts", - "create.ponder.brass_tunnel.text_2": "UNLOCALIZED: Brass Tunnels have filter slots on each open side", - "create.ponder.brass_tunnel.text_3": "UNLOCALIZED: Filters on inbound connections simply block non-matching items", - "create.ponder.brass_tunnel.text_4": "UNLOCALIZED: Filters on outbound connections can be used to sort items by type", - "create.ponder.brass_tunnel.text_5": "UNLOCALIZED: Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it", - "create.ponder.brass_tunnel.text_6": "UNLOCALIZED: Brass Tunnels on parallel belts will form a group", - "create.ponder.brass_tunnel.text_7": "UNLOCALIZED: Incoming Items will now be distributed across all connected exits", - "create.ponder.brass_tunnel.text_8": "UNLOCALIZED: For this, items can also be inserted into the Tunnel block directly", - - "create.ponder.brass_tunnel_modes.header": "UNLOCALIZED: Distribution Modes of the Brass Tunnel", - "create.ponder.brass_tunnel_modes.text_1": "UNLOCALIZED: Using a Wrench, the distribution behaviour of Brass Tunnels can be configured", - "create.ponder.brass_tunnel_modes.text_10": "UNLOCALIZED: 'Synchronize Inputs' is a unique setting for Brass Tunnels", - "create.ponder.brass_tunnel_modes.text_11": "UNLOCALIZED: Items are only allowed past if every tunnel in the group has one waiting", - "create.ponder.brass_tunnel_modes.text_12": "UNLOCALIZED: This ensures that all affected belts supply items at the same rate", - "create.ponder.brass_tunnel_modes.text_2": "UNLOCALIZED: 'Split' will attempt to distribute the stack evenly between available outputs", - "create.ponder.brass_tunnel_modes.text_3": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_4": "UNLOCALIZED: 'Forced Split' will never skip outputs, and instead wait until they are free", - "create.ponder.brass_tunnel_modes.text_5": "UNLOCALIZED: 'Round Robin' keeps stacks whole, and cycles through outputs iteratively", - "create.ponder.brass_tunnel_modes.text_6": "UNLOCALIZED: Once Again, if an output is unable to take more items, it will be skipped", - "create.ponder.brass_tunnel_modes.text_7": "UNLOCALIZED: 'Forced Round Robin' never skips outputs", - "create.ponder.brass_tunnel_modes.text_8": "UNLOCALIZED: 'Prefer Nearest' prioritizes the outputs closest to the items' input location", - "create.ponder.brass_tunnel_modes.text_9": "UNLOCALIZED: 'Randomize' will distribute whole stacks to randomly picked outputs", - - "create.ponder.cart_assembler.header": "UNLOCALIZED: Moving Structures using Cart Assemblers", - "create.ponder.cart_assembler.text_1": "UNLOCALIZED: Powered Cart Assemblers mount attached structures to passing Minecarts", - "create.ponder.cart_assembler.text_2": "UNLOCALIZED: Without a redstone signal, it disassembles passing cart contraptions back into blocks", - "create.ponder.cart_assembler.text_3": "UNLOCALIZED: Using a Wrench on the Minecart will let you carry the Contraption elsewhere", - - "create.ponder.cart_assembler_dual.header": "UNLOCALIZED: Assembling Carriage Contraptions", - "create.ponder.cart_assembler_dual.text_1": "UNLOCALIZED: Whenever two Cart Assembers share an attached structure...", - "create.ponder.cart_assembler_dual.text_2": "UNLOCALIZED: Powering either of them will create a Carriage Contraption", - "create.ponder.cart_assembler_dual.text_3": "UNLOCALIZED: The carts will behave like those connected via Minecart Coupling", - - "create.ponder.cart_assembler_modes.header": "UNLOCALIZED: Orientation Settings for Minecart Contraptions", - "create.ponder.cart_assembler_modes.text_1": "UNLOCALIZED: Cart Contraptions will rotate to face towards their carts' motion", - "create.ponder.cart_assembler_modes.text_2": "UNLOCALIZED: If the Assembler is set to Lock Rotation, the contraptions' orientation will never change", - - "create.ponder.cart_assembler_rails.header": "UNLOCALIZED: Other types of Minecarts and Rails", - "create.ponder.cart_assembler_rails.text_1": "UNLOCALIZED: Cart Assemblers on Regular Tracks will not affect the passing carts' motion", - "create.ponder.cart_assembler_rails.text_2": "UNLOCALIZED: When on Powered or Controller Rail, the carts will be held in place until it's Powered", - "create.ponder.cart_assembler_rails.text_3": "UNLOCALIZED: Other types of Minecarts can be used as the anchor", - "create.ponder.cart_assembler_rails.text_4": "UNLOCALIZED: Furnace Carts will keep themselves powered, pulling fuel from any attached inventories", - "create.ponder.chain_drive.header": "UNLOCALIZED: Relaying rotational force with Chain Drives", - "create.ponder.chain_drive.text_1": "UNLOCALIZED: Chain Drives relay rotation to each other in a row", - "create.ponder.chain_drive.text_2": "UNLOCALIZED: All shafts connected like this will rotate in the same direction", - "create.ponder.chain_drive.text_3": "UNLOCALIZED: Any part of the row can be rotated by 90 degrees", - "create.ponder.chain_gearshift.header": "UNLOCALIZED: Controlling rotational speed with Chain Gearshifts", - "create.ponder.chain_gearshift.text_1": "UNLOCALIZED: Unpowered Chain Gearshifts behave exactly like Chain Drives", - "create.ponder.chain_gearshift.text_2": "UNLOCALIZED: When Powered, the speed transmitted to other Chain Drives in the row is doubled", - "create.ponder.chain_gearshift.text_3": "UNLOCALIZED: Whenever the Powered Gearshift is not at the source, its speed will be halved instead", - "create.ponder.chain_gearshift.text_4": "UNLOCALIZED: In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift", - "create.ponder.chain_gearshift.text_5": "UNLOCALIZED: Using analog signals, the ratio can be adjusted more precisely between 1 and 2", - "create.ponder.chain_gearshift.text_6": "UNLOCALIZED: 12 RPM", - "create.ponder.chute.header": "UNLOCALIZED: Transporting Items downward via Chutes", - "create.ponder.chute.text_1": "UNLOCALIZED: Chutes can transport items vertically from and to inventories", - "create.ponder.chute.text_2": "UNLOCALIZED: Using the Wrench, a window can be created", - "create.ponder.chute.text_3": "UNLOCALIZED: Placing chutes targeting the side faces of another will make it diagonal", - - "create.ponder.chute_upward.header": "UNLOCALIZED: Transporting Items upward via Chutes", - "create.ponder.chute_upward.text_1": "UNLOCALIZED: Using Encased Fans at the top or bottom, a Chute can move items upward", - "create.ponder.chute_upward.text_2": "UNLOCALIZED: Inspecting chutes with Engineers' Goggles reveals information about the movement direction", - "create.ponder.chute_upward.text_3": "UNLOCALIZED: On the 'blocked' end, items will have to be inserted/taken from the sides", - - "create.ponder.clockwork_bearing.header": "UNLOCALIZED: Animating Structures using Clockwork Bearings", - "create.ponder.clockwork_bearing.text_1": "UNLOCALIZED: Clockwork Bearings attach to blocks in front of them", - "create.ponder.clockwork_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, the structure will be rotated according to the hour of the day", - "create.ponder.clockwork_bearing.text_3": "UNLOCALIZED: 3:00", - "create.ponder.clockwork_bearing.text_4": "UNLOCALIZED: 4:00", - "create.ponder.clockwork_bearing.text_5": "UNLOCALIZED: Right-Click the bearing to start or stop animating the structure", - "create.ponder.clockwork_bearing.text_6": "UNLOCALIZED: In front of the Hour Hand, a second structure can be added", - "create.ponder.clockwork_bearing.text_7": "UNLOCALIZED: Ensure the two Structures are not attached to each other through super glue or similar", - "create.ponder.clockwork_bearing.text_8": "UNLOCALIZED: The Second Structure will now rotate as the Minute Hand", - - "create.ponder.clutch.header": "UNLOCALIZED: Controlling rotational force using a Clutch", - "create.ponder.clutch.text_1": "UNLOCALIZED: Clutches will relay rotation in a straight line", - "create.ponder.clutch.text_2": "UNLOCALIZED: When powered by Redstone, it breaks the connection", - - "create.ponder.cog_speedup.header": "UNLOCALIZED: Gearshifting with Cogs", - "create.ponder.cog_speedup.text_1": "UNLOCALIZED: Large and Small cogs can be connected diagonally", - "create.ponder.cog_speedup.text_2": "UNLOCALIZED: Shifting from large to small cogs, the conveyed speed will be doubled", - "create.ponder.cog_speedup.text_3": "UNLOCALIZED: Shifting the opposite way, the conveyed speed will be halved", - - "create.ponder.cogwheel.header": "UNLOCALIZED: Relaying rotational force using Cogwheels", - "create.ponder.cogwheel.text_1": "UNLOCALIZED: Cogwheels will relay rotation to other adjacent cogwheels", - "create.ponder.cogwheel.text_2": "UNLOCALIZED: Neighbouring shafts connected like this will rotate in opposite directions", - - "create.ponder.creative_motor.header": "UNLOCALIZED: Generating Rotational Force using Creative Motors", - "create.ponder.creative_motor.text_1": "UNLOCALIZED: Creative motors are a compact and configurable source of Rotational Force", - "create.ponder.creative_motor.text_2": "UNLOCALIZED: Scrolling on the back panel changes the RPM of the motors' rotational output", - - "create.ponder.crushing_wheels.header": "UNLOCALIZED: Processing Items with Crushing Wheels", - "create.ponder.crushing_wheels.text_1": "UNLOCALIZED: A pair of Crushing Wheels can grind items very effectively", - "create.ponder.crushing_wheels.text_2": "UNLOCALIZED: Their Rotational Input has to make them spin into each other", - "create.ponder.crushing_wheels.text_3": "UNLOCALIZED: Items thrown or inserted into the top will get processed", - "create.ponder.crushing_wheels.text_4": "UNLOCALIZED: Items can be inserted and picked up through automated means as well", - - "create.ponder.deployer.header": "UNLOCALIZED: Using the Deployer", - "create.ponder.deployer.text_1": "UNLOCALIZED: Given Rotational Force, a Deployer can imitate player interactions", - "create.ponder.deployer.text_10": "UNLOCALIZED: Right-click the front to give it an Item to use", - "create.ponder.deployer.text_11": "UNLOCALIZED: Items can also be inserted automatically", - "create.ponder.deployer.text_12": "UNLOCALIZED: Deployers carry a filter slot", - "create.ponder.deployer.text_13": "UNLOCALIZED: When a filter is set, it activates only while holding a matching item", - "create.ponder.deployer.text_14": "UNLOCALIZED: Only items matching the filter can now be inserted...", - "create.ponder.deployer.text_15": "UNLOCALIZED: ...and only non-matching items will be extracted", - "create.ponder.deployer.text_2": "UNLOCALIZED: It will always interact with the position 2 blocks in front of itself", - "create.ponder.deployer.text_3": "UNLOCALIZED: Blocks directly in front will not obstruct it", - "create.ponder.deployer.text_4": "UNLOCALIZED: Deployers can:", - "create.ponder.deployer.text_5": "UNLOCALIZED: Place Blocks,", - "create.ponder.deployer.text_6": "UNLOCALIZED: Use Items,", - "create.ponder.deployer.text_7": "UNLOCALIZED: Activate Blocks,", - "create.ponder.deployer.text_8": "UNLOCALIZED: Harvest blocks", - "create.ponder.deployer.text_9": "UNLOCALIZED: and Attack Mobs", - - "create.ponder.deployer_contraption.header": "UNLOCALIZED: Using Deployers on Contraptions", - "create.ponder.deployer_contraption.text_1": "UNLOCALIZED: Whenever Deployers are moved as part of an animated Contraption...", - "create.ponder.deployer_contraption.text_2": "UNLOCALIZED: They activate at each visited location, using items from inventories anywhere on the contraption", - "create.ponder.deployer_contraption.text_3": "UNLOCALIZED: The Filter slot can be used to specify which items to pull", - - "create.ponder.deployer_modes.header": "UNLOCALIZED: Modes of the Deployer", - "create.ponder.deployer_modes.text_1": "UNLOCALIZED: By default, a Deployer imitates a Right-click interaction", - "create.ponder.deployer_modes.text_2": "UNLOCALIZED: Using a Wrench, it can be set to imitate a Left-click instead", - - "create.ponder.deployer_redstone.header": "UNLOCALIZED: Controlling Deployers with Redstone", - "create.ponder.deployer_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Deployers will not activate", - "create.ponder.deployer_redstone.text_2": "UNLOCALIZED: Before stopping, the Deployer will finish any started cycles", - "create.ponder.deployer_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.depot.header": "UNLOCALIZED: Using Depots", - "create.ponder.depot.text_1": "UNLOCALIZED: Depots can serve as 'stationary' belt elements", - "create.ponder.depot.text_2": "UNLOCALIZED: Right-Click to manually place or remove Items from it", - "create.ponder.depot.text_3": "UNLOCALIZED: Just like Mechanical Belts, it can provide items to processing", - "create.ponder.depot.text_4": "UNLOCALIZED: ...as well as provide Items to Mechanical Arms", - - "create.ponder.empty_blaze_burner.header": "UNLOCALIZED: Using Empty Blaze Burners", - "create.ponder.empty_blaze_burner.text_1": "UNLOCALIZED: Right-click a Blaze with the empty burner to capture it", - "create.ponder.empty_blaze_burner.text_2": "UNLOCALIZED: Alternatively, Blazes can be collected from their Spawners directly", - "create.ponder.empty_blaze_burner.text_3": "UNLOCALIZED: You now have an ideal heat source for various machines", - "create.ponder.empty_blaze_burner.text_4": "UNLOCALIZED: For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel", - "create.ponder.empty_blaze_burner.text_5": "UNLOCALIZED: However, these are not suitable for industrial heating", - - "create.ponder.fan_direction.header": "UNLOCALIZED: Air flow of Encased Fans", - "create.ponder.fan_direction.text_1": "UNLOCALIZED: Encased Fans use Rotational Force to create an Air Current", - "create.ponder.fan_direction.text_2": "UNLOCALIZED: Strength and Direction of Flow depends on the Rotational Input", - - "create.ponder.fan_processing.header": "UNLOCALIZED: Processing Items using Encased Fans", - "create.ponder.fan_processing.text_1": "UNLOCALIZED: When passing through lava, the Air Flow becomes Heated", - "create.ponder.fan_processing.text_2": "UNLOCALIZED: Items caught in the area will be smelted", - "create.ponder.fan_processing.text_3": "UNLOCALIZED: Food items thrown here would be incinerated", - "create.ponder.fan_processing.text_4": "UNLOCALIZED: Instead, a setup for Smoking using Fire should be used for them", - "create.ponder.fan_processing.text_5": "UNLOCALIZED: Air Flows passing through water create a Washing Setup", - "create.ponder.fan_processing.text_6": "UNLOCALIZED: Some interesting new processing can be done with it", - "create.ponder.fan_processing.text_7": "UNLOCALIZED: The Speed of the Fan does NOT affect the processing speed, only its range", - "create.ponder.fan_processing.text_8": "UNLOCALIZED: Fan Processing can also be applied to Items on Depots and Belts", - - "create.ponder.fan_source.header": "UNLOCALIZED: Generating Rotational Force using Encased Fans", - "create.ponder.fan_source.text_1": "UNLOCALIZED: Fans facing down into a source of heat can provide Rotational Force", - "create.ponder.fan_source.text_2": "UNLOCALIZED: When given a Redstone Signal, the Fans will start providing power", - - "create.ponder.flywheel.header": "UNLOCALIZED: Generating Rotational Force using the Flywheel", - "create.ponder.flywheel.text_1": "UNLOCALIZED: Flywheels are required for generating rotational force with the Furnace Engine", - "create.ponder.flywheel.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.flywheel.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.funnel_compat.header": "UNLOCALIZED: Funnel compatibility", - "create.ponder.funnel_compat.text_1": "UNLOCALIZED: Funnels should also interact nicely with a handful of other components.", - "create.ponder.funnel_compat.text_2": "UNLOCALIZED: Vertical Saws", - "create.ponder.funnel_compat.text_3": "UNLOCALIZED: Depots", - "create.ponder.funnel_compat.text_4": "UNLOCALIZED: Item Drains", - - "create.ponder.funnel_direction.header": "UNLOCALIZED: Direction of Transfer", - "create.ponder.funnel_direction.text_1": "UNLOCALIZED: Placed normally, it pulls items from the inventory.", - "create.ponder.funnel_direction.text_2": "UNLOCALIZED: Placed while sneaking, it puts items into the inventory.", - "create.ponder.funnel_direction.text_3": "UNLOCALIZED: Using a wrench, the funnel can be flipped after placement.", - "create.ponder.funnel_direction.text_4": "UNLOCALIZED: Same rules will apply for most orientations.", - "create.ponder.funnel_direction.text_5": "UNLOCALIZED: Funnels on belts will extract/insert depending on its movement direction.", - - "create.ponder.funnel_intro.header": "UNLOCALIZED: Using funnels", - "create.ponder.funnel_intro.text_1": "UNLOCALIZED: Funnels are ideal for transferring items from and to inventories.", - - "create.ponder.funnel_redstone.header": "UNLOCALIZED: Redstone control", - "create.ponder.funnel_redstone.text_1": "UNLOCALIZED: Redstone power will prevent any funnel from acting", - - "create.ponder.funnel_transfer.header": "UNLOCALIZED: Direct transfer", - "create.ponder.funnel_transfer.text_1": "UNLOCALIZED: Funnels cannot ever transfer between closed inventories directly.", - "create.ponder.funnel_transfer.text_2": "UNLOCALIZED: Chutes or Smart chutes might be more suitable for such purposes.", - "create.ponder.funnel_transfer.text_3": "UNLOCALIZED: Same applies for horizontal movement. A mechanical belt should help here.", - - "create.ponder.furnace_engine.header": "UNLOCALIZED: Generating Rotational Force using the Furnace Engine", - "create.ponder.furnace_engine.text_1": "UNLOCALIZED: Furnace Engines generate Rotational Force while their attached Furnace is running", - "create.ponder.furnace_engine.text_2": "UNLOCALIZED: The provided Rotational Force has a very large stress capacity", - "create.ponder.furnace_engine.text_3": "UNLOCALIZED: Using a Blast Furnace will double the efficiency of the Engine", - - "create.ponder.gantry_carriage.header": "UNLOCALIZED: Using Gantry Carriages", - "create.ponder.gantry_carriage.text_1": "UNLOCALIZED: Gantry Carriages can mount to and slide along a Gantry Shaft.", - "create.ponder.gantry_carriage.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gantry_cascaded.header": "UNLOCALIZED: Cascaded Gantries", - "create.ponder.gantry_cascaded.text_1": "UNLOCALIZED: Gantry shafts attach to a carriage without the need of super glue", - "create.ponder.gantry_cascaded.text_2": "UNLOCALIZED: Same applies for carriages on moved Gantry Shafts", - "create.ponder.gantry_cascaded.text_3": "UNLOCALIZED: Thus, a gantry system can be cascaded to cover multiple axes of movement", - - "create.ponder.gantry_direction.header": "UNLOCALIZED: Gantry Movement Direction", - "create.ponder.gantry_direction.text_1": "UNLOCALIZED: Gantry Shafts can have opposite orientations", - "create.ponder.gantry_direction.text_2": "UNLOCALIZED: The movement direction of carriages depend on their shafts' orientation", - "create.ponder.gantry_direction.text_3": "UNLOCALIZED: ...as well as the rotation direction of the shaft", - "create.ponder.gantry_direction.text_4": "UNLOCALIZED: Same rules apply for the propagated rotation", - - "create.ponder.gantry_redstone.header": "UNLOCALIZED: Gantry Power Propagation", - "create.ponder.gantry_redstone.text_1": "UNLOCALIZED: Redstone-powered gantry shafts stop moving their carriages", - "create.ponder.gantry_redstone.text_2": "UNLOCALIZED: Instead, its rotational force is relayed to the carriages' output shaft", - - "create.ponder.gantry_shaft.header": "UNLOCALIZED: Using Gantry Shafts", - "create.ponder.gantry_shaft.text_1": "UNLOCALIZED: Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them.", - "create.ponder.gantry_shaft.text_2": "UNLOCALIZED: Gantry setups can move attached Blocks.", - - "create.ponder.gearbox.header": "UNLOCALIZED: Relaying rotational force using Gearboxes", - "create.ponder.gearbox.text_1": "UNLOCALIZED: Jumping between axes of rotation can get bulky quickly", - "create.ponder.gearbox.text_2": "UNLOCALIZED: A gearbox is the more compact equivalent of this setup", - "create.ponder.gearbox.text_3": "UNLOCALIZED: Shafts around corners rotate in mirrored directions", - "create.ponder.gearbox.text_4": "UNLOCALIZED: Straight connections will be reversed", - - "create.ponder.gearshift.header": "UNLOCALIZED: Controlling rotational force using a Gearshift", - "create.ponder.gearshift.text_1": "UNLOCALIZED: Gearshifts will relay rotation in a straight line", - "create.ponder.gearshift.text_2": "UNLOCALIZED: When powered by Redstone, it reverses the transmission", - - "create.ponder.hand_crank.header": "UNLOCALIZED: Generating Rotational Force using Hand Cranks", - "create.ponder.hand_crank.text_1": "UNLOCALIZED: Hand Cranks can be used by players to apply rotational force manually", - "create.ponder.hand_crank.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.hand_crank.text_3": "UNLOCALIZED: Its conveyed speed is relatively high", - "create.ponder.hand_crank.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - - "create.ponder.large_cogwheel.header": "UNLOCALIZED: Relaying rotational force using Large Cogwheels", - "create.ponder.large_cogwheel.text_1": "UNLOCALIZED: Large cogwheels can connect to each other at right angles", - "create.ponder.large_cogwheel.text_2": "UNLOCALIZED: It will help relaying conveyed speed to other axes of rotation", - - "create.ponder.linear_chassis_attachment.header": "UNLOCALIZED: Attaching blocks using Linear Chassis", - "create.ponder.linear_chassis_attachment.text_1": "UNLOCALIZED: The open faces of a Linear Chassis can be made Sticky", - "create.ponder.linear_chassis_attachment.text_2": "UNLOCALIZED: Click again to make the opposite side sticky", - "create.ponder.linear_chassis_attachment.text_3": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.linear_chassis_attachment.text_4": "UNLOCALIZED: Stickied faces of the Linear Chassis will attach a line of blocks in front of it", - "create.ponder.linear_chassis_attachment.text_5": "UNLOCALIZED: Using a Wrench, a precise Range can be specified for this chassis", - "create.ponder.linear_chassis_attachment.text_6": "UNLOCALIZED: Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks", - "create.ponder.linear_chassis_attachment.text_7": "UNLOCALIZED: Attaching blocks to any other side requires the use of Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "UNLOCALIZED: Using these mechanics, structures of any shape can move as a Contraption", - - "create.ponder.linear_chassis_group.header": "UNLOCALIZED: Moving Linear Chassis in groups", - "create.ponder.linear_chassis_group.text_1": "UNLOCALIZED: Linear Chassis connect to identical Chassis blocks next to them", - "create.ponder.linear_chassis_group.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.linear_chassis_group.text_3": "UNLOCALIZED: Chassis of a different type or facing another direction will not attach", - - "create.ponder.mechanical_arm.header": "UNLOCALIZED: Setting up Mechanical Arms", - "create.ponder.mechanical_arm.text_1": "UNLOCALIZED: Mechanical Arms have to be assigned their in- and outputs before they are placed", - "create.ponder.mechanical_arm.text_2": "UNLOCALIZED: Right-Click inventories while holding the Arm to assign them as Targets", - "create.ponder.mechanical_arm.text_3": "UNLOCALIZED: Right-Click again to toggle between Input (Blue) and Output (Orange)", - "create.ponder.mechanical_arm.text_4": "UNLOCALIZED: Left-Click components to remove their Selection", - "create.ponder.mechanical_arm.text_5": "UNLOCALIZED: Once placed, the Mechanical Arm will target the blocks selected previously", - "create.ponder.mechanical_arm.text_6": "UNLOCALIZED: They can have any amount of in- and outputs within their range", - "create.ponder.mechanical_arm.text_7": "UNLOCALIZED: However, not every type of Inventory can be interacted with directly", - "create.ponder.mechanical_arm.text_8": "UNLOCALIZED: Funnels and Depots can help to Bridge that gap", - - "create.ponder.mechanical_arm_filtering.header": "UNLOCALIZED: Filtering Outputs of the Mechanical Arm", - "create.ponder.mechanical_arm_filtering.text_1": "UNLOCALIZED: Inputs", - "create.ponder.mechanical_arm_filtering.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_filtering.text_3": "UNLOCALIZED: Sometimes it is desirable to restrict targets of the Arm by matching a filter", - "create.ponder.mechanical_arm_filtering.text_4": "UNLOCALIZED: Mechanical Arms by themselves do not provide any options for filtering", - "create.ponder.mechanical_arm_filtering.text_5": "UNLOCALIZED: Brass Funnels as Targets do however communicate their own filter to the Arm", - "create.ponder.mechanical_arm_filtering.text_6": "UNLOCALIZED: The Arm is smart enough not to pick up items it couldn't distribute", - - "create.ponder.mechanical_arm_modes.header": "UNLOCALIZED: Distribution modes of the Mechanical Arm", - "create.ponder.mechanical_arm_modes.text_1": "UNLOCALIZED: Input", - "create.ponder.mechanical_arm_modes.text_2": "UNLOCALIZED: Outputs", - "create.ponder.mechanical_arm_modes.text_3": "UNLOCALIZED: Whenever an Arm has to choose between multiple valid outputs...", - "create.ponder.mechanical_arm_modes.text_4": "UNLOCALIZED: ...it will act according to its setting", - "create.ponder.mechanical_arm_modes.text_5": "UNLOCALIZED: Scrolling with a Wrench will allow you to configure it", - "create.ponder.mechanical_arm_modes.text_6": "UNLOCALIZED: Round Robin mode simply cycles through all outputs that are available", - "create.ponder.mechanical_arm_modes.text_7": "UNLOCALIZED: If an output is unable to take more items, it will be skipped", - "create.ponder.mechanical_arm_modes.text_8": "UNLOCALIZED: Forced Round Robin mode will never skip outputs, and instead wait until they are free", - "create.ponder.mechanical_arm_modes.text_9": "UNLOCALIZED: Prefer First prioritizes the outputs selected earliest when configuring this Arm", - - "create.ponder.mechanical_arm_redstone.header": "UNLOCALIZED: Controlling Mechanical Arms with Redstone", - "create.ponder.mechanical_arm_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Mechanical Arms will not activate", - "create.ponder.mechanical_arm_redstone.text_2": "UNLOCALIZED: Before stopping, it will finish any started cycles", - "create.ponder.mechanical_arm_redstone.text_3": "UNLOCALIZED: Thus, a negative pulse can be used to trigger exactly one activation cycle", - - "create.ponder.mechanical_bearing.header": "UNLOCALIZED: Movings Structures using the Mechanical Bearing", - "create.ponder.mechanical_bearing.text_1": "UNLOCALIZED: Mechanical Bearings attach to the block in front of them", - "create.ponder.mechanical_bearing.text_2": "UNLOCALIZED: Upon receiving Rotational Force, it will assemble it into a Rotating Contraption", - - "create.ponder.mechanical_crafter.header": "UNLOCALIZED: Setting up Mechanical Crafters", - "create.ponder.mechanical_crafter.text_1": "UNLOCALIZED: An array of Mechanical Crafters can be used to automate any Crafting Recipe", - "create.ponder.mechanical_crafter.text_2": "UNLOCALIZED: Using a Wrench, the Crafters' paths can be arranged", - "create.ponder.mechanical_crafter.text_3": "UNLOCALIZED: For a valid setup, all paths have to converge into one exit at any side", - "create.ponder.mechanical_crafter.text_4": "UNLOCALIZED: The outputs will be placed into the inventory at the exit", - "create.ponder.mechanical_crafter.text_5": "UNLOCALIZED: Mechanical Crafters require Rotational Force to operate", - "create.ponder.mechanical_crafter.text_6": "UNLOCALIZED: Right-Click the front to insert Items manually", - "create.ponder.mechanical_crafter.text_7": "UNLOCALIZED: Once every slot of a path contains an Item, the crafting process will begin", - "create.ponder.mechanical_crafter.text_8": "UNLOCALIZED: For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse", - - "create.ponder.mechanical_crafter_connect.header": "UNLOCALIZED: Connecting Inventories of Crafters", - "create.ponder.mechanical_crafter_connect.text_1": "UNLOCALIZED: Items can be inserted to Crafters automatically", - "create.ponder.mechanical_crafter_connect.text_2": "UNLOCALIZED: Using the Wrench at their backs, Mechanical Crafter inputs can be combined", - "create.ponder.mechanical_crafter_connect.text_3": "UNLOCALIZED: All connected Crafters can now be accessed by the same input location", - - "create.ponder.mechanical_crafter_covers.header": "UNLOCALIZED: Covering slots of Mechanical Crafters", - "create.ponder.mechanical_crafter_covers.text_1": "UNLOCALIZED: Some recipes will require additional Crafters to bridge gaps in the path", - "create.ponder.mechanical_crafter_covers.text_2": "UNLOCALIZED: Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement", - "create.ponder.mechanical_crafter_covers.text_3": "UNLOCALIZED: Shared Inputs created with the Wrench at the back can also reach across covered Crafters", - - "create.ponder.mechanical_drill.header": "UNLOCALIZED: Breaking Blocks with the Mechanical Drill", - "create.ponder.mechanical_drill.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Drill will break blocks directly in front of it", - "create.ponder.mechanical_drill.text_2": "UNLOCALIZED: Its mining speed depends on the Rotational Input", - - "create.ponder.mechanical_drill_contraption.header": "UNLOCALIZED: Using Mechanical Drills on Contraptions", - "create.ponder.mechanical_drill_contraption.text_1": "UNLOCALIZED: Whenever Drills are moved as part of an animated Contraption...", - "create.ponder.mechanical_drill_contraption.text_2": "UNLOCALIZED: ...they will break blocks the contraption runs them into", - - "create.ponder.mechanical_harvester.header": "UNLOCALIZED: Using Mechanical Harvesters on Contraptions", - "create.ponder.mechanical_harvester.text_1": "UNLOCALIZED: Whenever Harvesters are moved as part of an animated Contraption...", - "create.ponder.mechanical_harvester.text_2": "UNLOCALIZED: They will harvest and reset any mature crops on their way", - - "create.ponder.mechanical_mixer.header": "UNLOCALIZED: Processing Items with the Mechanical Mixer", - "create.ponder.mechanical_mixer.text_1": "UNLOCALIZED: With a Mixer and Basin, some Crafting Recipes can be automated", - "create.ponder.mechanical_mixer.text_2": "UNLOCALIZED: Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_mixer.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_mixer.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_piston.header": "UNLOCALIZED: Moving Structures using Mechanical Pistons", - "create.ponder.mechanical_piston.text_1": "UNLOCALIZED: Mechanical Pistons can move blocks in front of them", - "create.ponder.mechanical_piston.text_2": "UNLOCALIZED: Speed and direction of movement depend on the Rotational Input", - "create.ponder.mechanical_piston.text_3": "UNLOCALIZED: Sticky Mechanical Pistons can pull the attached blocks back", - - "create.ponder.mechanical_piston_modes.header": "UNLOCALIZED: Movement Modes of the Mechanical Piston", - "create.ponder.mechanical_piston_modes.text_1": "UNLOCALIZED: Whenever Pistons stop moving, the moved structure reverts to blocks", - "create.ponder.mechanical_piston_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.mechanical_plough.header": "UNLOCALIZED: Using Mechanical Ploughs on Contraptions", - "create.ponder.mechanical_plough.text_1": "UNLOCALIZED: Whenever Ploughs are moved as part of an animated Contraption...", - "create.ponder.mechanical_plough.text_2": "UNLOCALIZED: ...they will break blocks without a solid collision hitbox", - "create.ponder.mechanical_plough.text_3": "UNLOCALIZED: Additionally, ploughs can create farmland", - "create.ponder.mechanical_plough.text_4": "UNLOCALIZED: ...they can also launch entities without hurting them", - - "create.ponder.mechanical_press.header": "UNLOCALIZED: Processing Items with the Mechanical Press", - "create.ponder.mechanical_press.text_1": "UNLOCALIZED: The Mechanical Press can process items provided beneath it", - "create.ponder.mechanical_press.text_2": "UNLOCALIZED: The Input items can be dropped or placed on a Depot under the Press", - "create.ponder.mechanical_press.text_3": "UNLOCALIZED: When items are provided on a belt...", - "create.ponder.mechanical_press.text_4": "UNLOCALIZED: The Press will hold and process them automatically", - - "create.ponder.mechanical_press_compacting.header": "UNLOCALIZED: Compacting items with the Mechanical Press", - "create.ponder.mechanical_press_compacting.text_1": "UNLOCALIZED: Pressing items held in a Basin will cause them to be Compacted", - "create.ponder.mechanical_press_compacting.text_2": "UNLOCALIZED: Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones", - "create.ponder.mechanical_press_compacting.text_3": "UNLOCALIZED: Some of those recipes may require the heat of a Blaze Burner", - "create.ponder.mechanical_press_compacting.text_4": "UNLOCALIZED: The filter slot can be used in case two recipes are conflicting.", - - "create.ponder.mechanical_saw_breaker.header": "UNLOCALIZED: Cutting Trees with the Mechanical Saw", - "create.ponder.mechanical_saw_breaker.text_1": "UNLOCALIZED: When given Rotational Force, a Mechanical Saw will cut trees directly in front of it", - "create.ponder.mechanical_saw_breaker.text_2": "UNLOCALIZED: In order to cut the tree fully, the Saw has to break the last block connecting it to the ground", - - "create.ponder.mechanical_saw_contraption.header": "UNLOCALIZED: Using Mechanical Saws on Contraptions", - "create.ponder.mechanical_saw_contraption.text_1": "UNLOCALIZED: Whenever Saws are moved as part of an animated Contraption...", - "create.ponder.mechanical_saw_contraption.text_2": "UNLOCALIZED: ...they will cut any trees the contraption runs them into", - - "create.ponder.mechanical_saw_processing.header": "UNLOCALIZED: Processing Items on the Mechanical Saw", - "create.ponder.mechanical_saw_processing.text_1": "UNLOCALIZED: Upward facing Mechanical Saws can process a variety of items", - "create.ponder.mechanical_saw_processing.text_2": "UNLOCALIZED: The processed item always moves against the rotational input to the saw", - "create.ponder.mechanical_saw_processing.text_3": "UNLOCALIZED: Saws can work in-line with Mechanical Belts", - "create.ponder.mechanical_saw_processing.text_4": "UNLOCALIZED: When an ingredient has multiple possible outcomes, the filter slot can specify it", - "create.ponder.mechanical_saw_processing.text_5": "UNLOCALIZED: Without filter, the Saw would cycle through all outcomes instead", - - "create.ponder.millstone.header": "UNLOCALIZED: Processing Items in the Millstone", - "create.ponder.millstone.text_1": "UNLOCALIZED: Millstones process items by grinding them", - "create.ponder.millstone.text_2": "UNLOCALIZED: They can be powered from the side using cogwheels", - "create.ponder.millstone.text_3": "UNLOCALIZED: Throw or Insert items at the top", - "create.ponder.millstone.text_4": "UNLOCALIZED: After some time, the result can be obtained via Right-click", - "create.ponder.millstone.text_5": "UNLOCALIZED: The outputs can also be extracted by automation", - - "create.ponder.nixie_tube.header": "UNLOCALIZED: Using Nixie Tubes", - "create.ponder.nixie_tube.text_1": "UNLOCALIZED: When powered by Redstone, Nixie Tubes will display the redstone signals' strength", - "create.ponder.nixie_tube.text_2": "UNLOCALIZED: Using name tags edited with an anvil, custom text can be displayed", - - "create.ponder.piston_pole.header": "UNLOCALIZED: Piston Extension Poles", - "create.ponder.piston_pole.text_1": "UNLOCALIZED: Without attached Poles, a Mechanical Piston cannot move", - "create.ponder.piston_pole.text_2": "UNLOCALIZED: The Length of pole added at its back determines the Extension Range", - - "create.ponder.portable_storage_interface.header": "UNLOCALIZED: Contraption Storage Exchange", - "create.ponder.portable_storage_interface.text_1": "UNLOCALIZED: Inventories on moving contraptions cannot be accessed by players.", - "create.ponder.portable_storage_interface.text_2": "UNLOCALIZED: This component can interact with storage without the need to stop the contraption.", - "create.ponder.portable_storage_interface.text_3": "UNLOCALIZED: Place a second one with a gap of 1 or 2 blocks inbetween", - "create.ponder.portable_storage_interface.text_4": "UNLOCALIZED: Whenever they pass by each other, they will engage in a connection", - "create.ponder.portable_storage_interface.text_5": "UNLOCALIZED: While engaged, the stationary interface will represent ALL inventories on the contraption", - "create.ponder.portable_storage_interface.text_6": "UNLOCALIZED: Items can now be inserted...", - "create.ponder.portable_storage_interface.text_7": "UNLOCALIZED: ...or extracted from the contraption", - "create.ponder.portable_storage_interface.text_8": "UNLOCALIZED: After no items have been exchanged for a while, the contraption will continue on its way", - - "create.ponder.portable_storage_interface_redstone.header": "UNLOCALIZED: Redstone Control", - "create.ponder.portable_storage_interface_redstone.text_1": "UNLOCALIZED: Redstone power will prevent the stationary interface from engaging", - - "create.ponder.powered_latch.header": "UNLOCALIZED: Controlling signals using the Powered Latch", - "create.ponder.powered_latch.text_1": "UNLOCALIZED: Powered Latches are redstone controllable Levers", - "create.ponder.powered_latch.text_2": "UNLOCALIZED: Signals at the back switch it on", - "create.ponder.powered_latch.text_3": "UNLOCALIZED: Signals from the side switch it back off", - "create.ponder.powered_latch.text_4": "UNLOCALIZED: Powered latches can also be toggled manually", - - "create.ponder.powered_toggle_latch.header": "UNLOCALIZED: Controlling signals using the Powered Toggle Latch", - "create.ponder.powered_toggle_latch.text_1": "UNLOCALIZED: Powered Toggle Latches are redstone controllable Levers", - "create.ponder.powered_toggle_latch.text_2": "UNLOCALIZED: Signals at the back will toggle its state", - "create.ponder.powered_toggle_latch.text_3": "UNLOCALIZED: ...on and back off", - "create.ponder.powered_toggle_latch.text_4": "UNLOCALIZED: Powered toggle latches can also be toggled manually", - - "create.ponder.pulse_repeater.header": "UNLOCALIZED: Controlling signals using Pulse Repeaters", - "create.ponder.pulse_repeater.text_1": "UNLOCALIZED: Pulse Repeaters will shorten any redstone signal to a single pulse", - - "create.ponder.radial_chassis.header": "UNLOCALIZED: Attaching blocks using Radial Chassis", - "create.ponder.radial_chassis.text_1": "UNLOCALIZED: Radial Chassis connect to identical Chassis blocks in a row", - "create.ponder.radial_chassis.text_2": "UNLOCALIZED: When one is moved by a Contraption, the others are dragged with it", - "create.ponder.radial_chassis.text_3": "UNLOCALIZED: The side faces of a Radial Chassis can be made Sticky", - "create.ponder.radial_chassis.text_4": "UNLOCALIZED: Click again to make all other sides sticky", - "create.ponder.radial_chassis.text_5": "UNLOCALIZED: Sneak and Right-Click with an empty hand to remove the slime", - "create.ponder.radial_chassis.text_6": "UNLOCALIZED: Whenever a Block is next to a sticky face...", - "create.ponder.radial_chassis.text_7": "UNLOCALIZED: ...it will attach all reachable blocks within a radius on that layer", - "create.ponder.radial_chassis.text_8": "UNLOCALIZED: Using a Wrench, a precise Radius can be specified for this chassis", - "create.ponder.radial_chassis.text_9": "UNLOCALIZED: Blocks not reachable by any sticky face will not attach", - - "create.ponder.redstone_contact.header": "UNLOCALIZED: Redstone Contacts", - "create.ponder.redstone_contact.text_1": "UNLOCALIZED: Redstone Contacts facing each other will emit a redstone signal", - "create.ponder.redstone_contact.text_2": "UNLOCALIZED: This still applies when one of them is part of a moving Contraption", - - "create.ponder.redstone_link.header": "UNLOCALIZED: Using Redstone Links", - "create.ponder.redstone_link.text_1": "UNLOCALIZED: Redstone Links can transmit redstone signals wirelessly", - "create.ponder.redstone_link.text_2": "UNLOCALIZED: Right-click while Sneaking to toggle receive mode", - "create.ponder.redstone_link.text_3": "UNLOCALIZED: A simple Right-click with a Wrench can do the same", - "create.ponder.redstone_link.text_4": "UNLOCALIZED: Receivers emit the redstone power of transmitters within 128 blocks", - "create.ponder.redstone_link.text_5": "UNLOCALIZED: Placing items in the two slots can specify a Frequency", - "create.ponder.redstone_link.text_6": "UNLOCALIZED: Only the links with matching Frequencies will communicate", - - "create.ponder.rope_pulley.header": "UNLOCALIZED: Moving Structures using Rope Pulleys", - "create.ponder.rope_pulley.text_1": "UNLOCALIZED: Rope Pulleys can move blocks vertically when given Rotational Force", - "create.ponder.rope_pulley.text_2": "UNLOCALIZED: Direction and Speed of movement depend on the Rotational Input", - - "create.ponder.rope_pulley_attachment.header": "UNLOCALIZED: Moving Pulleys as part of a Contraption", - "create.ponder.rope_pulley_attachment.text_1": "UNLOCALIZED: Whenever Pulleys are themselves being moved by a Contraption...", - "create.ponder.rope_pulley_attachment.text_2": "UNLOCALIZED: ...its attached structure will be dragged with it", - "create.ponder.rope_pulley_attachment.text_3": "UNLOCALIZED: Mind that pulleys are only movable while stopped", - - "create.ponder.rope_pulley_modes.header": "UNLOCALIZED: Movement Modes of the Rope Pulley", - "create.ponder.rope_pulley_modes.text_1": "UNLOCALIZED: Whenever Pulleys stop moving, the moved structure reverts to blocks", - "create.ponder.rope_pulley_modes.text_2": "UNLOCALIZED: It can be configured never to revert to solid blocks, or only at the location it started at", - - "create.ponder.rotation_speed_controller.header": "UNLOCALIZED: Using the Rotational Speed Controller", - "create.ponder.rotation_speed_controller.text_1": "UNLOCALIZED: Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them", - "create.ponder.rotation_speed_controller.text_2": "UNLOCALIZED: Using the scroll input on its side, the conveyed speed can be configured", - - "create.ponder.sail.header": "UNLOCALIZED: Assembling Windmills using Sails", - "create.ponder.sail.text_1": "UNLOCALIZED: Sails are handy blocks to create Windmills with", - "create.ponder.sail.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - "create.ponder.sail.text_3": "UNLOCALIZED: Right-Click with Dye to paint them", - "create.ponder.sail.text_4": "UNLOCALIZED: Right-Click with Shears to turn them back into frames", - - "create.ponder.sail_frame.header": "UNLOCALIZED: Assembling Windmills using Sail Frames", - "create.ponder.sail_frame.text_1": "UNLOCALIZED: Sail Frames are handy blocks to create Windmills with", - "create.ponder.sail_frame.text_2": "UNLOCALIZED: They will attach to blocks and each other without the need of Super Glue or Chassis Blocks", - - "create.ponder.sequenced_gearshift.header": "UNLOCALIZED: Controlling Rotational Speed using Sequenced Gearshifts", - "create.ponder.sequenced_gearshift.text_1": "UNLOCALIZED: Seq. Gearshifts relay rotation by following a timed list of instructions", - "create.ponder.sequenced_gearshift.text_2": "UNLOCALIZED: Right-click it to open the Configuration UI", - "create.ponder.sequenced_gearshift.text_3": "UNLOCALIZED: Upon receiving a Redstone Signal, it will start running its configured sequence", - "create.ponder.sequenced_gearshift.text_4": "UNLOCALIZED: Once finished, it waits for the next Redstone Signal and starts over", - "create.ponder.sequenced_gearshift.text_5": "UNLOCALIZED: A redstone comparator can be used to read the current progress", - - "create.ponder.shaft.header": "UNLOCALIZED: Relaying rotational force using Shafts", - "create.ponder.shaft.text_1": "UNLOCALIZED: Shafts will relay rotation in a straight line.", - - "create.ponder.shaft_casing.header": "UNLOCALIZED: Encasing Shafts", - "create.ponder.shaft_casing.text_1": "UNLOCALIZED: Brass or Andesite Casing can be used to decorate Shafts", - - "create.ponder.smart_chute.header": "UNLOCALIZED: Filtering Items using Smart Chutes", - "create.ponder.smart_chute.text_1": "UNLOCALIZED: Smart Chutes are vertical chutes with additional control", - "create.ponder.smart_chute.text_2": "UNLOCALIZED: Items in the filter slot specify what exactly they can extract and transfer", - "create.ponder.smart_chute.text_3": "UNLOCALIZED: Use the Mouse Wheel to specify the extracted stack size", - "create.ponder.smart_chute.text_4": "UNLOCALIZED: Redstone power will prevent Smart Chutes from acting.", - - "create.ponder.speedometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Speedometer", - "create.ponder.speedometer.text_1": "UNLOCALIZED: The Speedometer displays the current Speed of the attached components", - "create.ponder.speedometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.speedometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Speedometer's measurements", - - "create.ponder.stabilized_bearings.header": "UNLOCALIZED: Stabilized Contraptions", - "create.ponder.stabilized_bearings.text_1": "UNLOCALIZED: Whenever Mechanical Bearings are themselves part of a moving Structure..", - "create.ponder.stabilized_bearings.text_2": "UNLOCALIZED: ..they will attempt to keep themselves upright", - "create.ponder.stabilized_bearings.text_3": "UNLOCALIZED: Once again, the bearing will attach to the block in front of it", - "create.ponder.stabilized_bearings.text_4": "UNLOCALIZED: As a result, the entire sub-Contraption will stay upright", - - "create.ponder.sticker.header": "UNLOCALIZED: Attaching blocks using the Sticker", - "create.ponder.sticker.text_1": "UNLOCALIZED: Stickers are ideal for Redstone-controlled block attachment", - "create.ponder.sticker.text_2": "UNLOCALIZED: Upon receiving a signal, it will toggle its state", - "create.ponder.sticker.text_3": "UNLOCALIZED: If it is now moved in a contraption, the block will move with it", - "create.ponder.sticker.text_4": "UNLOCALIZED: Toggled once again, the block is no longer attached", - - "create.ponder.stressometer.header": "UNLOCALIZED: Monitoring Kinetic information using the Stressometer", - "create.ponder.stressometer.text_1": "UNLOCALIZED: The Stressometer displays the current Stress Capacity of the attached kinetic network", - "create.ponder.stressometer.text_2": "UNLOCALIZED: When wearing Engineers' Goggles, the player can get more detailed information from the Gauge", - "create.ponder.stressometer.text_3": "UNLOCALIZED: Comparators can emit analog Restone Signals relative to the Stressometer's measurements", - - "create.ponder.super_glue.header": "UNLOCALIZED: Attaching blocks using Super Glue", - "create.ponder.super_glue.text_1": "UNLOCALIZED: Super Glue can be used between any two blocks", - "create.ponder.super_glue.text_2": "UNLOCALIZED: The attached blocks will move together when assembled into a Contraption", - "create.ponder.super_glue.text_3": "UNLOCALIZED: Whenever Super Glue is held in the off-hand...", - "create.ponder.super_glue.text_4": "UNLOCALIZED: ...added blocks will be glued to the face they were placed on automatically", - "create.ponder.super_glue.text_5": "UNLOCALIZED: Super Glue can be removed with Left-Click", - - "create.ponder.valve_handle.header": "UNLOCALIZED: Generating Rotational Force using Valve Handles", - "create.ponder.valve_handle.text_1": "UNLOCALIZED: Valve Handles can be used by players to apply rotational force manually", - "create.ponder.valve_handle.text_2": "UNLOCALIZED: Hold Right-Click to rotate it Counter-Clockwise", - "create.ponder.valve_handle.text_3": "UNLOCALIZED: Its conveyed speed is slow and precise", - "create.ponder.valve_handle.text_4": "UNLOCALIZED: Sneak and Hold Right-Click to rotate it Clockwise", - "create.ponder.valve_handle.text_5": "UNLOCALIZED: Valve handles can be dyed for aesthetic purposes", - - "create.ponder.water_wheel.header": "UNLOCALIZED: Generating Rotational Force using Water Wheels", - "create.ponder.water_wheel.text_1": "UNLOCALIZED: Water Wheels draw force from adjacent Water Currents", - "create.ponder.water_wheel.text_2": "UNLOCALIZED: The more faces are powered, the faster the Water Wheel will rotate", - "create.ponder.water_wheel.text_3": "UNLOCALIZED: The Wheels' blades should be oriented against the flow", - "create.ponder.water_wheel.text_4": "UNLOCALIZED: Facing the opposite way, they will not be as effective", - - "create.ponder.weighted_ejector.header": "UNLOCALIZED: Using Weighted Ejectors", - "create.ponder.weighted_ejector.text_1": "UNLOCALIZED: Sneak and Right-Click holding an Ejector to select its target location", - "create.ponder.weighted_ejector.text_10": "UNLOCALIZED: It is now limited to this stack size, and only activates when its held stack reaches this amount", - "create.ponder.weighted_ejector.text_11": "UNLOCALIZED: Other Entities will always trigger an Ejector when stepping on it", - "create.ponder.weighted_ejector.text_2": "UNLOCALIZED: The placed ejector will now launch objects to the marked location", - "create.ponder.weighted_ejector.text_3": "UNLOCALIZED: A valid target can be at any height or distance within range", - "create.ponder.weighted_ejector.text_4": "UNLOCALIZED: They cannot however be off to a side", - "create.ponder.weighted_ejector.text_5": "UNLOCALIZED: If no valid Target was selected, it will simply target the block directly in front", - "create.ponder.weighted_ejector.text_6": "UNLOCALIZED: Supply Rotational Force in order to charge it up", - "create.ponder.weighted_ejector.text_7": "UNLOCALIZED: Items placed on the ejector cause it to trigger", - "create.ponder.weighted_ejector.text_8": "UNLOCALIZED: If Inventories are targeted, the ejector will wait until there is space", - "create.ponder.weighted_ejector.text_9": "UNLOCALIZED: Using the Wrench, a required Stack Size can be configured", - - "create.ponder.weighted_ejector_redstone.header": "UNLOCALIZED: Controlling Weighted Ejectors with Redstone", - "create.ponder.weighted_ejector_redstone.text_1": "UNLOCALIZED: When powered by Redstone, Ejectors will not activate", - "create.ponder.weighted_ejector_redstone.text_2": "UNLOCALIZED: Furthermore, Observers can detect when Ejectors activate", - - "create.ponder.weighted_ejector_tunnel.header": "UNLOCALIZED: Splitting item stacks using Weighted Ejectors", - "create.ponder.weighted_ejector_tunnel.text_1": "UNLOCALIZED: Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts", - "create.ponder.weighted_ejector_tunnel.text_2": "UNLOCALIZED: First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output", - "create.ponder.weighted_ejector_tunnel.text_3": "UNLOCALIZED: The Stack Size set on the Ejector now determines the amount to be split off", - "create.ponder.weighted_ejector_tunnel.text_4": "UNLOCALIZED: While a new stack of the configured size exits the side output...", - "create.ponder.weighted_ejector_tunnel.text_5": "UNLOCALIZED: ...the remainder will continue on its path", - - "create.ponder.windmill_source.header": "UNLOCALIZED: Generating Rotational Force using Windmill Bearings", - "create.ponder.windmill_source.text_1": "UNLOCALIZED: Windmill Bearings attach to the block in front of them", - "create.ponder.windmill_source.text_2": "UNLOCALIZED: If enough Sail-like blocks are attached to the block, it can act as a Windmill", - "create.ponder.windmill_source.text_3": "UNLOCALIZED: Activated with Right-Click, the Windmill Bearing will start providing Rotational Force", - "create.ponder.windmill_source.text_4": "UNLOCALIZED: The Amount of Sail Blocks determine its Rotation Speed", - "create.ponder.windmill_source.text_5": "UNLOCALIZED: Use a Wrench to configure its rotation direction", - "create.ponder.windmill_source.text_6": "UNLOCALIZED: Right-click the Bearing anytime to stop and edit the Structure again", - - "create.ponder.windmill_structure.header": "UNLOCALIZED: Windmill Contraptions", - "create.ponder.windmill_structure.text_1": "UNLOCALIZED: Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json deleted file mode 100644 index 62b0f2129..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ /dev/null @@ -1,2127 +0,0 @@ -{ - "_": "Missing Localizations: 69", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "金合欢窗户", - "block.create.acacia_window_pane": "金合欢窗户板", - "block.create.adjustable_chain_gearshift": "可调节链式传动箱", - "block.create.adjustable_crate": "可调节板条箱", - "block.create.adjustable_pulse_repeater": "可调节脉冲中继器", - "block.create.adjustable_repeater": "可调节中继器", - "block.create.analog_lever": "模拟拉杆", - "block.create.andesite_belt_funnel": "安山岩传送带漏斗", - "block.create.andesite_bricks": "安山岩砖", - "block.create.andesite_bricks_slab": "安山岩砖台阶", - "block.create.andesite_bricks_stairs": "安山岩砖楼梯", - "block.create.andesite_bricks_wall": "安山岩砖墙", - "block.create.andesite_casing": "安山机壳", - "block.create.andesite_cobblestone": "安山岩圆石", - "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", - "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", - "block.create.andesite_cobblestone_wall": "安山岩圆石墙", - "block.create.andesite_encased_shaft": "安山传动杆箱", - "block.create.andesite_funnel": "安山岩漏斗", - "block.create.andesite_pillar": "竖纹安山岩", - "block.create.andesite_tunnel": "安山岩隧道", - "block.create.basin": "工作盆", - "block.create.belt": "传送带", - "block.create.birch_window": "白桦窗户", - "block.create.birch_window_pane": "白桦窗户板", - "block.create.black_sail": "黑色风帆", - "block.create.black_seat": "黑色坐垫", - "block.create.black_valve_handle": "黑色阀门手轮", - "block.create.blaze_burner": "烈焰人燃烧室", - "block.create.blue_sail": "蓝色风帆", - "block.create.blue_seat": "蓝色坐垫", - "block.create.blue_valve_handle": "蓝色阀门手轮", - "block.create.brass_belt_funnel": "黄铜传送带漏斗", - "block.create.brass_block": "黄铜块", - "block.create.brass_casing": "黄铜机壳", - "block.create.brass_encased_shaft": "黄铜传动杆箱", - "block.create.brass_funnel": "黄铜漏斗", - "block.create.brass_tunnel": "黄铜隧道", - "block.create.brown_sail": "棕色风帆", - "block.create.brown_seat": "棕色坐垫", - "block.create.brown_valve_handle": "棕色阀门手轮", - "block.create.cart_assembler": "矿车装配站", - "block.create.chiseled_dark_scoria": "錾制深色熔渣", - "block.create.chiseled_dolomite": "錾制白云岩", - "block.create.chiseled_gabbro": "錾制辉长岩", - "block.create.chiseled_limestone": "錾制石灰岩", - "block.create.chiseled_scoria": "錾制熔渣", - "block.create.chiseled_weathered_limestone": "錾制风化石灰岩", - "block.create.chocolate": "巧克力", - "block.create.chute": "溜槽", - "block.create.clockwork_bearing": "时钟轴承", - "block.create.clutch": "离合器", - "block.create.cogwheel": "齿轮", - "block.create.content_observer": "物品侦测器", - "block.create.controller_rail": "控制铁轨", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "铜块", - "block.create.copper_casing": "铜机壳", - "block.create.copper_ore": "铜矿石", - "block.create.copper_shingles": "铜砖块", - "block.create.copper_tiles": "铜砖块", - "block.create.copper_valve_handle": "铜阀门手轮", - "block.create.creative_crate": "创造板条箱", - "block.create.creative_fluid_tank": "创造流体储罐", - "block.create.creative_motor": "创造马达", - "block.create.crimson_window": "绯红窗户", - "block.create.crimson_window_pane": "绯红窗户板", - "block.create.crushing_wheel": "粉碎轮", - "block.create.crushing_wheel_controller": "粉碎轮控制器", - "block.create.cuckoo_clock": "布谷鸟闹钟", - "block.create.cyan_sail": "青色风帆", - "block.create.cyan_seat": "青色坐垫", - "block.create.cyan_valve_handle": "青色阀门手轮", - "block.create.dark_oak_window": "深色橡木窗户", - "block.create.dark_oak_window_pane": "深色橡木窗户板", - "block.create.dark_scoria": "深色熔渣", - "block.create.dark_scoria_bricks": "深色熔渣砖", - "block.create.dark_scoria_bricks_slab": "深色熔渣砖台阶", - "block.create.dark_scoria_bricks_stairs": "深色熔渣砖楼梯", - "block.create.dark_scoria_bricks_wall": "深色熔渣砖墙", - "block.create.dark_scoria_cobblestone": "深色熔渣圆石", - "block.create.dark_scoria_cobblestone_slab": "深色熔渣圆石台阶", - "block.create.dark_scoria_cobblestone_stairs": "深色熔渣圆石楼梯", - "block.create.dark_scoria_cobblestone_wall": "深色熔渣圆石墙", - "block.create.dark_scoria_pillar": "竖纹深色熔渣", - "block.create.deployer": "机械手", - "block.create.depot": "置物台", - "block.create.diorite_bricks": "闪长岩砖", - "block.create.diorite_bricks_slab": "闪长岩砖台阶", - "block.create.diorite_bricks_stairs": "闪长岩砖楼梯", - "block.create.diorite_bricks_wall": "闪长岩砖墙", - "block.create.diorite_cobblestone": "闪长岩圆石", - "block.create.diorite_cobblestone_slab": "闪长岩圆石台阶", - "block.create.diorite_cobblestone_stairs": "闪长岩圆石楼梯", - "block.create.diorite_cobblestone_wall": "闪长岩圆石墙", - "block.create.diorite_pillar": "竖纹闪长岩", - "block.create.dolomite": "白云岩", - "block.create.dolomite_bricks": "白云岩砖", - "block.create.dolomite_bricks_slab": "白云岩砖台阶", - "block.create.dolomite_bricks_stairs": "白云岩砖楼梯", - "block.create.dolomite_bricks_wall": "白云岩砖墙", - "block.create.dolomite_cobblestone": "白云岩圆石", - "block.create.dolomite_cobblestone_slab": "白云岩圆石台阶", - "block.create.dolomite_cobblestone_stairs": "白云岩圆石楼梯", - "block.create.dolomite_cobblestone_wall": "白云岩圆石墙", - "block.create.dolomite_pillar": "竖纹白云岩", - "block.create.encased_chain_drive": "链式传动箱", - "block.create.encased_fan": "鼓风机", - "block.create.encased_fluid_pipe": "流体管道箱", - "block.create.fancy_andesite_bricks": "方纹安山岩砖", - "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖台阶", - "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", - "block.create.fancy_andesite_bricks_wall": "方纹安山岩砖墙", - "block.create.fancy_dark_scoria_bricks": "方纹深色熔渣砖", - "block.create.fancy_dark_scoria_bricks_slab": "方纹深色熔渣砖台阶", - "block.create.fancy_dark_scoria_bricks_stairs": "方纹深色熔渣砖楼梯", - "block.create.fancy_dark_scoria_bricks_wall": "方纹深色熔渣砖墙", - "block.create.fancy_diorite_bricks": "方纹闪长岩砖", - "block.create.fancy_diorite_bricks_slab": "方纹闪长岩砖台阶", - "block.create.fancy_diorite_bricks_stairs": "方纹闪长岩砖楼梯", - "block.create.fancy_diorite_bricks_wall": "方纹闪长岩砖墙", - "block.create.fancy_dolomite_bricks": "方纹白云岩砖", - "block.create.fancy_dolomite_bricks_slab": "方纹白云岩砖台阶", - "block.create.fancy_dolomite_bricks_stairs": "方纹白云岩砖楼梯", - "block.create.fancy_dolomite_bricks_wall": "方纹白云岩砖墙", - "block.create.fancy_gabbro_bricks": "方纹辉长岩砖", - "block.create.fancy_gabbro_bricks_slab": "方纹辉长岩砖台阶", - "block.create.fancy_gabbro_bricks_stairs": "方纹辉长岩砖楼梯", - "block.create.fancy_gabbro_bricks_wall": "方纹辉长岩砖墙", - "block.create.fancy_granite_bricks": "方纹花岗岩砖", - "block.create.fancy_granite_bricks_slab": "方纹花岗岩砖台阶", - "block.create.fancy_granite_bricks_stairs": "方纹花岗岩砖楼梯", - "block.create.fancy_granite_bricks_wall": "方纹花岗岩砖墙", - "block.create.fancy_limestone_bricks": "方纹石灰岩砖", - "block.create.fancy_limestone_bricks_slab": "方纹石灰岩砖台阶", - "block.create.fancy_limestone_bricks_stairs": "方纹石灰岩砖楼梯", - "block.create.fancy_limestone_bricks_wall": "方纹石灰岩砖墙", - "block.create.fancy_scoria_bricks": "方纹熔渣砖", - "block.create.fancy_scoria_bricks_slab": "方纹熔渣砖台阶", - "block.create.fancy_scoria_bricks_stairs": "方纹熔渣砖楼梯", - "block.create.fancy_scoria_bricks_wall": "方纹熔渣砖墙", - "block.create.fancy_weathered_limestone_bricks": "方纹风化石灰岩砖", - "block.create.fancy_weathered_limestone_bricks_slab": "方纹风化石灰岩砖台阶", - "block.create.fancy_weathered_limestone_bricks_stairs": "方纹风化石灰岩砖楼梯", - "block.create.fancy_weathered_limestone_bricks_wall": "方纹风化石灰岩砖墙", - "block.create.fluid_pipe": "流体管道", - "block.create.fluid_tank": "流体储罐", - "block.create.fluid_valve": "流体阀门", - "block.create.flywheel": "飞轮", - "block.create.framed_glass": "边框玻璃", - "block.create.framed_glass_pane": "边框玻璃板", - "block.create.furnace_engine": "熔炉引擎", - "block.create.gabbro": "辉长岩", - "block.create.gabbro_bricks": "辉长岩砖", - "block.create.gabbro_bricks_slab": "辉长岩砖台阶", - "block.create.gabbro_bricks_stairs": "辉长岩砖楼梯", - "block.create.gabbro_bricks_wall": "辉长岩砖墙", - "block.create.gabbro_cobblestone": "辉长岩圆石", - "block.create.gabbro_cobblestone_slab": "辉长岩圆石台阶", - "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", - "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", - "block.create.gabbro_pillar": "竖纹辉长岩", - "block.create.gantry_carriage": "起重机取物器", - "block.create.gantry_shaft": "起重机杆", - "block.create.gearbox": "十字齿轮箱", - "block.create.gearshift": "反转齿轮箱", - "block.create.glass_fluid_pipe": "玻璃流体管道", - "block.create.granite_bricks": "花岗岩砖", - "block.create.granite_bricks_slab": "花岗岩砖台阶", - "block.create.granite_bricks_stairs": "花岗岩砖楼梯", - "block.create.granite_bricks_wall": "花岗岩砖墙", - "block.create.granite_cobblestone": "花岗岩圆石", - "block.create.granite_cobblestone_slab": "花岗岩圆石台阶", - "block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯", - "block.create.granite_cobblestone_wall": "花岗岩圆石墙", - "block.create.granite_pillar": "竖纹花岗岩", - "block.create.gray_sail": "灰色风帆", - "block.create.gray_seat": "灰色坐垫", - "block.create.gray_valve_handle": "灰色阀门手轮", - "block.create.green_sail": "绿色风帆", - "block.create.green_seat": "绿色坐垫", - "block.create.green_valve_handle": "绿色阀门手轮", - "block.create.hand_crank": "手摇曲柄", - "block.create.honey": "蜂蜜", - "block.create.horizontal_framed_glass": "竖直边框玻璃", - "block.create.horizontal_framed_glass_pane": "竖直边框玻璃板", - "block.create.hose_pulley": "软管滑轮", - "block.create.item_drain": "分液池", - "block.create.jungle_window": "丛林窗户", - "block.create.jungle_window_pane": "丛林窗户板", - "block.create.large_cogwheel": "大齿轮", - "block.create.layered_andesite": "层叠安山岩", - "block.create.layered_dark_scoria": "层叠深色熔渣", - "block.create.layered_diorite": "层叠闪长岩", - "block.create.layered_dolomite": "层叠白云岩", - "block.create.layered_gabbro": "层叠辉长岩", - "block.create.layered_granite": "层叠花岗岩", - "block.create.layered_limestone": "层叠石灰岩", - "block.create.layered_scoria": "层叠熔渣", - "block.create.layered_weathered_limestone": "层叠风化石灰岩", - "block.create.light_blue_sail": "淡蓝色风帆", - "block.create.light_blue_seat": "淡蓝色坐垫", - "block.create.light_blue_valve_handle": "淡蓝色阀门手轮", - "block.create.light_gray_sail": "淡灰色风帆", - "block.create.light_gray_seat": "淡灰色坐垫", - "block.create.light_gray_valve_handle": "淡灰色阀门手轮", - "block.create.lime_sail": "黄绿色风帆", - "block.create.lime_seat": "黄绿色坐垫", - "block.create.lime_valve_handle": "黄绿色阀门手轮", - "block.create.limesand": "石灰沙", - "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩砖", - "block.create.limestone_bricks_slab": "石灰岩砖台阶", - "block.create.limestone_bricks_stairs": "石灰岩砖楼梯", - "block.create.limestone_bricks_wall": "石灰岩砖墙", - "block.create.limestone_cobblestone": "石灰岩圆石", - "block.create.limestone_cobblestone_slab": "石灰岩圆石台阶", - "block.create.limestone_cobblestone_stairs": "石灰岩圆石楼梯", - "block.create.limestone_cobblestone_wall": "石灰岩圆石墙", - "block.create.limestone_pillar": "竖纹石灰岩", - "block.create.linear_chassis": "机壳底盘", - "block.create.lit_blaze_burner": "烈焰人燃烧室(已点燃)", - "block.create.magenta_sail": "品红色风帆", - "block.create.magenta_seat": "品红色坐垫", - "block.create.magenta_valve_handle": "品红色阀门手轮", - "block.create.mechanical_arm": "动力臂", - "block.create.mechanical_bearing": "动力轴承", - "block.create.mechanical_crafter": "动力合成器", - "block.create.mechanical_drill": "动力钻头", - "block.create.mechanical_harvester": "动力收割机", - "block.create.mechanical_mixer": "动力搅拌器", - "block.create.mechanical_piston": "动力活塞", - "block.create.mechanical_piston_head": "动力活塞头", - "block.create.mechanical_plough": "动力犁", - "block.create.mechanical_press": "动力辊压机", - "block.create.mechanical_pump": "动力泵", - "block.create.mechanical_saw": "动力锯", - "block.create.metal_bracket": "金属支架", - "block.create.millstone": "石磨", - "block.create.minecart_anchor": "矿车锚", - "block.create.mossy_andesite": "生苔安山岩", - "block.create.mossy_dark_scoria": "生苔深色熔渣", - "block.create.mossy_diorite": "生苔闪长岩", - "block.create.mossy_dolomite": "生苔白云岩", - "block.create.mossy_gabbro": "生苔辉长岩", - "block.create.mossy_granite": "生苔花岗岩", - "block.create.mossy_limestone": "生苔石灰岩", - "block.create.mossy_scoria": "生苔熔渣", - "block.create.mossy_weathered_limestone": "生苔风化石灰岩", - "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", - "block.create.natural_scoria": "天然熔渣", - "block.create.nixie_tube": "辉光管", - "block.create.nozzle": "分散网", - "block.create.oak_window": "橡木窗户", - "block.create.oak_window_pane": "橡木窗户板", - "block.create.orange_sail": "橙色风帆", - "block.create.orange_seat": "橙色坐垫", - "block.create.orange_valve_handle": "橙色阀门手轮", - "block.create.ornate_iron_window": "华丽铁窗户", - "block.create.ornate_iron_window_pane": "华丽铁窗户板", - "block.create.overgrown_andesite": "生草安山岩", - "block.create.overgrown_dark_scoria": "生草深色熔渣", - "block.create.overgrown_diorite": "生草闪长岩", - "block.create.overgrown_dolomite": "生草白云岩", - "block.create.overgrown_gabbro": "生草辉长岩", - "block.create.overgrown_granite": "生草花岗岩", - "block.create.overgrown_limestone": "生草石灰岩", - "block.create.overgrown_scoria": "生草熔渣", - "block.create.overgrown_weathered_limestone": "生草风化石灰岩", - "block.create.paved_andesite": "安山岩铺路石", - "block.create.paved_andesite_slab": "安山岩铺路石台阶", - "block.create.paved_andesite_stairs": "安山岩铺路石楼梯", - "block.create.paved_andesite_wall": "安山岩铺路石墙", - "block.create.paved_dark_scoria": "深色熔渣铺路石", - "block.create.paved_dark_scoria_slab": "深色熔渣铺路石台阶", - "block.create.paved_dark_scoria_stairs": "深色熔渣铺路石楼梯", - "block.create.paved_dark_scoria_wall": "深色熔渣铺路石墙", - "block.create.paved_diorite": "闪长岩铺路石", - "block.create.paved_diorite_slab": "闪长岩铺路石台阶", - "block.create.paved_diorite_stairs": "闪长岩铺路石楼梯", - "block.create.paved_diorite_wall": "闪长岩铺路石墙", - "block.create.paved_dolomite": "白云岩铺路石", - "block.create.paved_dolomite_slab": "白云岩铺路石台阶", - "block.create.paved_dolomite_stairs": "白云岩铺路石楼梯", - "block.create.paved_dolomite_wall": "白云岩铺路石墙", - "block.create.paved_gabbro": "辉长岩铺路石", - "block.create.paved_gabbro_slab": "辉长岩铺路石台阶", - "block.create.paved_gabbro_stairs": "辉长岩铺路石楼梯", - "block.create.paved_gabbro_wall": "辉长岩铺路石墙", - "block.create.paved_granite": "花岗岩铺路石", - "block.create.paved_granite_slab": "花岗岩铺路石台阶", - "block.create.paved_granite_stairs": "花岗岩铺路石楼梯", - "block.create.paved_granite_wall": "花岗岩铺路石墙", - "block.create.paved_limestone": "石灰岩铺路石", - "block.create.paved_limestone_slab": "石灰岩铺路石台阶", - "block.create.paved_limestone_stairs": "石灰岩铺路石楼梯", - "block.create.paved_limestone_wall": "石灰岩铺路石墙", - "block.create.paved_scoria": "熔渣铺路石", - "block.create.paved_scoria_slab": "熔渣铺路石台阶", - "block.create.paved_scoria_stairs": "熔渣铺路石楼梯", - "block.create.paved_scoria_wall": "熔渣铺路石墙", - "block.create.paved_weathered_limestone": "风化石灰岩铺路石", - "block.create.paved_weathered_limestone_slab": "风化石灰岩铺路石台阶", - "block.create.paved_weathered_limestone_stairs": "风化石灰岩铺路石楼梯", - "block.create.paved_weathered_limestone_wall": "风化石灰岩铺路石墙", - "block.create.pink_sail": "粉红色风帆", - "block.create.pink_seat": "粉红色坐垫", - "block.create.pink_valve_handle": "粉红色阀门手轮", - "block.create.piston_extension_pole": "活塞杆", - "block.create.polished_dark_scoria": "磨制深色熔渣", - "block.create.polished_dark_scoria_slab": "磨制深色熔渣台阶", - "block.create.polished_dark_scoria_stairs": "磨制深色熔渣楼梯", - "block.create.polished_dark_scoria_wall": "磨制深色熔渣墙", - "block.create.polished_dolomite": "磨制白云岩", - "block.create.polished_dolomite_slab": "磨制白云岩台阶", - "block.create.polished_dolomite_stairs": "磨制白云岩楼梯", - "block.create.polished_dolomite_wall": "磨制白云岩墙", - "block.create.polished_gabbro": "磨制辉长岩", - "block.create.polished_gabbro_slab": "磨制辉长岩台阶", - "block.create.polished_gabbro_stairs": "磨制辉长岩楼梯", - "block.create.polished_gabbro_wall": "磨制辉长岩墙", - "block.create.polished_limestone": "磨制石灰岩", - "block.create.polished_limestone_slab": "磨制石灰岩台阶", - "block.create.polished_limestone_stairs": "磨制石灰岩楼梯", - "block.create.polished_limestone_wall": "磨制石灰岩墙", - "block.create.polished_scoria": "磨制熔渣", - "block.create.polished_scoria_slab": "磨制熔渣台阶", - "block.create.polished_scoria_stairs": "磨制熔渣楼梯", - "block.create.polished_scoria_wall": "磨制熔渣墙", - "block.create.polished_weathered_limestone": "磨制风化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨制风化石灰岩台阶", - "block.create.polished_weathered_limestone_stairs": "磨制风化石灰岩楼梯", - "block.create.polished_weathered_limestone_wall": "磨制风化石灰岩墙", - "block.create.portable_fluid_interface": "移动式流体接口", - "block.create.portable_storage_interface": "移动式存储接口", - "block.create.powered_latch": "锁存器", - "block.create.powered_toggle_latch": "转换锁存器", - "block.create.pulley_magnet": "滑轮磁铁", - "block.create.pulse_repeater": "脉冲中继器", - "block.create.purple_sail": "紫色风帆", - "block.create.purple_seat": "紫色坐垫", - "block.create.purple_valve_handle": "紫色阀门手轮", - "block.create.radial_chassis": "旋转底盘", - "block.create.red_sail": "红色风帆", - "block.create.red_seat": "红色坐垫", - "block.create.red_valve_handle": "红色阀门手轮", - "block.create.redstone_contact": "接触式红石信号发生器", - "block.create.redstone_link": "无线红石信号终端", - "block.create.refined_radiance_casing": "光辉机壳", - "block.create.reinforced_rail": "强化铁轨", - "block.create.rope": "绳索", - "block.create.rope_pulley": "绳索滑轮", - "block.create.rotation_speed_controller": "转速控制器", - "block.create.sail_frame": "风帆框架", - "block.create.schematic_table": "蓝图桌", - "block.create.schematicannon": "蓝图加农炮", - "block.create.scoria": "熔渣", - "block.create.scoria_bricks": "熔渣砖", - "block.create.scoria_bricks_slab": "熔渣砖台阶", - "block.create.scoria_bricks_stairs": "熔渣砖楼梯", - "block.create.scoria_bricks_wall": "熔渣砖墙", - "block.create.scoria_cobblestone": "熔渣圆石", - "block.create.scoria_cobblestone_slab": "熔渣圆石台阶", - "block.create.scoria_cobblestone_stairs": "熔渣圆石楼梯", - "block.create.scoria_cobblestone_wall": "熔渣圆石墙", - "block.create.scoria_pillar": "竖纹熔渣", - "block.create.secondary_linear_chassis": "机壳底盘2号", - "block.create.sequenced_gearshift": "可编程齿轮箱", - "block.create.shadow_steel_casing": "暗影机壳", - "block.create.shaft": "传动杆", - "block.create.smart_chute": "智能溜槽", - "block.create.smart_fluid_pipe": "智能流体管道", - "block.create.speedometer": "速度表", - "block.create.spout": "注液器", - "block.create.spruce_window": "云杉窗户", - "block.create.spruce_window_pane": "云杉窗户板", - "block.create.sticker": "黏着器", - "block.create.sticky_mechanical_piston": "黏性动力活塞", - "block.create.stockpile_switch": "存量转换器", - "block.create.stressometer": "应力表", - "block.create.tiled_glass": "十字玻璃窗", - "block.create.tiled_glass_pane": "十字玻璃窗户板", - "block.create.turntable": "转盘", - "block.create.vertical_framed_glass": "竖直边框玻璃", - "block.create.vertical_framed_glass_pane": "竖直边框玻璃板", - "block.create.warped_window": "诡异木窗户", - "block.create.warped_window_pane": "诡异木窗户板", - "block.create.water_wheel": "水车", - "block.create.weathered_limestone": "风化石灰岩", - "block.create.weathered_limestone_bricks": "风化石灰岩砖", - "block.create.weathered_limestone_bricks_slab": "风化石灰岩砖台阶", - "block.create.weathered_limestone_bricks_stairs": "风化石灰岩砖楼梯", - "block.create.weathered_limestone_bricks_wall": "风化石灰岩砖墙", - "block.create.weathered_limestone_cobblestone": "风化石灰岩圆石", - "block.create.weathered_limestone_cobblestone_slab": "风化石灰岩圆石台阶", - "block.create.weathered_limestone_cobblestone_stairs": "风化石灰岩圆石楼梯", - "block.create.weathered_limestone_cobblestone_wall": "风化石灰岩圆石墙", - "block.create.weathered_limestone_pillar": "竖纹风化石灰岩", - "block.create.weighted_ejector": "弹射置物台", - "block.create.white_sail": "白色风帆", - "block.create.white_seat": "白色坐垫", - "block.create.white_valve_handle": "白色阀门手轮", - "block.create.windmill_bearing": "风车轴承", - "block.create.wooden_bracket": "木质支架", - "block.create.yellow_sail": "黄色风帆", - "block.create.yellow_seat": "黄色坐垫", - "block.create.yellow_valve_handle": "黄色阀门手轮", - "block.create.zinc_block": "锌块", - "block.create.zinc_ore": "锌矿石", - "entity.create.contraption": "装置", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "起重机装置", - "entity.create.seat": "坐垫", - "entity.create.stationary_contraption": "固定装置", - "entity.create.super_glue": "强力胶", - "fluid.create.milk": "牛奶", - "fluid.create.potion": "药水", - "fluid.create.tea": "茶", - "item.create.andesite_alloy": "安山合金", - "item.create.attribute_filter": "属性过滤器", - "item.create.bar_of_chocolate": "巧克力棒", - "item.create.belt_connector": "传送带", - "item.create.blaze_cake": "烈焰蛋糕", - "item.create.blaze_cake_base": "烈焰蛋糕胚", - "item.create.brass_hand": "黄铜手部零件", - "item.create.brass_ingot": "黄铜锭", - "item.create.brass_nugget": "黄铜粒", - "item.create.brass_sheet": "黄铜板", - "item.create.builders_tea": "建造工茶饮", - "item.create.chest_minecart_contraption": "装配过的动力矿车", - "item.create.chocolate_bucket": "巧克力桶", - "item.create.chocolate_glazed_berries": "巧克力包层浆果", - "item.create.chromatic_compound": "异彩化合物", - "item.create.cinder_flour": "下界面粉", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "铜锭", - "item.create.copper_nugget": "铜粒", - "item.create.copper_sheet": "铜板", - "item.create.crafter_slot_cover": "合成器盖板", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "粉碎铝矿石", - "item.create.crushed_brass": "粉碎黄铜", - "item.create.crushed_copper_ore": "粉碎铜矿石", - "item.create.crushed_gold_ore": "粉碎金矿石", - "item.create.crushed_iron_ore": "粉碎铁矿石", - "item.create.crushed_lead_ore": "粉碎铅矿石", - "item.create.crushed_nickel_ore": "粉碎镍矿石", - "item.create.crushed_osmium_ore": "粉碎锇矿石", - "item.create.crushed_platinum_ore": "粉碎铂矿石", - "item.create.crushed_quicksilver_ore": "粉碎水银矿石", - "item.create.crushed_silver_ore": "粉碎银矿石", - "item.create.crushed_tin_ore": "粉碎锡矿石", - "item.create.crushed_uranium_ore": "粉碎铀矿石", - "item.create.crushed_zinc_ore": "粉碎锌矿石", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "面团", - "item.create.electron_tube": "电子管", - "item.create.empty_blaze_burner": "空的烈焰人燃烧室", - "item.create.empty_schematic": "空白蓝图", - "item.create.extendo_grip": "伸缩机械手", - "item.create.filter": "过滤器", - "item.create.furnace_minecart_contraption": "装配过的动力矿车", - "item.create.goggles": "工程师护目镜", - "item.create.golden_sheet": "金板", - "item.create.handheld_worldshaper": "手持式环境塑形器", - "item.create.honey_bucket": "蜂蜜桶", - "item.create.honeyed_apple": "蜜渍苹果", - "item.create.integrated_circuit": "集成电路板", - "item.create.iron_sheet": "铁板", - "item.create.lapis_sheet": "青金石板", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "装配过的矿车", - "item.create.minecart_coupling": "矿车连轴器", - "item.create.polished_rose_quartz": "磨制玫瑰石英", - "item.create.powdered_obsidian": "黑曜石粉末", - "item.create.propeller": "扇叶", - "item.create.red_sand_paper": "红沙砂纸", - "item.create.refined_radiance": "光辉石", - "item.create.rose_quartz": "玫瑰石英", - "item.create.sand_paper": "砂纸", - "item.create.schematic": "蓝图", - "item.create.schematic_and_quill": "蓝图与笔", - "item.create.shadow_steel": "暗影钢", - "item.create.super_glue": "强力胶", - "item.create.sweet_roll": "甜甜卷", - "item.create.tree_fertilizer": "树木肥料", - "item.create.vertical_gearbox": "竖直十字齿轮箱", - "item.create.wand_of_symmetry": "对称之杖", - "item.create.wheat_flour": "小麦粉", - "item.create.whisk": "搅拌器", - "item.create.wrench": "扳手", - "item.create.zinc_ingot": "锌锭", - "item.create.zinc_nugget": "锌粒", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "欢迎来到机械动力", - "advancement.create.root.desc": "是时候来制作一些超赞的机械结构了!", - "advancement.create.andesite_alloy": "头韵狂魔(Alliterations Aplenty)", - "advancement.create.andesite_alloy.desc": "机械动力的材料名字都很古怪,安山合金(Andesite Alloy)就是其中之一。", - "advancement.create.its_alive": "鲜活的机械生命", - "advancement.create.its_alive.desc": "首次激活齿轮结构的旋转。", - "advancement.create.shifting_gears": "换挡,加速,起飞!", - "advancement.create.shifting_gears.desc": "将大齿轮连接到小齿轮上,可以改变结构的转速。", - "advancement.create.overstressed": "过载", - "advancement.create.overstressed.desc": "首次使能量网络过载。", - "advancement.create.belt": "海带传动", - "advancement.create.belt.desc": "用传送带连接两个传动杆", - "advancement.create.tunnel": "找掩护!", - "advancement.create.tunnel.desc": "用隧道装饰传送带。", - "advancement.create.splitter_tunnel": "分而治之", - "advancement.create.splitter_tunnel.desc": "用黄铜隧道设计一个分流器。", - "advancement.create.chute": "轰然倒塌", - "advancement.create.chute.desc": "放置一个溜槽(垂直版本的传送带)。", - "advancement.create.upward_chute": "空中劫持", - "advancement.create.upward_chute.desc": "目睹抛出的物品飞入带风扇的溜槽。", - "advancement.create.belt_funnel": "漏斗垂帘", - "advancement.create.belt_funnel.desc": "将侧向漏斗放在传送带或置物台的顶部,并观察到特殊材质的漏斗。", - "advancement.create.belt_funnel_kiss": "鹦鹉和垂翼", - "advancement.create.belt_funnel_kiss.desc": "让两个安装在传送带上的漏斗深情相吻。", - "advancement.create.fan": "动力御气师", - "advancement.create.fan.desc": "飘在鼓风机吹出的气流上", - "advancement.create.fan_lava": "地热取暖", - "advancement.create.fan_lava.desc": "被熔炼气流烤的酥脆。", - "advancement.create.fan_water": "奇妙的洗涤流程", - "advancement.create.fan_water.desc": "被洗涤气流洗了个澡。", - "advancement.create.fan_smoke": "动力风箱", - "advancement.create.fan_smoke.desc": "被烟熏气流熏得满脸黑。", - "advancement.create.wrench": "细节调整", - "advancement.create.wrench.desc": "做出一个方便调整方块的扳手", - "advancement.create.goggles": "应力,一目了然", - "advancement.create.goggles.desc": "做出一个能看到机器动能信息的工程师护目镜", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一个速度表,并且带上工程师护目镜来读取速度数据", - "advancement.create.stressometer": "精密的应力控制", - "advancement.create.stressometer.desc": "放置一个应力表,并且带上工程师护目镜来读取应力数据", - "advancement.create.aesthetics": "美观,即是一切!", - "advancement.create.aesthetics.desc": "将支架放在传动杆,管道和齿轮上。", - "advancement.create.reinforced": "Boom~ 加强!", - "advancement.create.reinforced.desc": "在传动杆,管道和传送带上使用机壳加固。", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转", - "advancement.create.chocolate_wheel": "味美动力", - "advancement.create.chocolate_wheel.desc": "用熔融巧克力驱动水车。", - "advancement.create.lava_wheel": "风火轮", - "advancement.create.lava_wheel.desc": "它本不应该起作用的......", - "advancement.create.cuckoo": "到点了吗?", - "advancement.create.cuckoo.desc": "目睹布谷鸟钟宣布就寝时间。", - "advancement.create.millstone": "便携式粉碎机", - "advancement.create.millstone.desc": "放置一个石磨并且为其供能", - "advancement.create.windmill": "微风吹拂", - "advancement.create.windmill.desc": "组装风车。", - "advancement.create.maxed_windmill": "强风肆虐", - "advancement.create.maxed_windmill.desc": "组装最大强度的风车。", - "advancement.create.andesite_casing": "安山纪元", - "advancement.create.andesite_casing.desc": "使用安山合金和木头来合成一个安山机壳", - "advancement.create.mechanical_drill": "坚如磐石,势如破竹", - "advancement.create.mechanical_drill.desc": "放置一个动力钻头并且为其供能", - "advancement.create.press": "'Duang!'", - "advancement.create.press.desc": "使用辊压机来辊压一些板子", - "advancement.create.polished_rose_quartz": "粉色钻石", - "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至透明", - "advancement.create.electron_tube": "哔~~ 哔~~", - "advancement.create.electron_tube.desc": "制作一个可用于合成高级机器的电子管", - "advancement.create.mechanical_saw": "一刀两断", - "advancement.create.mechanical_saw.desc": "放置一个动力锯并且为其供能", - "advancement.create.basin": "快到碗里来", - "advancement.create.basin.desc": "放置一个工作盆,并且往里面放些东西", - "advancement.create.mixer": "均匀搅拌", - "advancement.create.mixer.desc": "将搅拌机放在工作盆上方,并且使其搅拌盆内物品", - "advancement.create.blaze_burner": "活炉", - "advancement.create.blaze_burner.desc": "获得一个烈焰人燃烧室。", - "advancement.create.compact": "快乐压缩", - "advancement.create.compact.desc": "使用辊压机在工作盆中压缩一些物品", - "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用粉碎锌矿石和粉碎铜矿石来制作粉碎黄铜", - "advancement.create.brass_casing": "黄铜纪元", - "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", - "advancement.create.copper_casing": "铜之纪元", - "advancement.create.copper_casing.desc": "使用铜和木头制作一个铜制机壳", - "advancement.create.spout": "哗啦啦", - "advancement.create.spout.desc": "观察注液器灌满物品。", - "advancement.create.spout_potion": "全球啤酒厂", - "advancement.create.spout_potion.desc": "观察注液器注入药水到玻璃瓶。", - "advancement.create.chocolate": "幻想世界", - "advancement.create.chocolate.desc": "获取一桶熔融巧克力。", - "advancement.create.item_drain": "滚筒排液", - "advancement.create.item_drain.desc": "观察流体物品被分液池抽空。", - "advancement.create.chained_item_drain": "翻滚吧!", - "advancement.create.chained_item_drain.desc": "观察物品穿过多个链状分布的分液池。", - "advancement.create.glass_pipe": "流之观察者", - "advancement.create.glass_pipe.desc": "透过带窗的流体管道观察流体在管道中流淌。使用扳手可打开直线流体管道的窗户。", - "advancement.create.pipe_collision": "Never cross the Streams!", - "advancement.create.pipe_collision.desc": "观察两种流体在管道网络中相会。", - "advancement.create.pipe_spill": "漏水啦!", - "advancement.create.pipe_spill.desc": "观察管道的开口端将流体排放或放置到世界中。", - "advancement.create.hose_pulley": "工业泄漏", - "advancement.create.hose_pulley.desc": "放下一个软管滑轮,观察它排干或填充一大片液体。", - "advancement.create.infinite_water": "排干海洋", - "advancement.create.infinite_water.desc": "从大到足以被认为是无限的水源中抽水。", - "advancement.create.infinite_lava": "汲取行星核心", - "advancement.create.infinite_lava.desc": "从广阔的熔岩湖中抽出熔岩。", - "advancement.create.infinite_chocolate": "幻想沉溺", - "advancement.create.infinite_chocolate.desc": "从大到足以被被视为无限的巧克力海中抽取巧克力。", - "advancement.create.crafter": "自动化装配", - "advancement.create.crafter.desc": "放置一些机械合成台并且为其供能", - "advancement.create.clockwork_bearing": "巧械时钟", - "advancement.create.clockwork_bearing.desc": "组装安装在发条轴承上的结构。", - "advancement.create.nixie_tube": "花样符号", - "advancement.create.nixie_tube.desc": "获取并放下一对辉光管。", - "advancement.create.deployer": "我就指着你了咋地?", - "advancement.create.deployer.desc": "放置并且功能一个机械手。这可是你右手的完美复制品", - "advancement.create.speed_controller": "工程师讨厌他!", - "advancement.create.speed_controller.desc": "放置一个转速控制器,这是换档的终极装置。", - "advancement.create.flywheel": "工厂之心", - "advancement.create.flywheel.desc": "将引擎成功连接到飞轮。", - "advancement.create.overstress_flywheel": "高压", - "advancement.create.overstress_flywheel.desc": "过载熔炉引擎。", - "advancement.create.integrated_circuit": "复杂运算", - "advancement.create.integrated_circuit.desc": "组装集成电路。", - "advancement.create.mechanical_arm": "忙碌的手!", - "advancement.create.mechanical_arm.desc": "制作机械臂,选择输入和输出,放置并给予它动力,然后看着它为你完成所有工作。", - "advancement.create.musical_arm": "没人能在我的 BGM 里打败我!", - "advancement.create.musical_arm.desc": "使用动力臂播放唱片。", - "advancement.create.arm_many_targets": "掌控全局", - "advancement.create.arm_many_targets.desc": "配置一个有十个或更多输出位置的机械臂。", - "advancement.create.arm_blaze_burner": "熊熊燃烧", - "advancement.create.arm_blaze_burner.desc": "指导机械臂给烈焰人燃烧室投食。", - "advancement.create.fist_bump": "来碰个拳,哥们~", - "advancement.create.fist_bump.desc": "使两个机械手互相碰拳", - "advancement.create.crushing_wheel": "一对大家伙", - "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物品的粉碎轮", - "advancement.create.blaze_cake": "糖份超标", - "advancement.create.blaze_cake.desc": "给烈焰人燃烧室烤一份特别蛋糕。", - "advancement.create.chromatic_compound": "两极材料", - "advancement.create.chromatic_compound.desc": "制作一个异彩化合物", - "advancement.create.shadow_steel": "虚空归来者", - "advancement.create.shadow_steel.desc": "制作一些暗影钢", - "advancement.create.refined_radiance": "明亮而启灵", - "advancement.create.refined_radiance.desc": "制作一个光辉石", - "advancement.create.chromatic_age": "异彩纪元", - "advancement.create.chromatic_age.desc": "创造出光与影的机壳。", - "advancement.create.wand_of_symmetry": "简单的镜面几何学", - "advancement.create.wand_of_symmetry.desc": "制作一个对称之杖", - "advancement.create.extendo_grip": "biu biu biu!", - "advancement.create.extendo_grip.desc": "获得一个伸缩机械手", - "advancement.create.dual_extendo_grip": "biu——biu——biu——", - "advancement.create.dual_extendo_grip.desc": "双持伸缩机械手,超人般的触碰距离。", - "advancement.create.eob": "Beta 版结束", - "advancement.create.eob.desc": "期待未来会有更多的内容。<3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "机械动力", - "itemGroup.create.palettes": "机械动力建筑方块", - "death.attack.create.crush": "%1$s被压扁了", - "death.attack.create.fan_fire": "%1$s试图接受热风的洗礼", - "death.attack.create.fan_lava": "%1$s在接受热风的洗礼中浴火焚身", - "death.attack.create.mechanical_drill": "%1$s被钻头钻的坏掉了", - "death.attack.create.mechanical_saw": "%1$s被圆锯切成了两截", - "death.attack.create.cuckoo_clock_explosion": "%1$s被布谷鸟钟炸得粉身碎骨", - "create.block.deployer.damage_source_name": "二五仔机械手", - "create.block.cart_assembler.invalid": "请将矿车装配器放置在铁轨上", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "粉碎", - "create.recipe.milling": "研磨", - "create.recipe.fan_washing": "批量洗涤", - "create.recipe.fan_washing.fan": "在水后放置鼓风机", - "create.recipe.fan_smoking": "批量烟熏", - "create.recipe.fan_smoking.fan": "在火焰后放置鼓风机", - "create.recipe.fan_blasting": "批量熔炼", - "create.recipe.fan_blasting.fan": "在熔岩后放置鼓风机", - "create.recipe.pressing": "金属压片", - "create.recipe.mixing": "混合搅拌", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "自动搅拌", - "create.recipe.automatic_brewing": "自动酿造", - "create.recipe.packing": "压块塑形", - "create.recipe.automatic_packing": "自动打包", - "create.recipe.sawing": "板材切割", - "create.recipe.mechanical_crafting": "自动合成", - "create.recipe.automatic_shaped": "自动合成", - "create.recipe.block_cutting": "方块切割", - "create.recipe.wood_cutting": "木材切割", - "create.recipe.sandpaper_polishing": "砂纸打磨", - "create.recipe.mystery_conversion": "神秘转化", - "create.recipe.spout_filling": "注液", - "create.recipe.draining": "分液", - "create.recipe.processing.chance": "%1$s%%概率", - "create.recipe.heat_requirement.none": "无需加热", - "create.recipe.heat_requirement.heated": "加热", - "create.recipe.heat_requirement.superheated": "超级加热", - - "create.generic.range": "范围", - "create.generic.radius": "半径", - "create.generic.width": "宽度", - "create.generic.height": "高度", - "create.generic.length": "长度", - "create.generic.speed": "速度", - "create.generic.delay": "延时", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分钟", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "顺时针方向", - "create.generic.counter_clockwise": "逆时针方向", - - "create.action.scroll": "滚轮", - "create.action.confirm": "确认", - "create.action.abort": "退出", - "create.action.saveToFile": "保存", - "create.action.discard": "放弃", - - "create.keyinfo.toolmenu": "工具菜单", - "create.keyinfo.scrollup": "(游戏中)向上鼠标滚轮", - "create.keyinfo.scrolldown": "(游戏中)向下鼠标滚轮", - - "create.gui.scrollInput.defaultTitle": "选择一个选项:", - "create.gui.scrollInput.scrollToModify": "滚动修改", - "create.gui.scrollInput.scrollToAdjustAmount": "滚动修改数量", - "create.gui.scrollInput.scrollToSelect": "滚动选择", - "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滚动更快", - "create.gui.toolmenu.focusKey": "按住 [%1$s] 鼠标滚轮选择", - "create.gui.toolmenu.cycle": "[SCROLL] 循环", - "create.gui.symmetryWand.mirrorType": "镜子类型", - "create.gui.symmetryWand.orientation": "方向", - - "create.symmetry.mirror.plane": "镜像", - "create.symmetry.mirror.doublePlane": "矩形", - "create.symmetry.mirror.triplePlane": "八角", - - "create.orientation.orthogonal": "垂直", - "create.orientation.diagonal": "对角线", - "create.orientation.horizontal": "水平", - "create.orientation.alongZ": "以z轴对齐", - "create.orientation.alongX": "以x轴对齐", - - "create.gui.terrainzapper.title": "手持式环境塑形器", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "放置模式", - "create.gui.terrainzapper.placement.merged": "结合", - "create.gui.terrainzapper.placement.attached": "依附", - "create.gui.terrainzapper.placement.inserted": "插入", - "create.gui.terrainzapper.brush": "塑形类型", - "create.gui.terrainzapper.brush.cuboid": "矩形体", - "create.gui.terrainzapper.brush.sphere": "球体", - "create.gui.terrainzapper.brush.cylinder": "圆柱体", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "填充类型", - "create.gui.terrainzapper.tool.fill": "填充", - "create.gui.terrainzapper.tool.place": "复写", - "create.gui.terrainzapper.tool.replace": "替换", - "create.gui.terrainzapper.tool.clear": "清除", - "create.gui.terrainzapper.tool.overlay": "覆盖", - "create.gui.terrainzapper.tool.flatten": "平整", - - "create.terrainzapper.shiftRightClickToSet": "Shift+鼠标右击以设置塑形类型", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "矿车无法被连接两个以上的矿车连轴器", - "create.minecart_coupling.unloaded": "有一部分火车存在于未加载区块中", - "create.minecart_coupling.no_loops": "矿车连轴器不能连成一个环", - "create.minecart_coupling.removed": "从矿车上移除所有矿车连轴器", - "create.minecart_coupling.too_far": "矿车距离你太远了", - - "create.contraptions.movement_mode": "运动模式", - "create.contraptions.movement_mode.move_place": "停止时总是将装置方块化", - "create.contraptions.movement_mode.move_place_returned": "停止时只在初始位置才将装置方块化", - "create.contraptions.movement_mode.move_never_place": "只有在动力方块摧毁后才将装置方块化", - "create.contraptions.movement_mode.rotate_place": "停止时总是将装置方块化", - "create.contraptions.movement_mode.rotate_place_returned": "停止时只在接近初始角度才将装置方块化", - "create.contraptions.movement_mode.rotate_never_place": "只有在旋转轴摧毁后才将装置方块化", - "create.contraptions.cart_movement_mode": "矿车运动模式", - "create.contraptions.cart_movement_mode.rotate": "装置与矿车保持相同方向", - "create.contraptions.cart_movement_mode.rotate_paused": "矿车转向时机器停止工作", - "create.contraptions.cart_movement_mode.rotation_locked": "装置方向保持不变", - "create.contraptions.windmill.rotation_direction": "旋转方向", - "create.contraptions.clockwork.clock_hands": "钟表指针", - "create.contraptions.clockwork.hour_first": "时针优先", - "create.contraptions.clockwork.minute_first": "分针优先", - "create.contraptions.clockwork.hour_first_24": "24小时制优先", - - "create.logistics.filter": "过滤器", - "create.logistics.recipe_filter": "配方过滤器", - "create.logistics.fluid_filter": "流体过滤器", - "create.logistics.firstFrequency": "频道. #1", - "create.logistics.secondFrequency": "频道. #2", - "create.logistics.filter.apply": "已将过滤应用于%1$s。", - "create.logistics.filter.apply_click_again": "已将过滤应用于%1$s,再次点击可将手持物品数量复制到过滤器上。", - "create.logistics.filter.apply_count": "已将提取数量应用至过滤器。", - - "create.gui.goggles.generator_stats": "应力发生器状态:", - "create.gui.goggles.kinetic_stats": "动力学状态:", - "create.gui.goggles.at_current_speed": "当前速度应力值", - "create.gui.goggles.pole_length": "活塞杆长度:", - "create.gui.goggles.fluid_container": "流体容器信息:", - "create.gui.goggles.fluid_container.capacity": "容量:", - "create.gui.assembly.exception": "无法组装该结构:", - "create.gui.assembly.exception.unmovableBlock": "无法移动的方块:(%4$s)位于 [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "位于 [%1$s,%2$s,%3$s] 的方块未处于加载区块", - "create.gui.assembly.exception.structureTooLarge": "结构中的方块数量过多。\n配置中的最大数量限制为:%1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多。\n配置中的最大数量限制为:%1$s", - "create.gui.assembly.exception.noPistonPoles": "活塞缺失部分活塞杆", - "create.gui.assembly.exception.not_enough_sails": "相接的结构所包含的类风帆方块的数量不足。%1$s\n最低需要 %2$s 个方块", - "create.gui.gauge.info_header": "仪表信息:", - "create.gui.speedometer.title": "旋转速度", - "create.gui.stressometer.title": "网络应力", - "create.gui.stressometer.capacity": "剩余应力量", - "create.gui.stressometer.overstressed": "应力过载", - "create.gui.stressometer.no_rotation": "无旋转", - "create.gui.contraptions.not_fast_enough": "显然%1$s没有达到足够的工作转速。", - "create.gui.contraptions.network_overstressed": "显然装置过载,减速网络中的高应力消耗装置或者添加更多的应力发生装置", - "create.gui.adjustable_crate.title": "板条箱", - "create.gui.adjustable_crate.storageSpace": "储存空间", - "create.gui.stockpile_switch.title": "储存开关", - "create.gui.stockpile_switch.invert_signal": "反转信号", - "create.gui.stockpile_switch.move_to_lower_at": "移至下线%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "移至上线%1$s%%", - "create.gui.sequenced_gearshift.title": "可编程齿轮箱", - "create.gui.sequenced_gearshift.instruction": "指令", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "以特定的角度进行旋转", - "create.gui.sequenced_gearshift.instruction.turn_angle": "旋转", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "开始驱动活塞/软管滑轮/起重机", - "create.gui.sequenced_gearshift.instruction.turn_distance": "驱动活塞", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距离", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "时间延迟", - "create.gui.sequenced_gearshift.instruction.delay": "延迟", - "create.gui.sequenced_gearshift.instruction.delay.duration": "时长", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "结束", - "create.gui.sequenced_gearshift.instruction.end": "停止", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "等待新的红石脉冲", - "create.gui.sequenced_gearshift.instruction.await": "等待", - "create.gui.sequenced_gearshift.speed": "速度,速度方向", - "create.gui.sequenced_gearshift.speed.forward": "一倍速,正向", - "create.gui.sequenced_gearshift.speed.forward_fast": "两倍速,正向", - "create.gui.sequenced_gearshift.speed.back": "一倍速,反向", - "create.gui.sequenced_gearshift.speed.back_fast": "两倍速,反向", - - "create.schematicAndQuill.dimensions": "蓝图尺寸:%1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "第一个位置。", - "create.schematicAndQuill.secondPos": "第二个位置。", - "create.schematicAndQuill.noTarget": "按住Ctrl选择空气方块。", - "create.schematicAndQuill.abort": "删除选择。", - "create.schematicAndQuill.title": "蓝图名:", - "create.schematicAndQuill.convert": "立即保存并部署", - "create.schematicAndQuill.fallbackName": "我的蓝图", - "create.schematicAndQuill.saved": "另存为%1$s", - - "create.schematic.invalid": "[!] 无效的项目", - "create.schematic.position": "位置", - "create.schematic.rotation": "旋转", - "create.schematic.rotation.none": "无", - "create.schematic.rotation.cw90": "顺时针90", - "create.schematic.rotation.cw180": "顺时针180", - "create.schematic.rotation.cw270": "顺时针270", - "create.schematic.mirror": "镜像", - "create.schematic.mirror.none": "无", - "create.schematic.mirror.frontBack": "前后", - "create.schematic.mirror.leftRight": "左右", - "create.schematic.tool.deploy": "部署", - "create.schematic.tool.move": "移动 XZ", - "create.schematic.tool.movey": "移动 Y", - "create.schematic.tool.rotate": "旋转", - "create.schematic.tool.print": "打印", - "create.schematic.tool.flip": "翻转", - "create.schematic.tool.deploy.description.0": "将结构移到某个位置。", - "create.schematic.tool.deploy.description.1": "在地面上单击鼠标右击以放置。", - "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距离选择。", - "create.schematic.tool.deploy.description.3": "按住Ctrl鼠标滚动更改距离。", - "create.schematic.tool.move.description.0": "水平移动蓝图", - "create.schematic.tool.move.description.1": "选定蓝图,然后按住Ctrl鼠标滚动移动。", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "垂直移动蓝图", - "create.schematic.tool.movey.description.1": "按住Ctrl鼠标滚动上下移动", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "围绕蓝图中心旋转蓝图。", - "create.schematic.tool.rotate.description.1": "按住Ctrl鼠标滚动旋转90度", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "立即将结构放置在世界上", - "create.schematic.tool.print.description.1": "右击确认当前位置。", - "create.schematic.tool.print.description.2": "该工具仅适用于创造模式。", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "沿你选择的面翻转蓝图。", - "create.schematic.tool.flip.description.1": "指向蓝图,然后按住Ctrl鼠标滚动将其翻转。", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "正在同步..", - "create.schematics.uploadTooLarge": "你的蓝图太大", - "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", - - "create.gui.schematicTable.refresh": "刷新文件", - "create.gui.schematicTable.open_folder": "打开文件夹", - "create.gui.schematicTable.title": "蓝图桌", - "create.gui.schematicTable.availableSchematics": "可用蓝图", - "create.gui.schematicTable.noSchematics": "没有保存的蓝图", - "create.gui.schematicTable.uploading": "正在上传...", - "create.gui.schematicTable.finished": "上传完成!", - "create.gui.schematicannon.title": "蓝图加农炮", - "create.gui.schematicannon.listPrinter": "物品清单打印机", - "create.gui.schematicannon.gunpowderLevel": "火药%1$s%%", - "create.gui.schematicannon.shotsRemaining": "燃料余量:%1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "燃料储备:%1$s", - "create.gui.schematicannon.optionEnabled": "当前启用", - "create.gui.schematicannon.optionDisabled": "当前禁用", - "create.gui.schematicannon.showOptions": "显示蓝图加农炮设置", - "create.gui.schematicannon.option.dontReplaceSolid": "不要替换方块", - "create.gui.schematicannon.option.replaceWithSolid": "用固体方块替换工作区域内的方块", - "create.gui.schematicannon.option.replaceWithAny": "用任何方块替换工作区域内的方块", - "create.gui.schematicannon.option.replaceWithEmpty": "用空气替换工作区域内的方块", - "create.gui.schematicannon.option.skipMissing": "绕过缺少的方块", - "create.gui.schematicannon.option.skipTileEntities": "保护存储方块", - "create.gui.schematicannon.slot.gunpowder": "向蓝图加农炮添加火药以提供动力", - "create.gui.schematicannon.slot.listPrinter": "在此处放置书以打印蓝图所需的材料清单", - "create.gui.schematicannon.slot.schematic": "在此处添加你的蓝图,务必确保其已经被部署在了特点位置", - "create.gui.schematicannon.option.skipMissing.description": "如果缺失材料,蓝图加农炮将忽略当前缺失材料并且使用其他已有材料继续工作", - "create.gui.schematicannon.option.skipTileEntities.description": "蓝图将避免更换存储方块,如箱子。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "蓝图加农炮将不会替换工作范围内的任何固体方块。", - "create.gui.schematicannon.option.replaceWithSolid.description": "蓝图加农炮会使用所提供的固体方块来替换工作区域内的其他固体方块", - "create.gui.schematicannon.option.replaceWithAny.description": "蓝图加农炮会使用任何所提供的方块来替换工作区域内的固体方块", - "create.gui.schematicannon.option.replaceWithEmpty.description": "蓝图加农炮将清理和替换工作区域内所有原本的方块。", - - "create.schematicannon.status.idle": "闲置", - "create.schematicannon.status.ready": "准备", - "create.schematicannon.status.running": "运行", - "create.schematicannon.status.finished": "完成", - "create.schematicannon.status.paused": "已暂停", - "create.schematicannon.status.stopped": "停止", - "create.schematicannon.status.noGunpowder": "火药消耗完毕", - "create.schematicannon.status.targetNotLoaded": "方块未加载", - "create.schematicannon.status.targetOutsideRange": "定位目标太远", - "create.schematicannon.status.searching": "搜索", - "create.schematicannon.status.skipping": "跳过", - "create.schematicannon.status.missingBlock": "缺少方块:", - "create.schematicannon.status.placing": "建筑中", - "create.schematicannon.status.clearing": "清除方块中", - "create.schematicannon.status.schematicInvalid": "蓝图无效", - "create.schematicannon.status.schematicNotPlaced": "蓝图未部署", - "create.schematicannon.status.schematicExpired": "蓝图文件已过期", - - "create.materialChecklist": "材料清单", - "create.materialChecklist.blocksNotLoaded": "*免责声明* \n\n由于未加载相关区块,材料清单可能不正确。", - - "create.gui.filter.deny_list": "黑名单", - "create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", - "create.gui.filter.allow_list": "白名单", - "create.gui.filter.allow_list.description": "只通过在白名单中的物品,如果白名单为空,所有物品都无法通过", - "create.gui.filter.respect_data": "匹配物品属性", - "create.gui.filter.respect_data.description": "只有物品的耐久、附魔等其他属性相同时才可以匹配", - "create.gui.filter.ignore_data": "忽视物品属性", - "create.gui.filter.ignore_data.description": "匹配时忽视物品的耐久、附魔等其他属性", - - "create.item_attributes.placeable": "可放置", - "create.item_attributes.placeable.inverted": "不可放置", - "create.item_attributes.consumable": "可食用", - "create.item_attributes.consumable.inverted": "不可食用", - "create.item_attributes.smeltable": "可被熔炉烧制", - "create.item_attributes.smeltable.inverted": "不可被熔炉烧制", - "create.item_attributes.washable": "可被洗涤", - "create.item_attributes.washable.inverted": "不可被洗涤", - "create.item_attributes.smokable": "可被烟熏", - "create.item_attributes.smokable.inverted": "不可被烟熏", - "create.item_attributes.crushable": "可被粉碎", - "create.item_attributes.crushable.inverted": "不可被粉碎", - "create.item_attributes.blastable": "可被高炉冶炼", - "create.item_attributes.blastable.inverted": "不可被高炉冶炼", - "create.item_attributes.enchanted": "已被附魔", - "create.item_attributes.enchanted.inverted": "未被附魔", - "create.item_attributes.damaged": "已损坏", - "create.item_attributes.damaged.inverted": "未损坏", - "create.item_attributes.badly_damaged": "严重受损", - "create.item_attributes.badly_damaged.inverted": "未严重受损", - "create.item_attributes.not_stackable": "无法堆叠", - "create.item_attributes.not_stackable.inverted": "可堆叠", - "create.item_attributes.equipable": "可装备", - "create.item_attributes.equipable.inverted": "不可装备", - "create.item_attributes.furnace_fuel": "可作为燃料", - "create.item_attributes.furnace_fuel.inverted": "不可作为燃料", - "create.item_attributes.in_tag": "标签是%1$s", - "create.item_attributes.in_tag.inverted": "标签不是%1$s", - "create.item_attributes.in_item_group": "属于%1$s", - "create.item_attributes.in_item_group.inverted": "不属于%1$s", - "create.item_attributes.added_by": "由%1$s添加", - "create.item_attributes.added_by.inverted": "不是由%1$s添加", - "create.item_attributes.has_enchant": "有附魔效果%1$s", - "create.item_attributes.has_enchant.inverted": "没有附魔效果%1$s", - "create.item_attributes.color": "染色为%1$s", - "create.item_attributes.color.inverted": "未被染成%1$s", - "create.item_attributes.max_enchanted": "已达到最高附魔等", - "create.item_attributes.max_enchanted.inverted": "并未达到最高附魔等级", - "create.item_attributes.has_fluid": "包含%1$s", - "create.item_attributes.has_fluid.inverted": "不包含%1$s", - "create.item_attributes.has_name": "有自定义名称%1$s", - "create.item_attributes.has_name.inverted": "没有自定义名称%1$s", - "create.item_attributes.book_author": "由%1$s编写", - "create.item_attributes.book_author.inverted": "不是由%1$s编写", - "create.item_attributes.book_copy_original": "是初版", - "create.item_attributes.book_copy_original.inverted": "不是初版", - "create.item_attributes.book_copy_first": "是第一代拷贝", - "create.item_attributes.book_copy_first.inverted": "不是第一代拷贝", - "create.item_attributes.book_copy_second": "是第二代拷贝", - "create.item_attributes.book_copy_second.inverted": "不是第二代拷贝", - "create.item_attributes.book_copy_tattered": "拷贝次数已不可查", - "create.item_attributes.book_copy_tattered.inverted": "不是拷贝次数已不可查", - "create.item_attributes.astralsorcery_crystal": "有水晶石属性%1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "没有水晶石属性%1$s", - "create.item_attributes.astralsorcery_constellation": "与%1$s共鸣", - "create.item_attributes.astralsorcery_constellation.inverted": "不与%1$s共鸣", - "create.item_attributes.astralsorcery_perk_gem": "带有有星能力属性%1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "不带有星能力属性%1$s", - "create.item_attributes.astralsorcery_amulet": "璀璨棱镜增强%1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "璀璨棱镜未增强%1$s", - - "create.gui.attribute_filter.no_selected_attributes": "没有标记任何属性", - "create.gui.attribute_filter.selected_attributes": "已选择的属性:", - "create.gui.attribute_filter.add_attribute": "向列表中添加属性", - "create.gui.attribute_filter.add_inverted_attribute": "向列表中添加相反属性", - "create.gui.attribute_filter.allow_list_disjunctive": "任意匹配白名单(任何)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "只要有其中一项属性符合,就可以通过", - "create.gui.attribute_filter.allow_list_conjunctive": "全匹配白名单(全部)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "只有所有属性都匹配才可以通过", - "create.gui.attribute_filter.deny_list": "黑名单", - "create.gui.attribute_filter.deny_list.description": "只要没有上述属性,就可以通过", - "create.gui.attribute_filter.add_reference_item": "添加参考物品", - - "create.tooltip.holdForDescription": "按住 [%1$s] 可查看概要", - "create.tooltip.holdForControls": "按住 [%1$s] 可查看控制方法", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "需求转速:%1$s", - "create.tooltip.speedRequirement.none": "无", - "create.tooltip.speedRequirement.medium": "适当", - "create.tooltip.speedRequirement.high": "快", - "create.tooltip.stressImpact": "应力影响:%1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "过载", - "create.tooltip.capacityProvided": "应力量:%1$s", - "create.tooltip.capacityProvided.low": "小", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.generationSpeed": "产生于%1$s %2$s", - "create.tooltip.analogStrength": "模拟信号强度:%1$s/15", - - "create.mechanical_arm.extract_from": "从%1$s中拿取物品", - "create.mechanical_arm.deposit_to": "向%1$s存储物品", - "create.mechanical_arm.summary": "动力臂当前有%1$s个输入,%2$s个输出。", - "create.mechanical_arm.points_outside_range": "由于距离限制,选定的交互点%1$s已被移除。", - - "create.weighted_ejector.target_set": "目标已选取", - "create.weighted_ejector.target_not_valid": "弹射至临近方块(目标无效)", - "create.weighted_ejector.no_target": "弹射至临近方块(未选择目标)", - "create.weighted_ejector.targeting": "弹射至[%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "弹射物品堆数量", - - "create.logistics.when_multiple_outputs_available": "当多个输出可用时", - - "create.mechanical_arm.selection_mode.round_robin": "轮询调度", - "create.mechanical_arm.selection_mode.forced_round_robin": "强制轮询调度", - "create.mechanical_arm.selection_mode.prefer_first": "第一目标优先", - - "create.tunnel.selection_mode.split": "分流", - "create.tunnel.selection_mode.forced_split": "强制分流", - "create.tunnel.selection_mode.round_robin": "轮询调度", - "create.tunnel.selection_mode.forced_round_robin": "强制轮询调度", - "create.tunnel.selection_mode.prefer_nearest": "最近优先", - "create.tunnel.selection_mode.randomize": "随机", - "create.tunnel.selection_mode.synchronize": "同步输入", - - "create.tooltip.chute.header": "溜槽信息", - "create.tooltip.chute.items_move_down": "物品下行", - "create.tooltip.chute.items_move_up": "物品上行", - "create.tooltip.chute.no_fans_attached": "未安装鼓风机", - "create.tooltip.chute.fans_push_up": "鼓风机从下方进行推动", - "create.tooltip.chute.fans_push_down": "鼓风机从上方进行推动", - "create.tooltip.chute.fans_pull_up": "鼓风机从上方进行吸引", - "create.tooltip.chute.fans_pull_down": "鼓风机从下方进行吸引", - "create.tooltip.chute.contains": "内含物品:%1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "无限供应", - "create.hint.hose_pulley": "目标液体对象被视为无限量的。", - "create.hint.mechanical_arm_no_targets.title": "没有目标", - "create.hint.mechanical_arm_no_targets": "看起来这个_动力臂_没有被分配给任何_目标_。在手持机械臂的同时,右击选取传送带、置物台、漏斗或其他设备来设置目标。", - "create.hint.empty_bearing.title": "更新轴承", - "create.hint.empty_bearing": "_空手右击_轴承来_激活_你新建造的结构。", - "create.hint.full_deployer.title": "机械手物品溢出", - "create.hint.full_deployer": "_机械手_包含_过剩的物品,_需要被_提取。你需要_使用_料斗,__漏斗_或其他方法将溢出释放出来。", - - "create.gui.config.overlay1": "Hi :)", - "create.gui.config.overlay2": "这是一个实例层", - "create.gui.config.overlay3": "点击拖拽你的鼠标", - "create.gui.config.overlay4": "来将它移动到前方", - "create.gui.config.overlay5": "ESC退出当前界面", - "create.gui.config.overlay6": "并保存新的位置", - "create.gui.config.overlay7": "输入/create overlay reset", - "create.gui.config.overlay8": "重置到默认位置", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 服务器每秒tick速被降低为 %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 服务器现在每秒tick速被降低为 >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 服务器恢复到正常速度 :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 来让服务器的TPS速度变回正常", - "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 来手动降低服务器TPS速度", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "这一矿车装置似乎太大了,无法变为拾捡状态", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "烈焰人:咀嚼", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "蓝图加农炮:叮", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "粘液:挤碎声", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "辊压机:工作中", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item._Underscores_highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this。(behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "木质支架", - "block.create.wooden_bracket.tooltip.summary": "用这种给人温馨感的木质支架_装饰_你的_传动杆_,_齿轮_和_管道_吧。", - - "block.create.metal_bracket.tooltip": "金属支架", - "block.create.metal_bracket.tooltip.summary": "用这种工业风格的金属支架_装饰_你的_传动杆_,_齿轮_和_管道_吧。", - - "block.create.copper_casing.tooltip": "铜机壳", - "block.create.copper_casing.tooltip.summary": "具有多种用途的坚固机壳,可用于装饰。", - "block.create.copper_casing.tooltip.condition1": "在流体管道上使用时", - "block.create.copper_casing.tooltip.behaviour1": "将管道包裹进机壳,加壳的管道会与临近的管道区分开来,防止它们自动连接到一起。", - - "block.create.encased_fluid_pipe.tooltip": "流体管道箱", - "block.create.encased_fluid_pipe.tooltip.summary": "用铜机壳加固后的流体管道。", - - "block.create.seat.tooltip": "坐垫", - "block.create.seat.tooltip.summary": "坐下来享受旅程吧!坐垫将会把玩家固定在一个移动装置上。也可以用来作为居家装饰,毕竟他有许多颜色。", - "block.create.seat.tooltip.condition1": "右击坐垫", - "block.create.seat.tooltip.behaviour1": "会使得玩家坐在_坐垫_上,L-Shift可离开_坐垫_。", - - "item.create.blaze_cake.tooltip": "烈焰蛋糕", - "item.create.blaze_cake.tooltip.summary": "为辛勤劳作的_烈焰人_精心准备的美味。让他们兴奋起来吧!", - - "block.create.fluid_pipe.tooltip": "流体管道", - "block.create.fluid_pipe.tooltip.summary": "用于传输_流体_。需要一个_动力泵_来提供压强。", - "block.create.fluid_pipe.tooltip.condition1": "转移流体", - "block.create.fluid_pipe.tooltip.behaviour1": "可以与_流体容器_如_储罐_或_工作盆_相连_。裸露的_管道_末端也可以排放或抽取流体。注意别漏水了!", - "block.create.fluid_pipe.tooltip.condition2": "UNLOCALIZED: Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "UNLOCALIZED: Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "软管滑轮", - "block.create.hose_pulley.tooltip.summary": "用于在_世界_中放置或排放大量的液体。", - "block.create.hose_pulley.tooltip.condition1": "接入动力时", - "block.create.hose_pulley.tooltip.behaviour1": "升高或降低软管,软管的位置决定了抽取或填充液体的高度。", - "block.create.hose_pulley.tooltip.condition2": "当软管滑轮抽取流体时", - "block.create.hose_pulley.tooltip.behaviour2": "开始从软管末端将其从中取出_流体方块_。巨大的流体湖将被认定是_无限_的", - "block.create.hose_pulley.tooltip.condition3": "当流体从软管滑轮中排出时", - "block.create.hose_pulley.tooltip.behaviour3": "开始向世界填充流体,直到达到_软管末端_的高度。", - - "block.create.fluid_tank.tooltip": "流体储罐", - "block.create.fluid_tank.tooltip.summary": "_存储_任意_流体_,根据整体结构的宽和高决定其储存容量", - "block.create.fluid_tank.tooltip.condition1": "使用扳手右击", - "block.create.fluid_tank.tooltip.behaviour1": "打开或关闭窗户", - - "block.create.creative_fluid_tank.tooltip": "创造流体储罐", - "block.create.creative_fluid_tank.tooltip.summary": "此流体储罐能够_无限的复制_任何流体,根据整体结构的宽和高决定其储存容量", - "block.create.creative_fluid_tank.tooltip.condition1": "罐中装有流体时", - "block.create.creative_fluid_tank.tooltip.behaviour1": "任意的_流体提取设备_能够从中提取无穷无尽的指定流体,流体的导入功能同时也会无效。", - "block.create.creative_fluid_tank.tooltip.condition2": "使用扳手右击", - "block.create.creative_fluid_tank.tooltip.behaviour2": "打开或关闭窗户", - - "block.create.fluid_valve.tooltip": "流体阀门", - "block.create.fluid_valve.tooltip.summary": "阻止流体沿管道向前流动。", - "block.create.fluid_valve.tooltip.condition1": "控制流量", - "block.create.fluid_valve.tooltip.behaviour1": "施加的_旋转力_将迫使阀门关闭,从而阻止流体流动。_逆转旋转方向_以重新打开阀门。", - - "block.create.mechanical_pump.tooltip": "动力泵", - "block.create.mechanical_pump.tooltip.summary": "_接入动力_,能迫使流体_沿管道指定方向移动_。在两个方向上都有_最大的作用范围_。(默认为16个方块距离)", - "block.create.mechanical_pump.tooltip.condition1": "流体流向", - "block.create.mechanical_pump.tooltip.behaviour1": "_接入动力_后会产生压力,迫使流体通过管道。_反转动力_的方向以切换流体_流向_。", - "block.create.mechanical_pump.tooltip.control1": "扳手右击时", - "block.create.mechanical_pump.tooltip.action1": "反转泵的方向,从而改变默认的流体流向", - - "block.create.smart_fluid_pipe.tooltip": "智能流体管道", - "block.create.smart_fluid_pipe.tooltip.summary": "带有过滤器的_流体管道_。可以指定其只流通特定的_流体_。", - "block.create.smart_fluid_pipe.tooltip.condition1": "当流体进入时", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "进入的流体与_过滤器_不匹配时,智能管道将_阻止_其通过。", - "block.create.smart_fluid_pipe.tooltip.condition2": "与流体容器相邻时", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "_智能管道_会开始从_相邻的任何容器_中抽取与其过滤器匹配的流体。", - - "block.create.spout.tooltip": "注液器", - "block.create.spout.tooltip.summary": "一种用于_装罐_的机器。", - "block.create.spout.tooltip.condition1": "流体传输", - "block.create.spout.tooltip.behaviour1": "当下方放置类似_玻璃瓶_,_桶_这样的流体容器物品时,注液器会试图将自身存储的液体注入到下方的_流体容器物品_中。", - "block.create.spout.tooltip.condition2": "流体自动化", - "block.create.spout.tooltip.behaviour2": "注液器位于_传送带_或者_置物台_上方时,将自动为流水线上的_流体容器物品_进行_注液_。", - - "block.create.item_drain.tooltip": "分液池", - "block.create.item_drain.tooltip.summary": "一种用于_抽空流体容器物品_的置物台", - "block.create.item_drain.tooltip.condition1": "流体传输", - "block.create.item_drain.tooltip.behaviour1": "当从侧面导入诸如_桶_或_瓶子_之类的_流体容器物品_时,_分液池_将尝试将物品内的液体倒入其_自身的液体物品栏_中。空的_流体容器物品_将被弹出至_另一侧_。", - - "item.create.wand_of_symmetry.tooltip": "对称之杖", - "item.create.wand_of_symmetry.tooltip.summary": "完美地镜面复制工作区域内的方块到另一边", - "item.create.wand_of_symmetry.tooltip.condition1": "当在快捷栏时", - "item.create.wand_of_symmetry.tooltip.behaviour1": "持续进行镜面复制。", - "item.create.wand_of_symmetry.tooltip.control1": "当右击地面时", - "item.create.wand_of_symmetry.tooltip.action1": "_创建_或_移动_镜面。", - "item.create.wand_of_symmetry.tooltip.control2": "当右击空气时", - "item.create.wand_of_symmetry.tooltip.action2": "_删除_镜面。", - "item.create.wand_of_symmetry.tooltip.control3": "当潜行右击时", - "item.create.wand_of_symmetry.tooltip.action3": "打开_配置界面_。", - - "item.create.handheld_worldshaper.tooltip": "手持式环境塑形器", - "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手持工具", - "item.create.handheld_worldshaper.tooltip.control1": "当左击方块时", - "item.create.handheld_worldshaper.tooltip.action1": "将工具放置的方块设置为该方块。", - "item.create.handheld_worldshaper.tooltip.control2": "当右击方块时", - "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替换_目标方块。", - "item.create.handheld_worldshaper.tooltip.control3": "当潜行右击时", - "item.create.handheld_worldshaper.tooltip.action3": "打开工具的_配置界面_。", - - "item.create.tree_fertilizer.tooltip": "树木肥料", - "item.create.tree_fertilizer.tooltip.summary": "由多种矿物质复合而成的强大生长剂,能够加速普通树种的生长速度。", - "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", - "item.create.tree_fertilizer.tooltip.behaviour1": "使得该树_无视_它的_生长空间条件_,立刻长大。", - - "item.create.extendo_grip.tooltip": "伸缩机械手", - "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_。", - "item.create.extendo_grip.tooltip.condition1": "放置于副手栏时", - "item.create.extendo_grip.tooltip.behaviour1": "增加_主手_所使用物品的_接触距离_。", - - "item.create.filter.tooltip": "过滤器", - "item.create.filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品或者数个_相嵌套的过滤器_相匹配。", - "item.create.filter.tooltip.condition1": "放置于过滤插槽中时", - "item.create.filter.tooltip.behaviour1": "根据_过滤器_的配置,来_决定_物品流是否能够通过。", - "item.create.filter.tooltip.condition2": "当右击时", - "item.create.filter.tooltip.behaviour2": "打开_配置面板_。", - - "item.create.attribute_filter.tooltip": "属性过滤器", - "item.create.attribute_filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品_属性_以及_分类_相匹配。", - "item.create.attribute_filter.tooltip.condition1": "放置于过滤插槽中时", - "item.create.attribute_filter.tooltip.behaviour1": "根据_过滤器_的配置,来_决定_物品流是否能够通过。", - "item.create.attribute_filter.tooltip.condition2": "当右击时", - "item.create.attribute_filter.tooltip.behaviour2": "打开_配置面板_。", - - "item.create.empty_schematic.tooltip": "空白蓝图", - "item.create.empty_schematic.tooltip.summary": "可作为合成材料或在_蓝图桌_使用", - - "item.create.schematic.tooltip": "蓝图", - "item.create.schematic.tooltip.summary": "可将结构部署并放置到世界中,将蓝图全息影像部署完毕后,使用_蓝图加农炮_进行结构建造。", - "item.create.schematic.tooltip.condition1": "当手持蓝图时", - "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具调整位置", - "item.create.schematic.tooltip.control1": "当潜行右击时", - "item.create.schematic.tooltip.action1": "打开一个用于输入_精确坐标_的界面。", - - "item.create.schematic_and_quill.tooltip": "蓝图与笔", - "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构保存到 .nbt 文件。", - "item.create.schematic_and_quill.tooltip.condition1": "第一步", - "item.create.schematic_and_quill.tooltip.behaviour1": "手持蓝图与笔右击选择两个对角点", - "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "对准选定区域,按住 Ctrl 键并滑动鼠标滚轮,可以调整选区的大小,右击保存。", - "item.create.schematic_and_quill.tooltip.control1": "右击", - "item.create.schematic_and_quill.tooltip.action1": "选取一个对角点/确认保存。", - "item.create.schematic_and_quill.tooltip.control2": "按住 Ctrl ", - "item.create.schematic_and_quill.tooltip.action2": "可在_空中_选择点,_滑动滚轮_可调整距离。", - "item.create.schematic_and_quill.tooltip.control3": "当潜行右击时", - "item.create.schematic_and_quill.tooltip.action3": "_重置_并删除选区。", - - "block.create.schematicannon.tooltip": "蓝图加农炮", - "block.create.schematicannon.tooltip.summary": "发射方块,重新构建已在世界中部署的_蓝图_,会使用相邻箱子中的物品进行填充,_火药_作为燃料。", - "block.create.schematicannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_", - - "block.create.schematic_table.tooltip": "蓝图桌", - "block.create.schematic_table.tooltip.summary": "将保存的蓝图图写入_空白蓝图_", - "block.create.schematic_table.tooltip.condition1": "放入空白蓝图时", - "block.create.schematic_table.tooltip.behaviour1": "可从 Schematics 文件夹中上传所选文件。", - - "item.create.goggles.tooltip": "工程师护目镜", - "item.create.goggles.tooltip.summary": "一副可以扩增显示_动力学信息_的实用眼镜。", - "item.create.goggles.tooltip.condition1": "当装备时", - "item.create.goggles.tooltip.behaviour1": "根据对应动力组件的_转速等级_,显示它的_颜色指示器_,也会显示这个组件的_应力影响_以及_应力量_。", - "item.create.goggles.tooltip.condition2": "当看向仪表时", - "item.create.goggles.tooltip.behaviour2": "将会显示与仪表相连的网络的_转速_、_应力_等详细信息。", - "item.create.goggles.tooltip.condition3": "当看向流体容器时", - "item.create.goggles.tooltip.behaviour3": "显示出方块的_容量_细节,以及其中包含的所有_流体_。", - - "item.create.wrench.tooltip": "扳手", - "item.create.wrench.tooltip.summary": "操控动力组件的使用工具。可用于_旋转_,_拆除_以及_配置_组件。", - "item.create.wrench.tooltip.control1": "当右击_动力方块_时", - "item.create.wrench.tooltip.action1": "以点击的面为轴心_旋转_点击的方块", - "item.create.wrench.tooltip.control2": "当潜行右击时", - "item.create.wrench.tooltip.action2": "会_拆除动力组件_并将其移动到你的背包中。", - - "block.create.nozzle.tooltip": "分散网", - "block.create.nozzle.tooltip.summary": "依附在鼓风机上,能够将鼓风机的效果分散到_各个方向_。", - - "block.create.cuckoo_clock.tooltip": "布谷鸟闹钟", - "block.create.cuckoo_clock.tooltip.summary": "精致的工艺品,能够记录时间", - "block.create.cuckoo_clock.tooltip.condition1": "接入动力时", - "block.create.cuckoo_clock.tooltip.behaviour1": "显示_当前时间_并且一天会咕咕两次。_中午_咕咕一次,_黄昏可以睡觉_的时候咕咕一次 ", - - "block.create.turntable.tooltip": "转盘", - "block.create.turntable.tooltip.summary": "让旋转力给你带来一场刺激的旋转风车体验。", - - "block.create.portable_fluid_interface.tooltip": "移动流体接口", - "block.create.portable_fluid_interface.tooltip.summary": "为动力活塞、装配矿车、旋转轴承、滑轮_等运动结构_设计的_流体接口_,_运动结构_和_固定结构_之间的流体交换站,两个接口会面时将_自动对接_,且必须彼此隔开 1-2 个方块。", - "block.create.portable_fluid_interface.tooltip.condition1": "装配在运动结构上时", - "block.create.portable_fluid_interface.tooltip.behaviour1": "移动到能够满足与_固定结构_上的_移动式流体接口_对接的条件后,运动结构会_短暂地停下_,开始对接,并直接与_运动结构_上的_流体储罐_交互,进行流体的_导入导出_。", - "block.create.portable_fluid_interface.tooltip.condition2": "通入红石信号时时", - "block.create.portable_fluid_interface.tooltip.behaviour2": "立即断开任何处于激活状态的连接。", - - "block.create.stockpile_switch.tooltip": "存量转换器", - "block.create.stockpile_switch.tooltip.summary": "根据连接的容器中_储存物品_的数量切换红石信号强度。自带有过滤槽,与_比较器_不同的是,你可以配置_存量转换器_信号反转的_阈值_。", - "block.create.stockpile_switch.tooltip.condition1": "当右击时", - "block.create.stockpile_switch.tooltip.behaviour1": "打开_配置界面_。", - - "block.create.content_observer.tooltip": "物品侦测器", - "block.create.content_observer.tooltip.summary": "检测_容器_和_传送带_中过滤器匹配的物品。当在_物品栏_,_传送带_或者_溜槽所容物_中侦测到匹配的物品时,此组件将发出_红石信号_。当观察到的漏斗_转移匹配的物品_时,此组件将发出_红石脉冲_。", - - "block.create.adjustable_crate.tooltip": "可调节板条箱", - "block.create.adjustable_crate.tooltip.summary": "该箱子支持玩家对其容量进行调整,最大可以容纳_16组_物品。支持_红石比较器_。", - "block.create.adjustable_crate.tooltip.condition1": "UNLOCALIZED: When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "UNLOCALIZED: Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "创造板条箱", - "block.create.creative_crate.tooltip.summary": "这种_储存容器_可以无限地复制任何物品。它还可以移除附近的_蓝图加农炮_的材料需求。", - "block.create.creative_crate.tooltip.condition1": "当标记了物品时", - "block.create.creative_crate.tooltip.behaviour1": "任何从容器中_提取_的物品都是_无限量的_,而任何_放置_到容器中的物品都会被_送入虚空_", - - "block.create.controller_rail.tooltip": "控制铁轨", - "block.create.controller_rail.tooltip.summary": "一种_汇流的,受红石信号影响的_铁轨,可以_较好地控制_经过矿车的_移动速度_。", - "block.create.controller_rail.tooltip.condition1": "通入红石信号时时", - "block.create.controller_rail.tooltip.behaviour1": "根据信号强度_加速_或_减速_经过的矿车。还会将红石信号传递到相邻的控制铁轨。向两个控制铁轨通入不同等级的红石信号,两者中间的轨道会受到以此为区间的连续等级的红石信号的激活。", - - "item.create.sand_paper.tooltip": "砂纸", - "item.create.sand_paper.tooltip.summary": "用来_打磨_物品的砂纸,可以用_机械手_来实现自动化。", - "item.create.sand_paper.tooltip.condition1": "使用时", - "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_准心所指_的物品。", - - "item.create.builders_tea.tooltip": "建造工茶饮", - "item.create.builders_tea.tooltip.summary": "饮下这杯完美茶饮,开启神清气爽的一天。可以回复_饥饿值_并获得_急迫_效果。", - - "item.create.refined_radiance.tooltip": "光辉石", - "item.create.refined_radiance.tooltip.summary": "一种用_光辉_锻造的化合物材料。", - - "item.create.shadow_steel.tooltip": "暗影钢", - "item.create.shadow_steel.tooltip.summary": "一种用_虚空_锻造的化合物材料。", - - "item.create.minecart_coupling.tooltip": "矿车连轴器", - "item.create.minecart_coupling.tooltip.summary": "将多个_矿车_或运输结构链接在一起,构成雄伟的火车。", - "item.create.minecart_coupling.tooltip.condition1": "作用与矿车时", - "item.create.minecart_coupling.tooltip.behaviour1": "将两个矿车耦合在一起,在移动时将它们保持_恒定的距离_。", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "这东西还没有做完!", - "create.tooltip.randomWipDescription0": "别把这玩意给熊孩子", - "create.tooltip.randomWipDescription1": "每次你使用这个东西,都会让一只无辜的熊猫丢掉性命,每!一!次!", - "create.tooltip.randomWipDescription2": "使用后果自负", - "create.tooltip.randomWipDescription3": "(摇手指)这可不是你在找的物品,走开吧", - "create.tooltip.randomWipDescription4": "自爆模式已启动,10,9,8..。", - "create.tooltip.randomWipDescription5": "相信我,你现在已经没有回头路了。", - "create.tooltip.randomWipDescription6": "如果你使用这个东西,那么本作者与它造成的任何后果没有责任。", - "create.tooltip.randomWipDescription7": "这玩意不是给你用的,换个吧", - "create.tooltip.randomWipDescription8": "试试就逝世。", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "按住 [%1$s] 开始思索", - "create.ponder.subject": "情景主题", - "create.ponder.pondering": "思索...", - "create.ponder.identify_mode": "名称显示模式开,[%1$s]来继续思索", - "create.ponder.associated": "关联词条", - "create.ponder.close": "思索结束", - "create.ponder.identify": "显示方块名称", - "create.ponder.next": "下一情景", - "create.ponder.previous": "前一情景", - "create.ponder.replay": "重放", - "create.ponder.think_back": "回想", - "create.ponder.slow_text": "舒适阅读", - "create.ponder.shared.movement_anchors": "有了底盘和强力胶,移动起大型结构轻轻松松。", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "潜行 +", - "create.ponder.shared.storage_on_contraption": "与装置相接的存储空间,会自动将装置遇到的掉落物拾取到空间内。", - "create.ponder.shared.behaviour_modify_wrench": "可以用扳手调整它的行为。", - "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "动力源:16 R", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "动力源", - "create.ponder.tag.kinetic_sources.description": "能够发生动力的组件。", - "create.ponder.tag.contraption_actor": "装置执行组件", - "create.ponder.tag.contraption_actor.description": "能在移动的装置上执行特殊功能的组件", - "create.ponder.tag.arm_targets": "机械臂的工作目标", - "create.ponder.tag.arm_targets.description": "该组件可做为机械臂的输入或者输出点。", - "create.ponder.tag.logistics": "物品运输", - "create.ponder.tag.logistics.description": "该组件可以协助物品运输", - "create.ponder.tag.movement_anchor": "运动源泉", - "create.ponder.tag.movement_anchor.description": "有了它,运动装置才得以可能,它可以以数种方式使相接的结构运动起来。", - "create.ponder.tag.creative": "创造模式", - "create.ponder.tag.creative.description": "总有些东西是生存模式得不到的。", - "create.ponder.tag.kinetic_relays": "动力方块", - "create.ponder.tag.kinetic_relays.description": "用于传递旋转力的组件。", - "create.ponder.tag.windmill_sails": "风车轴承的帆", - "create.ponder.tag.windmill_sails.description": "在进行风车组装时会被算入风车旋转力的方块,这些方块的效能都是一样的。", - "create.ponder.tag.contraption_assembly": "方块连接物件", - "create.ponder.tag.contraption_assembly.description": "将各个组件连接以便同时运动的物件", - "create.ponder.tag.decoration": "装饰", - "create.ponder.tag.decoration.description": "装饰是这些组件的常见用法。", - "create.ponder.tag.kinetic_appliances": "动力设备", - "create.ponder.tag.kinetic_appliances.description": "这些组件可以利用旋转力进行工作。", - "create.ponder.tag.redstone": "逻辑组件", - "create.ponder.tag.redstone.description": "这些组件会在红石工程中发挥大用处。", - "create.ponder.tag.fluids": "流体操纵器械", - "create.ponder.tag.fluids.description": "这些组件可以用于传递流体,以及利用流体进行工作。", - - "create.ponder.adjustable_pulse_repeater.header": "使用可调节脉冲中继器控制信号发送", - "create.ponder.adjustable_pulse_repeater.text_1": "可调节脉冲中继器在一段延时之后会发出一道短时脉冲", - "create.ponder.adjustable_pulse_repeater.text_2": "滑动滚轮即可更改延时时间", - "create.ponder.adjustable_pulse_repeater.text_3": "延时配置范围的上限为 30 分钟", - - "create.ponder.adjustable_repeater.header": "使用可调节中继器控制信号发送", - "create.ponder.adjustable_repeater.text_1": "可调节中继器与常规的中继器的行为较为相似", - "create.ponder.adjustable_repeater.text_2": "它们会进行一段时间的充能,时长为设定的时间...", - "create.ponder.adjustable_repeater.text_3": "...然后以同样的时长逐渐退出充能状态", - "create.ponder.adjustable_repeater.text_4": "滑动滚轮即可更改充能时间", - "create.ponder.adjustable_repeater.text_5": "延时配置范围的上限为 30 分钟", - - "create.ponder.analog_lever.header": "使用模拟拉杆控制信号发送", - "create.ponder.analog_lever.text_1": "要想使得红石信号源信号强度精确且占地面积小,模拟拉杆不可少。", - "create.ponder.analog_lever.text_2": "右击可以提升输出模拟信号的强度", - "create.ponder.analog_lever.text_3": "潜行右击将会减少输出模拟信号的强度", - - "create.ponder.andesite_tunnel.header": "安山隧道用法", - "create.ponder.andesite_tunnel.text_1": "安山隧道可用于遮掩传送带", - "create.ponder.andesite_tunnel.text_2": "只要在漏斗的侧边加装上安山隧道...", - "create.ponder.andesite_tunnel.text_3": "...路过的所有物品堆都会被精准地拣出一个物品", - "create.ponder.andesite_tunnel.text_4": "剩下的物品则不受影响,继续前进", - - "create.ponder.basin.header": "工作盆内物品处理", - "create.ponder.basin.text_1": "一个可以对放入的物品以及流体进行处理的盆", - "create.ponder.basin.text_2": "处理完毕后,工作盆会尝试从它的底面进行产物输出", - "create.ponder.basin.text_3": "若在正确的位置上放置了有效的组件,工作盆会显示出一个输出龙头", - "create.ponder.basin.text_4": "有多种设备可以引发工作盆的这一行为", - "create.ponder.basin.text_5": "产物会被输出到盆下方的存储空间内", - "create.ponder.basin.text_6": "如果没有显示出输出龙头,那么盆内的产物将会一直留存在盆内", - "create.ponder.basin.text_7": "这在产物需要作为新一轮处理的原料时相当有用", - "create.ponder.basin.text_8": "需要输出的产物仍需从盆内取出", - "create.ponder.basin.text_9": "若是加装过滤,那么你便无需担心会将未被处理的物品抽取出来了", - - "create.ponder.bearing_modes.header": "动力轴承的运动模式", - "create.ponder.bearing_modes.text_1": "当结构停止时,轴承会控制结构以特定的角度停在最近的与格相对齐之处", - "create.ponder.bearing_modes.text_2": "你可以调整整个结构永不方块化,或者仅在结构的起始位置方块化", - - "create.ponder.belt_casing.header": "带机壳的传送带", - "create.ponder.belt_casing.text_1": "你可以用黄铜或者安山机壳装饰你的传送带", - "create.ponder.belt_casing.text_2": "使用扳手即可移除机壳", - - "create.ponder.belt_connector.header": "传送带用法", - "create.ponder.belt_connector.text_1": "手持传送带右击两根传动杆,可以将两根杆连接起来。", - "create.ponder.belt_connector.text_2": "如果不小心选错了,潜行右击即可取消选择", - "create.ponder.belt_connector.text_3": "你也可以在传送带的中间加装额外的传动杆", - "create.ponder.belt_connector.text_4": "通过传送带相连的传动杆,会以相同的转速以及方向进行旋转", - "create.ponder.belt_connector.text_5": "加装的传动杆可以用扳手拆下来", - "create.ponder.belt_connector.text_6": "传送带亦可染色", - - "create.ponder.belt_directions.header": "传送带的有效连接方向", - "create.ponder.belt_directions.text_1": "传送带的连接方向并不是任意的", - "create.ponder.belt_directions.text_2": "1. 可以水平连接", - "create.ponder.belt_directions.text_3": "2. 可以对角连接", - "create.ponder.belt_directions.text_4": "3. 可以垂直连接", - "create.ponder.belt_directions.text_5": "4. 还可以水平连接竖直放置的传动杆", - "create.ponder.belt_directions.text_6": "以上为所有可能的连接方向。传送带的连接范围为 2 到 20 格", - - "create.ponder.belt_transport.header": "在物流中使用传送带", - "create.ponder.belt_transport.text_1": "运动的传送带可以运输物品以及其他实体", - "create.ponder.belt_transport.text_2": "空手右击传送带,即可将其上的物品拿下来。", - - "create.ponder.blaze_burner.header": "烈焰人燃烧室补喂", - "create.ponder.blaze_burner.text_1": "烈焰人燃烧室可以为工作盆的物品处理提供热量", - "create.ponder.blaze_burner.text_2": "因而,你需要喂给室内的烈焰人一些可燃物品", - "create.ponder.blaze_burner.text_3": "如果喂给了它烈焰蛋糕,它还能达到更强的热力等级", - "create.ponder.blaze_burner.text_4": "你可以用机械手或者机械臂进行自动化补喂", - - "create.ponder.brass_funnel.header": "黄铜漏斗", - "create.ponder.brass_funnel.text_1": "安山岩漏斗一次只能提取出一个物品。", - "create.ponder.brass_funnel.text_2": "黄铜漏斗可以一次提取一组物品。", - "create.ponder.brass_funnel.text_3": "对着过滤槽滑动滚轮,还可以精确调节黄铜漏斗的提取数量。", - "create.ponder.brass_funnel.text_4": "对着过滤槽使用某个物品,可以限制漏斗的行为,使其只传输匹配的物品。", - - "create.ponder.brass_tunnel.header": "黄铜隧道用法", - "create.ponder.brass_tunnel.text_1": "黄铜隧道可以遮掩住你的传送带", - "create.ponder.brass_tunnel.text_2": "隧道的每一个开口面都有过滤槽", - "create.ponder.brass_tunnel.text_3": "在输入处的过滤槽仅会阻挡住不匹配的物品", - "create.ponder.brass_tunnel.text_4": "输出处的过滤槽可用于以种类为依据的物品整理", - "create.ponder.brass_tunnel.text_5": "如果有数种匹配的物品通过,那么隧道的分配模式将会决定这些物品何去何从", - "create.ponder.brass_tunnel.text_6": "连接了平行传送带的黄铜隧道,会将隧道、传送带组成一个组", - "create.ponder.brass_tunnel.text_7": "输入组内的物品会被分配到所有组内连接的对象中", - "create.ponder.brass_tunnel.text_8": "在这一情况下,你仍可以将物品直接输入到隧道方块中", - - "create.ponder.brass_tunnel_modes.header": "黄铜隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_1": "使用扳手即可调节隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_10": "“同步输入”是黄铜隧道的一种特殊设定", - "create.ponder.brass_tunnel_modes.text_11": "只有在组内全部的隧道都有一个等待通过的物品时,物品才能通过此隧道", - "create.ponder.brass_tunnel_modes.text_12": "这确保了所有受影响的传送带能够以相同的速率进行物品补给", - "create.ponder.brass_tunnel_modes.text_2": "“分流”会尝试将物品堆分流传输到可用的输出端", - "create.ponder.brass_tunnel_modes.text_3": "如果某个输出端无法容纳更多的物品,那么此出口不纳入分流的运算中", - "create.ponder.brass_tunnel_modes.text_4": "“强制分流”不会跳过某个输出端,而是一直等待着此输出端能够容纳更多物品,才会继续物品传输", - "create.ponder.brass_tunnel_modes.text_5": "“轮询调度”会保持物品堆完整,循环检索各个输出口,满足条件后将物品堆全部送入 ", - "create.ponder.brass_tunnel_modes.text_6": "与分流类似,如果输出口无法容纳更多物品,那它会被跳过", - "create.ponder.brass_tunnel_modes.text_7": "“强制轮询调度”不会跳过输出口", - "create.ponder.brass_tunnel_modes.text_8": "“最近优先”会将物品优先送入距离输入口更近的输出口", - "create.ponder.brass_tunnel_modes.text_9": "“随机”会随机选择一个输出口,一次性送入所有物品", - - "create.ponder.cart_assembler.header": "使用矿车装配站组装运动结构", - "create.ponder.cart_assembler.text_1": "矿车装配站会将它所连接的结构安装到矿车上", - "create.ponder.cart_assembler.text_2": "若没有通入红石信号,它会将矿车装置解散为方块的形式", - "create.ponder.cart_assembler.text_3": "对着矿车使用你的扳手,装置会变为可搬运的形式", - - "create.ponder.cart_assembler_dual.header": "组装连接结构", - "create.ponder.cart_assembler_dual.text_1": "若两个装配矿车分享了同一个结构", - "create.ponder.cart_assembler_dual.text_2": "给其中的任意一方的矿车装配站通入红石信号,都会创建出连接装置", - "create.ponder.cart_assembler_dual.text_3": "两辆矿车的此时行为与用矿车连轴器连接在一起时十分相似", - - "create.ponder.cart_assembler_modes.header": "矿车装置的方向设定", - "create.ponder.cart_assembler_modes.text_1": "矿车装置会随着矿车的运动而发生转向", - "create.ponder.cart_assembler_modes.text_2": "如果装配结构的方向锁定了,那么结构的方向将不再改变", - - "create.ponder.cart_assembler_rails.header": "另外几种矿车以及铁轨", - "create.ponder.cart_assembler_rails.text_1": "放置在普通轨道上的矿车装配站并不会影响路过矿车装置的运动", - "create.ponder.cart_assembler_rails.text_2": "如果放置在充能或控制铁轨上且没有通入红石信号,那么路过的矿车将会停在此处", - "create.ponder.cart_assembler_rails.text_3": "另外的几种矿车可以当作锚来使用", - "create.ponder.cart_assembler_rails.text_4": "熔炉矿车会试图始终保持燃烧状态,并试图从路过的存储空间内抽取燃料", - - "create.ponder.chain_drive.header": "使用链式传动箱传动旋转力", - "create.ponder.chain_drive.text_1": "同一行上的链式传动箱会相互间传递旋转", - "create.ponder.chain_drive.text_2": "所有以此种方式连接的传动杆都会以相同的方向进行旋转", - "create.ponder.chain_drive.text_3": "同一行的传动箱内的任意一个传动箱,旋转 90 度之后仍可以正常工作", - - "create.ponder.chain_gearshift.header": "利用可调节链式传动箱进行转速调节", - "create.ponder.chain_gearshift.text_1": "未充能的可调节链式传动箱与普通链式传动箱无异", - "create.ponder.chain_gearshift.text_2": "当被充能时,它将会把旋转力以双倍转速传动至其他链式传动箱", - "create.ponder.chain_gearshift.text_3": "若被充能的可调节传动箱并不是动力输入端,则它会减半转速", - "create.ponder.chain_gearshift.text_4": "在这两种情况中,同一组的其他链式传动箱的转速都为被充能的可调节链式传动箱的两倍", - "create.ponder.chain_gearshift.text_5": "转速的倍率可在 x1 和 x2 间根据红石信号的强弱来精确调整", - "create.ponder.chain_gearshift.text_6": "12 RPM", - - "create.ponder.chute.header": "使用溜槽向下运输物品", - "create.ponder.chute.text_1": "溜槽可在两个存储空间之间垂直传送物品", - "create.ponder.chute.text_2": "使用扳手右击可以在溜槽上设置观察窗", - "create.ponder.chute.text_3": "对着另一个溜槽的侧面放置另一个溜槽,将会放置下一个呈对角状的溜槽", - - "create.ponder.chute_upward.header": "使用溜槽向上运输物品", - "create.ponder.chute_upward.text_1": "在溜槽上或下方使用鼓风机时,物品会根据风的方向向上或下移动", - "create.ponder.chute_upward.text_2": "佩戴工程师护目镜时,你可以看见物品的移动方向", - "create.ponder.chute_upward.text_3": "在溜槽“被挡住的”底端,物品只能从侧边进行提取或输入", - - "create.ponder.clockwork_bearing.header": "使用时钟轴承来移动结构", - "create.ponder.clockwork_bearing.text_1": "时钟轴承黏附其正前方的方块", - "create.ponder.clockwork_bearing.text_2": "当接受旋转力时,其附着结构会根据游戏内时间来进行旋转", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "右击可以来激活/停止结构运动", - "create.ponder.clockwork_bearing.text_6": "在时针前方可添加第二个结构", - "create.ponder.clockwork_bearing.text_7": "请确保这两个结构没有互相被例如强力胶等方式黏附", - "create.ponder.clockwork_bearing.text_8": "第二个结构将会作为分针进行旋转", - - "create.ponder.clutch.header": "使用离合器控制旋转力", - "create.ponder.clutch.text_1": "离合器能将旋转力直线传递", - "create.ponder.clutch.text_2": "当被红石充能,离合器会断开动力传递", - - "create.ponder.cog_speedup.header": "使用齿轮来换挡变速", - "create.ponder.cog_speedup.text_1": "大齿轮与小齿轮可以斜向传递动力", - "create.ponder.cog_speedup.text_2": "从大齿轮传递动力至小齿轮时,转速翻倍", - "create.ponder.cog_speedup.text_3": "从小齿轮传递动力至大齿轮时,转速减半", - - "create.ponder.cogwheel.header": "使用齿轮来传递旋转力", - "create.ponder.cogwheel.text_1": "齿轮会将动力传递至临近的齿轮", - "create.ponder.cogwheel.text_2": "以此方式连接的齿轮,旋转方向相反", - - "create.ponder.creative_motor.header": "使用创造马达发生旋转", - "create.ponder.creative_motor.text_1": "创造马达不仅能够手动调配输出旋转力,而且体积相当小巧", - "create.ponder.creative_motor.text_2": "对其背侧面板滚动滑轮,可以改变马达的输出旋转转速", - - "create.ponder.crushing_wheels.header": "使用粉碎轮处理物品", - "create.ponder.crushing_wheels.text_1": "一对粉碎轮,磨物快又准", - "create.ponder.crushing_wheels.text_2": "接入的旋转必须使得这两个轮子从上到下啮合转动", - "create.ponder.crushing_wheels.text_3": "扔入或者放入的物品都会被粉碎处理", - "create.ponder.crushing_wheels.text_4": "你也可以使用自动化方案进行物品的输入以及拾取", - - "create.ponder.deployer.header": "使用机械手", - "create.ponder.deployer.text_1": "接入旋转力,机械手便可以模仿玩家的交互行为", - "create.ponder.deployer.text_10": "对着机械手的前部右击,即可将手上的物品给予它使用", - "create.ponder.deployer.text_11": "物品也可以自动化输入到机械手内", - "create.ponder.deployer.text_12": "机械手附带一个过滤槽", - "create.ponder.deployer.text_13": "当设定了过滤后,只有当它的手中物品与过滤相匹配时,它才会工作", - "create.ponder.deployer.text_14": "只有与过滤匹配的物品才可输入...", - "create.ponder.deployer.text_15": "...只有不匹配的物品方可被抽取出来", - "create.ponder.deployer.text_2": "它只会与它正前方两格处的位置进行交互", - "create.ponder.deployer.text_3": "放在在它面前的方块不会阻拦它的工作", - "create.ponder.deployer.text_4": "机械手可以:", - "create.ponder.deployer.text_5": "放置方块", - "create.ponder.deployer.text_6": "使用物品", - "create.ponder.deployer.text_7": "激活方块", - "create.ponder.deployer.text_8": "采收方块", - "create.ponder.deployer.text_9": "以及攻击生物", - - "create.ponder.deployer_contraption.header": "在装置上使用机械手", - "create.ponder.deployer_contraption.text_1": "当机械手在移动的结构上时...", - "create.ponder.deployer_contraption.text_2": "机械手会对每一个经过的方块使用装置中任意容器内的物品", - "create.ponder.deployer_contraption.text_3": "可以通过过滤槽来指定其从存储空间中抽取的物品", - - "create.ponder.deployer_modes.header": "机械手的模式", - "create.ponder.deployer_modes.text_1": "在默认情况下,机械手模仿玩家的右击交互", - "create.ponder.deployer_modes.text_2": "使用扳手可以将模式调整为模仿玩家的左击交互", - - "create.ponder.deployer_redstone.header": "使用红石控制机械手", - "create.ponder.deployer_redstone.text_1": "当被红石充能时,机械手会停止工作", - "create.ponder.deployer_redstone.text_2": "在停止工作前,机械手会完成当前正在进行的工作周期", - "create.ponder.deployer_redstone.text_3": "因此,通入单次负红石脉冲可以精确控制机械手,使其每次只进行单个周期的工作", - - "create.ponder.depot.header": "使用置物台", - "create.ponder.depot.text_1": "置物台可以被当成一个“静止的”传送带原件使用", - "create.ponder.depot.text_2": "右击可以手动放置或取下物品", - "create.ponder.depot.text_3": "与传送带一样,它也可以将其内的物品转送到其他设备中进行加工...", - "create.ponder.depot.text_4": "...同时物品也可以被机械手存取", - - "create.ponder.empty_blaze_burner.header": "使用空的烈焰人燃烧室", - "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰人燃烧室右击烈焰人来抓取烈焰人", - "create.ponder.empty_blaze_burner.text_2": "或者,也可以通过右击烈焰人刷怪笼来填充激活烈焰人燃烧室", - "create.ponder.empty_blaze_burner.text_3": "这样,你便有了一个可供部分机器加工的热源", - "create.ponder.empty_blaze_burner.text_4": "如果是为了美观,空的烈焰人燃烧室也可以被打火石点燃", - "create.ponder.empty_blaze_burner.text_5": "但是,这样的热源不足以给机器提加工供足够的热量", - - "create.ponder.fan_direction.header": "鼓风机的气流", - "create.ponder.fan_direction.text_1": "鼓风机使用旋转力来制造气流", - "create.ponder.fan_direction.text_2": "流速以及方向由所接收旋转力的强弱以及方向而定", - - "create.ponder.fan_processing.header": "使用鼓风机加工物品", - "create.ponder.fan_processing.text_1": "当气流吹过熔岩时,气流会被加热", - "create.ponder.fan_processing.text_2": "热气流中的物品会被冶炼", - "create.ponder.fan_processing.text_3": "但在气流中的食物会被直接烧成灰", - "create.ponder.fan_processing.text_4": "而想要烹饪食物,必须要通过吹过火焰的气流来烟熏食物", - "create.ponder.fan_processing.text_5": "当气流吹过水后,便可用于洗涤物品", - "create.ponder.fan_processing.text_6": "这种加工方法可以做到不少有趣的事情", - "create.ponder.fan_processing.text_7": "鼓风机的转速对加工的速度没有影响,只影响气流的吹拂距离", - "create.ponder.fan_processing.text_8": "而那些放置在置物台或者传送带上的物品,鼓风机也是可以处理的", - - "create.ponder.fan_source.header": "使用鼓风机来产生旋转力", - "create.ponder.fan_source.text_1": "如鼓风机的扇叶向下朝着热源放置,鼓风机可以借此产生旋转力", - "create.ponder.fan_source.text_2": "当鼓风机接受红石信号后,它便会向外供给旋转力", - - "create.ponder.flywheel.header": "使用飞轮来产生旋转力", - "create.ponder.flywheel.text_1": "飞轮和熔炉引擎必须配套使用,方可产生旋转力", - "create.ponder.flywheel.text_2": "如此产生的旋转力具有非常大的应力值", - "create.ponder.flywheel.text_3": "使用高炉会使得引擎的效率翻倍", - - "create.ponder.funnel_compat.header": "漏斗的兼容性", - "create.ponder.funnel_compat.text_1": "漏斗可以与一些其他组件互动", - "create.ponder.funnel_compat.text_2": "动力锯", - "create.ponder.funnel_compat.text_3": "置物台", - "create.ponder.funnel_compat.text_4": "分液池", - - "create.ponder.funnel_direction.header": "物流方向", - "create.ponder.funnel_direction.text_1": "直接放置时,漏斗会将物品从容器中取出", - "create.ponder.funnel_direction.text_2": "潜行时放置时,漏斗会将物品置入容器中", - "create.ponder.funnel_direction.text_3": "使用扳手可以改变漏斗的存/取模式", - "create.ponder.funnel_direction.text_4": "对大多数朝向放置的漏斗都具有此特性", - "create.ponder.funnel_direction.text_5": "在传送带末端放置的漏斗会根据传送带的传动方向存/取物品", - - "create.ponder.funnel_intro.header": "使用漏斗", - "create.ponder.funnel_intro.text_1": "用漏斗来存取物品栏内的物品,可谓又快又好", - - "create.ponder.funnel_redstone.header": "红石信号控制", - "create.ponder.funnel_redstone.text_1": "红石信号会使漏斗停止工作", - - "create.ponder.funnel_transfer.header": "直接运输", - "create.ponder.funnel_transfer.text_1": "漏斗无法将物品传输到非开放式的物品栏中", - "create.ponder.funnel_transfer.text_2": "溜槽和智能溜槽更适用于这样的场景", - "create.ponder.funnel_transfer.text_3": "水平传输也是如此,也许传送带更方便快捷", - - "create.ponder.furnace_engine.header": "使用熔炉引擎生产旋转力", - "create.ponder.furnace_engine.text_1": "熔炉引擎会在与其相连熔炉工作时生产旋转力", - "create.ponder.furnace_engine.text_2": "如此产生的旋转力具有非常大的应力值", - "create.ponder.furnace_engine.text_3": "使用高炉会使得引擎的效率翻倍", - - "create.ponder.gantry_carriage.header": "使用起重机取物器", - "create.ponder.gantry_carriage.text_1": "起重机取物器可以被放置在起重机杆上,并且可以沿着起重机杆运动", - "create.ponder.gantry_carriage.text_2": "起重机可以移动其黏附的方块", - - "create.ponder.gantry_cascaded.header": "串联起重机", - "create.ponder.gantry_cascaded.text_1": "无需强力胶,取物器便可与起重机杆相连", - "create.ponder.gantry_cascaded.text_2": "即使是在移动的起重机杆上也是如此", - "create.ponder.gantry_cascaded.text_3": "因此,起重机系统可以串联起来,如此可以影响到多轴向的运动", - - "create.ponder.gantry_direction.header": "起重机移动方向", - "create.ponder.gantry_direction.text_1": "起重机杆可以有相反的方向", - "create.ponder.gantry_direction.text_2": "取物器的移动方向取决于起重机杆的方向", - "create.ponder.gantry_direction.text_3": "......以及起重机杆的旋转方向", - "create.ponder.gantry_direction.text_4": "在旋转传递中,此规则同样适用", - - "create.ponder.gantry_redstone.header": "起重机的力传递", - "create.ponder.gantry_redstone.text_1": "被红石信号激活的起重机,将不会移动其上的取物器", - "create.ponder.gantry_redstone.text_2": "作为替代,杆上的旋转力会传递到取物器的输出杆上", - - "create.ponder.gantry_shaft.header": "使用起重机杆", - "create.ponder.gantry_shaft.text_1": "起重机杆组成了起重机结构的基础。与其相接的载物器可以沿着杆进行移动。", - "create.ponder.gantry_shaft.text_2": "起重机结构可以移动与其相接的方块。", - - "create.ponder.gearbox.header": "使用十字齿轮箱传递旋转力", - "create.ponder.gearbox.text_1": "更改旋转轴,很容易使得整个旋转体系变得臃肿不堪", - "create.ponder.gearbox.text_2": "十字齿轮箱则是替代方案,它的体积更为小巧紧", - "create.ponder.gearbox.text_3": "侧边连接的传动杆,旋转方向与输入端一致", - "create.ponder.gearbox.text_4": "直线连接的传动杆,旋转方向会被反转", - - "create.ponder.gearshift.header": "使用反转齿轮箱控制旋转力", - "create.ponder.gearshift.text_1": "反转齿轮箱可以直线传输旋转", - "create.ponder.gearshift.text_2": "通入红石信号后,输出端的旋转方向会被反转", - - "create.ponder.hand_crank.header": "使用手摇曲柄产生旋转力", - "create.ponder.hand_crank.text_1": "玩家可以使用手摇曲柄来手动产生旋转力", - "create.ponder.hand_crank.text_2": "按住右键可以逆时针旋转它", - "create.ponder.hand_crank.text_3": "它产生的转速相对较高", - "create.ponder.hand_crank.text_4": "潜行长按右键可以顺时针旋转它", - - "create.ponder.large_cogwheel.header": "使用大齿轮传递旋转力", - "create.ponder.large_cogwheel.text_1": "大齿轮可以以特定的角度相互连接", - "create.ponder.large_cogwheel.text_2": "可以利用大齿轮变更旋转轴向", - - "create.ponder.linear_chassis_attachment.header": "使用机壳底盘黏合方块", - "create.ponder.linear_chassis_attachment.text_1": "它的开放面可以变为黏性面", - "create.ponder.linear_chassis_attachment.text_2": "再次点击黏性面,可以将它的相反面也变得具有黏性", - "create.ponder.linear_chassis_attachment.text_3": "空手潜行右击可以移除此面的黏性物", - "create.ponder.linear_chassis_attachment.text_4": "黏性面可以将此面前方的一长条方块黏住", - "create.ponder.linear_chassis_attachment.text_5": "使用扳手可以精确控制底盘的影响范围", - "create.ponder.linear_chassis_attachment.text_6": "按住 Ctrl 滑动滚轮,你可以一次性调节所有底盘的影响范围", - "create.ponder.linear_chassis_attachment.text_7": "若想让底盘的其他面也能粘方块,你需要用到强力胶", - "create.ponder.linear_chassis_attachment.text_8": "利用这些机制,任何形状的机制都可以像装置那样移动", - - "create.ponder.linear_chassis_group.header": "成组移动机壳底盘", - "create.ponder.linear_chassis_group.text_1": "相邻的机壳底盘可以相互连接在一起", - "create.ponder.linear_chassis_group.text_2": "其中的一个底盘若被移动,其余的底盘也会跟着移动", - "create.ponder.linear_chassis_group.text_3": "不同种类的底盘,或者是朝向不一致的底盘,将不会相连", - - "create.ponder.mechanical_arm.header": "配置动力臂", - "create.ponder.mechanical_arm.text_1": "你得在放置动力臂之前就配置好它的输入以及输出端", - "create.ponder.mechanical_arm.text_2": "手持动力臂右击某个存储空间,可以将其指定为目标", - "create.ponder.mechanical_arm.text_3": "再次右击可以将其在输入端(蓝色)以及输出端(橙色)之间切换", - "create.ponder.mechanical_arm.text_4": "左击此组件可以移除选择", - "create.ponder.mechanical_arm.text_5": "将动力臂放下来后,它会将此前选择的方块作为目标", - "create.ponder.mechanical_arm.text_6": "在有效范围内,机械臂可以有任意数量的输出以及输入端", - "create.ponder.mechanical_arm.text_7": "然而,并不是所有的存储空间可以被直接交互", - "create.ponder.mechanical_arm.text_8": "在此情况下,漏斗和置物台可以解决此问题", - - "create.ponder.mechanical_arm_filtering.header": "过滤动力臂的输出端", - "create.ponder.mechanical_arm_filtering.text_1": "输入", - "create.ponder.mechanical_arm_filtering.text_2": "输出", - "create.ponder.mechanical_arm_filtering.text_3": "有时,你会想着利用某种过滤限制动力臂的目标", - "create.ponder.mechanical_arm_filtering.text_4": "动力臂自身并不提供任何过滤选项", - "create.ponder.mechanical_arm_filtering.text_5": "然而,若将黄铜漏斗作为目标,则漏斗的过滤槽则可以应用至动力臂上", - "create.ponder.mechanical_arm_filtering.text_6": "动力臂足够智能,它不会去拿取那些它无法分配的物品", - - "create.ponder.mechanical_arm_modes.header": "动力臂的分配模式", - "create.ponder.mechanical_arm_modes.text_1": "输入", - "create.ponder.mechanical_arm_modes.text_2": "输出", - "create.ponder.mechanical_arm_modes.text_3": "若动力臂必须在数个有效的输出端之间作出选择...", - "create.ponder.mechanical_arm_modes.text_4": "...它会依照自己的设定选择特定的行为", - "create.ponder.mechanical_arm_modes.text_5": "手持扳手对其滑动滚轮,可以改变其配置", - "create.ponder.mechanical_arm_modes.text_6": "轮询调度模式很好理解,即循环输出至所有有效的输出端", - "create.ponder.mechanical_arm_modes.text_7": "如果某个输出端无法容纳更多物品,则它会被跳过", - "create.ponder.mechanical_arm_modes.text_8": "强制轮询调度不会跳过任何输出端,动力臂会一直等待,直到输出端有空位容纳物品输入", - "create.ponder.mechanical_arm_modes.text_9": "最近优先模式会使得动力臂先将物品输出至更早被选择的输出端", - - "create.ponder.mechanical_arm_redstone.header": "利用红石信号控制动力臂", - "create.ponder.mechanical_arm_redstone.text_1": "通入红石信号后,动力臂会停止工作", - "create.ponder.mechanical_arm_redstone.text_2": "在停止工作前,它会完成当前正在进行的工作周期", - "create.ponder.mechanical_arm_redstone.text_3": "因此,通入单次负红石脉冲可以精确控制动力臂,使其每次只进行单个周期的工作", - - "create.ponder.mechanical_bearing.header": "使用动力轴承移动结构", - "create.ponder.mechanical_bearing.text_1": "动力轴承会与其前方的方块黏合在一起", - "create.ponder.mechanical_bearing.text_2": "接收到旋转力后,它会将这一黏合结构组装为旋转装置", - - "create.ponder.mechanical_crafter.header": "设置动力合成器", - "create.ponder.mechanical_crafter.text_1": "动力合成器阵列可用于自动化任何合成配方的制作", - "create.ponder.mechanical_crafter.text_2": "使用扳手可以调控合成器的合成通路", - "create.ponder.mechanical_crafter.text_3": "所有的合成通路必须汇集到任意一侧的一个出口,整套合成器方可算是设置正确", - "create.ponder.mechanical_crafter.text_4": "输出产物会被放入位于出口的存储空间中", - "create.ponder.mechanical_crafter.text_5": "动力合成器的运转需要旋转力的供应", - "create.ponder.mechanical_crafter.text_6": "右击合成器正面,可以手动放入物品", - "create.ponder.mechanical_crafter.text_7": "一旦合成通路上的所有合成槽位都有了物品,合成就会开始", - "create.ponder.mechanical_crafter.text_8": "而对于那些没有完全占满所有合成器槽位的配方,你可以通入红石信号强制开启合成", - - "create.ponder.mechanical_crafter_connect.header": "为合成器连接物品栏", - "create.ponder.mechanical_crafter_connect.text_1": "合成器可以自动接受向其输入的物品", - "create.ponder.mechanical_crafter_connect.text_2": "对其背面使用扳手,可以连接合成器", - "create.ponder.mechanical_crafter_connect.text_3": "所有相连的合成器可以访问同一个位置的输入", - - "create.ponder.mechanical_crafter_covers.header": "盖住动力合成器的合成槽", - "create.ponder.mechanical_crafter_covers.text_1": "有些配方需要额外的合成器,来补足合成通路上的间隙", - "create.ponder.mechanical_crafter_covers.text_2": "使用合成槽盖板,合成器会在合成进行时的行为就如同一个空的合成槽位", - "create.ponder.mechanical_crafter_covers.text_3": "被盖住的合成器并不会阻断共享输入端的影响", - - "create.ponder.mechanical_drill.header": "使用动力钻头破坏方块", - "create.ponder.mechanical_drill.text_1": "当向其通入旋转力后,动力钻头会破坏它面前的方块", - "create.ponder.mechanical_drill.text_2": "它的挖掘速度取决于通入的旋转力转速", - - "create.ponder.mechanical_drill_contraption.header": "在装置中使用动力钻头", - "create.ponder.mechanical_drill_contraption.text_1": "在运动装置中使用动力钻头时...", - "create.ponder.mechanical_drill_contraption.text_2": "...它会破坏掉它撞上的方块", - - "create.ponder.mechanical_harvester.header": "在装置中使用动力收割机", - "create.ponder.mechanical_harvester.text_1": "在运动装置中使用动力收割机时...", - "create.ponder.mechanical_harvester.text_2": "它会采收其路径上的作物,并重置这些作物的生长进度", - - "create.ponder.mechanical_mixer.header": "使用动力搅拌器处理物品", - "create.ponder.mechanical_mixer.text_1": "使用搅拌器和工作盆,你可以自动化某些合成配方", - "create.ponder.mechanical_mixer.text_2": "有效配方包括各种无序合成配方,以及一些额外的配方", - "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰人燃烧室提供热量", - "create.ponder.mechanical_mixer.text_4": "过滤槽可用于解决两个配方相互冲突的情况", - - "create.ponder.mechanical_piston.header": "使用动力活塞移动结构", - "create.ponder.mechanical_piston.text_1": "动力活塞可以移动它前方的方块", - "create.ponder.mechanical_piston.text_2": "移动速度和方向取决于通入活塞的旋转力", - "create.ponder.mechanical_piston.text_3": "黏性动力活塞可以将相接的方块拉回来", - - "create.ponder.mechanical_piston_modes.header": "动力活塞的移动模式", - "create.ponder.mechanical_piston_modes.text_1": "一旦活塞停下,被移动的结构就会回退到方块状态", - "create.ponder.mechanical_piston_modes.text_2": "你也可以将其配置为从不方块化,或者只在起始位置方块化", - - "create.ponder.mechanical_plough.header": "在装置中使用动力犁", - "create.ponder.mechanical_plough.text_1": "在运动装置中使用动力犁时...", - "create.ponder.mechanical_plough.text_2": "...它会破坏掉那些不具有固体碰撞箱的方块", - "create.ponder.mechanical_plough.text_3": "此外,动力犁可以耕地", - "create.ponder.mechanical_plough.text_4": "...它也可以在不伤害实体的情况下推动它们", - - "create.ponder.mechanical_press.header": "使用动力辊轧机处理物品", - "create.ponder.mechanical_press.text_1": "动力辊轧机可以处理位于其下方的物品", - "create.ponder.mechanical_press.text_2": "在其下方丢入物品,或者将物品放在置物台上,都算作有效的物品输入", - "create.ponder.mechanical_press.text_3": "若物品被输入时正位于传送带上...", - "create.ponder.mechanical_press.text_4": "辊轧机会使物品停下,然后自动处理这一物品", - - "create.ponder.mechanical_press_compacting.header": "使用动力辊轧机压缩物品", - "create.ponder.mechanical_press_compacting.text_1": "对放置于工作盆内的物品进行辊轧,可以将这些物品压缩在一起", - "create.ponder.mechanical_press_compacting.text_2": "压缩意指任何同种物品填满了 2x2 或者 3x3 网格的配方,以及一些额外的配方", - "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰人燃烧室提供热量", - "create.ponder.mechanical_press_compacting.text_4": "过滤槽可用于解决两个配方相互冲突的情况", - - "create.ponder.mechanical_saw_breaker.header": "使用动力锯伐木", - "create.ponder.mechanical_saw_breaker.text_1": "向其通入旋转力后,动力锯可以直接砍伐掉它面前的树木", - "create.ponder.mechanical_saw_breaker.text_2": "想要一次性砍掉整棵树,锯子必须破坏掉树与地面连接的最后一个方块", - - "create.ponder.mechanical_saw_contraption.header": "在装置中使用动力锯", - "create.ponder.mechanical_saw_contraption.text_1": "若在运动装置中使用动力锯...", - "create.ponder.mechanical_saw_contraption.text_2": "...它会将撞到它的树木破坏掉", - - "create.ponder.mechanical_saw_processing.header": "使用动力锯处理物品", - "create.ponder.mechanical_saw_processing.text_1": "面向朝上的动力锯可以将物品处理为其变种", - "create.ponder.mechanical_saw_processing.text_2": "处理过后的物品的弹出方向始终与通入锯中的旋转转向相反", - "create.ponder.mechanical_saw_processing.text_3": "锯子可以", - "create.ponder.mechanical_saw_processing.text_4": "若输入原料有多种可能产物,你可以用动力锯上的过滤槽指定只产出某种产物", - "create.ponder.mechanical_saw_processing.text_5": "若没有使用过滤槽,动力锯会在各产物中按顺序循环输出", - - "create.ponder.millstone.header": "使用石磨处理物品", - "create.ponder.millstone.text_1": "石磨会对输入的物品进行磨制", - "create.ponder.millstone.text_2": "在其侧边使用齿轮与其相耦合,方可为其通入动力", - "create.ponder.millstone.text_3": "顶部可以丢入或者塞入物品", - "create.ponder.millstone.text_4": "一段时间过后,右击石磨可以拿出其中的产物", - "create.ponder.millstone.text_5": "产物的提取也是可以自动化的", - - "create.ponder.nixie_tube.header": "使用辉光管", - "create.ponder.nixie_tube.text_1": "通入红石信号后,辉光管会显示出红石信号的强度", - "create.ponder.nixie_tube.text_2": "使用命名牌在铁砧上为其命名,可以自定义它的显示文本", - - "create.ponder.piston_pole.header": "活塞延长杆", - "create.ponder.piston_pole.text_1": "若无相接的延长杆,动力活塞无法移动其他方块", - "create.ponder.piston_pole.text_2": "在其背面安装的延长杆长度,决定了活塞的推动范围", - - "create.ponder.portable_storage_interface.header": "装置存储交换", - "create.ponder.portable_storage_interface.text_1": "玩家无法与运动装置内的存储空间进行交互", - "create.ponder.portable_storage_interface.text_2": "这一组件可以在不停止装置的情况下与装置内的存储空间进行交互", - "create.ponder.portable_storage_interface.text_3": "放置第二个接口时,记得要与装置接口相隔 1 格或者 2 格的距离", - "create.ponder.portable_storage_interface.text_4": "当它们彼此经过时,它们会连接在一起", - "create.ponder.portable_storage_interface.text_5": "连接状态下,固定侧接口便会作为整个装置的存储空间代理", - "create.ponder.portable_storage_interface.text_6": "物品会被输入到装置内...", - "create.ponder.portable_storage_interface.text_7": "...或是从装置中提取出来", - "create.ponder.portable_storage_interface.text_8": "物品交换完毕后,装置仍然会停留在原地一小会,然后才会继续前行", - - "create.ponder.portable_storage_interface_redstone.header": "红石控制", - "create.ponder.portable_storage_interface_redstone.text_1": "通入红石信号可以阻止固定侧接口的连接行为", - - "create.ponder.powered_latch.header": "使用锁存器控制信号", - "create.ponder.powered_latch.text_1": "锁存器是一种可以用红石信号控制的拉杆", - "create.ponder.powered_latch.text_2": "后方输入的信号会将其设为开启状态", - "create.ponder.powered_latch.text_3": "侧边输入的信号会将其设为关闭状态", - "create.ponder.powered_latch.text_4": "你也可以手动切换其状态", - - "create.ponder.powered_toggle_latch.header": "使用转换锁存器控制信号", - "create.ponder.powered_toggle_latch.text_1": "转换锁存器是一种可以用红石信号控制的拉杆", - "create.ponder.powered_toggle_latch.text_2": "后方信号输入可以改变它的状态", - "create.ponder.powered_toggle_latch.text_3": "...开启或者是关闭", - "create.ponder.powered_toggle_latch.text_4": "你也可以手动切换其状态", - - "create.ponder.pulse_repeater.header": "使用脉冲中继器控制信号", - "create.ponder.pulse_repeater.text_1": "脉冲中继器会将所有通入的红石信号缩减为一次脉冲", - - "create.ponder.radial_chassis.header": "使用旋转底盘黏着方块", - "create.ponder.radial_chassis.text_1": "同一行上的旋转底盘会相互连接在一起", - "create.ponder.radial_chassis.text_2": "当其中的一个底盘被装置带动时,其余的底盘也会被带动", - "create.ponder.radial_chassis.text_3": "底盘的侧边可以变为黏性面", - "create.ponder.radial_chassis.text_4": "再次点击黏性面,可以让其所有面都变得带黏性", - "create.ponder.radial_chassis.text_5": "空手潜行右击可以移除其上的黏性物", - "create.ponder.radial_chassis.text_6": "若有物品与底盘的黏性面相接触...", - "create.ponder.radial_chassis.text_7": "...底盘便会与同层且位于半径内的所有可及方块黏着在一起", - "create.ponder.radial_chassis.text_8": "使用扳手可以精确指定底盘的影响范围", - "create.ponder.radial_chassis.text_9": "黏性面一侧的不可及方块不会被黏着", - - "create.ponder.redstone_contact.header": "接触式红石信号发生器", - "create.ponder.redstone_contact.text_1": "当两个接触式红石信号发生器面对面时,它们会发出红石信号", - "create.ponder.redstone_contact.text_2": "并且,若有一方位于运动装置上,此特性也能正常生效", - - "create.ponder.redstone_link.header": "使用无线红石信号终端", - "create.ponder.redstone_link.text_1": "无线红石信号终端可以无线传输红石信号", - "create.ponder.redstone_link.text_2": "潜行右击可以改变其接收模式", - "create.ponder.redstone_link.text_3": "手持扳手右击也可以", - "create.ponder.redstone_link.text_4": "接收端会发出由传输端发来的信号,有效距离为 128 格", - "create.ponder.redstone_link.text_5": "在它们所带的槽位中放上物品,可以为它们指定频道", - "create.ponder.redstone_link.text_6": "只有频道相互匹配的终端方可互通", - - "create.ponder.rope_pulley.header": "使用绳索滑轮移动结构", - "create.ponder.rope_pulley.text_1": "绳索滑轮在接受旋转力时可以垂直移动方块结构", - "create.ponder.rope_pulley.text_2": "移动的方向及速度取决于提供的转速", - - "create.ponder.rope_pulley_attachment.header": "绳索滑轮与装置一同运动", - "create.ponder.rope_pulley_attachment.text_1": "当绳索滑轮本身在装置中被带动时...", - "create.ponder.rope_pulley_attachment.text_2": "...它附着在滑轮上的结构会被滑轮拉着一同移动", - "create.ponder.rope_pulley_attachment.text_3": "注意,只有绳索滑轮停止工作时才能被移动", - - "create.ponder.rope_pulley_modes.header": "绳索滑轮的运动模式", - "create.ponder.rope_pulley_modes.text_1": "当绳索滑轮停止运动时,它所附属的移动结构便会方块化", - "create.ponder.rope_pulley_modes.text_2": "你可以调整整个结构永不方块化,或者仅在结构的初始位置方块化", - - "create.ponder.rotation_speed_controller.header": "使用转速控制器", - "create.ponder.rotation_speed_controller.text_1": "转速控制器将旋转力从其转轴传递至它上方的大齿轮", - "create.ponder.rotation_speed_controller.text_2": "在其侧面滚动鼠标滚轮,可以调节输出转速", - - "create.ponder.sail.header": "使用风帆来组装风车", - "create.ponder.sail.text_1": "风帆是制作风车的趁手材料", - "create.ponder.sail.text_2": "无需强力胶等黏附手段,它们便可自行互相连结", - "create.ponder.sail.text_3": "手持染料右击可对其染色", - "create.ponder.sail.text_4": "手持剪刀右击可剪除帆布,使其变回风帆框架", - - "create.ponder.sail_frame.header": "使用风帆框架来组装风车", - "create.ponder.sail_frame.text_1": "风帆框架是制作风车的趁手材料", - "create.ponder.sail_frame.text_2": "无需强力胶等黏附手段,它们便可自行互相连结", - - "create.ponder.sequenced_gearshift.header": "使用可编程齿轮箱来控制转速", - "create.ponder.sequenced_gearshift.text_1": "可编程齿轮箱能够根据玩家设置的预设时序表来传递旋转", - "create.ponder.sequenced_gearshift.text_2": "对其右击可以打开设置面板", - "create.ponder.sequenced_gearshift.text_3": "接受红石信号时,它会开始执行其内部已配置好的时序指令表", - "create.ponder.sequenced_gearshift.text_4": "当完成时序指令表后,它会进入待机状态,再次接受红石信号后,它才会再次执行时序指令表内容", - "create.ponder.sequenced_gearshift.text_5": "红石比较器可以读取当前时序指令表完成进度", - - "create.ponder.shaft.header": "使用传动杆传递旋转力", - "create.ponder.shaft.text_1": "传动杆能直线传递旋转力", - - "create.ponder.shaft_casing.header": "传动杆箱", - "create.ponder.shaft_casing.text_1": "安山或黄铜机壳,装饰传动杆的好伙伴", - - "create.ponder.smart_chute.header": "使用智能溜槽过滤物品", - "create.ponder.smart_chute.text_1": "智能溜槽是垂直溜槽的升级控制版", - "create.ponder.smart_chute.text_2": "当在其过滤槽内指定了物品后,溜槽只会传输这一指定标记的物品", - "create.ponder.smart_chute.text_3": "使用鼠标滚轮可以指定被过滤的物品数量", - "create.ponder.smart_chute.text_4": "通入红石信号,智能溜槽将会完全暂停工作", - - "create.ponder.speedometer.header": "使用速度表来监测转速", - "create.ponder.speedometer.text_1": "速度表能显示相接组件的转速", - "create.ponder.speedometer.text_2": "当佩戴工程师护目镜时,可以看到仪表所显示的更详细的数据", - "create.ponder.speedometer.text_3": "红石比较器可以根据速度表的数值输出不同强弱的红石信号", - - "create.ponder.stabilized_bearings.header": "装置固定朝向", - "create.ponder.stabilized_bearings.text_1": "当动力轴承在结构被带动时...", - "create.ponder.stabilized_bearings.text_2": "...它会确保它转盘的垂直朝向不变", - "create.ponder.stabilized_bearings.text_3": "跟默认的一样,动力轴承会黏着它前方的方块", - "create.ponder.stabilized_bearings.text_4": "这种情况下,它所黏着的子结构的垂直朝向也不会改变", - - "create.ponder.sticker.header": "使用黏着器来黏附方块", - "create.ponder.sticker.text_1": "你可以用红石信号来控制黏着器的行为", - "create.ponder.sticker.text_2": "当接受红石信号时,黏着器会黏着前方的方块", - "create.ponder.sticker.text_3": "如果黏着器以装置的形式移动,那么被黏着的方块也会一同移动", - "create.ponder.sticker.text_4": "再次接受红石信号时,它会断开与方块的黏连", - - "create.ponder.stressometer.header": "使用应力表来监测应力", - "create.ponder.stressometer.text_1": "应力表能显示当前动能网络内的应力信息", - "create.ponder.stressometer.text_2": "当佩戴工程师护目镜时,可以看到仪表所显示的更详细的数据", - "create.ponder.stressometer.text_3": "红石比较器可以根据应力表的数值输出不同强弱的红石信号", - - "create.ponder.super_glue.header": "使用强力胶来黏附方块", - "create.ponder.super_glue.text_1": "强力胶可以在任意两个方块间使用", - "create.ponder.super_glue.text_2": "当被粘合的方块被组装为装置时,他们会一起运动", - "create.ponder.super_glue.text_3": "当强力胶在副手时...", - "create.ponder.super_glue.text_4": "...新放置的方块会自动被黏附在所放置方块的面上", - "create.ponder.super_glue.text_5": "左击可以清除强力胶", - - "create.ponder.valve_handle.header": "使用阀门手轮产生旋转力", - "create.ponder.valve_handle.text_1": "玩家可以手动使用阀门手轮来产生旋转力", - "create.ponder.valve_handle.text_2": "右击可使它逆时针旋转", - "create.ponder.valve_handle.text_3": "它的转速慢而精确", - "create.ponder.valve_handle.text_4": "潜行右击可使它顺时针旋转", - "create.ponder.valve_handle.text_5": "可以通过染色来美化阀门手轮", - - "create.ponder.water_wheel.header": "使用水车产生旋转力", - "create.ponder.water_wheel.text_1": "水车利用临近的水流来进行应力发生", - "create.ponder.water_wheel.text_2": "水车接触水流的面越多,它的转速越高", - "create.ponder.water_wheel.text_3": "水车叶片应逆着水流方向摆放", - "create.ponder.water_wheel.text_4": "如果顺着水流摆放,它的效率则会降低", - - "create.ponder.weighted_ejector.header": "使用弹射置物台", - "create.ponder.weighted_ejector.text_1": "手持弹射置物台时,潜行时右击可以设置弹射目标位置", - "create.ponder.weighted_ejector.text_10": "现在,只有等被放置的物品数量等于所设定数量时,弹射置物台才会弹射物品", - "create.ponder.weighted_ejector.text_11": "当其他实体站在弹射置物台上时会被直接弹射", - "create.ponder.weighted_ejector.text_2": "现在,放置下的弹射置物台会将物品弹射至目标位置", - "create.ponder.weighted_ejector.text_3": "限制范围内的任意距离和高度均可作为有效目标地点", - "create.ponder.weighted_ejector.text_4": "但是,目标位置与置物台的连线,必须垂直于置物台的侧面", - "create.ponder.weighted_ejector.text_5": "如果没有设置有效目标位置,弹射置物台会直接将其前方一格设为默认目标位置", - "create.ponder.weighted_ejector.text_6": "提供旋转力可为其蓄力", - "create.ponder.weighted_ejector.text_7": "蓄力完毕后,放置在它上方的物品会被立刻弹射出去", - "create.ponder.weighted_ejector.text_8": "如果目标为容器,则弹射置物台会等待容器有位置后再弹射物品", - "create.ponder.weighted_ejector.text_9": "使用扳手可以调整弹射所要求的物品数量", - - "create.ponder.weighted_ejector_redstone.header": "使用红石控制弹射置物台", - "create.ponder.weighted_ejector_redstone.text_1": "当被红石充能时,弹射置物台停止工作", - "create.ponder.weighted_ejector_redstone.text_2": "此外,置物台弹射的瞬间可以被侦测器侦测", - - "create.ponder.weighted_ejector_tunnel.header": "使用弹射置物台来分流物品", - "create.ponder.weighted_ejector_tunnel.text_1": "与黄铜隧道搭配使用时,弹射置物台可以将物品以特定数量进行分流", - "create.ponder.weighted_ejector_tunnel.text_2": "首先,将黄铜隧道调整为“最近优先”模式,从而让它优先侧面输出", - "create.ponder.weighted_ejector_tunnel.text_3": "置物台上所设置的物品数量则为被分流出去的物品数量", - "create.ponder.weighted_ejector_tunnel.text_4": "当所设置的物品数量被分流出去后...", - "create.ponder.weighted_ejector_tunnel.text_5": "...剩余的物品则会继续前进", - - "create.ponder.windmill_source.header": "使用风车轴承产生旋转力", - "create.ponder.windmill_source.text_1": "在风车轴承会黏附它前方的方块", - "create.ponder.windmill_source.text_2": "如果有足够多的风帆方块黏附于其上,那么整体结构便可被视为风车", - "create.ponder.windmill_source.text_3": "右击启动后,风车轴承会开始产生旋转力", - "create.ponder.windmill_source.text_4": "产生的转速取决于风帆方块的数量", - "create.ponder.windmill_source.text_5": "使用扳手可以调整风车的旋转方向", - "create.ponder.windmill_source.text_6": "任何时候右击轴承,都可以将其停止,这样方便于你修改风车的结构", - - "create.ponder.windmill_structure.header": "风车装置", - "create.ponder.windmill_structure.text_1": "任何有至少 8 个风帆方块的结构,都被视为一个有效的风车", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json deleted file mode 100644 index 02ba7cc45..000000000 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ /dev/null @@ -1,2127 +0,0 @@ -{ - "_": "Missing Localizations: 62", - "_": "->------------------------] Game Elements [------------------------<-", - "block.create.acacia_window": "相思木窗戶", - "block.create.acacia_window_pane": "相思木窗戶片", - "block.create.adjustable_chain_gearshift": "可調式鏈式變速箱", - "block.create.adjustable_crate": "可調式板條箱", - "block.create.adjustable_pulse_repeater": "可調式脈衝中繼器", - "block.create.adjustable_repeater": "可調式中繼器", - "block.create.analog_lever": "可調式拉桿", - "block.create.andesite_belt_funnel": "安山岩輸送帶漏斗", - "block.create.andesite_bricks": "安山岩磚", - "block.create.andesite_bricks_slab": "安山岩半磚", - "block.create.andesite_bricks_stairs": "安山岩樓梯", - "block.create.andesite_bricks_wall": "安山岩牆", - "block.create.andesite_casing": "安山岩機殼", - "block.create.andesite_cobblestone": "碎安山岩", - "block.create.andesite_cobblestone_slab": "碎安山岩半磚", - "block.create.andesite_cobblestone_stairs": "碎安山岩樓梯", - "block.create.andesite_cobblestone_wall": "碎安山岩牆", - "block.create.andesite_encased_shaft": "安山傳動軸箱", - "block.create.andesite_funnel": "安山岩漏斗", - "block.create.andesite_pillar": "豎紋安山岩", - "block.create.andesite_tunnel": "安山岩物品隧道", - "block.create.basin": "作業盆", - "block.create.belt": "輸送帶", - "block.create.birch_window": "白樺木窗戶", - "block.create.birch_window_pane": "白樺木窗戶片", - "block.create.black_sail": "黑色風帆", - "block.create.black_seat": "黑色坐墊", - "block.create.black_valve_handle": "黑色閥門開關", - "block.create.blaze_burner": "烈焰使者動力爐", - "block.create.blue_sail": "藍色風帆", - "block.create.blue_seat": "藍色坐墊", - "block.create.blue_valve_handle": "藍色閥門開關", - "block.create.brass_belt_funnel": "黃銅輸送帶漏斗", - "block.create.brass_block": "黃銅磚", - "block.create.brass_casing": "黃銅機殼", - "block.create.brass_encased_shaft": "黃銅傳動軸箱", - "block.create.brass_funnel": "黃銅漏斗", - "block.create.brass_tunnel": "黃銅物品隧道", - "block.create.brown_sail": "棕色風帆", - "block.create.brown_seat": "棕色坐墊", - "block.create.brown_valve_handle": "棕色閥門開關", - "block.create.cart_assembler": "礦車裝修站", - "block.create.chiseled_dark_scoria": "鏨製黑火成岩", - "block.create.chiseled_dolomite": "鏨製白雲石", - "block.create.chiseled_gabbro": "鏨製輝長岩", - "block.create.chiseled_limestone": "鏨製石灰岩", - "block.create.chiseled_scoria": "鏨製火成岩", - "block.create.chiseled_weathered_limestone": "鏨製風化石灰岩", - "block.create.chocolate": "巧克力", - "block.create.chute": "滑道", - "block.create.clockwork_bearing": "時鐘軸承", - "block.create.clutch": "離合器", - "block.create.cogwheel": "齒輪", - "block.create.content_observer": "物品偵測器", - "block.create.controller_rail": "控制鐵軌", - "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "block.create.copper_block": "銅磚", - "block.create.copper_casing": "銅機殼", - "block.create.copper_ore": "銅礦石", - "block.create.copper_shingles": "塊狀銅磚", - "block.create.copper_tiles": "菱形銅磚", - "block.create.copper_valve_handle": "銅製閥門開關", - "block.create.creative_crate": "創造板條箱", - "block.create.creative_fluid_tank": "創造液體儲存罐", - "block.create.creative_motor": "創造馬達", - "block.create.crimson_window": "赤紅窗戶", - "block.create.crimson_window_pane": "赤紅窗戶片", - "block.create.crushing_wheel": "粉碎輪", - "block.create.crushing_wheel_controller": "粉碎輪控制器", - "block.create.cuckoo_clock": "布穀鳥鐘", - "block.create.cyan_sail": "藍綠色風帆", - "block.create.cyan_seat": "藍綠色坐墊", - "block.create.cyan_valve_handle": "藍綠色閥門開關", - "block.create.dark_oak_window": "黑橡木窗戶", - "block.create.dark_oak_window_pane": "黑橡木窗戶片", - "block.create.dark_scoria": "黑火成岩", - "block.create.dark_scoria_bricks": "黑火成岩磚", - "block.create.dark_scoria_bricks_slab": "黑火成岩半磚", - "block.create.dark_scoria_bricks_stairs": "黑火成岩樓梯", - "block.create.dark_scoria_bricks_wall": "黑火成岩牆", - "block.create.dark_scoria_cobblestone": "黑火成岩碎石", - "block.create.dark_scoria_cobblestone_slab": "黑火成岩碎石半磚", - "block.create.dark_scoria_cobblestone_stairs": "黑火成岩碎石樓梯", - "block.create.dark_scoria_cobblestone_wall": "黑火成岩碎石牆", - "block.create.dark_scoria_pillar": "豎紋黑火成岩", - "block.create.deployer": "機器手", - "block.create.depot": "置物臺", - "block.create.diorite_bricks": "閃長岩磚", - "block.create.diorite_bricks_slab": "閃長岩半磚", - "block.create.diorite_bricks_stairs": "閃長岩樓梯", - "block.create.diorite_bricks_wall": "閃長岩牆", - "block.create.diorite_cobblestone": "碎閃長岩", - "block.create.diorite_cobblestone_slab": "碎閃長岩半磚", - "block.create.diorite_cobblestone_stairs": "碎閃長岩樓梯", - "block.create.diorite_cobblestone_wall": "碎閃長岩牆", - "block.create.diorite_pillar": "豎紋閃長岩", - "block.create.dolomite": "白雲石", - "block.create.dolomite_bricks": "白雲石磚", - "block.create.dolomite_bricks_slab": "白雲石半磚", - "block.create.dolomite_bricks_stairs": "白雲石樓梯", - "block.create.dolomite_bricks_wall": "白雲石牆", - "block.create.dolomite_cobblestone": "碎白雲石", - "block.create.dolomite_cobblestone_slab": "碎白雲石半磚", - "block.create.dolomite_cobblestone_stairs": "碎白雲石樓梯", - "block.create.dolomite_cobblestone_wall": "碎白雲石牆", - "block.create.dolomite_pillar": "豎紋白雲石", - "block.create.encased_chain_drive": "鏈式傳動箱", - "block.create.encased_fan": "鼓風機", - "block.create.encased_fluid_pipe": "液體管道箱", - "block.create.fancy_andesite_bricks": "方紋安山岩磚", - "block.create.fancy_andesite_bricks_slab": "方紋安山岩半磚", - "block.create.fancy_andesite_bricks_stairs": "方紋安山岩樓梯", - "block.create.fancy_andesite_bricks_wall": "方紋安山岩牆", - "block.create.fancy_dark_scoria_bricks": "方紋黑火成岩", - "block.create.fancy_dark_scoria_bricks_slab": "方紋黑火成岩半磚", - "block.create.fancy_dark_scoria_bricks_stairs": "方紋黑火成岩樓梯", - "block.create.fancy_dark_scoria_bricks_wall": "方紋黑火成岩牆", - "block.create.fancy_diorite_bricks": "方紋閃長岩", - "block.create.fancy_diorite_bricks_slab": "方紋閃長岩半磚", - "block.create.fancy_diorite_bricks_stairs": "方紋閃長岩樓梯", - "block.create.fancy_diorite_bricks_wall": "方紋閃長岩牆", - "block.create.fancy_dolomite_bricks": "方紋白雲石", - "block.create.fancy_dolomite_bricks_slab": "方紋白雲石半磚", - "block.create.fancy_dolomite_bricks_stairs": "方紋白雲石樓梯", - "block.create.fancy_dolomite_bricks_wall": "方紋白雲石牆", - "block.create.fancy_gabbro_bricks": "方紋輝長岩", - "block.create.fancy_gabbro_bricks_slab": "方紋輝長岩半磚", - "block.create.fancy_gabbro_bricks_stairs": "方紋輝長岩樓梯", - "block.create.fancy_gabbro_bricks_wall": "方紋輝長岩牆", - "block.create.fancy_granite_bricks": "方紋花崗岩", - "block.create.fancy_granite_bricks_slab": "方紋花崗岩半磚", - "block.create.fancy_granite_bricks_stairs": "方紋花崗岩樓梯", - "block.create.fancy_granite_bricks_wall": "方紋花崗岩牆", - "block.create.fancy_limestone_bricks": "方紋石灰岩", - "block.create.fancy_limestone_bricks_slab": "方紋石灰岩半磚", - "block.create.fancy_limestone_bricks_stairs": "方紋石灰岩樓梯", - "block.create.fancy_limestone_bricks_wall": "方紋石灰岩牆", - "block.create.fancy_scoria_bricks": "方紋火成岩", - "block.create.fancy_scoria_bricks_slab": "方紋火成岩半磚", - "block.create.fancy_scoria_bricks_stairs": "方紋火成岩樓梯", - "block.create.fancy_scoria_bricks_wall": "方紋火成岩牆", - "block.create.fancy_weathered_limestone_bricks": "方紋風化石灰岩", - "block.create.fancy_weathered_limestone_bricks_slab": "方紋風化石灰岩半磚", - "block.create.fancy_weathered_limestone_bricks_stairs": "方紋風化石灰岩樓梯", - "block.create.fancy_weathered_limestone_bricks_wall": "方紋風化石灰岩牆", - "block.create.fluid_pipe": "液體管道", - "block.create.fluid_tank": "液體儲存罐", - "block.create.fluid_valve": "液體閥門", - "block.create.flywheel": "飛輪", - "block.create.framed_glass": "邊框玻璃", - "block.create.framed_glass_pane": "邊框玻璃片", - "block.create.furnace_engine": "熔煉引擎", - "block.create.gabbro": "輝長岩", - "block.create.gabbro_bricks": "輝長岩磚", - "block.create.gabbro_bricks_slab": "輝長岩半磚", - "block.create.gabbro_bricks_stairs": "輝長岩樓梯", - "block.create.gabbro_bricks_wall": "輝長岩牆", - "block.create.gabbro_cobblestone": "碎輝長岩", - "block.create.gabbro_cobblestone_slab": "碎輝長岩半磚", - "block.create.gabbro_cobblestone_stairs": "碎輝長岩樓梯", - "block.create.gabbro_cobblestone_wall": "碎輝長岩牆", - "block.create.gabbro_pillar": "豎紋輝長岩", - "block.create.gantry_carriage": "門式起重機", - "block.create.gantry_shaft": "門式起重機滑道", - "block.create.gearbox": "齒輪箱", - "block.create.gearshift": "變速箱", - "block.create.glass_fluid_pipe": "玻璃液體管道", - "block.create.granite_bricks": "花崗岩", - "block.create.granite_bricks_slab": "花崗岩半磚", - "block.create.granite_bricks_stairs": "花崗岩樓梯", - "block.create.granite_bricks_wall": "花崗岩牆", - "block.create.granite_cobblestone": "碎花崗岩", - "block.create.granite_cobblestone_slab": "碎花崗岩半磚", - "block.create.granite_cobblestone_stairs": "碎花崗岩樓梯", - "block.create.granite_cobblestone_wall": "碎花崗岩牆", - "block.create.granite_pillar": "豎紋花崗岩", - "block.create.gray_sail": "灰色風帆", - "block.create.gray_seat": "灰色坐墊", - "block.create.gray_valve_handle": "灰色閥門開關", - "block.create.green_sail": "綠色風帆", - "block.create.green_seat": "綠色坐墊", - "block.create.green_valve_handle": "綠色閥門開關", - "block.create.hand_crank": "手搖把手", - "block.create.honey": "蜂蜜", - "block.create.horizontal_framed_glass": "豎直邊框玻璃", - "block.create.horizontal_framed_glass_pane": "豎直邊框玻璃片", - "block.create.hose_pulley": "軟管滑輪", - "block.create.item_drain": "分液池", - "block.create.jungle_window": "叢林木窗戶", - "block.create.jungle_window_pane": "叢林木窗戶片", - "block.create.large_cogwheel": "大齒輪", - "block.create.layered_andesite": "疊層安山岩", - "block.create.layered_dark_scoria": "疊層黑火成岩", - "block.create.layered_diorite": "疊層閃長岩", - "block.create.layered_dolomite": "疊層白雲石", - "block.create.layered_gabbro": "疊層輝長岩", - "block.create.layered_granite": "疊層花崗岩", - "block.create.layered_limestone": "疊層石灰岩", - "block.create.layered_scoria": "疊層火成岩", - "block.create.layered_weathered_limestone": "疊層風化石灰岩", - "block.create.light_blue_sail": "淡藍色風帆", - "block.create.light_blue_seat": "淡藍色坐墊", - "block.create.light_blue_valve_handle": "淡藍色閥門開關", - "block.create.light_gray_sail": "淡灰色風帆", - "block.create.light_gray_seat": "淡灰色坐墊", - "block.create.light_gray_valve_handle": "淡灰色閥門開關", - "block.create.lime_sail": "黃綠色風帆", - "block.create.lime_seat": "黃綠色坐墊", - "block.create.lime_valve_handle": "黃綠色閥門開關", - "block.create.limesand": "石灰沙", - "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩", - "block.create.limestone_bricks_slab": "石灰岩半磚", - "block.create.limestone_bricks_stairs": "石灰岩樓梯", - "block.create.limestone_bricks_wall": "石灰岩牆", - "block.create.limestone_cobblestone": "碎石灰岩", - "block.create.limestone_cobblestone_slab": "碎石灰岩半磚", - "block.create.limestone_cobblestone_stairs": "碎石灰岩樓梯", - "block.create.limestone_cobblestone_wall": "碎石灰岩牆", - "block.create.limestone_pillar": "豎紋石灰岩", - "block.create.linear_chassis": "機殼底盤", - "block.create.lit_blaze_burner": "烈焰使者動力爐(已啟動)", - "block.create.magenta_sail": "洋紅色風帆", - "block.create.magenta_seat": "洋紅色坐墊", - "block.create.magenta_valve_handle": "洋紅色閥門開關", - "block.create.mechanical_arm": "機械手臂", - "block.create.mechanical_bearing": "機械軸承", - "block.create.mechanical_crafter": "機械合成器", - "block.create.mechanical_drill": "機械鑽頭", - "block.create.mechanical_harvester": "機械收割機", - "block.create.mechanical_mixer": "機械攪拌器", - "block.create.mechanical_piston": "機械活塞", - "block.create.mechanical_piston_head": "機械活塞頭", - "block.create.mechanical_plough": "機械犁", - "block.create.mechanical_press": "機械液壓機", - "block.create.mechanical_pump": "機械幫浦", - "block.create.mechanical_saw": "機械切割機", - "block.create.metal_bracket": "金屬支架", - "block.create.millstone": "石磨", - "block.create.minecart_anchor": "礦車錨", - "block.create.mossy_andesite": "青苔安山岩", - "block.create.mossy_dark_scoria": "青苔黑火成岩", - "block.create.mossy_diorite": "青苔閃長岩", - "block.create.mossy_dolomite": "青苔白雲石", - "block.create.mossy_gabbro": "青苔輝長岩", - "block.create.mossy_granite": "青苔花崗岩", - "block.create.mossy_limestone": "青苔石灰岩", - "block.create.mossy_scoria": "青苔火成岩", - "block.create.mossy_weathered_limestone": "青苔風化石灰岩", - "block.create.mysterious_cuckoo_clock": "神秘布穀鳥鐘", - "block.create.natural_scoria": "天然火成岩", - "block.create.nixie_tube": "真空管顯示器", - "block.create.nozzle": "鼓風機噴嘴", - "block.create.oak_window": "橡木窗戶", - "block.create.oak_window_pane": "橡木窗戶片", - "block.create.orange_sail": "橙色風帆", - "block.create.orange_seat": "橙色坐墊", - "block.create.orange_valve_handle": "橙色閥門開關", - "block.create.ornate_iron_window": "華麗鐵窗戶", - "block.create.ornate_iron_window_pane": "華麗鐵窗戶片", - "block.create.overgrown_andesite": "長草的安山岩", - "block.create.overgrown_dark_scoria": "長草的黑火成岩", - "block.create.overgrown_diorite": "長草的閃長岩", - "block.create.overgrown_dolomite": "長草的白雲石", - "block.create.overgrown_gabbro": "長草的輝長岩", - "block.create.overgrown_granite": "長草的花崗岩", - "block.create.overgrown_limestone": "長草的石灰岩", - "block.create.overgrown_scoria": "長草的火成岩", - "block.create.overgrown_weathered_limestone": "長草的風化石灰岩", - "block.create.paved_andesite": "安山岩鋪路石", - "block.create.paved_andesite_slab": "安山岩鋪路石半磚", - "block.create.paved_andesite_stairs": "安山岩鋪路石樓梯", - "block.create.paved_andesite_wall": "安山岩鋪路石牆", - "block.create.paved_dark_scoria": "黑火成岩鋪路石", - "block.create.paved_dark_scoria_slab": "黑火成岩鋪路石半磚", - "block.create.paved_dark_scoria_stairs": "黑火成岩鋪路石樓梯", - "block.create.paved_dark_scoria_wall": "黑火成岩鋪路石牆", - "block.create.paved_diorite": "閃長岩鋪路石", - "block.create.paved_diorite_slab": "閃長岩鋪路石半磚", - "block.create.paved_diorite_stairs": "閃長岩鋪路石樓梯", - "block.create.paved_diorite_wall": "閃長岩鋪路石牆", - "block.create.paved_dolomite": "白雲石鋪路石", - "block.create.paved_dolomite_slab": "白雲石鋪路石半磚", - "block.create.paved_dolomite_stairs": "白雲石鋪路石樓梯", - "block.create.paved_dolomite_wall": "白雲石鋪路石牆", - "block.create.paved_gabbro": "輝長岩鋪路石", - "block.create.paved_gabbro_slab": "輝長岩鋪路石半磚", - "block.create.paved_gabbro_stairs": "輝長岩鋪路石樓梯", - "block.create.paved_gabbro_wall": "輝長岩鋪路石牆", - "block.create.paved_granite": "花崗岩鋪路石", - "block.create.paved_granite_slab": "花崗岩鋪路石半磚", - "block.create.paved_granite_stairs": "花崗岩鋪路石樓梯", - "block.create.paved_granite_wall": "花崗岩鋪路石牆", - "block.create.paved_limestone": "石灰岩鋪路石", - "block.create.paved_limestone_slab": "石灰岩鋪路石半磚", - "block.create.paved_limestone_stairs": "石灰岩鋪路石樓梯", - "block.create.paved_limestone_wall": "石灰岩鋪路石牆", - "block.create.paved_scoria": "火成岩鋪路石", - "block.create.paved_scoria_slab": "火成岩鋪路石半磚", - "block.create.paved_scoria_stairs": "火成岩鋪路石樓梯", - "block.create.paved_scoria_wall": "火成岩鋪路石牆", - "block.create.paved_weathered_limestone": "風化石灰岩鋪路石", - "block.create.paved_weathered_limestone_slab": "風化石灰岩鋪路石半磚", - "block.create.paved_weathered_limestone_stairs": "風化石灰岩鋪路石樓梯", - "block.create.paved_weathered_limestone_wall": "風化石灰岩鋪路石牆", - "block.create.pink_sail": "粉紅色風帆", - "block.create.pink_seat": "粉紅色坐墊", - "block.create.pink_valve_handle": "粉紅色閥門開關", - "block.create.piston_extension_pole": "活塞桿", - "block.create.polished_dark_scoria": "磨製黑火成岩", - "block.create.polished_dark_scoria_slab": "磨製黑火成岩半磚", - "block.create.polished_dark_scoria_stairs": "磨製黑火成岩樓梯", - "block.create.polished_dark_scoria_wall": "磨製黑火成岩牆", - "block.create.polished_dolomite": "磨製白雲石", - "block.create.polished_dolomite_slab": "磨製白雲石半磚", - "block.create.polished_dolomite_stairs": "磨製白雲石樓梯", - "block.create.polished_dolomite_wall": "磨製白雲石牆", - "block.create.polished_gabbro": "磨製輝長岩", - "block.create.polished_gabbro_slab": "磨製輝長岩半磚", - "block.create.polished_gabbro_stairs": "磨製輝長岩樓梯", - "block.create.polished_gabbro_wall": "磨製輝長岩牆", - "block.create.polished_limestone": "磨製石灰岩", - "block.create.polished_limestone_slab": "磨製石灰岩半磚", - "block.create.polished_limestone_stairs": "磨製石灰岩樓梯", - "block.create.polished_limestone_wall": "磨製石灰岩牆", - "block.create.polished_scoria": "磨製火成岩", - "block.create.polished_scoria_slab": "磨製火成岩半磚", - "block.create.polished_scoria_stairs": "磨製火成岩樓梯", - "block.create.polished_scoria_wall": "磨製火成岩牆", - "block.create.polished_weathered_limestone": "磨製風化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨製風化石灰岩半磚", - "block.create.polished_weathered_limestone_stairs": "磨製風化石灰岩樓梯", - "block.create.polished_weathered_limestone_wall": "磨製風化石灰岩牆", - "block.create.portable_fluid_interface": "移動式液體口", - "block.create.portable_storage_interface": "移動式物品口", - "block.create.powered_latch": "閂鎖器", - "block.create.powered_toggle_latch": "T型正反器", - "block.create.pulley_magnet": "滑輪磁鐵", - "block.create.pulse_repeater": "脈衝中繼器", - "block.create.purple_sail": "紫色風帆", - "block.create.purple_seat": "紫色坐墊", - "block.create.purple_valve_handle": "紫色閥門開關", - "block.create.radial_chassis": "旋轉底盤", - "block.create.red_sail": "紅色風帆", - "block.create.red_seat": "紅色坐墊", - "block.create.red_valve_handle": "紅色閥門開關", - "block.create.redstone_contact": "接觸式紅石訊號產生器", - "block.create.redstone_link": "無限紅石訊號機", - "block.create.refined_radiance_casing": "光輝機殼", - "block.create.reinforced_rail": "強化鐵軌", - "block.create.rope": "繩索", - "block.create.rope_pulley": "滑輪繩索", - "block.create.rotation_speed_controller": "轉速控制器", - "block.create.sail_frame": "風帆框架", - "block.create.schematic_table": "藍圖桌", - "block.create.schematicannon": "藍圖加農炮", - "block.create.scoria": "火成岩", - "block.create.scoria_bricks": "火成岩磚", - "block.create.scoria_bricks_slab": "火成岩半磚", - "block.create.scoria_bricks_stairs": "火成岩樓梯", - "block.create.scoria_bricks_wall": "火成岩牆", - "block.create.scoria_cobblestone": "碎火成岩", - "block.create.scoria_cobblestone_slab": "碎火成岩半磚", - "block.create.scoria_cobblestone_stairs": "碎火成岩樓梯", - "block.create.scoria_cobblestone_wall": "碎火成岩牆", - "block.create.scoria_pillar": "豎紋火成岩", - "block.create.secondary_linear_chassis": "機殼底盤2號", - "block.create.sequenced_gearshift": "可程式化齒輪箱", - "block.create.shadow_steel_casing": "暗影機殼", - "block.create.shaft": "傳動軸", - "block.create.smart_chute": "智慧滑道", - "block.create.smart_fluid_pipe": "智慧液體管道", - "block.create.speedometer": "速度計", - "block.create.spout": "液體灌注器", - "block.create.spruce_window": "雲杉木窗戶", - "block.create.spruce_window_pane": "雲杉木窗戶片", - "block.create.sticker": "方塊黏著器", - "block.create.sticky_mechanical_piston": "黏性機械活塞", - "block.create.stockpile_switch": "存量偵測器", - "block.create.stressometer": "動能錶", - "block.create.tiled_glass": "十字玻璃窗", - "block.create.tiled_glass_pane": "十字玻璃窗戶片", - "block.create.turntable": "轉盤", - "block.create.vertical_framed_glass": "豎直邊框玻璃", - "block.create.vertical_framed_glass_pane": "豎直邊框玻璃片", - "block.create.warped_window": "扭曲蕈木窗戶", - "block.create.warped_window_pane": "扭曲蕈木窗戶片", - "block.create.water_wheel": "水車", - "block.create.weathered_limestone": "風化石灰岩", - "block.create.weathered_limestone_bricks": "風化石灰岩磚", - "block.create.weathered_limestone_bricks_slab": "風化石灰岩半磚", - "block.create.weathered_limestone_bricks_stairs": "風化石灰岩樓梯", - "block.create.weathered_limestone_bricks_wall": "風化石灰岩牆", - "block.create.weathered_limestone_cobblestone": "碎風化石灰岩", - "block.create.weathered_limestone_cobblestone_slab": "碎風化石灰岩半磚", - "block.create.weathered_limestone_cobblestone_stairs": "碎風化石灰岩樓梯", - "block.create.weathered_limestone_cobblestone_wall": "碎風化石灰岩牆", - "block.create.weathered_limestone_pillar": "豎紋風化石灰岩", - "block.create.weighted_ejector": "物品彈射器", - "block.create.white_sail": "白色風帆", - "block.create.white_seat": "白色坐墊", - "block.create.white_valve_handle": "白色閥門開關", - "block.create.windmill_bearing": "風車軸承", - "block.create.wooden_bracket": "木製支架", - "block.create.yellow_sail": "黃色風帆", - "block.create.yellow_seat": "黃色坐墊", - "block.create.yellow_valve_handle": "黃色閥門開關", - "block.create.zinc_block": "鋅磚", - "block.create.zinc_ore": "鋅礦石", - "entity.create.contraption": "結構", - "entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "entity.create.gantry_contraption": "門式結構", - "entity.create.seat": "坐墊", - "entity.create.stationary_contraption": "固定結構", - "entity.create.super_glue": "強力膠", - "fluid.create.milk": "牛奶", - "fluid.create.potion": "藥水", - "fluid.create.tea": "茶", - "item.create.andesite_alloy": "安山合金", - "item.create.attribute_filter": "屬性過濾器", - "item.create.bar_of_chocolate": "巧克力棒", - "item.create.belt_connector": "輸送帶", - "item.create.blaze_cake": "熔岩蛋糕", - "item.create.blaze_cake_base": "熔岩蛋糕胚", - "item.create.brass_hand": "黃銅手部零件", - "item.create.brass_ingot": "黃銅錠", - "item.create.brass_nugget": "黃銅粒", - "item.create.brass_sheet": "黃銅板", - "item.create.builders_tea": "工人茶", - "item.create.chest_minecart_contraption": "裝修過的機械礦車", - "item.create.chocolate_bucket": "巧克力桶", - "item.create.chocolate_glazed_berries": "巧克力甜莓", - "item.create.chromatic_compound": "異彩化合物", - "item.create.cinder_flour": "地獄麵粉", - "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", - "item.create.copper_ingot": "銅錠", - "item.create.copper_nugget": "銅粒", - "item.create.copper_sheet": "銅板", - "item.create.crafter_slot_cover": "合成器蓋板", - "item.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint", - "item.create.crushed_aluminum_ore": "碎狀鋁礦石", - "item.create.crushed_brass": "碎狀黃銅", - "item.create.crushed_copper_ore": "碎狀銅礦石", - "item.create.crushed_gold_ore": "碎狀金礦石", - "item.create.crushed_iron_ore": "碎狀鐵礦石", - "item.create.crushed_lead_ore": "碎狀鉛礦石", - "item.create.crushed_nickel_ore": "碎狀鎳礦石", - "item.create.crushed_osmium_ore": "碎狀鋨礦石", - "item.create.crushed_platinum_ore": "碎狀白金礦石", - "item.create.crushed_quicksilver_ore": "碎狀水銀礦石", - "item.create.crushed_silver_ore": "碎狀銀礦石", - "item.create.crushed_tin_ore": "碎狀錫礦石", - "item.create.crushed_uranium_ore": "碎狀鈾礦石", - "item.create.crushed_zinc_ore": "碎狀鋅礦石", - "item.create.diving_boots": "UNLOCALIZED: Diving Boots", - "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", - "item.create.dough": "麵團", - "item.create.electron_tube": "真空管", - "item.create.empty_blaze_burner": "空的烈焰使者動力爐", - "item.create.empty_schematic": "空白藍圖", - "item.create.extendo_grip": "伸縮機械手", - "item.create.filter": "過濾器", - "item.create.furnace_minecart_contraption": "裝配過的機械礦車", - "item.create.goggles": "MR護目鏡", - "item.create.golden_sheet": "金板", - "item.create.handheld_worldshaper": "地形雕塑器", - "item.create.honey_bucket": "蜂蜜桶", - "item.create.honeyed_apple": "蜂蜜蘋果", - "item.create.integrated_circuit": "IC板", - "item.create.iron_sheet": "鐵板", - "item.create.lapis_sheet": "青金石板", - "item.create.linked_controller": "UNLOCALIZED: Linked Controller", - "item.create.minecart_contraption": "裝修過的礦車", - "item.create.minecart_coupling": "礦車連結器", - "item.create.polished_rose_quartz": "磨製玫瑰石英", - "item.create.powdered_obsidian": "黑曜石粉末", - "item.create.propeller": "扇葉", - "item.create.red_sand_paper": "紅砂紙", - "item.create.refined_radiance": "光輝石", - "item.create.rose_quartz": "玫瑰石英", - "item.create.sand_paper": "砂紙", - "item.create.schematic": "藍圖", - "item.create.schematic_and_quill": "藍圖與筆", - "item.create.shadow_steel": "暗影鋼", - "item.create.super_glue": "強力膠", - "item.create.sweet_roll": "甜捲捲", - "item.create.tree_fertilizer": "樹木肥料", - "item.create.vertical_gearbox": "豎直齒輪箱", - "item.create.wand_of_symmetry": "對稱杖", - "item.create.wheat_flour": "小麥粉", - "item.create.whisk": "攪拌器", - "item.create.wrench": "扳手", - "item.create.zinc_ingot": "鋅錠", - "item.create.zinc_nugget": "鋅粒", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "感謝你安裝機械動力模組,強烈建議您安裝JEI配合本模組遊玩", - "advancement.create.root.desc": "該來製作一些超棒的機械結構了!", - "advancement.create.andesite_alloy": "原始人類的合金替代品", - "advancement.create.andesite_alloy.desc": "機械動力有著許多的材料和合金,但受限於技術,原始的人類們暫時只能製作出安山合金", - "advancement.create.its_alive": "鮮活的機械生命", - "advancement.create.its_alive.desc": "首次使齒輪結構的旋轉。", - "advancement.create.shifting_gears": "換檔,加速,起飛!", - "advancement.create.shifting_gears.desc": "將大齒輪連接到小齒輪上,機械結構的轉速將會翻倍", - "advancement.create.overstressed": "過載", - "advancement.create.overstressed.desc": "首次使動能網路過載。", - "advancement.create.belt": "流水線作業", - "advancement.create.belt.desc": "用輸送帶連接兩個傳動軸", - "advancement.create.tunnel": "尋找掩護!", - "advancement.create.tunnel.desc": "在輸送帶上放上物品隧道。", - "advancement.create.splitter_tunnel": "分而治之", - "advancement.create.splitter_tunnel.desc": "用黃銅物品隧道設計一個分流器。", - "advancement.create.chute": "轟然倒塌", - "advancement.create.chute.desc": "放置一個滑道(垂直版本的輸送帶)。", - "advancement.create.upward_chute": "空中攔截", - "advancement.create.upward_chute.desc": "目睹拋出的物品飛入裝有風扇的滑道。", - "advancement.create.belt_funnel": "漏斗的垂簾", - "advancement.create.belt_funnel.desc": "將側向漏斗放在輸送帶或置物臺的上方。", - "advancement.create.belt_funnel_kiss": "比翼雙飛", - "advancement.create.belt_funnel_kiss.desc": "使兩個安裝在輸送帶上的漏斗相連。", - "advancement.create.fan": "機械氣槍", - "advancement.create.fan.desc": "飄浮在鼓風機吹出的氣流上", - "advancement.create.fan_lava": "空間加熱器", - "advancement.create.fan_lava.desc": "感受熔煉物品的氣流。", - "advancement.create.fan_water": "奇怪的洗滌", - "advancement.create.fan_water.desc": "被洗滌的氣流所吸引。", - "advancement.create.fan_smoke": "機械波紋管", - "advancement.create.fan_smoke.desc": "感受煙燻氣流。", - "advancement.create.wrench": "細部調整", - "advancement.create.wrench.desc": "做出一個方便調整方塊的板手", - "advancement.create.goggles": "動能,一目了然", - "advancement.create.goggles.desc": "做出一個能看到機械動能訊息的MR護目鏡", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一個速度計,並且戴上MR護目鏡來讀取數據", - "advancement.create.stressometer": "精密的動能控制", - "advancement.create.stressometer.desc": "放置一個動能錶,並且戴上MR護目鏡來讀取數據", - "advancement.create.aesthetics": "繁榮與美學!", - "advancement.create.aesthetics.desc": "將支架放在傳動軸,管道和齒輪上。", - "advancement.create.reinforced": "超級加固!", - "advancement.create.reinforced.desc": "在傳動軸,管道和輸送帶上使用機殼加固。", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一個水車並讓它開始旋轉", - "advancement.create.chocolate_wheel": "美味的動能源", - "advancement.create.chocolate_wheel.desc": "用融化的巧克力驅動水車。", - "advancement.create.lava_wheel": "風火輪", - "advancement.create.lava_wheel.desc": "它不應該有用的..。", - "advancement.create.cuckoo": "是時候了?", - "advancement.create.cuckoo.desc": "目睹布穀鳥鐘報就寢時間。", - "advancement.create.millstone": "攜帶式粉碎機", - "advancement.create.millstone.desc": "放置一個石磨並且為其供能", - "advancement.create.windmill": "微風拂過", - "advancement.create.windmill.desc": "組裝風車。", - "advancement.create.maxed_windmill": "強風襲來", - "advancement.create.maxed_windmill.desc": "組裝最大動能的風車。", - "advancement.create.andesite_casing": "安山時代", - "advancement.create.andesite_casing.desc": "使用安山合金和木頭來合成一個安山機殼", - "advancement.create.mechanical_drill": "堅若磐石", - "advancement.create.mechanical_drill.desc": "放置一個機械鑽頭並且為其供能", - "advancement.create.press": "'噹!'", - "advancement.create.press.desc": "使用液壓機來壓製一些板子", - "advancement.create.polished_rose_quartz": "粉紅鑽石", - "advancement.create.polished_rose_quartz.desc": "用砂紙將玫瑰石英磨至透明", - "advancement.create.electron_tube": "嗶~~嗶~~", - "advancement.create.electron_tube.desc": "製作一個可用來合成高級機器的真空管", - "advancement.create.mechanical_saw": "一刀兩斷", - "advancement.create.mechanical_saw.desc": "放置一個切割機並且為其供能", - "advancement.create.basin": "快到碗裡來", - "advancement.create.basin.desc": "放置一個作業盆,並且往裡面放些東西", - "advancement.create.mixer": "充分攪拌", - "advancement.create.mixer.desc": "將攪拌機放在作業盆上方,並且使其攪拌盆內的物品", - "advancement.create.blaze_burner": "活生生的壁爐", - "advancement.create.blaze_burner.desc": "獲得一個烈焰使者動力爐。", - "advancement.create.compact": "快樂壓縮", - "advancement.create.compact.desc": "使用液壓機在作業盆中壓製一些物品", - "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用粉碎鋅礦石和粉碎銅礦石來製作粉碎黃銅", - "advancement.create.brass_casing": "黃銅時代", - "advancement.create.brass_casing.desc": "用黃銅和木頭製作一個黃銅機殼", - "advancement.create.copper_casing": "銅時代", - "advancement.create.copper_casing.desc": "使用銅和木頭製作一個銅製機殼", - "advancement.create.spout": "裝填!", - "advancement.create.spout.desc": "觀察注液器灌滿物品。", - "advancement.create.spout_potion": "國際級啤酒大廠", - "advancement.create.spout_potion.desc": "觀察注液器注入藥水到玻璃瓶。", - "advancement.create.chocolate": "夢裡的世界", - "advancement.create.chocolate.desc": "獲取一桶熔融巧克力。", - "advancement.create.item_drain": "滾筒洗衣機", - "advancement.create.item_drain.desc": "觀察液體物品被分液池抽空。", - "advancement.create.chained_item_drain": "讓我們一起搖滾!", - "advancement.create.chained_item_drain.desc": "看著物品穿過多個分液池。", - "advancement.create.glass_pipe": "偷窺液體", - "advancement.create.glass_pipe.desc": "透過窗戶觀察液體在管道中流動。使用板手可打開直線液體管道的窗戶。", - "advancement.create.pipe_collision": "永不交會的溪流!", - "advancement.create.pipe_collision.desc": "觀察兩種液體在您的管道中會合", - "advancement.create.pipe_spill": "漏水啦!", - "advancement.create.pipe_spill.desc": "觀察管道的末端將液體排放到到外面。", - "advancement.create.hose_pulley": "工業排放", - "advancement.create.hose_pulley.desc": "放下一個軟管滑輪,觀察它排乾或充滿液體。", - "advancement.create.infinite_water": "抽取海洋", - "advancement.create.infinite_water.desc": "從足以被認為是無限的水源中抽水。", - "advancement.create.infinite_lava": "吸取行星的核心", - "advancement.create.infinite_lava.desc": "從廣闊的岩漿湖中抽出岩漿。", - "advancement.create.infinite_chocolate": "淹沒在幻想中", - "advancement.create.infinite_chocolate.desc": "從廣闊的巧克力海中抽出巧克力。", - "advancement.create.crafter": "自動化流水作業", - "advancement.create.crafter.desc": "放置一些機械合成臺並且為其供能", - "advancement.create.clockwork_bearing": "時差", - "advancement.create.clockwork_bearing.desc": "組裝安裝在發條軸承上的結構。", - "advancement.create.nixie_tube": "風格的跡象", - "advancement.create.nixie_tube.desc": "獲得真空管顯示器並放置。", - "advancement.create.deployer": "指爽沒?", - "advancement.create.deployer.desc": "放置並且啟動一個機械手。這可是你右手完美的複製品", - "advancement.create.speed_controller": "攻城屍討厭他!", - "advancement.create.speed_controller.desc": "放置一個轉速控制器,這是換檔的終極裝置。", - "advancement.create.flywheel": "工廠之心", - "advancement.create.flywheel.desc": "將引擎成功連接到飛輪。", - "advancement.create.overstress_flywheel": "壓力過大", - "advancement.create.overstress_flywheel.desc": "超載熔爐引擎。", - "advancement.create.integrated_circuit": "複雜的運算", - "advancement.create.integrated_circuit.desc": "合成IC板。", - "advancement.create.mechanical_arm": "忙碌的手!", - "advancement.create.mechanical_arm.desc": "製作機械手臂,選擇輸入和輸出,放置並給它動能; 然後看著它完成所有你交代的工作。", - "advancement.create.musical_arm": "沒人能在我的BGM裡打敗我!", - "advancement.create.musical_arm.desc": "使用機械手臂播放唱片。", - "advancement.create.arm_many_targets": "你是要累死我?", - "advancement.create.arm_many_targets.desc": "配置一隻有十個或更多輸出位置的機械手臂。", - "advancement.create.arm_blaze_burner": "燃燒吧!烈焰使者!", - "advancement.create.arm_blaze_burner.desc": "指揮機械手臂給烈焰使者動力爐投食。", - "advancement.create.fist_bump": "朋友,來擊拳", - "advancement.create.fist_bump.desc": "使兩個機械手互相碰拳", - "advancement.create.crushing_wheel": "一對大傢伙", - "advancement.create.crushing_wheel.desc": "製作一對能更快粉碎物品的粉碎輪", - "advancement.create.blaze_cake": "糖份超標", - "advancement.create.blaze_cake.desc": "幫烈焰使者動力爐烤一份特別的蛋糕。", - "advancement.create.chromatic_compound": "兩極材料", - "advancement.create.chromatic_compound.desc": "製作一個異彩化合物", - "advancement.create.shadow_steel": "自虛空的歸來的寶石", - "advancement.create.shadow_steel.desc": "製作暗影鋼", - "advancement.create.refined_radiance": "閃耀著純白的聖光", - "advancement.create.refined_radiance.desc": "製作光輝石", - "advancement.create.chromatic_age": "繽紛時代", - "advancement.create.chromatic_age.desc": "創造出光與影的機殼。", - "advancement.create.wand_of_symmetry": "簡單的鏡面幾何學", - "advancement.create.wand_of_symmetry.desc": "製作一個對稱杖", - "advancement.create.extendo_grip": "piu piu piu!", - "advancement.create.extendo_grip.desc": "拿到一個伸縮機械手", - "advancement.create.dual_extendo_grip": "piu——piu——piu——", - "advancement.create.dual_extendo_grip.desc": "雙持伸縮機械手進一步加長觸碰距離", - "advancement.create.eob": "Beta版結束", - "advancement.create.eob.desc": "期待日後的更新。", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "動力機械", - "itemGroup.create.palettes": "動力機械建築與裝飾方塊", - "death.attack.create.crush": "%1$s被壓扁了", - "death.attack.create.fan_fire": "%1$s想接受熱風的洗禮", - "death.attack.create.fan_lava": "%1$s想接受熱風的洗禮但走火入魔", - "death.attack.create.mechanical_drill": "%1$s被鑽頭鑽爆腦袋", - "death.attack.create.mechanical_saw": "%1$s被鋸切成了兩半", - "death.attack.create.cuckoo_clock_explosion": "%1$s 被布穀鳥鐘炸得粉身碎骨", - "create.block.deployer.damage_source_name": "機械手", - "create.block.cart_assembler.invalid": "將您的礦車裝修站放在鐵軌上", - "create.menu.return": "UNLOCALIZED: Return to Menu", - "create.menu.configure": "UNLOCALIZED: Configure...", - "create.menu.getting_started": "UNLOCALIZED: Getting Started", - "create.menu.project_page": "UNLOCALIZED: Project Page", - "create.menu.report_bugs": "UNLOCALIZED: Report Issues", - "create.menu.support": "UNLOCALIZED: Support Us", - "create.recipe.crushing": "粉碎", - "create.recipe.milling": "研磨", - "create.recipe.fan_washing": "批次洗滌", - "create.recipe.fan_washing.fan": "在水後放置鼓風機", - "create.recipe.fan_smoking": "批次煙燻", - "create.recipe.fan_smoking.fan": "在火焰後放置鼓風機", - "create.recipe.fan_blasting": "批次融煉", - "create.recipe.fan_blasting.fan": "在熔岩後放置鼓風機", - "create.recipe.pressing": "金屬壓片", - "create.recipe.mixing": "混合攪拌", - "create.recipe.deploying": "UNLOCALIZED: Deploying", - "create.recipe.automatic_shapeless": "自動攪拌", - "create.recipe.automatic_brewing": "自動釀造", - "create.recipe.packing": "壓塊塑形", - "create.recipe.automatic_packing": "自動打包", - "create.recipe.sawing": "板材切割", - "create.recipe.mechanical_crafting": "自動合成", - "create.recipe.automatic_shaped": "自動合成", - "create.recipe.block_cutting": "方塊切割", - "create.recipe.wood_cutting": "木材切割", - "create.recipe.sandpaper_polishing": "砂紙打磨", - "create.recipe.mystery_conversion": "神秘轉化", - "create.recipe.spout_filling": "注液", - "create.recipe.draining": "分液", - "create.recipe.processing.chance": "%1$s%%概率", - "create.recipe.heat_requirement.none": "不需要加熱", - "create.recipe.heat_requirement.heated": "普通加熱", - "create.recipe.heat_requirement.superheated": "超級加熱", - - "create.generic.range": "範圍", - "create.generic.radius": "半徑", - "create.generic.width": "寬", - "create.generic.height": "高", - "create.generic.length": "長", - "create.generic.speed": "速度", - "create.generic.delay": "延時", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "度", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "順時鐘方向", - "create.generic.counter_clockwise": "逆時鐘方向", - - "create.action.scroll": "滾輪", - "create.action.confirm": "確認", - "create.action.abort": "退出", - "create.action.saveToFile": "離開", - "create.action.discard": "放棄", - - "create.keyinfo.toolmenu": "選單", - "create.keyinfo.scrollup": "(遊戲中)向上滑鼠滾輪", - "create.keyinfo.scrolldown": "(遊戲中)向下滑鼠滾輪", - - "create.gui.scrollInput.defaultTitle": "選擇一個選項:", - "create.gui.scrollInput.scrollToModify": "滾動修改", - "create.gui.scrollInput.scrollToAdjustAmount": "滾動修改數量", - "create.gui.scrollInput.scrollToSelect": "滾動選擇", - "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滾動更快", - "create.gui.toolmenu.focusKey": "按住 [%1$s] 滑鼠滾輪選擇", - "create.gui.toolmenu.cycle": "[SCROLL] 循環", - "create.gui.symmetryWand.mirrorType": "鏡子類型", - "create.gui.symmetryWand.orientation": "方向", - - "create.symmetry.mirror.plane": "鏡像", - "create.symmetry.mirror.doublePlane": "矩形", - "create.symmetry.mirror.triplePlane": "八角", - - "create.orientation.orthogonal": "垂直", - "create.orientation.diagonal": "對角線", - "create.orientation.horizontal": "水平", - "create.orientation.alongZ": "以z軸對齊", - "create.orientation.alongX": "以x軸對齊", - - "create.gui.terrainzapper.title": "地形雕塑器", - "create.gui.terrainzapper.searchDiagonal": "UNLOCALIZED: Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "UNLOCALIZED: Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "UNLOCALIZED: Pattern", - "create.gui.terrainzapper.pattern.solid": "UNLOCALIZED: Solid", - "create.gui.terrainzapper.pattern.checkered": "UNLOCALIZED: Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "UNLOCALIZED: Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "UNLOCALIZED: 25% Roll", - "create.gui.terrainzapper.pattern.chance50": "UNLOCALIZED: 50% Roll", - "create.gui.terrainzapper.pattern.chance75": "UNLOCALIZED: 75% Roll", - "create.gui.terrainzapper.placement": "放置模式", - "create.gui.terrainzapper.placement.merged": "結合", - "create.gui.terrainzapper.placement.attached": "依附", - "create.gui.terrainzapper.placement.inserted": "插入", - "create.gui.terrainzapper.brush": "雕塑類型", - "create.gui.terrainzapper.brush.cuboid": "矩形體", - "create.gui.terrainzapper.brush.sphere": "球體", - "create.gui.terrainzapper.brush.cylinder": "圓柱體", - "create.gui.terrainzapper.brush.surface": "UNLOCALIZED: Surface", - "create.gui.terrainzapper.brush.cluster": "UNLOCALIZED: Cluster", - "create.gui.terrainzapper.tool": "填充類型", - "create.gui.terrainzapper.tool.fill": "填充", - "create.gui.terrainzapper.tool.place": "覆寫", - "create.gui.terrainzapper.tool.replace": "替換", - "create.gui.terrainzapper.tool.clear": "清除", - "create.gui.terrainzapper.tool.overlay": "覆蓋", - "create.gui.terrainzapper.tool.flatten": "平整", - - "create.terrainzapper.shiftRightClickToSet": "Shift+滑鼠右鍵 以設定雕塑類型", - "create.terrainzapper.usingBlock": "UNLOCALIZED: Using: %1$s", - "create.terrainzapper.leftClickToSet": "UNLOCALIZED: Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "礦車無法被連接兩個以上的礦車連結器", - "create.minecart_coupling.unloaded": "有一部份礦車存在於未讀取區塊中", - "create.minecart_coupling.no_loops": "礦車連結器不能連成一個環", - "create.minecart_coupling.removed": "從礦車上移除所有礦車連結器", - "create.minecart_coupling.too_far": "礦車距離你太遠了", - - "create.contraptions.movement_mode": "運動模式", - "create.contraptions.movement_mode.move_place": "停止時實體化方塊", - "create.contraptions.movement_mode.move_place_returned": "只在初始位置實體化方塊", - "create.contraptions.movement_mode.move_never_place": "只有在機械方塊摧毀後才實體化方塊", - "create.contraptions.movement_mode.rotate_place": "停止時實體化方塊", - "create.contraptions.movement_mode.rotate_place_returned": "只在接近初始角度實體化方塊", - "create.contraptions.movement_mode.rotate_never_place": "只有在旋轉軸摧毀後才實體化方塊", - "create.contraptions.cart_movement_mode": "礦車運動模式", - "create.contraptions.cart_movement_mode.rotate": "結構與礦車保持相同方向", - "create.contraptions.cart_movement_mode.rotate_paused": "礦車轉向時機器停止工作", - "create.contraptions.cart_movement_mode.rotation_locked": "結構方向保持不變", - "create.contraptions.windmill.rotation_direction": "旋轉方向", - "create.contraptions.clockwork.clock_hands": "鐘錶指針", - "create.contraptions.clockwork.hour_first": "時針優先", - "create.contraptions.clockwork.minute_first": "分針優先", - "create.contraptions.clockwork.hour_first_24": "24小時制優先", - - "create.logistics.filter": "過濾器", - "create.logistics.recipe_filter": "配方過濾器", - "create.logistics.fluid_filter": "液體過濾器", - "create.logistics.firstFrequency": "頻道. #1", - "create.logistics.secondFrequency": "頻道. #2", - "create.logistics.filter.apply": "將過濾器應用來%1$s。", - "create.logistics.filter.apply_click_again": "將過濾器應用來%1$s,再次點擊以復制數量。", - "create.logistics.filter.apply_count": "使用提取計數過濾。", - - "create.gui.goggles.generator_stats": "產能器狀態:", - "create.gui.goggles.kinetic_stats": "機械狀態:", - "create.gui.goggles.at_current_speed": "目前動能值", - "create.gui.goggles.pole_length": "活塞桿長度:", - "create.gui.goggles.fluid_container": "液體容器資訊:", - "create.gui.goggles.fluid_container.capacity": "容量: ", - "create.gui.assembly.exception": "該結構無法組合:", - "create.gui.assembly.exception.unmovableBlock": "無法移動的方塊 (%4$s) 位於 [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "位於 [%1$s,%2$s,%3$s] 方塊屬未載入區塊", - "create.gui.assembly.exception.structureTooLarge": "結構中的方塊數量過多.\nThe 可放置的數量最大為: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞的活塞桿數量過多\nThe 可放置的數量最大為: %1$s", - "create.gui.assembly.exception.noPistonPoles": "這個活塞遺失了一些活塞桿", - "create.gui.assembly.exception.not_enough_sails": "結構中所需的風帆類方塊數量不足: %1$s\n最少需要的數量為: %2$s", - "create.gui.gauge.info_header": "儀表訊息:", - "create.gui.speedometer.title": "旋轉速度", - "create.gui.stressometer.title": "網路動能", - "create.gui.stressometer.capacity": "剩餘動能量", - "create.gui.stressometer.overstressed": "動能過載", - "create.gui.stressometer.no_rotation": "無旋轉", - "create.gui.contraptions.not_fast_enough": "看起來%1$s 沒有達到足夠的工作轉速。", - "create.gui.contraptions.network_overstressed": "裝置似乎過載,減少高動能消耗的裝置或者增加更多更多動能", - "create.gui.adjustable_crate.title": "板條箱", - "create.gui.adjustable_crate.storageSpace": "儲存空間", - "create.gui.stockpile_switch.title": "儲存開關", - "create.gui.stockpile_switch.invert_signal": "反轉訊號", - "create.gui.stockpile_switch.move_to_lower_at": "移至下線%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "移至上線%1$s%%", - "create.gui.sequenced_gearshift.title": "可程式化齒輪箱", - "create.gui.sequenced_gearshift.instruction": "指令", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "以特定角度旋轉", - "create.gui.sequenced_gearshift.instruction.turn_angle": "旋轉", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "帶動 活塞/滑輪/門式起重機", - "create.gui.sequenced_gearshift.instruction.turn_distance": "驅動活塞", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "延遲時間", - "create.gui.sequenced_gearshift.instruction.delay": "延遲", - "create.gui.sequenced_gearshift.instruction.delay.duration": "間隔", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "結束", - "create.gui.sequenced_gearshift.instruction.end": "停止", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "等待新的紅石脈衝", - "create.gui.sequenced_gearshift.instruction.await": "等待", - "create.gui.sequenced_gearshift.speed": "速度,速度方向", - "create.gui.sequenced_gearshift.speed.forward": "一倍速,正向", - "create.gui.sequenced_gearshift.speed.forward_fast": "兩倍速,正向", - "create.gui.sequenced_gearshift.speed.back": "一倍速,反向", - "create.gui.sequenced_gearshift.speed.back_fast": "兩倍速,反向", - - "create.schematicAndQuill.dimensions": "藍圖尺寸:%1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "第一個位置。", - "create.schematicAndQuill.secondPos": "第二個位置。", - "create.schematicAndQuill.noTarget": "按住Ctrl選擇空氣方塊。", - "create.schematicAndQuill.abort": "刪除選擇。", - "create.schematicAndQuill.title": "藍圖名:", - "create.schematicAndQuill.convert": "立即存檔並發佈", - "create.schematicAndQuill.fallbackName": "我的藍圖", - "create.schematicAndQuill.saved": "另存為%1$s", - - "create.schematic.invalid": "[!] 無效的項目", - "create.schematic.position": "位置", - "create.schematic.rotation": "旋轉", - "create.schematic.rotation.none": "無", - "create.schematic.rotation.cw90": "順時鐘90", - "create.schematic.rotation.cw180": "順時鐘180", - "create.schematic.rotation.cw270": "順時鐘270", - "create.schematic.mirror": "鏡像", - "create.schematic.mirror.none": "無", - "create.schematic.mirror.frontBack": "前後", - "create.schematic.mirror.leftRight": "左右", - "create.schematic.tool.deploy": "發佈", - "create.schematic.tool.move": "移動 XZ", - "create.schematic.tool.movey": "移動 Y", - "create.schematic.tool.rotate": "旋轉", - "create.schematic.tool.print": "列印", - "create.schematic.tool.flip": "翻轉", - "create.schematic.tool.deploy.description.0": "將結構移到某個位置。", - "create.schematic.tool.deploy.description.1": "在地面上點擊滑鼠右鍵以放置。", - "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距離選擇。", - "create.schematic.tool.deploy.description.3": "按住Ctrl滑鼠滾動更改距離。", - "create.schematic.tool.move.description.0": "水平移動藍圖", - "create.schematic.tool.move.description.1": "選定藍圖,然後按住Ctrl滑鼠滾動。", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "垂直移動藍圖", - "create.schematic.tool.movey.description.1": "按住Ctrl滑鼠滾動上下移動", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "圍繞藍圖中心旋轉藍圖。", - "create.schematic.tool.rotate.description.1": "按住Ctrl滑鼠滾動旋轉90度", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "立即將結構放置在世界上", - "create.schematic.tool.print.description.1": "右鍵點擊確認目前位置。", - "create.schematic.tool.print.description.2": "該工具僅能用於創造模式。", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "沿你選擇的面翻轉藍圖。", - "create.schematic.tool.flip.description.1": "指向藍圖,然後按住Ctrl滑鼠滾動將其翻轉。", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "正在同步..", - "create.schematics.uploadTooLarge": "你的藍圖太大", - "create.schematics.maxAllowedSize": "允許的最大藍圖文件大小為:", - - "create.gui.schematicTable.refresh": "重新整理文件", - "create.gui.schematicTable.open_folder": "打開資料夾", - "create.gui.schematicTable.title": "藍圖桌", - "create.gui.schematicTable.availableSchematics": "可用藍圖", - "create.gui.schematicTable.noSchematics": "沒有存檔的藍圖", - "create.gui.schematicTable.uploading": "正在上傳...", - "create.gui.schematicTable.finished": "上傳完成!", - "create.gui.schematicannon.title": "藍圖加農炮", - "create.gui.schematicannon.listPrinter": "物品清單列印機", - "create.gui.schematicannon.gunpowderLevel": "火藥%1$s%%", - "create.gui.schematicannon.shotsRemaining": "發射進度:%1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "備份:%1$s", - "create.gui.schematicannon.optionEnabled": "目前啟用", - "create.gui.schematicannon.optionDisabled": "目前停用", - "create.gui.schematicannon.showOptions": "顯示藍圖加農炮設定", - "create.gui.schematicannon.option.dontReplaceSolid": "不要替換方塊", - "create.gui.schematicannon.option.replaceWithSolid": "用固體方塊替換工作區域內的方塊", - "create.gui.schematicannon.option.replaceWithAny": "用任何方塊替換工作區域內的方塊", - "create.gui.schematicannon.option.replaceWithEmpty": "用空氣替換工作區域內的方塊", - "create.gui.schematicannon.option.skipMissing": "繞過缺少的方塊", - "create.gui.schematicannon.option.skipTileEntities": "保護儲存方塊", - "create.gui.schematicannon.slot.gunpowder": "向藍圖加農炮添加火藥以提供動能", - "create.gui.schematicannon.slot.listPrinter": "在此處放置書以列印藍圖所需的材料清單", - "create.gui.schematicannon.slot.schematic": "在此處添加你的藍圖,務必確保其已被部放置在特定位置", - "create.gui.schematicannon.option.skipMissing.description": "如果材料不夠,藍圖大炮將忽略目前不夠的材料並且使用其他已有材料繼續工作", - "create.gui.schematicannon.option.skipTileEntities.description": "藍圖將避免更換儲存方塊,如箱子。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "藍圖加農炮將不會替換工作範圍內的任何固體方塊。", - "create.gui.schematicannon.option.replaceWithSolid.description": "藍圖加農炮會使用所提供的固體方塊來替換工作區域內的其他固體方塊", - "create.gui.schematicannon.option.replaceWithAny.description": "藍圖加農炮會使用任何所提供的方塊來替換工作區域內的固體方塊", - "create.gui.schematicannon.option.replaceWithEmpty.description": "藍圖加農炮將清理和替換工作區域內所有原本的方塊。", - - "create.schematicannon.status.idle": "閒置", - "create.schematicannon.status.ready": "準備", - "create.schematicannon.status.running": "啟動", - "create.schematicannon.status.finished": "完成", - "create.schematicannon.status.paused": "已暫停", - "create.schematicannon.status.stopped": "停止", - "create.schematicannon.status.noGunpowder": "火藥消耗完畢", - "create.schematicannon.status.targetNotLoaded": "方塊未讀取", - "create.schematicannon.status.targetOutsideRange": "定位目標太遠", - "create.schematicannon.status.searching": "搜尋", - "create.schematicannon.status.skipping": "跳過", - "create.schematicannon.status.missingBlock": "缺少方塊:", - "create.schematicannon.status.placing": "建築中", - "create.schematicannon.status.clearing": "清除方塊中", - "create.schematicannon.status.schematicInvalid": "藍圖無效", - "create.schematicannon.status.schematicNotPlaced": "藍圖未發佈", - "create.schematicannon.status.schematicExpired": "藍圖文件已過期", - - "create.materialChecklist": "材料清單", - "create.materialChecklist.blocksNotLoaded": "*免責聲明* \n\n由於未讀取相關區塊,材料清單可能不正確。", - - "create.gui.filter.deny_list": "黑名單", - "create.gui.filter.deny_list.description": "只通過不在黑名單中的物品,如果黑名單為空,所有物品都可以通過", - "create.gui.filter.allow_list": "白名單", - "create.gui.filter.allow_list.description": "只通過在白名單中的物品,如果白名單為空,所有物品都無法通過", - "create.gui.filter.respect_data": "比對物品屬性", - "create.gui.filter.respect_data.description": "只有物品的耐久、附魔等其他屬性相同時才可以比對", - "create.gui.filter.ignore_data": "忽略物品屬性", - "create.gui.filter.ignore_data.description": "配對時忽略物品的耐久、附魔等其他屬性", - - "create.item_attributes.placeable": "可放置", - "create.item_attributes.placeable.inverted": "不可放置", - "create.item_attributes.consumable": "可食用", - "create.item_attributes.consumable.inverted": "不可食用", - "create.item_attributes.smeltable": "可被熔爐融煉", - "create.item_attributes.smeltable.inverted": "不可被熔爐融煉", - "create.item_attributes.washable": "可被篩洗", - "create.item_attributes.washable.inverted": "不可被篩洗", - "create.item_attributes.smokable": "可被煙熏", - "create.item_attributes.smokable.inverted": "不可被煙熏", - "create.item_attributes.crushable": "可被粉碎", - "create.item_attributes.crushable.inverted": "不可被粉碎", - "create.item_attributes.blastable": "可被高爐融煉", - "create.item_attributes.blastable.inverted": "不可被高爐融煉", - "create.item_attributes.enchanted": "已被附魔", - "create.item_attributes.enchanted.inverted": "未被附魔", - "create.item_attributes.damaged": "已損壞", - "create.item_attributes.damaged.inverted": "未損壞", - "create.item_attributes.badly_damaged": "嚴重受損", - "create.item_attributes.badly_damaged.inverted": "未嚴重受損", - "create.item_attributes.not_stackable": "無法堆疊", - "create.item_attributes.not_stackable.inverted": "可堆疊", - "create.item_attributes.equipable": "可裝備", - "create.item_attributes.equipable.inverted": "不可裝備", - "create.item_attributes.furnace_fuel": "是燃料", - "create.item_attributes.furnace_fuel.inverted": "不是燃料", - "create.item_attributes.in_tag": "標籤是%1$s", - "create.item_attributes.in_tag.inverted": "標籤不是%1$s", - "create.item_attributes.in_item_group": "屬於%1$s", - "create.item_attributes.in_item_group.inverted": "不屬於%1$s", - "create.item_attributes.added_by": "由%1$s添加", - "create.item_attributes.added_by.inverted": "不是由%1$s添加", - "create.item_attributes.has_enchant": "有附魔效果%1$s", - "create.item_attributes.has_enchant.inverted": "沒有附魔效果%1$s", - "create.item_attributes.color": "已被染色成 %1$s", - "create.item_attributes.color.inverted": "未被染色成 %1$s", - "create.item_attributes.max_enchanted": "已達到最高附魔等級", - "create.item_attributes.max_enchanted.inverted": "未達到最高附魔等級", - "create.item_attributes.has_fluid": "包含%1$s", - "create.item_attributes.has_fluid.inverted": "不包含%1$s", - "create.item_attributes.has_name": "有自定義名稱%1$s", - "create.item_attributes.has_name.inverted": "沒有自定義名稱%1$s", - "create.item_attributes.book_author": "由%1$s編寫", - "create.item_attributes.book_author.inverted": "未由%1$s編寫", - "create.item_attributes.book_copy_original": "是原創的", - "create.item_attributes.book_copy_original.inverted": "不是原創的", - "create.item_attributes.book_copy_first": "是第一份複製", - "create.item_attributes.book_copy_first.inverted": "不是第一份複製", - "create.item_attributes.book_copy_second": "是第二份複製", - "create.item_attributes.book_copy_second.inverted": "不是第二份複製", - "create.item_attributes.book_copy_tattered": "是第三份複製", - "create.item_attributes.book_copy_tattered.inverted": "不是第三份複製", - "create.item_attributes.astralsorcery_crystal": "具有晶體屬性%1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "不具有晶體屬性%1$s", - "create.item_attributes.astralsorcery_constellation": "與%1$s調諧", - "create.item_attributes.astralsorcery_constellation.inverted": "未與%1$s調諧", - "create.item_attributes.astralsorcery_perk_gem": "具有特殊屬性%1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "不具有特殊屬性%1$s", - "create.item_attributes.astralsorcery_amulet": "提升%1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "不提升%1$s", - - "create.gui.attribute_filter.no_selected_attributes": "沒有標記任何屬性", - "create.gui.attribute_filter.selected_attributes": "已選擇的屬性:", - "create.gui.attribute_filter.add_attribute": "向列表中添加屬性", - "create.gui.attribute_filter.add_inverted_attribute": "向列表中添加相反屬性", - "create.gui.attribute_filter.allow_list_disjunctive": "任意比對白名單(任何)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "只要有其中一項屬性符合,就可以通過", - "create.gui.attribute_filter.allow_list_conjunctive": "全部比對白名單(全部)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "只有所有屬性都相符才可以通過", - "create.gui.attribute_filter.deny_list": "黑名單", - "create.gui.attribute_filter.deny_list.description": "只要沒有上述屬性,就可以通過", - "create.gui.attribute_filter.add_reference_item": "添加參考物品", - - "create.tooltip.holdForDescription": "按住 [%1$s] 來讀取物品概要", - "create.tooltip.holdForControls": "按住 [%1$s] 來讀取控制方法", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "需求速度:%1$s", - "create.tooltip.speedRequirement.none": "無", - "create.tooltip.speedRequirement.medium": "適當", - "create.tooltip.speedRequirement.high": "快", - "create.tooltip.stressImpact": "動能消耗:%1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "過載", - "create.tooltip.capacityProvided": "動能生產量:%1$s", - "create.tooltip.capacityProvided.low": "小", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.generationSpeed": "產生%1$s %2$s", - "create.tooltip.analogStrength": "調節強度:%1$s/15", - - "create.mechanical_arm.extract_from": "從%1$s 拿取物品", - "create.mechanical_arm.deposit_to": "向%1$s 儲存物品", - "create.mechanical_arm.summary": "機械手臂有%1$s 輸入以及 %2$s 輸出。", - "create.mechanical_arm.points_outside_range": "%1$s 由於距離限制,選定的交互點被移除。", - - "create.weighted_ejector.target_set": "已選取目的地", - "create.weighted_ejector.target_not_valid": "彈射到鄰近的方塊 (目的地無效)", - "create.weighted_ejector.no_target": "彈射到鄰近的方塊 (未選取目的地)", - "create.weighted_ejector.targeting": "彈射到 [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "彈射物品數量", - - "create.logistics.when_multiple_outputs_available": "當多個輸出可用時", - - "create.mechanical_arm.selection_mode.round_robin": "輪詢調度", - "create.mechanical_arm.selection_mode.forced_round_robin": "強制輪詢調度", - "create.mechanical_arm.selection_mode.prefer_first": "第一目標優先", - - "create.tunnel.selection_mode.split": "分攤", - "create.tunnel.selection_mode.forced_split": "強制分攤", - "create.tunnel.selection_mode.round_robin": "輪詢調度", - "create.tunnel.selection_mode.forced_round_robin": "強制輪詢調度", - "create.tunnel.selection_mode.prefer_nearest": "最近優先", - "create.tunnel.selection_mode.randomize": "隨機", - "create.tunnel.selection_mode.synchronize": "同步輸入", - - "create.tooltip.chute.header": "滑道訊息", - "create.tooltip.chute.items_move_down": "物品向下移動", - "create.tooltip.chute.items_move_up": "物品向上移動", - "create.tooltip.chute.no_fans_attached": "未安裝鼓風機", - "create.tooltip.chute.fans_push_up": "鼓風機從下方進行推動", - "create.tooltip.chute.fans_push_down": "鼓風機從上方進行推動", - "create.tooltip.chute.fans_pull_up": "鼓風機從下方進行吸引", - "create.tooltip.chute.fans_pull_down": "鼓風機從上方進行吸引", - "create.tooltip.chute.contains": "物品: %1$s x%2$s", - "create.linked_controller.bind_mode": "UNLOCALIZED: Bind mode active", - "create.linked_controller.press_keybind": "UNLOCALIZED: Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "UNLOCALIZED: Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "UNLOCALIZED: Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "UNLOCALIZED: Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "UNLOCALIZED: Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "UNLOCALIZED: Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "UNLOCALIZED: Display Slot", - "create.crafting_blueprint.inferred": "UNLOCALIZED: Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "UNLOCALIZED: Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "UNLOCALIZED: Secondary Display Slot", - "create.crafting_blueprint.optional": "UNLOCALIZED: Optional", - "create.hint.hose_pulley.title": "無限供應", - "create.hint.hose_pulley": "目標液體為無限供應", - "create.hint.mechanical_arm_no_targets.title": "沒有目標", - "create.hint.mechanical_arm_no_targets": "看起來這個_機械手臂_沒有被分配任何_目標_。在手持機械手臂的同時,右鍵選取輸送帶、置物臺、漏斗或其他設備來設定目標。", - "create.hint.empty_bearing.title": "更新軸承", - "create.hint.empty_bearing": "_空手右鍵_軸承來_添加_你新建造的結構。", - "create.hint.full_deployer.title": "機械手物品溢出", - "create.hint.full_deployer": "_機械手_包含_過剩的物品_需要被_取出._使用漏斗_或其他方法將溢出解決。", - - "create.gui.config.overlay1": "嗨 :)", - "create.gui.config.overlay2": "這是一個實例層", - "create.gui.config.overlay3": "點擊拖拽你的滑鼠", - "create.gui.config.overlay4": "來將它移動到前方", - "create.gui.config.overlay5": "ESC退出目前介面", - "create.gui.config.overlay6": "並儲存新的位置", - "create.gui.config.overlay7": "輸入/create overlay reset", - "create.gui.config.overlay8": "重置到預設位置", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 伺服器每秒TICK被降為 %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 伺服器現在每秒TICK被降為 >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 伺服器現在不延遲了,TPS正常 :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 來讓伺服器的TPS速度恢復正常", - "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 來手動降低伺服器TPS", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "這個礦車結構太大了而無法撿取", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.saw_idle": "UNLOCALIZED: Mechanical Saw turns", - "create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops", - "create.subtitle.mixing": "UNLOCALIZED: Mixing Noises", - "create.subtitle.mechanical_press_activation_belt": "液壓機工作", - "create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps", - "create.subtitle.depot_slide": "UNLOCALIZED: Item slides", - "create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.blaze_munch": "烈焰使者開心地吃著", - "create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps", - "create.subtitle.schematicannon_finish": "藍圖大炮完成任務", - "create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks", - "create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts", - "create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes", - "create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns", - "create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks", - "create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble", - "create.subtitle.slime_added": "黏液擠壓", - "create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used", - "create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates", - "create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish", - "create.subtitle.deny": "UNLOCALIZED: Declining boop", - "create.subtitle.controller_click": "UNLOCALIZED: Controller clicks", - "create.subtitle.schematicannon_launch_block": "藍圖大炮發射", - "create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks", - "create.subtitle.mechanical_press_activation": "液壓機工作", - "create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves", - "create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks", - "create.subtitle.depot_plop": "UNLOCALIZED: Item lands", - "create.subtitle.confirm": "UNLOCALIZED: Affirmative ding", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item._Underscores_highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this。(behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "木製支架", - "block.create.wooden_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_。", - - "block.create.metal_bracket.tooltip": "金屬支架", - "block.create.metal_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_。", - - "block.create.copper_casing.tooltip": "銅製機殼", - "block.create.copper_casing.tooltip.summary": "具備多種用途的堅固機殼,也可用於裝飾。", - "block.create.copper_casing.tooltip.condition1": "對液體管道使用時", - "block.create.copper_casing.tooltip.behaviour1": "會把管道裝入機殼,裝進機殼的管道會與其他管道分開,以免它們自動相連。", - - "block.create.encased_fluid_pipe.tooltip": "液體管道箱", - "block.create.encased_fluid_pipe.tooltip.summary": "用銅機殼加固后的液體管道。", - - "block.create.seat.tooltip": "坐墊", - "block.create.seat.tooltip.summary": "坐下來享受旅程吧!坐墊將會把玩家固定在一個移動裝置上。也可以用來作為居家裝飾,畢竟他有許多顏色。", - "block.create.seat.tooltip.condition1": "對坐墊右鍵", - "block.create.seat.tooltip.behaviour1": "玩家將坐在_坐墊_上,Left-Shift可離開_坐墊_。", - - "item.create.blaze_cake.tooltip": "熔岩蛋糕", - "item.create.blaze_cake.tooltip.summary": "對辛苦的_烈焰使者_的美味款待。讓他們興奮起來吧!", - - "block.create.fluid_pipe.tooltip": "液體管道", - "block.create.fluid_pipe.tooltip.summary": "用來傳輸_液體_。需要一個_機械泵_來提供壓強。", - "block.create.fluid_pipe.tooltip.condition1": "轉移液體", - "block.create.fluid_pipe.tooltip.behaviour1": "可以與_液體容器_如_儲存罐_或_作業盆_相連_。裸露的_管道_末端也可以排放或抽取液體。注意別漏水了!", - "block.create.fluid_pipe.tooltip.condition2": "使用扳手對其右鍵時", - "block.create.fluid_pipe.tooltip.behaviour2": "在狀況許可的情況下在管道上安裝透明窗", - - "block.create.hose_pulley.tooltip": "軟管滑輪", - "block.create.hose_pulley.tooltip.summary": "用來在_世界_中放置或排放大量的液體。", - "block.create.hose_pulley.tooltip.condition1": "接入機械時", - "block.create.hose_pulley.tooltip.behaviour1": "升高或降低軟管,軟管的位置決定了抽取或填充液體的高度。", - "block.create.hose_pulley.tooltip.condition2": "當軟管滑輪抽取液體時", - "block.create.hose_pulley.tooltip.behaviour2": "開始從軟管末端將其從中取出_液體方塊_。巨大的液體湖將被認定是_無限_的", - "block.create.hose_pulley.tooltip.condition3": "當液體從軟管滑輪中排出時", - "block.create.hose_pulley.tooltip.behaviour3": "開始向世界填充液體,直到達到_軟管末端_的高度。", - - "block.create.fluid_tank.tooltip": "液體儲存罐", - "block.create.fluid_tank.tooltip.summary": "_儲存_任意_液體_", - "block.create.fluid_tank.tooltip.condition1": "使用扳手右鍵", - "block.create.fluid_tank.tooltip.behaviour1": "改變可選窗口", - - "block.create.creative_fluid_tank.tooltip": "創造液體儲存罐", - "block.create.creative_fluid_tank.tooltip.summary": "此液體儲存罐能夠_無限的復制_任何液體。", - "block.create.creative_fluid_tank.tooltip.condition1": "罐中裝有液體時", - "block.create.creative_fluid_tank.tooltip.behaviour1": "任意的_液體提取設備_能夠從中提取無窮無盡的指定液體,液體的導入功能同時也會無效。", - "block.create.creative_fluid_tank.tooltip.condition2": "扳手右擊時", - "block.create.creative_fluid_tank.tooltip.behaviour2": "打開關閉窗戶", - - "block.create.fluid_valve.tooltip": "液體閥門", - "block.create.fluid_valve.tooltip.summary": "阻止液體沿管道向前流動。", - "block.create.fluid_valve.tooltip.condition1": "控制流量", - "block.create.fluid_valve.tooltip.behaviour1": "施加的_動能_將迫使閥門關閉,從而阻止液體流動。_逆轉旋轉方向_以重新打開閥門。", - - "block.create.mechanical_pump.tooltip": "機械泵", - "block.create.mechanical_pump.tooltip.summary": "_接入機械_,能迫使液體_沿管道指定方向移動_。在兩個方向上都有_最大的作用範圍_。(默認為16個方塊距離)", - "block.create.mechanical_pump.tooltip.condition1": "液體流向", - "block.create.mechanical_pump.tooltip.behaviour1": "_接入機械_后會產生壓力,迫使液體通過管道。_反轉機械_的方向以切換液體_流向_。", - "block.create.mechanical_pump.tooltip.control1": "扳手右鍵時", - "block.create.mechanical_pump.tooltip.action1": "反轉泵的方向,從而改變默認的液體流向", - - "block.create.smart_fluid_pipe.tooltip": "智慧液體管道", - "block.create.smart_fluid_pipe.tooltip.summary": "帶有過濾器的_液體管道_。可以指定通過哪個_液體_。", - "block.create.smart_fluid_pipe.tooltip.condition1": "當液體進入時", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "進入的液體與_過濾器_不匹配時,智慧管道將_阻止_其通過。", - "block.create.smart_fluid_pipe.tooltip.condition2": "與_液體容器相鄰_時", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "從_任何容器_開始流動的_智慧管道_只會抽取與其過濾器匹配的液體。", - - "block.create.spout.tooltip": "注液器", - "block.create.spout.tooltip.summary": "一種用來_裝罐_的機器。", - "block.create.spout.tooltip.condition1": "液體傳輸", - "block.create.spout.tooltip.behaviour1": "當下方放置類似_玻璃瓶_,_桶_這樣的液體容器物品時,注液器將試圖將自身儲存的液體注入到下方的_液體容器物品_中。", - "block.create.spout.tooltip.condition2": "液體自動化", - "block.create.spout.tooltip.behaviour2": "注液器位於_輸送帶_或者_置物臺_上方時,將自動為流水線上的_液體容器物品_進行_注入_。", - - "block.create.item_drain.tooltip": "分液池", - "block.create.item_drain.tooltip.summary": "一種用來_抽空液體容器物品_的置物臺", - "block.create.item_drain.tooltip.condition1": "液體傳輸", - "block.create.item_drain.tooltip.behaviour1": "當從側面導入諸如_桶_或_瓶子_之類的_液體容器物品_時,_分液池_將嘗試將其倒入其_自身的液體庫存_中。空的_液體容器物品_將被彈出至_另一側_。", - - "item.create.wand_of_symmetry.tooltip": "對稱杖", - "item.create.wand_of_symmetry.tooltip.summary": "完美地鏡面復制工作區域內的方塊放置於破壞", - "item.create.wand_of_symmetry.tooltip.condition1": "當在熱鍵欄時", - "item.create.wand_of_symmetry.tooltip.behaviour1": "持續進行鏡面復制", - "item.create.wand_of_symmetry.tooltip.control1": "當右鍵地面時", - "item.create.wand_of_symmetry.tooltip.action1": "_創建_或_移動_鏡子", - "item.create.wand_of_symmetry.tooltip.control2": "當右鍵空氣時", - "item.create.wand_of_symmetry.tooltip.action2": "_刪除_鏡子", - "item.create.wand_of_symmetry.tooltip.control3": "當潛行右鍵時", - "item.create.wand_of_symmetry.tooltip.action3": "打開_gui介面_", - - "item.create.handheld_worldshaper.tooltip": "環境塑形器", - "item.create.handheld_worldshaper.tooltip.summary": "_大面積_更改地形的手持工具", - "item.create.handheld_worldshaper.tooltip.control1": "當左鍵方塊時", - "item.create.handheld_worldshaper.tooltip.action1": "設定放置此方塊", - "item.create.handheld_worldshaper.tooltip.control2": "當右鍵方塊時", - "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替換_目標方塊", - "item.create.handheld_worldshaper.tooltip.control3": "當潛行右鍵時", - "item.create.handheld_worldshaper.tooltip.action3": "打開工具的_gui介面_", - - "item.create.tree_fertilizer.tooltip": "樹木肥料", - "item.create.tree_fertilizer.tooltip.summary": "適用來常見樹木的快速肥料", - "item.create.tree_fertilizer.tooltip.condition1": "在樹苗上使用時", - "item.create.tree_fertilizer.tooltip.behaviour1": "無論_生長時間_多少,直接長大", - - "item.create.extendo_grip.tooltip": "伸縮機械手", - "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_觸碰距離_。", - "item.create.extendo_grip.tooltip.condition1": "放置於副手欄時", - "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的觸碰距離,與_主手_的伸縮機械手攜同使用,可進一步增加_觸碰距離_。", - - "item.create.filter.tooltip": "過濾器", - "item.create.filter.tooltip.summary": "將物品更精確地進行_篩選分類_,可以同時_篩選_多個物品或者將已標記的_過濾器_放在另一個_過濾器_里_嵌套_使用。", - "item.create.filter.tooltip.condition1": "放置於過濾插槽中時", - "item.create.filter.tooltip.behaviour1": "根據_過濾器_的設定,來_決定_物品是否能夠通過", - "item.create.filter.tooltip.condition2": "當右鍵時", - "item.create.filter.tooltip.behaviour2": "打開_設定面板_", - - "item.create.attribute_filter.tooltip": "屬性過濾器", - "item.create.attribute_filter.tooltip.summary": "比起普通過濾器,_屬性過濾器_可以根據不同物品的_屬性_來進行過濾", - "item.create.attribute_filter.tooltip.condition1": "放置於過濾插槽中時", - "item.create.attribute_filter.tooltip.behaviour1": "根據_過濾器_的配置,來_決定_物品是否能夠通過", - "item.create.attribute_filter.tooltip.condition2": "當右鍵時", - "item.create.attribute_filter.tooltip.behaviour2": "打開_配置面板_", - - "item.create.empty_schematic.tooltip": "空白藍圖", - "item.create.empty_schematic.tooltip.summary": "可作為合成材料或在_藍圖桌_使用", - - "item.create.schematic.tooltip": "藍圖", - "item.create.schematic.tooltip.summary": "將工程結構的_設計圖_放置於_世界中_,並使用_藍圖加農炮_進行構建。", - "item.create.schematic.tooltip.condition1": "當設計圖存在時", - "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具調整位置", - "item.create.schematic.tooltip.control1": "當潛行右鍵時", - "item.create.schematic.tooltip.action1": "打開一個用來輸入_精確坐標_的介面。", - - "item.create.schematic_and_quill.tooltip": "藍圖與筆", - "item.create.schematic_and_quill.tooltip.summary": "用來將世界中的結構存到.nbt文件。", - "item.create.schematic_and_quill.tooltip.condition1": "第一步", - "item.create.schematic_and_quill.tooltip.behaviour1": "手持藍圖與右鍵旋轉兩個點", - "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "按住Ctrl滑鼠滾輪選擇選區大小,右鍵空白處存檔。", - "item.create.schematic_and_quill.tooltip.control1": "右鍵", - "item.create.schematic_and_quill.tooltip.action1": "選取點/確認存檔", - "item.create.schematic_and_quill.tooltip.control2": "按住Ctrl滑鼠滾輪", - "item.create.schematic_and_quill.tooltip.action2": "在_空中_選擇點滾動以調整距離。", - "item.create.schematic_and_quill.tooltip.control3": "當潛行右鍵時", - "item.create.schematic_and_quill.tooltip.action3": "_重置_並刪除選區。", - - "block.create.schematicannon.tooltip": "藍圖加農炮", - "block.create.schematicannon.tooltip.summary": "通過發射方塊以在世界中重新構建已部署的_全息圖_,使用相鄰箱子中的物品及_火藥_作為燃料。", - "block.create.schematicannon.tooltip.condition1": "當你對加農砲右鍵時", - "block.create.schematicannon.tooltip.behaviour1": "打開加農砲的設定介面", - - "block.create.schematic_table.tooltip": "藍圖桌", - "block.create.schematic_table.tooltip.summary": "將保存的藍圖圖寫入_空白藍圖_", - "block.create.schematic_table.tooltip.condition1": "放入空白藍圖時", - "block.create.schematic_table.tooltip.behaviour1": "從Schematics文件夾上傳所選文件", - - "item.create.goggles.tooltip": "MR護目鏡", - "item.create.goggles.tooltip.summary": "一副特殊的眼鏡,能夠讓你看見_動能_的信息。", - "item.create.goggles.tooltip.condition1": "當裝備後", - "item.create.goggles.tooltip.behaviour1": "將會顯示該機械元件的_速度_、_動能_等數值。", - "item.create.goggles.tooltip.condition2": "當裝備後看向儀表時", - "item.create.goggles.tooltip.behaviour2": "將會顯示該儀表所連接網路的_速度_、_動能_等數值。", - "item.create.goggles.tooltip.condition3": "當裝備後看向液體容器時", - "item.create.goggles.tooltip.behaviour3": "將會顯示儲存在該容器內的 _液體_ 以及其 _容量_ 等資訊。", - - "item.create.wrench.tooltip": "板手", - "item.create.wrench.tooltip.summary": "一種常用的工具,能夠調整_動能_的_方向_、_配置_等。", - "item.create.wrench.tooltip.control1": "當右鍵點擊_動能元件_時", - "item.create.wrench.tooltip.action1": "以點擊的面為軸心_旋轉_點擊的方塊", - "item.create.wrench.tooltip.control2": "當潛行右鍵時", - "item.create.wrench.tooltip.action2": "將物品_取下_並移動到你的背包中。", - - "block.create.nozzle.tooltip": "分散網", - "block.create.nozzle.tooltip.summary": "依附在鼓風機上,能夠將鼓風機的效果_分散_各個方向。", - - "block.create.cuckoo_clock.tooltip": "布穀鳥鐘", - "block.create.cuckoo_clock.tooltip.summary": "精美的布穀鳥鐘,能夠報時", - "block.create.cuckoo_clock.tooltip.condition1": "連接機械時", - "block.create.cuckoo_clock.tooltip.behaviour1": "顯示_現在時間_且一天會報時_兩次_。中午一次,黃昏可以睡覺時一次 ", - - "block.create.turntable.tooltip": "轉盤", - "block.create.turntable.tooltip.summary": "讓旋轉機械給你帶來一場刺激的旋轉風車體驗。", - - "block.create.portable_fluid_interface.tooltip": "移動液體接口", - "block.create.portable_fluid_interface.tooltip.summary": "為機械活塞、裝配礦車、旋轉軸承、滑輪_等移動結構_設計的_液體接口_,_移動結構_和_固定結構_之間的液體交換站,兩個會面的接口必須彼此面對且彼此隔開1-2個方塊。", - "block.create.portable_fluid_interface.tooltip.condition1": "裝配在移動結構上時", - "block.create.portable_fluid_interface.tooltip.behaviour1": "移動到能夠滿足與_固定結構_上的_移動式液體接口_對接的條件后,移動結構會_短暫地停下_,開始對接,並直接與_移動結構上的_液體儲存罐_交互,進行液體的_導入導出_。", - "block.create.portable_fluid_interface.tooltip.condition2": "被紅石激活時", - "block.create.portable_fluid_interface.tooltip.behaviour2": "立即終止任何活動的連接。", - - "block.create.stockpile_switch.tooltip": "存量偵測器", - "block.create.stockpile_switch.tooltip.summary": "根據連接的容器_儲存空間_的占用情況切換紅石訊號強度。", - "block.create.stockpile_switch.tooltip.condition1": "低於_下線_或高於_上線_時", - "block.create.stockpile_switch.tooltip.behaviour1": "提供紅石訊號", - - "block.create.content_observer.tooltip": "物品偵測器", - "block.create.content_observer.tooltip.summary": "偵測_容器_和_輸送帶_中過濾器匹配的物品。當觀察到包含匹配的物品時,此組件將發出_紅石訊號_。當觀察到的漏斗_轉移匹配的物品_時,此組件將發出_紅石脈沖_。", - - "block.create.adjustable_crate.tooltip": "可調節板條箱", - "block.create.adjustable_crate.tooltip.summary": "這個箱子可以調整容量,最大可以收納_16組_物品。", - "block.create.adjustable_crate.tooltip.condition1": "當你對箱子按右鍵時", - "block.create.adjustable_crate.tooltip.behaviour1": "打開箱子的設定介面", - - "block.create.creative_crate.tooltip": "創造板條箱", - "block.create.creative_crate.tooltip.summary": "這個容器可以給臨近的_藍圖大炮_提供無限物品以及燃料 (創造專用物品)", - "block.create.creative_crate.tooltip.condition1": "當標記了物品時", - "block.create.creative_crate.tooltip.behaviour1": "容器將會從虛空中提供_無限量_的標記物品,並且任何放置到容器中的物品都會被_送入虛空_", - - "block.create.controller_rail.tooltip": "控制鐵軌", - "block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度。", - "block.create.controller_rail.tooltip.condition1": "被紅石激活時", - "block.create.controller_rail.tooltip.behaviour1": "根據訊號強度_加速_或_減速_經過的礦車。將紅石強度傳播到相鄰的控制鐵軌。", - - "item.create.sand_paper.tooltip": "紅砂紙", - "item.create.sand_paper.tooltip.summary": "用來_打磨_物品的砂紙,可以用_機械手_來實現自動化。", - "item.create.sand_paper.tooltip.condition1": "使用時", - "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_準心所指_的物品。", - - "item.create.builders_tea.tooltip": "工人茶", - "item.create.builders_tea.tooltip.summary": "神清氣爽的一天,從這杯完美茶飲開始。恢復復_饑餓值_並獲得_加速_效果。", - - "item.create.refined_radiance.tooltip": "光輝石", - "item.create.refined_radiance.tooltip.summary": "一種用_光輝_鍛造的化合物材料。", - - "item.create.shadow_steel.tooltip": "暗影鋼", - "item.create.shadow_steel.tooltip.summary": "一種用_虛空_鍛造的化合物材料。", - - "item.create.minecart_coupling.tooltip": "礦車連軸器", - "item.create.minecart_coupling.tooltip.summary": "將多個_礦車_或運輸結構鏈接在一起,構成雄偉的火車。", - "item.create.minecart_coupling.tooltip.condition1": "作用與礦車時", - "item.create.minecart_coupling.tooltip.behaviour1": "將兩個礦車耦合在一起,在移動時將它們保持_恒定的距離_。", - - "create.tooltip.wip": "半成品", - "create.tooltip.workInProgress": "尚在製作中!", - "create.tooltip.randomWipDescription0": "禁止將此物品給屁孩。", - "create.tooltip.randomWipDescription1": "每~一~次~你使用此物品時,就會使一隻小熊貓死亡。", - "create.tooltip.randomWipDescription2": "使用此物品請自負後果。", - "create.tooltip.randomWipDescription3": "快走開,這不是你要找的東西(搖手指", - "create.tooltip.randomWipDescription4": "啟動自爆模式,10、9、8...。", - "create.tooltip.randomWipDescription5": "你已經沒有退路了。", - "create.tooltip.randomWipDescription6": "作者我將不負任何你使用此物所造成的責任。", - "create.tooltip.randomWipDescription7": "這東西不是給你用的,再找找吧!", - "create.tooltip.randomWipDescription8": "用了就死定了。", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "按住 [%1$s] 來思考此物品", - "create.ponder.subject": "本場景的主題", - "create.ponder.pondering": "思考有關於...", - "create.ponder.identify_mode": "暫停模式已啟動\n按 [%1$s] 來取消暫停模式", - "create.ponder.associated": "相關物品", - "create.ponder.close": "關閉", - "create.ponder.identify": "暫停", - "create.ponder.next": "下個場景", - "create.ponder.previous": "上個場景", - "create.ponder.replay": "重放", - "create.ponder.think_back": "返回", - "create.ponder.slow_text": "降低文字顯示速度", - "create.ponder.shared.movement_anchors": "有了機殼底盤和強力膠就可以移動大型結構", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "潛行 +", - "create.ponder.shared.storage_on_contraption": "與結構相連的儲物空間會自動撿取物品", - "create.ponder.shared.behaviour_modify_wrench": "使用扳手來調整這個動作", - "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "轉速: 16 RPM", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "動能產生裝置", - "create.ponder.tag.kinetic_sources.description": "該裝置能夠產生動能", - "create.ponder.tag.contraption_actor": "Contraption Actors", - "create.ponder.tag.contraption_actor.description": "Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "機械手臂的目標物", - "create.ponder.tag.arm_targets.description": "該裝置可作為機械手臂的工作目標", - "create.ponder.tag.logistics": "傳輸物品", - "create.ponder.tag.logistics.description": "該裝置用於物品的傳輸", - "create.ponder.tag.movement_anchor": "Movement Anchors", - "create.ponder.tag.movement_anchor.description": "Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "創造模式", - "create.ponder.tag.creative.description": "該裝置無法在生存模式中獲得", - "create.ponder.tag.kinetic_relays": "動能傳遞方塊", - "create.ponder.tag.kinetic_relays.description": "該裝置用於傳遞動能", - "create.ponder.tag.windmill_sails": "風車軸承的帆", - "create.ponder.tag.windmill_sails.description": "建造風車時用於產生動能的帆,每個帆對風車產生的效果都是同等的", - "create.ponder.tag.contraption_assembly": "方塊連接物件", - "create.ponder.tag.contraption_assembly.description": "此物件用於連接各個零件以便組成一個成品", - "create.ponder.tag.decoration": "裝飾", - "create.ponder.tag.decoration.description": "這些零件通常用於裝飾", - "create.ponder.tag.kinetic_appliances": "動能利用裝置", - "create.ponder.tag.kinetic_appliances.description": "這些裝置利用動能運作", - "create.ponder.tag.redstone": "邏輯控制裝置", - "create.ponder.tag.redstone.description": "這些裝置會在紅石電路中發揮用處", - "create.ponder.tag.fluids": "液體控制裝置", - "create.ponder.tag.fluids.description": "這些裝置可傳輸並利用液體", - - "create.ponder.adjustable_pulse_repeater.header": "使用可調式脈衝中繼器來控制訊號", - "create.ponder.adjustable_pulse_repeater.text_1": "可調式脈衝中繼器每次運作時會產生一個短脈衝", - "create.ponder.adjustable_pulse_repeater.text_2": "使用滑鼠滾輪來設定啟動後到產生脈衝的延遲", - "create.ponder.adjustable_pulse_repeater.text_3": "延遲可設定到最大30分鐘", - - "create.ponder.adjustable_repeater.header": "使用可調式中繼器來控制訊號", - "create.ponder.adjustable_repeater.text_1": "可調式中繼器就像一般的中繼器", - "create.ponder.adjustable_repeater.text_2": "收到訊號後在設定好的時間過後才啟動...", - "create.ponder.adjustable_repeater.text_3": "...訊號停止後也需要相隔同樣的時間過後才會停止", - "create.ponder.adjustable_repeater.text_4": "使用滑鼠滾輪來設定延遲", - "create.ponder.adjustable_repeater.text_5": "延遲可設定到最大30分鐘", - - "create.ponder.analog_lever.header": "使用可調式拉桿來控制訊號", - "create.ponder.analog_lever.text_1": "可調式拉桿是一種小巧而輕準的紅石能源", - "create.ponder.analog_lever.text_2": "右鍵來增加其紅石訊號輸出", - "create.ponder.analog_lever.text_3": "潛行並右鍵來減少其紅石訊號輸出", - - "create.ponder.andesite_tunnel.header": "使用安山岩物品隧道", - "create.ponder.andesite_tunnel.text_1": "安山岩物品隧道可以覆蓋在輸送帶上", - "create.ponder.andesite_tunnel.text_2": "當安山岩物品隧道側邊連接到另一條輸送帶時...", - "create.ponder.andesite_tunnel.text_3": "...隧道將會從經過的整組物品中拿出一個丟到另一條輸送帶上", - "create.ponder.andesite_tunnel.text_4": "剩餘物品則按照原路輸出", - - "create.ponder.basin.header": "在作業盆中處理物品", - "create.ponder.basin.text_1": "作業盆可以放入物品或液體來進行處理", - "create.ponder.basin.text_2": "在每次的處理完成後, 作業盆會試著輸出成品到他的側面下方", - "create.ponder.basin.text_3": "當側面下方有一個有效的容器或設備, 作業盆側面會出現一個輸出嘴", - "create.ponder.basin.text_4": "有很多的容器或設備可以觸發上述現象", - "create.ponder.basin.text_5": "作業盆輸出的成品會被儲存到該容器或設備內", - "create.ponder.basin.text_6": "如果側面沒有出現輸出嘴, 則作業盆內的成品則不會輸出", - "create.ponder.basin.text_7": "這個原理用在產生的成品為下一輪處理的原料時相當有用", - "create.ponder.basin.text_8": "期望的成品將會從作業盆中輸出", - "create.ponder.basin.text_9": "加裝過濾器可防止未被處理的物品輸出", - - "create.ponder.bearing_modes.header": "機械軸承的工作模式", - "create.ponder.bearing_modes.text_1": "當機械軸承停止時,它會控制整個結構停在最近的垂直線上並實體化", - "create.ponder.bearing_modes.text_2": "你可以控制它不要實體化,或是在結構起始位置才實體化", - - "create.ponder.belt_casing.header": "包裹住輸送帶", - "create.ponder.belt_casing.text_1": "安山岩機殼或黃銅機殼可以用來裝飾輸送帶", - "create.ponder.belt_casing.text_2": "使用扳手可以移除機殼", - - "create.ponder.belt_connector.header": "使用輸送帶", - "create.ponder.belt_connector.text_1": "手持輸送帶對兩根傳動軸右鍵以安裝輸送帶", - "create.ponder.belt_connector.text_2": "不小心點到傳動軸的話可以用潛行+右鍵來取消選取", - "create.ponder.belt_connector.text_3": "輸送帶間只要有空間就能安裝額外的傳動軸", - "create.ponder.belt_connector.text_4": "相同輸送帶接出來的傳動軸轉速及轉向會相同", - "create.ponder.belt_connector.text_5": "使用扳手可以移除已安裝的傳動軸", - "create.ponder.belt_connector.text_6": "輸送帶可以被各種染料染色", - - "create.ponder.belt_directions.header": "輸送帶正確的安裝方向", - "create.ponder.belt_directions.text_1": "輸送帶不可以隨意聯結", - "create.ponder.belt_directions.text_2": "1. 輸送帶可以水平連結", - "create.ponder.belt_directions.text_3": "2. 輸送帶可以對角連結", - "create.ponder.belt_directions.text_4": "3. 輸送帶可以垂直連結", - "create.ponder.belt_directions.text_5": "4. 也可以連結在垂直的傳動軸上", - "create.ponder.belt_directions.text_6": "這些都是可以使用的連接方式,輸送帶可以放置的長度為2~20格", - - "create.ponder.belt_transport.header": "將輸送帶用於後勤", - "create.ponder.belt_transport.text_1": "被啟動的輸送帶能運送物品及實體", - "create.ponder.belt_transport.text_2": "空手對輸送帶上的物品右鍵即可從輸送帶上取下物品", - - "create.ponder.blaze_burner.header": "餵食烈焰使者動力爐", - "create.ponder.blaze_burner.text_1": "烈焰使者動力爐可以用來加熱作業盆", - "create.ponder.blaze_burner.text_2": "你需要餵食可以燃燒的物品來加熱作業盆", - "create.ponder.blaze_burner.text_3": "餵食熔岩蛋糕可以讓烈焰使者動力爐加熱到另一個更高的境界", - "create.ponder.blaze_burner.text_4": "使用機械手或機械手臂來將餵食自動化", - - "create.ponder.brass_funnel.header": "黃銅漏斗", - "create.ponder.brass_funnel.text_1": "安山岩漏斗每次只能傳輸一個物品", - "create.ponder.brass_funnel.text_2": "但黃銅漏斗每次可以傳輸整組物品", - "create.ponder.brass_funnel.text_3": "對漏斗上的過濾格使用滾輪可以調整每次輸出物品的數量", - "create.ponder.brass_funnel.text_4": "手持物品對漏斗上的過濾格右鍵可以限制漏斗只輸出該物品", - - "create.ponder.brass_tunnel.header": "使用黃銅隧道", - "create.ponder.brass_tunnel.text_1": "黃銅隧道必須裝設在輸送帶上", - "create.ponder.brass_tunnel.text_2": "黃銅隧道輸出入口上都有過濾格", - "create.ponder.brass_tunnel.text_3": "在輸入口上的過濾器會阻擋不相符的物品", - "create.ponder.brass_tunnel.text_4": "在輸出口上的過濾器可依種類整理排列物品", - "create.ponder.brass_tunnel.text_5": "如果數種與過濾相符的物品通過隧道, 隧道的分配模式將決定如何處理這些物品", - "create.ponder.brass_tunnel.text_6": "在平行相鄰的輸送帶上,相鄰的黃銅隧道將會成為一組", - "create.ponder.brass_tunnel.text_7": "輸入該組內的物品將會採用該組隧道的分配模式輸送", - "create.ponder.brass_tunnel.text_8": "在這個情況下, 物品也能被直接輸入到隧道方塊", - - "create.ponder.brass_tunnel_modes.header": "黃銅隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_1": "使用扳手來調整隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_10": "'同步輸入' 是一種黃銅隧道的特殊設定", - "create.ponder.brass_tunnel_modes.text_11": "當同組內的所有隧道都有一個可通過的物品時,所有隧道才可輸出物品", - "create.ponder.brass_tunnel_modes.text_12": "這確保了同組隧道所在的輸送帶都能以同一速率輸出物品", - "create.ponder.brass_tunnel_modes.text_2": "'分流輸出' 此模式會將物品輸出到該組隧道可用的輸出口", - "create.ponder.brass_tunnel_modes.text_3": "如果該組隧道內某個輸出口無法再輸出物品,則該輸出口會被跳過", - "create.ponder.brass_tunnel_modes.text_4": "'強制分流輸出' 模式不會跳過某個無法輸出物品的輸出口, 直到該輸出口可以輸出物品", - "create.ponder.brass_tunnel_modes.text_5": "'輪詢輸入' 模式將會保持整組物品完整性, 然後在有輸出口可以輸出時才輸入物品", - "create.ponder.brass_tunnel_modes.text_6": "如果該組隧道內某個輸出口無法再輸出物品,則該輸出口會被跳過", - "create.ponder.brass_tunnel_modes.text_7": "'強制輪詢輸入' 模式不會跳過某個無法輸出物品的輸出口, 直到該輸出口可以輸出物品", - "create.ponder.brass_tunnel_modes.text_8": "'鄰近優先' 模式會將物品輸出到該組隧道離物品輸入口最近的出口", - "create.ponder.brass_tunnel_modes.text_9": "'隨機輸出' 模式會隨機選擇同組隧道的一個輸出口輸出", - - "create.ponder.cart_assembler.header": "使用礦車裝修站裝修礦車來移動結構", - "create.ponder.cart_assembler.text_1": "礦車裝修站會將所有連接到礦車的結構裝在礦車上", - "create.ponder.cart_assembler.text_2": "如果沒有紅時訊號,它會將礦車結構分解成方塊", - "create.ponder.cart_assembler.text_3": "對礦車結構使用扳手可以將礦車變成物品", - - "create.ponder.cart_assembler_dual.header": "雙礦車結構", - "create.ponder.cart_assembler_dual.text_1": "當兩台礦車在同一礦車結構上", - "create.ponder.cart_assembler_dual.text_2": "任一礦車裝修站收到紅石訊號時,會形成完整的一個礦車結構", - "create.ponder.cart_assembler_dual.text_3": "整個礦車結構會類似於用礦車連結器連接兩個礦車結構", - - "create.ponder.cart_assembler_modes.header": "礦車結構的方向設定", - "create.ponder.cart_assembler_modes.text_1": "礦車結構會隨著礦車方向改變", - "create.ponder.cart_assembler_modes.text_2": "如果在裝修站鎖定其方向,則結構方向不會隨礦車方向改變", - - "create.ponder.cart_assembler_rails.header": "其他種類的礦車和鐵軌", - "create.ponder.cart_assembler_rails.text_1": "放在普通鐵軌上的礦車裝修站不會影響礦車的動作", - "create.ponder.cart_assembler_rails.text_2": "如果裝修站在沒有紅石訊號的動力鐵軌或控制鐵軌上,則礦車會停下直到鐵軌收到紅石訊號", - "create.ponder.cart_assembler_rails.text_3": "有幾種礦車可以當作錨來使用", - "create.ponder.cart_assembler_rails.text_4": "熔爐礦車會盡可能維持熔煉狀態,並會拿取鄰近儲存結構上的燃料", - - "create.ponder.chain_drive.header": "使用鏈式傳動箱傳遞動能", - "create.ponder.chain_drive.text_1": "同一排上的鏈式傳動箱會互相傳遞動能", - "create.ponder.chain_drive.text_2": "所有傳動軸此時會朝相同方向旋轉", - "create.ponder.chain_drive.text_3": "任一個鏈式傳動箱被旋轉90度時所有鏈式傳動箱仍可正常運作", - - "create.ponder.chain_gearshift.header": "使用可調式鏈式變速箱來調整轉速", - "create.ponder.chain_gearshift.text_1": "未被控制的可調式鏈式變速箱與鏈式傳動箱無異", - "create.ponder.chain_gearshift.text_2": "當可調式鏈式變速箱被啟動後,它會把轉速提升兩倍傳至其他鏈式傳動箱", - "create.ponder.chain_gearshift.text_3": "當被啟動的可調式鏈式變速箱並不是動能輸入端,則它會把轉速減半", - "create.ponder.chain_gearshift.text_4": "上述兩種狀況中,其他鏈式傳動箱都會被可調式鏈式變速箱提升兩倍的轉速", - "create.ponder.chain_gearshift.text_5": "利用紅石訊號的強弱可以調整轉速倍率為x1或x2", - "create.ponder.chain_gearshift.text_6": "12 RPM", - - "create.ponder.chute.header": "使用滑道向下輸送物品", - "create.ponder.chute.text_1": "滑道可以在兩個垂直的儲物空間中輸送物品", - "create.ponder.chute.text_2": "使用扳手可以讓它產生一個觀景窗", - "create.ponder.chute.text_3": "在滑道的側面放置另一個滑道,會產生一個斜狀的滑道", - - "create.ponder.chute_upward.header": "使用滑道向上輸送物品", - "create.ponder.chute_upward.text_1": "在滑道上方或下方使用鼓風機時,物品會根據被向上或向下吹", - "create.ponder.chute_upward.text_2": "裝備MR護目鏡以觀測物品的傳輸方向", - "create.ponder.chute_upward.text_3": "如滑道底端被擋住,則物品只能由側邊進行輸出入", - - "create.ponder.clockwork_bearing.header": "使用時鐘軸承來建造時鐘結構", - "create.ponder.clockwork_bearing.text_1": "時鐘軸承會黏住其前方方塊產生一個時針結構", - "create.ponder.clockwork_bearing.text_2": "在輸入動能後,該結構會依照遊戲時間來旋轉", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "對軸承右鍵會使結構啟動或停止", - "create.ponder.clockwork_bearing.text_6": "在時針結構的前方可再增加一組分針結構", - "create.ponder.clockwork_bearing.text_7": "你必須確保時針分針結構間未被使用強力膠之類的相連零件", - "create.ponder.clockwork_bearing.text_8": "分針結構此時將正常運作", - - "create.ponder.clutch.header": "使用離合器控制動能", - "create.ponder.clutch.text_1": "離合器能將動能直線傳遞", - "create.ponder.clutch.text_2": "當離合器被啟動,離合器會中斷動能傳遞", - - "create.ponder.cog_speedup.header": "使用大小齒輪來變速", - "create.ponder.cog_speedup.text_1": "大齒輪與小齒輪可以斜向傳遞動能", - "create.ponder.cog_speedup.text_2": "從大齒輪傳遞動能至小齒輪時,轉速加倍", - "create.ponder.cog_speedup.text_3": "從小齒輪傳遞動能至大齒輪時,轉速減半", - - "create.ponder.cogwheel.header": "使用齒輪來傳遞動能", - "create.ponder.cogwheel.text_1": "齒輪會將動力傳遞至臨近的齒輪", - "create.ponder.cogwheel.text_2": "以此方式連接的齒輪,旋轉方向相反", - - "create.ponder.creative_motor.header": "使用創造馬達產生動能", - "create.ponder.creative_motor.text_1": "創造馬達不僅能夠手動設定輸出動能,而且體積相當小巧", - "create.ponder.creative_motor.text_2": "對其背後面板滾動滾輪,可以改變馬達的轉速", - - "create.ponder.crushing_wheels.header": "使用粉碎輪處理物品", - "create.ponder.crushing_wheels.text_1": "一對粉碎輪,磨物快又準", - "create.ponder.crushing_wheels.text_2": "接入的動能必須使這兩個輪子契合轉動", - "create.ponder.crushing_wheels.text_3": "扔入或者放入的物品都會被粉碎處理", - "create.ponder.crushing_wheels.text_4": "你也可以使用自動化進行物品的輸入以及撿取", - - "create.ponder.deployer.header": "使用機械手", - "create.ponder.deployer.text_1": "在機械手獲得動能後能夠模仿玩家的各種行為", - "create.ponder.deployer.text_10": "對機械手手部右鍵,即可將手上的物品給它使用", - "create.ponder.deployer.text_11": "物品也可以自動化輸入到機械手內", - "create.ponder.deployer.text_12": "機械手附帶一個過濾格", - "create.ponder.deployer.text_13": "當設定了過濾後,只有當它的手中物品與過濾格相符時,它才會工作", - "create.ponder.deployer.text_14": "只有與過濾格相符的物品才可輸入...", - "create.ponder.deployer.text_15": "...不符的物品可被取出來", - "create.ponder.deployer.text_2": "它只會與它正前方兩格處的位置進行互動", - "create.ponder.deployer.text_3": "放在在它面前的方塊不會阻攔它的工作", - "create.ponder.deployer.text_4": "機械手可以:", - "create.ponder.deployer.text_5": "放置方塊", - "create.ponder.deployer.text_6": "使用物品", - "create.ponder.deployer.text_7": "啟動方塊", - "create.ponder.deployer.text_8": "採收方塊", - "create.ponder.deployer.text_9": "以及攻擊生物", - - "create.ponder.deployer_contraption.header": "在裝置上使用機械手", - "create.ponder.deployer_contraption.text_1": "當機械手在移動的結構上時...", - "create.ponder.deployer_contraption.text_2": "機械手會對每一個經過的方塊使用裝置中任意容器內的物品", - "create.ponder.deployer_contraption.text_3": "可以透過過濾格來指定其從存儲空間中抽取的物品", - - "create.ponder.deployer_modes.header": "機械手的工作模式", - "create.ponder.deployer_modes.text_1": "在設設情況下,機械手模仿玩家的右鍵", - "create.ponder.deployer_modes.text_2": "使用扳手可以將模式調整為模仿玩家的左鍵", - - "create.ponder.deployer_redstone.header": "使用紅石控制機械手", - "create.ponder.deployer_redstone.text_1": "當機械手收到紅時訊號時會停止工作", - "create.ponder.deployer_redstone.text_2": "在停止工作前,機械手會完成目前手頭上的工作", - "create.ponder.deployer_redstone.text_3": "因此,輸入脈衝訊號可以使其每次只進行一個週期的工作", - - "create.ponder.depot.header": "使用置物台", - "create.ponder.depot.text_1": "置物台可以被當成一個“靜止的”傳送帶原件使用", - "create.ponder.depot.text_2": "右擊可以手動放置或取下物品", - "create.ponder.depot.text_3": "與傳送帶一樣,它也可以將其內的物品轉送到其他設備中進行加工...", - "create.ponder.depot.text_4": "...同時物品也可以被機械手存取", - - "create.ponder.empty_blaze_burner.header": "使用空的烈焰人燃燒室", - "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰人燃燒室右擊烈焰人來抓取烈焰人", - "create.ponder.empty_blaze_burner.text_2": "或者,也可以透過右擊烈焰人刷怪籠來填充啟動烈焰人燃燒室", - "create.ponder.empty_blaze_burner.text_3": "這樣,你便有了一個可供部分機器加工的熱源", - "create.ponder.empty_blaze_burner.text_4": "如果是為了美觀,空的烈焰人燃燒室也可以被打火石點燃", - "create.ponder.empty_blaze_burner.text_5": "但是,這樣的熱源不足以給機器提加工供足夠的熱量", - - "create.ponder.fan_direction.header": "鼓風機的氣流", - "create.ponder.fan_direction.text_1": "鼓風機使用動能來製造氣流", - "create.ponder.fan_direction.text_2": "流速以及方向由所接收動能的強弱以及方向而定", - - "create.ponder.fan_processing.header": "使用鼓風機加工物品", - "create.ponder.fan_processing.text_1": "當氣流吹過熔岩時,氣流會被加熱", - "create.ponder.fan_processing.text_2": "熱氣流中的物品會被冶煉", - "create.ponder.fan_processing.text_3": "但在氣流中的食物會被直接燒成灰", - "create.ponder.fan_processing.text_4": "而想要烹飪食物,必須要透過吹過火焰的氣流來煙燻食物", - "create.ponder.fan_processing.text_5": "當氣流吹過水後,便可用於洗滌物品", - "create.ponder.fan_processing.text_6": "這種加工方法可以做到不少有趣的事情", - "create.ponder.fan_processing.text_7": "鼓風機的轉速對加工的速度沒有影響,只影響氣流的吹拂距離", - "create.ponder.fan_processing.text_8": "而那些放置在置物台或者傳送帶上的物品,鼓風機也是可以處理的", - - "create.ponder.fan_source.header": "使用鼓風機來產生動能", - "create.ponder.fan_source.text_1": "如鼓風機的扇葉向下朝著熱源放置,鼓風機可以藉此產生動能", - "create.ponder.fan_source.text_2": "當鼓風機接受紅石訊號後,它便會向外供給動能", - - "create.ponder.flywheel.header": "使用飛輪來產生動能", - "create.ponder.flywheel.text_1": "飛輪和熔爐引擎必須配套使用,方可產生動能", - "create.ponder.flywheel.text_2": "如此產生的動能具有非常大的應力值", - "create.ponder.flywheel.text_3": "使用高爐會使得引擎的效率翻倍", - - "create.ponder.funnel_compat.header": "漏斗的相容性", - "create.ponder.funnel_compat.text_1": "漏斗可以與一些其他組件互動", - "create.ponder.funnel_compat.text_2": "動力鋸", - "create.ponder.funnel_compat.text_3": "置物台", - "create.ponder.funnel_compat.text_4": "分液池", - - "create.ponder.funnel_direction.header": "物流方向", - "create.ponder.funnel_direction.text_1": "直接放置時,漏斗會將物品從容器中取出", - "create.ponder.funnel_direction.text_2": "潛行時放置時,漏斗會將物品置入容器中", - "create.ponder.funnel_direction.text_3": "使用扳手可以改變漏斗的存/取模式", - "create.ponder.funnel_direction.text_4": "對大多數朝向放置的漏斗都具有此特性", - "create.ponder.funnel_direction.text_5": "在傳送帶末端放置的漏斗會根據傳送帶的傳動方向存/取物品", - - "create.ponder.funnel_intro.header": "使用漏斗", - "create.ponder.funnel_intro.text_1": "用漏斗來存取物品欄內的物品,可謂又快又好", - - "create.ponder.funnel_redstone.header": "紅石訊號控制", - "create.ponder.funnel_redstone.text_1": "紅石訊號會使漏斗停止工作", - - "create.ponder.funnel_transfer.header": "直接運輸", - "create.ponder.funnel_transfer.text_1": "漏斗無法將物品傳輸到非開放式的物品欄中", - "create.ponder.funnel_transfer.text_2": "溜槽和智慧溜槽更適用於這樣的場景", - "create.ponder.funnel_transfer.text_3": "水平傳輸也是如此,也許傳送帶更方便快捷", - - "create.ponder.furnace_engine.header": "使用熔爐引擎生產動能", - "create.ponder.furnace_engine.text_1": "熔爐引擎會在與其相連熔爐工作時生產動能", - "create.ponder.furnace_engine.text_2": "如此產生的動能具有非常大的應力值", - "create.ponder.furnace_engine.text_3": "使用高爐會使得引擎的效率翻倍", - - "create.ponder.gantry_carriage.header": "使用起重機取物器", - "create.ponder.gantry_carriage.text_1": "起重機取物器可以被放置在起重機杆上,並且可以沿著起重機杆運動", - "create.ponder.gantry_carriage.text_2": "起重機可以移動其黏附的方塊", - - "create.ponder.gantry_cascaded.header": "串聯起重機", - "create.ponder.gantry_cascaded.text_1": "無需強力膠,取物器便可與起重機杆相連", - "create.ponder.gantry_cascaded.text_2": "即使是在移動的起重機杆上也是如此", - "create.ponder.gantry_cascaded.text_3": "因此,起重機系統可以串聯起來,如此可以影響到多軸向的運動", - - "create.ponder.gantry_direction.header": "起重機移動方向", - "create.ponder.gantry_direction.text_1": "起重機杆可以有相反的方向", - "create.ponder.gantry_direction.text_2": "取物器的移動方向取決於起重機杆的方向", - "create.ponder.gantry_direction.text_3": "......以及起重機杆的旋轉方向", - "create.ponder.gantry_direction.text_4": "在旋轉傳遞中,此規則同樣適用", - - "create.ponder.gantry_redstone.header": "起重機的力傳遞", - "create.ponder.gantry_redstone.text_1": "被紅石訊號啟動的起重機,將不會移動其上的取物器", - "create.ponder.gantry_redstone.text_2": "作為替代,杆上的動能會傳遞到取物器的輸出杆上", - - "create.ponder.gantry_shaft.header": "使用起重機杆", - "create.ponder.gantry_shaft.text_1": "起重機杆組成了起重機結構的基礎。與其相接的載物器可以沿著杆進行移動。", - "create.ponder.gantry_shaft.text_2": "起重機結構可以移動與其相接的方塊。", - - "create.ponder.gearbox.header": "使用十字齒輪箱傳遞動能", - "create.ponder.gearbox.text_1": "更改旋轉軸,很容易使得整個旋轉體系變得臃腫不堪", - "create.ponder.gearbox.text_2": "十字齒輪箱則是替代方案,它的體積更為小巧緊", - "create.ponder.gearbox.text_3": "側邊連接的傳動桿,旋轉方向與輸入端一致", - "create.ponder.gearbox.text_4": "直線連接的傳動桿,旋轉方向會被反轉", - - "create.ponder.gearshift.header": "使用反轉齒輪箱控制動能", - "create.ponder.gearshift.text_1": "反轉齒輪箱可以直線傳輸旋轉", - "create.ponder.gearshift.text_2": "通入紅石訊號後,輸出端的旋轉方向會被反轉", - - "create.ponder.hand_crank.header": "使用手搖把手產生動能", - "create.ponder.hand_crank.text_1": "玩家可以使用手搖把手來手動產生動能", - "create.ponder.hand_crank.text_2": "按住右鍵可以逆時針旋轉它", - "create.ponder.hand_crank.text_3": "它產生的轉速相對較高", - "create.ponder.hand_crank.text_4": "潛行長按右鍵可以順時針旋轉它", - - "create.ponder.large_cogwheel.header": "使用大齒輪傳遞動能", - "create.ponder.large_cogwheel.text_1": "大齒輪可以以特定的角度相互連接", - "create.ponder.large_cogwheel.text_2": "可以利用大齒輪變更旋轉軸向", - - "create.ponder.linear_chassis_attachment.header": "使用機殼底盤黏合方塊", - "create.ponder.linear_chassis_attachment.text_1": "它的開放面可以變為黏性面", - "create.ponder.linear_chassis_attachment.text_2": "再次點擊黏性面,可以將它的相反面也變得具有黏性", - "create.ponder.linear_chassis_attachment.text_3": "空手潛行右擊可以移除此面的黏性物", - "create.ponder.linear_chassis_attachment.text_4": "黏性面可以將此面前方的一長條方塊黏住", - "create.ponder.linear_chassis_attachment.text_5": "使用扳手可以精確控制底盤的影響範圍", - "create.ponder.linear_chassis_attachment.text_6": "按住 Ctrl 滑動滾輪,你可以一次性調節所有底盤的影響範圍", - "create.ponder.linear_chassis_attachment.text_7": "若想讓底盤的其他面也能黏方塊,你需要用到強力膠", - "create.ponder.linear_chassis_attachment.text_8": "利用這些機制,任何形狀的機制都可以像裝置那樣移動", - - "create.ponder.linear_chassis_group.header": "成組移動機殼底盤", - "create.ponder.linear_chassis_group.text_1": "相鄰的機殼底盤可以相互連接在一起", - "create.ponder.linear_chassis_group.text_2": "其中的一個底盤若被移動,其餘的底盤也會跟著移動", - "create.ponder.linear_chassis_group.text_3": "不同種類的底盤,或者是朝向不一致的底盤,將不會相連", - - "create.ponder.mechanical_arm.header": "設定動力臂", - "create.ponder.mechanical_arm.text_1": "你得在放置動力臂之前就設定好它的輸入以及輸出端", - "create.ponder.mechanical_arm.text_2": "手持動力臂右擊某個存儲空間,可以將其指定為目標", - "create.ponder.mechanical_arm.text_3": "再次右擊可以將其在輸入端(藍色)以及輸出端(橙色)之間切換", - "create.ponder.mechanical_arm.text_4": "左擊此組件可以移除選擇", - "create.ponder.mechanical_arm.text_5": "將動力臂放下來後,它會將此前選擇的方塊作為目標", - "create.ponder.mechanical_arm.text_6": "在有效範圍內,機械手臂可以有任意數量的輸出以及輸入端", - "create.ponder.mechanical_arm.text_7": "然而,並不是所有的存儲空間可以被直接互動", - "create.ponder.mechanical_arm.text_8": "在此情況下,漏斗和置物台可以解決此問題", - - "create.ponder.mechanical_arm_filtering.header": "過濾動力臂的輸出端", - "create.ponder.mechanical_arm_filtering.text_1": "輸入", - "create.ponder.mechanical_arm_filtering.text_2": "輸出", - "create.ponder.mechanical_arm_filtering.text_3": "有時,你會想著利用某種過濾限煞車力臂的目標", - "create.ponder.mechanical_arm_filtering.text_4": "動力臂自身並不提供任何過濾選項", - "create.ponder.mechanical_arm_filtering.text_5": "然而,若將黃銅漏斗作為目標,則漏斗的過濾槽則可以應用至動力臂上", - "create.ponder.mechanical_arm_filtering.text_6": "動力臂足夠智慧,它不會去拿取那些它無法分配的物品", - - "create.ponder.mechanical_arm_modes.header": "動力臂的分配模式", - "create.ponder.mechanical_arm_modes.text_1": "輸入", - "create.ponder.mechanical_arm_modes.text_2": "輸出", - "create.ponder.mechanical_arm_modes.text_3": "若動力臂必須在數個有效的輸出端之間作出選擇...", - "create.ponder.mechanical_arm_modes.text_4": "...它會依照自己的設定選擇特定的行為", - "create.ponder.mechanical_arm_modes.text_5": "手持扳手對其滑動滾輪,可以改變其設定", - "create.ponder.mechanical_arm_modes.text_6": "輪詢調度模式很好理解,即循環輸出至所有有效的輸出端", - "create.ponder.mechanical_arm_modes.text_7": "如果某個輸出端無法容納更多物品,則它會被跳過", - "create.ponder.mechanical_arm_modes.text_8": "強制輪詢調度不會跳過任何輸出端,動力臂會一直等待,直到輸出端有空位容納物品輸入", - "create.ponder.mechanical_arm_modes.text_9": "最近優先模式會使得動力臂先將物品輸出至更早被選擇的輸出端", - - "create.ponder.mechanical_arm_redstone.header": "利用紅石訊號控制動力臂", - "create.ponder.mechanical_arm_redstone.text_1": "通入紅石訊號後,動力臂會停止工作", - "create.ponder.mechanical_arm_redstone.text_2": "在停止工作前,它會完成目前正在進行的工作週期", - "create.ponder.mechanical_arm_redstone.text_3": "因此,通入單次負紅石脈衝可以精確控制動力臂,使其每次只進行單個週期的工作", - - "create.ponder.mechanical_bearing.header": "使用動力軸承移動結構", - "create.ponder.mechanical_bearing.text_1": "動力軸承會與其前方的方塊黏合在一起", - "create.ponder.mechanical_bearing.text_2": "接收到動能後,它會將這一黏合結構組裝為旋轉裝置", - - "create.ponder.mechanical_crafter.header": "設置動力合成器", - "create.ponder.mechanical_crafter.text_1": "動力合成器陣列可用於自動化任何合成配方的製作", - "create.ponder.mechanical_crafter.text_2": "使用扳手可以調控合成器的合成通路", - "create.ponder.mechanical_crafter.text_3": "所有的合成通路必須匯集到任意一側的一個出口,整套合成器方可算是設置正確", - "create.ponder.mechanical_crafter.text_4": "輸出產物會被放入位於出口的存儲空間中", - "create.ponder.mechanical_crafter.text_5": "動力合成器的運轉需要動能的供應", - "create.ponder.mechanical_crafter.text_6": "右擊合成器正面,可以手動放入物品", - "create.ponder.mechanical_crafter.text_7": "一旦合成通路上的所有合成槽位都有了物品,合成就會開始", - "create.ponder.mechanical_crafter.text_8": "而對於那些沒有完全占滿所有合成器槽位的配方,你可以通入紅石訊號強制開啟合成", - - "create.ponder.mechanical_crafter_connect.header": "為合成器連接物品欄", - "create.ponder.mechanical_crafter_connect.text_1": "合成器可以自動接受向其輸入的物品", - "create.ponder.mechanical_crafter_connect.text_2": "對其背面使用扳手,可以連接合成器", - "create.ponder.mechanical_crafter_connect.text_3": "所有相連的合成器可以訪問同一個位置的輸入", - - "create.ponder.mechanical_crafter_covers.header": "蓋住動力合成器的合成槽", - "create.ponder.mechanical_crafter_covers.text_1": "有些配方需要額外的合成器,來補足合成通路上的間隙", - "create.ponder.mechanical_crafter_covers.text_2": "使用合成槽蓋板,合成器會在合成進行時的行為就如同一個空的合成槽位", - "create.ponder.mechanical_crafter_covers.text_3": "被蓋住的合成器並不會阻斷共享輸入端的影響", - - "create.ponder.mechanical_drill.header": "使用機械鑽頭破壞方塊", - "create.ponder.mechanical_drill.text_1": "當向其通入動能後,機械鑽頭會破壞它面前的方塊", - "create.ponder.mechanical_drill.text_2": "它的挖掘速度取決於通入的動能轉速", - - "create.ponder.mechanical_drill_contraption.header": "在裝置中使用機械鑽頭", - "create.ponder.mechanical_drill_contraption.text_1": "在運動裝置中使用機械鑽頭時...", - "create.ponder.mechanical_drill_contraption.text_2": "...它會破壞掉它撞上的方塊", - - "create.ponder.mechanical_harvester.header": "在裝置中使用動力收割機", - "create.ponder.mechanical_harvester.text_1": "在運動裝置中使用動力收割機時...", - "create.ponder.mechanical_harvester.text_2": "它會採收其路徑上的作物,並重設這些作物的生長進度", - - "create.ponder.mechanical_mixer.header": "使用動力攪拌器處理物品", - "create.ponder.mechanical_mixer.text_1": "使用攪拌器和工作盆,你可以自動化某些合成配方", - "create.ponder.mechanical_mixer.text_2": "有效配方包括各種無序合成配方,以及一些額外的配方", - "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰人燃燒室提供熱量", - "create.ponder.mechanical_mixer.text_4": "過濾槽可用於解決兩個配方相互衝突的情況", - - "create.ponder.mechanical_piston.header": "使用動力活塞移動結構", - "create.ponder.mechanical_piston.text_1": "動力活塞可以移動它前方的方塊", - "create.ponder.mechanical_piston.text_2": "移動速度和方向取決於通入活塞的動能", - "create.ponder.mechanical_piston.text_3": "黏性動力活塞可以將相接的方塊拉回來", - - "create.ponder.mechanical_piston_modes.header": "動力活塞的移動模式", - "create.ponder.mechanical_piston_modes.text_1": "一旦活塞停下,被移動的結構就會回退到方塊狀態", - "create.ponder.mechanical_piston_modes.text_2": "你也可以將其設定為從不方塊化,或者只在起始位置方塊化", - - "create.ponder.mechanical_plough.header": "在裝置中使用動力犁", - "create.ponder.mechanical_plough.text_1": "在運動裝置中使用動力犁時...", - "create.ponder.mechanical_plough.text_2": "...它會破壞掉那些不具有固體碰撞箱的方塊", - "create.ponder.mechanical_plough.text_3": "此外,動力犁可以耕地", - "create.ponder.mechanical_plough.text_4": "...它也可以在不傷害實體的情況下推動它們", - - "create.ponder.mechanical_press.header": "使用機械液壓機處理物品", - "create.ponder.mechanical_press.text_1": "機械液壓機可以處理位於其下方的物品", - "create.ponder.mechanical_press.text_2": "在其下方丟入物品,或者將物品放在置物台上,都算作有效的物品輸入", - "create.ponder.mechanical_press.text_3": "若物品被輸入時正位於傳送帶上...", - "create.ponder.mechanical_press.text_4": "輥軋機會使物品停下,然後自動處理這一物品", - - "create.ponder.mechanical_press_compacting.header": "使用機械液壓機壓縮物品", - "create.ponder.mechanical_press_compacting.text_1": "對放置於工作盆內的物品進行輥軋,可以將這些物品壓縮在一起", - "create.ponder.mechanical_press_compacting.text_2": "壓縮意指任何同種物品填滿了 2x2 或者 3x3 網格的配方,以及一些額外的配方", - "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰人燃燒室提供熱量", - "create.ponder.mechanical_press_compacting.text_4": "過濾槽可用於解決兩個配方相互衝突的情況", - - "create.ponder.mechanical_saw_breaker.header": "使用動力鋸伐木", - "create.ponder.mechanical_saw_breaker.text_1": "向其通入動能後,動力鋸可以直接砍伐掉它面前的樹木", - "create.ponder.mechanical_saw_breaker.text_2": "想要一次性砍掉整棵樹,鋸子必須破壞掉樹與地面連接的最後一個方塊", - - "create.ponder.mechanical_saw_contraption.header": "在裝置中使用動力鋸", - "create.ponder.mechanical_saw_contraption.text_1": "若在運動裝置中使用動力鋸...", - "create.ponder.mechanical_saw_contraption.text_2": "...它會將撞到它的樹木破壞掉", - - "create.ponder.mechanical_saw_processing.header": "使用動力鋸處理物品", - "create.ponder.mechanical_saw_processing.text_1": "面向朝上的動力鋸可以將物品處理為其變種", - "create.ponder.mechanical_saw_processing.text_2": "處理過後的物品的彈出方向始終與通入鋸中的旋轉轉向相反", - "create.ponder.mechanical_saw_processing.text_3": "鋸子可以", - "create.ponder.mechanical_saw_processing.text_4": "若輸入原料有多種可能產物,你可以用動力鋸上的過濾槽指定只產出某種產物", - "create.ponder.mechanical_saw_processing.text_5": "若沒有使用過濾槽,動力鋸會在各產物中按順序循環輸出", - - "create.ponder.millstone.header": "使用石磨處理物品", - "create.ponder.millstone.text_1": "石磨會對輸入的物品進行磨製", - "create.ponder.millstone.text_2": "在其側邊使用齒輪與其相耦合,方可為其通入動力", - "create.ponder.millstone.text_3": "頂部可以丟入或者塞入物品", - "create.ponder.millstone.text_4": "一段時間過後,右擊石磨可以拿出其中的產物", - "create.ponder.millstone.text_5": "產物的提取也是可以自動化的", - - "create.ponder.nixie_tube.header": "使用真空管顯示器", - "create.ponder.nixie_tube.text_1": "通入紅石訊號後,真空管顯示器會顯示出紅石訊號的強度", - "create.ponder.nixie_tube.text_2": "使用命名牌在鐵砧上為其命名,可以自訂它的顯示文本", - - "create.ponder.piston_pole.header": "活塞延長杆", - "create.ponder.piston_pole.text_1": "若無相接的延長杆,動力活塞無法移動其他方塊", - "create.ponder.piston_pole.text_2": "在其背面安裝的延長杆長度,決定了活塞的推動範圍", - - "create.ponder.portable_storage_interface.header": "裝置存儲交換", - "create.ponder.portable_storage_interface.text_1": "玩家無法與運動裝置內的存儲空間進行互動", - "create.ponder.portable_storage_interface.text_2": "這一組件可以在不停止裝置的情況下與裝置內的存儲空間進行互動", - "create.ponder.portable_storage_interface.text_3": "放置第二個介面時,記得要與裝置介面相隔 1 格或者 2 格的距離", - "create.ponder.portable_storage_interface.text_4": "當它們彼此經過時,它們會連接在一起", - "create.ponder.portable_storage_interface.text_5": "連接狀態下,固定側介面便會作為整個裝置的存儲空間代理", - "create.ponder.portable_storage_interface.text_6": "物品會被輸入到裝置內...", - "create.ponder.portable_storage_interface.text_7": "...或是從裝置中提取出來", - "create.ponder.portable_storage_interface.text_8": "物品交換完畢後,裝置仍然會停留在原地一小會,然後才會繼續前行", - - "create.ponder.portable_storage_interface_redstone.header": "紅石控制", - "create.ponder.portable_storage_interface_redstone.text_1": "通入紅石訊號可以阻止固定側介面的連接行為", - - "create.ponder.powered_latch.header": "使用閂鎖器控制訊號", - "create.ponder.powered_latch.text_1": "閂鎖器是一種可以用紅石訊號控制的拉杆", - "create.ponder.powered_latch.text_2": "後方輸入的訊號會將其設為開啟狀態", - "create.ponder.powered_latch.text_3": "側邊輸入的訊號會將其設為關閉狀態", - "create.ponder.powered_latch.text_4": "你也可以手動切換其狀態", - - "create.ponder.powered_toggle_latch.header": "使用T型正反器控制訊號", - "create.ponder.powered_toggle_latch.text_1": "T型正反器是一種可以用紅石訊號控制的拉杆", - "create.ponder.powered_toggle_latch.text_2": "後方訊號輸入可以改變它的狀態", - "create.ponder.powered_toggle_latch.text_3": "...開啟或者是關閉", - "create.ponder.powered_toggle_latch.text_4": "你也可以手動切換其狀態", - - "create.ponder.pulse_repeater.header": "使用脈衝中繼器控制訊號", - "create.ponder.pulse_repeater.text_1": "脈衝中繼器會將所有通入的紅石訊號縮減為一次脈衝", - - "create.ponder.radial_chassis.header": "使用旋轉底盤黏著方塊", - "create.ponder.radial_chassis.text_1": "同一行上的旋轉底盤會相互連接在一起", - "create.ponder.radial_chassis.text_2": "當其中的一個底盤被裝置帶動時,其餘的底盤也會被帶動", - "create.ponder.radial_chassis.text_3": "底盤的側邊可以變為黏性面", - "create.ponder.radial_chassis.text_4": "再次點擊黏性面,可以讓其所有面都變得帶黏性", - "create.ponder.radial_chassis.text_5": "空手潛行右擊可以移除其上的黏性物", - "create.ponder.radial_chassis.text_6": "若有物品與底盤的黏性面相接觸...", - "create.ponder.radial_chassis.text_7": "...底盤便會與同層且位於半徑內的所有可及方塊黏著在一起", - "create.ponder.radial_chassis.text_8": "使用扳手可以精確指定底盤的影響範圍", - "create.ponder.radial_chassis.text_9": "黏性面一側的不可及方塊不會被黏著", - - "create.ponder.redstone_contact.header": "接觸式紅石訊號發生器", - "create.ponder.redstone_contact.text_1": "當兩個接觸式紅石訊號發生器面對面時,它們會發出紅石訊號", - "create.ponder.redstone_contact.text_2": "並且,若有一方位於運動裝置上,此特性也能正常生效", - - "create.ponder.redstone_link.header": "使用無線紅石訊號機", - "create.ponder.redstone_link.text_1": "無線紅石訊號機可以無線傳輸紅石訊號", - "create.ponder.redstone_link.text_2": "潛行右擊可以改變其接收模式", - "create.ponder.redstone_link.text_3": "手持扳手右擊也可以", - "create.ponder.redstone_link.text_4": "接收端會發出由傳輸端發來的訊號,有效距離為 128 格", - "create.ponder.redstone_link.text_5": "在它們所帶的槽位中放上物品,可以為它們指定頻道", - "create.ponder.redstone_link.text_6": "只有頻道相互匹配的機方可互通", - - "create.ponder.rope_pulley.header": "使用繩索滑輪移動結構", - "create.ponder.rope_pulley.text_1": "繩索滑輪在接受動能時可以垂直移動方塊結構", - "create.ponder.rope_pulley.text_2": "移動的方向及速度取決於提供的轉速", - - "create.ponder.rope_pulley_attachment.header": "繩索滑輪與裝置一同運動", - "create.ponder.rope_pulley_attachment.text_1": "當繩索滑輪本身在裝置中被帶動時...", - "create.ponder.rope_pulley_attachment.text_2": "...它附著在滑輪上的結構會被滑輪拉著一同移動", - "create.ponder.rope_pulley_attachment.text_3": "注意,只有繩索滑輪停止工作時才能被移動", - - "create.ponder.rope_pulley_modes.header": "繩索滑輪的運動模式", - "create.ponder.rope_pulley_modes.text_1": "當繩索滑輪停止運動時,它所附屬的移動結構便會方塊化", - "create.ponder.rope_pulley_modes.text_2": "你可以調整整個結構永不方塊化,或者僅在結構的初始位置方塊化", - - "create.ponder.rotation_speed_controller.header": "使用轉速控制器", - "create.ponder.rotation_speed_controller.text_1": "轉速控制器將動能從其轉軸傳遞至它上方的大齒輪", - "create.ponder.rotation_speed_controller.text_2": "在其側面滾動滑鼠滾輪,可以調節輸出轉速", - - "create.ponder.sail.header": "使用風帆來組裝風車", - "create.ponder.sail.text_1": "風帆是製作風車的趁手材料", - "create.ponder.sail.text_2": "無需強力膠等黏附手段,它們便可自行互相連結", - "create.ponder.sail.text_3": "手持染料右擊可對其染色", - "create.ponder.sail.text_4": "手持剪刀右擊可剪除帆布,使其變迴風帆框架", - - "create.ponder.sail_frame.header": "使用風帆框架來組裝風車", - "create.ponder.sail_frame.text_1": "風帆框架是製作風車的趁手材料", - "create.ponder.sail_frame.text_2": "無需強力膠等黏附手段,它們便可自行互相連結", - - "create.ponder.sequenced_gearshift.header": "使用可編程齒輪箱來控制轉速", - "create.ponder.sequenced_gearshift.text_1": "可編程齒輪箱能夠根據玩家設置的預設時序表來傳遞旋轉", - "create.ponder.sequenced_gearshift.text_2": "對其右擊可以打開設置面板", - "create.ponder.sequenced_gearshift.text_3": "接受紅石訊號時,它會開始執行其內部已設定好的時序指令表", - "create.ponder.sequenced_gearshift.text_4": "當完成時序指令表後,它會進入待機狀態,再次接受紅石訊號後,它才會再次執行時序指令表內容", - "create.ponder.sequenced_gearshift.text_5": "紅石比較器可以讀取目前時序指令表完成進度", - - "create.ponder.shaft.header": "使用傳動軸來傳送動能", - "create.ponder.shaft.text_1": "傳動軸可以直線傳送動能", - - "create.ponder.shaft_casing.header": "包裹傳動軸", - "create.ponder.shaft_casing.text_1": "黃銅及安山岩機殼可以用來裝飾傳動軸", - - "create.ponder.smart_chute.header": "使用智慧滑道來過濾物品", - "create.ponder.smart_chute.text_1": "智慧滑道是一種可以被控制的滑道", - "create.ponder.smart_chute.text_2": "當在其過濾槽內指定了物品後,溜槽只會傳輸這一指定標記的物品", - "create.ponder.smart_chute.text_3": "使用滑鼠滾輪可以指定被過濾的物品數量", - "create.ponder.smart_chute.text_4": "通入紅石訊號,智慧溜槽將會完全暫停工作", - - "create.ponder.speedometer.header": "使用速度計來監測轉速", - "create.ponder.speedometer.text_1": "速度計能顯示相接組件的轉速", - "create.ponder.speedometer.text_2": "當佩戴MR護目鏡時,可以看到儀表所顯示的更詳細的數據", - "create.ponder.speedometer.text_3": "紅石比較器可以根據速度計的數值輸出不同強弱的紅石訊號", - - "create.ponder.stabilized_bearings.header": "裝置固定朝向", - "create.ponder.stabilized_bearings.text_1": "當動力軸承在結構被帶動時...", - "create.ponder.stabilized_bearings.text_2": "...它會確保它轉盤的垂直朝向不變", - "create.ponder.stabilized_bearings.text_3": "跟預設的一樣,動力軸承會黏著它前方的方塊", - "create.ponder.stabilized_bearings.text_4": "這種情況下,它所黏著的子結構的垂直朝向也不會改變", - - "create.ponder.sticker.header": "使用方塊黏著器來黏取方塊", - "create.ponder.sticker.text_1": "方塊黏著器是一個很棒的裝置,他受控於紅石訊號", - "create.ponder.sticker.text_2": "當接收到訊號時,他會黏起面前的一個方塊", - "create.ponder.sticker.text_3": "如果此時方塊黏著器被移動,被黏到的方塊會跟著移動", - "create.ponder.sticker.text_4": "再次接收到訊號後,黏著器會放下它面前的方塊", - - "create.ponder.stressometer.header": "使用動能錶來監測應力", - "create.ponder.stressometer.text_1": "動能錶能顯示目前動能網路內的應力訊息", - "create.ponder.stressometer.text_2": "當佩戴MR護目鏡時,可以看到儀表所顯示的更詳細的數據", - "create.ponder.stressometer.text_3": "紅石比較器可以根據動能錶的數值輸出不同強弱的紅石訊號", - - "create.ponder.super_glue.header": "使用強力膠來黏附方塊", - "create.ponder.super_glue.text_1": "強力膠可以在任意兩個方塊間使用", - "create.ponder.super_glue.text_2": "當被黏合的方塊被組裝為裝置時,他們會一起運動", - "create.ponder.super_glue.text_3": "當強力膠在副手時...", - "create.ponder.super_glue.text_4": "...新放置的方塊會自動被黏附在所放置方塊的面上", - "create.ponder.super_glue.text_5": "左擊可以清除強力膠", - - "create.ponder.valve_handle.header": "使用閥門手輪產生動能", - "create.ponder.valve_handle.text_1": "玩家可以手動使用閥門手輪來產生動能", - "create.ponder.valve_handle.text_2": "右擊可使它逆時針旋轉", - "create.ponder.valve_handle.text_3": "它的轉速慢而精確", - "create.ponder.valve_handle.text_4": "潛行右擊可使它順時針旋轉", - "create.ponder.valve_handle.text_5": "可以透過染色來美化閥門手輪", - - "create.ponder.water_wheel.header": "使用水車產生動能", - "create.ponder.water_wheel.text_1": "水車利用臨近的水流來進行應力發生", - "create.ponder.water_wheel.text_2": "水車接觸水流的麵越多,它的轉速越高", - "create.ponder.water_wheel.text_3": "水車葉片應逆著水流方向擺放", - "create.ponder.water_wheel.text_4": "如果順著水流擺放,它的效率則會降低", - - "create.ponder.weighted_ejector.header": "使用彈射置物台", - "create.ponder.weighted_ejector.text_1": "手持彈射置物台時,潛行時右擊可以設置彈射目標位置", - "create.ponder.weighted_ejector.text_10": "現在,只有等被放置的物品數量等於所設定數量時,彈射置物台才會彈射物品", - "create.ponder.weighted_ejector.text_11": "當其他實體站在彈射置物台上時會被直接彈射", - "create.ponder.weighted_ejector.text_2": "現在,放置下的彈射置物台會將物品彈射至目標位置", - "create.ponder.weighted_ejector.text_3": "限制範圍內的任意距離和高度均可作為有效目標地點", - "create.ponder.weighted_ejector.text_4": "但是,目標位置與置物台的連線,必須垂直於置物台的側面", - "create.ponder.weighted_ejector.text_5": "如果沒有設置有效目標位置,彈射置物台會直接將其前方一格設為默認目標位置", - "create.ponder.weighted_ejector.text_6": "提供動能可為其蓄力", - "create.ponder.weighted_ejector.text_7": "蓄力完畢後,放置在它上方的物品會被立刻彈射出去", - "create.ponder.weighted_ejector.text_8": "如果目標為容器,則彈射置物台會等待容器有位置後再彈射物品", - "create.ponder.weighted_ejector.text_9": "使用扳手可以調整彈射所要求的物品數量", - - "create.ponder.weighted_ejector_redstone.header": "使用紅石控制彈射置物台", - "create.ponder.weighted_ejector_redstone.text_1": "當被紅石充能時,彈射置物台停止工作", - "create.ponder.weighted_ejector_redstone.text_2": "此外,置物台彈射的瞬間可以被偵測器偵測", - - "create.ponder.weighted_ejector_tunnel.header": "使用彈射置物台來分流物品", - "create.ponder.weighted_ejector_tunnel.text_1": "與黃銅隧道搭配使用時,彈射置物台可以將物品以特定數量進行分流", - "create.ponder.weighted_ejector_tunnel.text_2": "首先,將黃銅隧道調整為“最近優先”模式,從而讓它優先側面輸出", - "create.ponder.weighted_ejector_tunnel.text_3": "置物台上所設置的物品數量則為被分流出去的物品數量", - "create.ponder.weighted_ejector_tunnel.text_4": "當所設置的物品數量被分流出去後...", - "create.ponder.weighted_ejector_tunnel.text_5": "...剩餘的物品則會繼續前進", - - "create.ponder.windmill_source.header": "使用風車軸承產生動能", - "create.ponder.windmill_source.text_1": "風車軸承會黏著它面前的方塊結構", - "create.ponder.windmill_source.text_2": "如果黏著的方塊結構包含足夠的風帆方塊即為風車", - "create.ponder.windmill_source.text_3": "右鍵啟動風車後,風車開始提供動能", - "create.ponder.windmill_source.text_4": "產生的動能將取決於所黏風帆方塊之數量", - "create.ponder.windmill_source.text_5": "使用扳手來調整其旋轉方向", - "create.ponder.windmill_source.text_6": "對風車軸承右鍵可使其停止方便你維修風車", - - "create.ponder.windmill_structure.header": "風車結構", - "create.ponder.windmill_structure.text_1": "任一包含至少8個風帆方塊的結構即為有效的風車", - - "_": "Thank you for translating Create!" - -} diff --git a/src/generated/resources/assets/create/models/block/acacia_window.json b/src/generated/resources/assets/create/models/block/acacia_window.json deleted file mode 100644 index 7459f4f46..000000000 --- a/src/generated/resources/assets/create/models/block/acacia_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/acacia_window", - "end": "minecraft:block/acacia_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/acacia_window_pane_noside.json b/src/generated/resources/assets/create/models/block/acacia_window_pane_noside.json deleted file mode 100644 index cafd39969..000000000 --- a/src/generated/resources/assets/create/models/block/acacia_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/acacia_window", - "edge": "minecraft:block/acacia_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/acacia_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/acacia_window_pane_noside_alt.json deleted file mode 100644 index 35e8aa4b3..000000000 --- a/src/generated/resources/assets/create/models/block/acacia_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/acacia_window", - "edge": "minecraft:block/acacia_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/acacia_window_pane_post.json b/src/generated/resources/assets/create/models/block/acacia_window_pane_post.json deleted file mode 100644 index 16c4bc4bc..000000000 --- a/src/generated/resources/assets/create/models/block/acacia_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/acacia_window", - "edge": "minecraft:block/acacia_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/acacia_window_pane_side.json b/src/generated/resources/assets/create/models/block/acacia_window_pane_side.json deleted file mode 100644 index 159583ae2..000000000 --- a/src/generated/resources/assets/create/models/block/acacia_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/acacia_window", - "edge": "minecraft:block/acacia_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/acacia_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/acacia_window_pane_side_alt.json deleted file mode 100644 index 126c55740..000000000 --- a/src/generated/resources/assets/create/models/block/acacia_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/acacia_window", - "edge": "minecraft:block/acacia_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_horizontal.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_horizontal.json deleted file mode 100644 index adfe0a06e..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_horizontal.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/end_horizontal", - "textures": { - "side": "create:block/adjustable_chain_gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_horizontal_powered.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_horizontal_powered.json deleted file mode 100644 index 4b63b1044..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_horizontal_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/end_horizontal", - "textures": { - "side": "create:block/adjustable_chain_gearshift_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_vertical.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_vertical.json deleted file mode 100644 index 0b3f928c8..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_vertical.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/end_vertical", - "textures": { - "side": "create:block/adjustable_chain_gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_vertical_powered.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_vertical_powered.json deleted file mode 100644 index b04124f25..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_end_vertical_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/end_vertical", - "textures": { - "side": "create:block/adjustable_chain_gearshift_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_horizontal.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_horizontal.json deleted file mode 100644 index f477ad760..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_horizontal.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/middle_horizontal", - "textures": { - "side": "create:block/adjustable_chain_gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_horizontal_powered.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_horizontal_powered.json deleted file mode 100644 index e42291f6e..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_horizontal_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/middle_horizontal", - "textures": { - "side": "create:block/adjustable_chain_gearshift_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_vertical.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_vertical.json deleted file mode 100644 index 2864bd011..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_vertical.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/middle_vertical", - "textures": { - "side": "create:block/adjustable_chain_gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_vertical_powered.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_vertical_powered.json deleted file mode 100644 index bceeb7a3b..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_middle_vertical_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/middle_vertical", - "textures": { - "side": "create:block/adjustable_chain_gearshift_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_single.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_single.json deleted file mode 100644 index d25d1b26a..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_single.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/single", - "textures": { - "side": "create:block/adjustable_chain_gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_single_powered.json b/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_single_powered.json deleted file mode 100644 index 981e43981..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_chain_gearshift_single_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/single", - "textures": { - "side": "create:block/adjustable_chain_gearshift_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powered.json b/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powered.json deleted file mode 100644 index f1bbd00c2..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/adjustable_pulse_repeater", - "textures": { - "top": "create:block/diodes/adjustable_pulse_repeater/powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powered_powering.json b/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powered_powering.json deleted file mode 100644 index 3d698381e..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powered_powering.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/diodes/adjustable_pulse_repeater", - "textures": { - "torch": "minecraft:block/redstone_torch", - "top": "create:block/diodes/adjustable_pulse_repeater/powered_powering" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powering.json b/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powering.json deleted file mode 100644 index 80fa085fe..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_pulse_repeater_powering.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/diodes/adjustable_pulse_repeater", - "textures": { - "torch": "minecraft:block/redstone_torch", - "top": "create:block/diodes/adjustable_pulse_repeater/powering" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_repeater_powered.json b/src/generated/resources/assets/create/models/block/adjustable_repeater_powered.json deleted file mode 100644 index 0022dae18..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_repeater_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/adjustable_repeater", - "textures": { - "top": "create:block/diodes/adjustable_repeater/powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_repeater_powered_powering.json b/src/generated/resources/assets/create/models/block/adjustable_repeater_powered_powering.json deleted file mode 100644 index 2f6e70954..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_repeater_powered_powering.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/diodes/adjustable_repeater", - "textures": { - "torch": "minecraft:block/redstone_torch", - "top": "create:block/diodes/adjustable_repeater/powered_powering" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/adjustable_repeater_powering.json b/src/generated/resources/assets/create/models/block/adjustable_repeater_powering.json deleted file mode 100644 index 942a6c584..000000000 --- a/src/generated/resources/assets/create/models/block/adjustable_repeater_powering.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/diodes/adjustable_repeater", - "textures": { - "torch": "minecraft:block/redstone_torch", - "top": "create:block/diodes/adjustable_repeater/powering" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__extended.json deleted file mode 100644 index 5036d51eb..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__extended.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall", - "6": "create:block/andesite_funnel", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_extended.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_extended.json deleted file mode 100644 index d4d5598d2..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_extended.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall_powered", - "6": "create:block/andesite_funnel_powered", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pulling.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pulling.json deleted file mode 100644 index a43488f11..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pulling.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pulling", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall_powered", - "6": "create:block/andesite_funnel_powered", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pushing.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pushing.json deleted file mode 100644 index 651382173..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_pushing.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pushing", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall_powered", - "6": "create:block/andesite_funnel_powered", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_retracted.json deleted file mode 100644 index 5552e989d..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__powered_retracted.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall_powered", - "6": "create:block/andesite_funnel_powered", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pulling.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pulling.json deleted file mode 100644 index 5a4fd73da..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pulling.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pulling", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall", - "6": "create:block/andesite_funnel", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pushing.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pushing.json deleted file mode 100644 index 47130f005..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__pushing.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pushing", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall", - "6": "create:block/andesite_funnel", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__retracted.json b/src/generated/resources/assets/create/models/block/andesite_belt_funnel__retracted.json deleted file mode 100644 index 4b272eeee..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_belt_funnel__retracted.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "particle": "minecraft:block/polished_andesite", - "2": "create:block/andesite_funnel_neutral", - "2_1": "create:block/andesite_funnel_push", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "5": "create:block/andesite_funnel_tall", - "6": "create:block/andesite_funnel", - "7": "create:block/andesite_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks.json b/src/generated/resources/assets/create/models/block/andesite_bricks.json deleted file mode 100644 index 22e88a546..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks_slab.json b/src/generated/resources/assets/create/models/block/andesite_bricks_slab.json deleted file mode 100644 index 3a6d1288f..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/andesite/bricks", - "bottom": "create:block/palettes/andesite/bricks", - "top": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/andesite_bricks_slab_top.json deleted file mode 100644 index 2b0015ada..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/andesite/bricks", - "bottom": "create:block/palettes/andesite/bricks", - "top": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks_stairs.json b/src/generated/resources/assets/create/models/block/andesite_bricks_stairs.json deleted file mode 100644 index fd920f06a..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/andesite/bricks", - "bottom": "create:block/palettes/andesite/bricks", - "top": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/andesite_bricks_stairs_inner.json deleted file mode 100644 index a75d2a38c..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/andesite/bricks", - "bottom": "create:block/palettes/andesite/bricks", - "top": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/andesite_bricks_stairs_outer.json deleted file mode 100644 index 34ff87e31..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/andesite/bricks", - "bottom": "create:block/palettes/andesite/bricks", - "top": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/andesite_bricks_wall_post.json deleted file mode 100644 index 048ed9fed..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/andesite_bricks_wall_side.json deleted file mode 100644 index a6d12892d..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/andesite_bricks_wall_side_tall.json deleted file mode 100644 index 47db6fd99..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_casing.json b/src/generated/resources/assets/create/models/block/andesite_casing.json deleted file mode 100644 index d15fb4083..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/andesite_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone.json deleted file mode 100644 index 806425d28..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone_slab.json deleted file mode 100644 index 39d6d7238..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/andesite/cobblestone", - "bottom": "create:block/palettes/andesite/cobblestone", - "top": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone_slab_top.json deleted file mode 100644 index 442bef0c4..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/andesite/cobblestone", - "bottom": "create:block/palettes/andesite/cobblestone", - "top": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs.json deleted file mode 100644 index 2f13d643c..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/andesite/cobblestone", - "bottom": "create:block/palettes/andesite/cobblestone", - "top": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs_inner.json deleted file mode 100644 index c3a780f1a..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/andesite/cobblestone", - "bottom": "create:block/palettes/andesite/cobblestone", - "top": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs_outer.json deleted file mode 100644 index 012a5e2a0..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/andesite/cobblestone", - "bottom": "create:block/palettes/andesite/cobblestone", - "top": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_post.json deleted file mode 100644 index 7e2e08873..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_side.json deleted file mode 100644 index b5a3b3a4b..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_side_tall.json deleted file mode 100644 index 425a262d8..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull.json deleted file mode 100644 index 4ca78f3ab..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "6": "create:block/andesite_funnel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_powered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_powered.json deleted file mode 100644 index f30214bd6..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_pull_powered.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall_powered", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "6": "create:block/andesite_funnel_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push.json deleted file mode 100644 index 090a3e964..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall", - "2_2": "create:block/andesite_funnel_push", - "3": "create:block/andesite_funnel_back", - "6": "create:block/andesite_funnel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_powered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_powered.json deleted file mode 100644 index 3907df971..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_horizontal_push_powered.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall_powered", - "2_2": "create:block/andesite_funnel_push", - "3": "create:block/andesite_funnel_back", - "6": "create:block/andesite_funnel_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull.json deleted file mode 100644 index a05b1954a..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical_filterless", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "8": "create:block/andesite_casing", - "9": "create:block/andesite_funnel_slope", - "10": "create:block/funnel_open" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json deleted file mode 100644 index 979f71145..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_pull_powered.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical_filterless", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall_powered", - "2_2": "create:block/andesite_funnel_pull", - "3": "create:block/andesite_funnel_back", - "8": "create:block/andesite_casing", - "9": "create:block/andesite_funnel_slope", - "10": "create:block/funnel_closed" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push.json deleted file mode 100644 index ef3fe4431..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical_filterless", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall", - "2_2": "create:block/andesite_funnel_push", - "3": "create:block/andesite_funnel_back", - "8": "create:block/andesite_casing", - "9": "create:block/andesite_funnel_slope", - "10": "create:block/funnel_open" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json b/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json deleted file mode 100644 index 4afdf8a20..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_funnel_vertical_filterless_push_powered.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical_filterless", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "5": "create:block/andesite_funnel_tall_powered", - "2_2": "create:block/andesite_funnel_push", - "3": "create:block/andesite_funnel_back", - "8": "create:block/andesite_casing", - "9": "create:block/andesite_funnel_slope", - "10": "create:block/funnel_closed" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_pillar.json b/src/generated/resources/assets/create/models/block/andesite_pillar.json deleted file mode 100644 index a88e5da3c..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/andesite/pillar", - "end": "create:block/palettes/andesite/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json deleted file mode 100644 index 26d9a16a2..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/cross.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/cross", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json deleted file mode 100644 index c09b27740..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/straight.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/straight", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json deleted file mode 100644 index 2f3779c2d..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_left.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/t_left", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json deleted file mode 100644 index 52212c4a7..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/t_right.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/t_right", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json b/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json deleted file mode 100644 index 71fd705dc..000000000 --- a/src/generated/resources/assets/create/models/block/andesite_tunnel/window.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/window", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "3": "create:block/andesite_tunnel_top_window", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/birch_window.json b/src/generated/resources/assets/create/models/block/birch_window.json deleted file mode 100644 index 1ad912f02..000000000 --- a/src/generated/resources/assets/create/models/block/birch_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/birch_window", - "end": "minecraft:block/birch_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/birch_window_pane_noside.json b/src/generated/resources/assets/create/models/block/birch_window_pane_noside.json deleted file mode 100644 index c54f5c683..000000000 --- a/src/generated/resources/assets/create/models/block/birch_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/birch_window", - "edge": "minecraft:block/birch_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/birch_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/birch_window_pane_noside_alt.json deleted file mode 100644 index ee9bf5412..000000000 --- a/src/generated/resources/assets/create/models/block/birch_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/birch_window", - "edge": "minecraft:block/birch_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/birch_window_pane_post.json b/src/generated/resources/assets/create/models/block/birch_window_pane_post.json deleted file mode 100644 index 0e76cc402..000000000 --- a/src/generated/resources/assets/create/models/block/birch_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/birch_window", - "edge": "minecraft:block/birch_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/birch_window_pane_side.json b/src/generated/resources/assets/create/models/block/birch_window_pane_side.json deleted file mode 100644 index 2612250f8..000000000 --- a/src/generated/resources/assets/create/models/block/birch_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/birch_window", - "edge": "minecraft:block/birch_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/birch_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/birch_window_pane_side_alt.json deleted file mode 100644 index b1eb7c105..000000000 --- a/src/generated/resources/assets/create/models/block/birch_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/birch_window", - "edge": "minecraft:block/birch_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/black_sail.json b/src/generated/resources/assets/create/models/block/black_sail.json deleted file mode 100644 index 416fe2056..000000000 --- a/src/generated/resources/assets/create/models/block/black_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_black" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/black_seat.json b/src/generated/resources/assets/create/models/block/black_seat.json deleted file mode 100644 index c5e3b9429..000000000 --- a/src/generated/resources/assets/create/models/block/black_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_black", - "2": "create:block/seat/side_black" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/black_valve_handle.json b/src/generated/resources/assets/create/models/block/black_valve_handle.json deleted file mode 100644 index ab80a3b74..000000000 --- a/src/generated/resources/assets/create/models/block/black_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_black" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/blue_sail.json b/src/generated/resources/assets/create/models/block/blue_sail.json deleted file mode 100644 index 90af507ee..000000000 --- a/src/generated/resources/assets/create/models/block/blue_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_blue" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/blue_seat.json b/src/generated/resources/assets/create/models/block/blue_seat.json deleted file mode 100644 index 5b23c4325..000000000 --- a/src/generated/resources/assets/create/models/block/blue_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_blue", - "2": "create:block/seat/side_blue" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/blue_valve_handle.json b/src/generated/resources/assets/create/models/block/blue_valve_handle.json deleted file mode 100644 index fdd760222..000000000 --- a/src/generated/resources/assets/create/models/block/blue_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_blue" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/cog/ground_metal.json b/src/generated/resources/assets/create/models/block/bracket/cog/ground_metal.json deleted file mode 100644 index 08c425195..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/cog/ground_metal.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/cog/ground", - "textures": { - "bracket": "create:block/bracket_metal", - "plate": "create:block/bracket_plate_metal" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/cog/ground_wooden.json b/src/generated/resources/assets/create/models/block/bracket/cog/ground_wooden.json deleted file mode 100644 index 8dae78d11..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/cog/ground_wooden.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/cog/ground", - "textures": { - "bracket": "create:block/bracket_wooden", - "plate": "create:block/bracket_plate_wooden" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/cog/wall_metal.json b/src/generated/resources/assets/create/models/block/bracket/cog/wall_metal.json deleted file mode 100644 index 9e25af4cb..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/cog/wall_metal.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/cog/wall", - "textures": { - "bracket": "create:block/bracket_metal", - "plate": "create:block/bracket_plate_metal" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/cog/wall_wooden.json b/src/generated/resources/assets/create/models/block/bracket/cog/wall_wooden.json deleted file mode 100644 index 94aabcbee..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/cog/wall_wooden.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/cog/wall", - "textures": { - "bracket": "create:block/bracket_wooden", - "plate": "create:block/bracket_plate_wooden" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/pipe/ground_metal.json b/src/generated/resources/assets/create/models/block/bracket/pipe/ground_metal.json deleted file mode 100644 index a943f6809..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/pipe/ground_metal.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/pipe/ground", - "textures": { - "bracket": "create:block/bracket_metal", - "plate": "create:block/bracket_plate_metal" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/pipe/ground_wooden.json b/src/generated/resources/assets/create/models/block/bracket/pipe/ground_wooden.json deleted file mode 100644 index e7e7ecf37..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/pipe/ground_wooden.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/pipe/ground", - "textures": { - "bracket": "create:block/bracket_wooden", - "plate": "create:block/bracket_plate_wooden" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/pipe/wall_metal.json b/src/generated/resources/assets/create/models/block/bracket/pipe/wall_metal.json deleted file mode 100644 index c7999f010..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/pipe/wall_metal.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/pipe/wall", - "textures": { - "bracket": "create:block/bracket_metal", - "plate": "create:block/bracket_plate_metal" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/pipe/wall_wooden.json b/src/generated/resources/assets/create/models/block/bracket/pipe/wall_wooden.json deleted file mode 100644 index 2692a2407..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/pipe/wall_wooden.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/pipe/wall", - "textures": { - "bracket": "create:block/bracket_wooden", - "plate": "create:block/bracket_plate_wooden" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/shaft/ground_metal.json b/src/generated/resources/assets/create/models/block/bracket/shaft/ground_metal.json deleted file mode 100644 index 230d14a80..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/shaft/ground_metal.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/shaft/ground", - "textures": { - "bracket": "create:block/bracket_metal", - "plate": "create:block/bracket_plate_metal" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/shaft/ground_wooden.json b/src/generated/resources/assets/create/models/block/bracket/shaft/ground_wooden.json deleted file mode 100644 index 82133d9e2..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/shaft/ground_wooden.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/shaft/ground", - "textures": { - "bracket": "create:block/bracket_wooden", - "plate": "create:block/bracket_plate_wooden" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/shaft/wall_metal.json b/src/generated/resources/assets/create/models/block/bracket/shaft/wall_metal.json deleted file mode 100644 index 95664f94a..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/shaft/wall_metal.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/shaft/wall", - "textures": { - "bracket": "create:block/bracket_metal", - "plate": "create:block/bracket_plate_metal" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/bracket/shaft/wall_wooden.json b/src/generated/resources/assets/create/models/block/bracket/shaft/wall_wooden.json deleted file mode 100644 index ab477f450..000000000 --- a/src/generated/resources/assets/create/models/block/bracket/shaft/wall_wooden.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/shaft/wall", - "textures": { - "bracket": "create:block/bracket_wooden", - "plate": "create:block/bracket_plate_wooden" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel__extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__extended.json deleted file mode 100644 index 0fce1a25a..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel__extended.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_extended.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_extended.json deleted file mode 100644 index ff664c508..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_extended.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall_powered", - "6": "create:block/brass_funnel_powered", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pulling.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pulling.json deleted file mode 100644 index b2afb7d4e..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pulling.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pulling", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall_powered", - "6": "create:block/brass_funnel_powered", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pushing.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pushing.json deleted file mode 100644 index 99b733775..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_pushing.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pushing", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall_powered", - "6": "create:block/brass_funnel_powered", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_retracted.json deleted file mode 100644 index 60060dfb5..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel__powered_retracted.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall_powered", - "6": "create:block/brass_funnel_powered", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel__pulling.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__pulling.json deleted file mode 100644 index 2975e7830..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel__pulling.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pulling", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel__pushing.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__pushing.json deleted file mode 100644 index a1130fb8e..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel__pushing.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_pushing", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_belt_funnel__retracted.json b/src/generated/resources/assets/create/models/block/brass_belt_funnel__retracted.json deleted file mode 100644 index 693ec38e6..000000000 --- a/src/generated/resources/assets/create/models/block/brass_belt_funnel__retracted.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "particle": "create:block/brass_block", - "2": "create:block/brass_funnel_neutral", - "2_1": "create:block/brass_funnel_push", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_block.json b/src/generated/resources/assets/create/models/block/brass_block.json deleted file mode 100644 index c3d4b94f4..000000000 --- a/src/generated/resources/assets/create/models/block/brass_block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/brass_storage_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_casing.json b/src/generated/resources/assets/create/models/block/brass_casing.json deleted file mode 100644 index 37a8ab02e..000000000 --- a/src/generated/resources/assets/create/models/block/brass_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/brass_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull.json deleted file mode 100644 index a971472b4..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "6": "create:block/brass_funnel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_powered.json deleted file mode 100644 index 38c8a7e7a..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_pull_powered.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall_powered", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "6": "create:block/brass_funnel_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push.json deleted file mode 100644 index 85321b031..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall", - "2_2": "create:block/brass_funnel_push", - "3": "create:block/brass_funnel_back", - "6": "create:block/brass_funnel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_powered.json deleted file mode 100644 index 83a796536..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_horizontal_push_powered.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/block_horizontal", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall_powered", - "2_2": "create:block/brass_funnel_push", - "3": "create:block/brass_funnel_back", - "6": "create:block/brass_funnel_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull.json deleted file mode 100644 index d2a1c6159..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "8": "create:block/brass_casing", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_open" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_powered.json deleted file mode 100644 index e319cf39d..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_pull_powered.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall_powered", - "2_2": "create:block/brass_funnel_pull", - "3": "create:block/brass_funnel_back", - "8": "create:block/brass_casing", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_closed" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push.json deleted file mode 100644 index f95cdf391..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall", - "2_2": "create:block/brass_funnel_push", - "3": "create:block/brass_funnel_back", - "8": "create:block/brass_casing", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_open" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_powered.json b/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_powered.json deleted file mode 100644 index 45ac7f48f..000000000 --- a/src/generated/resources/assets/create/models/block/brass_funnel_vertical_push_powered.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "parent": "create:block/funnel/block_vertical", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "5": "create:block/brass_funnel_tall_powered", - "2_2": "create:block/brass_funnel_push", - "3": "create:block/brass_funnel_back", - "8": "create:block/brass_casing", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_closed" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json b/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json deleted file mode 100644 index 35f563cc3..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/cross.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/cross", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json b/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json deleted file mode 100644 index 219f22257..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/straight.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/straight", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json b/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json deleted file mode 100644 index 62165f533..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/t_left.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/t_left", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json b/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json deleted file mode 100644 index a9da1c54a..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/t_right.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/t_right", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brass_tunnel/window.json b/src/generated/resources/assets/create/models/block/brass_tunnel/window.json deleted file mode 100644 index 0c62dcab8..000000000 --- a/src/generated/resources/assets/create/models/block/brass_tunnel/window.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/window", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brown_sail.json b/src/generated/resources/assets/create/models/block/brown_sail.json deleted file mode 100644 index 820d4147b..000000000 --- a/src/generated/resources/assets/create/models/block/brown_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_brown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brown_seat.json b/src/generated/resources/assets/create/models/block/brown_seat.json deleted file mode 100644 index 5734d07ff..000000000 --- a/src/generated/resources/assets/create/models/block/brown_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_brown", - "2": "create:block/seat/side_brown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/brown_valve_handle.json b/src/generated/resources/assets/create/models/block/brown_valve_handle.json deleted file mode 100644 index f3c7519cc..000000000 --- a/src/generated/resources/assets/create/models/block/brown_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_brown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chiseled_dark_scoria.json b/src/generated/resources/assets/create/models/block/chiseled_dark_scoria.json deleted file mode 100644 index 080980a3b..000000000 --- a/src/generated/resources/assets/create/models/block/chiseled_dark_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dark_scoria/chiseled", - "end": "create:block/palettes/dark_scoria/chiseled_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chiseled_dolomite.json b/src/generated/resources/assets/create/models/block/chiseled_dolomite.json deleted file mode 100644 index cdee2115c..000000000 --- a/src/generated/resources/assets/create/models/block/chiseled_dolomite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dolomite/chiseled", - "end": "create:block/palettes/dolomite/chiseled_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chiseled_gabbro.json b/src/generated/resources/assets/create/models/block/chiseled_gabbro.json deleted file mode 100644 index 4e48273e8..000000000 --- a/src/generated/resources/assets/create/models/block/chiseled_gabbro.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/gabbro/chiseled", - "end": "create:block/palettes/gabbro/chiseled_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chiseled_limestone.json b/src/generated/resources/assets/create/models/block/chiseled_limestone.json deleted file mode 100644 index 14570ab84..000000000 --- a/src/generated/resources/assets/create/models/block/chiseled_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/limestone/chiseled", - "end": "create:block/palettes/limestone/chiseled_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chiseled_scoria.json b/src/generated/resources/assets/create/models/block/chiseled_scoria.json deleted file mode 100644 index e59be6f3a..000000000 --- a/src/generated/resources/assets/create/models/block/chiseled_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/scoria/chiseled", - "end": "create:block/palettes/scoria/chiseled_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chiseled_weathered_limestone.json b/src/generated/resources/assets/create/models/block/chiseled_weathered_limestone.json deleted file mode 100644 index 0f19bc9ee..000000000 --- a/src/generated/resources/assets/create/models/block/chiseled_weathered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/weathered_limestone/chiseled", - "end": "create:block/palettes/weathered_limestone/chiseled_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chocolate.json b/src/generated/resources/assets/create/models/block/chocolate.json deleted file mode 100644 index 1baf010f2..000000000 --- a/src/generated/resources/assets/create/models/block/chocolate.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "create:fluid/chocolate_still" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/clockwork_bearing.json b/src/generated/resources/assets/create/models/block/clockwork_bearing.json deleted file mode 100644 index 918f089a7..000000000 --- a/src/generated/resources/assets/create/models/block/clockwork_bearing.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/bearing/block", - "textures": { - "side": "create:block/clockwork_bearing_side", - "nook": "create:block/brass_casing", - "back": "create:block/brass_gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/copper_casing.json b/src/generated/resources/assets/create/models/block/copper_casing.json deleted file mode 100644 index c9b43fb75..000000000 --- a/src/generated/resources/assets/create/models/block/copper_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/copper_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/copper_valve_handle.json b/src/generated/resources/assets/create/models/block/copper_valve_handle.json deleted file mode 100644 index c57f42889..000000000 --- a/src/generated/resources/assets/create/models/block/copper_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_copper" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/brass/bottom.json b/src/generated/resources/assets/create/models/block/crate/brass/bottom.json deleted file mode 100644 index 8c93e8863..000000000 --- a/src/generated/resources/assets/create/models/block/crate/brass/bottom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/bottom", - "textures": { - "crate": "create:block/crate_brass", - "side": "create:block/crate_brass_side", - "casing": "create:block/brass_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/brass/left.json b/src/generated/resources/assets/create/models/block/crate/brass/left.json deleted file mode 100644 index bd7d013c7..000000000 --- a/src/generated/resources/assets/create/models/block/crate/brass/left.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/left", - "textures": { - "crate": "create:block/crate_brass", - "side": "create:block/crate_brass_side", - "casing": "create:block/brass_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/brass/right.json b/src/generated/resources/assets/create/models/block/crate/brass/right.json deleted file mode 100644 index ab12b0aa2..000000000 --- a/src/generated/resources/assets/create/models/block/crate/brass/right.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/right", - "textures": { - "crate": "create:block/crate_brass", - "side": "create:block/crate_brass_side", - "casing": "create:block/brass_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/brass/single.json b/src/generated/resources/assets/create/models/block/crate/brass/single.json deleted file mode 100644 index 6e294b01c..000000000 --- a/src/generated/resources/assets/create/models/block/crate/brass/single.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/single", - "textures": { - "crate": "create:block/crate_brass", - "side": "create:block/crate_brass_side", - "casing": "create:block/brass_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/brass/top.json b/src/generated/resources/assets/create/models/block/crate/brass/top.json deleted file mode 100644 index 752b38aee..000000000 --- a/src/generated/resources/assets/create/models/block/crate/brass/top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/top", - "textures": { - "crate": "create:block/crate_brass", - "side": "create:block/crate_brass_side", - "casing": "create:block/brass_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/creative/bottom.json b/src/generated/resources/assets/create/models/block/crate/creative/bottom.json deleted file mode 100644 index 15f1b28f5..000000000 --- a/src/generated/resources/assets/create/models/block/crate/creative/bottom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/bottom", - "textures": { - "crate": "create:block/crate_creative", - "side": "create:block/crate_creative_side", - "casing": "create:block/creative_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/creative/left.json b/src/generated/resources/assets/create/models/block/crate/creative/left.json deleted file mode 100644 index 5e007e01e..000000000 --- a/src/generated/resources/assets/create/models/block/crate/creative/left.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/left", - "textures": { - "crate": "create:block/crate_creative", - "side": "create:block/crate_creative_side", - "casing": "create:block/creative_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/creative/right.json b/src/generated/resources/assets/create/models/block/crate/creative/right.json deleted file mode 100644 index 39700ec5a..000000000 --- a/src/generated/resources/assets/create/models/block/crate/creative/right.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/right", - "textures": { - "crate": "create:block/crate_creative", - "side": "create:block/crate_creative_side", - "casing": "create:block/creative_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/creative/single.json b/src/generated/resources/assets/create/models/block/crate/creative/single.json deleted file mode 100644 index c0d8d8a20..000000000 --- a/src/generated/resources/assets/create/models/block/crate/creative/single.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/single", - "textures": { - "crate": "create:block/crate_creative", - "side": "create:block/crate_creative_side", - "casing": "create:block/creative_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crate/creative/top.json b/src/generated/resources/assets/create/models/block/crate/creative/top.json deleted file mode 100644 index 1529b7f37..000000000 --- a/src/generated/resources/assets/create/models/block/crate/creative/top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/crate/top", - "textures": { - "crate": "create:block/crate_creative", - "side": "create:block/crate_creative_side", - "casing": "create:block/creative_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_bottom.json b/src/generated/resources/assets/create/models/block/creative_bottom.json deleted file mode 100644 index f78fb4955..000000000 --- a/src/generated/resources/assets/create/models/block/creative_bottom.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_bottom", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_bottom_window.json b/src/generated/resources/assets/create/models/block/creative_bottom_window.json deleted file mode 100644 index 2e1ca750d..000000000 --- a/src/generated/resources/assets/create/models/block/creative_bottom_window.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_bottom_window", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_bottom_window_ne.json b/src/generated/resources/assets/create/models/block/creative_bottom_window_ne.json deleted file mode 100644 index 2deff3002..000000000 --- a/src/generated/resources/assets/create/models/block/creative_bottom_window_ne.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_bottom_window_ne", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_bottom_window_nw.json b/src/generated/resources/assets/create/models/block/creative_bottom_window_nw.json deleted file mode 100644 index 0731ad052..000000000 --- a/src/generated/resources/assets/create/models/block/creative_bottom_window_nw.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_bottom_window_nw", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_bottom_window_se.json b/src/generated/resources/assets/create/models/block/creative_bottom_window_se.json deleted file mode 100644 index d96fd2319..000000000 --- a/src/generated/resources/assets/create/models/block/creative_bottom_window_se.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_bottom_window_se", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_bottom_window_sw.json b/src/generated/resources/assets/create/models/block/creative_bottom_window_sw.json deleted file mode 100644 index 5dc3463d8..000000000 --- a/src/generated/resources/assets/create/models/block/creative_bottom_window_sw.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_bottom_window_sw", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_middle.json b/src/generated/resources/assets/create/models/block/creative_middle.json deleted file mode 100644 index 71eca1c08..000000000 --- a/src/generated/resources/assets/create/models/block/creative_middle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_middle", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_middle_window.json b/src/generated/resources/assets/create/models/block/creative_middle_window.json deleted file mode 100644 index 21ce237ea..000000000 --- a/src/generated/resources/assets/create/models/block/creative_middle_window.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_middle_window", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_middle_window_ne.json b/src/generated/resources/assets/create/models/block/creative_middle_window_ne.json deleted file mode 100644 index 9e320a620..000000000 --- a/src/generated/resources/assets/create/models/block/creative_middle_window_ne.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_middle_window_ne", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_middle_window_nw.json b/src/generated/resources/assets/create/models/block/creative_middle_window_nw.json deleted file mode 100644 index 020d67af6..000000000 --- a/src/generated/resources/assets/create/models/block/creative_middle_window_nw.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_middle_window_nw", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_middle_window_se.json b/src/generated/resources/assets/create/models/block/creative_middle_window_se.json deleted file mode 100644 index d93c8f60b..000000000 --- a/src/generated/resources/assets/create/models/block/creative_middle_window_se.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_middle_window_se", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_middle_window_sw.json b/src/generated/resources/assets/create/models/block/creative_middle_window_sw.json deleted file mode 100644 index b1616aea4..000000000 --- a/src/generated/resources/assets/create/models/block/creative_middle_window_sw.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_middle_window_sw", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_single.json b/src/generated/resources/assets/create/models/block/creative_single.json deleted file mode 100644 index e4ddf2442..000000000 --- a/src/generated/resources/assets/create/models/block/creative_single.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_single", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_single_window.json b/src/generated/resources/assets/create/models/block/creative_single_window.json deleted file mode 100644 index 48f6d55f6..000000000 --- a/src/generated/resources/assets/create/models/block/creative_single_window.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_single_window", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_single_window_ne.json b/src/generated/resources/assets/create/models/block/creative_single_window_ne.json deleted file mode 100644 index 04e396d6d..000000000 --- a/src/generated/resources/assets/create/models/block/creative_single_window_ne.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_single_window_ne", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_single_window_nw.json b/src/generated/resources/assets/create/models/block/creative_single_window_nw.json deleted file mode 100644 index 95627be45..000000000 --- a/src/generated/resources/assets/create/models/block/creative_single_window_nw.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_single_window_nw", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_single_window_se.json b/src/generated/resources/assets/create/models/block/creative_single_window_se.json deleted file mode 100644 index 6298b347c..000000000 --- a/src/generated/resources/assets/create/models/block/creative_single_window_se.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_single_window_se", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_single_window_sw.json b/src/generated/resources/assets/create/models/block/creative_single_window_sw.json deleted file mode 100644 index 2922d5194..000000000 --- a/src/generated/resources/assets/create/models/block/creative_single_window_sw.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_single_window_sw", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_top.json b/src/generated/resources/assets/create/models/block/creative_top.json deleted file mode 100644 index df3680697..000000000 --- a/src/generated/resources/assets/create/models/block/creative_top.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_top", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_top_window.json b/src/generated/resources/assets/create/models/block/creative_top_window.json deleted file mode 100644 index a04004a03..000000000 --- a/src/generated/resources/assets/create/models/block/creative_top_window.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_top_window", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_top_window_ne.json b/src/generated/resources/assets/create/models/block/creative_top_window_ne.json deleted file mode 100644 index 9d23dea7c..000000000 --- a/src/generated/resources/assets/create/models/block/creative_top_window_ne.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_top_window_ne", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_top_window_nw.json b/src/generated/resources/assets/create/models/block/creative_top_window_nw.json deleted file mode 100644 index adbfc257c..000000000 --- a/src/generated/resources/assets/create/models/block/creative_top_window_nw.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_top_window_nw", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_top_window_se.json b/src/generated/resources/assets/create/models/block/creative_top_window_se.json deleted file mode 100644 index 01f3e593c..000000000 --- a/src/generated/resources/assets/create/models/block/creative_top_window_se.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_top_window_se", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/creative_top_window_sw.json b/src/generated/resources/assets/create/models/block/creative_top_window_sw.json deleted file mode 100644 index cc741f226..000000000 --- a/src/generated/resources/assets/create/models/block/creative_top_window_sw.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_top_window_sw", - "textures": { - "0": "create:block/creative_casing", - "1": "create:block/creative_fluid_tank", - "3": "create:block/creative_fluid_tank_window", - "4": "create:block/creative_fluid_tank_window_single", - "particle": "create:block/creative_fluid_tank" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crimson_window.json b/src/generated/resources/assets/create/models/block/crimson_window.json deleted file mode 100644 index f240fb6f9..000000000 --- a/src/generated/resources/assets/create/models/block/crimson_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/crimson_window", - "end": "minecraft:block/crimson_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crimson_window_pane_noside.json b/src/generated/resources/assets/create/models/block/crimson_window_pane_noside.json deleted file mode 100644 index 9d674fc5a..000000000 --- a/src/generated/resources/assets/create/models/block/crimson_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/crimson_window", - "edge": "minecraft:block/crimson_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crimson_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/crimson_window_pane_noside_alt.json deleted file mode 100644 index cf7ff996b..000000000 --- a/src/generated/resources/assets/create/models/block/crimson_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/crimson_window", - "edge": "minecraft:block/crimson_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crimson_window_pane_post.json b/src/generated/resources/assets/create/models/block/crimson_window_pane_post.json deleted file mode 100644 index 07d86e211..000000000 --- a/src/generated/resources/assets/create/models/block/crimson_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/crimson_window", - "edge": "minecraft:block/crimson_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crimson_window_pane_side.json b/src/generated/resources/assets/create/models/block/crimson_window_pane_side.json deleted file mode 100644 index 9cb062af8..000000000 --- a/src/generated/resources/assets/create/models/block/crimson_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/crimson_window", - "edge": "minecraft:block/crimson_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/crimson_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/crimson_window_pane_side_alt.json deleted file mode 100644 index 023d94c84..000000000 --- a/src/generated/resources/assets/create/models/block/crimson_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/crimson_window", - "edge": "minecraft:block/crimson_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/cyan_sail.json b/src/generated/resources/assets/create/models/block/cyan_sail.json deleted file mode 100644 index 9c514400b..000000000 --- a/src/generated/resources/assets/create/models/block/cyan_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_cyan" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/cyan_seat.json b/src/generated/resources/assets/create/models/block/cyan_seat.json deleted file mode 100644 index a1b7657eb..000000000 --- a/src/generated/resources/assets/create/models/block/cyan_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_cyan", - "2": "create:block/seat/side_cyan" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/cyan_valve_handle.json b/src/generated/resources/assets/create/models/block/cyan_valve_handle.json deleted file mode 100644 index b05a779c1..000000000 --- a/src/generated/resources/assets/create/models/block/cyan_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_cyan" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_oak_window.json b/src/generated/resources/assets/create/models/block/dark_oak_window.json deleted file mode 100644 index 097a58094..000000000 --- a/src/generated/resources/assets/create/models/block/dark_oak_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dark_oak_window", - "end": "minecraft:block/dark_oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_noside.json b/src/generated/resources/assets/create/models/block/dark_oak_window_pane_noside.json deleted file mode 100644 index 1a1cbef14..000000000 --- a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/dark_oak_window", - "edge": "minecraft:block/dark_oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/dark_oak_window_pane_noside_alt.json deleted file mode 100644 index 3decddf24..000000000 --- a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/dark_oak_window", - "edge": "minecraft:block/dark_oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_post.json b/src/generated/resources/assets/create/models/block/dark_oak_window_pane_post.json deleted file mode 100644 index a5d42bf25..000000000 --- a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/dark_oak_window", - "edge": "minecraft:block/dark_oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_side.json b/src/generated/resources/assets/create/models/block/dark_oak_window_pane_side.json deleted file mode 100644 index 0809fd635..000000000 --- a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/dark_oak_window", - "edge": "minecraft:block/dark_oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/dark_oak_window_pane_side_alt.json deleted file mode 100644 index 154a31f29..000000000 --- a/src/generated/resources/assets/create/models/block/dark_oak_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/dark_oak_window", - "edge": "minecraft:block/dark_oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria.json b/src/generated/resources/assets/create/models/block/dark_scoria.json deleted file mode 100644 index b42af805e..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dark_scoria/plain" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks.json deleted file mode 100644 index 96d2d3a74..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_slab.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks_slab.json deleted file mode 100644 index 8bd9ad6f6..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dark_scoria/bricks", - "bottom": "create:block/palettes/dark_scoria/bricks", - "top": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks_slab_top.json deleted file mode 100644 index 058886113..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dark_scoria/bricks", - "bottom": "create:block/palettes/dark_scoria/bricks", - "top": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs.json deleted file mode 100644 index 6d7846de1..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/bricks", - "bottom": "create:block/palettes/dark_scoria/bricks", - "top": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs_inner.json deleted file mode 100644 index a06005b4f..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/bricks", - "bottom": "create:block/palettes/dark_scoria/bricks", - "top": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs_outer.json deleted file mode 100644 index cca3227b8..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/bricks", - "bottom": "create:block/palettes/dark_scoria/bricks", - "top": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_post.json deleted file mode 100644 index 5ce936e2d..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_side.json deleted file mode 100644 index b3680583b..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_side_tall.json deleted file mode 100644 index 73a8c40ba..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone.json deleted file mode 100644 index 7f060255c..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_slab.json deleted file mode 100644 index 46a3767de..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dark_scoria/cobblestone", - "bottom": "create:block/palettes/dark_scoria/cobblestone", - "top": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_slab_top.json deleted file mode 100644 index 2aa2152a9..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dark_scoria/cobblestone", - "bottom": "create:block/palettes/dark_scoria/cobblestone", - "top": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs.json deleted file mode 100644 index fb837b8c0..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/cobblestone", - "bottom": "create:block/palettes/dark_scoria/cobblestone", - "top": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs_inner.json deleted file mode 100644 index c7d24e33e..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/cobblestone", - "bottom": "create:block/palettes/dark_scoria/cobblestone", - "top": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs_outer.json deleted file mode 100644 index 1131cd0f1..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/cobblestone", - "bottom": "create:block/palettes/dark_scoria/cobblestone", - "top": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_post.json deleted file mode 100644 index d223adc29..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_side.json deleted file mode 100644 index 2f2452c39..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_side_tall.json deleted file mode 100644 index 1b03caae6..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dark_scoria_pillar.json b/src/generated/resources/assets/create/models/block/dark_scoria_pillar.json deleted file mode 100644 index a80056fce..000000000 --- a/src/generated/resources/assets/create/models/block/dark_scoria_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dark_scoria/pillar", - "end": "create:block/palettes/dark_scoria/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks.json b/src/generated/resources/assets/create/models/block/diorite_bricks.json deleted file mode 100644 index b38a46f55..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks_slab.json b/src/generated/resources/assets/create/models/block/diorite_bricks_slab.json deleted file mode 100644 index a2fc289d4..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/diorite/bricks", - "bottom": "create:block/palettes/diorite/bricks", - "top": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/diorite_bricks_slab_top.json deleted file mode 100644 index a4289e5f8..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/diorite/bricks", - "bottom": "create:block/palettes/diorite/bricks", - "top": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks_stairs.json b/src/generated/resources/assets/create/models/block/diorite_bricks_stairs.json deleted file mode 100644 index 0e8baa719..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/diorite/bricks", - "bottom": "create:block/palettes/diorite/bricks", - "top": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/diorite_bricks_stairs_inner.json deleted file mode 100644 index 886a79885..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/diorite/bricks", - "bottom": "create:block/palettes/diorite/bricks", - "top": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/diorite_bricks_stairs_outer.json deleted file mode 100644 index 134c45a5a..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/diorite/bricks", - "bottom": "create:block/palettes/diorite/bricks", - "top": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/diorite_bricks_wall_post.json deleted file mode 100644 index 6e635cc66..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/diorite_bricks_wall_side.json deleted file mode 100644 index 5b12d7353..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/diorite_bricks_wall_side_tall.json deleted file mode 100644 index dde396143..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone.json deleted file mode 100644 index 2c7a441de..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone_slab.json deleted file mode 100644 index 5c2243f53..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/diorite/cobblestone", - "bottom": "create:block/palettes/diorite/cobblestone", - "top": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone_slab_top.json deleted file mode 100644 index 654e1c46a..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/diorite/cobblestone", - "bottom": "create:block/palettes/diorite/cobblestone", - "top": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs.json deleted file mode 100644 index 5cb3dbb06..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/diorite/cobblestone", - "bottom": "create:block/palettes/diorite/cobblestone", - "top": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs_inner.json deleted file mode 100644 index fd6d5ee4a..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/diorite/cobblestone", - "bottom": "create:block/palettes/diorite/cobblestone", - "top": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs_outer.json deleted file mode 100644 index b39c74032..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/diorite/cobblestone", - "bottom": "create:block/palettes/diorite/cobblestone", - "top": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_post.json deleted file mode 100644 index f49cd8594..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_side.json deleted file mode 100644 index cb646a199..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_side_tall.json deleted file mode 100644 index d8c9d983d..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/diorite_pillar.json b/src/generated/resources/assets/create/models/block/diorite_pillar.json deleted file mode 100644 index e626ee096..000000000 --- a/src/generated/resources/assets/create/models/block/diorite_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/diorite/pillar", - "end": "create:block/palettes/diorite/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite.json b/src/generated/resources/assets/create/models/block/dolomite.json deleted file mode 100644 index 142565c9a..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dolomite/plain" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks.json b/src/generated/resources/assets/create/models/block/dolomite_bricks.json deleted file mode 100644 index 4289fe540..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks_slab.json b/src/generated/resources/assets/create/models/block/dolomite_bricks_slab.json deleted file mode 100644 index d8abd478a..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dolomite/bricks", - "bottom": "create:block/palettes/dolomite/bricks", - "top": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/dolomite_bricks_slab_top.json deleted file mode 100644 index 4430635e4..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dolomite/bricks", - "bottom": "create:block/palettes/dolomite/bricks", - "top": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs.json b/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs.json deleted file mode 100644 index 2f2b5c520..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dolomite/bricks", - "bottom": "create:block/palettes/dolomite/bricks", - "top": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs_inner.json deleted file mode 100644 index c10a2e1c4..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dolomite/bricks", - "bottom": "create:block/palettes/dolomite/bricks", - "top": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs_outer.json deleted file mode 100644 index a0180909b..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dolomite/bricks", - "bottom": "create:block/palettes/dolomite/bricks", - "top": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_post.json deleted file mode 100644 index 214f4cd17..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_side.json deleted file mode 100644 index 941367257..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_side_tall.json deleted file mode 100644 index 5142c76ac..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone.json deleted file mode 100644 index 03663865c..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone_slab.json deleted file mode 100644 index 70e878a5e..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dolomite/cobblestone", - "bottom": "create:block/palettes/dolomite/cobblestone", - "top": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone_slab_top.json deleted file mode 100644 index d63a76388..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dolomite/cobblestone", - "bottom": "create:block/palettes/dolomite/cobblestone", - "top": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs.json deleted file mode 100644 index 54b902f95..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dolomite/cobblestone", - "bottom": "create:block/palettes/dolomite/cobblestone", - "top": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs_inner.json deleted file mode 100644 index fe5799403..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dolomite/cobblestone", - "bottom": "create:block/palettes/dolomite/cobblestone", - "top": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs_outer.json deleted file mode 100644 index ff300599a..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dolomite/cobblestone", - "bottom": "create:block/palettes/dolomite/cobblestone", - "top": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_post.json deleted file mode 100644 index b46cea8ba..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_side.json deleted file mode 100644 index 80ef8dc12..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_side_tall.json deleted file mode 100644 index 134aaeb73..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/dolomite_pillar.json b/src/generated/resources/assets/create/models/block/dolomite_pillar.json deleted file mode 100644 index 8709e4781..000000000 --- a/src/generated/resources/assets/create/models/block/dolomite_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dolomite/pillar", - "end": "create:block/palettes/dolomite/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks.json deleted file mode 100644 index 38c0ddb5e..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_slab.json deleted file mode 100644 index f34f2b1eb..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/andesite/fancy_bricks", - "bottom": "create:block/palettes/andesite/fancy_bricks", - "top": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_slab_top.json deleted file mode 100644 index 26dfd168e..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/andesite/fancy_bricks", - "bottom": "create:block/palettes/andesite/fancy_bricks", - "top": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs.json deleted file mode 100644 index 51d4e1ee3..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/andesite/fancy_bricks", - "bottom": "create:block/palettes/andesite/fancy_bricks", - "top": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs_inner.json deleted file mode 100644 index aea5be3d6..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/andesite/fancy_bricks", - "bottom": "create:block/palettes/andesite/fancy_bricks", - "top": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs_outer.json deleted file mode 100644 index 2c37aea5e..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/andesite/fancy_bricks", - "bottom": "create:block/palettes/andesite/fancy_bricks", - "top": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_post.json deleted file mode 100644 index a1d0b09c9..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_side.json deleted file mode 100644 index b7ebe8cd6..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_side_tall.json deleted file mode 100644 index fc218a12c..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_andesite_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks.json deleted file mode 100644 index dd96185eb..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_slab.json deleted file mode 100644 index 2801b0ccd..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dark_scoria/fancy_bricks", - "bottom": "create:block/palettes/dark_scoria/fancy_bricks", - "top": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_slab_top.json deleted file mode 100644 index 13c13ab10..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dark_scoria/fancy_bricks", - "bottom": "create:block/palettes/dark_scoria/fancy_bricks", - "top": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs.json deleted file mode 100644 index 6e3ddd08c..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/fancy_bricks", - "bottom": "create:block/palettes/dark_scoria/fancy_bricks", - "top": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs_inner.json deleted file mode 100644 index 841b52c66..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/fancy_bricks", - "bottom": "create:block/palettes/dark_scoria/fancy_bricks", - "top": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs_outer.json deleted file mode 100644 index 13418c44f..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/fancy_bricks", - "bottom": "create:block/palettes/dark_scoria/fancy_bricks", - "top": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_post.json deleted file mode 100644 index ffda40d11..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_side.json deleted file mode 100644 index 7dd6e7769..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_side_tall.json deleted file mode 100644 index 7502cc5ec..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dark_scoria_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks.json deleted file mode 100644 index 2fb757c09..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_slab.json deleted file mode 100644 index 2158ed3ae..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/diorite/fancy_bricks", - "bottom": "create:block/palettes/diorite/fancy_bricks", - "top": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_slab_top.json deleted file mode 100644 index 0b0c10c5e..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/diorite/fancy_bricks", - "bottom": "create:block/palettes/diorite/fancy_bricks", - "top": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs.json deleted file mode 100644 index 1f740ba85..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/diorite/fancy_bricks", - "bottom": "create:block/palettes/diorite/fancy_bricks", - "top": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs_inner.json deleted file mode 100644 index c2b4e230e..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/diorite/fancy_bricks", - "bottom": "create:block/palettes/diorite/fancy_bricks", - "top": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs_outer.json deleted file mode 100644 index 6980356a9..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/diorite/fancy_bricks", - "bottom": "create:block/palettes/diorite/fancy_bricks", - "top": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_post.json deleted file mode 100644 index 7a5db6758..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_side.json deleted file mode 100644 index 2086762b3..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_side_tall.json deleted file mode 100644 index a53388243..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_diorite_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks.json deleted file mode 100644 index a61438516..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_slab.json deleted file mode 100644 index cd157aab3..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dolomite/fancy_bricks", - "bottom": "create:block/palettes/dolomite/fancy_bricks", - "top": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_slab_top.json deleted file mode 100644 index 4e127ba39..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dolomite/fancy_bricks", - "bottom": "create:block/palettes/dolomite/fancy_bricks", - "top": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs.json deleted file mode 100644 index 1ea99d731..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dolomite/fancy_bricks", - "bottom": "create:block/palettes/dolomite/fancy_bricks", - "top": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs_inner.json deleted file mode 100644 index b688fb965..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dolomite/fancy_bricks", - "bottom": "create:block/palettes/dolomite/fancy_bricks", - "top": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs_outer.json deleted file mode 100644 index 505bccb22..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dolomite/fancy_bricks", - "bottom": "create:block/palettes/dolomite/fancy_bricks", - "top": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_post.json deleted file mode 100644 index bec60af63..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_side.json deleted file mode 100644 index 3cb1e5303..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_side_tall.json deleted file mode 100644 index a1dcc1f15..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_dolomite_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks.json deleted file mode 100644 index 39a216e70..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_slab.json deleted file mode 100644 index 32897f336..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/gabbro/fancy_bricks", - "bottom": "create:block/palettes/gabbro/fancy_bricks", - "top": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_slab_top.json deleted file mode 100644 index bff205a82..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/gabbro/fancy_bricks", - "bottom": "create:block/palettes/gabbro/fancy_bricks", - "top": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs.json deleted file mode 100644 index cf5831405..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/gabbro/fancy_bricks", - "bottom": "create:block/palettes/gabbro/fancy_bricks", - "top": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs_inner.json deleted file mode 100644 index b9a9880c2..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/gabbro/fancy_bricks", - "bottom": "create:block/palettes/gabbro/fancy_bricks", - "top": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs_outer.json deleted file mode 100644 index 84ab69657..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/gabbro/fancy_bricks", - "bottom": "create:block/palettes/gabbro/fancy_bricks", - "top": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_post.json deleted file mode 100644 index a9b57559e..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_side.json deleted file mode 100644 index a1189b35e..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_side_tall.json deleted file mode 100644 index 552a3bf58..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_gabbro_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks.json deleted file mode 100644 index f27d6a816..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks_slab.json deleted file mode 100644 index e83ad8cbb..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/granite/fancy_bricks", - "bottom": "create:block/palettes/granite/fancy_bricks", - "top": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks_slab_top.json deleted file mode 100644 index a06a21585..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/granite/fancy_bricks", - "bottom": "create:block/palettes/granite/fancy_bricks", - "top": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs.json deleted file mode 100644 index eb6d214cb..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/granite/fancy_bricks", - "bottom": "create:block/palettes/granite/fancy_bricks", - "top": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs_inner.json deleted file mode 100644 index 9d3f128f9..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/granite/fancy_bricks", - "bottom": "create:block/palettes/granite/fancy_bricks", - "top": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs_outer.json deleted file mode 100644 index 30e994b6a..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/granite/fancy_bricks", - "bottom": "create:block/palettes/granite/fancy_bricks", - "top": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_post.json deleted file mode 100644 index 7d0019a85..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_side.json deleted file mode 100644 index 0fe66a000..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_side_tall.json deleted file mode 100644 index 7ef0dbe63..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_granite_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks.json deleted file mode 100644 index dc79ad985..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_slab.json deleted file mode 100644 index 96a3616ab..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/limestone/fancy_bricks", - "bottom": "create:block/palettes/limestone/fancy_bricks", - "top": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_slab_top.json deleted file mode 100644 index 0c066fb0a..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/limestone/fancy_bricks", - "bottom": "create:block/palettes/limestone/fancy_bricks", - "top": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs.json deleted file mode 100644 index 745918c50..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/limestone/fancy_bricks", - "bottom": "create:block/palettes/limestone/fancy_bricks", - "top": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs_inner.json deleted file mode 100644 index fc9024d54..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/limestone/fancy_bricks", - "bottom": "create:block/palettes/limestone/fancy_bricks", - "top": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs_outer.json deleted file mode 100644 index c6b885383..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/limestone/fancy_bricks", - "bottom": "create:block/palettes/limestone/fancy_bricks", - "top": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_post.json deleted file mode 100644 index f8ff68dee..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_side.json deleted file mode 100644 index 40620d430..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_side_tall.json deleted file mode 100644 index 02ee7b96d..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_limestone_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks.json deleted file mode 100644 index a1ffd0408..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_slab.json deleted file mode 100644 index e33b9602b..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/scoria/fancy_bricks", - "bottom": "create:block/palettes/scoria/fancy_bricks", - "top": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_slab_top.json deleted file mode 100644 index 2f94d5f39..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/scoria/fancy_bricks", - "bottom": "create:block/palettes/scoria/fancy_bricks", - "top": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs.json deleted file mode 100644 index 79545d683..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/scoria/fancy_bricks", - "bottom": "create:block/palettes/scoria/fancy_bricks", - "top": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs_inner.json deleted file mode 100644 index 6fbd162dd..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/scoria/fancy_bricks", - "bottom": "create:block/palettes/scoria/fancy_bricks", - "top": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs_outer.json deleted file mode 100644 index 9a0c191e6..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/scoria/fancy_bricks", - "bottom": "create:block/palettes/scoria/fancy_bricks", - "top": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_post.json deleted file mode 100644 index dd9477468..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_side.json deleted file mode 100644 index 1ebf6b0a8..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_side_tall.json deleted file mode 100644 index b8b5f0b12..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_scoria_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks.json deleted file mode 100644 index ac03cfe41..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_slab.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_slab.json deleted file mode 100644 index 1a81e1881..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/weathered_limestone/fancy_bricks", - "bottom": "create:block/palettes/weathered_limestone/fancy_bricks", - "top": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_slab_top.json deleted file mode 100644 index 4fc4d13da..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/weathered_limestone/fancy_bricks", - "bottom": "create:block/palettes/weathered_limestone/fancy_bricks", - "top": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs.json deleted file mode 100644 index ef9bdf054..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/fancy_bricks", - "bottom": "create:block/palettes/weathered_limestone/fancy_bricks", - "top": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs_inner.json deleted file mode 100644 index ea1526e14..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/fancy_bricks", - "bottom": "create:block/palettes/weathered_limestone/fancy_bricks", - "top": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs_outer.json deleted file mode 100644 index 3630782ad..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/fancy_bricks", - "bottom": "create:block/palettes/weathered_limestone/fancy_bricks", - "top": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_post.json deleted file mode 100644 index caf5d6365..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_side.json deleted file mode 100644 index 7c140f75f..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_side_tall.json deleted file mode 100644 index d7913f76c..000000000 --- a/src/generated/resources/assets/create/models/block/fancy_weathered_limestone_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_x.json deleted file mode 100644 index d3b137105..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_x.json +++ /dev/null @@ -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": [ - 12.0, - 8.0, - 16.0, - 12.0 - ] - }, - "east": { - "texture": "#0", - "uv": [ - 16.0, - 8.0, - 12.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_y.json deleted file mode 100644 index 93b1f2f0b..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_y.json +++ /dev/null @@ -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": [ - 12.0, - 8.0, - 16.0, - 12.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 12.0, - 12.0, - 16.0, - 8.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ld_z.json deleted file mode 100644 index aa3608193..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ld_z.json +++ /dev/null @@ -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 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_x.json deleted file mode 100644 index c8506a3d2..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_x.json +++ /dev/null @@ -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": [ - 4.0, - 12.0, - 8.0, - 16.0 - ] - }, - "east": { - "texture": "#0", - "uv": [ - 8.0, - 12.0, - 4.0, - 16.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_y.json deleted file mode 100644 index a9372c05b..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_y.json +++ /dev/null @@ -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": [ - 4.0, - 12.0, - 8.0, - 16.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 4.0, - 16.0, - 8.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lr_z.json deleted file mode 100644 index 19639eed6..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lr_z.json +++ /dev/null @@ -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": [ - 4.0, - 12.0, - 8.0, - 16.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 8.0, - 12.0, - 4.0, - 16.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_x.json deleted file mode 100644 index c9dedbac2..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_x.json +++ /dev/null @@ -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": [ - 8.0, - 12.0, - 12.0, - 16.0 - ] - }, - "east": { - "texture": "#0", - "uv": [ - 12.0, - 12.0, - 8.0, - 16.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_y.json deleted file mode 100644 index 57973f079..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_y.json +++ /dev/null @@ -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": [ - 8.0, - 12.0, - 12.0, - 16.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 8.0, - 16.0, - 12.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/lu_z.json deleted file mode 100644 index abd9e917f..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/lu_z.json +++ /dev/null @@ -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": [ - 8.0, - 12.0, - 12.0, - 16.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 12.0, - 12.0, - 8.0, - 16.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/none_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/none_x.json deleted file mode 100644 index bdfe58fcc..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/none_x.json +++ /dev/null @@ -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": [ - 12.0, - 12.0, - 16.0, - 16.0 - ] - }, - "east": { - "texture": "#0", - "uv": [ - 16.0, - 12.0, - 12.0, - 16.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/none_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/none_y.json deleted file mode 100644 index 70c27d759..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/none_y.json +++ /dev/null @@ -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": [ - 12.0, - 12.0, - 16.0, - 16.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 12.0, - 16.0, - 16.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/none_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/none_z.json deleted file mode 100644 index 07ad60ca2..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/none_z.json +++ /dev/null @@ -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, - 12.0, - 16.0, - 16.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 16.0, - 12.0, - 12.0, - 16.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_x.json deleted file mode 100644 index a4985972c..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_x.json +++ /dev/null @@ -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": [ - 8.0, - 8.0, - 12.0, - 12.0 - ] - }, - "east": { - "texture": "#0", - "uv": [ - 12.0, - 8.0, - 8.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_y.json deleted file mode 100644 index 44873ab6d..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_y.json +++ /dev/null @@ -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": [ - 8.0, - 8.0, - 12.0, - 12.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 8.0, - 12.0, - 12.0, - 8.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/rd_z.json deleted file mode 100644 index aa1a4287f..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/rd_z.json +++ /dev/null @@ -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": [ - 8.0, - 8.0, - 12.0, - 12.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 12.0, - 8.0, - 8.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_x.json deleted file mode 100644 index e4b999baf..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_x.json +++ /dev/null @@ -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": [ - 0.0, - 12.0, - 4.0, - 16.0 - ] - }, - "east": { - "texture": "#0", - "uv": [ - 4.0, - 12.0, - 0.0, - 16.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_y.json deleted file mode 100644 index 7e79d97ae..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_y.json +++ /dev/null @@ -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": [ - 0.0, - 12.0, - 4.0, - 16.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 0.0, - 16.0, - 4.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ru_z.json deleted file mode 100644 index 39f86452e..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ru_z.json +++ /dev/null @@ -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": [ - 0.0, - 12.0, - 4.0, - 16.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 4.0, - 12.0, - 0.0, - 16.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_x.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_x.json deleted file mode 100644 index 989f7e59f..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_x.json +++ /dev/null @@ -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": [ - 0.0, - 8.0, - 4.0, - 12.0 - ] - }, - "east": { - "texture": "#0", - "uv": [ - 4.0, - 8.0, - 0.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_y.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_y.json deleted file mode 100644 index 3fcb663f8..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_y.json +++ /dev/null @@ -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": [ - 0.0, - 8.0, - 4.0, - 12.0 - ] - }, - "up": { - "texture": "#0", - "uv": [ - 0.0, - 12.0, - 4.0, - 8.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_z.json b/src/generated/resources/assets/create/models/block/fluid_pipe/ud_z.json deleted file mode 100644 index e3c3341ef..000000000 --- a/src/generated/resources/assets/create/models/block/fluid_pipe/ud_z.json +++ /dev/null @@ -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": [ - 0.0, - 8.0, - 4.0, - 12.0 - ] - }, - "south": { - "texture": "#0", - "uv": [ - 4.0, - 8.0, - 0.0, - 12.0 - ] - } - } - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/framed_glass.json b/src/generated/resources/assets/create/models/block/framed_glass.json deleted file mode 100644 index 4cb93efbf..000000000 --- a/src/generated/resources/assets/create/models/block/framed_glass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/framed_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/framed_glass_pane_noside.json b/src/generated/resources/assets/create/models/block/framed_glass_pane_noside.json deleted file mode 100644 index 739c476a4..000000000 --- a/src/generated/resources/assets/create/models/block/framed_glass_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/framed_glass_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/framed_glass_pane_noside_alt.json deleted file mode 100644 index 61529cb63..000000000 --- a/src/generated/resources/assets/create/models/block/framed_glass_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/framed_glass_pane_post.json b/src/generated/resources/assets/create/models/block/framed_glass_pane_post.json deleted file mode 100644 index dc06fff99..000000000 --- a/src/generated/resources/assets/create/models/block/framed_glass_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/framed_glass_pane_side.json b/src/generated/resources/assets/create/models/block/framed_glass_pane_side.json deleted file mode 100644 index f9b4aec75..000000000 --- a/src/generated/resources/assets/create/models/block/framed_glass_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/framed_glass_pane_side_alt.json b/src/generated/resources/assets/create/models/block/framed_glass_pane_side_alt.json deleted file mode 100644 index 3dbed7bee..000000000 --- a/src/generated/resources/assets/create/models/block/framed_glass_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro.json b/src/generated/resources/assets/create/models/block/gabbro.json deleted file mode 100644 index 83fe3c3bd..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/gabbro/plain" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks.json b/src/generated/resources/assets/create/models/block/gabbro_bricks.json deleted file mode 100644 index 670aedca4..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks_slab.json b/src/generated/resources/assets/create/models/block/gabbro_bricks_slab.json deleted file mode 100644 index 4d16fd37b..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/gabbro/bricks", - "bottom": "create:block/palettes/gabbro/bricks", - "top": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/gabbro_bricks_slab_top.json deleted file mode 100644 index 335290f8a..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/gabbro/bricks", - "bottom": "create:block/palettes/gabbro/bricks", - "top": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs.json b/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs.json deleted file mode 100644 index a3f282437..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/gabbro/bricks", - "bottom": "create:block/palettes/gabbro/bricks", - "top": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs_inner.json deleted file mode 100644 index 4405eed4f..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/gabbro/bricks", - "bottom": "create:block/palettes/gabbro/bricks", - "top": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs_outer.json deleted file mode 100644 index 3ca80106a..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/gabbro/bricks", - "bottom": "create:block/palettes/gabbro/bricks", - "top": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_post.json deleted file mode 100644 index 0e2ecda72..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_side.json deleted file mode 100644 index e8e05fcc7..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_side_tall.json deleted file mode 100644 index 55cc23569..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone.json deleted file mode 100644 index ba5f35471..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone_slab.json deleted file mode 100644 index c5eb10578..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/gabbro/cobblestone", - "bottom": "create:block/palettes/gabbro/cobblestone", - "top": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone_slab_top.json deleted file mode 100644 index 9d14bbf28..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/gabbro/cobblestone", - "bottom": "create:block/palettes/gabbro/cobblestone", - "top": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs.json deleted file mode 100644 index 3590ef154..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/gabbro/cobblestone", - "bottom": "create:block/palettes/gabbro/cobblestone", - "top": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs_inner.json deleted file mode 100644 index 8ebcdd324..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/gabbro/cobblestone", - "bottom": "create:block/palettes/gabbro/cobblestone", - "top": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs_outer.json deleted file mode 100644 index 013dd673b..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/gabbro/cobblestone", - "bottom": "create:block/palettes/gabbro/cobblestone", - "top": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_post.json deleted file mode 100644 index fe5ae1ce2..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_side.json deleted file mode 100644 index 31fe09a20..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_side_tall.json deleted file mode 100644 index 880caa64c..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gabbro_pillar.json b/src/generated/resources/assets/create/models/block/gabbro_pillar.json deleted file mode 100644 index 2cb73d973..000000000 --- a/src/generated/resources/assets/create/models/block/gabbro_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/gabbro/pillar", - "end": "create:block/palettes/gabbro/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_end_flipped.json b/src/generated/resources/assets/create/models/block/gantry_shaft_end_flipped.json deleted file mode 100644 index 647d961f4..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_end_flipped.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_end", - "textures": { - "2": "create:block/gantry_shaft_flipped" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_end_powered.json b/src/generated/resources/assets/create/models/block/gantry_shaft_end_powered.json deleted file mode 100644 index 3d3ab236c..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_end_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_end", - "textures": { - "2": "create:block/gantry_shaft_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_end_powered_flipped.json b/src/generated/resources/assets/create/models/block/gantry_shaft_end_powered_flipped.json deleted file mode 100644 index 7c009239c..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_end_powered_flipped.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_end", - "textures": { - "2": "create:block/gantry_shaft_powered_flipped" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_middle_flipped.json b/src/generated/resources/assets/create/models/block/gantry_shaft_middle_flipped.json deleted file mode 100644 index 15c145bd7..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_middle_flipped.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_middle", - "textures": { - "2": "create:block/gantry_shaft_flipped" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_middle_powered.json b/src/generated/resources/assets/create/models/block/gantry_shaft_middle_powered.json deleted file mode 100644 index a62bb0956..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_middle_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_middle", - "textures": { - "2": "create:block/gantry_shaft_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_middle_powered_flipped.json b/src/generated/resources/assets/create/models/block/gantry_shaft_middle_powered_flipped.json deleted file mode 100644 index 599fb899d..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_middle_powered_flipped.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_middle", - "textures": { - "2": "create:block/gantry_shaft_powered_flipped" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_single_flipped.json b/src/generated/resources/assets/create/models/block/gantry_shaft_single_flipped.json deleted file mode 100644 index b042aca12..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_single_flipped.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_single", - "textures": { - "2": "create:block/gantry_shaft_flipped" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_single_powered.json b/src/generated/resources/assets/create/models/block/gantry_shaft_single_powered.json deleted file mode 100644 index 25312c6b7..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_single_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_single", - "textures": { - "2": "create:block/gantry_shaft_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_single_powered_flipped.json b/src/generated/resources/assets/create/models/block/gantry_shaft_single_powered_flipped.json deleted file mode 100644 index aeb471f49..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_single_powered_flipped.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_single", - "textures": { - "2": "create:block/gantry_shaft_powered_flipped" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_start_flipped.json b/src/generated/resources/assets/create/models/block/gantry_shaft_start_flipped.json deleted file mode 100644 index 60db07967..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_start_flipped.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_start", - "textures": { - "2": "create:block/gantry_shaft_flipped" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_start_powered.json b/src/generated/resources/assets/create/models/block/gantry_shaft_start_powered.json deleted file mode 100644 index 87145ad41..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_start_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_start", - "textures": { - "2": "create:block/gantry_shaft_powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gantry_shaft_start_powered_flipped.json b/src/generated/resources/assets/create/models/block/gantry_shaft_start_powered_flipped.json deleted file mode 100644 index 208acae8b..000000000 --- a/src/generated/resources/assets/create/models/block/gantry_shaft_start_powered_flipped.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_start", - "textures": { - "2": "create:block/gantry_shaft_powered_flipped" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks.json b/src/generated/resources/assets/create/models/block/granite_bricks.json deleted file mode 100644 index e1dad4a17..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks_slab.json b/src/generated/resources/assets/create/models/block/granite_bricks_slab.json deleted file mode 100644 index 68c004502..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/granite/bricks", - "bottom": "create:block/palettes/granite/bricks", - "top": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/granite_bricks_slab_top.json deleted file mode 100644 index e014bdc54..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/granite/bricks", - "bottom": "create:block/palettes/granite/bricks", - "top": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks_stairs.json b/src/generated/resources/assets/create/models/block/granite_bricks_stairs.json deleted file mode 100644 index 6ff539525..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/granite/bricks", - "bottom": "create:block/palettes/granite/bricks", - "top": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/granite_bricks_stairs_inner.json deleted file mode 100644 index ee1833c2b..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/granite/bricks", - "bottom": "create:block/palettes/granite/bricks", - "top": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/granite_bricks_stairs_outer.json deleted file mode 100644 index ebe102d03..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/granite/bricks", - "bottom": "create:block/palettes/granite/bricks", - "top": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/granite_bricks_wall_post.json deleted file mode 100644 index c42ce034c..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/granite_bricks_wall_side.json deleted file mode 100644 index 024ad8c5a..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/granite_bricks_wall_side_tall.json deleted file mode 100644 index 86f0c8b94..000000000 --- a/src/generated/resources/assets/create/models/block/granite_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone.json b/src/generated/resources/assets/create/models/block/granite_cobblestone.json deleted file mode 100644 index 227caa35f..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/granite_cobblestone_slab.json deleted file mode 100644 index 8d07b29f7..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/granite/cobblestone", - "bottom": "create:block/palettes/granite/cobblestone", - "top": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/granite_cobblestone_slab_top.json deleted file mode 100644 index 4cad90230..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/granite/cobblestone", - "bottom": "create:block/palettes/granite/cobblestone", - "top": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs.json deleted file mode 100644 index 80918fab7..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/granite/cobblestone", - "bottom": "create:block/palettes/granite/cobblestone", - "top": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs_inner.json deleted file mode 100644 index 4feffd321..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/granite/cobblestone", - "bottom": "create:block/palettes/granite/cobblestone", - "top": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs_outer.json deleted file mode 100644 index fbe925c8e..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/granite/cobblestone", - "bottom": "create:block/palettes/granite/cobblestone", - "top": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_post.json deleted file mode 100644 index 47541fc5b..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_side.json deleted file mode 100644 index 9182f817e..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_side_tall.json deleted file mode 100644 index 63dde8894..000000000 --- a/src/generated/resources/assets/create/models/block/granite_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/granite_pillar.json b/src/generated/resources/assets/create/models/block/granite_pillar.json deleted file mode 100644 index 2c87547be..000000000 --- a/src/generated/resources/assets/create/models/block/granite_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/granite/pillar", - "end": "create:block/palettes/granite/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gray_sail.json b/src/generated/resources/assets/create/models/block/gray_sail.json deleted file mode 100644 index eea66bdac..000000000 --- a/src/generated/resources/assets/create/models/block/gray_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_gray" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gray_seat.json b/src/generated/resources/assets/create/models/block/gray_seat.json deleted file mode 100644 index bebf4b2a3..000000000 --- a/src/generated/resources/assets/create/models/block/gray_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_gray", - "2": "create:block/seat/side_gray" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/gray_valve_handle.json b/src/generated/resources/assets/create/models/block/gray_valve_handle.json deleted file mode 100644 index 91dd5ef30..000000000 --- a/src/generated/resources/assets/create/models/block/gray_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_gray" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/green_sail.json b/src/generated/resources/assets/create/models/block/green_sail.json deleted file mode 100644 index bc2e1d011..000000000 --- a/src/generated/resources/assets/create/models/block/green_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_green" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/green_seat.json b/src/generated/resources/assets/create/models/block/green_seat.json deleted file mode 100644 index ba27dc660..000000000 --- a/src/generated/resources/assets/create/models/block/green_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_green", - "2": "create:block/seat/side_green" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/green_valve_handle.json b/src/generated/resources/assets/create/models/block/green_valve_handle.json deleted file mode 100644 index 6da85080d..000000000 --- a/src/generated/resources/assets/create/models/block/green_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_green" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/honey.json b/src/generated/resources/assets/create/models/block/honey.json deleted file mode 100644 index 079948a71..000000000 --- a/src/generated/resources/assets/create/models/block/honey.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": { - "particle": "create:fluid/honey_still" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/horizontal_framed_glass.json b/src/generated/resources/assets/create/models/block/horizontal_framed_glass.json deleted file mode 100644 index 4cb93efbf..000000000 --- a/src/generated/resources/assets/create/models/block/horizontal_framed_glass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/framed_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_noside.json b/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_noside.json deleted file mode 100644 index 739c476a4..000000000 --- a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_noside_alt.json deleted file mode 100644 index 61529cb63..000000000 --- a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_post.json b/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_post.json deleted file mode 100644 index dc06fff99..000000000 --- a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_side.json b/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_side.json deleted file mode 100644 index f9b4aec75..000000000 --- a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_side_alt.json b/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_side_alt.json deleted file mode 100644 index 3dbed7bee..000000000 --- a/src/generated/resources/assets/create/models/block/horizontal_framed_glass_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/jungle_window.json b/src/generated/resources/assets/create/models/block/jungle_window.json deleted file mode 100644 index ccae0c24d..000000000 --- a/src/generated/resources/assets/create/models/block/jungle_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/jungle_window", - "end": "minecraft:block/jungle_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/jungle_window_pane_noside.json b/src/generated/resources/assets/create/models/block/jungle_window_pane_noside.json deleted file mode 100644 index 7183afc54..000000000 --- a/src/generated/resources/assets/create/models/block/jungle_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/jungle_window", - "edge": "minecraft:block/jungle_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/jungle_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/jungle_window_pane_noside_alt.json deleted file mode 100644 index 18715700c..000000000 --- a/src/generated/resources/assets/create/models/block/jungle_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/jungle_window", - "edge": "minecraft:block/jungle_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/jungle_window_pane_post.json b/src/generated/resources/assets/create/models/block/jungle_window_pane_post.json deleted file mode 100644 index 425883b83..000000000 --- a/src/generated/resources/assets/create/models/block/jungle_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/jungle_window", - "edge": "minecraft:block/jungle_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/jungle_window_pane_side.json b/src/generated/resources/assets/create/models/block/jungle_window_pane_side.json deleted file mode 100644 index 12870252f..000000000 --- a/src/generated/resources/assets/create/models/block/jungle_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/jungle_window", - "edge": "minecraft:block/jungle_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/jungle_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/jungle_window_pane_side_alt.json deleted file mode 100644 index ac0ac81be..000000000 --- a/src/generated/resources/assets/create/models/block/jungle_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/jungle_window", - "edge": "minecraft:block/jungle_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_andesite.json b/src/generated/resources/assets/create/models/block/layered_andesite.json deleted file mode 100644 index 58682001b..000000000 --- a/src/generated/resources/assets/create/models/block/layered_andesite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/andesite/layered", - "end": "create:block/palettes/andesite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_dark_scoria.json b/src/generated/resources/assets/create/models/block/layered_dark_scoria.json deleted file mode 100644 index 18aa600df..000000000 --- a/src/generated/resources/assets/create/models/block/layered_dark_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dark_scoria/layered", - "end": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_diorite.json b/src/generated/resources/assets/create/models/block/layered_diorite.json deleted file mode 100644 index 356cd292c..000000000 --- a/src/generated/resources/assets/create/models/block/layered_diorite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/diorite/layered", - "end": "create:block/palettes/diorite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_dolomite.json b/src/generated/resources/assets/create/models/block/layered_dolomite.json deleted file mode 100644 index c38e5e75b..000000000 --- a/src/generated/resources/assets/create/models/block/layered_dolomite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dolomite/layered", - "end": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_gabbro.json b/src/generated/resources/assets/create/models/block/layered_gabbro.json deleted file mode 100644 index 748eef40e..000000000 --- a/src/generated/resources/assets/create/models/block/layered_gabbro.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/gabbro/layered", - "end": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_granite.json b/src/generated/resources/assets/create/models/block/layered_granite.json deleted file mode 100644 index fab8eb5ef..000000000 --- a/src/generated/resources/assets/create/models/block/layered_granite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/granite/layered", - "end": "create:block/palettes/granite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_limestone.json b/src/generated/resources/assets/create/models/block/layered_limestone.json deleted file mode 100644 index 30f703f60..000000000 --- a/src/generated/resources/assets/create/models/block/layered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/limestone/layered", - "end": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_scoria.json b/src/generated/resources/assets/create/models/block/layered_scoria.json deleted file mode 100644 index c949cb14d..000000000 --- a/src/generated/resources/assets/create/models/block/layered_scoria.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/scoria/layered", - "end": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/layered_weathered_limestone.json b/src/generated/resources/assets/create/models/block/layered_weathered_limestone.json deleted file mode 100644 index 51d1cd35a..000000000 --- a/src/generated/resources/assets/create/models/block/layered_weathered_limestone.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/weathered_limestone/layered", - "end": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/light_blue_sail.json b/src/generated/resources/assets/create/models/block/light_blue_sail.json deleted file mode 100644 index cc8d5929b..000000000 --- a/src/generated/resources/assets/create/models/block/light_blue_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_light_blue" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/light_blue_seat.json b/src/generated/resources/assets/create/models/block/light_blue_seat.json deleted file mode 100644 index 9621c729c..000000000 --- a/src/generated/resources/assets/create/models/block/light_blue_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_light_blue", - "2": "create:block/seat/side_light_blue" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/light_blue_valve_handle.json b/src/generated/resources/assets/create/models/block/light_blue_valve_handle.json deleted file mode 100644 index 3362ca403..000000000 --- a/src/generated/resources/assets/create/models/block/light_blue_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_light_blue" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/light_gray_sail.json b/src/generated/resources/assets/create/models/block/light_gray_sail.json deleted file mode 100644 index aef702481..000000000 --- a/src/generated/resources/assets/create/models/block/light_gray_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_light_gray" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/light_gray_seat.json b/src/generated/resources/assets/create/models/block/light_gray_seat.json deleted file mode 100644 index fd48a9cc2..000000000 --- a/src/generated/resources/assets/create/models/block/light_gray_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_light_gray", - "2": "create:block/seat/side_light_gray" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/light_gray_valve_handle.json b/src/generated/resources/assets/create/models/block/light_gray_valve_handle.json deleted file mode 100644 index ad69c973a..000000000 --- a/src/generated/resources/assets/create/models/block/light_gray_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_light_gray" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/lime_sail.json b/src/generated/resources/assets/create/models/block/lime_sail.json deleted file mode 100644 index d37b16ab1..000000000 --- a/src/generated/resources/assets/create/models/block/lime_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_lime" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/lime_seat.json b/src/generated/resources/assets/create/models/block/lime_seat.json deleted file mode 100644 index d30c6df57..000000000 --- a/src/generated/resources/assets/create/models/block/lime_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_lime", - "2": "create:block/seat/side_lime" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/lime_valve_handle.json b/src/generated/resources/assets/create/models/block/lime_valve_handle.json deleted file mode 100644 index e00bd0ec8..000000000 --- a/src/generated/resources/assets/create/models/block/lime_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_lime" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limesand.json b/src/generated/resources/assets/create/models/block/limesand.json deleted file mode 100644 index f2a8113a2..000000000 --- a/src/generated/resources/assets/create/models/block/limesand.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/limesand" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone.json b/src/generated/resources/assets/create/models/block/limestone.json deleted file mode 100644 index c2dc0dc7e..000000000 --- a/src/generated/resources/assets/create/models/block/limestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/limestone/plain" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks.json b/src/generated/resources/assets/create/models/block/limestone_bricks.json deleted file mode 100644 index 60708aa1d..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks_slab.json b/src/generated/resources/assets/create/models/block/limestone_bricks_slab.json deleted file mode 100644 index 6f2903135..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/limestone/bricks", - "bottom": "create:block/palettes/limestone/bricks", - "top": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/limestone_bricks_slab_top.json deleted file mode 100644 index 3c4a447dd..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/limestone/bricks", - "bottom": "create:block/palettes/limestone/bricks", - "top": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks_stairs.json b/src/generated/resources/assets/create/models/block/limestone_bricks_stairs.json deleted file mode 100644 index 845688581..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/limestone/bricks", - "bottom": "create:block/palettes/limestone/bricks", - "top": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/limestone_bricks_stairs_inner.json deleted file mode 100644 index aa9f7e9c0..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/limestone/bricks", - "bottom": "create:block/palettes/limestone/bricks", - "top": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/limestone_bricks_stairs_outer.json deleted file mode 100644 index 7e969d21a..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/limestone/bricks", - "bottom": "create:block/palettes/limestone/bricks", - "top": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/limestone_bricks_wall_post.json deleted file mode 100644 index a91773307..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/limestone_bricks_wall_side.json deleted file mode 100644 index e601010e3..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/limestone_bricks_wall_side_tall.json deleted file mode 100644 index 092c49a83..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone.json deleted file mode 100644 index 93bc9de6a..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone_slab.json deleted file mode 100644 index dd1a06419..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/limestone/cobblestone", - "bottom": "create:block/palettes/limestone/cobblestone", - "top": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone_slab_top.json deleted file mode 100644 index fe27b6c6a..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/limestone/cobblestone", - "bottom": "create:block/palettes/limestone/cobblestone", - "top": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs.json deleted file mode 100644 index 4470e7baf..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/limestone/cobblestone", - "bottom": "create:block/palettes/limestone/cobblestone", - "top": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs_inner.json deleted file mode 100644 index 9f8d77aca..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/limestone/cobblestone", - "bottom": "create:block/palettes/limestone/cobblestone", - "top": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs_outer.json deleted file mode 100644 index 4268935e7..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/limestone/cobblestone", - "bottom": "create:block/palettes/limestone/cobblestone", - "top": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_post.json deleted file mode 100644 index f4f5e4210..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_side.json deleted file mode 100644 index 5bc71804f..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_side_tall.json deleted file mode 100644 index 02eb72d68..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/limestone_pillar.json b/src/generated/resources/assets/create/models/block/limestone_pillar.json deleted file mode 100644 index 59b874a6e..000000000 --- a/src/generated/resources/assets/create/models/block/limestone_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/limestone/pillar", - "end": "create:block/palettes/limestone/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/linear_chassis.json b/src/generated/resources/assets/create/models/block/linear_chassis.json deleted file mode 100644 index f4f7affdb..000000000 --- a/src/generated/resources/assets/create/models/block/linear_chassis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/linear_chassis_side", - "bottom": "create:block/linear_chassis_end", - "top": "create:block/linear_chassis_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/linear_chassis_bottom.json b/src/generated/resources/assets/create/models/block/linear_chassis_bottom.json deleted file mode 100644 index 45e36468e..000000000 --- a/src/generated/resources/assets/create/models/block/linear_chassis_bottom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/linear_chassis_side", - "bottom": "create:block/linear_chassis_end_sticky", - "top": "create:block/linear_chassis_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/linear_chassis_top.json b/src/generated/resources/assets/create/models/block/linear_chassis_top.json deleted file mode 100644 index 208f541a2..000000000 --- a/src/generated/resources/assets/create/models/block/linear_chassis_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/linear_chassis_side", - "bottom": "create:block/linear_chassis_end", - "top": "create:block/linear_chassis_end_sticky" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/linear_chassis_top_bottom.json b/src/generated/resources/assets/create/models/block/linear_chassis_top_bottom.json deleted file mode 100644 index da6fcecac..000000000 --- a/src/generated/resources/assets/create/models/block/linear_chassis_top_bottom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/linear_chassis_side", - "bottom": "create:block/linear_chassis_end_sticky", - "top": "create:block/linear_chassis_end_sticky" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/magenta_sail.json b/src/generated/resources/assets/create/models/block/magenta_sail.json deleted file mode 100644 index c94e50b4d..000000000 --- a/src/generated/resources/assets/create/models/block/magenta_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_magenta" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/magenta_seat.json b/src/generated/resources/assets/create/models/block/magenta_seat.json deleted file mode 100644 index f6ab2380b..000000000 --- a/src/generated/resources/assets/create/models/block/magenta_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_magenta", - "2": "create:block/seat/side_magenta" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/magenta_valve_handle.json b/src/generated/resources/assets/create/models/block/magenta_valve_handle.json deleted file mode 100644 index 44cc26395..000000000 --- a/src/generated/resources/assets/create/models/block/magenta_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_magenta" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mechanical_bearing.json b/src/generated/resources/assets/create/models/block/mechanical_bearing.json deleted file mode 100644 index 74a704e57..000000000 --- a/src/generated/resources/assets/create/models/block/mechanical_bearing.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/bearing/block", - "textures": { - "side": "create:block/mechanical_bearing_side", - "nook": "create:block/brass_casing", - "back": "create:block/gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_andesite.json b/src/generated/resources/assets/create/models/block/mossy_andesite.json deleted file mode 100644 index 363b983f1..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_andesite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/andesite/bricks", - "side": "create:block/palettes/andesite/bricks", - "top": "create:block/palettes/andesite/bricks", - "bottom": "create:block/palettes/andesite/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_dark_scoria.json b/src/generated/resources/assets/create/models/block/mossy_dark_scoria.json deleted file mode 100644 index 5fe0bd978..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_dark_scoria.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/dark_scoria/bricks", - "side": "create:block/palettes/dark_scoria/bricks", - "top": "create:block/palettes/dark_scoria/bricks", - "bottom": "create:block/palettes/dark_scoria/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_diorite.json b/src/generated/resources/assets/create/models/block/mossy_diorite.json deleted file mode 100644 index 6918670ae..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_diorite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/diorite/bricks", - "side": "create:block/palettes/diorite/bricks", - "top": "create:block/palettes/diorite/bricks", - "bottom": "create:block/palettes/diorite/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_dolomite.json b/src/generated/resources/assets/create/models/block/mossy_dolomite.json deleted file mode 100644 index 0e559ca91..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_dolomite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/dolomite/bricks", - "side": "create:block/palettes/dolomite/bricks", - "top": "create:block/palettes/dolomite/bricks", - "bottom": "create:block/palettes/dolomite/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_gabbro.json b/src/generated/resources/assets/create/models/block/mossy_gabbro.json deleted file mode 100644 index d75f53d30..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_gabbro.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/gabbro/bricks", - "side": "create:block/palettes/gabbro/bricks", - "top": "create:block/palettes/gabbro/bricks", - "bottom": "create:block/palettes/gabbro/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_granite.json b/src/generated/resources/assets/create/models/block/mossy_granite.json deleted file mode 100644 index 256688ad5..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_granite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/granite/bricks", - "side": "create:block/palettes/granite/bricks", - "top": "create:block/palettes/granite/bricks", - "bottom": "create:block/palettes/granite/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_limestone.json b/src/generated/resources/assets/create/models/block/mossy_limestone.json deleted file mode 100644 index 9e0a191ee..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_limestone.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/limestone/bricks", - "side": "create:block/palettes/limestone/bricks", - "top": "create:block/palettes/limestone/bricks", - "bottom": "create:block/palettes/limestone/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_scoria.json b/src/generated/resources/assets/create/models/block/mossy_scoria.json deleted file mode 100644 index 24c185c54..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_scoria.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/scoria/bricks", - "side": "create:block/palettes/scoria/bricks", - "top": "create:block/palettes/scoria/bricks", - "bottom": "create:block/palettes/scoria/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/mossy_weathered_limestone.json b/src/generated/resources/assets/create/models/block/mossy_weathered_limestone.json deleted file mode 100644 index 4a42449d7..000000000 --- a/src/generated/resources/assets/create/models/block/mossy_weathered_limestone.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/weathered_limestone/bricks", - "side": "create:block/palettes/weathered_limestone/bricks", - "top": "create:block/palettes/weathered_limestone/bricks", - "bottom": "create:block/palettes/weathered_limestone/bricks", - "overlay": "create:block/palettes/mossy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/natural_scoria.json b/src/generated/resources/assets/create/models/block/natural_scoria.json deleted file mode 100644 index 2a5692e9e..000000000 --- a/src/generated/resources/assets/create/models/block/natural_scoria.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/natural_scoria" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oak_window.json b/src/generated/resources/assets/create/models/block/oak_window.json deleted file mode 100644 index 068e88211..000000000 --- a/src/generated/resources/assets/create/models/block/oak_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/oak_window", - "end": "minecraft:block/oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oak_window_pane_noside.json b/src/generated/resources/assets/create/models/block/oak_window_pane_noside.json deleted file mode 100644 index 0fdb83005..000000000 --- a/src/generated/resources/assets/create/models/block/oak_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/oak_window", - "edge": "minecraft:block/oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oak_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/oak_window_pane_noside_alt.json deleted file mode 100644 index ce12de992..000000000 --- a/src/generated/resources/assets/create/models/block/oak_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/oak_window", - "edge": "minecraft:block/oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oak_window_pane_post.json b/src/generated/resources/assets/create/models/block/oak_window_pane_post.json deleted file mode 100644 index 161d97142..000000000 --- a/src/generated/resources/assets/create/models/block/oak_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/oak_window", - "edge": "minecraft:block/oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oak_window_pane_side.json b/src/generated/resources/assets/create/models/block/oak_window_pane_side.json deleted file mode 100644 index 1cd0eb29f..000000000 --- a/src/generated/resources/assets/create/models/block/oak_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/oak_window", - "edge": "minecraft:block/oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oak_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/oak_window_pane_side_alt.json deleted file mode 100644 index 1e2dc2da9..000000000 --- a/src/generated/resources/assets/create/models/block/oak_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/oak_window", - "edge": "minecraft:block/oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/orange_sail.json b/src/generated/resources/assets/create/models/block/orange_sail.json deleted file mode 100644 index 9745df3fc..000000000 --- a/src/generated/resources/assets/create/models/block/orange_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_orange" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/orange_seat.json b/src/generated/resources/assets/create/models/block/orange_seat.json deleted file mode 100644 index bc267cb18..000000000 --- a/src/generated/resources/assets/create/models/block/orange_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_orange", - "2": "create:block/seat/side_orange" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/orange_valve_handle.json b/src/generated/resources/assets/create/models/block/orange_valve_handle.json deleted file mode 100644 index a06b206b2..000000000 --- a/src/generated/resources/assets/create/models/block/orange_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_orange" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/ornate_iron_window.json b/src/generated/resources/assets/create/models/block/ornate_iron_window.json deleted file mode 100644 index b766dbedf..000000000 --- a/src/generated/resources/assets/create/models/block/ornate_iron_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/ornate_iron_window", - "end": "create:block/palettes/ornate_iron_window_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_noside.json b/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_noside.json deleted file mode 100644 index 60f2f448c..000000000 --- a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/ornate_iron_window", - "edge": "create:block/palettes/ornate_iron_window_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_noside_alt.json deleted file mode 100644 index eb67ce24a..000000000 --- a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/ornate_iron_window", - "edge": "create:block/palettes/ornate_iron_window_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_post.json b/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_post.json deleted file mode 100644 index 2e2eccbb8..000000000 --- a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/ornate_iron_window", - "edge": "create:block/palettes/ornate_iron_window_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_side.json b/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_side.json deleted file mode 100644 index 51736969c..000000000 --- a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/ornate_iron_window", - "edge": "create:block/palettes/ornate_iron_window_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_side_alt.json deleted file mode 100644 index 39480d0d1..000000000 --- a/src/generated/resources/assets/create/models/block/ornate_iron_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/ornate_iron_window", - "edge": "create:block/palettes/ornate_iron_window_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_andesite.json b/src/generated/resources/assets/create/models/block/overgrown_andesite.json deleted file mode 100644 index de911e553..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_andesite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/andesite/bricks", - "side": "create:block/palettes/andesite/bricks", - "top": "create:block/palettes/andesite/bricks", - "bottom": "create:block/palettes/andesite/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_dark_scoria.json b/src/generated/resources/assets/create/models/block/overgrown_dark_scoria.json deleted file mode 100644 index 4c12a986b..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_dark_scoria.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/dark_scoria/bricks", - "side": "create:block/palettes/dark_scoria/bricks", - "top": "create:block/palettes/dark_scoria/bricks", - "bottom": "create:block/palettes/dark_scoria/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_diorite.json b/src/generated/resources/assets/create/models/block/overgrown_diorite.json deleted file mode 100644 index 7242c4c92..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_diorite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/diorite/bricks", - "side": "create:block/palettes/diorite/bricks", - "top": "create:block/palettes/diorite/bricks", - "bottom": "create:block/palettes/diorite/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_dolomite.json b/src/generated/resources/assets/create/models/block/overgrown_dolomite.json deleted file mode 100644 index ac81c088e..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_dolomite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/dolomite/bricks", - "side": "create:block/palettes/dolomite/bricks", - "top": "create:block/palettes/dolomite/bricks", - "bottom": "create:block/palettes/dolomite/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_gabbro.json b/src/generated/resources/assets/create/models/block/overgrown_gabbro.json deleted file mode 100644 index f8897058d..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_gabbro.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/gabbro/bricks", - "side": "create:block/palettes/gabbro/bricks", - "top": "create:block/palettes/gabbro/bricks", - "bottom": "create:block/palettes/gabbro/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_granite.json b/src/generated/resources/assets/create/models/block/overgrown_granite.json deleted file mode 100644 index d9c4dc89c..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_granite.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/granite/bricks", - "side": "create:block/palettes/granite/bricks", - "top": "create:block/palettes/granite/bricks", - "bottom": "create:block/palettes/granite/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_limestone.json b/src/generated/resources/assets/create/models/block/overgrown_limestone.json deleted file mode 100644 index 473b7fde8..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_limestone.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/limestone/bricks", - "side": "create:block/palettes/limestone/bricks", - "top": "create:block/palettes/limestone/bricks", - "bottom": "create:block/palettes/limestone/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_scoria.json b/src/generated/resources/assets/create/models/block/overgrown_scoria.json deleted file mode 100644 index 473f68d6b..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_scoria.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/scoria/bricks", - "side": "create:block/palettes/scoria/bricks", - "top": "create:block/palettes/scoria/bricks", - "bottom": "create:block/palettes/scoria/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/overgrown_weathered_limestone.json b/src/generated/resources/assets/create/models/block/overgrown_weathered_limestone.json deleted file mode 100644 index 98e4fbf12..000000000 --- a/src/generated/resources/assets/create/models/block/overgrown_weathered_limestone.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "create:block/overgrown", - "textures": { - "particle": "create:block/palettes/weathered_limestone/bricks", - "side": "create:block/palettes/weathered_limestone/bricks", - "top": "create:block/palettes/weathered_limestone/bricks", - "bottom": "create:block/palettes/weathered_limestone/bricks", - "overlay": "create:block/palettes/overgrown" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_block_0.json b/src/generated/resources/assets/create/models/block/oxidized/copper_block_0.json deleted file mode 100644 index 61a853b9e..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_block_0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_block_0" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_block_1.json b/src/generated/resources/assets/create/models/block/oxidized/copper_block_1.json deleted file mode 100644 index aa597784c..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_block_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_block_1" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_block_2.json b/src/generated/resources/assets/create/models/block/oxidized/copper_block_2.json deleted file mode 100644 index c8110a2c0..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_block_2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_block_2" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_block_3.json b/src/generated/resources/assets/create/models/block/oxidized/copper_block_3.json deleted file mode 100644 index c581a35bd..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_block_3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_block_3" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_block_4.json b/src/generated/resources/assets/create/models/block/oxidized/copper_block_4.json deleted file mode 100644 index 353d6b560..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_block_4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_block_4" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_block_5.json b/src/generated/resources/assets/create/models/block/oxidized/copper_block_5.json deleted file mode 100644 index eafe9f5ce..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_block_5.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_block_5" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_block_6.json b/src/generated/resources/assets/create/models/block/oxidized/copper_block_6.json deleted file mode 100644 index f6094cc35..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_block_6.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_block_6" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_block_7.json b/src/generated/resources/assets/create/models/block/oxidized/copper_block_7.json deleted file mode 100644 index 9e9ff5ee3..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_block_7.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_block_7" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_0.json b/src/generated/resources/assets/create/models/block/oxidized/copper_ore_0.json deleted file mode 100644 index 8d79f6690..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_ore_0" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_1.json b/src/generated/resources/assets/create/models/block/oxidized/copper_ore_1.json deleted file mode 100644 index 77b9b712d..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_ore_1" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_2.json b/src/generated/resources/assets/create/models/block/oxidized/copper_ore_2.json deleted file mode 100644 index 3559db606..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_ore_2" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_3.json b/src/generated/resources/assets/create/models/block/oxidized/copper_ore_3.json deleted file mode 100644 index e1ee86560..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_ore_3" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_4.json b/src/generated/resources/assets/create/models/block/oxidized/copper_ore_4.json deleted file mode 100644 index a9ec80571..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_ore_4" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_5.json b/src/generated/resources/assets/create/models/block/oxidized/copper_ore_5.json deleted file mode 100644 index b8cd3f292..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_5.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_ore_5" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_6.json b/src/generated/resources/assets/create/models/block/oxidized/copper_ore_6.json deleted file mode 100644 index ef2b2a68a..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_6.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_ore_6" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_7.json b/src/generated/resources/assets/create/models/block/oxidized/copper_ore_7.json deleted file mode 100644 index 3da5f2b8e..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_ore_7.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_ore_7" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_0.json b/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_0.json deleted file mode 100644 index 0512b936f..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_shingles_0" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_1.json b/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_1.json deleted file mode 100644 index a6f12213e..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_shingles_1" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_2.json b/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_2.json deleted file mode 100644 index 620db3366..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_shingles_2" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_3.json b/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_3.json deleted file mode 100644 index ed37f0358..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_shingles_3" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_4.json b/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_4.json deleted file mode 100644 index e20604c9c..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_shingles_4" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_5.json b/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_5.json deleted file mode 100644 index 644a7f233..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_5.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_shingles_5" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_6.json b/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_6.json deleted file mode 100644 index 5ffa8f4da..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_6.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_shingles_6" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_7.json b/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_7.json deleted file mode 100644 index 7fe87ba8b..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_shingles_7.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_shingles_7" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_0.json b/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_0.json deleted file mode 100644 index a2c2066e4..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_tiles_0" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_1.json b/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_1.json deleted file mode 100644 index 50caf811d..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_tiles_1" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_2.json b/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_2.json deleted file mode 100644 index eac18bb1c..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_tiles_2" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_3.json b/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_3.json deleted file mode 100644 index 0290dd5d5..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_tiles_3" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_4.json b/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_4.json deleted file mode 100644 index 260baf016..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_tiles_4" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_5.json b/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_5.json deleted file mode 100644 index f76f57239..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_5.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_tiles_5" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_6.json b/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_6.json deleted file mode 100644 index ceb06f047..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_6.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_tiles_6" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_7.json b/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_7.json deleted file mode 100644 index 3d3547a18..000000000 --- a/src/generated/resources/assets/create/models/block/oxidized/copper_tiles_7.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/oxidized/copper_tiles_7" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite.json b/src/generated/resources/assets/create/models/block/paved_andesite.json deleted file mode 100644 index ddeda2b2f..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/andesite/paved", - "bottom": "create:block/palettes/andesite/paved_borderless", - "top": "create:block/palettes/andesite/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_covered.json b/src/generated/resources/assets/create/models/block/paved_andesite_covered.json deleted file mode 100644 index 906a55ef1..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/andesite/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_slab.json b/src/generated/resources/assets/create/models/block/paved_andesite_slab.json deleted file mode 100644 index f86145e6f..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/andesite/paved", - "bottom": "create:block/palettes/andesite/paved", - "top": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_slab_top.json b/src/generated/resources/assets/create/models/block/paved_andesite_slab_top.json deleted file mode 100644 index 6cfe67096..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/andesite/paved", - "bottom": "create:block/palettes/andesite/paved", - "top": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_stairs.json b/src/generated/resources/assets/create/models/block/paved_andesite_stairs.json deleted file mode 100644 index 5d9ce3abe..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/andesite/paved", - "bottom": "create:block/palettes/andesite/paved", - "top": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_andesite_stairs_inner.json deleted file mode 100644 index 937e42811..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/andesite/paved", - "bottom": "create:block/palettes/andesite/paved", - "top": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_andesite_stairs_outer.json deleted file mode 100644 index 7412f1d72..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/andesite/paved", - "bottom": "create:block/palettes/andesite/paved", - "top": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_wall_post.json b/src/generated/resources/assets/create/models/block/paved_andesite_wall_post.json deleted file mode 100644 index 6995e0325..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_wall_side.json b/src/generated/resources/assets/create/models/block/paved_andesite_wall_side.json deleted file mode 100644 index cd0b148d4..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_andesite_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_andesite_wall_side_tall.json deleted file mode 100644 index 70aef43b0..000000000 --- a/src/generated/resources/assets/create/models/block/paved_andesite_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria.json deleted file mode 100644 index 06fb7ca5e..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/dark_scoria/paved", - "bottom": "create:block/palettes/dark_scoria/paved_borderless", - "top": "create:block/palettes/dark_scoria/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_covered.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_covered.json deleted file mode 100644 index c30f3fe76..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dark_scoria/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_slab.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_slab.json deleted file mode 100644 index 1864494b3..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dark_scoria/paved", - "bottom": "create:block/palettes/dark_scoria/paved", - "top": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_slab_top.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_slab_top.json deleted file mode 100644 index 81d7a4a09..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dark_scoria/paved", - "bottom": "create:block/palettes/dark_scoria/paved", - "top": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs.json deleted file mode 100644 index 791147fae..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/paved", - "bottom": "create:block/palettes/dark_scoria/paved", - "top": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs_inner.json deleted file mode 100644 index 1b6714cdf..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/paved", - "bottom": "create:block/palettes/dark_scoria/paved", - "top": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs_outer.json deleted file mode 100644 index 257b9cdef..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/paved", - "bottom": "create:block/palettes/dark_scoria/paved", - "top": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_post.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_post.json deleted file mode 100644 index b05f7d8a8..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_side.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_side.json deleted file mode 100644 index 2214f524b..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_side_tall.json deleted file mode 100644 index 3b1d9ef73..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dark_scoria_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite.json b/src/generated/resources/assets/create/models/block/paved_diorite.json deleted file mode 100644 index 118bb02b2..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/diorite/paved", - "bottom": "create:block/palettes/diorite/paved_borderless", - "top": "create:block/palettes/diorite/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_covered.json b/src/generated/resources/assets/create/models/block/paved_diorite_covered.json deleted file mode 100644 index 964c19eb1..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/diorite/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_slab.json b/src/generated/resources/assets/create/models/block/paved_diorite_slab.json deleted file mode 100644 index 957577b2a..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/diorite/paved", - "bottom": "create:block/palettes/diorite/paved", - "top": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_slab_top.json b/src/generated/resources/assets/create/models/block/paved_diorite_slab_top.json deleted file mode 100644 index 81d5113fb..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/diorite/paved", - "bottom": "create:block/palettes/diorite/paved", - "top": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_stairs.json b/src/generated/resources/assets/create/models/block/paved_diorite_stairs.json deleted file mode 100644 index 15fd3f459..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/diorite/paved", - "bottom": "create:block/palettes/diorite/paved", - "top": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_diorite_stairs_inner.json deleted file mode 100644 index 7237e5238..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/diorite/paved", - "bottom": "create:block/palettes/diorite/paved", - "top": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_diorite_stairs_outer.json deleted file mode 100644 index 5642d87ef..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/diorite/paved", - "bottom": "create:block/palettes/diorite/paved", - "top": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_wall_post.json b/src/generated/resources/assets/create/models/block/paved_diorite_wall_post.json deleted file mode 100644 index 3bf79666e..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_wall_side.json b/src/generated/resources/assets/create/models/block/paved_diorite_wall_side.json deleted file mode 100644 index 562c5c6ef..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_diorite_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_diorite_wall_side_tall.json deleted file mode 100644 index e1534e3f1..000000000 --- a/src/generated/resources/assets/create/models/block/paved_diorite_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite.json b/src/generated/resources/assets/create/models/block/paved_dolomite.json deleted file mode 100644 index 91adc96ba..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/dolomite/paved", - "bottom": "create:block/palettes/dolomite/paved_borderless", - "top": "create:block/palettes/dolomite/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_covered.json b/src/generated/resources/assets/create/models/block/paved_dolomite_covered.json deleted file mode 100644 index 96dc11fee..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dolomite/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_slab.json b/src/generated/resources/assets/create/models/block/paved_dolomite_slab.json deleted file mode 100644 index 5381ba2bd..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dolomite/paved", - "bottom": "create:block/palettes/dolomite/paved", - "top": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_slab_top.json b/src/generated/resources/assets/create/models/block/paved_dolomite_slab_top.json deleted file mode 100644 index 49e633751..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dolomite/paved", - "bottom": "create:block/palettes/dolomite/paved", - "top": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_stairs.json b/src/generated/resources/assets/create/models/block/paved_dolomite_stairs.json deleted file mode 100644 index dafa1c102..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dolomite/paved", - "bottom": "create:block/palettes/dolomite/paved", - "top": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_dolomite_stairs_inner.json deleted file mode 100644 index f4ca5c137..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dolomite/paved", - "bottom": "create:block/palettes/dolomite/paved", - "top": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_dolomite_stairs_outer.json deleted file mode 100644 index 065e2c7ea..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dolomite/paved", - "bottom": "create:block/palettes/dolomite/paved", - "top": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_wall_post.json b/src/generated/resources/assets/create/models/block/paved_dolomite_wall_post.json deleted file mode 100644 index d37161998..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_wall_side.json b/src/generated/resources/assets/create/models/block/paved_dolomite_wall_side.json deleted file mode 100644 index e1c961bb1..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_dolomite_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_dolomite_wall_side_tall.json deleted file mode 100644 index 75529f090..000000000 --- a/src/generated/resources/assets/create/models/block/paved_dolomite_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro.json b/src/generated/resources/assets/create/models/block/paved_gabbro.json deleted file mode 100644 index 3709de0ab..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/gabbro/paved", - "bottom": "create:block/palettes/gabbro/paved_borderless", - "top": "create:block/palettes/gabbro/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_covered.json b/src/generated/resources/assets/create/models/block/paved_gabbro_covered.json deleted file mode 100644 index 82f4842b6..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/gabbro/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_slab.json b/src/generated/resources/assets/create/models/block/paved_gabbro_slab.json deleted file mode 100644 index a03661ccd..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/gabbro/paved", - "bottom": "create:block/palettes/gabbro/paved", - "top": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_slab_top.json b/src/generated/resources/assets/create/models/block/paved_gabbro_slab_top.json deleted file mode 100644 index 12cdc810c..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/gabbro/paved", - "bottom": "create:block/palettes/gabbro/paved", - "top": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_stairs.json b/src/generated/resources/assets/create/models/block/paved_gabbro_stairs.json deleted file mode 100644 index 6800fb03a..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/gabbro/paved", - "bottom": "create:block/palettes/gabbro/paved", - "top": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_gabbro_stairs_inner.json deleted file mode 100644 index aa55eec01..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/gabbro/paved", - "bottom": "create:block/palettes/gabbro/paved", - "top": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_gabbro_stairs_outer.json deleted file mode 100644 index a4639a9ba..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/gabbro/paved", - "bottom": "create:block/palettes/gabbro/paved", - "top": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_wall_post.json b/src/generated/resources/assets/create/models/block/paved_gabbro_wall_post.json deleted file mode 100644 index b7c20eaed..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_wall_side.json b/src/generated/resources/assets/create/models/block/paved_gabbro_wall_side.json deleted file mode 100644 index 9b7d6cab8..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_gabbro_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_gabbro_wall_side_tall.json deleted file mode 100644 index d23b73abf..000000000 --- a/src/generated/resources/assets/create/models/block/paved_gabbro_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite.json b/src/generated/resources/assets/create/models/block/paved_granite.json deleted file mode 100644 index f32cd5e24..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/granite/paved", - "bottom": "create:block/palettes/granite/paved_borderless", - "top": "create:block/palettes/granite/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_covered.json b/src/generated/resources/assets/create/models/block/paved_granite_covered.json deleted file mode 100644 index f577bcbf4..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/granite/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_slab.json b/src/generated/resources/assets/create/models/block/paved_granite_slab.json deleted file mode 100644 index 584bc8a21..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/granite/paved", - "bottom": "create:block/palettes/granite/paved", - "top": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_slab_top.json b/src/generated/resources/assets/create/models/block/paved_granite_slab_top.json deleted file mode 100644 index 4e0739c86..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/granite/paved", - "bottom": "create:block/palettes/granite/paved", - "top": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_stairs.json b/src/generated/resources/assets/create/models/block/paved_granite_stairs.json deleted file mode 100644 index cdaf50d4c..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/granite/paved", - "bottom": "create:block/palettes/granite/paved", - "top": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_granite_stairs_inner.json deleted file mode 100644 index 9dc2f013a..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/granite/paved", - "bottom": "create:block/palettes/granite/paved", - "top": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_granite_stairs_outer.json deleted file mode 100644 index 5f4209084..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/granite/paved", - "bottom": "create:block/palettes/granite/paved", - "top": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_wall_post.json b/src/generated/resources/assets/create/models/block/paved_granite_wall_post.json deleted file mode 100644 index 5de85a78f..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_wall_side.json b/src/generated/resources/assets/create/models/block/paved_granite_wall_side.json deleted file mode 100644 index d323d648a..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_granite_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_granite_wall_side_tall.json deleted file mode 100644 index 181194b46..000000000 --- a/src/generated/resources/assets/create/models/block/paved_granite_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone.json b/src/generated/resources/assets/create/models/block/paved_limestone.json deleted file mode 100644 index 1ee9547fc..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/limestone/paved", - "bottom": "create:block/palettes/limestone/paved_borderless", - "top": "create:block/palettes/limestone/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_covered.json b/src/generated/resources/assets/create/models/block/paved_limestone_covered.json deleted file mode 100644 index 00452b640..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/limestone/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_slab.json b/src/generated/resources/assets/create/models/block/paved_limestone_slab.json deleted file mode 100644 index c66e3b1e2..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/limestone/paved", - "bottom": "create:block/palettes/limestone/paved", - "top": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_slab_top.json b/src/generated/resources/assets/create/models/block/paved_limestone_slab_top.json deleted file mode 100644 index 63da2d2b2..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/limestone/paved", - "bottom": "create:block/palettes/limestone/paved", - "top": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_stairs.json b/src/generated/resources/assets/create/models/block/paved_limestone_stairs.json deleted file mode 100644 index 3ca719457..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/limestone/paved", - "bottom": "create:block/palettes/limestone/paved", - "top": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_limestone_stairs_inner.json deleted file mode 100644 index 46e013ee3..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/limestone/paved", - "bottom": "create:block/palettes/limestone/paved", - "top": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_limestone_stairs_outer.json deleted file mode 100644 index c2d5a743e..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/limestone/paved", - "bottom": "create:block/palettes/limestone/paved", - "top": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_wall_post.json b/src/generated/resources/assets/create/models/block/paved_limestone_wall_post.json deleted file mode 100644 index 6c91141b5..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_wall_side.json b/src/generated/resources/assets/create/models/block/paved_limestone_wall_side.json deleted file mode 100644 index ee53ad831..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_limestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_limestone_wall_side_tall.json deleted file mode 100644 index a1bff5011..000000000 --- a/src/generated/resources/assets/create/models/block/paved_limestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria.json b/src/generated/resources/assets/create/models/block/paved_scoria.json deleted file mode 100644 index a226af2a6..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/scoria/paved", - "bottom": "create:block/palettes/scoria/paved_borderless", - "top": "create:block/palettes/scoria/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_covered.json b/src/generated/resources/assets/create/models/block/paved_scoria_covered.json deleted file mode 100644 index a6a533ae5..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/scoria/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_slab.json b/src/generated/resources/assets/create/models/block/paved_scoria_slab.json deleted file mode 100644 index 78eef0869..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/scoria/paved", - "bottom": "create:block/palettes/scoria/paved", - "top": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_slab_top.json b/src/generated/resources/assets/create/models/block/paved_scoria_slab_top.json deleted file mode 100644 index 457a4aee3..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/scoria/paved", - "bottom": "create:block/palettes/scoria/paved", - "top": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_stairs.json b/src/generated/resources/assets/create/models/block/paved_scoria_stairs.json deleted file mode 100644 index 55fab0585..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/scoria/paved", - "bottom": "create:block/palettes/scoria/paved", - "top": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_scoria_stairs_inner.json deleted file mode 100644 index 354b08fbe..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/scoria/paved", - "bottom": "create:block/palettes/scoria/paved", - "top": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_scoria_stairs_outer.json deleted file mode 100644 index 8d682ca37..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/scoria/paved", - "bottom": "create:block/palettes/scoria/paved", - "top": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_wall_post.json b/src/generated/resources/assets/create/models/block/paved_scoria_wall_post.json deleted file mode 100644 index 89d0269a9..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_wall_side.json b/src/generated/resources/assets/create/models/block/paved_scoria_wall_side.json deleted file mode 100644 index ae4780462..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_scoria_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_scoria_wall_side_tall.json deleted file mode 100644 index 456edfe7c..000000000 --- a/src/generated/resources/assets/create/models/block/paved_scoria_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone.json deleted file mode 100644 index f1fee3bc5..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/palettes/weathered_limestone/paved", - "bottom": "create:block/palettes/weathered_limestone/paved_borderless", - "top": "create:block/palettes/weathered_limestone/paved_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_covered.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_covered.json deleted file mode 100644 index d7152be7f..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_covered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/weathered_limestone/paved_borderless" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_slab.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_slab.json deleted file mode 100644 index 80218b38d..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/weathered_limestone/paved", - "bottom": "create:block/palettes/weathered_limestone/paved", - "top": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_slab_top.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_slab_top.json deleted file mode 100644 index 0f30395cb..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/weathered_limestone/paved", - "bottom": "create:block/palettes/weathered_limestone/paved", - "top": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs.json deleted file mode 100644 index 389bdcb56..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/paved", - "bottom": "create:block/palettes/weathered_limestone/paved", - "top": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs_inner.json deleted file mode 100644 index e94c446fb..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/paved", - "bottom": "create:block/palettes/weathered_limestone/paved", - "top": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs_outer.json deleted file mode 100644 index 93fa486dc..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/paved", - "bottom": "create:block/palettes/weathered_limestone/paved", - "top": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_post.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_post.json deleted file mode 100644 index 6f393ecf8..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_side.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_side.json deleted file mode 100644 index 619a8fa71..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_side_tall.json deleted file mode 100644 index 8f2f12f86..000000000 --- a/src/generated/resources/assets/create/models/block/paved_weathered_limestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/pink_sail.json b/src/generated/resources/assets/create/models/block/pink_sail.json deleted file mode 100644 index 104e8b335..000000000 --- a/src/generated/resources/assets/create/models/block/pink_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_pink" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/pink_seat.json b/src/generated/resources/assets/create/models/block/pink_seat.json deleted file mode 100644 index a6a9781aa..000000000 --- a/src/generated/resources/assets/create/models/block/pink_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_pink", - "2": "create:block/seat/side_pink" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/pink_valve_handle.json b/src/generated/resources/assets/create/models/block/pink_valve_handle.json deleted file mode 100644 index ddbd94eaa..000000000 --- a/src/generated/resources/assets/create/models/block/pink_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_pink" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria.json deleted file mode 100644 index a8452aa26..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab.json deleted file mode 100644 index 702331a05..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dark_scoria/polished_slab", - "bottom": "create:block/palettes/dark_scoria/polished", - "top": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab_double.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab_double.json deleted file mode 100644 index 0b7ca2d60..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab_double.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dark_scoria/polished_slab", - "end": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab_top.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab_top.json deleted file mode 100644 index abcaa13fc..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dark_scoria/polished_slab", - "bottom": "create:block/palettes/dark_scoria/polished", - "top": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs.json deleted file mode 100644 index 12a2824b3..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/polished", - "bottom": "create:block/palettes/dark_scoria/polished", - "top": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs_inner.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs_inner.json deleted file mode 100644 index 7bb1cbbf0..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/polished", - "bottom": "create:block/palettes/dark_scoria/polished", - "top": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs_outer.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs_outer.json deleted file mode 100644 index c8cdbd9b1..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dark_scoria/polished", - "bottom": "create:block/palettes/dark_scoria/polished", - "top": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_post.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_post.json deleted file mode 100644 index fcad4b2bf..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_side.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_side.json deleted file mode 100644 index 2445a519f..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_side_tall.json b/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_side_tall.json deleted file mode 100644 index 563646abd..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dark_scoria_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite.json b/src/generated/resources/assets/create/models/block/polished_dolomite.json deleted file mode 100644 index 6f31d98c1..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_slab.json b/src/generated/resources/assets/create/models/block/polished_dolomite_slab.json deleted file mode 100644 index 1865d3af9..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/dolomite/polished_slab", - "bottom": "create:block/palettes/dolomite/polished", - "top": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_slab_double.json b/src/generated/resources/assets/create/models/block/polished_dolomite_slab_double.json deleted file mode 100644 index 29a397000..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_slab_double.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/dolomite/polished_slab", - "end": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_slab_top.json b/src/generated/resources/assets/create/models/block/polished_dolomite_slab_top.json deleted file mode 100644 index e2a91debc..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/dolomite/polished_slab", - "bottom": "create:block/palettes/dolomite/polished", - "top": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_stairs.json b/src/generated/resources/assets/create/models/block/polished_dolomite_stairs.json deleted file mode 100644 index 69ee9602a..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/dolomite/polished", - "bottom": "create:block/palettes/dolomite/polished", - "top": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_stairs_inner.json b/src/generated/resources/assets/create/models/block/polished_dolomite_stairs_inner.json deleted file mode 100644 index e6321158b..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/dolomite/polished", - "bottom": "create:block/palettes/dolomite/polished", - "top": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_stairs_outer.json b/src/generated/resources/assets/create/models/block/polished_dolomite_stairs_outer.json deleted file mode 100644 index 33fe207c5..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/dolomite/polished", - "bottom": "create:block/palettes/dolomite/polished", - "top": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_wall_post.json b/src/generated/resources/assets/create/models/block/polished_dolomite_wall_post.json deleted file mode 100644 index 50dd8ff66..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_wall_side.json b/src/generated/resources/assets/create/models/block/polished_dolomite_wall_side.json deleted file mode 100644 index c5761806d..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_dolomite_wall_side_tall.json b/src/generated/resources/assets/create/models/block/polished_dolomite_wall_side_tall.json deleted file mode 100644 index 2ad32d21a..000000000 --- a/src/generated/resources/assets/create/models/block/polished_dolomite_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro.json b/src/generated/resources/assets/create/models/block/polished_gabbro.json deleted file mode 100644 index 996e455c0..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_slab.json b/src/generated/resources/assets/create/models/block/polished_gabbro_slab.json deleted file mode 100644 index 89a15111d..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/gabbro/polished_slab", - "bottom": "create:block/palettes/gabbro/polished", - "top": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_slab_double.json b/src/generated/resources/assets/create/models/block/polished_gabbro_slab_double.json deleted file mode 100644 index 7fc305481..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_slab_double.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/gabbro/polished_slab", - "end": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_slab_top.json b/src/generated/resources/assets/create/models/block/polished_gabbro_slab_top.json deleted file mode 100644 index 91ac372d7..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/gabbro/polished_slab", - "bottom": "create:block/palettes/gabbro/polished", - "top": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_stairs.json b/src/generated/resources/assets/create/models/block/polished_gabbro_stairs.json deleted file mode 100644 index 1bfdc51e0..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/gabbro/polished", - "bottom": "create:block/palettes/gabbro/polished", - "top": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_stairs_inner.json b/src/generated/resources/assets/create/models/block/polished_gabbro_stairs_inner.json deleted file mode 100644 index b2637f81f..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/gabbro/polished", - "bottom": "create:block/palettes/gabbro/polished", - "top": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_stairs_outer.json b/src/generated/resources/assets/create/models/block/polished_gabbro_stairs_outer.json deleted file mode 100644 index a15a4b6fb..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/gabbro/polished", - "bottom": "create:block/palettes/gabbro/polished", - "top": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_wall_post.json b/src/generated/resources/assets/create/models/block/polished_gabbro_wall_post.json deleted file mode 100644 index c9cc23ae2..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_wall_side.json b/src/generated/resources/assets/create/models/block/polished_gabbro_wall_side.json deleted file mode 100644 index e655a747a..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_gabbro_wall_side_tall.json b/src/generated/resources/assets/create/models/block/polished_gabbro_wall_side_tall.json deleted file mode 100644 index c397db43c..000000000 --- a/src/generated/resources/assets/create/models/block/polished_gabbro_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone.json b/src/generated/resources/assets/create/models/block/polished_limestone.json deleted file mode 100644 index 90a4cd4e2..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_slab.json b/src/generated/resources/assets/create/models/block/polished_limestone_slab.json deleted file mode 100644 index dbf6b493e..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/limestone/polished_slab", - "bottom": "create:block/palettes/limestone/polished", - "top": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_slab_double.json b/src/generated/resources/assets/create/models/block/polished_limestone_slab_double.json deleted file mode 100644 index 160209d43..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_slab_double.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/limestone/polished_slab", - "end": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_slab_top.json b/src/generated/resources/assets/create/models/block/polished_limestone_slab_top.json deleted file mode 100644 index 7bf8ab02c..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/limestone/polished_slab", - "bottom": "create:block/palettes/limestone/polished", - "top": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_stairs.json b/src/generated/resources/assets/create/models/block/polished_limestone_stairs.json deleted file mode 100644 index b3db1b9b9..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/limestone/polished", - "bottom": "create:block/palettes/limestone/polished", - "top": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/polished_limestone_stairs_inner.json deleted file mode 100644 index ba4de8ae0..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/limestone/polished", - "bottom": "create:block/palettes/limestone/polished", - "top": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/polished_limestone_stairs_outer.json deleted file mode 100644 index efbb512ed..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/limestone/polished", - "bottom": "create:block/palettes/limestone/polished", - "top": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_wall_post.json b/src/generated/resources/assets/create/models/block/polished_limestone_wall_post.json deleted file mode 100644 index b8b2fc29f..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_wall_side.json b/src/generated/resources/assets/create/models/block/polished_limestone_wall_side.json deleted file mode 100644 index 07bae0e2b..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_limestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/polished_limestone_wall_side_tall.json deleted file mode 100644 index 32a027708..000000000 --- a/src/generated/resources/assets/create/models/block/polished_limestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria.json b/src/generated/resources/assets/create/models/block/polished_scoria.json deleted file mode 100644 index 4c0b35baa..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_slab.json b/src/generated/resources/assets/create/models/block/polished_scoria_slab.json deleted file mode 100644 index 0426d5db6..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/scoria/polished_slab", - "bottom": "create:block/palettes/scoria/polished", - "top": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_slab_double.json b/src/generated/resources/assets/create/models/block/polished_scoria_slab_double.json deleted file mode 100644 index 6e286654f..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_slab_double.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/scoria/polished_slab", - "end": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_slab_top.json b/src/generated/resources/assets/create/models/block/polished_scoria_slab_top.json deleted file mode 100644 index 10f146bd9..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/scoria/polished_slab", - "bottom": "create:block/palettes/scoria/polished", - "top": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_stairs.json b/src/generated/resources/assets/create/models/block/polished_scoria_stairs.json deleted file mode 100644 index e2f72d717..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/scoria/polished", - "bottom": "create:block/palettes/scoria/polished", - "top": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_stairs_inner.json b/src/generated/resources/assets/create/models/block/polished_scoria_stairs_inner.json deleted file mode 100644 index b017439ba..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/scoria/polished", - "bottom": "create:block/palettes/scoria/polished", - "top": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_stairs_outer.json b/src/generated/resources/assets/create/models/block/polished_scoria_stairs_outer.json deleted file mode 100644 index 4b9ddb995..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/scoria/polished", - "bottom": "create:block/palettes/scoria/polished", - "top": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_wall_post.json b/src/generated/resources/assets/create/models/block/polished_scoria_wall_post.json deleted file mode 100644 index a99c10843..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_wall_side.json b/src/generated/resources/assets/create/models/block/polished_scoria_wall_side.json deleted file mode 100644 index 613ac2328..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_scoria_wall_side_tall.json b/src/generated/resources/assets/create/models/block/polished_scoria_wall_side_tall.json deleted file mode 100644 index b8f287b11..000000000 --- a/src/generated/resources/assets/create/models/block/polished_scoria_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone.json deleted file mode 100644 index 9ec31ae0a..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab.json deleted file mode 100644 index 0488131f6..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/weathered_limestone/polished_slab", - "bottom": "create:block/palettes/weathered_limestone/polished", - "top": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab_double.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab_double.json deleted file mode 100644 index df009ec9e..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab_double.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/weathered_limestone/polished_slab", - "end": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab_top.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab_top.json deleted file mode 100644 index 6d991f63d..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/weathered_limestone/polished_slab", - "bottom": "create:block/palettes/weathered_limestone/polished", - "top": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs.json deleted file mode 100644 index d8fa80c46..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/polished", - "bottom": "create:block/palettes/weathered_limestone/polished", - "top": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs_inner.json deleted file mode 100644 index 0cd4e4128..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/polished", - "bottom": "create:block/palettes/weathered_limestone/polished", - "top": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs_outer.json deleted file mode 100644 index e377f8231..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/polished", - "bottom": "create:block/palettes/weathered_limestone/polished", - "top": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_post.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_post.json deleted file mode 100644 index 75b6e6d45..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_side.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_side.json deleted file mode 100644 index 0b29eb008..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_side_tall.json deleted file mode 100644 index 741bd057a..000000000 --- a/src/generated/resources/assets/create/models/block/polished_weathered_limestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/powered_latch.json b/src/generated/resources/assets/create/models/block/powered_latch.json deleted file mode 100644 index dc18c5658..000000000 --- a/src/generated/resources/assets/create/models/block/powered_latch.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/latch_off", - "textures": { - "top": "create:block/diodes/powered_latch/idle" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/powered_latch_powered.json b/src/generated/resources/assets/create/models/block/powered_latch_powered.json deleted file mode 100644 index 004e6db09..000000000 --- a/src/generated/resources/assets/create/models/block/powered_latch_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/latch_on", - "textures": { - "top": "create:block/diodes/powered_latch/powering" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/powered_toggle_latch_off_powered.json b/src/generated/resources/assets/create/models/block/powered_toggle_latch_off_powered.json deleted file mode 100644 index 551c5da9a..000000000 --- a/src/generated/resources/assets/create/models/block/powered_toggle_latch_off_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/latch_off", - "textures": { - "top": "create:block/diodes/powered_toggle_latch/powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/powered_toggle_latch_on_powered.json b/src/generated/resources/assets/create/models/block/powered_toggle_latch_on_powered.json deleted file mode 100644 index 6ab16a422..000000000 --- a/src/generated/resources/assets/create/models/block/powered_toggle_latch_on_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/latch_on", - "textures": { - "top": "create:block/diodes/powered_toggle_latch/powered_powering" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/pulse_repeater_powered.json b/src/generated/resources/assets/create/models/block/pulse_repeater_powered.json deleted file mode 100644 index d3b0c2ff0..000000000 --- a/src/generated/resources/assets/create/models/block/pulse_repeater_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/pulse_repeater", - "textures": { - "top": "create:block/diodes/pulse_repeater/powered" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/pulse_repeater_pulsing.json b/src/generated/resources/assets/create/models/block/pulse_repeater_pulsing.json deleted file mode 100644 index 0a09d2b03..000000000 --- a/src/generated/resources/assets/create/models/block/pulse_repeater_pulsing.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/diodes/pulse_repeater", - "textures": { - "top": "create:block/diodes/pulse_repeater/powered", - "torch": "minecraft:block/redstone_torch" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/purple_sail.json b/src/generated/resources/assets/create/models/block/purple_sail.json deleted file mode 100644 index f42743d35..000000000 --- a/src/generated/resources/assets/create/models/block/purple_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_purple" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/purple_seat.json b/src/generated/resources/assets/create/models/block/purple_seat.json deleted file mode 100644 index 1db18ce5e..000000000 --- a/src/generated/resources/assets/create/models/block/purple_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_purple", - "2": "create:block/seat/side_purple" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/purple_valve_handle.json b/src/generated/resources/assets/create/models/block/purple_valve_handle.json deleted file mode 100644 index a2449a3bf..000000000 --- a/src/generated/resources/assets/create/models/block/purple_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_purple" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/radial_chassis_side_x.json b/src/generated/resources/assets/create/models/block/radial_chassis_side_x.json deleted file mode 100644 index 1e0e29f9e..000000000 --- a/src/generated/resources/assets/create/models/block/radial_chassis_side_x.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/radial_chassis/side_x", - "textures": { - "side": "create:block/radial_chassis_side" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/radial_chassis_side_x_sticky.json b/src/generated/resources/assets/create/models/block/radial_chassis_side_x_sticky.json deleted file mode 100644 index c88ae9153..000000000 --- a/src/generated/resources/assets/create/models/block/radial_chassis_side_x_sticky.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/radial_chassis/side_x", - "textures": { - "side": "create:block/radial_chassis_side_sticky" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/radial_chassis_side_y.json b/src/generated/resources/assets/create/models/block/radial_chassis_side_y.json deleted file mode 100644 index 80062a588..000000000 --- a/src/generated/resources/assets/create/models/block/radial_chassis_side_y.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/radial_chassis/side_y", - "textures": { - "side": "create:block/radial_chassis_side" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/radial_chassis_side_y_sticky.json b/src/generated/resources/assets/create/models/block/radial_chassis_side_y_sticky.json deleted file mode 100644 index e81fd1d18..000000000 --- a/src/generated/resources/assets/create/models/block/radial_chassis_side_y_sticky.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/radial_chassis/side_y", - "textures": { - "side": "create:block/radial_chassis_side_sticky" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/radial_chassis_side_z.json b/src/generated/resources/assets/create/models/block/radial_chassis_side_z.json deleted file mode 100644 index a49d0da1d..000000000 --- a/src/generated/resources/assets/create/models/block/radial_chassis_side_z.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/radial_chassis/side_z", - "textures": { - "side": "create:block/radial_chassis_side" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/radial_chassis_side_z_sticky.json b/src/generated/resources/assets/create/models/block/radial_chassis_side_z_sticky.json deleted file mode 100644 index 30759dc8c..000000000 --- a/src/generated/resources/assets/create/models/block/radial_chassis_side_z_sticky.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/radial_chassis/side_z", - "textures": { - "side": "create:block/radial_chassis_side_sticky" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/red_sail.json b/src/generated/resources/assets/create/models/block/red_sail.json deleted file mode 100644 index daa72d1bb..000000000 --- a/src/generated/resources/assets/create/models/block/red_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_red" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/red_seat.json b/src/generated/resources/assets/create/models/block/red_seat.json deleted file mode 100644 index 0d294e9f0..000000000 --- a/src/generated/resources/assets/create/models/block/red_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_red", - "2": "create:block/seat/side_red" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/red_valve_handle.json b/src/generated/resources/assets/create/models/block/red_valve_handle.json deleted file mode 100644 index d4465688b..000000000 --- a/src/generated/resources/assets/create/models/block/red_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_red" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/refined_radiance_casing.json b/src/generated/resources/assets/create/models/block/refined_radiance_casing.json deleted file mode 100644 index f60bb432f..000000000 --- a/src/generated/resources/assets/create/models/block/refined_radiance_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/refined_radiance_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria.json b/src/generated/resources/assets/create/models/block/scoria.json deleted file mode 100644 index e4bb03d38..000000000 --- a/src/generated/resources/assets/create/models/block/scoria.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/scoria/plain" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks.json b/src/generated/resources/assets/create/models/block/scoria_bricks.json deleted file mode 100644 index 19a1df421..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks_slab.json b/src/generated/resources/assets/create/models/block/scoria_bricks_slab.json deleted file mode 100644 index d3347da15..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/scoria/bricks", - "bottom": "create:block/palettes/scoria/bricks", - "top": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/scoria_bricks_slab_top.json deleted file mode 100644 index 8c0201a15..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/scoria/bricks", - "bottom": "create:block/palettes/scoria/bricks", - "top": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks_stairs.json b/src/generated/resources/assets/create/models/block/scoria_bricks_stairs.json deleted file mode 100644 index 036456975..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/scoria/bricks", - "bottom": "create:block/palettes/scoria/bricks", - "top": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/scoria_bricks_stairs_inner.json deleted file mode 100644 index 805a71f96..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/scoria/bricks", - "bottom": "create:block/palettes/scoria/bricks", - "top": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/scoria_bricks_stairs_outer.json deleted file mode 100644 index fc7665ccc..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/scoria/bricks", - "bottom": "create:block/palettes/scoria/bricks", - "top": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/scoria_bricks_wall_post.json deleted file mode 100644 index ddf448177..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/scoria_bricks_wall_side.json deleted file mode 100644 index eff1b2152..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/scoria_bricks_wall_side_tall.json deleted file mode 100644 index 4283364e0..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone.json deleted file mode 100644 index 940499a72..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone_slab.json deleted file mode 100644 index 08727b30f..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/scoria/cobblestone", - "bottom": "create:block/palettes/scoria/cobblestone", - "top": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone_slab_top.json deleted file mode 100644 index 03adff22b..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/scoria/cobblestone", - "bottom": "create:block/palettes/scoria/cobblestone", - "top": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs.json deleted file mode 100644 index d64e3281f..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/scoria/cobblestone", - "bottom": "create:block/palettes/scoria/cobblestone", - "top": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs_inner.json deleted file mode 100644 index bc360402f..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/scoria/cobblestone", - "bottom": "create:block/palettes/scoria/cobblestone", - "top": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs_outer.json deleted file mode 100644 index 710de8a2c..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/scoria/cobblestone", - "bottom": "create:block/palettes/scoria/cobblestone", - "top": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_post.json deleted file mode 100644 index 6215cca54..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_side.json deleted file mode 100644 index 049d4c559..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_side_tall.json deleted file mode 100644 index 6cf857f6c..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/scoria_pillar.json b/src/generated/resources/assets/create/models/block/scoria_pillar.json deleted file mode 100644 index 3333d1b29..000000000 --- a/src/generated/resources/assets/create/models/block/scoria_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/scoria/pillar", - "end": "create:block/palettes/scoria/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/secondary_linear_chassis.json b/src/generated/resources/assets/create/models/block/secondary_linear_chassis.json deleted file mode 100644 index cbc1234ab..000000000 --- a/src/generated/resources/assets/create/models/block/secondary_linear_chassis.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/secondary_linear_chassis_side", - "bottom": "create:block/linear_chassis_end", - "top": "create:block/linear_chassis_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/secondary_linear_chassis_bottom.json b/src/generated/resources/assets/create/models/block/secondary_linear_chassis_bottom.json deleted file mode 100644 index 369524495..000000000 --- a/src/generated/resources/assets/create/models/block/secondary_linear_chassis_bottom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/secondary_linear_chassis_side", - "bottom": "create:block/linear_chassis_end_sticky", - "top": "create:block/linear_chassis_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/secondary_linear_chassis_top.json b/src/generated/resources/assets/create/models/block/secondary_linear_chassis_top.json deleted file mode 100644 index 44682a6bf..000000000 --- a/src/generated/resources/assets/create/models/block/secondary_linear_chassis_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/secondary_linear_chassis_side", - "bottom": "create:block/linear_chassis_end", - "top": "create:block/linear_chassis_end_sticky" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/secondary_linear_chassis_top_bottom.json b/src/generated/resources/assets/create/models/block/secondary_linear_chassis_top_bottom.json deleted file mode 100644 index 167007576..000000000 --- a/src/generated/resources/assets/create/models/block/secondary_linear_chassis_top_bottom.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "side": "create:block/secondary_linear_chassis_side", - "bottom": "create:block/linear_chassis_end_sticky", - "top": "create:block/linear_chassis_end_sticky" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/shadow_steel_casing.json b/src/generated/resources/assets/create/models/block/shadow_steel_casing.json deleted file mode 100644 index a87cff75d..000000000 --- a/src/generated/resources/assets/create/models/block/shadow_steel_casing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/shadow_steel_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/spruce_window.json b/src/generated/resources/assets/create/models/block/spruce_window.json deleted file mode 100644 index f3944528b..000000000 --- a/src/generated/resources/assets/create/models/block/spruce_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/spruce_window", - "end": "minecraft:block/spruce_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/spruce_window_pane_noside.json b/src/generated/resources/assets/create/models/block/spruce_window_pane_noside.json deleted file mode 100644 index 1252e1e48..000000000 --- a/src/generated/resources/assets/create/models/block/spruce_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/spruce_window", - "edge": "minecraft:block/spruce_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/spruce_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/spruce_window_pane_noside_alt.json deleted file mode 100644 index 946befebc..000000000 --- a/src/generated/resources/assets/create/models/block/spruce_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/spruce_window", - "edge": "minecraft:block/spruce_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/spruce_window_pane_post.json b/src/generated/resources/assets/create/models/block/spruce_window_pane_post.json deleted file mode 100644 index 0cd71f74e..000000000 --- a/src/generated/resources/assets/create/models/block/spruce_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/spruce_window", - "edge": "minecraft:block/spruce_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/spruce_window_pane_side.json b/src/generated/resources/assets/create/models/block/spruce_window_pane_side.json deleted file mode 100644 index a58dec6b4..000000000 --- a/src/generated/resources/assets/create/models/block/spruce_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/spruce_window", - "edge": "minecraft:block/spruce_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/spruce_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/spruce_window_pane_side_alt.json deleted file mode 100644 index fc99d0e40..000000000 --- a/src/generated/resources/assets/create/models/block/spruce_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/spruce_window", - "edge": "minecraft:block/spruce_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/stockpile_switch_0.json b/src/generated/resources/assets/create/models/block/stockpile_switch_0.json deleted file mode 100644 index 4d1b9b70e..000000000 --- a/src/generated/resources/assets/create/models/block/stockpile_switch_0.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/stockpile_switch", - "textures": { - "indicator": "create:block/indicator/0" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/stockpile_switch_1.json b/src/generated/resources/assets/create/models/block/stockpile_switch_1.json deleted file mode 100644 index 288dc2927..000000000 --- a/src/generated/resources/assets/create/models/block/stockpile_switch_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/stockpile_switch", - "textures": { - "indicator": "create:block/indicator/1" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/stockpile_switch_2.json b/src/generated/resources/assets/create/models/block/stockpile_switch_2.json deleted file mode 100644 index 8b0da8a21..000000000 --- a/src/generated/resources/assets/create/models/block/stockpile_switch_2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/stockpile_switch", - "textures": { - "indicator": "create:block/indicator/2" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/stockpile_switch_3.json b/src/generated/resources/assets/create/models/block/stockpile_switch_3.json deleted file mode 100644 index fc3e40132..000000000 --- a/src/generated/resources/assets/create/models/block/stockpile_switch_3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/stockpile_switch", - "textures": { - "indicator": "create:block/indicator/3" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/stockpile_switch_4.json b/src/generated/resources/assets/create/models/block/stockpile_switch_4.json deleted file mode 100644 index 2194e2c69..000000000 --- a/src/generated/resources/assets/create/models/block/stockpile_switch_4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/stockpile_switch", - "textures": { - "indicator": "create:block/indicator/4" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/stockpile_switch_5.json b/src/generated/resources/assets/create/models/block/stockpile_switch_5.json deleted file mode 100644 index eb0f8298c..000000000 --- a/src/generated/resources/assets/create/models/block/stockpile_switch_5.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/stockpile_switch", - "textures": { - "indicator": "create:block/indicator/5" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/stockpile_switch_6.json b/src/generated/resources/assets/create/models/block/stockpile_switch_6.json deleted file mode 100644 index 58a83e646..000000000 --- a/src/generated/resources/assets/create/models/block/stockpile_switch_6.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/stockpile_switch", - "textures": { - "indicator": "create:block/indicator/6" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tiled_glass.json b/src/generated/resources/assets/create/models/block/tiled_glass.json deleted file mode 100644 index cd31f2ad4..000000000 --- a/src/generated/resources/assets/create/models/block/tiled_glass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/tiled_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tiled_glass_pane_noside.json b/src/generated/resources/assets/create/models/block/tiled_glass_pane_noside.json deleted file mode 100644 index aa4a4b55d..000000000 --- a/src/generated/resources/assets/create/models/block/tiled_glass_pane_noside.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_glass_pane_noside", - "textures": { - "pane": "create:block/palettes/tiled_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tiled_glass_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/tiled_glass_pane_noside_alt.json deleted file mode 100644 index 2d9a17961..000000000 --- a/src/generated/resources/assets/create/models/block/tiled_glass_pane_noside_alt.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_glass_pane_noside_alt", - "textures": { - "pane": "create:block/palettes/tiled_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tiled_glass_pane_post.json b/src/generated/resources/assets/create/models/block/tiled_glass_pane_post.json deleted file mode 100644 index d82e481b1..000000000 --- a/src/generated/resources/assets/create/models/block/tiled_glass_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/template_glass_pane_post", - "textures": { - "pane": "create:block/palettes/tiled_glass", - "edge": "minecraft:block/glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tiled_glass_pane_side.json b/src/generated/resources/assets/create/models/block/tiled_glass_pane_side.json deleted file mode 100644 index 46c6c74e6..000000000 --- a/src/generated/resources/assets/create/models/block/tiled_glass_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/template_glass_pane_side", - "textures": { - "pane": "create:block/palettes/tiled_glass", - "edge": "minecraft:block/glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/tiled_glass_pane_side_alt.json b/src/generated/resources/assets/create/models/block/tiled_glass_pane_side_alt.json deleted file mode 100644 index 7085e028d..000000000 --- a/src/generated/resources/assets/create/models/block/tiled_glass_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/template_glass_pane_side_alt", - "textures": { - "pane": "create:block/palettes/tiled_glass", - "edge": "minecraft:block/glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/vertical_framed_glass.json b/src/generated/resources/assets/create/models/block/vertical_framed_glass.json deleted file mode 100644 index 4cb93efbf..000000000 --- a/src/generated/resources/assets/create/models/block/vertical_framed_glass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/framed_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_noside.json b/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_noside.json deleted file mode 100644 index 739c476a4..000000000 --- a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_noside_alt.json deleted file mode 100644 index 61529cb63..000000000 --- a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_post.json b/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_post.json deleted file mode 100644 index dc06fff99..000000000 --- a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_side.json b/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_side.json deleted file mode 100644 index f9b4aec75..000000000 --- a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_side_alt.json b/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_side_alt.json deleted file mode 100644 index 3dbed7bee..000000000 --- a/src/generated/resources/assets/create/models/block/vertical_framed_glass_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/warped_window.json b/src/generated/resources/assets/create/models/block/warped_window.json deleted file mode 100644 index 3cc929cf7..000000000 --- a/src/generated/resources/assets/create/models/block/warped_window.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/warped_window", - "end": "minecraft:block/warped_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/warped_window_pane_noside.json b/src/generated/resources/assets/create/models/block/warped_window_pane_noside.json deleted file mode 100644 index a15b3aece..000000000 --- a/src/generated/resources/assets/create/models/block/warped_window_pane_noside.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside", - "textures": { - "pane": "create:block/palettes/warped_window", - "edge": "minecraft:block/warped_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/warped_window_pane_noside_alt.json b/src/generated/resources/assets/create/models/block/warped_window_pane_noside_alt.json deleted file mode 100644 index 1327e4e66..000000000 --- a/src/generated/resources/assets/create/models/block/warped_window_pane_noside_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/noside_alt", - "textures": { - "pane": "create:block/palettes/warped_window", - "edge": "minecraft:block/warped_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/warped_window_pane_post.json b/src/generated/resources/assets/create/models/block/warped_window_pane_post.json deleted file mode 100644 index 173c9e0e6..000000000 --- a/src/generated/resources/assets/create/models/block/warped_window_pane_post.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/post", - "textures": { - "pane": "create:block/palettes/warped_window", - "edge": "minecraft:block/warped_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/warped_window_pane_side.json b/src/generated/resources/assets/create/models/block/warped_window_pane_side.json deleted file mode 100644 index eaf22b0b6..000000000 --- a/src/generated/resources/assets/create/models/block/warped_window_pane_side.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side", - "textures": { - "pane": "create:block/palettes/warped_window", - "edge": "minecraft:block/warped_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/warped_window_pane_side_alt.json b/src/generated/resources/assets/create/models/block/warped_window_pane_side_alt.json deleted file mode 100644 index 155a66033..000000000 --- a/src/generated/resources/assets/create/models/block/warped_window_pane_side_alt.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/connected_glass_pane/side_alt", - "textures": { - "pane": "create:block/palettes/warped_window", - "edge": "minecraft:block/warped_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone.json b/src/generated/resources/assets/create/models/block/weathered_limestone.json deleted file mode 100644 index 01abec87a..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/weathered_limestone/plain" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks.json deleted file mode 100644 index 380a3e6e9..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_slab.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_slab.json deleted file mode 100644 index 2f74a85cd..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/weathered_limestone/bricks", - "bottom": "create:block/palettes/weathered_limestone/bricks", - "top": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_slab_top.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_slab_top.json deleted file mode 100644 index e2d6d16f8..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/weathered_limestone/bricks", - "bottom": "create:block/palettes/weathered_limestone/bricks", - "top": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs.json deleted file mode 100644 index fd579e080..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/bricks", - "bottom": "create:block/palettes/weathered_limestone/bricks", - "top": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs_inner.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs_inner.json deleted file mode 100644 index 667571e35..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/bricks", - "bottom": "create:block/palettes/weathered_limestone/bricks", - "top": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs_outer.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs_outer.json deleted file mode 100644 index c61ca14bc..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/bricks", - "bottom": "create:block/palettes/weathered_limestone/bricks", - "top": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_post.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_post.json deleted file mode 100644 index 893ee6776..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_side.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_side.json deleted file mode 100644 index e30ffea49..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_side_tall.json b/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_side_tall.json deleted file mode 100644 index 886dded7a..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_bricks_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone.json deleted file mode 100644 index a49c1a1e5..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_slab.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_slab.json deleted file mode 100644 index ab89683ce..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_slab.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "side": "create:block/palettes/weathered_limestone/cobblestone", - "bottom": "create:block/palettes/weathered_limestone/cobblestone", - "top": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_slab_top.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_slab_top.json deleted file mode 100644 index 9dde94ea2..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_slab_top.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/slab_top", - "textures": { - "side": "create:block/palettes/weathered_limestone/cobblestone", - "bottom": "create:block/palettes/weathered_limestone/cobblestone", - "top": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs.json deleted file mode 100644 index 328837b73..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/cobblestone", - "bottom": "create:block/palettes/weathered_limestone/cobblestone", - "top": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs_inner.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs_inner.json deleted file mode 100644 index 60a5194cb..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs_inner.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/inner_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/cobblestone", - "bottom": "create:block/palettes/weathered_limestone/cobblestone", - "top": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs_outer.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs_outer.json deleted file mode 100644 index 613dc7032..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_stairs_outer.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "minecraft:block/outer_stairs", - "textures": { - "side": "create:block/palettes/weathered_limestone/cobblestone", - "bottom": "create:block/palettes/weathered_limestone/cobblestone", - "top": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_post.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_post.json deleted file mode 100644 index f57fb9e0d..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_post.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_side.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_side.json deleted file mode 100644 index 3be7a44a0..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_side.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_side_tall.json b/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_side_tall.json deleted file mode 100644 index 9d492b571..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_cobblestone_wall_side_tall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/weathered_limestone_pillar.json b/src/generated/resources/assets/create/models/block/weathered_limestone_pillar.json deleted file mode 100644 index 997c42d92..000000000 --- a/src/generated/resources/assets/create/models/block/weathered_limestone_pillar.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/weathered_limestone/pillar", - "end": "create:block/palettes/weathered_limestone/pillar_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/white_seat.json b/src/generated/resources/assets/create/models/block/white_seat.json deleted file mode 100644 index c3b473e2a..000000000 --- a/src/generated/resources/assets/create/models/block/white_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_white", - "2": "create:block/seat/side_white" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/white_valve_handle.json b/src/generated/resources/assets/create/models/block/white_valve_handle.json deleted file mode 100644 index 6c867367f..000000000 --- a/src/generated/resources/assets/create/models/block/white_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_white" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/windmill_bearing.json b/src/generated/resources/assets/create/models/block/windmill_bearing.json deleted file mode 100644 index 1af6d6059..000000000 --- a/src/generated/resources/assets/create/models/block/windmill_bearing.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/bearing/block", - "textures": { - "side": "create:block/windmill_bearing_side", - "nook": "create:block/andesite_casing", - "back": "create:block/gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/yellow_sail.json b/src/generated/resources/assets/create/models/block/yellow_sail.json deleted file mode 100644 index f8873f47d..000000000 --- a/src/generated/resources/assets/create/models/block/yellow_sail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/white_sail", - "textures": { - "0": "create:block/sail/canvas_yellow" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/yellow_seat.json b/src/generated/resources/assets/create/models/block/yellow_seat.json deleted file mode 100644 index 561829e5e..000000000 --- a/src/generated/resources/assets/create/models/block/yellow_seat.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/seat", - "textures": { - "1": "create:block/seat/top_yellow", - "2": "create:block/seat/side_yellow" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/yellow_valve_handle.json b/src/generated/resources/assets/create/models/block/yellow_valve_handle.json deleted file mode 100644 index 0b5c669fd..000000000 --- a/src/generated/resources/assets/create/models/block/yellow_valve_handle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/valve_handle", - "textures": { - "3": "create:block/valve_handle/valve_handle_yellow" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/zinc_block.json b/src/generated/resources/assets/create/models/block/zinc_block.json deleted file mode 100644 index 5dce555e0..000000000 --- a/src/generated/resources/assets/create/models/block/zinc_block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/zinc_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/zinc_ore.json b/src/generated/resources/assets/create/models/block/zinc_ore.json deleted file mode 100644 index 35420475c..000000000 --- a/src/generated/resources/assets/create/models/block/zinc_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/cube_all", - "textures": { - "all": "create:block/zinc_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/acacia_window.json b/src/generated/resources/assets/create/models/item/acacia_window.json deleted file mode 100644 index 29cdbde2d..000000000 --- a/src/generated/resources/assets/create/models/item/acacia_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/acacia_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/acacia_window_pane.json b/src/generated/resources/assets/create/models/item/acacia_window_pane.json deleted file mode 100644 index 5489235f3..000000000 --- a/src/generated/resources/assets/create/models/item/acacia_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/acacia_window", - "edge": "minecraft:block/acacia_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/adjustable_chain_gearshift.json b/src/generated/resources/assets/create/models/item/adjustable_chain_gearshift.json deleted file mode 100644 index 5924bfa9e..000000000 --- a/src/generated/resources/assets/create/models/item/adjustable_chain_gearshift.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/item", - "textures": { - "side": "create:block/adjustable_chain_gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/adjustable_crate.json b/src/generated/resources/assets/create/models/item/adjustable_crate.json deleted file mode 100644 index 619cce82a..000000000 --- a/src/generated/resources/assets/create/models/item/adjustable_crate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/crate/brass/single" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/adjustable_pulse_repeater.json b/src/generated/resources/assets/create/models/item/adjustable_pulse_repeater.json deleted file mode 100644 index b5bf8a30a..000000000 --- a/src/generated/resources/assets/create/models/item/adjustable_pulse_repeater.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/adjustable_pulse_repeater", - "textures": { - "top": "create:block/diodes/adjustable_pulse_repeater/item" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/adjustable_repeater.json b/src/generated/resources/assets/create/models/item/adjustable_repeater.json deleted file mode 100644 index 075f54798..000000000 --- a/src/generated/resources/assets/create/models/item/adjustable_repeater.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/diodes/adjustable_repeater", - "textures": { - "top": "create:block/diodes/adjustable_repeater/item" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/analog_lever.json b/src/generated/resources/assets/create/models/item/analog_lever.json deleted file mode 100644 index 894c4617e..000000000 --- a/src/generated/resources/assets/create/models/item/analog_lever.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/analog_lever/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_alloy.json b/src/generated/resources/assets/create/models/item/andesite_alloy.json deleted file mode 100644 index c9d20a5c0..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_alloy.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/andesite_alloy" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_bricks.json b/src/generated/resources/assets/create/models/item/andesite_bricks.json deleted file mode 100644 index 877c40bf6..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_bricks_slab.json b/src/generated/resources/assets/create/models/item/andesite_bricks_slab.json deleted file mode 100644 index 01009ecb9..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_bricks_stairs.json b/src/generated/resources/assets/create/models/item/andesite_bricks_stairs.json deleted file mode 100644 index 3f2e7ab82..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_bricks_wall.json b/src/generated/resources/assets/create/models/item/andesite_bricks_wall.json deleted file mode 100644 index ef5fb3280..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/andesite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_casing.json b/src/generated/resources/assets/create/models/item/andesite_casing.json deleted file mode 100644 index b2defbd5f..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_cobblestone.json b/src/generated/resources/assets/create/models/item/andesite_cobblestone.json deleted file mode 100644 index e3794d15a..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/andesite_cobblestone_slab.json deleted file mode 100644 index d92892d3a..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/andesite_cobblestone_stairs.json deleted file mode 100644 index 7976a851d..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/andesite_cobblestone_wall.json deleted file mode 100644 index 2f52b1463..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/andesite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_encased_shaft.json b/src/generated/resources/assets/create/models/item/andesite_encased_shaft.json deleted file mode 100644 index 6edf0c3e5..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_encased_shaft.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/encased_shaft/item_andesite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_funnel.json b/src/generated/resources/assets/create/models/item/andesite_funnel.json deleted file mode 100644 index 6cb095db3..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_funnel.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/item", - "textures": { - "particle": "create:block/andesite_casing", - "7": "create:block/andesite_funnel_plating", - "2": "create:block/andesite_funnel_neutral", - "6": "create:block/andesite_funnel", - "5": "create:block/andesite_funnel_tall", - "3": "create:block/andesite_funnel_back" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_pillar.json b/src/generated/resources/assets/create/models/item/andesite_pillar.json deleted file mode 100644 index cc83e3129..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/andesite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/andesite_tunnel.json b/src/generated/resources/assets/create/models/item/andesite_tunnel.json deleted file mode 100644 index b8a1aa70a..000000000 --- a/src/generated/resources/assets/create/models/item/andesite_tunnel.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/item", - "textures": { - "1": "create:block/andesite_tunnel_top", - "2": "create:block/andesite_tunnel", - "particle": "minecraft:block/polished_andesite" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/bar_of_chocolate.json b/src/generated/resources/assets/create/models/item/bar_of_chocolate.json deleted file mode 100644 index 2d336e1e6..000000000 --- a/src/generated/resources/assets/create/models/item/bar_of_chocolate.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/bar_of_chocolate" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/basin.json b/src/generated/resources/assets/create/models/item/basin.json deleted file mode 100644 index a1ed06ff7..000000000 --- a/src/generated/resources/assets/create/models/item/basin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/basin/block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/belt_connector.json b/src/generated/resources/assets/create/models/item/belt_connector.json deleted file mode 100644 index 3b1e34629..000000000 --- a/src/generated/resources/assets/create/models/item/belt_connector.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/belt_connector" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/birch_window.json b/src/generated/resources/assets/create/models/item/birch_window.json deleted file mode 100644 index b8198fe6b..000000000 --- a/src/generated/resources/assets/create/models/item/birch_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/birch_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/birch_window_pane.json b/src/generated/resources/assets/create/models/item/birch_window_pane.json deleted file mode 100644 index 83b33020d..000000000 --- a/src/generated/resources/assets/create/models/item/birch_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/birch_window", - "edge": "minecraft:block/birch_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/black_seat.json b/src/generated/resources/assets/create/models/item/black_seat.json deleted file mode 100644 index 740ab204c..000000000 --- a/src/generated/resources/assets/create/models/item/black_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/black_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/black_valve_handle.json b/src/generated/resources/assets/create/models/item/black_valve_handle.json deleted file mode 100644 index 7407f374e..000000000 --- a/src/generated/resources/assets/create/models/item/black_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/black_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/blaze_burner.json b/src/generated/resources/assets/create/models/item/blaze_burner.json deleted file mode 100644 index 79214d256..000000000 --- a/src/generated/resources/assets/create/models/item/blaze_burner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/blaze_burner/block_with_blaze" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/blaze_cake.json b/src/generated/resources/assets/create/models/item/blaze_cake.json deleted file mode 100644 index 45905f613..000000000 --- a/src/generated/resources/assets/create/models/item/blaze_cake.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/blaze_cake" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/blaze_cake_base.json b/src/generated/resources/assets/create/models/item/blaze_cake_base.json deleted file mode 100644 index 9a210201a..000000000 --- a/src/generated/resources/assets/create/models/item/blaze_cake_base.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/blaze_cake_base" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/blue_seat.json b/src/generated/resources/assets/create/models/item/blue_seat.json deleted file mode 100644 index 421c18440..000000000 --- a/src/generated/resources/assets/create/models/item/blue_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/blue_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/blue_valve_handle.json b/src/generated/resources/assets/create/models/item/blue_valve_handle.json deleted file mode 100644 index 945f59227..000000000 --- a/src/generated/resources/assets/create/models/item/blue_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/blue_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_block.json b/src/generated/resources/assets/create/models/item/brass_block.json deleted file mode 100644 index 51b99542e..000000000 --- a/src/generated/resources/assets/create/models/item/brass_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/brass_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_casing.json b/src/generated/resources/assets/create/models/item/brass_casing.json deleted file mode 100644 index c020a8481..000000000 --- a/src/generated/resources/assets/create/models/item/brass_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/brass_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_encased_shaft.json b/src/generated/resources/assets/create/models/item/brass_encased_shaft.json deleted file mode 100644 index aa516d10d..000000000 --- a/src/generated/resources/assets/create/models/item/brass_encased_shaft.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/encased_shaft/item_brass" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_funnel.json b/src/generated/resources/assets/create/models/item/brass_funnel.json deleted file mode 100644 index 5a1542acb..000000000 --- a/src/generated/resources/assets/create/models/item/brass_funnel.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "create:block/funnel/item", - "textures": { - "particle": "create:block/brass_casing", - "7": "create:block/brass_funnel_plating", - "2": "create:block/brass_funnel_neutral", - "6": "create:block/brass_funnel", - "5": "create:block/brass_funnel_tall", - "3": "create:block/brass_funnel_back" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_hand.json b/src/generated/resources/assets/create/models/item/brass_hand.json deleted file mode 100644 index 6a64c4ae6..000000000 --- a/src/generated/resources/assets/create/models/item/brass_hand.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/brass_hand" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_ingot.json b/src/generated/resources/assets/create/models/item/brass_ingot.json deleted file mode 100644 index 224af9857..000000000 --- a/src/generated/resources/assets/create/models/item/brass_ingot.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/brass_ingot" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_nugget.json b/src/generated/resources/assets/create/models/item/brass_nugget.json deleted file mode 100644 index 370563f2a..000000000 --- a/src/generated/resources/assets/create/models/item/brass_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/brass_nugget" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_sheet.json b/src/generated/resources/assets/create/models/item/brass_sheet.json deleted file mode 100644 index 03b6a9b55..000000000 --- a/src/generated/resources/assets/create/models/item/brass_sheet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/brass_sheet" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brass_tunnel.json b/src/generated/resources/assets/create/models/item/brass_tunnel.json deleted file mode 100644 index b78dea50b..000000000 --- a/src/generated/resources/assets/create/models/item/brass_tunnel.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/belt_tunnel/item", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "particle": "create:block/brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brown_seat.json b/src/generated/resources/assets/create/models/item/brown_seat.json deleted file mode 100644 index fae33e56d..000000000 --- a/src/generated/resources/assets/create/models/item/brown_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/brown_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/brown_valve_handle.json b/src/generated/resources/assets/create/models/item/brown_valve_handle.json deleted file mode 100644 index ae74f78c1..000000000 --- a/src/generated/resources/assets/create/models/item/brown_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/brown_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/builders_tea.json b/src/generated/resources/assets/create/models/item/builders_tea.json deleted file mode 100644 index 5e647a839..000000000 --- a/src/generated/resources/assets/create/models/item/builders_tea.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/builders_tea" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cart_assembler.json b/src/generated/resources/assets/create/models/item/cart_assembler.json deleted file mode 100644 index d4c09b77e..000000000 --- a/src/generated/resources/assets/create/models/item/cart_assembler.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cart_assembler/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chest_minecart_contraption.json b/src/generated/resources/assets/create/models/item/chest_minecart_contraption.json deleted file mode 100644 index da91062ae..000000000 --- a/src/generated/resources/assets/create/models/item/chest_minecart_contraption.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/chest_minecart_contraption" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chiseled_dark_scoria.json b/src/generated/resources/assets/create/models/item/chiseled_dark_scoria.json deleted file mode 100644 index 63eb3e50b..000000000 --- a/src/generated/resources/assets/create/models/item/chiseled_dark_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chiseled_dark_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chiseled_dolomite.json b/src/generated/resources/assets/create/models/item/chiseled_dolomite.json deleted file mode 100644 index 8a042946f..000000000 --- a/src/generated/resources/assets/create/models/item/chiseled_dolomite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chiseled_dolomite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chiseled_gabbro.json b/src/generated/resources/assets/create/models/item/chiseled_gabbro.json deleted file mode 100644 index 66dac5e97..000000000 --- a/src/generated/resources/assets/create/models/item/chiseled_gabbro.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chiseled_gabbro" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chiseled_limestone.json b/src/generated/resources/assets/create/models/item/chiseled_limestone.json deleted file mode 100644 index 8eae57bd2..000000000 --- a/src/generated/resources/assets/create/models/item/chiseled_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chiseled_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chiseled_scoria.json b/src/generated/resources/assets/create/models/item/chiseled_scoria.json deleted file mode 100644 index 0e8e34956..000000000 --- a/src/generated/resources/assets/create/models/item/chiseled_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chiseled_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chiseled_weathered_limestone.json b/src/generated/resources/assets/create/models/item/chiseled_weathered_limestone.json deleted file mode 100644 index 5e0ef3478..000000000 --- a/src/generated/resources/assets/create/models/item/chiseled_weathered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chiseled_weathered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chocolate_bucket.json b/src/generated/resources/assets/create/models/item/chocolate_bucket.json deleted file mode 100644 index 755bc2583..000000000 --- a/src/generated/resources/assets/create/models/item/chocolate_bucket.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/chocolate_bucket" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chocolate_glazed_berries.json b/src/generated/resources/assets/create/models/item/chocolate_glazed_berries.json deleted file mode 100644 index 478c7fcd3..000000000 --- a/src/generated/resources/assets/create/models/item/chocolate_glazed_berries.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/chocolate_glazed_berries" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chute.json b/src/generated/resources/assets/create/models/item/chute.json deleted file mode 100644 index b894cc392..000000000 --- a/src/generated/resources/assets/create/models/item/chute.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chute/block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cinder_flour.json b/src/generated/resources/assets/create/models/item/cinder_flour.json deleted file mode 100644 index be3b38c30..000000000 --- a/src/generated/resources/assets/create/models/item/cinder_flour.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/cinder_flour" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/clockwork_bearing.json b/src/generated/resources/assets/create/models/item/clockwork_bearing.json deleted file mode 100644 index 908d1c4ce..000000000 --- a/src/generated/resources/assets/create/models/item/clockwork_bearing.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/bearing/item", - "textures": { - "top": "create:block/bearing_top", - "side": "create:block/clockwork_bearing_side", - "back": "create:block/brass_gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/clutch.json b/src/generated/resources/assets/create/models/item/clutch.json deleted file mode 100644 index 76818b044..000000000 --- a/src/generated/resources/assets/create/models/item/clutch.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/clutch/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cogwheel.json b/src/generated/resources/assets/create/models/item/cogwheel.json deleted file mode 100644 index 16377e46c..000000000 --- a/src/generated/resources/assets/create/models/item/cogwheel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cogwheel" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/content_observer.json b/src/generated/resources/assets/create/models/item/content_observer.json deleted file mode 100644 index 01c7ba5ef..000000000 --- a/src/generated/resources/assets/create/models/item/content_observer.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/content_observer/block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/controller_rail.json b/src/generated/resources/assets/create/models/item/controller_rail.json deleted file mode 100644 index 5bd031d95..000000000 --- a/src/generated/resources/assets/create/models/item/controller_rail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:block/controller_rail" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_backtank.json b/src/generated/resources/assets/create/models/item/copper_backtank.json deleted file mode 100644 index 67c8a0d7e..000000000 --- a/src/generated/resources/assets/create/models/item/copper_backtank.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_backtank/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_block.json b/src/generated/resources/assets/create/models/item/copper_block.json deleted file mode 100644 index 6ac071ba6..000000000 --- a/src/generated/resources/assets/create/models/item/copper_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized/copper_block_0" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_casing.json b/src/generated/resources/assets/create/models/item/copper_casing.json deleted file mode 100644 index 5d0413ea1..000000000 --- a/src/generated/resources/assets/create/models/item/copper_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_ingot.json b/src/generated/resources/assets/create/models/item/copper_ingot.json deleted file mode 100644 index a9c71cea3..000000000 --- a/src/generated/resources/assets/create/models/item/copper_ingot.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/copper_ingot" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_nugget.json b/src/generated/resources/assets/create/models/item/copper_nugget.json deleted file mode 100644 index 20d5a4e4c..000000000 --- a/src/generated/resources/assets/create/models/item/copper_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/copper_nugget" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_ore.json b/src/generated/resources/assets/create/models/item/copper_ore.json deleted file mode 100644 index d62f6c3ed..000000000 --- a/src/generated/resources/assets/create/models/item/copper_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized/copper_ore_0" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_sheet.json b/src/generated/resources/assets/create/models/item/copper_sheet.json deleted file mode 100644 index 58742180b..000000000 --- a/src/generated/resources/assets/create/models/item/copper_sheet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/copper_sheet" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_shingles.json b/src/generated/resources/assets/create/models/item/copper_shingles.json deleted file mode 100644 index 7d444aa35..000000000 --- a/src/generated/resources/assets/create/models/item/copper_shingles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized/copper_shingles_0" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_tiles.json b/src/generated/resources/assets/create/models/item/copper_tiles.json deleted file mode 100644 index 943873f28..000000000 --- a/src/generated/resources/assets/create/models/item/copper_tiles.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oxidized/copper_tiles_0" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/copper_valve_handle.json b/src/generated/resources/assets/create/models/item/copper_valve_handle.json deleted file mode 100644 index 45f592b30..000000000 --- a/src/generated/resources/assets/create/models/item/copper_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/copper_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crafter_slot_cover.json b/src/generated/resources/assets/create/models/item/crafter_slot_cover.json deleted file mode 100644 index fba6df3dc..000000000 --- a/src/generated/resources/assets/create/models/item/crafter_slot_cover.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crafter_slot_cover" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crafting_blueprint.json b/src/generated/resources/assets/create/models/item/crafting_blueprint.json deleted file mode 100644 index 94ec8d07a..000000000 --- a/src/generated/resources/assets/create/models/item/crafting_blueprint.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crafting_blueprint" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/creative_crate.json b/src/generated/resources/assets/create/models/item/creative_crate.json deleted file mode 100644 index 51efc3bf4..000000000 --- a/src/generated/resources/assets/create/models/item/creative_crate.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/crate/creative/single" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/creative_fluid_tank.json b/src/generated/resources/assets/create/models/item/creative_fluid_tank.json deleted file mode 100644 index d021bc2a6..000000000 --- a/src/generated/resources/assets/create/models/item/creative_fluid_tank.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_single_window", - "textures": { - "5": "create:block/creative_fluid_tank_window_single", - "1": "create:block/creative_fluid_tank", - "0": "create:block/creative_casing" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/creative_motor.json b/src/generated/resources/assets/create/models/item/creative_motor.json deleted file mode 100644 index c86d7f07c..000000000 --- a/src/generated/resources/assets/create/models/item/creative_motor.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/creative_motor/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crimson_window.json b/src/generated/resources/assets/create/models/item/crimson_window.json deleted file mode 100644 index cf612f7c0..000000000 --- a/src/generated/resources/assets/create/models/item/crimson_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/crimson_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crimson_window_pane.json b/src/generated/resources/assets/create/models/item/crimson_window_pane.json deleted file mode 100644 index 0fbbcc9ef..000000000 --- a/src/generated/resources/assets/create/models/item/crimson_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/crimson_window", - "edge": "minecraft:block/crimson_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_aluminum_ore.json b/src/generated/resources/assets/create/models/item/crushed_aluminum_ore.json deleted file mode 100644 index 662060f98..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_aluminum_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_aluminum_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_brass.json b/src/generated/resources/assets/create/models/item/crushed_brass.json deleted file mode 100644 index 3a3c18370..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_brass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_brass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_copper_ore.json b/src/generated/resources/assets/create/models/item/crushed_copper_ore.json deleted file mode 100644 index 500b00124..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_copper_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_copper_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_gold_ore.json b/src/generated/resources/assets/create/models/item/crushed_gold_ore.json deleted file mode 100644 index dc00a3611..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_gold_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_gold_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_iron_ore.json b/src/generated/resources/assets/create/models/item/crushed_iron_ore.json deleted file mode 100644 index 9ac971ece..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_iron_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_iron_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_lead_ore.json b/src/generated/resources/assets/create/models/item/crushed_lead_ore.json deleted file mode 100644 index 1c2c6911b..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_lead_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_lead_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_nickel_ore.json b/src/generated/resources/assets/create/models/item/crushed_nickel_ore.json deleted file mode 100644 index 4a47620f7..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_nickel_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_nickel_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_osmium_ore.json b/src/generated/resources/assets/create/models/item/crushed_osmium_ore.json deleted file mode 100644 index bffaad165..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_osmium_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_osmium_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_platinum_ore.json b/src/generated/resources/assets/create/models/item/crushed_platinum_ore.json deleted file mode 100644 index 6b2d3a4a1..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_platinum_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_platinum_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_quicksilver_ore.json b/src/generated/resources/assets/create/models/item/crushed_quicksilver_ore.json deleted file mode 100644 index 755ae5489..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_quicksilver_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_quicksilver_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_silver_ore.json b/src/generated/resources/assets/create/models/item/crushed_silver_ore.json deleted file mode 100644 index 98054fe18..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_silver_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_silver_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_tin_ore.json b/src/generated/resources/assets/create/models/item/crushed_tin_ore.json deleted file mode 100644 index 6e0bb6e65..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_tin_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_tin_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_uranium_ore.json b/src/generated/resources/assets/create/models/item/crushed_uranium_ore.json deleted file mode 100644 index b377d5915..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_uranium_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_uranium_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushed_zinc_ore.json b/src/generated/resources/assets/create/models/item/crushed_zinc_ore.json deleted file mode 100644 index ee85115fc..000000000 --- a/src/generated/resources/assets/create/models/item/crushed_zinc_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/crushed_zinc_ore" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/crushing_wheel.json b/src/generated/resources/assets/create/models/item/crushing_wheel.json deleted file mode 100644 index 5a8ad3362..000000000 --- a/src/generated/resources/assets/create/models/item/crushing_wheel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/crushing_wheel" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cuckoo_clock.json b/src/generated/resources/assets/create/models/item/cuckoo_clock.json deleted file mode 100644 index e7876338c..000000000 --- a/src/generated/resources/assets/create/models/item/cuckoo_clock.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cuckoo_clock/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cyan_seat.json b/src/generated/resources/assets/create/models/item/cyan_seat.json deleted file mode 100644 index 0ffbe72d0..000000000 --- a/src/generated/resources/assets/create/models/item/cyan_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cyan_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/cyan_valve_handle.json b/src/generated/resources/assets/create/models/item/cyan_valve_handle.json deleted file mode 100644 index 90274434f..000000000 --- a/src/generated/resources/assets/create/models/item/cyan_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cyan_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_oak_window.json b/src/generated/resources/assets/create/models/item/dark_oak_window.json deleted file mode 100644 index 2af27cc13..000000000 --- a/src/generated/resources/assets/create/models/item/dark_oak_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_oak_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_oak_window_pane.json b/src/generated/resources/assets/create/models/item/dark_oak_window_pane.json deleted file mode 100644 index 7afc3e18f..000000000 --- a/src/generated/resources/assets/create/models/item/dark_oak_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/dark_oak_window", - "edge": "minecraft:block/dark_oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria.json b/src/generated/resources/assets/create/models/item/dark_scoria.json deleted file mode 100644 index 8f9019794..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_bricks.json b/src/generated/resources/assets/create/models/item/dark_scoria_bricks.json deleted file mode 100644 index e9c723e96..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_scoria_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_bricks_slab.json b/src/generated/resources/assets/create/models/item/dark_scoria_bricks_slab.json deleted file mode 100644 index 85b78eaae..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_scoria_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_bricks_stairs.json b/src/generated/resources/assets/create/models/item/dark_scoria_bricks_stairs.json deleted file mode 100644 index 9f58feb19..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_scoria_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_bricks_wall.json b/src/generated/resources/assets/create/models/item/dark_scoria_bricks_wall.json deleted file mode 100644 index c9116f969..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dark_scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone.json b/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone.json deleted file mode 100644 index fe96f9487..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_scoria_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_slab.json deleted file mode 100644 index b86ca2139..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_scoria_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_stairs.json deleted file mode 100644 index 1d1083435..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_scoria_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_wall.json deleted file mode 100644 index e6ddde943..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dark_scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dark_scoria_pillar.json b/src/generated/resources/assets/create/models/item/dark_scoria_pillar.json deleted file mode 100644 index 4f992305f..000000000 --- a/src/generated/resources/assets/create/models/item/dark_scoria_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dark_scoria_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/deployer.json b/src/generated/resources/assets/create/models/item/deployer.json deleted file mode 100644 index bfa9ca452..000000000 --- a/src/generated/resources/assets/create/models/item/deployer.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/deployer/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/depot.json b/src/generated/resources/assets/create/models/item/depot.json deleted file mode 100644 index 6efbe20e3..000000000 --- a/src/generated/resources/assets/create/models/item/depot.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/depot/block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_bricks.json b/src/generated/resources/assets/create/models/item/diorite_bricks.json deleted file mode 100644 index 4f49fea75..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diorite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_bricks_slab.json b/src/generated/resources/assets/create/models/item/diorite_bricks_slab.json deleted file mode 100644 index 41b4a759d..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diorite_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_bricks_stairs.json b/src/generated/resources/assets/create/models/item/diorite_bricks_stairs.json deleted file mode 100644 index ad1bcb983..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diorite_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_bricks_wall.json b/src/generated/resources/assets/create/models/item/diorite_bricks_wall.json deleted file mode 100644 index e23e0a0e7..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/diorite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_cobblestone.json b/src/generated/resources/assets/create/models/item/diorite_cobblestone.json deleted file mode 100644 index c62e09b92..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diorite_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/diorite_cobblestone_slab.json deleted file mode 100644 index a8108c8c9..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diorite_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/diorite_cobblestone_stairs.json deleted file mode 100644 index e5e82405a..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diorite_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/diorite_cobblestone_wall.json deleted file mode 100644 index 01dbe8615..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/diorite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diorite_pillar.json b/src/generated/resources/assets/create/models/item/diorite_pillar.json deleted file mode 100644 index 61a987096..000000000 --- a/src/generated/resources/assets/create/models/item/diorite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diorite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diving_boots.json b/src/generated/resources/assets/create/models/item/diving_boots.json deleted file mode 100644 index 88c9dccb5..000000000 --- a/src/generated/resources/assets/create/models/item/diving_boots.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/diving_boots" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diving_helmet.json b/src/generated/resources/assets/create/models/item/diving_helmet.json deleted file mode 100644 index f287c2ca8..000000000 --- a/src/generated/resources/assets/create/models/item/diving_helmet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/diving_helmet" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite.json b/src/generated/resources/assets/create/models/item/dolomite.json deleted file mode 100644 index 8cdba5bd2..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dolomite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_bricks.json b/src/generated/resources/assets/create/models/item/dolomite_bricks.json deleted file mode 100644 index 3e68d9fde..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dolomite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_bricks_slab.json b/src/generated/resources/assets/create/models/item/dolomite_bricks_slab.json deleted file mode 100644 index c942c5e9a..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dolomite_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_bricks_stairs.json b/src/generated/resources/assets/create/models/item/dolomite_bricks_stairs.json deleted file mode 100644 index c42eec4e5..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dolomite_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_bricks_wall.json b/src/generated/resources/assets/create/models/item/dolomite_bricks_wall.json deleted file mode 100644 index d015378f4..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dolomite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_cobblestone.json b/src/generated/resources/assets/create/models/item/dolomite_cobblestone.json deleted file mode 100644 index 0d89297b7..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dolomite_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/dolomite_cobblestone_slab.json deleted file mode 100644 index 0724803a8..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dolomite_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/dolomite_cobblestone_stairs.json deleted file mode 100644 index 415da534e..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dolomite_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/dolomite_cobblestone_wall.json deleted file mode 100644 index 623290c80..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dolomite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dolomite_pillar.json b/src/generated/resources/assets/create/models/item/dolomite_pillar.json deleted file mode 100644 index f362375a5..000000000 --- a/src/generated/resources/assets/create/models/item/dolomite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/dolomite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/dough.json b/src/generated/resources/assets/create/models/item/dough.json deleted file mode 100644 index 068d60ef3..000000000 --- a/src/generated/resources/assets/create/models/item/dough.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/dough" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/electron_tube.json b/src/generated/resources/assets/create/models/item/electron_tube.json deleted file mode 100644 index 08e4327b3..000000000 --- a/src/generated/resources/assets/create/models/item/electron_tube.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/electron_tube" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/empty_blaze_burner.json b/src/generated/resources/assets/create/models/item/empty_blaze_burner.json deleted file mode 100644 index a1a7275c1..000000000 --- a/src/generated/resources/assets/create/models/item/empty_blaze_burner.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/blaze_burner/block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/empty_schematic.json b/src/generated/resources/assets/create/models/item/empty_schematic.json deleted file mode 100644 index f0069d92b..000000000 --- a/src/generated/resources/assets/create/models/item/empty_schematic.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/empty_schematic" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/encased_chain_drive.json b/src/generated/resources/assets/create/models/item/encased_chain_drive.json deleted file mode 100644 index d004e65b7..000000000 --- a/src/generated/resources/assets/create/models/item/encased_chain_drive.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/encased_chain_drive/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/encased_fan.json b/src/generated/resources/assets/create/models/item/encased_fan.json deleted file mode 100644 index 10ea40d1a..000000000 --- a/src/generated/resources/assets/create/models/item/encased_fan.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/encased_fan/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/extendo_grip.json b/src/generated/resources/assets/create/models/item/extendo_grip.json deleted file mode 100644 index 3ee31fefe..000000000 --- a/src/generated/resources/assets/create/models/item/extendo_grip.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:item/extendo_grip/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_andesite_bricks.json b/src/generated/resources/assets/create/models/item/fancy_andesite_bricks.json deleted file mode 100644 index ac4e89dc7..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_andesite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_andesite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_slab.json deleted file mode 100644 index c0951b279..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_andesite_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_stairs.json deleted file mode 100644 index e344f82c3..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_andesite_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_wall.json deleted file mode 100644 index 9212e2715..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_andesite_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/andesite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks.json b/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks.json deleted file mode 100644 index e08da3c8c..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_dark_scoria_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_slab.json deleted file mode 100644 index 318c27212..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_dark_scoria_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_stairs.json deleted file mode 100644 index fde659cec..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_dark_scoria_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_wall.json deleted file mode 100644 index 6d16e96a7..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_dark_scoria_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dark_scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_diorite_bricks.json b/src/generated/resources/assets/create/models/item/fancy_diorite_bricks.json deleted file mode 100644 index c7a149ec4..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_diorite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_diorite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_slab.json deleted file mode 100644 index 5346105db..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_diorite_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_stairs.json deleted file mode 100644 index 8d267cd85..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_diorite_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_wall.json deleted file mode 100644 index fadda19af..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_diorite_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/diorite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks.json b/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks.json deleted file mode 100644 index b0ae69428..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_dolomite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_slab.json deleted file mode 100644 index c004e7e39..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_dolomite_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_stairs.json deleted file mode 100644 index f9e5c80c8..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_dolomite_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_wall.json deleted file mode 100644 index 9012f5cb4..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_dolomite_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dolomite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks.json b/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks.json deleted file mode 100644 index 2ee629137..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_gabbro_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_slab.json deleted file mode 100644 index 15d687b53..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_gabbro_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_stairs.json deleted file mode 100644 index 357295a0a..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_gabbro_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_wall.json deleted file mode 100644 index f00dde568..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_gabbro_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/gabbro/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_granite_bricks.json b/src/generated/resources/assets/create/models/item/fancy_granite_bricks.json deleted file mode 100644 index 23b226b3b..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_granite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_granite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_granite_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_granite_bricks_slab.json deleted file mode 100644 index db575f6d5..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_granite_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_granite_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_granite_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_granite_bricks_stairs.json deleted file mode 100644 index 2aa186672..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_granite_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_granite_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_granite_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_granite_bricks_wall.json deleted file mode 100644 index 4960a0317..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_granite_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/granite/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_limestone_bricks.json b/src/generated/resources/assets/create/models/item/fancy_limestone_bricks.json deleted file mode 100644 index a2ec13171..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_limestone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_limestone_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_slab.json deleted file mode 100644 index c90abb092..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_limestone_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_stairs.json deleted file mode 100644 index 9f58421c2..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_limestone_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_wall.json deleted file mode 100644 index 3bd0eb30e..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_limestone_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_scoria_bricks.json b/src/generated/resources/assets/create/models/item/fancy_scoria_bricks.json deleted file mode 100644 index 06bb6dc46..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_scoria_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_scoria_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_slab.json deleted file mode 100644 index 34b64f619..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_scoria_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_stairs.json deleted file mode 100644 index 15560e414..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_scoria_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_wall.json deleted file mode 100644 index 8373286bd..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_scoria_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/scoria/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks.json b/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks.json deleted file mode 100644 index 661252ad1..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_weathered_limestone_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_slab.json b/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_slab.json deleted file mode 100644 index 149eee933..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_weathered_limestone_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_stairs.json b/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_stairs.json deleted file mode 100644 index 016bb6713..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fancy_weathered_limestone_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_wall.json b/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_wall.json deleted file mode 100644 index ef52714b0..000000000 --- a/src/generated/resources/assets/create/models/item/fancy_weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/weathered_limestone/fancy_bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fluid_pipe.json b/src/generated/resources/assets/create/models/item/fluid_pipe.json deleted file mode 100644 index 13fe9efd6..000000000 --- a/src/generated/resources/assets/create/models/item/fluid_pipe.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fluid_pipe/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fluid_tank.json b/src/generated/resources/assets/create/models/item/fluid_tank.json deleted file mode 100644 index d79ba75a5..000000000 --- a/src/generated/resources/assets/create/models/item/fluid_tank.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fluid_tank/block_single_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/fluid_valve.json b/src/generated/resources/assets/create/models/item/fluid_valve.json deleted file mode 100644 index b31acf275..000000000 --- a/src/generated/resources/assets/create/models/item/fluid_valve.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/fluid_valve/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/flywheel.json b/src/generated/resources/assets/create/models/item/flywheel.json deleted file mode 100644 index cfcb4e073..000000000 --- a/src/generated/resources/assets/create/models/item/flywheel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/flywheel/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/framed_glass.json b/src/generated/resources/assets/create/models/item/framed_glass.json deleted file mode 100644 index de6ed43ad..000000000 --- a/src/generated/resources/assets/create/models/item/framed_glass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/framed_glass", - "end": "create:block/palettes/framed_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/framed_glass_pane.json b/src/generated/resources/assets/create/models/item/framed_glass_pane.json deleted file mode 100644 index 49799f8ae..000000000 --- a/src/generated/resources/assets/create/models/item/framed_glass_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/furnace_engine.json b/src/generated/resources/assets/create/models/item/furnace_engine.json deleted file mode 100644 index c23656217..000000000 --- a/src/generated/resources/assets/create/models/item/furnace_engine.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/furnace_engine/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/furnace_minecart_contraption.json b/src/generated/resources/assets/create/models/item/furnace_minecart_contraption.json deleted file mode 100644 index 21bbabedf..000000000 --- a/src/generated/resources/assets/create/models/item/furnace_minecart_contraption.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/furnace_minecart_contraption" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro.json b/src/generated/resources/assets/create/models/item/gabbro.json deleted file mode 100644 index 376c5994f..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gabbro" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_bricks.json b/src/generated/resources/assets/create/models/item/gabbro_bricks.json deleted file mode 100644 index 978238372..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gabbro_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_bricks_slab.json b/src/generated/resources/assets/create/models/item/gabbro_bricks_slab.json deleted file mode 100644 index fc7113eda..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gabbro_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_bricks_stairs.json b/src/generated/resources/assets/create/models/item/gabbro_bricks_stairs.json deleted file mode 100644 index e48474d87..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gabbro_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_bricks_wall.json b/src/generated/resources/assets/create/models/item/gabbro_bricks_wall.json deleted file mode 100644 index d572a4072..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/gabbro/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_cobblestone.json b/src/generated/resources/assets/create/models/item/gabbro_cobblestone.json deleted file mode 100644 index 52862a94d..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gabbro_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/gabbro_cobblestone_slab.json deleted file mode 100644 index 01083f8ea..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gabbro_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/gabbro_cobblestone_stairs.json deleted file mode 100644 index a6173d862..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gabbro_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/gabbro_cobblestone_wall.json deleted file mode 100644 index 7485f92af..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/gabbro/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gabbro_pillar.json b/src/generated/resources/assets/create/models/item/gabbro_pillar.json deleted file mode 100644 index 12e9e95ab..000000000 --- a/src/generated/resources/assets/create/models/item/gabbro_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gabbro_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gantry_carriage.json b/src/generated/resources/assets/create/models/item/gantry_carriage.json deleted file mode 100644 index 7421b9883..000000000 --- a/src/generated/resources/assets/create/models/item/gantry_carriage.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gantry_carriage/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gantry_shaft.json b/src/generated/resources/assets/create/models/item/gantry_shaft.json deleted file mode 100644 index 926e58831..000000000 --- a/src/generated/resources/assets/create/models/item/gantry_shaft.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gantry_shaft/block_single" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gearbox.json b/src/generated/resources/assets/create/models/item/gearbox.json deleted file mode 100644 index 7fd5b83c9..000000000 --- a/src/generated/resources/assets/create/models/item/gearbox.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gearbox/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gearshift.json b/src/generated/resources/assets/create/models/item/gearshift.json deleted file mode 100644 index 2a7aab795..000000000 --- a/src/generated/resources/assets/create/models/item/gearshift.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gearshift/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/goggles.json b/src/generated/resources/assets/create/models/item/goggles.json deleted file mode 100644 index 6c6792901..000000000 --- a/src/generated/resources/assets/create/models/item/goggles.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/goggles" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/golden_sheet.json b/src/generated/resources/assets/create/models/item/golden_sheet.json deleted file mode 100644 index bb7dc034b..000000000 --- a/src/generated/resources/assets/create/models/item/golden_sheet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/golden_sheet" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_bricks.json b/src/generated/resources/assets/create/models/item/granite_bricks.json deleted file mode 100644 index 4d82fb17e..000000000 --- a/src/generated/resources/assets/create/models/item/granite_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/granite_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_bricks_slab.json b/src/generated/resources/assets/create/models/item/granite_bricks_slab.json deleted file mode 100644 index 40cb65615..000000000 --- a/src/generated/resources/assets/create/models/item/granite_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/granite_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_bricks_stairs.json b/src/generated/resources/assets/create/models/item/granite_bricks_stairs.json deleted file mode 100644 index 3fc7e1f1d..000000000 --- a/src/generated/resources/assets/create/models/item/granite_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/granite_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_bricks_wall.json b/src/generated/resources/assets/create/models/item/granite_bricks_wall.json deleted file mode 100644 index 22d8d7611..000000000 --- a/src/generated/resources/assets/create/models/item/granite_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/granite/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_cobblestone.json b/src/generated/resources/assets/create/models/item/granite_cobblestone.json deleted file mode 100644 index 14b49c22c..000000000 --- a/src/generated/resources/assets/create/models/item/granite_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/granite_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/granite_cobblestone_slab.json deleted file mode 100644 index 52a1bfa7d..000000000 --- a/src/generated/resources/assets/create/models/item/granite_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/granite_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/granite_cobblestone_stairs.json deleted file mode 100644 index dcbf16d7d..000000000 --- a/src/generated/resources/assets/create/models/item/granite_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/granite_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/granite_cobblestone_wall.json deleted file mode 100644 index e4f03ac8d..000000000 --- a/src/generated/resources/assets/create/models/item/granite_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/granite/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/granite_pillar.json b/src/generated/resources/assets/create/models/item/granite_pillar.json deleted file mode 100644 index 3dc582261..000000000 --- a/src/generated/resources/assets/create/models/item/granite_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/granite_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gray_seat.json b/src/generated/resources/assets/create/models/item/gray_seat.json deleted file mode 100644 index 46eba51d3..000000000 --- a/src/generated/resources/assets/create/models/item/gray_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gray_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/gray_valve_handle.json b/src/generated/resources/assets/create/models/item/gray_valve_handle.json deleted file mode 100644 index 8b9d7dc23..000000000 --- a/src/generated/resources/assets/create/models/item/gray_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gray_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/green_seat.json b/src/generated/resources/assets/create/models/item/green_seat.json deleted file mode 100644 index 0bd47c5e6..000000000 --- a/src/generated/resources/assets/create/models/item/green_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/green_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/green_valve_handle.json b/src/generated/resources/assets/create/models/item/green_valve_handle.json deleted file mode 100644 index 87f376e1d..000000000 --- a/src/generated/resources/assets/create/models/item/green_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/green_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/hand_crank.json b/src/generated/resources/assets/create/models/item/hand_crank.json deleted file mode 100644 index ccf268ad9..000000000 --- a/src/generated/resources/assets/create/models/item/hand_crank.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/hand_crank/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/handheld_worldshaper.json b/src/generated/resources/assets/create/models/item/handheld_worldshaper.json deleted file mode 100644 index 154ecd763..000000000 --- a/src/generated/resources/assets/create/models/item/handheld_worldshaper.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:item/handheld_worldshaper/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/honey_bucket.json b/src/generated/resources/assets/create/models/item/honey_bucket.json deleted file mode 100644 index 5e0db1bc5..000000000 --- a/src/generated/resources/assets/create/models/item/honey_bucket.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/honey_bucket" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/honeyed_apple.json b/src/generated/resources/assets/create/models/item/honeyed_apple.json deleted file mode 100644 index ddf252cc8..000000000 --- a/src/generated/resources/assets/create/models/item/honeyed_apple.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/honeyed_apple" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/horizontal_framed_glass.json b/src/generated/resources/assets/create/models/item/horizontal_framed_glass.json deleted file mode 100644 index f8ca1f72a..000000000 --- a/src/generated/resources/assets/create/models/item/horizontal_framed_glass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/horizontal_framed_glass", - "end": "create:block/palettes/framed_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/horizontal_framed_glass_pane.json b/src/generated/resources/assets/create/models/item/horizontal_framed_glass_pane.json deleted file mode 100644 index 277da1008..000000000 --- a/src/generated/resources/assets/create/models/item/horizontal_framed_glass_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/horizontal_framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/hose_pulley.json b/src/generated/resources/assets/create/models/item/hose_pulley.json deleted file mode 100644 index 234080247..000000000 --- a/src/generated/resources/assets/create/models/item/hose_pulley.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/hose_pulley/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/integrated_circuit.json b/src/generated/resources/assets/create/models/item/integrated_circuit.json deleted file mode 100644 index e06638fff..000000000 --- a/src/generated/resources/assets/create/models/item/integrated_circuit.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/integrated_circuit" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/iron_sheet.json b/src/generated/resources/assets/create/models/item/iron_sheet.json deleted file mode 100644 index 18b461c93..000000000 --- a/src/generated/resources/assets/create/models/item/iron_sheet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/iron_sheet" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/item_drain.json b/src/generated/resources/assets/create/models/item/item_drain.json deleted file mode 100644 index 9490da25f..000000000 --- a/src/generated/resources/assets/create/models/item/item_drain.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/item_drain" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/jungle_window.json b/src/generated/resources/assets/create/models/item/jungle_window.json deleted file mode 100644 index 8f7e813a8..000000000 --- a/src/generated/resources/assets/create/models/item/jungle_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/jungle_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/jungle_window_pane.json b/src/generated/resources/assets/create/models/item/jungle_window_pane.json deleted file mode 100644 index 0471009c7..000000000 --- a/src/generated/resources/assets/create/models/item/jungle_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/jungle_window", - "edge": "minecraft:block/jungle_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/lapis_sheet.json b/src/generated/resources/assets/create/models/item/lapis_sheet.json deleted file mode 100644 index bf1867e80..000000000 --- a/src/generated/resources/assets/create/models/item/lapis_sheet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/lapis_sheet" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/large_cogwheel.json b/src/generated/resources/assets/create/models/item/large_cogwheel.json deleted file mode 100644 index 1d97dd7b9..000000000 --- a/src/generated/resources/assets/create/models/item/large_cogwheel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/large_cogwheel" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_andesite.json b/src/generated/resources/assets/create/models/item/layered_andesite.json deleted file mode 100644 index 1694af8ea..000000000 --- a/src/generated/resources/assets/create/models/item/layered_andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_andesite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_dark_scoria.json b/src/generated/resources/assets/create/models/item/layered_dark_scoria.json deleted file mode 100644 index 6a7ae223c..000000000 --- a/src/generated/resources/assets/create/models/item/layered_dark_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_dark_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_diorite.json b/src/generated/resources/assets/create/models/item/layered_diorite.json deleted file mode 100644 index e68fc491f..000000000 --- a/src/generated/resources/assets/create/models/item/layered_diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_diorite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_dolomite.json b/src/generated/resources/assets/create/models/item/layered_dolomite.json deleted file mode 100644 index 0c0068768..000000000 --- a/src/generated/resources/assets/create/models/item/layered_dolomite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_dolomite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_gabbro.json b/src/generated/resources/assets/create/models/item/layered_gabbro.json deleted file mode 100644 index dfed105f2..000000000 --- a/src/generated/resources/assets/create/models/item/layered_gabbro.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_gabbro" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_granite.json b/src/generated/resources/assets/create/models/item/layered_granite.json deleted file mode 100644 index d50dd2106..000000000 --- a/src/generated/resources/assets/create/models/item/layered_granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_granite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_limestone.json b/src/generated/resources/assets/create/models/item/layered_limestone.json deleted file mode 100644 index e27f51da8..000000000 --- a/src/generated/resources/assets/create/models/item/layered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_scoria.json b/src/generated/resources/assets/create/models/item/layered_scoria.json deleted file mode 100644 index 845b7c694..000000000 --- a/src/generated/resources/assets/create/models/item/layered_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/layered_weathered_limestone.json b/src/generated/resources/assets/create/models/item/layered_weathered_limestone.json deleted file mode 100644 index f44ec5f43..000000000 --- a/src/generated/resources/assets/create/models/item/layered_weathered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/layered_weathered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/light_blue_seat.json b/src/generated/resources/assets/create/models/item/light_blue_seat.json deleted file mode 100644 index be049f6d1..000000000 --- a/src/generated/resources/assets/create/models/item/light_blue_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/light_blue_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/light_blue_valve_handle.json b/src/generated/resources/assets/create/models/item/light_blue_valve_handle.json deleted file mode 100644 index b9a68f054..000000000 --- a/src/generated/resources/assets/create/models/item/light_blue_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/light_blue_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/light_gray_seat.json b/src/generated/resources/assets/create/models/item/light_gray_seat.json deleted file mode 100644 index 6552e78f7..000000000 --- a/src/generated/resources/assets/create/models/item/light_gray_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/light_gray_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/light_gray_valve_handle.json b/src/generated/resources/assets/create/models/item/light_gray_valve_handle.json deleted file mode 100644 index 1b3bd3a5d..000000000 --- a/src/generated/resources/assets/create/models/item/light_gray_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/light_gray_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/lime_seat.json b/src/generated/resources/assets/create/models/item/lime_seat.json deleted file mode 100644 index 68264f55d..000000000 --- a/src/generated/resources/assets/create/models/item/lime_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/lime_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/lime_valve_handle.json b/src/generated/resources/assets/create/models/item/lime_valve_handle.json deleted file mode 100644 index 98d457c68..000000000 --- a/src/generated/resources/assets/create/models/item/lime_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/lime_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limesand.json b/src/generated/resources/assets/create/models/item/limesand.json deleted file mode 100644 index 120a20239..000000000 --- a/src/generated/resources/assets/create/models/item/limesand.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limesand" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone.json b/src/generated/resources/assets/create/models/item/limestone.json deleted file mode 100644 index 450a981f7..000000000 --- a/src/generated/resources/assets/create/models/item/limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_bricks.json b/src/generated/resources/assets/create/models/item/limestone_bricks.json deleted file mode 100644 index c79154b59..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_bricks_slab.json b/src/generated/resources/assets/create/models/item/limestone_bricks_slab.json deleted file mode 100644 index 15befe954..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_bricks_stairs.json b/src/generated/resources/assets/create/models/item/limestone_bricks_stairs.json deleted file mode 100644 index 909b79fef..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_bricks_wall.json b/src/generated/resources/assets/create/models/item/limestone_bricks_wall.json deleted file mode 100644 index dc97280e7..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_cobblestone.json b/src/generated/resources/assets/create/models/item/limestone_cobblestone.json deleted file mode 100644 index 1908a8f44..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/limestone_cobblestone_slab.json deleted file mode 100644 index d11b1310a..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/limestone_cobblestone_stairs.json deleted file mode 100644 index 373f11605..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/limestone_cobblestone_wall.json deleted file mode 100644 index da21fcc12..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/limestone_pillar.json b/src/generated/resources/assets/create/models/item/limestone_pillar.json deleted file mode 100644 index ed8117d7e..000000000 --- a/src/generated/resources/assets/create/models/item/limestone_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/limestone_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/linear_chassis.json b/src/generated/resources/assets/create/models/item/linear_chassis.json deleted file mode 100644 index 9c4cc447d..000000000 --- a/src/generated/resources/assets/create/models/item/linear_chassis.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/linear_chassis" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/linked_controller.json b/src/generated/resources/assets/create/models/item/linked_controller.json deleted file mode 100644 index 6bf114f21..000000000 --- a/src/generated/resources/assets/create/models/item/linked_controller.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:item/linked_controller/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/magenta_seat.json b/src/generated/resources/assets/create/models/item/magenta_seat.json deleted file mode 100644 index ac661a20a..000000000 --- a/src/generated/resources/assets/create/models/item/magenta_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/magenta_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/magenta_valve_handle.json b/src/generated/resources/assets/create/models/item/magenta_valve_handle.json deleted file mode 100644 index 14b0c57d0..000000000 --- a/src/generated/resources/assets/create/models/item/magenta_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/magenta_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_arm.json b/src/generated/resources/assets/create/models/item/mechanical_arm.json deleted file mode 100644 index 4f8980489..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_arm.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_arm/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_bearing.json b/src/generated/resources/assets/create/models/item/mechanical_bearing.json deleted file mode 100644 index 6f845950f..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_bearing.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/bearing/item", - "textures": { - "top": "create:block/bearing_top", - "side": "create:block/mechanical_bearing_side", - "back": "create:block/gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_crafter.json b/src/generated/resources/assets/create/models/item/mechanical_crafter.json deleted file mode 100644 index ea103c495..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_crafter.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_crafter/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_drill.json b/src/generated/resources/assets/create/models/item/mechanical_drill.json deleted file mode 100644 index 8cb85f063..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_drill.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_drill/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_harvester.json b/src/generated/resources/assets/create/models/item/mechanical_harvester.json deleted file mode 100644 index 2c63c7cc2..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_harvester.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_harvester/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_mixer.json b/src/generated/resources/assets/create/models/item/mechanical_mixer.json deleted file mode 100644 index 710f187de..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_mixer.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_mixer/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_piston.json b/src/generated/resources/assets/create/models/item/mechanical_piston.json deleted file mode 100644 index 2d1259863..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_piston.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_piston/normal/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_plough.json b/src/generated/resources/assets/create/models/item/mechanical_plough.json deleted file mode 100644 index 4b2ab31f2..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_plough.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_plough" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_press.json b/src/generated/resources/assets/create/models/item/mechanical_press.json deleted file mode 100644 index dd30f1e9c..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_press.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_press/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_pump.json b/src/generated/resources/assets/create/models/item/mechanical_pump.json deleted file mode 100644 index 45f76ceb4..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_pump.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_pump/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mechanical_saw.json b/src/generated/resources/assets/create/models/item/mechanical_saw.json deleted file mode 100644 index 2811abfa3..000000000 --- a/src/generated/resources/assets/create/models/item/mechanical_saw.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_saw/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/metal_bracket.json b/src/generated/resources/assets/create/models/item/metal_bracket.json deleted file mode 100644 index eb6f0f14c..000000000 --- a/src/generated/resources/assets/create/models/item/metal_bracket.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/item", - "textures": { - "bracket": "create:block/bracket_metal", - "plate": "create:block/bracket_plate_metal" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/millstone.json b/src/generated/resources/assets/create/models/item/millstone.json deleted file mode 100644 index c30e0f930..000000000 --- a/src/generated/resources/assets/create/models/item/millstone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/millstone/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/minecart_contraption.json b/src/generated/resources/assets/create/models/item/minecart_contraption.json deleted file mode 100644 index a06a63dd8..000000000 --- a/src/generated/resources/assets/create/models/item/minecart_contraption.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/minecart_contraption" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/minecart_coupling.json b/src/generated/resources/assets/create/models/item/minecart_coupling.json deleted file mode 100644 index ea985d2e2..000000000 --- a/src/generated/resources/assets/create/models/item/minecart_coupling.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/minecart_coupling" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_andesite.json b/src/generated/resources/assets/create/models/item/mossy_andesite.json deleted file mode 100644 index 403ae24bf..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_andesite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_dark_scoria.json b/src/generated/resources/assets/create/models/item/mossy_dark_scoria.json deleted file mode 100644 index c2adc46fb..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_dark_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_dark_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_diorite.json b/src/generated/resources/assets/create/models/item/mossy_diorite.json deleted file mode 100644 index 53bb0dd86..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_diorite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_dolomite.json b/src/generated/resources/assets/create/models/item/mossy_dolomite.json deleted file mode 100644 index fa6695ff8..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_dolomite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_dolomite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_gabbro.json b/src/generated/resources/assets/create/models/item/mossy_gabbro.json deleted file mode 100644 index 5e1f13e9b..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_gabbro.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_gabbro" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_granite.json b/src/generated/resources/assets/create/models/item/mossy_granite.json deleted file mode 100644 index 62f8f860c..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_granite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_limestone.json b/src/generated/resources/assets/create/models/item/mossy_limestone.json deleted file mode 100644 index 0c0176555..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_scoria.json b/src/generated/resources/assets/create/models/item/mossy_scoria.json deleted file mode 100644 index 59c045ce0..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mossy_weathered_limestone.json b/src/generated/resources/assets/create/models/item/mossy_weathered_limestone.json deleted file mode 100644 index b6a696d7e..000000000 --- a/src/generated/resources/assets/create/models/item/mossy_weathered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mossy_weathered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/mysterious_cuckoo_clock.json b/src/generated/resources/assets/create/models/item/mysterious_cuckoo_clock.json deleted file mode 100644 index e7876338c..000000000 --- a/src/generated/resources/assets/create/models/item/mysterious_cuckoo_clock.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/cuckoo_clock/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/natural_scoria.json b/src/generated/resources/assets/create/models/item/natural_scoria.json deleted file mode 100644 index 52e3b5387..000000000 --- a/src/generated/resources/assets/create/models/item/natural_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/natural_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/nixie_tube.json b/src/generated/resources/assets/create/models/item/nixie_tube.json deleted file mode 100644 index 4db27f523..000000000 --- a/src/generated/resources/assets/create/models/item/nixie_tube.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/nixie_tube/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/nozzle.json b/src/generated/resources/assets/create/models/item/nozzle.json deleted file mode 100644 index 18fbc536c..000000000 --- a/src/generated/resources/assets/create/models/item/nozzle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/nozzle/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oak_window.json b/src/generated/resources/assets/create/models/item/oak_window.json deleted file mode 100644 index df92205b6..000000000 --- a/src/generated/resources/assets/create/models/item/oak_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/oak_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/oak_window_pane.json b/src/generated/resources/assets/create/models/item/oak_window_pane.json deleted file mode 100644 index 7e33b9253..000000000 --- a/src/generated/resources/assets/create/models/item/oak_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/oak_window", - "edge": "minecraft:block/oak_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/orange_seat.json b/src/generated/resources/assets/create/models/item/orange_seat.json deleted file mode 100644 index e64ba3711..000000000 --- a/src/generated/resources/assets/create/models/item/orange_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/orange_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/orange_valve_handle.json b/src/generated/resources/assets/create/models/item/orange_valve_handle.json deleted file mode 100644 index e8d275537..000000000 --- a/src/generated/resources/assets/create/models/item/orange_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/orange_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/ornate_iron_window.json b/src/generated/resources/assets/create/models/item/ornate_iron_window.json deleted file mode 100644 index 634eb708f..000000000 --- a/src/generated/resources/assets/create/models/item/ornate_iron_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/ornate_iron_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/ornate_iron_window_pane.json b/src/generated/resources/assets/create/models/item/ornate_iron_window_pane.json deleted file mode 100644 index 68f264fee..000000000 --- a/src/generated/resources/assets/create/models/item/ornate_iron_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/ornate_iron_window", - "edge": "create:block/palettes/ornate_iron_window_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_andesite.json b/src/generated/resources/assets/create/models/item/overgrown_andesite.json deleted file mode 100644 index ba054bbb5..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_andesite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_dark_scoria.json b/src/generated/resources/assets/create/models/item/overgrown_dark_scoria.json deleted file mode 100644 index 64b244a8f..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_dark_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_dark_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_diorite.json b/src/generated/resources/assets/create/models/item/overgrown_diorite.json deleted file mode 100644 index 41ecb1b5b..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_diorite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_dolomite.json b/src/generated/resources/assets/create/models/item/overgrown_dolomite.json deleted file mode 100644 index e8b557af6..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_dolomite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_dolomite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_gabbro.json b/src/generated/resources/assets/create/models/item/overgrown_gabbro.json deleted file mode 100644 index cec0552ce..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_gabbro.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_gabbro" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_granite.json b/src/generated/resources/assets/create/models/item/overgrown_granite.json deleted file mode 100644 index b8151d041..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_granite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_limestone.json b/src/generated/resources/assets/create/models/item/overgrown_limestone.json deleted file mode 100644 index cd451aecd..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_scoria.json b/src/generated/resources/assets/create/models/item/overgrown_scoria.json deleted file mode 100644 index 07ec71bae..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/overgrown_weathered_limestone.json b/src/generated/resources/assets/create/models/item/overgrown_weathered_limestone.json deleted file mode 100644 index 667b0583f..000000000 --- a/src/generated/resources/assets/create/models/item/overgrown_weathered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/overgrown_weathered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_andesite.json b/src/generated/resources/assets/create/models/item/paved_andesite.json deleted file mode 100644 index bbc863c98..000000000 --- a/src/generated/resources/assets/create/models/item/paved_andesite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_andesite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_andesite_slab.json b/src/generated/resources/assets/create/models/item/paved_andesite_slab.json deleted file mode 100644 index 6347dde1e..000000000 --- a/src/generated/resources/assets/create/models/item/paved_andesite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_andesite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_andesite_stairs.json b/src/generated/resources/assets/create/models/item/paved_andesite_stairs.json deleted file mode 100644 index c4f29f731..000000000 --- a/src/generated/resources/assets/create/models/item/paved_andesite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_andesite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_andesite_wall.json b/src/generated/resources/assets/create/models/item/paved_andesite_wall.json deleted file mode 100644 index f5bea0ee5..000000000 --- a/src/generated/resources/assets/create/models/item/paved_andesite_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/andesite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_dark_scoria.json b/src/generated/resources/assets/create/models/item/paved_dark_scoria.json deleted file mode 100644 index bbc4620da..000000000 --- a/src/generated/resources/assets/create/models/item/paved_dark_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_dark_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_dark_scoria_slab.json b/src/generated/resources/assets/create/models/item/paved_dark_scoria_slab.json deleted file mode 100644 index 49d17ec5f..000000000 --- a/src/generated/resources/assets/create/models/item/paved_dark_scoria_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_dark_scoria_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_dark_scoria_stairs.json b/src/generated/resources/assets/create/models/item/paved_dark_scoria_stairs.json deleted file mode 100644 index 3a1b10d27..000000000 --- a/src/generated/resources/assets/create/models/item/paved_dark_scoria_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_dark_scoria_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_dark_scoria_wall.json b/src/generated/resources/assets/create/models/item/paved_dark_scoria_wall.json deleted file mode 100644 index 6088ca8c6..000000000 --- a/src/generated/resources/assets/create/models/item/paved_dark_scoria_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dark_scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_diorite.json b/src/generated/resources/assets/create/models/item/paved_diorite.json deleted file mode 100644 index 49a6d3393..000000000 --- a/src/generated/resources/assets/create/models/item/paved_diorite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_diorite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_diorite_slab.json b/src/generated/resources/assets/create/models/item/paved_diorite_slab.json deleted file mode 100644 index b1da284bf..000000000 --- a/src/generated/resources/assets/create/models/item/paved_diorite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_diorite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_diorite_stairs.json b/src/generated/resources/assets/create/models/item/paved_diorite_stairs.json deleted file mode 100644 index eab652524..000000000 --- a/src/generated/resources/assets/create/models/item/paved_diorite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_diorite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_diorite_wall.json b/src/generated/resources/assets/create/models/item/paved_diorite_wall.json deleted file mode 100644 index 3d8a67adb..000000000 --- a/src/generated/resources/assets/create/models/item/paved_diorite_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/diorite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_dolomite.json b/src/generated/resources/assets/create/models/item/paved_dolomite.json deleted file mode 100644 index e87d5fa15..000000000 --- a/src/generated/resources/assets/create/models/item/paved_dolomite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_dolomite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_dolomite_slab.json b/src/generated/resources/assets/create/models/item/paved_dolomite_slab.json deleted file mode 100644 index 35461e2d5..000000000 --- a/src/generated/resources/assets/create/models/item/paved_dolomite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_dolomite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_dolomite_stairs.json b/src/generated/resources/assets/create/models/item/paved_dolomite_stairs.json deleted file mode 100644 index 641ba8575..000000000 --- a/src/generated/resources/assets/create/models/item/paved_dolomite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_dolomite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_dolomite_wall.json b/src/generated/resources/assets/create/models/item/paved_dolomite_wall.json deleted file mode 100644 index 94185b5e1..000000000 --- a/src/generated/resources/assets/create/models/item/paved_dolomite_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dolomite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_gabbro.json b/src/generated/resources/assets/create/models/item/paved_gabbro.json deleted file mode 100644 index 9eb797b37..000000000 --- a/src/generated/resources/assets/create/models/item/paved_gabbro.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_gabbro" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_gabbro_slab.json b/src/generated/resources/assets/create/models/item/paved_gabbro_slab.json deleted file mode 100644 index 157c3c1a4..000000000 --- a/src/generated/resources/assets/create/models/item/paved_gabbro_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_gabbro_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_gabbro_stairs.json b/src/generated/resources/assets/create/models/item/paved_gabbro_stairs.json deleted file mode 100644 index 2103d88f5..000000000 --- a/src/generated/resources/assets/create/models/item/paved_gabbro_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_gabbro_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_gabbro_wall.json b/src/generated/resources/assets/create/models/item/paved_gabbro_wall.json deleted file mode 100644 index 2e8f81134..000000000 --- a/src/generated/resources/assets/create/models/item/paved_gabbro_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/gabbro/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_granite.json b/src/generated/resources/assets/create/models/item/paved_granite.json deleted file mode 100644 index 572320193..000000000 --- a/src/generated/resources/assets/create/models/item/paved_granite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_granite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_granite_slab.json b/src/generated/resources/assets/create/models/item/paved_granite_slab.json deleted file mode 100644 index 23cc4fc82..000000000 --- a/src/generated/resources/assets/create/models/item/paved_granite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_granite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_granite_stairs.json b/src/generated/resources/assets/create/models/item/paved_granite_stairs.json deleted file mode 100644 index 8dd297645..000000000 --- a/src/generated/resources/assets/create/models/item/paved_granite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_granite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_granite_wall.json b/src/generated/resources/assets/create/models/item/paved_granite_wall.json deleted file mode 100644 index 8cbd34ea6..000000000 --- a/src/generated/resources/assets/create/models/item/paved_granite_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/granite/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_limestone.json b/src/generated/resources/assets/create/models/item/paved_limestone.json deleted file mode 100644 index 713eecf10..000000000 --- a/src/generated/resources/assets/create/models/item/paved_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_limestone_slab.json b/src/generated/resources/assets/create/models/item/paved_limestone_slab.json deleted file mode 100644 index 78ac4cdd8..000000000 --- a/src/generated/resources/assets/create/models/item/paved_limestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_limestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_limestone_stairs.json b/src/generated/resources/assets/create/models/item/paved_limestone_stairs.json deleted file mode 100644 index 04efd01e8..000000000 --- a/src/generated/resources/assets/create/models/item/paved_limestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_limestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_limestone_wall.json b/src/generated/resources/assets/create/models/item/paved_limestone_wall.json deleted file mode 100644 index d8e58c268..000000000 --- a/src/generated/resources/assets/create/models/item/paved_limestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_scoria.json b/src/generated/resources/assets/create/models/item/paved_scoria.json deleted file mode 100644 index 6b5ae6701..000000000 --- a/src/generated/resources/assets/create/models/item/paved_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_scoria_slab.json b/src/generated/resources/assets/create/models/item/paved_scoria_slab.json deleted file mode 100644 index 13a4e2115..000000000 --- a/src/generated/resources/assets/create/models/item/paved_scoria_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_scoria_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_scoria_stairs.json b/src/generated/resources/assets/create/models/item/paved_scoria_stairs.json deleted file mode 100644 index 7e2b812c6..000000000 --- a/src/generated/resources/assets/create/models/item/paved_scoria_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_scoria_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_scoria_wall.json b/src/generated/resources/assets/create/models/item/paved_scoria_wall.json deleted file mode 100644 index 80def3e01..000000000 --- a/src/generated/resources/assets/create/models/item/paved_scoria_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/scoria/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_weathered_limestone.json b/src/generated/resources/assets/create/models/item/paved_weathered_limestone.json deleted file mode 100644 index e4c92b252..000000000 --- a/src/generated/resources/assets/create/models/item/paved_weathered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_weathered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_weathered_limestone_slab.json b/src/generated/resources/assets/create/models/item/paved_weathered_limestone_slab.json deleted file mode 100644 index 7aee21c80..000000000 --- a/src/generated/resources/assets/create/models/item/paved_weathered_limestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_weathered_limestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_weathered_limestone_stairs.json b/src/generated/resources/assets/create/models/item/paved_weathered_limestone_stairs.json deleted file mode 100644 index 7769e8378..000000000 --- a/src/generated/resources/assets/create/models/item/paved_weathered_limestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/paved_weathered_limestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/paved_weathered_limestone_wall.json b/src/generated/resources/assets/create/models/item/paved_weathered_limestone_wall.json deleted file mode 100644 index cedcc8a25..000000000 --- a/src/generated/resources/assets/create/models/item/paved_weathered_limestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/weathered_limestone/paved" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/pink_seat.json b/src/generated/resources/assets/create/models/item/pink_seat.json deleted file mode 100644 index 808bca5d0..000000000 --- a/src/generated/resources/assets/create/models/item/pink_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/pink_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/pink_valve_handle.json b/src/generated/resources/assets/create/models/item/pink_valve_handle.json deleted file mode 100644 index 2b7db5fa0..000000000 --- a/src/generated/resources/assets/create/models/item/pink_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/pink_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/piston_extension_pole.json b/src/generated/resources/assets/create/models/item/piston_extension_pole.json deleted file mode 100644 index c90cb5736..000000000 --- a/src/generated/resources/assets/create/models/item/piston_extension_pole.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/piston_extension_pole" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_dark_scoria.json b/src/generated/resources/assets/create/models/item/polished_dark_scoria.json deleted file mode 100644 index 92736cbfd..000000000 --- a/src/generated/resources/assets/create/models/item/polished_dark_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_dark_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_dark_scoria_slab.json b/src/generated/resources/assets/create/models/item/polished_dark_scoria_slab.json deleted file mode 100644 index a677adbed..000000000 --- a/src/generated/resources/assets/create/models/item/polished_dark_scoria_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_dark_scoria_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_dark_scoria_stairs.json b/src/generated/resources/assets/create/models/item/polished_dark_scoria_stairs.json deleted file mode 100644 index 6a06849fa..000000000 --- a/src/generated/resources/assets/create/models/item/polished_dark_scoria_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_dark_scoria_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_dark_scoria_wall.json b/src/generated/resources/assets/create/models/item/polished_dark_scoria_wall.json deleted file mode 100644 index b15f0f6c7..000000000 --- a/src/generated/resources/assets/create/models/item/polished_dark_scoria_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dark_scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_dolomite.json b/src/generated/resources/assets/create/models/item/polished_dolomite.json deleted file mode 100644 index b2f190e15..000000000 --- a/src/generated/resources/assets/create/models/item/polished_dolomite.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_dolomite" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_dolomite_slab.json b/src/generated/resources/assets/create/models/item/polished_dolomite_slab.json deleted file mode 100644 index 371548103..000000000 --- a/src/generated/resources/assets/create/models/item/polished_dolomite_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_dolomite_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_dolomite_stairs.json b/src/generated/resources/assets/create/models/item/polished_dolomite_stairs.json deleted file mode 100644 index caa5447e0..000000000 --- a/src/generated/resources/assets/create/models/item/polished_dolomite_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_dolomite_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_dolomite_wall.json b/src/generated/resources/assets/create/models/item/polished_dolomite_wall.json deleted file mode 100644 index 2de684954..000000000 --- a/src/generated/resources/assets/create/models/item/polished_dolomite_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/dolomite/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_gabbro.json b/src/generated/resources/assets/create/models/item/polished_gabbro.json deleted file mode 100644 index db5e82a86..000000000 --- a/src/generated/resources/assets/create/models/item/polished_gabbro.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_gabbro" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_gabbro_slab.json b/src/generated/resources/assets/create/models/item/polished_gabbro_slab.json deleted file mode 100644 index 62f2bf69b..000000000 --- a/src/generated/resources/assets/create/models/item/polished_gabbro_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_gabbro_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_gabbro_stairs.json b/src/generated/resources/assets/create/models/item/polished_gabbro_stairs.json deleted file mode 100644 index 85c886e77..000000000 --- a/src/generated/resources/assets/create/models/item/polished_gabbro_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_gabbro_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_gabbro_wall.json b/src/generated/resources/assets/create/models/item/polished_gabbro_wall.json deleted file mode 100644 index 205915383..000000000 --- a/src/generated/resources/assets/create/models/item/polished_gabbro_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/gabbro/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_limestone.json b/src/generated/resources/assets/create/models/item/polished_limestone.json deleted file mode 100644 index e0ba78145..000000000 --- a/src/generated/resources/assets/create/models/item/polished_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_limestone_slab.json b/src/generated/resources/assets/create/models/item/polished_limestone_slab.json deleted file mode 100644 index 0a7cbc630..000000000 --- a/src/generated/resources/assets/create/models/item/polished_limestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_limestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_limestone_stairs.json b/src/generated/resources/assets/create/models/item/polished_limestone_stairs.json deleted file mode 100644 index 7f7e23d4f..000000000 --- a/src/generated/resources/assets/create/models/item/polished_limestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_limestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_limestone_wall.json b/src/generated/resources/assets/create/models/item/polished_limestone_wall.json deleted file mode 100644 index c9f4231a0..000000000 --- a/src/generated/resources/assets/create/models/item/polished_limestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_rose_quartz.json b/src/generated/resources/assets/create/models/item/polished_rose_quartz.json deleted file mode 100644 index cb17e89fc..000000000 --- a/src/generated/resources/assets/create/models/item/polished_rose_quartz.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/polished_rose_quartz" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_scoria.json b/src/generated/resources/assets/create/models/item/polished_scoria.json deleted file mode 100644 index a98f34e4a..000000000 --- a/src/generated/resources/assets/create/models/item/polished_scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_scoria_slab.json b/src/generated/resources/assets/create/models/item/polished_scoria_slab.json deleted file mode 100644 index 2cb3261fd..000000000 --- a/src/generated/resources/assets/create/models/item/polished_scoria_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_scoria_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_scoria_stairs.json b/src/generated/resources/assets/create/models/item/polished_scoria_stairs.json deleted file mode 100644 index 0aa11e6b1..000000000 --- a/src/generated/resources/assets/create/models/item/polished_scoria_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_scoria_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_scoria_wall.json b/src/generated/resources/assets/create/models/item/polished_scoria_wall.json deleted file mode 100644 index b905d6c4b..000000000 --- a/src/generated/resources/assets/create/models/item/polished_scoria_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/scoria/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_weathered_limestone.json b/src/generated/resources/assets/create/models/item/polished_weathered_limestone.json deleted file mode 100644 index f951a8927..000000000 --- a/src/generated/resources/assets/create/models/item/polished_weathered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_weathered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_weathered_limestone_slab.json b/src/generated/resources/assets/create/models/item/polished_weathered_limestone_slab.json deleted file mode 100644 index f6412648e..000000000 --- a/src/generated/resources/assets/create/models/item/polished_weathered_limestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_weathered_limestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_weathered_limestone_stairs.json b/src/generated/resources/assets/create/models/item/polished_weathered_limestone_stairs.json deleted file mode 100644 index e8ac0e2ba..000000000 --- a/src/generated/resources/assets/create/models/item/polished_weathered_limestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/polished_weathered_limestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/polished_weathered_limestone_wall.json b/src/generated/resources/assets/create/models/item/polished_weathered_limestone_wall.json deleted file mode 100644 index d0b12de12..000000000 --- a/src/generated/resources/assets/create/models/item/polished_weathered_limestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/weathered_limestone/polished" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/portable_fluid_interface.json b/src/generated/resources/assets/create/models/item/portable_fluid_interface.json deleted file mode 100644 index 9418446e7..000000000 --- a/src/generated/resources/assets/create/models/item/portable_fluid_interface.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/portable_fluid_interface/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/portable_storage_interface.json b/src/generated/resources/assets/create/models/item/portable_storage_interface.json deleted file mode 100644 index 3330b9ffd..000000000 --- a/src/generated/resources/assets/create/models/item/portable_storage_interface.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/portable_storage_interface/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/powdered_obsidian.json b/src/generated/resources/assets/create/models/item/powdered_obsidian.json deleted file mode 100644 index ca9925422..000000000 --- a/src/generated/resources/assets/create/models/item/powdered_obsidian.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/powdered_obsidian" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/powered_latch.json b/src/generated/resources/assets/create/models/item/powered_latch.json deleted file mode 100644 index dffbc022c..000000000 --- a/src/generated/resources/assets/create/models/item/powered_latch.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/powered_latch" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/powered_toggle_latch.json b/src/generated/resources/assets/create/models/item/powered_toggle_latch.json deleted file mode 100644 index 35206088f..000000000 --- a/src/generated/resources/assets/create/models/item/powered_toggle_latch.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diodes/latch_off" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/propeller.json b/src/generated/resources/assets/create/models/item/propeller.json deleted file mode 100644 index 0823ab7a4..000000000 --- a/src/generated/resources/assets/create/models/item/propeller.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/propeller" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/pulse_repeater.json b/src/generated/resources/assets/create/models/item/pulse_repeater.json deleted file mode 100644 index bb648b0e5..000000000 --- a/src/generated/resources/assets/create/models/item/pulse_repeater.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/diodes/pulse_repeater" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/purple_seat.json b/src/generated/resources/assets/create/models/item/purple_seat.json deleted file mode 100644 index 21d6d00b9..000000000 --- a/src/generated/resources/assets/create/models/item/purple_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/purple_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/purple_valve_handle.json b/src/generated/resources/assets/create/models/item/purple_valve_handle.json deleted file mode 100644 index 89f8cddd1..000000000 --- a/src/generated/resources/assets/create/models/item/purple_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/purple_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/radial_chassis.json b/src/generated/resources/assets/create/models/item/radial_chassis.json deleted file mode 100644 index 1623459f1..000000000 --- a/src/generated/resources/assets/create/models/item/radial_chassis.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/radial_chassis_side", - "end": "create:block/radial_chassis_end" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/red_sand_paper.json b/src/generated/resources/assets/create/models/item/red_sand_paper.json deleted file mode 100644 index e9ffbe927..000000000 --- a/src/generated/resources/assets/create/models/item/red_sand_paper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/red_sand_paper" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/red_seat.json b/src/generated/resources/assets/create/models/item/red_seat.json deleted file mode 100644 index bb30dc0fb..000000000 --- a/src/generated/resources/assets/create/models/item/red_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/red_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/red_valve_handle.json b/src/generated/resources/assets/create/models/item/red_valve_handle.json deleted file mode 100644 index 1bbed3331..000000000 --- a/src/generated/resources/assets/create/models/item/red_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/red_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/redstone_contact.json b/src/generated/resources/assets/create/models/item/redstone_contact.json deleted file mode 100644 index 2f4a05429..000000000 --- a/src/generated/resources/assets/create/models/item/redstone_contact.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/redstone_contact/block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/redstone_link.json b/src/generated/resources/assets/create/models/item/redstone_link.json deleted file mode 100644 index c49dfb365..000000000 --- a/src/generated/resources/assets/create/models/item/redstone_link.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/redstone_link/transmitter" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/refined_radiance.json b/src/generated/resources/assets/create/models/item/refined_radiance.json deleted file mode 100644 index 40599508e..000000000 --- a/src/generated/resources/assets/create/models/item/refined_radiance.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/refined_radiance" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/refined_radiance_casing.json b/src/generated/resources/assets/create/models/item/refined_radiance_casing.json deleted file mode 100644 index 46393f46b..000000000 --- a/src/generated/resources/assets/create/models/item/refined_radiance_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/refined_radiance_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/reinforced_rail.json b/src/generated/resources/assets/create/models/item/reinforced_rail.json deleted file mode 100644 index 9084dee8f..000000000 --- a/src/generated/resources/assets/create/models/item/reinforced_rail.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/reinforced_rail/block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/rope_pulley.json b/src/generated/resources/assets/create/models/item/rope_pulley.json deleted file mode 100644 index 0aec91520..000000000 --- a/src/generated/resources/assets/create/models/item/rope_pulley.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/rope_pulley/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/rose_quartz.json b/src/generated/resources/assets/create/models/item/rose_quartz.json deleted file mode 100644 index 245b52404..000000000 --- a/src/generated/resources/assets/create/models/item/rose_quartz.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/rose_quartz" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/rotation_speed_controller.json b/src/generated/resources/assets/create/models/item/rotation_speed_controller.json deleted file mode 100644 index 68d28e80d..000000000 --- a/src/generated/resources/assets/create/models/item/rotation_speed_controller.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/rotation_speed_controller/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/sail_frame.json b/src/generated/resources/assets/create/models/item/sail_frame.json deleted file mode 100644 index dc7fe7265..000000000 --- a/src/generated/resources/assets/create/models/item/sail_frame.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/sail_frame" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/sand_paper.json b/src/generated/resources/assets/create/models/item/sand_paper.json deleted file mode 100644 index 116db1843..000000000 --- a/src/generated/resources/assets/create/models/item/sand_paper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/sand_paper" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/schematic.json b/src/generated/resources/assets/create/models/item/schematic.json deleted file mode 100644 index 2e92f95c4..000000000 --- a/src/generated/resources/assets/create/models/item/schematic.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/schematic" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/schematic_and_quill.json b/src/generated/resources/assets/create/models/item/schematic_and_quill.json deleted file mode 100644 index e697815f4..000000000 --- a/src/generated/resources/assets/create/models/item/schematic_and_quill.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/schematic_and_quill" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/schematic_table.json b/src/generated/resources/assets/create/models/item/schematic_table.json deleted file mode 100644 index c447b868d..000000000 --- a/src/generated/resources/assets/create/models/item/schematic_table.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/schematic_table" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/schematicannon.json b/src/generated/resources/assets/create/models/item/schematicannon.json deleted file mode 100644 index 98a189b7f..000000000 --- a/src/generated/resources/assets/create/models/item/schematicannon.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/schematicannon/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria.json b/src/generated/resources/assets/create/models/item/scoria.json deleted file mode 100644 index f1fc1af40..000000000 --- a/src/generated/resources/assets/create/models/item/scoria.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_bricks.json b/src/generated/resources/assets/create/models/item/scoria_bricks.json deleted file mode 100644 index dbaf20e8d..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_bricks_slab.json b/src/generated/resources/assets/create/models/item/scoria_bricks_slab.json deleted file mode 100644 index cfbd9b2c7..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_bricks_stairs.json b/src/generated/resources/assets/create/models/item/scoria_bricks_stairs.json deleted file mode 100644 index d2d211461..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_bricks_wall.json b/src/generated/resources/assets/create/models/item/scoria_bricks_wall.json deleted file mode 100644 index fd6ab40ee..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/scoria/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_cobblestone.json b/src/generated/resources/assets/create/models/item/scoria_cobblestone.json deleted file mode 100644 index c60ecbd5d..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/scoria_cobblestone_slab.json deleted file mode 100644 index 54edcd334..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/scoria_cobblestone_stairs.json deleted file mode 100644 index 412efb5ae..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/scoria_cobblestone_wall.json deleted file mode 100644 index 76a5379c8..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/scoria/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/scoria_pillar.json b/src/generated/resources/assets/create/models/item/scoria_pillar.json deleted file mode 100644 index 33f4ca690..000000000 --- a/src/generated/resources/assets/create/models/item/scoria_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/scoria_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/secondary_linear_chassis.json b/src/generated/resources/assets/create/models/item/secondary_linear_chassis.json deleted file mode 100644 index f0bd6990e..000000000 --- a/src/generated/resources/assets/create/models/item/secondary_linear_chassis.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/secondary_linear_chassis" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/sequenced_gearshift.json b/src/generated/resources/assets/create/models/item/sequenced_gearshift.json deleted file mode 100644 index 88f27bdbd..000000000 --- a/src/generated/resources/assets/create/models/item/sequenced_gearshift.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/sequenced_gearshift/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/shadow_steel.json b/src/generated/resources/assets/create/models/item/shadow_steel.json deleted file mode 100644 index a7996ceb6..000000000 --- a/src/generated/resources/assets/create/models/item/shadow_steel.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/shadow_steel" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/shadow_steel_casing.json b/src/generated/resources/assets/create/models/item/shadow_steel_casing.json deleted file mode 100644 index 3d0f22343..000000000 --- a/src/generated/resources/assets/create/models/item/shadow_steel_casing.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/shadow_steel_casing" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/shaft.json b/src/generated/resources/assets/create/models/item/shaft.json deleted file mode 100644 index ba560cdde..000000000 --- a/src/generated/resources/assets/create/models/item/shaft.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/shaft" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/smart_chute.json b/src/generated/resources/assets/create/models/item/smart_chute.json deleted file mode 100644 index c0a19c1e0..000000000 --- a/src/generated/resources/assets/create/models/item/smart_chute.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/smart_chute/block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/smart_fluid_pipe.json b/src/generated/resources/assets/create/models/item/smart_fluid_pipe.json deleted file mode 100644 index 1c516bf89..000000000 --- a/src/generated/resources/assets/create/models/item/smart_fluid_pipe.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/smart_fluid_pipe/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/speedometer.json b/src/generated/resources/assets/create/models/item/speedometer.json deleted file mode 100644 index 883efed14..000000000 --- a/src/generated/resources/assets/create/models/item/speedometer.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gauge/speedometer/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/spout.json b/src/generated/resources/assets/create/models/item/spout.json deleted file mode 100644 index 39d2503dc..000000000 --- a/src/generated/resources/assets/create/models/item/spout.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/spout/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/spruce_window.json b/src/generated/resources/assets/create/models/item/spruce_window.json deleted file mode 100644 index cef713400..000000000 --- a/src/generated/resources/assets/create/models/item/spruce_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/spruce_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/spruce_window_pane.json b/src/generated/resources/assets/create/models/item/spruce_window_pane.json deleted file mode 100644 index 57b6d9edf..000000000 --- a/src/generated/resources/assets/create/models/item/spruce_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/spruce_window", - "edge": "minecraft:block/spruce_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/sticker.json b/src/generated/resources/assets/create/models/item/sticker.json deleted file mode 100644 index b1367cf86..000000000 --- a/src/generated/resources/assets/create/models/item/sticker.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/sticker/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/sticky_mechanical_piston.json b/src/generated/resources/assets/create/models/item/sticky_mechanical_piston.json deleted file mode 100644 index 313b5e174..000000000 --- a/src/generated/resources/assets/create/models/item/sticky_mechanical_piston.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/mechanical_piston/sticky/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/stockpile_switch.json b/src/generated/resources/assets/create/models/item/stockpile_switch.json deleted file mode 100644 index 3e623a7d5..000000000 --- a/src/generated/resources/assets/create/models/item/stockpile_switch.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/stockpile_switch" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/stressometer.json b/src/generated/resources/assets/create/models/item/stressometer.json deleted file mode 100644 index d4fa361cf..000000000 --- a/src/generated/resources/assets/create/models/item/stressometer.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gauge/stressometer/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/super_glue.json b/src/generated/resources/assets/create/models/item/super_glue.json deleted file mode 100644 index 7ae5f7f81..000000000 --- a/src/generated/resources/assets/create/models/item/super_glue.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/super_glue" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/sweet_roll.json b/src/generated/resources/assets/create/models/item/sweet_roll.json deleted file mode 100644 index 252351ac7..000000000 --- a/src/generated/resources/assets/create/models/item/sweet_roll.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/sweet_roll" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/tiled_glass.json b/src/generated/resources/assets/create/models/item/tiled_glass.json deleted file mode 100644 index dc525e67c..000000000 --- a/src/generated/resources/assets/create/models/item/tiled_glass.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/tiled_glass" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/tiled_glass_pane.json b/src/generated/resources/assets/create/models/item/tiled_glass_pane.json deleted file mode 100644 index 905c82fbc..000000000 --- a/src/generated/resources/assets/create/models/item/tiled_glass_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/tiled_glass", - "edge": "minecraft:block/glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/tree_fertilizer.json b/src/generated/resources/assets/create/models/item/tree_fertilizer.json deleted file mode 100644 index 0dcd963d1..000000000 --- a/src/generated/resources/assets/create/models/item/tree_fertilizer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/tree_fertilizer" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/turntable.json b/src/generated/resources/assets/create/models/item/turntable.json deleted file mode 100644 index 5784408a1..000000000 --- a/src/generated/resources/assets/create/models/item/turntable.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/turntable" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/vertical_framed_glass.json b/src/generated/resources/assets/create/models/item/vertical_framed_glass.json deleted file mode 100644 index f5e6133ef..000000000 --- a/src/generated/resources/assets/create/models/item/vertical_framed_glass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "side": "create:block/palettes/vertical_framed_glass", - "end": "create:block/palettes/framed_glass" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/vertical_framed_glass_pane.json b/src/generated/resources/assets/create/models/item/vertical_framed_glass_pane.json deleted file mode 100644 index 71c535408..000000000 --- a/src/generated/resources/assets/create/models/item/vertical_framed_glass_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/vertical_framed_glass", - "edge": "create:block/palettes/framed_glass_pane_top" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/vertical_gearbox.json b/src/generated/resources/assets/create/models/item/vertical_gearbox.json deleted file mode 100644 index 0a8af5c1f..000000000 --- a/src/generated/resources/assets/create/models/item/vertical_gearbox.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/gearbox/item_vertical" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/wand_of_symmetry.json b/src/generated/resources/assets/create/models/item/wand_of_symmetry.json deleted file mode 100644 index 9b5d5f69a..000000000 --- a/src/generated/resources/assets/create/models/item/wand_of_symmetry.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:item/wand_of_symmetry/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/warped_window.json b/src/generated/resources/assets/create/models/item/warped_window.json deleted file mode 100644 index df090d31f..000000000 --- a/src/generated/resources/assets/create/models/item/warped_window.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/warped_window" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/warped_window_pane.json b/src/generated/resources/assets/create/models/item/warped_window_pane.json deleted file mode 100644 index d99c749be..000000000 --- a/src/generated/resources/assets/create/models/item/warped_window_pane.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/pane", - "textures": { - "pane": "create:block/palettes/warped_window", - "edge": "minecraft:block/warped_planks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/water_wheel.json b/src/generated/resources/assets/create/models/item/water_wheel.json deleted file mode 100644 index 1fe80c21b..000000000 --- a/src/generated/resources/assets/create/models/item/water_wheel.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/water_wheel" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone.json b/src/generated/resources/assets/create/models/item/weathered_limestone.json deleted file mode 100644 index 6057aebc7..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_limestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_bricks.json b/src/generated/resources/assets/create/models/item/weathered_limestone_bricks.json deleted file mode 100644 index 08389636d..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_bricks.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_limestone_bricks" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_slab.json b/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_slab.json deleted file mode 100644 index ec8166e87..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_limestone_bricks_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_stairs.json b/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_stairs.json deleted file mode 100644 index 0ceba23cb..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_limestone_bricks_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_wall.json b/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_wall.json deleted file mode 100644 index 4ff814cc1..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/weathered_limestone/bricks" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone.json b/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone.json deleted file mode 100644 index be41034b6..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_limestone_cobblestone" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_slab.json b/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_slab.json deleted file mode 100644 index 970d0d703..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_slab.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_limestone_cobblestone_slab" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_stairs.json b/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_stairs.json deleted file mode 100644 index 6d971a945..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_stairs.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_limestone_cobblestone_stairs" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_wall.json b/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_wall.json deleted file mode 100644 index 10737d855..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_cobblestone_wall.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "create:block/palettes/weathered_limestone/cobblestone" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weathered_limestone_pillar.json b/src/generated/resources/assets/create/models/item/weathered_limestone_pillar.json deleted file mode 100644 index f1cfc898f..000000000 --- a/src/generated/resources/assets/create/models/item/weathered_limestone_pillar.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weathered_limestone_pillar" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/weighted_ejector.json b/src/generated/resources/assets/create/models/item/weighted_ejector.json deleted file mode 100644 index 9d675525a..000000000 --- a/src/generated/resources/assets/create/models/item/weighted_ejector.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/weighted_ejector/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/wheat_flour.json b/src/generated/resources/assets/create/models/item/wheat_flour.json deleted file mode 100644 index 29acf8daa..000000000 --- a/src/generated/resources/assets/create/models/item/wheat_flour.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/wheat_flour" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/whisk.json b/src/generated/resources/assets/create/models/item/whisk.json deleted file mode 100644 index 97e8dc57b..000000000 --- a/src/generated/resources/assets/create/models/item/whisk.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/whisk" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/white_sail.json b/src/generated/resources/assets/create/models/item/white_sail.json deleted file mode 100644 index 303c0e83a..000000000 --- a/src/generated/resources/assets/create/models/item/white_sail.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/white_sail" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/white_seat.json b/src/generated/resources/assets/create/models/item/white_seat.json deleted file mode 100644 index 609a09653..000000000 --- a/src/generated/resources/assets/create/models/item/white_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/white_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/white_valve_handle.json b/src/generated/resources/assets/create/models/item/white_valve_handle.json deleted file mode 100644 index d81403c93..000000000 --- a/src/generated/resources/assets/create/models/item/white_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/white_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/windmill_bearing.json b/src/generated/resources/assets/create/models/item/windmill_bearing.json deleted file mode 100644 index 434880d44..000000000 --- a/src/generated/resources/assets/create/models/item/windmill_bearing.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/bearing/item", - "textures": { - "top": "create:block/bearing_top_wooden", - "side": "create:block/windmill_bearing_side", - "back": "create:block/gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/wooden_bracket.json b/src/generated/resources/assets/create/models/item/wooden_bracket.json deleted file mode 100644 index a5fd1ec05..000000000 --- a/src/generated/resources/assets/create/models/item/wooden_bracket.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/bracket/item", - "textures": { - "bracket": "create:block/bracket_wooden", - "plate": "create:block/bracket_plate_wooden" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/wrench.json b/src/generated/resources/assets/create/models/item/wrench.json deleted file mode 100644 index 235e21e16..000000000 --- a/src/generated/resources/assets/create/models/item/wrench.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:item/wrench/item" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/yellow_seat.json b/src/generated/resources/assets/create/models/item/yellow_seat.json deleted file mode 100644 index d55fbb130..000000000 --- a/src/generated/resources/assets/create/models/item/yellow_seat.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/yellow_seat" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/yellow_valve_handle.json b/src/generated/resources/assets/create/models/item/yellow_valve_handle.json deleted file mode 100644 index eda359168..000000000 --- a/src/generated/resources/assets/create/models/item/yellow_valve_handle.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/yellow_valve_handle" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/zinc_block.json b/src/generated/resources/assets/create/models/item/zinc_block.json deleted file mode 100644 index 4ec24c2c6..000000000 --- a/src/generated/resources/assets/create/models/item/zinc_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/zinc_block" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/zinc_ingot.json b/src/generated/resources/assets/create/models/item/zinc_ingot.json deleted file mode 100644 index 9b759ab8f..000000000 --- a/src/generated/resources/assets/create/models/item/zinc_ingot.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/zinc_ingot" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/zinc_nugget.json b/src/generated/resources/assets/create/models/item/zinc_nugget.json deleted file mode 100644 index e31907df5..000000000 --- a/src/generated/resources/assets/create/models/item/zinc_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "create:item/zinc_nugget" - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/zinc_ore.json b/src/generated/resources/assets/create/models/item/zinc_ore.json deleted file mode 100644 index e0f0cfe89..000000000 --- a/src/generated/resources/assets/create/models/item/zinc_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/zinc_ore" -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/sounds.json b/src/generated/resources/assets/create/sounds.json deleted file mode 100644 index 1052dd3a7..000000000 --- a/src/generated/resources/assets/create/sounds.json +++ /dev/null @@ -1,324 +0,0 @@ -{ - "blaze_munch": { - "sounds": [ - { - "name": "minecraft:entity.generic.eat", - "type": "event" - } - ], - "subtitle": "create.subtitle.blaze_munch" - }, - "cogs": { - "sounds": [ - "create:cogs" - ], - "subtitle": "create.subtitle.cogs" - }, - "confirm": { - "sounds": [ - { - "name": "minecraft:block.note_block.bell", - "type": "event" - } - ], - "subtitle": "create.subtitle.confirm" - }, - "contraption_assemble": { - "sounds": [ - { - "name": "minecraft:block.wooden_trapdoor.open", - "type": "event" - } - ], - "subtitle": "create.subtitle.contraption_assemble" - }, - "contraption_assemble_compounded_1": { - "sounds": [ - { - "name": "minecraft:block.chest.open", - "type": "event" - } - ] - }, - "contraption_disassemble": { - "sounds": [ - { - "name": "minecraft:block.iron_trapdoor.close", - "type": "event" - } - ], - "subtitle": "create.subtitle.contraption_disassemble" - }, - "controller_click": { - "sounds": [ - { - "name": "minecraft:entity.item_frame.add_item", - "type": "event" - } - ], - "subtitle": "create.subtitle.controller_click" - }, - "copper_armor_equip": { - "sounds": [ - { - "name": "minecraft:item.armor.equip_gold", - "type": "event" - } - ], - "subtitle": "create.subtitle.copper_armor_equip" - }, - "crafter_click": { - "sounds": [ - { - "name": "minecraft:block.netherite_block.hit", - "type": "event" - } - ], - "subtitle": "create.subtitle.crafter_click" - }, - "crafter_click_compounded_1": { - "sounds": [ - { - "name": "minecraft:block.wooden_trapdoor.open", - "type": "event" - } - ] - }, - "crafter_craft": { - "sounds": [ - { - "name": "minecraft:entity.item.break", - "type": "event" - } - ], - "subtitle": "create.subtitle.crafter_craft" - }, - "cranking": { - "sounds": [ - { - "name": "minecraft:block.wood.place", - "type": "event" - } - ], - "subtitle": "create.subtitle.cranking" - }, - "cranking_compounded_1": { - "sounds": [ - { - "name": "minecraft:block.wooden_button.click_off", - "type": "event" - } - ] - }, - "deny": { - "sounds": [ - { - "name": "minecraft:block.note_block.bass", - "type": "event" - } - ], - "subtitle": "create.subtitle.deny" - }, - "deployer_polish": { - "sounds": [ - { - "name": "minecraft:ui.stonecutter.take_result", - "type": "event" - } - ], - "subtitle": "create.subtitle.deployer_polish" - }, - "depot_plop": { - "sounds": [ - { - "name": "minecraft:entity.item_frame.add_item", - "type": "event" - } - ], - "subtitle": "create.subtitle.depot_plop" - }, - "depot_slide": { - "sounds": [ - { - "name": "minecraft:block.sand.break", - "type": "event" - } - ], - "subtitle": "create.subtitle.depot_slide" - }, - "funnel_flap": { - "sounds": [ - { - "name": "minecraft:entity.item_frame.rotate_item", - "type": "event" - } - ], - "subtitle": "create.subtitle.funnel_flap" - }, - "funnel_flap_compounded_1": { - "sounds": [ - { - "name": "minecraft:block.wool.break", - "type": "event" - } - ] - }, - "mechanical_press_activation": { - "sounds": [ - { - "name": "minecraft:block.anvil.land", - "type": "event" - } - ], - "subtitle": "create.subtitle.mechanical_press_activation" - }, - "mechanical_press_activation_compounded_1": { - "sounds": [ - { - "name": "minecraft:entity.item.break", - "type": "event" - } - ] - }, - "mechanical_press_activation_belt": { - "sounds": [ - { - "name": "minecraft:block.wool.hit", - "type": "event" - } - ], - "subtitle": "create.subtitle.mechanical_press_activation_belt" - }, - "mechanical_press_activation_belt_compounded_1": { - "sounds": [ - { - "name": "minecraft:entity.item.break", - "type": "event" - } - ] - }, - "mixing": { - "sounds": [ - { - "name": "minecraft:block.gilded_blackstone.break", - "type": "event" - } - ], - "subtitle": "create.subtitle.mixing" - }, - "mixing_compounded_1": { - "sounds": [ - { - "name": "minecraft:block.netherrack.break", - "type": "event" - } - ] - }, - "saw_activate_stone": { - "sounds": [ - { - "name": "minecraft:ui.stonecutter.take_result", - "type": "event" - } - ], - "subtitle": "create.subtitle.saw_activate_stone" - }, - "saw_activate_wood": { - "sounds": [ - { - "name": "minecraft:entity.boat.paddle_land", - "type": "event" - } - ], - "subtitle": "create.subtitle.saw_activate_wood" - }, - "saw_idle": { - "sounds": [ - { - "name": "minecraft:entity.boat.paddle_land", - "type": "event" - } - ], - "subtitle": "create.subtitle.saw_idle" - }, - "saw_process": { - "sounds": [ - { - "name": "minecraft:block.sand.place", - "type": "event" - } - ], - "subtitle": "create.subtitle.saw_process" - }, - "schematicannon_finish": { - "sounds": [ - { - "name": "minecraft:block.note_block.bell", - "type": "event" - } - ], - "subtitle": "create.subtitle.schematicannon_finish" - }, - "schematicannon_launch_block": { - "sounds": [ - { - "name": "minecraft:entity.generic.explode", - "type": "event" - } - ], - "subtitle": "create.subtitle.schematicannon_launch_block" - }, - "scroll_value": { - "sounds": [ - { - "name": "minecraft:block.note_block.hat", - "type": "event" - } - ], - "subtitle": "create.subtitle.scroll_value" - }, - "slime_added": { - "sounds": [ - { - "name": "minecraft:block.slime_block.place", - "type": "event" - } - ], - "subtitle": "create.subtitle.slime_added" - }, - "worldshaper_place": { - "sounds": [ - { - "name": "minecraft:block.note_block.basedrum", - "type": "event" - } - ], - "subtitle": "create.subtitle.worldshaper_place" - }, - "wrench_remove": { - "sounds": [ - { - "name": "minecraft:entity.item.pickup", - "type": "event" - } - ], - "subtitle": "create.subtitle.wrench_remove" - }, - "wrench_remove_compounded_1": { - "sounds": [ - { - "name": "minecraft:block.netherite_block.hit", - "type": "event" - } - ] - }, - "wrench_rotate": { - "sounds": [ - { - "name": "minecraft:block.wooden_trapdoor.close", - "type": "event" - } - ], - "subtitle": "create.subtitle.wrench_rotate" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json deleted file mode 100644 index d723cbe38..000000000 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "parent": "create:andesite_alloy", - "display": { - "icon": { - "item": "create:wooden_bracket" - }, - "title": { - "translate": "advancement.create.aesthetics" - }, - "description": { - "translate": "advancement.create.aesthetics.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:bracket_apply", - "conditions": { - "accepted_entries": [ - "create:shaft" - ] - } - }, - "1": { - "trigger": "create:bracket_apply", - "conditions": { - "accepted_entries": [ - "create:cogwheel", - "create:large_cogwheel" - ] - } - }, - "2": { - "trigger": "create:bracket_apply", - "conditions": { - "accepted_entries": [ - "create:fluid_pipe" - ] - } - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ], - [ - "2" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/andesite_alloy.json b/src/generated/resources/data/create/advancements/andesite_alloy.json deleted file mode 100644 index 044362e9c..000000000 --- a/src/generated/resources/data/create/advancements/andesite_alloy.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:root", - "display": { - "icon": { - "item": "create:andesite_alloy" - }, - "title": { - "translate": "advancement.create.andesite_alloy" - }, - "description": { - "translate": "advancement.create.andesite_alloy.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/andesite_casing.json b/src/generated/resources/data/create/advancements/andesite_casing.json deleted file mode 100644 index a0b4a7b9a..000000000 --- a/src/generated/resources/data/create/advancements/andesite_casing.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:andesite_alloy", - "display": { - "icon": { - "item": "create:andesite_casing" - }, - "title": { - "translate": "advancement.create.andesite_casing" - }, - "description": { - "translate": "advancement.create.andesite_casing.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/arm_blaze_burner.json b/src/generated/resources/data/create/advancements/arm_blaze_burner.json deleted file mode 100644 index 25057b193..000000000 --- a/src/generated/resources/data/create/advancements/arm_blaze_burner.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:mechanical_arm", - "display": { - "icon": { - "item": "create:blaze_burner" - }, - "title": { - "translate": "advancement.create.arm_blaze_burner" - }, - "description": { - "translate": "advancement.create.arm_blaze_burner.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:arm_blaze_burner", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/arm_many_targets.json b/src/generated/resources/data/create/advancements/arm_many_targets.json deleted file mode 100644 index 4d6dddf00..000000000 --- a/src/generated/resources/data/create/advancements/arm_many_targets.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:mechanical_arm", - "display": { - "icon": { - "item": "create:brass_funnel" - }, - "title": { - "translate": "advancement.create.arm_many_targets" - }, - "description": { - "translate": "advancement.create.arm_many_targets.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:arm_many_targets", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/basin.json b/src/generated/resources/data/create/advancements/basin.json deleted file mode 100644 index 303cf1b01..000000000 --- a/src/generated/resources/data/create/advancements/basin.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "create:press", - "display": { - "icon": { - "item": "create:basin" - }, - "title": { - "translate": "advancement.create.basin" - }, - "description": { - "translate": "advancement.create.basin.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:basin" - } - }, - "1": { - "trigger": "create:basin", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/belt.json b/src/generated/resources/data/create/advancements/belt.json deleted file mode 100644 index d966d700a..000000000 --- a/src/generated/resources/data/create/advancements/belt.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:its_alive", - "display": { - "icon": { - "item": "create:belt_connector" - }, - "title": { - "translate": "advancement.create.belt" - }, - "description": { - "translate": "advancement.create.belt.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:connect_belt", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/belt_funnel.json b/src/generated/resources/data/create/advancements/belt_funnel.json deleted file mode 100644 index 2173f6436..000000000 --- a/src/generated/resources/data/create/advancements/belt_funnel.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:belt", - "display": { - "icon": { - "item": "create:andesite_funnel" - }, - "title": { - "translate": "advancement.create.belt_funnel" - }, - "description": { - "translate": "advancement.create.belt_funnel.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:belt_funnel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/belt_funnel_kiss.json b/src/generated/resources/data/create/advancements/belt_funnel_kiss.json deleted file mode 100644 index 10a2ed88a..000000000 --- a/src/generated/resources/data/create/advancements/belt_funnel_kiss.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:belt_funnel", - "display": { - "icon": { - "item": "create:brass_funnel" - }, - "title": { - "translate": "advancement.create.belt_funnel_kiss" - }, - "description": { - "translate": "advancement.create.belt_funnel_kiss.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "0": { - "trigger": "create:belt_funnel_kiss", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/blaze_burner.json b/src/generated/resources/data/create/advancements/blaze_burner.json deleted file mode 100644 index 20d76c4bc..000000000 --- a/src/generated/resources/data/create/advancements/blaze_burner.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:mixer", - "display": { - "icon": { - "item": "create:blaze_burner" - }, - "title": { - "translate": "advancement.create.blaze_burner" - }, - "description": { - "translate": "advancement.create.blaze_burner.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:blaze_burner" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/blaze_cake.json b/src/generated/resources/data/create/advancements/blaze_cake.json deleted file mode 100644 index 85c62f63b..000000000 --- a/src/generated/resources/data/create/advancements/blaze_cake.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:crushing_wheel", - "display": { - "icon": { - "item": "create:blaze_cake" - }, - "title": { - "translate": "advancement.create.blaze_cake" - }, - "description": { - "translate": "advancement.create.blaze_cake.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:blaze_cake" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/brass.json b/src/generated/resources/data/create/advancements/brass.json deleted file mode 100644 index 706c76d54..000000000 --- a/src/generated/resources/data/create/advancements/brass.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:blaze_burner", - "display": { - "icon": { - "item": "create:brass_ingot" - }, - "title": { - "translate": "advancement.create.brass" - }, - "description": { - "translate": "advancement.create.brass.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_ingot" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/brass_casing.json b/src/generated/resources/data/create/advancements/brass_casing.json deleted file mode 100644 index f3161f63e..000000000 --- a/src/generated/resources/data/create/advancements/brass_casing.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:brass", - "display": { - "icon": { - "item": "create:brass_casing" - }, - "title": { - "translate": "advancement.create.brass_casing" - }, - "description": { - "translate": "advancement.create.brass_casing.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chained_item_drain.json b/src/generated/resources/data/create/advancements/chained_item_drain.json deleted file mode 100644 index 4f3f8736e..000000000 --- a/src/generated/resources/data/create/advancements/chained_item_drain.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:item_drain", - "display": { - "icon": { - "item": "create:item_drain" - }, - "title": { - "translate": "advancement.create.chained_item_drain" - }, - "description": { - "translate": "advancement.create.chained_item_drain.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "0": { - "trigger": "create:chained_item_drain", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chocolate.json b/src/generated/resources/data/create/advancements/chocolate.json deleted file mode 100644 index 4adfa66e1..000000000 --- a/src/generated/resources/data/create/advancements/chocolate.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:spout", - "display": { - "icon": { - "item": "create:chocolate_bucket" - }, - "title": { - "translate": "advancement.create.chocolate" - }, - "description": { - "translate": "advancement.create.chocolate.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:chocolate_bucket" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chocolate_wheel.json b/src/generated/resources/data/create/advancements/chocolate_wheel.json deleted file mode 100644 index c0f40f264..000000000 --- a/src/generated/resources/data/create/advancements/chocolate_wheel.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:water_wheel", - "display": { - "icon": { - "item": "create:chocolate_bucket" - }, - "title": { - "translate": "advancement.create.chocolate_wheel" - }, - "description": { - "translate": "advancement.create.chocolate_wheel.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "0": { - "trigger": "create:chocolate_wheel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chromatic_compound.json b/src/generated/resources/data/create/advancements/chromatic_compound.json deleted file mode 100644 index 01dca0981..000000000 --- a/src/generated/resources/data/create/advancements/chromatic_compound.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:blaze_cake", - "display": { - "icon": { - "item": "create:chromatic_compound" - }, - "title": { - "translate": "advancement.create.chromatic_compound" - }, - "description": { - "translate": "advancement.create.chromatic_compound.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:chromatic_compound" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chromatic_eob.json b/src/generated/resources/data/create/advancements/chromatic_eob.json deleted file mode 100644 index bf7ba18b1..000000000 --- a/src/generated/resources/data/create/advancements/chromatic_eob.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "parent": "minecraft:createchromatic_age", - "display": { - "icon": { - "item": "minecraft:oak_sapling" - }, - "title": { - "translate": "advancement.create.eob" - }, - "description": { - "translate": "advancement.create.eob.desc" - }, - "frame": "challenge", - "show_toast": false, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:shadow_steel_casing" - } - ] - } - }, - "1": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:refined_radiance_casing" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/chute.json b/src/generated/resources/data/create/advancements/chute.json deleted file mode 100644 index d278d6896..000000000 --- a/src/generated/resources/data/create/advancements/chute.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:belt", - "display": { - "icon": { - "item": "create:chute" - }, - "title": { - "translate": "advancement.create.chute" - }, - "description": { - "translate": "advancement.create.chute.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:chute" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/clockwork_bearing.json b/src/generated/resources/data/create/advancements/clockwork_bearing.json deleted file mode 100644 index fdbd0bc3b..000000000 --- a/src/generated/resources/data/create/advancements/clockwork_bearing.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:brass_casing", - "display": { - "icon": { - "item": "create:clockwork_bearing" - }, - "title": { - "translate": "advancement.create.clockwork_bearing" - }, - "description": { - "translate": "advancement.create.clockwork_bearing.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:clockwork_bearing", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/compact.json b/src/generated/resources/data/create/advancements/compact.json deleted file mode 100644 index 3c8b323e8..000000000 --- a/src/generated/resources/data/create/advancements/compact.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:basin", - "display": { - "icon": { - "item": "minecraft:iron_block" - }, - "title": { - "translate": "advancement.create.compact" - }, - "description": { - "translate": "advancement.create.compact.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:compact", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/copper_casing.json b/src/generated/resources/data/create/advancements/copper_casing.json deleted file mode 100644 index bbe9ce860..000000000 --- a/src/generated/resources/data/create/advancements/copper_casing.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:press", - "display": { - "icon": { - "item": "create:copper_casing" - }, - "title": { - "translate": "advancement.create.copper_casing" - }, - "description": { - "translate": "advancement.create.copper_casing.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_casing" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/crafter.json b/src/generated/resources/data/create/advancements/crafter.json deleted file mode 100644 index 2c770efd4..000000000 --- a/src/generated/resources/data/create/advancements/crafter.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:brass_casing", - "display": { - "icon": { - "item": "create:mechanical_crafter" - }, - "title": { - "translate": "advancement.create.crafter" - }, - "description": { - "translate": "advancement.create.crafter.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:mechanical_crafter" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/crushing_wheel.json b/src/generated/resources/data/create/advancements/crushing_wheel.json deleted file mode 100644 index 5660cae98..000000000 --- a/src/generated/resources/data/create/advancements/crushing_wheel.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:crafter", - "display": { - "icon": { - "item": "create:crushing_wheel" - }, - "title": { - "translate": "advancement.create.crushing_wheel" - }, - "description": { - "translate": "advancement.create.crushing_wheel.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushing_wheel" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/cuckoo.json b/src/generated/resources/data/create/advancements/cuckoo.json deleted file mode 100644 index 9462e1f03..000000000 --- a/src/generated/resources/data/create/advancements/cuckoo.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:andesite_alloy", - "display": { - "icon": { - "item": "create:cuckoo_clock" - }, - "title": { - "translate": "advancement.create.cuckoo" - }, - "description": { - "translate": "advancement.create.cuckoo.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:cuckoo", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/deployer.json b/src/generated/resources/data/create/advancements/deployer.json deleted file mode 100644 index 82a6a0169..000000000 --- a/src/generated/resources/data/create/advancements/deployer.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:brass_casing", - "display": { - "icon": { - "item": "create:deployer" - }, - "title": { - "translate": "advancement.create.deployer" - }, - "description": { - "translate": "advancement.create.deployer.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:deployer" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/dual_extendo_grip.json b/src/generated/resources/data/create/advancements/dual_extendo_grip.json deleted file mode 100644 index d8effe72f..000000000 --- a/src/generated/resources/data/create/advancements/dual_extendo_grip.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:extendo_grip", - "display": { - "icon": { - "item": "create:extendo_grip" - }, - "title": { - "translate": "advancement.create.dual_extendo_grip" - }, - "description": { - "translate": "advancement.create.dual_extendo_grip.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "0": { - "trigger": "create:giga_extendo", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/electron_tube.json b/src/generated/resources/data/create/advancements/electron_tube.json deleted file mode 100644 index 6070eb238..000000000 --- a/src/generated/resources/data/create/advancements/electron_tube.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:polished_rose_quartz", - "display": { - "icon": { - "item": "create:electron_tube" - }, - "title": { - "translate": "advancement.create.electron_tube" - }, - "description": { - "translate": "advancement.create.electron_tube.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:electron_tube" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/extendo_grip.json b/src/generated/resources/data/create/advancements/extendo_grip.json deleted file mode 100644 index b4d7b88b1..000000000 --- a/src/generated/resources/data/create/advancements/extendo_grip.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:crafter", - "display": { - "icon": { - "item": "create:extendo_grip" - }, - "title": { - "translate": "advancement.create.extendo_grip" - }, - "description": { - "translate": "advancement.create.extendo_grip.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:extendo", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fan.json b/src/generated/resources/data/create/advancements/fan.json deleted file mode 100644 index bafda450d..000000000 --- a/src/generated/resources/data/create/advancements/fan.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:press", - "display": { - "icon": { - "item": "create:encased_fan" - }, - "title": { - "translate": "advancement.create.fan" - }, - "description": { - "translate": "advancement.create.fan.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:fan_processing", - "conditions": { - "accepted_entries": [ - "NONE" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fan_lava.json b/src/generated/resources/data/create/advancements/fan_lava.json deleted file mode 100644 index 6e6362c0a..000000000 --- a/src/generated/resources/data/create/advancements/fan_lava.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:fan", - "display": { - "icon": { - "item": "minecraft:lava_bucket" - }, - "title": { - "translate": "advancement.create.fan_lava" - }, - "description": { - "translate": "advancement.create.fan_lava.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:fan_processing", - "conditions": { - "accepted_entries": [ - "BLASTING" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fan_smoke.json b/src/generated/resources/data/create/advancements/fan_smoke.json deleted file mode 100644 index 017a1b6f7..000000000 --- a/src/generated/resources/data/create/advancements/fan_smoke.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:fan", - "display": { - "icon": { - "item": "minecraft:campfire" - }, - "title": { - "translate": "advancement.create.fan_smoke" - }, - "description": { - "translate": "advancement.create.fan_smoke.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:fan_processing", - "conditions": { - "accepted_entries": [ - "SMOKING" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fan_water.json b/src/generated/resources/data/create/advancements/fan_water.json deleted file mode 100644 index 3e7368f4b..000000000 --- a/src/generated/resources/data/create/advancements/fan_water.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:fan", - "display": { - "icon": { - "item": "minecraft:water_bucket" - }, - "title": { - "translate": "advancement.create.fan_water" - }, - "description": { - "translate": "advancement.create.fan_water.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:fan_processing", - "conditions": { - "accepted_entries": [ - "SPLASHING" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/fist_bump.json b/src/generated/resources/data/create/advancements/fist_bump.json deleted file mode 100644 index a56949290..000000000 --- a/src/generated/resources/data/create/advancements/fist_bump.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:deployer", - "display": { - "icon": { - "item": "create:deployer" - }, - "title": { - "translate": "advancement.create.fist_bump" - }, - "description": { - "translate": "advancement.create.fist_bump.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "0": { - "trigger": "create:deployer", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/flywheel.json b/src/generated/resources/data/create/advancements/flywheel.json deleted file mode 100644 index 407a25c20..000000000 --- a/src/generated/resources/data/create/advancements/flywheel.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:crafter", - "display": { - "icon": { - "item": "create:flywheel" - }, - "title": { - "translate": "advancement.create.flywheel" - }, - "description": { - "translate": "advancement.create.flywheel.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:flywheel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/glass_pipe.json b/src/generated/resources/data/create/advancements/glass_pipe.json deleted file mode 100644 index 53082a5c3..000000000 --- a/src/generated/resources/data/create/advancements/glass_pipe.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:copper_casing", - "display": { - "icon": { - "item": "create:fluid_pipe" - }, - "title": { - "translate": "advancement.create.glass_pipe" - }, - "description": { - "translate": "advancement.create.glass_pipe.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:glass_pipe", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/goggles.json b/src/generated/resources/data/create/advancements/goggles.json deleted file mode 100644 index e4c06682c..000000000 --- a/src/generated/resources/data/create/advancements/goggles.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:its_alive", - "display": { - "icon": { - "item": "create:goggles" - }, - "title": { - "translate": "advancement.create.goggles" - }, - "description": { - "translate": "advancement.create.goggles.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:goggles" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/hose_pulley.json b/src/generated/resources/data/create/advancements/hose_pulley.json deleted file mode 100644 index b15625017..000000000 --- a/src/generated/resources/data/create/advancements/hose_pulley.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:pipe_spill", - "display": { - "icon": { - "item": "create:hose_pulley" - }, - "title": { - "translate": "advancement.create.hose_pulley" - }, - "description": { - "translate": "advancement.create.hose_pulley.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:hose_pulley", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/infinite_chocolate.json b/src/generated/resources/data/create/advancements/infinite_chocolate.json deleted file mode 100644 index 5715963c3..000000000 --- a/src/generated/resources/data/create/advancements/infinite_chocolate.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:hose_pulley", - "display": { - "icon": { - "item": "create:chocolate_bucket" - }, - "title": { - "translate": "advancement.create.infinite_chocolate" - }, - "description": { - "translate": "advancement.create.infinite_chocolate.desc" - }, - "frame": "challenge", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:infinite_fluid", - "conditions": { - "accepted_entries": [ - "create:chocolate" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/infinite_lava.json b/src/generated/resources/data/create/advancements/infinite_lava.json deleted file mode 100644 index 5d634ef94..000000000 --- a/src/generated/resources/data/create/advancements/infinite_lava.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:hose_pulley", - "display": { - "icon": { - "item": "minecraft:lava_bucket" - }, - "title": { - "translate": "advancement.create.infinite_lava" - }, - "description": { - "translate": "advancement.create.infinite_lava.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:infinite_fluid", - "conditions": { - "accepted_entries": [ - "minecraft:lava" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/infinite_water.json b/src/generated/resources/data/create/advancements/infinite_water.json deleted file mode 100644 index 27b8c7a64..000000000 --- a/src/generated/resources/data/create/advancements/infinite_water.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "parent": "create:hose_pulley", - "display": { - "icon": { - "item": "minecraft:water_bucket" - }, - "title": { - "translate": "advancement.create.infinite_water" - }, - "description": { - "translate": "advancement.create.infinite_water.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:infinite_fluid", - "conditions": { - "accepted_entries": [ - "minecraft:water" - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/integrated_circuit.json b/src/generated/resources/data/create/advancements/integrated_circuit.json deleted file mode 100644 index ea773a430..000000000 --- a/src/generated/resources/data/create/advancements/integrated_circuit.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:crafter", - "display": { - "icon": { - "item": "create:integrated_circuit" - }, - "title": { - "translate": "advancement.create.integrated_circuit" - }, - "description": { - "translate": "advancement.create.integrated_circuit.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:integrated_circuit" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/integrated_circuit_eob.json b/src/generated/resources/data/create/advancements/integrated_circuit_eob.json deleted file mode 100644 index 858b7e963..000000000 --- a/src/generated/resources/data/create/advancements/integrated_circuit_eob.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:integrated_circuit", - "display": { - "icon": { - "item": "minecraft:oak_sapling" - }, - "title": { - "translate": "advancement.create.eob" - }, - "description": { - "translate": "advancement.create.eob.desc" - }, - "frame": "challenge", - "show_toast": false, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:integrated_circuit" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/item_drain.json b/src/generated/resources/data/create/advancements/item_drain.json deleted file mode 100644 index 05d89b4a3..000000000 --- a/src/generated/resources/data/create/advancements/item_drain.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:copper_casing", - "display": { - "icon": { - "item": "create:item_drain" - }, - "title": { - "translate": "advancement.create.item_drain" - }, - "description": { - "translate": "advancement.create.item_drain.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:item_drain", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/its_alive.json b/src/generated/resources/data/create/advancements/its_alive.json deleted file mode 100644 index 9f3bb5914..000000000 --- a/src/generated/resources/data/create/advancements/its_alive.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:andesite_alloy", - "display": { - "icon": { - "item": "create:cogwheel" - }, - "title": { - "translate": "advancement.create.its_alive" - }, - "description": { - "translate": "advancement.create.its_alive.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:rotation", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/lava_wheel.json b/src/generated/resources/data/create/advancements/lava_wheel.json deleted file mode 100644 index dc7b1c3f2..000000000 --- a/src/generated/resources/data/create/advancements/lava_wheel.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:water_wheel", - "display": { - "icon": { - "item": "minecraft:lava_bucket" - }, - "title": { - "translate": "advancement.create.lava_wheel" - }, - "description": { - "translate": "advancement.create.lava_wheel.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "0": { - "trigger": "create:lava_wheel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/maxed_windmill.json b/src/generated/resources/data/create/advancements/maxed_windmill.json deleted file mode 100644 index 63ad29a4d..000000000 --- a/src/generated/resources/data/create/advancements/maxed_windmill.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:windmill", - "display": { - "icon": { - "item": "create:windmill_bearing" - }, - "title": { - "translate": "advancement.create.maxed_windmill" - }, - "description": { - "translate": "advancement.create.maxed_windmill.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:maxed_windmill", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/mechanical_arm.json b/src/generated/resources/data/create/advancements/mechanical_arm.json deleted file mode 100644 index 9ef076a60..000000000 --- a/src/generated/resources/data/create/advancements/mechanical_arm.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:brass_casing", - "display": { - "icon": { - "item": "create:mechanical_arm" - }, - "title": { - "translate": "advancement.create.mechanical_arm" - }, - "description": { - "translate": "advancement.create.mechanical_arm.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:mechanical_arm", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/mechanical_drill.json b/src/generated/resources/data/create/advancements/mechanical_drill.json deleted file mode 100644 index e669706f4..000000000 --- a/src/generated/resources/data/create/advancements/mechanical_drill.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:andesite_casing", - "display": { - "icon": { - "item": "create:mechanical_drill" - }, - "title": { - "translate": "advancement.create.mechanical_drill" - }, - "description": { - "translate": "advancement.create.mechanical_drill.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:mechanical_drill" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/mechanical_saw.json b/src/generated/resources/data/create/advancements/mechanical_saw.json deleted file mode 100644 index 36df9df2d..000000000 --- a/src/generated/resources/data/create/advancements/mechanical_saw.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:press", - "display": { - "icon": { - "item": "create:mechanical_saw" - }, - "title": { - "translate": "advancement.create.mechanical_saw" - }, - "description": { - "translate": "advancement.create.mechanical_saw.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:mechanical_saw" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/millstone.json b/src/generated/resources/data/create/advancements/millstone.json deleted file mode 100644 index 7272ebb41..000000000 --- a/src/generated/resources/data/create/advancements/millstone.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:andesite_alloy", - "display": { - "icon": { - "item": "create:millstone" - }, - "title": { - "translate": "advancement.create.millstone" - }, - "description": { - "translate": "advancement.create.millstone.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:millstone" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/mixer.json b/src/generated/resources/data/create/advancements/mixer.json deleted file mode 100644 index e9c2b0a49..000000000 --- a/src/generated/resources/data/create/advancements/mixer.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "create:basin", - "display": { - "icon": { - "item": "create:mechanical_mixer" - }, - "title": { - "translate": "advancement.create.mixer" - }, - "description": { - "translate": "advancement.create.mixer.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:mechanical_mixer" - } - }, - "1": { - "trigger": "create:mixer", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/musical_arm.json b/src/generated/resources/data/create/advancements/musical_arm.json deleted file mode 100644 index e9d6ea5c6..000000000 --- a/src/generated/resources/data/create/advancements/musical_arm.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:mechanical_arm", - "display": { - "icon": { - "item": "minecraft:music_disc_13" - }, - "title": { - "translate": "advancement.create.musical_arm" - }, - "description": { - "translate": "advancement.create.musical_arm.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:musical_arm", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/nixie_tube.json b/src/generated/resources/data/create/advancements/nixie_tube.json deleted file mode 100644 index 597db56b1..000000000 --- a/src/generated/resources/data/create/advancements/nixie_tube.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:brass_casing", - "display": { - "icon": { - "item": "create:nixie_tube" - }, - "title": { - "translate": "advancement.create.nixie_tube" - }, - "description": { - "translate": "advancement.create.nixie_tube.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:nixie_tube" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/overstress_flywheel.json b/src/generated/resources/data/create/advancements/overstress_flywheel.json deleted file mode 100644 index 167e4c3db..000000000 --- a/src/generated/resources/data/create/advancements/overstress_flywheel.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:flywheel", - "display": { - "icon": { - "item": "create:furnace_engine" - }, - "title": { - "translate": "advancement.create.overstress_flywheel" - }, - "description": { - "translate": "advancement.create.overstress_flywheel.desc" - }, - "frame": "challenge", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:overstress_flywheel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/overstressed.json b/src/generated/resources/data/create/advancements/overstressed.json deleted file mode 100644 index 5c37c63a4..000000000 --- a/src/generated/resources/data/create/advancements/overstressed.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:its_alive", - "display": { - "icon": { - "item": "minecraft:barrier" - }, - "title": { - "translate": "advancement.create.overstressed" - }, - "description": { - "translate": "advancement.create.overstressed.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": true - }, - "criteria": { - "0": { - "trigger": "create:overstressed", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/pipe_collision.json b/src/generated/resources/data/create/advancements/pipe_collision.json deleted file mode 100644 index a2ebbaecb..000000000 --- a/src/generated/resources/data/create/advancements/pipe_collision.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:glass_pipe", - "display": { - "icon": { - "item": "create:fluid_valve" - }, - "title": { - "translate": "advancement.create.pipe_collision" - }, - "description": { - "translate": "advancement.create.pipe_collision.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:pipe_collision", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/pipe_spill.json b/src/generated/resources/data/create/advancements/pipe_spill.json deleted file mode 100644 index 352a83ee4..000000000 --- a/src/generated/resources/data/create/advancements/pipe_spill.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:glass_pipe", - "display": { - "icon": { - "item": "minecraft:bucket" - }, - "title": { - "translate": "advancement.create.pipe_spill" - }, - "description": { - "translate": "advancement.create.pipe_spill.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:pipe_spill", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/polished_rose_quartz.json b/src/generated/resources/data/create/advancements/polished_rose_quartz.json deleted file mode 100644 index b1decb17f..000000000 --- a/src/generated/resources/data/create/advancements/polished_rose_quartz.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:andesite_casing", - "display": { - "icon": { - "item": "create:polished_rose_quartz" - }, - "title": { - "translate": "advancement.create.polished_rose_quartz" - }, - "description": { - "translate": "advancement.create.polished_rose_quartz.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_rose_quartz" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/press.json b/src/generated/resources/data/create/advancements/press.json deleted file mode 100644 index 57eab0194..000000000 --- a/src/generated/resources/data/create/advancements/press.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:andesite_casing", - "display": { - "icon": { - "item": "create:mechanical_press" - }, - "title": { - "translate": "advancement.create.press" - }, - "description": { - "translate": "advancement.create.press.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:bonk", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/andesite.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/andesite.json deleted file mode 100644 index 344f964cc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/andesite.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite" - ] - }, - "criteria": { - "has_andesite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite" - } - } - }, - "requirements": [ - [ - "has_andesite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json deleted file mode 100644 index da856538c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/aluminum_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/aluminum_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_aluminum_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/aluminum_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json deleted file mode 100644 index fb63b0eb7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_aluminum_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_aluminum_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_aluminum_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_aluminum_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json deleted file mode 100644 index 9e3d45634..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_lead_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_lead_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_mekanism.json deleted file mode 100644 index 1885ec356..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_lead_compat_mekanism.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_lead_compat_mekanism" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_lead_compat_mekanism" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json deleted file mode 100644 index f0e0c5f2a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_nickel_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_nickel_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_nickel_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_nickel_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_osmium_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_osmium_compat_mekanism.json deleted file mode 100644 index c2a16b13e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_osmium_compat_mekanism.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_osmium_compat_mekanism" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_osmium_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_osmium_compat_mekanism" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json deleted file mode 100644 index 1c3df65ab..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_silver_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_silver_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_silver_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_tin_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_tin_compat_mekanism.json deleted file mode 100644 index a3b8566b0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_tin_compat_mekanism.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_tin_compat_mekanism" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_tin_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_tin_compat_mekanism" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json deleted file mode 100644 index 3124305fa..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_uranium_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_uranium_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_uranium_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_mekanism.json deleted file mode 100644 index 32a7cfc4e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/ingot_uranium_compat_mekanism.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/ingot_uranium_compat_mekanism" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_uranium_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/ingot_uranium_compat_mekanism" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_eidolon.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_eidolon.json deleted file mode 100644 index e2b59a105..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_eidolon.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/lead_ingot_compat_eidolon" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/lead_ingot_compat_eidolon" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json deleted file mode 100644 index 7db99d24f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/lead_ingot_compat_mysticalworld" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/lead_ingot_compat_mysticalworld" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 9baf5c094..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/lead_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/lead_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_thermal.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_thermal.json deleted file mode 100644 index d1d9d5e92..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/lead_ingot_compat_thermal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/lead_ingot_compat_thermal" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/lead_ingot_compat_thermal" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 0dd0f330a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/nickel_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_nickel_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/nickel_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_thermal.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_thermal.json deleted file mode 100644 index ef3951a56..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/nickel_ingot_compat_thermal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/nickel_ingot_compat_thermal" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_nickel_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/nickel_ingot_compat_thermal" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json deleted file mode 100644 index cee7a6143..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/platinum_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/platinum_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_platinum_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/platinum_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json deleted file mode 100644 index 703399829..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/quicksilver_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/quicksilver_ingot_compat_mysticalworld" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_quicksilver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/quicksilver_ingot_compat_mysticalworld" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_iceandfire.json deleted file mode 100644 index 30a8d2fdc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_iceandfire.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/silver_ingot_compat_iceandfire" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/silver_ingot_compat_iceandfire" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json deleted file mode 100644 index 1c89bad02..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/silver_ingot_compat_mysticalworld" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/silver_ingot_compat_mysticalworld" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 916b7198d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/silver_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/silver_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_thermal.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_thermal.json deleted file mode 100644 index 05e2d52e6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/silver_ingot_compat_thermal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/silver_ingot_compat_thermal" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/silver_ingot_compat_thermal" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json deleted file mode 100644 index 8097c78c9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/tin_ingot_compat_mysticalworld" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_tin_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/tin_ingot_compat_mysticalworld" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 4ab948dc1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/tin_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_tin_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/tin_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_thermal.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_thermal.json deleted file mode 100644 index 31234b7cc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/tin_ingot_compat_thermal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/tin_ingot_compat_thermal" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_tin_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/tin_ingot_compat_thermal" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json deleted file mode 100644 index b9deb38e0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/blasting/uranium_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/uranium_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_uranium_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/uranium_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/diorite.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/diorite.json deleted file mode 100644 index df09f4529..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/diorite.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite" - ] - }, - "criteria": { - "has_diorite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite" - } - } - }, - "requirements": [ - [ - "has_diorite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/granite.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/granite.json deleted file mode 100644 index f0a2adf3f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/granite.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite" - ] - }, - "criteria": { - "has_granite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite" - } - } - }, - "requirements": [ - [ - "has_granite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 989a17b16..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/aluminum_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/aluminum_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_aluminum_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/aluminum_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_framed_glass.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_framed_glass.json deleted file mode 100644 index 57ba85b42..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_framed_glass.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/glass_from_framed_glass" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:framed_glass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/glass_from_framed_glass" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_horizontal_framed_glass.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_horizontal_framed_glass.json deleted file mode 100644 index ff70d5217..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_horizontal_framed_glass.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/glass_from_horizontal_framed_glass" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:horizontal_framed_glass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/glass_from_horizontal_framed_glass" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_tiled_glass.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_tiled_glass.json deleted file mode 100644 index b7168a3e6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_tiled_glass.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/glass_from_tiled_glass" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:tiled_glass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/glass_from_tiled_glass" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_vertical_framed_glass.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_vertical_framed_glass.json deleted file mode 100644 index fbdd5272a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/glass_from_vertical_framed_glass.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/glass_from_vertical_framed_glass" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:vertical_framed_glass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/glass_from_vertical_framed_glass" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json deleted file mode 100644 index d93e8f57b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_aluminum_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_aluminum_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_aluminum_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_aluminum_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json deleted file mode 100644 index e0556cd50..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_lead_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_lead_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_mekanism.json deleted file mode 100644 index 6a273d83f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_lead_compat_mekanism.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_lead_compat_mekanism" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_lead_compat_mekanism" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json deleted file mode 100644 index e008f432a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_nickel_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_nickel_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_nickel_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_nickel_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_osmium_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_osmium_compat_mekanism.json deleted file mode 100644 index 4719c363d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_osmium_compat_mekanism.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_osmium_compat_mekanism" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_osmium_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_osmium_compat_mekanism" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json deleted file mode 100644 index a359a6511..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_silver_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_silver_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_silver_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_tin_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_tin_compat_mekanism.json deleted file mode 100644 index 2b25cbd3e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_tin_compat_mekanism.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_tin_compat_mekanism" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_tin_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_tin_compat_mekanism" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json deleted file mode 100644 index 67762dc69..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_immersiveengineering.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_uranium_compat_immersiveengineering" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_uranium_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_uranium_compat_immersiveengineering" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_mekanism.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_mekanism.json deleted file mode 100644 index a972216d2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/ingot_uranium_compat_mekanism.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/ingot_uranium_compat_mekanism" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_uranium_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/ingot_uranium_compat_mekanism" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_eidolon.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_eidolon.json deleted file mode 100644 index f5b37bec7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_eidolon.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/lead_ingot_compat_eidolon" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/lead_ingot_compat_eidolon" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json deleted file mode 100644 index 59611d7a7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/lead_ingot_compat_mysticalworld" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/lead_ingot_compat_mysticalworld" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 5854e4350..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/lead_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/lead_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_thermal.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_thermal.json deleted file mode 100644 index 9d8874f9b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/lead_ingot_compat_thermal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/lead_ingot_compat_thermal" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_lead_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/lead_ingot_compat_thermal" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 30cf3ee8d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/nickel_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_nickel_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/nickel_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_thermal.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_thermal.json deleted file mode 100644 index 11fe26842..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/nickel_ingot_compat_thermal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/nickel_ingot_compat_thermal" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_nickel_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/nickel_ingot_compat_thermal" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 2e3bea005..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/platinum_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/platinum_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_platinum_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/platinum_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json deleted file mode 100644 index 2ec4a4e04..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/quicksilver_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/quicksilver_ingot_compat_mysticalworld" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_quicksilver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/quicksilver_ingot_compat_mysticalworld" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_iceandfire.json deleted file mode 100644 index dfe220d08..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_iceandfire.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/silver_ingot_compat_iceandfire" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/silver_ingot_compat_iceandfire" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json deleted file mode 100644 index e01b36550..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/silver_ingot_compat_mysticalworld" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/silver_ingot_compat_mysticalworld" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 85c393349..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/silver_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/silver_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_thermal.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_thermal.json deleted file mode 100644 index e90a9f346..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/silver_ingot_compat_thermal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/silver_ingot_compat_thermal" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_silver_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/silver_ingot_compat_thermal" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json deleted file mode 100644 index c91bf7f7e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/tin_ingot_compat_mysticalworld" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_tin_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/tin_ingot_compat_mysticalworld" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json deleted file mode 100644 index f5a627d65..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/tin_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_tin_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/tin_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_thermal.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_thermal.json deleted file mode 100644 index a0e99fb44..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/tin_ingot_compat_thermal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/tin_ingot_compat_thermal" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_tin_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/tin_ingot_compat_thermal" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 173237f69..000000000 --- a/src/generated/resources/data/create/advancements/recipes/building_blocks/smelting/uranium_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/uranium_ingot_compat_silents_mechanisms" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_uranium_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/uranium_ingot_compat_silents_mechanisms" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/brass_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/create.base/blasting/brass_ingot_from_crushed.json deleted file mode 100644 index 410b71e13..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/brass_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/brass_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/brass_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/copper_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/create.base/blasting/copper_ingot_from_crushed.json deleted file mode 100644 index e77c1492d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/copper_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/copper_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_copper_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/copper_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/copper_ingot_from_ore.json b/src/generated/resources/data/create/advancements/recipes/create.base/blasting/copper_ingot_from_ore.json deleted file mode 100644 index 3a12efed5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/copper_ingot_from_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/copper_ingot_from_ore" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ores/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/copper_ingot_from_ore" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_crushed.json deleted file mode 100644 index fd559fe51..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/zinc_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_zinc_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/zinc_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_ore.json b/src/generated/resources/data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_ore.json deleted file mode 100644 index 414b2ee11..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/blasting/zinc_ingot_from_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/zinc_ingot_from_ore" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ores/zinc" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/zinc_ingot_from_ore" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json deleted file mode 100644 index cec124115..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/copper_backtank.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/appliances/copper_backtank" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/appliances/copper_backtank" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json deleted file mode 100644 index 1151c46ef..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_boots.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/appliances/diving_boots" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/appliances/diving_boots" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json deleted file mode 100644 index 91f879caa..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/diving_helmet.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/appliances/diving_helmet" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/appliances/diving_helmet" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/dough.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/dough.json deleted file mode 100644 index 86779905d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/dough.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/appliances/dough" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:wheat_flour" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/appliances/dough" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json deleted file mode 100644 index 1460cf305..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/appliances/tree_fertilizer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/appliances/tree_fertilizer" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:bone_meal" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/appliances/tree_fertilizer" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/minecart_coupling.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/minecart_coupling.json deleted file mode 100644 index 872339a55..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/minecart_coupling.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/curiosities/minecart_coupling" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/curiosities/minecart_coupling" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/wand_of_symmetry.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/wand_of_symmetry.json deleted file mode 100644 index f5918fa59..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/curiosities/wand_of_symmetry.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/curiosities/wand_of_symmetry" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:refined_radiance" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/curiosities/wand_of_symmetry" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/adjustable_chain_gearshift.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/adjustable_chain_gearshift.json deleted file mode 100644 index cda9ede92..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/adjustable_chain_gearshift.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/adjustable_chain_gearshift" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/adjustable_chain_gearshift" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/analog_lever.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/analog_lever.json deleted file mode 100644 index bc41f412f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/analog_lever.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/analog_lever" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/analog_lever" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/attribute_filter.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/attribute_filter.json deleted file mode 100644 index e41c26b07..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/attribute_filter.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/attribute_filter" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/attribute_filter" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/basin.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/basin.json deleted file mode 100644 index d3d5254a9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/basin.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/basin" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/basin" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/belt_connector.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/belt_connector.json deleted file mode 100644 index 940d1e66b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/belt_connector.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/belt_connector" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/belt_connector" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_seat.json deleted file mode 100644 index 8b33d36c8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/black_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/black_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_seat_from_other_seat.json deleted file mode 100644 index bc08eddf1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/black_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/black_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 8bdf74353..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/black_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/black_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/black_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat.json deleted file mode 100644 index 12b03d12c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/blue_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/blue_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat_from_other_seat.json deleted file mode 100644 index 7542f5ed1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/blue_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/blue_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 1a3031598..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/blue_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/blue_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brass_hand.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brass_hand.json deleted file mode 100644 index e5820fd02..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brass_hand.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/brass_hand" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/brass_hand" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat.json deleted file mode 100644 index e9a468d07..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/brown_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/brown_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat_from_other_seat.json deleted file mode 100644 index c447060b5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/brown_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/brown_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json deleted file mode 100644 index bd82388be..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/brown_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/brown_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cart_assembler.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cart_assembler.json deleted file mode 100644 index 58d4e1f60..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cart_assembler.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/cart_assembler" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/cart_assembler" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/chute.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/chute.json deleted file mode 100644 index b84c0238f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/chute.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/chute" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/chute" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/clockwork_bearing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/clockwork_bearing.json deleted file mode 100644 index 915720362..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/clockwork_bearing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/clockwork_bearing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/clockwork_bearing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/clutch.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/clutch.json deleted file mode 100644 index dc4233d60..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/clutch.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/clutch" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/clutch" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cogwheel.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cogwheel.json deleted file mode 100644 index 9bac23b35..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cogwheel.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/cogwheel" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/cogwheel" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json deleted file mode 100644 index 0e88c3224..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/controller_rail.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/controller_rail" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:powered_rail" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/controller_rail" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json deleted file mode 100644 index db57fc099..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/copper_valve_handle" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/copper_valve_handle" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json deleted file mode 100644 index a90d4393a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/copper_valve_handle_from_others.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/copper_valve_handle_from_others" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/copper_valve_handle_from_others" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/crafter_slot_cover.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/crafter_slot_cover.json deleted file mode 100644 index e62ac2d16..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/crafter_slot_cover.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/crafter_slot_cover" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:mechanical_crafter" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/crafter_slot_cover" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cuckoo_clock.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cuckoo_clock.json deleted file mode 100644 index 75b3209d1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cuckoo_clock.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/cuckoo_clock" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/cuckoo_clock" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat.json deleted file mode 100644 index 33f80b748..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/cyan_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/cyan_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat_from_other_seat.json deleted file mode 100644 index 44c2abd20..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/cyan_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/cyan_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 5187127a4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/cyan_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/cyan_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/deployer.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/deployer.json deleted file mode 100644 index 6e1b08c90..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/deployer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/deployer" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:electron_tube" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/deployer" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/depot.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/depot.json deleted file mode 100644 index ed24693db..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/depot.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/depot" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/depot" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/empty_blaze_burner.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/empty_blaze_burner.json deleted file mode 100644 index f65231625..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/empty_blaze_burner.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/empty_blaze_burner" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/iron" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/empty_blaze_burner" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/encased_chain_drive.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/encased_chain_drive.json deleted file mode 100644 index 47fd453c3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/encased_chain_drive.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/encased_chain_drive" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/encased_chain_drive" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/encased_fan.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/encased_fan.json deleted file mode 100644 index 254e674ce..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/encased_fan.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/encased_fan" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:plates/iron" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/encased_fan" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/filter.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/filter.json deleted file mode 100644 index 36127869f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/filter.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/filter" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/filter" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe.json deleted file mode 100644 index f4703e0d7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_pipe.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/fluid_pipe" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/fluid_pipe" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json deleted file mode 100644 index 4fa9e9078..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_tank.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/fluid_tank" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/fluid_tank" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json deleted file mode 100644 index 75d57d1cb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/fluid_valve.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/fluid_valve" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/fluid_valve" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gantry_carriage.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gantry_carriage.json deleted file mode 100644 index 736ef1b67..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gantry_carriage.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/gantry_carriage" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/gantry_carriage" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gantry_shaft.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gantry_shaft.json deleted file mode 100644 index fda6afd2b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gantry_shaft.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/gantry_shaft" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/gantry_shaft" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearbox.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearbox.json deleted file mode 100644 index a90a76b6d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearbox.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/gearbox" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:cogwheel" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/gearbox" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearboxfrom_conversion.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearboxfrom_conversion.json deleted file mode 100644 index a22051fca..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearboxfrom_conversion.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/gearboxfrom_conversion" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:vertical_gearbox" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/gearboxfrom_conversion" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearshift.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearshift.json deleted file mode 100644 index 7f05dd1ef..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gearshift.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/gearshift" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/gearshift" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/goggles.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/goggles.json deleted file mode 100644 index c3769977b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/goggles.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/goggles" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/goggles" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat.json deleted file mode 100644 index ce163d657..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/gray_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/gray_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat_from_other_seat.json deleted file mode 100644 index 45425f867..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/gray_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/gray_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json deleted file mode 100644 index ffab588b5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/gray_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/gray_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_seat.json deleted file mode 100644 index bec63bbd5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/green_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/green_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_seat_from_other_seat.json deleted file mode 100644 index 155141a47..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/green_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/green_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_valve_handle_from_other_valve_handle.json deleted file mode 100644 index cfe2c2170..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/green_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/green_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/green_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/hand_crank.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/hand_crank.json deleted file mode 100644 index 950138e6b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/hand_crank.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/hand_crank" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/hand_crank" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/hose_pulley.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/hose_pulley.json deleted file mode 100644 index bf53aa381..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/hose_pulley.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/hose_pulley" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/hose_pulley" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/item_drain.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/item_drain.json deleted file mode 100644 index 7f33fb16a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/item_drain.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/item_drain" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/item_drain" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel.json deleted file mode 100644 index 6eb279257..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/large_cogwheel.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/large_cogwheel" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/large_cogwheel" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat.json deleted file mode 100644 index dd453757e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/light_blue_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/light_blue_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat_from_other_seat.json deleted file mode 100644 index 247c9f705..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/light_blue_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/light_blue_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json deleted file mode 100644 index fa0b2fb03..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/light_blue_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/light_blue_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat.json deleted file mode 100644 index cf106ea91..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/light_gray_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/light_gray_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat_from_other_seat.json deleted file mode 100644 index 031031752..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/light_gray_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/light_gray_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 72a937bc2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/light_gray_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/light_gray_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat.json deleted file mode 100644 index 3bb7b2351..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/lime_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/lime_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat_from_other_seat.json deleted file mode 100644 index 9847e3d68..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/lime_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/lime_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 6737701bc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/lime_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/lime_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassis.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassis.json deleted file mode 100644 index 4b407eeb8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassis.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/linear_chassis" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/linear_chassis" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassisfrom_conversion.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassisfrom_conversion.json deleted file mode 100644 index 5c743bfea..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/linear_chassisfrom_conversion.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/linear_chassisfrom_conversion" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:secondary_linear_chassis" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/linear_chassisfrom_conversion" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat.json deleted file mode 100644 index 9fede11b2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/magenta_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/magenta_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat_from_other_seat.json deleted file mode 100644 index 9ad0ba711..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/magenta_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/magenta_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 1bcad6d5e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/magenta_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/magenta_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_arm.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_arm.json deleted file mode 100644 index 3556ce714..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_arm.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_arm" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_arm" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_bearing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_bearing.json deleted file mode 100644 index 48659ec96..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_bearing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_bearing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_bearing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_crafter.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_crafter.json deleted file mode 100644 index 8e1b56912..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_crafter.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_crafter" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_crafter" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_drill.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_drill.json deleted file mode 100644 index ff0ca6c5f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_drill.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_drill" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_drill" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_harvester.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_harvester.json deleted file mode 100644 index ce9082be8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_harvester.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_harvester" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_harvester" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_mixer.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_mixer.json deleted file mode 100644 index 10be909fe..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_mixer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_mixer" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_mixer" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_piston.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_piston.json deleted file mode 100644 index cb7d41f62..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_piston.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_piston" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_piston" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_plough.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_plough.json deleted file mode 100644 index 0e325efed..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_plough.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_plough" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_plough" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_press.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_press.json deleted file mode 100644 index 2989a2c45..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_press.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_press" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_press" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_pump.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_pump.json deleted file mode 100644 index 739f21b8b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_pump.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_pump" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_pump" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_saw.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_saw.json deleted file mode 100644 index 7075156fc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mechanical_saw.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mechanical_saw" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mechanical_saw" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/metal_bracket.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/metal_bracket.json deleted file mode 100644 index 620445626..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/metal_bracket.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/metal_bracket" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/metal_bracket" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/millstone.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/millstone.json deleted file mode 100644 index 5a3c3cd47..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/millstone.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/millstone" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/millstone" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mysterious_cuckoo_clock.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mysterious_cuckoo_clock.json deleted file mode 100644 index c84de36a0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/mysterious_cuckoo_clock.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/mysterious_cuckoo_clock" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:cuckoo_clock" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/mysterious_cuckoo_clock" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/nixie_tube.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/nixie_tube.json deleted file mode 100644 index 2ecea730b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/nixie_tube.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/nixie_tube" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/nixie_tube" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/nozzle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/nozzle.json deleted file mode 100644 index 7ed52dce6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/nozzle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/nozzle" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:encased_fan" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/nozzle" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat.json deleted file mode 100644 index da6145b74..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/orange_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/orange_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat_from_other_seat.json deleted file mode 100644 index 8fed16498..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/orange_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/orange_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 16ed46126..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/orange_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/orange_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat.json deleted file mode 100644 index 1881091f9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/pink_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/pink_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat_from_other_seat.json deleted file mode 100644 index 51063b0e4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/pink_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/pink_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 15e4c19d3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/pink_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/pink_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/piston_extension_pole.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/piston_extension_pole.json deleted file mode 100644 index 90d079a23..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/piston_extension_pole.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/piston_extension_pole" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/piston_extension_pole" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/portable_fluid_interface.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/portable_fluid_interface.json deleted file mode 100644 index 2b2f247b3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/portable_fluid_interface.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/portable_fluid_interface" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/portable_fluid_interface" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/portable_storage_interface.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/portable_storage_interface.json deleted file mode 100644 index b2f967f18..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/portable_storage_interface.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/portable_storage_interface" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/portable_storage_interface" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/propeller.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/propeller.json deleted file mode 100644 index e1302e947..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/propeller.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/propeller" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:plates/iron" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/propeller" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat.json deleted file mode 100644 index 3fdf3cb66..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/purple_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/purple_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat_from_other_seat.json deleted file mode 100644 index 90e363ce7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/purple_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/purple_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json deleted file mode 100644 index c786dc642..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/purple_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/purple_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/radial_chassis.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/radial_chassis.json deleted file mode 100644 index c98a0269a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/radial_chassis.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/radial_chassis" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/radial_chassis" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_seat.json deleted file mode 100644 index fb6ce3f63..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/red_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/red_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_seat_from_other_seat.json deleted file mode 100644 index 241b9ca0d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/red_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/red_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 0b9c8a9b9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/red_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/red_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/red_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/rope_pulley.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/rope_pulley.json deleted file mode 100644 index 18e1b7f63..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/rope_pulley.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/rope_pulley" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/rope_pulley" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/rotation_speed_controller.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/rotation_speed_controller.json deleted file mode 100644 index 84663da4e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/rotation_speed_controller.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/rotation_speed_controller" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/rotation_speed_controller" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sail_frame.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sail_frame.json deleted file mode 100644 index bc975d517..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sail_frame.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/sail_frame" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/sail_frame" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/secondary_linear_chassisfrom_conversion.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/secondary_linear_chassisfrom_conversion.json deleted file mode 100644 index ea7429cb0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/secondary_linear_chassisfrom_conversion.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/secondary_linear_chassisfrom_conversion" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:linear_chassis" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/secondary_linear_chassisfrom_conversion" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sequenced_gearshift.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sequenced_gearshift.json deleted file mode 100644 index 6a11ee4e5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sequenced_gearshift.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/sequenced_gearshift" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/sequenced_gearshift" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/shaft.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/shaft.json deleted file mode 100644 index bedb0be0e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/shaft.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/shaft" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/shaft" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/smart_chute.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/smart_chute.json deleted file mode 100644 index 1f1243833..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/smart_chute.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/smart_chute" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:chute" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/smart_chute" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/smart_fluid_pipe.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/smart_fluid_pipe.json deleted file mode 100644 index a1ade7524..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/smart_fluid_pipe.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/smart_fluid_pipe" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/smart_fluid_pipe" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/speedometer.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/speedometer.json deleted file mode 100644 index 666e65f86..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/speedometer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/speedometer" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/speedometer" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/speedometerfrom_conversion.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/speedometerfrom_conversion.json deleted file mode 100644 index d8b6f2aa0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/speedometerfrom_conversion.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/speedometerfrom_conversion" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:stressometer" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/speedometerfrom_conversion" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/spout.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/spout.json deleted file mode 100644 index 2129ec94f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/spout.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/spout" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/spout" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sticker.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sticker.json deleted file mode 100644 index 65c58bb33..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sticker.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/sticker" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/sticker" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sticky_mechanical_piston.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sticky_mechanical_piston.json deleted file mode 100644 index d9e54a733..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/sticky_mechanical_piston.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/sticky_mechanical_piston" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/sticky_mechanical_piston" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/stressometerfrom_conversion.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/stressometerfrom_conversion.json deleted file mode 100644 index 173e1a4ee..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/stressometerfrom_conversion.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/stressometerfrom_conversion" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:speedometer" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/stressometerfrom_conversion" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/super_glue.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/super_glue.json deleted file mode 100644 index 6027a950d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/super_glue.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/super_glue" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:plates/iron" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/super_glue" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/turntable.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/turntable.json deleted file mode 100644 index ba0f5449a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/turntable.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/turntable" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/turntable" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearboxfrom_conversion.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearboxfrom_conversion.json deleted file mode 100644 index e4116fd6f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/vertical_gearboxfrom_conversion.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/vertical_gearboxfrom_conversion" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gearbox" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/vertical_gearboxfrom_conversion" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/water_wheel.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/water_wheel.json deleted file mode 100644 index ea79ab3f3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/water_wheel.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/water_wheel" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/water_wheel" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/weighted_ejector.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/weighted_ejector.json deleted file mode 100644 index d88cdf3c4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/weighted_ejector.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/weighted_ejector" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/weighted_ejector" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/whisk.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/whisk.json deleted file mode 100644 index f733a21ae..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/whisk.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/whisk" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:plates/iron" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/whisk" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_sail.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_sail.json deleted file mode 100644 index 57c62a793..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_sail.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/white_sail" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:sail_frame" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/white_sail" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_seat.json deleted file mode 100644 index 8c0d2ca84..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/white_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/white_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_seat_from_other_seat.json deleted file mode 100644 index a340aaddf..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/white_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/white_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 705e2397e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/white_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/white_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/white_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/windmill_bearing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/windmill_bearing.json deleted file mode 100644 index 56800919a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/windmill_bearing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/windmill_bearing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/windmill_bearing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/wooden_bracket.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/wooden_bracket.json deleted file mode 100644 index 4ba4de6a6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/wooden_bracket.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/wooden_bracket" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/wooden_bracket" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/wrench.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/wrench.json deleted file mode 100644 index 5efe4f99d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/wrench.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/wrench" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/wrench" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat.json deleted file mode 100644 index c94918cee..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/yellow_seat" - ] - }, - "criteria": { - "has_wool": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:wool" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/yellow_seat" - } - } - }, - "requirements": [ - [ - "has_wool", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat_from_other_seat.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat_from_other_seat.json deleted file mode 100644 index e800461bd..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_seat_from_other_seat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/yellow_seat_from_other_seat" - ] - }, - "criteria": { - "has_seat": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:seats" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/yellow_seat_from_other_seat" - } - } - }, - "requirements": [ - [ - "has_seat", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 907e43247..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/yellow_valve_handle_from_other_valve_handle" - ] - }, - "criteria": { - "has_valve": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "create:valve_handles" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/yellow_valve_handle_from_other_valve_handle" - } - } - }, - "requirements": [ - [ - "has_valve", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_crate.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_crate.json deleted file mode 100644 index 842f64e5d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_crate.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/adjustable_crate" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/adjustable_crate" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_pulse_repeater.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_pulse_repeater.json deleted file mode 100644 index 72a52cf20..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_pulse_repeater.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/adjustable_pulse_repeater" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:dusts/redstone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/adjustable_pulse_repeater" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_repeater.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_repeater.json deleted file mode 100644 index ede7f6671..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/adjustable_repeater.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/adjustable_repeater" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:dusts/redstone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/adjustable_repeater" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/andesite_funnel.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/andesite_funnel.json deleted file mode 100644 index 2ac237ac1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/andesite_funnel.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/andesite_funnel" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/andesite_funnel" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/andesite_tunnel.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/andesite_tunnel.json deleted file mode 100644 index 6d7ae3a09..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/andesite_tunnel.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/andesite_tunnel" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/andesite_tunnel" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/brass_funnel.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/brass_funnel.json deleted file mode 100644 index d75f4efd1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/brass_funnel.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/brass_funnel" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/brass_funnel" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/brass_tunnel.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/brass_tunnel.json deleted file mode 100644 index b3b828e95..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/brass_tunnel.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/brass_tunnel" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/brass_tunnel" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/content_observer.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/content_observer.json deleted file mode 100644 index 84dde5a75..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/content_observer.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/content_observer" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:belt_connector" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/content_observer" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/powered_latch.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/powered_latch.json deleted file mode 100644 index c08220645..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/powered_latch.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/powered_latch" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:dusts/redstone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/powered_latch" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/powered_toggle_latch.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/powered_toggle_latch.json deleted file mode 100644 index e85619653..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/powered_toggle_latch.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/powered_toggle_latch" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:dusts/redstone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/powered_toggle_latch" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/pulse_repeater.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/pulse_repeater.json deleted file mode 100644 index 555126dbf..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/pulse_repeater.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/pulse_repeater" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:dusts/redstone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/pulse_repeater" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/redstone_contact.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/redstone_contact.json deleted file mode 100644 index a403d3928..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/redstone_contact.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/redstone_contact" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/redstone_contact" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/redstone_link.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/redstone_link.json deleted file mode 100644 index cdc2d55a7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/redstone_link.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/redstone_link" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/redstone_link" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/stockpile_switch.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/stockpile_switch.json deleted file mode 100644 index 1bdcdc4d8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/logistics/stockpile_switch.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/logistics/stockpile_switch" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_casing" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/logistics/stockpile_switch" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy.json deleted file mode 100644 index 0075e033a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/andesite_alloy" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/iron" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/andesite_alloy" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy_from_zinc.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy_from_zinc.json deleted file mode 100644 index 355a2c166..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_alloy_from_zinc.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/andesite_alloy_from_zinc" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/zinc" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/andesite_alloy_from_zinc" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json deleted file mode 100644 index c727d9a07..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/andesite_casing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/andesite_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/andesite_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_block_from_compacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_block_from_compacting.json deleted file mode 100644 index c82f846bd..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_block_from_compacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/brass_block_from_compacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_ingot" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/brass_block_from_compacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json deleted file mode 100644 index 120f69022..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_casing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/brass_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/brass_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_compacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_compacting.json deleted file mode 100644 index 21bea3329..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_compacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/brass_ingot_from_compacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_nugget" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/brass_ingot_from_compacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_decompacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_decompacting.json deleted file mode 100644 index b35715dd9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_ingot_from_decompacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/brass_ingot_from_decompacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_block" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/brass_ingot_from_decompacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_nugget_from_decompacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_nugget_from_decompacting.json deleted file mode 100644 index 00497b458..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/brass_nugget_from_decompacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/brass_nugget_from_decompacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:brass_ingot" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/brass_nugget_from_decompacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_block_from_compacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_block_from_compacting.json deleted file mode 100644 index b86bc2e39..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_block_from_compacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/copper_block_from_compacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_ingot" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/copper_block_from_compacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json deleted file mode 100644 index 138691b87..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_casing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/copper_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ingots/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/copper_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_ingot_from_compacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_ingot_from_compacting.json deleted file mode 100644 index 41e28bdf2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_ingot_from_compacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/copper_ingot_from_compacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_nugget" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/copper_ingot_from_compacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_ingot_from_decompacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_ingot_from_decompacting.json deleted file mode 100644 index 65b697c08..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_ingot_from_decompacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/copper_ingot_from_decompacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_block" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/copper_ingot_from_decompacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_nugget_from_decompacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_nugget_from_decompacting.json deleted file mode 100644 index 30d5b839d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/copper_nugget_from_decompacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/copper_nugget_from_decompacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:copper_ingot" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/copper_nugget_from_decompacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/electron_tube.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/electron_tube.json deleted file mode 100644 index b966d9ca1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/electron_tube.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/electron_tube" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:rose_quartz" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/electron_tube" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/red_sand_paper.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/red_sand_paper.json deleted file mode 100644 index 95ac881ef..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/red_sand_paper.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/red_sand_paper" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:paper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/red_sand_paper" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json deleted file mode 100644 index 6f617c359..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/refined_radiance_casing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/refined_radiance_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:refined_radiance" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/refined_radiance_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/rose_quartz.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/rose_quartz.json deleted file mode 100644 index 13a8323bd..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/rose_quartz.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/rose_quartz" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:redstone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/rose_quartz" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/sand_paper.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/sand_paper.json deleted file mode 100644 index 1eb4e0ed6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/sand_paper.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/sand_paper" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:paper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/sand_paper" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json deleted file mode 100644 index 289a24a47..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/shadow_steel_casing.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/shadow_steel_casing" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:shadow_steel" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/shadow_steel_casing" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_block_from_compacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_block_from_compacting.json deleted file mode 100644 index 590a4f8dc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_block_from_compacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/zinc_block_from_compacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:zinc_ingot" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/zinc_block_from_compacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_compacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_compacting.json deleted file mode 100644 index 91df3c122..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_compacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/zinc_ingot_from_compacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:zinc_nugget" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/zinc_ingot_from_compacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_decompacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_decompacting.json deleted file mode 100644 index d21e09664..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_ingot_from_decompacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/zinc_ingot_from_decompacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:zinc_block" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/zinc_ingot_from_decompacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_nugget_from_decompacting.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_nugget_from_decompacting.json deleted file mode 100644 index fba56500c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/materials/zinc_nugget_from_decompacting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/materials/zinc_nugget_from_decompacting" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:zinc_ingot" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/materials/zinc_nugget_from_decompacting" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_shingles.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_shingles.json deleted file mode 100644 index 7f4e014ea..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_shingles.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/palettes/copper_shingles" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:plates/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/palettes/copper_shingles" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_shingles_from_tiles.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_shingles_from_tiles.json deleted file mode 100644 index 31eab5581..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_shingles_from_tiles.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/palettes/copper_shingles_from_tiles" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:plates/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/palettes/copper_shingles_from_tiles" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_tiles.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_tiles.json deleted file mode 100644 index e4f05fb0a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/palettes/copper_tiles.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/palettes/copper_tiles" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:plates/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/palettes/copper_tiles" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/empty_schematic.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/empty_schematic.json deleted file mode 100644 index 47e1f61c6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/empty_schematic.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/schematics/empty_schematic" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:paper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/schematics/empty_schematic" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematic_and_quill.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematic_and_quill.json deleted file mode 100644 index 65b6bb5ca..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematic_and_quill.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/schematics/schematic_and_quill" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:paper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/schematics/schematic_and_quill" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematic_table.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematic_table.json deleted file mode 100644 index 99ceda704..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematic_table.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/schematics/schematic_table" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:empty_schematic" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/schematics/schematic_table" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematicannon.json b/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematicannon.json deleted file mode 100644 index 884da6481..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/crafting/schematics/schematicannon.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/schematics/schematicannon" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:empty_schematic" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/schematics/schematicannon" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/brass_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/create.base/smelting/brass_ingot_from_crushed.json deleted file mode 100644 index 10f3b5b11..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/brass_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/brass_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_brass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/brass_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/copper_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/create.base/smelting/copper_ingot_from_crushed.json deleted file mode 100644 index 99ea3d964..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/copper_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/copper_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_copper_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/copper_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/copper_ingot_from_ore.json b/src/generated/resources/data/create/advancements/recipes/create.base/smelting/copper_ingot_from_ore.json deleted file mode 100644 index ee4c33734..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/copper_ingot_from_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/copper_ingot_from_ore" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ores/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/copper_ingot_from_ore" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_crushed.json deleted file mode 100644 index aaa7a23c4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/zinc_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_zinc_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/zinc_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_ore.json b/src/generated/resources/data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_ore.json deleted file mode 100644 index bacea3a86..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/smelting/zinc_ingot_from_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/zinc_ingot_from_ore" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:ores/zinc" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/zinc_ingot_from_ore" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/acacia_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/acacia_window.json deleted file mode 100644 index e1121e299..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/acacia_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:acacia_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:acacia_planks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:acacia_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/acacia_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/acacia_window_pane.json deleted file mode 100644 index a7a499c74..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/acacia_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:acacia_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:acacia_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:acacia_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_from_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_from_andesite_stonecutting.json deleted file mode 100644 index 3039fc5cb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_from_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_bricks_from_andesite_stonecutting" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_bricks_from_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_slab.json deleted file mode 100644 index efc389b54..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_bricks_slab" - ] - }, - "criteria": { - "has_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json deleted file mode 100644 index ca58c2291..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_bricks_slab_from_andesite_bricks_stonecutting" - ] - }, - "criteria": { - "has_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_bricks_slab_from_andesite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_stairs.json deleted file mode 100644 index 7cfdc41c9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_bricks_stairs" - ] - }, - "criteria": { - "has_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_stairs_from_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_stairs_from_andesite_bricks_stonecutting.json deleted file mode 100644 index dce848cc6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_stairs_from_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_bricks_stairs_from_andesite_bricks_stonecutting" - ] - }, - "criteria": { - "has_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_bricks_stairs_from_andesite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_wall.json deleted file mode 100644 index 071708632..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_bricks_wall" - ] - }, - "criteria": { - "has_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_wall_from_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_wall_from_andesite_bricks_stonecutting.json deleted file mode 100644 index 3abc38b69..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_bricks_wall_from_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_bricks_wall_from_andesite_bricks_stonecutting" - ] - }, - "criteria": { - "has_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_bricks_wall_from_andesite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_from_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_from_andesite_stonecutting.json deleted file mode 100644 index a6f2c81cd..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_from_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_cobblestone_from_andesite_stonecutting" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_cobblestone_from_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_slab.json deleted file mode 100644 index da96d8a74..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_cobblestone_slab" - ] - }, - "criteria": { - "has_andesite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_andesite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting.json deleted file mode 100644 index 76770ae2e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_andesite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs.json deleted file mode 100644 index 5fdbab08c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_cobblestone_stairs" - ] - }, - "criteria": { - "has_andesite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_andesite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json deleted file mode 100644 index 195e8dfcb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_andesite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall.json deleted file mode 100644 index da92fb964..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_cobblestone_wall" - ] - }, - "criteria": { - "has_andesite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_andesite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json deleted file mode 100644 index cda6c26cb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_andesite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_pillar.json deleted file mode 100644 index 7c9df9388..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_pillar" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_pillar" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_pillar_from_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_pillar_from_andesite_stonecutting.json deleted file mode 100644 index 2970f1531..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/andesite_pillar_from_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:andesite_pillar_from_andesite_stonecutting" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:andesite_pillar_from_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/birch_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/birch_window.json deleted file mode 100644 index 273ca7803..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/birch_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:birch_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:birch_planks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:birch_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/birch_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/birch_window_pane.json deleted file mode 100644 index 0fcbff993..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/birch_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:birch_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:birch_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:birch_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index b07d819cc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:chiseled_dark_scoria_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:chiseled_dark_scoria_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index b5ddb7d91..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:chiseled_dolomite_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:chiseled_dolomite_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index 0a53e7ecc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:chiseled_gabbro_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:chiseled_gabbro_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_limestone_from_limestone_stonecutting.json deleted file mode 100644 index de26d7ea9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:chiseled_limestone_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:chiseled_limestone_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_scoria_from_scoria_stonecutting.json deleted file mode 100644 index 6d8057a91..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:chiseled_scoria_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:chiseled_scoria_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 44c02a7c3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:chiseled_weathered_limestone_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:chiseled_weathered_limestone_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/crafting/palettes/dark_scoria.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/crafting/palettes/dark_scoria.json deleted file mode 100644 index 1b2379477..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/crafting/palettes/dark_scoria.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/palettes/dark_scoria" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/palettes/dark_scoria" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/crimson_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/crimson_window.json deleted file mode 100644 index a366cda82..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/crimson_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crimson_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:crimson_planks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crimson_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/crimson_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/crimson_window_pane.json deleted file mode 100644 index 1a74a5e54..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/crimson_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crimson_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crimson_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crimson_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_oak_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_oak_window.json deleted file mode 100644 index e7982eb0d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_oak_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_oak_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:dark_oak_planks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_oak_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_oak_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_oak_window_pane.json deleted file mode 100644 index 9ecf08b12..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_oak_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_oak_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_oak_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_oak_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria.json deleted file mode 100644 index 48a14dd4b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria" - ] - }, - "criteria": { - "has_dark_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_from_dark_scoria_stonecutting.json deleted file mode 100644 index a8a581c2d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_bricks_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_bricks_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab.json deleted file mode 100644 index 7d2057bde..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_bricks_slab" - ] - }, - "criteria": { - "has_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 8527416f4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_stairs.json deleted file mode 100644 index d8f8238a9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_bricks_stairs" - ] - }, - "criteria": { - "has_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 8cf9357b8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_wall.json deleted file mode 100644 index 2cdfcd169..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_bricks_wall" - ] - }, - "criteria": { - "has_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 5a6c600f3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_from_dark_scoria_stonecutting.json deleted file mode 100644 index ec009e47d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_cobblestone_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_cobblestone_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_slab.json deleted file mode 100644 index 42edeaf35..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_cobblestone_slab" - ] - }, - "criteria": { - "has_dark_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting.json deleted file mode 100644 index 8ad5b5dc7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs.json deleted file mode 100644 index 0cb537d9c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_cobblestone_stairs" - ] - }, - "criteria": { - "has_dark_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json deleted file mode 100644 index f9775b39a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall.json deleted file mode 100644 index 4a8b7f1cc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_cobblestone_wall" - ] - }, - "criteria": { - "has_dark_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json deleted file mode 100644 index e3c739711..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_pillar.json deleted file mode 100644 index dc1bc8e5e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_pillar" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_pillar" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_pillar_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_pillar_from_dark_scoria_stonecutting.json deleted file mode 100644 index 9cfbd4502..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dark_scoria_pillar_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dark_scoria_pillar_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dark_scoria_pillar_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_from_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_from_diorite_stonecutting.json deleted file mode 100644 index 1c69739b0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_from_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_bricks_from_diorite_stonecutting" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_bricks_from_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_slab.json deleted file mode 100644 index 8676a890d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_bricks_slab" - ] - }, - "criteria": { - "has_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json deleted file mode 100644 index 857679855..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_bricks_slab_from_diorite_bricks_stonecutting" - ] - }, - "criteria": { - "has_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_bricks_slab_from_diorite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_stairs.json deleted file mode 100644 index cc3663680..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_bricks_stairs" - ] - }, - "criteria": { - "has_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_stairs_from_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_stairs_from_diorite_bricks_stonecutting.json deleted file mode 100644 index 3709673ff..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_stairs_from_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_bricks_stairs_from_diorite_bricks_stonecutting" - ] - }, - "criteria": { - "has_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_bricks_stairs_from_diorite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_wall.json deleted file mode 100644 index 48457854d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_bricks_wall" - ] - }, - "criteria": { - "has_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_wall_from_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_wall_from_diorite_bricks_stonecutting.json deleted file mode 100644 index 48c9208f7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_bricks_wall_from_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_bricks_wall_from_diorite_bricks_stonecutting" - ] - }, - "criteria": { - "has_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_bricks_wall_from_diorite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_from_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_from_diorite_stonecutting.json deleted file mode 100644 index 14c638b7a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_from_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_cobblestone_from_diorite_stonecutting" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_cobblestone_from_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_slab.json deleted file mode 100644 index 664923209..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_cobblestone_slab" - ] - }, - "criteria": { - "has_diorite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_diorite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting.json deleted file mode 100644 index c00d1e326..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_diorite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs.json deleted file mode 100644 index c328bc565..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_cobblestone_stairs" - ] - }, - "criteria": { - "has_diorite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_diorite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json deleted file mode 100644 index 6da4e866b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_diorite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall.json deleted file mode 100644 index 02fd815f0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_cobblestone_wall" - ] - }, - "criteria": { - "has_diorite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_diorite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json deleted file mode 100644 index a18100a20..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_diorite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:diorite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_pillar.json deleted file mode 100644 index 846e74a19..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_pillar" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_pillar" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_pillar_from_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_pillar_from_diorite_stonecutting.json deleted file mode 100644 index 2e3db1f3e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/diorite_pillar_from_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:diorite_pillar_from_diorite_stonecutting" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:diorite_pillar_from_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite.json deleted file mode 100644 index 2ee623acf..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite" - ] - }, - "criteria": { - "has_dolomite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite" - } - } - }, - "requirements": [ - [ - "has_dolomite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_from_dolomite_stonecutting.json deleted file mode 100644 index 650700b1c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_bricks_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_bricks_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_slab.json deleted file mode 100644 index fa1299881..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_bricks_slab" - ] - }, - "criteria": { - "has_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json deleted file mode 100644 index 36f3a435c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_bricks_slab_from_dolomite_bricks_stonecutting" - ] - }, - "criteria": { - "has_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_bricks_slab_from_dolomite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_stairs.json deleted file mode 100644 index 63aa18730..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_bricks_stairs" - ] - }, - "criteria": { - "has_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_stairs_from_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_stairs_from_dolomite_bricks_stonecutting.json deleted file mode 100644 index 33f37116d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_stairs_from_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_bricks_stairs_from_dolomite_bricks_stonecutting" - ] - }, - "criteria": { - "has_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_bricks_stairs_from_dolomite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_wall.json deleted file mode 100644 index ba4e1a245..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_bricks_wall" - ] - }, - "criteria": { - "has_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_wall_from_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_wall_from_dolomite_bricks_stonecutting.json deleted file mode 100644 index 564061e38..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_bricks_wall_from_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_bricks_wall_from_dolomite_bricks_stonecutting" - ] - }, - "criteria": { - "has_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_bricks_wall_from_dolomite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_from_dolomite_stonecutting.json deleted file mode 100644 index bae7d8d73..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_cobblestone_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_cobblestone_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_slab.json deleted file mode 100644 index 489eca21a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_cobblestone_slab" - ] - }, - "criteria": { - "has_dolomite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_dolomite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting.json deleted file mode 100644 index b51059e18..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_dolomite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs.json deleted file mode 100644 index 14057c605..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_cobblestone_stairs" - ] - }, - "criteria": { - "has_dolomite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_dolomite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json deleted file mode 100644 index 209d3f379..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_dolomite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall.json deleted file mode 100644 index c1177769a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_cobblestone_wall" - ] - }, - "criteria": { - "has_dolomite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_dolomite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json deleted file mode 100644 index 85b71d405..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_dolomite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_pillar.json deleted file mode 100644 index d82162c4d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_pillar" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_pillar" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_pillar_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_pillar_from_dolomite_stonecutting.json deleted file mode 100644 index aafe9846a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/dolomite_pillar_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:dolomite_pillar_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:dolomite_pillar_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_from_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_from_andesite_stonecutting.json deleted file mode 100644 index 412ea7950..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_from_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_andesite_bricks_from_andesite_stonecutting" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_andesite_bricks_from_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab.json deleted file mode 100644 index 3c228e948..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_andesite_bricks_slab" - ] - }, - "criteria": { - "has_fancy_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_andesite_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json deleted file mode 100644 index 9a5617672..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_stairs.json deleted file mode 100644 index 58cc405bf..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_andesite_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_andesite_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting.json deleted file mode 100644 index c0f11b28b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_wall.json deleted file mode 100644 index 63f3329eb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_andesite_bricks_wall" - ] - }, - "criteria": { - "has_fancy_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_andesite_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting.json deleted file mode 100644 index 13c77eafb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_andesite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_andesite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_andesite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_from_dark_scoria_stonecutting.json deleted file mode 100644 index af121ccef..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dark_scoria_bricks_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dark_scoria_bricks_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_slab.json deleted file mode 100644 index cf0db0758..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dark_scoria_bricks_slab" - ] - }, - "criteria": { - "has_fancy_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dark_scoria_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 63f44a191..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_stairs.json deleted file mode 100644 index 52f0ef1b3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dark_scoria_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dark_scoria_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 4056f8c24..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_wall.json deleted file mode 100644 index 1d7399337..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dark_scoria_bricks_wall" - ] - }, - "criteria": { - "has_fancy_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dark_scoria_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 08475dce4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_dark_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dark_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_dark_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_from_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_from_diorite_stonecutting.json deleted file mode 100644 index fb69df6ec..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_from_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_diorite_bricks_from_diorite_stonecutting" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_diorite_bricks_from_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_slab.json deleted file mode 100644 index 0176917d8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_diorite_bricks_slab" - ] - }, - "criteria": { - "has_fancy_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_diorite_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting.json deleted file mode 100644 index 8a9099f59..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_stairs.json deleted file mode 100644 index e3cc9288b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_diorite_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_diorite_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting.json deleted file mode 100644 index 1fb67a289..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_wall.json deleted file mode 100644 index ce785fab7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_diorite_bricks_wall" - ] - }, - "criteria": { - "has_fancy_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_diorite_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting.json deleted file mode 100644 index d971cd311..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_diorite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_diorite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_diorite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_from_dolomite_stonecutting.json deleted file mode 100644 index b354c44d1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dolomite_bricks_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dolomite_bricks_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_slab.json deleted file mode 100644 index 97d18d6df..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dolomite_bricks_slab" - ] - }, - "criteria": { - "has_fancy_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dolomite_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting.json deleted file mode 100644 index 7571a3a9a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_stairs.json deleted file mode 100644 index f92531a0b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dolomite_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dolomite_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting.json deleted file mode 100644 index d1fbb3649..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_wall.json deleted file mode 100644 index d7f5ff4b3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dolomite_bricks_wall" - ] - }, - "criteria": { - "has_fancy_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dolomite_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting.json deleted file mode 100644 index 72628e22e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_dolomite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_dolomite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_dolomite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_from_gabbro_stonecutting.json deleted file mode 100644 index 69c46d927..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_gabbro_bricks_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_gabbro_bricks_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_slab.json deleted file mode 100644 index d6aa9e34b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_gabbro_bricks_slab" - ] - }, - "criteria": { - "has_fancy_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_gabbro_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting.json deleted file mode 100644 index 99aa64d3f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_stairs.json deleted file mode 100644 index 757e22720..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_gabbro_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_gabbro_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting.json deleted file mode 100644 index 92ce0460e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_wall.json deleted file mode 100644 index f607cc5c1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_gabbro_bricks_wall" - ] - }, - "criteria": { - "has_fancy_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_gabbro_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting.json deleted file mode 100644 index d09d21b98..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_from_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_from_granite_stonecutting.json deleted file mode 100644 index 588af47e6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_from_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_granite_bricks_from_granite_stonecutting" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_granite_bricks_from_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_slab.json deleted file mode 100644 index d72dabdc8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_granite_bricks_slab" - ] - }, - "criteria": { - "has_fancy_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_granite_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting.json deleted file mode 100644 index 0501d7615..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_stairs.json deleted file mode 100644 index 86bf7a29f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_granite_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_granite_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting.json deleted file mode 100644 index 9b88d8be3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_wall.json deleted file mode 100644 index 51dd5db27..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_granite_bricks_wall" - ] - }, - "criteria": { - "has_fancy_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_granite_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting.json deleted file mode 100644 index 0e3f4e180..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_from_limestone_stonecutting.json deleted file mode 100644 index f9acab6da..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_limestone_bricks_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_limestone_bricks_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_slab.json deleted file mode 100644 index 172138ca8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_limestone_bricks_slab" - ] - }, - "criteria": { - "has_fancy_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_limestone_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting.json deleted file mode 100644 index 90ede3fda..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_stairs.json deleted file mode 100644 index 13abf8c54..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_limestone_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_limestone_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting.json deleted file mode 100644 index ca3ef79e7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_wall.json deleted file mode 100644 index 0004f3004..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_limestone_bricks_wall" - ] - }, - "criteria": { - "has_fancy_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_limestone_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting.json deleted file mode 100644 index 4f04365c3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_from_scoria_stonecutting.json deleted file mode 100644 index 6ef057b9b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_scoria_bricks_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_scoria_bricks_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_slab.json deleted file mode 100644 index fe323c86a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_scoria_bricks_slab" - ] - }, - "criteria": { - "has_fancy_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_scoria_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting.json deleted file mode 100644 index 9175742de..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_stairs.json deleted file mode 100644 index 46b1b7864..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_scoria_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_scoria_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting.json deleted file mode 100644 index 5617ba513..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_wall.json deleted file mode 100644 index 48e07b1b3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_scoria_bricks_wall" - ] - }, - "criteria": { - "has_fancy_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_scoria_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting.json deleted file mode 100644 index b3d2d68c5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 7ddf991d4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_slab.json deleted file mode 100644 index d295da262..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_weathered_limestone_bricks_slab" - ] - }, - "criteria": { - "has_fancy_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_weathered_limestone_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_fancy_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index 895ba88fc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_stairs.json deleted file mode 100644 index beeec75aa..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_weathered_limestone_bricks_stairs" - ] - }, - "criteria": { - "has_fancy_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_weathered_limestone_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_fancy_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index 3748de3f5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall.json deleted file mode 100644 index b636213f6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_weathered_limestone_bricks_wall" - ] - }, - "criteria": { - "has_fancy_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_weathered_limestone_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_fancy_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index 825e07da5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_fancy_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:fancy_weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_fancy_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/framed_glass_from_glass_colorless_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/framed_glass_from_glass_colorless_stonecutting.json deleted file mode 100644 index 4d5b5c93f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/framed_glass_from_glass_colorless_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:framed_glass_from_glass_colorless_stonecutting" - ] - }, - "criteria": { - "has_glass_colorless": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:glass/colorless" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:framed_glass_from_glass_colorless_stonecutting" - } - } - }, - "requirements": [ - [ - "has_glass_colorless", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/framed_glass_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/framed_glass_pane.json deleted file mode 100644 index bcfd8b2b0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/framed_glass_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:framed_glass_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:framed_glass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:framed_glass_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro.json deleted file mode 100644 index 85c5c99b3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro" - ] - }, - "criteria": { - "has_gabbro_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro" - } - } - }, - "requirements": [ - [ - "has_gabbro_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_from_gabbro_stonecutting.json deleted file mode 100644 index 976baf358..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_bricks_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_bricks_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_slab.json deleted file mode 100644 index ab90cec6f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_bricks_slab" - ] - }, - "criteria": { - "has_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json deleted file mode 100644 index 905e7cde7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_bricks_slab_from_gabbro_bricks_stonecutting" - ] - }, - "criteria": { - "has_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_bricks_slab_from_gabbro_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_stairs.json deleted file mode 100644 index 3f3b76f20..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_bricks_stairs" - ] - }, - "criteria": { - "has_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_stairs_from_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_stairs_from_gabbro_bricks_stonecutting.json deleted file mode 100644 index 47ef77576..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_stairs_from_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_bricks_stairs_from_gabbro_bricks_stonecutting" - ] - }, - "criteria": { - "has_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_bricks_stairs_from_gabbro_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_wall.json deleted file mode 100644 index 34e599081..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_bricks_wall" - ] - }, - "criteria": { - "has_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_wall_from_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_wall_from_gabbro_bricks_stonecutting.json deleted file mode 100644 index 83a7618fe..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_bricks_wall_from_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_bricks_wall_from_gabbro_bricks_stonecutting" - ] - }, - "criteria": { - "has_gabbro_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_bricks_wall_from_gabbro_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_from_gabbro_stonecutting.json deleted file mode 100644 index 4492ef522..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_cobblestone_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_cobblestone_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_slab.json deleted file mode 100644 index 7ba44dd80..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_cobblestone_slab" - ] - }, - "criteria": { - "has_gabbro_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_gabbro_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting.json deleted file mode 100644 index 98a4f6bb8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_gabbro_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs.json deleted file mode 100644 index 2f72dce31..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_cobblestone_stairs" - ] - }, - "criteria": { - "has_gabbro_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_gabbro_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json deleted file mode 100644 index 643d2aee9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_gabbro_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall.json deleted file mode 100644 index 36afade3e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_cobblestone_wall" - ] - }, - "criteria": { - "has_gabbro_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_gabbro_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json deleted file mode 100644 index 8ab0b5493..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_gabbro_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_pillar.json deleted file mode 100644 index d33f4e3f3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_pillar" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_pillar" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_pillar_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_pillar_from_gabbro_stonecutting.json deleted file mode 100644 index 3c699ad6c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/gabbro_pillar_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:gabbro_pillar_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:gabbro_pillar_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_from_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_from_granite_stonecutting.json deleted file mode 100644 index 6df0b58af..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_from_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_bricks_from_granite_stonecutting" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_bricks_from_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_slab.json deleted file mode 100644 index dc3c01d97..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_bricks_slab" - ] - }, - "criteria": { - "has_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_slab_from_granite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_slab_from_granite_bricks_stonecutting.json deleted file mode 100644 index dbe091748..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_slab_from_granite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_bricks_slab_from_granite_bricks_stonecutting" - ] - }, - "criteria": { - "has_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_bricks_slab_from_granite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_stairs.json deleted file mode 100644 index 20a838236..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_bricks_stairs" - ] - }, - "criteria": { - "has_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_stairs_from_granite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_stairs_from_granite_bricks_stonecutting.json deleted file mode 100644 index 588788db7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_stairs_from_granite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_bricks_stairs_from_granite_bricks_stonecutting" - ] - }, - "criteria": { - "has_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_bricks_stairs_from_granite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_wall.json deleted file mode 100644 index 09f07b8c2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_bricks_wall" - ] - }, - "criteria": { - "has_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_wall_from_granite_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_wall_from_granite_bricks_stonecutting.json deleted file mode 100644 index f1c8a3965..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_bricks_wall_from_granite_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_bricks_wall_from_granite_bricks_stonecutting" - ] - }, - "criteria": { - "has_granite_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_bricks_wall_from_granite_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_from_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_from_granite_stonecutting.json deleted file mode 100644 index b16609946..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_from_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_cobblestone_from_granite_stonecutting" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_cobblestone_from_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_slab.json deleted file mode 100644 index 2b801c5ca..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_cobblestone_slab" - ] - }, - "criteria": { - "has_granite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_granite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_slab_from_granite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_slab_from_granite_cobblestone_stonecutting.json deleted file mode 100644 index 623902f90..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_slab_from_granite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_cobblestone_slab_from_granite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_granite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_cobblestone_slab_from_granite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs.json deleted file mode 100644 index 8635b0200..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_cobblestone_stairs" - ] - }, - "criteria": { - "has_granite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_granite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json deleted file mode 100644 index 42cc61f71..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_cobblestone_stairs_from_granite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_granite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_cobblestone_stairs_from_granite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_wall.json deleted file mode 100644 index bceae1413..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_cobblestone_wall" - ] - }, - "criteria": { - "has_granite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_granite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json deleted file mode 100644 index 60e5d9826..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_cobblestone_wall_from_granite_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_granite_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:granite_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_cobblestone_wall_from_granite_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_pillar.json deleted file mode 100644 index 884b1e38c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_pillar" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_pillar" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_pillar_from_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_pillar_from_granite_stonecutting.json deleted file mode 100644 index 9826b9d01..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/granite_pillar_from_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:granite_pillar_from_granite_stonecutting" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:granite_pillar_from_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/horizontal_framed_glass_from_glass_colorless_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/horizontal_framed_glass_from_glass_colorless_stonecutting.json deleted file mode 100644 index 024aac120..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/horizontal_framed_glass_from_glass_colorless_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:horizontal_framed_glass_from_glass_colorless_stonecutting" - ] - }, - "criteria": { - "has_glass_colorless": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:glass/colorless" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:horizontal_framed_glass_from_glass_colorless_stonecutting" - } - } - }, - "requirements": [ - [ - "has_glass_colorless", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/horizontal_framed_glass_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/horizontal_framed_glass_pane.json deleted file mode 100644 index 7d7fed9b5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/horizontal_framed_glass_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:horizontal_framed_glass_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:horizontal_framed_glass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:horizontal_framed_glass_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/jungle_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/jungle_window.json deleted file mode 100644 index f86a3d6e9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/jungle_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:jungle_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:jungle_planks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:jungle_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/jungle_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/jungle_window_pane.json deleted file mode 100644 index 3d2bd6806..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/jungle_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:jungle_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:jungle_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:jungle_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_andesite_from_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_andesite_from_andesite_stonecutting.json deleted file mode 100644 index b1d57445d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_andesite_from_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_andesite_from_andesite_stonecutting" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_andesite_from_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index 9bd0a5fb8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_dark_scoria_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_dark_scoria_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_diorite_from_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_diorite_from_diorite_stonecutting.json deleted file mode 100644 index 53f8edc73..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_diorite_from_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_diorite_from_diorite_stonecutting" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_diorite_from_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 52f8f0397..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_dolomite_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_dolomite_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index 66694dd0b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_gabbro_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_gabbro_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_granite_from_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_granite_from_granite_stonecutting.json deleted file mode 100644 index f9a0463b5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_granite_from_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_granite_from_granite_stonecutting" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_granite_from_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_limestone_from_limestone_stonecutting.json deleted file mode 100644 index bbbe0cb01..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_limestone_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_limestone_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_scoria_from_scoria_stonecutting.json deleted file mode 100644 index 27e7c9359..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_scoria_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_scoria_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index a57e4a90d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:layered_weathered_limestone_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:layered_weathered_limestone_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone.json deleted file mode 100644 index 1b38ab26f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone" - ] - }, - "criteria": { - "has_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone" - } - } - }, - "requirements": [ - [ - "has_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_from_limestone_stonecutting.json deleted file mode 100644 index 7ebc8fddf..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_bricks_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_bricks_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_slab.json deleted file mode 100644 index b57c3fe23..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_bricks_slab" - ] - }, - "criteria": { - "has_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json deleted file mode 100644 index 789cbae62..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_bricks_slab_from_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_bricks_slab_from_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_stairs.json deleted file mode 100644 index fe56654cc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_bricks_stairs" - ] - }, - "criteria": { - "has_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_stairs_from_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_stairs_from_limestone_bricks_stonecutting.json deleted file mode 100644 index c3d75d11e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_stairs_from_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_bricks_stairs_from_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_bricks_stairs_from_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_wall.json deleted file mode 100644 index b41f9577b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_bricks_wall" - ] - }, - "criteria": { - "has_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_wall_from_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_wall_from_limestone_bricks_stonecutting.json deleted file mode 100644 index e5cbb5291..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_bricks_wall_from_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_bricks_wall_from_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_bricks_wall_from_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_from_limestone_stonecutting.json deleted file mode 100644 index 135bfdbf7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_cobblestone_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_cobblestone_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_slab.json deleted file mode 100644 index 0d9718860..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_cobblestone_slab" - ] - }, - "criteria": { - "has_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting.json deleted file mode 100644 index bd7f09cda..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs.json deleted file mode 100644 index 8c2719a61..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_cobblestone_stairs" - ] - }, - "criteria": { - "has_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json deleted file mode 100644 index 6420b9bab..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall.json deleted file mode 100644 index 05a183794..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_cobblestone_wall" - ] - }, - "criteria": { - "has_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json deleted file mode 100644 index febc16688..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_pillar.json deleted file mode 100644 index 2690c0cfc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_pillar" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_pillar" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_pillar_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_pillar_from_limestone_stonecutting.json deleted file mode 100644 index 34a68ad29..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/limestone_pillar_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:limestone_pillar_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:limestone_pillar_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_andesite_from_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_andesite_from_andesite_stonecutting.json deleted file mode 100644 index bdae39225..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_andesite_from_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_andesite_from_andesite_stonecutting" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_andesite_from_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index bb7157d6b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_dark_scoria_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_dark_scoria_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_diorite_from_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_diorite_from_diorite_stonecutting.json deleted file mode 100644 index ab98404a4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_diorite_from_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_diorite_from_diorite_stonecutting" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_diorite_from_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 4a4abf737..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_dolomite_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_dolomite_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index c8e92b058..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_gabbro_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_gabbro_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_granite_from_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_granite_from_granite_stonecutting.json deleted file mode 100644 index 7cada7680..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_granite_from_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_granite_from_granite_stonecutting" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_granite_from_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_limestone_from_limestone_stonecutting.json deleted file mode 100644 index e28ae44c8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_limestone_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_limestone_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_scoria_from_scoria_stonecutting.json deleted file mode 100644 index 662cdd942..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_scoria_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_scoria_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 02c1e5544..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/mossy_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:mossy_weathered_limestone_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:mossy_weathered_limestone_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/oak_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/oak_window.json deleted file mode 100644 index 6c6ddc614..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/oak_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:oak_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:oak_planks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:oak_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/oak_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/oak_window_pane.json deleted file mode 100644 index 115b87f54..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/oak_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:oak_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:oak_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:oak_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/ornate_iron_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/ornate_iron_window.json deleted file mode 100644 index f402ceb96..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/ornate_iron_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:ornate_iron_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:andesite_alloy" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:ornate_iron_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/ornate_iron_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/ornate_iron_window_pane.json deleted file mode 100644 index b3f942d5c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/ornate_iron_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:ornate_iron_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:ornate_iron_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:ornate_iron_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_andesite_from_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_andesite_from_andesite_stonecutting.json deleted file mode 100644 index 00f31d084..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_andesite_from_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_andesite_from_andesite_stonecutting" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_andesite_from_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index 7d56c7fe3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_dark_scoria_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_dark_scoria_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_diorite_from_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_diorite_from_diorite_stonecutting.json deleted file mode 100644 index 679c2b553..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_diorite_from_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_diorite_from_diorite_stonecutting" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_diorite_from_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index c48b53379..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_dolomite_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_dolomite_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index 63baa04c7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_gabbro_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_gabbro_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_granite_from_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_granite_from_granite_stonecutting.json deleted file mode 100644 index 75b7ab4c3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_granite_from_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_granite_from_granite_stonecutting" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_granite_from_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_limestone_from_limestone_stonecutting.json deleted file mode 100644 index 99fb4b062..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_limestone_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_limestone_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_scoria_from_scoria_stonecutting.json deleted file mode 100644 index 6fe10822c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_scoria_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_scoria_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index e38a670fa..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/overgrown_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:overgrown_weathered_limestone_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:overgrown_weathered_limestone_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_from_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_from_andesite_stonecutting.json deleted file mode 100644 index 5c86eab81..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_from_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_andesite_from_andesite_stonecutting" - ] - }, - "criteria": { - "has_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_andesite_from_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_slab.json deleted file mode 100644 index b0f719859..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_andesite_slab" - ] - }, - "criteria": { - "has_paved_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_andesite_slab" - } - } - }, - "requirements": [ - [ - "has_paved_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_slab_from_paved_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_slab_from_paved_andesite_stonecutting.json deleted file mode 100644 index 6ad83f043..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_slab_from_paved_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_andesite_slab_from_paved_andesite_stonecutting" - ] - }, - "criteria": { - "has_paved_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_andesite_slab_from_paved_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_stairs.json deleted file mode 100644 index 3dbf0fa7d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_andesite_stairs" - ] - }, - "criteria": { - "has_paved_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_andesite_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_stairs_from_paved_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_stairs_from_paved_andesite_stonecutting.json deleted file mode 100644 index 919a22057..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_stairs_from_paved_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_andesite_stairs_from_paved_andesite_stonecutting" - ] - }, - "criteria": { - "has_paved_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_andesite_stairs_from_paved_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_wall.json deleted file mode 100644 index e0c13fe4e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_andesite_wall" - ] - }, - "criteria": { - "has_paved_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_andesite_wall" - } - } - }, - "requirements": [ - [ - "has_paved_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_wall_from_paved_andesite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_wall_from_paved_andesite_stonecutting.json deleted file mode 100644 index 903262c6c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_andesite_wall_from_paved_andesite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_andesite_wall_from_paved_andesite_stonecutting" - ] - }, - "criteria": { - "has_paved_andesite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_andesite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_andesite_wall_from_paved_andesite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_andesite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index 20a486f16..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dark_scoria_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dark_scoria_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_slab.json deleted file mode 100644 index 0035aa0a9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dark_scoria_slab" - ] - }, - "criteria": { - "has_paved_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dark_scoria_slab" - } - } - }, - "requirements": [ - [ - "has_paved_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting.json deleted file mode 100644 index 91641098b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_paved_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_stairs.json deleted file mode 100644 index 4176fb089..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dark_scoria_stairs" - ] - }, - "criteria": { - "has_paved_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dark_scoria_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting.json deleted file mode 100644 index 8f57480e2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_paved_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_wall.json deleted file mode 100644 index 3416e05c0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dark_scoria_wall" - ] - }, - "criteria": { - "has_paved_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dark_scoria_wall" - } - } - }, - "requirements": [ - [ - "has_paved_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting.json deleted file mode 100644 index d6e8a2229..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_paved_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_from_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_from_diorite_stonecutting.json deleted file mode 100644 index 6cd70f7d8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_from_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_diorite_from_diorite_stonecutting" - ] - }, - "criteria": { - "has_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_diorite_from_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_slab.json deleted file mode 100644 index e36609757..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_diorite_slab" - ] - }, - "criteria": { - "has_paved_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_diorite_slab" - } - } - }, - "requirements": [ - [ - "has_paved_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_slab_from_paved_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_slab_from_paved_diorite_stonecutting.json deleted file mode 100644 index e4724693a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_slab_from_paved_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_diorite_slab_from_paved_diorite_stonecutting" - ] - }, - "criteria": { - "has_paved_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_diorite_slab_from_paved_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_stairs.json deleted file mode 100644 index 277fc99ef..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_diorite_stairs" - ] - }, - "criteria": { - "has_paved_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_diorite_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_stairs_from_paved_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_stairs_from_paved_diorite_stonecutting.json deleted file mode 100644 index b2142b3e9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_stairs_from_paved_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_diorite_stairs_from_paved_diorite_stonecutting" - ] - }, - "criteria": { - "has_paved_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_diorite_stairs_from_paved_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_wall.json deleted file mode 100644 index 4e641f903..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_diorite_wall" - ] - }, - "criteria": { - "has_paved_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_diorite_wall" - } - } - }, - "requirements": [ - [ - "has_paved_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_wall_from_paved_diorite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_wall_from_paved_diorite_stonecutting.json deleted file mode 100644 index 20db42d43..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_diorite_wall_from_paved_diorite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_diorite_wall_from_paved_diorite_stonecutting" - ] - }, - "criteria": { - "has_paved_diorite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_diorite_wall_from_paved_diorite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_diorite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 953456a0f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dolomite_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dolomite_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_slab.json deleted file mode 100644 index ed6b09aad..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dolomite_slab" - ] - }, - "criteria": { - "has_paved_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dolomite_slab" - } - } - }, - "requirements": [ - [ - "has_paved_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_slab_from_paved_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_slab_from_paved_dolomite_stonecutting.json deleted file mode 100644 index 2d5ba55d7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_slab_from_paved_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dolomite_slab_from_paved_dolomite_stonecutting" - ] - }, - "criteria": { - "has_paved_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dolomite_slab_from_paved_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_stairs.json deleted file mode 100644 index 65bd0948b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dolomite_stairs" - ] - }, - "criteria": { - "has_paved_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dolomite_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_stairs_from_paved_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_stairs_from_paved_dolomite_stonecutting.json deleted file mode 100644 index e1aef2125..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_stairs_from_paved_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dolomite_stairs_from_paved_dolomite_stonecutting" - ] - }, - "criteria": { - "has_paved_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dolomite_stairs_from_paved_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_wall.json deleted file mode 100644 index 9675ef9bb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dolomite_wall" - ] - }, - "criteria": { - "has_paved_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dolomite_wall" - } - } - }, - "requirements": [ - [ - "has_paved_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_wall_from_paved_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_wall_from_paved_dolomite_stonecutting.json deleted file mode 100644 index 25ec1bf4e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_dolomite_wall_from_paved_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_dolomite_wall_from_paved_dolomite_stonecutting" - ] - }, - "criteria": { - "has_paved_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_dolomite_wall_from_paved_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index 18f941ce7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_gabbro_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_gabbro_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_slab.json deleted file mode 100644 index 180bb575f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_gabbro_slab" - ] - }, - "criteria": { - "has_paved_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_gabbro_slab" - } - } - }, - "requirements": [ - [ - "has_paved_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_slab_from_paved_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_slab_from_paved_gabbro_stonecutting.json deleted file mode 100644 index 4db0035fe..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_slab_from_paved_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_gabbro_slab_from_paved_gabbro_stonecutting" - ] - }, - "criteria": { - "has_paved_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_gabbro_slab_from_paved_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_stairs.json deleted file mode 100644 index 8179d7f50..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_gabbro_stairs" - ] - }, - "criteria": { - "has_paved_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_gabbro_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_stairs_from_paved_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_stairs_from_paved_gabbro_stonecutting.json deleted file mode 100644 index b6d84ffc2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_stairs_from_paved_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_gabbro_stairs_from_paved_gabbro_stonecutting" - ] - }, - "criteria": { - "has_paved_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_gabbro_stairs_from_paved_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_wall.json deleted file mode 100644 index 293df0407..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_gabbro_wall" - ] - }, - "criteria": { - "has_paved_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_gabbro_wall" - } - } - }, - "requirements": [ - [ - "has_paved_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_wall_from_paved_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_wall_from_paved_gabbro_stonecutting.json deleted file mode 100644 index efe1205a4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_gabbro_wall_from_paved_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_gabbro_wall_from_paved_gabbro_stonecutting" - ] - }, - "criteria": { - "has_paved_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_gabbro_wall_from_paved_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_from_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_from_granite_stonecutting.json deleted file mode 100644 index 96f0ca666..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_from_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_granite_from_granite_stonecutting" - ] - }, - "criteria": { - "has_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_granite_from_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_slab.json deleted file mode 100644 index 773546f8f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_granite_slab" - ] - }, - "criteria": { - "has_paved_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_granite_slab" - } - } - }, - "requirements": [ - [ - "has_paved_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_slab_from_paved_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_slab_from_paved_granite_stonecutting.json deleted file mode 100644 index 4595f85b4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_slab_from_paved_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_granite_slab_from_paved_granite_stonecutting" - ] - }, - "criteria": { - "has_paved_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_granite_slab_from_paved_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_stairs.json deleted file mode 100644 index 968086350..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_granite_stairs" - ] - }, - "criteria": { - "has_paved_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_granite_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_stairs_from_paved_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_stairs_from_paved_granite_stonecutting.json deleted file mode 100644 index b14b62fe0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_stairs_from_paved_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_granite_stairs_from_paved_granite_stonecutting" - ] - }, - "criteria": { - "has_paved_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_granite_stairs_from_paved_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_wall.json deleted file mode 100644 index 712608472..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_granite_wall" - ] - }, - "criteria": { - "has_paved_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_granite_wall" - } - } - }, - "requirements": [ - [ - "has_paved_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_wall_from_paved_granite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_wall_from_paved_granite_stonecutting.json deleted file mode 100644 index 57abe36aa..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_granite_wall_from_paved_granite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_granite_wall_from_paved_granite_stonecutting" - ] - }, - "criteria": { - "has_paved_granite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_granite_wall_from_paved_granite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_granite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_from_limestone_stonecutting.json deleted file mode 100644 index 2a78e2928..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_limestone_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_limestone_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_slab.json deleted file mode 100644 index c79ec163b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_limestone_slab" - ] - }, - "criteria": { - "has_paved_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_limestone_slab" - } - } - }, - "requirements": [ - [ - "has_paved_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_slab_from_paved_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_slab_from_paved_limestone_stonecutting.json deleted file mode 100644 index 904be56b9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_slab_from_paved_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_limestone_slab_from_paved_limestone_stonecutting" - ] - }, - "criteria": { - "has_paved_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_limestone_slab_from_paved_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_stairs.json deleted file mode 100644 index ef01d4a51..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_limestone_stairs" - ] - }, - "criteria": { - "has_paved_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_limestone_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_stairs_from_paved_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_stairs_from_paved_limestone_stonecutting.json deleted file mode 100644 index 72c9adf7d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_stairs_from_paved_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_limestone_stairs_from_paved_limestone_stonecutting" - ] - }, - "criteria": { - "has_paved_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_limestone_stairs_from_paved_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_wall.json deleted file mode 100644 index e796d8670..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_limestone_wall" - ] - }, - "criteria": { - "has_paved_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_limestone_wall" - } - } - }, - "requirements": [ - [ - "has_paved_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_wall_from_paved_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_wall_from_paved_limestone_stonecutting.json deleted file mode 100644 index 64787a175..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_limestone_wall_from_paved_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_limestone_wall_from_paved_limestone_stonecutting" - ] - }, - "criteria": { - "has_paved_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_limestone_wall_from_paved_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_from_scoria_stonecutting.json deleted file mode 100644 index 09d8fca65..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_scoria_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_scoria_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_slab.json deleted file mode 100644 index 0f8484cb0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_scoria_slab" - ] - }, - "criteria": { - "has_paved_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_scoria_slab" - } - } - }, - "requirements": [ - [ - "has_paved_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_slab_from_paved_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_slab_from_paved_scoria_stonecutting.json deleted file mode 100644 index c05f2e313..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_slab_from_paved_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_scoria_slab_from_paved_scoria_stonecutting" - ] - }, - "criteria": { - "has_paved_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_scoria_slab_from_paved_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_stairs.json deleted file mode 100644 index c580c9470..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_scoria_stairs" - ] - }, - "criteria": { - "has_paved_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_scoria_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_stairs_from_paved_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_stairs_from_paved_scoria_stonecutting.json deleted file mode 100644 index dd900d51b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_stairs_from_paved_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_scoria_stairs_from_paved_scoria_stonecutting" - ] - }, - "criteria": { - "has_paved_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_scoria_stairs_from_paved_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_wall.json deleted file mode 100644 index d4947a02d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_scoria_wall" - ] - }, - "criteria": { - "has_paved_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_scoria_wall" - } - } - }, - "requirements": [ - [ - "has_paved_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_wall_from_paved_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_wall_from_paved_scoria_stonecutting.json deleted file mode 100644 index 1888a7ec9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_scoria_wall_from_paved_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_scoria_wall_from_paved_scoria_stonecutting" - ] - }, - "criteria": { - "has_paved_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_scoria_wall_from_paved_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index e06266ea9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_weathered_limestone_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_weathered_limestone_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_slab.json deleted file mode 100644 index 4272e766c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_weathered_limestone_slab" - ] - }, - "criteria": { - "has_paved_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_weathered_limestone_slab" - } - } - }, - "requirements": [ - [ - "has_paved_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting.json deleted file mode 100644 index cfeb6e329..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_paved_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_stairs.json deleted file mode 100644 index 04f2c4f5f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_weathered_limestone_stairs" - ] - }, - "criteria": { - "has_paved_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_weathered_limestone_stairs" - } - } - }, - "requirements": [ - [ - "has_paved_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json deleted file mode 100644 index afb8a2d6e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_paved_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_wall.json deleted file mode 100644 index cc3a98ae8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_weathered_limestone_wall" - ] - }, - "criteria": { - "has_paved_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_weathered_limestone_wall" - } - } - }, - "requirements": [ - [ - "has_paved_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json deleted file mode 100644 index 1abb4c9df..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_paved_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:paved_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_paved_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria.json deleted file mode 100644 index fce73c84e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dark_scoria" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dark_scoria" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index 613d98f91..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dark_scoria_from_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dark_scoria_from_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_slab.json deleted file mode 100644 index 2525eddbb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dark_scoria_slab" - ] - }, - "criteria": { - "has_polished_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dark_scoria_slab" - } - } - }, - "requirements": [ - [ - "has_polished_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json deleted file mode 100644 index 02e33546e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_polished_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_stairs.json deleted file mode 100644 index 259ae8653..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dark_scoria_stairs" - ] - }, - "criteria": { - "has_polished_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dark_scoria_stairs" - } - } - }, - "requirements": [ - [ - "has_polished_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json deleted file mode 100644 index 13aff99ad..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_polished_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_wall.json deleted file mode 100644 index 6ef874703..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dark_scoria_wall" - ] - }, - "criteria": { - "has_polished_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dark_scoria_wall" - } - } - }, - "requirements": [ - [ - "has_polished_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json deleted file mode 100644 index e3badb955..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting" - ] - }, - "criteria": { - "has_polished_dark_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dark_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_dark_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite.json deleted file mode 100644 index 555c58937..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dolomite" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dolomite" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 44bb70c05..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dolomite_from_dolomite_stonecutting" - ] - }, - "criteria": { - "has_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dolomite_from_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_slab.json deleted file mode 100644 index 87e3bb462..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dolomite_slab" - ] - }, - "criteria": { - "has_polished_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dolomite_slab" - } - } - }, - "requirements": [ - [ - "has_polished_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json deleted file mode 100644 index 309f1fd01..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dolomite_slab_from_polished_dolomite_stonecutting" - ] - }, - "criteria": { - "has_polished_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dolomite_slab_from_polished_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_stairs.json deleted file mode 100644 index 32541c984..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dolomite_stairs" - ] - }, - "criteria": { - "has_polished_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dolomite_stairs" - } - } - }, - "requirements": [ - [ - "has_polished_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json deleted file mode 100644 index d70b60987..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dolomite_stairs_from_polished_dolomite_stonecutting" - ] - }, - "criteria": { - "has_polished_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dolomite_stairs_from_polished_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_wall.json deleted file mode 100644 index ca806136e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dolomite_wall" - ] - }, - "criteria": { - "has_polished_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dolomite_wall" - } - } - }, - "requirements": [ - [ - "has_polished_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json deleted file mode 100644 index de02f8266..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_dolomite_wall_from_polished_dolomite_stonecutting" - ] - }, - "criteria": { - "has_polished_dolomite": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_dolomite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_dolomite_wall_from_polished_dolomite_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_dolomite", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro.json deleted file mode 100644 index ae89bff88..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_gabbro" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_gabbro" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index 6ff8a49cc..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_gabbro_from_gabbro_stonecutting" - ] - }, - "criteria": { - "has_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_gabbro_from_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_slab.json deleted file mode 100644 index 507c8dfd3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_gabbro_slab" - ] - }, - "criteria": { - "has_polished_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_gabbro_slab" - } - } - }, - "requirements": [ - [ - "has_polished_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json deleted file mode 100644 index 3eae1f6bf..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_gabbro_slab_from_polished_gabbro_stonecutting" - ] - }, - "criteria": { - "has_polished_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_gabbro_slab_from_polished_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_stairs.json deleted file mode 100644 index ffefa3742..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_gabbro_stairs" - ] - }, - "criteria": { - "has_polished_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_gabbro_stairs" - } - } - }, - "requirements": [ - [ - "has_polished_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json deleted file mode 100644 index 5ebb01a18..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_gabbro_stairs_from_polished_gabbro_stonecutting" - ] - }, - "criteria": { - "has_polished_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_gabbro_stairs_from_polished_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_wall.json deleted file mode 100644 index a6f7d1a4f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_gabbro_wall" - ] - }, - "criteria": { - "has_polished_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_gabbro_wall" - } - } - }, - "requirements": [ - [ - "has_polished_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json deleted file mode 100644 index dd2daf41f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_gabbro_wall_from_polished_gabbro_stonecutting" - ] - }, - "criteria": { - "has_polished_gabbro": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_gabbro" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_gabbro_wall_from_polished_gabbro_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_gabbro", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone.json deleted file mode 100644 index 031316c12..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_limestone" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_limestone" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_from_limestone_stonecutting.json deleted file mode 100644 index 1b5c6de54..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_limestone_from_limestone_stonecutting" - ] - }, - "criteria": { - "has_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_limestone_from_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_slab.json deleted file mode 100644 index 9a969a4b5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_limestone_slab" - ] - }, - "criteria": { - "has_polished_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_limestone_slab" - } - } - }, - "requirements": [ - [ - "has_polished_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_slab_from_polished_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_slab_from_polished_limestone_stonecutting.json deleted file mode 100644 index 4f509979a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_slab_from_polished_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_limestone_slab_from_polished_limestone_stonecutting" - ] - }, - "criteria": { - "has_polished_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_limestone_slab_from_polished_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_stairs.json deleted file mode 100644 index 2e8b11cf6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_limestone_stairs" - ] - }, - "criteria": { - "has_polished_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_limestone_stairs" - } - } - }, - "requirements": [ - [ - "has_polished_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_stairs_from_polished_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_stairs_from_polished_limestone_stonecutting.json deleted file mode 100644 index d561c2da0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_stairs_from_polished_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_limestone_stairs_from_polished_limestone_stonecutting" - ] - }, - "criteria": { - "has_polished_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_limestone_stairs_from_polished_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_wall.json deleted file mode 100644 index a69887469..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_limestone_wall" - ] - }, - "criteria": { - "has_polished_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_limestone_wall" - } - } - }, - "requirements": [ - [ - "has_polished_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_wall_from_polished_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_wall_from_polished_limestone_stonecutting.json deleted file mode 100644 index def75b99c..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_limestone_wall_from_polished_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_limestone_wall_from_polished_limestone_stonecutting" - ] - }, - "criteria": { - "has_polished_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_limestone_wall_from_polished_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria.json deleted file mode 100644 index a9e4098f8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_scoria" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_scoria" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_from_scoria_stonecutting.json deleted file mode 100644 index 91058595f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_scoria_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_scoria_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_slab.json deleted file mode 100644 index 0ce64ec29..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_scoria_slab" - ] - }, - "criteria": { - "has_polished_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_scoria_slab" - } - } - }, - "requirements": [ - [ - "has_polished_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_slab_from_polished_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_slab_from_polished_scoria_stonecutting.json deleted file mode 100644 index 1069c767f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_slab_from_polished_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_scoria_slab_from_polished_scoria_stonecutting" - ] - }, - "criteria": { - "has_polished_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_scoria_slab_from_polished_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_stairs.json deleted file mode 100644 index c8a140a53..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_scoria_stairs" - ] - }, - "criteria": { - "has_polished_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_scoria_stairs" - } - } - }, - "requirements": [ - [ - "has_polished_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_stairs_from_polished_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_stairs_from_polished_scoria_stonecutting.json deleted file mode 100644 index 2119834e7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_stairs_from_polished_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_scoria_stairs_from_polished_scoria_stonecutting" - ] - }, - "criteria": { - "has_polished_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_scoria_stairs_from_polished_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_wall.json deleted file mode 100644 index 1db4623a1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_scoria_wall" - ] - }, - "criteria": { - "has_polished_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_scoria_wall" - } - } - }, - "requirements": [ - [ - "has_polished_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_wall_from_polished_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_wall_from_polished_scoria_stonecutting.json deleted file mode 100644 index 21567805d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_scoria_wall_from_polished_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_scoria_wall_from_polished_scoria_stonecutting" - ] - }, - "criteria": { - "has_polished_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_scoria_wall_from_polished_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone.json deleted file mode 100644 index f91ecfab1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_weathered_limestone" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_weathered_limestone" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 8d5990b5f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_weathered_limestone_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_weathered_limestone_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_slab.json deleted file mode 100644 index a0101025f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_weathered_limestone_slab" - ] - }, - "criteria": { - "has_polished_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_weathered_limestone_slab" - } - } - }, - "requirements": [ - [ - "has_polished_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json deleted file mode 100644 index 6dff3962e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_polished_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs.json deleted file mode 100644 index ed5e9ec5e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_weathered_limestone_stairs" - ] - }, - "criteria": { - "has_polished_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_weathered_limestone_stairs" - } - } - }, - "requirements": [ - [ - "has_polished_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json deleted file mode 100644 index 1f4d00f20..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_polished_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall.json deleted file mode 100644 index bc7c02fad..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_weathered_limestone_wall" - ] - }, - "criteria": { - "has_polished_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_weathered_limestone_wall" - } - } - }, - "requirements": [ - [ - "has_polished_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json deleted file mode 100644 index ccc8fc528..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_polished_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:polished_weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_polished_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria.json deleted file mode 100644 index fc94ffc6f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria" - ] - }, - "criteria": { - "has_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria" - } - } - }, - "requirements": [ - [ - "has_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_from_scoria_stonecutting.json deleted file mode 100644 index d43801cf6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_bricks_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_bricks_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_slab.json deleted file mode 100644 index 91f34600b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_bricks_slab" - ] - }, - "criteria": { - "has_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json deleted file mode 100644 index 166b1e120..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_bricks_slab_from_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_bricks_slab_from_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_stairs.json deleted file mode 100644 index 1ee20fb46..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_bricks_stairs" - ] - }, - "criteria": { - "has_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_stairs_from_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_stairs_from_scoria_bricks_stonecutting.json deleted file mode 100644 index 8848e0a88..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_stairs_from_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_bricks_stairs_from_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_bricks_stairs_from_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_wall.json deleted file mode 100644 index f439fde82..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_bricks_wall" - ] - }, - "criteria": { - "has_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_wall_from_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_wall_from_scoria_bricks_stonecutting.json deleted file mode 100644 index 6975444d3..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_bricks_wall_from_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_bricks_wall_from_scoria_bricks_stonecutting" - ] - }, - "criteria": { - "has_scoria_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_bricks_wall_from_scoria_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_from_scoria_stonecutting.json deleted file mode 100644 index 06e2f6ccb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_cobblestone_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_cobblestone_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_slab.json deleted file mode 100644 index 7451a3f52..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_cobblestone_slab" - ] - }, - "criteria": { - "has_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting.json deleted file mode 100644 index b8fa53235..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs.json deleted file mode 100644 index 41d314b09..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_cobblestone_stairs" - ] - }, - "criteria": { - "has_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json deleted file mode 100644 index 25615d1ad..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall.json deleted file mode 100644 index 16bd6116a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_cobblestone_wall" - ] - }, - "criteria": { - "has_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json deleted file mode 100644 index b0150a4fb..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_scoria_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_pillar.json deleted file mode 100644 index e21ba1a34..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_pillar" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_pillar" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_pillar_from_scoria_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_pillar_from_scoria_stonecutting.json deleted file mode 100644 index b19e575d8..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/scoria_pillar_from_scoria_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:scoria_pillar_from_scoria_stonecutting" - ] - }, - "criteria": { - "has_scoria": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:scoria_pillar_from_scoria_stonecutting" - } - } - }, - "requirements": [ - [ - "has_scoria", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/dolomite.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/dolomite.json deleted file mode 100644 index 1789ee64f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/dolomite.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/dolomite" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:diorite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/dolomite" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/gabbro.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/gabbro.json deleted file mode 100644 index f364a84f2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/gabbro.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/gabbro" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:granite" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/gabbro" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/limestone.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/limestone.json deleted file mode 100644 index dbbdfcd80..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/limestone.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/limestone" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:limesand" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/limestone" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/scoria.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/scoria.json deleted file mode 100644 index 5aa882539..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/scoria.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/scoria" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:soul_sand" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/scoria" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/scoria_from_natural.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/scoria_from_natural.json deleted file mode 100644 index 9a19dd7c2..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/smelting/scoria_from_natural.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/scoria_from_natural" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:natural_scoria" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/scoria_from_natural" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/spruce_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/spruce_window.json deleted file mode 100644 index cc0c3ea14..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/spruce_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:spruce_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:spruce_planks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:spruce_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/spruce_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/spruce_window_pane.json deleted file mode 100644 index 746a3aa58..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/spruce_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:spruce_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:spruce_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:spruce_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/tiled_glass_from_glass_colorless_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/tiled_glass_from_glass_colorless_stonecutting.json deleted file mode 100644 index 20e84262a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/tiled_glass_from_glass_colorless_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:tiled_glass_from_glass_colorless_stonecutting" - ] - }, - "criteria": { - "has_glass_colorless": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:glass/colorless" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:tiled_glass_from_glass_colorless_stonecutting" - } - } - }, - "requirements": [ - [ - "has_glass_colorless", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/tiled_glass_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/tiled_glass_pane.json deleted file mode 100644 index 1b0c6f749..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/tiled_glass_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:tiled_glass_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:tiled_glass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:tiled_glass_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/vertical_framed_glass_from_glass_colorless_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/vertical_framed_glass_from_glass_colorless_stonecutting.json deleted file mode 100644 index 7350eea2d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/vertical_framed_glass_from_glass_colorless_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:vertical_framed_glass_from_glass_colorless_stonecutting" - ] - }, - "criteria": { - "has_glass_colorless": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:glass/colorless" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:vertical_framed_glass_from_glass_colorless_stonecutting" - } - } - }, - "requirements": [ - [ - "has_glass_colorless", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/vertical_framed_glass_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/vertical_framed_glass_pane.json deleted file mode 100644 index 93cdeb3b1..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/vertical_framed_glass_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:vertical_framed_glass_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:vertical_framed_glass" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:vertical_framed_glass_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/warped_window.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/warped_window.json deleted file mode 100644 index 0f4e7e9d4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/warped_window.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:warped_window" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "minecraft:warped_planks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:warped_window" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/warped_window_pane.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/warped_window_pane.json deleted file mode 100644 index 89b031cf4..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/warped_window_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:warped_window_pane" - ] - }, - "criteria": { - "has_ingredient": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:warped_window" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:warped_window_pane" - } - } - }, - "requirements": [ - [ - "has_ingredient", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone.json deleted file mode 100644 index 2b7672332..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone" - ] - }, - "criteria": { - "has_weathered_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 525da1a36..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_bricks_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_bricks_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab.json deleted file mode 100644 index 1e9fdff8a..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_bricks_slab" - ] - }, - "criteria": { - "has_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_bricks_slab" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index 1498f1628..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_stairs.json deleted file mode 100644 index e909e6126..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_bricks_stairs" - ] - }, - "criteria": { - "has_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_bricks_stairs" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index d72520511..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_wall.json deleted file mode 100644 index c65ad4c28..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_bricks_wall" - ] - }, - "criteria": { - "has_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_bricks_wall" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index 7ae6b578b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone_bricks": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_bricks" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_bricks", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 439a6d44f..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_cobblestone_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_cobblestone_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_slab.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_slab.json deleted file mode 100644 index c78998cd5..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_cobblestone_slab" - ] - }, - "criteria": { - "has_weathered_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_cobblestone_slab" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting.json deleted file mode 100644 index a2d1566d6..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs.json deleted file mode 100644 index b626d618b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_cobblestone_stairs" - ] - }, - "criteria": { - "has_weathered_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_cobblestone_stairs" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json deleted file mode 100644 index 815a8a74b..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall.json deleted file mode 100644 index e7b710836..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_cobblestone_wall" - ] - }, - "criteria": { - "has_weathered_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_cobblestone_wall" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json deleted file mode 100644 index b5b898940..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone_cobblestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone_cobblestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone_cobblestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_pillar.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_pillar.json deleted file mode 100644 index 6acc03c00..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_pillar.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_pillar" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_pillar" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json deleted file mode 100644 index b81de1a1e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.palettes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:weathered_limestone_pillar_from_weathered_limestone_stonecutting" - ] - }, - "criteria": { - "has_weathered_limestone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:weathered_limestone" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:weathered_limestone_pillar_from_weathered_limestone_stonecutting" - } - } - }, - "requirements": [ - [ - "has_weathered_limestone", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_framed_glass_pane.json b/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_framed_glass_pane.json deleted file mode 100644 index 5c1a39fe9..000000000 --- a/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_framed_glass_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/glass_pane_from_framed_glass_pane" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:framed_glass_pane" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/glass_pane_from_framed_glass_pane" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_horizontal_framed_glass_pane.json b/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_horizontal_framed_glass_pane.json deleted file mode 100644 index edd18841d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_horizontal_framed_glass_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/glass_pane_from_horizontal_framed_glass_pane" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:horizontal_framed_glass_pane" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/glass_pane_from_horizontal_framed_glass_pane" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_tiled_glass_pane.json b/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_tiled_glass_pane.json deleted file mode 100644 index bb117c8aa..000000000 --- a/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_tiled_glass_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/glass_pane_from_tiled_glass_pane" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:tiled_glass_pane" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/glass_pane_from_tiled_glass_pane" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_vertical_framed_glass_pane.json b/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_vertical_framed_glass_pane.json deleted file mode 100644 index b34edadad..000000000 --- a/src/generated/resources/data/create/advancements/recipes/decorations/smelting/glass_pane_from_vertical_framed_glass_pane.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/glass_pane_from_vertical_framed_glass_pane" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:vertical_framed_glass_pane" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/glass_pane_from_vertical_framed_glass_pane" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/food/campfire_cooking/bread.json b/src/generated/resources/data/create/advancements/recipes/food/campfire_cooking/bread.json deleted file mode 100644 index c414d426d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/food/campfire_cooking/bread.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:campfire_cooking/bread" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dough" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:campfire_cooking/bread" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/food/smelting/bread.json b/src/generated/resources/data/create/advancements/recipes/food/smelting/bread.json deleted file mode 100644 index 21c56fea7..000000000 --- a/src/generated/resources/data/create/advancements/recipes/food/smelting/bread.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/bread" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dough" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/bread" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/food/smoking/bread.json b/src/generated/resources/data/create/advancements/recipes/food/smoking/bread.json deleted file mode 100644 index 3fae48586..000000000 --- a/src/generated/resources/data/create/advancements/recipes/food/smoking/bread.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smoking/bread" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dough" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smoking/bread" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/misc/blasting/gold_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/misc/blasting/gold_ingot_from_crushed.json deleted file mode 100644 index 754653b9e..000000000 --- a/src/generated/resources/data/create/advancements/recipes/misc/blasting/gold_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/gold_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_gold_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/gold_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/misc/blasting/iron_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/misc/blasting/iron_ingot_from_crushed.json deleted file mode 100644 index b37458b98..000000000 --- a/src/generated/resources/data/create/advancements/recipes/misc/blasting/iron_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:blasting/iron_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_iron_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:blasting/iron_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/misc/crafting/appliances/slime_ball.json b/src/generated/resources/data/create/advancements/recipes/misc/crafting/appliances/slime_ball.json deleted file mode 100644 index cca3322ad..000000000 --- a/src/generated/resources/data/create/advancements/recipes/misc/crafting/appliances/slime_ball.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/appliances/slime_ball" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:dough" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/appliances/slime_ball" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/misc/smelting/gold_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/misc/smelting/gold_ingot_from_crushed.json deleted file mode 100644 index aabdd6527..000000000 --- a/src/generated/resources/data/create/advancements/recipes/misc/smelting/gold_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/gold_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_gold_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/gold_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json b/src/generated/resources/data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json deleted file mode 100644 index c36df806d..000000000 --- a/src/generated/resources/data/create/advancements/recipes/misc/smelting/iron_ingot_from_crushed.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:smelting/iron_ingot_from_crushed" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:crushed_iron_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:smelting/iron_ingot_from_crushed" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/transportation/crafting/kinetics/furnace_minecart_from_contraption_cart.json b/src/generated/resources/data/create/advancements/recipes/transportation/crafting/kinetics/furnace_minecart_from_contraption_cart.json deleted file mode 100644 index 93f3b46e0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/transportation/crafting/kinetics/furnace_minecart_from_contraption_cart.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/furnace_minecart_from_contraption_cart" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:cart_assembler" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/furnace_minecart_from_contraption_cart" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/recipes/transportation/crafting/kinetics/minecart_from_contraption_cart.json b/src/generated/resources/data/create/advancements/recipes/transportation/crafting/kinetics/minecart_from_contraption_cart.json deleted file mode 100644 index e5bcfaca0..000000000 --- a/src/generated/resources/data/create/advancements/recipes/transportation/crafting/kinetics/minecart_from_contraption_cart.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:crafting/kinetics/minecart_from_contraption_cart" - ] - }, - "criteria": { - "has_item": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:cart_assembler" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:crafting/kinetics/minecart_from_contraption_cart" - } - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/refined_radiance.json b/src/generated/resources/data/create/advancements/refined_radiance.json deleted file mode 100644 index ade3d9379..000000000 --- a/src/generated/resources/data/create/advancements/refined_radiance.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:chromatic_compound", - "display": { - "icon": { - "item": "create:refined_radiance" - }, - "title": { - "translate": "advancement.create.refined_radiance" - }, - "description": { - "translate": "advancement.create.refined_radiance.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:refined_radiance" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/reinforced.json b/src/generated/resources/data/create/advancements/reinforced.json deleted file mode 100644 index a77c4c924..000000000 --- a/src/generated/resources/data/create/advancements/reinforced.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "create:aesthetics", - "display": { - "icon": { - "item": "create:andesite_encased_shaft" - }, - "title": { - "translate": "advancement.create.reinforced" - }, - "description": { - "translate": "advancement.create.reinforced.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:casing_shaft", - "conditions": {} - }, - "1": { - "trigger": "create:casing_belt", - "conditions": {} - }, - "2": { - "trigger": "create:casing_pipe", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ], - [ - "2" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/root.json b/src/generated/resources/data/create/advancements/root.json deleted file mode 100644 index 87ea85f7c..000000000 --- a/src/generated/resources/data/create/advancements/root.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "display": { - "icon": { - "item": "create:brass_hand" - }, - "title": { - "translate": "advancement.create.root" - }, - "description": { - "translate": "advancement.create.root.desc" - }, - "frame": "task", - "show_toast": false, - "announce_to_chat": false, - "hidden": false, - "background": "create:textures/block/palettes/gabbro/bricks.png" - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/shadow_steel.json b/src/generated/resources/data/create/advancements/shadow_steel.json deleted file mode 100644 index a9df6c1c0..000000000 --- a/src/generated/resources/data/create/advancements/shadow_steel.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:chromatic_compound", - "display": { - "icon": { - "item": "create:shadow_steel" - }, - "title": { - "translate": "advancement.create.shadow_steel" - }, - "description": { - "translate": "advancement.create.shadow_steel.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:shadow_steel" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/shifting_gears.json b/src/generated/resources/data/create/advancements/shifting_gears.json deleted file mode 100644 index 698688835..000000000 --- a/src/generated/resources/data/create/advancements/shifting_gears.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:its_alive", - "display": { - "icon": { - "item": "create:large_cogwheel" - }, - "title": { - "translate": "advancement.create.shifting_gears" - }, - "description": { - "translate": "advancement.create.shifting_gears.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:shifting_gears", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/speed_controller.json b/src/generated/resources/data/create/advancements/speed_controller.json deleted file mode 100644 index 694246452..000000000 --- a/src/generated/resources/data/create/advancements/speed_controller.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:integrated_circuit", - "display": { - "icon": { - "item": "create:rotation_speed_controller" - }, - "title": { - "translate": "advancement.create.speed_controller" - }, - "description": { - "translate": "advancement.create.speed_controller.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:rotation_speed_controller" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/speedometer.json b/src/generated/resources/data/create/advancements/speedometer.json deleted file mode 100644 index 4766aafb7..000000000 --- a/src/generated/resources/data/create/advancements/speedometer.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:goggles", - "display": { - "icon": { - "item": "create:speedometer" - }, - "title": { - "translate": "advancement.create.speedometer" - }, - "description": { - "translate": "advancement.create.speedometer.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:speedometer" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/splitter_tunnel.json b/src/generated/resources/data/create/advancements/splitter_tunnel.json deleted file mode 100644 index 8cce2755f..000000000 --- a/src/generated/resources/data/create/advancements/splitter_tunnel.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:tunnel", - "display": { - "icon": { - "item": "create:brass_tunnel" - }, - "title": { - "translate": "advancement.create.splitter_tunnel" - }, - "description": { - "translate": "advancement.create.splitter_tunnel.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:connect_tunnel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/spout.json b/src/generated/resources/data/create/advancements/spout.json deleted file mode 100644 index 42ac31852..000000000 --- a/src/generated/resources/data/create/advancements/spout.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:copper_casing", - "display": { - "icon": { - "item": "create:spout" - }, - "title": { - "translate": "advancement.create.spout" - }, - "description": { - "translate": "advancement.create.spout.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:spout", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/spout_potion.json b/src/generated/resources/data/create/advancements/spout_potion.json deleted file mode 100644 index 89e971a41..000000000 --- a/src/generated/resources/data/create/advancements/spout_potion.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:spout", - "display": { - "icon": { - "item": "minecraft:potion" - }, - "title": { - "translate": "advancement.create.spout_potion" - }, - "description": { - "translate": "advancement.create.spout_potion.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:spout_potion", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/stressometer.json b/src/generated/resources/data/create/advancements/stressometer.json deleted file mode 100644 index 685691184..000000000 --- a/src/generated/resources/data/create/advancements/stressometer.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "parent": "create:goggles", - "display": { - "icon": { - "item": "create:stressometer" - }, - "title": { - "translate": "advancement.create.stressometer" - }, - "description": { - "translate": "advancement.create.stressometer.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:stressometer" - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/tunnel.json b/src/generated/resources/data/create/advancements/tunnel.json deleted file mode 100644 index 78f9f3c18..000000000 --- a/src/generated/resources/data/create/advancements/tunnel.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:belt", - "display": { - "icon": { - "item": "create:andesite_tunnel" - }, - "title": { - "translate": "advancement.create.tunnel" - }, - "description": { - "translate": "advancement.create.tunnel.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:place_tunnel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/upward_chute.json b/src/generated/resources/data/create/advancements/upward_chute.json deleted file mode 100644 index 424e8c0f6..000000000 --- a/src/generated/resources/data/create/advancements/upward_chute.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:chute", - "display": { - "icon": { - "item": "create:encased_fan" - }, - "title": { - "translate": "advancement.create.upward_chute" - }, - "description": { - "translate": "advancement.create.upward_chute.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:upward_chute", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/wand_of_symmetry.json b/src/generated/resources/data/create/advancements/wand_of_symmetry.json deleted file mode 100644 index 6f5e4c536..000000000 --- a/src/generated/resources/data/create/advancements/wand_of_symmetry.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:refined_radiance", - "display": { - "icon": { - "item": "create:wand_of_symmetry" - }, - "title": { - "translate": "advancement.create.wand_of_symmetry" - }, - "description": { - "translate": "advancement.create.wand_of_symmetry.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:wand_of_symmetry" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/water_wheel.json b/src/generated/resources/data/create/advancements/water_wheel.json deleted file mode 100644 index 0467f4f52..000000000 --- a/src/generated/resources/data/create/advancements/water_wheel.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "create:andesite_alloy", - "display": { - "icon": { - "item": "create:water_wheel" - }, - "title": { - "translate": "advancement.create.water_wheel" - }, - "description": { - "translate": "advancement.create.water_wheel.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:placed_block", - "conditions": { - "block": "create:water_wheel" - } - }, - "1": { - "trigger": "create:water_wheel", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/windmill.json b/src/generated/resources/data/create/advancements/windmill.json deleted file mode 100644 index 03f6a428b..000000000 --- a/src/generated/resources/data/create/advancements/windmill.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "parent": "create:andesite_alloy", - "display": { - "icon": { - "item": "create:windmill_bearing" - }, - "title": { - "translate": "advancement.create.windmill" - }, - "description": { - "translate": "advancement.create.windmill.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "create:windmill", - "conditions": {} - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/wrench.json b/src/generated/resources/data/create/advancements/wrench.json deleted file mode 100644 index 9c50bf400..000000000 --- a/src/generated/resources/data/create/advancements/wrench.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "create:its_alive", - "display": { - "icon": { - "item": "create:wrench" - }, - "title": { - "translate": "advancement.create.wrench" - }, - "description": { - "translate": "advancement.create.wrench.desc" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": false, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:wrench" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/acacia_window.json b/src/generated/resources/data/create/loot_tables/blocks/acacia_window.json deleted file mode 100644 index a1bc9dc59..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/acacia_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:acacia_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/acacia_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/acacia_window_pane.json deleted file mode 100644 index a2232bd79..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/acacia_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:acacia_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/adjustable_chain_gearshift.json b/src/generated/resources/data/create/loot_tables/blocks/adjustable_chain_gearshift.json deleted file mode 100644 index 780fad653..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/adjustable_chain_gearshift.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:adjustable_chain_gearshift" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/adjustable_crate.json b/src/generated/resources/data/create/loot_tables/blocks/adjustable_crate.json deleted file mode 100644 index af4517d40..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/adjustable_crate.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:adjustable_crate" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/adjustable_pulse_repeater.json b/src/generated/resources/data/create/loot_tables/blocks/adjustable_pulse_repeater.json deleted file mode 100644 index a8155e67d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/adjustable_pulse_repeater.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:adjustable_pulse_repeater" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/adjustable_repeater.json b/src/generated/resources/data/create/loot_tables/blocks/adjustable_repeater.json deleted file mode 100644 index c4475c7e1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/adjustable_repeater.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:adjustable_repeater" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/analog_lever.json b/src/generated/resources/data/create/loot_tables/blocks/analog_lever.json deleted file mode 100644 index 8d0e5288f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/analog_lever.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:analog_lever" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_belt_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_belt_funnel.json deleted file mode 100644 index c6403dc5a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_belt_funnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_funnel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks.json deleted file mode 100644 index 52446edd5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_slab.json deleted file mode 100644 index 7c92048db..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:andesite_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:andesite_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_stairs.json deleted file mode 100644 index 65e8bd854..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_wall.json deleted file mode 100644 index eef4ae850..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_casing.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_casing.json deleted file mode 100644 index 97a802053..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_casing.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_casing" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone.json deleted file mode 100644 index cebde7d8f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_slab.json deleted file mode 100644 index 0aec7461f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:andesite_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:andesite_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_stairs.json deleted file mode 100644 index 6cef1dc15..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_wall.json deleted file mode 100644 index 027532e89..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_shaft.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_shaft.json deleted file mode 100644 index 84f976dfb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_encased_shaft.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:shaft" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_funnel.json deleted file mode 100644 index c6403dc5a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_funnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_funnel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_pillar.json deleted file mode 100644 index d52b91933..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/andesite_tunnel.json b/src/generated/resources/data/create/loot_tables/blocks/andesite_tunnel.json deleted file mode 100644 index 64e2b05ab..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/andesite_tunnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:andesite_tunnel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/basin.json b/src/generated/resources/data/create/loot_tables/blocks/basin.json deleted file mode 100644 index 12b44e184..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/basin.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:basin" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/belt.json b/src/generated/resources/data/create/loot_tables/blocks/belt.json deleted file mode 100644 index 5ea424f73..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/belt.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:belt_connector" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/birch_window.json b/src/generated/resources/data/create/loot_tables/blocks/birch_window.json deleted file mode 100644 index 340ccf4a8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/birch_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:birch_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/birch_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/birch_window_pane.json deleted file mode 100644 index 2433c6582..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/birch_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:birch_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/black_sail.json b/src/generated/resources/data/create/loot_tables/blocks/black_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/black_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/black_seat.json b/src/generated/resources/data/create/loot_tables/blocks/black_seat.json deleted file mode 100644 index adebd728e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/black_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:black_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/black_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/black_valve_handle.json deleted file mode 100644 index 1861b0337..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/black_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:black_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/blaze_burner.json b/src/generated/resources/data/create/loot_tables/blocks/blaze_burner.json deleted file mode 100644 index 5e359f9ca..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/blaze_burner.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - }, - { - "condition": "minecraft:block_state_property", - "block": "create:blaze_burner", - "properties": { - "blaze": "none" - } - } - ], - "name": "create:empty_blaze_burner" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - }, - { - "condition": "minecraft:block_state_property", - "block": "create:blaze_burner", - "properties": { - "blaze": "smouldering" - } - } - ], - "name": "create:blaze_burner" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - }, - { - "condition": "minecraft:block_state_property", - "block": "create:blaze_burner", - "properties": { - "blaze": "fading" - } - } - ], - "name": "create:blaze_burner" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - }, - { - "condition": "minecraft:block_state_property", - "block": "create:blaze_burner", - "properties": { - "blaze": "kindled" - } - } - ], - "name": "create:blaze_burner" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - }, - { - "condition": "minecraft:block_state_property", - "block": "create:blaze_burner", - "properties": { - "blaze": "seething" - } - } - ], - "name": "create:blaze_burner" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/blue_sail.json b/src/generated/resources/data/create/loot_tables/blocks/blue_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/blue_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/blue_seat.json b/src/generated/resources/data/create/loot_tables/blocks/blue_seat.json deleted file mode 100644 index 1a89498c9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/blue_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:blue_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/blue_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/blue_valve_handle.json deleted file mode 100644 index c8a0e64d9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/blue_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:blue_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_belt_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_belt_funnel.json deleted file mode 100644 index c23027b20..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brass_belt_funnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:brass_funnel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_block.json b/src/generated/resources/data/create/loot_tables/blocks/brass_block.json deleted file mode 100644 index 7a283419f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brass_block.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:brass_block" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_casing.json b/src/generated/resources/data/create/loot_tables/blocks/brass_casing.json deleted file mode 100644 index c7882506d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brass_casing.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:brass_casing" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_encased_shaft.json b/src/generated/resources/data/create/loot_tables/blocks/brass_encased_shaft.json deleted file mode 100644 index 84f976dfb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brass_encased_shaft.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:shaft" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_funnel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_funnel.json deleted file mode 100644 index c23027b20..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brass_funnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:brass_funnel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brass_tunnel.json b/src/generated/resources/data/create/loot_tables/blocks/brass_tunnel.json deleted file mode 100644 index c627a6553..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brass_tunnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:brass_tunnel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brown_sail.json b/src/generated/resources/data/create/loot_tables/blocks/brown_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brown_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brown_seat.json b/src/generated/resources/data/create/loot_tables/blocks/brown_seat.json deleted file mode 100644 index 502d1e5bb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brown_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:brown_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/brown_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/brown_valve_handle.json deleted file mode 100644 index 2b3845dcb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/brown_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:brown_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/cart_assembler.json b/src/generated/resources/data/create/loot_tables/blocks/cart_assembler.json deleted file mode 100644 index 9261035c8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/cart_assembler.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:cart_assembler" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chiseled_dark_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/chiseled_dark_scoria.json deleted file mode 100644 index 6e1535bd0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/chiseled_dark_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:chiseled_dark_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chiseled_dolomite.json b/src/generated/resources/data/create/loot_tables/blocks/chiseled_dolomite.json deleted file mode 100644 index 7be52d414..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/chiseled_dolomite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:chiseled_dolomite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chiseled_gabbro.json b/src/generated/resources/data/create/loot_tables/blocks/chiseled_gabbro.json deleted file mode 100644 index 4da014ad2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/chiseled_gabbro.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:chiseled_gabbro" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chiseled_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/chiseled_limestone.json deleted file mode 100644 index 3eb3d43fd..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/chiseled_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:chiseled_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chiseled_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/chiseled_scoria.json deleted file mode 100644 index 54de8a8f9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/chiseled_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:chiseled_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chiseled_weathered_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/chiseled_weathered_limestone.json deleted file mode 100644 index b5d061dbe..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/chiseled_weathered_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:chiseled_weathered_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chute.json b/src/generated/resources/data/create/loot_tables/blocks/chute.json deleted file mode 100644 index aa1414e12..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/chute.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:chute" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/clockwork_bearing.json b/src/generated/resources/data/create/loot_tables/blocks/clockwork_bearing.json deleted file mode 100644 index 7903024cb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/clockwork_bearing.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:clockwork_bearing" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/clutch.json b/src/generated/resources/data/create/loot_tables/blocks/clutch.json deleted file mode 100644 index bc36ef4dd..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/clutch.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:clutch" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/cogwheel.json b/src/generated/resources/data/create/loot_tables/blocks/cogwheel.json deleted file mode 100644 index 00da9ff2a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/cogwheel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:cogwheel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/content_observer.json b/src/generated/resources/data/create/loot_tables/blocks/content_observer.json deleted file mode 100644 index 09c12c01b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/content_observer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:content_observer" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/controller_rail.json b/src/generated/resources/data/create/loot_tables/blocks/controller_rail.json deleted file mode 100644 index d68ce3cec..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/controller_rail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:controller_rail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json b/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json deleted file mode 100644 index b5466bfc9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:copy_name", - "source": "block_entity" - }, - { - "function": "minecraft:copy_nbt", - "source": "block_entity", - "ops": [ - { - "source": "Air", - "target": "Air", - "op": "replace" - } - ] - } - ], - "name": "create:copper_backtank" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_block.json b/src/generated/resources/data/create/loot_tables/blocks/copper_block.json deleted file mode 100644 index ef8ffe6a3..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/copper_block.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:copper_block" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_casing.json b/src/generated/resources/data/create/loot_tables/blocks/copper_casing.json deleted file mode 100644 index 7b5198258..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/copper_casing.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:copper_casing" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_ore.json b/src/generated/resources/data/create/loot_tables/blocks/copper_ore.json deleted file mode 100644 index b0c1a6f02..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/copper_ore.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:copper_ore" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_shingles.json b/src/generated/resources/data/create/loot_tables/blocks/copper_shingles.json deleted file mode 100644 index 7a6f49da0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/copper_shingles.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:copper_shingles" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_tiles.json b/src/generated/resources/data/create/loot_tables/blocks/copper_tiles.json deleted file mode 100644 index 4fabc0d92..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/copper_tiles.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:copper_tiles" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/copper_valve_handle.json deleted file mode 100644 index 86d70bc02..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/copper_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:copper_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/creative_crate.json b/src/generated/resources/data/create/loot_tables/blocks/creative_crate.json deleted file mode 100644 index 144039f46..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/creative_crate.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:creative_crate" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/creative_fluid_tank.json b/src/generated/resources/data/create/loot_tables/blocks/creative_fluid_tank.json deleted file mode 100644 index 0135c3367..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/creative_fluid_tank.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:creative_fluid_tank" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/creative_motor.json b/src/generated/resources/data/create/loot_tables/blocks/creative_motor.json deleted file mode 100644 index dcc540368..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/creative_motor.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:creative_motor" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/crimson_window.json b/src/generated/resources/data/create/loot_tables/blocks/crimson_window.json deleted file mode 100644 index 1b8fd7ca9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/crimson_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:crimson_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/crimson_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/crimson_window_pane.json deleted file mode 100644 index b71dc9d03..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/crimson_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:crimson_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/crushing_wheel.json b/src/generated/resources/data/create/loot_tables/blocks/crushing_wheel.json deleted file mode 100644 index 93171df60..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/crushing_wheel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:crushing_wheel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/crushing_wheel_controller.json b/src/generated/resources/data/create/loot_tables/blocks/crushing_wheel_controller.json deleted file mode 100644 index 78793172c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/crushing_wheel_controller.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/cuckoo_clock.json b/src/generated/resources/data/create/loot_tables/blocks/cuckoo_clock.json deleted file mode 100644 index 2dc60feac..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/cuckoo_clock.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:cuckoo_clock" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/cyan_sail.json b/src/generated/resources/data/create/loot_tables/blocks/cyan_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/cyan_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/cyan_seat.json b/src/generated/resources/data/create/loot_tables/blocks/cyan_seat.json deleted file mode 100644 index 75aeb06c0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/cyan_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:cyan_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/cyan_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/cyan_valve_handle.json deleted file mode 100644 index 08650e062..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/cyan_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:cyan_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_oak_window.json b/src/generated/resources/data/create/loot_tables/blocks/dark_oak_window.json deleted file mode 100644 index 539cab0e4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_oak_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_oak_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_oak_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/dark_oak_window_pane.json deleted file mode 100644 index 8e00155c4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_oak_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_oak_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria.json deleted file mode 100644 index 912caa5f7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "create:dark_scoria" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "name": "create:dark_scoria_cobblestone" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks.json deleted file mode 100644 index d2ae7ecae..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_scoria_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_slab.json deleted file mode 100644 index f0f16b380..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:dark_scoria_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:dark_scoria_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_stairs.json deleted file mode 100644 index 830b936c5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_scoria_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_wall.json deleted file mode 100644 index fafe71b46..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_scoria_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone.json deleted file mode 100644 index e319848c6..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_scoria_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_slab.json deleted file mode 100644 index dbd40c1d8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:dark_scoria_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:dark_scoria_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_stairs.json deleted file mode 100644 index 5c3f5a2f7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_scoria_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_wall.json deleted file mode 100644 index a5b5896e6..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_scoria_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_pillar.json deleted file mode 100644 index 73a4107c3..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dark_scoria_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dark_scoria_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/deployer.json b/src/generated/resources/data/create/loot_tables/blocks/deployer.json deleted file mode 100644 index 8486d8bb8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/deployer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:deployer" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/depot.json b/src/generated/resources/data/create/loot_tables/blocks/depot.json deleted file mode 100644 index 0f2400aed..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/depot.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:depot" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks.json deleted file mode 100644 index a782f9210..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:diorite_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_slab.json deleted file mode 100644 index a84d5d8bc..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:diorite_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:diorite_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_stairs.json deleted file mode 100644 index 518319f5a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:diorite_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_wall.json deleted file mode 100644 index fbd7ee8dc..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:diorite_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone.json deleted file mode 100644 index fdc4f8027..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:diorite_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_slab.json deleted file mode 100644 index 2710268db..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:diorite_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:diorite_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_stairs.json deleted file mode 100644 index cbfe78ba4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:diorite_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_wall.json deleted file mode 100644 index a8657e439..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:diorite_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/diorite_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/diorite_pillar.json deleted file mode 100644 index 4153f9aec..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/diorite_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:diorite_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite.json deleted file mode 100644 index 4085d60be..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "create:dolomite" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "name": "create:dolomite_cobblestone" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks.json deleted file mode 100644 index f9a96e243..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dolomite_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_slab.json deleted file mode 100644 index 765c74325..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:dolomite_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:dolomite_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_stairs.json deleted file mode 100644 index a7e94de71..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dolomite_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_wall.json deleted file mode 100644 index ad32e3818..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dolomite_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone.json deleted file mode 100644 index 2c133364a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dolomite_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_slab.json deleted file mode 100644 index c67ff9cf4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:dolomite_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:dolomite_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_stairs.json deleted file mode 100644 index 6b993af7a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dolomite_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_wall.json deleted file mode 100644 index 09d738758..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dolomite_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/dolomite_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/dolomite_pillar.json deleted file mode 100644 index ca2a7995b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/dolomite_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:dolomite_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/encased_chain_drive.json b/src/generated/resources/data/create/loot_tables/blocks/encased_chain_drive.json deleted file mode 100644 index f16394417..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/encased_chain_drive.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:encased_chain_drive" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/encased_fan.json b/src/generated/resources/data/create/loot_tables/blocks/encased_fan.json deleted file mode 100644 index 558f1f037..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/encased_fan.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:encased_fan" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/encased_fluid_pipe.json b/src/generated/resources/data/create/loot_tables/blocks/encased_fluid_pipe.json deleted file mode 100644 index 034fb50f5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/encased_fluid_pipe.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fluid_pipe" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks.json deleted file mode 100644 index 748cab81e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_andesite_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_slab.json deleted file mode 100644 index be6df56da..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_andesite_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_andesite_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_stairs.json deleted file mode 100644 index 8a1b8b086..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_andesite_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_wall.json deleted file mode 100644 index e11e64767..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_andesite_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_andesite_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks.json deleted file mode 100644 index 824f69e92..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_dark_scoria_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_slab.json deleted file mode 100644 index 48f8d1071..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_dark_scoria_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_dark_scoria_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_stairs.json deleted file mode 100644 index c6fb5b312..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_dark_scoria_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_wall.json deleted file mode 100644 index c523f1a23..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_dark_scoria_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_dark_scoria_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks.json deleted file mode 100644 index 4c51114c1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_diorite_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_slab.json deleted file mode 100644 index 32c8eacff..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_diorite_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_diorite_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_stairs.json deleted file mode 100644 index 568d6d913..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_diorite_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_wall.json deleted file mode 100644 index 33b00c23e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_diorite_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_diorite_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks.json deleted file mode 100644 index 90c1c9323..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_dolomite_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_slab.json deleted file mode 100644 index 1a0ae4c1e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_dolomite_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_dolomite_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_stairs.json deleted file mode 100644 index 773824b99..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_dolomite_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_wall.json deleted file mode 100644 index 80b292de9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_dolomite_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_dolomite_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks.json deleted file mode 100644 index 2935e0688..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_gabbro_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_slab.json deleted file mode 100644 index 04f13f37d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_gabbro_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_gabbro_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_stairs.json deleted file mode 100644 index 63c1f52ac..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_gabbro_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_wall.json deleted file mode 100644 index 5054dc4d5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_gabbro_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_gabbro_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks.json deleted file mode 100644 index e6ab47604..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_granite_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_slab.json deleted file mode 100644 index 21d67929e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_granite_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_granite_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_stairs.json deleted file mode 100644 index 867d141ec..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_granite_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_wall.json deleted file mode 100644 index 5b7ca60d9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_granite_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_granite_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks.json deleted file mode 100644 index f75da7e7c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_limestone_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_slab.json deleted file mode 100644 index c17e65ae5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_limestone_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_limestone_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_stairs.json deleted file mode 100644 index e14c85e8d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_limestone_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_wall.json deleted file mode 100644 index 4c3363a34..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_limestone_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_limestone_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks.json deleted file mode 100644 index 3b98fb4be..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_scoria_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_slab.json deleted file mode 100644 index e06e32527..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_scoria_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_scoria_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_stairs.json deleted file mode 100644 index 894375062..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_scoria_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_wall.json deleted file mode 100644 index 3fc8725f7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_scoria_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_scoria_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks.json deleted file mode 100644 index ef7f3a021..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_weathered_limestone_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_slab.json deleted file mode 100644 index e1478da60..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:fancy_weathered_limestone_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:fancy_weathered_limestone_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_stairs.json deleted file mode 100644 index 80a95bef4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_weathered_limestone_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_wall.json deleted file mode 100644 index c5e09d9fc..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fancy_weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fancy_weathered_limestone_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fluid_pipe.json b/src/generated/resources/data/create/loot_tables/blocks/fluid_pipe.json deleted file mode 100644 index 034fb50f5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fluid_pipe.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fluid_pipe" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fluid_tank.json b/src/generated/resources/data/create/loot_tables/blocks/fluid_tank.json deleted file mode 100644 index 93d48a2a7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fluid_tank.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fluid_tank" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/fluid_valve.json b/src/generated/resources/data/create/loot_tables/blocks/fluid_valve.json deleted file mode 100644 index 3dc9088e1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/fluid_valve.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fluid_valve" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/flywheel.json b/src/generated/resources/data/create/loot_tables/blocks/flywheel.json deleted file mode 100644 index 9f0018990..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/flywheel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:flywheel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/framed_glass.json b/src/generated/resources/data/create/loot_tables/blocks/framed_glass.json deleted file mode 100644 index b6fe4b2ce..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/framed_glass.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:framed_glass" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/framed_glass_pane.json b/src/generated/resources/data/create/loot_tables/blocks/framed_glass_pane.json deleted file mode 100644 index 6f9a53469..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/framed_glass_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:framed_glass_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/furnace_engine.json b/src/generated/resources/data/create/loot_tables/blocks/furnace_engine.json deleted file mode 100644 index e3c600d70..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/furnace_engine.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:furnace_engine" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro.json deleted file mode 100644 index 2f477a53e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "create:gabbro" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "name": "create:gabbro_cobblestone" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks.json deleted file mode 100644 index d72a84949..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gabbro_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_slab.json deleted file mode 100644 index e82ecd9f7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:gabbro_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:gabbro_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_stairs.json deleted file mode 100644 index cecd1c2c3..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gabbro_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_wall.json deleted file mode 100644 index 8a1838f95..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gabbro_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone.json deleted file mode 100644 index da433e66b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gabbro_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_slab.json deleted file mode 100644 index b44ae9582..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:gabbro_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:gabbro_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_stairs.json deleted file mode 100644 index dba6dcedd..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gabbro_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_wall.json deleted file mode 100644 index c2e0a31d3..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gabbro_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gabbro_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/gabbro_pillar.json deleted file mode 100644 index 39c151901..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gabbro_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gabbro_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gantry_carriage.json b/src/generated/resources/data/create/loot_tables/blocks/gantry_carriage.json deleted file mode 100644 index cf1d1630a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gantry_carriage.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gantry_carriage" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gantry_shaft.json b/src/generated/resources/data/create/loot_tables/blocks/gantry_shaft.json deleted file mode 100644 index 63718c8f4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gantry_shaft.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gantry_shaft" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gearbox.json b/src/generated/resources/data/create/loot_tables/blocks/gearbox.json deleted file mode 100644 index 3884c372a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gearbox.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gearbox" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gearshift.json b/src/generated/resources/data/create/loot_tables/blocks/gearshift.json deleted file mode 100644 index 59f07a7aa..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gearshift.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gearshift" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/glass_fluid_pipe.json b/src/generated/resources/data/create/loot_tables/blocks/glass_fluid_pipe.json deleted file mode 100644 index 034fb50f5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/glass_fluid_pipe.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:fluid_pipe" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/granite_bricks.json deleted file mode 100644 index 530d25555..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:granite_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_slab.json deleted file mode 100644 index 27f807d03..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:granite_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:granite_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_stairs.json deleted file mode 100644 index f8ca96295..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:granite_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_wall.json deleted file mode 100644 index f2b4823d9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:granite_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone.json deleted file mode 100644 index 102a8a426..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:granite_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_slab.json deleted file mode 100644 index 9a892bef9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:granite_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:granite_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_stairs.json deleted file mode 100644 index 8abae1836..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:granite_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_wall.json deleted file mode 100644 index 5598e9269..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:granite_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/granite_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/granite_pillar.json deleted file mode 100644 index e8f7316b1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/granite_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:granite_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gray_sail.json b/src/generated/resources/data/create/loot_tables/blocks/gray_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gray_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gray_seat.json b/src/generated/resources/data/create/loot_tables/blocks/gray_seat.json deleted file mode 100644 index 83fa2bff9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gray_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gray_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/gray_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/gray_valve_handle.json deleted file mode 100644 index db996c7d2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/gray_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:gray_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/green_sail.json b/src/generated/resources/data/create/loot_tables/blocks/green_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/green_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/green_seat.json b/src/generated/resources/data/create/loot_tables/blocks/green_seat.json deleted file mode 100644 index a517336e1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/green_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:green_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/green_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/green_valve_handle.json deleted file mode 100644 index 3138cc7e0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/green_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:green_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/hand_crank.json b/src/generated/resources/data/create/loot_tables/blocks/hand_crank.json deleted file mode 100644 index 0036a2099..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/hand_crank.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:hand_crank" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/horizontal_framed_glass.json b/src/generated/resources/data/create/loot_tables/blocks/horizontal_framed_glass.json deleted file mode 100644 index 8043511ee..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/horizontal_framed_glass.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:horizontal_framed_glass" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/horizontal_framed_glass_pane.json b/src/generated/resources/data/create/loot_tables/blocks/horizontal_framed_glass_pane.json deleted file mode 100644 index 99d31d4b7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/horizontal_framed_glass_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:horizontal_framed_glass_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/hose_pulley.json b/src/generated/resources/data/create/loot_tables/blocks/hose_pulley.json deleted file mode 100644 index 7be8a0b31..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/hose_pulley.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:hose_pulley" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/item_drain.json b/src/generated/resources/data/create/loot_tables/blocks/item_drain.json deleted file mode 100644 index 08949a5af..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/item_drain.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:item_drain" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/jungle_window.json b/src/generated/resources/data/create/loot_tables/blocks/jungle_window.json deleted file mode 100644 index be9c376c4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/jungle_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:jungle_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/jungle_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/jungle_window_pane.json deleted file mode 100644 index b83e2afe7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/jungle_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:jungle_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/large_cogwheel.json b/src/generated/resources/data/create/loot_tables/blocks/large_cogwheel.json deleted file mode 100644 index 83d695ba1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/large_cogwheel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:large_cogwheel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_andesite.json b/src/generated/resources/data/create/loot_tables/blocks/layered_andesite.json deleted file mode 100644 index be329abf8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_andesite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_andesite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_dark_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/layered_dark_scoria.json deleted file mode 100644 index 2739d396c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_dark_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_dark_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_diorite.json b/src/generated/resources/data/create/loot_tables/blocks/layered_diorite.json deleted file mode 100644 index e9395e38b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_diorite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_diorite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_dolomite.json b/src/generated/resources/data/create/loot_tables/blocks/layered_dolomite.json deleted file mode 100644 index 79395ee2b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_dolomite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_dolomite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_gabbro.json b/src/generated/resources/data/create/loot_tables/blocks/layered_gabbro.json deleted file mode 100644 index 662cfe494..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_gabbro.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_gabbro" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_granite.json b/src/generated/resources/data/create/loot_tables/blocks/layered_granite.json deleted file mode 100644 index e9a6f4498..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_granite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_granite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/layered_limestone.json deleted file mode 100644 index 134417de6..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/layered_scoria.json deleted file mode 100644 index 2b9f35081..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/layered_weathered_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/layered_weathered_limestone.json deleted file mode 100644 index 19240c612..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/layered_weathered_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:layered_weathered_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_blue_sail.json b/src/generated/resources/data/create/loot_tables/blocks/light_blue_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/light_blue_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_blue_seat.json b/src/generated/resources/data/create/loot_tables/blocks/light_blue_seat.json deleted file mode 100644 index c8e44be0f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/light_blue_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:light_blue_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_blue_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/light_blue_valve_handle.json deleted file mode 100644 index 6d3005ae2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/light_blue_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:light_blue_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_gray_sail.json b/src/generated/resources/data/create/loot_tables/blocks/light_gray_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/light_gray_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_gray_seat.json b/src/generated/resources/data/create/loot_tables/blocks/light_gray_seat.json deleted file mode 100644 index 4adbfa03c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/light_gray_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:light_gray_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/light_gray_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/light_gray_valve_handle.json deleted file mode 100644 index 92a453917..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/light_gray_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:light_gray_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/lime_sail.json b/src/generated/resources/data/create/loot_tables/blocks/lime_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/lime_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/lime_seat.json b/src/generated/resources/data/create/loot_tables/blocks/lime_seat.json deleted file mode 100644 index 3eae5d688..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/lime_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:lime_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/lime_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/lime_valve_handle.json deleted file mode 100644 index b0f193da4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/lime_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:lime_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limesand.json b/src/generated/resources/data/create/loot_tables/blocks/limesand.json deleted file mode 100644 index c0fcc6d79..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limesand.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:limesand" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone.json b/src/generated/resources/data/create/loot_tables/blocks/limestone.json deleted file mode 100644 index e5b513a61..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "create:limestone" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "name": "create:limestone_cobblestone" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks.json deleted file mode 100644 index 3d76330e0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:limestone_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_slab.json deleted file mode 100644 index 85a6b61d8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:limestone_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:limestone_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_stairs.json deleted file mode 100644 index 0cc0c5a6b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:limestone_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_wall.json deleted file mode 100644 index 83efbe4cf..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:limestone_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone.json deleted file mode 100644 index 49a8ab865..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:limestone_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_slab.json deleted file mode 100644 index 16c170eaa..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:limestone_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:limestone_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_stairs.json deleted file mode 100644 index 43943540e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:limestone_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_wall.json deleted file mode 100644 index 2e69d9352..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:limestone_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/limestone_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/limestone_pillar.json deleted file mode 100644 index 6b97b1048..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/limestone_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:limestone_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/linear_chassis.json b/src/generated/resources/data/create/loot_tables/blocks/linear_chassis.json deleted file mode 100644 index f5cbdac03..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/linear_chassis.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:linear_chassis" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/lit_blaze_burner.json b/src/generated/resources/data/create/loot_tables/blocks/lit_blaze_burner.json deleted file mode 100644 index a74eb7287..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/lit_blaze_burner.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:empty_blaze_burner" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/magenta_sail.json b/src/generated/resources/data/create/loot_tables/blocks/magenta_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/magenta_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/magenta_seat.json b/src/generated/resources/data/create/loot_tables/blocks/magenta_seat.json deleted file mode 100644 index 2c2867862..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/magenta_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:magenta_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/magenta_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/magenta_valve_handle.json deleted file mode 100644 index 33188b6b5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/magenta_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:magenta_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_arm.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_arm.json deleted file mode 100644 index 0a1dfd412..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_arm.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_arm" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_bearing.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_bearing.json deleted file mode 100644 index 3bd9ad7ae..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_bearing.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_bearing" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_crafter.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_crafter.json deleted file mode 100644 index 2e5a435a5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_crafter.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_crafter" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_drill.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_drill.json deleted file mode 100644 index 4b11a6854..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_drill.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_drill" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_harvester.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_harvester.json deleted file mode 100644 index 043243182..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_harvester.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_harvester" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_mixer.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_mixer.json deleted file mode 100644 index a18c98604..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_mixer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_mixer" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston.json deleted file mode 100644 index fb9bfa100..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_piston" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston_head.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston_head.json deleted file mode 100644 index 7f5453a57..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_piston_head.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:piston_extension_pole" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_plough.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_plough.json deleted file mode 100644 index becedd150..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_plough.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_plough" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_press.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_press.json deleted file mode 100644 index 8844f26c5..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_press.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_press" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_pump.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_pump.json deleted file mode 100644 index f4bd79ce8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_pump.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_pump" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mechanical_saw.json b/src/generated/resources/data/create/loot_tables/blocks/mechanical_saw.json deleted file mode 100644 index 279a2be14..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mechanical_saw.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mechanical_saw" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/metal_bracket.json b/src/generated/resources/data/create/loot_tables/blocks/metal_bracket.json deleted file mode 100644 index 4f1888239..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/metal_bracket.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:metal_bracket" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/millstone.json b/src/generated/resources/data/create/loot_tables/blocks/millstone.json deleted file mode 100644 index 76cc61eb3..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/millstone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:millstone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/minecart_anchor.json b/src/generated/resources/data/create/loot_tables/blocks/minecart_anchor.json deleted file mode 100644 index 78793172c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/minecart_anchor.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_andesite.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_andesite.json deleted file mode 100644 index e6c7694df..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_andesite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_andesite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_dark_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_dark_scoria.json deleted file mode 100644 index add621357..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_dark_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_dark_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_diorite.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_diorite.json deleted file mode 100644 index 807ffd14a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_diorite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_diorite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_dolomite.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_dolomite.json deleted file mode 100644 index 3395b5ca2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_dolomite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_dolomite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_gabbro.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_gabbro.json deleted file mode 100644 index df38034fd..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_gabbro.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_gabbro" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_granite.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_granite.json deleted file mode 100644 index fab0378d2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_granite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_granite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_limestone.json deleted file mode 100644 index 831076ab9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_scoria.json deleted file mode 100644 index 0f7a75d53..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mossy_weathered_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/mossy_weathered_limestone.json deleted file mode 100644 index 529712f06..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mossy_weathered_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mossy_weathered_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/mysterious_cuckoo_clock.json b/src/generated/resources/data/create/loot_tables/blocks/mysterious_cuckoo_clock.json deleted file mode 100644 index 925e3d10a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/mysterious_cuckoo_clock.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:mysterious_cuckoo_clock" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/natural_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/natural_scoria.json deleted file mode 100644 index dc853d0da..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/natural_scoria.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "create:natural_scoria" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "name": "create:scoria" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/nixie_tube.json b/src/generated/resources/data/create/loot_tables/blocks/nixie_tube.json deleted file mode 100644 index 68e7a85d0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/nixie_tube.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:nixie_tube" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/nozzle.json b/src/generated/resources/data/create/loot_tables/blocks/nozzle.json deleted file mode 100644 index 41303b700..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/nozzle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:nozzle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/oak_window.json b/src/generated/resources/data/create/loot_tables/blocks/oak_window.json deleted file mode 100644 index 2bb2bf90e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/oak_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:oak_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/oak_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/oak_window_pane.json deleted file mode 100644 index 1c37b0ce0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/oak_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:oak_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/orange_sail.json b/src/generated/resources/data/create/loot_tables/blocks/orange_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/orange_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/orange_seat.json b/src/generated/resources/data/create/loot_tables/blocks/orange_seat.json deleted file mode 100644 index 8b6461277..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/orange_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:orange_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/orange_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/orange_valve_handle.json deleted file mode 100644 index 537e63db0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/orange_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:orange_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/ornate_iron_window.json b/src/generated/resources/data/create/loot_tables/blocks/ornate_iron_window.json deleted file mode 100644 index c5e0968e9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/ornate_iron_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:ornate_iron_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/ornate_iron_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/ornate_iron_window_pane.json deleted file mode 100644 index 570ec0ed3..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/ornate_iron_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:ornate_iron_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_andesite.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_andesite.json deleted file mode 100644 index c23f676f8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_andesite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_andesite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_dark_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_dark_scoria.json deleted file mode 100644 index 4a8e1eb7f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_dark_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_dark_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_diorite.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_diorite.json deleted file mode 100644 index 55f0324df..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_diorite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_diorite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_dolomite.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_dolomite.json deleted file mode 100644 index 237464414..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_dolomite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_dolomite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_gabbro.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_gabbro.json deleted file mode 100644 index 0eb34158d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_gabbro.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_gabbro" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_granite.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_granite.json deleted file mode 100644 index 70a9bbb87..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_granite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_granite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_limestone.json deleted file mode 100644 index bc2f8836d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_scoria.json deleted file mode 100644 index b232a59b6..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/overgrown_weathered_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/overgrown_weathered_limestone.json deleted file mode 100644 index 1bffa888d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/overgrown_weathered_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:overgrown_weathered_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_andesite.json b/src/generated/resources/data/create/loot_tables/blocks/paved_andesite.json deleted file mode 100644 index a0ee1a610..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_andesite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_andesite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_slab.json deleted file mode 100644 index 4b0381d02..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_andesite_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_andesite_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_stairs.json deleted file mode 100644 index aaa3c9e82..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_andesite_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_wall.json deleted file mode 100644 index c0358ef85..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_andesite_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_andesite_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria.json deleted file mode 100644 index b7a7499da..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_dark_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_slab.json deleted file mode 100644 index 3e725d598..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_dark_scoria_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_dark_scoria_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_stairs.json deleted file mode 100644 index 4bc87b1d4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_dark_scoria_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_wall.json deleted file mode 100644 index 0321154bb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_dark_scoria_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_dark_scoria_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_diorite.json b/src/generated/resources/data/create/loot_tables/blocks/paved_diorite.json deleted file mode 100644 index 7527aaf13..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_diorite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_diorite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_slab.json deleted file mode 100644 index e2b8a7ae6..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_diorite_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_diorite_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_stairs.json deleted file mode 100644 index d72d14b86..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_diorite_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_wall.json deleted file mode 100644 index c7faccd0a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_diorite_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_diorite_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite.json b/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite.json deleted file mode 100644 index edc40985a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_dolomite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_slab.json deleted file mode 100644 index 5e8fd34a8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_dolomite_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_dolomite_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_stairs.json deleted file mode 100644 index 16e86046b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_dolomite_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_wall.json deleted file mode 100644 index 9b8580079..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_dolomite_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_dolomite_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro.json b/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro.json deleted file mode 100644 index 02746e530..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_gabbro" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_slab.json deleted file mode 100644 index 2dbc7b71d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_gabbro_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_gabbro_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_stairs.json deleted file mode 100644 index 5f1dbf749..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_gabbro_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_wall.json deleted file mode 100644 index 591b8bff4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_gabbro_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_gabbro_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_granite.json b/src/generated/resources/data/create/loot_tables/blocks/paved_granite.json deleted file mode 100644 index c28c4bfe7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_granite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_granite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_granite_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_granite_slab.json deleted file mode 100644 index b1579560c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_granite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_granite_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_granite_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_granite_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_granite_stairs.json deleted file mode 100644 index a8f921a7a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_granite_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_granite_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_granite_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_granite_wall.json deleted file mode 100644 index d74b8b778..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_granite_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_granite_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/paved_limestone.json deleted file mode 100644 index ed36cee3e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_slab.json deleted file mode 100644 index 2b4a89c02..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_limestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_limestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_stairs.json deleted file mode 100644 index 7de098983..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_limestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_wall.json deleted file mode 100644 index 5869976e8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_limestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_limestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/paved_scoria.json deleted file mode 100644 index c3570d19b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_slab.json deleted file mode 100644 index a692d4686..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_scoria_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_scoria_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_stairs.json deleted file mode 100644 index 70f8fe3ab..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_scoria_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_wall.json deleted file mode 100644 index cd4ea9990..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_scoria_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_scoria_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone.json deleted file mode 100644 index 069daad53..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_weathered_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_slab.json deleted file mode 100644 index 903ee8173..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:paved_weathered_limestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:paved_weathered_limestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_stairs.json deleted file mode 100644 index 37b28a513..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_weathered_limestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_wall.json deleted file mode 100644 index 49f8d8b88..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/paved_weathered_limestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:paved_weathered_limestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/pink_sail.json b/src/generated/resources/data/create/loot_tables/blocks/pink_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/pink_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/pink_seat.json b/src/generated/resources/data/create/loot_tables/blocks/pink_seat.json deleted file mode 100644 index 0bfac1ff2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/pink_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:pink_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/pink_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/pink_valve_handle.json deleted file mode 100644 index f73647fdb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/pink_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:pink_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/piston_extension_pole.json b/src/generated/resources/data/create/loot_tables/blocks/piston_extension_pole.json deleted file mode 100644 index 7f5453a57..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/piston_extension_pole.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:piston_extension_pole" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria.json deleted file mode 100644 index 1369b41df..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_dark_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_slab.json b/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_slab.json deleted file mode 100644 index a4c1997d4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:polished_dark_scoria_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:polished_dark_scoria_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_stairs.json deleted file mode 100644 index 6680b53fc..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_dark_scoria_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_wall.json b/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_wall.json deleted file mode 100644 index f2da7e72e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_dark_scoria_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_dark_scoria_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite.json b/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite.json deleted file mode 100644 index f53102b46..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_dolomite" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_slab.json b/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_slab.json deleted file mode 100644 index b3dfab548..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:polished_dolomite_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:polished_dolomite_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_stairs.json deleted file mode 100644 index ad65647f6..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_dolomite_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_wall.json b/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_wall.json deleted file mode 100644 index 5684fb5e4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_dolomite_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_dolomite_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro.json b/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro.json deleted file mode 100644 index 7ed01a1c3..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_gabbro" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_slab.json b/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_slab.json deleted file mode 100644 index 861eba888..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:polished_gabbro_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:polished_gabbro_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_stairs.json deleted file mode 100644 index 58f1ac6d4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_gabbro_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_wall.json b/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_wall.json deleted file mode 100644 index 4b35e26a2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_gabbro_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_gabbro_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/polished_limestone.json deleted file mode 100644 index 5af42d7b1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_slab.json deleted file mode 100644 index ced385ee6..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:polished_limestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:polished_limestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_stairs.json deleted file mode 100644 index 5143600b2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_limestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_wall.json deleted file mode 100644 index 1d6551330..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_limestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_limestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_scoria.json b/src/generated/resources/data/create/loot_tables/blocks/polished_scoria.json deleted file mode 100644 index b28b131c7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_scoria.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_scoria" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_slab.json b/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_slab.json deleted file mode 100644 index 4f44b847b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:polished_scoria_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:polished_scoria_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_stairs.json deleted file mode 100644 index 587eca83a..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_scoria_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_wall.json b/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_wall.json deleted file mode 100644 index 1524f1e0c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_scoria_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_scoria_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone.json deleted file mode 100644 index b610537df..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_weathered_limestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_slab.json deleted file mode 100644 index bb102c0eb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:polished_weathered_limestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:polished_weathered_limestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_stairs.json deleted file mode 100644 index cef045fd0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_weathered_limestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_wall.json deleted file mode 100644 index 446c89262..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/polished_weathered_limestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:polished_weathered_limestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/portable_fluid_interface.json b/src/generated/resources/data/create/loot_tables/blocks/portable_fluid_interface.json deleted file mode 100644 index d4f291dad..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/portable_fluid_interface.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:portable_fluid_interface" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/portable_storage_interface.json b/src/generated/resources/data/create/loot_tables/blocks/portable_storage_interface.json deleted file mode 100644 index db6214adf..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/portable_storage_interface.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:portable_storage_interface" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/powered_latch.json b/src/generated/resources/data/create/loot_tables/blocks/powered_latch.json deleted file mode 100644 index 3e5189a57..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/powered_latch.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:powered_latch" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/powered_toggle_latch.json b/src/generated/resources/data/create/loot_tables/blocks/powered_toggle_latch.json deleted file mode 100644 index 54d3cc72c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/powered_toggle_latch.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:powered_toggle_latch" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/pulley_magnet.json b/src/generated/resources/data/create/loot_tables/blocks/pulley_magnet.json deleted file mode 100644 index 78793172c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/pulley_magnet.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/pulse_repeater.json b/src/generated/resources/data/create/loot_tables/blocks/pulse_repeater.json deleted file mode 100644 index 190da8581..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/pulse_repeater.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:pulse_repeater" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/purple_sail.json b/src/generated/resources/data/create/loot_tables/blocks/purple_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/purple_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/purple_seat.json b/src/generated/resources/data/create/loot_tables/blocks/purple_seat.json deleted file mode 100644 index 053d3f5a7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/purple_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:purple_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/purple_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/purple_valve_handle.json deleted file mode 100644 index e6d6e7ca9..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/purple_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:purple_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/radial_chassis.json b/src/generated/resources/data/create/loot_tables/blocks/radial_chassis.json deleted file mode 100644 index 7fe93b221..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/radial_chassis.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:radial_chassis" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/red_sail.json b/src/generated/resources/data/create/loot_tables/blocks/red_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/red_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/red_seat.json b/src/generated/resources/data/create/loot_tables/blocks/red_seat.json deleted file mode 100644 index 740c68eaf..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/red_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:red_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/red_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/red_valve_handle.json deleted file mode 100644 index d4090bf79..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/red_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:red_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/redstone_contact.json b/src/generated/resources/data/create/loot_tables/blocks/redstone_contact.json deleted file mode 100644 index 06c256e8f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/redstone_contact.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:redstone_contact" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/redstone_link.json b/src/generated/resources/data/create/loot_tables/blocks/redstone_link.json deleted file mode 100644 index adb163fdc..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/redstone_link.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:redstone_link" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/refined_radiance_casing.json b/src/generated/resources/data/create/loot_tables/blocks/refined_radiance_casing.json deleted file mode 100644 index 76ec447a2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/refined_radiance_casing.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:refined_radiance_casing" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/reinforced_rail.json b/src/generated/resources/data/create/loot_tables/blocks/reinforced_rail.json deleted file mode 100644 index cba199d6f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/reinforced_rail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:reinforced_rail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/rope.json b/src/generated/resources/data/create/loot_tables/blocks/rope.json deleted file mode 100644 index 78793172c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/rope.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "minecraft:air" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/rope_pulley.json b/src/generated/resources/data/create/loot_tables/blocks/rope_pulley.json deleted file mode 100644 index fa0c48f95..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/rope_pulley.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:rope_pulley" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/rotation_speed_controller.json b/src/generated/resources/data/create/loot_tables/blocks/rotation_speed_controller.json deleted file mode 100644 index 1d10e1f73..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/rotation_speed_controller.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:rotation_speed_controller" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/sail_frame.json b/src/generated/resources/data/create/loot_tables/blocks/sail_frame.json deleted file mode 100644 index 40c31d6b4..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/sail_frame.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:sail_frame" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/schematic_table.json b/src/generated/resources/data/create/loot_tables/blocks/schematic_table.json deleted file mode 100644 index 9005e3e5f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/schematic_table.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:schematic_table" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/schematicannon.json b/src/generated/resources/data/create/loot_tables/blocks/schematicannon.json deleted file mode 100644 index 16d2e3ed1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/schematicannon.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:copy_nbt", - "source": "block_entity", - "ops": [ - { - "source": "Options", - "target": "BlockEntityTag.Options", - "op": "replace" - } - ] - } - ], - "name": "create:schematicannon" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria.json b/src/generated/resources/data/create/loot_tables/blocks/scoria.json deleted file mode 100644 index a119016fa..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "create:scoria" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "name": "create:scoria_cobblestone" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks.json deleted file mode 100644 index f3ed5de62..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:scoria_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_slab.json deleted file mode 100644 index 4c80923cb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:scoria_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:scoria_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_stairs.json deleted file mode 100644 index b1ec841f0..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:scoria_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_wall.json deleted file mode 100644 index d6ad6538b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:scoria_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone.json deleted file mode 100644 index e16bbdfe7..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:scoria_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_slab.json deleted file mode 100644 index 131be96bf..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:scoria_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:scoria_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_stairs.json deleted file mode 100644 index 359243e41..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:scoria_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_wall.json deleted file mode 100644 index f068d1746..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:scoria_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/scoria_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/scoria_pillar.json deleted file mode 100644 index 512348d29..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/scoria_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:scoria_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/secondary_linear_chassis.json b/src/generated/resources/data/create/loot_tables/blocks/secondary_linear_chassis.json deleted file mode 100644 index eef030a7d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/secondary_linear_chassis.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:secondary_linear_chassis" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/sequenced_gearshift.json b/src/generated/resources/data/create/loot_tables/blocks/sequenced_gearshift.json deleted file mode 100644 index ee60996d2..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/sequenced_gearshift.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:sequenced_gearshift" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/shadow_steel_casing.json b/src/generated/resources/data/create/loot_tables/blocks/shadow_steel_casing.json deleted file mode 100644 index d15ba3eac..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/shadow_steel_casing.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:shadow_steel_casing" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/shaft.json b/src/generated/resources/data/create/loot_tables/blocks/shaft.json deleted file mode 100644 index 84f976dfb..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/shaft.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:shaft" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/smart_chute.json b/src/generated/resources/data/create/loot_tables/blocks/smart_chute.json deleted file mode 100644 index f3e3c62ea..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/smart_chute.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:smart_chute" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/smart_fluid_pipe.json b/src/generated/resources/data/create/loot_tables/blocks/smart_fluid_pipe.json deleted file mode 100644 index 3f18d0b41..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/smart_fluid_pipe.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:smart_fluid_pipe" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/speedometer.json b/src/generated/resources/data/create/loot_tables/blocks/speedometer.json deleted file mode 100644 index 77c13c6fd..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/speedometer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:speedometer" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/spout.json b/src/generated/resources/data/create/loot_tables/blocks/spout.json deleted file mode 100644 index 20323c8fd..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/spout.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:spout" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/spruce_window.json b/src/generated/resources/data/create/loot_tables/blocks/spruce_window.json deleted file mode 100644 index 923b177ed..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/spruce_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:spruce_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/spruce_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/spruce_window_pane.json deleted file mode 100644 index 37bf58da8..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/spruce_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:spruce_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/sticker.json b/src/generated/resources/data/create/loot_tables/blocks/sticker.json deleted file mode 100644 index 92ccdbe64..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/sticker.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:sticker" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/sticky_mechanical_piston.json b/src/generated/resources/data/create/loot_tables/blocks/sticky_mechanical_piston.json deleted file mode 100644 index e45b30313..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/sticky_mechanical_piston.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:sticky_mechanical_piston" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/stockpile_switch.json b/src/generated/resources/data/create/loot_tables/blocks/stockpile_switch.json deleted file mode 100644 index be2e38027..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/stockpile_switch.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:stockpile_switch" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/stressometer.json b/src/generated/resources/data/create/loot_tables/blocks/stressometer.json deleted file mode 100644 index 67e752d47..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/stressometer.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:stressometer" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/tiled_glass.json b/src/generated/resources/data/create/loot_tables/blocks/tiled_glass.json deleted file mode 100644 index b4f3b0e0b..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/tiled_glass.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:tiled_glass" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/tiled_glass_pane.json b/src/generated/resources/data/create/loot_tables/blocks/tiled_glass_pane.json deleted file mode 100644 index 29dc59308..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/tiled_glass_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:tiled_glass_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/turntable.json b/src/generated/resources/data/create/loot_tables/blocks/turntable.json deleted file mode 100644 index 49d21d9a6..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/turntable.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:turntable" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/vertical_framed_glass.json b/src/generated/resources/data/create/loot_tables/blocks/vertical_framed_glass.json deleted file mode 100644 index ee02fe589..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/vertical_framed_glass.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:vertical_framed_glass" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/vertical_framed_glass_pane.json b/src/generated/resources/data/create/loot_tables/blocks/vertical_framed_glass_pane.json deleted file mode 100644 index 05208f24c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/vertical_framed_glass_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:vertical_framed_glass_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/warped_window.json b/src/generated/resources/data/create/loot_tables/blocks/warped_window.json deleted file mode 100644 index b1ec0e64e..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/warped_window.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:warped_window" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/warped_window_pane.json b/src/generated/resources/data/create/loot_tables/blocks/warped_window_pane.json deleted file mode 100644 index aec7abd02..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/warped_window_pane.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:warped_window_pane" - } - ], - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/water_wheel.json b/src/generated/resources/data/create/loot_tables/blocks/water_wheel.json deleted file mode 100644 index 3002fb270..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/water_wheel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:water_wheel" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone.json deleted file mode 100644 index e2f779734..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "create:weathered_limestone" - }, - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "name": "create:weathered_limestone_cobblestone" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks.json deleted file mode 100644 index 4c24c5131..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:weathered_limestone_bricks" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_slab.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_slab.json deleted file mode 100644 index 425fca698..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:weathered_limestone_bricks_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:weathered_limestone_bricks_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_stairs.json deleted file mode 100644 index 291abf01d..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:weathered_limestone_bricks_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_wall.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_wall.json deleted file mode 100644 index e80d0da9c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:weathered_limestone_bricks_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone.json deleted file mode 100644 index 24be08287..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:weathered_limestone_cobblestone" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_slab.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_slab.json deleted file mode 100644 index 7dc0be3bd..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_slab.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "conditions": [ - { - "condition": "minecraft:block_state_property", - "block": "create:weathered_limestone_cobblestone_slab", - "properties": { - "type": "double" - } - } - ], - "count": 2 - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "create:weathered_limestone_cobblestone_slab" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_stairs.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_stairs.json deleted file mode 100644 index 433c18e7c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_stairs.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:weathered_limestone_cobblestone_stairs" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_wall.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_wall.json deleted file mode 100644 index b03cf1611..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_cobblestone_wall.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:weathered_limestone_cobblestone_wall" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_pillar.json b/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_pillar.json deleted file mode 100644 index 051edf20c..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weathered_limestone_pillar.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:weathered_limestone_pillar" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/weighted_ejector.json b/src/generated/resources/data/create/loot_tables/blocks/weighted_ejector.json deleted file mode 100644 index 4642af181..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/weighted_ejector.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:weighted_ejector" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/white_sail.json b/src/generated/resources/data/create/loot_tables/blocks/white_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/white_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/white_seat.json b/src/generated/resources/data/create/loot_tables/blocks/white_seat.json deleted file mode 100644 index 301d51e21..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/white_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/white_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/white_valve_handle.json deleted file mode 100644 index dcb5f3a1f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/white_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/windmill_bearing.json b/src/generated/resources/data/create/loot_tables/blocks/windmill_bearing.json deleted file mode 100644 index 779887744..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/windmill_bearing.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:windmill_bearing" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/wooden_bracket.json b/src/generated/resources/data/create/loot_tables/blocks/wooden_bracket.json deleted file mode 100644 index d7b082804..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/wooden_bracket.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:wooden_bracket" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/yellow_sail.json b/src/generated/resources/data/create/loot_tables/blocks/yellow_sail.json deleted file mode 100644 index c820422f1..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/yellow_sail.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:white_sail" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/yellow_seat.json b/src/generated/resources/data/create/loot_tables/blocks/yellow_seat.json deleted file mode 100644 index 4b63ee7e3..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/yellow_seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:yellow_seat" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/yellow_valve_handle.json b/src/generated/resources/data/create/loot_tables/blocks/yellow_valve_handle.json deleted file mode 100644 index 0359a3354..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/yellow_valve_handle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:yellow_valve_handle" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/zinc_block.json b/src/generated/resources/data/create/loot_tables/blocks/zinc_block.json deleted file mode 100644 index a6e109215..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/zinc_block.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:zinc_block" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/zinc_ore.json b/src/generated/resources/data/create/loot_tables/blocks/zinc_ore.json deleted file mode 100644 index d0639bf0f..000000000 --- a/src/generated/resources/data/create/loot_tables/blocks/zinc_ore.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "create:zinc_ore" - } - ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/acacia_window.json b/src/generated/resources/data/create/recipes/acacia_window.json deleted file mode 100644 index c94925f3a..000000000 --- a/src/generated/resources/data/create/recipes/acacia_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "minecraft:acacia_planks" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:acacia_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/acacia_window_pane.json b/src/generated/resources/data/create/recipes/acacia_window_pane.json deleted file mode 100644 index 0205ad159..000000000 --- a/src/generated/resources/data/create/recipes/acacia_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:acacia_window" - } - }, - "result": { - "item": "create:acacia_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite.json b/src/generated/resources/data/create/recipes/andesite.json deleted file mode 100644 index 1a8a89094..000000000 --- a/src/generated/resources/data/create/recipes/andesite.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:andesite_cobblestone" - }, - "result": "minecraft:andesite", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_bricks_from_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_bricks_from_andesite_stonecutting.json deleted file mode 100644 index f379c7df2..000000000 --- a/src/generated/resources/data/create/recipes/andesite_bricks_from_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:andesite" - }, - "result": "create:andesite_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_bricks_slab.json b/src/generated/resources/data/create/recipes/andesite_bricks_slab.json deleted file mode 100644 index 9b0cccec7..000000000 --- a/src/generated/resources/data/create/recipes/andesite_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "andesite_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:andesite_bricks" - } - }, - "result": { - "item": "create:andesite_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json deleted file mode 100644 index 0d1085b90..000000000 --- a/src/generated/resources/data/create/recipes/andesite_bricks_slab_from_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_bricks" - }, - "result": "create:andesite_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_bricks_stairs.json b/src/generated/resources/data/create/recipes/andesite_bricks_stairs.json deleted file mode 100644 index 407facaa1..000000000 --- a/src/generated/resources/data/create/recipes/andesite_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "andesite_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:andesite_bricks" - } - }, - "result": { - "item": "create:andesite_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_bricks_stairs_from_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_bricks_stairs_from_andesite_bricks_stonecutting.json deleted file mode 100644 index 8820d643b..000000000 --- a/src/generated/resources/data/create/recipes/andesite_bricks_stairs_from_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_bricks" - }, - "result": "create:andesite_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_bricks_wall.json b/src/generated/resources/data/create/recipes/andesite_bricks_wall.json deleted file mode 100644 index d7e2dbe8e..000000000 --- a/src/generated/resources/data/create/recipes/andesite_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:andesite_bricks" - } - }, - "result": { - "item": "create:andesite_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_bricks_wall_from_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_bricks_wall_from_andesite_bricks_stonecutting.json deleted file mode 100644 index a9c1a58bf..000000000 --- a/src/generated/resources/data/create/recipes/andesite_bricks_wall_from_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_bricks" - }, - "result": "create:andesite_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_cobblestone_from_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_cobblestone_from_andesite_stonecutting.json deleted file mode 100644 index 4c0bd00e4..000000000 --- a/src/generated/resources/data/create/recipes/andesite_cobblestone_from_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:andesite" - }, - "result": "create:andesite_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_cobblestone_slab.json b/src/generated/resources/data/create/recipes/andesite_cobblestone_slab.json deleted file mode 100644 index f1c8a9467..000000000 --- a/src/generated/resources/data/create/recipes/andesite_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "andesite_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:andesite_cobblestone" - } - }, - "result": { - "item": "create:andesite_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting.json deleted file mode 100644 index 2cf2a1672..000000000 --- a/src/generated/resources/data/create/recipes/andesite_cobblestone_slab_from_andesite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_cobblestone" - }, - "result": "create:andesite_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/andesite_cobblestone_stairs.json deleted file mode 100644 index 205b4a2c1..000000000 --- a/src/generated/resources/data/create/recipes/andesite_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "andesite_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:andesite_cobblestone" - } - }, - "result": { - "item": "create:andesite_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json deleted file mode 100644 index 589ba78d1..000000000 --- a/src/generated/resources/data/create/recipes/andesite_cobblestone_stairs_from_andesite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_cobblestone" - }, - "result": "create:andesite_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_cobblestone_wall.json b/src/generated/resources/data/create/recipes/andesite_cobblestone_wall.json deleted file mode 100644 index 133aabe8a..000000000 --- a/src/generated/resources/data/create/recipes/andesite_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:andesite_cobblestone" - } - }, - "result": { - "item": "create:andesite_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json deleted file mode 100644 index 5cdf8f26e..000000000 --- a/src/generated/resources/data/create/recipes/andesite_cobblestone_wall_from_andesite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:andesite_cobblestone" - }, - "result": "create:andesite_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_pillar.json b/src/generated/resources/data/create/recipes/andesite_pillar.json deleted file mode 100644 index 29a9ad55b..000000000 --- a/src/generated/resources/data/create/recipes/andesite_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "minecraft:andesite" - } - }, - "result": { - "item": "create:andesite_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/andesite_pillar_from_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/andesite_pillar_from_andesite_stonecutting.json deleted file mode 100644 index 44da5f560..000000000 --- a/src/generated/resources/data/create/recipes/andesite_pillar_from_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:andesite" - }, - "result": "create:andesite_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/birch_window.json b/src/generated/resources/data/create/recipes/birch_window.json deleted file mode 100644 index 644da9932..000000000 --- a/src/generated/resources/data/create/recipes/birch_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "minecraft:birch_planks" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:birch_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/birch_window_pane.json b/src/generated/resources/data/create/recipes/birch_window_pane.json deleted file mode 100644 index 802d6b6ed..000000000 --- a/src/generated/resources/data/create/recipes/birch_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:birch_window" - } - }, - "result": { - "item": "create:birch_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json deleted file mode 100644 index fd2790eab..000000000 --- a/src/generated/resources/data/create/recipes/blasting/aluminum_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_aluminum_ore" - }, - "result": "silents_mechanisms:aluminum_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/brass_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/blasting/brass_ingot_from_crushed.json deleted file mode 100644 index ce5f6049b..000000000 --- a/src/generated/resources/data/create/recipes/blasting/brass_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_brass" - }, - "result": "create:brass_ingot", - "experience": 0.1, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/copper_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/blasting/copper_ingot_from_crushed.json deleted file mode 100644 index 6afa9b361..000000000 --- a/src/generated/resources/data/create/recipes/blasting/copper_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_copper_ore" - }, - "result": "create:copper_ingot", - "experience": 0.1, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/copper_ingot_from_ore.json b/src/generated/resources/data/create/recipes/blasting/copper_ingot_from_ore.json deleted file mode 100644 index 3c3da8e41..000000000 --- a/src/generated/resources/data/create/recipes/blasting/copper_ingot_from_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "tag": "forge:ores/copper" - }, - "result": "create:copper_ingot", - "experience": 0.1, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/gold_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/blasting/gold_ingot_from_crushed.json deleted file mode 100644 index 32f1a5e9e..000000000 --- a/src/generated/resources/data/create/recipes/blasting/gold_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_gold_ore" - }, - "result": "minecraft:gold_ingot", - "experience": 0.1, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json deleted file mode 100644 index df88850d4..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_aluminum_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_aluminum_ore" - }, - "result": "immersiveengineering:ingot_aluminum", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json deleted file mode 100644 index 74f359db2..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "immersiveengineering:ingot_lead", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_mekanism.json b/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_mekanism.json deleted file mode 100644 index 077eb0512..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_lead_compat_mekanism.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "mekanism:ingot_lead", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json deleted file mode 100644 index 8ad2bf41b..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_nickel_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_nickel_ore" - }, - "result": "immersiveengineering:ingot_nickel", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_osmium_compat_mekanism.json b/src/generated/resources/data/create/recipes/blasting/ingot_osmium_compat_mekanism.json deleted file mode 100644 index f191d5906..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_osmium_compat_mekanism.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_osmium_ore" - }, - "result": "mekanism:ingot_osmium", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json deleted file mode 100644 index 4b0fac0c8..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_silver_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "immersiveengineering:ingot_silver", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_tin_compat_mekanism.json b/src/generated/resources/data/create/recipes/blasting/ingot_tin_compat_mekanism.json deleted file mode 100644 index 0bc4fe4f7..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_tin_compat_mekanism.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_tin_ore" - }, - "result": "mekanism:ingot_tin", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json deleted file mode 100644 index 52c435ebf..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_uranium_ore" - }, - "result": "immersiveengineering:ingot_uranium", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_mekanism.json b/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_mekanism.json deleted file mode 100644 index fb51bfaf8..000000000 --- a/src/generated/resources/data/create/recipes/blasting/ingot_uranium_compat_mekanism.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_uranium_ore" - }, - "result": "mekanism:ingot_uranium", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/iron_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/blasting/iron_ingot_from_crushed.json deleted file mode 100644 index 43c60447d..000000000 --- a/src/generated/resources/data/create/recipes/blasting/iron_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_iron_ore" - }, - "result": "minecraft:iron_ingot", - "experience": 0.1, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_eidolon.json b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_eidolon.json deleted file mode 100644 index b726f7b7f..000000000 --- a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_eidolon.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "eidolon:lead_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "eidolon", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json deleted file mode 100644 index beae6055d..000000000 --- a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "mysticalworld:lead_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 84f5d58b0..000000000 --- a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "silents_mechanisms:lead_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_thermal.json b/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_thermal.json deleted file mode 100644 index e6b05e422..000000000 --- a/src/generated/resources/data/create/recipes/blasting/lead_ingot_compat_thermal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "thermal:lead_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json deleted file mode 100644 index fcae2b6e6..000000000 --- a/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_nickel_ore" - }, - "result": "silents_mechanisms:nickel_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_thermal.json b/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_thermal.json deleted file mode 100644 index 377dde1b9..000000000 --- a/src/generated/resources/data/create/recipes/blasting/nickel_ingot_compat_thermal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_nickel_ore" - }, - "result": "thermal:nickel_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 2c6c22847..000000000 --- a/src/generated/resources/data/create/recipes/blasting/platinum_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_platinum_ore" - }, - "result": "silents_mechanisms:platinum_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json deleted file mode 100644 index 9e0bff2a7..000000000 --- a/src/generated/resources/data/create/recipes/blasting/quicksilver_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_quicksilver_ore" - }, - "result": "mysticalworld:quicksilver_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_iceandfire.json deleted file mode 100644 index 4cd0e7c3a..000000000 --- a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_iceandfire.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "iceandfire:silver_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "iceandfire", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json deleted file mode 100644 index ffa5dbf2f..000000000 --- a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "mysticalworld:silver_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json deleted file mode 100644 index aeb193365..000000000 --- a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "silents_mechanisms:silver_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_thermal.json b/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_thermal.json deleted file mode 100644 index 94079c912..000000000 --- a/src/generated/resources/data/create/recipes/blasting/silver_ingot_compat_thermal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "thermal:silver_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json deleted file mode 100644 index 039044d63..000000000 --- a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_tin_ore" - }, - "result": "mysticalworld:tin_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 200ff3924..000000000 --- a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_tin_ore" - }, - "result": "silents_mechanisms:tin_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_thermal.json b/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_thermal.json deleted file mode 100644 index bda6c13ff..000000000 --- a/src/generated/resources/data/create/recipes/blasting/tin_ingot_compat_thermal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_tin_ore" - }, - "result": "thermal:tin_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json deleted file mode 100644 index b160e2511..000000000 --- a/src/generated/resources/data/create/recipes/blasting/uranium_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_uranium_ore" - }, - "result": "silents_mechanisms:uranium_ingot", - "experience": 0.1, - "cookingtime": 100, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/zinc_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/blasting/zinc_ingot_from_crushed.json deleted file mode 100644 index e23b0e03b..000000000 --- a/src/generated/resources/data/create/recipes/blasting/zinc_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "create:crushed_zinc_ore" - }, - "result": "create:zinc_ingot", - "experience": 0.1, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/blasting/zinc_ingot_from_ore.json b/src/generated/resources/data/create/recipes/blasting/zinc_ingot_from_ore.json deleted file mode 100644 index eedba058a..000000000 --- a/src/generated/resources/data/create/recipes/blasting/zinc_ingot_from_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "tag": "forge:ores/zinc" - }, - "result": "create:zinc_ingot", - "experience": 0.1, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/campfire_cooking/bread.json b/src/generated/resources/data/create/recipes/campfire_cooking/bread.json deleted file mode 100644 index 0653a0ff4..000000000 --- a/src/generated/resources/data/create/recipes/campfire_cooking/bread.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:campfire_cooking", - "ingredient": { - "item": "create:dough" - }, - "result": "minecraft:bread", - "experience": 0.0, - "cookingtime": 600 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index 090d48d1f..000000000 --- a/src/generated/resources/data/create/recipes/chiseled_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:chiseled_dark_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/chiseled_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/chiseled_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index a0642caad..000000000 --- a/src/generated/resources/data/create/recipes/chiseled_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:chiseled_dolomite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/chiseled_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/chiseled_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index 6a2ec7b8e..000000000 --- a/src/generated/resources/data/create/recipes/chiseled_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:chiseled_gabbro", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/chiseled_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/chiseled_limestone_from_limestone_stonecutting.json deleted file mode 100644 index 3bd8d15fa..000000000 --- a/src/generated/resources/data/create/recipes/chiseled_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:chiseled_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/chiseled_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/chiseled_scoria_from_scoria_stonecutting.json deleted file mode 100644 index c93b67d22..000000000 --- a/src/generated/resources/data/create/recipes/chiseled_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:chiseled_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index b90208216..000000000 --- a/src/generated/resources/data/create/recipes/chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:chiseled_weathered_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/andesite_from_flint.json b/src/generated/resources/data/create/recipes/compacting/andesite_from_flint.json deleted file mode 100644 index 6018bf3e6..000000000 --- a/src/generated/resources/data/create/recipes/compacting/andesite_from_flint.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:compacting", - "ingredients": [ - { - "item": "minecraft:flint" - }, - { - "item": "minecraft:flint" - }, - { - "item": "minecraft:gravel" - }, - { - "fluid": "minecraft:lava", - "nbt": {}, - "amount": 100 - } - ], - "results": [ - { - "item": "minecraft:andesite" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/blaze_cake.json b/src/generated/resources/data/create/recipes/compacting/blaze_cake.json deleted file mode 100644 index 985ae27d0..000000000 --- a/src/generated/resources/data/create/recipes/compacting/blaze_cake.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:compacting", - "ingredients": [ - { - "tag": "forge:eggs" - }, - { - "item": "minecraft:sugar" - }, - { - "item": "create:cinder_flour" - } - ], - "results": [ - { - "item": "create:blaze_cake_base" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/chocolate.json b/src/generated/resources/data/create/recipes/compacting/chocolate.json deleted file mode 100644 index 8bace9f95..000000000 --- a/src/generated/resources/data/create/recipes/compacting/chocolate.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:compacting", - "ingredients": [ - { - "fluid": "create:chocolate", - "nbt": {}, - "amount": 250 - } - ], - "results": [ - { - "item": "create:bar_of_chocolate" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/diorite_from_flint.json b/src/generated/resources/data/create/recipes/compacting/diorite_from_flint.json deleted file mode 100644 index 522b8faf0..000000000 --- a/src/generated/resources/data/create/recipes/compacting/diorite_from_flint.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:compacting", - "ingredients": [ - { - "item": "minecraft:flint" - }, - { - "item": "minecraft:flint" - }, - { - "item": "create:limesand" - }, - { - "fluid": "minecraft:lava", - "nbt": {}, - "amount": 100 - } - ], - "results": [ - { - "item": "minecraft:diorite" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/compacting/granite_from_flint.json b/src/generated/resources/data/create/recipes/compacting/granite_from_flint.json deleted file mode 100644 index a591cff44..000000000 --- a/src/generated/resources/data/create/recipes/compacting/granite_from_flint.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:compacting", - "ingredients": [ - { - "item": "minecraft:flint" - }, - { - "item": "minecraft:flint" - }, - { - "item": "minecraft:red_sand" - }, - { - "fluid": "minecraft:lava", - "nbt": {}, - "amount": 100 - } - ], - "results": [ - { - "item": "minecraft:granite" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/copper_backtank.json b/src/generated/resources/data/create/recipes/crafting/appliances/copper_backtank.json deleted file mode 100644 index a99c83f9d..000000000 --- a/src/generated/resources/data/create/recipes/crafting/appliances/copper_backtank.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AGA", - "PPP", - " P " - ], - "key": { - "G": { - "item": "create:shaft" - }, - "A": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "forge:ingots/copper" - } - }, - "result": { - "item": "create:copper_backtank" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json b/src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json deleted file mode 100644 index 790d1fd91..000000000 --- a/src/generated/resources/data/create/recipes/crafting/appliances/diving_boots.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "P P", - "P P", - "G G" - ], - "key": { - "G": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "forge:ingots/copper" - } - }, - "result": { - "item": "create:diving_boots" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json b/src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json deleted file mode 100644 index ebc49ae69..000000000 --- a/src/generated/resources/data/create/recipes/crafting/appliances/diving_helmet.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "PPP", - "PGP" - ], - "key": { - "G": { - "tag": "forge:glass" - }, - "P": { - "tag": "forge:ingots/copper" - } - }, - "result": { - "item": "create:diving_helmet" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/dough.json b/src/generated/resources/data/create/recipes/crafting/appliances/dough.json deleted file mode 100644 index 31c314fde..000000000 --- a/src/generated/resources/data/create/recipes/crafting/appliances/dough.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:wheat_flour" - }, - { - "item": "minecraft:water_bucket" - } - ], - "result": { - "item": "create:dough" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/slime_ball.json b/src/generated/resources/data/create/recipes/crafting/appliances/slime_ball.json deleted file mode 100644 index ec270b1fe..000000000 --- a/src/generated/resources/data/create/recipes/crafting/appliances/slime_ball.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:dough" - }, - { - "tag": "forge:dyes/lime" - } - ], - "result": { - "item": "minecraft:slime_ball" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/appliances/tree_fertilizer.json b/src/generated/resources/data/create/recipes/crafting/appliances/tree_fertilizer.json deleted file mode 100644 index 4e4c039db..000000000 --- a/src/generated/resources/data/create/recipes/crafting/appliances/tree_fertilizer.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "minecraft:small_flowers" - }, - { - "tag": "minecraft:small_flowers" - }, - [ - { - "item": "minecraft:horn_coral" - }, - { - "item": "minecraft:brain_coral" - }, - { - "item": "minecraft:tube_coral" - }, - { - "item": "minecraft:bubble_coral" - }, - { - "item": "minecraft:fire_coral" - } - ], - { - "item": "minecraft:bone_meal" - } - ], - "result": { - "item": "create:tree_fertilizer", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/curiosities/minecart_coupling.json b/src/generated/resources/data/create/recipes/crafting/curiosities/minecart_coupling.json deleted file mode 100644 index 53c7a41cc..000000000 --- a/src/generated/resources/data/create/recipes/crafting/curiosities/minecart_coupling.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " E", - " O ", - "E " - ], - "key": { - "E": { - "item": "create:andesite_alloy" - }, - "O": { - "tag": "forge:plates/iron" - } - }, - "result": { - "item": "create:minecart_coupling" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/curiosities/wand_of_symmetry.json b/src/generated/resources/data/create/recipes/crafting/curiosities/wand_of_symmetry.json deleted file mode 100644 index a0e140621..000000000 --- a/src/generated/resources/data/create/recipes/crafting/curiosities/wand_of_symmetry.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " GE", - "LEG", - "OL " - ], - "key": { - "E": { - "item": "create:refined_radiance" - }, - "G": { - "tag": "forge:glass_panes/white" - }, - "O": { - "tag": "forge:obsidian" - }, - "L": { - "tag": "forge:ingots/brass" - } - }, - "result": { - "item": "create:wand_of_symmetry" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/adjustable_chain_gearshift.json b/src/generated/resources/data/create/recipes/crafting/kinetics/adjustable_chain_gearshift.json deleted file mode 100644 index 5b22915ad..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/adjustable_chain_gearshift.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "A", - "B", - "C" - ], - "key": { - "A": { - "item": "create:electron_tube" - }, - "B": { - "item": "create:encased_chain_drive" - }, - "C": { - "item": "create:large_cogwheel" - } - }, - "result": { - "item": "create:adjustable_chain_gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/analog_lever.json b/src/generated/resources/data/create/recipes/crafting/kinetics/analog_lever.json deleted file mode 100644 index 9e6eb9eb2..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/analog_lever.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "P", - "S" - ], - "key": { - "S": { - "item": "create:andesite_casing" - }, - "P": { - "tag": "forge:rods/wooden" - } - }, - "result": { - "item": "create:analog_lever" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/attribute_filter.json b/src/generated/resources/data/create/recipes/crafting/kinetics/attribute_filter.json deleted file mode 100644 index 5e1cfd2cc..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/attribute_filter.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "ASA" - ], - "key": { - "S": { - "tag": "minecraft:wool" - }, - "A": { - "tag": "forge:nuggets/brass" - } - }, - "result": { - "item": "create:attribute_filter" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/basin.json b/src/generated/resources/data/create/recipes/crafting/kinetics/basin.json deleted file mode 100644 index a04fbad14..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/basin.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "A A", - "AAA" - ], - "key": { - "A": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:basin" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/belt_connector.json b/src/generated/resources/data/create/recipes/crafting/kinetics/belt_connector.json deleted file mode 100644 index d4cd1715e..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/belt_connector.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "DDD", - "DDD" - ], - "key": { - "D": { - "item": "minecraft:dried_kelp" - } - }, - "result": { - "item": "create:belt_connector" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json deleted file mode 100644 index 0d1fc1377..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:black_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:black_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json deleted file mode 100644 index 22cc2ee46..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/black" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:black_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 2a299aea9..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/black_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/black" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:black_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json deleted file mode 100644 index d8e16e527..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:blue_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:blue_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json deleted file mode 100644 index cb98a0313..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/blue" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:blue_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json deleted file mode 100644 index d0ab35dc9..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/blue_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/blue" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:blue_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brass_hand.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brass_hand.json deleted file mode 100644 index eb641b0dd..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brass_hand.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " A ", - "BBB", - " B " - ], - "key": { - "A": { - "item": "create:andesite_alloy" - }, - "B": { - "tag": "forge:plates/brass" - } - }, - "result": { - "item": "create:brass_hand" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json deleted file mode 100644 index 524540853..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:brown_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:brown_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json deleted file mode 100644 index 3c395ef26..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/brown" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:brown_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json deleted file mode 100644 index eb82a4f83..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/brown_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/brown" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:brown_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cart_assembler.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cart_assembler.json deleted file mode 100644 index 526200b14..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cart_assembler.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " L ", - "CRC", - "L L" - ], - "key": { - "L": { - "tag": "minecraft:logs" - }, - "R": { - "tag": "forge:dusts/redstone" - }, - "C": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:cart_assembler" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/chute.json b/src/generated/resources/data/create/recipes/crafting/kinetics/chute.json deleted file mode 100644 index e8bddbe4b..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/chute.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "II", - "AA" - ], - "key": { - "A": { - "tag": "forge:plates/iron" - }, - "I": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:chute", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/clockwork_bearing.json b/src/generated/resources/data/create/recipes/crafting/kinetics/clockwork_bearing.json deleted file mode 100644 index 4f21392ea..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/clockwork_bearing.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "I": { - "item": "create:shaft" - }, - "S": { - "item": "create:electron_tube" - }, - "B": { - "item": "create:turntable" - }, - "C": { - "item": "create:brass_casing" - } - }, - "result": { - "item": "create:clockwork_bearing" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/clutch.json b/src/generated/resources/data/create/recipes/crafting/kinetics/clutch.json deleted file mode 100644 index b74ff3044..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/clutch.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " B " - ], - "key": { - "S": { - "item": "create:shaft" - }, - "B": { - "tag": "forge:dusts/redstone" - }, - "C": { - "item": "create:andesite_casing" - } - }, - "result": { - "item": "create:clutch" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cogwheel.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cogwheel.json deleted file mode 100644 index 242eaf996..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cogwheel.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SSS", - "SCS", - "SSS" - ], - "key": { - "S": { - "tag": "minecraft:wooden_buttons" - }, - "C": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:cogwheel", - "count": 8 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/controller_rail.json b/src/generated/resources/data/create/recipes/crafting/kinetics/controller_rail.json deleted file mode 100644 index fadc95421..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/controller_rail.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "A A", - "ASA", - "AEA" - ], - "key": { - "A": { - "tag": "forge:ingots/gold" - }, - "E": { - "item": "create:electron_tube" - }, - "S": { - "tag": "forge:rods/wooden" - } - }, - "result": { - "item": "create:controller_rail", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle.json deleted file mode 100644 index 77c81c0b2..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "CCC", - " S " - ], - "key": { - "S": { - "item": "create:andesite_alloy" - }, - "C": { - "tag": "forge:plates/copper" - } - }, - "result": { - "item": "create:copper_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json b/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json deleted file mode 100644 index 679b198a6..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/copper_valve_handle_from_others.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "create:valve_handles" - } - ], - "result": { - "item": "create:copper_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/crafter_slot_cover.json b/src/generated/resources/data/create/recipes/crafting/kinetics/crafter_slot_cover.json deleted file mode 100644 index 9a5178f17..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/crafter_slot_cover.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA" - ], - "key": { - "A": { - "tag": "forge:nuggets/brass" - } - }, - "result": { - "item": "create:crafter_slot_cover" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cuckoo_clock.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cuckoo_clock.json deleted file mode 100644 index 2e72ccd8d..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cuckoo_clock.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " S ", - "SAS", - "BPB" - ], - "key": { - "S": { - "tag": "minecraft:planks" - }, - "A": { - "item": "minecraft:clock" - }, - "B": { - "tag": "minecraft:logs" - }, - "P": { - "item": "create:cogwheel" - } - }, - "result": { - "item": "create:cuckoo_clock" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json deleted file mode 100644 index 95da2741e..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:cyan_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:cyan_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json deleted file mode 100644 index 6cdcf3826..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/cyan" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:cyan_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json deleted file mode 100644 index ed3ad74ea..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/cyan_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/cyan" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:cyan_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/deployer.json b/src/generated/resources/data/create/recipes/crafting/kinetics/deployer.json deleted file mode 100644 index abb71dae6..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/deployer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "I": { - "item": "create:brass_hand" - }, - "B": { - "item": "create:electron_tube" - }, - "S": { - "item": "create:cogwheel" - }, - "C": { - "item": "create:andesite_casing" - } - }, - "result": { - "item": "create:deployer" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json b/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json deleted file mode 100644 index 5c4648cc3..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/depot.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "A", - "I" - ], - "key": { - "A": { - "item": "create:andesite_alloy" - }, - "I": { - "item": "create:andesite_casing" - } - }, - "result": { - "item": "create:depot" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/empty_blaze_burner.json b/src/generated/resources/data/create/recipes/crafting/kinetics/empty_blaze_burner.json deleted file mode 100644 index 16091c3c4..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/empty_blaze_burner.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "II", - "AA" - ], - "key": { - "A": { - "item": "minecraft:iron_bars" - }, - "I": { - "tag": "forge:plates/iron" - } - }, - "result": { - "item": "create:empty_blaze_burner" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/encased_chain_drive.json b/src/generated/resources/data/create/recipes/crafting/kinetics/encased_chain_drive.json deleted file mode 100644 index eb0f18f9b..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/encased_chain_drive.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " B " - ], - "key": { - "S": { - "item": "create:shaft" - }, - "B": { - "tag": "forge:nuggets/iron" - }, - "C": { - "item": "create:andesite_casing" - } - }, - "result": { - "item": "create:encased_chain_drive", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/encased_fan.json b/src/generated/resources/data/create/recipes/crafting/kinetics/encased_fan.json deleted file mode 100644 index 677c6d765..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/encased_fan.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " S ", - "RAR", - " P " - ], - "key": { - "S": { - "item": "create:shaft" - }, - "A": { - "item": "create:andesite_casing" - }, - "R": { - "item": "create:cogwheel" - }, - "P": { - "item": "create:propeller" - } - }, - "result": { - "item": "create:encased_fan" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/filter.json b/src/generated/resources/data/create/recipes/crafting/kinetics/filter.json deleted file mode 100644 index ec8d840a8..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/filter.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "ASA" - ], - "key": { - "S": { - "tag": "minecraft:wool" - }, - "A": { - "tag": "forge:nuggets/iron" - } - }, - "result": { - "item": "create:filter" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_pipe.json b/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_pipe.json deleted file mode 100644 index 5e5ed0cc0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_pipe.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SCS" - ], - "key": { - "S": { - "tag": "forge:plates/copper" - }, - "C": { - "tag": "forge:ingots/copper" - } - }, - "result": { - "item": "create:fluid_pipe", - "count": 8 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_tank.json b/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_tank.json deleted file mode 100644 index d100d7ce8..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_tank.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " B " - ], - "key": { - "B": { - "item": "create:copper_casing" - }, - "S": { - "tag": "forge:nuggets/copper" - }, - "C": { - "tag": "forge:glass" - } - }, - "result": { - "item": "create:fluid_tank", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_valve.json b/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_valve.json deleted file mode 100644 index 68fb533f5..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/fluid_valve.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "I", - "S", - "P" - ], - "key": { - "P": { - "item": "create:shaft" - }, - "S": { - "item": "create:fluid_pipe" - }, - "I": { - "tag": "forge:plates/iron" - } - }, - "result": { - "item": "create:fluid_valve" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json b/src/generated/resources/data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json deleted file mode 100644 index 63b6f28b7..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/furnace_minecart_from_contraption_cart.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:furnace_minecart_contraption" - } - ], - "result": { - "item": "minecraft:furnace_minecart" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gantry_carriage.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gantry_carriage.json deleted file mode 100644 index e4bccc262..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gantry_carriage.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "ICI", - " S " - ], - "key": { - "B": { - "tag": "minecraft:planks" - }, - "S": { - "item": "create:cogwheel" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:shaft" - } - }, - "result": { - "item": "create:gantry_carriage" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gantry_shaft.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gantry_shaft.json deleted file mode 100644 index 0443296ab..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gantry_shaft.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "A", - "R", - "A" - ], - "key": { - "A": { - "item": "create:andesite_alloy" - }, - "R": { - "tag": "forge:dusts/redstone" - } - }, - "result": { - "item": "create:gantry_shaft", - "count": 8 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gearbox.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gearbox.json deleted file mode 100644 index 2ebfd0c12..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gearbox.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " C ", - "CBC", - " C " - ], - "key": { - "C": { - "item": "create:cogwheel" - }, - "B": { - "item": "create:andesite_casing" - } - }, - "result": { - "item": "create:gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json deleted file mode 100644 index 307ed1897..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gearboxfrom_conversion.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:vertical_gearbox" - } - ], - "result": { - "item": "create:gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gearshift.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gearshift.json deleted file mode 100644 index 0255f3d1e..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gearshift.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " B " - ], - "key": { - "S": { - "item": "create:cogwheel" - }, - "B": { - "tag": "forge:dusts/redstone" - }, - "C": { - "item": "create:andesite_casing" - } - }, - "result": { - "item": "create:gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/goggles.json b/src/generated/resources/data/create/recipes/crafting/kinetics/goggles.json deleted file mode 100644 index 3f4f10144..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/goggles.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " S ", - "GPG" - ], - "key": { - "G": { - "tag": "forge:glass" - }, - "P": { - "tag": "forge:plates/gold" - }, - "S": { - "tag": "forge:string" - } - }, - "result": { - "item": "create:goggles" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json deleted file mode 100644 index 288f7d995..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:gray_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:gray_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json deleted file mode 100644 index e12a0bd21..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/gray" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:gray_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 14aaac1c2..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/gray_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/gray" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:gray_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json deleted file mode 100644 index 0bd4c58cf..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:green_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:green_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json deleted file mode 100644 index 9184d9ad7..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/green" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:green_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 28a61f2c4..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/green_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/green" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:green_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/hand_crank.json b/src/generated/resources/data/create/recipes/crafting/kinetics/hand_crank.json deleted file mode 100644 index 98ccb51ed..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/hand_crank.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " S ", - "CCC", - " A" - ], - "key": { - "A": { - "item": "create:andesite_alloy" - }, - "C": { - "tag": "minecraft:planks" - }, - "S": { - "item": "create:shaft" - } - }, - "result": { - "item": "create:hand_crank" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/hose_pulley.json b/src/generated/resources/data/create/recipes/crafting/kinetics/hose_pulley.json deleted file mode 100644 index ae6b27994..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/hose_pulley.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCP", - " I " - ], - "key": { - "S": { - "item": "create:shaft" - }, - "P": { - "item": "create:fluid_pipe" - }, - "B": { - "item": "create:copper_casing" - }, - "C": { - "item": "minecraft:dried_kelp" - }, - "I": { - "tag": "forge:plates/copper" - } - }, - "result": { - "item": "create:hose_pulley" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/item_drain.json b/src/generated/resources/data/create/recipes/crafting/kinetics/item_drain.json deleted file mode 100644 index f46acc293..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/item_drain.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "P", - "S" - ], - "key": { - "P": { - "item": "minecraft:iron_bars" - }, - "S": { - "item": "create:copper_casing" - } - }, - "result": { - "item": "create:item_drain" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/large_cogwheel.json b/src/generated/resources/data/create/recipes/crafting/kinetics/large_cogwheel.json deleted file mode 100644 index 05e4e3f46..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/large_cogwheel.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SDS", - "DCD", - "SDS" - ], - "key": { - "S": { - "tag": "minecraft:wooden_buttons" - }, - "C": { - "item": "create:andesite_alloy" - }, - "D": { - "tag": "minecraft:planks" - } - }, - "result": { - "item": "create:large_cogwheel", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json deleted file mode 100644 index 3d826a2e5..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:light_blue_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:light_blue_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json deleted file mode 100644 index 2057239a0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/light_blue" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:light_blue_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 186c59e53..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_blue_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/light_blue" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:light_blue_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json deleted file mode 100644 index 250b3465b..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:light_gray_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:light_gray_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json deleted file mode 100644 index f8ef5e09c..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/light_gray" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:light_gray_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json deleted file mode 100644 index a5e2f0c52..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/light_gray_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/light_gray" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:light_gray_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json deleted file mode 100644 index c787ad26d..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:lime_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:lime_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json deleted file mode 100644 index 77bf94c8a..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/lime" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:lime_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json deleted file mode 100644 index fbcf4548d..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/lime_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/lime" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:lime_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/linear_chassis.json b/src/generated/resources/data/create/recipes/crafting/kinetics/linear_chassis.json deleted file mode 100644 index cbab28e46..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/linear_chassis.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " P ", - "LLL", - " P " - ], - "key": { - "P": { - "item": "create:andesite_alloy" - }, - "L": { - "tag": "minecraft:logs" - } - }, - "result": { - "item": "create:linear_chassis", - "count": 3 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json b/src/generated/resources/data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json deleted file mode 100644 index 871534db0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/linear_chassisfrom_conversion.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:secondary_linear_chassis" - } - ], - "result": { - "item": "create:linear_chassis" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json deleted file mode 100644 index 2e36dc05c..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:magenta_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:magenta_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json deleted file mode 100644 index 07a2fd9e3..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/magenta" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:magenta_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json deleted file mode 100644 index ab8d6ab36..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/magenta_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/magenta" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:magenta_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_arm.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_arm.json deleted file mode 100644 index b92394fe0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_arm.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "LLA", - "LR ", - "ICI" - ], - "key": { - "L": { - "tag": "forge:plates/brass" - }, - "R": { - "item": "create:cogwheel" - }, - "I": { - "item": "create:electron_tube" - }, - "A": { - "item": "create:andesite_alloy" - }, - "C": { - "item": "create:brass_casing" - } - }, - "result": { - "item": "create:mechanical_arm" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_bearing.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_bearing.json deleted file mode 100644 index 2273703f8..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_bearing.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "I": { - "item": "create:shaft" - }, - "S": { - "item": "create:andesite_alloy" - }, - "B": { - "item": "create:turntable" - }, - "C": { - "item": "create:andesite_casing" - } - }, - "result": { - "item": "create:mechanical_bearing" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_crafter.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_crafter.json deleted file mode 100644 index 938064560..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_crafter.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " R " - ], - "key": { - "B": { - "item": "create:electron_tube" - }, - "R": { - "item": "minecraft:crafting_table" - }, - "C": { - "item": "create:brass_casing" - }, - "S": { - "item": "create:cogwheel" - } - }, - "result": { - "item": "create:mechanical_crafter", - "count": 3 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_drill.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_drill.json deleted file mode 100644 index 31cbe3607..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_drill.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " A ", - "AIA", - " C " - ], - "key": { - "C": { - "item": "create:andesite_casing" - }, - "A": { - "item": "create:andesite_alloy" - }, - "I": { - "tag": "forge:ingots/iron" - } - }, - "result": { - "item": "create:mechanical_drill" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_harvester.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_harvester.json deleted file mode 100644 index b4bcc3750..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_harvester.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AIA", - "AIA", - " C " - ], - "key": { - "C": { - "item": "create:andesite_casing" - }, - "A": { - "item": "create:andesite_alloy" - }, - "I": { - "tag": "forge:plates/iron" - } - }, - "result": { - "item": "create:mechanical_harvester" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_mixer.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_mixer.json deleted file mode 100644 index b5e8767c5..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_mixer.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "S": { - "item": "create:cogwheel" - }, - "B": { - "item": "create:andesite_alloy" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:whisk" - } - }, - "result": { - "item": "create:mechanical_mixer" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_piston.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_piston.json deleted file mode 100644 index e1d197c0b..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_piston.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "B": { - "tag": "minecraft:planks" - }, - "S": { - "item": "create:cogwheel" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "item": "create:piston_extension_pole" - } - }, - "result": { - "item": "create:mechanical_piston" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_plough.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_plough.json deleted file mode 100644 index 370dc2691..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_plough.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "AAA", - " C " - ], - "key": { - "C": { - "item": "create:andesite_casing" - }, - "A": { - "item": "create:andesite_alloy" - }, - "I": { - "tag": "forge:plates/iron" - } - }, - "result": { - "item": "create:mechanical_plough" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_press.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_press.json deleted file mode 100644 index b63759672..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_press.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "B": { - "item": "create:andesite_alloy" - }, - "S": { - "item": "create:cogwheel" - }, - "C": { - "item": "create:andesite_casing" - }, - "I": { - "tag": "forge:storage_blocks/iron" - } - }, - "result": { - "item": "create:mechanical_press" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json deleted file mode 100644 index 8b7f9e5a4..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_pump.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "P", - "S" - ], - "key": { - "P": { - "item": "create:cogwheel" - }, - "S": { - "item": "create:fluid_pipe" - } - }, - "result": { - "item": "create:mechanical_pump" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_saw.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_saw.json deleted file mode 100644 index 16f6666c5..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mechanical_saw.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " A ", - "AIA", - " C " - ], - "key": { - "C": { - "item": "create:andesite_casing" - }, - "A": { - "tag": "forge:plates/iron" - }, - "I": { - "tag": "forge:ingots/iron" - } - }, - "result": { - "item": "create:mechanical_saw" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/metal_bracket.json b/src/generated/resources/data/create/recipes/crafting/kinetics/metal_bracket.json deleted file mode 100644 index 4e26817b4..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/metal_bracket.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SSS", - "PCP" - ], - "key": { - "S": { - "tag": "forge:nuggets/iron" - }, - "P": { - "tag": "forge:ingots/iron" - }, - "C": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:metal_bracket", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/millstone.json b/src/generated/resources/data/create/recipes/crafting/kinetics/millstone.json deleted file mode 100644 index 65a8e8fe4..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/millstone.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "B": { - "tag": "minecraft:planks" - }, - "S": { - "item": "create:andesite_alloy" - }, - "C": { - "item": "create:cogwheel" - }, - "I": { - "tag": "forge:stone" - } - }, - "result": { - "item": "create:millstone" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/minecart_from_contraption_cart.json b/src/generated/resources/data/create/recipes/crafting/kinetics/minecart_from_contraption_cart.json deleted file mode 100644 index 72e82750c..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/minecart_from_contraption_cart.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:minecart_contraption" - } - ], - "result": { - "item": "minecraft:minecart" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/mysterious_cuckoo_clock.json b/src/generated/resources/data/create/recipes/crafting/kinetics/mysterious_cuckoo_clock.json deleted file mode 100644 index 80ec9a30e..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/mysterious_cuckoo_clock.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " C ", - "CBC", - " C " - ], - "key": { - "C": { - "tag": "forge:gunpowder" - }, - "B": { - "item": "create:cuckoo_clock" - } - }, - "result": { - "item": "create:mysterious_cuckoo_clock" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/nixie_tube.json b/src/generated/resources/data/create/recipes/crafting/kinetics/nixie_tube.json deleted file mode 100644 index 8d965d79f..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/nixie_tube.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "EBE" - ], - "key": { - "E": { - "item": "create:electron_tube" - }, - "B": { - "item": "create:brass_casing" - } - }, - "result": { - "item": "create:nixie_tube" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/nozzle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/nozzle.json deleted file mode 100644 index 232551353..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/nozzle.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " S ", - " C ", - "SSS" - ], - "key": { - "S": { - "item": "create:andesite_alloy" - }, - "C": { - "tag": "minecraft:wool" - } - }, - "result": { - "item": "create:nozzle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json deleted file mode 100644 index 6f9449a12..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:orange_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:orange_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json deleted file mode 100644 index 29c7f059d..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/orange" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:orange_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 78de18ef1..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/orange_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/orange" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:orange_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json deleted file mode 100644 index 4cf047acf..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:pink_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:pink_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json deleted file mode 100644 index c4031f9ca..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/pink" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:pink_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json deleted file mode 100644 index a04c92752..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/pink_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/pink" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:pink_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/piston_extension_pole.json b/src/generated/resources/data/create/recipes/crafting/kinetics/piston_extension_pole.json deleted file mode 100644 index 0fb54c604..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/piston_extension_pole.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "P", - "A", - "P" - ], - "key": { - "A": { - "item": "create:andesite_alloy" - }, - "P": { - "tag": "minecraft:planks" - } - }, - "result": { - "item": "create:piston_extension_pole", - "count": 8 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/portable_fluid_interface.json b/src/generated/resources/data/create/recipes/crafting/kinetics/portable_fluid_interface.json deleted file mode 100644 index 61bf4785c..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/portable_fluid_interface.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - " I " - ], - "key": { - "I": { - "item": "create:copper_casing" - }, - "B": { - "item": "create:andesite_funnel" - } - }, - "result": { - "item": "create:portable_fluid_interface" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/portable_storage_interface.json b/src/generated/resources/data/create/recipes/crafting/kinetics/portable_storage_interface.json deleted file mode 100644 index ee961eefa..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/portable_storage_interface.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - " I " - ], - "key": { - "I": { - "item": "create:brass_casing" - }, - "B": { - "item": "create:andesite_funnel" - } - }, - "result": { - "item": "create:portable_storage_interface" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/propeller.json b/src/generated/resources/data/create/recipes/crafting/kinetics/propeller.json deleted file mode 100644 index 3e970781c..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/propeller.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " S ", - "SCS", - " S " - ], - "key": { - "S": { - "tag": "forge:plates/iron" - }, - "C": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:propeller" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json deleted file mode 100644 index b813024fa..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:purple_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:purple_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json deleted file mode 100644 index 175400157..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/purple" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:purple_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json deleted file mode 100644 index ae277c7fe..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/purple_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/purple" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:purple_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/radial_chassis.json b/src/generated/resources/data/create/recipes/crafting/kinetics/radial_chassis.json deleted file mode 100644 index d31508ad3..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/radial_chassis.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " L ", - "PLP", - " L " - ], - "key": { - "P": { - "item": "create:andesite_alloy" - }, - "L": { - "tag": "minecraft:logs" - } - }, - "result": { - "item": "create:radial_chassis", - "count": 3 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json deleted file mode 100644 index 738c7fc87..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:red_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:red_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json deleted file mode 100644 index d7bc542a0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/red" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:red_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 51598f0b1..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/red_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/red" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:red_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/rope_pulley.json b/src/generated/resources/data/create/recipes/crafting/kinetics/rope_pulley.json deleted file mode 100644 index 9bc8e30e3..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/rope_pulley.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "S": { - "item": "create:shaft" - }, - "B": { - "item": "create:andesite_casing" - }, - "C": { - "tag": "minecraft:wool" - }, - "I": { - "tag": "forge:plates/iron" - } - }, - "result": { - "item": "create:rope_pulley" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/rotation_speed_controller.json b/src/generated/resources/data/create/recipes/crafting/kinetics/rotation_speed_controller.json deleted file mode 100644 index f25765247..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/rotation_speed_controller.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS" - ], - "key": { - "B": { - "item": "create:integrated_circuit" - }, - "C": { - "item": "create:brass_casing" - }, - "S": { - "item": "create:shaft" - } - }, - "result": { - "item": "create:rotation_speed_controller" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/sail_frame.json b/src/generated/resources/data/create/recipes/crafting/kinetics/sail_frame.json deleted file mode 100644 index 962b7a32c..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/sail_frame.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SSS", - "SAS", - "SSS" - ], - "key": { - "A": { - "item": "create:andesite_alloy" - }, - "S": { - "tag": "forge:rods/wooden" - } - }, - "result": { - "item": "create:sail_frame", - "count": 8 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/secondary_linear_chassisfrom_conversion.json b/src/generated/resources/data/create/recipes/crafting/kinetics/secondary_linear_chassisfrom_conversion.json deleted file mode 100644 index 7d08aa6a6..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/secondary_linear_chassisfrom_conversion.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:linear_chassis" - } - ], - "result": { - "item": "create:secondary_linear_chassis" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/sequenced_gearshift.json b/src/generated/resources/data/create/recipes/crafting/kinetics/sequenced_gearshift.json deleted file mode 100644 index 6d01b38a4..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/sequenced_gearshift.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - "SCS", - " I " - ], - "key": { - "B": { - "item": "create:electron_tube" - }, - "S": { - "item": "create:cogwheel" - }, - "C": { - "item": "create:brass_casing" - }, - "I": { - "item": "minecraft:clock" - } - }, - "result": { - "item": "create:sequenced_gearshift" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/shaft.json b/src/generated/resources/data/create/recipes/crafting/kinetics/shaft.json deleted file mode 100644 index 5f15d3c0b..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/shaft.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "A", - "A" - ], - "key": { - "A": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:shaft", - "count": 8 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/smart_chute.json b/src/generated/resources/data/create/recipes/crafting/kinetics/smart_chute.json deleted file mode 100644 index 8ce8d1179..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/smart_chute.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "I", - "S", - "P" - ], - "key": { - "P": { - "item": "create:electron_tube" - }, - "S": { - "item": "create:chute" - }, - "I": { - "tag": "forge:plates/brass" - } - }, - "result": { - "item": "create:smart_chute" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/smart_fluid_pipe.json b/src/generated/resources/data/create/recipes/crafting/kinetics/smart_fluid_pipe.json deleted file mode 100644 index 7dc68a5a7..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/smart_fluid_pipe.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "I", - "S", - "P" - ], - "key": { - "P": { - "item": "create:electron_tube" - }, - "S": { - "item": "create:fluid_pipe" - }, - "I": { - "tag": "forge:plates/brass" - } - }, - "result": { - "item": "create:smart_fluid_pipe" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/speedometer.json b/src/generated/resources/data/create/recipes/crafting/kinetics/speedometer.json deleted file mode 100644 index 2bf70cab3..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/speedometer.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " C ", - "SAS" - ], - "key": { - "C": { - "item": "minecraft:compass" - }, - "A": { - "item": "create:andesite_casing" - }, - "S": { - "item": "create:shaft" - } - }, - "result": { - "item": "create:speedometer" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/speedometerfrom_conversion.json b/src/generated/resources/data/create/recipes/crafting/kinetics/speedometerfrom_conversion.json deleted file mode 100644 index 6a9bfe93c..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/speedometerfrom_conversion.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:stressometer" - } - ], - "result": { - "item": "create:speedometer" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/spout.json b/src/generated/resources/data/create/recipes/crafting/kinetics/spout.json deleted file mode 100644 index a7db594f5..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/spout.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "T", - "P", - "S" - ], - "key": { - "T": { - "item": "create:fluid_tank" - }, - "P": { - "item": "minecraft:dried_kelp" - }, - "S": { - "tag": "forge:nuggets/copper" - } - }, - "result": { - "item": "create:spout" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/sticker.json b/src/generated/resources/data/create/recipes/crafting/kinetics/sticker.json deleted file mode 100644 index 71db9df8a..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/sticker.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "ISI", - "CRC" - ], - "key": { - "I": { - "item": "create:andesite_alloy" - }, - "C": { - "tag": "forge:cobblestone" - }, - "R": { - "tag": "forge:dusts/redstone" - }, - "S": { - "tag": "forge:slimeballs" - } - }, - "result": { - "item": "create:sticker" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/sticky_mechanical_piston.json b/src/generated/resources/data/create/recipes/crafting/kinetics/sticky_mechanical_piston.json deleted file mode 100644 index 5074ba11a..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/sticky_mechanical_piston.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "S", - "P" - ], - "key": { - "S": { - "tag": "forge:slimeballs" - }, - "P": { - "item": "create:mechanical_piston" - } - }, - "result": { - "item": "create:sticky_mechanical_piston" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/stressometerfrom_conversion.json b/src/generated/resources/data/create/recipes/crafting/kinetics/stressometerfrom_conversion.json deleted file mode 100644 index 4072276ce..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/stressometerfrom_conversion.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:speedometer" - } - ], - "result": { - "item": "create:stressometer" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/super_glue.json b/src/generated/resources/data/create/recipes/crafting/kinetics/super_glue.json deleted file mode 100644 index 3c2ff87ae..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/super_glue.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AS", - "NA" - ], - "key": { - "A": { - "tag": "forge:slimeballs" - }, - "S": { - "tag": "forge:plates/iron" - }, - "N": { - "tag": "forge:nuggets/iron" - } - }, - "result": { - "item": "create:super_glue" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/turntable.json b/src/generated/resources/data/create/recipes/crafting/kinetics/turntable.json deleted file mode 100644 index 2d5421c9e..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/turntable.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "P", - "S" - ], - "key": { - "S": { - "item": "create:shaft" - }, - "P": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:turntable" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/vertical_gearboxfrom_conversion.json b/src/generated/resources/data/create/recipes/crafting/kinetics/vertical_gearboxfrom_conversion.json deleted file mode 100644 index 05e85752e..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/vertical_gearboxfrom_conversion.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:gearbox" - } - ], - "result": { - "item": "create:vertical_gearbox" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/water_wheel.json b/src/generated/resources/data/create/recipes/crafting/kinetics/water_wheel.json deleted file mode 100644 index 9fa6560ee..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/water_wheel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SSS", - "SCS", - "SSS" - ], - "key": { - "S": { - "tag": "minecraft:wooden_slabs" - }, - "C": { - "item": "create:large_cogwheel" - } - }, - "result": { - "item": "create:water_wheel" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/weighted_ejector.json b/src/generated/resources/data/create/recipes/crafting/kinetics/weighted_ejector.json deleted file mode 100644 index 45f15793d..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/weighted_ejector.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "A", - "D", - "I" - ], - "key": { - "A": { - "tag": "forge:plates/gold" - }, - "D": { - "item": "create:depot" - }, - "I": { - "item": "create:cogwheel" - } - }, - "result": { - "item": "create:weighted_ejector" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/whisk.json b/src/generated/resources/data/create/recipes/crafting/kinetics/whisk.json deleted file mode 100644 index 403a90b73..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/whisk.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " C ", - "SCS", - "SSS" - ], - "key": { - "S": { - "tag": "forge:plates/iron" - }, - "C": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:whisk" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_sail.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_sail.json deleted file mode 100644 index 9d48831b0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_sail.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "FFF", - "FWF", - "FFF" - ], - "key": { - "F": { - "item": "create:sail_frame" - }, - "W": { - "tag": "minecraft:wool" - } - }, - "result": { - "item": "create:white_sail", - "count": 8 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json deleted file mode 100644 index d47cef67a..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:white_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:white_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json deleted file mode 100644 index 65a0ae6df..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/white" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:white_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 71cfc416c..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/white_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/white" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:white_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/windmill_bearing.json b/src/generated/resources/data/create/recipes/crafting/kinetics/windmill_bearing.json deleted file mode 100644 index 8a210d190..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/windmill_bearing.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " B ", - " C ", - " I " - ], - "key": { - "I": { - "item": "create:shaft" - }, - "B": { - "item": "create:turntable" - }, - "C": { - "tag": "forge:stone" - } - }, - "result": { - "item": "create:windmill_bearing" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/wooden_bracket.json b/src/generated/resources/data/create/recipes/crafting/kinetics/wooden_bracket.json deleted file mode 100644 index 084479ea9..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/wooden_bracket.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SSS", - "PCP" - ], - "key": { - "S": { - "tag": "forge:rods/wooden" - }, - "P": { - "tag": "minecraft:planks" - }, - "C": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:wooden_bracket", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/wrench.json b/src/generated/resources/data/create/recipes/crafting/kinetics/wrench.json deleted file mode 100644 index 78651b166..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/wrench.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "GG", - "GP", - " S" - ], - "key": { - "G": { - "tag": "forge:plates/gold" - }, - "P": { - "item": "create:cogwheel" - }, - "S": { - "tag": "forge:rods/wooden" - } - }, - "result": { - "item": "create:wrench" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json deleted file mode 100644 index 2c131df05..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "item": "minecraft:yellow_wool" - }, - "-": { - "tag": "minecraft:wooden_slabs" - } - }, - "result": { - "item": "create:yellow_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json deleted file mode 100644 index e215eb0da..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_seat_from_other_seat.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/yellow" - }, - "-": { - "tag": "create:seats" - } - }, - "result": { - "item": "create:yellow_seat" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json b/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json deleted file mode 100644 index 4babd7f03..000000000 --- a/src/generated/resources/data/create/recipes/crafting/kinetics/yellow_valve_handle_from_other_valve_handle.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "-" - ], - "key": { - "#": { - "tag": "forge:dyes/yellow" - }, - "-": { - "tag": "create:valve_handles" - } - }, - "result": { - "item": "create:yellow_valve_handle" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_crate.json b/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_crate.json deleted file mode 100644 index 1556c9d1b..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_crate.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "BBB", - "B B", - "BBB" - ], - "key": { - "B": { - "item": "create:brass_casing" - } - }, - "result": { - "item": "create:adjustable_crate", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_pulse_repeater.json b/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_pulse_repeater.json deleted file mode 100644 index 5cac4ee57..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_pulse_repeater.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "SP" - ], - "key": { - "S": { - "item": "create:pulse_repeater" - }, - "P": { - "item": "create:adjustable_repeater" - } - }, - "result": { - "item": "create:adjustable_pulse_repeater" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_repeater.json b/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_repeater.json deleted file mode 100644 index 66a256aa8..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/adjustable_repeater.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "RCT", - "SSS" - ], - "key": { - "T": { - "item": "minecraft:redstone_torch" - }, - "C": { - "item": "minecraft:clock" - }, - "R": { - "tag": "forge:dusts/redstone" - }, - "S": { - "tag": "forge:stone" - } - }, - "result": { - "item": "create:adjustable_repeater" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/andesite_funnel.json b/src/generated/resources/data/create/recipes/crafting/logistics/andesite_funnel.json deleted file mode 100644 index cbaab571d..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/andesite_funnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AKA", - " K " - ], - "key": { - "A": { - "item": "create:andesite_alloy" - }, - "K": { - "item": "minecraft:dried_kelp" - } - }, - "result": { - "item": "create:andesite_funnel", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/andesite_tunnel.json b/src/generated/resources/data/create/recipes/crafting/logistics/andesite_tunnel.json deleted file mode 100644 index 74fd0bd69..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/andesite_tunnel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AA", - "KK" - ], - "key": { - "A": { - "item": "create:andesite_alloy" - }, - "K": { - "item": "minecraft:dried_kelp" - } - }, - "result": { - "item": "create:andesite_tunnel", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/brass_funnel.json b/src/generated/resources/data/create/recipes/crafting/logistics/brass_funnel.json deleted file mode 100644 index cfbf4e054..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/brass_funnel.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AEA", - " K " - ], - "key": { - "A": { - "tag": "forge:ingots/brass" - }, - "K": { - "item": "minecraft:dried_kelp" - }, - "E": { - "item": "create:electron_tube" - } - }, - "result": { - "item": "create:brass_funnel", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/brass_tunnel.json b/src/generated/resources/data/create/recipes/crafting/logistics/brass_tunnel.json deleted file mode 100644 index 8212d34ae..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/brass_tunnel.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "E ", - "AA", - "KK" - ], - "key": { - "A": { - "tag": "forge:ingots/brass" - }, - "K": { - "item": "minecraft:dried_kelp" - }, - "E": { - "item": "create:electron_tube" - } - }, - "result": { - "item": "create:brass_tunnel", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/content_observer.json b/src/generated/resources/data/create/recipes/crafting/logistics/content_observer.json deleted file mode 100644 index 6bc6b13f4..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/content_observer.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "RCI", - " B " - ], - "key": { - "B": { - "item": "create:brass_casing" - }, - "R": { - "tag": "forge:dusts/redstone" - }, - "I": { - "tag": "forge:ingots/iron" - }, - "C": { - "item": "minecraft:observer" - } - }, - "result": { - "item": "create:content_observer" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/powered_latch.json b/src/generated/resources/data/create/recipes/crafting/logistics/powered_latch.json deleted file mode 100644 index 047423da5..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/powered_latch.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " T ", - "RCR", - "SSS" - ], - "key": { - "T": { - "item": "minecraft:redstone_torch" - }, - "C": { - "item": "minecraft:lever" - }, - "R": { - "tag": "forge:dusts/redstone" - }, - "S": { - "tag": "forge:stone" - } - }, - "result": { - "item": "create:powered_latch" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/powered_toggle_latch.json b/src/generated/resources/data/create/recipes/crafting/logistics/powered_toggle_latch.json deleted file mode 100644 index 749e22fce..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/powered_toggle_latch.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " T ", - " C ", - "SSS" - ], - "key": { - "T": { - "item": "minecraft:redstone_torch" - }, - "C": { - "item": "minecraft:lever" - }, - "S": { - "tag": "forge:stone" - } - }, - "result": { - "item": "create:powered_toggle_latch" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/pulse_repeater.json b/src/generated/resources/data/create/recipes/crafting/logistics/pulse_repeater.json deleted file mode 100644 index 7c4461f17..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/pulse_repeater.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "RRT", - "SSS" - ], - "key": { - "T": { - "item": "minecraft:redstone_torch" - }, - "R": { - "tag": "forge:dusts/redstone" - }, - "S": { - "tag": "forge:stone" - } - }, - "result": { - "item": "create:pulse_repeater" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/redstone_contact.json b/src/generated/resources/data/create/recipes/crafting/logistics/redstone_contact.json deleted file mode 100644 index d8530defc..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/redstone_contact.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " S ", - "CWC", - "CCC" - ], - "key": { - "W": { - "tag": "forge:dusts/redstone" - }, - "C": { - "item": "minecraft:cobblestone" - }, - "S": { - "tag": "forge:plates/iron" - } - }, - "result": { - "item": "create:redstone_contact", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/redstone_link.json b/src/generated/resources/data/create/recipes/crafting/logistics/redstone_link.json deleted file mode 100644 index 9b4ce64a3..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/redstone_link.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " C", - "SIS" - ], - "key": { - "C": { - "item": "minecraft:redstone_torch" - }, - "S": { - "tag": "forge:plates/brass" - }, - "I": { - "tag": "minecraft:planks" - } - }, - "result": { - "item": "create:redstone_link", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/logistics/stockpile_switch.json b/src/generated/resources/data/create/recipes/crafting/logistics/stockpile_switch.json deleted file mode 100644 index 5b0630ff5..000000000 --- a/src/generated/resources/data/create/recipes/crafting/logistics/stockpile_switch.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "RCI", - " B " - ], - "key": { - "B": { - "item": "create:brass_casing" - }, - "R": { - "tag": "forge:dusts/redstone" - }, - "I": { - "tag": "forge:ingots/iron" - }, - "C": { - "item": "minecraft:comparator" - } - }, - "result": { - "item": "create:stockpile_switch" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/andesite_alloy.json b/src/generated/resources/data/create/recipes/crafting/materials/andesite_alloy.json deleted file mode 100644 index 5997b2131..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/andesite_alloy.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "BA", - "AB" - ], - "key": { - "A": { - "item": "minecraft:andesite" - }, - "B": { - "tag": "forge:nuggets/iron" - } - }, - "result": { - "item": "create:andesite_alloy" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json b/src/generated/resources/data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json deleted file mode 100644 index 9634c659b..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "BA", - "AB" - ], - "key": { - "A": { - "item": "minecraft:andesite" - }, - "B": { - "tag": "forge:nuggets/zinc" - } - }, - "result": { - "item": "create:andesite_alloy" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/andesite_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/andesite_casing.json deleted file mode 100644 index 3be156c26..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/andesite_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "item": "create:andesite_alloy" - }, - "S": { - "tag": "minecraft:logs" - } - }, - "result": { - "item": "create:andesite_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/brass_block_from_compacting.json b/src/generated/resources/data/create/recipes/crafting/materials/brass_block_from_compacting.json deleted file mode 100644 index 2a8c26fd0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/brass_block_from_compacting.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###", - "###" - ], - "key": { - "#": { - "tag": "forge:ingots/brass" - } - }, - "result": { - "item": "create:brass_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/brass_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/brass_casing.json deleted file mode 100644 index 84f2ef071..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/brass_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "tag": "forge:plates/brass" - }, - "S": { - "tag": "minecraft:logs" - } - }, - "result": { - "item": "create:brass_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/brass_ingot_from_compacting.json b/src/generated/resources/data/create/recipes/crafting/materials/brass_ingot_from_compacting.json deleted file mode 100644 index 7b44e107f..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/brass_ingot_from_compacting.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###", - "###" - ], - "key": { - "#": { - "tag": "forge:nuggets/brass" - } - }, - "result": { - "item": "create:brass_ingot" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json b/src/generated/resources/data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json deleted file mode 100644 index eef2ba7cd..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:storage_blocks/brass" - } - ], - "result": { - "item": "create:brass_ingot", - "count": 9 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/brass_nugget_from_decompacting.json b/src/generated/resources/data/create/recipes/crafting/materials/brass_nugget_from_decompacting.json deleted file mode 100644 index 861ea0291..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/brass_nugget_from_decompacting.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:ingots/brass" - } - ], - "result": { - "item": "create:brass_nugget", - "count": 9 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/copper_block_from_compacting.json b/src/generated/resources/data/create/recipes/crafting/materials/copper_block_from_compacting.json deleted file mode 100644 index 1ef586c30..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/copper_block_from_compacting.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###", - "###" - ], - "key": { - "#": { - "tag": "forge:ingots/copper" - } - }, - "result": { - "item": "create:copper_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/copper_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/copper_casing.json deleted file mode 100644 index 066726dce..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/copper_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "tag": "forge:plates/copper" - }, - "S": { - "tag": "minecraft:logs" - } - }, - "result": { - "item": "create:copper_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/copper_ingot_from_compacting.json b/src/generated/resources/data/create/recipes/crafting/materials/copper_ingot_from_compacting.json deleted file mode 100644 index 77b6a3625..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/copper_ingot_from_compacting.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###", - "###" - ], - "key": { - "#": { - "tag": "forge:nuggets/copper" - } - }, - "result": { - "item": "create:copper_ingot" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/copper_ingot_from_decompacting.json b/src/generated/resources/data/create/recipes/crafting/materials/copper_ingot_from_decompacting.json deleted file mode 100644 index ade5608b9..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/copper_ingot_from_decompacting.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:storage_blocks/copper" - } - ], - "result": { - "item": "create:copper_ingot", - "count": 9 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/copper_nugget_from_decompacting.json b/src/generated/resources/data/create/recipes/crafting/materials/copper_nugget_from_decompacting.json deleted file mode 100644 index b7fbc41dc..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/copper_nugget_from_decompacting.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:ingots/copper" - } - ], - "result": { - "item": "create:copper_nugget", - "count": 9 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/electron_tube.json b/src/generated/resources/data/create/recipes/crafting/materials/electron_tube.json deleted file mode 100644 index 6cc4b04b2..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/electron_tube.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "L", - "R", - "N" - ], - "key": { - "L": { - "item": "create:polished_rose_quartz" - }, - "R": { - "item": "minecraft:redstone_torch" - }, - "N": { - "tag": "forge:nuggets/iron" - } - }, - "result": { - "item": "create:electron_tube" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/red_sand_paper.json b/src/generated/resources/data/create/recipes/crafting/materials/red_sand_paper.json deleted file mode 100644 index c0e22c4a7..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/red_sand_paper.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "minecraft:paper" - }, - { - "tag": "forge:sand/red" - } - ], - "result": { - "item": "create:red_sand_paper" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/refined_radiance_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/refined_radiance_casing.json deleted file mode 100644 index fea94b570..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/refined_radiance_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "item": "create:refined_radiance" - }, - "S": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:refined_radiance_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/rose_quartz.json b/src/generated/resources/data/create/recipes/crafting/materials/rose_quartz.json deleted file mode 100644 index fb32d5013..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/rose_quartz.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:gems/quartz" - }, - { - "tag": "forge:dusts/redstone" - }, - { - "tag": "forge:dusts/redstone" - }, - { - "tag": "forge:dusts/redstone" - }, - { - "tag": "forge:dusts/redstone" - }, - { - "tag": "forge:dusts/redstone" - }, - { - "tag": "forge:dusts/redstone" - }, - { - "tag": "forge:dusts/redstone" - }, - { - "tag": "forge:dusts/redstone" - } - ], - "result": { - "item": "create:rose_quartz" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/sand_paper.json b/src/generated/resources/data/create/recipes/crafting/materials/sand_paper.json deleted file mode 100644 index 945b1abd6..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/sand_paper.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "minecraft:paper" - }, - { - "tag": "forge:sand/colorless" - } - ], - "result": { - "item": "create:sand_paper" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/shadow_steel_casing.json b/src/generated/resources/data/create/recipes/crafting/materials/shadow_steel_casing.json deleted file mode 100644 index 1357fa397..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/shadow_steel_casing.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "AAA", - "CSC", - "AAA" - ], - "key": { - "A": { - "tag": "minecraft:planks" - }, - "C": { - "item": "create:shadow_steel" - }, - "S": { - "tag": "forge:obsidian" - } - }, - "result": { - "item": "create:shadow_steel_casing", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/zinc_block_from_compacting.json b/src/generated/resources/data/create/recipes/crafting/materials/zinc_block_from_compacting.json deleted file mode 100644 index b7ed61522..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/zinc_block_from_compacting.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###", - "###" - ], - "key": { - "#": { - "tag": "forge:ingots/zinc" - } - }, - "result": { - "item": "create:zinc_block" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/zinc_ingot_from_compacting.json b/src/generated/resources/data/create/recipes/crafting/materials/zinc_ingot_from_compacting.json deleted file mode 100644 index e62729509..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/zinc_ingot_from_compacting.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###", - "###" - ], - "key": { - "#": { - "tag": "forge:nuggets/zinc" - } - }, - "result": { - "item": "create:zinc_ingot" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/zinc_ingot_from_decompacting.json b/src/generated/resources/data/create/recipes/crafting/materials/zinc_ingot_from_decompacting.json deleted file mode 100644 index b609b8801..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/zinc_ingot_from_decompacting.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:storage_blocks/zinc" - } - ], - "result": { - "item": "create:zinc_ingot", - "count": 9 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/materials/zinc_nugget_from_decompacting.json b/src/generated/resources/data/create/recipes/crafting/materials/zinc_nugget_from_decompacting.json deleted file mode 100644 index 89feb4d05..000000000 --- a/src/generated/resources/data/create/recipes/crafting/materials/zinc_nugget_from_decompacting.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "tag": "forge:ingots/zinc" - } - ], - "result": { - "item": "create:zinc_nugget", - "count": 9 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/palettes/copper_shingles.json b/src/generated/resources/data/create/recipes/crafting/palettes/copper_shingles.json deleted file mode 100644 index 871a86fa0..000000000 --- a/src/generated/resources/data/create/recipes/crafting/palettes/copper_shingles.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "tag": "forge:plates/copper" - } - }, - "result": { - "item": "create:copper_shingles", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/palettes/copper_shingles_from_tiles.json b/src/generated/resources/data/create/recipes/crafting/palettes/copper_shingles_from_tiles.json deleted file mode 100644 index 697c492aa..000000000 --- a/src/generated/resources/data/create/recipes/crafting/palettes/copper_shingles_from_tiles.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:copper_tiles" - } - ], - "result": { - "item": "create:copper_shingles" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/palettes/copper_tiles.json b/src/generated/resources/data/create/recipes/crafting/palettes/copper_tiles.json deleted file mode 100644 index 068f867fc..000000000 --- a/src/generated/resources/data/create/recipes/crafting/palettes/copper_tiles.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:copper_shingles" - } - ], - "result": { - "item": "create:copper_tiles" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/palettes/dark_scoria.json b/src/generated/resources/data/create/recipes/crafting/palettes/dark_scoria.json deleted file mode 100644 index 8798bf31d..000000000 --- a/src/generated/resources/data/create/recipes/crafting/palettes/dark_scoria.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "#D#", - "###" - ], - "key": { - "#": { - "item": "create:scoria" - }, - "D": { - "tag": "forge:dyes/black" - } - }, - "result": { - "item": "create:dark_scoria", - "count": 8 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/schematics/empty_schematic.json b/src/generated/resources/data/create/recipes/crafting/schematics/empty_schematic.json deleted file mode 100644 index 796802d8b..000000000 --- a/src/generated/resources/data/create/recipes/crafting/schematics/empty_schematic.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "minecraft:paper" - }, - { - "tag": "forge:dyes/light_blue" - } - ], - "result": { - "item": "create:empty_schematic" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/schematics/schematic_and_quill.json b/src/generated/resources/data/create/recipes/crafting/schematics/schematic_and_quill.json deleted file mode 100644 index d43ec9ef3..000000000 --- a/src/generated/resources/data/create/recipes/crafting/schematics/schematic_and_quill.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "ingredients": [ - { - "item": "create:empty_schematic" - }, - { - "tag": "forge:feathers" - } - ], - "result": { - "item": "create:schematic_and_quill" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/schematics/schematic_table.json b/src/generated/resources/data/create/recipes/crafting/schematics/schematic_table.json deleted file mode 100644 index dfe75a1d8..000000000 --- a/src/generated/resources/data/create/recipes/crafting/schematics/schematic_table.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "WWW", - " S ", - " S " - ], - "key": { - "W": { - "tag": "minecraft:wooden_slabs" - }, - "S": { - "item": "minecraft:smooth_stone" - } - }, - "result": { - "item": "create:schematic_table" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crafting/schematics/schematicannon.json b/src/generated/resources/data/create/recipes/crafting/schematics/schematicannon.json deleted file mode 100644 index 7a720eee4..000000000 --- a/src/generated/resources/data/create/recipes/crafting/schematics/schematicannon.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " C ", - "LDL", - "SIS" - ], - "key": { - "L": { - "tag": "minecraft:logs" - }, - "D": { - "item": "minecraft:dispenser" - }, - "C": { - "item": "minecraft:cauldron" - }, - "S": { - "item": "minecraft:smooth_stone" - }, - "I": { - "item": "minecraft:iron_block" - } - }, - "result": { - "item": "create:schematicannon" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crimson_window.json b/src/generated/resources/data/create/recipes/crimson_window.json deleted file mode 100644 index 080ba00af..000000000 --- a/src/generated/resources/data/create/recipes/crimson_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "minecraft:crimson_planks" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:crimson_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crimson_window_pane.json b/src/generated/resources/data/create/recipes/crimson_window_pane.json deleted file mode 100644 index 9bfbb23ac..000000000 --- a/src/generated/resources/data/create/recipes/crimson_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:crimson_window" - } - }, - "result": { - "item": "create:crimson_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/aluminum_ore.json b/src/generated/resources/data/create/recipes/crushing/aluminum_ore.json deleted file mode 100644 index 7c6472470..000000000 --- a/src/generated/resources/data/create/recipes/crushing/aluminum_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/aluminum" - } - ], - "results": [ - { - "item": "create:crushed_aluminum_ore" - }, - { - "item": "create:crushed_aluminum_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/aluminum", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/blaze_rod.json b/src/generated/resources/data/create/recipes/crushing/blaze_rod.json deleted file mode 100644 index c87434bd6..000000000 --- a/src/generated/resources/data/create/recipes/crushing/blaze_rod.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:blaze_rod" - } - ], - "results": [ - { - "item": "minecraft:blaze_powder", - "count": 3 - }, - { - "item": "minecraft:blaze_powder", - "count": 3, - "chance": 0.25 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/brass_block.json b/src/generated/resources/data/create/recipes/crushing/brass_block.json deleted file mode 100644 index 4e32f34ea..000000000 --- a/src/generated/resources/data/create/recipes/crushing/brass_block.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:storage_blocks/brass" - } - ], - "results": [ - { - "item": "create:crushed_brass", - "count": 5 - } - ], - "processingTime": 400 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/coal_ore.json b/src/generated/resources/data/create/recipes/crushing/coal_ore.json deleted file mode 100644 index f1e417ec4..000000000 --- a/src/generated/resources/data/create/recipes/crushing/coal_ore.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:coal_ore" - } - ], - "results": [ - { - "item": "minecraft:coal", - "count": 2 - }, - { - "item": "minecraft:coal", - "count": 2, - "chance": 0.5 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 300 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/copper_block.json b/src/generated/resources/data/create/recipes/crushing/copper_block.json deleted file mode 100644 index 7965a3dbb..000000000 --- a/src/generated/resources/data/create/recipes/crushing/copper_block.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:storage_blocks/copper" - } - ], - "results": [ - { - "item": "create:crushed_copper_ore", - "count": 5 - } - ], - "processingTime": 400 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/copper_ore.json b/src/generated/resources/data/create/recipes/crushing/copper_ore.json deleted file mode 100644 index cc80390c1..000000000 --- a/src/generated/resources/data/create/recipes/crushing/copper_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/copper" - } - ], - "results": [ - { - "item": "create:crushed_copper_ore" - }, - { - "item": "create:crushed_copper_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 350, - "conditions": [ - { - "value": { - "tag": "forge:ores/copper", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/diamond_horse_armor.json b/src/generated/resources/data/create/recipes/crushing/diamond_horse_armor.json deleted file mode 100644 index fe6d74eea..000000000 --- a/src/generated/resources/data/create/recipes/crushing/diamond_horse_armor.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:diamond_horse_armor" - } - ], - "results": [ - { - "item": "minecraft:diamond" - }, - { - "item": "minecraft:leather", - "count": 2, - "chance": 0.5 - }, - { - "item": "minecraft:diamond", - "count": 3, - "chance": 0.1 - }, - { - "item": "minecraft:string", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/diamond_ore.json b/src/generated/resources/data/create/recipes/crushing/diamond_ore.json deleted file mode 100644 index f16220528..000000000 --- a/src/generated/resources/data/create/recipes/crushing/diamond_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:diamond_ore" - } - ], - "results": [ - { - "item": "minecraft:diamond", - "count": 2 - }, - { - "item": "minecraft:diamond", - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 500 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/emerald_ore.json b/src/generated/resources/data/create/recipes/crushing/emerald_ore.json deleted file mode 100644 index b48aedf88..000000000 --- a/src/generated/resources/data/create/recipes/crushing/emerald_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:emerald_ore" - } - ], - "results": [ - { - "item": "minecraft:emerald", - "count": 2 - }, - { - "item": "minecraft:emerald", - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 500 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/glowstone.json b/src/generated/resources/data/create/recipes/crushing/glowstone.json deleted file mode 100644 index 31f04afbb..000000000 --- a/src/generated/resources/data/create/recipes/crushing/glowstone.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:glowstone" - } - ], - "results": [ - { - "item": "minecraft:glowstone_dust", - "count": 3 - }, - { - "item": "minecraft:glowstone_dust", - "chance": 0.5 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/gold_ore.json b/src/generated/resources/data/create/recipes/crushing/gold_ore.json deleted file mode 100644 index 8545c7d32..000000000 --- a/src/generated/resources/data/create/recipes/crushing/gold_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/gold" - } - ], - "results": [ - { - "item": "create:crushed_gold_ore" - }, - { - "item": "create:crushed_gold_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/gold", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/golden_horse_armor.json b/src/generated/resources/data/create/recipes/crushing/golden_horse_armor.json deleted file mode 100644 index 7bb9a3b8f..000000000 --- a/src/generated/resources/data/create/recipes/crushing/golden_horse_armor.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:golden_horse_armor" - } - ], - "results": [ - { - "item": "minecraft:gold_ingot", - "count": 2 - }, - { - "item": "minecraft:leather", - "count": 2, - "chance": 0.5 - }, - { - "item": "minecraft:gold_ingot", - "count": 2, - "chance": 0.5 - }, - { - "item": "minecraft:string", - "count": 2, - "chance": 0.25 - }, - { - "item": "minecraft:gold_nugget", - "count": 8, - "chance": 0.25 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/gravel.json b/src/generated/resources/data/create/recipes/crushing/gravel.json deleted file mode 100644 index 0050c0455..000000000 --- a/src/generated/resources/data/create/recipes/crushing/gravel.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:gravel" - } - ], - "results": [ - { - "item": "minecraft:sand" - }, - { - "item": "minecraft:flint", - "chance": 0.1 - }, - { - "item": "minecraft:clay_ball", - "chance": 0.05 - } - ], - "processingTime": 250 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/iron_horse_armor.json b/src/generated/resources/data/create/recipes/crushing/iron_horse_armor.json deleted file mode 100644 index 090264ea7..000000000 --- a/src/generated/resources/data/create/recipes/crushing/iron_horse_armor.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:iron_horse_armor" - } - ], - "results": [ - { - "item": "minecraft:iron_ingot", - "count": 2 - }, - { - "item": "minecraft:leather", - "chance": 0.5 - }, - { - "item": "minecraft:iron_ingot", - "chance": 0.5 - }, - { - "item": "minecraft:string", - "count": 2, - "chance": 0.25 - }, - { - "item": "minecraft:iron_nugget", - "count": 4, - "chance": 0.25 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/iron_ore.json b/src/generated/resources/data/create/recipes/crushing/iron_ore.json deleted file mode 100644 index d67f352ee..000000000 --- a/src/generated/resources/data/create/recipes/crushing/iron_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/iron" - } - ], - "results": [ - { - "item": "create:crushed_iron_ore" - }, - { - "item": "create:crushed_iron_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 400, - "conditions": [ - { - "value": { - "tag": "forge:ores/iron", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/lapis_ore.json b/src/generated/resources/data/create/recipes/crushing/lapis_ore.json deleted file mode 100644 index a5aba4741..000000000 --- a/src/generated/resources/data/create/recipes/crushing/lapis_ore.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:lapis_ore" - } - ], - "results": [ - { - "item": "minecraft:lapis_lazuli", - "count": 12 - }, - { - "item": "minecraft:lapis_lazuli", - "count": 8, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 300 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/lead_ore.json b/src/generated/resources/data/create/recipes/crushing/lead_ore.json deleted file mode 100644 index adbefb9f7..000000000 --- a/src/generated/resources/data/create/recipes/crushing/lead_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/lead" - } - ], - "results": [ - { - "item": "create:crushed_lead_ore" - }, - { - "item": "create:crushed_lead_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 400, - "conditions": [ - { - "value": { - "tag": "forge:ores/lead", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/leather_horse_armor.json b/src/generated/resources/data/create/recipes/crushing/leather_horse_armor.json deleted file mode 100644 index b7ecff4d9..000000000 --- a/src/generated/resources/data/create/recipes/crushing/leather_horse_armor.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:leather_horse_armor" - } - ], - "results": [ - { - "item": "minecraft:leather", - "count": 2 - }, - { - "item": "minecraft:leather", - "count": 2, - "chance": 0.5 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/nether_quartz_ore.json b/src/generated/resources/data/create/recipes/crushing/nether_quartz_ore.json deleted file mode 100644 index eb6ea8b3f..000000000 --- a/src/generated/resources/data/create/recipes/crushing/nether_quartz_ore.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:nether_quartz_ore" - } - ], - "results": [ - { - "item": "minecraft:quartz", - "count": 2 - }, - { - "item": "minecraft:quartz", - "count": 4, - "chance": 0.5 - }, - { - "item": "minecraft:netherrack", - "chance": 0.125 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/nether_wart_block.json b/src/generated/resources/data/create/recipes/crushing/nether_wart_block.json deleted file mode 100644 index d9e5fe570..000000000 --- a/src/generated/resources/data/create/recipes/crushing/nether_wart_block.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:nether_wart_block" - } - ], - "results": [ - { - "item": "minecraft:nether_wart", - "chance": 0.25 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/netherrack.json b/src/generated/resources/data/create/recipes/crushing/netherrack.json deleted file mode 100644 index ec9af51d6..000000000 --- a/src/generated/resources/data/create/recipes/crushing/netherrack.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:netherrack" - } - ], - "results": [ - { - "item": "create:cinder_flour" - }, - { - "item": "create:cinder_flour", - "chance": 0.5 - } - ], - "processingTime": 250 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/nickel_ore.json b/src/generated/resources/data/create/recipes/crushing/nickel_ore.json deleted file mode 100644 index 22a5579ee..000000000 --- a/src/generated/resources/data/create/recipes/crushing/nickel_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/nickel" - } - ], - "results": [ - { - "item": "create:crushed_nickel_ore" - }, - { - "item": "create:crushed_nickel_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 350, - "conditions": [ - { - "value": { - "tag": "forge:ores/nickel", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/obsidian.json b/src/generated/resources/data/create/recipes/crushing/obsidian.json deleted file mode 100644 index aea00d484..000000000 --- a/src/generated/resources/data/create/recipes/crushing/obsidian.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:obsidian" - } - ], - "results": [ - { - "item": "create:powdered_obsidian" - }, - { - "item": "minecraft:obsidian", - "chance": 0.75 - } - ], - "processingTime": 500 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/osmium_ore.json b/src/generated/resources/data/create/recipes/crushing/osmium_ore.json deleted file mode 100644 index 2620b7fd3..000000000 --- a/src/generated/resources/data/create/recipes/crushing/osmium_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/osmium" - } - ], - "results": [ - { - "item": "create:crushed_osmium_ore" - }, - { - "item": "create:crushed_osmium_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 400, - "conditions": [ - { - "value": { - "tag": "forge:ores/osmium", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/platinum_ore.json b/src/generated/resources/data/create/recipes/crushing/platinum_ore.json deleted file mode 100644 index edaa78261..000000000 --- a/src/generated/resources/data/create/recipes/crushing/platinum_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/platinum" - } - ], - "results": [ - { - "item": "create:crushed_platinum_ore" - }, - { - "item": "create:crushed_platinum_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/platinum", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/prismarine_crystals.json b/src/generated/resources/data/create/recipes/crushing/prismarine_crystals.json deleted file mode 100644 index f99b7462e..000000000 --- a/src/generated/resources/data/create/recipes/crushing/prismarine_crystals.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:prismarine_crystals" - } - ], - "results": [ - { - "item": "minecraft:quartz" - }, - { - "item": "minecraft:quartz", - "count": 2, - "chance": 0.5 - }, - { - "item": "minecraft:glowstone_dust", - "count": 2, - "chance": 0.1 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/quicksilver_ore.json b/src/generated/resources/data/create/recipes/crushing/quicksilver_ore.json deleted file mode 100644 index 05484d91e..000000000 --- a/src/generated/resources/data/create/recipes/crushing/quicksilver_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/quicksilver" - } - ], - "results": [ - { - "item": "create:crushed_quicksilver_ore" - }, - { - "item": "create:crushed_quicksilver_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/quicksilver", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/redstone_ore.json b/src/generated/resources/data/create/recipes/crushing/redstone_ore.json deleted file mode 100644 index 55c3bccab..000000000 --- a/src/generated/resources/data/create/recipes/crushing/redstone_ore.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:redstone_ore" - } - ], - "results": [ - { - "item": "minecraft:redstone", - "count": 8 - }, - { - "item": "minecraft:redstone", - "count": 6, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 300 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/sand.json b/src/generated/resources/data/create/recipes/crushing/sand.json deleted file mode 100644 index 056076ba5..000000000 --- a/src/generated/resources/data/create/recipes/crushing/sand.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "item": "minecraft:sand" - } - ], - "results": [ - { - "item": "create:limesand" - }, - { - "item": "minecraft:bone_meal", - "chance": 0.1 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/silver_ore.json b/src/generated/resources/data/create/recipes/crushing/silver_ore.json deleted file mode 100644 index 5358eba8d..000000000 --- a/src/generated/resources/data/create/recipes/crushing/silver_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/silver" - } - ], - "results": [ - { - "item": "create:crushed_silver_ore" - }, - { - "item": "create:crushed_silver_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/silver", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/tin_ore.json b/src/generated/resources/data/create/recipes/crushing/tin_ore.json deleted file mode 100644 index 59bae1b52..000000000 --- a/src/generated/resources/data/create/recipes/crushing/tin_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/tin" - } - ], - "results": [ - { - "item": "create:crushed_tin_ore" - }, - { - "item": "create:crushed_tin_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 350, - "conditions": [ - { - "value": { - "tag": "forge:ores/tin", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/uranium_ore.json b/src/generated/resources/data/create/recipes/crushing/uranium_ore.json deleted file mode 100644 index a00f7f03e..000000000 --- a/src/generated/resources/data/create/recipes/crushing/uranium_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/uranium" - } - ], - "results": [ - { - "item": "create:crushed_uranium_ore" - }, - { - "item": "create:crushed_uranium_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 400, - "conditions": [ - { - "value": { - "tag": "forge:ores/uranium", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/wool.json b/src/generated/resources/data/create/recipes/crushing/wool.json deleted file mode 100644 index 9b0dde1c2..000000000 --- a/src/generated/resources/data/create/recipes/crushing/wool.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "minecraft:wool" - } - ], - "results": [ - { - "item": "minecraft:string", - "count": 2 - }, - { - "item": "minecraft:string", - "chance": 0.5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/zinc_block.json b/src/generated/resources/data/create/recipes/crushing/zinc_block.json deleted file mode 100644 index b8122dc32..000000000 --- a/src/generated/resources/data/create/recipes/crushing/zinc_block.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:storage_blocks/zinc" - } - ], - "results": [ - { - "item": "create:crushed_zinc_ore", - "count": 5 - } - ], - "processingTime": 400 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/crushing/zinc_ore.json b/src/generated/resources/data/create/recipes/crushing/zinc_ore.json deleted file mode 100644 index 751c69559..000000000 --- a/src/generated/resources/data/create/recipes/crushing/zinc_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/zinc" - } - ], - "results": [ - { - "item": "create:crushed_zinc_ore" - }, - { - "item": "create:crushed_zinc_ore", - "count": 2, - "chance": 0.3 - }, - { - "item": "minecraft:cobblestone", - "chance": 0.125 - } - ], - "processingTime": 350, - "conditions": [ - { - "value": { - "tag": "forge:ores/zinc", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/acacia_log.json b/src/generated/resources/data/create/recipes/cutting/acacia_log.json deleted file mode 100644 index c465f9ad0..000000000 --- a/src/generated/resources/data/create/recipes/cutting/acacia_log.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:acacia_log" - } - ], - "results": [ - { - "item": "minecraft:stripped_acacia_log" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/acacia_wood.json b/src/generated/resources/data/create/recipes/cutting/acacia_wood.json deleted file mode 100644 index 7eecca4d9..000000000 --- a/src/generated/resources/data/create/recipes/cutting/acacia_wood.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:acacia_wood" - } - ], - "results": [ - { - "item": "minecraft:stripped_acacia_wood" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/andesite_alloy.json b/src/generated/resources/data/create/recipes/cutting/andesite_alloy.json deleted file mode 100644 index e43f2d56a..000000000 --- a/src/generated/resources/data/create/recipes/cutting/andesite_alloy.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "create:andesite_alloy" - } - ], - "results": [ - { - "item": "create:shaft", - "count": 6 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/birch_log.json b/src/generated/resources/data/create/recipes/cutting/birch_log.json deleted file mode 100644 index 2d83dee9c..000000000 --- a/src/generated/resources/data/create/recipes/cutting/birch_log.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:birch_log" - } - ], - "results": [ - { - "item": "minecraft:stripped_birch_log" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/birch_wood.json b/src/generated/resources/data/create/recipes/cutting/birch_wood.json deleted file mode 100644 index 8f49a79dc..000000000 --- a/src/generated/resources/data/create/recipes/cutting/birch_wood.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:birch_wood" - } - ], - "results": [ - { - "item": "minecraft:stripped_birch_wood" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/crimson_hyphae.json b/src/generated/resources/data/create/recipes/cutting/crimson_hyphae.json deleted file mode 100644 index c73918fc1..000000000 --- a/src/generated/resources/data/create/recipes/cutting/crimson_hyphae.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:crimson_hyphae" - } - ], - "results": [ - { - "item": "minecraft:stripped_crimson_hyphae" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/crimson_stem.json b/src/generated/resources/data/create/recipes/cutting/crimson_stem.json deleted file mode 100644 index f2358bf61..000000000 --- a/src/generated/resources/data/create/recipes/cutting/crimson_stem.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:crimson_stem" - } - ], - "results": [ - { - "item": "minecraft:stripped_crimson_stem" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/dark_oak_log.json b/src/generated/resources/data/create/recipes/cutting/dark_oak_log.json deleted file mode 100644 index a89e0b0c6..000000000 --- a/src/generated/resources/data/create/recipes/cutting/dark_oak_log.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:dark_oak_log" - } - ], - "results": [ - { - "item": "minecraft:stripped_dark_oak_log" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/dark_oak_wood.json b/src/generated/resources/data/create/recipes/cutting/dark_oak_wood.json deleted file mode 100644 index 6356479c0..000000000 --- a/src/generated/resources/data/create/recipes/cutting/dark_oak_wood.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:dark_oak_wood" - } - ], - "results": [ - { - "item": "minecraft:stripped_dark_oak_wood" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/jungle_log.json b/src/generated/resources/data/create/recipes/cutting/jungle_log.json deleted file mode 100644 index 29c34508b..000000000 --- a/src/generated/resources/data/create/recipes/cutting/jungle_log.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:jungle_log" - } - ], - "results": [ - { - "item": "minecraft:stripped_jungle_log" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/jungle_wood.json b/src/generated/resources/data/create/recipes/cutting/jungle_wood.json deleted file mode 100644 index 034b9b11f..000000000 --- a/src/generated/resources/data/create/recipes/cutting/jungle_wood.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:jungle_wood" - } - ], - "results": [ - { - "item": "minecraft:stripped_jungle_wood" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/oak_log.json b/src/generated/resources/data/create/recipes/cutting/oak_log.json deleted file mode 100644 index 445a93914..000000000 --- a/src/generated/resources/data/create/recipes/cutting/oak_log.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:oak_log" - } - ], - "results": [ - { - "item": "minecraft:stripped_oak_log" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/oak_wood.json b/src/generated/resources/data/create/recipes/cutting/oak_wood.json deleted file mode 100644 index 837a32790..000000000 --- a/src/generated/resources/data/create/recipes/cutting/oak_wood.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:oak_wood" - } - ], - "results": [ - { - "item": "minecraft:stripped_oak_wood" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/spruce_log.json b/src/generated/resources/data/create/recipes/cutting/spruce_log.json deleted file mode 100644 index e8db405d9..000000000 --- a/src/generated/resources/data/create/recipes/cutting/spruce_log.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:spruce_log" - } - ], - "results": [ - { - "item": "minecraft:stripped_spruce_log" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/spruce_wood.json b/src/generated/resources/data/create/recipes/cutting/spruce_wood.json deleted file mode 100644 index 77e886e7e..000000000 --- a/src/generated/resources/data/create/recipes/cutting/spruce_wood.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:spruce_wood" - } - ], - "results": [ - { - "item": "minecraft:stripped_spruce_wood" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_acacia_log.json b/src/generated/resources/data/create/recipes/cutting/stripped_acacia_log.json deleted file mode 100644 index c04b56b51..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_acacia_log.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_acacia_log" - } - ], - "results": [ - { - "item": "minecraft:acacia_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_acacia_wood.json b/src/generated/resources/data/create/recipes/cutting/stripped_acacia_wood.json deleted file mode 100644 index b13377f88..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_acacia_wood.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_acacia_wood" - } - ], - "results": [ - { - "item": "minecraft:acacia_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_birch_log.json b/src/generated/resources/data/create/recipes/cutting/stripped_birch_log.json deleted file mode 100644 index 367c77dda..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_birch_log.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_birch_log" - } - ], - "results": [ - { - "item": "minecraft:birch_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_birch_wood.json b/src/generated/resources/data/create/recipes/cutting/stripped_birch_wood.json deleted file mode 100644 index e47607e25..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_birch_wood.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_birch_wood" - } - ], - "results": [ - { - "item": "minecraft:birch_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_crimson_hyphae.json b/src/generated/resources/data/create/recipes/cutting/stripped_crimson_hyphae.json deleted file mode 100644 index bffc17ab3..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_crimson_hyphae.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_crimson_hyphae" - } - ], - "results": [ - { - "item": "minecraft:crimson_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_crimson_stem.json b/src/generated/resources/data/create/recipes/cutting/stripped_crimson_stem.json deleted file mode 100644 index 144c34ee4..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_crimson_stem.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_crimson_stem" - } - ], - "results": [ - { - "item": "minecraft:crimson_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_dark_oak_log.json b/src/generated/resources/data/create/recipes/cutting/stripped_dark_oak_log.json deleted file mode 100644 index 926996581..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_dark_oak_log.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_dark_oak_log" - } - ], - "results": [ - { - "item": "minecraft:dark_oak_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_dark_oak_wood.json b/src/generated/resources/data/create/recipes/cutting/stripped_dark_oak_wood.json deleted file mode 100644 index 7df760eb5..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_dark_oak_wood.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_dark_oak_wood" - } - ], - "results": [ - { - "item": "minecraft:dark_oak_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_jungle_log.json b/src/generated/resources/data/create/recipes/cutting/stripped_jungle_log.json deleted file mode 100644 index f4cfbdb15..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_jungle_log.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_jungle_log" - } - ], - "results": [ - { - "item": "minecraft:jungle_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_jungle_wood.json b/src/generated/resources/data/create/recipes/cutting/stripped_jungle_wood.json deleted file mode 100644 index 2cbc87f06..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_jungle_wood.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_jungle_wood" - } - ], - "results": [ - { - "item": "minecraft:jungle_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_oak_log.json b/src/generated/resources/data/create/recipes/cutting/stripped_oak_log.json deleted file mode 100644 index 9fe00f52d..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_oak_log.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_oak_log" - } - ], - "results": [ - { - "item": "minecraft:oak_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_oak_wood.json b/src/generated/resources/data/create/recipes/cutting/stripped_oak_wood.json deleted file mode 100644 index c761dbfd7..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_oak_wood.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_oak_wood" - } - ], - "results": [ - { - "item": "minecraft:oak_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_spruce_log.json b/src/generated/resources/data/create/recipes/cutting/stripped_spruce_log.json deleted file mode 100644 index 7bec71d4e..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_spruce_log.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_spruce_log" - } - ], - "results": [ - { - "item": "minecraft:spruce_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_spruce_wood.json b/src/generated/resources/data/create/recipes/cutting/stripped_spruce_wood.json deleted file mode 100644 index 45f30b64b..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_spruce_wood.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_spruce_wood" - } - ], - "results": [ - { - "item": "minecraft:spruce_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_warped_hyphae.json b/src/generated/resources/data/create/recipes/cutting/stripped_warped_hyphae.json deleted file mode 100644 index 9dbd508c5..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_warped_hyphae.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_warped_hyphae" - } - ], - "results": [ - { - "item": "minecraft:warped_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/stripped_warped_stem.json b/src/generated/resources/data/create/recipes/cutting/stripped_warped_stem.json deleted file mode 100644 index 47fd80d74..000000000 --- a/src/generated/resources/data/create/recipes/cutting/stripped_warped_stem.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:stripped_warped_stem" - } - ], - "results": [ - { - "item": "minecraft:warped_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/warped_hyphae.json b/src/generated/resources/data/create/recipes/cutting/warped_hyphae.json deleted file mode 100644 index 5f0a47a11..000000000 --- a/src/generated/resources/data/create/recipes/cutting/warped_hyphae.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:warped_hyphae" - } - ], - "results": [ - { - "item": "minecraft:stripped_warped_hyphae" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/cutting/warped_stem.json b/src/generated/resources/data/create/recipes/cutting/warped_stem.json deleted file mode 100644 index 9098dea43..000000000 --- a/src/generated/resources/data/create/recipes/cutting/warped_stem.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:cutting", - "ingredients": [ - { - "item": "minecraft:warped_stem" - } - ], - "results": [ - { - "item": "minecraft:stripped_warped_stem" - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_oak_window.json b/src/generated/resources/data/create/recipes/dark_oak_window.json deleted file mode 100644 index 987881bde..000000000 --- a/src/generated/resources/data/create/recipes/dark_oak_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "minecraft:dark_oak_planks" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:dark_oak_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_oak_window_pane.json b/src/generated/resources/data/create/recipes/dark_oak_window_pane.json deleted file mode 100644 index 9ccd4c353..000000000 --- a/src/generated/resources/data/create/recipes/dark_oak_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:dark_oak_window" - } - }, - "result": { - "item": "create:dark_oak_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria.json b/src/generated/resources/data/create/recipes/dark_scoria.json deleted file mode 100644 index e8677d0a9..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:dark_scoria_cobblestone" - }, - "result": "create:dark_scoria", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_bricks_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_bricks_from_dark_scoria_stonecutting.json deleted file mode 100644 index 19e0ca529..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_bricks_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:dark_scoria_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_bricks_slab.json b/src/generated/resources/data/create/recipes/dark_scoria_bricks_slab.json deleted file mode 100644 index 13e21f764..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "dark_scoria_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:dark_scoria_bricks" - } - }, - "result": { - "item": "create:dark_scoria_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 1fbab0565..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_bricks_slab_from_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria_bricks" - }, - "result": "create:dark_scoria_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_bricks_stairs.json b/src/generated/resources/data/create/recipes/dark_scoria_bricks_stairs.json deleted file mode 100644 index ece6842f1..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "dark_scoria_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:dark_scoria_bricks" - } - }, - "result": { - "item": "create:dark_scoria_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 6539354e5..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_bricks_stairs_from_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria_bricks" - }, - "result": "create:dark_scoria_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_bricks_wall.json b/src/generated/resources/data/create/recipes/dark_scoria_bricks_wall.json deleted file mode 100644 index fc105a6a5..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:dark_scoria_bricks" - } - }, - "result": { - "item": "create:dark_scoria_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 6d6c04b43..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_bricks_wall_from_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria_bricks" - }, - "result": "create:dark_scoria_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_from_dark_scoria_stonecutting.json deleted file mode 100644 index 7d7f84fd0..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:dark_scoria_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_slab.json b/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_slab.json deleted file mode 100644 index 8d5380022..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "dark_scoria_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:dark_scoria_cobblestone" - } - }, - "result": { - "item": "create:dark_scoria_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting.json deleted file mode 100644 index 6a998f093..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_slab_from_dark_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria_cobblestone" - }, - "result": "create:dark_scoria_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_stairs.json deleted file mode 100644 index dfe3ea127..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "dark_scoria_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:dark_scoria_cobblestone" - } - }, - "result": { - "item": "create:dark_scoria_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json deleted file mode 100644 index bd21cc327..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_stairs_from_dark_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria_cobblestone" - }, - "result": "create:dark_scoria_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_wall.json b/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_wall.json deleted file mode 100644 index 73263b269..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:dark_scoria_cobblestone" - } - }, - "result": { - "item": "create:dark_scoria_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json deleted file mode 100644 index 44e0acc8b..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_cobblestone_wall_from_dark_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria_cobblestone" - }, - "result": "create:dark_scoria_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_pillar.json b/src/generated/resources/data/create/recipes/dark_scoria_pillar.json deleted file mode 100644 index 0ee3cdf40..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "create:dark_scoria" - } - }, - "result": { - "item": "create:dark_scoria_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dark_scoria_pillar_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/dark_scoria_pillar_from_dark_scoria_stonecutting.json deleted file mode 100644 index 16b4deaeb..000000000 --- a/src/generated/resources/data/create/recipes/dark_scoria_pillar_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:dark_scoria_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite.json b/src/generated/resources/data/create/recipes/diorite.json deleted file mode 100644 index a9dc4b737..000000000 --- a/src/generated/resources/data/create/recipes/diorite.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:diorite_cobblestone" - }, - "result": "minecraft:diorite", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_bricks_from_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_bricks_from_diorite_stonecutting.json deleted file mode 100644 index d7d98e4bd..000000000 --- a/src/generated/resources/data/create/recipes/diorite_bricks_from_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:diorite_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_bricks_slab.json b/src/generated/resources/data/create/recipes/diorite_bricks_slab.json deleted file mode 100644 index a766397ed..000000000 --- a/src/generated/resources/data/create/recipes/diorite_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "diorite_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:diorite_bricks" - } - }, - "result": { - "item": "create:diorite_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json deleted file mode 100644 index a6ae10f06..000000000 --- a/src/generated/resources/data/create/recipes/diorite_bricks_slab_from_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:diorite_bricks" - }, - "result": "create:diorite_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_bricks_stairs.json b/src/generated/resources/data/create/recipes/diorite_bricks_stairs.json deleted file mode 100644 index 078b4c08c..000000000 --- a/src/generated/resources/data/create/recipes/diorite_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "diorite_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:diorite_bricks" - } - }, - "result": { - "item": "create:diorite_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_bricks_stairs_from_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_bricks_stairs_from_diorite_bricks_stonecutting.json deleted file mode 100644 index 7b7db5d3f..000000000 --- a/src/generated/resources/data/create/recipes/diorite_bricks_stairs_from_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:diorite_bricks" - }, - "result": "create:diorite_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_bricks_wall.json b/src/generated/resources/data/create/recipes/diorite_bricks_wall.json deleted file mode 100644 index f8d8bf426..000000000 --- a/src/generated/resources/data/create/recipes/diorite_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:diorite_bricks" - } - }, - "result": { - "item": "create:diorite_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_bricks_wall_from_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_bricks_wall_from_diorite_bricks_stonecutting.json deleted file mode 100644 index db3834b45..000000000 --- a/src/generated/resources/data/create/recipes/diorite_bricks_wall_from_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:diorite_bricks" - }, - "result": "create:diorite_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_cobblestone_from_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_cobblestone_from_diorite_stonecutting.json deleted file mode 100644 index d39bb302c..000000000 --- a/src/generated/resources/data/create/recipes/diorite_cobblestone_from_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:diorite_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_cobblestone_slab.json b/src/generated/resources/data/create/recipes/diorite_cobblestone_slab.json deleted file mode 100644 index b944a8e5f..000000000 --- a/src/generated/resources/data/create/recipes/diorite_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "diorite_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:diorite_cobblestone" - } - }, - "result": { - "item": "create:diorite_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting.json deleted file mode 100644 index ee8d9f224..000000000 --- a/src/generated/resources/data/create/recipes/diorite_cobblestone_slab_from_diorite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:diorite_cobblestone" - }, - "result": "create:diorite_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/diorite_cobblestone_stairs.json deleted file mode 100644 index d86fcda70..000000000 --- a/src/generated/resources/data/create/recipes/diorite_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "diorite_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:diorite_cobblestone" - } - }, - "result": { - "item": "create:diorite_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json deleted file mode 100644 index 29db9f4cc..000000000 --- a/src/generated/resources/data/create/recipes/diorite_cobblestone_stairs_from_diorite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:diorite_cobblestone" - }, - "result": "create:diorite_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_cobblestone_wall.json b/src/generated/resources/data/create/recipes/diorite_cobblestone_wall.json deleted file mode 100644 index f0783c442..000000000 --- a/src/generated/resources/data/create/recipes/diorite_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:diorite_cobblestone" - } - }, - "result": { - "item": "create:diorite_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json deleted file mode 100644 index a2108aaa6..000000000 --- a/src/generated/resources/data/create/recipes/diorite_cobblestone_wall_from_diorite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:diorite_cobblestone" - }, - "result": "create:diorite_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_pillar.json b/src/generated/resources/data/create/recipes/diorite_pillar.json deleted file mode 100644 index 1ca8f05d0..000000000 --- a/src/generated/resources/data/create/recipes/diorite_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "minecraft:diorite" - } - }, - "result": { - "item": "create:diorite_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/diorite_pillar_from_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/diorite_pillar_from_diorite_stonecutting.json deleted file mode 100644 index 081b88e5c..000000000 --- a/src/generated/resources/data/create/recipes/diorite_pillar_from_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:diorite_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite.json b/src/generated/resources/data/create/recipes/dolomite.json deleted file mode 100644 index c59ecebbb..000000000 --- a/src/generated/resources/data/create/recipes/dolomite.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:dolomite_cobblestone" - }, - "result": "create:dolomite", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_bricks_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_bricks_from_dolomite_stonecutting.json deleted file mode 100644 index 27293be51..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_bricks_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:dolomite_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_bricks_slab.json b/src/generated/resources/data/create/recipes/dolomite_bricks_slab.json deleted file mode 100644 index 6b6e83d28..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "dolomite_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:dolomite_bricks" - } - }, - "result": { - "item": "create:dolomite_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json deleted file mode 100644 index 2dfb3ee7c..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_bricks_slab_from_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite_bricks" - }, - "result": "create:dolomite_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_bricks_stairs.json b/src/generated/resources/data/create/recipes/dolomite_bricks_stairs.json deleted file mode 100644 index 5ae1fd666..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "dolomite_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:dolomite_bricks" - } - }, - "result": { - "item": "create:dolomite_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_bricks_stairs_from_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_bricks_stairs_from_dolomite_bricks_stonecutting.json deleted file mode 100644 index 1969198c3..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_bricks_stairs_from_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite_bricks" - }, - "result": "create:dolomite_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_bricks_wall.json b/src/generated/resources/data/create/recipes/dolomite_bricks_wall.json deleted file mode 100644 index efb7cedeb..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:dolomite_bricks" - } - }, - "result": { - "item": "create:dolomite_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_bricks_wall_from_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_bricks_wall_from_dolomite_bricks_stonecutting.json deleted file mode 100644 index 685f912cc..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_bricks_wall_from_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite_bricks" - }, - "result": "create:dolomite_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_cobblestone_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_cobblestone_from_dolomite_stonecutting.json deleted file mode 100644 index eb04ac93e..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_cobblestone_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:dolomite_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_cobblestone_slab.json b/src/generated/resources/data/create/recipes/dolomite_cobblestone_slab.json deleted file mode 100644 index 12b8c6120..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "dolomite_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:dolomite_cobblestone" - } - }, - "result": { - "item": "create:dolomite_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting.json deleted file mode 100644 index 432d0d101..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_cobblestone_slab_from_dolomite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite_cobblestone" - }, - "result": "create:dolomite_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/dolomite_cobblestone_stairs.json deleted file mode 100644 index a6d09f292..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "dolomite_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:dolomite_cobblestone" - } - }, - "result": { - "item": "create:dolomite_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json deleted file mode 100644 index cb33ce4d3..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_cobblestone_stairs_from_dolomite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite_cobblestone" - }, - "result": "create:dolomite_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_cobblestone_wall.json b/src/generated/resources/data/create/recipes/dolomite_cobblestone_wall.json deleted file mode 100644 index d765fb6c8..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:dolomite_cobblestone" - } - }, - "result": { - "item": "create:dolomite_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json deleted file mode 100644 index 52aa41523..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_cobblestone_wall_from_dolomite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite_cobblestone" - }, - "result": "create:dolomite_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_pillar.json b/src/generated/resources/data/create/recipes/dolomite_pillar.json deleted file mode 100644 index 7aac976b5..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "create:dolomite" - } - }, - "result": { - "item": "create:dolomite_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/dolomite_pillar_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/dolomite_pillar_from_dolomite_stonecutting.json deleted file mode 100644 index 9dd46828a..000000000 --- a/src/generated/resources/data/create/recipes/dolomite_pillar_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:dolomite_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/emptying/builders_tea.json b/src/generated/resources/data/create/recipes/emptying/builders_tea.json deleted file mode 100644 index 6cb528114..000000000 --- a/src/generated/resources/data/create/recipes/emptying/builders_tea.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "create:emptying", - "ingredients": [ - { - "item": "create:builders_tea" - } - ], - "results": [ - { - "item": "minecraft:glass_bottle" - }, - { - "fluid": "create:tea", - "amount": 250 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/emptying/honey_bottle.json b/src/generated/resources/data/create/recipes/emptying/honey_bottle.json deleted file mode 100644 index de62bb4a3..000000000 --- a/src/generated/resources/data/create/recipes/emptying/honey_bottle.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "create:emptying", - "ingredients": [ - { - "item": "minecraft:honey_bottle" - } - ], - "results": [ - { - "item": "minecraft:glass_bottle" - }, - { - "fluid": "create:honey", - "amount": 250 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/emptying/milk_bucket.json b/src/generated/resources/data/create/recipes/emptying/milk_bucket.json deleted file mode 100644 index be95f4c33..000000000 --- a/src/generated/resources/data/create/recipes/emptying/milk_bucket.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "create:emptying", - "ingredients": [ - { - "item": "minecraft:milk_bucket" - } - ], - "results": [ - { - "item": "minecraft:bucket" - }, - { - "fluid": "create:milk", - "amount": 1000 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_from_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_andesite_bricks_from_andesite_stonecutting.json deleted file mode 100644 index 57a13a478..000000000 --- a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_from_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:andesite" - }, - "result": "create:fancy_andesite_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_andesite_bricks_slab.json deleted file mode 100644 index d050535dc..000000000 --- a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_andesite_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_andesite_bricks" - } - }, - "result": { - "item": "create:fancy_andesite_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json deleted file mode 100644 index a0965a5ea..000000000 --- a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_slab_from_fancy_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_andesite_bricks" - }, - "result": "create:fancy_andesite_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_andesite_bricks_stairs.json deleted file mode 100644 index 892986493..000000000 --- a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_andesite_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_andesite_bricks" - } - }, - "result": { - "item": "create:fancy_andesite_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting.json deleted file mode 100644 index 67343d21a..000000000 --- a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_stairs_from_fancy_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_andesite_bricks" - }, - "result": "create:fancy_andesite_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_andesite_bricks_wall.json deleted file mode 100644 index 9ed0183fe..000000000 --- a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_andesite_bricks" - } - }, - "result": { - "item": "create:fancy_andesite_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting.json deleted file mode 100644 index aed725cc9..000000000 --- a/src/generated/resources/data/create/recipes/fancy_andesite_bricks_wall_from_fancy_andesite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_andesite_bricks" - }, - "result": "create:fancy_andesite_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_from_dark_scoria_stonecutting.json deleted file mode 100644 index b6293e4a8..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:fancy_dark_scoria_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_slab.json deleted file mode 100644 index 33efbec4b..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_dark_scoria_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_dark_scoria_bricks" - } - }, - "result": { - "item": "create:fancy_dark_scoria_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index e7057f5b7..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_slab_from_fancy_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_dark_scoria_bricks" - }, - "result": "create:fancy_dark_scoria_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_stairs.json deleted file mode 100644 index 54ad6a678..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_dark_scoria_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_dark_scoria_bricks" - } - }, - "result": { - "item": "create:fancy_dark_scoria_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 63f8b79c5..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_stairs_from_fancy_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_dark_scoria_bricks" - }, - "result": "create:fancy_dark_scoria_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_wall.json deleted file mode 100644 index dca9216d1..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_dark_scoria_bricks" - } - }, - "result": { - "item": "create:fancy_dark_scoria_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting.json deleted file mode 100644 index 5bcec91b3..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dark_scoria_bricks_wall_from_fancy_dark_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_dark_scoria_bricks" - }, - "result": "create:fancy_dark_scoria_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_from_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_diorite_bricks_from_diorite_stonecutting.json deleted file mode 100644 index 6808bbb9b..000000000 --- a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_from_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:fancy_diorite_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_diorite_bricks_slab.json deleted file mode 100644 index cc9230940..000000000 --- a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_diorite_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_diorite_bricks" - } - }, - "result": { - "item": "create:fancy_diorite_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting.json deleted file mode 100644 index 5a341d738..000000000 --- a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_slab_from_fancy_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_diorite_bricks" - }, - "result": "create:fancy_diorite_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_diorite_bricks_stairs.json deleted file mode 100644 index 33c338989..000000000 --- a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_diorite_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_diorite_bricks" - } - }, - "result": { - "item": "create:fancy_diorite_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting.json deleted file mode 100644 index f4de1fbae..000000000 --- a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_stairs_from_fancy_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_diorite_bricks" - }, - "result": "create:fancy_diorite_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_diorite_bricks_wall.json deleted file mode 100644 index 4d3c7b993..000000000 --- a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_diorite_bricks" - } - }, - "result": { - "item": "create:fancy_diorite_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting.json deleted file mode 100644 index dcba63bcc..000000000 --- a/src/generated/resources/data/create/recipes/fancy_diorite_bricks_wall_from_fancy_diorite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_diorite_bricks" - }, - "result": "create:fancy_diorite_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_from_dolomite_stonecutting.json deleted file mode 100644 index 008a822d9..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:fancy_dolomite_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_slab.json deleted file mode 100644 index d7a3254fa..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_dolomite_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_dolomite_bricks" - } - }, - "result": { - "item": "create:fancy_dolomite_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting.json deleted file mode 100644 index 901a72a41..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_slab_from_fancy_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_dolomite_bricks" - }, - "result": "create:fancy_dolomite_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_stairs.json deleted file mode 100644 index 4ff479693..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_dolomite_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_dolomite_bricks" - } - }, - "result": { - "item": "create:fancy_dolomite_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting.json deleted file mode 100644 index 0f7ddca5a..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_stairs_from_fancy_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_dolomite_bricks" - }, - "result": "create:fancy_dolomite_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_wall.json deleted file mode 100644 index 4b0971422..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_dolomite_bricks" - } - }, - "result": { - "item": "create:fancy_dolomite_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting.json deleted file mode 100644 index 04a7e0f37..000000000 --- a/src/generated/resources/data/create/recipes/fancy_dolomite_bricks_wall_from_fancy_dolomite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_dolomite_bricks" - }, - "result": "create:fancy_dolomite_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_from_gabbro_stonecutting.json deleted file mode 100644 index 351e3c9ca..000000000 --- a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:fancy_gabbro_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_slab.json deleted file mode 100644 index 33f0fe950..000000000 --- a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_gabbro_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_gabbro_bricks" - } - }, - "result": { - "item": "create:fancy_gabbro_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting.json deleted file mode 100644 index 3b7d9ffe7..000000000 --- a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_slab_from_fancy_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_gabbro_bricks" - }, - "result": "create:fancy_gabbro_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_stairs.json deleted file mode 100644 index b65c6fcd7..000000000 --- a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_gabbro_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_gabbro_bricks" - } - }, - "result": { - "item": "create:fancy_gabbro_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting.json deleted file mode 100644 index 3996ec4d6..000000000 --- a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_stairs_from_fancy_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_gabbro_bricks" - }, - "result": "create:fancy_gabbro_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_wall.json deleted file mode 100644 index 9afb5cdcb..000000000 --- a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_gabbro_bricks" - } - }, - "result": { - "item": "create:fancy_gabbro_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting.json deleted file mode 100644 index 0aaac5f92..000000000 --- a/src/generated/resources/data/create/recipes/fancy_gabbro_bricks_wall_from_fancy_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_gabbro_bricks" - }, - "result": "create:fancy_gabbro_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_granite_bricks_from_granite_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_granite_bricks_from_granite_stonecutting.json deleted file mode 100644 index 3fb566c63..000000000 --- a/src/generated/resources/data/create/recipes/fancy_granite_bricks_from_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:fancy_granite_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_granite_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_granite_bricks_slab.json deleted file mode 100644 index 7ea77a9e6..000000000 --- a/src/generated/resources/data/create/recipes/fancy_granite_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_granite_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_granite_bricks" - } - }, - "result": { - "item": "create:fancy_granite_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting.json deleted file mode 100644 index dbe8e70d6..000000000 --- a/src/generated/resources/data/create/recipes/fancy_granite_bricks_slab_from_fancy_granite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_granite_bricks" - }, - "result": "create:fancy_granite_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_granite_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_granite_bricks_stairs.json deleted file mode 100644 index d184411da..000000000 --- a/src/generated/resources/data/create/recipes/fancy_granite_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_granite_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_granite_bricks" - } - }, - "result": { - "item": "create:fancy_granite_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting.json deleted file mode 100644 index 1557eac14..000000000 --- a/src/generated/resources/data/create/recipes/fancy_granite_bricks_stairs_from_fancy_granite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_granite_bricks" - }, - "result": "create:fancy_granite_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_granite_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_granite_bricks_wall.json deleted file mode 100644 index f438553c6..000000000 --- a/src/generated/resources/data/create/recipes/fancy_granite_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_granite_bricks" - } - }, - "result": { - "item": "create:fancy_granite_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting.json deleted file mode 100644 index 77814687f..000000000 --- a/src/generated/resources/data/create/recipes/fancy_granite_bricks_wall_from_fancy_granite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_granite_bricks" - }, - "result": "create:fancy_granite_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_limestone_bricks_from_limestone_stonecutting.json deleted file mode 100644 index 4841a7644..000000000 --- a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:fancy_limestone_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_limestone_bricks_slab.json deleted file mode 100644 index 7cbf9f931..000000000 --- a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_limestone_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_limestone_bricks" - } - }, - "result": { - "item": "create:fancy_limestone_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting.json deleted file mode 100644 index 60d2924fb..000000000 --- a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_slab_from_fancy_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_limestone_bricks" - }, - "result": "create:fancy_limestone_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_limestone_bricks_stairs.json deleted file mode 100644 index a37e94142..000000000 --- a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_limestone_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_limestone_bricks" - } - }, - "result": { - "item": "create:fancy_limestone_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting.json deleted file mode 100644 index f35796413..000000000 --- a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_stairs_from_fancy_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_limestone_bricks" - }, - "result": "create:fancy_limestone_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_limestone_bricks_wall.json deleted file mode 100644 index fb3154e60..000000000 --- a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_limestone_bricks" - } - }, - "result": { - "item": "create:fancy_limestone_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting.json deleted file mode 100644 index 07204ef78..000000000 --- a/src/generated/resources/data/create/recipes/fancy_limestone_bricks_wall_from_fancy_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_limestone_bricks" - }, - "result": "create:fancy_limestone_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_scoria_bricks_from_scoria_stonecutting.json deleted file mode 100644 index f739b0428..000000000 --- a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:fancy_scoria_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_scoria_bricks_slab.json deleted file mode 100644 index 6bdc83341..000000000 --- a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_scoria_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_scoria_bricks" - } - }, - "result": { - "item": "create:fancy_scoria_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting.json deleted file mode 100644 index de0d1ce2b..000000000 --- a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_slab_from_fancy_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_scoria_bricks" - }, - "result": "create:fancy_scoria_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_scoria_bricks_stairs.json deleted file mode 100644 index 6478df183..000000000 --- a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_scoria_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_scoria_bricks" - } - }, - "result": { - "item": "create:fancy_scoria_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting.json deleted file mode 100644 index d8335f85b..000000000 --- a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_stairs_from_fancy_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_scoria_bricks" - }, - "result": "create:fancy_scoria_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_scoria_bricks_wall.json deleted file mode 100644 index 89f2eee50..000000000 --- a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_scoria_bricks" - } - }, - "result": { - "item": "create:fancy_scoria_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting.json deleted file mode 100644 index 6db6b2f9f..000000000 --- a/src/generated/resources/data/create/recipes/fancy_scoria_bricks_wall_from_fancy_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_scoria_bricks" - }, - "result": "create:fancy_scoria_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 009feca0e..000000000 --- a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:fancy_weathered_limestone_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_slab.json b/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_slab.json deleted file mode 100644 index a8e974ca4..000000000 --- a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_weathered_limestone_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_weathered_limestone_bricks" - } - }, - "result": { - "item": "create:fancy_weathered_limestone_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index 73d8a5d42..000000000 --- a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_slab_from_fancy_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_weathered_limestone_bricks" - }, - "result": "create:fancy_weathered_limestone_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_stairs.json b/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_stairs.json deleted file mode 100644 index 67b2a4531..000000000 --- a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "fancy_weathered_limestone_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_weathered_limestone_bricks" - } - }, - "result": { - "item": "create:fancy_weathered_limestone_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index a095fe657..000000000 --- a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_stairs_from_fancy_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_weathered_limestone_bricks" - }, - "result": "create:fancy_weathered_limestone_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_wall.json b/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_wall.json deleted file mode 100644 index cd0e0c738..000000000 --- a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:fancy_weathered_limestone_bricks" - } - }, - "result": { - "item": "create:fancy_weathered_limestone_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index 68714b0a7..000000000 --- a/src/generated/resources/data/create/recipes/fancy_weathered_limestone_bricks_wall_from_fancy_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:fancy_weathered_limestone_bricks" - }, - "result": "create:fancy_weathered_limestone_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/blaze_cake.json b/src/generated/resources/data/create/recipes/filling/blaze_cake.json deleted file mode 100644 index 179843453..000000000 --- a/src/generated/resources/data/create/recipes/filling/blaze_cake.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "create:blaze_cake_base" - }, - { - "fluid": "minecraft:lava", - "nbt": {}, - "amount": 250 - } - ], - "results": [ - { - "item": "create:blaze_cake" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/builders_tea.json b/src/generated/resources/data/create/recipes/filling/builders_tea.json deleted file mode 100644 index ac29e17bb..000000000 --- a/src/generated/resources/data/create/recipes/filling/builders_tea.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "minecraft:glass_bottle" - }, - { - "fluid": "create:tea", - "nbt": {}, - "amount": 250 - } - ], - "results": [ - { - "item": "create:builders_tea" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/chocolate_glazed_berries.json b/src/generated/resources/data/create/recipes/filling/chocolate_glazed_berries.json deleted file mode 100644 index 0ce5553a5..000000000 --- a/src/generated/resources/data/create/recipes/filling/chocolate_glazed_berries.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "minecraft:sweet_berries" - }, - { - "fluid": "create:chocolate", - "nbt": {}, - "amount": 250 - } - ], - "results": [ - { - "item": "create:chocolate_glazed_berries" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/glowstone.json b/src/generated/resources/data/create/recipes/filling/glowstone.json deleted file mode 100644 index fd306d5cf..000000000 --- a/src/generated/resources/data/create/recipes/filling/glowstone.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "create:cinder_flour" - }, - { - "fluid": "create:potion", - "nbt": { - "Bottle": "REGULAR", - "Potion": "minecraft:night_vision" - }, - "amount": 25 - } - ], - "results": [ - { - "item": "minecraft:glowstone_dust" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/grass_block.json b/src/generated/resources/data/create/recipes/filling/grass_block.json deleted file mode 100644 index 00d1b8b86..000000000 --- a/src/generated/resources/data/create/recipes/filling/grass_block.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "minecraft:dirt" - }, - { - "fluid": "minecraft:water", - "nbt": {}, - "amount": 500 - } - ], - "results": [ - { - "item": "minecraft:grass_block" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/gunpowder.json b/src/generated/resources/data/create/recipes/filling/gunpowder.json deleted file mode 100644 index ffcfeb78f..000000000 --- a/src/generated/resources/data/create/recipes/filling/gunpowder.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "create:cinder_flour" - }, - { - "fluid": "create:potion", - "nbt": { - "Bottle": "REGULAR", - "Potion": "minecraft:harming" - }, - "amount": 25 - } - ], - "results": [ - { - "item": "minecraft:gunpowder" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/honey_bottle.json b/src/generated/resources/data/create/recipes/filling/honey_bottle.json deleted file mode 100644 index dd1f62eb2..000000000 --- a/src/generated/resources/data/create/recipes/filling/honey_bottle.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "minecraft:glass_bottle" - }, - { - "fluidTag": "forge:honey", - "amount": 250 - } - ], - "results": [ - { - "item": "minecraft:honey_bottle" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/honeyed_apple.json b/src/generated/resources/data/create/recipes/filling/honeyed_apple.json deleted file mode 100644 index 93692da87..000000000 --- a/src/generated/resources/data/create/recipes/filling/honeyed_apple.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "minecraft:apple" - }, - { - "fluidTag": "forge:honey", - "amount": 250 - } - ], - "results": [ - { - "item": "create:honeyed_apple" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/milk_bucket.json b/src/generated/resources/data/create/recipes/filling/milk_bucket.json deleted file mode 100644 index ab968ec8d..000000000 --- a/src/generated/resources/data/create/recipes/filling/milk_bucket.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "minecraft:bucket" - }, - { - "fluidTag": "forge:milk", - "amount": 1000 - } - ], - "results": [ - { - "item": "minecraft:milk_bucket" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/redstone.json b/src/generated/resources/data/create/recipes/filling/redstone.json deleted file mode 100644 index 5923deeb4..000000000 --- a/src/generated/resources/data/create/recipes/filling/redstone.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "create:cinder_flour" - }, - { - "fluid": "create:potion", - "nbt": { - "Bottle": "REGULAR", - "Potion": "minecraft:strength" - }, - "amount": 25 - } - ], - "results": [ - { - "item": "minecraft:redstone" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/filling/sweet_roll.json b/src/generated/resources/data/create/recipes/filling/sweet_roll.json deleted file mode 100644 index b80ab581b..000000000 --- a/src/generated/resources/data/create/recipes/filling/sweet_roll.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "create:filling", - "ingredients": [ - { - "item": "minecraft:bread" - }, - { - "fluidTag": "forge:milk", - "amount": 250 - } - ], - "results": [ - { - "item": "create:sweet_roll" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/framed_glass_from_glass_colorless_stonecutting.json b/src/generated/resources/data/create/recipes/framed_glass_from_glass_colorless_stonecutting.json deleted file mode 100644 index d913b76e2..000000000 --- a/src/generated/resources/data/create/recipes/framed_glass_from_glass_colorless_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "tag": "forge:glass/colorless" - }, - "result": "create:framed_glass", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/framed_glass_pane.json b/src/generated/resources/data/create/recipes/framed_glass_pane.json deleted file mode 100644 index e56c02fdb..000000000 --- a/src/generated/resources/data/create/recipes/framed_glass_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:framed_glass" - } - }, - "result": { - "item": "create:framed_glass_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro.json b/src/generated/resources/data/create/recipes/gabbro.json deleted file mode 100644 index 6d05576cb..000000000 --- a/src/generated/resources/data/create/recipes/gabbro.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:gabbro_cobblestone" - }, - "result": "create:gabbro", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_bricks_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_bricks_from_gabbro_stonecutting.json deleted file mode 100644 index db7afd4fd..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_bricks_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:gabbro_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_bricks_slab.json b/src/generated/resources/data/create/recipes/gabbro_bricks_slab.json deleted file mode 100644 index 516ac96e8..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "gabbro_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:gabbro_bricks" - } - }, - "result": { - "item": "create:gabbro_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json deleted file mode 100644 index b5a03e813..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_bricks_slab_from_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro_bricks" - }, - "result": "create:gabbro_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_bricks_stairs.json b/src/generated/resources/data/create/recipes/gabbro_bricks_stairs.json deleted file mode 100644 index 6b32787e1..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "gabbro_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:gabbro_bricks" - } - }, - "result": { - "item": "create:gabbro_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_bricks_stairs_from_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_bricks_stairs_from_gabbro_bricks_stonecutting.json deleted file mode 100644 index c333f57d2..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_bricks_stairs_from_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro_bricks" - }, - "result": "create:gabbro_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_bricks_wall.json b/src/generated/resources/data/create/recipes/gabbro_bricks_wall.json deleted file mode 100644 index 72e28813c..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:gabbro_bricks" - } - }, - "result": { - "item": "create:gabbro_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_bricks_wall_from_gabbro_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_bricks_wall_from_gabbro_bricks_stonecutting.json deleted file mode 100644 index 2250c4bf3..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_bricks_wall_from_gabbro_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro_bricks" - }, - "result": "create:gabbro_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_cobblestone_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_cobblestone_from_gabbro_stonecutting.json deleted file mode 100644 index 0d5efe1df..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_cobblestone_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:gabbro_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_cobblestone_slab.json b/src/generated/resources/data/create/recipes/gabbro_cobblestone_slab.json deleted file mode 100644 index 85122a85c..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "gabbro_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:gabbro_cobblestone" - } - }, - "result": { - "item": "create:gabbro_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting.json deleted file mode 100644 index aa2ed36f2..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_cobblestone_slab_from_gabbro_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro_cobblestone" - }, - "result": "create:gabbro_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/gabbro_cobblestone_stairs.json deleted file mode 100644 index c0a0719f1..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "gabbro_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:gabbro_cobblestone" - } - }, - "result": { - "item": "create:gabbro_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json deleted file mode 100644 index f94fb6d01..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_cobblestone_stairs_from_gabbro_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro_cobblestone" - }, - "result": "create:gabbro_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_cobblestone_wall.json b/src/generated/resources/data/create/recipes/gabbro_cobblestone_wall.json deleted file mode 100644 index 1942b516a..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:gabbro_cobblestone" - } - }, - "result": { - "item": "create:gabbro_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json deleted file mode 100644 index 01fdd91fc..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_cobblestone_wall_from_gabbro_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro_cobblestone" - }, - "result": "create:gabbro_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_pillar.json b/src/generated/resources/data/create/recipes/gabbro_pillar.json deleted file mode 100644 index e8da51e24..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "create:gabbro" - } - }, - "result": { - "item": "create:gabbro_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/gabbro_pillar_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/gabbro_pillar_from_gabbro_stonecutting.json deleted file mode 100644 index cc10726ff..000000000 --- a/src/generated/resources/data/create/recipes/gabbro_pillar_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:gabbro_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite.json b/src/generated/resources/data/create/recipes/granite.json deleted file mode 100644 index 2a6e30e9b..000000000 --- a/src/generated/resources/data/create/recipes/granite.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:granite_cobblestone" - }, - "result": "minecraft:granite", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_bricks_from_granite_stonecutting.json b/src/generated/resources/data/create/recipes/granite_bricks_from_granite_stonecutting.json deleted file mode 100644 index 737c1061e..000000000 --- a/src/generated/resources/data/create/recipes/granite_bricks_from_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:granite_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_bricks_slab.json b/src/generated/resources/data/create/recipes/granite_bricks_slab.json deleted file mode 100644 index b71b2976e..000000000 --- a/src/generated/resources/data/create/recipes/granite_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "granite_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:granite_bricks" - } - }, - "result": { - "item": "create:granite_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_bricks_slab_from_granite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/granite_bricks_slab_from_granite_bricks_stonecutting.json deleted file mode 100644 index 5888f97d8..000000000 --- a/src/generated/resources/data/create/recipes/granite_bricks_slab_from_granite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:granite_bricks" - }, - "result": "create:granite_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_bricks_stairs.json b/src/generated/resources/data/create/recipes/granite_bricks_stairs.json deleted file mode 100644 index 729e26378..000000000 --- a/src/generated/resources/data/create/recipes/granite_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "granite_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:granite_bricks" - } - }, - "result": { - "item": "create:granite_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_bricks_stairs_from_granite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/granite_bricks_stairs_from_granite_bricks_stonecutting.json deleted file mode 100644 index d1add3d7f..000000000 --- a/src/generated/resources/data/create/recipes/granite_bricks_stairs_from_granite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:granite_bricks" - }, - "result": "create:granite_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_bricks_wall.json b/src/generated/resources/data/create/recipes/granite_bricks_wall.json deleted file mode 100644 index 77aaf5e76..000000000 --- a/src/generated/resources/data/create/recipes/granite_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:granite_bricks" - } - }, - "result": { - "item": "create:granite_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_bricks_wall_from_granite_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/granite_bricks_wall_from_granite_bricks_stonecutting.json deleted file mode 100644 index e31e838da..000000000 --- a/src/generated/resources/data/create/recipes/granite_bricks_wall_from_granite_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:granite_bricks" - }, - "result": "create:granite_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_cobblestone_from_granite_stonecutting.json b/src/generated/resources/data/create/recipes/granite_cobblestone_from_granite_stonecutting.json deleted file mode 100644 index fab823031..000000000 --- a/src/generated/resources/data/create/recipes/granite_cobblestone_from_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:granite_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_cobblestone_slab.json b/src/generated/resources/data/create/recipes/granite_cobblestone_slab.json deleted file mode 100644 index e0f50373e..000000000 --- a/src/generated/resources/data/create/recipes/granite_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "granite_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:granite_cobblestone" - } - }, - "result": { - "item": "create:granite_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_cobblestone_slab_from_granite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/granite_cobblestone_slab_from_granite_cobblestone_stonecutting.json deleted file mode 100644 index 61e655d85..000000000 --- a/src/generated/resources/data/create/recipes/granite_cobblestone_slab_from_granite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:granite_cobblestone" - }, - "result": "create:granite_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/granite_cobblestone_stairs.json deleted file mode 100644 index 43bb26b90..000000000 --- a/src/generated/resources/data/create/recipes/granite_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "granite_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:granite_cobblestone" - } - }, - "result": { - "item": "create:granite_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json deleted file mode 100644 index 9b434aaf7..000000000 --- a/src/generated/resources/data/create/recipes/granite_cobblestone_stairs_from_granite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:granite_cobblestone" - }, - "result": "create:granite_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_cobblestone_wall.json b/src/generated/resources/data/create/recipes/granite_cobblestone_wall.json deleted file mode 100644 index 8a456c4d6..000000000 --- a/src/generated/resources/data/create/recipes/granite_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:granite_cobblestone" - } - }, - "result": { - "item": "create:granite_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json deleted file mode 100644 index 4d3e7075b..000000000 --- a/src/generated/resources/data/create/recipes/granite_cobblestone_wall_from_granite_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:granite_cobblestone" - }, - "result": "create:granite_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_pillar.json b/src/generated/resources/data/create/recipes/granite_pillar.json deleted file mode 100644 index 9c1863348..000000000 --- a/src/generated/resources/data/create/recipes/granite_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "minecraft:granite" - } - }, - "result": { - "item": "create:granite_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/granite_pillar_from_granite_stonecutting.json b/src/generated/resources/data/create/recipes/granite_pillar_from_granite_stonecutting.json deleted file mode 100644 index 7df1313ef..000000000 --- a/src/generated/resources/data/create/recipes/granite_pillar_from_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:granite_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/horizontal_framed_glass_from_glass_colorless_stonecutting.json b/src/generated/resources/data/create/recipes/horizontal_framed_glass_from_glass_colorless_stonecutting.json deleted file mode 100644 index bbcff0d23..000000000 --- a/src/generated/resources/data/create/recipes/horizontal_framed_glass_from_glass_colorless_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "tag": "forge:glass/colorless" - }, - "result": "create:horizontal_framed_glass", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/horizontal_framed_glass_pane.json b/src/generated/resources/data/create/recipes/horizontal_framed_glass_pane.json deleted file mode 100644 index 4cee46dec..000000000 --- a/src/generated/resources/data/create/recipes/horizontal_framed_glass_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:horizontal_framed_glass" - } - }, - "result": { - "item": "create:horizontal_framed_glass_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/jungle_window.json b/src/generated/resources/data/create/recipes/jungle_window.json deleted file mode 100644 index 5aec87bd8..000000000 --- a/src/generated/resources/data/create/recipes/jungle_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "minecraft:jungle_planks" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:jungle_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/jungle_window_pane.json b/src/generated/resources/data/create/recipes/jungle_window_pane.json deleted file mode 100644 index 8fbe2e0b0..000000000 --- a/src/generated/resources/data/create/recipes/jungle_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:jungle_window" - } - }, - "result": { - "item": "create:jungle_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_andesite_from_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/layered_andesite_from_andesite_stonecutting.json deleted file mode 100644 index c7fefccfc..000000000 --- a/src/generated/resources/data/create/recipes/layered_andesite_from_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:andesite" - }, - "result": "create:layered_andesite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/layered_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index 3f86866cc..000000000 --- a/src/generated/resources/data/create/recipes/layered_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:layered_dark_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_diorite_from_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/layered_diorite_from_diorite_stonecutting.json deleted file mode 100644 index 9f290ccc5..000000000 --- a/src/generated/resources/data/create/recipes/layered_diorite_from_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:layered_diorite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/layered_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 512c67747..000000000 --- a/src/generated/resources/data/create/recipes/layered_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:layered_dolomite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/layered_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index db447fb19..000000000 --- a/src/generated/resources/data/create/recipes/layered_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:layered_gabbro", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_granite_from_granite_stonecutting.json b/src/generated/resources/data/create/recipes/layered_granite_from_granite_stonecutting.json deleted file mode 100644 index 384c7912e..000000000 --- a/src/generated/resources/data/create/recipes/layered_granite_from_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:layered_granite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/layered_limestone_from_limestone_stonecutting.json deleted file mode 100644 index bfec0ef44..000000000 --- a/src/generated/resources/data/create/recipes/layered_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:layered_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/layered_scoria_from_scoria_stonecutting.json deleted file mode 100644 index e6b6c0e56..000000000 --- a/src/generated/resources/data/create/recipes/layered_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:layered_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 54943f874..000000000 --- a/src/generated/resources/data/create/recipes/layered_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:layered_weathered_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone.json b/src/generated/resources/data/create/recipes/limestone.json deleted file mode 100644 index 90c360ab1..000000000 --- a/src/generated/resources/data/create/recipes/limestone.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:limestone_cobblestone" - }, - "result": "create:limestone", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_bricks_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_bricks_from_limestone_stonecutting.json deleted file mode 100644 index abb1d975c..000000000 --- a/src/generated/resources/data/create/recipes/limestone_bricks_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:limestone_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_bricks_slab.json b/src/generated/resources/data/create/recipes/limestone_bricks_slab.json deleted file mode 100644 index e02fa8541..000000000 --- a/src/generated/resources/data/create/recipes/limestone_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "limestone_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:limestone_bricks" - } - }, - "result": { - "item": "create:limestone_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json deleted file mode 100644 index 52e335b87..000000000 --- a/src/generated/resources/data/create/recipes/limestone_bricks_slab_from_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone_bricks" - }, - "result": "create:limestone_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_bricks_stairs.json b/src/generated/resources/data/create/recipes/limestone_bricks_stairs.json deleted file mode 100644 index 2a8cf86a4..000000000 --- a/src/generated/resources/data/create/recipes/limestone_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "limestone_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:limestone_bricks" - } - }, - "result": { - "item": "create:limestone_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_bricks_stairs_from_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_bricks_stairs_from_limestone_bricks_stonecutting.json deleted file mode 100644 index 2329b41d0..000000000 --- a/src/generated/resources/data/create/recipes/limestone_bricks_stairs_from_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone_bricks" - }, - "result": "create:limestone_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_bricks_wall.json b/src/generated/resources/data/create/recipes/limestone_bricks_wall.json deleted file mode 100644 index 8b3075046..000000000 --- a/src/generated/resources/data/create/recipes/limestone_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:limestone_bricks" - } - }, - "result": { - "item": "create:limestone_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_bricks_wall_from_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_bricks_wall_from_limestone_bricks_stonecutting.json deleted file mode 100644 index 2c658fcb0..000000000 --- a/src/generated/resources/data/create/recipes/limestone_bricks_wall_from_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone_bricks" - }, - "result": "create:limestone_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_cobblestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_cobblestone_from_limestone_stonecutting.json deleted file mode 100644 index cdc5224e9..000000000 --- a/src/generated/resources/data/create/recipes/limestone_cobblestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:limestone_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_cobblestone_slab.json b/src/generated/resources/data/create/recipes/limestone_cobblestone_slab.json deleted file mode 100644 index d207bbec5..000000000 --- a/src/generated/resources/data/create/recipes/limestone_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "limestone_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:limestone_cobblestone" - } - }, - "result": { - "item": "create:limestone_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting.json deleted file mode 100644 index 998a454a2..000000000 --- a/src/generated/resources/data/create/recipes/limestone_cobblestone_slab_from_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone_cobblestone" - }, - "result": "create:limestone_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/limestone_cobblestone_stairs.json deleted file mode 100644 index dbf25c4a7..000000000 --- a/src/generated/resources/data/create/recipes/limestone_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "limestone_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:limestone_cobblestone" - } - }, - "result": { - "item": "create:limestone_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json deleted file mode 100644 index ff574a1aa..000000000 --- a/src/generated/resources/data/create/recipes/limestone_cobblestone_stairs_from_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone_cobblestone" - }, - "result": "create:limestone_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_cobblestone_wall.json b/src/generated/resources/data/create/recipes/limestone_cobblestone_wall.json deleted file mode 100644 index f5c301e74..000000000 --- a/src/generated/resources/data/create/recipes/limestone_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:limestone_cobblestone" - } - }, - "result": { - "item": "create:limestone_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json deleted file mode 100644 index 937c7d167..000000000 --- a/src/generated/resources/data/create/recipes/limestone_cobblestone_wall_from_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone_cobblestone" - }, - "result": "create:limestone_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_pillar.json b/src/generated/resources/data/create/recipes/limestone_pillar.json deleted file mode 100644 index 2aebbe3be..000000000 --- a/src/generated/resources/data/create/recipes/limestone_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "create:limestone" - } - }, - "result": { - "item": "create:limestone_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/limestone_pillar_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/limestone_pillar_from_limestone_stonecutting.json deleted file mode 100644 index b1bb3e877..000000000 --- a/src/generated/resources/data/create/recipes/limestone_pillar_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:limestone_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mechanical_crafting/crushing_wheel.json b/src/generated/resources/data/create/recipes/mechanical_crafting/crushing_wheel.json deleted file mode 100644 index a8c1170ec..000000000 --- a/src/generated/resources/data/create/recipes/mechanical_crafting/crushing_wheel.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:mechanical_crafting", - "pattern": [ - " AAA ", - "AAPAA", - "APSPA", - "AAPAA", - " AAA " - ], - "key": { - "P": { - "tag": "minecraft:planks" - }, - "S": { - "tag": "forge:stone" - }, - "A": { - "item": "create:andesite_alloy" - } - }, - "result": { - "item": "create:crushing_wheel", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mechanical_crafting/extendo_grip.json b/src/generated/resources/data/create/recipes/mechanical_crafting/extendo_grip.json deleted file mode 100644 index 37d2eeae5..000000000 --- a/src/generated/resources/data/create/recipes/mechanical_crafting/extendo_grip.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "type": "create:mechanical_crafting", - "pattern": [ - " L ", - " R ", - "SSS", - "SSS", - " H " - ], - "key": { - "L": { - "tag": "forge:ingots/brass" - }, - "R": { - "item": "create:cogwheel" - }, - "H": { - "item": "create:brass_hand" - }, - "S": { - "tag": "forge:rods/wooden" - } - }, - "result": { - "item": "create:extendo_grip" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mechanical_crafting/flywheel.json b/src/generated/resources/data/create/recipes/mechanical_crafting/flywheel.json deleted file mode 100644 index 010b2fbae..000000000 --- a/src/generated/resources/data/create/recipes/mechanical_crafting/flywheel.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:mechanical_crafting", - "pattern": [ - " BBB", - "CB B", - " BBB" - ], - "key": { - "B": { - "tag": "forge:ingots/brass" - }, - "C": { - "item": "create:brass_casing" - } - }, - "result": { - "item": "create:flywheel" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mechanical_crafting/furnace_engine.json b/src/generated/resources/data/create/recipes/mechanical_crafting/furnace_engine.json deleted file mode 100644 index 45765aebe..000000000 --- a/src/generated/resources/data/create/recipes/mechanical_crafting/furnace_engine.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "type": "create:mechanical_crafting", - "pattern": [ - "PPB", - "PCI", - "PPB" - ], - "key": { - "P": { - "tag": "forge:plates/brass" - }, - "B": { - "tag": "forge:ingots/brass" - }, - "I": [ - { - "item": "minecraft:piston" - }, - { - "item": "minecraft:sticky_piston" - } - ], - "C": { - "item": "create:brass_casing" - } - }, - "result": { - "item": "create:furnace_engine" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mechanical_crafting/integrated_circuit.json b/src/generated/resources/data/create/recipes/mechanical_crafting/integrated_circuit.json deleted file mode 100644 index 68a5323da..000000000 --- a/src/generated/resources/data/create/recipes/mechanical_crafting/integrated_circuit.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:mechanical_crafting", - "pattern": [ - " L ", - "RRQRR", - " CCC " - ], - "key": { - "L": { - "item": "create:lapis_sheet" - }, - "R": { - "tag": "forge:dusts/redstone" - }, - "Q": { - "item": "create:polished_rose_quartz" - }, - "C": { - "tag": "forge:nuggets/gold" - } - }, - "result": { - "item": "create:integrated_circuit" - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/allium.json b/src/generated/resources/data/create/recipes/milling/allium.json deleted file mode 100644 index b6e1a024f..000000000 --- a/src/generated/resources/data/create/recipes/milling/allium.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:allium" - } - ], - "results": [ - { - "item": "minecraft:magenta_dye", - "count": 2 - }, - { - "item": "minecraft:purple_dye", - "count": 2, - "chance": 0.1 - }, - { - "item": "minecraft:pink_dye", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/aluminum_ore.json b/src/generated/resources/data/create/recipes/milling/aluminum_ore.json deleted file mode 100644 index a0e94e54b..000000000 --- a/src/generated/resources/data/create/recipes/milling/aluminum_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/aluminum" - } - ], - "results": [ - { - "item": "create:crushed_aluminum_ore" - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/aluminum", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/andesite.json b/src/generated/resources/data/create/recipes/milling/andesite.json deleted file mode 100644 index c5a278f33..000000000 --- a/src/generated/resources/data/create/recipes/milling/andesite.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:andesite" - } - ], - "results": [ - { - "item": "minecraft:cobblestone" - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/azure_bluet.json b/src/generated/resources/data/create/recipes/milling/azure_bluet.json deleted file mode 100644 index 0fd3c365a..000000000 --- a/src/generated/resources/data/create/recipes/milling/azure_bluet.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:azure_bluet" - } - ], - "results": [ - { - "item": "minecraft:light_gray_dye", - "count": 2 - }, - { - "item": "minecraft:white_dye", - "count": 2, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/blue_orchid.json b/src/generated/resources/data/create/recipes/milling/blue_orchid.json deleted file mode 100644 index 3e54a7049..000000000 --- a/src/generated/resources/data/create/recipes/milling/blue_orchid.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:blue_orchid" - } - ], - "results": [ - { - "item": "minecraft:light_blue_dye", - "count": 2 - }, - { - "item": "minecraft:light_gray_dye", - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/bone.json b/src/generated/resources/data/create/recipes/milling/bone.json deleted file mode 100644 index 122a3c30c..000000000 --- a/src/generated/resources/data/create/recipes/milling/bone.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:bone" - } - ], - "results": [ - { - "item": "minecraft:bone_meal", - "count": 3 - }, - { - "item": "minecraft:white_dye", - "chance": 0.25 - }, - { - "item": "minecraft:bone_meal", - "count": 3, - "chance": 0.25 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/bone_meal.json b/src/generated/resources/data/create/recipes/milling/bone_meal.json deleted file mode 100644 index 04a44f56d..000000000 --- a/src/generated/resources/data/create/recipes/milling/bone_meal.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:bone_meal" - } - ], - "results": [ - { - "item": "minecraft:white_dye", - "count": 2 - }, - { - "item": "minecraft:light_gray_dye", - "chance": 0.1 - } - ], - "processingTime": 70 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/cactus.json b/src/generated/resources/data/create/recipes/milling/cactus.json deleted file mode 100644 index eaed32b70..000000000 --- a/src/generated/resources/data/create/recipes/milling/cactus.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:cactus" - } - ], - "results": [ - { - "item": "minecraft:green_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "chance": 0.1 - } - ], - "processingTime": 50, - "conditions": [ - { - "value": { - "modid": "quark", - "type": "forge:mod_loaded" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/charcoal.json b/src/generated/resources/data/create/recipes/milling/charcoal.json deleted file mode 100644 index e9e74f313..000000000 --- a/src/generated/resources/data/create/recipes/milling/charcoal.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:charcoal" - } - ], - "results": [ - { - "item": "minecraft:black_dye" - }, - { - "item": "minecraft:gray_dye", - "count": 2, - "chance": 0.1 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/clay.json b/src/generated/resources/data/create/recipes/milling/clay.json deleted file mode 100644 index 0dda3c4e6..000000000 --- a/src/generated/resources/data/create/recipes/milling/clay.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:clay" - } - ], - "results": [ - { - "item": "minecraft:clay_ball", - "count": 3 - }, - { - "item": "minecraft:clay_ball", - "chance": 0.5 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/coal.json b/src/generated/resources/data/create/recipes/milling/coal.json deleted file mode 100644 index 3935becba..000000000 --- a/src/generated/resources/data/create/recipes/milling/coal.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:coal" - } - ], - "results": [ - { - "item": "minecraft:black_dye", - "count": 2 - }, - { - "item": "minecraft:gray_dye", - "chance": 0.1 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/cobblestone.json b/src/generated/resources/data/create/recipes/milling/cobblestone.json deleted file mode 100644 index 0321b08fb..000000000 --- a/src/generated/resources/data/create/recipes/milling/cobblestone.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:cobblestone" - } - ], - "results": [ - { - "item": "minecraft:gravel" - } - ], - "processingTime": 250 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/cocoa_beans.json b/src/generated/resources/data/create/recipes/milling/cocoa_beans.json deleted file mode 100644 index 10e8f5685..000000000 --- a/src/generated/resources/data/create/recipes/milling/cocoa_beans.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:cocoa_beans" - } - ], - "results": [ - { - "item": "minecraft:brown_dye", - "count": 2 - }, - { - "item": "minecraft:brown_dye", - "chance": 0.1 - } - ], - "processingTime": 70 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/copper_ore.json b/src/generated/resources/data/create/recipes/milling/copper_ore.json deleted file mode 100644 index e8a1ffc78..000000000 --- a/src/generated/resources/data/create/recipes/milling/copper_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/copper" - } - ], - "results": [ - { - "item": "create:crushed_copper_ore" - } - ], - "processingTime": 350, - "conditions": [ - { - "value": { - "tag": "forge:ores/copper", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/cornflower.json b/src/generated/resources/data/create/recipes/milling/cornflower.json deleted file mode 100644 index 14802f13e..000000000 --- a/src/generated/resources/data/create/recipes/milling/cornflower.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:cornflower" - } - ], - "results": [ - { - "item": "minecraft:blue_dye", - "count": 2 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/dandelion.json b/src/generated/resources/data/create/recipes/milling/dandelion.json deleted file mode 100644 index f65a7bb44..000000000 --- a/src/generated/resources/data/create/recipes/milling/dandelion.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:dandelion" - } - ], - "results": [ - { - "item": "minecraft:yellow_dye", - "count": 2 - }, - { - "item": "minecraft:yellow_dye", - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/diorite.json b/src/generated/resources/data/create/recipes/milling/diorite.json deleted file mode 100644 index 3d5c41325..000000000 --- a/src/generated/resources/data/create/recipes/milling/diorite.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:diorite" - } - ], - "results": [ - { - "item": "create:limesand" - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/fern.json b/src/generated/resources/data/create/recipes/milling/fern.json deleted file mode 100644 index cb1cf44ba..000000000 --- a/src/generated/resources/data/create/recipes/milling/fern.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:fern" - } - ], - "results": [ - { - "item": "minecraft:green_dye" - }, - { - "item": "minecraft:wheat_seeds", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/gold_ore.json b/src/generated/resources/data/create/recipes/milling/gold_ore.json deleted file mode 100644 index c80b0d4fd..000000000 --- a/src/generated/resources/data/create/recipes/milling/gold_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/gold" - } - ], - "results": [ - { - "item": "create:crushed_gold_ore" - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/gold", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/granite.json b/src/generated/resources/data/create/recipes/milling/granite.json deleted file mode 100644 index ed889ab04..000000000 --- a/src/generated/resources/data/create/recipes/milling/granite.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:granite" - } - ], - "results": [ - { - "item": "minecraft:red_sand" - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/grass.json b/src/generated/resources/data/create/recipes/milling/grass.json deleted file mode 100644 index 8752330f6..000000000 --- a/src/generated/resources/data/create/recipes/milling/grass.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:grass" - } - ], - "results": [ - { - "item": "minecraft:wheat_seeds", - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/gravel.json b/src/generated/resources/data/create/recipes/milling/gravel.json deleted file mode 100644 index ed388d82e..000000000 --- a/src/generated/resources/data/create/recipes/milling/gravel.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:gravel" - } - ], - "results": [ - { - "item": "minecraft:flint" - } - ], - "processingTime": 250 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/ink_sac.json b/src/generated/resources/data/create/recipes/milling/ink_sac.json deleted file mode 100644 index eaf945d82..000000000 --- a/src/generated/resources/data/create/recipes/milling/ink_sac.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:ink_sac" - } - ], - "results": [ - { - "item": "minecraft:black_dye", - "count": 2 - }, - { - "item": "minecraft:gray_dye", - "chance": 0.1 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/iron_ore.json b/src/generated/resources/data/create/recipes/milling/iron_ore.json deleted file mode 100644 index ddbe1a20d..000000000 --- a/src/generated/resources/data/create/recipes/milling/iron_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/iron" - } - ], - "results": [ - { - "item": "create:crushed_iron_ore" - } - ], - "processingTime": 400, - "conditions": [ - { - "value": { - "tag": "forge:ores/iron", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/lapis_lazuli.json b/src/generated/resources/data/create/recipes/milling/lapis_lazuli.json deleted file mode 100644 index 8a2d8a4c1..000000000 --- a/src/generated/resources/data/create/recipes/milling/lapis_lazuli.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:lapis_lazuli" - } - ], - "results": [ - { - "item": "minecraft:blue_dye", - "count": 2 - }, - { - "item": "minecraft:blue_dye", - "chance": 0.1 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/large_fern.json b/src/generated/resources/data/create/recipes/milling/large_fern.json deleted file mode 100644 index 3ec2fb126..000000000 --- a/src/generated/resources/data/create/recipes/milling/large_fern.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:large_fern" - } - ], - "results": [ - { - "item": "minecraft:green_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "chance": 0.5 - }, - { - "item": "minecraft:wheat_seeds", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/lead_ore.json b/src/generated/resources/data/create/recipes/milling/lead_ore.json deleted file mode 100644 index 7daad6dfa..000000000 --- a/src/generated/resources/data/create/recipes/milling/lead_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/lead" - } - ], - "results": [ - { - "item": "create:crushed_lead_ore" - } - ], - "processingTime": 400, - "conditions": [ - { - "value": { - "tag": "forge:ores/lead", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/lilac.json b/src/generated/resources/data/create/recipes/milling/lilac.json deleted file mode 100644 index 467fa0d3d..000000000 --- a/src/generated/resources/data/create/recipes/milling/lilac.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:lilac" - } - ], - "results": [ - { - "item": "minecraft:magenta_dye", - "count": 3 - }, - { - "item": "minecraft:magenta_dye", - "chance": 0.25 - }, - { - "item": "minecraft:purple_dye", - "chance": 0.25 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/lily_of_the_valley.json b/src/generated/resources/data/create/recipes/milling/lily_of_the_valley.json deleted file mode 100644 index 789407824..000000000 --- a/src/generated/resources/data/create/recipes/milling/lily_of_the_valley.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:lily_of_the_valley" - } - ], - "results": [ - { - "item": "minecraft:white_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "chance": 0.1 - }, - { - "item": "minecraft:white_dye", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/nickel_ore.json b/src/generated/resources/data/create/recipes/milling/nickel_ore.json deleted file mode 100644 index 3e113bbe3..000000000 --- a/src/generated/resources/data/create/recipes/milling/nickel_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/nickel" - } - ], - "results": [ - { - "item": "create:crushed_nickel_ore" - } - ], - "processingTime": 350, - "conditions": [ - { - "value": { - "tag": "forge:ores/nickel", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/orange_tulip.json b/src/generated/resources/data/create/recipes/milling/orange_tulip.json deleted file mode 100644 index d44d7ee5f..000000000 --- a/src/generated/resources/data/create/recipes/milling/orange_tulip.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:orange_tulip" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/osmium_ore.json b/src/generated/resources/data/create/recipes/milling/osmium_ore.json deleted file mode 100644 index b6969f922..000000000 --- a/src/generated/resources/data/create/recipes/milling/osmium_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/osmium" - } - ], - "results": [ - { - "item": "create:crushed_osmium_ore" - } - ], - "processingTime": 400, - "conditions": [ - { - "value": { - "tag": "forge:ores/osmium", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/oxeye_daisy.json b/src/generated/resources/data/create/recipes/milling/oxeye_daisy.json deleted file mode 100644 index 350f969f2..000000000 --- a/src/generated/resources/data/create/recipes/milling/oxeye_daisy.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:oxeye_daisy" - } - ], - "results": [ - { - "item": "minecraft:light_gray_dye", - "count": 2 - }, - { - "item": "minecraft:white_dye", - "chance": 0.2 - }, - { - "item": "minecraft:yellow_dye", - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/peony.json b/src/generated/resources/data/create/recipes/milling/peony.json deleted file mode 100644 index 64bbd8543..000000000 --- a/src/generated/resources/data/create/recipes/milling/peony.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:peony" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 3 - }, - { - "item": "minecraft:magenta_dye", - "chance": 0.25 - }, - { - "item": "minecraft:pink_dye", - "chance": 0.25 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/pink_tulip.json b/src/generated/resources/data/create/recipes/milling/pink_tulip.json deleted file mode 100644 index a13e6019b..000000000 --- a/src/generated/resources/data/create/recipes/milling/pink_tulip.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:pink_tulip" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/platinum_ore.json b/src/generated/resources/data/create/recipes/milling/platinum_ore.json deleted file mode 100644 index 9f71f1a4c..000000000 --- a/src/generated/resources/data/create/recipes/milling/platinum_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/platinum" - } - ], - "results": [ - { - "item": "create:crushed_platinum_ore" - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/platinum", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/poppy.json b/src/generated/resources/data/create/recipes/milling/poppy.json deleted file mode 100644 index f6e7ce581..000000000 --- a/src/generated/resources/data/create/recipes/milling/poppy.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:poppy" - } - ], - "results": [ - { - "item": "minecraft:red_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/quicksilver_ore.json b/src/generated/resources/data/create/recipes/milling/quicksilver_ore.json deleted file mode 100644 index 14e920f10..000000000 --- a/src/generated/resources/data/create/recipes/milling/quicksilver_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/quicksilver" - } - ], - "results": [ - { - "item": "create:crushed_quicksilver_ore" - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/quicksilver", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/red_tulip.json b/src/generated/resources/data/create/recipes/milling/red_tulip.json deleted file mode 100644 index a6690a32b..000000000 --- a/src/generated/resources/data/create/recipes/milling/red_tulip.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:red_tulip" - } - ], - "results": [ - { - "item": "minecraft:red_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/rose_bush.json b/src/generated/resources/data/create/recipes/milling/rose_bush.json deleted file mode 100644 index cbb71a6db..000000000 --- a/src/generated/resources/data/create/recipes/milling/rose_bush.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:rose_bush" - } - ], - "results": [ - { - "item": "minecraft:red_dye", - "count": 3 - }, - { - "item": "minecraft:green_dye", - "count": 2, - "chance": 0.05 - }, - { - "item": "minecraft:red_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/saddle.json b/src/generated/resources/data/create/recipes/milling/saddle.json deleted file mode 100644 index 65fa3d2ca..000000000 --- a/src/generated/resources/data/create/recipes/milling/saddle.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:saddle" - } - ], - "results": [ - { - "item": "minecraft:leather", - "count": 2 - }, - { - "item": "minecraft:leather", - "count": 2, - "chance": 0.5 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/sand.json b/src/generated/resources/data/create/recipes/milling/sand.json deleted file mode 100644 index 6fd344327..000000000 --- a/src/generated/resources/data/create/recipes/milling/sand.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:sand" - } - ], - "results": [ - { - "item": "create:limesand" - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/sandstone.json b/src/generated/resources/data/create/recipes/milling/sandstone.json deleted file mode 100644 index 773617a41..000000000 --- a/src/generated/resources/data/create/recipes/milling/sandstone.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:sandstone" - } - ], - "results": [ - { - "item": "minecraft:sand" - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/silver_ore.json b/src/generated/resources/data/create/recipes/milling/silver_ore.json deleted file mode 100644 index 57c73480f..000000000 --- a/src/generated/resources/data/create/recipes/milling/silver_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/silver" - } - ], - "results": [ - { - "item": "create:crushed_silver_ore" - } - ], - "processingTime": 300, - "conditions": [ - { - "value": { - "tag": "forge:ores/silver", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/sugar_cane.json b/src/generated/resources/data/create/recipes/milling/sugar_cane.json deleted file mode 100644 index 43befa9f9..000000000 --- a/src/generated/resources/data/create/recipes/milling/sugar_cane.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:sugar_cane" - } - ], - "results": [ - { - "item": "minecraft:sugar", - "count": 2 - }, - { - "item": "minecraft:sugar", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/sunflower.json b/src/generated/resources/data/create/recipes/milling/sunflower.json deleted file mode 100644 index fb80872b4..000000000 --- a/src/generated/resources/data/create/recipes/milling/sunflower.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:sunflower" - } - ], - "results": [ - { - "item": "minecraft:yellow_dye", - "count": 3 - }, - { - "item": "minecraft:orange_dye", - "chance": 0.25 - }, - { - "item": "minecraft:yellow_dye", - "chance": 0.25 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/tall_grass.json b/src/generated/resources/data/create/recipes/milling/tall_grass.json deleted file mode 100644 index f0ab1304f..000000000 --- a/src/generated/resources/data/create/recipes/milling/tall_grass.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:tall_grass" - } - ], - "results": [ - { - "item": "minecraft:wheat_seeds", - "chance": 0.5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/terracotta.json b/src/generated/resources/data/create/recipes/milling/terracotta.json deleted file mode 100644 index 9f7cbf58e..000000000 --- a/src/generated/resources/data/create/recipes/milling/terracotta.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:terracotta" - } - ], - "results": [ - { - "item": "minecraft:red_sand" - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/tin_ore.json b/src/generated/resources/data/create/recipes/milling/tin_ore.json deleted file mode 100644 index 1c2178db4..000000000 --- a/src/generated/resources/data/create/recipes/milling/tin_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/tin" - } - ], - "results": [ - { - "item": "create:crushed_tin_ore" - } - ], - "processingTime": 350, - "conditions": [ - { - "value": { - "tag": "forge:ores/tin", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/uranium_ore.json b/src/generated/resources/data/create/recipes/milling/uranium_ore.json deleted file mode 100644 index 38da4894d..000000000 --- a/src/generated/resources/data/create/recipes/milling/uranium_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/uranium" - } - ], - "results": [ - { - "item": "create:crushed_uranium_ore" - } - ], - "processingTime": 400, - "conditions": [ - { - "value": { - "tag": "forge:ores/uranium", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/wheat.json b/src/generated/resources/data/create/recipes/milling/wheat.json deleted file mode 100644 index 1ece092d6..000000000 --- a/src/generated/resources/data/create/recipes/milling/wheat.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:wheat" - } - ], - "results": [ - { - "item": "create:wheat_flour" - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "minecraft:wheat_seeds", - "chance": 0.25 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/white_tulip.json b/src/generated/resources/data/create/recipes/milling/white_tulip.json deleted file mode 100644 index cc96629e5..000000000 --- a/src/generated/resources/data/create/recipes/milling/white_tulip.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:white_tulip" - } - ], - "results": [ - { - "item": "minecraft:white_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/wither_rose.json b/src/generated/resources/data/create/recipes/milling/wither_rose.json deleted file mode 100644 index 2564966e1..000000000 --- a/src/generated/resources/data/create/recipes/milling/wither_rose.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "item": "minecraft:wither_rose" - } - ], - "results": [ - { - "item": "minecraft:black_dye", - "count": 2 - }, - { - "item": "minecraft:black_dye", - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/wool.json b/src/generated/resources/data/create/recipes/milling/wool.json deleted file mode 100644 index 2768e17ec..000000000 --- a/src/generated/resources/data/create/recipes/milling/wool.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "minecraft:wool" - } - ], - "results": [ - { - "item": "minecraft:string" - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/milling/zinc_ore.json b/src/generated/resources/data/create/recipes/milling/zinc_ore.json deleted file mode 100644 index f2ff77f97..000000000 --- a/src/generated/resources/data/create/recipes/milling/zinc_ore.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ores/zinc" - } - ], - "results": [ - { - "item": "create:crushed_zinc_ore" - } - ], - "processingTime": 350, - "conditions": [ - { - "value": { - "tag": "forge:ores/zinc", - "type": "forge:tag_empty" - }, - "type": "forge:not" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/andesite_alloy.json b/src/generated/resources/data/create/recipes/mixing/andesite_alloy.json deleted file mode 100644 index 544783f51..000000000 --- a/src/generated/resources/data/create/recipes/mixing/andesite_alloy.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "create:mixing", - "ingredients": [ - { - "item": "minecraft:andesite" - }, - { - "tag": "forge:nuggets/iron" - } - ], - "results": [ - { - "item": "create:andesite_alloy" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/andesite_alloy_from_zinc.json b/src/generated/resources/data/create/recipes/mixing/andesite_alloy_from_zinc.json deleted file mode 100644 index 1f7b7d93e..000000000 --- a/src/generated/resources/data/create/recipes/mixing/andesite_alloy_from_zinc.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "create:mixing", - "ingredients": [ - { - "item": "minecraft:andesite" - }, - { - "tag": "forge:nuggets/zinc" - } - ], - "results": [ - { - "item": "create:andesite_alloy" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/brass_ingot.json b/src/generated/resources/data/create/recipes/mixing/brass_ingot.json deleted file mode 100644 index 94183eb22..000000000 --- a/src/generated/resources/data/create/recipes/mixing/brass_ingot.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:mixing", - "ingredients": [ - { - "tag": "forge:ingots/copper" - }, - { - "tag": "forge:ingots/zinc" - } - ], - "results": [ - { - "item": "create:brass_ingot", - "count": 2 - } - ], - "heatRequirement": "heated" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/chocolate.json b/src/generated/resources/data/create/recipes/mixing/chocolate.json deleted file mode 100644 index e15f7307d..000000000 --- a/src/generated/resources/data/create/recipes/mixing/chocolate.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "create:mixing", - "ingredients": [ - { - "item": "minecraft:sugar" - }, - { - "item": "minecraft:cocoa_beans" - }, - { - "fluidTag": "forge:milk", - "amount": 250 - } - ], - "results": [ - { - "fluid": "create:chocolate", - "amount": 250 - } - ], - "heatRequirement": "heated" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/chromatic_compound.json b/src/generated/resources/data/create/recipes/mixing/chromatic_compound.json deleted file mode 100644 index ad36ad7cf..000000000 --- a/src/generated/resources/data/create/recipes/mixing/chromatic_compound.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "type": "create:mixing", - "ingredients": [ - { - "tag": "forge:dusts/glowstone" - }, - { - "tag": "forge:dusts/glowstone" - }, - { - "tag": "forge:dusts/glowstone" - }, - { - "item": "create:powdered_obsidian" - }, - { - "item": "create:powdered_obsidian" - }, - { - "item": "create:powdered_obsidian" - }, - { - "item": "create:polished_rose_quartz" - } - ], - "results": [ - { - "item": "create:chromatic_compound" - } - ], - "heatRequirement": "superheated" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/crushed_brass.json b/src/generated/resources/data/create/recipes/mixing/crushed_brass.json deleted file mode 100644 index 7c1e34832..000000000 --- a/src/generated/resources/data/create/recipes/mixing/crushed_brass.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:mixing", - "ingredients": [ - { - "item": "create:crushed_copper_ore" - }, - { - "item": "create:crushed_zinc_ore" - } - ], - "results": [ - { - "item": "create:crushed_brass", - "count": 2 - } - ], - "heatRequirement": "heated" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/lava_from_cobble.json b/src/generated/resources/data/create/recipes/mixing/lava_from_cobble.json deleted file mode 100644 index 3f9f2a070..000000000 --- a/src/generated/resources/data/create/recipes/mixing/lava_from_cobble.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "create:mixing", - "ingredients": [ - { - "tag": "forge:cobblestone" - } - ], - "results": [ - { - "fluid": "minecraft:lava", - "amount": 50 - } - ], - "heatRequirement": "superheated" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mixing/tea.json b/src/generated/resources/data/create/recipes/mixing/tea.json deleted file mode 100644 index 40ccbf50a..000000000 --- a/src/generated/resources/data/create/recipes/mixing/tea.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "create:mixing", - "ingredients": [ - { - "tag": "minecraft:leaves" - }, - { - "fluid": "minecraft:water", - "nbt": {}, - "amount": 250 - }, - { - "fluidTag": "forge:milk", - "amount": 250 - } - ], - "results": [ - { - "fluid": "create:tea", - "amount": 500 - } - ], - "heatRequirement": "heated" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_andesite_from_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_andesite_from_andesite_stonecutting.json deleted file mode 100644 index 5d0ce26f7..000000000 --- a/src/generated/resources/data/create/recipes/mossy_andesite_from_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:andesite" - }, - "result": "create:mossy_andesite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index d1c54255f..000000000 --- a/src/generated/resources/data/create/recipes/mossy_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:mossy_dark_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_diorite_from_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_diorite_from_diorite_stonecutting.json deleted file mode 100644 index 5d677bdb3..000000000 --- a/src/generated/resources/data/create/recipes/mossy_diorite_from_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:mossy_diorite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 64fc749ca..000000000 --- a/src/generated/resources/data/create/recipes/mossy_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:mossy_dolomite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index f3d1272fb..000000000 --- a/src/generated/resources/data/create/recipes/mossy_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:mossy_gabbro", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_granite_from_granite_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_granite_from_granite_stonecutting.json deleted file mode 100644 index c874a25c1..000000000 --- a/src/generated/resources/data/create/recipes/mossy_granite_from_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:mossy_granite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_limestone_from_limestone_stonecutting.json deleted file mode 100644 index 34a6bc2e8..000000000 --- a/src/generated/resources/data/create/recipes/mossy_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:mossy_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_scoria_from_scoria_stonecutting.json deleted file mode 100644 index a40d7af05..000000000 --- a/src/generated/resources/data/create/recipes/mossy_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:mossy_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/mossy_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/mossy_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index a35a3b88b..000000000 --- a/src/generated/resources/data/create/recipes/mossy_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:mossy_weathered_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/oak_window.json b/src/generated/resources/data/create/recipes/oak_window.json deleted file mode 100644 index 6d8774948..000000000 --- a/src/generated/resources/data/create/recipes/oak_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "minecraft:oak_planks" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:oak_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/oak_window_pane.json b/src/generated/resources/data/create/recipes/oak_window_pane.json deleted file mode 100644 index c443283ce..000000000 --- a/src/generated/resources/data/create/recipes/oak_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:oak_window" - } - }, - "result": { - "item": "create:oak_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/ornate_iron_window.json b/src/generated/resources/data/create/recipes/ornate_iron_window.json deleted file mode 100644 index 1d1e23401..000000000 --- a/src/generated/resources/data/create/recipes/ornate_iron_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "create:andesite_alloy" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:ornate_iron_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/ornate_iron_window_pane.json b/src/generated/resources/data/create/recipes/ornate_iron_window_pane.json deleted file mode 100644 index 1b4d11244..000000000 --- a/src/generated/resources/data/create/recipes/ornate_iron_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:ornate_iron_window" - } - }, - "result": { - "item": "create:ornate_iron_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_andesite_from_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_andesite_from_andesite_stonecutting.json deleted file mode 100644 index e76702418..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_andesite_from_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:andesite" - }, - "result": "create:overgrown_andesite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index 99abee030..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:overgrown_dark_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_diorite_from_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_diorite_from_diorite_stonecutting.json deleted file mode 100644 index aec48767e..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_diorite_from_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:overgrown_diorite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 0a5124ed7..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:overgrown_dolomite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index c8c601b5c..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:overgrown_gabbro", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_granite_from_granite_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_granite_from_granite_stonecutting.json deleted file mode 100644 index c56b70b13..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_granite_from_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:overgrown_granite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_limestone_from_limestone_stonecutting.json deleted file mode 100644 index ba584374c..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:overgrown_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_scoria_from_scoria_stonecutting.json deleted file mode 100644 index 9a7c50fa8..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:overgrown_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/overgrown_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/overgrown_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 794b6874d..000000000 --- a/src/generated/resources/data/create/recipes/overgrown_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:overgrown_weathered_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_andesite_from_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_andesite_from_andesite_stonecutting.json deleted file mode 100644 index b54697f2e..000000000 --- a/src/generated/resources/data/create/recipes/paved_andesite_from_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:andesite" - }, - "result": "create:paved_andesite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_andesite_slab.json b/src/generated/resources/data/create/recipes/paved_andesite_slab.json deleted file mode 100644 index 0a2004651..000000000 --- a/src/generated/resources/data/create/recipes/paved_andesite_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_andesite_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_andesite" - } - }, - "result": { - "item": "create:paved_andesite_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_andesite_slab_from_paved_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_andesite_slab_from_paved_andesite_stonecutting.json deleted file mode 100644 index 0fb26d971..000000000 --- a/src/generated/resources/data/create/recipes/paved_andesite_slab_from_paved_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_andesite" - }, - "result": "create:paved_andesite_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_andesite_stairs.json b/src/generated/resources/data/create/recipes/paved_andesite_stairs.json deleted file mode 100644 index 9cbb6eb68..000000000 --- a/src/generated/resources/data/create/recipes/paved_andesite_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_andesite_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_andesite" - } - }, - "result": { - "item": "create:paved_andesite_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_andesite_stairs_from_paved_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_andesite_stairs_from_paved_andesite_stonecutting.json deleted file mode 100644 index 02e3d7c26..000000000 --- a/src/generated/resources/data/create/recipes/paved_andesite_stairs_from_paved_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_andesite" - }, - "result": "create:paved_andesite_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_andesite_wall.json b/src/generated/resources/data/create/recipes/paved_andesite_wall.json deleted file mode 100644 index 3a8eba852..000000000 --- a/src/generated/resources/data/create/recipes/paved_andesite_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_andesite" - } - }, - "result": { - "item": "create:paved_andesite_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_andesite_wall_from_paved_andesite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_andesite_wall_from_paved_andesite_stonecutting.json deleted file mode 100644 index 7612b48f5..000000000 --- a/src/generated/resources/data/create/recipes/paved_andesite_wall_from_paved_andesite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_andesite" - }, - "result": "create:paved_andesite_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/paved_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index 8de11c2a8..000000000 --- a/src/generated/resources/data/create/recipes/paved_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:paved_dark_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dark_scoria_slab.json b/src/generated/resources/data/create/recipes/paved_dark_scoria_slab.json deleted file mode 100644 index ce894734d..000000000 --- a/src/generated/resources/data/create/recipes/paved_dark_scoria_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_dark_scoria_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_dark_scoria" - } - }, - "result": { - "item": "create:paved_dark_scoria_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting.json deleted file mode 100644 index e9cddc760..000000000 --- a/src/generated/resources/data/create/recipes/paved_dark_scoria_slab_from_paved_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_dark_scoria" - }, - "result": "create:paved_dark_scoria_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dark_scoria_stairs.json b/src/generated/resources/data/create/recipes/paved_dark_scoria_stairs.json deleted file mode 100644 index a32b02782..000000000 --- a/src/generated/resources/data/create/recipes/paved_dark_scoria_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_dark_scoria_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_dark_scoria" - } - }, - "result": { - "item": "create:paved_dark_scoria_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting.json deleted file mode 100644 index 8839203a9..000000000 --- a/src/generated/resources/data/create/recipes/paved_dark_scoria_stairs_from_paved_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_dark_scoria" - }, - "result": "create:paved_dark_scoria_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dark_scoria_wall.json b/src/generated/resources/data/create/recipes/paved_dark_scoria_wall.json deleted file mode 100644 index e4217f1b9..000000000 --- a/src/generated/resources/data/create/recipes/paved_dark_scoria_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_dark_scoria" - } - }, - "result": { - "item": "create:paved_dark_scoria_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting.json deleted file mode 100644 index 06d379655..000000000 --- a/src/generated/resources/data/create/recipes/paved_dark_scoria_wall_from_paved_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_dark_scoria" - }, - "result": "create:paved_dark_scoria_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_diorite_from_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_diorite_from_diorite_stonecutting.json deleted file mode 100644 index 11d9fb62a..000000000 --- a/src/generated/resources/data/create/recipes/paved_diorite_from_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:paved_diorite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_diorite_slab.json b/src/generated/resources/data/create/recipes/paved_diorite_slab.json deleted file mode 100644 index df8c488e5..000000000 --- a/src/generated/resources/data/create/recipes/paved_diorite_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_diorite_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_diorite" - } - }, - "result": { - "item": "create:paved_diorite_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_diorite_slab_from_paved_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_diorite_slab_from_paved_diorite_stonecutting.json deleted file mode 100644 index ecc8b6d5a..000000000 --- a/src/generated/resources/data/create/recipes/paved_diorite_slab_from_paved_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_diorite" - }, - "result": "create:paved_diorite_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_diorite_stairs.json b/src/generated/resources/data/create/recipes/paved_diorite_stairs.json deleted file mode 100644 index 1b8fc3f1a..000000000 --- a/src/generated/resources/data/create/recipes/paved_diorite_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_diorite_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_diorite" - } - }, - "result": { - "item": "create:paved_diorite_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_diorite_stairs_from_paved_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_diorite_stairs_from_paved_diorite_stonecutting.json deleted file mode 100644 index 10a8e9081..000000000 --- a/src/generated/resources/data/create/recipes/paved_diorite_stairs_from_paved_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_diorite" - }, - "result": "create:paved_diorite_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_diorite_wall.json b/src/generated/resources/data/create/recipes/paved_diorite_wall.json deleted file mode 100644 index fa8c4aae4..000000000 --- a/src/generated/resources/data/create/recipes/paved_diorite_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_diorite" - } - }, - "result": { - "item": "create:paved_diorite_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_diorite_wall_from_paved_diorite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_diorite_wall_from_paved_diorite_stonecutting.json deleted file mode 100644 index f007648f1..000000000 --- a/src/generated/resources/data/create/recipes/paved_diorite_wall_from_paved_diorite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_diorite" - }, - "result": "create:paved_diorite_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 0f9eb2a96..000000000 --- a/src/generated/resources/data/create/recipes/paved_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:paved_dolomite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dolomite_slab.json b/src/generated/resources/data/create/recipes/paved_dolomite_slab.json deleted file mode 100644 index a00f2ac8e..000000000 --- a/src/generated/resources/data/create/recipes/paved_dolomite_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_dolomite_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_dolomite" - } - }, - "result": { - "item": "create:paved_dolomite_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dolomite_slab_from_paved_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_dolomite_slab_from_paved_dolomite_stonecutting.json deleted file mode 100644 index 932123f0f..000000000 --- a/src/generated/resources/data/create/recipes/paved_dolomite_slab_from_paved_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_dolomite" - }, - "result": "create:paved_dolomite_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dolomite_stairs.json b/src/generated/resources/data/create/recipes/paved_dolomite_stairs.json deleted file mode 100644 index 296369ac6..000000000 --- a/src/generated/resources/data/create/recipes/paved_dolomite_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_dolomite_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_dolomite" - } - }, - "result": { - "item": "create:paved_dolomite_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dolomite_stairs_from_paved_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_dolomite_stairs_from_paved_dolomite_stonecutting.json deleted file mode 100644 index a9b6b342b..000000000 --- a/src/generated/resources/data/create/recipes/paved_dolomite_stairs_from_paved_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_dolomite" - }, - "result": "create:paved_dolomite_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dolomite_wall.json b/src/generated/resources/data/create/recipes/paved_dolomite_wall.json deleted file mode 100644 index 25a81ac2f..000000000 --- a/src/generated/resources/data/create/recipes/paved_dolomite_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_dolomite" - } - }, - "result": { - "item": "create:paved_dolomite_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_dolomite_wall_from_paved_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_dolomite_wall_from_paved_dolomite_stonecutting.json deleted file mode 100644 index f485d5940..000000000 --- a/src/generated/resources/data/create/recipes/paved_dolomite_wall_from_paved_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_dolomite" - }, - "result": "create:paved_dolomite_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/paved_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index 95c07933a..000000000 --- a/src/generated/resources/data/create/recipes/paved_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:paved_gabbro", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_gabbro_slab.json b/src/generated/resources/data/create/recipes/paved_gabbro_slab.json deleted file mode 100644 index 9c987a5fc..000000000 --- a/src/generated/resources/data/create/recipes/paved_gabbro_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_gabbro_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_gabbro" - } - }, - "result": { - "item": "create:paved_gabbro_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_gabbro_slab_from_paved_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/paved_gabbro_slab_from_paved_gabbro_stonecutting.json deleted file mode 100644 index 232fb7700..000000000 --- a/src/generated/resources/data/create/recipes/paved_gabbro_slab_from_paved_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_gabbro" - }, - "result": "create:paved_gabbro_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_gabbro_stairs.json b/src/generated/resources/data/create/recipes/paved_gabbro_stairs.json deleted file mode 100644 index e2cc80b30..000000000 --- a/src/generated/resources/data/create/recipes/paved_gabbro_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_gabbro_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_gabbro" - } - }, - "result": { - "item": "create:paved_gabbro_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_gabbro_stairs_from_paved_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/paved_gabbro_stairs_from_paved_gabbro_stonecutting.json deleted file mode 100644 index 978acad13..000000000 --- a/src/generated/resources/data/create/recipes/paved_gabbro_stairs_from_paved_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_gabbro" - }, - "result": "create:paved_gabbro_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_gabbro_wall.json b/src/generated/resources/data/create/recipes/paved_gabbro_wall.json deleted file mode 100644 index 643c7cfe1..000000000 --- a/src/generated/resources/data/create/recipes/paved_gabbro_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_gabbro" - } - }, - "result": { - "item": "create:paved_gabbro_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_gabbro_wall_from_paved_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/paved_gabbro_wall_from_paved_gabbro_stonecutting.json deleted file mode 100644 index 3def3f297..000000000 --- a/src/generated/resources/data/create/recipes/paved_gabbro_wall_from_paved_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_gabbro" - }, - "result": "create:paved_gabbro_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_granite_from_granite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_granite_from_granite_stonecutting.json deleted file mode 100644 index b54b66496..000000000 --- a/src/generated/resources/data/create/recipes/paved_granite_from_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:paved_granite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_granite_slab.json b/src/generated/resources/data/create/recipes/paved_granite_slab.json deleted file mode 100644 index cd90dacab..000000000 --- a/src/generated/resources/data/create/recipes/paved_granite_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_granite_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_granite" - } - }, - "result": { - "item": "create:paved_granite_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_granite_slab_from_paved_granite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_granite_slab_from_paved_granite_stonecutting.json deleted file mode 100644 index 659d321af..000000000 --- a/src/generated/resources/data/create/recipes/paved_granite_slab_from_paved_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_granite" - }, - "result": "create:paved_granite_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_granite_stairs.json b/src/generated/resources/data/create/recipes/paved_granite_stairs.json deleted file mode 100644 index 1bebb4fbf..000000000 --- a/src/generated/resources/data/create/recipes/paved_granite_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_granite_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_granite" - } - }, - "result": { - "item": "create:paved_granite_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_granite_stairs_from_paved_granite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_granite_stairs_from_paved_granite_stonecutting.json deleted file mode 100644 index 2df75d19c..000000000 --- a/src/generated/resources/data/create/recipes/paved_granite_stairs_from_paved_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_granite" - }, - "result": "create:paved_granite_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_granite_wall.json b/src/generated/resources/data/create/recipes/paved_granite_wall.json deleted file mode 100644 index 4df01b13f..000000000 --- a/src/generated/resources/data/create/recipes/paved_granite_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_granite" - } - }, - "result": { - "item": "create:paved_granite_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_granite_wall_from_paved_granite_stonecutting.json b/src/generated/resources/data/create/recipes/paved_granite_wall_from_paved_granite_stonecutting.json deleted file mode 100644 index 99d1bb731..000000000 --- a/src/generated/resources/data/create/recipes/paved_granite_wall_from_paved_granite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_granite" - }, - "result": "create:paved_granite_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/paved_limestone_from_limestone_stonecutting.json deleted file mode 100644 index 0c1e57d30..000000000 --- a/src/generated/resources/data/create/recipes/paved_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:paved_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_limestone_slab.json b/src/generated/resources/data/create/recipes/paved_limestone_slab.json deleted file mode 100644 index c364a8dc9..000000000 --- a/src/generated/resources/data/create/recipes/paved_limestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_limestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_limestone" - } - }, - "result": { - "item": "create:paved_limestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_limestone_slab_from_paved_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/paved_limestone_slab_from_paved_limestone_stonecutting.json deleted file mode 100644 index c0294c04b..000000000 --- a/src/generated/resources/data/create/recipes/paved_limestone_slab_from_paved_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_limestone" - }, - "result": "create:paved_limestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_limestone_stairs.json b/src/generated/resources/data/create/recipes/paved_limestone_stairs.json deleted file mode 100644 index 73e732d46..000000000 --- a/src/generated/resources/data/create/recipes/paved_limestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_limestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_limestone" - } - }, - "result": { - "item": "create:paved_limestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_limestone_stairs_from_paved_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/paved_limestone_stairs_from_paved_limestone_stonecutting.json deleted file mode 100644 index 5d4c306ed..000000000 --- a/src/generated/resources/data/create/recipes/paved_limestone_stairs_from_paved_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_limestone" - }, - "result": "create:paved_limestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_limestone_wall.json b/src/generated/resources/data/create/recipes/paved_limestone_wall.json deleted file mode 100644 index 81a4f7fb6..000000000 --- a/src/generated/resources/data/create/recipes/paved_limestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_limestone" - } - }, - "result": { - "item": "create:paved_limestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_limestone_wall_from_paved_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/paved_limestone_wall_from_paved_limestone_stonecutting.json deleted file mode 100644 index 8b9322b80..000000000 --- a/src/generated/resources/data/create/recipes/paved_limestone_wall_from_paved_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_limestone" - }, - "result": "create:paved_limestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/paved_scoria_from_scoria_stonecutting.json deleted file mode 100644 index 08fb061a6..000000000 --- a/src/generated/resources/data/create/recipes/paved_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:paved_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_scoria_slab.json b/src/generated/resources/data/create/recipes/paved_scoria_slab.json deleted file mode 100644 index a5e40ca92..000000000 --- a/src/generated/resources/data/create/recipes/paved_scoria_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_scoria_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_scoria" - } - }, - "result": { - "item": "create:paved_scoria_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_scoria_slab_from_paved_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/paved_scoria_slab_from_paved_scoria_stonecutting.json deleted file mode 100644 index f9bd082d7..000000000 --- a/src/generated/resources/data/create/recipes/paved_scoria_slab_from_paved_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_scoria" - }, - "result": "create:paved_scoria_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_scoria_stairs.json b/src/generated/resources/data/create/recipes/paved_scoria_stairs.json deleted file mode 100644 index bc4ac042e..000000000 --- a/src/generated/resources/data/create/recipes/paved_scoria_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_scoria_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_scoria" - } - }, - "result": { - "item": "create:paved_scoria_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_scoria_stairs_from_paved_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/paved_scoria_stairs_from_paved_scoria_stonecutting.json deleted file mode 100644 index 92eb0a48d..000000000 --- a/src/generated/resources/data/create/recipes/paved_scoria_stairs_from_paved_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_scoria" - }, - "result": "create:paved_scoria_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_scoria_wall.json b/src/generated/resources/data/create/recipes/paved_scoria_wall.json deleted file mode 100644 index dd33f6068..000000000 --- a/src/generated/resources/data/create/recipes/paved_scoria_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_scoria" - } - }, - "result": { - "item": "create:paved_scoria_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_scoria_wall_from_paved_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/paved_scoria_wall_from_paved_scoria_stonecutting.json deleted file mode 100644 index 2eb754a6e..000000000 --- a/src/generated/resources/data/create/recipes/paved_scoria_wall_from_paved_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_scoria" - }, - "result": "create:paved_scoria_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/paved_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 3e2296266..000000000 --- a/src/generated/resources/data/create/recipes/paved_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:paved_weathered_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_weathered_limestone_slab.json b/src/generated/resources/data/create/recipes/paved_weathered_limestone_slab.json deleted file mode 100644 index 9d5f38862..000000000 --- a/src/generated/resources/data/create/recipes/paved_weathered_limestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_weathered_limestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:paved_weathered_limestone" - } - }, - "result": { - "item": "create:paved_weathered_limestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting.json deleted file mode 100644 index e6c089eb5..000000000 --- a/src/generated/resources/data/create/recipes/paved_weathered_limestone_slab_from_paved_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_weathered_limestone" - }, - "result": "create:paved_weathered_limestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_weathered_limestone_stairs.json b/src/generated/resources/data/create/recipes/paved_weathered_limestone_stairs.json deleted file mode 100644 index 7686ee8c5..000000000 --- a/src/generated/resources/data/create/recipes/paved_weathered_limestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "paved_weathered_limestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_weathered_limestone" - } - }, - "result": { - "item": "create:paved_weathered_limestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json deleted file mode 100644 index e8e75e444..000000000 --- a/src/generated/resources/data/create/recipes/paved_weathered_limestone_stairs_from_paved_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_weathered_limestone" - }, - "result": "create:paved_weathered_limestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_weathered_limestone_wall.json b/src/generated/resources/data/create/recipes/paved_weathered_limestone_wall.json deleted file mode 100644 index b42cc11ce..000000000 --- a/src/generated/resources/data/create/recipes/paved_weathered_limestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:paved_weathered_limestone" - } - }, - "result": { - "item": "create:paved_weathered_limestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json deleted file mode 100644 index 674108169..000000000 --- a/src/generated/resources/data/create/recipes/paved_weathered_limestone_wall_from_paved_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:paved_weathered_limestone" - }, - "result": "create:paved_weathered_limestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dark_scoria.json b/src/generated/resources/data/create/recipes/polished_dark_scoria.json deleted file mode 100644 index 5a9cfcde0..000000000 --- a/src/generated/resources/data/create/recipes/polished_dark_scoria.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "item": "create:dark_scoria" - } - }, - "result": { - "item": "create:polished_dark_scoria", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dark_scoria_from_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/polished_dark_scoria_from_dark_scoria_stonecutting.json deleted file mode 100644 index e5d28b158..000000000 --- a/src/generated/resources/data/create/recipes/polished_dark_scoria_from_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dark_scoria" - }, - "result": "create:polished_dark_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dark_scoria_slab.json b/src/generated/resources/data/create/recipes/polished_dark_scoria_slab.json deleted file mode 100644 index 031c4bebb..000000000 --- a/src/generated/resources/data/create/recipes/polished_dark_scoria_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_dark_scoria_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:polished_dark_scoria" - } - }, - "result": { - "item": "create:polished_dark_scoria_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json deleted file mode 100644 index fbf8f193e..000000000 --- a/src/generated/resources/data/create/recipes/polished_dark_scoria_slab_from_polished_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_dark_scoria" - }, - "result": "create:polished_dark_scoria_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dark_scoria_stairs.json b/src/generated/resources/data/create/recipes/polished_dark_scoria_stairs.json deleted file mode 100644 index 718c7e497..000000000 --- a/src/generated/resources/data/create/recipes/polished_dark_scoria_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_dark_scoria_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_dark_scoria" - } - }, - "result": { - "item": "create:polished_dark_scoria_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json deleted file mode 100644 index f2172e7c0..000000000 --- a/src/generated/resources/data/create/recipes/polished_dark_scoria_stairs_from_polished_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_dark_scoria" - }, - "result": "create:polished_dark_scoria_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dark_scoria_wall.json b/src/generated/resources/data/create/recipes/polished_dark_scoria_wall.json deleted file mode 100644 index 7b0732c81..000000000 --- a/src/generated/resources/data/create/recipes/polished_dark_scoria_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_dark_scoria" - } - }, - "result": { - "item": "create:polished_dark_scoria_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json deleted file mode 100644 index d56d65f37..000000000 --- a/src/generated/resources/data/create/recipes/polished_dark_scoria_wall_from_polished_dark_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_dark_scoria" - }, - "result": "create:polished_dark_scoria_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dolomite.json b/src/generated/resources/data/create/recipes/polished_dolomite.json deleted file mode 100644 index 4fcd09891..000000000 --- a/src/generated/resources/data/create/recipes/polished_dolomite.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "item": "create:dolomite" - } - }, - "result": { - "item": "create:polished_dolomite", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dolomite_from_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/polished_dolomite_from_dolomite_stonecutting.json deleted file mode 100644 index 833af3e91..000000000 --- a/src/generated/resources/data/create/recipes/polished_dolomite_from_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:dolomite" - }, - "result": "create:polished_dolomite", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dolomite_slab.json b/src/generated/resources/data/create/recipes/polished_dolomite_slab.json deleted file mode 100644 index 3b5306540..000000000 --- a/src/generated/resources/data/create/recipes/polished_dolomite_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_dolomite_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:polished_dolomite" - } - }, - "result": { - "item": "create:polished_dolomite_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json deleted file mode 100644 index 856223474..000000000 --- a/src/generated/resources/data/create/recipes/polished_dolomite_slab_from_polished_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_dolomite" - }, - "result": "create:polished_dolomite_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dolomite_stairs.json b/src/generated/resources/data/create/recipes/polished_dolomite_stairs.json deleted file mode 100644 index f80dfa906..000000000 --- a/src/generated/resources/data/create/recipes/polished_dolomite_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_dolomite_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_dolomite" - } - }, - "result": { - "item": "create:polished_dolomite_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json deleted file mode 100644 index 293a5876f..000000000 --- a/src/generated/resources/data/create/recipes/polished_dolomite_stairs_from_polished_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_dolomite" - }, - "result": "create:polished_dolomite_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dolomite_wall.json b/src/generated/resources/data/create/recipes/polished_dolomite_wall.json deleted file mode 100644 index 07e392443..000000000 --- a/src/generated/resources/data/create/recipes/polished_dolomite_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_dolomite" - } - }, - "result": { - "item": "create:polished_dolomite_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json b/src/generated/resources/data/create/recipes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json deleted file mode 100644 index d706e9d9b..000000000 --- a/src/generated/resources/data/create/recipes/polished_dolomite_wall_from_polished_dolomite_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_dolomite" - }, - "result": "create:polished_dolomite_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_gabbro.json b/src/generated/resources/data/create/recipes/polished_gabbro.json deleted file mode 100644 index 5c9cfe964..000000000 --- a/src/generated/resources/data/create/recipes/polished_gabbro.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "item": "create:gabbro" - } - }, - "result": { - "item": "create:polished_gabbro", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_gabbro_from_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/polished_gabbro_from_gabbro_stonecutting.json deleted file mode 100644 index 54edb803f..000000000 --- a/src/generated/resources/data/create/recipes/polished_gabbro_from_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:gabbro" - }, - "result": "create:polished_gabbro", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_gabbro_slab.json b/src/generated/resources/data/create/recipes/polished_gabbro_slab.json deleted file mode 100644 index c3272bd99..000000000 --- a/src/generated/resources/data/create/recipes/polished_gabbro_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_gabbro_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:polished_gabbro" - } - }, - "result": { - "item": "create:polished_gabbro_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json deleted file mode 100644 index 5d204763d..000000000 --- a/src/generated/resources/data/create/recipes/polished_gabbro_slab_from_polished_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_gabbro" - }, - "result": "create:polished_gabbro_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_gabbro_stairs.json b/src/generated/resources/data/create/recipes/polished_gabbro_stairs.json deleted file mode 100644 index baf642375..000000000 --- a/src/generated/resources/data/create/recipes/polished_gabbro_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_gabbro_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_gabbro" - } - }, - "result": { - "item": "create:polished_gabbro_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json deleted file mode 100644 index efcc46247..000000000 --- a/src/generated/resources/data/create/recipes/polished_gabbro_stairs_from_polished_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_gabbro" - }, - "result": "create:polished_gabbro_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_gabbro_wall.json b/src/generated/resources/data/create/recipes/polished_gabbro_wall.json deleted file mode 100644 index e0f32f73a..000000000 --- a/src/generated/resources/data/create/recipes/polished_gabbro_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_gabbro" - } - }, - "result": { - "item": "create:polished_gabbro_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json b/src/generated/resources/data/create/recipes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json deleted file mode 100644 index 0b8c6947e..000000000 --- a/src/generated/resources/data/create/recipes/polished_gabbro_wall_from_polished_gabbro_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_gabbro" - }, - "result": "create:polished_gabbro_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_limestone.json b/src/generated/resources/data/create/recipes/polished_limestone.json deleted file mode 100644 index 13556fd93..000000000 --- a/src/generated/resources/data/create/recipes/polished_limestone.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "item": "create:limestone" - } - }, - "result": { - "item": "create:polished_limestone", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_limestone_from_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/polished_limestone_from_limestone_stonecutting.json deleted file mode 100644 index e5ac1e17a..000000000 --- a/src/generated/resources/data/create/recipes/polished_limestone_from_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:limestone" - }, - "result": "create:polished_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_limestone_slab.json b/src/generated/resources/data/create/recipes/polished_limestone_slab.json deleted file mode 100644 index 5fc9eb08b..000000000 --- a/src/generated/resources/data/create/recipes/polished_limestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_limestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:polished_limestone" - } - }, - "result": { - "item": "create:polished_limestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_limestone_slab_from_polished_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/polished_limestone_slab_from_polished_limestone_stonecutting.json deleted file mode 100644 index d5b582806..000000000 --- a/src/generated/resources/data/create/recipes/polished_limestone_slab_from_polished_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_limestone" - }, - "result": "create:polished_limestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_limestone_stairs.json b/src/generated/resources/data/create/recipes/polished_limestone_stairs.json deleted file mode 100644 index 334f2752f..000000000 --- a/src/generated/resources/data/create/recipes/polished_limestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_limestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_limestone" - } - }, - "result": { - "item": "create:polished_limestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_limestone_stairs_from_polished_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/polished_limestone_stairs_from_polished_limestone_stonecutting.json deleted file mode 100644 index d52224194..000000000 --- a/src/generated/resources/data/create/recipes/polished_limestone_stairs_from_polished_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_limestone" - }, - "result": "create:polished_limestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_limestone_wall.json b/src/generated/resources/data/create/recipes/polished_limestone_wall.json deleted file mode 100644 index a1aa0b3be..000000000 --- a/src/generated/resources/data/create/recipes/polished_limestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_limestone" - } - }, - "result": { - "item": "create:polished_limestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_limestone_wall_from_polished_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/polished_limestone_wall_from_polished_limestone_stonecutting.json deleted file mode 100644 index 891dd209b..000000000 --- a/src/generated/resources/data/create/recipes/polished_limestone_wall_from_polished_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_limestone" - }, - "result": "create:polished_limestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_scoria.json b/src/generated/resources/data/create/recipes/polished_scoria.json deleted file mode 100644 index 4ccbf5c05..000000000 --- a/src/generated/resources/data/create/recipes/polished_scoria.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "item": "create:scoria" - } - }, - "result": { - "item": "create:polished_scoria", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_scoria_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/polished_scoria_from_scoria_stonecutting.json deleted file mode 100644 index b8e1989cd..000000000 --- a/src/generated/resources/data/create/recipes/polished_scoria_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:polished_scoria", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_scoria_slab.json b/src/generated/resources/data/create/recipes/polished_scoria_slab.json deleted file mode 100644 index 7389bcd39..000000000 --- a/src/generated/resources/data/create/recipes/polished_scoria_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_scoria_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:polished_scoria" - } - }, - "result": { - "item": "create:polished_scoria_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_scoria_slab_from_polished_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/polished_scoria_slab_from_polished_scoria_stonecutting.json deleted file mode 100644 index 36f392063..000000000 --- a/src/generated/resources/data/create/recipes/polished_scoria_slab_from_polished_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_scoria" - }, - "result": "create:polished_scoria_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_scoria_stairs.json b/src/generated/resources/data/create/recipes/polished_scoria_stairs.json deleted file mode 100644 index ae07a26e5..000000000 --- a/src/generated/resources/data/create/recipes/polished_scoria_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_scoria_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_scoria" - } - }, - "result": { - "item": "create:polished_scoria_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_scoria_stairs_from_polished_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/polished_scoria_stairs_from_polished_scoria_stonecutting.json deleted file mode 100644 index fdb0ea128..000000000 --- a/src/generated/resources/data/create/recipes/polished_scoria_stairs_from_polished_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_scoria" - }, - "result": "create:polished_scoria_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_scoria_wall.json b/src/generated/resources/data/create/recipes/polished_scoria_wall.json deleted file mode 100644 index 7ec421c9c..000000000 --- a/src/generated/resources/data/create/recipes/polished_scoria_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_scoria" - } - }, - "result": { - "item": "create:polished_scoria_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_scoria_wall_from_polished_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/polished_scoria_wall_from_polished_scoria_stonecutting.json deleted file mode 100644 index 265352a9c..000000000 --- a/src/generated/resources/data/create/recipes/polished_scoria_wall_from_polished_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_scoria" - }, - "result": "create:polished_scoria_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_weathered_limestone.json b/src/generated/resources/data/create/recipes/polished_weathered_limestone.json deleted file mode 100644 index cd0a57df5..000000000 --- a/src/generated/resources/data/create/recipes/polished_weathered_limestone.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "##", - "##" - ], - "key": { - "#": { - "item": "create:weathered_limestone" - } - }, - "result": { - "item": "create:polished_weathered_limestone", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index ec13bc0d2..000000000 --- a/src/generated/resources/data/create/recipes/polished_weathered_limestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:polished_weathered_limestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_weathered_limestone_slab.json b/src/generated/resources/data/create/recipes/polished_weathered_limestone_slab.json deleted file mode 100644 index 621b568f6..000000000 --- a/src/generated/resources/data/create/recipes/polished_weathered_limestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_weathered_limestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:polished_weathered_limestone" - } - }, - "result": { - "item": "create:polished_weathered_limestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json deleted file mode 100644 index 07418cd84..000000000 --- a/src/generated/resources/data/create/recipes/polished_weathered_limestone_slab_from_polished_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_weathered_limestone" - }, - "result": "create:polished_weathered_limestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_weathered_limestone_stairs.json b/src/generated/resources/data/create/recipes/polished_weathered_limestone_stairs.json deleted file mode 100644 index bdb2add64..000000000 --- a/src/generated/resources/data/create/recipes/polished_weathered_limestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "polished_weathered_limestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_weathered_limestone" - } - }, - "result": { - "item": "create:polished_weathered_limestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json deleted file mode 100644 index 6c2af56cf..000000000 --- a/src/generated/resources/data/create/recipes/polished_weathered_limestone_stairs_from_polished_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_weathered_limestone" - }, - "result": "create:polished_weathered_limestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_weathered_limestone_wall.json b/src/generated/resources/data/create/recipes/polished_weathered_limestone_wall.json deleted file mode 100644 index ec9d9777d..000000000 --- a/src/generated/resources/data/create/recipes/polished_weathered_limestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:polished_weathered_limestone" - } - }, - "result": { - "item": "create:polished_weathered_limestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json deleted file mode 100644 index 44a6e986a..000000000 --- a/src/generated/resources/data/create/recipes/polished_weathered_limestone_wall_from_polished_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:polished_weathered_limestone" - }, - "result": "create:polished_weathered_limestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/brass_ingot.json b/src/generated/resources/data/create/recipes/pressing/brass_ingot.json deleted file mode 100644 index 65e8c94f2..000000000 --- a/src/generated/resources/data/create/recipes/pressing/brass_ingot.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:pressing", - "ingredients": [ - { - "tag": "forge:ingots/brass" - } - ], - "results": [ - { - "item": "create:brass_sheet" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/copper_ingot.json b/src/generated/resources/data/create/recipes/pressing/copper_ingot.json deleted file mode 100644 index 404bb276d..000000000 --- a/src/generated/resources/data/create/recipes/pressing/copper_ingot.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:pressing", - "ingredients": [ - { - "tag": "forge:ingots/copper" - } - ], - "results": [ - { - "item": "create:copper_sheet" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/gold_ingot.json b/src/generated/resources/data/create/recipes/pressing/gold_ingot.json deleted file mode 100644 index ff5c48800..000000000 --- a/src/generated/resources/data/create/recipes/pressing/gold_ingot.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:pressing", - "ingredients": [ - { - "tag": "forge:ingots/gold" - } - ], - "results": [ - { - "item": "create:golden_sheet" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/iron_ingot.json b/src/generated/resources/data/create/recipes/pressing/iron_ingot.json deleted file mode 100644 index 0bf57eb5f..000000000 --- a/src/generated/resources/data/create/recipes/pressing/iron_ingot.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:pressing", - "ingredients": [ - { - "tag": "forge:ingots/iron" - } - ], - "results": [ - { - "item": "create:iron_sheet" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/lapis_block.json b/src/generated/resources/data/create/recipes/pressing/lapis_block.json deleted file mode 100644 index 7551fecd2..000000000 --- a/src/generated/resources/data/create/recipes/pressing/lapis_block.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:pressing", - "ingredients": [ - { - "item": "minecraft:lapis_block" - } - ], - "results": [ - { - "item": "create:lapis_sheet" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/path.json b/src/generated/resources/data/create/recipes/pressing/path.json deleted file mode 100644 index b9a17c39f..000000000 --- a/src/generated/resources/data/create/recipes/pressing/path.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "create:pressing", - "ingredients": [ - [ - { - "item": "minecraft:grass_block" - }, - { - "item": "minecraft:dirt" - }, - { - "item": "minecraft:podzol" - } - ] - ], - "results": [ - { - "item": "minecraft:grass_path" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/pressing/sugar_cane.json b/src/generated/resources/data/create/recipes/pressing/sugar_cane.json deleted file mode 100644 index 4dc282598..000000000 --- a/src/generated/resources/data/create/recipes/pressing/sugar_cane.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:pressing", - "ingredients": [ - { - "item": "minecraft:sugar_cane" - } - ], - "results": [ - { - "item": "minecraft:paper" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/sandpaper_polishing/rose_quartz.json b/src/generated/resources/data/create/recipes/sandpaper_polishing/rose_quartz.json deleted file mode 100644 index 2b97eb1d7..000000000 --- a/src/generated/resources/data/create/recipes/sandpaper_polishing/rose_quartz.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:sandpaper_polishing", - "ingredients": [ - { - "item": "create:rose_quartz" - } - ], - "results": [ - { - "item": "create:polished_rose_quartz" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria.json b/src/generated/resources/data/create/recipes/scoria.json deleted file mode 100644 index d63cf40bf..000000000 --- a/src/generated/resources/data/create/recipes/scoria.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:scoria_cobblestone" - }, - "result": "create:scoria", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_bricks_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_bricks_from_scoria_stonecutting.json deleted file mode 100644 index 358295d78..000000000 --- a/src/generated/resources/data/create/recipes/scoria_bricks_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:scoria_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_bricks_slab.json b/src/generated/resources/data/create/recipes/scoria_bricks_slab.json deleted file mode 100644 index 9e68f1910..000000000 --- a/src/generated/resources/data/create/recipes/scoria_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "scoria_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:scoria_bricks" - } - }, - "result": { - "item": "create:scoria_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json deleted file mode 100644 index d5395121d..000000000 --- a/src/generated/resources/data/create/recipes/scoria_bricks_slab_from_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria_bricks" - }, - "result": "create:scoria_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_bricks_stairs.json b/src/generated/resources/data/create/recipes/scoria_bricks_stairs.json deleted file mode 100644 index 31e212097..000000000 --- a/src/generated/resources/data/create/recipes/scoria_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "scoria_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:scoria_bricks" - } - }, - "result": { - "item": "create:scoria_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_bricks_stairs_from_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_bricks_stairs_from_scoria_bricks_stonecutting.json deleted file mode 100644 index 614b6448a..000000000 --- a/src/generated/resources/data/create/recipes/scoria_bricks_stairs_from_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria_bricks" - }, - "result": "create:scoria_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_bricks_wall.json b/src/generated/resources/data/create/recipes/scoria_bricks_wall.json deleted file mode 100644 index ab922d0eb..000000000 --- a/src/generated/resources/data/create/recipes/scoria_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:scoria_bricks" - } - }, - "result": { - "item": "create:scoria_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_bricks_wall_from_scoria_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_bricks_wall_from_scoria_bricks_stonecutting.json deleted file mode 100644 index bbacfe08c..000000000 --- a/src/generated/resources/data/create/recipes/scoria_bricks_wall_from_scoria_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria_bricks" - }, - "result": "create:scoria_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_cobblestone_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_cobblestone_from_scoria_stonecutting.json deleted file mode 100644 index 6fa0e4ff7..000000000 --- a/src/generated/resources/data/create/recipes/scoria_cobblestone_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:scoria_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_cobblestone_slab.json b/src/generated/resources/data/create/recipes/scoria_cobblestone_slab.json deleted file mode 100644 index eb62bf310..000000000 --- a/src/generated/resources/data/create/recipes/scoria_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "scoria_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:scoria_cobblestone" - } - }, - "result": { - "item": "create:scoria_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting.json deleted file mode 100644 index 1c56f3657..000000000 --- a/src/generated/resources/data/create/recipes/scoria_cobblestone_slab_from_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria_cobblestone" - }, - "result": "create:scoria_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/scoria_cobblestone_stairs.json deleted file mode 100644 index bf51f3a81..000000000 --- a/src/generated/resources/data/create/recipes/scoria_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "scoria_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:scoria_cobblestone" - } - }, - "result": { - "item": "create:scoria_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json deleted file mode 100644 index 91db8870f..000000000 --- a/src/generated/resources/data/create/recipes/scoria_cobblestone_stairs_from_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria_cobblestone" - }, - "result": "create:scoria_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_cobblestone_wall.json b/src/generated/resources/data/create/recipes/scoria_cobblestone_wall.json deleted file mode 100644 index 9d60d2bc3..000000000 --- a/src/generated/resources/data/create/recipes/scoria_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:scoria_cobblestone" - } - }, - "result": { - "item": "create:scoria_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json deleted file mode 100644 index 739d23dc4..000000000 --- a/src/generated/resources/data/create/recipes/scoria_cobblestone_wall_from_scoria_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria_cobblestone" - }, - "result": "create:scoria_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_pillar.json b/src/generated/resources/data/create/recipes/scoria_pillar.json deleted file mode 100644 index c5a6a980f..000000000 --- a/src/generated/resources/data/create/recipes/scoria_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "create:scoria" - } - }, - "result": { - "item": "create:scoria_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/scoria_pillar_from_scoria_stonecutting.json b/src/generated/resources/data/create/recipes/scoria_pillar_from_scoria_stonecutting.json deleted file mode 100644 index 4e25cf1d8..000000000 --- a/src/generated/resources/data/create/recipes/scoria_pillar_from_scoria_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:scoria" - }, - "result": "create:scoria_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 5844e4fd8..000000000 --- a/src/generated/resources/data/create/recipes/smelting/aluminum_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_aluminum_ore" - }, - "result": "silents_mechanisms:aluminum_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/brass_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/smelting/brass_ingot_from_crushed.json deleted file mode 100644 index 900b9346a..000000000 --- a/src/generated/resources/data/create/recipes/smelting/brass_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_brass" - }, - "result": "create:brass_ingot", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/bread.json b/src/generated/resources/data/create/recipes/smelting/bread.json deleted file mode 100644 index e2b86a2cd..000000000 --- a/src/generated/resources/data/create/recipes/smelting/bread.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:dough" - }, - "result": "minecraft:bread", - "experience": 0.0, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/copper_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/smelting/copper_ingot_from_crushed.json deleted file mode 100644 index e6875b970..000000000 --- a/src/generated/resources/data/create/recipes/smelting/copper_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_copper_ore" - }, - "result": "create:copper_ingot", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/copper_ingot_from_ore.json b/src/generated/resources/data/create/recipes/smelting/copper_ingot_from_ore.json deleted file mode 100644 index 5ad042b91..000000000 --- a/src/generated/resources/data/create/recipes/smelting/copper_ingot_from_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "tag": "forge:ores/copper" - }, - "result": "create:copper_ingot", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/dolomite.json b/src/generated/resources/data/create/recipes/smelting/dolomite.json deleted file mode 100644 index f55cf70fa..000000000 --- a/src/generated/resources/data/create/recipes/smelting/dolomite.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "minecraft:diorite" - }, - "result": "create:dolomite", - "experience": 0.0, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/gabbro.json b/src/generated/resources/data/create/recipes/smelting/gabbro.json deleted file mode 100644 index ed24a25b2..000000000 --- a/src/generated/resources/data/create/recipes/smelting/gabbro.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "minecraft:granite" - }, - "result": "create:gabbro", - "experience": 0.0, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/glass_from_framed_glass.json b/src/generated/resources/data/create/recipes/smelting/glass_from_framed_glass.json deleted file mode 100644 index f6cb6353f..000000000 --- a/src/generated/resources/data/create/recipes/smelting/glass_from_framed_glass.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:framed_glass" - }, - "result": "minecraft:glass", - "experience": 0.0, - "cookingtime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/glass_from_horizontal_framed_glass.json b/src/generated/resources/data/create/recipes/smelting/glass_from_horizontal_framed_glass.json deleted file mode 100644 index 369112329..000000000 --- a/src/generated/resources/data/create/recipes/smelting/glass_from_horizontal_framed_glass.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:horizontal_framed_glass" - }, - "result": "minecraft:glass", - "experience": 0.0, - "cookingtime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/glass_from_tiled_glass.json b/src/generated/resources/data/create/recipes/smelting/glass_from_tiled_glass.json deleted file mode 100644 index 39fddc162..000000000 --- a/src/generated/resources/data/create/recipes/smelting/glass_from_tiled_glass.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:tiled_glass" - }, - "result": "minecraft:glass", - "experience": 0.0, - "cookingtime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/glass_from_vertical_framed_glass.json b/src/generated/resources/data/create/recipes/smelting/glass_from_vertical_framed_glass.json deleted file mode 100644 index a73177413..000000000 --- a/src/generated/resources/data/create/recipes/smelting/glass_from_vertical_framed_glass.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:vertical_framed_glass" - }, - "result": "minecraft:glass", - "experience": 0.0, - "cookingtime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/glass_pane_from_framed_glass_pane.json b/src/generated/resources/data/create/recipes/smelting/glass_pane_from_framed_glass_pane.json deleted file mode 100644 index 2ecc3af7e..000000000 --- a/src/generated/resources/data/create/recipes/smelting/glass_pane_from_framed_glass_pane.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:framed_glass_pane" - }, - "result": "minecraft:glass_pane", - "experience": 0.0, - "cookingtime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/glass_pane_from_horizontal_framed_glass_pane.json b/src/generated/resources/data/create/recipes/smelting/glass_pane_from_horizontal_framed_glass_pane.json deleted file mode 100644 index 797d2114e..000000000 --- a/src/generated/resources/data/create/recipes/smelting/glass_pane_from_horizontal_framed_glass_pane.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:horizontal_framed_glass_pane" - }, - "result": "minecraft:glass_pane", - "experience": 0.0, - "cookingtime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/glass_pane_from_tiled_glass_pane.json b/src/generated/resources/data/create/recipes/smelting/glass_pane_from_tiled_glass_pane.json deleted file mode 100644 index ea09f4499..000000000 --- a/src/generated/resources/data/create/recipes/smelting/glass_pane_from_tiled_glass_pane.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:tiled_glass_pane" - }, - "result": "minecraft:glass_pane", - "experience": 0.0, - "cookingtime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/glass_pane_from_vertical_framed_glass_pane.json b/src/generated/resources/data/create/recipes/smelting/glass_pane_from_vertical_framed_glass_pane.json deleted file mode 100644 index fa5b4cadb..000000000 --- a/src/generated/resources/data/create/recipes/smelting/glass_pane_from_vertical_framed_glass_pane.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:vertical_framed_glass_pane" - }, - "result": "minecraft:glass_pane", - "experience": 0.0, - "cookingtime": 50 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/gold_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/smelting/gold_ingot_from_crushed.json deleted file mode 100644 index 6bf7613bb..000000000 --- a/src/generated/resources/data/create/recipes/smelting/gold_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_gold_ore" - }, - "result": "minecraft:gold_ingot", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json deleted file mode 100644 index e76df0c7d..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_aluminum_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_aluminum_ore" - }, - "result": "immersiveengineering:ingot_aluminum", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json deleted file mode 100644 index c204213ef..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "immersiveengineering:ingot_lead", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_mekanism.json b/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_mekanism.json deleted file mode 100644 index 58622c15c..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_lead_compat_mekanism.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "mekanism:ingot_lead", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json deleted file mode 100644 index 1beebd355..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_nickel_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_nickel_ore" - }, - "result": "immersiveengineering:ingot_nickel", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_osmium_compat_mekanism.json b/src/generated/resources/data/create/recipes/smelting/ingot_osmium_compat_mekanism.json deleted file mode 100644 index 56f95d5f3..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_osmium_compat_mekanism.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_osmium_ore" - }, - "result": "mekanism:ingot_osmium", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json deleted file mode 100644 index 02570ae93..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_silver_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "immersiveengineering:ingot_silver", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_tin_compat_mekanism.json b/src/generated/resources/data/create/recipes/smelting/ingot_tin_compat_mekanism.json deleted file mode 100644 index 476cd4942..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_tin_compat_mekanism.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_tin_ore" - }, - "result": "mekanism:ingot_tin", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json b/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json deleted file mode 100644 index a036fdfa2..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_immersiveengineering.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_uranium_ore" - }, - "result": "immersiveengineering:ingot_uranium", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_mekanism.json b/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_mekanism.json deleted file mode 100644 index de12e07e3..000000000 --- a/src/generated/resources/data/create/recipes/smelting/ingot_uranium_compat_mekanism.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_uranium_ore" - }, - "result": "mekanism:ingot_uranium", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/iron_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/smelting/iron_ingot_from_crushed.json deleted file mode 100644 index f2d3dfc51..000000000 --- a/src/generated/resources/data/create/recipes/smelting/iron_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_iron_ore" - }, - "result": "minecraft:iron_ingot", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_eidolon.json b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_eidolon.json deleted file mode 100644 index 946db80e4..000000000 --- a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_eidolon.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "eidolon:lead_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "eidolon", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json deleted file mode 100644 index 389c5124f..000000000 --- a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "mysticalworld:lead_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json deleted file mode 100644 index de1333398..000000000 --- a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "silents_mechanisms:lead_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_thermal.json b/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_thermal.json deleted file mode 100644 index 0a6ead4f6..000000000 --- a/src/generated/resources/data/create/recipes/smelting/lead_ingot_compat_thermal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_lead_ore" - }, - "result": "thermal:lead_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/limestone.json b/src/generated/resources/data/create/recipes/smelting/limestone.json deleted file mode 100644 index c0628f433..000000000 --- a/src/generated/resources/data/create/recipes/smelting/limestone.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:limesand" - }, - "result": "create:limestone", - "experience": 0.0, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 536c7c08f..000000000 --- a/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_nickel_ore" - }, - "result": "silents_mechanisms:nickel_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_thermal.json b/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_thermal.json deleted file mode 100644 index 03c534ae3..000000000 --- a/src/generated/resources/data/create/recipes/smelting/nickel_ingot_compat_thermal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_nickel_ore" - }, - "result": "thermal:nickel_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 1261866bb..000000000 --- a/src/generated/resources/data/create/recipes/smelting/platinum_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_platinum_ore" - }, - "result": "silents_mechanisms:platinum_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json deleted file mode 100644 index 987ed26a8..000000000 --- a/src/generated/resources/data/create/recipes/smelting/quicksilver_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_quicksilver_ore" - }, - "result": "mysticalworld:quicksilver_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/scoria.json b/src/generated/resources/data/create/recipes/smelting/scoria.json deleted file mode 100644 index 7a6c3a7de..000000000 --- a/src/generated/resources/data/create/recipes/smelting/scoria.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "minecraft:soul_sand" - }, - "result": "create:scoria", - "experience": 0.0, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/scoria_from_natural.json b/src/generated/resources/data/create/recipes/smelting/scoria_from_natural.json deleted file mode 100644 index 922b7e043..000000000 --- a/src/generated/resources/data/create/recipes/smelting/scoria_from_natural.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:natural_scoria" - }, - "result": "create:scoria", - "experience": 0.0, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_iceandfire.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_iceandfire.json deleted file mode 100644 index 7a1d9cb3d..000000000 --- a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_iceandfire.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "iceandfire:silver_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "iceandfire", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json deleted file mode 100644 index e59c959e7..000000000 --- a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "mysticalworld:silver_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 6e2cfbce5..000000000 --- a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "silents_mechanisms:silver_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_thermal.json b/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_thermal.json deleted file mode 100644 index 6d5039376..000000000 --- a/src/generated/resources/data/create/recipes/smelting/silver_ingot_compat_thermal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_silver_ore" - }, - "result": "thermal:silver_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json deleted file mode 100644 index 2249b2127..000000000 --- a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_mysticalworld.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_tin_ore" - }, - "result": "mysticalworld:tin_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 3b8f7f777..000000000 --- a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_tin_ore" - }, - "result": "silents_mechanisms:tin_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_thermal.json b/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_thermal.json deleted file mode 100644 index e70aac300..000000000 --- a/src/generated/resources/data/create/recipes/smelting/tin_ingot_compat_thermal.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_tin_ore" - }, - "result": "thermal:tin_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json b/src/generated/resources/data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json deleted file mode 100644 index 3084e8b05..000000000 --- a/src/generated/resources/data/create/recipes/smelting/uranium_ingot_compat_silents_mechanisms.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_uranium_ore" - }, - "result": "silents_mechanisms:uranium_ingot", - "experience": 0.1, - "cookingtime": 200, - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/zinc_ingot_from_crushed.json b/src/generated/resources/data/create/recipes/smelting/zinc_ingot_from_crushed.json deleted file mode 100644 index 5ccc6df6e..000000000 --- a/src/generated/resources/data/create/recipes/smelting/zinc_ingot_from_crushed.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:crushed_zinc_ore" - }, - "result": "create:zinc_ingot", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smelting/zinc_ingot_from_ore.json b/src/generated/resources/data/create/recipes/smelting/zinc_ingot_from_ore.json deleted file mode 100644 index dd6596a2d..000000000 --- a/src/generated/resources/data/create/recipes/smelting/zinc_ingot_from_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "tag": "forge:ores/zinc" - }, - "result": "create:zinc_ingot", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/smoking/bread.json b/src/generated/resources/data/create/recipes/smoking/bread.json deleted file mode 100644 index e57547195..000000000 --- a/src/generated/resources/data/create/recipes/smoking/bread.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smoking", - "ingredient": { - "item": "create:dough" - }, - "result": "minecraft:bread", - "experience": 0.0, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/black_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/black_concrete_powder.json deleted file mode 100644 index 8d5f5ff48..000000000 --- a/src/generated/resources/data/create/recipes/splashing/black_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:black_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:black_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/blue_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/blue_concrete_powder.json deleted file mode 100644 index 99a659f47..000000000 --- a/src/generated/resources/data/create/recipes/splashing/blue_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:blue_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:blue_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/brown_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/brown_concrete_powder.json deleted file mode 100644 index c4e4c6d70..000000000 --- a/src/generated/resources/data/create/recipes/splashing/brown_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:brown_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:brown_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/crushed_brass.json b/src/generated/resources/data/create/recipes/splashing/crushed_brass.json deleted file mode 100644 index 3f24c6c85..000000000 --- a/src/generated/resources/data/create/recipes/splashing/crushed_brass.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_brass" - } - ], - "results": [ - { - "item": "create:brass_nugget", - "count": 10 - }, - { - "item": "create:brass_nugget", - "count": 5, - "chance": 0.5 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/crushed_copper_ore.json b/src/generated/resources/data/create/recipes/splashing/crushed_copper_ore.json deleted file mode 100644 index 070f8ea77..000000000 --- a/src/generated/resources/data/create/recipes/splashing/crushed_copper_ore.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_copper_ore" - } - ], - "results": [ - { - "item": "create:copper_nugget", - "count": 10 - }, - { - "item": "create:copper_nugget", - "count": 5, - "chance": 0.5 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/crushed_gold_ore.json b/src/generated/resources/data/create/recipes/splashing/crushed_gold_ore.json deleted file mode 100644 index d2791a774..000000000 --- a/src/generated/resources/data/create/recipes/splashing/crushed_gold_ore.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_gold_ore" - } - ], - "results": [ - { - "item": "minecraft:gold_nugget", - "count": 10 - }, - { - "item": "minecraft:gold_nugget", - "count": 5, - "chance": 0.5 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/crushed_iron_ore.json b/src/generated/resources/data/create/recipes/splashing/crushed_iron_ore.json deleted file mode 100644 index 7a9e70631..000000000 --- a/src/generated/resources/data/create/recipes/splashing/crushed_iron_ore.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_iron_ore" - } - ], - "results": [ - { - "item": "minecraft:iron_nugget", - "count": 10 - }, - { - "item": "minecraft:iron_nugget", - "count": 5, - "chance": 0.5 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/crushed_zinc_ore.json b/src/generated/resources/data/create/recipes/splashing/crushed_zinc_ore.json deleted file mode 100644 index 5796f6834..000000000 --- a/src/generated/resources/data/create/recipes/splashing/crushed_zinc_ore.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_zinc_ore" - } - ], - "results": [ - { - "item": "create:zinc_nugget", - "count": 10 - }, - { - "item": "create:zinc_nugget", - "count": 5, - "chance": 0.5 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/cyan_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/cyan_concrete_powder.json deleted file mode 100644 index e98f3d894..000000000 --- a/src/generated/resources/data/create/recipes/splashing/cyan_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:cyan_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:cyan_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/eidolon/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/eidolon/crushed_lead_ore.json deleted file mode 100644 index 9d5fdee5d..000000000 --- a/src/generated/resources/data/create/recipes/splashing/eidolon/crushed_lead_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_lead_ore" - } - ], - "results": [ - { - "item": "eidolon:lead_nugget", - "count": 10 - }, - { - "item": "eidolon:lead_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "eidolon", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/gravel.json b/src/generated/resources/data/create/recipes/splashing/gravel.json deleted file mode 100644 index 602fbd3f6..000000000 --- a/src/generated/resources/data/create/recipes/splashing/gravel.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:gravel" - } - ], - "results": [ - { - "item": "minecraft:flint", - "chance": 0.25 - }, - { - "item": "minecraft:iron_nugget", - "chance": 0.125 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/gray_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/gray_concrete_powder.json deleted file mode 100644 index 0985ce78d..000000000 --- a/src/generated/resources/data/create/recipes/splashing/gray_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:gray_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:gray_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/green_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/green_concrete_powder.json deleted file mode 100644 index a45b2eae7..000000000 --- a/src/generated/resources/data/create/recipes/splashing/green_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:green_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:green_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/ice.json b/src/generated/resources/data/create/recipes/splashing/ice.json deleted file mode 100644 index 52d0b4a39..000000000 --- a/src/generated/resources/data/create/recipes/splashing/ice.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:ice" - } - ], - "results": [ - { - "item": "minecraft:packed_ice" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/iceandfire/crushed_silver_ore.json b/src/generated/resources/data/create/recipes/splashing/iceandfire/crushed_silver_ore.json deleted file mode 100644 index 8e14e236a..000000000 --- a/src/generated/resources/data/create/recipes/splashing/iceandfire/crushed_silver_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_silver_ore" - } - ], - "results": [ - { - "item": "iceandfire:silver_nugget", - "count": 10 - }, - { - "item": "iceandfire:silver_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "iceandfire", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json deleted file mode 100644 index e88525be6..000000000 --- a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_aluminum_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_aluminum_ore" - } - ], - "results": [ - { - "item": "immersiveengineering:nugget_aluminum", - "count": 10 - }, - { - "item": "immersiveengineering:nugget_aluminum", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json deleted file mode 100644 index 71bcde052..000000000 --- a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_lead_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_lead_ore" - } - ], - "results": [ - { - "item": "immersiveengineering:nugget_lead", - "count": 10 - }, - { - "item": "immersiveengineering:nugget_lead", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json deleted file mode 100644 index 03d9eaa3e..000000000 --- a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_nickel_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_nickel_ore" - } - ], - "results": [ - { - "item": "immersiveengineering:nugget_nickel", - "count": 10 - }, - { - "item": "immersiveengineering:nugget_nickel", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json deleted file mode 100644 index 5b24d6a99..000000000 --- a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_silver_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_silver_ore" - } - ], - "results": [ - { - "item": "immersiveengineering:nugget_silver", - "count": 10 - }, - { - "item": "immersiveengineering:nugget_silver", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json b/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json deleted file mode 100644 index 8407663b3..000000000 --- a/src/generated/resources/data/create/recipes/splashing/immersiveengineering/crushed_uranium_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_uranium_ore" - } - ], - "results": [ - { - "item": "immersiveengineering:nugget_uranium", - "count": 10 - }, - { - "item": "immersiveengineering:nugget_uranium", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "immersiveengineering", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/light_blue_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/light_blue_concrete_powder.json deleted file mode 100644 index 12399826b..000000000 --- a/src/generated/resources/data/create/recipes/splashing/light_blue_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:light_blue_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:light_blue_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/light_gray_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/light_gray_concrete_powder.json deleted file mode 100644 index 91e6a801a..000000000 --- a/src/generated/resources/data/create/recipes/splashing/light_gray_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:light_gray_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:light_gray_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/lime_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/lime_concrete_powder.json deleted file mode 100644 index 6e3ec7eb5..000000000 --- a/src/generated/resources/data/create/recipes/splashing/lime_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:lime_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:lime_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/limestone.json b/src/generated/resources/data/create/recipes/splashing/limestone.json deleted file mode 100644 index 07219c334..000000000 --- a/src/generated/resources/data/create/recipes/splashing/limestone.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:limestone" - } - ], - "results": [ - { - "item": "create:weathered_limestone" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/magenta_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/magenta_concrete_powder.json deleted file mode 100644 index 942a187e9..000000000 --- a/src/generated/resources/data/create/recipes/splashing/magenta_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:magenta_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:magenta_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/magma_block.json b/src/generated/resources/data/create/recipes/splashing/magma_block.json deleted file mode 100644 index 94ed7270a..000000000 --- a/src/generated/resources/data/create/recipes/splashing/magma_block.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:magma_block" - } - ], - "results": [ - { - "item": "minecraft:obsidian" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_lead_ore.json deleted file mode 100644 index 458333ed6..000000000 --- a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_lead_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_lead_ore" - } - ], - "results": [ - { - "item": "mekanism:nugget_lead", - "count": 10 - }, - { - "item": "mekanism:nugget_lead", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_osmium_ore.json b/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_osmium_ore.json deleted file mode 100644 index b05c11800..000000000 --- a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_osmium_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_osmium_ore" - } - ], - "results": [ - { - "item": "mekanism:nugget_osmium", - "count": 10 - }, - { - "item": "mekanism:nugget_osmium", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_tin_ore.json b/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_tin_ore.json deleted file mode 100644 index 21f9b3556..000000000 --- a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_tin_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_tin_ore" - } - ], - "results": [ - { - "item": "mekanism:nugget_tin", - "count": 10 - }, - { - "item": "mekanism:nugget_tin", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_uranium_ore.json b/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_uranium_ore.json deleted file mode 100644 index 50c5123cc..000000000 --- a/src/generated/resources/data/create/recipes/splashing/mekanism/crushed_uranium_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_uranium_ore" - } - ], - "results": [ - { - "item": "mekanism:nugget_uranium", - "count": 10 - }, - { - "item": "mekanism:nugget_uranium", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "mekanism", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json deleted file mode 100644 index 3361263fd..000000000 --- a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_lead_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_lead_ore" - } - ], - "results": [ - { - "item": "mysticalworld:lead_nugget", - "count": 10 - }, - { - "item": "mysticalworld:lead_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json deleted file mode 100644 index 817c1636d..000000000 --- a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_quicksilver_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_quicksilver_ore" - } - ], - "results": [ - { - "item": "mysticalworld:quicksilver_nugget", - "count": 10 - }, - { - "item": "mysticalworld:quicksilver_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json deleted file mode 100644 index 6f08f1cf9..000000000 --- a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_silver_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_silver_ore" - } - ], - "results": [ - { - "item": "mysticalworld:silver_nugget", - "count": 10 - }, - { - "item": "mysticalworld:silver_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json b/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json deleted file mode 100644 index d2b63a94f..000000000 --- a/src/generated/resources/data/create/recipes/splashing/mysticalworld/crushed_tin_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_tin_ore" - } - ], - "results": [ - { - "item": "mysticalworld:tin_nugget", - "count": 10 - }, - { - "item": "mysticalworld:tin_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "mysticalworld", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/orange_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/orange_concrete_powder.json deleted file mode 100644 index b297de66b..000000000 --- a/src/generated/resources/data/create/recipes/splashing/orange_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:orange_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:orange_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/pink_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/pink_concrete_powder.json deleted file mode 100644 index 068f82a40..000000000 --- a/src/generated/resources/data/create/recipes/splashing/pink_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:pink_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:pink_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/purple_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/purple_concrete_powder.json deleted file mode 100644 index cbfdfda1e..000000000 --- a/src/generated/resources/data/create/recipes/splashing/purple_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:purple_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:purple_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/red_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/red_concrete_powder.json deleted file mode 100644 index e9564f59f..000000000 --- a/src/generated/resources/data/create/recipes/splashing/red_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:red_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:red_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/red_sand.json b/src/generated/resources/data/create/recipes/splashing/red_sand.json deleted file mode 100644 index 33cf956da..000000000 --- a/src/generated/resources/data/create/recipes/splashing/red_sand.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:red_sand" - } - ], - "results": [ - { - "item": "minecraft:gold_nugget", - "count": 3, - "chance": 0.125 - }, - { - "item": "minecraft:dead_bush", - "chance": 0.05 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/sand.json b/src/generated/resources/data/create/recipes/splashing/sand.json deleted file mode 100644 index 6869d9d25..000000000 --- a/src/generated/resources/data/create/recipes/splashing/sand.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:sand" - } - ], - "results": [ - { - "item": "minecraft:clay_ball", - "chance": 0.25 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json deleted file mode 100644 index ebc8ed9a3..000000000 --- a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_aluminum_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_aluminum_ore" - } - ], - "results": [ - { - "item": "silents_mechanisms:aluminum_nugget", - "count": 10 - }, - { - "item": "silents_mechanisms:aluminum_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json deleted file mode 100644 index 5da948065..000000000 --- a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_lead_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_lead_ore" - } - ], - "results": [ - { - "item": "silents_mechanisms:lead_nugget", - "count": 10 - }, - { - "item": "silents_mechanisms:lead_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json deleted file mode 100644 index 9015c0579..000000000 --- a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_nickel_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_nickel_ore" - } - ], - "results": [ - { - "item": "silents_mechanisms:nickel_nugget", - "count": 10 - }, - { - "item": "silents_mechanisms:nickel_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json deleted file mode 100644 index 4a463a10a..000000000 --- a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_platinum_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_platinum_ore" - } - ], - "results": [ - { - "item": "silents_mechanisms:platinum_nugget", - "count": 10 - }, - { - "item": "silents_mechanisms:platinum_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json deleted file mode 100644 index 77d1b5b24..000000000 --- a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_silver_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_silver_ore" - } - ], - "results": [ - { - "item": "silents_mechanisms:silver_nugget", - "count": 10 - }, - { - "item": "silents_mechanisms:silver_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json deleted file mode 100644 index 5ebf55141..000000000 --- a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_tin_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_tin_ore" - } - ], - "results": [ - { - "item": "silents_mechanisms:tin_nugget", - "count": 10 - }, - { - "item": "silents_mechanisms:tin_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json b/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json deleted file mode 100644 index 5da13a4ac..000000000 --- a/src/generated/resources/data/create/recipes/splashing/silents_mechanisms/crushed_uranium_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_uranium_ore" - } - ], - "results": [ - { - "item": "silents_mechanisms:uranium_nugget", - "count": 10 - }, - { - "item": "silents_mechanisms:uranium_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "silents_mechanisms", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/soul_sand.json b/src/generated/resources/data/create/recipes/splashing/soul_sand.json deleted file mode 100644 index 21b7a45a6..000000000 --- a/src/generated/resources/data/create/recipes/splashing/soul_sand.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:soul_sand" - } - ], - "results": [ - { - "item": "minecraft:quartz", - "count": 4, - "chance": 0.125 - }, - { - "item": "minecraft:gold_nugget", - "chance": 0.02 - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/stained_glass.json b/src/generated/resources/data/create/recipes/splashing/stained_glass.json deleted file mode 100644 index 8adea4a15..000000000 --- a/src/generated/resources/data/create/recipes/splashing/stained_glass.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "tag": "forge:stained_glass" - } - ], - "results": [ - { - "item": "minecraft:glass" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/stained_glass_pane.json b/src/generated/resources/data/create/recipes/splashing/stained_glass_pane.json deleted file mode 100644 index 456d1df38..000000000 --- a/src/generated/resources/data/create/recipes/splashing/stained_glass_pane.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "tag": "forge:stained_glass_panes" - } - ], - "results": [ - { - "item": "minecraft:glass_pane" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/thermal/crushed_lead_ore.json b/src/generated/resources/data/create/recipes/splashing/thermal/crushed_lead_ore.json deleted file mode 100644 index 9c32c0d7f..000000000 --- a/src/generated/resources/data/create/recipes/splashing/thermal/crushed_lead_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_lead_ore" - } - ], - "results": [ - { - "item": "thermal:lead_nugget", - "count": 10 - }, - { - "item": "thermal:lead_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/thermal/crushed_nickel_ore.json b/src/generated/resources/data/create/recipes/splashing/thermal/crushed_nickel_ore.json deleted file mode 100644 index 294901799..000000000 --- a/src/generated/resources/data/create/recipes/splashing/thermal/crushed_nickel_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_nickel_ore" - } - ], - "results": [ - { - "item": "thermal:nickel_nugget", - "count": 10 - }, - { - "item": "thermal:nickel_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/thermal/crushed_silver_ore.json b/src/generated/resources/data/create/recipes/splashing/thermal/crushed_silver_ore.json deleted file mode 100644 index d62f2b9d3..000000000 --- a/src/generated/resources/data/create/recipes/splashing/thermal/crushed_silver_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_silver_ore" - } - ], - "results": [ - { - "item": "thermal:silver_nugget", - "count": 10 - }, - { - "item": "thermal:silver_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/thermal/crushed_tin_ore.json b/src/generated/resources/data/create/recipes/splashing/thermal/crushed_tin_ore.json deleted file mode 100644 index 1040fd5dc..000000000 --- a/src/generated/resources/data/create/recipes/splashing/thermal/crushed_tin_ore.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:crushed_tin_ore" - } - ], - "results": [ - { - "item": "thermal:tin_nugget", - "count": 10 - }, - { - "item": "thermal:tin_nugget", - "count": 5, - "chance": 0.5 - } - ], - "conditions": [ - { - "modid": "thermal", - "type": "forge:mod_loaded" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/wheat_flour.json b/src/generated/resources/data/create/recipes/splashing/wheat_flour.json deleted file mode 100644 index 3c9a2baa3..000000000 --- a/src/generated/resources/data/create/recipes/splashing/wheat_flour.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "create:wheat_flour" - } - ], - "results": [ - { - "item": "create:dough" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/white_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/white_concrete_powder.json deleted file mode 100644 index eef7261c7..000000000 --- a/src/generated/resources/data/create/recipes/splashing/white_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:white_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:white_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/wool.json b/src/generated/resources/data/create/recipes/splashing/wool.json deleted file mode 100644 index 9d859392f..000000000 --- a/src/generated/resources/data/create/recipes/splashing/wool.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "tag": "minecraft:wool" - } - ], - "results": [ - { - "item": "minecraft:white_wool" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/splashing/yellow_concrete_powder.json b/src/generated/resources/data/create/recipes/splashing/yellow_concrete_powder.json deleted file mode 100644 index 2e319a600..000000000 --- a/src/generated/resources/data/create/recipes/splashing/yellow_concrete_powder.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "create:splashing", - "ingredients": [ - { - "item": "minecraft:yellow_concrete_powder" - } - ], - "results": [ - { - "item": "minecraft:yellow_concrete" - } - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/spruce_window.json b/src/generated/resources/data/create/recipes/spruce_window.json deleted file mode 100644 index 617d75de8..000000000 --- a/src/generated/resources/data/create/recipes/spruce_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "minecraft:spruce_planks" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:spruce_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/spruce_window_pane.json b/src/generated/resources/data/create/recipes/spruce_window_pane.json deleted file mode 100644 index db4eb0dc8..000000000 --- a/src/generated/resources/data/create/recipes/spruce_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:spruce_window" - } - }, - "result": { - "item": "create:spruce_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/tiled_glass_from_glass_colorless_stonecutting.json b/src/generated/resources/data/create/recipes/tiled_glass_from_glass_colorless_stonecutting.json deleted file mode 100644 index e9bf1a15d..000000000 --- a/src/generated/resources/data/create/recipes/tiled_glass_from_glass_colorless_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "tag": "forge:glass/colorless" - }, - "result": "create:tiled_glass", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/tiled_glass_pane.json b/src/generated/resources/data/create/recipes/tiled_glass_pane.json deleted file mode 100644 index 58e60703b..000000000 --- a/src/generated/resources/data/create/recipes/tiled_glass_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:tiled_glass" - } - }, - "result": { - "item": "create:tiled_glass_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/vertical_framed_glass_from_glass_colorless_stonecutting.json b/src/generated/resources/data/create/recipes/vertical_framed_glass_from_glass_colorless_stonecutting.json deleted file mode 100644 index a71a45ce0..000000000 --- a/src/generated/resources/data/create/recipes/vertical_framed_glass_from_glass_colorless_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "tag": "forge:glass/colorless" - }, - "result": "create:vertical_framed_glass", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/vertical_framed_glass_pane.json b/src/generated/resources/data/create/recipes/vertical_framed_glass_pane.json deleted file mode 100644 index aec08fee4..000000000 --- a/src/generated/resources/data/create/recipes/vertical_framed_glass_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:vertical_framed_glass" - } - }, - "result": { - "item": "create:vertical_framed_glass_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/warped_window.json b/src/generated/resources/data/create/recipes/warped_window.json deleted file mode 100644 index 9661b10e5..000000000 --- a/src/generated/resources/data/create/recipes/warped_window.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - " # ", - "#X#" - ], - "key": { - "#": { - "item": "minecraft:warped_planks" - }, - "X": { - "tag": "forge:glass/colorless" - } - }, - "result": { - "item": "create:warped_window", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/warped_window_pane.json b/src/generated/resources/data/create/recipes/warped_window_pane.json deleted file mode 100644 index 31b951092..000000000 --- a/src/generated/resources/data/create/recipes/warped_window_pane.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "###", - "###" - ], - "key": { - "#": { - "item": "create:warped_window" - } - }, - "result": { - "item": "create:warped_window_pane", - "count": 16 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone.json b/src/generated/resources/data/create/recipes/weathered_limestone.json deleted file mode 100644 index 93ce442c8..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "create:weathered_limestone_cobblestone" - }, - "result": "create:weathered_limestone", - "experience": 0.1, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json deleted file mode 100644 index ab6c5c16e..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:weathered_limestone_bricks", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_slab.json b/src/generated/resources/data/create/recipes/weathered_limestone_bricks_slab.json deleted file mode 100644 index 2a204f054..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "weathered_limestone_bricks_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:weathered_limestone_bricks" - } - }, - "result": { - "item": "create:weathered_limestone_bricks_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index 2019ce0bf..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_slab_from_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone_bricks" - }, - "result": "create:weathered_limestone_bricks_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_stairs.json b/src/generated/resources/data/create/recipes/weathered_limestone_bricks_stairs.json deleted file mode 100644 index e0aec1e41..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "weathered_limestone_bricks_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:weathered_limestone_bricks" - } - }, - "result": { - "item": "create:weathered_limestone_bricks_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index a3f51b00e..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_stairs_from_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone_bricks" - }, - "result": "create:weathered_limestone_bricks_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_wall.json b/src/generated/resources/data/create/recipes/weathered_limestone_bricks_wall.json deleted file mode 100644 index ef7e78a17..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:weathered_limestone_bricks" - } - }, - "result": { - "item": "create:weathered_limestone_bricks_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting.json deleted file mode 100644 index f7dce909d..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_bricks_wall_from_weathered_limestone_bricks_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone_bricks" - }, - "result": "create:weathered_limestone_bricks_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_from_weathered_limestone_stonecutting.json deleted file mode 100644 index b2e057551..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:weathered_limestone_cobblestone", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_slab.json b/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_slab.json deleted file mode 100644 index fe04172bc..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_slab.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "weathered_limestone_cobblestone_slab", - "pattern": [ - "XXX" - ], - "key": { - "X": { - "item": "create:weathered_limestone_cobblestone" - } - }, - "result": { - "item": "create:weathered_limestone_cobblestone_slab", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting.json deleted file mode 100644 index d0d8d39af..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_slab_from_weathered_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone_cobblestone" - }, - "result": "create:weathered_limestone_cobblestone_slab", - "count": 2 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_stairs.json b/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_stairs.json deleted file mode 100644 index 41b5b4a49..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_stairs.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "group": "weathered_limestone_cobblestone_stairs", - "pattern": [ - "X ", - "XX ", - "XXX" - ], - "key": { - "X": { - "item": "create:weathered_limestone_cobblestone" - } - }, - "result": { - "item": "create:weathered_limestone_cobblestone_stairs", - "count": 4 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json deleted file mode 100644 index e8c273bf6..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_stairs_from_weathered_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone_cobblestone" - }, - "result": "create:weathered_limestone_cobblestone_stairs", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_wall.json b/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_wall.json deleted file mode 100644 index 0004f9c1d..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_wall.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XXX", - "XXX" - ], - "key": { - "X": { - "item": "create:weathered_limestone_cobblestone" - } - }, - "result": { - "item": "create:weathered_limestone_cobblestone_wall", - "count": 6 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json deleted file mode 100644 index 4d2b825d5..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_cobblestone_wall_from_weathered_limestone_cobblestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone_cobblestone" - }, - "result": "create:weathered_limestone_cobblestone_wall", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_pillar.json b/src/generated/resources/data/create/recipes/weathered_limestone_pillar.json deleted file mode 100644 index d118d6f59..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_pillar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "#", - "#" - ], - "key": { - "#": { - "item": "create:weathered_limestone" - } - }, - "result": { - "item": "create:weathered_limestone_pillar", - "count": 2 - } -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json b/src/generated/resources/data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json deleted file mode 100644 index 175624491..000000000 --- a/src/generated/resources/data/create/recipes/weathered_limestone_pillar_from_weathered_limestone_stonecutting.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "type": "minecraft:stonecutting", - "ingredient": { - "item": "create:weathered_limestone" - }, - "result": "create:weathered_limestone_pillar", - "count": 1 -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/brittle.json b/src/generated/resources/data/create/tags/blocks/brittle.json deleted file mode 100644 index 7970c3bf9..000000000 --- a/src/generated/resources/data/create/tags/blocks/brittle.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "replace": false, - "values": [ - "create:nozzle", - "create:hand_crank", - "create:copper_valve_handle", - "create:white_valve_handle", - "create:orange_valve_handle", - "create:magenta_valve_handle", - "create:light_blue_valve_handle", - "create:yellow_valve_handle", - "create:lime_valve_handle", - "create:pink_valve_handle", - "create:gray_valve_handle", - "create:light_gray_valve_handle", - "create:cyan_valve_handle", - "create:purple_valve_handle", - "create:blue_valve_handle", - "create:brown_valve_handle", - "create:green_valve_handle", - "create:red_valve_handle", - "create:black_valve_handle", - "create:rope", - "create:pulley_magnet", - "create:furnace_engine", - "create:redstone_link", - "#minecraft:doors", - "#minecraft:beds", - "minecraft:flower_pot", - "minecraft:bell", - "minecraft:cocoa" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/fan_heaters.json b/src/generated/resources/data/create/tags/blocks/fan_heaters.json deleted file mode 100644 index b23883a0d..000000000 --- a/src/generated/resources/data/create/tags/blocks/fan_heaters.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "create:blaze_burner", - "create:lit_blaze_burner", - "minecraft:magma_block", - "minecraft:campfire", - "minecraft:lava", - "minecraft:fire", - "minecraft:soul_fire", - "minecraft:soul_campfire" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/fan_transparent.json b/src/generated/resources/data/create/tags/blocks/fan_transparent.json deleted file mode 100644 index 5e6279801..000000000 --- a/src/generated/resources/data/create/tags/blocks/fan_transparent.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "create:blaze_burner", - "create:lit_blaze_burner", - "create:sail_frame", - "#minecraft:fences", - "minecraft:iron_bars" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/non_movable.json b/src/generated/resources/data/create/tags/blocks/non_movable.json deleted file mode 100644 index 5e8aecc98..000000000 --- a/src/generated/resources/data/create/tags/blocks/non_movable.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "replace": false, - "values": [] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/safe_nbt.json b/src/generated/resources/data/create/tags/blocks/safe_nbt.json deleted file mode 100644 index d834c9f41..000000000 --- a/src/generated/resources/data/create/tags/blocks/safe_nbt.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "replace": false, - "values": [ - "create:creative_motor", - "create:creative_fluid_tank", - "create:mechanical_piston", - "create:sticky_mechanical_piston", - "create:windmill_bearing", - "create:mechanical_bearing", - "create:clockwork_bearing", - "create:rope_pulley", - "create:cart_assembler", - "create:linear_chassis", - "create:secondary_linear_chassis", - "create:radial_chassis", - "create:sequenced_gearshift", - "create:rotation_speed_controller", - "create:andesite_funnel", - "create:andesite_belt_funnel", - "create:brass_funnel", - "create:brass_belt_funnel", - "create:creative_crate", - "create:redstone_link", - "create:analog_lever", - "create:adjustable_repeater", - "create:adjustable_pulse_repeater", - "#minecraft:signs" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/sails.json b/src/generated/resources/data/create/tags/blocks/sails.json deleted file mode 100644 index 7dcca6319..000000000 --- a/src/generated/resources/data/create/tags/blocks/sails.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "replace": false, - "values": [ - "create:orange_sail", - "create:magenta_sail", - "create:light_blue_sail", - "create:yellow_sail", - "create:lime_sail", - "create:pink_sail", - "create:gray_sail", - "create:light_gray_sail", - "create:cyan_sail", - "create:purple_sail", - "create:blue_sail", - "create:brown_sail", - "create:green_sail", - "create:red_sail", - "create:black_sail" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/seats.json b/src/generated/resources/data/create/tags/blocks/seats.json deleted file mode 100644 index cbf0642b6..000000000 --- a/src/generated/resources/data/create/tags/blocks/seats.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "replace": false, - "values": [ - "create:white_seat", - "create:orange_seat", - "create:magenta_seat", - "create:light_blue_seat", - "create:yellow_seat", - "create:lime_seat", - "create:pink_seat", - "create:gray_seat", - "create:light_gray_seat", - "create:cyan_seat", - "create:purple_seat", - "create:blue_seat", - "create:brown_seat", - "create:green_seat", - "create:red_seat", - "create:black_seat" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/valve_handles.json b/src/generated/resources/data/create/tags/blocks/valve_handles.json deleted file mode 100644 index b86fee3d4..000000000 --- a/src/generated/resources/data/create/tags/blocks/valve_handles.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_valve_handle", - "create:white_valve_handle", - "create:orange_valve_handle", - "create:magenta_valve_handle", - "create:light_blue_valve_handle", - "create:yellow_valve_handle", - "create:lime_valve_handle", - "create:pink_valve_handle", - "create:gray_valve_handle", - "create:light_gray_valve_handle", - "create:cyan_valve_handle", - "create:purple_valve_handle", - "create:blue_valve_handle", - "create:brown_valve_handle", - "create:green_valve_handle", - "create:red_valve_handle", - "create:black_valve_handle" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/windmill_sails.json b/src/generated/resources/data/create/tags/blocks/windmill_sails.json deleted file mode 100644 index d4296265f..000000000 --- a/src/generated/resources/data/create/tags/blocks/windmill_sails.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "replace": false, - "values": [ - "create:sail_frame", - "create:white_sail", - "create:orange_sail", - "create:magenta_sail", - "create:light_blue_sail", - "create:yellow_sail", - "create:lime_sail", - "create:pink_sail", - "create:gray_sail", - "create:light_gray_sail", - "create:cyan_sail", - "create:purple_sail", - "create:blue_sail", - "create:brown_sail", - "create:green_sail", - "create:red_sail", - "create:black_sail", - "#minecraft:wool" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/blocks/windowable.json b/src/generated/resources/data/create/tags/blocks/windowable.json deleted file mode 100644 index 5e8aecc98..000000000 --- a/src/generated/resources/data/create/tags/blocks/windowable.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "replace": false, - "values": [] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/create_ingots.json b/src/generated/resources/data/create/tags/items/create_ingots.json deleted file mode 100644 index c407a2e9a..000000000 --- a/src/generated/resources/data/create/tags/items/create_ingots.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_ingot", - "create:zinc_ingot", - "create:brass_ingot" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/crushed_ores.json b/src/generated/resources/data/create/tags/items/crushed_ores.json deleted file mode 100644 index 69cc6ed10..000000000 --- a/src/generated/resources/data/create/tags/items/crushed_ores.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "replace": false, - "values": [ - "create:crushed_iron_ore", - "create:crushed_gold_ore", - "create:crushed_copper_ore", - "create:crushed_zinc_ore", - "create:crushed_brass", - "create:crushed_osmium_ore", - "create:crushed_platinum_ore", - "create:crushed_silver_ore", - "create:crushed_tin_ore", - "create:crushed_lead_ore", - "create:crushed_quicksilver_ore", - "create:crushed_aluminum_ore", - "create:crushed_uranium_ore", - "create:crushed_nickel_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/seats.json b/src/generated/resources/data/create/tags/items/seats.json deleted file mode 100644 index cbf0642b6..000000000 --- a/src/generated/resources/data/create/tags/items/seats.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "replace": false, - "values": [ - "create:white_seat", - "create:orange_seat", - "create:magenta_seat", - "create:light_blue_seat", - "create:yellow_seat", - "create:lime_seat", - "create:pink_seat", - "create:gray_seat", - "create:light_gray_seat", - "create:cyan_seat", - "create:purple_seat", - "create:blue_seat", - "create:brown_seat", - "create:green_seat", - "create:red_seat", - "create:black_seat" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/upright_on_belt.json b/src/generated/resources/data/create/tags/items/upright_on_belt.json deleted file mode 100644 index 0aa3286d8..000000000 --- a/src/generated/resources/data/create/tags/items/upright_on_belt.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replace": false, - "values": [ - "create:blaze_cake_base", - "create:blaze_cake", - "create:builders_tea", - "minecraft:glass_bottle", - "minecraft:potion", - "minecraft:splash_potion", - "minecraft:lingering_potion", - "minecraft:honey_bottle" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/tags/items/valve_handles.json b/src/generated/resources/data/create/tags/items/valve_handles.json deleted file mode 100644 index b86fee3d4..000000000 --- a/src/generated/resources/data/create/tags/items/valve_handles.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_valve_handle", - "create:white_valve_handle", - "create:orange_valve_handle", - "create:magenta_valve_handle", - "create:light_blue_valve_handle", - "create:yellow_valve_handle", - "create:lime_valve_handle", - "create:pink_valve_handle", - "create:gray_valve_handle", - "create:light_gray_valve_handle", - "create:cyan_valve_handle", - "create:purple_valve_handle", - "create:blue_valve_handle", - "create:brown_valve_handle", - "create:green_valve_handle", - "create:red_valve_handle", - "create:black_valve_handle" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/glass/colorless.json b/src/generated/resources/data/forge/tags/blocks/glass/colorless.json deleted file mode 100644 index ccebd5fdf..000000000 --- a/src/generated/resources/data/forge/tags/blocks/glass/colorless.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "create:tiled_glass", - "create:framed_glass", - "create:horizontal_framed_glass", - "create:vertical_framed_glass" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/glass_panes.json b/src/generated/resources/data/forge/tags/blocks/glass_panes.json deleted file mode 100644 index 9ec2f3e21..000000000 --- a/src/generated/resources/data/forge/tags/blocks/glass_panes.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "replace": false, - "values": [ - "create:tiled_glass_pane", - "create:framed_glass_pane", - "create:horizontal_framed_glass_pane", - "create:vertical_framed_glass_pane", - "create:oak_window_pane", - "create:spruce_window_pane", - "create:birch_window_pane", - "create:jungle_window_pane", - "create:acacia_window_pane", - "create:dark_oak_window_pane", - "create:crimson_window_pane", - "create:warped_window_pane", - "create:ornate_iron_window_pane" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/ores.json b/src/generated/resources/data/forge/tags/blocks/ores.json deleted file mode 100644 index dc8820ef1..000000000 --- a/src/generated/resources/data/forge/tags/blocks/ores.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_ore", - "create:zinc_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/ores/copper.json b/src/generated/resources/data/forge/tags/blocks/ores/copper.json deleted file mode 100644 index 4b386dbe0..000000000 --- a/src/generated/resources/data/forge/tags/blocks/ores/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/ores/zinc.json b/src/generated/resources/data/forge/tags/blocks/ores/zinc.json deleted file mode 100644 index 9389dcb95..000000000 --- a/src/generated/resources/data/forge/tags/blocks/ores/zinc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:zinc_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks.json deleted file mode 100644 index fd18acec8..000000000 --- a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_block", - "create:zinc_block", - "create:brass_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks/brass.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks/brass.json deleted file mode 100644 index 1628821d5..000000000 --- a/src/generated/resources/data/forge/tags/blocks/storage_blocks/brass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:brass_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks/copper.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks/copper.json deleted file mode 100644 index 0b5561d1f..000000000 --- a/src/generated/resources/data/forge/tags/blocks/storage_blocks/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks/zinc.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks/zinc.json deleted file mode 100644 index c4e4a73b8..000000000 --- a/src/generated/resources/data/forge/tags/blocks/storage_blocks/zinc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:zinc_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/chocolate.json b/src/generated/resources/data/forge/tags/fluids/chocolate.json deleted file mode 100644 index 4311fa015..000000000 --- a/src/generated/resources/data/forge/tags/fluids/chocolate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "create:flowing_chocolate", - "create:chocolate" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/honey.json b/src/generated/resources/data/forge/tags/fluids/honey.json deleted file mode 100644 index 6fab599f2..000000000 --- a/src/generated/resources/data/forge/tags/fluids/honey.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "create:flowing_honey", - "create:honey" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/milk.json b/src/generated/resources/data/forge/tags/fluids/milk.json deleted file mode 100644 index 6860027e8..000000000 --- a/src/generated/resources/data/forge/tags/fluids/milk.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "create:flowing_milk", - "create:milk" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/fluids/tea.json b/src/generated/resources/data/forge/tags/fluids/tea.json deleted file mode 100644 index 088a21939..000000000 --- a/src/generated/resources/data/forge/tags/fluids/tea.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "create:flowing_tea", - "create:tea" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/beacon_payment.json b/src/generated/resources/data/forge/tags/items/beacon_payment.json deleted file mode 100644 index ad8bdef78..000000000 --- a/src/generated/resources/data/forge/tags/items/beacon_payment.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "#create:create_ingots" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/cobblestone.json b/src/generated/resources/data/forge/tags/items/cobblestone.json deleted file mode 100644 index 4a5c2c1fb..000000000 --- a/src/generated/resources/data/forge/tags/items/cobblestone.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "replace": false, - "values": [ - "create:granite_cobblestone", - "create:diorite_cobblestone", - "create:andesite_cobblestone", - "create:limestone_cobblestone", - "create:weathered_limestone_cobblestone", - "create:dolomite_cobblestone", - "create:gabbro_cobblestone", - "create:scoria_cobblestone", - "create:dark_scoria_cobblestone" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/glass/colorless.json b/src/generated/resources/data/forge/tags/items/glass/colorless.json deleted file mode 100644 index ccebd5fdf..000000000 --- a/src/generated/resources/data/forge/tags/items/glass/colorless.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "create:tiled_glass", - "create:framed_glass", - "create:horizontal_framed_glass", - "create:vertical_framed_glass" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/glass_panes.json b/src/generated/resources/data/forge/tags/items/glass_panes.json deleted file mode 100644 index 9ec2f3e21..000000000 --- a/src/generated/resources/data/forge/tags/items/glass_panes.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "replace": false, - "values": [ - "create:tiled_glass_pane", - "create:framed_glass_pane", - "create:horizontal_framed_glass_pane", - "create:vertical_framed_glass_pane", - "create:oak_window_pane", - "create:spruce_window_pane", - "create:birch_window_pane", - "create:jungle_window_pane", - "create:acacia_window_pane", - "create:dark_oak_window_pane", - "create:crimson_window_pane", - "create:warped_window_pane", - "create:ornate_iron_window_pane" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ingots.json b/src/generated/resources/data/forge/tags/items/ingots.json deleted file mode 100644 index ad8bdef78..000000000 --- a/src/generated/resources/data/forge/tags/items/ingots.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "#create:create_ingots" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ingots/brass.json b/src/generated/resources/data/forge/tags/items/ingots/brass.json deleted file mode 100644 index feebc4293..000000000 --- a/src/generated/resources/data/forge/tags/items/ingots/brass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:brass_ingot" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ingots/copper.json b/src/generated/resources/data/forge/tags/items/ingots/copper.json deleted file mode 100644 index 2617d2aeb..000000000 --- a/src/generated/resources/data/forge/tags/items/ingots/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_ingot" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ingots/zinc.json b/src/generated/resources/data/forge/tags/items/ingots/zinc.json deleted file mode 100644 index 401a1ea1d..000000000 --- a/src/generated/resources/data/forge/tags/items/ingots/zinc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:zinc_ingot" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/nuggets.json b/src/generated/resources/data/forge/tags/items/nuggets.json deleted file mode 100644 index 6eb0a5036..000000000 --- a/src/generated/resources/data/forge/tags/items/nuggets.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_nugget", - "create:zinc_nugget", - "create:brass_nugget" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/nuggets/brass.json b/src/generated/resources/data/forge/tags/items/nuggets/brass.json deleted file mode 100644 index 3b9add6b0..000000000 --- a/src/generated/resources/data/forge/tags/items/nuggets/brass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:brass_nugget" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/nuggets/copper.json b/src/generated/resources/data/forge/tags/items/nuggets/copper.json deleted file mode 100644 index 555bdee2c..000000000 --- a/src/generated/resources/data/forge/tags/items/nuggets/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_nugget" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/nuggets/zinc.json b/src/generated/resources/data/forge/tags/items/nuggets/zinc.json deleted file mode 100644 index 55913868b..000000000 --- a/src/generated/resources/data/forge/tags/items/nuggets/zinc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:zinc_nugget" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ores.json b/src/generated/resources/data/forge/tags/items/ores.json deleted file mode 100644 index dc8820ef1..000000000 --- a/src/generated/resources/data/forge/tags/items/ores.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_ore", - "create:zinc_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ores/copper.json b/src/generated/resources/data/forge/tags/items/ores/copper.json deleted file mode 100644 index 4b386dbe0..000000000 --- a/src/generated/resources/data/forge/tags/items/ores/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/ores/zinc.json b/src/generated/resources/data/forge/tags/items/ores/zinc.json deleted file mode 100644 index 9389dcb95..000000000 --- a/src/generated/resources/data/forge/tags/items/ores/zinc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:zinc_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates.json b/src/generated/resources/data/forge/tags/items/plates.json deleted file mode 100644 index 3ba58600a..000000000 --- a/src/generated/resources/data/forge/tags/items/plates.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_sheet", - "create:brass_sheet", - "create:iron_sheet", - "create:golden_sheet", - "create:lapis_sheet" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates/brass.json b/src/generated/resources/data/forge/tags/items/plates/brass.json deleted file mode 100644 index c4b2191c7..000000000 --- a/src/generated/resources/data/forge/tags/items/plates/brass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:brass_sheet" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates/copper.json b/src/generated/resources/data/forge/tags/items/plates/copper.json deleted file mode 100644 index 71079712b..000000000 --- a/src/generated/resources/data/forge/tags/items/plates/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_sheet" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates/gold.json b/src/generated/resources/data/forge/tags/items/plates/gold.json deleted file mode 100644 index eeb5ecfdd..000000000 --- a/src/generated/resources/data/forge/tags/items/plates/gold.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:golden_sheet" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates/iron.json b/src/generated/resources/data/forge/tags/items/plates/iron.json deleted file mode 100644 index cfbf11632..000000000 --- a/src/generated/resources/data/forge/tags/items/plates/iron.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:iron_sheet" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/plates/lapis_lazuli.json b/src/generated/resources/data/forge/tags/items/plates/lapis_lazuli.json deleted file mode 100644 index b9f6147a1..000000000 --- a/src/generated/resources/data/forge/tags/items/plates/lapis_lazuli.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:lapis_sheet" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks.json b/src/generated/resources/data/forge/tags/items/storage_blocks.json deleted file mode 100644 index fd18acec8..000000000 --- a/src/generated/resources/data/forge/tags/items/storage_blocks.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_block", - "create:zinc_block", - "create:brass_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks/brass.json b/src/generated/resources/data/forge/tags/items/storage_blocks/brass.json deleted file mode 100644 index 1628821d5..000000000 --- a/src/generated/resources/data/forge/tags/items/storage_blocks/brass.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:brass_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks/copper.json b/src/generated/resources/data/forge/tags/items/storage_blocks/copper.json deleted file mode 100644 index 0b5561d1f..000000000 --- a/src/generated/resources/data/forge/tags/items/storage_blocks/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks/zinc.json b/src/generated/resources/data/forge/tags/items/storage_blocks/zinc.json deleted file mode 100644 index c4e4a73b8..000000000 --- a/src/generated/resources/data/forge/tags/items/storage_blocks/zinc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "create:zinc_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/advancements/createchromatic_age.json b/src/generated/resources/data/minecraft/advancements/createchromatic_age.json deleted file mode 100644 index d1cabe09b..000000000 --- a/src/generated/resources/data/minecraft/advancements/createchromatic_age.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "parent": "create:chromatic_compound", - "display": { - "icon": { - "item": "create:refined_radiance_casing" - }, - "title": { - "translate": "advancement.create.chromatic_age" - }, - "description": { - "translate": "advancement.create.chromatic_age.desc" - }, - "frame": "goal", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "0": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:shadow_steel_casing" - } - ] - } - }, - "1": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "create:refined_radiance_casing" - } - ] - } - } - }, - "requirements": [ - [ - "0" - ], - [ - "1" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/base_stone_overworld.json b/src/generated/resources/data/minecraft/tags/blocks/base_stone_overworld.json deleted file mode 100644 index 39e5fd569..000000000 --- a/src/generated/resources/data/minecraft/tags/blocks/base_stone_overworld.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "create:limestone", - "create:weathered_limestone", - "create:dolomite", - "create:gabbro", - "create:natural_scoria" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json deleted file mode 100644 index fd18acec8..000000000 --- a/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "create:copper_block", - "create:zinc_block", - "create:brass_block" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/impermeable.json b/src/generated/resources/data/minecraft/tags/blocks/impermeable.json deleted file mode 100644 index 598a68c11..000000000 --- a/src/generated/resources/data/minecraft/tags/blocks/impermeable.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "replace": false, - "values": [ - "create:tiled_glass", - "create:framed_glass", - "create:horizontal_framed_glass", - "create:vertical_framed_glass", - "create:oak_window", - "create:spruce_window", - "create:birch_window", - "create:jungle_window", - "create:acacia_window", - "create:dark_oak_window", - "create:crimson_window", - "create:warped_window", - "create:ornate_iron_window" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/rails.json b/src/generated/resources/data/minecraft/tags/blocks/rails.json deleted file mode 100644 index 9f6c12628..000000000 --- a/src/generated/resources/data/minecraft/tags/blocks/rails.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "replace": false, - "values": [ - "create:cart_assembler", - "create:reinforced_rail", - "create:controller_rail" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/slabs.json b/src/generated/resources/data/minecraft/tags/blocks/slabs.json deleted file mode 100644 index 6853a79e2..000000000 --- a/src/generated/resources/data/minecraft/tags/blocks/slabs.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "replace": false, - "values": [ - "create:granite_cobblestone_slab", - "create:granite_bricks_slab", - "create:fancy_granite_bricks_slab", - "create:paved_granite_slab", - "create:diorite_cobblestone_slab", - "create:diorite_bricks_slab", - "create:fancy_diorite_bricks_slab", - "create:paved_diorite_slab", - "create:andesite_cobblestone_slab", - "create:andesite_bricks_slab", - "create:fancy_andesite_bricks_slab", - "create:paved_andesite_slab", - "create:limestone_cobblestone_slab", - "create:polished_limestone_slab", - "create:limestone_bricks_slab", - "create:fancy_limestone_bricks_slab", - "create:paved_limestone_slab", - "create:weathered_limestone_cobblestone_slab", - "create:polished_weathered_limestone_slab", - "create:weathered_limestone_bricks_slab", - "create:fancy_weathered_limestone_bricks_slab", - "create:paved_weathered_limestone_slab", - "create:dolomite_cobblestone_slab", - "create:polished_dolomite_slab", - "create:dolomite_bricks_slab", - "create:fancy_dolomite_bricks_slab", - "create:paved_dolomite_slab", - "create:gabbro_cobblestone_slab", - "create:polished_gabbro_slab", - "create:gabbro_bricks_slab", - "create:fancy_gabbro_bricks_slab", - "create:paved_gabbro_slab", - "create:scoria_cobblestone_slab", - "create:polished_scoria_slab", - "create:scoria_bricks_slab", - "create:fancy_scoria_bricks_slab", - "create:paved_scoria_slab", - "create:dark_scoria_cobblestone_slab", - "create:polished_dark_scoria_slab", - "create:dark_scoria_bricks_slab", - "create:fancy_dark_scoria_bricks_slab", - "create:paved_dark_scoria_slab" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/stairs.json b/src/generated/resources/data/minecraft/tags/blocks/stairs.json deleted file mode 100644 index 063a72ea5..000000000 --- a/src/generated/resources/data/minecraft/tags/blocks/stairs.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "replace": false, - "values": [ - "create:granite_cobblestone_stairs", - "create:granite_bricks_stairs", - "create:fancy_granite_bricks_stairs", - "create:paved_granite_stairs", - "create:diorite_cobblestone_stairs", - "create:diorite_bricks_stairs", - "create:fancy_diorite_bricks_stairs", - "create:paved_diorite_stairs", - "create:andesite_cobblestone_stairs", - "create:andesite_bricks_stairs", - "create:fancy_andesite_bricks_stairs", - "create:paved_andesite_stairs", - "create:limestone_cobblestone_stairs", - "create:polished_limestone_stairs", - "create:limestone_bricks_stairs", - "create:fancy_limestone_bricks_stairs", - "create:paved_limestone_stairs", - "create:weathered_limestone_cobblestone_stairs", - "create:polished_weathered_limestone_stairs", - "create:weathered_limestone_bricks_stairs", - "create:fancy_weathered_limestone_bricks_stairs", - "create:paved_weathered_limestone_stairs", - "create:dolomite_cobblestone_stairs", - "create:polished_dolomite_stairs", - "create:dolomite_bricks_stairs", - "create:fancy_dolomite_bricks_stairs", - "create:paved_dolomite_stairs", - "create:gabbro_cobblestone_stairs", - "create:polished_gabbro_stairs", - "create:gabbro_bricks_stairs", - "create:fancy_gabbro_bricks_stairs", - "create:paved_gabbro_stairs", - "create:scoria_cobblestone_stairs", - "create:polished_scoria_stairs", - "create:scoria_bricks_stairs", - "create:fancy_scoria_bricks_stairs", - "create:paved_scoria_stairs", - "create:dark_scoria_cobblestone_stairs", - "create:polished_dark_scoria_stairs", - "create:dark_scoria_bricks_stairs", - "create:fancy_dark_scoria_bricks_stairs", - "create:paved_dark_scoria_stairs" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/walls.json b/src/generated/resources/data/minecraft/tags/blocks/walls.json deleted file mode 100644 index 934d41e8b..000000000 --- a/src/generated/resources/data/minecraft/tags/blocks/walls.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "replace": false, - "values": [ - "create:granite_cobblestone_wall", - "create:granite_bricks_wall", - "create:fancy_granite_bricks_wall", - "create:paved_granite_wall", - "create:diorite_cobblestone_wall", - "create:diorite_bricks_wall", - "create:fancy_diorite_bricks_wall", - "create:paved_diorite_wall", - "create:andesite_cobblestone_wall", - "create:andesite_bricks_wall", - "create:fancy_andesite_bricks_wall", - "create:paved_andesite_wall", - "create:limestone_cobblestone_wall", - "create:polished_limestone_wall", - "create:limestone_bricks_wall", - "create:fancy_limestone_bricks_wall", - "create:paved_limestone_wall", - "create:weathered_limestone_cobblestone_wall", - "create:polished_weathered_limestone_wall", - "create:weathered_limestone_bricks_wall", - "create:fancy_weathered_limestone_bricks_wall", - "create:paved_weathered_limestone_wall", - "create:dolomite_cobblestone_wall", - "create:polished_dolomite_wall", - "create:dolomite_bricks_wall", - "create:fancy_dolomite_bricks_wall", - "create:paved_dolomite_wall", - "create:gabbro_cobblestone_wall", - "create:polished_gabbro_wall", - "create:gabbro_bricks_wall", - "create:fancy_gabbro_bricks_wall", - "create:paved_gabbro_wall", - "create:scoria_cobblestone_wall", - "create:polished_scoria_wall", - "create:scoria_bricks_wall", - "create:fancy_scoria_bricks_wall", - "create:paved_scoria_wall", - "create:dark_scoria_cobblestone_wall", - "create:polished_dark_scoria_wall", - "create:dark_scoria_bricks_wall", - "create:fancy_dark_scoria_bricks_wall", - "create:paved_dark_scoria_wall" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/fluids/water.json b/src/generated/resources/data/minecraft/tags/fluids/water.json deleted file mode 100644 index 01d633e97..000000000 --- a/src/generated/resources/data/minecraft/tags/fluids/water.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "replace": false, - "values": [ - "create:flowing_honey", - "create:honey", - "create:flowing_chocolate", - "create:chocolate" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/items/piglin_loved.json b/src/generated/resources/data/minecraft/tags/items/piglin_loved.json deleted file mode 100644 index 478bada69..000000000 --- a/src/generated/resources/data/minecraft/tags/items/piglin_loved.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "create:golden_sheet", - "create:crushed_gold_ore" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/items/slabs.json b/src/generated/resources/data/minecraft/tags/items/slabs.json deleted file mode 100644 index 6853a79e2..000000000 --- a/src/generated/resources/data/minecraft/tags/items/slabs.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "replace": false, - "values": [ - "create:granite_cobblestone_slab", - "create:granite_bricks_slab", - "create:fancy_granite_bricks_slab", - "create:paved_granite_slab", - "create:diorite_cobblestone_slab", - "create:diorite_bricks_slab", - "create:fancy_diorite_bricks_slab", - "create:paved_diorite_slab", - "create:andesite_cobblestone_slab", - "create:andesite_bricks_slab", - "create:fancy_andesite_bricks_slab", - "create:paved_andesite_slab", - "create:limestone_cobblestone_slab", - "create:polished_limestone_slab", - "create:limestone_bricks_slab", - "create:fancy_limestone_bricks_slab", - "create:paved_limestone_slab", - "create:weathered_limestone_cobblestone_slab", - "create:polished_weathered_limestone_slab", - "create:weathered_limestone_bricks_slab", - "create:fancy_weathered_limestone_bricks_slab", - "create:paved_weathered_limestone_slab", - "create:dolomite_cobblestone_slab", - "create:polished_dolomite_slab", - "create:dolomite_bricks_slab", - "create:fancy_dolomite_bricks_slab", - "create:paved_dolomite_slab", - "create:gabbro_cobblestone_slab", - "create:polished_gabbro_slab", - "create:gabbro_bricks_slab", - "create:fancy_gabbro_bricks_slab", - "create:paved_gabbro_slab", - "create:scoria_cobblestone_slab", - "create:polished_scoria_slab", - "create:scoria_bricks_slab", - "create:fancy_scoria_bricks_slab", - "create:paved_scoria_slab", - "create:dark_scoria_cobblestone_slab", - "create:polished_dark_scoria_slab", - "create:dark_scoria_bricks_slab", - "create:fancy_dark_scoria_bricks_slab", - "create:paved_dark_scoria_slab" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/items/stairs.json b/src/generated/resources/data/minecraft/tags/items/stairs.json deleted file mode 100644 index 063a72ea5..000000000 --- a/src/generated/resources/data/minecraft/tags/items/stairs.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "replace": false, - "values": [ - "create:granite_cobblestone_stairs", - "create:granite_bricks_stairs", - "create:fancy_granite_bricks_stairs", - "create:paved_granite_stairs", - "create:diorite_cobblestone_stairs", - "create:diorite_bricks_stairs", - "create:fancy_diorite_bricks_stairs", - "create:paved_diorite_stairs", - "create:andesite_cobblestone_stairs", - "create:andesite_bricks_stairs", - "create:fancy_andesite_bricks_stairs", - "create:paved_andesite_stairs", - "create:limestone_cobblestone_stairs", - "create:polished_limestone_stairs", - "create:limestone_bricks_stairs", - "create:fancy_limestone_bricks_stairs", - "create:paved_limestone_stairs", - "create:weathered_limestone_cobblestone_stairs", - "create:polished_weathered_limestone_stairs", - "create:weathered_limestone_bricks_stairs", - "create:fancy_weathered_limestone_bricks_stairs", - "create:paved_weathered_limestone_stairs", - "create:dolomite_cobblestone_stairs", - "create:polished_dolomite_stairs", - "create:dolomite_bricks_stairs", - "create:fancy_dolomite_bricks_stairs", - "create:paved_dolomite_stairs", - "create:gabbro_cobblestone_stairs", - "create:polished_gabbro_stairs", - "create:gabbro_bricks_stairs", - "create:fancy_gabbro_bricks_stairs", - "create:paved_gabbro_stairs", - "create:scoria_cobblestone_stairs", - "create:polished_scoria_stairs", - "create:scoria_bricks_stairs", - "create:fancy_scoria_bricks_stairs", - "create:paved_scoria_stairs", - "create:dark_scoria_cobblestone_stairs", - "create:polished_dark_scoria_stairs", - "create:dark_scoria_bricks_stairs", - "create:fancy_dark_scoria_bricks_stairs", - "create:paved_dark_scoria_stairs" - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/items/walls.json b/src/generated/resources/data/minecraft/tags/items/walls.json deleted file mode 100644 index 934d41e8b..000000000 --- a/src/generated/resources/data/minecraft/tags/items/walls.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "replace": false, - "values": [ - "create:granite_cobblestone_wall", - "create:granite_bricks_wall", - "create:fancy_granite_bricks_wall", - "create:paved_granite_wall", - "create:diorite_cobblestone_wall", - "create:diorite_bricks_wall", - "create:fancy_diorite_bricks_wall", - "create:paved_diorite_wall", - "create:andesite_cobblestone_wall", - "create:andesite_bricks_wall", - "create:fancy_andesite_bricks_wall", - "create:paved_andesite_wall", - "create:limestone_cobblestone_wall", - "create:polished_limestone_wall", - "create:limestone_bricks_wall", - "create:fancy_limestone_bricks_wall", - "create:paved_limestone_wall", - "create:weathered_limestone_cobblestone_wall", - "create:polished_weathered_limestone_wall", - "create:weathered_limestone_bricks_wall", - "create:fancy_weathered_limestone_bricks_wall", - "create:paved_weathered_limestone_wall", - "create:dolomite_cobblestone_wall", - "create:polished_dolomite_wall", - "create:dolomite_bricks_wall", - "create:fancy_dolomite_bricks_wall", - "create:paved_dolomite_wall", - "create:gabbro_cobblestone_wall", - "create:polished_gabbro_wall", - "create:gabbro_bricks_wall", - "create:fancy_gabbro_bricks_wall", - "create:paved_gabbro_wall", - "create:scoria_cobblestone_wall", - "create:polished_scoria_wall", - "create:scoria_bricks_wall", - "create:fancy_scoria_bricks_wall", - "create:paved_scoria_wall", - "create:dark_scoria_cobblestone_wall", - "create:polished_dark_scoria_wall", - "create:dark_scoria_bricks_wall", - "create:fancy_dark_scoria_bricks_wall", - "create:paved_dark_scoria_wall" - ] -} \ No newline at end of file diff --git a/src/main/java/com/jozufozu/flywheel/Flywheel.java b/src/main/java/com/jozufozu/flywheel/Flywheel.java index 45cff0f46..e929fa06c 100644 --- a/src/main/java/com/jozufozu/flywheel/Flywheel.java +++ b/src/main/java/com/jozufozu/flywheel/Flywheel.java @@ -1,6 +1,84 @@ package com.jozufozu.flywheel; +import net.minecraft.block.Block; +import net.minecraft.block.Blocks; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.InterModComms; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; +import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent; +import net.minecraftforge.fml.event.server.FMLServerStartingEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.util.stream.Collectors; + +// The value here should match an entry in the META-INF/mods.toml file +@Mod("flywheel") public class Flywheel { - public static final String ID = "flywheel"; + public static final String ID = "flywheel"; + // Directly reference a log4j logger. + private static final Logger LOGGER = LogManager.getLogger(); + + public Flywheel() { + // Register the setup method for modloading + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); + // Register the enqueueIMC method for modloading + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC); + // Register the processIMC method for modloading + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::processIMC); + // Register the doClientStuff method for modloading + FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff); + + // Register ourselves for server and other game events we are interested in + MinecraftForge.EVENT_BUS.register(this); + } + + private void setup(final FMLCommonSetupEvent event) { + // some preinit code + LOGGER.info("HELLO FROM PREINIT"); + LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName()); + } + + private void doClientStuff(final FMLClientSetupEvent event) { + // do something that can only be done on the client + LOGGER.info("Got game settings {}", event.getMinecraftSupplier().get().gameSettings); + } + + private void enqueueIMC(final InterModEnqueueEvent event) { + // some example code to dispatch IMC to another mod + InterModComms.sendTo("flywheel", "helloworld", () -> { + LOGGER.info("Hello world from the MDK"); + return "Hello world"; + }); + } + + private void processIMC(final InterModProcessEvent event) { + // some example code to receive and process InterModComms from other mods + LOGGER.info("Got IMC {}", event.getIMCStream().map(m -> m.getMessageSupplier().get()).collect(Collectors.toList())); + } + + // You can use SubscribeEvent and let the Event Bus discover methods to call + @SubscribeEvent + public void onServerStarting(FMLServerStartingEvent event) { + // do something when the server starts + LOGGER.info("HELLO from server starting"); + } + + // You can use EventBusSubscriber to automatically subscribe events on the contained class (this is subscribing to the MOD + // Event bus for receiving Registry Events) + @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) + public static class RegistryEvents { + @SubscribeEvent + public static void onBlocksRegistry(final RegistryEvent.Register blockRegistryEvent) { + // register a new block here + LOGGER.info("HELLO from Register Block"); + } + } } diff --git a/src/main/java/com/jozufozu/flywheel/backend/Backend.java b/src/main/java/com/jozufozu/flywheel/backend/Backend.java index da33797b9..4c541eef4 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/Backend.java +++ b/src/main/java/com/jozufozu/flywheel/backend/Backend.java @@ -15,7 +15,6 @@ import com.jozufozu.flywheel.backend.gl.versioned.GlCompat; import com.jozufozu.flywheel.backend.instancing.InstanceData; import com.jozufozu.flywheel.backend.instancing.MaterialSpec; import com.jozufozu.flywheel.core.shader.spec.ProgramSpec; -import com.simibubi.create.foundation.config.AllConfigs; import net.minecraft.client.Minecraft; import net.minecraft.util.ResourceLocation; @@ -144,7 +143,8 @@ public class Backend { compat.drawInstancedSupported() && compat.instancedArraysSupported(); - enabled = AllConfigs.CLIENT.experimentalRendering.get() && !OptifineHandler.usingShaders(); + // TODO: Config + enabled = !OptifineHandler.usingShaders(); } public boolean canUseInstancing(World world) { diff --git a/src/main/java/com/jozufozu/flywheel/backend/ShaderSources.java b/src/main/java/com/jozufozu/flywheel/backend/ShaderSources.java index 1aa918085..03fa61d27 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/ShaderSources.java +++ b/src/main/java/com/jozufozu/flywheel/backend/ShaderSources.java @@ -89,7 +89,7 @@ public class ShaderSources implements ISelectiveResourceReloadListener { } Backend.log.info("Loaded all shader programs."); - + // no need to hog all that memory shaderSource.clear(); } diff --git a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderRegistry.java b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderRegistry.java index 1fbf6f5a8..31f2b5611 100644 --- a/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderRegistry.java +++ b/src/main/java/com/jozufozu/flywheel/backend/instancing/InstancedRenderRegistry.java @@ -9,8 +9,6 @@ import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance; import com.jozufozu.flywheel.backend.instancing.entity.IEntityInstanceFactory; import com.jozufozu.flywheel.backend.instancing.tile.ITileInstanceFactory; import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; -import com.simibubi.create.AllEntityTypes; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.GlueInstance; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; @@ -35,10 +33,6 @@ public class InstancedRenderRegistry { this.entities.put(type, rendererFactory); } - static { - INSTANCE.register(AllEntityTypes.SUPER_GLUE.get(), GlueInstance::new); - } - @SuppressWarnings("unchecked") @Nullable public TileEntityInstance create(MaterialManager manager, T tile) { diff --git a/src/main/java/com/jozufozu/flywheel/core/Materials.java b/src/main/java/com/jozufozu/flywheel/core/Materials.java index 0a9cc8f47..38d6b08b1 100644 --- a/src/main/java/com/jozufozu/flywheel/core/Materials.java +++ b/src/main/java/com/jozufozu/flywheel/core/Materials.java @@ -6,7 +6,6 @@ import com.jozufozu.flywheel.backend.instancing.MaterialSpec; import com.jozufozu.flywheel.core.materials.ModelData; import com.jozufozu.flywheel.core.materials.OrientedData; import com.jozufozu.flywheel.event.GatherContextEvent; -import com.simibubi.create.foundation.render.AllMaterialSpecs; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; @@ -15,8 +14,8 @@ import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class Materials { - public static final MaterialSpec ORIENTED = AllMaterialSpecs.register(new MaterialSpec<>(Locations.ORIENTED, Programs.ORIENTED, Formats.UNLIT_MODEL, Formats.ORIENTED, OrientedData::new)); - public static final MaterialSpec TRANSFORMED = AllMaterialSpecs.register(new MaterialSpec<>(Locations.MODEL, Programs.TRANSFORMED, Formats.UNLIT_MODEL, Formats.TRANSFORMED, ModelData::new)); + public static final MaterialSpec ORIENTED = register(new MaterialSpec<>(Locations.ORIENTED, Programs.ORIENTED, Formats.UNLIT_MODEL, Formats.ORIENTED, OrientedData::new)); + public static final MaterialSpec TRANSFORMED = register(new MaterialSpec<>(Locations.MODEL, Programs.TRANSFORMED, Formats.UNLIT_MODEL, Formats.TRANSFORMED, ModelData::new)); public static MaterialSpec register(MaterialSpec spec) { return Backend.getInstance().register(spec); diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/WorldProgram.java b/src/main/java/com/jozufozu/flywheel/core/shader/WorldProgram.java index c6da0487d..f9a6a940f 100644 --- a/src/main/java/com/jozufozu/flywheel/core/shader/WorldProgram.java +++ b/src/main/java/com/jozufozu/flywheel/core/shader/WorldProgram.java @@ -7,8 +7,8 @@ import java.util.List; import com.jozufozu.flywheel.backend.loading.Program; import com.jozufozu.flywheel.core.shader.extension.IProgramExtension; -import com.simibubi.create.foundation.utility.AnimationTickHolder; +import com.jozufozu.flywheel.util.AnimationTickHolder; import net.minecraft.util.math.vector.Matrix4f; public class WorldProgram extends ExtensibleGlProgram { diff --git a/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/RainbowDebugStateProvider.java b/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/RainbowDebugStateProvider.java deleted file mode 100644 index b005c8e72..000000000 --- a/src/main/java/com/jozufozu/flywheel/core/shader/gamestate/RainbowDebugStateProvider.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.jozufozu.flywheel.core.shader.gamestate; - -import com.jozufozu.flywheel.core.shader.spec.IBooleanStateProvider; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.KineticDebugger; - -import net.minecraft.util.ResourceLocation; - -public class RainbowDebugStateProvider implements IBooleanStateProvider { - - public static final RainbowDebugStateProvider INSTANCE = new RainbowDebugStateProvider(); - public static final ResourceLocation NAME = new ResourceLocation(Create.ID, "rainbow_debug"); - - protected RainbowDebugStateProvider() { - - } - - @Override - public boolean isTrue() { - return KineticDebugger.isActive(); - } - - @Override - public ResourceLocation getID() { - return NAME; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/CancelEntityRenderMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/CancelEntityRenderMixin.java similarity index 67% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/CancelEntityRenderMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/CancelEntityRenderMixin.java index 00300abab..069563702 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/CancelEntityRenderMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/CancelEntityRenderMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel; +package com.jozufozu.flywheel.mixin; import java.util.ArrayList; @@ -17,14 +17,6 @@ import net.minecraft.entity.Entity; @Mixin(WorldRenderer.class) public class CancelEntityRenderMixin { -// @Inject(at = @At("HEAD"), method = "shouldRender", cancellable = true) -// private void dontRenderFlywheelEntities(E entity, ClippingHelper p_229086_2_, double p_229086_3_, double p_229086_5_, double p_229086_7_, CallbackInfoReturnable cir) { -// if (Backend.getInstance().canUseInstancing()) { -// if (entity instanceof IInstanceRendered && !((IInstanceRendered) entity).shouldRenderNormally()) -// cir.setReturnValue(false); -// } -// } - @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;getAllEntities()Ljava/lang/Iterable;")) private Iterable filterEntities(ClientWorld world) { Iterable entities = world.getAllEntities(); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/CancelTileEntityRenderMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/CancelTileEntityRenderMixin.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/CancelTileEntityRenderMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/CancelTileEntityRenderMixin.java index 318492720..392ba06a6 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/CancelTileEntityRenderMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/CancelTileEntityRenderMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel; +package com.jozufozu.flywheel.mixin; import java.util.List; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/FogColorTrackerMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/FogColorTrackerMixin.java similarity index 91% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/FogColorTrackerMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/FogColorTrackerMixin.java index 255857075..c9326d4ae 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/FogColorTrackerMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/FogColorTrackerMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel; +package com.jozufozu.flywheel.mixin; import org.lwjgl.opengl.GL11; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/RenderHooksMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java similarity index 98% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/RenderHooksMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java index b729d38cc..5d75d3c5e 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/RenderHooksMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/RenderHooksMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel; +package com.jozufozu.flywheel.mixin; import org.lwjgl.opengl.GL20; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/ShaderCloseMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/ShaderCloseMixin.java similarity index 94% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/ShaderCloseMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/ShaderCloseMixin.java index cb4f05aa1..d03e35735 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/ShaderCloseMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/ShaderCloseMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel; +package com.jozufozu.flywheel.mixin; import javax.annotation.Nullable; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/StoreProjectionMatrixMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/StoreProjectionMatrixMixin.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/StoreProjectionMatrixMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/StoreProjectionMatrixMixin.java index 361a32dd8..39ca73614 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/StoreProjectionMatrixMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/StoreProjectionMatrixMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel; +package com.jozufozu.flywheel.mixin; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/TileRemoveMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/TileRemoveMixin.java similarity index 93% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/TileRemoveMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/TileRemoveMixin.java index 2e506add4..84a55ff04 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/TileRemoveMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/TileRemoveMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel; +package com.jozufozu.flywheel.mixin; import javax.annotation.Nullable; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/TileWorldHookMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/TileWorldHookMixin.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/TileWorldHookMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/TileWorldHookMixin.java index 58d3c8dad..790485990 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/TileWorldHookMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/TileWorldHookMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel; +package com.jozufozu.flywheel.mixin; import java.util.Set; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/light/LightUpdateMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/light/LightUpdateMixin.java similarity index 97% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/light/LightUpdateMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/light/LightUpdateMixin.java index 27085583a..59611c72e 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/light/LightUpdateMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/light/LightUpdateMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel.light; +package com.jozufozu.flywheel.mixin.light; import java.util.Map; diff --git a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/light/NetworkLightUpdateMixin.java b/src/main/java/com/jozufozu/flywheel/mixin/light/NetworkLightUpdateMixin.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/mixin/flywheel/light/NetworkLightUpdateMixin.java rename to src/main/java/com/jozufozu/flywheel/mixin/light/NetworkLightUpdateMixin.java index 15ebb2afc..16a31725f 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/flywheel/light/NetworkLightUpdateMixin.java +++ b/src/main/java/com/jozufozu/flywheel/mixin/light/NetworkLightUpdateMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin.flywheel.light; +package com.jozufozu.flywheel.mixin.light; import java.util.Arrays; diff --git a/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java b/src/main/java/com/jozufozu/flywheel/util/AngleHelper.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java rename to src/main/java/com/jozufozu/flywheel/util/AngleHelper.java index 3f8723672..b20537a04 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/AngleHelper.java +++ b/src/main/java/com/jozufozu/flywheel/util/AngleHelper.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.utility; +package com.jozufozu.flywheel.util; import net.minecraft.util.Direction; import net.minecraft.util.Direction.Axis; diff --git a/src/main/java/com/jozufozu/flywheel/util/AnimationTickHolder.java b/src/main/java/com/jozufozu/flywheel/util/AnimationTickHolder.java new file mode 100644 index 000000000..476664944 --- /dev/null +++ b/src/main/java/com/jozufozu/flywheel/util/AnimationTickHolder.java @@ -0,0 +1,41 @@ +package com.jozufozu.flywheel.util; + +import net.minecraft.client.Minecraft; +import net.minecraft.world.IWorld; + +public class AnimationTickHolder { + + private static int ticks; + private static int paused_ticks; + + public static void reset() { + ticks = 0; + paused_ticks = 0; + } + + public static void tick() { + if (!Minecraft.getInstance() + .isGamePaused()) { + ticks = (ticks + 1) % 1_728_000; // wrap around every 24 hours so we maintain enough floating point precision + } else { + paused_ticks = (paused_ticks + 1) % 1_728_000; + } + } + + public static int getTicks() { + return getTicks(false); + } + + public static int getTicks(boolean includePaused) { + return includePaused ? ticks + paused_ticks : ticks; + } + + public static float getRenderTime() { + return getTicks() + getPartialTicks(); + } + + public static float getPartialTicks() { + Minecraft mc = Minecraft.getInstance(); + return (mc.isGamePaused() ? mc.renderPartialTicksPaused : mc.getRenderPartialTicks()); + } +} diff --git a/src/main/java/com/jozufozu/flywheel/util/RenderUtil.java b/src/main/java/com/jozufozu/flywheel/util/RenderUtil.java index e60410c85..82fec9995 100644 --- a/src/main/java/com/jozufozu/flywheel/util/RenderUtil.java +++ b/src/main/java/com/jozufozu/flywheel/util/RenderUtil.java @@ -3,7 +3,6 @@ package com.jozufozu.flywheel.util; import java.util.function.Supplier; import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.utility.AngleHelper; import net.minecraft.util.Direction; import net.minecraft.util.math.vector.Matrix3f; diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java deleted file mode 100644 index 25d9e0ddb..000000000 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.simibubi.create; - -import java.util.HashMap; -import java.util.Map; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.Direction; -import net.minecraft.util.ResourceLocation; - -public class AllBlockPartials { - - public static final PartialModel SCHEMATICANNON_CONNECTOR = get("schematicannon/connector"), - SCHEMATICANNON_PIPE = get("schematicannon/pipe"), - - SHAFTLESS_COGWHEEL = get("cogwheel_shaftless"), SHAFT_HALF = get("shaft_half"), - - BELT_PULLEY = get("belt_pulley"), BELT_START = get("belt/start"), BELT_MIDDLE = get("belt/middle"), - BELT_END = get("belt/end"), BELT_START_BOTTOM = get("belt/start_bottom"), - BELT_MIDDLE_BOTTOM = get("belt/middle_bottom"), BELT_END_BOTTOM = get("belt/end_bottom"), - BELT_DIAGONAL_START = get("belt/diagonal_start"), BELT_DIAGONAL_MIDDLE = get("belt/diagonal_middle"), - BELT_DIAGONAL_END = get("belt/diagonal_end"), - - ENCASED_FAN_INNER = get("encased_fan/propeller"), HAND_CRANK_HANDLE = get("hand_crank/handle"), - MECHANICAL_PRESS_HEAD = get("mechanical_press/head"), MECHANICAL_MIXER_POLE = get("mechanical_mixer/pole"), - MECHANICAL_MIXER_HEAD = get("mechanical_mixer/head"), MECHANICAL_CRAFTER_LID = get("mechanical_crafter/lid"), - MECHANICAL_CRAFTER_ARROW = get("mechanical_crafter/arrow"), - MECHANICAL_CRAFTER_BELT_FRAME = get("mechanical_crafter/belt"), - MECHANICAL_CRAFTER_BELT = get("mechanical_crafter/belt_animated"), - SAW_BLADE_HORIZONTAL_ACTIVE = get("mechanical_saw/blade_horizontal_active"), - SAW_BLADE_HORIZONTAL_INACTIVE = get("mechanical_saw/blade_horizontal_inactive"), - SAW_BLADE_HORIZONTAL_REVERSED = get("mechanical_saw/blade_horizontal_reversed"), - SAW_BLADE_VERTICAL_ACTIVE = get("mechanical_saw/blade_vertical_active"), - SAW_BLADE_VERTICAL_INACTIVE = get("mechanical_saw/blade_vertical_inactive"), - SAW_BLADE_VERTICAL_REVERSED = get("mechanical_saw/blade_vertical_reversed"), GAUGE_DIAL = get("gauge/dial"), - GAUGE_INDICATOR = get("gauge/indicator"), GAUGE_HEAD_SPEED = get("gauge/speedometer/head"), - GAUGE_HEAD_STRESS = get("gauge/stressometer/head"), BEARING_TOP = get("bearing/top"), - BEARING_TOP_WOODEN = get("bearing/top_wooden"), DRILL_HEAD = get("mechanical_drill/head"), - HARVESTER_BLADE = get("mechanical_harvester/blade"), DEPLOYER_POLE = get("deployer/pole"), - DEPLOYER_HAND_POINTING = get("deployer/hand_pointing"), DEPLOYER_HAND_PUNCHING = get("deployer/hand_punching"), - DEPLOYER_HAND_HOLDING = get("deployer/hand_holding"), ANALOG_LEVER_HANDLE = get("analog_lever/handle"), - ANALOG_LEVER_INDICATOR = get("analog_lever/indicator"), FUNNEL_FLAP = get("funnel/flap"), - BELT_FUNNEL_FLAP = get("belt_funnel/flap"), BELT_TUNNEL_FLAP = get("belt_tunnel/flap"), - FLEXPEATER_INDICATOR = get("diodes/indicator"), FLYWHEEL = get("flywheel/wheel"), - FLYWHEEL_UPPER_ROTATING = get("flywheel/upper_rotating_connector"), - - FLYWHEEL_LOWER_ROTATING = get("flywheel/lower_rotating_connector"), - FLYWHEEL_UPPER_SLIDING = get("flywheel/upper_sliding_connector"), - FLYWHEEL_LOWER_SLIDING = get("flywheel/lower_sliding_connector"), - FURNACE_GENERATOR_FRAME = get("furnace_engine/frame"), CUCKOO_MINUTE_HAND = get("cuckoo_clock/minute_hand"), - CUCKOO_HOUR_HAND = get("cuckoo_clock/hour_hand"), CUCKOO_LEFT_DOOR = get("cuckoo_clock/left_door"), - CUCKOO_RIGHT_DOOR = get("cuckoo_clock/right_door"), CUCKOO_PIG = get("cuckoo_clock/pig"), - CUCKOO_CREEPER = get("cuckoo_clock/creeper"), - - GANTRY_COGS = get("gantry_carriage/wheels"), - - ROPE_COIL = get("rope_pulley/rope_coil"), ROPE_HALF = get("rope_pulley/rope_half"), - ROPE_HALF_MAGNET = get("rope_pulley/rope_half_magnet"), - - HOSE_COIL = get("hose_pulley/rope_coil"), HOSE = get("hose_pulley/rope"), - HOSE_MAGNET = get("hose_pulley/pulley_magnet"), HOSE_HALF = get("hose_pulley/rope_half"), - HOSE_HALF_MAGNET = get("hose_pulley/rope_half_magnet"), - - MILLSTONE_COG = get("millstone/inner"), - - SYMMETRY_PLANE = get("symmetry_effect/plane"), SYMMETRY_CROSSPLANE = get("symmetry_effect/crossplane"), - SYMMETRY_TRIPLEPLANE = get("symmetry_effect/tripleplane"), - - STICKER_HEAD = get("sticker/head"), - - PORTABLE_STORAGE_INTERFACE_MIDDLE = get("portable_storage_interface/block_middle"), - PORTABLE_STORAGE_INTERFACE_MIDDLE_POWERED = get("portable_storage_interface/block_middle_powered"), - PORTABLE_STORAGE_INTERFACE_TOP = get("portable_storage_interface/block_top"), - - PORTABLE_FLUID_INTERFACE_MIDDLE = get("portable_fluid_interface/block_middle"), - PORTABLE_FLUID_INTERFACE_MIDDLE_POWERED = get("portable_fluid_interface/block_middle_powered"), - PORTABLE_FLUID_INTERFACE_TOP = get("portable_fluid_interface/block_top"), - - ARM_COG = get("mechanical_arm/cog"), ARM_BASE = get("mechanical_arm/base"), - ARM_LOWER_BODY = get("mechanical_arm/lower_body"), ARM_UPPER_BODY = get("mechanical_arm/upper_body"), - ARM_HEAD = get("mechanical_arm/head"), ARM_CLAW_BASE = get("mechanical_arm/claw_base"), - ARM_CLAW_GRIP = get("mechanical_arm/claw_grip"), - - FLAG_SHORT_IN = get("mechanical_arm/flag/short_in"), FLAG_SHORT_OUT = get("mechanical_arm/flag/short_out"), - FLAG_LONG_IN = get("mechanical_arm/flag/long_in"), FLAG_LONG_OUT = get("mechanical_arm/flag/long_out"), - - MECHANICAL_PUMP_ARROW = get("mechanical_pump/arrow"), MECHANICAL_PUMP_COG = get("mechanical_pump/cog"), - FLUID_PIPE_CASING = get("fluid_pipe/casing"), FLUID_VALVE_POINTER = get("fluid_valve/pointer"), - - SPOUT_TOP = get("spout/top"), SPOUT_MIDDLE = get("spout/middle"), SPOUT_BOTTOM = get("spout/bottom"), - - SPEED_CONTROLLER_BRACKET = get("rotation_speed_controller/bracket"), - - GOGGLES = get("goggles"), - - EJECTOR_TOP = get("weighted_ejector/top"), - - COPPER_BACKTANK_SHAFT = get("copper_backtank/block_shaft_input"), - COPPER_BACKTANK_COGS = get("copper_backtank/block_cogs"), - - CRAFTING_BLUEPRINT_1x1 = getEntity("crafting_blueprint_small"), - CRAFTING_BLUEPRINT_2x2 = getEntity("crafting_blueprint_medium"), - CRAFTING_BLUEPRINT_3x3 = getEntity("crafting_blueprint_large"), - - COUPLING_ATTACHMENT = getEntity("minecart_coupling/attachment"), - COUPLING_RING = getEntity("minecart_coupling/ring"), - COUPLING_CONNECTOR = getEntity("minecart_coupling/connector"); - - public static final Map> PIPE_ATTACHMENTS = new HashMap<>(); - public static final Map BLAZES = new HashMap<>(); - - static { - populateMaps(); - } - - static void populateMaps() { - for (FluidTransportBehaviour.AttachmentTypes type : FluidTransportBehaviour.AttachmentTypes.values()) { - if (!type.hasModel()) - continue; - Map map = new HashMap<>(); - for (Direction d : Iterate.directions) { - String asId = Lang.asId(type.name()); - map.put(d, get("fluid_pipe/" + asId + "/" + Lang.asId(d.getString()))); - } - PIPE_ATTACHMENTS.put(type, map); - } - for (BlazeBurnerBlock.HeatLevel heat : BlazeBurnerBlock.HeatLevel.values()) { - if (heat == BlazeBurnerBlock.HeatLevel.NONE) - continue; - BLAZES.put(heat, get("blaze_burner/blaze/" + heat.getString())); - } - } - - private static PartialModel getEntity(String path) { - return new PartialModel(new ResourceLocation(Create.ID, "entity/" + path)); - } - - private static PartialModel get(String path) { - return new PartialModel(new ResourceLocation(Create.ID, "block/" + path)); - } - - public static void clientInit() { - // init static fields - } -} diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java deleted file mode 100644 index c175c3c66..000000000 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ /dev/null @@ -1,1392 +0,0 @@ -package com.simibubi.create; - -import static com.simibubi.create.AllMovementBehaviours.addMovementBehaviour; -import static com.simibubi.create.AllTags.tagBlockAndItem; -import static com.simibubi.create.content.AllSections.SCHEMATICS; -import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; -import static com.simibubi.create.foundation.data.BlockStateGen.oxidizedBlockstate; -import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; -import static com.simibubi.create.foundation.data.ModelGen.customItemModel; -import static com.simibubi.create.foundation.data.ModelGen.oxidizedItemModel; - -import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.AllTags.AllItemTags; -import com.simibubi.create.content.AllSections; -import com.simibubi.create.content.contraptions.base.CasingBlock; -import com.simibubi.create.content.contraptions.components.actors.DrillBlock; -import com.simibubi.create.content.contraptions.components.actors.DrillMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.HarvesterBlock; -import com.simibubi.create.content.contraptions.components.actors.HarvesterMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.PloughBlock; -import com.simibubi.create.content.contraptions.components.actors.PloughMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock; -import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceMovement; -import com.simibubi.create.content.contraptions.components.actors.SawMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.SeatBlock; -import com.simibubi.create.content.contraptions.components.actors.SeatMovementBehaviour; -import com.simibubi.create.content.contraptions.components.clock.CuckooClockBlock; -import com.simibubi.create.content.contraptions.components.crafter.CrafterCTBehaviour; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterBlock; -import com.simibubi.create.content.contraptions.components.crank.HandCrankBlock; -import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; -import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelBlock; -import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelControllerBlock; -import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock; -import com.simibubi.create.content.contraptions.components.deployer.DeployerMovementBehaviour; -import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock; -import com.simibubi.create.content.contraptions.components.fan.NozzleBlock; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelGenerator; -import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineBlock; -import com.simibubi.create.content.contraptions.components.millstone.MillstoneBlock; -import com.simibubi.create.content.contraptions.components.mixer.BasinOperatorBlockItem; -import com.simibubi.create.content.contraptions.components.mixer.MechanicalMixerBlock; -import com.simibubi.create.content.contraptions.components.motor.CreativeMotorBlock; -import com.simibubi.create.content.contraptions.components.motor.CreativeMotorGenerator; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressBlock; -import com.simibubi.create.content.contraptions.components.saw.SawBlock; -import com.simibubi.create.content.contraptions.components.saw.SawGenerator; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.SailBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedBearingMovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock.ChassisCTBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock.MinecartAnchorBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlockItem; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonHeadBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock; -import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; -import com.simibubi.create.content.contraptions.components.tracks.ControllerRailGenerator; -import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock; -import com.simibubi.create.content.contraptions.components.turntable.TurntableBlock; -import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock; -import com.simibubi.create.content.contraptions.fluids.PipeAttachmentModel; -import com.simibubi.create.content.contraptions.fluids.PumpBlock; -import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyBlock; -import com.simibubi.create.content.contraptions.fluids.actors.ItemDrainBlock; -import com.simibubi.create.content.contraptions.fluids.actors.SpoutBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.BracketBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.BracketBlockItem; -import com.simibubi.create.content.contraptions.fluids.pipes.BracketGenerator; -import com.simibubi.create.content.contraptions.fluids.pipes.EncasedPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidValveBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.GlassFluidPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.SmartFluidPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.SmartFluidPipeGenerator; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankGenerator; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankItem; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankModel; -import com.simibubi.create.content.contraptions.processing.BasinBlock; -import com.simibubi.create.content.contraptions.processing.BasinGenerator; -import com.simibubi.create.content.contraptions.processing.BasinMovementBehaviour; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlockItem; -import com.simibubi.create.content.contraptions.processing.burner.LitBlazeBurnerBlock; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock; -import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; -import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftBlock; -import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftGenerator; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltGenerator; -import com.simibubi.create.content.contraptions.relays.belt.BeltModel; -import com.simibubi.create.content.contraptions.relays.elementary.BracketedKineticBlockModel; -import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; -import com.simibubi.create.content.contraptions.relays.elementary.CogwheelBlockItem; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.content.contraptions.relays.encased.AdjustablePulleyBlock; -import com.simibubi.create.content.contraptions.relays.encased.ClutchBlock; -import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock; -import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltGenerator; -import com.simibubi.create.content.contraptions.relays.encased.EncasedCTBehaviour; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; -import com.simibubi.create.content.contraptions.relays.encased.GearshiftBlock; -import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; -import com.simibubi.create.content.contraptions.relays.gauge.GaugeGenerator; -import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; -import com.simibubi.create.content.curiosities.armor.CopperBacktankBlock; -import com.simibubi.create.content.curiosities.projector.ChromaticProjectorBlock; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; -import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock; -import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelCTBehaviour; -import com.simibubi.create.content.logistics.block.chute.ChuteBlock; -import com.simibubi.create.content.logistics.block.chute.ChuteGenerator; -import com.simibubi.create.content.logistics.block.chute.ChuteItem; -import com.simibubi.create.content.logistics.block.chute.SmartChuteBlock; -import com.simibubi.create.content.logistics.block.depot.DepotBlock; -import com.simibubi.create.content.logistics.block.depot.EjectorBlock; -import com.simibubi.create.content.logistics.block.depot.EjectorItem; -import com.simibubi.create.content.logistics.block.diodes.AbstractDiodeGenerator; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterGenerator; -import com.simibubi.create.content.logistics.block.diodes.PoweredLatchBlock; -import com.simibubi.create.content.logistics.block.diodes.PoweredLatchGenerator; -import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterBlock; -import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterGenerator; -import com.simibubi.create.content.logistics.block.diodes.ToggleLatchBlock; -import com.simibubi.create.content.logistics.block.diodes.ToggleLatchGenerator; -import com.simibubi.create.content.logistics.block.funnel.AndesiteFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.BeltFunnelGenerator; -import com.simibubi.create.content.logistics.block.funnel.BrassFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.FunnelGenerator; -import com.simibubi.create.content.logistics.block.funnel.FunnelItem; -import com.simibubi.create.content.logistics.block.funnel.FunnelMovementBehaviour; -import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; -import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBlock; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmItem; -import com.simibubi.create.content.logistics.block.redstone.AnalogLeverBlock; -import com.simibubi.create.content.logistics.block.redstone.ContactMovementBehaviour; -import com.simibubi.create.content.logistics.block.redstone.ContentObserverBlock; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeBlock; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeGenerator; -import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock; -import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; -import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkGenerator; -import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchBlock; -import com.simibubi.create.content.schematics.block.SchematicTableBlock; -import com.simibubi.create.content.schematics.block.SchematicannonBlock; -import com.simibubi.create.foundation.block.DyedBlockList; -import com.simibubi.create.foundation.block.ItemUseOverrides; -import com.simibubi.create.foundation.config.StressConfigDefaults; -import com.simibubi.create.foundation.data.AssetLookup; -import com.simibubi.create.foundation.data.BlockStateGen; -import com.simibubi.create.foundation.data.BuilderTransformers; -import com.simibubi.create.foundation.data.CreateRegistrate; -import com.simibubi.create.foundation.data.ModelGen; -import com.simibubi.create.foundation.data.SharedProperties; -import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.utility.ColorHandlers; -import com.simibubi.create.foundation.utility.DyeHelper; -import com.simibubi.create.foundation.worldgen.OxidizingBlock; -import com.tterrag.registrate.providers.RegistrateRecipeProvider; -import com.tterrag.registrate.util.entry.BlockEntry; - -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.block.SoundType; -import net.minecraft.block.material.MaterialColor; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.data.ShapedRecipeBuilder; -import net.minecraft.item.DyeColor; -import net.minecraft.item.Item; -import net.minecraft.item.Rarity; -import net.minecraft.loot.ConstantRange; -import net.minecraft.loot.ItemLootEntry; -import net.minecraft.loot.LootPool; -import net.minecraft.loot.LootTable; -import net.minecraft.loot.LootTable.Builder; -import net.minecraft.loot.conditions.ILootCondition.IBuilder; -import net.minecraft.loot.conditions.SurvivesExplosion; -import net.minecraft.loot.functions.CopyName; -import net.minecraft.loot.functions.CopyNbt; -import net.minecraft.state.properties.PistonType; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.generators.ConfiguredModel; -import net.minecraftforge.client.model.generators.ModelFile; -import net.minecraftforge.common.Tags; -import net.minecraftforge.common.ToolType; - -public class AllBlocks { - - private static final CreateRegistrate REGISTRATE = Create.registrate() - .itemGroup(() -> Create.BASE_CREATIVE_TAB); - - // Schematics - - static { - REGISTRATE.startSection(SCHEMATICS); - } - - public static final BlockEntry SCHEMATICANNON = - REGISTRATE.block("schematicannon", SchematicannonBlock::new) - .initialProperties(() -> Blocks.DISPENSER) - .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) - .loot((lt, block) -> { - Builder builder = LootTable.builder(); - IBuilder survivesExplosion = SurvivesExplosion.builder(); - lt.registerLootTable(block, builder.addLootPool(LootPool.builder() - .acceptCondition(survivesExplosion) - .rolls(ConstantRange.of(1)) - .addEntry(ItemLootEntry.builder(AllBlocks.SCHEMATICANNON.get().asItem()) - .acceptFunction(CopyNbt.func_215881_a(CopyNbt.Source.BLOCK_ENTITY) - .func_216056_a("Options", "BlockEntityTag.Options"))))); - }) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry SCHEMATIC_TABLE = - REGISTRATE.block("schematic_table", SchematicTableBlock::new) - .initialProperties(() -> Blocks.LECTERN) - .blockstate((ctx, prov) -> prov.horizontalBlock(ctx.getEntry(), prov.models() - .getExistingFile(ctx.getId()), 0)) - .simpleItem() - .register(); - - // Kinetics - - static { - REGISTRATE.startSection(AllSections.KINETICS); - } - - public static final BlockEntry SHAFT = REGISTRATE.block("shaft", ShaftBlock::new) - .initialProperties(SharedProperties::stone) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate(BlockStateGen.axisBlockProvider(false)) - .onRegister(CreateRegistrate.blockModel(() -> BracketedKineticBlockModel::new)) - .simpleItem() - .register(); - - public static final BlockEntry COGWHEEL = REGISTRATE.block("cogwheel", CogWheelBlock::small) - .initialProperties(SharedProperties::stone) - .transform(StressConfigDefaults.setNoImpact()) - .properties(p -> p.sound(SoundType.WOOD)) - .blockstate(BlockStateGen.axisBlockProvider(false)) - .onRegister(CreateRegistrate.blockModel(() -> BracketedKineticBlockModel::new)) - .item(CogwheelBlockItem::new) - .build() - .register(); - - public static final BlockEntry LARGE_COGWHEEL = - REGISTRATE.block("large_cogwheel", CogWheelBlock::large) - .initialProperties(SharedProperties::stone) - .properties(p -> p.sound(SoundType.WOOD)) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate(BlockStateGen.axisBlockProvider(false)) - .onRegister(CreateRegistrate.blockModel(() -> BracketedKineticBlockModel::new)) - .item(CogwheelBlockItem::new) - .build() - .register(); - - public static final BlockEntry ANDESITE_ENCASED_SHAFT = - REGISTRATE.block("andesite_encased_shaft", EncasedShaftBlock::andesite) - .transform(BuilderTransformers.encasedShaft("andesite", AllSpriteShifts.ANDESITE_CASING)) - .register(); - - public static final BlockEntry BRASS_ENCASED_SHAFT = - REGISTRATE.block("brass_encased_shaft", EncasedShaftBlock::brass) - .transform(BuilderTransformers.encasedShaft("brass", AllSpriteShifts.BRASS_CASING)) - .register(); - - public static final BlockEntry GEARBOX = REGISTRATE.block("gearbox", GearboxBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .transform(StressConfigDefaults.setNoImpact()) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(AllSpriteShifts.ANDESITE_CASING))) - .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.ANDESITE_CASING, - (s, f) -> f.getAxis() == s.get(GearboxBlock.AXIS)))) - .blockstate((c, p) -> axisBlock(c, p, $ -> AssetLookup.partialBaseModel(c, p), true)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry CLUTCH = REGISTRATE.block("clutch", ClutchBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p))) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry GEARSHIFT = REGISTRATE.block("gearshift", GearshiftBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, AssetLookup.forPowered(c, p))) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry ENCASED_CHAIN_DRIVE = - REGISTRATE.block("encased_chain_drive", EncasedBeltBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> p.models() - .getExistingFile(p.modLoc("block/" + c.getName() + "/" + suffix))).generate(c, p)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry ADJUSTABLE_CHAIN_GEARSHIFT = - REGISTRATE.block("adjustable_chain_gearshift", AdjustablePulleyBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate((c, p) -> new EncasedBeltGenerator((state, suffix) -> { - String powered = state.get(AdjustablePulleyBlock.POWERED) ? "_powered" : ""; - return p.models() - .withExistingParent(c.getName() + "_" + suffix + powered, - p.modLoc("block/encased_chain_drive/" + suffix)) - .texture("side", p.modLoc("block/" + c.getName() + powered)); - }).generate(c, p)) - .item() - .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_chain_drive/item")) - .texture("side", p.modLoc("block/" + c.getName()))) - .build() - .register(); - - public static final BlockEntry BELT = REGISTRATE.block("belt", BeltBlock::new) - .initialProperties(SharedProperties.beltMaterial, MaterialColor.GRAY) - .properties(p -> p.sound(SoundType.CLOTH)) - .properties(p -> p.hardnessAndResistance(0.8F)) - .blockstate(new BeltGenerator()::generate) - .transform(StressConfigDefaults.setImpact(1.0)) - .onRegister(CreateRegistrate.blockModel(() -> BeltModel::new)) - .register(); - - public static final BlockEntry CREATIVE_MOTOR = - REGISTRATE.block("creative_motor", CreativeMotorBlock::new) - .initialProperties(SharedProperties::stone) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new CreativeMotorGenerator()::generate) - .transform(StressConfigDefaults.setCapacity(16384.0)) - .item() - .properties(p -> p.rarity(Rarity.EPIC)) - .transform(customItemModel()) - .register(); - - public static final BlockEntry WATER_WHEEL = REGISTRATE.block("water_wheel", WaterWheelBlock::new) - .initialProperties(SharedProperties::wooden) - .properties(AbstractBlock.Properties::nonOpaque) - .blockstate(BlockStateGen.horizontalWheelProvider(false)) - .addLayer(() -> RenderType::getCutoutMipped) - .transform(StressConfigDefaults.setCapacity(16.0)) - .simpleItem() - .register(); - - public static final BlockEntry ENCASED_FAN = REGISTRATE.block("encased_fan", EncasedFanBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate(BlockStateGen.directionalBlockProvider(true)) - .addLayer(() -> RenderType::getCutoutMipped) - .transform(StressConfigDefaults.setCapacity(16.0)) - .transform(StressConfigDefaults.setImpact(2.0)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry NOZZLE = REGISTRATE.block("nozzle", NozzleBlock::new) - .initialProperties(SharedProperties::stone) - .tag(AllBlockTags.BRITTLE.tag) - .blockstate(BlockStateGen.directionalBlockProvider(true)) - .addLayer(() -> RenderType::getCutoutMipped) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry TURNTABLE = REGISTRATE.block("turntable", TurntableBlock::new) - .initialProperties(SharedProperties::wooden) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.standardModel(c, p))) - .transform(StressConfigDefaults.setImpact(4.0)) - .simpleItem() - .register(); - - public static final BlockEntry HAND_CRANK = REGISTRATE.block("hand_crank", HandCrankBlock::new) - .initialProperties(SharedProperties::wooden) - .blockstate(BlockStateGen.directionalBlockProvider(true)) - .transform(StressConfigDefaults.setCapacity(8.0)) - .tag(AllBlockTags.BRITTLE.tag) - .onRegister(ItemUseOverrides::addBlock) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry CUCKOO_CLOCK = - REGISTRATE.block("cuckoo_clock", CuckooClockBlock::regular) - .transform(BuilderTransformers.cuckooClock()) - .register(); - - public static final BlockEntry MYSTERIOUS_CUCKOO_CLOCK = - REGISTRATE.block("mysterious_cuckoo_clock", CuckooClockBlock::mysterious) - .transform(BuilderTransformers.cuckooClock()) - .lang("Cuckoo Clock") - .onRegisterAfter(Item.class, c -> TooltipHelper.referTo(c, CUCKOO_CLOCK)) - .register(); - - public static final BlockEntry MILLSTONE = REGISTRATE.block("millstone", MillstoneBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) - .transform(StressConfigDefaults.setImpact(4.0)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry CRUSHING_WHEEL = - REGISTRATE.block("crushing_wheel", CrushingWheelBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .blockstate(BlockStateGen.axisBlockProvider(false)) - .addLayer(() -> RenderType::getCutoutMipped) - .transform(StressConfigDefaults.setImpact(8.0)) - .simpleItem() - .register(); - - public static final BlockEntry CRUSHING_WHEEL_CONTROLLER = - REGISTRATE.block("crushing_wheel_controller", CrushingWheelControllerBlock::new) - .initialProperties(() -> Blocks.AIR) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) - .forAllStatesExcept(state -> ConfiguredModel.builder() - .modelFile(p.models() - .getExistingFile(p.mcLoc("block/air"))) - .build(), CrushingWheelControllerBlock.FACING)) - .register(); - - public static final BlockEntry MECHANICAL_PRESS = - REGISTRATE.block("mechanical_press", MechanicalPressBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) - .transform(StressConfigDefaults.setImpact(8.0)) - .item(BasinOperatorBlockItem::new) - .transform(customItemModel()) - .register(); - - public static final BlockEntry MECHANICAL_MIXER = - REGISTRATE.block("mechanical_mixer", MechanicalMixerBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) - .addLayer(() -> RenderType::getCutoutMipped) - .transform(StressConfigDefaults.setImpact(4.0)) - .item(BasinOperatorBlockItem::new) - .transform(customItemModel()) - .register(); - - public static final BlockEntry BASIN = REGISTRATE.block("basin", BasinBlock::new) - .initialProperties(SharedProperties::stone) - .properties(p -> p.sound(SoundType.NETHERITE)) - .blockstate(new BasinGenerator()::generate) - .onRegister(addMovementBehaviour(new BasinMovementBehaviour())) - .item() - .transform(customItemModel("_", "block")) - .register(); - - public static final BlockEntry BLAZE_BURNER = - REGISTRATE.block("blaze_burner", BlazeBurnerBlock::new) - .initialProperties(SharedProperties::softMetal) - .properties(p -> p.luminance($ -> 12)) - .addLayer(() -> RenderType::getCutoutMipped) - .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.FAN_HEATERS.tag) - .loot((lt, block) -> lt.registerLootTable(block, BlazeBurnerBlock.buildLootTable())) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) - .item(BlazeBurnerBlockItem::withBlaze) - .model(AssetLookup.customBlockItemModel("blaze_burner", "block_with_blaze")) - .build() - .register(); - - public static final BlockEntry LIT_BLAZE_BURNER = - REGISTRATE.block("lit_blaze_burner", LitBlazeBurnerBlock::new) - .initialProperties(SharedProperties::softMetal) - .properties(p -> p.luminance($ -> 12)) - .addLayer(() -> RenderType::getCutoutMipped) - .tag(AllBlockTags.FAN_TRANSPARENT.tag, AllBlockTags.FAN_HEATERS.tag) - .loot((lt, block) -> lt.registerDropping(block, AllItems.EMPTY_BLAZE_BURNER.get())) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), p.models() - .getExistingFile(p.modLoc("block/blaze_burner/block_with_fire")))) - .register(); - - public static final BlockEntry DEPOT = REGISTRATE.block("depot", DepotBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) - .item() - .transform(customItemModel("_", "block")) - .register(); - - public static final BlockEntry WEIGHTED_EJECTOR = - REGISTRATE.block("weighted_ejector", EjectorBlock::new) - .initialProperties(SharedProperties::stone) - .properties(Block.Properties::nonOpaque) - .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p), 180)) - .transform(StressConfigDefaults.setImpact(2.0)) - .item(EjectorItem::new) - .transform(customItemModel()) - .register(); - - public static final BlockEntry CHUTE = REGISTRATE.block("chute", ChuteBlock::new) - .initialProperties(SharedProperties::softMetal) - .properties(p -> p.sound(SoundType.NETHERITE)) - .addLayer(() -> RenderType::getCutoutMipped) - .blockstate(new ChuteGenerator()::generate) - .item(ChuteItem::new) - .transform(customItemModel("_", "block")) - .register(); - - public static final BlockEntry SMART_CHUTE = REGISTRATE.block("smart_chute", SmartChuteBlock::new) - .initialProperties(SharedProperties::softMetal) - .properties(p -> p.sound(SoundType.NETHERITE)) - .blockstate((c, p) -> BlockStateGen.simpleBlock(c, p, AssetLookup.forPowered(c, p))) - .item() - .transform(customItemModel("_", "block")) - .register(); - - public static final BlockEntry SPEEDOMETER = REGISTRATE.block("speedometer", GaugeBlock::speed) - .initialProperties(SharedProperties::wooden) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate(new GaugeGenerator()::generate) - .item() - .transform(ModelGen.customItemModel("gauge", "_", "item")) - .register(); - - public static final BlockEntry STRESSOMETER = REGISTRATE.block("stressometer", GaugeBlock::stress) - .initialProperties(SharedProperties::wooden) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate(new GaugeGenerator()::generate) - .item() - .transform(ModelGen.customItemModel("gauge", "_", "item")) - .register(); - - public static final BlockEntry WOODEN_BRACKET = REGISTRATE.block("wooden_bracket", BracketBlock::new) - .blockstate(new BracketGenerator("wooden")::generate) - .item(BracketBlockItem::new) - .transform(BracketGenerator.itemModel("wooden")) - .register(); - - public static final BlockEntry METAL_BRACKET = REGISTRATE.block("metal_bracket", BracketBlock::new) - .blockstate(new BracketGenerator("metal")::generate) - .item(BracketBlockItem::new) - .transform(BracketGenerator.itemModel("metal")) - .register(); - - // Fluids - - public static final BlockEntry FLUID_PIPE = REGISTRATE.block("fluid_pipe", FluidPipeBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate(BlockStateGen.pipe()) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry ENCASED_FLUID_PIPE = - REGISTRATE.block("encased_fluid_pipe", EncasedPipeBlock::new) - .initialProperties(SharedProperties::softMetal) - .properties(Block.Properties::nonOpaque) - .blockstate(BlockStateGen.encasedPipe()) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(AllSpriteShifts.COPPER_CASING))) - .onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, AllSpriteShifts.COPPER_CASING, - (s, f) -> !s.get(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(f))))) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) - .loot((p, b) -> p.registerDropping(b, FLUID_PIPE.get())) - .register(); - - public static final BlockEntry GLASS_FLUID_PIPE = - REGISTRATE.block("glass_fluid_pipe", GlassFluidPipeBlock::new) - .initialProperties(SharedProperties::softMetal) - .addLayer(() -> RenderType::getCutoutMipped) - .blockstate((c, p) -> BlockStateGen.axisBlock(c, p, s -> p.models() - .getExistingFile(p.modLoc("block/fluid_pipe/window" + (s.get(GlassFluidPipeBlock.ALT) ? "_alt" : ""))))) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) - .loot((p, b) -> p.registerDropping(b, FLUID_PIPE.get())) - .register(); - - public static final BlockEntry MECHANICAL_PUMP = REGISTRATE.block("mechanical_pump", PumpBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(true)) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) - .transform(StressConfigDefaults.setImpact(4.0)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry SMART_FLUID_PIPE = - REGISTRATE.block("smart_fluid_pipe", SmartFluidPipeBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate(new SmartFluidPipeGenerator()::generate) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry FLUID_VALVE = REGISTRATE.block("fluid_valve", FluidValveBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> BlockStateGen.directionalAxisBlock(c, p, - (state, vertical) -> AssetLookup.partialBaseModel(c, p, vertical ? "vertical" : "horizontal", - state.get(FluidValveBlock.ENABLED) ? "open" : "closed"))) - .onRegister(CreateRegistrate.blockModel(() -> PipeAttachmentModel::new)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry COPPER_VALVE_HANDLE = - REGISTRATE.block("copper_valve_handle", ValveHandleBlock::copper) - .transform(BuilderTransformers.valveHandle(null)) - .register(); - - public static final DyedBlockList DYED_VALVE_HANDLES = new DyedBlockList<>(colour -> { - String colourName = colour.getString(); - return REGISTRATE.block(colourName + "_valve_handle", ValveHandleBlock::dyed) - .transform(BuilderTransformers.valveHandle(colour)) - .recipe((c, p) -> ShapedRecipeBuilder.shapedRecipe(c.get()) - .patternLine("#") - .patternLine("-") - .key('#', DyeHelper.getTagOfDye(colour)) - .key('-', AllItemTags.VALVE_HANDLES.tag) - .addCriterion("has_valve", RegistrateRecipeProvider.hasItem(AllItemTags.VALVE_HANDLES.tag)) - .build(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_valve_handle"))) - .register(); - }); - - public static final BlockEntry FLUID_TANK = REGISTRATE.block("fluid_tank", FluidTankBlock::regular) - .initialProperties(SharedProperties::softMetal) - .properties(AbstractBlock.Properties::nonOpaque) - .blockstate(new FluidTankGenerator()::generate) - .onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::standard)) - .addLayer(() -> RenderType::getCutoutMipped) - .item(FluidTankItem::new) - .model(AssetLookup.customBlockItemModel("_", "block_single_window")) - .build() - .register(); - - public static final BlockEntry CREATIVE_FLUID_TANK = - REGISTRATE.block("creative_fluid_tank", FluidTankBlock::creative) - .initialProperties(SharedProperties::softMetal) - .tag(AllBlockTags.SAFE_NBT.tag) - .properties(Block.Properties::nonOpaque) - .blockstate(new FluidTankGenerator("creative_")::generate) - .onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::creative)) - .addLayer(() -> RenderType::getCutoutMipped) - .item(FluidTankItem::new) - .properties(p -> p.rarity(Rarity.EPIC)) - .model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/fluid_tank/block_single_window")) - .texture("5", p.modLoc("block/creative_fluid_tank_window_single")) - .texture("1", p.modLoc("block/creative_fluid_tank")) - .texture("0", p.modLoc("block/creative_casing"))) - .build() - .register(); - - public static final BlockEntry HOSE_PULLEY = REGISTRATE.block("hose_pulley", HosePulleyBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) - .transform(StressConfigDefaults.setImpact(4.0)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry ITEM_DRAIN = REGISTRATE.block("item_drain", ItemDrainBlock::new) - .initialProperties(SharedProperties::softMetal) - .addLayer(() -> RenderType::getCutoutMipped) - .blockstate((c, p) -> p.simpleBlock(c.get(), AssetLookup.standardModel(c, p))) - .simpleItem() - .register(); - - public static final BlockEntry SPOUT = REGISTRATE.block("spout", SpoutBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate((ctx, prov) -> prov.simpleBlock(ctx.getEntry(), AssetLookup.partialBaseModel(ctx, prov))) - .addLayer(() -> RenderType::getCutoutMipped) - .item(BasinOperatorBlockItem::new) - .transform(customItemModel()) - .register(); - - public static final BlockEntry PORTABLE_FLUID_INTERFACE = - REGISTRATE.block("portable_fluid_interface", PortableStorageInterfaceBlock::forFluids) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) - .onRegister(addMovementBehaviour(new PortableStorageInterfaceMovement())) - .item() - .transform(customItemModel()) - .register(); - - // Contraptions - - public static final BlockEntry MECHANICAL_PISTON = - REGISTRATE.block("mechanical_piston", MechanicalPistonBlock::normal) - .transform(BuilderTransformers.mechanicalPiston(PistonType.DEFAULT)) - .tag(AllBlockTags.SAFE_NBT.tag) - .register(); - - public static final BlockEntry STICKY_MECHANICAL_PISTON = - REGISTRATE.block("sticky_mechanical_piston", MechanicalPistonBlock::sticky) - .transform(BuilderTransformers.mechanicalPiston(PistonType.STICKY)) - .tag(AllBlockTags.SAFE_NBT.tag) - .register(); - - public static final BlockEntry PISTON_EXTENSION_POLE = - REGISTRATE.block("piston_extension_pole", PistonExtensionPoleBlock::new) - .initialProperties(() -> Blocks.PISTON_HEAD) - .blockstate(BlockStateGen.directionalBlockProviderIgnoresWaterlogged(false)) - .simpleItem() - .register(); - - public static final BlockEntry MECHANICAL_PISTON_HEAD = - REGISTRATE.block("mechanical_piston_head", MechanicalPistonHeadBlock::new) - .initialProperties(() -> Blocks.PISTON_HEAD) - .loot((p, b) -> p.registerDropping(b, PISTON_EXTENSION_POLE.get())) - .blockstate((c, p) -> BlockStateGen.directionalBlockIgnoresWaterlogged(c, p, state -> p.models() - .getExistingFile(p.modLoc("block/mechanical_piston/" + state.get(MechanicalPistonHeadBlock.TYPE) - .getString() + "/head")))) - .register(); - - public static final BlockEntry GANTRY_CARRIAGE = - REGISTRATE.block("gantry_carriage", GantryCarriageBlock::new) - .initialProperties(SharedProperties::stone) - .properties(Block.Properties::nonOpaque) - .blockstate(BlockStateGen.directionalAxisBlockProvider()) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry GANTRY_SHAFT = - REGISTRATE.block("gantry_shaft", GantryShaftBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.directionalBlock(c.get(), s -> { - boolean isPowered = s.get(GantryShaftBlock.POWERED); - boolean isFlipped = s.get(GantryShaftBlock.FACING) - .getAxisDirection() == AxisDirection.NEGATIVE; - String partName = s.get(GantryShaftBlock.PART) - .getString(); - String flipped = isFlipped ? "_flipped" : ""; - String powered = isPowered ? "_powered" : ""; - ModelFile existing = AssetLookup.partialBaseModel(c, p, partName); - if (!isPowered && !isFlipped) - return existing; - return p.models() - .withExistingParent("block/" + c.getName() + "_" + partName + powered + flipped, - existing.getLocation()) - .texture("2", p.modLoc("block/" + c.getName() + powered + flipped)); - })) - .item() - .transform(customItemModel("_", "block_single")) - .register(); - - public static final BlockEntry WINDMILL_BEARING = - REGISTRATE.block("windmill_bearing", WindmillBearingBlock::new) - .transform(BuilderTransformers.bearing("windmill", "gearbox", true)) - .transform(StressConfigDefaults.setCapacity(512.0)) - .tag(AllBlockTags.SAFE_NBT.tag) - .register(); - - public static final BlockEntry MECHANICAL_BEARING = - REGISTRATE.block("mechanical_bearing", MechanicalBearingBlock::new) - .transform(BuilderTransformers.bearing("mechanical", "gearbox", false)) - .transform(StressConfigDefaults.setImpact(4.0)) - .tag(AllBlockTags.SAFE_NBT.tag) - .onRegister(addMovementBehaviour(new StabilizedBearingMovementBehaviour())) - .register(); - - public static final BlockEntry CLOCKWORK_BEARING = - REGISTRATE.block("clockwork_bearing", ClockworkBearingBlock::new) - .transform(BuilderTransformers.bearing("clockwork", "brass_gearbox", false)) - .transform(StressConfigDefaults.setImpact(4.0)) - .tag(AllBlockTags.SAFE_NBT.tag) - .register(); - - public static final BlockEntry ROPE_PULLEY = REGISTRATE.block("rope_pulley", PulleyBlock::new) - .initialProperties(SharedProperties::stone) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(BlockStateGen.horizontalAxisBlockProvider(true)) - .transform(StressConfigDefaults.setImpact(4.0)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry ROPE = REGISTRATE.block("rope", PulleyBlock.RopeBlock::new) - .initialProperties(SharedProperties.beltMaterial, MaterialColor.BROWN) - .tag(AllBlockTags.BRITTLE.tag) - .properties(p -> p.sound(SoundType.CLOTH)) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() - .getExistingFile(p.modLoc("block/rope_pulley/" + c.getName())))) - .register(); - - public static final BlockEntry PULLEY_MAGNET = - REGISTRATE.block("pulley_magnet", PulleyBlock.MagnetBlock::new) - .initialProperties(SharedProperties::stone) - .tag(AllBlockTags.BRITTLE.tag) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() - .getExistingFile(p.modLoc("block/rope_pulley/" + c.getName())))) - .register(); - - public static final BlockEntry CART_ASSEMBLER = - REGISTRATE.block("cart_assembler", CartAssemblerBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .blockstate(BlockStateGen.cartAssembler()) - .addLayer(() -> RenderType::getCutoutMipped) - .tag(BlockTags.RAILS, AllBlockTags.SAFE_NBT.tag) - .item(CartAssemblerBlockItem::new) - .transform(customItemModel()) - .register(); - - public static final BlockEntry REINFORCED_RAIL = - REGISTRATE.block("reinforced_rail", ReinforcedRailBlock::new) - .initialProperties(SharedProperties::stone) - .properties(AbstractBlock.Properties::nonOpaque) - .blockstate(BlockStateGen.reinforcedRail()) - .addLayer(() -> RenderType::getCutoutMipped) - .tag(BlockTags.RAILS) - .item() - .model((c, p) -> p.blockItem(() -> c.getEntry() - .getBlock(), "/block")) - .build() - .register(); - - public static final BlockEntry CONTROLLER_RAIL = - REGISTRATE.block("controller_rail", ControllerRailBlock::new) - .initialProperties(() -> Blocks.POWERED_RAIL) - .blockstate(new ControllerRailGenerator()::generate) - .addLayer(() -> RenderType::getCutoutMipped) - .color(() -> ColorHandlers::getRedstonePower) - .tag(BlockTags.RAILS) - .item() - .model((c, p) -> p.generated(c, Create.asResource("block/" + c.getName()))) - .build() - .register(); - - public static final BlockEntry MINECART_ANCHOR = - REGISTRATE.block("minecart_anchor", MinecartAnchorBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() - .getExistingFile(p.modLoc("block/cart_assembler/" + c.getName())))) - .register(); - - public static final BlockEntry LINEAR_CHASSIS = - REGISTRATE.block("linear_chassis", LinearChassisBlock::new) - .initialProperties(SharedProperties::wooden) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(BlockStateGen.linearChassis()) - .onRegister(connectedTextures(new ChassisCTBehaviour())) - .lang("Linear Chassis") - .simpleItem() - .register(); - - public static final BlockEntry SECONDARY_LINEAR_CHASSIS = - REGISTRATE.block("secondary_linear_chassis", LinearChassisBlock::new) - .initialProperties(SharedProperties::wooden) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(BlockStateGen.linearChassis()) - .onRegister(connectedTextures(new ChassisCTBehaviour())) - .simpleItem() - .register(); - - public static final BlockEntry RADIAL_CHASSIS = - REGISTRATE.block("radial_chassis", RadialChassisBlock::new) - .initialProperties(SharedProperties::wooden) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(BlockStateGen.radialChassis()) - .item() - .model((c, p) -> { - String path = "block/" + c.getName(); - p.cubeColumn(c.getName(), p.modLoc(path + "_side"), p.modLoc(path + "_end")); - }) - .build() - .register(); - - public static final BlockEntry STICKER = REGISTRATE.block("sticker", StickerBlock::new) - .initialProperties(SharedProperties::stone) - .properties(Block.Properties::nonOpaque) - .addLayer(() -> RenderType::getCutoutMipped) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry MECHANICAL_DRILL = REGISTRATE.block("mechanical_drill", DrillBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate(BlockStateGen.directionalBlockProvider(true)) - .transform(StressConfigDefaults.setImpact(4.0)) - .onRegister(addMovementBehaviour(new DrillMovementBehaviour())) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry MECHANICAL_SAW = REGISTRATE.block("mechanical_saw", SawBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate(new SawGenerator()::generate) - .transform(StressConfigDefaults.setImpact(4.0)) - .onRegister(addMovementBehaviour(new SawMovementBehaviour())) - .addLayer(() -> RenderType::getCutoutMipped) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry DEPLOYER = REGISTRATE.block("deployer", DeployerBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate(BlockStateGen.directionalAxisBlockProvider()) - .transform(StressConfigDefaults.setImpact(4.0)) - .onRegister(addMovementBehaviour(new DeployerMovementBehaviour())) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry PORTABLE_STORAGE_INTERFACE = - REGISTRATE.block("portable_storage_interface", PortableStorageInterfaceBlock::forItems) - .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.partialBaseModel(c, p))) - .onRegister(addMovementBehaviour(new PortableStorageInterfaceMovement())) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry REDSTONE_CONTACT = - REGISTRATE.block("redstone_contact", RedstoneContactBlock::new) - .initialProperties(SharedProperties::stone) - .onRegister(addMovementBehaviour(new ContactMovementBehaviour())) - .blockstate((c, p) -> p.directionalBlock(c.get(), AssetLookup.forPowered(c, p))) - .item() - .transform(customItemModel("_", "block")) - .register(); - - public static final BlockEntry MECHANICAL_HARVESTER = - REGISTRATE.block("mechanical_harvester", HarvesterBlock::new) - .initialProperties(SharedProperties::stone) - .onRegister(addMovementBehaviour(new HarvesterMovementBehaviour())) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) - .addLayer(() -> RenderType::getCutoutMipped) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry MECHANICAL_PLOUGH = - REGISTRATE.block("mechanical_plough", PloughBlock::new) - .initialProperties(SharedProperties::stone) - .onRegister(addMovementBehaviour(new PloughMovementBehaviour())) - .blockstate(BlockStateGen.horizontalBlockProvider(false)) - .simpleItem() - .register(); - - public static final DyedBlockList SEATS = new DyedBlockList<>(colour -> { - String colourName = colour.getString(); - SeatMovementBehaviour movementBehaviour = new SeatMovementBehaviour(); - return REGISTRATE.block(colourName + "_seat", p -> new SeatBlock(p, colour == DyeColor.RED)) - .initialProperties(SharedProperties::wooden) - .onRegister(addMovementBehaviour(movementBehaviour)) - .blockstate((c, p) -> { - p.simpleBlock(c.get(), p.models() - .withExistingParent(colourName + "_seat", p.modLoc("block/seat")) - .texture("1", p.modLoc("block/seat/top_" + colourName)) - .texture("2", p.modLoc("block/seat/side_" + colourName))); - }) - .recipe((c, p) -> { - ShapedRecipeBuilder.shapedRecipe(c.get()) - .patternLine("#") - .patternLine("-") - .key('#', DyeHelper.getWoolOfDye(colour)) - .key('-', ItemTags.WOODEN_SLABS) - .addCriterion("has_wool", RegistrateRecipeProvider.hasItem(ItemTags.WOOL)) - .build(p, Create.asResource("crafting/kinetics/" + c.getName())); - ShapedRecipeBuilder.shapedRecipe(c.get()) - .patternLine("#") - .patternLine("-") - .key('#', DyeHelper.getTagOfDye(colour)) - .key('-', AllItemTags.SEATS.tag) - .addCriterion("has_seat", RegistrateRecipeProvider.hasItem(AllItemTags.SEATS.tag)) - .build(p, Create.asResource("crafting/kinetics/" + c.getName() + "_from_other_seat")); - }) - .onRegisterAfter(Item.class, v -> TooltipHelper.referTo(v, "block.create.seat")) - .tag(AllBlockTags.SEATS.tag) - .item() - .tag(AllItemTags.SEATS.tag) - .build() - .register(); - }); - - public static final BlockEntry SAIL_FRAME = REGISTRATE.block("sail_frame", p -> SailBlock.frame(p)) - .initialProperties(SharedProperties::wooden) - .properties(Block.Properties::nonOpaque) - .blockstate(BlockStateGen.directionalBlockProvider(false)) - .tag(AllBlockTags.WINDMILL_SAILS.tag) - .tag(AllBlockTags.FAN_TRANSPARENT.tag) - .simpleItem() - .register(); - - public static final BlockEntry SAIL = REGISTRATE.block("white_sail", p -> SailBlock.withCanvas(p)) - .initialProperties(SharedProperties::wooden) - .properties(Block.Properties::nonOpaque) - .blockstate(BlockStateGen.directionalBlockProvider(false)) - .tag(AllBlockTags.WINDMILL_SAILS.tag) - .simpleItem() - .register(); - - public static final DyedBlockList DYED_SAILS = new DyedBlockList<>(colour -> { - if (colour == DyeColor.WHITE) { - return SAIL; - } - String colourName = colour.getString(); - return REGISTRATE.block(colourName + "_sail", p -> SailBlock.withCanvas(p)) - .properties(Block.Properties::nonOpaque) - .initialProperties(SharedProperties::wooden) - .blockstate((c, p) -> p.directionalBlock(c.get(), p.models() - .withExistingParent(colourName + "_sail", p.modLoc("block/white_sail")) - .texture("0", p.modLoc("block/sail/canvas_" + colourName)))) - .tag(AllBlockTags.WINDMILL_SAILS.tag) - .tag(AllBlockTags.SAILS.tag) - .loot((p, b) -> p.registerDropping(b, SAIL.get())) - .register(); - }); - - public static final BlockEntry ANDESITE_CASING = REGISTRATE.block("andesite_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.ANDESITE_CASING)) - .register(); - - public static final BlockEntry BRASS_CASING = REGISTRATE.block("brass_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.BRASS_CASING)) - .register(); - - public static final BlockEntry COPPER_CASING = REGISTRATE.block("copper_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.COPPER_CASING)) - .register(); - - public static final BlockEntry SHADOW_STEEL_CASING = - REGISTRATE.block("shadow_steel_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.SHADOW_STEEL_CASING)) - .lang("Shadow Casing") - .register(); - - public static final BlockEntry REFINED_RADIANCE_CASING = - REGISTRATE.block("refined_radiance_casing", CasingBlock::new) - .transform(BuilderTransformers.casing(AllSpriteShifts.REFINED_RADIANCE_CASING)) - .properties(p -> p.luminance($ -> 12)) - .lang("Radiant Casing") - .register(); - - public static final BlockEntry MECHANICAL_CRAFTER = - REGISTRATE.block("mechanical_crafter", MechanicalCrafterBlock::new) - .initialProperties(SharedProperties::softMetal) - .properties(AbstractBlock.Properties::nonOpaque) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) - .transform(StressConfigDefaults.setImpact(2.0)) - .onRegister(CreateRegistrate.connectedTextures(new CrafterCTBehaviour())) - .addLayer(() -> RenderType::getCutoutMipped) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry SEQUENCED_GEARSHIFT = - REGISTRATE.block("sequenced_gearshift", SequencedGearshiftBlock::new) - .initialProperties(SharedProperties::stone) - .tag(AllBlockTags.SAFE_NBT.tag) - .properties(AbstractBlock.Properties::nonOpaque) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate(new SequencedGearshiftGenerator()::generate) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry FLYWHEEL = REGISTRATE.block("flywheel", FlywheelBlock::new) - .initialProperties(SharedProperties::softMetal) - .properties(AbstractBlock.Properties::nonOpaque) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate(new FlywheelGenerator()::generate) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry FURNACE_ENGINE = - REGISTRATE.block("furnace_engine", FurnaceEngineBlock::new) - .initialProperties(SharedProperties::softMetal) - .tag(AllBlockTags.BRITTLE.tag) - .blockstate(BlockStateGen.horizontalBlockProvider(true)) - .transform(StressConfigDefaults.setCapacity(1024.0)) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry ROTATION_SPEED_CONTROLLER = - REGISTRATE.block("rotation_speed_controller", SpeedControllerBlock::new) - .initialProperties(SharedProperties::softMetal) - .tag(AllBlockTags.SAFE_NBT.tag) - .transform(StressConfigDefaults.setNoImpact()) - .blockstate(BlockStateGen.horizontalAxisBlockProvider(true)) - .item() - .transform(customItemModel()) - .register(); - - // Logistics - - static { - REGISTRATE.startSection(AllSections.LOGISTICS); - } - - public static final BlockEntry MECHANICAL_ARM = REGISTRATE.block("mechanical_arm", ArmBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(s -> ConfiguredModel.builder() - .modelFile(AssetLookup.partialBaseModel(c, p)) - .rotationX(s.get(ArmBlock.CEILING) ? 180 : 0) - .build())) - .transform(StressConfigDefaults.setImpact(8.0)) - .item(ArmItem::new) - .transform(customItemModel()) - .register(); - - public static final BlockEntry ANDESITE_FUNNEL = - REGISTRATE.block("andesite_funnel", AndesiteFunnelBlock::new) - .initialProperties(SharedProperties::stone) - .tag(AllBlockTags.SAFE_NBT.tag) - .onRegister(addMovementBehaviour(FunnelMovementBehaviour.andesite())) - .blockstate(new FunnelGenerator("andesite", false)::generate) - .item(FunnelItem::new) - .model(FunnelGenerator.itemModel("andesite")) - .build() - .register(); - - public static final BlockEntry ANDESITE_BELT_FUNNEL = - REGISTRATE.block("andesite_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.ANDESITE_FUNNEL, p)) - .initialProperties(SharedProperties::stone) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new BeltFunnelGenerator("andesite", new ResourceLocation("block/polished_andesite"))::generate) - .loot((p, b) -> p.registerDropping(b, ANDESITE_FUNNEL.get())) - .register(); - - public static final BlockEntry BRASS_FUNNEL = - REGISTRATE.block("brass_funnel", BrassFunnelBlock::new) - .initialProperties(SharedProperties::softMetal) - .tag(AllBlockTags.SAFE_NBT.tag) - .onRegister(addMovementBehaviour(FunnelMovementBehaviour.brass())) - .blockstate(new FunnelGenerator("brass", true)::generate) - .item(FunnelItem::new) - .model(FunnelGenerator.itemModel("brass")) - .build() - .register(); - - public static final BlockEntry BRASS_BELT_FUNNEL = - REGISTRATE.block("brass_belt_funnel", p -> new BeltFunnelBlock(AllBlocks.BRASS_FUNNEL, p)) - .initialProperties(SharedProperties::softMetal) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new BeltFunnelGenerator("brass", Create.asResource("block/brass_block"))::generate) - .loot((p, b) -> p.registerDropping(b, BRASS_FUNNEL.get())) - .register(); - - public static final BlockEntry ANDESITE_TUNNEL = - REGISTRATE.block("andesite_tunnel", BeltTunnelBlock::new) - .transform(BuilderTransformers.beltTunnel("andesite", new ResourceLocation("block/polished_andesite"))) - .register(); - - public static final BlockEntry BRASS_TUNNEL = - REGISTRATE.block("brass_tunnel", BrassTunnelBlock::new) - .transform(BuilderTransformers.beltTunnel("brass", Create.asResource("block/brass_block"))) - .onRegister(connectedTextures(new BrassTunnelCTBehaviour())) - .register(); - - public static final BlockEntry CONTENT_OBSERVER = - REGISTRATE.block("content_observer", ContentObserverBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.forPowered(c, p))) - .item() - .transform(customItemModel("_", "block")) - .register(); - - public static final BlockEntry STOCKPILE_SWITCH = - REGISTRATE.block("stockpile_switch", StockpileSwitchBlock::new) - .initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.horizontalBlock(c.get(), - AssetLookup.withIndicator(c, p, $ -> AssetLookup.standardModel(c, p), StockpileSwitchBlock.INDICATOR))) - .simpleItem() - .register(); - - public static final BlockEntry ADJUSTABLE_CRATE = - REGISTRATE.block("adjustable_crate", AdjustableCrateBlock::new) - .transform(BuilderTransformers.crate("brass")) - .register(); - - public static final BlockEntry CREATIVE_CRATE = - REGISTRATE.block("creative_crate", CreativeCrateBlock::new) - .transform(BuilderTransformers.crate("creative")) - .tag(AllBlockTags.SAFE_NBT.tag) - .register(); - - public static final BlockEntry NIXIE_TUBE = REGISTRATE.block("nixie_tube", NixieTubeBlock::new) - .initialProperties(SharedProperties::softMetal) - .properties(p -> p.luminance($ -> 5)) - .blockstate(new NixieTubeGenerator()::generate) - .addLayer(() -> RenderType::getTranslucent) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry REDSTONE_LINK = - REGISTRATE.block("redstone_link", RedstoneLinkBlock::new) - .initialProperties(SharedProperties::wooden) - .tag(AllBlockTags.BRITTLE.tag, AllBlockTags.SAFE_NBT.tag) - .blockstate(new RedstoneLinkGenerator()::generate) - .addLayer(() -> RenderType::getCutoutMipped) - .item() - .transform(customItemModel("_", "transmitter")) - .register(); - - public static final BlockEntry ANALOG_LEVER = - REGISTRATE.block("analog_lever", AnalogLeverBlock::new) - .initialProperties(() -> Blocks.LEVER) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate((c, p) -> p.horizontalFaceBlock(c.get(), AssetLookup.partialBaseModel(c, p))) - .onRegister(ItemUseOverrides::addBlock) - .item() - .transform(customItemModel()) - .register(); - - public static final BlockEntry PULSE_REPEATER = - REGISTRATE.block("pulse_repeater", PulseRepeaterBlock::new) - .initialProperties(() -> Blocks.REPEATER) - .blockstate(new PulseRepeaterGenerator()::generate) - .addLayer(() -> RenderType::getCutoutMipped) - .item() - .transform(customItemModel("diodes", "pulse_repeater")) - .register(); - - public static final BlockEntry ADJUSTABLE_REPEATER = - REGISTRATE.block("adjustable_repeater", AdjustableRepeaterBlock::new) - .initialProperties(() -> Blocks.REPEATER) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new AdjustableRepeaterGenerator()::generate) - .item() - .model(AbstractDiodeGenerator.diodeItemModel(true)) - .build() - .register(); - - public static final BlockEntry ADJUSTABLE_PULSE_REPEATER = - REGISTRATE.block("adjustable_pulse_repeater", AdjustableRepeaterBlock::new) - .initialProperties(() -> Blocks.REPEATER) - .tag(AllBlockTags.SAFE_NBT.tag) - .blockstate(new AdjustableRepeaterGenerator()::generate) - .addLayer(() -> RenderType::getCutoutMipped) - .item() - .model(AbstractDiodeGenerator.diodeItemModel(true)) - .build() - .register(); - - public static final BlockEntry POWERED_LATCH = - REGISTRATE.block("powered_latch", PoweredLatchBlock::new) - .initialProperties(() -> Blocks.REPEATER) - .blockstate(new PoweredLatchGenerator()::generate) - .addLayer(() -> RenderType::getCutoutMipped) - .simpleItem() - .register(); - - public static final BlockEntry POWERED_TOGGLE_LATCH = - REGISTRATE.block("powered_toggle_latch", ToggleLatchBlock::new) - .initialProperties(() -> Blocks.REPEATER) - .blockstate(new ToggleLatchGenerator()::generate) - .addLayer(() -> RenderType::getCutoutMipped) - .item() - .transform(customItemModel("diodes", "latch_off")) - .register(); - - // Curiosities - - static { - REGISTRATE.startSection(AllSections.CURIOSITIES); - } - - public static final BlockEntry COPPER_BACKTANK = - REGISTRATE.block("copper_backtank", CopperBacktankBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) - .addLayer(() -> RenderType::getCutoutMipped) - .transform(StressConfigDefaults.setImpact(4.0)) - .loot((lt, block) -> { - Builder builder = LootTable.builder(); - IBuilder survivesExplosion = SurvivesExplosion.builder(); - lt.registerLootTable(block, builder.addLootPool(LootPool.builder() - .acceptCondition(survivesExplosion) - .rolls(ConstantRange.of(1)) - .addEntry(ItemLootEntry.builder(AllItems.COPPER_BACKTANK.get()) - .acceptFunction(CopyName.builder(CopyName.Source.BLOCK_ENTITY)) - .acceptFunction(CopyNbt.func_215881_a(CopyNbt.Source.BLOCK_ENTITY) - .func_216056_a("Air", "Air"))))); - }) - .register(); - - public static final BlockEntry CHROMATIC_PROJECTOR = - REGISTRATE.block("chromatic_projector", ChromaticProjectorBlock::new) - .initialProperties(() -> Blocks.IRON_BLOCK) - .item() - .build() - .register(); - - // Materials - - static { - REGISTRATE.startSection(AllSections.MATERIALS); - } - - public static final BlockEntry COPPER_ORE = - REGISTRATE.block("copper_ore", p -> new OxidizingBlock(p, 1)) - .initialProperties(() -> Blocks.IRON_ORE) - .transform(oxidizedBlockstate()) - .tag(Tags.Blocks.ORES) - .transform(tagBlockAndItem("ores/copper")) - .tag(Tags.Items.ORES) - .transform(oxidizedItemModel()) - .register(); - - public static final BlockEntry ZINC_ORE = REGISTRATE.block("zinc_ore", Block::new) - .initialProperties(() -> Blocks.GOLD_BLOCK) - .properties(p -> p.harvestLevel(2) - .harvestTool(ToolType.PICKAXE) - .sound(SoundType.STONE)) - .tag(Tags.Blocks.ORES) - .transform(tagBlockAndItem("ores/zinc")) - .tag(Tags.Items.ORES) - .build() - .register(); - - public static final BlockEntry COPPER_BLOCK = - REGISTRATE.block("copper_block", p -> new OxidizingBlock(p, 1 / 32f)) - .initialProperties(() -> Blocks.IRON_BLOCK) - .tag(Tags.Blocks.STORAGE_BLOCKS) - .tag(BlockTags.BEACON_BASE_BLOCKS) - .transform(tagBlockAndItem("storage_blocks/copper")) - .tag(Tags.Items.STORAGE_BLOCKS) - .transform(oxidizedItemModel()) - .transform(oxidizedBlockstate()) - .lang("Block of Copper") - .register(); - - public static final BlockEntry COPPER_SHINGLES = - REGISTRATE.block("copper_shingles", p -> new OxidizingBlock(p, 1 / 32f)) - .initialProperties(() -> Blocks.IRON_BLOCK) - .item() - .transform(oxidizedItemModel()) - .transform(oxidizedBlockstate()) - .register(); - - public static final BlockEntry COPPER_TILES = - REGISTRATE.block("copper_tiles", p -> new OxidizingBlock(p, 1 / 32f)) - .initialProperties(() -> Blocks.IRON_BLOCK) - .item() - .transform(oxidizedItemModel()) - .transform(oxidizedBlockstate()) - .register(); - - public static final BlockEntry ZINC_BLOCK = REGISTRATE.block("zinc_block", p -> new Block(p)) - .initialProperties(() -> Blocks.IRON_BLOCK) - .tag(Tags.Blocks.STORAGE_BLOCKS) - .tag(BlockTags.BEACON_BASE_BLOCKS) - .transform(tagBlockAndItem("storage_blocks/zinc")) - .tag(Tags.Items.STORAGE_BLOCKS) - .build() - .lang("Block of Zinc") - .register(); - - public static final BlockEntry BRASS_BLOCK = REGISTRATE.block("brass_block", p -> new Block(p)) - .initialProperties(() -> Blocks.IRON_BLOCK) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() - .cubeAll(c.getName(), p.modLoc("block/brass_storage_block")))) - .tag(Tags.Blocks.STORAGE_BLOCKS) - .tag(BlockTags.BEACON_BASE_BLOCKS) - .transform(tagBlockAndItem("storage_blocks/brass")) - .tag(Tags.Items.STORAGE_BLOCKS) - .build() - .lang("Block of Brass") - .register(); - - // Load this class - - public static void register() {} - -} diff --git a/src/main/java/com/simibubi/create/AllColorHandlers.java b/src/main/java/com/simibubi/create/AllColorHandlers.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/main/java/com/simibubi/create/AllContainerTypes.java b/src/main/java/com/simibubi/create/AllContainerTypes.java deleted file mode 100644 index 05e81923f..000000000 --- a/src/main/java/com/simibubi/create/AllContainerTypes.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simibubi.create; - -import com.simibubi.create.content.curiosities.tools.BlueprintContainer; -import com.simibubi.create.content.curiosities.tools.BlueprintScreen; -import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateContainer; -import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateScreen; -import com.simibubi.create.content.logistics.item.LinkedControllerContainer; -import com.simibubi.create.content.logistics.item.LinkedControllerScreen; -import com.simibubi.create.content.logistics.item.filter.AttributeFilterContainer; -import com.simibubi.create.content.logistics.item.filter.AttributeFilterScreen; -import com.simibubi.create.content.logistics.item.filter.FilterContainer; -import com.simibubi.create.content.logistics.item.filter.FilterScreen; -import com.simibubi.create.content.schematics.block.SchematicTableContainer; -import com.simibubi.create.content.schematics.block.SchematicTableScreen; -import com.simibubi.create.content.schematics.block.SchematicannonContainer; -import com.simibubi.create.content.schematics.block.SchematicannonScreen; -import com.tterrag.registrate.builders.ContainerBuilder.ForgeContainerFactory; -import com.tterrag.registrate.builders.ContainerBuilder.ScreenFactory; -import com.tterrag.registrate.util.entry.ContainerEntry; -import com.tterrag.registrate.util.nullness.NonNullSupplier; - -import net.minecraft.client.gui.IHasContainer; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.inventory.container.Container; - -public class AllContainerTypes { - - public static final ContainerEntry SCHEMATIC_TABLE = - register("schematic_table", SchematicTableContainer::new, () -> SchematicTableScreen::new); - - public static final ContainerEntry SCHEMATICANNON = - register("schematicannon", SchematicannonContainer::new, () -> SchematicannonScreen::new); - - public static final ContainerEntry FLEXCRATE = - register("flexcrate", AdjustableCrateContainer::new, () -> AdjustableCrateScreen::new); - - public static final ContainerEntry FILTER = - register("filter", FilterContainer::new, () -> FilterScreen::new); - - public static final ContainerEntry ATTRIBUTE_FILTER = - register("attribute_filter", AttributeFilterContainer::new, () -> AttributeFilterScreen::new); - - public static final ContainerEntry CRAFTING_BLUEPRINT = - register("crafting_blueprint", BlueprintContainer::new, () -> BlueprintScreen::new); - - public static final ContainerEntry LINKED_CONTROLLER = - register("linked_controller", LinkedControllerContainer::new, () -> LinkedControllerScreen::new); - - private static > ContainerEntry register(String name, ForgeContainerFactory factory, NonNullSupplier> screenFactory) { - return Create.registrate().container(name, factory, screenFactory).register(); - } - - public static void register() { - } - -} diff --git a/src/main/java/com/simibubi/create/AllEntityTypes.java b/src/main/java/com/simibubi/create/AllEntityTypes.java deleted file mode 100644 index ea56c02f9..000000000 --- a/src/main/java/com/simibubi/create/AllEntityTypes.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.simibubi.create; - -import com.simibubi.create.content.contraptions.components.actors.SeatEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionEntityRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntityRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueRenderer; -import com.simibubi.create.content.curiosities.tools.BlueprintEntity; -import com.simibubi.create.content.curiosities.tools.BlueprintRenderer; -import com.simibubi.create.foundation.utility.Lang; -import com.tterrag.registrate.util.entry.EntityEntry; -import com.tterrag.registrate.util.nullness.NonNullConsumer; -import com.tterrag.registrate.util.nullness.NonNullSupplier; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityClassification; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.EntityType.IFactory; -import net.minecraftforge.fml.client.registry.IRenderFactory; - -public class AllEntityTypes { - - public static final EntityEntry ORIENTED_CONTRAPTION = - contraption("contraption", OrientedContraptionEntity::new, () -> OrientedContraptionEntityRenderer::new, - 5, 3, true); - public static final EntityEntry CONTROLLED_CONTRAPTION = - contraption("stationary_contraption", ControlledContraptionEntity::new, () -> ContraptionEntityRenderer::new, - 20, 40, false); - public static final EntityEntry GANTRY_CONTRAPTION = - contraption("gantry_contraption", GantryContraptionEntity::new, () -> ContraptionEntityRenderer::new, - 10, 40, false); - - public static final EntityEntry SUPER_GLUE = - register("super_glue", SuperGlueEntity::new, () -> SuperGlueRenderer::new, - EntityClassification.MISC, 10, Integer.MAX_VALUE, false, true, SuperGlueEntity::build); - - public static final EntityEntry CRAFTING_BLUEPRINT = - register("crafting_blueprint", BlueprintEntity::new, () -> BlueprintRenderer::new, - EntityClassification.MISC, 10, Integer.MAX_VALUE, false, true, BlueprintEntity::build); - - public static final EntityEntry SEAT = - register("seat", SeatEntity::new, () -> SeatEntity.Render::new, - EntityClassification.MISC, 0, Integer.MAX_VALUE, false, true, SeatEntity::build); - - // - - private static EntityEntry contraption(String name, IFactory factory, - NonNullSupplier> renderer, int range, int updateFrequency, - boolean sendVelocity) { - return register(name, factory, renderer, EntityClassification.MISC, range, updateFrequency, - sendVelocity, true, AbstractContraptionEntity::build); - } - - private static EntityEntry register(String name, IFactory factory, - NonNullSupplier> renderer, EntityClassification group, int range, - int updateFrequency, boolean sendVelocity, boolean immuneToFire, - NonNullConsumer> propertyBuilder) { - String id = Lang.asId(name); - return Create.registrate() - .entity(id, factory, group) - .properties(b -> b.setTrackingRange(range) - .setUpdateInterval(updateFrequency) - .setShouldReceiveVelocityUpdates(sendVelocity)) - .properties(propertyBuilder) - .properties(b -> { - if (immuneToFire) - b.immuneToFire(); - }) - .renderer(renderer) - .register(); - } - - public static void register() { - } -} diff --git a/src/main/java/com/simibubi/create/AllFluids.java b/src/main/java/com/simibubi/create/AllFluids.java deleted file mode 100644 index 854aab1f1..000000000 --- a/src/main/java/com/simibubi/create/AllFluids.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.simibubi.create; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.fluids.VirtualFluid; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.PotionFluidAttributes; -import com.simibubi.create.content.palettes.AllPaletteBlocks; -import com.simibubi.create.foundation.data.CreateRegistrate; -import com.tterrag.registrate.util.entry.FluidEntry; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.FluidState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.FluidAttributes; -import net.minecraftforge.fluids.ForgeFlowingFluid; - -public class AllFluids { - - private static final CreateRegistrate REGISTRATE = Create.registrate(); - - public static FluidEntry POTION = - REGISTRATE.virtualFluid("potion", PotionFluidAttributes::new, PotionFluid::new) - .lang(f -> "fluid.create.potion", "Potion") - .register(); - - public static FluidEntry TEA = REGISTRATE.virtualFluid("tea") - .lang(f -> "fluid.create.tea", "Builder's Tea") - .tag(AllTags.forgeFluidTag("tea")) - .register(); - - public static FluidEntry MILK = REGISTRATE.virtualFluid("milk") - .lang(f -> "fluid.create.milk", "Milk") - .tag(AllTags.forgeFluidTag("milk")) - .register(); - - public static FluidEntry HONEY = - REGISTRATE.standardFluid("honey", NoColorFluidAttributes::new) - .lang(f -> "fluid.create.honey", "Honey") - .attributes(b -> b.viscosity(500) - .density(1400)) - .properties(p -> p.levelDecreasePerBlock(2) - .tickRate(25) - .slopeFindDistance(3) - .explosionResistance(100f)) - .tag(AllTags.forgeFluidTag("honey")) - .bucket() - .properties(p -> p.maxStackSize(1)) - .build() - .register(); - - public static FluidEntry CHOCOLATE = - REGISTRATE.standardFluid("chocolate", NoColorFluidAttributes::new) - .lang(f -> "fluid.create.chocolate", "Chocolate") - .tag(AllTags.forgeFluidTag("chocolate")) - .attributes(b -> b.viscosity(500) - .density(1400)) - .properties(p -> p.levelDecreasePerBlock(2) - .tickRate(25) - .slopeFindDistance(3) - .explosionResistance(100f)) - .bucket() - .properties(p -> p.maxStackSize(1)) - .build() - .register(); - - // Load this class - - public static void register() {} - - @OnlyIn(Dist.CLIENT) - public static void assignRenderLayers() {} - - @OnlyIn(Dist.CLIENT) - private static void makeTranslucent(FluidEntry entry) { - ForgeFlowingFluid fluid = entry.get(); - RenderTypeLookup.setRenderLayer(fluid, RenderType.getTranslucent()); - RenderTypeLookup.setRenderLayer(fluid.getStillFluid(), RenderType.getTranslucent()); - } - - @Nullable - public static BlockState getLavaInteraction(FluidState fluidState) { - Fluid fluid = fluidState.getFluid(); - if (fluid.isEquivalentTo(HONEY.get())) - return fluidState.isSource() ? AllPaletteBlocks.LIMESTONE.getDefaultState() - : AllPaletteBlocks.LIMESTONE_VARIANTS.registeredBlocks.get(0) - .getDefaultState(); - if (fluid.isEquivalentTo(CHOCOLATE.get())) - return fluidState.isSource() ? AllPaletteBlocks.SCORIA.getDefaultState() - : AllPaletteBlocks.SCORIA_VARIANTS.registeredBlocks.get(0) - .getDefaultState(); - return null; - } - - /** - * Removing alpha from tint prevents optifine from forcibly applying biome - * colors to modded fluids (Makes translucent fluids disappear) - */ - private static class NoColorFluidAttributes extends FluidAttributes { - - protected NoColorFluidAttributes(Builder builder, Fluid fluid) { - super(builder, fluid); - } - - @Override - public int getColor(IBlockDisplayReader world, BlockPos pos) { - return 0x00ffffff; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java deleted file mode 100644 index e926eaa33..000000000 --- a/src/main/java/com/simibubi/create/AllItems.java +++ /dev/null @@ -1,347 +0,0 @@ -package com.simibubi.create; - -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.NUGGETS; -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.KINETICS; -import static com.simibubi.create.content.AllSections.LOGISTICS; -import static com.simibubi.create.content.AllSections.MATERIALS; -import static com.simibubi.create.content.AllSections.SCHEMATICS; - -import com.simibubi.create.AllTags.AllItemTags; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MinecartContraptionItem; -import com.simibubi.create.content.contraptions.components.structureMovement.train.MinecartCouplingItem; -import com.simibubi.create.content.contraptions.goggles.GogglesItem; -import com.simibubi.create.content.contraptions.goggles.GogglesModel; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlockItem; -import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorItem; -import com.simibubi.create.content.contraptions.relays.gearbox.VerticalGearboxItem; -import com.simibubi.create.content.contraptions.wrench.WrenchItem; -import com.simibubi.create.content.contraptions.wrench.WrenchModel; -import com.simibubi.create.content.curiosities.BuildersTeaItem; -import com.simibubi.create.content.curiosities.ChromaticCompoundColor; -import com.simibubi.create.content.curiosities.ChromaticCompoundItem; -import com.simibubi.create.content.curiosities.CombustibleItem; -import com.simibubi.create.content.curiosities.RefinedRadianceItem; -import com.simibubi.create.content.curiosities.ShadowSteelItem; -import com.simibubi.create.content.curiosities.TreeFertilizerItem; -import com.simibubi.create.content.curiosities.armor.CopperArmorItem; -import com.simibubi.create.content.curiosities.armor.CopperBacktankItem; -import com.simibubi.create.content.curiosities.armor.DivingBootsItem; -import com.simibubi.create.content.curiosities.armor.DivingHelmetItem; -import com.simibubi.create.content.curiosities.symmetry.SymmetryWandItem; -import com.simibubi.create.content.curiosities.symmetry.client.SymmetryWandModel; -import com.simibubi.create.content.curiosities.tools.BlueprintItem; -import com.simibubi.create.content.curiosities.tools.ExtendoGripItem; -import com.simibubi.create.content.curiosities.tools.ExtendoGripModel; -import com.simibubi.create.content.curiosities.tools.SandPaperItem; -import com.simibubi.create.content.curiosities.tools.SandPaperItemRenderer.SandPaperModel; -import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperItem; -import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperModel; -import com.simibubi.create.content.logistics.item.LinkedControllerItem; -import com.simibubi.create.content.logistics.item.LinkedControllerModel; -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.content.schematics.item.SchematicAndQuillItem; -import com.simibubi.create.content.schematics.item.SchematicItem; -import com.simibubi.create.foundation.data.AssetLookup; -import com.simibubi.create.foundation.data.CreateRegistrate; -import com.simibubi.create.foundation.item.HiddenIngredientItem; -import com.simibubi.create.foundation.item.TagDependentIngredientItem; -import com.simibubi.create.foundation.item.TooltipHelper; -import com.tterrag.registrate.util.entry.ItemEntry; - -import net.minecraft.item.BlockItem; -import net.minecraft.item.Food; -import net.minecraft.item.Item; -import net.minecraft.item.Rarity; -import net.minecraft.tags.ITag; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.ResourceLocation; - -public class AllItems { - - private static final CreateRegistrate REGISTRATE = Create.registrate() - .itemGroup(() -> Create.BASE_CREATIVE_TAB); - - // Schematics - - static { - REGISTRATE.startSection(MATERIALS); - } - - public static final ItemEntry WHEAT_FLOUR = ingredient("wheat_flour"), DOUGH = ingredient("dough"), - CINDER_FLOUR = ingredient("cinder_flour"), POWDERED_OBSIDIAN = ingredient("powdered_obsidian"), - ROSE_QUARTZ = ingredient("rose_quartz"), POLISHED_ROSE_QUARTZ = ingredient("polished_rose_quartz"), - PROPELLER = ingredient("propeller"), WHISK = ingredient("whisk"), BRASS_HAND = ingredient("brass_hand"), - CRAFTER_SLOT_COVER = ingredient("crafter_slot_cover"), ELECTRON_TUBE = ingredient("electron_tube"), - INTEGRATED_CIRCUIT = ingredient("integrated_circuit"); - - public static final ItemEntry BLAZE_CAKE_BASE = - REGISTRATE.item("blaze_cake_base", HiddenIngredientItem::new) - .tag(AllItemTags.UPRIGHT_ON_BELT.tag) - .register(); - - public static final ItemEntry BLAZE_CAKE = REGISTRATE.item("blaze_cake", CombustibleItem::new) - .tag(AllItemTags.UPRIGHT_ON_BELT.tag) - .register(); - - public static final ItemEntry BAR_OF_CHOCOLATE = REGISTRATE.item("bar_of_chocolate", Item::new) - .properties(p -> p.food(new Food.Builder().hunger(6) - .saturation(0.3F) - .build())) - .lang("Bar of Chocolate") - .register(); - - public static final ItemEntry SWEET_ROLL = REGISTRATE.item("sweet_roll", Item::new) - .properties(p -> p.food(new Food.Builder().hunger(6) - .saturation(0.8F) - .build())) - .register(); - - public static final ItemEntry CHOCOLATE_BERRIES = REGISTRATE.item("chocolate_glazed_berries", Item::new) - .properties(p -> p.food(new Food.Builder().hunger(7) - .saturation(0.8F) - .build())) - .register(); - - public static final ItemEntry HONEYED_APPLE = REGISTRATE.item("honeyed_apple", Item::new) - .properties(p -> p.food(new Food.Builder().hunger(8) - .saturation(0.8F) - .build())) - .register(); - - public static final ItemEntry BUILDERS_TEA = REGISTRATE.item("builders_tea", BuildersTeaItem::new) - .tag(AllItemTags.UPRIGHT_ON_BELT.tag) - .properties(p -> p.maxStackSize(16)) - .lang("Builder's Tea") - .register(); - - public static final ItemEntry ANDESITE_ALLOY = ingredient("andesite_alloy"), - COPPER_INGOT = taggedIngredient("copper_ingot", forgeItemTag("ingots/copper"), CREATE_INGOTS.tag), - ZINC_INGOT = taggedIngredient("zinc_ingot", forgeItemTag("ingots/zinc"), CREATE_INGOTS.tag), - BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), CREATE_INGOTS.tag); - - public static final ItemEntry CHROMATIC_COMPOUND = - REGISTRATE.item("chromatic_compound", ChromaticCompoundItem::new) - .properties(p -> p.rarity(Rarity.UNCOMMON)) - .model(AssetLookup.existingItemModel()) - .color(() -> ChromaticCompoundColor::new) - .register(); - - public static final ItemEntry SHADOW_STEEL = REGISTRATE.item("shadow_steel", ShadowSteelItem::new) - .properties(p -> p.rarity(Rarity.UNCOMMON)) - .register(); - - public static final ItemEntry REFINED_RADIANCE = - REGISTRATE.item("refined_radiance", RefinedRadianceItem::new) - .properties(p -> p.rarity(Rarity.UNCOMMON)) - .register(); - - public static final ItemEntry COPPER_NUGGET = - taggedIngredient("copper_nugget", forgeItemTag("nuggets/copper"), NUGGETS.tag), - ZINC_NUGGET = taggedIngredient("zinc_nugget", forgeItemTag("nuggets/zinc"), NUGGETS.tag), - BRASS_NUGGET = taggedIngredient("brass_nugget", forgeItemTag("nuggets/brass"), NUGGETS.tag), - - COPPER_SHEET = taggedIngredient("copper_sheet", forgeItemTag("plates/copper"), PLATES.tag), - BRASS_SHEET = taggedIngredient("brass_sheet", forgeItemTag("plates/brass"), PLATES.tag), - IRON_SHEET = taggedIngredient("iron_sheet", forgeItemTag("plates/iron"), PLATES.tag), - GOLDEN_SHEET = taggedIngredient("golden_sheet", forgeItemTag("plates/gold"), PLATES.tag, ItemTags.PIGLIN_LOVED), - LAPIS_SHEET = taggedIngredient("lapis_sheet", forgeItemTag("plates/lapis_lazuli"), PLATES.tag), - - CRUSHED_IRON = taggedIngredient("crushed_iron_ore", CRUSHED_ORES.tag), - CRUSHED_GOLD = taggedIngredient("crushed_gold_ore", CRUSHED_ORES.tag, ItemTags.PIGLIN_LOVED), - CRUSHED_COPPER = taggedIngredient("crushed_copper_ore", CRUSHED_ORES.tag), - CRUSHED_ZINC = taggedIngredient("crushed_zinc_ore", CRUSHED_ORES.tag), - CRUSHED_BRASS = taggedIngredient("crushed_brass", CRUSHED_ORES.tag); - - public static final ItemEntry CRUSHED_OSMIUM = compatCrushedOre("osmium"), - CRUSHED_PLATINUM = compatCrushedOre("platinum"), CRUSHED_SILVER = compatCrushedOre("silver"), - CRUSHED_TIN = compatCrushedOre("tin"), CRUSHED_LEAD = compatCrushedOre("lead"), - CRUSHED_QUICKSILVER = compatCrushedOre("quicksilver"), CRUSHED_BAUXITE = compatCrushedOre("aluminum"), - CRUSHED_URANIUM = compatCrushedOre("uranium"), CRUSHED_NICKEL = compatCrushedOre("nickel"); - - // Kinetics - - static { - REGISTRATE.startSection(KINETICS); - } - - public static final ItemEntry BELT_CONNECTOR = - REGISTRATE.item("belt_connector", BeltConnectorItem::new) - .lang("Mechanical Belt") - .register(); - - public static final ItemEntry VERTICAL_GEARBOX = - REGISTRATE.item("vertical_gearbox", VerticalGearboxItem::new) - .model(AssetLookup.customBlockItemModel("gearbox", "item_vertical")) - .register(); - - public static final ItemEntry EMPTY_BLAZE_BURNER = - REGISTRATE.item("empty_blaze_burner", BlazeBurnerBlockItem::empty) - .model(AssetLookup.customBlockItemModel("blaze_burner", "block")) - .register(); - - public static final ItemEntry GOGGLES = REGISTRATE.item("goggles", GogglesItem::new) - .properties(p -> p.maxStackSize(1)) - .onRegister(CreateRegistrate.itemModel(() -> GogglesModel::new)) - .lang("Engineer's Goggles") - .register(); - - public static final ItemEntry SUPER_GLUE = REGISTRATE.item("super_glue", SuperGlueItem::new) - .register(); - - public static final ItemEntry MINECART_COUPLING = - REGISTRATE.item("minecart_coupling", MinecartCouplingItem::new) - .register(); - - public static final ItemEntry CRAFTING_BLUEPRINT = - REGISTRATE.item("crafting_blueprint", BlueprintItem::new) - .register(); - - public static final ItemEntry SAND_PAPER = REGISTRATE.item("sand_paper", SandPaperItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> SandPaperModel::new)) - .register(); - - public static final ItemEntry RED_SAND_PAPER = REGISTRATE.item("red_sand_paper", SandPaperItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> SandPaperModel::new)) - .onRegister(s -> TooltipHelper.referTo(s, SAND_PAPER)) - .register(); - - public static final ItemEntry WRENCH = REGISTRATE.item("wrench", WrenchItem::new) - .properties(p -> p.maxStackSize(1)) - .transform(CreateRegistrate.customRenderedItem(() -> WrenchModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry EXTENDO_GRIP = REGISTRATE.item("extendo_grip", ExtendoGripItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry LINKED_CONTROLLER = - REGISTRATE.item("linked_controller", LinkedControllerItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> LinkedControllerModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry WAND_OF_SYMMETRY = - REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new) - .transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new)) - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry WORLDSHAPER = - REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new) - .properties(p -> p.rarity(Rarity.EPIC)) - .transform(CreateRegistrate.customRenderedItem(() -> WorldshaperModel::new)) - .lang("Creative Worldshaper") - .model(AssetLookup.itemModelWithPartials()) - .register(); - - public static final ItemEntry MINECART_CONTRAPTION = - REGISTRATE.item("minecart_contraption", MinecartContraptionItem::rideable) - .register(); - - public static final ItemEntry FURNACE_MINECART_CONTRAPTION = - REGISTRATE.item("furnace_minecart_contraption", MinecartContraptionItem::furnace) - .register(); - - public static final ItemEntry CHEST_MINECART_CONTRAPTION = - REGISTRATE.item("chest_minecart_contraption", MinecartContraptionItem::chest) - .register(); - - // Logistics - - static { - REGISTRATE.startSection(LOGISTICS); - } - - public static final ItemEntry FILTER = REGISTRATE.item("filter", FilterItem::regular) - .model(AssetLookup.existingItemModel()) - .register(); - - public static final ItemEntry ATTRIBUTE_FILTER = - REGISTRATE.item("attribute_filter", FilterItem::attribute) - .model(AssetLookup.existingItemModel()) - .register(); - - // Curiosities - - static { - REGISTRATE.startSection(CURIOSITIES); - } - - public static final ItemEntry - - COPPER_BACKTANK = - REGISTRATE - .item("copper_backtank", p -> new CopperBacktankItem(p, new BlockItem(AllBlocks.COPPER_BACKTANK.get(), p))) - .model(AssetLookup.customGenericItemModel("_", "item")) - .register(), - - DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new) - .register(), - - DIVING_BOOTS = REGISTRATE.item("diving_boots", DivingBootsItem::new) - .register(); - - public static final ItemEntry TREE_FERTILIZER = - REGISTRATE.item("tree_fertilizer", TreeFertilizerItem::new) - .register(); - - // Schematics - - static { - REGISTRATE.startSection(SCHEMATICS); - } - - public static final ItemEntry EMPTY_SCHEMATIC = REGISTRATE.item("empty_schematic", Item::new) - .properties(p -> p.maxStackSize(1)) - .register(); - - public static final ItemEntry SCHEMATIC_AND_QUILL = - REGISTRATE.item("schematic_and_quill", SchematicAndQuillItem::new) - .properties(p -> p.maxStackSize(1)) - .register(); - - public static final ItemEntry SCHEMATIC = REGISTRATE.item("schematic", SchematicItem::new) - .properties(p -> p.maxStackSize(1)) - .register(); - - // Shortcuts - - private static ItemEntry ingredient(String name) { - return REGISTRATE.item(name, Item::new) - .register(); - } - - @SuppressWarnings("unused") - private static ItemEntry hiddenIngredient(String name) { - return REGISTRATE.item(name, HiddenIngredientItem::new) - .register(); - } - - @SafeVarargs - private static ItemEntry taggedIngredient(String name, ITag.INamedTag... tags) { - return REGISTRATE.item(name, Item::new) - .tag(tags) - .register(); - } - - private static ItemEntry compatCrushedOre(String metalName) { - return REGISTRATE - .item("crushed_" + metalName + "_ore", - props -> new TagDependentIngredientItem(props, new ResourceLocation("forge", "ores/" + metalName))) - .tag(AllItemTags.CRUSHED_ORES.tag) - .register(); - } - - // Load this class - - public static void register() {} - -} diff --git a/src/main/java/com/simibubi/create/AllKeys.java b/src/main/java/com/simibubi/create/AllKeys.java deleted file mode 100644 index 3877f1026..000000000 --- a/src/main/java/com/simibubi/create/AllKeys.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.simibubi.create; - -import org.lwjgl.glfw.GLFW; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.settings.KeyBinding; -import net.minecraftforge.fml.client.registry.ClientRegistry; - -public enum AllKeys { - - TOOL_MENU("toolmenu", GLFW.GLFW_KEY_LEFT_ALT), - ACTIVATE_TOOL("", GLFW.GLFW_KEY_LEFT_CONTROL), - - ; - - private KeyBinding keybind; - private String description; - private int key; - private boolean modifiable; - - private AllKeys(String description, int defaultKey) { - this.description = Create.ID + ".keyinfo." + description; - this.key = defaultKey; - this.modifiable = !description.isEmpty(); - } - - public static void register() { - for (AllKeys key : values()) { - key.keybind = new KeyBinding(key.description, key.key, Create.NAME); - if (!key.modifiable) - continue; - - ClientRegistry.registerKeyBinding(key.keybind); - } - } - - public KeyBinding getKeybind() { - return keybind; - } - - public boolean isPressed() { - if (!modifiable) - return isKeyDown(key); - return keybind.isKeyDown(); - } - - public String getBoundKey() { - return keybind.getBoundKeyLocalizedText() - .getString() - .toUpperCase(); - } - - public int getBoundCode() { - return keybind.getKey() - .getKeyCode(); - } - - public static boolean isKeyDown(int key) { - return GLFW.glfwGetKey(Minecraft.getInstance() - .getWindow() - .getHandle(), key) != 0; - } - - public static boolean ctrlDown() { - return Screen.hasControlDown(); - } - - public static boolean shiftDown() { - return Screen.hasShiftDown(); - } - - public static boolean altDown() { - return Screen.hasAltDown(); - } - -} diff --git a/src/main/java/com/simibubi/create/AllMovementBehaviours.java b/src/main/java/com/simibubi/create/AllMovementBehaviours.java deleted file mode 100644 index ece2e1f65..000000000 --- a/src/main/java/com/simibubi/create/AllMovementBehaviours.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.simibubi.create; - -import java.util.HashMap; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.components.actors.BellMovementBehaviour; -import com.simibubi.create.content.contraptions.components.actors.CampfireMovementBehaviour; -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.structureMovement.MovementBehaviour; -import com.tterrag.registrate.util.nullness.NonNullConsumer; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.util.ResourceLocation; - -public class AllMovementBehaviours { - private static final HashMap MOVEMENT_BEHAVIOURS = new HashMap<>(); - - public static void addMovementBehaviour(ResourceLocation resourceLocation, MovementBehaviour movementBehaviour) { - if (MOVEMENT_BEHAVIOURS.containsKey(resourceLocation)) - Create.LOGGER.warn("Movement behaviour for " + resourceLocation.toString() + " was overridden"); - MOVEMENT_BEHAVIOURS.put(resourceLocation, movementBehaviour); - } - - public static void addMovementBehaviour(Block block, MovementBehaviour movementBehaviour) { - addMovementBehaviour(block.getRegistryName(), movementBehaviour); - } - - @Nullable - public static MovementBehaviour of(ResourceLocation resourceLocation) { - return MOVEMENT_BEHAVIOURS.getOrDefault(resourceLocation, null); - } - - @Nullable - public static MovementBehaviour of(Block block) { - return of(block.getRegistryName()); - } - - @Nullable - public static MovementBehaviour of(BlockState state) { - return of(state.getBlock()); - } - - public static boolean contains(Block block) { - return MOVEMENT_BEHAVIOURS.containsKey(block.getRegistryName()); - } - - public static NonNullConsumer addMovementBehaviour( - MovementBehaviour movementBehaviour) { - return b -> addMovementBehaviour(b.getRegistryName(), movementBehaviour); - } - - static void register() { - addMovementBehaviour(Blocks.BELL, new BellMovementBehaviour()); - addMovementBehaviour(Blocks.CAMPFIRE, new CampfireMovementBehaviour()); - - DispenserMovementBehaviour.gatherMovedDispenseItemBehaviours(); - addMovementBehaviour(Blocks.DISPENSER, new DispenserMovementBehaviour()); - addMovementBehaviour(Blocks.DROPPER, new DropperMovementBehaviour()); - } -} diff --git a/src/main/java/com/simibubi/create/AllParticleTypes.java b/src/main/java/com/simibubi/create/AllParticleTypes.java deleted file mode 100644 index 03726b2ef..000000000 --- a/src/main/java/com/simibubi/create/AllParticleTypes.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.simibubi.create; - -import java.util.function.Supplier; - -import com.simibubi.create.content.contraptions.fluids.particle.FluidParticleData; -import com.simibubi.create.content.contraptions.particle.AirFlowParticleData; -import com.simibubi.create.content.contraptions.particle.AirParticleData; -import com.simibubi.create.content.contraptions.particle.CubeParticleData; -import com.simibubi.create.content.contraptions.particle.HeaterParticleData; -import com.simibubi.create.content.contraptions.particle.ICustomParticleData; -import com.simibubi.create.content.contraptions.particle.RotationIndicatorParticleData; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleType; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.ParticleFactoryRegisterEvent; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.registries.IForgeRegistry; - -public enum AllParticleTypes { - - ROTATION_INDICATOR(RotationIndicatorParticleData::new), - AIR_FLOW(AirFlowParticleData::new), - AIR(AirParticleData::new), - HEATER_PARTICLE(HeaterParticleData::new), - CUBE(CubeParticleData::new), - FLUID_PARTICLE(FluidParticleData::new), - BASIN_FLUID(FluidParticleData::new), - FLUID_DRIP(FluidParticleData::new) - - ; - - private ParticleEntry entry; - - AllParticleTypes(Supplier> typeFactory) { - String asId = Lang.asId(this.name()); - entry = new ParticleEntry<>(new ResourceLocation(Create.ID, asId), typeFactory); - } - - public static void register(RegistryEvent.Register> event) { - for (AllParticleTypes particle : values()) - particle.entry.register(event.getRegistry()); - } - - @OnlyIn(Dist.CLIENT) - public static void registerFactories(ParticleFactoryRegisterEvent event) { - ParticleManager particles = Minecraft.getInstance().particles; - for (AllParticleTypes particle : values()) - particle.entry.registerFactory(particles); - } - - public ParticleType get() { - return entry.getOrCreateType(); - } - - public String parameter() { - return Lang.asId(name()); - } - - private class ParticleEntry { - Supplier> typeFactory; - ParticleType type; - ResourceLocation id; - - public ParticleEntry(ResourceLocation id, Supplier> typeFactory) { - this.id = id; - this.typeFactory = typeFactory; - } - - void register(IForgeRegistry> registry) { - registry.register(getOrCreateType()); - } - - ParticleType getOrCreateType() { - if (type != null) - return type; - type = typeFactory.get() - .createType(); - type.setRegistryName(id); - return type; - } - - @OnlyIn(Dist.CLIENT) - void registerFactory(ParticleManager particles) { - typeFactory.get() - .register(getOrCreateType(), particles); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/AllRecipeTypes.java b/src/main/java/com/simibubi/create/AllRecipeTypes.java deleted file mode 100644 index c21740132..000000000 --- a/src/main/java/com/simibubi/create/AllRecipeTypes.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.simibubi.create; - -import java.util.Optional; -import java.util.function.Supplier; - -import com.simibubi.create.compat.jei.ConversionRecipe; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCraftingRecipe; -import com.simibubi.create.content.contraptions.components.crusher.CrushingRecipe; -import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; -import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; -import com.simibubi.create.content.contraptions.components.millstone.MillingRecipe; -import com.simibubi.create.content.contraptions.components.mixer.CompactingRecipe; -import com.simibubi.create.content.contraptions.components.mixer.MixingRecipe; -import com.simibubi.create.content.contraptions.components.press.PressingRecipe; -import com.simibubi.create.content.contraptions.components.saw.CuttingRecipe; -import com.simibubi.create.content.contraptions.fluids.actors.FillingRecipe; -import com.simibubi.create.content.contraptions.processing.BasinRecipe; -import com.simibubi.create.content.contraptions.processing.EmptyingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeFactory; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer; -import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.inventory.IInventory; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.ShapedRecipe; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; -import net.minecraft.world.World; -import net.minecraftforge.event.RegistryEvent; - -public enum AllRecipeTypes { - - MECHANICAL_CRAFTING(MechanicalCraftingRecipe.Serializer::new), - CONVERSION(processingSerializer(ConversionRecipe::new)), - CRUSHING(processingSerializer(CrushingRecipe::new)), - CUTTING(processingSerializer(CuttingRecipe::new)), - MILLING(processingSerializer(MillingRecipe::new)), - BASIN(processingSerializer(BasinRecipe::new)), - MIXING(processingSerializer(MixingRecipe::new)), - COMPACTING(processingSerializer(CompactingRecipe::new)), - PRESSING(processingSerializer(PressingRecipe::new)), - SANDPAPER_POLISHING(processingSerializer(SandPaperPolishingRecipe::new)), - SPLASHING(processingSerializer(SplashingRecipe::new)), - DEPLOYING(processingSerializer(DeployerApplicationRecipe::new)), - FILLING(processingSerializer(FillingRecipe::new)), - EMPTYING(processingSerializer(EmptyingRecipe::new)), - - ; - - public IRecipeSerializer serializer; - public Supplier> supplier; - public IRecipeType> type; - - AllRecipeTypes(Supplier> supplier) { - this(supplier, null); - } - - AllRecipeTypes(Supplier> supplier, - IRecipeType> existingType) { - this.supplier = supplier; - this.type = existingType; - } - - public static void register(RegistryEvent.Register> event) { - ShapedRecipe.setCraftingSize(9, 9); - - for (AllRecipeTypes r : AllRecipeTypes.values()) { - if (r.type == null) - r.type = customType(Lang.asId(r.name())); - - r.serializer = r.supplier.get(); - ResourceLocation location = new ResourceLocation(Create.ID, Lang.asId(r.name())); - event.getRegistry() - .register(r.serializer.setRegistryName(location)); - } - } - - private static > IRecipeType customType(String id) { - return Registry.register(Registry.RECIPE_TYPE, new ResourceLocation(Create.ID, id), new IRecipeType() { - public String toString() { - return Create.ID + ":" + id; - } - }); - } - - private static Supplier> processingSerializer( - ProcessingRecipeFactory> factory) { - return () -> new ProcessingRecipeSerializer<>(factory); - } - - @SuppressWarnings("unchecked") - public > T getType() { - return (T) type; - } - - public > Optional find(C inv, World world) { - return world.getRecipeManager() - .getRecipe(getType(), inv, world); - } -} diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java deleted file mode 100644 index 6ffb1c167..000000000 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ /dev/null @@ -1,291 +0,0 @@ -package com.simibubi.create; - -import static net.minecraft.util.Direction.NORTH; -import static net.minecraft.util.Direction.SOUTH; -import static net.minecraft.util.Direction.UP; - -import java.util.function.BiFunction; - -import com.simibubi.create.content.logistics.block.chute.ChuteShapes; -import com.simibubi.create.foundation.utility.VoxelShaper; - -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.block.DirectionalBlock; -import net.minecraft.block.PistonHeadBlock; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.shapes.IBooleanFunction; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; - -public class AllShapes { - - // Independent Shapers - public static final VoxelShaper - - CASING_14PX = shape(0, 0, 0, 16, 14, 16).forDirectional(), - CASING_13PX = shape(0, 0, 0, 16, 13, 16).forDirectional(), - CASING_12PX = shape(0, 0, 0, 16, 12, 16).forDirectional(), - CASING_11PX = shape(0, 0, 0, 16, 11, 16).forDirectional(), - MOTOR_BLOCK = shape(3, 0, 3, 13, 14, 13).forDirectional(), - FOUR_VOXEL_POLE = shape(6, 0, 6, 10, 16, 10).forAxis(), SIX_VOXEL_POLE = shape(5, 0, 5, 11, 16, 11).forAxis(), - EIGHT_VOXEL_POLE = shape(4, 0, 4, 12, 16, 12).forAxis(), - FURNACE_ENGINE = shape(1, 1, 0, 15, 15, 16).add(0, 0, 9, 16, 16, 14) - .forHorizontal(Direction.SOUTH), - PORTABLE_STORAGE_INTERFACE = shape(0, 0, 0, 16, 14, 16).forDirectional(), - PULLEY = shape(0, 0, 0, 16, 16, 2).add(1, 1, 2, 15, 15, 14) - .add(2, 13, 2, 14, 16, 14) - .add(0, 0, 14, 16, 16, 16) - .forHorizontalAxis(), - SAIL_FRAME_COLLISION = shape(0, 5, 0, 16, 9, 16).erase(2, 0, 2, 14, 16, 14) - .forDirectional(), - SAIL_FRAME = shape(0, 5, 0, 16, 9, 16).forDirectional(), SAIL = shape(0, 5, 0, 16, 10, 16).forDirectional(), - HARVESTER_BASE = shape(0, 2, 0, 16, 14, 3).forDirectional(SOUTH), - NOZZLE = shape(2, 0, 2, 14, 14, 14).add(1, 13, 1, 15, 15, 15) - .erase(3, 13, 3, 13, 15, 13) - .forDirectional(), - CRANK = shape(5, 0, 5, 11, 6, 11).add(1, 3, 1, 15, 8, 15) - .forDirectional(), - CART_ASSEMBLER = shape(0, 12, 0, 16, 16, 16).add(-2, 0, 1, 18, 14, 15) - .forHorizontalAxis(), - CART_ASSEMBLER_PLAYER_COLLISION = shape(0, 0, 1, 16, 16, 15).forHorizontalAxis(), - STOCKPILE_SWITCH = shape(0, 0, 0, 16, 2, 16).add(1, 0, 1, 15, 16, 15) - .add(0, 14, 0, 16, 16, 16) - .add(3, 3, -2, 13, 13, 2) - .forHorizontal(NORTH), - CONTENT_OBSERVER = shape(0, 0, 0, 16, 6, 16).add(1, 0, 1, 15, 16, 15) - .add(0, 14, 0, 16, 16, 16) - .add(3, 3, -2, 13, 13, 2) - .forHorizontal(NORTH), - NIXIE_TUBE = shape(0, 0, 0, 16, 4, 16).add(9, 0, 5, 15, 15, 11) - .add(1, 0, 5, 7, 15, 11) - .forHorizontalAxis(), - NIXIE_TUBE_CEILING = shape(0, 12, 0, 16, 16, 16).add(9, 1, 5, 15, 16, 11) - .add(1, 1, 5, 7, 16, 11) - .forHorizontalAxis(), - FUNNEL_COLLISION = shape(0, 0, 0, 16, 4, 16).forDirectional(UP), - BELT_FUNNEL_RETRACTED = shape(2, -2, 14, 14, 14, 18).add(0, -5, 8, 16, 16, 14) - .forHorizontal(NORTH), - BELT_FUNNEL_EXTENDED = shape(2, -2, 14, 14, 14, 18).add(3, -4, 10, 13, 13, 14) - .add(2, -4, 6, 14, 14, 10) - .add(0, -5, 0, 16, 16, 6) - .forHorizontal(NORTH), - BELT_FUNNEL_PERPENDICULAR = shape(2, -2, 14, 14, 14, 18).add(1, 8, 12, 15, 15, 14) - .add(0.1, 13, 7, 15.9, 15, 11) - .add(0.1, 9, 8, 15.9, 13, 12) - .add(0.1, 5, 9, 15.9, 9, 13) - .add(0.1, 1, 10, 15.9, 5, 14) - .add(0.1, -3, 11, 15.9, 1, 15) - .forHorizontal(NORTH), - FUNNEL_WALL = shape(2, 2, 14, 14, 14, 18).add(1, 8, 12, 15, 15, 14) - .add(0.1, 13, 7, 15.9, 15, 11) - .add(0.1, 9, 8, 15.9, 13, 12) - .add(0.1, 5, 9, 15.9, 9, 13) - .add(0.1, 1, 10, 15.9, 5, 14) - .add(0.1, -1, 11, 15.9, 1, 15) - .forHorizontal(NORTH), - FLUID_VALVE = shape(3, -1, 3, 13, 17, 13).add(2, 2, 2, 14, 14, 14) - .forAxis(), - SMART_FLUID_PIPE_FLOOR = shape(4, 4, 0, 12, 12, 16).add(3, 3, 3, 13, 13, 13) - .add(5, 13, 3, 11, 14, 11) - .add(5, 14, 4, 11, 15, 10) - .add(5, 15, 5, 11, 16, 9) - .add(5, 16, 6, 11, 17, 8) - .forHorizontal(Direction.SOUTH), - SMART_FLUID_PIPE_WALL = shape(4, 0, 4, 12, 16, 12).add(3, 3, 3, 13, 13, 13) - .add(5, 5, 13, 11, 13, 14) - .add(5, 6, 14, 11, 12, 15) - .add(5, 7, 15, 11, 11, 16) - .add(5, 8, 16, 11, 10, 17) - .forHorizontal(Direction.SOUTH), - SMART_FLUID_PIPE_CEILING = shape(4, 4, 0, 12, 12, 16).add(3, 3, 3, 13, 13, 13) - .add(5, 3, 3, 11, 2, 11) - .add(5, 2, 4, 11, 1, 10) - .add(5, 1, 5, 11, 0, 9) - .add(5, 0, 6, 11, -1, 8) - .forHorizontal(Direction.SOUTH), - PUMP = shape(2, 0, 2, 14, 5, 14).add(4, 0, 4, 12, 16, 12) - .add(3, 12, 3, 13, 16, 13) - .forDirectional(Direction.UP), - CRUSHING_WHEEL_CONTROLLER_COLLISION = shape(0, 0, 0, 16, 13, 16).forDirectional(Direction.DOWN) - - ; - - // Internally Shared Shapes - private static final VoxelShape - - PISTON_HEAD = Blocks.PISTON_HEAD.getDefaultState() - .with(DirectionalBlock.FACING, UP) - .with(PistonHeadBlock.SHORT, true) - .getShape(null, null), PISTON_EXTENDED = - shape(CASING_12PX.get(UP)).add(FOUR_VOXEL_POLE.get(Axis.Y)) - .build(), - SMALL_GEAR_SHAPE = cuboid(2, 6, 2, 14, 10, 14), LARGE_GEAR_SHAPE = cuboid(0, 6, 0, 16, 10, 16), - VERTICAL_TABLET_SHAPE = cuboid(3, 1, -1, 13, 15, 3), SQUARE_TABLET_SHAPE = cuboid(2, 2, -1, 14, 14, 3), - LOGISTICS_TABLE_SLOPE = shape(0, 10, 15, 16, 14, 10.667).add(0, 12, 10.667, 16, 16, 6.333) - .add(0, 14, 6.333, 16, 18, 2) - .build(), - TANK_BOTTOM_LID = shape(0, 0, 0, 16, 4, 16).build(), TANK_TOP_LID = shape(0, 12, 0, 16, 16, 16).build() - - ; - - // Static Block Shapes - public static final VoxelShape - - BASIN_BLOCK_SHAPE = shape(0, 2, 0, 16, 16, 16).erase(2, 2, 2, 14, 16, 14) - .add(2, 0, 2, 14, 2, 14) - .build(), BASIN_RAYTRACE_SHAPE = - shape(0, 2, 0, 16, 16, 16).add(2, 0, 2, 14, 2, 14) - .build(), - BASIN_COLLISION_SHAPE = shape(0, 2, 0, 16, 13, 16).erase(2, 5, 2, 14, 16, 14) - .add(2, 0, 2, 14, 2, 14) - .build(), - BACKTANK = shape(3, 0, 3, 13, 12, 13).add(SIX_VOXEL_POLE.get(Axis.Y)) - .build(), - SPEED_CONTROLLER = shape(0, 0, 0, 16, 4, 16).add(1, 1, 1, 15, 13, 15) - .add(0, 8, 0, 16, 14, 16) - .build(), - HEATER_BLOCK_SHAPE = shape(2, 0, 2, 14, 14, 14).add(0, 0, 0, 16, 4, 16) - .build(), - HEATER_BLOCK_SPECIAL_COLLISION_SHAPE = shape(0, 0, 0, 16, 4, 16).build(), - CRUSHING_WHEEL_COLLISION_SHAPE = cuboid(0, 0, 0, 16, 16, 16), SEAT = cuboid(0, 0, 0, 16, 8, 16), - SEAT_COLLISION = cuboid(0, 0, 0, 16, 6, 16), - MECHANICAL_PROCESSOR_SHAPE = shape(VoxelShapes.fullCube()).erase(4, 0, 4, 12, 16, 12) - .build(), - TURNTABLE_SHAPE = shape(1, 4, 1, 15, 8, 15).add(5, 0, 5, 11, 4, 11) - .build(), - CRATE_BLOCK_SHAPE = cuboid(1, 0, 1, 15, 14, 15), - TABLE_POLE_SHAPE = shape(4, 0, 4, 12, 2, 12).add(5, 2, 5, 11, 14, 11) - .build(), - BELT_COLLISION_MASK = cuboid(0, 0, 0, 16, 19, 16), - SCHEMATICANNON_SHAPE = shape(1, 0, 1, 15, 8, 15).add(0.5, 8, 0.5, 15.5, 11, 15.5) - .build(), - PULLEY_MAGNET = shape(3, 0, 3, 13, 2, 13).add(FOUR_VOXEL_POLE.get(UP)) - .build(), - SPOUT = shape(1, 2, 1, 15, 14, 15).add(2, 0, 2, 14, 16, 14) - .build(), - MILLSTONE = shape(0, 0, 0, 16, 6, 16).add(2, 6, 2, 14, 13, 14) - .add(3, 13, 3, 13, 16, 13) - .build(), - CUCKOO_CLOCK = shape(1, 0, 1, 15, 19, 15).build(), - GAUGE_SHAPE_UP = shape(1, 0, 0, 15, 2, 16).add(2, 2, 1, 14, 14, 15) - .build(), - MECHANICAL_ARM = shape(2, 0, 2, 14, 10, 14).add(3, 0, 3, 13, 14, 13) - .add(0, 0, 0, 16, 6, 16) - .build(), - MECHANICAL_ARM_CEILING = shape(2, 6, 2, 14, 16, 14).add(3, 2, 3, 13, 16, 13) - .add(0, 10, 0, 16, 16, 16) - .build(), - CHUTE = shape(1, 8, 1, 15, 16, 15).add(2, 0, 2, 14, 8, 14) - .build(), - SMART_CHUTE = shape(0, 0, 0, 16, 5, 16).add(0, 9, 0, 16, 15, 16) - .add(1, 0, 1, 15, 16, 15) - .build(), - TANK = shape(1, 0, 1, 15, 16, 15).build(), TANK_TOP = shape(TANK_TOP_LID).add(TANK) - .build(), - TANK_BOTTOM = shape(TANK_BOTTOM_LID).add(TANK) - .build(), - TANK_TOP_BOTTOM = shape(TANK_BOTTOM_LID).add(TANK_TOP_LID) - .add(TANK) - .build(), - FUNNEL_FLOOR = shape(2, -2, 2, 14, 8, 14).add(1, 1, 1, 15, 8, 15) - .add(0, 4, 0, 16, 10, 16) - .build(), - FUNNEL_CEILING = shape(2, 8, 2, 14, 18, 14).add(1, 8, 1, 15, 15, 15) - .add(0, 6, 0, 16, 12, 16) - .build(), - DEPOT = shape(CASING_11PX.get(Direction.UP)).add(1, 11, 1, 15, 13, 15) - .build() - - ; - - // More Shapers - public static final VoxelShaper - - MECHANICAL_PISTON_HEAD = shape(PISTON_HEAD).forDirectional(), MECHANICAL_PISTON = CASING_12PX, - MECHANICAL_PISTON_EXTENDED = shape(PISTON_EXTENDED).forDirectional(), - SMALL_GEAR = shape(SMALL_GEAR_SHAPE).add(SIX_VOXEL_POLE.get(Axis.Y)) - .forAxis(), - LARGE_GEAR = shape(LARGE_GEAR_SHAPE).add(SIX_VOXEL_POLE.get(Axis.Y)) - .forAxis(), - LOGISTICAL_CONTROLLER = shape(SQUARE_TABLET_SHAPE).forDirectional(SOUTH), - REDSTONE_BRIDGE = shape(VERTICAL_TABLET_SHAPE).forDirectional(SOUTH) - .withVerticalShapes(LOGISTICAL_CONTROLLER.get(UP)), - LOGISTICS_TABLE = shape(TABLE_POLE_SHAPE).add(LOGISTICS_TABLE_SLOPE) - .forHorizontal(SOUTH), - SCHEMATICS_TABLE = shape(4, 0, 4, 12, 12, 12).add(0, 11, 2, 16, 14, 14) - .forDirectional(SOUTH), - CHUTE_SLOPE = shape(ChuteShapes.createSlope()).forHorizontal(SOUTH) - - ; - - private static Builder shape(VoxelShape shape) { - return new Builder(shape); - } - - private static Builder shape(double x1, double y1, double z1, double x2, double y2, double z2) { - return shape(cuboid(x1, y1, z1, x2, y2, z2)); - } - - private static VoxelShape cuboid(double x1, double y1, double z1, double x2, double y2, double z2) { - return Block.makeCuboidShape(x1, y1, z1, x2, y2, z2); - } - - private static class Builder { - VoxelShape shape; - - public Builder(VoxelShape shape) { - this.shape = shape; - } - - Builder add(VoxelShape shape) { - this.shape = VoxelShapes.or(this.shape, shape); - return this; - } - - Builder add(double x1, double y1, double z1, double x2, double y2, double z2) { - return add(cuboid(x1, y1, z1, x2, y2, z2)); - } - - Builder erase(double x1, double y1, double z1, double x2, double y2, double z2) { - this.shape = - VoxelShapes.combineAndSimplify(shape, cuboid(x1, y1, z1, x2, y2, z2), IBooleanFunction.ONLY_FIRST); - return this; - } - - VoxelShape build() { - return shape; - } - - VoxelShaper build(BiFunction factory, Direction direction) { - return factory.apply(shape, direction); - } - - VoxelShaper build(BiFunction factory, Axis axis) { - return factory.apply(shape, axis); - } - - VoxelShaper forDirectional(Direction direction) { - return build(VoxelShaper::forDirectional, direction); - } - - VoxelShaper forAxis() { - return build(VoxelShaper::forAxis, Axis.Y); - } - - VoxelShaper forHorizontalAxis() { - return build(VoxelShaper::forHorizontalAxis, Axis.Z); - } - - VoxelShaper forHorizontal(Direction direction) { - return build(VoxelShaper::forHorizontal, direction); - } - - VoxelShaper forDirectional() { - return forDirectional(UP); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/AllSoundEvents.java b/src/main/java/com/simibubi/create/AllSoundEvents.java deleted file mode 100644 index dc2b0f0c0..000000000 --- a/src/main/java/com/simibubi/create/AllSoundEvents.java +++ /dev/null @@ -1,502 +0,0 @@ -package com.simibubi.create; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Map; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DirectoryCache; -import net.minecraft.data.IDataProvider; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.registries.IForgeRegistry; - -//@EventBusSubscriber(bus = Bus.FORGE) -public class AllSoundEvents { - - public static Map entries = Maps.newHashMap(); - public static final SoundEntry - - SCHEMATICANNON_LAUNCH_BLOCK = create("schematicannon_launch_block").subtitle("Schematicannon fires") - .playExisting(SoundEvents.ENTITY_GENERIC_EXPLODE, .1f, 1.1f) - .category(SoundCategory.BLOCKS) - .build(), - - SCHEMATICANNON_FINISH = create("schematicannon_finish").subtitle("Schematicannon dings") - .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_BELL, 1, .7f) - .category(SoundCategory.BLOCKS) - .build(), - - DEPOT_SLIDE = create("depot_slide").subtitle("Item slides") - .playExisting(SoundEvents.BLOCK_SAND_BREAK, .125f, 1.5f) - .category(SoundCategory.BLOCKS) - .build(), - - DEPOT_PLOP = create("depot_plop").subtitle("Item lands") - .playExisting(SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, .25f, 1.25f) - .category(SoundCategory.BLOCKS) - .build(), - - FUNNEL_FLAP = create("funnel_flap").subtitle("Funnel Flaps") - .playExisting(SoundEvents.ENTITY_ITEM_FRAME_ROTATE_ITEM, .125f, 1.5f) - .playExisting(SoundEvents.BLOCK_WOOL_BREAK, .0425f, .75f) - .category(SoundCategory.BLOCKS) - .build(), - - SLIME_ADDED = create("slime_added").subtitle("Slime squishes") - .playExisting(SoundEvents.BLOCK_SLIME_BLOCK_PLACE) - .category(SoundCategory.BLOCKS) - .build(), - - MECHANICAL_PRESS_ACTIVATION = create("mechanical_press_activation").subtitle("Mechanical Press clangs") - .playExisting(SoundEvents.BLOCK_ANVIL_LAND, .125f, 1f) - .playExisting(SoundEvents.ENTITY_ITEM_BREAK, .5f, 1f) - .category(SoundCategory.BLOCKS) - .build(), - - MECHANICAL_PRESS_ACTIVATION_ON_BELT = - create("mechanical_press_activation_belt").subtitle("Mechanical Press bonks") - .playExisting(SoundEvents.BLOCK_WOOL_HIT, .75f, 1f) - .playExisting(SoundEvents.ENTITY_ITEM_BREAK, .15f, .75f) - .category(SoundCategory.BLOCKS) - .build(), - - MIXING = create("mixing").subtitle("Mixing Noises") - .playExisting(SoundEvents.BLOCK_GILDED_BLACKSTONE_BREAK, .125f, .5f) - .playExisting(SoundEvents.BLOCK_NETHERRACK_BREAK, .125f, .5f) - .category(SoundCategory.BLOCKS) - .build(), - - CRANKING = create("cranking").subtitle("Hand Crank turns") - .playExisting(SoundEvents.BLOCK_WOOD_PLACE, .075f, .5f) - .playExisting(SoundEvents.BLOCK_WOODEN_BUTTON_CLICK_OFF, .025f, .5f) - .category(SoundCategory.BLOCKS) - .build(), - - WORLDSHAPER_PLACE = create("worldshaper_place").subtitle("Worldshaper zaps") - .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_BASEDRUM) - .category(SoundCategory.PLAYERS) - .build(), - - SCROLL_VALUE = create("scroll_value").subtitle("Scroll-input clicks") - .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_HAT, .124f, 1f) - .category(SoundCategory.PLAYERS) - .build(), - - CONFIRM = create("confirm").subtitle("Affirmative ding") - .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_BELL, 0.5f, 0.8f) - .category(SoundCategory.PLAYERS) - .build(), - - DENY = create("deny").subtitle("Declining boop") - .playExisting(SoundEvents.BLOCK_NOTE_BLOCK_BASS, 1f, 0.5f) - .category(SoundCategory.PLAYERS) - .build(), - - COGS = create("cogs").subtitle("Cogwheels rumble") - .category(SoundCategory.BLOCKS) - .build(), - - CONTRAPTION_ASSEMBLE = create("contraption_assemble").subtitle("Contraption moves") - .playExisting(SoundEvents.BLOCK_WOODEN_TRAPDOOR_OPEN, .5f, .5f) - .playExisting(SoundEvents.BLOCK_CHEST_OPEN, .045f, .74f) - .category(SoundCategory.BLOCKS) - .build(), - - CONTRAPTION_DISASSEMBLE = create("contraption_disassemble").subtitle("Contraption stops") - .playExisting(SoundEvents.BLOCK_IRON_TRAPDOOR_CLOSE, .35f, .75f) - .category(SoundCategory.BLOCKS) - .build(), - - WRENCH_ROTATE = create("wrench_rotate").subtitle("Wrench used") - .playExisting(SoundEvents.BLOCK_WOODEN_TRAPDOOR_CLOSE, .25f, 1.25f) - .category(SoundCategory.BLOCKS) - .build(), - - WRENCH_REMOVE = create("wrench_remove").subtitle("Component breaks") - .playExisting(SoundEvents.ENTITY_ITEM_PICKUP, .25f, .75f) - .playExisting(SoundEvents.BLOCK_NETHERITE_BLOCK_HIT, .25f, .75f) - .category(SoundCategory.BLOCKS) - .build(), - - CRAFTER_CLICK = create("crafter_click").subtitle("Crafter clicks") - .playExisting(SoundEvents.BLOCK_NETHERITE_BLOCK_HIT, .25f, 1) - .playExisting(SoundEvents.BLOCK_WOODEN_TRAPDOOR_OPEN, .125f, 1) - .category(SoundCategory.BLOCKS) - .build(), - - CRAFTER_CRAFT = create("crafter_craft").subtitle("Crafter crafts") - .playExisting(SoundEvents.ENTITY_ITEM_BREAK, .125f, .75f) - .category(SoundCategory.BLOCKS) - .build(), - - COPPER_ARMOR_EQUIP = create("copper_armor_equip").subtitle("Diving equipment clinks") - .playExisting(SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 1f, 1f) - .category(SoundCategory.PLAYERS) - .build(), - - AUTO_POLISH = create("deployer_polish").subtitle("Deployer applies polish") - .playExisting(SoundEvents.UI_STONECUTTER_TAKE_RESULT, 1f, 1f) - .category(SoundCategory.BLOCKS) - .build(), - - CONTROLLER_CLICK = create("controller_click").subtitle("Controller clicks") - .playExisting(SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, .35f, 1f) - .category(SoundCategory.BLOCKS) - .build(), - - SAW_ACTIVATE_WOOD = create("saw_activate_wood").subtitle("Mechanical Saw activates") - .playExisting(SoundEvents.ENTITY_BOAT_PADDLE_LAND, .75f, 1.5f) - .category(SoundCategory.BLOCKS) - .build(), - - SAW_ACTIVATE_STONE = create("saw_activate_stone").subtitle("Mechanical Saw activates") - .playExisting(SoundEvents.UI_STONECUTTER_TAKE_RESULT, .125f, 1.25f) - .category(SoundCategory.BLOCKS) - .build(), - - SAW_PROCESS = create("saw_process").subtitle("Mechanical Saw processes") - .playExisting(SoundEvents.BLOCK_SAND_PLACE, .075f, .75f) - .category(SoundCategory.BLOCKS) - .build(), - - SAW_IDLE = create("saw_idle").subtitle("Mechanical Saw turns") - .playExisting(SoundEvents.ENTITY_BOAT_PADDLE_LAND) - .category(SoundCategory.BLOCKS) - .build(), - - BLAZE_MUNCH = create("blaze_munch").subtitle("Blaze Burner munches") - .playExisting(SoundEvents.ENTITY_GENERIC_EAT, .5f, 1f) - .category(SoundCategory.BLOCKS) - .build(); - - public static SoundEntryBuilder create(String id) { - return new SoundEntryBuilder(id); - } - - public static void register(RegistryEvent.Register event) { - IForgeRegistry registry = event.getRegistry(); - for (SoundEntry entry : entries.values()) - entry.register(registry); - } - - public static void prepare() { - for (SoundEntry entry : entries.values()) - entry.prepare(); - } - - public static JsonElement provideLangEntries() { - JsonObject object = new JsonObject(); - for (SoundEntry entry : entries.values()) - object.addProperty(entry.getSubtitleKey(), entry.getSubtitle()); - return object; - } - - public static SoundEntryProvider provider(DataGenerator generator) { - return new SoundEntryProvider(generator); - } - -// @SubscribeEvent -// public static void cancelSubtitlesOfCompoundedSounds(PlaySoundEvent event) { -// ResourceLocation soundLocation = event.getSound().getSoundLocation(); -// if (!soundLocation.getNamespace().equals(Create.ID)) -// return; -// if (soundLocation.getPath().contains("_compounded_") -// event.setResultSound(); -// -// } - - private static class SoundEntryProvider implements IDataProvider { - - private DataGenerator generator; - - public SoundEntryProvider(DataGenerator generator) { - this.generator = generator; - } - - @Override - public void act(DirectoryCache cache) throws IOException { - generate(generator.getOutputFolder(), cache); - } - - @Override - public String getName() { - return "Create's Custom Sounds"; - } - - public void generate(Path path, DirectoryCache cache) { - Gson GSON = (new GsonBuilder()).setPrettyPrinting() - .disableHtmlEscaping() - .create(); - path = path.resolve("assets/create"); - - try { - JsonObject json = new JsonObject(); - entries.entrySet() - .stream() - .sorted(Map.Entry.comparingByKey()) - .forEach(entry -> { - entry.getValue() - .write(json); - }); - IDataProvider.save(GSON, cache, json, path.resolve("sounds.json")); - - } catch (IOException e) { - e.printStackTrace(); - } - } - - } - - static class SoundEntryBuilder { - - protected String id; - protected String subtitle = "unregistered"; - protected SoundCategory category = SoundCategory.BLOCKS; - List>> wrappedEvents; - - public SoundEntryBuilder(String id) { - wrappedEvents = Lists.newArrayList(); - this.id = id; - } - - public SoundEntryBuilder subtitle(String subtitle) { - this.subtitle = subtitle; - return this; - } - - public SoundEntryBuilder category(SoundCategory category) { - this.category = category; - return this; - } - - public SoundEntryBuilder playExisting(SoundEvent event, float volume, float pitch) { - wrappedEvents.add(Pair.of(event, Couple.create(volume, pitch))); - return this; - } - - public SoundEntryBuilder playExisting(SoundEvent event) { - return playExisting(event, 1, 1); - } - - public SoundEntry build() { - SoundEntry entry = wrappedEvents.isEmpty() ? new CustomSoundEntry(id, subtitle, category) - : new WrappedSoundEntry(id, subtitle, wrappedEvents, category); - entries.put(entry.getLocation(), entry); - return entry; - } - - } - - public static abstract class SoundEntry { - - protected String id; - protected String subtitle; - protected SoundCategory category; - - public SoundEntry(String id, String subtitle, SoundCategory category) { - this.id = id; - this.subtitle = subtitle; - this.category = category; - } - - public abstract void prepare(); - - public abstract void register(IForgeRegistry registry); - - public abstract void write(JsonObject json); - - public abstract SoundEvent getMainEvent(); - - public String getSubtitleKey() { - return Create.ID + ".subtitle." + id; - } - - public String getId() { - return id; - } - - public ResourceLocation getLocation() { - return Create.asResource(id); - } - - public String getSubtitle() { - return subtitle; - } - - public void playOnServer(World world, BlockPos pos) { - playOnServer(world, pos, 1, 1); - } - - public void playOnServer(World world, BlockPos pos, float volume, float pitch) { - play(world, null, pos, volume, pitch); - } - - public void play(World world, PlayerEntity entity, BlockPos pos) { - play(world, entity, pos, 1, 1); - } - - public void playFrom(Entity entity) { - playFrom(entity, 1, 1); - } - - public void playFrom(Entity entity, float volume, float pitch) { - if (!entity.isSilent()) - play(entity.world, null, entity.getBlockPos(), volume, pitch); - } - - public void play(World world, PlayerEntity entity, BlockPos pos, float volume, float pitch) { - play(world, entity, pos.getX(), pos.getY(), pos.getZ(), volume, pitch); - } - - abstract void play(World world, PlayerEntity entity, double x, double y, double z, float volume, float pitch); - - public void playAt(World world, BlockPos pos, float volume, float pitch, boolean fade) { - playAt(world, pos.getX() + .5f, pos.getY() + .5f, pos.getZ() + .5f, volume, pitch, fade); - } - - public abstract void playAt(World world, double x, double y, double z, float volume, float pitch, boolean fade); - - } - - static class WrappedSoundEntry extends SoundEntry { - - private List>> wrappedEvents; - private List>> compiledEvents; - - public WrappedSoundEntry(String id, String subtitle, List>> wrappedEvents, - SoundCategory category) { - super(id, subtitle, category); - this.wrappedEvents = wrappedEvents; - compiledEvents = Lists.newArrayList(); - } - - @Override - public void prepare() { - for (int i = 0; i < wrappedEvents.size(); i++) { - ResourceLocation location = Create.asResource(getIdOf(i)); - SoundEvent sound = new SoundEvent(location).setRegistryName(location); - compiledEvents.add(Pair.of(sound, wrappedEvents.get(i) - .getSecond())); - } - } - - @Override - public void register(IForgeRegistry registry) { - for (Pair> pair : compiledEvents) - registry.register(pair.getFirst()); - } - - @Override - public SoundEvent getMainEvent() { - return compiledEvents.get(0) - .getFirst(); - } - - protected String getIdOf(int i) { - return i == 0 ? id : id + "_compounded_" + i; - } - - @Override - public void write(JsonObject json) { - for (int i = 0; i < wrappedEvents.size(); i++) { - Pair> pair = wrappedEvents.get(i); - JsonObject entry = new JsonObject(); - JsonArray list = new JsonArray(); - JsonObject s = new JsonObject(); - s.addProperty("name", pair.getFirst() - .getName() - .toString()); - s.addProperty("type", "event"); - list.add(s); - entry.add("sounds", list); - if (i == 0) - entry.addProperty("subtitle", getSubtitleKey()); - json.add(getIdOf(i), entry); - } - } - - @Override - void play(World world, PlayerEntity entity, double x, double y, double z, float volume, float pitch) { - for (Pair> pair : compiledEvents) { - Couple volPitch = pair.getSecond(); - world.playSound(entity, x, y, z, pair.getFirst(), category, volPitch.getFirst() * volume, - volPitch.getSecond() * pitch); - } - } - - @Override - public void playAt(World world, double x, double y, double z, float volume, float pitch, boolean fade) { - for (Pair> pair : compiledEvents) { - Couple volPitch = pair.getSecond(); - world.playSound(x, y, z, pair.getFirst(), category, volPitch.getFirst() * volume, - volPitch.getSecond() * pitch, fade); - } - } - } - - static class CustomSoundEntry extends SoundEntry { - - protected SoundEvent event; - - public CustomSoundEntry(String id, String subtitle, SoundCategory category) { - super(id, subtitle, category); - } - - @Override - public void prepare() { - ResourceLocation location = getLocation(); - event = new SoundEvent(location).setRegistryName(location); - } - - @Override - public void register(IForgeRegistry registry) { - registry.register(event); - } - - @Override - public SoundEvent getMainEvent() { - return event; - } - - @Override - public void write(JsonObject json) { - JsonObject entry = new JsonObject(); - JsonArray list = new JsonArray(); - list.add(getLocation().toString()); - entry.add("sounds", list); - entry.addProperty("subtitle", getSubtitleKey()); - json.add(id, entry); - } - - @Override - void play(World world, PlayerEntity entity, double x, double y, double z, float volume, float pitch) { - world.playSound(entity, x, y, z, event, category, volume, pitch); - } - - @Override - public void playAt(World world, double x, double y, double z, float volume, float pitch, boolean fade) { - world.playSound(x, y, z, event, category, volume, pitch, fade); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/AllSpecialTextures.java b/src/main/java/com/simibubi/create/AllSpecialTextures.java deleted file mode 100644 index 786dde9be..000000000 --- a/src/main/java/com/simibubi/create/AllSpecialTextures.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create; - -import net.minecraft.client.Minecraft; -import net.minecraft.util.ResourceLocation; - -public enum AllSpecialTextures { - - BLANK("blank.png"), - CHECKERED("checkerboard.png"), - THIN_CHECKERED("thin_checkerboard.png"), - CUTOUT_CHECKERED("cutout_checkerboard.png"), - HIGHLIGHT_CHECKERED("highlighted_checkerboard.png"), - SELECTION("selection.png"), - - ; - - public static final String ASSET_PATH = "textures/special/"; - private ResourceLocation location; - - private AllSpecialTextures(String filename) { - location = new ResourceLocation(Create.ID, ASSET_PATH + filename); - } - - public void bind() { - Minecraft.getInstance() - .getTextureManager() - .bindTexture(location); - } - - public ResourceLocation getLocation() { - return location; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllSpriteShifts.java b/src/main/java/com/simibubi/create/AllSpriteShifts.java deleted file mode 100644 index 1eba9a59f..000000000 --- a/src/main/java/com/simibubi/create/AllSpriteShifts.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.simibubi.create; - -import static com.simibubi.create.foundation.block.connected.CTSpriteShifter.getCT; -import static com.simibubi.create.foundation.block.connected.CTSpriteShifter.CTType.HORIZONTAL; -import static com.simibubi.create.foundation.block.connected.CTSpriteShifter.CTType.OMNIDIRECTIONAL; -import static com.simibubi.create.foundation.block.connected.CTSpriteShifter.CTType.VERTICAL; - -import java.util.IdentityHashMap; -import java.util.Map; - -import com.simibubi.create.content.palettes.PaletteBlockPattern; -import com.simibubi.create.content.palettes.PaletteBlockPattern.CTs; -import com.simibubi.create.content.palettes.PaletteStoneVariants; -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.CTSpriteShifter.CTType; -import com.simibubi.create.foundation.block.render.SpriteShiftEntry; -import com.simibubi.create.foundation.block.render.SpriteShifter; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.WoodType; -import net.minecraft.item.DyeColor; - -public class AllSpriteShifts { - - static final Map WOODEN_WINDOWS = new IdentityHashMap<>(); - static final Map> PALETTE_VARIANT_PATTERNS = - new IdentityHashMap<>(); - - public static final Map DYED_BELTS = new IdentityHashMap<>(), - DYED_OFFSET_BELTS = new IdentityHashMap<>(), DYED_DIAGONAL_BELTS = new IdentityHashMap<>(); - - public static final CTSpriteShiftEntry FRAMED_GLASS = - getCT(OMNIDIRECTIONAL, "palettes/framed_glass", "palettes/framed_glass"), - HORIZONTAL_FRAMED_GLASS = getCT(HORIZONTAL, "palettes/framed_glass", "palettes/horizontal_framed_glass"), - VERTICAL_FRAMED_GLASS = getCT(VERTICAL, "palettes/framed_glass", "palettes/vertical_framed_glass"), - ORNATE_IRON_WINDOW = vertical("palettes/ornate_iron_window"); - - public static final CTSpriteShiftEntry CRAFTER_FRONT = getCT(CTType.OMNIDIRECTIONAL, "crafter_top", "brass_casing"), - CRAFTER_SIDE = getCT(CTType.VERTICAL, "crafter_side"), - CRAFTER_OTHERSIDE = getCT(CTType.HORIZONTAL, "crafter_side"); - - public static final CTSpriteShiftEntry ANDESITE_CASING = omni("andesite_casing"), - BRASS_CASING = omni("brass_casing"), COPPER_CASING = omni("copper_casing"), - SHADOW_STEEL_CASING = omni("shadow_steel_casing"), REFINED_RADIANCE_CASING = omni("refined_radiance_casing"), - CREATIVE_CASING = getCT(CTType.CROSS, "creative_casing"); - - public static final CTSpriteShiftEntry CHASSIS_SIDE = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_side"), - SECONDARY_CHASSIS_SIDE = getCT(CTType.OMNIDIRECTIONAL, "secondary_linear_chassis_side"), - CHASSIS = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end"), - CHASSIS_STICKY = getCT(CTType.OMNIDIRECTIONAL, "linear_chassis_end_sticky"); - - public static final CTSpriteShiftEntry BRASS_TUNNEL_TOP = vertical("brass_tunnel_top"), - FLUID_TANK = getCT(CTType.CROSS, "fluid_tank"), - CREATIVE_FLUID_TANK = getCT(CTType.CROSS, "creative_fluid_tank"); - - public static final SpriteShiftEntry BELT = SpriteShifter.get("block/belt", "block/belt_scroll"), - BELT_OFFSET = SpriteShifter.get("block/belt_offset", "block/belt_scroll"), - BELT_DIAGONAL = SpriteShifter.get("block/belt_diagonal", "block/belt_diagonal_scroll"), - ANDESIDE_BELT_CASING = SpriteShifter.get("block/brass_casing_belt", "block/andesite_casing_belt"), - CRAFTER_THINGIES = SpriteShifter.get("block/crafter_thingies", "block/crafter_thingies"); - - static { - populateMaps(); - } - - // - - public static CTSpriteShiftEntry getWoodenWindow(WoodType woodType) { - return WOODEN_WINDOWS.get(woodType); - } - - public static CTSpriteShiftEntry getVariantPattern(PaletteStoneVariants variant, PaletteBlockPattern.CTs texture) { - return PALETTE_VARIANT_PATTERNS.get(variant) - .get(texture); - } - - // - - private static void populateMaps() { - WoodType.stream() - .forEach(woodType -> WOODEN_WINDOWS.put(woodType, vertical("palettes/" + woodType.getName() + "_window"))); - - for (PaletteStoneVariants paletteStoneVariants : PaletteStoneVariants.values()) { - String variantName = Lang.asId(paletteStoneVariants.name()); - IdentityHashMap map = new IdentityHashMap<>(); - PALETTE_VARIANT_PATTERNS.put(paletteStoneVariants, map); - - for (PaletteBlockPattern.CTs texture : PaletteBlockPattern.CTs.values()) { - String textureName = Lang.asId(texture.name()); - String target = "palettes/" + variantName + "/" + textureName; - map.put(texture, getCT(texture.type, target)); - } - } - - for (DyeColor color : DyeColor.values()) { - String id = color.getString(); - DYED_BELTS.put(color, SpriteShifter.get("block/belt", "block/belt/" + id + "_scroll")); - DYED_OFFSET_BELTS.put(color, SpriteShifter.get("block/belt_offset", "block/belt/" + id + "_scroll")); - DYED_DIAGONAL_BELTS.put(color, - SpriteShifter.get("block/belt_diagonal", "block/belt/" + id + "_diagonal_scroll")); - } - } - - // - - static CTSpriteShiftEntry omni(String name) { - return getCT(OMNIDIRECTIONAL, name); - } - - static CTSpriteShiftEntry vertical(String name) { - return getCT(VERTICAL, name); - } - - static CTSpriteShiftEntry horizontal(String name) { - return getCT(HORIZONTAL, name); - } - -} diff --git a/src/main/java/com/simibubi/create/AllStitchedTextures.java b/src/main/java/com/simibubi/create/AllStitchedTextures.java deleted file mode 100644 index 30482c457..000000000 --- a/src/main/java/com/simibubi/create/AllStitchedTextures.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.simibubi.create; - -import com.jozufozu.flywheel.core.AtlasStitcher; -import com.jozufozu.flywheel.core.StitchedSprite; - -import net.minecraft.util.ResourceLocation; - -public class AllStitchedTextures { - - public static final StitchedSprite SUPER_GLUE = AtlasStitcher.getInstance().get(new ResourceLocation(Create.ID, "entity/super_glue/slime")); - - public static void init() { - - } -} diff --git a/src/main/java/com/simibubi/create/AllTags.java b/src/main/java/com/simibubi/create/AllTags.java deleted file mode 100644 index 541be85b3..000000000 --- a/src/main/java/com/simibubi/create/AllTags.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.simibubi.create; - -import static com.simibubi.create.AllTags.NameSpace.FORGE; -import static com.simibubi.create.AllTags.NameSpace.MOD; -import static com.simibubi.create.AllTags.NameSpace.TIC; - -import java.util.function.Function; - -import com.simibubi.create.foundation.data.CreateRegistrate; -import com.simibubi.create.foundation.utility.EmptyNamedTag; -import com.simibubi.create.foundation.utility.Lang; -import com.tterrag.registrate.builders.BlockBuilder; -import com.tterrag.registrate.builders.ItemBuilder; -import com.tterrag.registrate.providers.ProviderType; -import com.tterrag.registrate.util.nullness.NonNullFunction; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.FluidTags; -import net.minecraft.tags.ITag; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.ModList; - -public class AllTags { - private static final CreateRegistrate REGISTRATE = Create.registrate() - .itemGroup(() -> Create.BASE_CREATIVE_TAB); - - public static NonNullFunction, ItemBuilder>> tagBlockAndItem( - String tagName) { - return b -> b.tag(forgeBlockTag(tagName)) - .item() - .tag(forgeItemTag(tagName)); - } - - public static ITag.INamedTag forgeBlockTag(String name) { - return forgeTag(BlockTags::makeWrapperTag, name); - } - - public static ITag.INamedTag forgeItemTag(String name) { - return forgeTag(ItemTags::makeWrapperTag, name); - } - - public static ITag.INamedTag forgeFluidTag(String name) { - return forgeTag(FluidTags::makeWrapperTag, name); - } - - public static ITag.INamedTag forgeTag(Function> wrapperFactory, String name) { - return tag(wrapperFactory, "forge", name); - } - - public static ITag.INamedTag tag(Function> wrapperFactory, String domain, - String name) { - return wrapperFactory.apply(new ResourceLocation(domain, name).toString()); - } - - public static enum NameSpace { - - MOD(Create.ID), FORGE("forge"), MC("minecraft"), TIC("tconstruct") - - ; - - String id; - - private NameSpace(String id) { - this.id = id; - } - } - - public static enum AllItemTags { - CRUSHED_ORES(MOD), - SEATS(MOD), - VALVE_HANDLES(MOD), - UPRIGHT_ON_BELT(MOD), - CREATE_INGOTS(MOD), - BEACON_PAYMENT(FORGE), - INGOTS(FORGE), - NUGGETS(FORGE), - PLATES(FORGE), - COBBLESTONE(FORGE) - - ; - - public ITag.INamedTag tag; - - private AllItemTags(NameSpace namespace) { - this(namespace, ""); - } - - private AllItemTags(NameSpace namespace, String path) { - tag = ItemTags.makeWrapperTag( - new ResourceLocation(namespace.id, (path.isEmpty() ? "" : path + "/") + Lang.asId(name())).toString()); - REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.getOrCreateTagBuilder(tag)); - } - - public boolean matches(ItemStack stack) { - return tag.contains(stack.getItem()); - } - - public void add(Item... values) { - REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.getOrCreateTagBuilder(tag) - .add(values)); - } - - public void includeIn(AllItemTags parent) { - REGISTRATE.addDataGenerator(ProviderType.ITEM_TAGS, prov -> prov.getOrCreateTagBuilder(parent.tag) - .addTag(tag)); - } - } - - public static enum AllFluidTags { - NO_INFINITE_DRAINING - - ; - - public ITag.INamedTag tag; - - private AllFluidTags() { - this(MOD, ""); - } - - private AllFluidTags(NameSpace namespace) { - this(namespace, ""); - } - - private AllFluidTags(NameSpace namespace, String path) { - tag = FluidTags.createOptional( - new ResourceLocation(namespace.id, (path.isEmpty() ? "" : path + "/") + Lang.asId(name()))); - } - - public boolean matches(Fluid fluid) { - return fluid != null && fluid.isIn(tag); - } - - static void loadClass() {} - } - - public static enum AllBlockTags { - WINDMILL_SAILS, - FAN_HEATERS, - WINDOWABLE, - NON_MOVABLE, - BRITTLE, - SEATS, - SAILS, - VALVE_HANDLES, - FAN_TRANSPARENT, - SAFE_NBT, - SLIMY_LOGS(TIC) - - ; - - public ITag.INamedTag tag; - - private AllBlockTags() { - this(MOD, ""); - } - - private AllBlockTags(NameSpace namespace) { - this(namespace, ""); - } - - private AllBlockTags(NameSpace namespace, String path) { - ResourceLocation id = - new ResourceLocation(namespace.id, (path.isEmpty() ? "" : path + "/") + Lang.asId(name())); - if (ModList.get() - .isLoaded(namespace.id)) { - tag = BlockTags.makeWrapperTag(id.toString()); - REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> prov.getOrCreateTagBuilder(tag)); - } else { - tag = new EmptyNamedTag<>(id); - } - } - - public boolean matches(BlockState block) { - return tag.contains(block.getBlock()); - } - - public void includeIn(AllBlockTags parent) { - REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> prov.getOrCreateTagBuilder(parent.tag) - .addTag(tag)); - } - - public void includeAll(ITag.INamedTag child) { - REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> prov.getOrCreateTagBuilder(tag) - .addTag(child)); - } - - public void add(Block... values) { - REGISTRATE.addDataGenerator(ProviderType.BLOCK_TAGS, prov -> prov.getOrCreateTagBuilder(tag) - .add(values)); - } - } - - public static void register() { - AllItemTags.CREATE_INGOTS.includeIn(AllItemTags.BEACON_PAYMENT); - AllItemTags.CREATE_INGOTS.includeIn(AllItemTags.INGOTS); - - AllItemTags.UPRIGHT_ON_BELT.add(Items.GLASS_BOTTLE, Items.POTION, Items.SPLASH_POTION, Items.LINGERING_POTION, - Items.HONEY_BOTTLE); - - AllBlockTags.WINDMILL_SAILS.includeAll(BlockTags.WOOL); - - AllBlockTags.BRITTLE.includeAll(BlockTags.DOORS); - AllBlockTags.BRITTLE.includeAll(BlockTags.BEDS); - AllBlockTags.BRITTLE.add(Blocks.FLOWER_POT, Blocks.BELL, Blocks.COCOA); - - AllBlockTags.FAN_TRANSPARENT.includeAll(BlockTags.FENCES); - AllBlockTags.FAN_TRANSPARENT.add(Blocks.IRON_BARS); - - AllBlockTags.FAN_HEATERS.add(Blocks.MAGMA_BLOCK, Blocks.CAMPFIRE, Blocks.LAVA, Blocks.FIRE, Blocks.SOUL_FIRE, - Blocks.SOUL_CAMPFIRE); - AllBlockTags.SAFE_NBT.includeAll(BlockTags.SIGNS); - - AllFluidTags.loadClass(); - } -} diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java deleted file mode 100644 index ef6108ebb..000000000 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ /dev/null @@ -1,675 +0,0 @@ -package com.simibubi.create; - -import com.simibubi.create.content.contraptions.base.HalfShaftInstance; -import com.simibubi.create.content.contraptions.base.HorizontalHalfShaftInstance; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import com.simibubi.create.content.contraptions.components.actors.DrillInstance; -import com.simibubi.create.content.contraptions.components.actors.DrillRenderer; -import com.simibubi.create.content.contraptions.components.actors.DrillTileEntity; -import com.simibubi.create.content.contraptions.components.actors.HarvesterRenderer; -import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity; -import com.simibubi.create.content.contraptions.components.actors.PortableFluidInterfaceTileEntity; -import com.simibubi.create.content.contraptions.components.actors.PortableItemInterfaceTileEntity; -import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceRenderer; -import com.simibubi.create.content.contraptions.components.clock.CuckooClockRenderer; -import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterInstance; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterRenderer; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; -import com.simibubi.create.content.contraptions.components.crank.HandCrankInstance; -import com.simibubi.create.content.contraptions.components.crank.HandCrankRenderer; -import com.simibubi.create.content.contraptions.components.crank.HandCrankTileEntity; -import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelControllerTileEntity; -import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelTileEntity; -import com.simibubi.create.content.contraptions.components.deployer.DeployerInstance; -import com.simibubi.create.content.contraptions.components.deployer.DeployerRenderer; -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity; -import com.simibubi.create.content.contraptions.components.fan.EncasedFanRenderer; -import com.simibubi.create.content.contraptions.components.fan.EncasedFanTileEntity; -import com.simibubi.create.content.contraptions.components.fan.FanInstance; -import com.simibubi.create.content.contraptions.components.fan.NozzleTileEntity; -import com.simibubi.create.content.contraptions.components.flywheel.FlyWheelInstance; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelRenderer; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; -import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineInstance; -import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineRenderer; -import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineTileEntity; -import com.simibubi.create.content.contraptions.components.millstone.MillStoneCogInstance; -import com.simibubi.create.content.contraptions.components.millstone.MillstoneRenderer; -import com.simibubi.create.content.contraptions.components.millstone.MillstoneTileEntity; -import com.simibubi.create.content.contraptions.components.mixer.MechanicalMixerRenderer; -import com.simibubi.create.content.contraptions.components.mixer.MechanicalMixerTileEntity; -import com.simibubi.create.content.contraptions.components.mixer.MixerInstance; -import com.simibubi.create.content.contraptions.components.motor.CreativeMotorRenderer; -import com.simibubi.create.content.contraptions.components.motor.CreativeMotorTileEntity; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressRenderer; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; -import com.simibubi.create.content.contraptions.components.press.PressInstance; -import com.simibubi.create.content.contraptions.components.saw.SawInstance; -import com.simibubi.create.content.contraptions.components.saw.SawRenderer; -import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.ChassisTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.HosePulleyInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.RopePulleyInstance; -import com.simibubi.create.content.contraptions.components.turntable.TurntableTileEntity; -import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelTileEntity; -import com.simibubi.create.content.contraptions.fluids.PumpCogInstance; -import com.simibubi.create.content.contraptions.fluids.PumpRenderer; -import com.simibubi.create.content.contraptions.fluids.PumpTileEntity; -import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyRenderer; -import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyTileEntity; -import com.simibubi.create.content.contraptions.fluids.actors.ItemDrainRenderer; -import com.simibubi.create.content.contraptions.fluids.actors.ItemDrainTileEntity; -import com.simibubi.create.content.contraptions.fluids.actors.SpoutRenderer; -import com.simibubi.create.content.contraptions.fluids.actors.SpoutTileEntity; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeTileEntity; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidValveInstance; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidValveRenderer; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidValveTileEntity; -import com.simibubi.create.content.contraptions.fluids.pipes.SmartFluidPipeTileEntity; -import com.simibubi.create.content.contraptions.fluids.pipes.StraightPipeTileEntity; -import com.simibubi.create.content.contraptions.fluids.pipes.TransparentStraightPipeRenderer; -import com.simibubi.create.content.contraptions.fluids.tank.CreativeFluidTankTileEntity; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankRenderer; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; -import com.simibubi.create.content.contraptions.processing.BasinRenderer; -import com.simibubi.create.content.contraptions.processing.BasinTileEntity; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerRenderer; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerTileEntity; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity; -import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerRenderer; -import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerTileEntity; -import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.BeltInstance; -import com.simibubi.create.content.contraptions.relays.belt.BeltRenderer; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.relays.elementary.SimpleKineticTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.AdjustablePulleyTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.ClutchTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftRenderer; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; -import com.simibubi.create.content.contraptions.relays.encased.SplitShaftInstance; -import com.simibubi.create.content.contraptions.relays.encased.SplitShaftRenderer; -import com.simibubi.create.content.contraptions.relays.gauge.GaugeInstance; -import com.simibubi.create.content.contraptions.relays.gauge.GaugeRenderer; -import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity; -import com.simibubi.create.content.contraptions.relays.gauge.StressGaugeTileEntity; -import com.simibubi.create.content.contraptions.relays.gearbox.GearboxInstance; -import com.simibubi.create.content.contraptions.relays.gearbox.GearboxRenderer; -import com.simibubi.create.content.contraptions.relays.gearbox.GearboxTileEntity; -import com.simibubi.create.content.contraptions.relays.gearbox.GearshiftTileEntity; -import com.simibubi.create.content.curiosities.armor.CopperBacktankInstance; -import com.simibubi.create.content.curiosities.armor.CopperBacktankRenderer; -import com.simibubi.create.content.curiosities.armor.CopperBacktankTileEntity; -import com.simibubi.create.content.curiosities.projector.ChromaticProjectorInstance; -import com.simibubi.create.content.curiosities.projector.ChromaticProjectorTileEntity; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelInstance; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelRenderer; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; -import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; -import com.simibubi.create.content.logistics.block.chute.ChuteRenderer; -import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; -import com.simibubi.create.content.logistics.block.chute.SmartChuteRenderer; -import com.simibubi.create.content.logistics.block.chute.SmartChuteTileEntity; -import com.simibubi.create.content.logistics.block.depot.DepotRenderer; -import com.simibubi.create.content.logistics.block.depot.DepotTileEntity; -import com.simibubi.create.content.logistics.block.depot.EjectorInstance; -import com.simibubi.create.content.logistics.block.depot.EjectorRenderer; -import com.simibubi.create.content.logistics.block.depot.EjectorTileEntity; -import com.simibubi.create.content.logistics.block.diodes.AdjustablePulseRepeaterTileEntity; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterInstance; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterRenderer; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterTileEntity; -import com.simibubi.create.content.logistics.block.funnel.FunnelInstance; -import com.simibubi.create.content.logistics.block.funnel.FunnelRenderer; -import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; -import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateTileEntity; -import com.simibubi.create.content.logistics.block.inventories.CreativeCrateTileEntity; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInstance; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmRenderer; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity; -import com.simibubi.create.content.logistics.block.redstone.AnalogLeverInstance; -import com.simibubi.create.content.logistics.block.redstone.AnalogLeverRenderer; -import com.simibubi.create.content.logistics.block.redstone.AnalogLeverTileEntity; -import com.simibubi.create.content.logistics.block.redstone.ContentObserverTileEntity; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; -import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkTileEntity; -import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchTileEntity; -import com.simibubi.create.content.schematics.block.SchematicTableTileEntity; -import com.simibubi.create.content.schematics.block.SchematicannonInstance; -import com.simibubi.create.content.schematics.block.SchematicannonRenderer; -import com.simibubi.create.content.schematics.block.SchematicannonTileEntity; -import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; -import com.tterrag.registrate.util.entry.TileEntityEntry; - -public class AllTileEntities { - - // Schematics - public static final TileEntityEntry SCHEMATICANNON = Create.registrate() - .tileEntity("schematicannon", SchematicannonTileEntity::new) - .instance(() -> SchematicannonInstance::new) - .validBlocks(AllBlocks.SCHEMATICANNON) - .renderer(() -> SchematicannonRenderer::new) - .register(); - - public static final TileEntityEntry SCHEMATIC_TABLE = Create.registrate() - .tileEntity("schematic_table", SchematicTableTileEntity::new) - .validBlocks(AllBlocks.SCHEMATIC_TABLE) - .register(); - - // Kinetics - public static final TileEntityEntry SIMPLE_KINETIC = Create.registrate() - .tileEntity("simple_kinetic", SimpleKineticTileEntity::new) - .instance(() -> SingleRotatingInstance::new) - .validBlocks(AllBlocks.SHAFT, AllBlocks.COGWHEEL, AllBlocks.LARGE_COGWHEEL) - .renderer(() -> KineticTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry MOTOR = Create.registrate() - .tileEntity("motor", CreativeMotorTileEntity::new) - .instance(() -> HalfShaftInstance::new) - .validBlocks(AllBlocks.CREATIVE_MOTOR) - .renderer(() -> CreativeMotorRenderer::new) - .register(); - - public static final TileEntityEntry GEARBOX = Create.registrate() - .tileEntity("gearbox", GearboxTileEntity::new) - .instance(() -> GearboxInstance::new) - .validBlocks(AllBlocks.GEARBOX) - .renderer(() -> GearboxRenderer::new) - .register(); - - public static final TileEntityEntry ENCASED_SHAFT = Create.registrate() - .tileEntity("encased_shaft", EncasedShaftTileEntity::new) - .instance(() -> ShaftInstance::new) - .validBlocks(AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT, AllBlocks.ENCASED_CHAIN_DRIVE) - .renderer(() -> EncasedShaftRenderer::new) - .register(); - - public static final TileEntityEntry ADJUSTABLE_PULLEY = Create.registrate() - .tileEntity("adjustable_pulley", AdjustablePulleyTileEntity::new) - .instance(() -> ShaftInstance::new) - .validBlocks(AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT) - .renderer(() -> EncasedShaftRenderer::new) - .register(); - - public static final TileEntityEntry ENCASED_FAN = Create.registrate() - .tileEntity("encased_fan", EncasedFanTileEntity::new) - .instance(() -> FanInstance::new) - .validBlocks(AllBlocks.ENCASED_FAN) - .renderer(() -> EncasedFanRenderer::new) - .register(); - - public static final TileEntityEntry NOZZLE = Create.registrate() - .tileEntity("nozzle", NozzleTileEntity::new) - .validBlocks(AllBlocks.NOZZLE) - // .renderer(() -> renderer) - .register(); - - public static final TileEntityEntry CLUTCH = Create.registrate() - .tileEntity("clutch", ClutchTileEntity::new) - .instance(() -> SplitShaftInstance::new) - .validBlocks(AllBlocks.CLUTCH) - .renderer(() -> SplitShaftRenderer::new) - .register(); - - public static final TileEntityEntry GEARSHIFT = Create.registrate() - .tileEntity("gearshift", GearshiftTileEntity::new) - .instance(() -> SplitShaftInstance::new) - .validBlocks(AllBlocks.GEARSHIFT) - .renderer(() -> SplitShaftRenderer::new) - .register(); - - public static final TileEntityEntry TURNTABLE = Create.registrate() - .tileEntity("turntable", TurntableTileEntity::new) - .instance(() -> SingleRotatingInstance::new) - .validBlocks(AllBlocks.TURNTABLE) - .renderer(() -> KineticTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry HAND_CRANK = Create.registrate() - .tileEntity("hand_crank", HandCrankTileEntity::new) - .instance(() -> HandCrankInstance::new) - .validBlocks(AllBlocks.HAND_CRANK, AllBlocks.COPPER_VALVE_HANDLE) - .validBlocks(AllBlocks.DYED_VALVE_HANDLES.toArray()) - .renderer(() -> HandCrankRenderer::new) - .register(); - - public static final TileEntityEntry CUCKOO_CLOCK = Create.registrate() - .tileEntity("cuckoo_clock", CuckooClockTileEntity::new) - .instance(() -> HorizontalHalfShaftInstance::new) - .validBlocks(AllBlocks.CUCKOO_CLOCK, AllBlocks.MYSTERIOUS_CUCKOO_CLOCK) - .renderer(() -> CuckooClockRenderer::new) - .register(); - - public static final TileEntityEntry GANTRY_SHAFT = Create.registrate() - .tileEntity("gantry_shaft", GantryShaftTileEntity::new) - .instance(() -> SingleRotatingInstance::new) - .validBlocks(AllBlocks.GANTRY_SHAFT) - .renderer(() -> KineticTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry GANTRY_PINION = Create.registrate() - .tileEntity("gantry_pinion", GantryCarriageTileEntity::new) - .instance(() -> GantryCarriageInstance::new) - .validBlocks(AllBlocks.GANTRY_CARRIAGE) - .renderer(() -> GantryCarriageRenderer::new) - .register(); - - public static final TileEntityEntry MECHANICAL_PUMP = Create.registrate() - .tileEntity("mechanical_pump", PumpTileEntity::new) - .instance(() -> PumpCogInstance::new) - .validBlocks(AllBlocks.MECHANICAL_PUMP) - .renderer(() -> PumpRenderer::new) - .register(); - - public static final TileEntityEntry SMART_FLUID_PIPE = Create.registrate() - .tileEntity("smart_fluid_pipe", SmartFluidPipeTileEntity::new) - .validBlocks(AllBlocks.SMART_FLUID_PIPE) - .renderer(() -> SmartTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry FLUID_PIPE = Create.registrate() - .tileEntity("fluid_pipe", FluidPipeTileEntity::new) - .validBlocks(AllBlocks.FLUID_PIPE) - .register(); - - public static final TileEntityEntry ENCASED_FLUID_PIPE = Create.registrate() - .tileEntity("encased_fluid_pipe", FluidPipeTileEntity::new) - .validBlocks(AllBlocks.ENCASED_FLUID_PIPE) - .register(); - - public static final TileEntityEntry GLASS_FLUID_PIPE = Create.registrate() - .tileEntity("glass_fluid_pipe", StraightPipeTileEntity::new) - .validBlocks(AllBlocks.GLASS_FLUID_PIPE) - .renderer(() -> TransparentStraightPipeRenderer::new) - .register(); - - public static final TileEntityEntry FLUID_VALVE = Create.registrate() - .tileEntity("fluid_valve", FluidValveTileEntity::new) - .instance(() -> FluidValveInstance::new) - .validBlocks(AllBlocks.FLUID_VALVE) - .renderer(() -> FluidValveRenderer::new) - .register(); - - public static final TileEntityEntry FLUID_TANK = Create.registrate() - .tileEntity("fluid_tank", FluidTankTileEntity::new) - .validBlocks(AllBlocks.FLUID_TANK) - .renderer(() -> FluidTankRenderer::new) - .register(); - - public static final TileEntityEntry CREATIVE_FLUID_TANK = Create.registrate() - .tileEntity("creative_fluid_tank", CreativeFluidTankTileEntity::new) - .validBlocks(AllBlocks.CREATIVE_FLUID_TANK) - .renderer(() -> FluidTankRenderer::new) - .register(); - - public static final TileEntityEntry HOSE_PULLEY = Create.registrate() - .tileEntity("hose_pulley", HosePulleyTileEntity::new) - .instance(() -> HosePulleyInstance::new) - .validBlocks(AllBlocks.HOSE_PULLEY) - .renderer(() -> HosePulleyRenderer::new) - .register(); - - public static final TileEntityEntry SPOUT = Create.registrate() - .tileEntity("spout", SpoutTileEntity::new) - .validBlocks(AllBlocks.SPOUT) - .renderer(() -> SpoutRenderer::new) - .register(); - - public static final TileEntityEntry ITEM_DRAIN = Create.registrate() - .tileEntity("item_drain", ItemDrainTileEntity::new) - .validBlocks(AllBlocks.ITEM_DRAIN) - .renderer(() -> ItemDrainRenderer::new) - .register(); - - public static final TileEntityEntry BELT = Create.registrate() - .tileEntity("belt", BeltTileEntity::new) - .instance(() -> BeltInstance::new) - .validBlocks(AllBlocks.BELT) - .renderer(() -> BeltRenderer::new) - .register(); - - public static final TileEntityEntry CHUTE = Create.registrate() - .tileEntity("chute", ChuteTileEntity::new) - .validBlocks(AllBlocks.CHUTE) - .renderer(() -> ChuteRenderer::new) - .register(); - - public static final TileEntityEntry SMART_CHUTE = Create.registrate() - .tileEntity("smart_chute", SmartChuteTileEntity::new) - .validBlocks(AllBlocks.SMART_CHUTE) - .renderer(() -> SmartChuteRenderer::new) - .register(); - - public static final TileEntityEntry ANDESITE_TUNNEL = Create.registrate() - .tileEntity("andesite_tunnel", BeltTunnelTileEntity::new) - .instance(() -> BeltTunnelInstance::new) - .validBlocks(AllBlocks.ANDESITE_TUNNEL) - .renderer(() -> BeltTunnelRenderer::new) - .register(); - - public static final TileEntityEntry BRASS_TUNNEL = Create.registrate() - .tileEntity("brass_tunnel", BrassTunnelTileEntity::new) - .instance(() -> BeltTunnelInstance::new) - .validBlocks(AllBlocks.BRASS_TUNNEL) - .renderer(() -> BeltTunnelRenderer::new) - .register(); - - public static final TileEntityEntry MECHANICAL_ARM = Create.registrate() - .tileEntity("mechanical_arm", ArmTileEntity::new) - .instance(() -> ArmInstance::new) - .validBlocks(AllBlocks.MECHANICAL_ARM) - .renderer(() -> ArmRenderer::new) - .register(); - - public static final TileEntityEntry MECHANICAL_PISTON = Create.registrate() - .tileEntity("mechanical_piston", MechanicalPistonTileEntity::new) - .instance(() -> ShaftInstance::new) - .validBlocks(AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON) - .renderer(() -> MechanicalPistonRenderer::new) - .register(); - - public static final TileEntityEntry WINDMILL_BEARING = Create.registrate() - .tileEntity("windmill_bearing", WindmillBearingTileEntity::new) - .instance(() -> BearingInstance::new) - .validBlocks(AllBlocks.WINDMILL_BEARING) - .renderer(() -> BearingRenderer::new) - .register(); - - public static final TileEntityEntry MECHANICAL_BEARING = Create.registrate() - .tileEntity("mechanical_bearing", MechanicalBearingTileEntity::new) - .instance(() -> BearingInstance::new) - .validBlocks(AllBlocks.MECHANICAL_BEARING) - .renderer(() -> BearingRenderer::new) - .register(); - - public static final TileEntityEntry CLOCKWORK_BEARING = Create.registrate() - .tileEntity("clockwork_bearing", ClockworkBearingTileEntity::new) - .instance(() -> BearingInstance::new) - .validBlocks(AllBlocks.CLOCKWORK_BEARING) - .renderer(() -> BearingRenderer::new) - .register(); - - public static final TileEntityEntry ROPE_PULLEY = Create.registrate() - .tileEntity("rope_pulley", PulleyTileEntity::new) - .instance(() -> RopePulleyInstance::new) - .validBlocks(AllBlocks.ROPE_PULLEY) - .renderer(() -> PulleyRenderer::new) - .register(); - - public static final TileEntityEntry CHASSIS = Create.registrate() - .tileEntity("chassis", ChassisTileEntity::new) - .validBlocks(AllBlocks.RADIAL_CHASSIS, AllBlocks.LINEAR_CHASSIS, AllBlocks.SECONDARY_LINEAR_CHASSIS) - // .renderer(() -> renderer) - .register(); - - public static final TileEntityEntry STICKER = Create.registrate() - .tileEntity("sticker", StickerTileEntity::new) - .instance(() -> StickerInstance::new) - .validBlocks(AllBlocks.STICKER) - .renderer(() -> StickerRenderer::new) - .register(); - - public static final TileEntityEntry DRILL = Create.registrate() - .tileEntity("drill", DrillTileEntity::new) - .instance(() -> DrillInstance::new) - .validBlocks(AllBlocks.MECHANICAL_DRILL) - .renderer(() -> DrillRenderer::new) - .register(); - - public static final TileEntityEntry SAW = Create.registrate() - .tileEntity("saw", SawTileEntity::new) - .instance(() -> SawInstance::new) - .validBlocks(AllBlocks.MECHANICAL_SAW) - .renderer(() -> SawRenderer::new) - .register(); - - public static final TileEntityEntry HARVESTER = Create.registrate() - .tileEntity("harvester", HarvesterTileEntity::new) - .validBlocks(AllBlocks.MECHANICAL_HARVESTER) - .renderer(() -> HarvesterRenderer::new) - .register(); - - public static final TileEntityEntry PORTABLE_STORAGE_INTERFACE = - Create.registrate() - .tileEntity("portable_storage_interface", PortableItemInterfaceTileEntity::new) - .validBlocks(AllBlocks.PORTABLE_STORAGE_INTERFACE) - .renderer(() -> PortableStorageInterfaceRenderer::new) - .register(); - - public static final TileEntityEntry PORTABLE_FLUID_INTERFACE = Create.registrate() - .tileEntity("portable_fluid_interface", PortableFluidInterfaceTileEntity::new) - .validBlocks(AllBlocks.PORTABLE_FLUID_INTERFACE) - .renderer(() -> PortableStorageInterfaceRenderer::new) - .register(); - - public static final TileEntityEntry FLYWHEEL = Create.registrate() - .tileEntity("flywheel", FlywheelTileEntity::new) - .instance(() -> FlyWheelInstance::new) - .validBlocks(AllBlocks.FLYWHEEL) - .renderer(() -> FlywheelRenderer::new) - .register(); - - public static final TileEntityEntry FURNACE_ENGINE = Create.registrate() - .tileEntity("furnace_engine", FurnaceEngineTileEntity::new) - .instance(() -> EngineInstance::new) - .validBlocks(AllBlocks.FURNACE_ENGINE) - .renderer(() -> EngineRenderer::new) - .register(); - - public static final TileEntityEntry MILLSTONE = Create.registrate() - .tileEntity("millstone", MillstoneTileEntity::new) - .instance(() -> MillStoneCogInstance::new) - .validBlocks(AllBlocks.MILLSTONE) - .renderer(() -> MillstoneRenderer::new) - .register(); - - public static final TileEntityEntry CRUSHING_WHEEL = Create.registrate() - .tileEntity("crushing_wheel", CrushingWheelTileEntity::new) - .instance(() -> SingleRotatingInstance::new) - .validBlocks(AllBlocks.CRUSHING_WHEEL) - .renderer(() -> KineticTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry CRUSHING_WHEEL_CONTROLLER = - Create.registrate() - .tileEntity("crushing_wheel_controller", CrushingWheelControllerTileEntity::new) - .validBlocks(AllBlocks.CRUSHING_WHEEL_CONTROLLER) - // .renderer(() -> renderer) - .register(); - - public static final TileEntityEntry WATER_WHEEL = Create.registrate() - .tileEntity("water_wheel", WaterWheelTileEntity::new) - .instance(() -> SingleRotatingInstance::new) - .validBlocks(AllBlocks.WATER_WHEEL) - .renderer(() -> KineticTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry MECHANICAL_PRESS = Create.registrate() - .tileEntity("mechanical_press", MechanicalPressTileEntity::new) - .instance(() -> PressInstance::new) - .validBlocks(AllBlocks.MECHANICAL_PRESS) - .renderer(() -> MechanicalPressRenderer::new) - .register(); - - public static final TileEntityEntry MECHANICAL_MIXER = Create.registrate() - .tileEntity("mechanical_mixer", MechanicalMixerTileEntity::new) - .instance(() -> MixerInstance::new) - .validBlocks(AllBlocks.MECHANICAL_MIXER) - .renderer(() -> MechanicalMixerRenderer::new) - .register(); - - public static final TileEntityEntry DEPLOYER = Create.registrate() - .tileEntity("deployer", DeployerTileEntity::new) - .instance(() -> DeployerInstance::new) - .validBlocks(AllBlocks.DEPLOYER) - .renderer(() -> DeployerRenderer::new) - .register(); - - public static final TileEntityEntry BASIN = Create.registrate() - .tileEntity("basin", BasinTileEntity::new) - .validBlocks(AllBlocks.BASIN) - .renderer(() -> BasinRenderer::new) - .register(); - - public static final TileEntityEntry HEATER = Create.registrate() - .tileEntity("blaze_heater", BlazeBurnerTileEntity::new) - .validBlocks(AllBlocks.BLAZE_BURNER) - .renderer(() -> BlazeBurnerRenderer::new) - .register(); - - public static final TileEntityEntry MECHANICAL_CRAFTER = Create.registrate() - .tileEntity("mechanical_crafter", MechanicalCrafterTileEntity::new) - .instance(() -> MechanicalCrafterInstance::new) - .validBlocks(AllBlocks.MECHANICAL_CRAFTER) - .renderer(() -> MechanicalCrafterRenderer::new) - .register(); - - public static final TileEntityEntry SEQUENCED_GEARSHIFT = Create.registrate() - .tileEntity("sequenced_gearshift", SequencedGearshiftTileEntity::new) - .instance(() -> SplitShaftInstance::new) - .validBlocks(AllBlocks.SEQUENCED_GEARSHIFT) - .renderer(() -> SplitShaftRenderer::new) - .register(); - - public static final TileEntityEntry ROTATION_SPEED_CONTROLLER = Create.registrate() - .tileEntity("rotation_speed_controller", SpeedControllerTileEntity::new) - .instance(() -> ShaftInstance::new) - .validBlocks(AllBlocks.ROTATION_SPEED_CONTROLLER) - .renderer(() -> SpeedControllerRenderer::new) - .register(); - - public static final TileEntityEntry SPEEDOMETER = Create.registrate() - .tileEntity("speedometer", SpeedGaugeTileEntity::new) - .instance(() -> GaugeInstance.Speed::new) - .validBlocks(AllBlocks.SPEEDOMETER) - .renderer(() -> GaugeRenderer::speed) - .register(); - - public static final TileEntityEntry STRESSOMETER = Create.registrate() - .tileEntity("stressometer", StressGaugeTileEntity::new) - .instance(() -> GaugeInstance.Stress::new) - .validBlocks(AllBlocks.STRESSOMETER) - .renderer(() -> GaugeRenderer::stress) - .register(); - - public static final TileEntityEntry ANALOG_LEVER = Create.registrate() - .tileEntity("analog_lever", AnalogLeverTileEntity::new) - .instance(() -> AnalogLeverInstance::new) - .validBlocks(AllBlocks.ANALOG_LEVER) - .renderer(() -> AnalogLeverRenderer::new) - .register(); - - public static final TileEntityEntry CART_ASSEMBLER = Create.registrate() - .tileEntity("cart_assembler", CartAssemblerTileEntity::new) - .validBlocks(AllBlocks.CART_ASSEMBLER) - // .renderer(() -> renderer) - .register(); - - // Logistics - public static final TileEntityEntry REDSTONE_LINK = Create.registrate() - .tileEntity("redstone_link", RedstoneLinkTileEntity::new) - .validBlocks(AllBlocks.REDSTONE_LINK) - .renderer(() -> SmartTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry NIXIE_TUBE = Create.registrate() - .tileEntity("nixie_tube", NixieTubeTileEntity::new) - .validBlocks(AllBlocks.NIXIE_TUBE) - .renderer(() -> NixieTubeRenderer::new) - .register(); - - public static final TileEntityEntry STOCKPILE_SWITCH = Create.registrate() - .tileEntity("stockpile_switch", StockpileSwitchTileEntity::new) - .validBlocks(AllBlocks.STOCKPILE_SWITCH) - .renderer(() -> SmartTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry ADJUSTABLE_CRATE = Create.registrate() - .tileEntity("adjustable_crate", AdjustableCrateTileEntity::new) - .validBlocks(AllBlocks.ADJUSTABLE_CRATE) - // .renderer(() -> renderer) - .register(); - - public static final TileEntityEntry CREATIVE_CRATE = Create.registrate() - .tileEntity("creative_crate", CreativeCrateTileEntity::new) - .validBlocks(AllBlocks.CREATIVE_CRATE) - .renderer(() -> SmartTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry DEPOT = Create.registrate() - .tileEntity("depot", DepotTileEntity::new) - .validBlocks(AllBlocks.DEPOT) - .renderer(() -> DepotRenderer::new) - .register(); - - public static final TileEntityEntry WEIGHTED_EJECTOR = Create.registrate() - .tileEntity("weighted_ejector", EjectorTileEntity::new) - .instance(() -> EjectorInstance::new) - .validBlocks(AllBlocks.WEIGHTED_EJECTOR) - .renderer(() -> EjectorRenderer::new) - .register(); - - public static final TileEntityEntry FUNNEL = Create.registrate() - .tileEntity("funnel", FunnelTileEntity::new) - .instance(() -> FunnelInstance::new) - .validBlocks(AllBlocks.BRASS_FUNNEL, AllBlocks.BRASS_BELT_FUNNEL, AllBlocks.ANDESITE_FUNNEL, - AllBlocks.ANDESITE_BELT_FUNNEL) - .renderer(() -> FunnelRenderer::new) - .register(); - - public static final TileEntityEntry CONTENT_OBSERVER = Create.registrate() - .tileEntity("content_observer", ContentObserverTileEntity::new) - .validBlocks(AllBlocks.CONTENT_OBSERVER) - .renderer(() -> SmartTileEntityRenderer::new) - .register(); - - public static final TileEntityEntry ADJUSTABLE_REPEATER = Create.registrate() - .tileEntity("adjustable_repeater", AdjustableRepeaterTileEntity::new) - .instance(() -> AdjustableRepeaterInstance::new) - .validBlocks(AllBlocks.ADJUSTABLE_REPEATER) - .renderer(() -> AdjustableRepeaterRenderer::new) - .register(); - - public static final TileEntityEntry ADJUSTABLE_PULSE_REPEATER = - Create.registrate() - .tileEntity("adjustable_pulse_repeater", AdjustablePulseRepeaterTileEntity::new) - .instance(() -> AdjustableRepeaterInstance::new) - .validBlocks(AllBlocks.ADJUSTABLE_PULSE_REPEATER) - .renderer(() -> AdjustableRepeaterRenderer::new) - .register(); - public static final TileEntityEntry COPPER_BACKTANK = Create.registrate() - .tileEntity("copper_backtank", CopperBacktankTileEntity::new) - .instance(() -> CopperBacktankInstance::new) - .validBlocks(AllBlocks.COPPER_BACKTANK) - .renderer(() -> CopperBacktankRenderer::new) - .register(); - - public static final TileEntityEntry CHROMATIC_PROJECTOR =Create.registrate() - .tileEntity("chromatic_projector", ChromaticProjectorTileEntity::new) - .instance(() -> ChromaticProjectorInstance::new) - .validBlocks(AllBlocks.CHROMATIC_PROJECTOR) - .register(); - - public static void register() {} -} diff --git a/src/main/java/com/simibubi/create/Create.java b/src/main/java/com/simibubi/create/Create.java deleted file mode 100644 index d86dea882..000000000 --- a/src/main/java/com/simibubi/create/Create.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create; - -import java.util.Random; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.simibubi.create.content.CreateItemGroup; -import com.simibubi.create.content.contraptions.TorquePropagator; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler; -import com.simibubi.create.content.palettes.AllPaletteBlocks; -import com.simibubi.create.content.palettes.PalettesItemGroup; -import com.simibubi.create.content.schematics.SchematicProcessor; -import com.simibubi.create.content.schematics.ServerSchematicLoader; -import com.simibubi.create.content.schematics.filtering.SchematicInstances; -import com.simibubi.create.foundation.advancement.AllAdvancements; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.command.ChunkUtil; -import com.simibubi.create.foundation.command.ServerLagger; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.data.CreateRegistrate; -import com.simibubi.create.foundation.data.LangMerger; -import com.simibubi.create.foundation.data.recipe.MechanicalCraftingRecipeGen; -import com.simibubi.create.foundation.data.recipe.ProcessingRecipeGen; -import com.simibubi.create.foundation.data.recipe.StandardRecipeGen; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.worldgen.AllWorldFeatures; -import com.tterrag.registrate.util.NonNullLazyValue; - -import net.minecraft.data.DataGenerator; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.particles.ParticleType; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundEvent; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.placement.Placement; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.world.BiomeLoadingEvent; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.event.lifecycle.GatherDataEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; - -@Mod(Create.ID) -public class Create { - - public static final String ID = "create"; - public static final String NAME = "Create"; - public static final String VERSION = "0.3.2"; - - public static final Logger LOGGER = LogManager.getLogger(); - - public static final Gson GSON = new GsonBuilder().setPrettyPrinting() - .disableHtmlEscaping() - .create(); - - public static final ItemGroup BASE_CREATIVE_TAB = new CreateItemGroup(); - public static final ItemGroup PALETTES_CREATIVE_TAB = new PalettesItemGroup(); - - public static final ServerSchematicLoader SCHEMATIC_RECEIVER = new ServerSchematicLoader(); - public static final RedstoneLinkNetworkHandler REDSTONE_LINK_NETWORK_HANDLER = new RedstoneLinkNetworkHandler(); - public static final TorquePropagator TORQUE_PROPAGATOR = new TorquePropagator(); - public static final ServerLagger LAGGER = new ServerLagger(); - public static final ChunkUtil CHUNK_UTIL = new ChunkUtil(); - public static final Random RANDOM = new Random(); - - private static final NonNullLazyValue REGISTRATE = CreateRegistrate.lazy(ID); - - public Create() { - AllSoundEvents.prepare(); - AllBlocks.register(); - AllItems.register(); - AllFluids.register(); - AllTags.register(); - AllPaletteBlocks.register(); - AllContainerTypes.register(); - AllEntityTypes.register(); - AllTileEntities.register(); - AllMovementBehaviours.register(); - AllWorldFeatures.register(); - AllConfigs.register(); - - IEventBus modEventBus = FMLJavaModLoadingContext.get() - .getModEventBus(); - IEventBus forgeEventBus = MinecraftForge.EVENT_BUS; - - modEventBus.addListener(Create::init); - modEventBus.addGenericListener(Feature.class, AllWorldFeatures::registerOreFeatures); - modEventBus.addGenericListener(Placement.class, AllWorldFeatures::registerDecoratorFeatures); - modEventBus.addGenericListener(IRecipeSerializer.class, AllRecipeTypes::register); - modEventBus.addGenericListener(ParticleType.class, AllParticleTypes::register); - modEventBus.addGenericListener(SoundEvent.class, AllSoundEvents::register); - modEventBus.addListener(AllConfigs::onLoad); - modEventBus.addListener(AllConfigs::onReload); - modEventBus.addListener(EventPriority.LOWEST, this::gatherData); - forgeEventBus.addListener(EventPriority.HIGH, Create::onBiomeLoad); - - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> CreateClient.addClientListeners(modEventBus)); - } - - public static void init(final FMLCommonSetupEvent event) { - CapabilityMinecartController.register(); - SchematicInstances.register(); - - CHUNK_UTIL.init(); - MinecraftForge.EVENT_BUS.register(CHUNK_UTIL); - - AllPackets.registerPackets(); - AllTriggers.register(); - - event.enqueueWork(() -> { - SchematicProcessor.register(); - AllWorldFeatures.registerFeatures(); - }); - } - - public void gatherData(GatherDataEvent event) { - DataGenerator gen = event.getGenerator(); - gen.addProvider(new AllAdvancements(gen)); - gen.addProvider(new LangMerger(gen)); - gen.addProvider(AllSoundEvents.provider(gen)); - gen.addProvider(new StandardRecipeGen(gen)); - gen.addProvider(new MechanicalCraftingRecipeGen(gen)); - ProcessingRecipeGen.registerAll(gen); - } - - public static void onBiomeLoad(BiomeLoadingEvent event) { - AllWorldFeatures.reload(event); - } - - public static CreateRegistrate registrate() { - return REGISTRATE.get(); - } - - public static ResourceLocation asResource(String path) { - return new ResourceLocation(ID, path); - } - -} diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java deleted file mode 100644 index 72d549e8d..000000000 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.simibubi.create; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.AtlasStitcher; -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; -import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer; -import com.simibubi.create.content.schematics.ClientSchematicLoader; -import com.simibubi.create.content.schematics.client.SchematicAndQuillHandler; -import com.simibubi.create.content.schematics.client.SchematicHandler; -import com.simibubi.create.events.ClientEvents; -import com.simibubi.create.foundation.ResourceReloadHandler; -import com.simibubi.create.foundation.block.render.CustomBlockModels; -import com.simibubi.create.foundation.block.render.SpriteShifter; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.item.render.CustomItemModels; -import com.simibubi.create.foundation.item.render.CustomRenderedItems; -import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.render.SuperByteBufferCache; -import com.simibubi.create.foundation.utility.ghost.GhostBlocks; -import com.simibubi.create.foundation.utility.outliner.Outliner; - -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BlockModelShapes; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ModelResourceLocation; -import net.minecraft.client.settings.GraphicsFanciness; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.item.Item; -import net.minecraft.resources.IReloadableResourceManager; -import net.minecraft.resources.IResourceManager; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.ChatType; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextComponentUtils; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.event.ClickEvent; -import net.minecraft.util.text.event.HoverEvent; -import net.minecraftforge.client.event.ModelBakeEvent; -import net.minecraftforge.client.event.ModelRegistryEvent; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.client.model.ModelLoader; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; - -public class CreateClient { - - public static final ClientSchematicLoader SCHEMATIC_SENDER = new ClientSchematicLoader(); - public static final SchematicHandler SCHEMATIC_HANDLER = new SchematicHandler(); - public static final SchematicAndQuillHandler SCHEMATIC_AND_QUILL_HANDLER = new SchematicAndQuillHandler(); - public static final SuperByteBufferCache BUFFER_CACHE = new SuperByteBufferCache(); - public static final Outliner OUTLINER = new Outliner(); - public static final GhostBlocks GHOST_BLOCKS = new GhostBlocks(); - - private static CustomBlockModels customBlockModels; - private static CustomItemModels customItemModels; - private static CustomRenderedItems customRenderedItems; - private static CasingConnectivity casingConnectivity; - - public static void addClientListeners(IEventBus modEventBus) { - modEventBus.addListener(CreateClient::clientInit); - modEventBus.addListener(CreateClient::onTextureStitch); - modEventBus.addListener(CreateClient::onModelRegistry); - modEventBus.addListener(CreateClient::onModelBake); - modEventBus.addListener(AllParticleTypes::registerFactories); - modEventBus.addListener(ClientEvents::loadCompleted); - - Backend.getInstance(); - modEventBus.addListener(AtlasStitcher.getInstance()::onTextureStitch); - } - - public static void clientInit(FMLClientSetupEvent event) { - BUFFER_CACHE.registerCompartment(KineticTileEntityRenderer.KINETIC_TILE); - BUFFER_CACHE.registerCompartment(ContraptionRenderDispatcher.CONTRAPTION, 20); - BUFFER_CACHE.registerCompartment(WorldSectionElement.DOC_WORLD_SECTION, 20); - - AllKeys.register(); - // AllFluids.assignRenderLayers(); - AllBlockPartials.clientInit(); - AllStitchedTextures.init(); - - PonderIndex.register(); - PonderIndex.registerTags(); - - UIRenderHelper.init(); - - IResourceManager resourceManager = Minecraft.getInstance() - .getResourceManager(); - if (resourceManager instanceof IReloadableResourceManager) - ((IReloadableResourceManager) resourceManager).addReloadListener(new ResourceReloadHandler()); - - event.enqueueWork(() -> { - CopperBacktankArmorLayer.register(); - }); - } - - public static void onTextureStitch(TextureStitchEvent.Pre event) { - if (!event.getMap() - .getId() - .equals(PlayerContainer.BLOCK_ATLAS_TEXTURE)) - return; - SpriteShifter.getAllTargetSprites() - .forEach(event::addSprite); - } - - public static void onModelRegistry(ModelRegistryEvent event) { - PartialModel.onModelRegistry(event); - - getCustomRenderedItems().foreach((item, modelFunc) -> modelFunc.apply(null) - .getModelLocations() - .forEach(ModelLoader::addSpecialModel)); - } - - public static void onModelBake(ModelBakeEvent event) { - Map modelRegistry = event.getModelRegistry(); - PartialModel.onModelBake(event); - - getCustomBlockModels() - .foreach((block, modelFunc) -> swapModels(modelRegistry, getAllBlockStateModelLocations(block), modelFunc)); - getCustomItemModels() - .foreach((item, modelFunc) -> swapModels(modelRegistry, getItemModelLocation(item), modelFunc)); - getCustomRenderedItems().foreach((item, modelFunc) -> { - swapModels(modelRegistry, getItemModelLocation(item), m -> modelFunc.apply(m) - .loadPartials(event)); - }); - } - - protected static ModelResourceLocation getItemModelLocation(Item item) { - return new ModelResourceLocation(item.getRegistryName(), "inventory"); - } - - protected static List getAllBlockStateModelLocations(Block block) { - List models = new ArrayList<>(); - block.getStateContainer() - .getValidStates() - .forEach(state -> { - models.add(getBlockModelLocation(block, BlockModelShapes.getPropertyMapString(state.getValues()))); - }); - return models; - } - - protected static ModelResourceLocation getBlockModelLocation(Block block, String suffix) { - return new ModelResourceLocation(block.getRegistryName(), suffix); - } - - protected static void swapModels(Map modelRegistry, - List locations, Function factory) { - locations.forEach(location -> { - swapModels(modelRegistry, location, factory); - }); - } - - protected static void swapModels(Map modelRegistry, - ModelResourceLocation location, Function factory) { - modelRegistry.put(location, factory.apply(modelRegistry.get(location))); - } - - public static CustomItemModels getCustomItemModels() { - if (customItemModels == null) - customItemModels = new CustomItemModels(); - return customItemModels; - } - - public static CustomRenderedItems getCustomRenderedItems() { - if (customRenderedItems == null) - customRenderedItems = new CustomRenderedItems(); - return customRenderedItems; - } - - public static CustomBlockModels getCustomBlockModels() { - if (customBlockModels == null) - customBlockModels = new CustomBlockModels(); - return customBlockModels; - } - - public static CasingConnectivity getCasingConnectivity() { - if (casingConnectivity == null) - casingConnectivity = new CasingConnectivity(); - return casingConnectivity; - } - - public static void invalidateRenderers() { - BUFFER_CACHE.invalidate(); - - ContraptionRenderDispatcher.invalidateAll(); - } - - public static void checkGraphicsFanciness() { - Minecraft mc = Minecraft.getInstance(); - if (mc.player == null) - return; - - if (mc.gameSettings.graphicsMode != GraphicsFanciness.FABULOUS) - return; - - if (AllConfigs.CLIENT.ignoreFabulousWarning.get()) - return; - - IFormattableTextComponent text = TextComponentUtils.bracketed(new StringTextComponent("WARN")) - .formatted(TextFormatting.GOLD) - .append(new StringTextComponent( - " Some of Create's visual features will not be available while Fabulous graphics are enabled!")) - .styled(style -> style - .withClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/create dismissFabulousWarning")) - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, - new StringTextComponent("Click here to disable this warning")))); - - mc.ingameGUI.addChatMessage(ChatType.CHAT, text, mc.player.getUniqueID()); - } -} diff --git a/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java b/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java deleted file mode 100644 index 300575d36..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/BlueprintTransferHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.simibubi.create.compat.jei; - -import com.simibubi.create.content.curiosities.tools.BlueprintAssignCompleteRecipePacket; -import com.simibubi.create.content.curiosities.tools.BlueprintContainer; -import com.simibubi.create.foundation.networking.AllPackets; - -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.recipe.transfer.IRecipeTransferError; -import mezz.jei.api.recipe.transfer.IRecipeTransferHandler; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.crafting.IRecipe; - -public class BlueprintTransferHandler implements IRecipeTransferHandler { - - @Override - public Class getContainerClass() { - return BlueprintContainer.class; - } - - @Override - public IRecipeTransferError transferRecipe(BlueprintContainer container, Object recipe, IRecipeLayout recipeLayout, - PlayerEntity player, boolean maxTransfer, boolean doTransfer) { - if (!(recipe instanceof IRecipe)) - return null; - IRecipe iRecipe = (IRecipe) recipe; - // Continued server-side in BlueprintItem.assignCompleteRecipe() - AllPackets.channel.sendToServer(new BlueprintAssignCompleteRecipePacket(iRecipe.getId())); - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/ConversionRecipe.java b/src/main/java/com/simibubi/create/compat/jei/ConversionRecipe.java deleted file mode 100644 index c6d46653b..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/ConversionRecipe.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simibubi.create.compat.jei; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -/** - * Helper recipe type for displaying an item relationship in JEI - */ -@ParametersAreNonnullByDefault -public class ConversionRecipe extends ProcessingRecipe { - - static int counter = 0; - - public static ConversionRecipe create(ItemStack from, ItemStack to) { - ResourceLocation recipeId = Create.asResource("conversion_" + counter++); - return new ProcessingRecipeBuilder<>(ConversionRecipe::new, recipeId) - .withItemIngredients(Ingredient.fromStacks(from)) - .withSingleItemOutput(to) - .build(); - } - - public ConversionRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.CONVERSION, params); - } - - @Override - public boolean matches(RecipeWrapper inv, World worldIn) { - return false; - } - - @Override - protected int getMaxInputCount() { - return 1; - } - - @Override - protected int getMaxOutputCount() { - return 1; - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java b/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java deleted file mode 100644 index 1957c7e89..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/CreateJEI.java +++ /dev/null @@ -1,400 +0,0 @@ -package com.simibubi.create.compat.jei; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -import javax.annotation.Nonnull; - -import com.google.common.base.Predicates; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.Create; -import com.simibubi.create.compat.jei.category.BlockCuttingCategory; -import com.simibubi.create.compat.jei.category.BlockCuttingCategory.CondensedBlockCuttingRecipe; -import com.simibubi.create.compat.jei.category.CreateRecipeCategory; -import com.simibubi.create.compat.jei.category.CrushingCategory; -import com.simibubi.create.compat.jei.category.DeployingCategory; -import com.simibubi.create.compat.jei.category.FanBlastingCategory; -import com.simibubi.create.compat.jei.category.FanSmokingCategory; -import com.simibubi.create.compat.jei.category.FanWashingCategory; -import com.simibubi.create.compat.jei.category.ItemDrainCategory; -import com.simibubi.create.compat.jei.category.MechanicalCraftingCategory; -import com.simibubi.create.compat.jei.category.MillingCategory; -import com.simibubi.create.compat.jei.category.MixingCategory; -import com.simibubi.create.compat.jei.category.MysteriousItemConversionCategory; -import com.simibubi.create.compat.jei.category.PackingCategory; -import com.simibubi.create.compat.jei.category.PolishingCategory; -import com.simibubi.create.compat.jei.category.PressingCategory; -import com.simibubi.create.compat.jei.category.ProcessingViaFanCategory; -import com.simibubi.create.compat.jei.category.SawingCategory; -import com.simibubi.create.compat.jei.category.SpoutCategory; -import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; -import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; -import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; -import com.simibubi.create.content.contraptions.processing.BasinRecipe; -import com.simibubi.create.content.curiosities.tools.BlueprintScreen; -import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateScreen; -import com.simibubi.create.content.logistics.item.filter.AbstractFilterScreen; -import com.simibubi.create.content.logistics.item.filter.AttributeFilterScreen; -import com.simibubi.create.content.logistics.item.filter.FilterScreen; -import com.simibubi.create.content.schematics.block.SchematicTableScreen; -import com.simibubi.create.content.schematics.block.SchematicannonScreen; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.config.CRecipes; -import com.simibubi.create.foundation.config.ConfigBase.ConfigBool; - -import mezz.jei.api.IModPlugin; -import mezz.jei.api.JeiPlugin; -import mezz.jei.api.constants.VanillaRecipeCategoryUid; -import mezz.jei.api.registration.IGuiHandlerRegistration; -import mezz.jei.api.registration.IRecipeCatalystRegistration; -import mezz.jei.api.registration.IRecipeCategoryRegistration; -import mezz.jei.api.registration.IRecipeRegistration; -import mezz.jei.api.registration.IRecipeTransferRegistration; -import mezz.jei.api.runtime.IIngredientManager; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.ICraftingRecipe; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.ShapedRecipe; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.ModList; - -@JeiPlugin -@SuppressWarnings("unused") -public class CreateJEI implements IModPlugin { - - private static final ResourceLocation ID = new ResourceLocation(Create.ID, "jei_plugin"); - - @Override - @Nonnull - public ResourceLocation getPluginUid() { - return ID; - } - - public IIngredientManager ingredientManager; - private final List> allCategories = new ArrayList<>(); - private final CreateRecipeCategory - - milling = register("milling", MillingCategory::new).recipes(AllRecipeTypes.MILLING) - .catalyst(AllBlocks.MILLSTONE::get) - .build(), - - crushing = register("crushing", CrushingCategory::new).recipes(AllRecipeTypes.CRUSHING) - .recipesExcluding(AllRecipeTypes.MILLING::getType, AllRecipeTypes.CRUSHING::getType) - .catalyst(AllBlocks.CRUSHING_WHEEL::get) - .build(), - - pressing = register("pressing", PressingCategory::new).recipes(AllRecipeTypes.PRESSING) - .catalyst(AllBlocks.MECHANICAL_PRESS::get) - .build(), - - washing = register("fan_washing", FanWashingCategory::new).recipes(AllRecipeTypes.SPLASHING) - .catalystStack(ProcessingViaFanCategory.getFan("fan_washing")) - .build(), - - smoking = register("fan_smoking", FanSmokingCategory::new).recipes(() -> IRecipeType.SMOKING) - .catalystStack(ProcessingViaFanCategory.getFan("fan_smoking")) - .build(), - - blasting = register("fan_blasting", FanBlastingCategory::new) - .recipesExcluding(() -> IRecipeType.SMELTING, () -> IRecipeType.BLASTING) - .recipes(() -> IRecipeType.BLASTING) - .removeRecipes(() -> IRecipeType.SMOKING) - .catalystStack(ProcessingViaFanCategory.getFan("fan_blasting")) - .build(), - - mixing = register("mixing", MixingCategory::standard).recipes(AllRecipeTypes.MIXING::getType) - .catalyst(AllBlocks.MECHANICAL_MIXER::get) - .catalyst(AllBlocks.BASIN::get) - .build(), - - autoShapeless = register("automatic_shapeless", MixingCategory::autoShapeless) - .recipes(r -> r.getSerializer() == IRecipeSerializer.CRAFTING_SHAPELESS && r.getIngredients() - .size() > 1 && !MechanicalPressTileEntity.canCompress(r.getIngredients()), - BasinRecipe::convertShapeless) - .catalyst(AllBlocks.MECHANICAL_MIXER::get) - .catalyst(AllBlocks.BASIN::get) - .enableWhen(c -> c.allowShapelessInMixer) - .build(), - - brewing = register("automatic_brewing", MixingCategory::autoBrewing) - .recipeList(PotionMixingRecipeManager::getAllBrewingRecipes) - .catalyst(AllBlocks.MECHANICAL_MIXER::get) - .catalyst(AllBlocks.BASIN::get) - .build(), - - sawing = register("sawing", SawingCategory::new).recipes(AllRecipeTypes.CUTTING) - .catalyst(AllBlocks.MECHANICAL_SAW::get) - .build(), - - blockCutting = register("block_cutting", () -> new BlockCuttingCategory(Items.STONE_BRICK_STAIRS)) - .recipeList(() -> CondensedBlockCuttingRecipe.condenseRecipes(findRecipesByType(IRecipeType.STONECUTTING))) - .catalyst(AllBlocks.MECHANICAL_SAW::get) - .enableWhen(c -> c.allowStonecuttingOnSaw) - .build(), - - woodCutting = register("wood_cutting", () -> new BlockCuttingCategory(Items.OAK_STAIRS)) - .recipeList(() -> CondensedBlockCuttingRecipe - .condenseRecipes(findRecipesByType(SawTileEntity.woodcuttingRecipeType.getValue()))) - .catalyst(AllBlocks.MECHANICAL_SAW::get) - .enableWhenBool(c -> c.allowWoodcuttingOnSaw.get() && ModList.get() - .isLoaded("druidcraft")) - .build(), - - packing = register("packing", PackingCategory::standard).recipes(AllRecipeTypes.COMPACTING) - .catalyst(AllBlocks.MECHANICAL_PRESS::get) - .catalyst(AllBlocks.BASIN::get) - .build(), - - autoSquare = register("automatic_packing", PackingCategory::autoSquare) - .recipes(r -> (r instanceof ICraftingRecipe) && MechanicalPressTileEntity.canCompress(r.getIngredients()), - BasinRecipe::convertShapeless) - .catalyst(AllBlocks.MECHANICAL_PRESS::get) - .catalyst(AllBlocks.BASIN::get) - .enableWhen(c -> c.allowShapedSquareInPress) - .build(), - - polishing = register("sandpaper_polishing", PolishingCategory::new).recipes(AllRecipeTypes.SANDPAPER_POLISHING) - .catalyst(AllItems.SAND_PAPER::get) - .catalyst(AllItems.RED_SAND_PAPER::get) - .build(), - - deploying = register("deploying", DeployingCategory::new) - .recipeList( - () -> DeployerApplicationRecipe.convert(findRecipesByType(AllRecipeTypes.SANDPAPER_POLISHING.type))) - .recipes(AllRecipeTypes.DEPLOYING) - .catalyst(AllBlocks.DEPLOYER::get) - .catalyst(AllBlocks.DEPOT::get) - .catalyst(AllItems.BELT_CONNECTOR::get) - .build(), - - mysteryConversion = register("mystery_conversion", MysteriousItemConversionCategory::new) - .recipeList(MysteriousItemConversionCategory::getRecipes) - .build(), - - spoutFilling = register("spout_filling", SpoutCategory::new).recipes(AllRecipeTypes.FILLING) - .recipeList(() -> SpoutCategory.getRecipes(ingredientManager)) - .catalyst(AllBlocks.SPOUT::get) - .build(), - - draining = register("draining", ItemDrainCategory::new) - .recipeList(() -> ItemDrainCategory.getRecipes(ingredientManager)) - .recipes(AllRecipeTypes.EMPTYING) - .catalyst(AllBlocks.ITEM_DRAIN::get) - .build(), - - autoShaped = register("automatic_shaped", MechanicalCraftingCategory::new) - .recipes(r -> r.getSerializer() == IRecipeSerializer.CRAFTING_SHAPELESS && r.getIngredients() - .size() == 1) - .recipes( - r -> (r.getType() == IRecipeType.CRAFTING && r.getType() != AllRecipeTypes.MECHANICAL_CRAFTING.type) - && (r instanceof ShapedRecipe)) - .catalyst(AllBlocks.MECHANICAL_CRAFTER::get) - .enableWhen(c -> c.allowRegularCraftingInCrafter) - .build(), - - mechanicalCrafting = - register("mechanical_crafting", MechanicalCraftingCategory::new).recipes(AllRecipeTypes.MECHANICAL_CRAFTING) - .catalyst(AllBlocks.MECHANICAL_CRAFTER::get) - .build(); - - private > CategoryBuilder register(String name, - Supplier> supplier) { - return new CategoryBuilder(name, supplier); - } - - @Override - public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) { - registration.addRecipeTransferHandler(new BlueprintTransferHandler(), VanillaRecipeCategoryUid.CRAFTING); - } - - @Override - public void registerCategories(IRecipeCategoryRegistration registration) { - allCategories.forEach(registration::addRecipeCategories); - } - - @Override - public void registerRecipes(IRecipeRegistration registration) { - ingredientManager = registration.getIngredientManager(); - allCategories.forEach(c -> c.recipes.forEach(s -> registration.addRecipes(s.get(), c.getUid()))); - } - - @Override - public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { - allCategories.forEach(c -> c.recipeCatalysts.forEach(s -> registration.addRecipeCatalyst(s.get(), c.getUid()))); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public void registerGuiHandlers(IGuiHandlerRegistration registration) { - SlotMover slotMover = new SlotMover(); - registration.addGuiContainerHandler(AdjustableCrateScreen.class, slotMover); - registration.addGuiContainerHandler(SchematicannonScreen.class, slotMover); - registration.addGuiContainerHandler(SchematicTableScreen.class, slotMover); - registration.addGuiContainerHandler(FilterScreen.class, slotMover); - registration.addGuiContainerHandler(AttributeFilterScreen.class, slotMover); - registration.addGhostIngredientHandler(AbstractFilterScreen.class, new GhostIngredientHandler()); - registration.addGhostIngredientHandler(BlueprintScreen.class, new GhostIngredientHandler()); - } - - private class CategoryBuilder> { - private CreateRecipeCategory category; - private List>>> recipeListConsumers = new ArrayList<>(); - private Predicate pred; - - public CategoryBuilder(String name, Supplier> category) { - this.category = category.get(); - this.category.setCategoryId(name); - pred = Predicates.alwaysTrue(); - } - - public CategoryBuilder recipes(AllRecipeTypes recipeTypeEntry) { - return recipes(recipeTypeEntry::getType); - } - - public CategoryBuilder recipes(Supplier> recipeType) { - return recipes(r -> r.getType() == recipeType.get()); - } - - public CategoryBuilder recipes(ResourceLocation serializer) { - return recipes(r -> r.getSerializer() - .getRegistryName() - .equals(serializer)); - } - - public CategoryBuilder recipes(Predicate> pred) { - return recipeList(() -> findRecipes(pred)); - } - - public CategoryBuilder recipes(Predicate> pred, Function, T> converter) { - return recipeList(() -> findRecipes(pred), converter); - } - - public CategoryBuilder recipeList(Supplier>> list) { - return recipeList(list, null); - } - - public CategoryBuilder recipeList(Supplier>> list, - Function, T> converter) { - recipeListConsumers.add(recipes -> { - List> toAdd = list.get(); - if (converter != null) - toAdd = toAdd.stream() - .map(converter) - .collect(Collectors.toList()); - recipes.addAll(toAdd); - }); - return this; - } - - public CategoryBuilder recipesExcluding(Supplier> recipeType, - Supplier> excluded) { - recipeListConsumers.add(recipes -> { - recipes.addAll(findRecipesByTypeExcluding(recipeType.get(), excluded.get())); - }); - return this; - } - - public CategoryBuilder removeRecipes(Supplier> recipeType) { - recipeListConsumers.add(recipes -> { - removeRecipesByType(recipes, recipeType.get()); - }); - return this; - } - - public CategoryBuilder catalyst(Supplier supplier) { - return catalystStack(() -> new ItemStack(supplier.get() - .asItem())); - } - - public CategoryBuilder catalystStack(Supplier supplier) { - category.recipeCatalysts.add(supplier); - return this; - } - - public CategoryBuilder enableWhen(Function configValue) { - pred = c -> configValue.apply(c) - .get(); - return this; - } - - public CategoryBuilder enableWhenBool(Function configValue) { - pred = configValue::apply; - return this; - } - - public CreateRecipeCategory build() { - if (pred.test(AllConfigs.SERVER.recipes)) - category.recipes.add(() -> { - List> recipes = new ArrayList<>(); - for (Consumer>> consumer : recipeListConsumers) - consumer.accept(recipes); - return recipes; - }); - allCategories.add(category); - return category; - } - - } - - public static List> findRecipes(Predicate> predicate) { - return Minecraft.getInstance().world.getRecipeManager() - .getRecipes() - .stream() - .filter(predicate) - .collect(Collectors.toList()); - } - - public static List> findRecipesByType(IRecipeType type) { - return findRecipes(recipe -> recipe.getType() == type); - } - - public static List> findRecipesByTypeExcluding(IRecipeType type, IRecipeType excludingType) { - List> byType = findRecipesByType(type); - removeRecipesByType(byType, excludingType); - return byType; - } - - public static List> findRecipesByTypeExcluding(IRecipeType type, IRecipeType... excludingTypes) { - List> byType = findRecipesByType(type); - for (IRecipeType excludingType : excludingTypes) - removeRecipesByType(byType, excludingType); - return byType; - } - - public static void removeRecipesByType(List> recipes, IRecipeType type) { - List> byType = findRecipesByType(type); - recipes.removeIf(recipe -> { - for (IRecipe r : byType) - if (doInputsMatch(recipe, r)) - return true; - return false; - }); - } - - public static boolean doInputsMatch(IRecipe recipe1, IRecipe recipe2) { - ItemStack[] matchingStacks = recipe1.getIngredients() - .get(0) - .getMatchingStacks(); - if (matchingStacks.length == 0) - return true; - if (recipe2.getIngredients() - .get(0) - .test(matchingStacks[0])) - return true; - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/DoubleItemIcon.java b/src/main/java/com/simibubi/create/compat/jei/DoubleItemIcon.java deleted file mode 100644 index 9abd1c945..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/DoubleItemIcon.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.compat.jei; - -import java.util.function.Supplier; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import mezz.jei.api.gui.drawable.IDrawable; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.item.ItemStack; - -public class DoubleItemIcon implements IDrawable { - - private Supplier primarySupplier; - private Supplier secondarySupplier; - private ItemStack primaryStack; - private ItemStack secondaryStack; - - public DoubleItemIcon(Supplier primary, Supplier secondary) { - this.primarySupplier = primary; - this.secondarySupplier = secondary; - } - - @Override - public int getWidth() { - return 18; - } - - @Override - public int getHeight() { - return 18; - } - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - if (primaryStack == null) { - primaryStack = primarySupplier.get(); - secondaryStack = secondarySupplier.get(); - } - - RenderHelper.enable(); - RenderSystem.color4f(1, 1, 1, 1); - RenderSystem.enableDepthTest(); - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 0); - - matrixStack.push(); - matrixStack.translate(1, 1, 0); - GuiGameElement.of(primaryStack) - .render(matrixStack); - matrixStack.pop(); - - matrixStack.push(); - matrixStack.translate(10, 10, 100); - matrixStack.scale(.5f, .5f, .5f); - GuiGameElement.of(secondaryStack) - .render(matrixStack); - matrixStack.pop(); - - matrixStack.pop(); - RenderSystem.enableBlend(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/EmptyBackground.java b/src/main/java/com/simibubi/create/compat/jei/EmptyBackground.java deleted file mode 100644 index f574b23cc..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/EmptyBackground.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.compat.jei; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import mezz.jei.api.gui.drawable.IDrawable; - -public class EmptyBackground implements IDrawable { - - private int width; - private int height; - - public EmptyBackground(int width, int height) { - this.width = width; - this.height = height; - } - - @Override - public int getWidth() { - return width; - } - - @Override - public int getHeight() { - return height; - } - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) {} - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/GhostIngredientHandler.java b/src/main/java/com/simibubi/create/compat/jei/GhostIngredientHandler.java deleted file mode 100644 index 7a1644dda..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/GhostIngredientHandler.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.simibubi.create.compat.jei; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.content.logistics.item.filter.AttributeFilterScreen; -import com.simibubi.create.foundation.gui.AbstractSimiContainerScreen; -import com.simibubi.create.foundation.gui.GhostItemContainer; -import com.simibubi.create.foundation.gui.GhostItemSubmitPacket; -import com.simibubi.create.foundation.networking.AllPackets; - -import mcp.MethodsReturnNonnullByDefault; -import mezz.jei.api.gui.handlers.IGhostIngredientHandler; -import net.minecraft.client.renderer.Rectangle2d; -import net.minecraft.inventory.container.Slot; -import net.minecraft.item.ItemStack; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class GhostIngredientHandler> - implements IGhostIngredientHandler> { - - @Override - public List> getTargets(AbstractSimiContainerScreen gui, I ingredient, boolean doStart) { - List> targets = new ArrayList<>(); - boolean isAttributeFilter = gui instanceof AttributeFilterScreen; - - if (ingredient instanceof ItemStack) { - for (int i = 36; i < gui.getContainer().inventorySlots.size(); i++) { - targets.add(new GhostTarget<>(gui, i - 36, isAttributeFilter)); - - // Only accept items in 1st slot. 2nd is used for functionality, don't wanna override that one - if (isAttributeFilter) - break; - } - } - - return targets; - } - - @Override - public void onComplete() { - } - - @Override - public boolean shouldHighlightTargets() { - // TODO change to false and highlight the slots ourself in some better way - return true; - } - - private static class GhostTarget> implements Target { - - private final Rectangle2d area; - private final AbstractSimiContainerScreen gui; - private final int slotIndex; - private final boolean isAttributeFilter; - - public GhostTarget(AbstractSimiContainerScreen gui, int slotIndex, boolean isAttributeFilter) { - this.gui = gui; - this.slotIndex = slotIndex; - this.isAttributeFilter = isAttributeFilter; - Slot slot = gui.getContainer().inventorySlots.get(slotIndex + 36); - this.area = new Rectangle2d(gui.getGuiLeft() + slot.xPos, gui.getGuiTop() + slot.yPos, 16, 16); - } - - @Override - public Rectangle2d getArea() { - return area; - } - - @Override - public void accept(I ingredient) { - ItemStack stack = ((ItemStack) ingredient).copy(); - stack.setCount(1); - gui.getContainer().ghostInventory.setStackInSlot(slotIndex, stack); - - if (isAttributeFilter) - return; - - // sync new filter contents with server - AllPackets.channel.sendToServer(new GhostItemSubmitPacket(stack, slotIndex)); - } - } -} diff --git a/src/main/java/com/simibubi/create/compat/jei/ScreenResourceWrapper.java b/src/main/java/com/simibubi/create/compat/jei/ScreenResourceWrapper.java deleted file mode 100644 index 67e7ce970..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/ScreenResourceWrapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.compat.jei; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.gui.drawable.IDrawable; -import net.minecraft.client.gui.AbstractGui; - -public class ScreenResourceWrapper implements IDrawable { - - private AllGuiTextures resource; - - public ScreenResourceWrapper(AllGuiTextures resource) { - this.resource = resource; - } - - @Override - public int getWidth() { - return resource.width; - } - - @Override - public int getHeight() { - return resource.height; - } - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - resource.bind(); - AbstractGui.drawTexture(matrixStack, xOffset, yOffset, 0, resource.startX, resource.startY, resource.width, - resource.height, 256, 256); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/SlotMover.java b/src/main/java/com/simibubi/create/compat/jei/SlotMover.java deleted file mode 100644 index 622114746..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/SlotMover.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.compat.jei; - -import java.util.List; - -import com.simibubi.create.foundation.gui.AbstractSimiContainerScreen; - -import mezz.jei.api.gui.handlers.IGuiContainerHandler; -import net.minecraft.client.renderer.Rectangle2d; - -/** - * Allows a {@link AbstractSimiContainerScreen} to specify an area in getExtraArea() that will be avoided by JEI - * - * Name is taken from CoFHCore's 1.12 implementation. - */ -public class SlotMover implements IGuiContainerHandler> { - - @Override - public List getGuiExtraAreas(AbstractSimiContainerScreen containerScreen) { - return containerScreen.getExtraAreas(); - } -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java deleted file mode 100644 index 32526f37f..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/BasinCategory.java +++ /dev/null @@ -1,172 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.mutable.MutableInt; - -import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.processing.BasinRecipe; -import com.simibubi.create.content.contraptions.processing.HeatCondition; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.Pair; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.ingredient.IGuiFluidStackGroup; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.NonNullList; -import net.minecraftforge.fluids.FluidStack; - -public class BasinCategory extends CreateRecipeCategory { - - private boolean needsHeating; - - public BasinCategory(boolean needsHeating, IDrawable icon, IDrawable background) { - super(icon, background); - this.needsHeating = needsHeating; - } - - @Override - public Class getRecipeClass() { - return BasinRecipe.class; - } - - @Override - public void setIngredients(BasinRecipe recipe, IIngredients ingredients) { - List itemIngredients = new ArrayList<>(recipe.getIngredients()); - - HeatCondition requiredHeat = recipe.getRequiredHeat(); - if (!requiredHeat.testBlazeBurner(HeatLevel.NONE)) - itemIngredients.add(Ingredient.fromItems(AllBlocks.BLAZE_BURNER.get())); - if (!requiredHeat.testBlazeBurner(HeatLevel.KINDLED)) - itemIngredients.add(Ingredient.fromItems(AllItems.BLAZE_CAKE.get())); - - ingredients.setInputIngredients(itemIngredients); - ingredients.setInputLists(VanillaTypes.FLUID, recipe.getFluidIngredients() - .stream() - .map(FluidIngredient::getMatchingFluidStacks) - .collect(Collectors.toList())); - if (!recipe.getRollableResults() - .isEmpty()) - ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); - if (!recipe.getFluidResults() - .isEmpty()) - ingredients.setOutputs(VanillaTypes.FLUID, recipe.getFluidResults()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, BasinRecipe recipe, IIngredients iingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - IGuiFluidStackGroup fluidStacks = recipeLayout.getFluidStacks(); - - ItemStack itemOutput = recipe.getRollableResultsAsItemStacks() - .isEmpty() ? ItemStack.EMPTY - : recipe.getRollableResultsAsItemStacks() - .get(0); - FluidStack fluidOutput = recipe.getFluidResults() - .isEmpty() ? FluidStack.EMPTY - : recipe.getFluidResults() - .get(0); - - NonNullList fluidIngredients = recipe.getFluidIngredients(); - List> ingredients = ItemHelper.condenseIngredients(recipe.getIngredients()); - - int size = ingredients.size() + fluidIngredients.size(); - int xOffset = size < 3 ? (3 - size) * 19 / 2 : 0; - int yOffset = 0; - - int i; - for (i = 0; i < ingredients.size(); i++) { - itemStacks.init(i, true, 16 + xOffset + (i % 3) * 19, 50 - (i / 3) * 19 + yOffset); - List stacks = new ArrayList<>(); - Pair pair = ingredients.get(i); - Ingredient ingredient = pair.getFirst(); - MutableInt amount = pair.getSecond(); - - for (ItemStack itemStack : ingredient.getMatchingStacks()) { - ItemStack stack = itemStack.copy(); - stack.setCount(amount.getValue()); - stacks.add(stack); - } - - itemStacks.set(i, stacks); - } - - int j; - for (j = 0; j < fluidIngredients.size(); j++) { - int i2 = i + j; - fluidStacks.init(j, true, 17 + xOffset + (i2 % 3) * 19, 51 - (i2 / 3) * 19 + yOffset); - List stacks = fluidIngredients.get(j) - .getMatchingFluidStacks(); - fluidStacks.set(j, withImprovedVisibility(stacks)); - } - - if (!itemOutput.isEmpty()) { - itemStacks.init(i, false, 141, 50 + yOffset); - itemStacks.set(i, recipe.getRecipeOutput() - .getStack()); - yOffset -= 19; - } - - if (!fluidOutput.isEmpty()) { - fluidStacks.init(j, false, 142, 51 + yOffset); - fluidStacks.set(j, withImprovedVisibility(fluidOutput)); - } - - addFluidTooltip(fluidStacks, fluidIngredients, ImmutableList.of(fluidOutput)); - - HeatCondition requiredHeat = recipe.getRequiredHeat(); - if (!requiredHeat.testBlazeBurner(HeatLevel.NONE)) { - itemStacks.init(++i, true, 133, 80); - itemStacks.set(i, AllBlocks.BLAZE_BURNER.asStack()); - } - if (!requiredHeat.testBlazeBurner(HeatLevel.KINDLED)) { - itemStacks.init(++i, true, 152, 80); - itemStacks.set(i, AllItems.BLAZE_CAKE.asStack()); - } - } - - @Override - public void draw(BasinRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - List> actualIngredients = ItemHelper.condenseIngredients(recipe.getIngredients()); - - int size = actualIngredients.size() + recipe.getFluidIngredients() - .size(); - int xOffset = size < 3 ? (3 - size) * 19 / 2 : 0; - HeatCondition requiredHeat = recipe.getRequiredHeat(); - int yOffset = 0; - - for (int i = 0; i < size; i++) - AllGuiTextures.JEI_SLOT.draw(matrixStack, 16 + xOffset + (i % 3) * 19, 50 - (i / 3) * 19 + yOffset); - - boolean noHeat = requiredHeat == HeatCondition.NONE; - AllGuiTextures.JEI_SLOT.draw(matrixStack, 141, 50 + yOffset); - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 136, 32 + yOffset); - - AllGuiTextures shadow = noHeat ? AllGuiTextures.JEI_SHADOW : AllGuiTextures.JEI_LIGHT; - shadow.draw(matrixStack, 81, 58 + (noHeat ? 10 : 30)); - - if (!needsHeating) - return; - - AllGuiTextures heatBar = noHeat ? AllGuiTextures.JEI_NO_HEAT_BAR : AllGuiTextures.JEI_HEAT_BAR; - heatBar.draw(matrixStack, 4, 80); - Minecraft.getInstance().fontRenderer.draw(matrixStack, Lang.translate(requiredHeat.getTranslationKey()), 9, - 86, requiredHeat.getColor()); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/BlockCuttingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/BlockCuttingCategory.java deleted file mode 100644 index f1e1817f9..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/BlockCuttingCategory.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.compat.jei.category.BlockCuttingCategory.CondensedBlockCuttingRecipe; -import com.simibubi.create.compat.jei.category.animations.AnimatedSaw; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.item.ItemHelper; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.item.crafting.StonecuttingRecipe; -import net.minecraft.util.ResourceLocation; - -public class BlockCuttingCategory extends CreateRecipeCategory { - - private AnimatedSaw saw = new AnimatedSaw(); - - public BlockCuttingCategory(Item symbol) { - super(doubleItemIcon(AllBlocks.MECHANICAL_SAW.get(), symbol), emptyBackground(177, 70)); // Items.STONE_BRICK_STAIRS - } - - @Override - public Class getRecipeClass() { - return CondensedBlockCuttingRecipe.class; - } - - @Override - public void setIngredients(CondensedBlockCuttingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutputs(VanillaTypes.ITEM, recipe.getOutputs()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, CondensedBlockCuttingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - itemStacks.init(0, true, 4, 4); - itemStacks.set(0, Arrays.asList(recipe.getIngredients().get(0).getMatchingStacks())); - - List> results = recipe.getCondensedOutputs(); - for (int outputIndex = 0; outputIndex < results.size(); outputIndex++) { - int xOffset = (outputIndex % 5) * 19; - int yOffset = (outputIndex / 5) * -19; - - itemStacks.init(outputIndex + 1, false, 77 + xOffset, 47 + yOffset); - itemStacks.set(outputIndex + 1, results.get(outputIndex)); - } - } - - @Override - public void draw(CondensedBlockCuttingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 4, 4); - int size = Math.min(recipe.getOutputs().size(), 15); - for (int i = 0; i < size; i++) { - int xOffset = (i % 5) * 19; - int yOffset = (i / 5) * -19; - AllGuiTextures.JEI_SLOT.draw(matrixStack, 77 + xOffset, 47 + yOffset); - } - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 31, 6); - saw.draw(matrixStack, 33, 37); - } - - public static class CondensedBlockCuttingRecipe extends StonecuttingRecipe { - - List outputs = new ArrayList<>(); - - public CondensedBlockCuttingRecipe(Ingredient ingredient) { - super(new ResourceLocation(""), "", ingredient, ItemStack.EMPTY); - } - - public void addOutput(ItemStack stack) { - outputs.add(stack); - } - - public List getOutputs() { - return outputs; - } - - public List> getCondensedOutputs() { - List> result = new ArrayList<>(); - int index = 0; - boolean firstPass = true; - for (ItemStack itemStack : outputs) { - if (firstPass) - result.add(new ArrayList<>()); - result.get(index).add(itemStack); - index++; - if (index >= 15) { - index = 0; - firstPass = false; - } - } - return result; - } - - public static List condenseRecipes(List> stoneCuttingRecipes) { - List condensed = new ArrayList<>(); - Recipes: for (IRecipe recipe : stoneCuttingRecipes) { - Ingredient i1 = recipe.getIngredients().get(0); - for (CondensedBlockCuttingRecipe condensedRecipe : condensed) { - if (ItemHelper.matchIngredients(i1, condensedRecipe.getIngredients().get(0))) { - condensedRecipe.addOutput(recipe.getRecipeOutput()); - continue Recipes; - } - } - CondensedBlockCuttingRecipe cr = new CondensedBlockCuttingRecipe(i1); - cr.addOutput(recipe.getRecipeOutput()); - condensed.add(cr); - } - return condensed; - } - - @Override - public boolean isDynamic() { - return true; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java deleted file mode 100644 index 55bfbdab2..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/CreateRecipeCategory.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -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.processing.ProcessingOutput; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.utility.Lang; - -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.ingredient.IGuiFluidStackGroup; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.recipe.category.IRecipeCategory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.fluids.FluidStack; - -public abstract class CreateRecipeCategory> implements IRecipeCategory { - - public final List>>> recipes = new ArrayList<>(); - public final List> recipeCatalysts = new ArrayList<>(); - - protected ResourceLocation uid; - protected String name; - private IDrawable background; - private IDrawable icon; - - public CreateRecipeCategory(IDrawable icon, IDrawable background) { - this.background = background; - this.icon = icon; - } - - public void setCategoryId(String name) { - this.uid = new ResourceLocation(Create.ID, name); - this.name = name; - } - - @Override - public ResourceLocation getUid() { - return uid; - } - - @Override - public String getTitle() { - return Lang.translate("recipe." + name) - .getString(); - } - - @Override - public IDrawable getBackground() { - return background; - } - - @Override - public IDrawable getIcon() { - return icon; - } - - protected static AllGuiTextures getRenderedSlot(IRecipe recipe, int index) { - AllGuiTextures jeiSlot = AllGuiTextures.JEI_SLOT; - if (!(recipe instanceof ProcessingRecipe)) - return jeiSlot; - ProcessingRecipe processingRecipe = (ProcessingRecipe) recipe; - List rollableResults = processingRecipe.getRollableResults(); - if (rollableResults.size() <= index) - return jeiSlot; - if (processingRecipe.getRollableResults() - .get(index) - .getChance() == 1) - return jeiSlot; - return AllGuiTextures.JEI_CHANCE_SLOT; - } - - protected static IDrawable emptyBackground(int width, int height) { - return new EmptyBackground(width, height); - } - - protected static IDrawable doubleItemIcon(IItemProvider item1, IItemProvider item2) { - return new DoubleItemIcon(() -> new ItemStack(item1), () -> new ItemStack(item2)); - } - - protected static IDrawable itemIcon(IItemProvider item) { - return new DoubleItemIcon(() -> new ItemStack(item), () -> ItemStack.EMPTY); - } - - protected static void addStochasticTooltip(IGuiItemStackGroup itemStacks, List results) { - itemStacks.addTooltipCallback((slotIndex, input, ingredient, tooltip) -> { - if (input) - return; - ProcessingOutput output = results.get(slotIndex - 1); - float chance = output.getChance(); - if (chance != 1) - tooltip.add(1, Lang.translate("recipe.processing.chance", chance < 0.01 ? "<1" : (int) (chance * 100)).formatted(TextFormatting.GOLD)); - }); - } - - public List withImprovedVisibility(List stacks) { - return stacks.stream() - .map(this::withImprovedVisibility) - .collect(Collectors.toList()); - } - - public FluidStack withImprovedVisibility(FluidStack stack) { - FluidStack display = stack.copy(); - int displayedAmount = (int) (stack.getAmount() * .75f) + 250; - display.setAmount(displayedAmount); - return display; - } - - protected static void addFluidTooltip(IGuiFluidStackGroup fluidStacks, List inputs, - List outputs) { - List amounts = new ArrayList<>(); - inputs.forEach(f -> amounts.add(f.getRequiredAmount())); - outputs.forEach(f -> amounts.add(f.getAmount())); - - fluidStacks.addTooltipCallback((slotIndex, input, fluid, tooltip) -> { - if (fluid.getFluid() - .isEquivalentTo(AllFluids.POTION.get())) { - ITextComponent name = fluid.getDisplayName(); - if (tooltip.isEmpty()) - tooltip.add(0, name); - else - tooltip.set(0, name); - - ArrayList potionTooltip = new ArrayList<>(); - PotionFluidHandler.addPotionTooltip(fluid, potionTooltip, 1); - tooltip.addAll(1, potionTooltip.stream() - .collect(Collectors.toList())); - } - - int amount = amounts.get(slotIndex); - ITextComponent text = (Lang.translate("generic.unit.millibuckets", amount)).formatted(TextFormatting.GOLD); - if (tooltip.isEmpty()) - tooltip.add(0, text); - else { - List siblings = tooltip.get(0).getSiblings(); - siblings.add(new StringTextComponent(" ")); - siblings.add(text); - } - }); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java deleted file mode 100644 index 6d8fab965..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/CrushingCategory.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.compat.jei.category.animations.AnimatedCrushingWheels; -import com.simibubi.create.content.contraptions.components.crusher.AbstractCrushingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingOutput; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; - -public class CrushingCategory extends CreateRecipeCategory { - - private AnimatedCrushingWheels crushingWheels = new AnimatedCrushingWheels(); - - public CrushingCategory() { - super(doubleItemIcon(AllBlocks.CRUSHING_WHEEL.get(), AllItems.CRUSHED_GOLD.get()), emptyBackground(177, 100)); - } - - @Override - public Class getRecipeClass() { - return AbstractCrushingRecipe.class; - } - - @Override - public void setIngredients(AbstractCrushingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutputs(VanillaTypes.ITEM, recipe.getRollableResultsAsItemStacks()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, AbstractCrushingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - itemStacks.init(0, true, 50, 2); - itemStacks.set(0, Arrays.asList(recipe.getIngredients() - .get(0) - .getMatchingStacks())); - - List results = recipe.getRollableResults(); - int size = results.size(); - int offset = -size * 19 / 2; - for (int outputIndex = 0; outputIndex < size; outputIndex++) { - itemStacks.init(outputIndex + 1, false, getBackground().getWidth() / 2 + offset + 19 * outputIndex, 78); - itemStacks.set(outputIndex + 1, results.get(outputIndex) - .getStack()); - } - - addStochasticTooltip(itemStacks, results); - } - - @Override - public void draw(AbstractCrushingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - List results = recipe.getRollableResults(); - AllGuiTextures.JEI_SLOT.draw(matrixStack, 50, 2); - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 72, 7); - - int size = results.size(); - int offset = -size * 19 / 2; - for (int outputIndex = 0; outputIndex < results.size(); outputIndex++) - getRenderedSlot(recipe, outputIndex).draw(matrixStack, getBackground().getWidth() / 2 + offset + 19 * outputIndex, 78); - - crushingWheels.draw(matrixStack, 62, 59); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java deleted file mode 100644 index 28b14c1cc..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/DeployingCategory.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; -import java.util.stream.Collectors; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.compat.jei.category.animations.AnimatedDeployer; -import com.simibubi.create.content.contraptions.components.deployer.DeployerApplicationRecipe; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; - -public class DeployingCategory extends CreateRecipeCategory { - - AnimatedDeployer deployer; - - public DeployingCategory() { - super(itemIcon(AllBlocks.DEPLOYER.get()), emptyBackground(177, 70)); - deployer = new AnimatedDeployer(); - } - - @Override - public Class getRecipeClass() { - return DeployerApplicationRecipe.class; - } - - @Override - public void setIngredients(DeployerApplicationRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setInputLists(VanillaTypes.FLUID, recipe.getFluidIngredients() - .stream() - .map(FluidIngredient::getMatchingFluidStacks) - .collect(Collectors.toList())); - - if (!recipe.getRollableResults() - .isEmpty()) - ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, DeployerApplicationRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - itemStacks.init(0, true, 50, 4); - itemStacks.set(0, Arrays.asList(recipe.getRequiredHeldItem() - .getMatchingStacks())); - itemStacks.init(1, true, 26, 50); - itemStacks.set(1, Arrays.asList(recipe.getProcessedItem() - .getMatchingStacks())); - itemStacks.init(2, false, 131, 50); - itemStacks.set(2, recipe.getRecipeOutput()); - } - - @Override - public void draw(DeployerApplicationRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 50, 4); - AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 50); - getRenderedSlot(recipe, 0).draw(matrixStack, 131, 50); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 62, 57); - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 126, 29); - deployer.draw(matrixStack, getBackground().getWidth() / 2 - 13, 22); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/FanBlastingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/FanBlastingCategory.java deleted file mode 100644 index f127d75c3..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/FanBlastingCategory.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import net.minecraft.fluid.Fluids; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.AbstractCookingRecipe; - -public class FanBlastingCategory extends ProcessingViaFanCategory { - - public FanBlastingCategory() { - super(doubleItemIcon(AllItems.PROPELLER.get(), Items.LAVA_BUCKET)); - } - - @Override - public Class getRecipeClass() { - return AbstractCookingRecipe.class; - } - - @Override - public void renderAttachedBlock(MatrixStack matrixStack) { - matrixStack.push(); - - GuiGameElement.of(Fluids.LAVA) - .scale(24) - .atLocal(0, 0, 2) - .render(matrixStack); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/FanSmokingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/FanSmokingCategory.java deleted file mode 100644 index 41af4afed..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/FanSmokingCategory.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import net.minecraft.block.Blocks; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.SmokingRecipe; - -public class FanSmokingCategory extends ProcessingViaFanCategory { - - public FanSmokingCategory() { - super(doubleItemIcon(AllItems.PROPELLER.get(), Items.BLAZE_POWDER)); - } - - @Override - public Class getRecipeClass() { - return SmokingRecipe.class; - } - - @Override - public void renderAttachedBlock(MatrixStack matrixStack) { - - GuiGameElement.of(Blocks.FIRE.getDefaultState()) - .scale(24) - .atLocal(0, 0, 2) - .render(matrixStack); - - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/compat/jei/category/FanWashingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/FanWashingCategory.java deleted file mode 100644 index 8af3d75af..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/FanWashingCategory.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingOutput; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.Items; - -public class FanWashingCategory extends ProcessingViaFanCategory { - - public FanWashingCategory() { - super(185, doubleItemIcon(AllItems.PROPELLER.get(), Items.WATER_BUCKET)); - } - - @Override - public Class getRecipeClass() { - return SplashingRecipe.class; - } - - @Override - public void setIngredients(SplashingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutputs(VanillaTypes.ITEM, recipe.getRollableResultsAsItemStacks()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, SplashingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - itemStacks.init(0, true, 12, 47); - itemStacks.set(0, Arrays.asList(recipe.getIngredients() - .get(0) - .getMatchingStacks())); - - List results = recipe.getRollableResults(); - boolean single = results.size() == 1; - boolean excessive = results.size() > 9; - for (int outputIndex = 0; outputIndex < results.size(); outputIndex++) { - int xOffset = (outputIndex % 3) * 19; - int yOffset = (outputIndex / 3) * -19; - - itemStacks.init(outputIndex + 1, false, single ? 126 : 121 + xOffset, 47 + yOffset + (excessive ? 8 : 0)); - itemStacks.set(outputIndex + 1, results.get(outputIndex) - .getStack()); - } - - addStochasticTooltip(itemStacks, results); - } - - @Override - protected void renderWidgets(MatrixStack matrixStack, SplashingRecipe recipe, double mouseX, double mouseY) { - int size = recipe.getRollableResultsAsItemStacks() - .size(); - - AllGuiTextures.JEI_SLOT.draw(matrixStack, 12, 47); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 39, 29); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 54, 39); - AllGuiTextures.JEI_LONG_ARROW.draw(matrixStack, 42, 51); - - if (size == 1) { - getRenderedSlot(recipe, 0).draw(matrixStack, 126, 47); - return; - } - - for (int i = 0; i < size; i++) { - int xOffset = (i % 3) * 19; - int yOffset = (i / 3) * -19 + (size > 9 ? 8 : 0); - getRenderedSlot(recipe, i).draw(matrixStack, 121 + xOffset, 47 + yOffset); - } - } - - @Override - protected void translateFan(MatrixStack ms) { - ms.translate(43, 33, 0); - } - - @Override - public void renderAttachedBlock(MatrixStack matrixStack) { - matrixStack.push(); - - GuiGameElement.of(Fluids.WATER) - .scale(24) - .atLocal(0, 0, 2) - .render(matrixStack); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java deleted file mode 100644 index ba8f9042f..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/ItemDrainCategory.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.Create; -import com.simibubi.create.compat.jei.category.animations.AnimatedItemDrain; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; -import com.simibubi.create.content.contraptions.processing.EmptyingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiFluidStackGroup; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.runtime.IIngredientManager; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.PotionItem; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; - -public class ItemDrainCategory extends CreateRecipeCategory { - - AnimatedItemDrain drain; - - public ItemDrainCategory() { - super(doubleItemIcon(AllBlocks.ITEM_DRAIN.get(), Items.WATER_BUCKET), emptyBackground(177, 50)); - drain = new AnimatedItemDrain(); - } - - public static List getRecipes(IIngredientManager ingredientManager) { - List recipes = new ArrayList<>(); - - ingredientManager.getAllIngredients(VanillaTypes.ITEM) - .stream() - .forEach(stack -> { - if (stack.getItem() instanceof PotionItem) { - FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); - Ingredient potion = Ingredient.fromStacks(stack); - recipes.add(new ProcessingRecipeBuilder<>(EmptyingRecipe::new, Create.asResource("potions")) - .withItemIngredients(potion) - .withFluidOutputs(fluidFromPotionItem) - .withSingleItemOutput(new ItemStack(Items.GLASS_BOTTLE)) - .build()); - return; - } - - LazyOptional capability = - stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); - if (!capability.isPresent()) - return; - - ItemStack copy = stack.copy(); - capability = copy.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); - IFluidHandlerItem handler = capability.orElse(null); - FluidStack extracted = handler.drain(1000, FluidAction.EXECUTE); - ItemStack result = handler.getContainer(); - if (extracted.isEmpty()) - return; - - Ingredient ingredient = Ingredient.fromStacks(stack); - ResourceLocation itemName = stack.getItem() - .getRegistryName(); - ResourceLocation fluidName = extracted.getFluid() - .getRegistryName(); - - recipes.add(new ProcessingRecipeBuilder<>(EmptyingRecipe::new, - Create.asResource("empty_" + itemName.getNamespace() + "_" + itemName.getPath() + "_of_" - + fluidName.getNamespace() + "_" + fluidName.getPath())).withItemIngredients(ingredient) - .withFluidOutputs(extracted) - .withSingleItemOutput(result) - .build()); - }); - - return recipes; - } - - @Override - public Class getRecipeClass() { - return EmptyingRecipe.class; - } - - @Override - public void setIngredients(EmptyingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - - if (!recipe.getRollableResults() - .isEmpty()) - ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); - if (!recipe.getFluidResults() - .isEmpty()) - ingredients.setOutputs(VanillaTypes.FLUID, recipe.getFluidResults()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, EmptyingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - IGuiFluidStackGroup fluidStacks = recipeLayout.getFluidStacks(); - FluidStack fluidOutput = recipe.getResultingFluid(); - List matchingIngredients = Arrays.asList(recipe.getIngredients() - .get(0) - .getMatchingStacks()); - - fluidStacks.init(0, true, 132, 8); - fluidStacks.set(0, withImprovedVisibility(fluidOutput)); - itemStacks.init(0, true, 26, 7); - itemStacks.set(0, matchingIngredients); - itemStacks.init(1, false, 131, 26); - itemStacks.set(1, recipe.getRecipeOutput()); - - addFluidTooltip(fluidStacks, Collections.emptyList(), ImmutableList.of(fluidOutput)); - } - - @Override - public void draw(EmptyingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 131, 7); - AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 7); - getRenderedSlot(recipe, 0).draw(matrixStack, 131, 26); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 62, 37); - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 73, 4); - drain.withFluid(recipe.getResultingFluid()) - .draw(matrixStack, getBackground().getWidth() / 2 - 13, 40); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java deleted file mode 100644 index 86febc77d..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/MechanicalCraftingCategory.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.compat.jei.category.animations.AnimatedCrafter; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredientRenderer; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.ICraftingRecipe; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.item.crafting.ShapedRecipe; -import net.minecraft.util.NonNullList; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; - -public class MechanicalCraftingCategory extends CreateRecipeCategory { - - private final AnimatedCrafter crafter = new AnimatedCrafter(); - - public MechanicalCraftingCategory() { - super(itemIcon(AllBlocks.MECHANICAL_CRAFTER.get()), emptyBackground(177, 107)); - } - - @Override - public void setIngredients(ICraftingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, ICraftingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - NonNullList recipeIngredients = recipe.getIngredients(); - - itemStacks.init(0, false, 133, 80); - itemStacks.set(0, recipe.getRecipeOutput() - .getStack()); - - int x = getXPadding(recipe); - int y = getYPadding(recipe); - float scale = getScale(recipe); - int size = recipeIngredients.size(); - IIngredientRenderer renderer = new CrafterIngredientRenderer(recipe); - - for (int i = 0; i < size; i++) { - float f = 19 * scale; - int slotSize = (int) (16 * scale); - int xPosition = (int) (x + 1 + (i % getWidth(recipe)) * f); - int yPosition = (int) (y + 1 + (i / getWidth(recipe)) * f); - itemStacks.init(i + 1, true, renderer, xPosition, yPosition, slotSize, slotSize, 0, 0); - itemStacks.set(i + 1, Arrays.asList(recipeIngredients.get(i) - .getMatchingStacks())); - } - - } - - static int maxSize = 100; - - public static float getScale(ICraftingRecipe recipe) { - int w = getWidth(recipe); - int h = getHeight(recipe); - return Math.min(1, maxSize / (19f * Math.max(w, h))); - } - - public static int getYPadding(ICraftingRecipe recipe) { - return 3 + 50 - (int) (getScale(recipe) * getHeight(recipe) * 19 * .5); - } - - public static int getXPadding(ICraftingRecipe recipe) { - return 3 + 50 - (int) (getScale(recipe) * getWidth(recipe) * 19 * .5); - } - - private static int getWidth(ICraftingRecipe recipe) { - return recipe instanceof ShapedRecipe ? ((ShapedRecipe) recipe).getWidth() : 1; - } - - private static int getHeight(ICraftingRecipe recipe) { - return recipe instanceof ShapedRecipe ? ((ShapedRecipe) recipe).getHeight() : 1; - } - - @Override - public void draw(ICraftingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - matrixStack.push(); - float scale = getScale(recipe); - matrixStack.translate(getXPadding(recipe), getYPadding(recipe), 0); - - for (int row = 0; row < getHeight(recipe); row++) - for (int col = 0; col < getWidth(recipe); col++) - if (!recipe.getIngredients() - .get(row * getWidth(recipe) + col) - .hasNoMatchingItems()) { - matrixStack.push(); - matrixStack.translate(col * 19 * scale, row * 19 * scale, 0); - matrixStack.scale(scale, scale, scale); - AllGuiTextures.JEI_SLOT.draw(matrixStack, 0, 0); - matrixStack.pop(); - } - - matrixStack.pop(); - - AllGuiTextures.JEI_SLOT.draw(matrixStack, 133, 80); - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 128, 59); - crafter.draw(matrixStack, 129, 25); - - matrixStack.push(); - matrixStack.translate(0, 0, 300); - - RenderHelper.disableStandardItemLighting(); - int amount = 0; - for (Ingredient ingredient : recipe.getIngredients()) { - if (Ingredient.EMPTY == ingredient) - continue; - amount++; - } - - Minecraft.getInstance().fontRenderer.drawWithShadow(matrixStack, amount + "", 142, 39, 0xFFFFFF); - matrixStack.pop(); - } - - @Override - public Class getRecipeClass() { - return ICraftingRecipe.class; - } - - private static final class CrafterIngredientRenderer implements IIngredientRenderer { - - private final ICraftingRecipe recipe; - - public CrafterIngredientRenderer(ICraftingRecipe recipe) { - this.recipe = recipe; - } - - @Override - public void render(MatrixStack matrixStack, int xPosition, int yPosition, ItemStack ingredient) { - matrixStack.push(); - matrixStack.translate(xPosition, yPosition, 0); - float scale = getScale(recipe); - matrixStack.scale(scale, scale, scale); - - if (ingredient != null) { - RenderSystem.pushMatrix(); - RenderSystem.multMatrix(matrixStack.peek().getModel()); - RenderSystem.enableDepthTest(); - RenderHelper.enable(); - Minecraft minecraft = Minecraft.getInstance(); - FontRenderer font = getFontRenderer(minecraft, ingredient); - ItemRenderer itemRenderer = minecraft.getItemRenderer(); - itemRenderer.renderItemAndEffectIntoGUI(null, ingredient, 0, 0); - itemRenderer.renderItemOverlayIntoGUI(font, ingredient, 0, 0, null); - RenderSystem.disableBlend(); - RenderHelper.disableStandardItemLighting(); - RenderSystem.popMatrix(); - } - - matrixStack.pop(); - } - - @Override - public List getTooltip(ItemStack ingredient, ITooltipFlag tooltipFlag) { - Minecraft minecraft = Minecraft.getInstance(); - PlayerEntity player = minecraft.player; - try { - return ingredient.getTooltip(player, tooltipFlag); - } catch (RuntimeException | LinkageError e) { - List list = new ArrayList<>(); - TranslationTextComponent crash = new TranslationTextComponent("jei.tooltip.error.crash"); - list.add(crash.formatted(TextFormatting.RED)); - return list; - } - } - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MillingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MillingCategory.java deleted file mode 100644 index ddd53ff55..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/MillingCategory.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.compat.jei.category.animations.AnimatedMillstone; -import com.simibubi.create.content.contraptions.components.crusher.AbstractCrushingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingOutput; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; - -public class MillingCategory extends CreateRecipeCategory { - - private AnimatedMillstone millstone = new AnimatedMillstone(); - - public MillingCategory() { - super(doubleItemIcon(AllBlocks.MILLSTONE.get(), AllItems.WHEAT_FLOUR.get()), emptyBackground(177, 53)); - } - - @Override - public Class getRecipeClass() { - return AbstractCrushingRecipe.class; - } - - @Override - public void setIngredients(AbstractCrushingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutputs(VanillaTypes.ITEM, recipe.getRollableResultsAsItemStacks()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, AbstractCrushingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - itemStacks.init(0, true, 14, 8); - itemStacks.set(0, Arrays.asList(recipe.getIngredients() - .get(0) - .getMatchingStacks())); - - List results = recipe.getRollableResults(); - boolean single = results.size() == 1; - for (int outputIndex = 0; outputIndex < results.size(); outputIndex++) { - int xOffset = outputIndex % 2 == 0 ? 0 : 19; - int yOffset = (outputIndex / 2) * -19; - - itemStacks.init(outputIndex + 1, false, single ? 139 : 133 + xOffset, 27 + yOffset); - itemStacks.set(outputIndex + 1, results.get(outputIndex) - .getStack()); - } - - addStochasticTooltip(itemStacks, results); - } - - @Override - public void draw(AbstractCrushingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - int size = recipe.getRollableResultsAsItemStacks() - .size(); - - AllGuiTextures.JEI_SLOT.draw(matrixStack, 14, 8); - AllGuiTextures.JEI_ARROW.draw(matrixStack, 85, 32); - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 43, 4); - millstone.draw(matrixStack, 48, 27); - - if (size == 1) { - getRenderedSlot(recipe, 0).draw(matrixStack, 139, 27); - return; - } - - for (int i = 0; i < size; i++) { - int xOffset = i % 2 == 0 ? 0 : 19; - int yOffset = (i / 2) * -19; - getRenderedSlot(recipe, i).draw(matrixStack, 133 + xOffset, 27 + yOffset); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MixingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MixingCategory.java deleted file mode 100644 index a13524cc2..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/MixingCategory.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.compat.jei.category.animations.AnimatedBlazeBurner; -import com.simibubi.create.compat.jei.category.animations.AnimatedMixer; -import com.simibubi.create.content.contraptions.processing.BasinRecipe; -import com.simibubi.create.content.contraptions.processing.HeatCondition; - -import net.minecraft.block.Blocks; -import net.minecraft.item.Items; -import net.minecraft.util.IItemProvider; - -public class MixingCategory extends BasinCategory { - - private final AnimatedMixer mixer = new AnimatedMixer(); - private final AnimatedBlazeBurner heater = new AnimatedBlazeBurner(); - MixingType type; - - enum MixingType { - AUTO_SHAPELESS, MIXING, AUTO_BREWING; - } - - public static MixingCategory autoShapeless() { - return new MixingCategory(MixingType.AUTO_SHAPELESS, Items.CRAFTING_TABLE, 85); - } - - public static MixingCategory standard() { - return new MixingCategory(MixingType.MIXING, AllBlocks.BASIN.get(), 103); - } - - public static MixingCategory autoBrewing() { - return new MixingCategory(MixingType.AUTO_BREWING, Blocks.BREWING_STAND, 103); - } - - protected MixingCategory(MixingType type, IItemProvider secondaryItem, int height) { - super(type != MixingType.AUTO_SHAPELESS, doubleItemIcon(AllBlocks.MECHANICAL_MIXER.get(), secondaryItem), - emptyBackground(177, height)); - this.type = type; - } - - @Override - public void draw(BasinRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - super.draw(recipe, matrixStack, mouseX, mouseY); - HeatCondition requiredHeat = recipe.getRequiredHeat(); - if (requiredHeat != HeatCondition.NONE) - heater.withHeat(requiredHeat.visualizeAsBlazeBurner()) - .draw(matrixStack, getBackground().getWidth() / 2 + 3, 55); - mixer.draw(matrixStack, getBackground().getWidth() / 2 + 3, 34); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java deleted file mode 100644 index 621bc3594..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/MysteriousItemConversionCategory.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.compat.jei.ConversionRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingOutput; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; - -public class MysteriousItemConversionCategory extends CreateRecipeCategory { - - public static List getRecipes() { - List recipes = new ArrayList<>(); - recipes.add(ConversionRecipe.create(AllItems.EMPTY_BLAZE_BURNER.asStack(), AllBlocks.BLAZE_BURNER.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())); - return recipes; - } - - public MysteriousItemConversionCategory() { - super(itemIcon(AllItems.CHROMATIC_COMPOUND.get()), emptyBackground(177, 50)); - } - - @Override - public Class getRecipeClass() { - return ConversionRecipe.class; - } - - @Override - public void setIngredients(ConversionRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutputs(VanillaTypes.ITEM, recipe.getRollableResultsAsItemStacks()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, ConversionRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - List results = recipe.getRollableResults(); - itemStacks.init(0, true, 26, 16); - itemStacks.set(0, Arrays.asList(recipe.getIngredients().get(0).getMatchingStacks())); - itemStacks.init(1, false, 131, 16); - itemStacks.set(1, results.get(0).getStack()); - } - - @Override - public void draw(ConversionRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 16); - AllGuiTextures.JEI_SLOT.draw(matrixStack, 131, 16); - AllGuiTextures.JEI_LONG_ARROW.draw(matrixStack, 52, 20); - AllGuiTextures.JEI_QUESTION_MARK.draw(matrixStack, 77, 5); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/PackingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/PackingCategory.java deleted file mode 100644 index 2dcdce197..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/PackingCategory.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.compat.jei.category.animations.AnimatedPress; -import com.simibubi.create.content.contraptions.processing.BasinRecipe; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.block.Blocks; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.NonNullList; - -public class PackingCategory extends BasinCategory { - - private AnimatedPress press = new AnimatedPress(true); - private PackingType type; - - enum PackingType { - AUTO_SQUARE, COMPACTING; - } - - public static PackingCategory standard() { - return new PackingCategory(PackingType.COMPACTING, AllBlocks.BASIN.get(), 103); - } - - public static PackingCategory autoSquare() { - return new PackingCategory(PackingType.AUTO_SQUARE, Blocks.CRAFTING_TABLE, 85); - } - - protected PackingCategory(PackingType type, IItemProvider icon, int height) { - super(type != PackingType.AUTO_SQUARE, doubleItemIcon(AllBlocks.MECHANICAL_PRESS.get(), icon), - emptyBackground(177, height)); - this.type = type; - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, BasinRecipe recipe, IIngredients ingredients) { - if (type == PackingType.COMPACTING) { - super.setRecipe(recipeLayout, recipe, ingredients); - return; - } - - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - int i = 0; - - NonNullList ingredients2 = recipe.getIngredients(); - int size = ingredients2.size(); - int rows = size == 4 ? 2 : 3; - while (i < size) { - Ingredient ingredient = ingredients2.get(i); - itemStacks.init(i, true, (rows == 2 ? 26 : 17) + (i % rows) * 19, 50 - (i / rows) * 19); - itemStacks.set(i, Arrays.asList(ingredient.getMatchingStacks())); - i++; - } - - itemStacks.init(i, false, 141, 50); - itemStacks.set(i, recipe.getRecipeOutput()); - } - - @Override - public void draw(BasinRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - if (type == PackingType.COMPACTING) { - super.draw(recipe, matrixStack, mouseX, mouseY); - - } else { - NonNullList ingredients2 = recipe.getIngredients(); - int size = ingredients2.size(); - int rows = size == 4 ? 2 : 3; - for (int i = 0; i < size; i++) - AllGuiTextures.JEI_SLOT.draw(matrixStack, (rows == 2 ? 26 : 17) + (i % rows) * 19, - 50 - (i / rows) * 19); - AllGuiTextures.JEI_SLOT.draw(matrixStack, 141, 50); - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 136, 32); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 81, 68); - } - - press.draw(matrixStack, getBackground().getWidth() / 2 + 6, 40); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java deleted file mode 100644 index 99a5cbaf0..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/PolishingCategory.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.processing.ProcessingOutput; -import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.NonNullList; - -public class PolishingCategory extends CreateRecipeCategory { - - private ItemStack renderedSandpaper; - - public PolishingCategory() { - super(itemIcon(AllItems.SAND_PAPER.get()), emptyBackground(177, 55)); - renderedSandpaper = AllItems.SAND_PAPER.asStack(); - } - - @Override - public Class getRecipeClass() { - return SandPaperPolishingRecipe.class; - } - - @Override - public void setIngredients(SandPaperPolishingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutputs(VanillaTypes.ITEM, recipe.getRollableResultsAsItemStacks()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, SandPaperPolishingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - List results = recipe.getRollableResults(); - - itemStacks.init(0, true, 26, 28); - itemStacks.set(0, Arrays.asList(recipe.getIngredients() - .get(0) - .getMatchingStacks())); - itemStacks.init(1, false, 131, 28); - itemStacks.set(1, results.get(0) - .getStack()); - - addStochasticTooltip(itemStacks, results); - } - - @Override - public void draw(SandPaperPolishingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 28); - getRenderedSlot(recipe, 0).draw(matrixStack, 131, 28); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 61, 21); - AllGuiTextures.JEI_LONG_ARROW.draw(matrixStack, 52, 32); - - NonNullList ingredients = recipe.getIngredients(); - ItemStack[] matchingStacks = ingredients.get(0) - .getMatchingStacks(); - if (matchingStacks.length == 0) - return; - - - CompoundNBT tag = renderedSandpaper.getOrCreateTag(); - tag.put("Polishing", matchingStacks[0].serializeNBT()); - tag.putBoolean("JEI", true); - GuiGameElement.of(renderedSandpaper) - .at(getBackground().getWidth() / 2 - 16, 0, 0) - .scale(2) - .render(matrixStack); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/PressingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/PressingCategory.java deleted file mode 100644 index fbd9d0656..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/PressingCategory.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.compat.jei.category.animations.AnimatedPress; -import com.simibubi.create.content.contraptions.components.press.PressingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingOutput; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; - -public class PressingCategory extends CreateRecipeCategory { - - private AnimatedPress press = new AnimatedPress(false); - - public PressingCategory() { - super(doubleItemIcon(AllBlocks.MECHANICAL_PRESS.get(), AllItems.IRON_SHEET.get()), emptyBackground(177, 70)); - } - - @Override - public Class getRecipeClass() { - return PressingRecipe.class; - } - - @Override - public void setIngredients(PressingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutputs(VanillaTypes.ITEM, recipe.getRollableResultsAsItemStacks()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, PressingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - itemStacks.init(0, true, 26, 50); - itemStacks.set(0, Arrays.asList(recipe.getIngredients() - .get(0) - .getMatchingStacks())); - - List results = recipe.getRollableResults(); - for (int outputIndex = 0; outputIndex < results.size(); outputIndex++) { - itemStacks.init(outputIndex + 1, false, 131 + 19 * outputIndex, 50); - itemStacks.set(outputIndex + 1, results.get(outputIndex) - .getStack()); - } - - addStochasticTooltip(itemStacks, results); - } - - @Override - public void draw(PressingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 50); - getRenderedSlot(recipe, 0).draw(matrixStack, 131, 50); - if (recipe.getRollableResults() - .size() > 1) - getRenderedSlot(recipe, 1).draw(matrixStack, 131 + 19, 50); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 61, 41); - AllGuiTextures.JEI_LONG_ARROW.draw(matrixStack, 52, 54); - press.draw(matrixStack, getBackground().getWidth() / 2 - 17, 22); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java deleted file mode 100644 index 69b2292d8..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/ProcessingViaFanCategory.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; -import java.util.function.Supplier; - -import javax.annotation.Nullable; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.Lang; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.drawable.IDrawable; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.math.vector.Vector3f; - -public abstract class ProcessingViaFanCategory> extends CreateRecipeCategory { - - public ProcessingViaFanCategory(IDrawable icon) { - this(177, icon); - } - - protected ProcessingViaFanCategory(int width, IDrawable icon) { - super(icon, emptyBackground(width, 71)); - } - - @Override - public void setIngredients(T recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); - } - - public static Supplier getFan(String name) { - return () -> AllBlocks.ENCASED_FAN.asStack() - .setDisplayName(Lang.translate("recipe." + name + ".fan").styled(style -> style.withItalic(false))); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, T recipe, @Nullable IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - itemStacks.init(0, true, 20, 47); - itemStacks.set(0, Arrays.asList(recipe.getIngredients() - .get(0) - .getMatchingStacks())); - - itemStacks.init(1, false, 139, 47); - itemStacks.set(1, recipe.getRecipeOutput()); - } - - protected void renderWidgets(MatrixStack matrixStack, T recipe, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 20, 47); - AllGuiTextures.JEI_SLOT.draw(matrixStack, 139, 47); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 47, 29); - AllGuiTextures.JEI_LIGHT.draw(matrixStack, 66, 39); - AllGuiTextures.JEI_LONG_ARROW.draw(matrixStack, 53, 51); - } - - @Override - public void draw(@Nullable T recipe, @Nullable MatrixStack matrixStack, double mouseX, double mouseY) { - if (matrixStack == null) - return; - renderWidgets(matrixStack, recipe, mouseX, mouseY); - matrixStack.push(); - translateFan(matrixStack); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-12.5f)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); - int scale = 24; - - GuiGameElement.of(AllBlockPartials.ENCASED_FAN_INNER) - .rotateBlock(180, 0, AnimatedKinetics.getCurrentAngle() * 16) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlocks.ENCASED_FAN.getDefaultState()) - .rotateBlock(0, 180, 0) - .atLocal(0, 0, 0) - .scale(scale) - .render(matrixStack); - - renderAttachedBlock(matrixStack); - matrixStack.pop(); - } - - protected void translateFan(MatrixStack matrixStack) { - matrixStack.translate(56, 33, 0); - } - - public abstract void renderAttachedBlock(MatrixStack matrixStack); - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SawingCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SawingCategory.java deleted file mode 100644 index 7e249d103..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/SawingCategory.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.Arrays; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.compat.jei.category.animations.AnimatedSaw; -import com.simibubi.create.content.contraptions.components.saw.CuttingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingOutput; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import net.minecraft.item.Items; - -public class SawingCategory extends CreateRecipeCategory { - - private AnimatedSaw saw = new AnimatedSaw(); - - public SawingCategory() { - super(doubleItemIcon(AllBlocks.MECHANICAL_SAW.get(), Items.OAK_LOG), emptyBackground(177, 70)); - } - - @Override - public Class getRecipeClass() { - return CuttingRecipe.class; - } - - @Override - public void setIngredients(CuttingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setOutputs(VanillaTypes.ITEM, recipe.getRollableResultsAsItemStacks()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, CuttingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - itemStacks.init(0, true, 43, 4); - itemStacks.set(0, Arrays.asList(recipe.getIngredients().get(0).getMatchingStacks())); - - List results = recipe.getRollableResults(); - for (int outputIndex = 0; outputIndex < results.size(); outputIndex++) { - int xOffset = outputIndex % 2 == 0 ? 0 : 19; - int yOffset = (outputIndex / 2) * -19; - - itemStacks.init(outputIndex + 1, false, 117 + xOffset, 47 + yOffset); - itemStacks.set(outputIndex + 1, results.get(outputIndex).getStack()); - } - - addStochasticTooltip(itemStacks, results); - } - - @Override - public void draw(CuttingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 43, 4); - int size = recipe.getRollableResults().size(); - for (int i = 0; i < size; i++) { - int xOffset = i % 2 == 0 ? 0 : 19; - int yOffset = (i / 2) * -19; - getRenderedSlot(recipe, i).draw(matrixStack, 117 + xOffset, 47 + yOffset); - } - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 70, 6); - saw.draw(matrixStack, 72, 42); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java b/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java deleted file mode 100644 index 0c965b5c6..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/SpoutCategory.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.simibubi.create.compat.jei.category; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.stream.Collectors; - -import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.Create; -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.GenericItemFilling; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import mezz.jei.api.constants.VanillaTypes; -import mezz.jei.api.gui.IRecipeLayout; -import mezz.jei.api.gui.ingredient.IGuiFluidStackGroup; -import mezz.jei.api.gui.ingredient.IGuiItemStackGroup; -import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.runtime.IIngredientManager; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.PotionItem; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; - -public class SpoutCategory extends CreateRecipeCategory { - - AnimatedSpout spout; - - public SpoutCategory() { - super(doubleItemIcon(AllBlocks.SPOUT.get(), Items.WATER_BUCKET), emptyBackground(177, 70)); - spout = new AnimatedSpout(); - } - - public static List getRecipes(IIngredientManager ingredientManager) { - List recipes = new ArrayList<>(); - - ingredientManager.getAllIngredients(VanillaTypes.ITEM) - .stream() - .forEach(stack -> { - if (stack.getItem() instanceof PotionItem) { - FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(stack); - Ingredient bottle = Ingredient.fromItems(Items.GLASS_BOTTLE); - recipes.add(new ProcessingRecipeBuilder<>(FillingRecipe::new, Create.asResource("potions")) - .withItemIngredients(bottle) - .withFluidIngredients(FluidIngredient.fromFluidStack(fluidFromPotionItem)) - .withSingleItemOutput(stack) - .build()); - return; - } - - LazyOptional capability = - stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); - if (!capability.isPresent()) - return; - - ingredientManager.getAllIngredients(VanillaTypes.FLUID) - .stream() - .forEach(fluidStack -> { - ItemStack copy = stack.copy(); - copy.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY) - .ifPresent(fhi -> { - if (!GenericItemFilling.isFluidHandlerValid(copy, fhi)) - return; - FluidStack fluidCopy = fluidStack.copy(); - fluidCopy.setAmount(1000); - fhi.fill(fluidCopy, FluidAction.EXECUTE); - ItemStack container = fhi.getContainer(); - if (container.isItemEqual(copy)) - return; - if (container.isEmpty()) - return; - - Ingredient bucket = Ingredient.fromStacks(stack); - ResourceLocation itemName = stack.getItem() - .getRegistryName(); - ResourceLocation fluidName = fluidCopy.getFluid() - .getRegistryName(); - recipes.add(new ProcessingRecipeBuilder<>(FillingRecipe::new, - Create.asResource("fill_" + itemName.getNamespace() + "_" + itemName.getPath() - + "_with_" + fluidName.getNamespace() + "_" + fluidName.getPath())) - .withItemIngredients(bucket) - .withFluidIngredients(FluidIngredient.fromFluidStack(fluidCopy)) - .withSingleItemOutput(container) - .build()); - }); - }); - }); - - return recipes; - } - - @Override - public Class getRecipeClass() { - return FillingRecipe.class; - } - - @Override - public void setIngredients(FillingRecipe recipe, IIngredients ingredients) { - ingredients.setInputIngredients(recipe.getIngredients()); - ingredients.setInputLists(VanillaTypes.FLUID, recipe.getFluidIngredients() - .stream() - .map(FluidIngredient::getMatchingFluidStacks) - .collect(Collectors.toList())); - - if (!recipe.getRollableResults() - .isEmpty()) - ingredients.setOutput(VanillaTypes.ITEM, recipe.getRecipeOutput()); - if (!recipe.getFluidResults() - .isEmpty()) - ingredients.setOutputs(VanillaTypes.FLUID, recipe.getFluidResults()); - } - - @Override - public void setRecipe(IRecipeLayout recipeLayout, FillingRecipe recipe, IIngredients ingredients) { - IGuiItemStackGroup itemStacks = recipeLayout.getItemStacks(); - IGuiFluidStackGroup fluidStacks = recipeLayout.getFluidStacks(); - FluidIngredient fluidIngredient = recipe.getRequiredFluid(); - List matchingIngredients = Arrays.asList(recipe.getIngredients() - .get(0) - .getMatchingStacks()); - - fluidStacks.init(0, true, 27, 32); - fluidStacks.set(0, withImprovedVisibility(fluidIngredient.getMatchingFluidStacks())); - itemStacks.init(0, true, 26, 50); - itemStacks.set(0, matchingIngredients); - itemStacks.init(1, false, 131, 50); - itemStacks.set(1, recipe.getRecipeOutput()); - - addFluidTooltip(fluidStacks, ImmutableList.of(fluidIngredient), Collections.emptyList()); - } - - @Override - public void draw(FillingRecipe recipe, MatrixStack matrixStack, double mouseX, double mouseY) { - AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 31); - AllGuiTextures.JEI_SLOT.draw(matrixStack, 26, 50); - getRenderedSlot(recipe, 0).draw(matrixStack, 131, 50); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, 62, 57); - AllGuiTextures.JEI_DOWN_ARROW.draw(matrixStack, 126, 29); - spout.withFluids(recipe.getRequiredFluid() - .getMatchingFluidStacks()) - .draw(matrixStack, getBackground().getWidth() / 2 - 13, 22); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java deleted file mode 100644 index 8d448783d..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedBlazeBurner.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import mezz.jei.api.gui.drawable.IDrawable; -import net.minecraft.util.math.vector.Vector3f; - -public class AnimatedBlazeBurner implements IDrawable { - - private HeatLevel heatLevel; - - public AnimatedBlazeBurner withHeat(HeatLevel heatLevel) { - this.heatLevel = heatLevel; - return this; - } - - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 200); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); - int scale = 23; - - GuiGameElement.of(AllBlocks.BLAZE_BURNER.getDefaultState()) - .atLocal(0, 1.65, 0) - .scale(scale) - .render(matrixStack); - - PartialModel blaze = AllBlockPartials.BLAZES.get(heatLevel); - GuiGameElement.of(blaze) - .atLocal(1, 1.65, 1) - .rotate(0, 180, 0) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - } - - @Override - public int getWidth() { - return 50; - } - - @Override - public int getHeight() { - return 50; - } -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java deleted file mode 100644 index 826e1d9ec..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrafter.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.MatrixStacker; - -public class AnimatedCrafter extends AnimatedKinetics { - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 0); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, -16, 13); - - matrixStack.translate(3, 16, 0); - MatrixStacker.of(matrixStack) - .rotateX(-12.5f) - .rotateY(-22.5f); - int scale = 22; - - GuiGameElement.of(cogwheel()) - .rotateBlock(90, 0, getCurrentAngle()) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlocks.MECHANICAL_CRAFTER.getDefaultState()) - .rotateBlock(0, 180, 0) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java deleted file mode 100644 index 263add564..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedCrushingWheels.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.vector.Vector3f; - -public class AnimatedCrushingWheels extends AnimatedKinetics { - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-22.5f)); - int scale = 22; - - BlockState wheel = AllBlocks.CRUSHING_WHEEL.get() - .getDefaultState() - .with(BlockStateProperties.AXIS, Axis.X); - - GuiGameElement.of(wheel) - .rotateBlock(0, 90, -getCurrentAngle()) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(wheel) - .rotateBlock(0, 90, getCurrentAngle()) - .atLocal(2, 0, 0) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java deleted file mode 100644 index 862e94194..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedDeployer.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.deployer.DeployerBlock; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; - -public class AnimatedDeployer extends AnimatedKinetics { - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); - int scale = 20; - - GuiGameElement.of(shaft(Axis.Z)) - .rotateBlock(0, 0, getCurrentAngle()) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlocks.DEPLOYER.getDefaultState() - .with(DeployerBlock.FACING, Direction.DOWN) - .with(DeployerBlock.AXIS_ALONG_FIRST_COORDINATE, false)) - .scale(scale) - .render(matrixStack); - - float cycle = AnimationTickHolder.getRenderTime() % 30; - float offset = cycle < 10 ? cycle / 10f : cycle < 20 ? (20 - cycle) / 10f : 0; - - matrixStack.push(); - - matrixStack.translate(0, offset * 17, 0); - GuiGameElement.of(AllBlockPartials.DEPLOYER_POLE) - .rotateBlock(90, 0, 0) - .scale(scale) - .render(matrixStack); - GuiGameElement.of(AllBlockPartials.DEPLOYER_HAND_HOLDING) - .rotateBlock(90, 0, 0) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - - GuiGameElement.of(AllBlocks.DEPOT.getDefaultState()) - .atLocal(0, 2, 0) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java deleted file mode 100644 index 41bed07e1..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedItemDrain.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.fluid.FluidRenderer; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraftforge.fluids.FluidStack; - -public class AnimatedItemDrain extends AnimatedKinetics { - - private FluidStack fluid; - - public AnimatedItemDrain withFluid(FluidStack fluid) { - this.fluid = fluid; - return this; - } - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); - int scale = 20; - - GuiGameElement.of(AllBlocks.ITEM_DRAIN.getDefaultState()) - .scale(scale) - .render(matrixStack); - - Impl buffer = IRenderTypeBuffer.immediate(Tessellator.getInstance() - .getBuffer()); - MatrixStack ms = new MatrixStack(); - ms.scale(scale, -scale, scale); - float from = 2/16f; - float to = 1f - from; - FluidRenderer.renderTiledFluidBB(fluid, from, from, from, to, 3/4f, to, buffer, ms, 0xf000f0, false); - buffer.draw(); - - matrixStack.pop(); - } -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java deleted file mode 100644 index fe8a3c37f..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedKinetics.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import mezz.jei.api.gui.drawable.IDrawable; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction.Axis; - -public abstract class AnimatedKinetics implements IDrawable { - - public static float getCurrentAngle() { - return ((AnimationTickHolder.getRenderTime()) * 4f) % 360; - } - - protected BlockState shaft(Axis axis) { - return AllBlocks.SHAFT.getDefaultState().with(BlockStateProperties.AXIS, axis); - } - - protected PartialModel cogwheel() { - return AllBlockPartials.SHAFTLESS_COGWHEEL; - } - - @Override - public int getWidth() { - return 50; - } - - @Override - public int getHeight() { - return 50; - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java deleted file mode 100644 index 8e98eb372..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMillstone.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.GuiGameElement; - -public class AnimatedMillstone extends AnimatedKinetics { - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 0); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, -16, 13); - matrixStack.translate(-2, 18, 0); - int scale = 22; - - GuiGameElement.of(AllBlockPartials.MILLSTONE_COG) - .rotateBlock(22.5, getCurrentAngle() * 2, 0) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlocks.MILLSTONE.getDefaultState()) - .rotateBlock(22.5, 22.5, 0) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMixer.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMixer.java deleted file mode 100644 index 5359d7b76..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedMixer.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; - -public class AnimatedMixer extends AnimatedKinetics { - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 200); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); - int scale = 23; - - GuiGameElement.of(cogwheel()) - .rotateBlock(0, getCurrentAngle() * 2, 0) - .atLocal(0, 0, 0) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlocks.MECHANICAL_MIXER.getDefaultState()) - .atLocal(0, 0, 0) - .scale(scale) - .render(matrixStack); - - float animation = ((MathHelper.sin(AnimationTickHolder.getRenderTime() / 32f) + 1) / 5) + .5f; - - GuiGameElement.of(AllBlockPartials.MECHANICAL_MIXER_POLE) - .atLocal(0, animation, 0) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlockPartials.MECHANICAL_MIXER_HEAD) - .rotateBlock(0, getCurrentAngle() * 4, 0) - .atLocal(0, animation, 0) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlocks.BASIN.getDefaultState()) - .atLocal(0, 1.65, 0) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedPress.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedPress.java deleted file mode 100644 index a7e1d262a..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedPress.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.vector.Vector3f; - -public class AnimatedPress extends AnimatedKinetics { - - private boolean basin; - - public AnimatedPress(boolean basin) { - this.basin = basin; - } - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); - int scale = basin ? 20 : 24; - - GuiGameElement.of(shaft(Axis.Z)) - .rotateBlock(0, 0, getCurrentAngle()) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlocks.MECHANICAL_PRESS.getDefaultState()) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlockPartials.MECHANICAL_PRESS_HEAD) - .atLocal(0, -getAnimatedHeadOffset(), 0) - .scale(scale) - .render(matrixStack); - - if (basin) - GuiGameElement.of(AllBlocks.BASIN.getDefaultState()) - .atLocal(0, 1.65, 0) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - } - - private float getAnimatedHeadOffset() { - float cycle = (AnimationTickHolder.getRenderTime()) % 30; - if (cycle < 10) { - float progress = cycle / 10; - return -(progress * progress * progress); - } - if (cycle < 15) - return -1; - if (cycle < 20) - return -1 + (1 - ((20 - cycle) / 5)); - return 0; - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSaw.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSaw.java deleted file mode 100644 index a13365b2e..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSaw.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.saw.SawBlock; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.GuiGameElement; - -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.vector.Vector3f; - -public class AnimatedSaw extends AnimatedKinetics { - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 0); - AllGuiTextures.JEI_SHADOW.draw(matrixStack, -16, 13); - - matrixStack.translate(0, 0, 200); - matrixStack.translate(29, 17, 0); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-22.5f)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(90 - 225f)); - int scale = 25; - - GuiGameElement.of(shaft(Axis.X)) - .rotateBlock(-getCurrentAngle(), 0, 0) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlocks.MECHANICAL_SAW.getDefaultState() - .with(SawBlock.FACING, Direction.UP)) - .rotateBlock(0, 0, 0) - .scale(scale) - .render(matrixStack); - - GuiGameElement.of(AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE) - .rotateBlock(0, -90, -90) - .scale(scale) - .render(matrixStack); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java b/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java deleted file mode 100644 index 40f23c032..000000000 --- a/src/main/java/com/simibubi/create/compat/jei/category/animations/AnimatedSpout.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.simibubi.create.compat.jei.category.animations; - -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.fluid.FluidRenderer; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraftforge.fluids.FluidStack; - -public class AnimatedSpout extends AnimatedKinetics { - - private List fluids; - - public AnimatedSpout withFluids(List fluids) { - this.fluids = fluids; - return this; - } - - @Override - public void draw(MatrixStack matrixStack, int xOffset, int yOffset) { - matrixStack.push(); - matrixStack.translate(xOffset, yOffset, 100); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-15.5f)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(22.5f)); - int scale = 20; - - GuiGameElement.of(AllBlocks.SPOUT.getDefaultState()) - .scale(scale) - .render(matrixStack); - - float cycle = AnimationTickHolder.getRenderTime() % 30; - float squeeze = cycle < 20 ? MathHelper.sin((float) (cycle / 20f * Math.PI)) : 0; - squeeze *= 20; - - matrixStack.push(); - - GuiGameElement.of(AllBlockPartials.SPOUT_TOP) - .scale(scale) - .render(matrixStack); - matrixStack.translate(0, -3 * squeeze / 32f, 0); - GuiGameElement.of(AllBlockPartials.SPOUT_MIDDLE) - .scale(scale) - .render(matrixStack); - matrixStack.translate(0, -3 * squeeze / 32f, 0); - GuiGameElement.of(AllBlockPartials.SPOUT_BOTTOM) - .scale(scale) - .render(matrixStack); - matrixStack.translate(0, -3 * squeeze / 32f, 0); - - matrixStack.pop(); - - GuiGameElement.of(AllBlocks.DEPOT.getDefaultState()) - .atLocal(0, 2, 0) - .scale(scale) - .render(matrixStack); - - Impl buffer = IRenderTypeBuffer.immediate(Tessellator.getInstance() - .getBuffer()); - matrixStack.push(); - matrixStack.scale(16, -16, 16); - float from = 2/16f; - float to = 1f - from; - FluidRenderer.renderTiledFluidBB(fluids.get(0), from, from, from, to, to, to, buffer, matrixStack, 0xf000f0, false); - matrixStack.pop(); - - float width = 1 / 128f * squeeze; - matrixStack.translate(scale / 2f, scale * 1.5f, scale / 2f); - matrixStack.scale(16, -16, 16); - matrixStack.translate(-width / 2, 0, -width / 2); - FluidRenderer.renderTiledFluidBB(fluids.get(0), 0, -0.001f, 0, width, 2.001f, width, buffer, matrixStack, 0xf000f0, - false); - buffer.draw(); - - matrixStack.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/AllSections.java b/src/main/java/com/simibubi/create/content/AllSections.java deleted file mode 100644 index 5b04c6380..000000000 --- a/src/main/java/com/simibubi/create/content/AllSections.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.content; - -import com.simibubi.create.Create; -import com.simibubi.create.foundation.item.ItemDescription.Palette; - -import net.minecraft.block.Block; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public enum AllSections { - - /** Create's kinetic mechanisms */ - KINETICS(Palette.Red), - - /** Item transport and other Utility */ - LOGISTICS(Palette.Yellow), - - /** Tools for strucuture movement and replication */ - SCHEMATICS(Palette.Blue), - - /** Decorative blocks */ - PALETTES(Palette.Green), - - /** Helpful gadgets and other shenanigans */ - CURIOSITIES(Palette.Purple), - - /** Base materials, ingredients and tools */ - MATERIALS(Palette.Green), - - /** Fallback section */ - UNASSIGNED(Palette.Gray) - - ; - - private Palette tooltipPalette; - - private AllSections(Palette tooltipPalette) { - this.tooltipPalette = tooltipPalette; - } - - public Palette getTooltipPalette() { - return tooltipPalette; - } - - public static AllSections of(ItemStack stack) { - Item item = stack.getItem(); - if (item instanceof BlockItem) - return ofBlock(((BlockItem) item).getBlock()); - return ofItem(item); - } - - static AllSections ofItem(Item item) { - return Create.registrate() - .getSection(item); - } - - static AllSections ofBlock(Block block) { - return Create.registrate() - .getSection(block); - } - -} diff --git a/src/main/java/com/simibubi/create/content/CreateItemGroup.java b/src/main/java/com/simibubi/create/content/CreateItemGroup.java deleted file mode 100644 index e773d83b5..000000000 --- a/src/main/java/com/simibubi/create/content/CreateItemGroup.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.content; - -import java.util.EnumSet; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.item.CreateItemGroupBase; - -import net.minecraft.item.ItemStack; - -public class CreateItemGroup extends CreateItemGroupBase { - - public CreateItemGroup() { - super("base"); - } - - @Override - protected EnumSet getSections() { - return EnumSet.complementOf(EnumSet.of(AllSections.PALETTES)); - } - - @Override - public ItemStack createIcon() { - return AllBlocks.COGWHEEL.asStack(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/KineticDebugger.java b/src/main/java/com/simibubi/create/content/contraptions/KineticDebugger.java deleted file mode 100644 index 6876dd717..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/KineticDebugger.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.simibubi.create.content.contraptions; - -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; - -public class KineticDebugger { - - public static void tick() { - if (!isActive()) { - if (KineticTileEntityRenderer.rainbowMode) { - KineticTileEntityRenderer.rainbowMode = false; - CreateClient.BUFFER_CACHE.invalidate(); - } - return; - } - - KineticTileEntity te = getSelectedTE(); - if (te == null) - return; - - World world = Minecraft.getInstance().world; - BlockPos toOutline = te.hasSource() ? te.source : te.getPos(); - BlockState state = te.getBlockState(); - VoxelShape shape = world.getBlockState(toOutline) - .getRenderShape(world, toOutline); - - if (te.getTheoreticalSpeed() != 0 && !shape.isEmpty()) - CreateClient.OUTLINER.chaseAABB("kineticSource", shape.getBoundingBox() - .offset(toOutline)) - .lineWidth(1 / 16f) - .colored(te.hasSource() ? ColorHelper.colorFromLong(te.network) : 0xffcc00); - - if (state.getBlock() instanceof IRotate) { - Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state); - Vector3d vec = Vector3d.of(Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis) - .getDirectionVec()); - Vector3d center = VecHelper.getCenterOf(te.getPos()); - CreateClient.OUTLINER.showLine("rotationAxis", center.add(vec), center.subtract(vec)) - .lineWidth(1 / 16f); - } - - } - - public static boolean isActive() { - return Minecraft.getInstance().gameSettings.showDebugInfo && AllConfigs.CLIENT.rainbowDebug.get(); - } - - public static KineticTileEntity getSelectedTE() { - RayTraceResult obj = Minecraft.getInstance().objectMouseOver; - ClientWorld world = Minecraft.getInstance().world; - if (obj == null) - return null; - if (world == null) - return null; - if (!(obj instanceof BlockRayTraceResult)) - return null; - - BlockRayTraceResult ray = (BlockRayTraceResult) obj; - TileEntity te = world.getTileEntity(ray.getPos()); - if (!(te instanceof KineticTileEntity)) - return null; - - return (KineticTileEntity) te; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/KineticNetwork.java b/src/main/java/com/simibubi/create/content/contraptions/KineticNetwork.java deleted file mode 100644 index bbbe8e585..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/KineticNetwork.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.simibubi.create.content.contraptions; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; - -public class KineticNetwork { - - public Long id; - public boolean initialized; - public boolean containsFlywheel; - public Map sources; - public Map members; - - private float currentCapacity; - private float currentStress; - private float unloadedCapacity; - private float unloadedStress; - private int unloadedMembers; - - public KineticNetwork() { - sources = new HashMap<>(); - members = new HashMap<>(); - containsFlywheel = false; - } - - public void initFromTE(float maxStress, float currentStress, int members) { - unloadedCapacity = maxStress; - unloadedStress = currentStress; - unloadedMembers = members; - initialized = true; - updateStress(); - updateCapacity(); - } - - public void addSilently(KineticTileEntity te, float lastCapacity, float lastStress) { - if (members.containsKey(te)) - return; - if (te.isSource()) { - unloadedCapacity -= lastCapacity * getStressMultiplierForSpeed(te.getGeneratedSpeed()); - float addedStressCapacity = te.calculateAddedStressCapacity(); - sources.put(te, addedStressCapacity); - containsFlywheel |= te instanceof FlywheelTileEntity; - } - - unloadedStress -= lastStress * getStressMultiplierForSpeed(te.getTheoreticalSpeed()); - float stressApplied = te.calculateStressApplied(); - members.put(te, stressApplied); - - unloadedMembers--; - if (unloadedMembers < 0) - unloadedMembers = 0; - if (unloadedCapacity < 0) - unloadedCapacity = 0; - if (unloadedStress < 0) - unloadedStress = 0; - } - - public void add(KineticTileEntity te) { - if (members.containsKey(te)) - return; - if (te.isSource()) - sources.put(te, te.calculateAddedStressCapacity()); - members.put(te, te.calculateStressApplied()); - updateFromNetwork(te); - te.networkDirty = true; - } - - public void updateCapacityFor(KineticTileEntity te, float capacity) { - sources.put(te, capacity); - updateCapacity(); - } - - public void updateStressFor(KineticTileEntity te, float stress) { - members.put(te, stress); - updateStress(); - } - - public void remove(KineticTileEntity te) { - if (!members.containsKey(te)) - return; - if (te.isSource()) - sources.remove(te); - members.remove(te); - te.updateFromNetwork(0, 0, 0); - - if (members.isEmpty()) { - TorquePropagator.networks.get(te.getWorld()) - .remove(this.id); - return; - } - - members.keySet() - .stream() - .findFirst() - .map(member -> member.networkDirty = true); - } - - public void sync() { - for (KineticTileEntity te : members.keySet()) - updateFromNetwork(te); - } - - private void updateFromNetwork(KineticTileEntity te) { - boolean wasOverStressed = te.isOverStressed(); - te.updateFromNetwork(currentCapacity, currentStress, getSize()); - if (!wasOverStressed && te.isOverStressed() && te.getTheoreticalSpeed() != 0) { - AllTriggers.triggerForNearbyPlayers(AllTriggers.OVERSTRESSED, te.getWorld(), te.getPos(), 4); - if (containsFlywheel) - AllTriggers.triggerForNearbyPlayers(AllTriggers.OVERSTRESS_FLYWHEEL, te.getWorld(), te.getPos(), 4); - } - } - - public void updateCapacity() { - float newMaxStress = calculateCapacity(); - if (currentCapacity != newMaxStress) { - currentCapacity = newMaxStress; - sync(); - } - } - - public void updateStress() { - float newStress = calculateStress(); - if (currentStress != newStress) { - currentStress = newStress; - sync(); - } - } - - public void updateNetwork() { - float newStress = calculateStress(); - float newMaxStress = calculateCapacity(); - if (currentStress != newStress || currentCapacity != newMaxStress) { - currentStress = newStress; - currentCapacity = newMaxStress; - sync(); - } - } - - public float calculateCapacity() { - float presentCapacity = 0; - containsFlywheel = false; - for (Iterator iterator = sources.keySet() - .iterator(); iterator.hasNext();) { - KineticTileEntity te = iterator.next(); - if (te.getWorld() - .getTileEntity(te.getPos()) != te) { - iterator.remove(); - continue; - } - containsFlywheel |= te instanceof FlywheelTileEntity; - presentCapacity += getActualCapacityOf(te); - } - float newMaxStress = presentCapacity + unloadedCapacity; - return newMaxStress; - } - - public float calculateStress() { - float presentStress = 0; - for (Iterator iterator = members.keySet() - .iterator(); iterator.hasNext();) { - KineticTileEntity te = iterator.next(); - if (te.getWorld() - .getTileEntity(te.getPos()) != te) { - iterator.remove(); - continue; - } - presentStress += getActualStressOf(te); - } - float newStress = presentStress + unloadedStress; - return newStress; - } - - public float getActualCapacityOf(KineticTileEntity te) { - return sources.get(te) * getStressMultiplierForSpeed(te.getGeneratedSpeed()); - } - - public float getActualStressOf(KineticTileEntity te) { - return members.get(te) * getStressMultiplierForSpeed(te.getTheoreticalSpeed()); - } - - private static float getStressMultiplierForSpeed(float speed) { - return Math.abs(speed); - } - - public int getSize() { - return unloadedMembers + members.size(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/RotationPropagator.java b/src/main/java/com/simibubi/create/content/contraptions/RotationPropagator.java deleted file mode 100644 index faa8c2046..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/RotationPropagator.java +++ /dev/null @@ -1,441 +0,0 @@ -package com.simibubi.create.content.contraptions; - -import static net.minecraft.state.properties.BlockStateProperties.AXIS; - -import java.util.LinkedList; -import java.util.List; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; -import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerTileEntity; -import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.content.contraptions.relays.encased.DirectionalShaftHalvesTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock; -import com.simibubi.create.content.contraptions.relays.encased.SplitShaftTileEntity; -import com.simibubi.create.content.contraptions.relays.gearbox.GearboxTileEntity; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class RotationPropagator { - - private static final int MAX_FLICKER_SCORE = 128; - - /** - * Determines the change in rotation between two attached kinetic entities. For - * instance, an axis connection returns 1 while a 1-to-1 gear connection - * reverses the rotation and therefore returns -1. - * - * @param from - * @param to - * @return - */ - private static float getRotationSpeedModifier(KineticTileEntity from, KineticTileEntity to) { - final BlockState stateFrom = from.getBlockState(); - final BlockState stateTo = to.getBlockState(); - - Block fromBlock = stateFrom.getBlock(); - Block toBlock = stateTo.getBlock(); - if (!(fromBlock instanceof IRotate && toBlock instanceof IRotate)) - return 0; - - final IRotate definitionFrom = (IRotate) fromBlock; - final IRotate definitionTo = (IRotate) toBlock; - final BlockPos diff = to.getPos() - .subtract(from.getPos()); - final Direction direction = Direction.getFacingFromVector(diff.getX(), diff.getY(), diff.getZ()); - final World world = from.getWorld(); - - boolean alignedAxes = true; - for (Axis axis : Axis.values()) - if (axis != direction.getAxis()) - if (axis.getCoordinate(diff.getX(), diff.getY(), diff.getZ()) != 0) - alignedAxes = false; - - boolean connectedByAxis = - alignedAxes && definitionFrom.hasShaftTowards(world, from.getPos(), stateFrom, direction) - && definitionTo.hasShaftTowards(world, to.getPos(), stateTo, direction.getOpposite()); - - boolean connectedByGears = ICogWheel.isSmallCog(stateFrom) - && ICogWheel.isSmallCog(stateTo); - - float custom = from.propagateRotationTo(to, stateFrom, stateTo, diff, connectedByAxis, connectedByGears); - if (custom != 0) - return custom; - - // Axis <-> Axis - if (connectedByAxis) { - float axisModifier = getAxisModifier(to, direction.getOpposite()); - if (axisModifier != 0) - axisModifier = 1 / axisModifier; - return getAxisModifier(from, direction) * axisModifier; - } - - // Attached Encased Belts - if (fromBlock instanceof EncasedBeltBlock && toBlock instanceof EncasedBeltBlock) { - boolean connected = EncasedBeltBlock.areBlocksConnected(stateFrom, stateTo, direction); - return connected ? EncasedBeltBlock.getRotationSpeedModifier(from, to) : 0; - } - - // Large Gear <-> Large Gear - if (isLargeToLargeGear(stateFrom, stateTo, diff)) { - Axis sourceAxis = stateFrom.get(AXIS); - Axis targetAxis = stateTo.get(AXIS); - int sourceAxisDiff = sourceAxis.getCoordinate(diff.getX(), diff.getY(), diff.getZ()); - int targetAxisDiff = targetAxis.getCoordinate(diff.getX(), diff.getY(), diff.getZ()); - - return sourceAxisDiff > 0 ^ targetAxisDiff > 0 ? -1 : 1; - } - - // Gear <-> Large Gear - if (ICogWheel.isLargeCog(stateFrom) && ICogWheel.isSmallCog(stateTo)) - if (isLargeToSmallCog(stateFrom, stateTo, definitionTo, diff)) - return -2f; - if (ICogWheel.isLargeCog(stateTo) && ICogWheel.isSmallCog(stateFrom)) - if (isLargeToSmallCog(stateTo, stateFrom, definitionFrom, diff)) - return -.5f; - - // Gear <-> Gear - if (connectedByGears) { - if (diff.manhattanDistance(BlockPos.ZERO) != 1) - return 0; - if (ICogWheel.isLargeCog(stateTo)) - return 0; - if (direction.getAxis() == definitionFrom.getRotationAxis(stateFrom)) - return 0; - if (definitionFrom.getRotationAxis(stateFrom) == definitionTo.getRotationAxis(stateTo)) - return -1; - } - - return 0; - } - - private static float getConveyedSpeed(KineticTileEntity from, KineticTileEntity to) { - final BlockState stateFrom = from.getBlockState(); - final BlockState stateTo = to.getBlockState(); - - // Rotation Speed Controller <-> Large Gear - if (isLargeCogToSpeedController(stateFrom, stateTo, to.getPos() - .subtract(from.getPos()))) - return SpeedControllerTileEntity.getConveyedSpeed(from, to, true); - if (isLargeCogToSpeedController(stateTo, stateFrom, from.getPos() - .subtract(to.getPos()))) - return SpeedControllerTileEntity.getConveyedSpeed(to, from, false); - - float rotationSpeedModifier = getRotationSpeedModifier(from, to); - return from.getTheoreticalSpeed() * rotationSpeedModifier; - } - - private static boolean isLargeToLargeGear(BlockState from, BlockState to, BlockPos diff) { - if (!ICogWheel.isLargeCog(from) || !ICogWheel.isLargeCog(to)) - return false; - Axis fromAxis = from.get(AXIS); - Axis toAxis = to.get(AXIS); - if (fromAxis == toAxis) - return false; - for (Axis axis : Axis.values()) { - int axisDiff = axis.getCoordinate(diff.getX(), diff.getY(), diff.getZ()); - if (axis == fromAxis || axis == toAxis) { - if (axisDiff == 0) - return false; - - } else if (axisDiff != 0) - return false; - } - return true; - } - - private static float getAxisModifier(KineticTileEntity te, Direction direction) { - if (!te.hasSource() || !(te instanceof DirectionalShaftHalvesTileEntity)) - return 1; - Direction source = ((DirectionalShaftHalvesTileEntity) te).getSourceFacing(); - - if (te instanceof GearboxTileEntity) - return direction.getAxis() == source.getAxis() ? direction == source ? 1 : -1 - : direction.getAxisDirection() == source.getAxisDirection() ? -1 : 1; - - if (te instanceof SplitShaftTileEntity) - return ((SplitShaftTileEntity) te).getRotationSpeedModifier(direction); - - return 1; - } - - private static boolean isLargeToSmallCog(BlockState from, BlockState to, IRotate defTo, BlockPos diff) { - Axis axisFrom = from.get(AXIS); - if (axisFrom != defTo.getRotationAxis(to)) - return false; - if (axisFrom.getCoordinate(diff.getX(), diff.getY(), diff.getZ()) != 0) - return false; - for (Axis axis : Axis.values()) { - if (axis == axisFrom) - continue; - if (Math.abs(axis.getCoordinate(diff.getX(), diff.getY(), diff.getZ())) != 1) - return false; - } - return true; - } - - private static boolean isLargeCogToSpeedController(BlockState from, BlockState to, BlockPos diff) { - if (!ICogWheel.isLargeCog(from) || !AllBlocks.ROTATION_SPEED_CONTROLLER.has(to)) - return false; - if (!diff.equals(BlockPos.ZERO.down())) - return false; - Axis axis = from.get(CogWheelBlock.AXIS); - if (axis.isVertical()) - return false; - if (to.get(SpeedControllerBlock.HORIZONTAL_AXIS) == axis) - return false; - return true; - } - - /** - * Insert the added position to the kinetic network. - * - * @param worldIn - * @param pos - */ - public static void handleAdded(World worldIn, BlockPos pos, KineticTileEntity addedTE) { - if (worldIn.isRemote) - return; - if (!worldIn.isBlockPresent(pos)) - return; - propagateNewSource(addedTE); - } - - /** - * Search for sourceless networks attached to the given entity and update them. - * - * @param currentTE - */ - private static void propagateNewSource(KineticTileEntity currentTE) { - BlockPos pos = currentTE.getPos(); - World world = currentTE.getWorld(); - - for (KineticTileEntity neighbourTE : getConnectedNeighbours(currentTE)) { - float speedOfCurrent = currentTE.getTheoreticalSpeed(); - float speedOfNeighbour = neighbourTE.getTheoreticalSpeed(); - float newSpeed = getConveyedSpeed(currentTE, neighbourTE); - float oppositeSpeed = getConveyedSpeed(neighbourTE, currentTE); - - if (newSpeed == 0 && oppositeSpeed == 0) - continue; - - boolean incompatible = - Math.signum(newSpeed) != Math.signum(speedOfNeighbour) && (newSpeed != 0 && speedOfNeighbour != 0); - - boolean tooFast = Math.abs(newSpeed) > AllConfigs.SERVER.kinetics.maxRotationSpeed.get(); - boolean speedChangedTooOften = currentTE.getFlickerScore() > MAX_FLICKER_SCORE; - if (tooFast || speedChangedTooOften) { - world.destroyBlock(pos, true); - return; - } - - // Opposite directions - if (incompatible) { - world.destroyBlock(pos, true); - return; - - // Same direction: overpower the slower speed - } else { - - // Neighbour faster, overpower the incoming tree - if (Math.abs(oppositeSpeed) > Math.abs(speedOfCurrent)) { - float prevSpeed = currentTE.getSpeed(); - currentTE.setSource(neighbourTE.getPos()); - currentTE.setSpeed(getConveyedSpeed(neighbourTE, currentTE)); - currentTE.onSpeedChanged(prevSpeed); - currentTE.sendData(); - - propagateNewSource(currentTE); - return; - } - - // Current faster, overpower the neighbours' tree - if (Math.abs(newSpeed) >= Math.abs(speedOfNeighbour)) { - - // Do not overpower you own network -> cycle - if (!currentTE.hasNetwork() || currentTE.network.equals(neighbourTE.network)) { - float epsilon = Math.abs(speedOfNeighbour) / 256f / 256f; - if (Math.abs(newSpeed) > Math.abs(speedOfNeighbour) + epsilon) - world.destroyBlock(pos, true); - continue; - } - - if (currentTE.hasSource() && currentTE.source.equals(neighbourTE.getPos())) - currentTE.removeSource(); - - float prevSpeed = neighbourTE.getSpeed(); - neighbourTE.setSource(currentTE.getPos()); - neighbourTE.setSpeed(getConveyedSpeed(currentTE, neighbourTE)); - neighbourTE.onSpeedChanged(prevSpeed); - neighbourTE.sendData(); - propagateNewSource(neighbourTE); - continue; - } - } - - if (neighbourTE.getTheoreticalSpeed() == newSpeed) - continue; - - float prevSpeed = neighbourTE.getSpeed(); - neighbourTE.setSpeed(newSpeed); - neighbourTE.setSource(currentTE.getPos()); - neighbourTE.onSpeedChanged(prevSpeed); - neighbourTE.sendData(); - propagateNewSource(neighbourTE); - - } - } - - /** - * Remove the given entity from the network. - * - * @param worldIn - * @param pos - * @param removedTE - */ - public static void handleRemoved(World worldIn, BlockPos pos, KineticTileEntity removedTE) { - if (worldIn.isRemote) - return; - if (removedTE == null) - return; - if (removedTE.getTheoreticalSpeed() == 0) - return; - - for (BlockPos neighbourPos : getPotentialNeighbourLocations(removedTE)) { - BlockState neighbourState = worldIn.getBlockState(neighbourPos); - if (!(neighbourState.getBlock() instanceof IRotate)) - continue; - TileEntity tileEntity = worldIn.getTileEntity(neighbourPos); - if (!(tileEntity instanceof KineticTileEntity)) - continue; - - final KineticTileEntity neighbourTE = (KineticTileEntity) tileEntity; - if (!neighbourTE.hasSource() || !neighbourTE.source.equals(pos)) - continue; - - propagateMissingSource(neighbourTE); - } - - } - - /** - * Clear the entire subnetwork depending on the given entity and find a new - * source - * - * @param updateTE - */ - private static void propagateMissingSource(KineticTileEntity updateTE) { - final World world = updateTE.getWorld(); - - List potentialNewSources = new LinkedList<>(); - List frontier = new LinkedList<>(); - frontier.add(updateTE.getPos()); - BlockPos missingSource = updateTE.hasSource() ? updateTE.source : null; - - while (!frontier.isEmpty()) { - final BlockPos pos = frontier.remove(0); - TileEntity tileEntity = world.getTileEntity(pos); - if (!(tileEntity instanceof KineticTileEntity)) - continue; - final KineticTileEntity currentTE = (KineticTileEntity) tileEntity; - - currentTE.removeSource(); - currentTE.sendData(); - - for (KineticTileEntity neighbourTE : getConnectedNeighbours(currentTE)) { - if (neighbourTE.getPos() - .equals(missingSource)) - continue; - if (!neighbourTE.hasSource()) - continue; - - if (!neighbourTE.source.equals(pos)) { - potentialNewSources.add(neighbourTE); - continue; - } - - if (neighbourTE.isSource()) - potentialNewSources.add(neighbourTE); - - frontier.add(neighbourTE.getPos()); - } - } - - for (KineticTileEntity newSource : potentialNewSources) { - if (newSource.hasSource() || newSource.isSource()) { - propagateNewSource(newSource); - return; - } - } - } - - private static KineticTileEntity findConnectedNeighbour(KineticTileEntity currentTE, BlockPos neighbourPos) { - BlockState neighbourState = currentTE.getWorld() - .getBlockState(neighbourPos); - if (!(neighbourState.getBlock() instanceof IRotate)) - return null; - if (!neighbourState.hasTileEntity()) - return null; - TileEntity neighbourTE = currentTE.getWorld() - .getTileEntity(neighbourPos); - if (!(neighbourTE instanceof KineticTileEntity)) - return null; - KineticTileEntity neighbourKTE = (KineticTileEntity) neighbourTE; - if (!(neighbourKTE.getBlockState() - .getBlock() instanceof IRotate)) - return null; - if (!isConnected(currentTE, neighbourKTE) && !isConnected(neighbourKTE, currentTE)) - return null; - return neighbourKTE; - } - - public static boolean isConnected(KineticTileEntity from, KineticTileEntity to) { - final BlockState stateFrom = from.getBlockState(); - final BlockState stateTo = to.getBlockState(); - return isLargeCogToSpeedController(stateFrom, stateTo, to.getPos() - .subtract(from.getPos())) || getRotationSpeedModifier(from, to) != 0 - || from.isCustomConnection(to, stateFrom, stateTo); - } - - private static List getConnectedNeighbours(KineticTileEntity te) { - List neighbours = new LinkedList<>(); - for (BlockPos neighbourPos : getPotentialNeighbourLocations(te)) { - final KineticTileEntity neighbourTE = findConnectedNeighbour(te, neighbourPos); - if (neighbourTE == null) - continue; - - neighbours.add(neighbourTE); - } - return neighbours; - } - - private static List getPotentialNeighbourLocations(KineticTileEntity te) { - List neighbours = new LinkedList<>(); - - if (!te.getWorld() - .isAreaLoaded(te.getPos(), 1)) - return neighbours; - - for (Direction facing : Iterate.directions) - neighbours.add(te.getPos() - .offset(facing)); - - BlockState blockState = te.getBlockState(); - if (!(blockState.getBlock() instanceof IRotate)) - return neighbours; - IRotate block = (IRotate) blockState.getBlock(); - return te.addPropagationLocations(block, blockState, neighbours); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/TorquePropagator.java b/src/main/java/com/simibubi/create/content/contraptions/TorquePropagator.java deleted file mode 100644 index 3d169a6ef..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/TorquePropagator.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.content.contraptions; - -import java.util.HashMap; -import java.util.Map; - -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.utility.WorldHelper; - -import net.minecraft.world.IWorld; - -public class TorquePropagator { - - static Map> networks = new HashMap<>(); - - public void onLoadWorld(IWorld world) { - networks.put(world, new HashMap<>()); - Create.LOGGER.debug("Prepared Kinetic Network Space for " + WorldHelper.getDimensionID(world)); - } - - public void onUnloadWorld(IWorld world) { - networks.remove(world); - Create.LOGGER.debug("Removed Kinetic Network Space for " + WorldHelper.getDimensionID(world)); - } - - public KineticNetwork getOrCreateNetworkFor(KineticTileEntity te) { - Long id = te.network; - KineticNetwork network; - Map map = networks.get(te.getWorld()); - if (id == null) - return null; - - if (!map.containsKey(id)) { - network = new KineticNetwork(); - network.id = te.network; - map.put(id, network); - } - network = map.get(id); - return network; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java deleted file mode 100644 index 592db77bf..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/BackHalfShaftInstance.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; - -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; - -public class BackHalfShaftInstance extends HalfShaftInstance { - public BackHalfShaftInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Direction getShaftDirection() { - return tile.getBlockState().get(BlockStateProperties.FACING).getOpposite(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/CasingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/CasingBlock.java deleted file mode 100644 index 75fb9c3d3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/CasingBlock.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.simibubi.create.content.contraptions.wrench.IWrenchable; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemUseContext; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraftforge.common.ToolType; - -public class CasingBlock extends Block implements IWrenchable { - - public CasingBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - return ActionResultType.FAIL; - } - - @Override - public ToolType getHarvestTool(BlockState state) { - return null; - } - - @Override - public boolean canHarvestBlock(BlockState state, IBlockReader world, BlockPos pos, PlayerEntity player) { - for (ToolType toolType : player.getHeldItemMainhand().getToolTypes()) { - if (isToolEffective(state, toolType)) - return true; - } - return super.canHarvestBlock(state, world, pos, player); - } - - @Override - public boolean isToolEffective(BlockState state, ToolType tool) { - return tool == ToolType.AXE || tool == ToolType.PICKAXE; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalAxisKineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalAxisKineticBlock.java deleted file mode 100644 index e3e4bc013..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalAxisKineticBlock.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.simibubi.create.foundation.utility.DirectionHelper; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public abstract class DirectionalAxisKineticBlock extends DirectionalKineticBlock { - - public static final BooleanProperty AXIS_ALONG_FIRST_COORDINATE = BooleanProperty.create("axis_along_first"); - - public DirectionalAxisKineticBlock(Properties properties) { - super(properties); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(AXIS_ALONG_FIRST_COORDINATE); - super.fillStateContainer(builder); - } - - protected Direction getFacingForPlacement(BlockItemUseContext context) { - Direction facing = context.getNearestLookingDirection() - .getOpposite(); - if (context.getPlayer() != null && context.getPlayer() - .isSneaking()) - facing = facing.getOpposite(); - return facing; - } - - protected boolean getAxisAlignmentForPlacement(BlockItemUseContext context) { - return context.getPlacementHorizontalFacing() - .getAxis() == Axis.X; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction facing = getFacingForPlacement(context); - BlockPos pos = context.getPos(); - World world = context.getWorld(); - boolean alongFirst = false; - Axis faceAxis = facing.getAxis(); - - if (faceAxis.isHorizontal()) { - alongFirst = faceAxis == Axis.Z; - Direction positivePerpendicular = DirectionHelper.getPositivePerpendicular(faceAxis); - - boolean shaftAbove = prefersConnectionTo(world, pos, Direction.UP, true); - boolean shaftBelow = prefersConnectionTo(world, pos, Direction.DOWN, true); - boolean preferLeft = prefersConnectionTo(world, pos, positivePerpendicular, false); - boolean preferRight = prefersConnectionTo(world, pos, positivePerpendicular.getOpposite(), false); - - if (shaftAbove || shaftBelow || preferLeft || preferRight) - alongFirst = faceAxis == Axis.X; - } - - if (faceAxis.isVertical()) { - alongFirst = getAxisAlignmentForPlacement(context); - Direction prefferedSide = null; - - for (Direction side : Iterate.horizontalDirections) { - if (!prefersConnectionTo(world, pos, side, true) - && !prefersConnectionTo(world, pos, side.rotateY(), false)) - continue; - if (prefferedSide != null && prefferedSide.getAxis() != side.getAxis()) { - prefferedSide = null; - break; - } - prefferedSide = side; - } - - if (prefferedSide != null) - alongFirst = prefferedSide.getAxis() == Axis.X; - } - - return this.getDefaultState() - .with(FACING, facing) - .with(AXIS_ALONG_FIRST_COORDINATE, alongFirst); - } - - protected boolean prefersConnectionTo(IWorldReader reader, BlockPos pos, Direction facing, boolean shaftAxis) { - if (!shaftAxis) - return false; - BlockPos neighbourPos = pos.offset(facing); - BlockState blockState = reader.getBlockState(neighbourPos); - Block block = blockState.getBlock(); - return block instanceof IRotate - && ((IRotate) block).hasShaftTowards(reader, neighbourPos, blockState, facing.getOpposite()); - } - - @Override - public Axis getRotationAxis(BlockState state) { - Axis pistonAxis = state.get(FACING) - .getAxis(); - boolean alongFirst = state.get(AXIS_ALONG_FIRST_COORDINATE); - - if (pistonAxis == Axis.X) - return alongFirst ? Axis.Y : Axis.Z; - if (pistonAxis == Axis.Y) - return alongFirst ? Axis.X : Axis.Z; - if (pistonAxis == Axis.Z) - return alongFirst ? Axis.X : Axis.Y; - - throw new IllegalStateException("Unknown axis??"); - } - - @Override - public BlockState rotate(BlockState state, Rotation rot) { - if (rot.ordinal() % 2 == 1) - state = state.cycle(AXIS_ALONG_FIRST_COORDINATE); - return super.rotate(state, rot); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == getRotationAxis(state); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalKineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalKineticBlock.java deleted file mode 100644 index d6b43ef65..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/DirectionalKineticBlock.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.DirectionProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; - -public abstract class DirectionalKineticBlock extends KineticBlock { - - public static final DirectionProperty FACING = BlockStateProperties.FACING; - - public DirectionalKineticBlock(Properties properties) { - super(properties); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(FACING); - super.fillStateContainer(builder); - } - - public Direction getPreferredFacing(BlockItemUseContext context) { - Direction prefferedSide = null; - for (Direction side : Iterate.directions) { - BlockState blockState = context.getWorld() - .getBlockState(context.getPos() - .offset(side)); - if (blockState.getBlock() instanceof IRotate) { - if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos() - .offset(side), blockState, side.getOpposite())) - if (prefferedSide != null && prefferedSide.getAxis() != side.getAxis()) { - prefferedSide = null; - break; - } else { - prefferedSide = side; - } - } - } - return prefferedSide; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction preferred = getPreferredFacing(context); - if (preferred == null || (context.getPlayer() != null && context.getPlayer() - .isSneaking())) { - Direction nearestLookingDirection = context.getNearestLookingDirection(); - return getDefaultState().with(FACING, context.getPlayer() != null && context.getPlayer() - .isSneaking() ? nearestLookingDirection : nearestLookingDirection.getOpposite()); - } - return getDefaultState().with(FACING, preferred.getOpposite()); - } - - @Override - public BlockState rotate(BlockState state, Rotation rot) { - return state.with(FACING, rot.rotate(state.get(FACING))); - } - - @Override - public BlockState mirror(BlockState state, Mirror mirrorIn) { - return state.rotate(mirrorIn.toRotation(state.get(FACING))); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/GeneratingKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/GeneratingKineticTileEntity.java deleted file mode 100644 index 916b8fe27..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/GeneratingKineticTileEntity.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import java.util.List; - -import com.simibubi.create.content.contraptions.KineticNetwork; -import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; - -public abstract class GeneratingKineticTileEntity extends KineticTileEntity { - - public boolean reActivateSource; - - public GeneratingKineticTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - protected void notifyStressCapacityChange(float capacity) { - getOrCreateNetwork().updateCapacityFor(this, capacity); - } - - @Override - public void removeSource() { - if (hasSource() && isSource()) - reActivateSource = true; - super.removeSource(); - } - - @Override - public void setSource(BlockPos source) { - super.setSource(source); - TileEntity tileEntity = world.getTileEntity(source); - if (!(tileEntity instanceof KineticTileEntity)) - return; - KineticTileEntity sourceTe = (KineticTileEntity) tileEntity; - if (reActivateSource && Math.abs(sourceTe.getSpeed()) >= Math.abs(getGeneratedSpeed())) - reActivateSource = false; - } - - @Override - public void tick() { - super.tick(); - if (reActivateSource) { - updateGeneratedRotation(); - reActivateSource = false; - } - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - boolean added = super.addToGoggleTooltip(tooltip, isPlayerSneaking); - - float stressBase = calculateAddedStressCapacity(); - if (stressBase != 0 && IRotate.StressImpact.isEnabled()) { - tooltip.add(componentSpacing.copy().append(Lang.translate("gui.goggles.generator_stats"))); - tooltip.add(componentSpacing.copy().append(Lang.translate("tooltip.capacityProvided").formatted(TextFormatting.GRAY))); - - float speed = getTheoreticalSpeed(); - if (speed != getGeneratedSpeed() && speed != 0) - stressBase *= getGeneratedSpeed() / speed; - - speed = Math.abs(speed); - float stressTotal = stressBase * speed; - - tooltip.add( - componentSpacing.copy() - .append(new StringTextComponent(" " + IHaveGoggleInformation.format(stressTotal)) - .append(Lang.translate("generic.unit.stress")) - .formatted(TextFormatting.AQUA)) - .append(" ") - .append(Lang.translate("gui.goggles.at_current_speed").formatted(TextFormatting.DARK_GRAY))); - - added = true; - } - - return added; - } - - public void updateGeneratedRotation() { - float speed = getGeneratedSpeed(); - float prevSpeed = this.speed; - - if (world.isRemote) - return; - - if (prevSpeed != speed) { - if (!hasSource()) { - SpeedLevel levelBefore = SpeedLevel.of(this.speed); - SpeedLevel levelafter = SpeedLevel.of(speed); - if (levelBefore != levelafter) - effects.queueRotationIndicators(); - } - - applyNewSpeed(prevSpeed, speed); - } - - if (hasNetwork() && speed != 0) { - KineticNetwork network = getOrCreateNetwork(); - notifyStressCapacityChange(calculateAddedStressCapacity()); - getOrCreateNetwork().updateStressFor(this, calculateStressApplied()); - network.updateStress(); - } - - onSpeedChanged(prevSpeed); - sendData(); - } - - public void applyNewSpeed(float prevSpeed, float speed) { - - // Speed changed to 0 - if (speed == 0) { - if (hasSource()) { - notifyStressCapacityChange(0); - getOrCreateNetwork().updateStressFor(this, calculateStressApplied()); - return; - } - detachKinetics(); - setSpeed(0); - setNetwork(null); - return; - } - - // Now turning - create a new Network - if (prevSpeed == 0) { - setSpeed(speed); - setNetwork(createNetworkId()); - attachKinetics(); - return; - } - - // Change speed when overpowered by other generator - if (hasSource()) { - - // Staying below Overpowered speed - if (Math.abs(prevSpeed) >= Math.abs(speed)) { - if (Math.signum(prevSpeed) != Math.signum(speed)) - world.destroyBlock(pos, true); - return; - } - - // Faster than attached network -> become the new source - detachKinetics(); - setSpeed(speed); - source = null; - setNetwork(createNetworkId()); - attachKinetics(); - return; - } - - // Reapply source - detachKinetics(); - setSpeed(speed); - attachKinetics(); - } - - public Long createNetworkId() { - return pos.toLong(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java deleted file mode 100644 index cd06bf1a4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/HalfShaftInstance.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; - -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; - -public class HalfShaftInstance extends SingleRotatingInstance { - public HalfShaftInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Instancer getModel() { - Direction dir = getShaftDirection(); - return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, dir); - } - - protected Direction getShaftDirection() { - return blockState.get(BlockStateProperties.FACING); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalAxisKineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalAxisKineticBlock.java deleted file mode 100644 index 659d87bc6..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalAxisKineticBlock.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorldReader; - -public abstract class HorizontalAxisKineticBlock extends KineticBlock { - - public static final Property HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS; - - public HorizontalAxisKineticBlock(Properties properties) { - super(properties); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(HORIZONTAL_AXIS); - super.fillStateContainer(builder); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Axis preferredAxis = getPreferredHorizontalAxis(context); - if (preferredAxis != null) - return this.getDefaultState().with(HORIZONTAL_AXIS, preferredAxis); - return this.getDefaultState().with(HORIZONTAL_AXIS, context.getPlacementHorizontalFacing().rotateY().getAxis()); - } - - public static Axis getPreferredHorizontalAxis(BlockItemUseContext context) { - Direction prefferedSide = null; - for (Direction side : Iterate.horizontalDirections) { - BlockState blockState = context.getWorld().getBlockState(context.getPos().offset(side)); - if (blockState.getBlock() instanceof IRotate) { - if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos().offset(side), - blockState, side.getOpposite())) - if (prefferedSide != null && prefferedSide.getAxis() != side.getAxis()) { - prefferedSide = null; - break; - } else { - prefferedSide = side; - } - } - } - return prefferedSide == null ? null : prefferedSide.getAxis(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(HORIZONTAL_AXIS); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(HORIZONTAL_AXIS); - } - - @Override - public BlockState rotate(BlockState state, Rotation rot) { - Axis axis = state.get(HORIZONTAL_AXIS); - return state.with(HORIZONTAL_AXIS, - rot.rotate(Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis)).getAxis()); - } - - @Override - public BlockState mirror(BlockState state, Mirror mirrorIn) { - return state; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalHalfShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalHalfShaftInstance.java deleted file mode 100644 index c7298995f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalHalfShaftInstance.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; - -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; - -public class HorizontalHalfShaftInstance extends HalfShaftInstance { - - public HorizontalHalfShaftInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Direction getShaftDirection() { - return blockState.get(BlockStateProperties.HORIZONTAL_FACING).getOpposite(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalKineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalKineticBlock.java deleted file mode 100644 index e763f9f03..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/HorizontalKineticBlock.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; - -public abstract class HorizontalKineticBlock extends KineticBlock { - - public static final Property HORIZONTAL_FACING = BlockStateProperties.HORIZONTAL_FACING; - - public HorizontalKineticBlock(Properties properties) { - super(properties); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(HORIZONTAL_FACING); - super.fillStateContainer(builder); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - return this.getDefaultState() - .with(HORIZONTAL_FACING, context.getPlacementHorizontalFacing() - .getOpposite()); - } - - public Direction getPreferredHorizontalFacing(BlockItemUseContext context) { - Direction prefferedSide = null; - for (Direction side : Iterate.horizontalDirections) { - BlockState blockState = context.getWorld() - .getBlockState(context.getPos() - .offset(side)); - if (blockState.getBlock() instanceof IRotate) { - if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos() - .offset(side), blockState, side.getOpposite())) - if (prefferedSide != null && prefferedSide.getAxis() != side.getAxis()) { - prefferedSide = null; - break; - } else { - prefferedSide = side; - } - } - } - return prefferedSide; - } - - @Override - public BlockState rotate(BlockState state, Rotation rot) { - return state.with(HORIZONTAL_FACING, rot.rotate(state.get(HORIZONTAL_FACING))); - } - - @Override - public BlockState mirror(BlockState state, Mirror mirrorIn) { - return state.rotate(mirrorIn.toRotation(state.get(HORIZONTAL_FACING))); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/IRotate.java b/src/main/java/com/simibubi/create/content/contraptions/base/IRotate.java deleted file mode 100644 index 958290270..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/IRotate.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.item.ItemDescription; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.IWorldReader; - -public interface IRotate extends IWrenchable { - - enum SpeedLevel { - NONE, - MEDIUM, - FAST; - - public TextFormatting getTextColor() { - return this == NONE ? TextFormatting.GREEN - : this == MEDIUM ? TextFormatting.AQUA : TextFormatting.LIGHT_PURPLE; - } - - public int getColor() { - return this == NONE ? 0x22FF22 : this == MEDIUM ? 0x0084FF : 0xFF55FF; - } - - public int getParticleSpeed() { - return this == NONE ? 10 : this == MEDIUM ? 20 : 30; - } - - public static SpeedLevel of(float speed) { - speed = Math.abs(speed); - - if (speed >= AllConfigs.SERVER.kinetics.fastSpeed.get()) { - return FAST; - } else if (speed >= AllConfigs.SERVER.kinetics.mediumSpeed.get()) { - return MEDIUM; - } - return NONE; - } - - public float getSpeedValue() { - switch (this) { - case FAST: - return AllConfigs.SERVER.kinetics.fastSpeed.get().floatValue(); - case MEDIUM: - return AllConfigs.SERVER.kinetics.mediumSpeed.get().floatValue(); - case NONE: - default: - return 0; - } - } - - public static ITextComponent getFormattedSpeedText(float speed, boolean overstressed){ - SpeedLevel speedLevel = of(speed); - - IFormattableTextComponent level = new StringTextComponent(ItemDescription.makeProgressBar(3, speedLevel.ordinal())); - - if (speedLevel == SpeedLevel.MEDIUM) - level.append(Lang.translate("tooltip.speedRequirement.medium")); - if (speedLevel == SpeedLevel.FAST) - level.append(Lang.translate("tooltip.speedRequirement.high")); - - level.append(" (" + IHaveGoggleInformation.format(Math.abs(speed))).append(Lang.translate("generic.unit.rpm")).append(") "); - - if (overstressed) - level.formatted(TextFormatting.DARK_GRAY, TextFormatting.STRIKETHROUGH); - else - level.formatted(speedLevel.getTextColor()); - - return level; - } - - } - - enum StressImpact { - LOW, - MEDIUM, - HIGH, - OVERSTRESSED; - - public TextFormatting getAbsoluteColor() { - return this == LOW ? TextFormatting.YELLOW : this == MEDIUM ? TextFormatting.GOLD : TextFormatting.RED; - } - - public TextFormatting getRelativeColor() { - return this == LOW ? TextFormatting.GREEN : this == MEDIUM ? TextFormatting.YELLOW : this == HIGH ? TextFormatting.GOLD : TextFormatting.RED; - } - - public static StressImpact of(double stressPercent){ - if (stressPercent > 1) return StressImpact.OVERSTRESSED; - else if (stressPercent > .75d) return StressImpact.HIGH; - else if (stressPercent > .5d) return StressImpact.MEDIUM; - else return StressImpact.LOW; - } - - public static boolean isEnabled() { - return !AllConfigs.SERVER.kinetics.disableStress.get(); - } - - public static ITextComponent getFormattedStressText(double stressPercent){ - StressImpact stressLevel = of(stressPercent); - TextFormatting color = stressLevel.getRelativeColor(); - - IFormattableTextComponent level = new StringTextComponent(ItemDescription.makeProgressBar(3, Math.min(stressLevel.ordinal(), 2))); - level.append(Lang.translate("tooltip.stressImpact." + Lang.asId(stressLevel.name()))); - - level.append(String.format(" (%s%%) ", (int) (stressPercent * 100))); - - return level.formatted(color); - } - } - - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face); - - public Axis getRotationAxis(BlockState state); - - public default SpeedLevel getMinimumRequiredSpeedLevel() { - return SpeedLevel.NONE; - } - - public default boolean hideStressImpact() { - return false; - } - - public default boolean showCapacityWithAnnotation() { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticBlock.java deleted file mode 100644 index 864737fae..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticBlock.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.simibubi.create.foundation.item.ItemDescription.Palette; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraftforge.common.ToolType; - -public abstract class KineticBlock extends Block implements IRotate { - - protected static final Palette color = Palette.Red; - - public KineticBlock(Properties properties) { - super(properties); - } - - @Override - public ToolType getHarvestTool(BlockState state) { - return null; - } - - @Override - public boolean canHarvestBlock(BlockState state, IBlockReader world, BlockPos pos, PlayerEntity player) { - for (ToolType toolType : player.getHeldItemMainhand() - .getToolTypes()) { - if (isToolEffective(state, toolType)) - return true; - } - return super.canHarvestBlock(state, world, pos, player); - } - - @Override - public boolean isToolEffective(BlockState state, ToolType tool) { - return tool == ToolType.AXE || tool == ToolType.PICKAXE; - } - - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - // onBlockAdded is useless for init, as sometimes the TE gets re-instantiated - - // however, if a block change occurs that does not change kinetic connections, - // we can prevent a major re-propagation here - - TileEntity tileEntity = worldIn.getTileEntity(pos); - if (tileEntity instanceof KineticTileEntity) { - KineticTileEntity kineticTileEntity = (KineticTileEntity) tileEntity; - kineticTileEntity.preventSpeedUpdate = 0; - - if (oldState.getBlock() != state.getBlock()) - return; - if (state.hasTileEntity() != oldState.hasTileEntity()) - return; - if (!areStatesKineticallyEquivalent(oldState, state)) - return; - - kineticTileEntity.preventSpeedUpdate = 2; - } - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return false; - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) { - return getRotationAxis(newState) == getRotationAxis(oldState); - } - - @Override - public abstract TileEntity createTileEntity(BlockState state, IBlockReader world); - - @Override - public void updateDiagonalNeighbors(BlockState stateIn, IWorld worldIn, BlockPos pos, int flags, int count) { - if (worldIn.isRemote()) - return; - - TileEntity tileEntity = worldIn.getTileEntity(pos); - if (!(tileEntity instanceof KineticTileEntity)) - return; - KineticTileEntity kte = (KineticTileEntity) tileEntity; - - if (kte.preventSpeedUpdate > 0) { - kte.preventSpeedUpdate--; - return; - } - - // Remove previous information when block is added - kte.warnOfMovement(); - kte.clearKineticInformation(); - kte.updateSpeed = true; - } - - @Override - public void onBlockPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { - if (worldIn.isRemote) - return; - - TileEntity tileEntity = worldIn.getTileEntity(pos); - if (!(tileEntity instanceof KineticTileEntity)) - return; - - KineticTileEntity kte = (KineticTileEntity) tileEntity; - kte.effects.queueRotationIndicators(); - } - - public float getParticleTargetRadius() { - return .65f; - } - - public float getParticleInitialRadius() { - return .75f; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticData.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticData.java deleted file mode 100644 index 6eb292670..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticData.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.gl.buffer.MappedBuffer; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.core.materials.BasicData; -import com.simibubi.create.foundation.utility.ColorHelper; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3f; - -public class KineticData extends BasicData { - private float x; - private float y; - private float z; - private float rotationalSpeed; - private float rotationOffset; - - protected KineticData(Instancer owner) { - super(owner); - } - - public KineticData setPosition(BlockPos pos) { - return setPosition(pos.getX(), pos.getY(), pos.getZ()); - } - - public KineticData setPosition(Vector3f pos) { - return setPosition(pos.getX(), pos.getY(), pos.getZ()); - } - - public KineticData setPosition(float x, float y, float z) { - this.x = x; - this.y = y; - this.z = z; - markDirty(); - return this; - } - - public KineticData nudge(float x, float y, float z) { - this.x += x; - this.y += y; - this.z += z; - markDirty(); - return this; - } - - public KineticData setColor(KineticTileEntity te) { - if (te.hasSource()) { - setColor(te.network); - }else { - setColor(0xFF, 0xFF, 0x00); - } - return this; - } - - public KineticData setColor(Long l) { - if (l != null) - return setColor(l.longValue()); - else { - setColor(0xFF, 0xFF, 0xFF); - return this; - } - } - - private KineticData setColor(long l) { - int color = ColorHelper.colorFromLong(l); - byte r = (byte) ((color >> 16) & 0xFF); - byte g = (byte) ((color >> 8) & 0xFF); - byte b = (byte) (color & 0xFF); - setColor(r, g, b); - - return this; - } - - public KineticData setRotationalSpeed(float rotationalSpeed) { - this.rotationalSpeed = rotationalSpeed; - return this; - } - - public KineticData setRotationOffset(float rotationOffset) { - this.rotationOffset = rotationOffset; - return this; - } - - @Override - public void write(MappedBuffer buf) { - super.write(buf); - - buf.putFloatArray(new float[]{ - x, - y, - z, - rotationalSpeed, - rotationOffset - }); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticEffectHandler.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticEffectHandler.java deleted file mode 100644 index 9e9d70c0b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticEffectHandler.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import java.util.Random; - -import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.particle.RotationIndicatorParticleData; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class KineticEffectHandler { - - int overStressedTime; - float overStressedEffect; - int particleSpawnCountdown; - KineticTileEntity kte; - - public KineticEffectHandler(KineticTileEntity kte) { - this.kte = kte; - } - - public void tick() { - World world = kte.getWorld(); - - if (world.isRemote) { - if (overStressedTime > 0) - if (--overStressedTime == 0) - if (kte.isOverStressed()) { - overStressedEffect = 1; - spawnEffect(ParticleTypes.SMOKE, 0.2f, 5); - } else { - overStressedEffect = -1; - spawnEffect(ParticleTypes.CLOUD, .075f, 2); - } - - if (overStressedEffect != 0) { - overStressedEffect -= overStressedEffect * .1f; - if (Math.abs(overStressedEffect) < 1 / 128f) - overStressedEffect = 0; - } - - } else if (particleSpawnCountdown > 0) { - if (--particleSpawnCountdown == 0) - spawnRotationIndicators(); - } - } - - public void queueRotationIndicators() { - particleSpawnCountdown = 2; - } - - public void spawnEffect(IParticleData particle, float maxMotion, int amount) { - World world = kte.getWorld(); - if (world == null) - return; - if (!world.isRemote) - return; - Random r = world.rand; - for (int i = 0; i < amount; i++) { - Vector3d motion = VecHelper.offsetRandomly(Vector3d.ZERO, r, maxMotion); - Vector3d position = VecHelper.getCenterOf(kte.getPos()); - world.addParticle(particle, position.x, position.y, position.z, motion.x, motion.y, motion.z); - } - } - - public void spawnRotationIndicators() { - float speed = kte.getSpeed(); - if (speed == 0) - return; - - BlockState state = kte.getBlockState(); - Block block = state.getBlock(); - if (!(block instanceof KineticBlock)) - return; - - KineticBlock kb = (KineticBlock) block; - float radius1 = kb.getParticleInitialRadius(); - float radius2 = kb.getParticleTargetRadius(); - - Axis axis = kb.getRotationAxis(state); - BlockPos pos = kte.getPos(); - World world = kte.getWorld(); - if (axis == null) - return; - if (world == null) - return; - - char axisChar = axis.name().charAt(0); - Vector3d vec = VecHelper.getCenterOf(pos); - SpeedLevel speedLevel = SpeedLevel.of(speed); - int color = speedLevel.getColor(); - int particleSpeed = speedLevel.getParticleSpeed(); - particleSpeed *= Math.signum(speed); - - if (world instanceof ServerWorld) { - AllTriggers.triggerForNearbyPlayers(AllTriggers.ROTATION, world, pos, 5); - RotationIndicatorParticleData particleData = - new RotationIndicatorParticleData(color, particleSpeed, radius1, radius2, 10, axisChar); - ((ServerWorld) world).spawnParticle(particleData, vec.x, vec.y, vec.z, 20, 0, 0, 0, 1); - } - } - - public void triggerOverStressedEffect() { - overStressedTime = overStressedTime == 0 ? 2 : 0; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java deleted file mode 100644 index ae2c21aca..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java +++ /dev/null @@ -1,597 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import static net.minecraft.util.text.TextFormatting.GOLD; -import static net.minecraft.util.text.TextFormatting.GRAY; - -import java.util.List; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.backend.instancing.IInstanceRendered; -import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.KineticNetwork; -import com.simibubi.create.content.contraptions.RotationPropagator; -import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.base.IRotate.StressImpact; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.content.contraptions.goggles.IHaveHoveringInformation; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.sound.SoundScapes; -import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.resources.I18n; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.ITickableTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; - -public abstract class KineticTileEntity extends SmartTileEntity - implements ITickableTileEntity, IHaveGoggleInformation, IHaveHoveringInformation, IInstanceRendered { - - public @Nullable Long network; - public @Nullable BlockPos source; - public boolean networkDirty; - public boolean updateSpeed; - public int preventSpeedUpdate; - - protected KineticEffectHandler effects; - protected float speed; - protected float capacity; - protected float stress; - protected boolean overStressed; - protected boolean wasMoved; - - private int flickerTally; - private int networkSize; - private int validationCountdown; - protected float lastStressApplied; - protected float lastCapacityProvided; - - public KineticTileEntity(TileEntityType typeIn) { - super(typeIn); - effects = new KineticEffectHandler(this); - updateSpeed = true; - } - - @Override - public void initialize() { - if (hasNetwork() && !world.isRemote) { - KineticNetwork network = getOrCreateNetwork(); - if (!network.initialized) - network.initFromTE(capacity, stress, networkSize); - network.addSilently(this, lastCapacityProvided, lastStressApplied); - } - - super.initialize(); - } - - @Override - public void tick() { - if (!world.isRemote && needsSpeedUpdate()) - attachKinetics(); - - super.tick(); - effects.tick(); - - if (world.isRemote) { - cachedBoundingBox = null; // cache the bounding box for every frame between ticks - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> this.tickAudio()); - return; - } - - if (validationCountdown-- <= 0) { - validationCountdown = AllConfigs.SERVER.kinetics.kineticValidationFrequency.get(); - validateKinetics(); - } - - if (getFlickerScore() > 0) - flickerTally = getFlickerScore() - 1; - - if (networkDirty) { - if (hasNetwork()) - getOrCreateNetwork().updateNetwork(); - networkDirty = false; - } - } - - private void validateKinetics() { - if (hasSource()) { - if (!hasNetwork()) { - removeSource(); - return; - } - - if (!world.isBlockPresent(source)) - return; - - TileEntity tileEntity = world.getTileEntity(source); - KineticTileEntity sourceTe = - tileEntity instanceof KineticTileEntity ? (KineticTileEntity) tileEntity : null; - if (sourceTe == null || sourceTe.speed == 0) { - removeSource(); - detachKinetics(); - return; - } - - return; - } - - if (speed != 0) { - if (getGeneratedSpeed() == 0) - speed = 0; - } - } - - public void updateFromNetwork(float maxStress, float currentStress, int networkSize) { - networkDirty = false; - this.capacity = maxStress; - this.stress = currentStress; - this.networkSize = networkSize; - boolean overStressed = maxStress < currentStress && StressImpact.isEnabled(); - - if (overStressed != this.overStressed) { - float prevSpeed = getSpeed(); - this.overStressed = overStressed; - onSpeedChanged(prevSpeed); - sendData(); - } - } - - public float calculateAddedStressCapacity() { - float capacity = (float) AllConfigs.SERVER.kinetics.stressValues.getCapacityOf(getStressConfigKey()); - this.lastCapacityProvided = capacity; - return capacity; - } - - protected Block getStressConfigKey() { - return getBlockState().getBlock(); - } - - public float calculateStressApplied() { - float impact = (float) AllConfigs.SERVER.kinetics.stressValues.getImpactOf(getStressConfigKey()); - this.lastStressApplied = impact; - return impact; - } - - public void onSpeedChanged(float previousSpeed) { - boolean fromOrToZero = (previousSpeed == 0) != (getSpeed() == 0); - boolean directionSwap = !fromOrToZero && Math.signum(previousSpeed) != Math.signum(getSpeed()); - if (fromOrToZero || directionSwap) - flickerTally = getFlickerScore() + 5; - } - - @Override - public void remove() { - if (!world.isRemote) { - if (hasNetwork()) - getOrCreateNetwork().remove(this); - detachKinetics(); - } - super.remove(); - } - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - compound.putFloat("Speed", speed); - - if (needsSpeedUpdate()) - compound.putBoolean("NeedsSpeedUpdate", true); - - if (hasSource()) - compound.put("Source", NBTUtil.writeBlockPos(source)); - - if (hasNetwork()) { - CompoundNBT networkTag = new CompoundNBT(); - networkTag.putLong("Id", this.network); - networkTag.putFloat("Stress", stress); - networkTag.putFloat("Capacity", capacity); - networkTag.putInt("Size", networkSize); - - if (lastStressApplied != 0) - networkTag.putFloat("AddedStress", lastStressApplied); - if (lastCapacityProvided != 0) - networkTag.putFloat("AddedCapacity", lastCapacityProvided); - - compound.put("Network", networkTag); - } - - super.write(compound, clientPacket); - } - - public boolean needsSpeedUpdate() { - return updateSpeed; - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - boolean overStressedBefore = overStressed; - clearKineticInformation(); - - // DO NOT READ kinetic information when placed after movement - if (wasMoved) { - super.fromTag(state, compound, clientPacket); - return; - } - - speed = compound.getFloat("Speed"); - - if (compound.contains("Source")) - source = NBTUtil.readBlockPos(compound.getCompound("Source")); - - if (compound.contains("Network")) { - CompoundNBT networkTag = compound.getCompound("Network"); - network = networkTag.getLong("Id"); - stress = networkTag.getFloat("Stress"); - capacity = networkTag.getFloat("Capacity"); - networkSize = networkTag.getInt("Size"); - lastStressApplied = networkTag.getFloat("AddedStress"); - lastCapacityProvided = networkTag.getFloat("AddedCapacity"); - overStressed = capacity < stress && StressImpact.isEnabled(); - } - - super.fromTag(state, compound, clientPacket); - - if (clientPacket && overStressedBefore != overStressed && speed != 0) - effects.triggerOverStressedEffect(); - - if (clientPacket) - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> InstancedRenderDispatcher.enqueueUpdate(this)); - } - - public float getGeneratedSpeed() { - return 0; - } - - public boolean isSource() { - return getGeneratedSpeed() != 0; - } - - public float getSpeed() { - if (overStressed) - return 0; - return getTheoreticalSpeed(); - } - - public float getTheoreticalSpeed() { - return speed; - } - - public void setSpeed(float speed) { - this.speed = speed; - } - - public boolean hasSource() { - return source != null; - } - - public void setSource(BlockPos source) { - this.source = source; - if (world == null || world.isRemote) - return; - - TileEntity tileEntity = world.getTileEntity(source); - if (!(tileEntity instanceof KineticTileEntity)) { - removeSource(); - return; - } - - KineticTileEntity sourceTe = (KineticTileEntity) tileEntity; - setNetwork(sourceTe.network); - } - - public void removeSource() { - float prevSpeed = getSpeed(); - - speed = 0; - source = null; - setNetwork(null); - - onSpeedChanged(prevSpeed); - } - - public void setNetwork(@Nullable Long networkIn) { - if (network == networkIn) - return; - if (network != null) - getOrCreateNetwork().remove(this); - - network = networkIn; - - if (networkIn == null) - return; - - network = networkIn; - KineticNetwork network = getOrCreateNetwork(); - network.initialized = true; - network.add(this); - } - - public KineticNetwork getOrCreateNetwork() { - return Create.TORQUE_PROPAGATOR.getOrCreateNetworkFor(this); - } - - public boolean hasNetwork() { - return network != null; - } - - public void attachKinetics() { - updateSpeed = false; - RotationPropagator.handleAdded(world, pos, this); - } - - public void detachKinetics() { - RotationPropagator.handleRemoved(world, pos, this); - } - - public boolean isSpeedRequirementFulfilled() { - BlockState state = getBlockState(); - if (!(getBlockState().getBlock() instanceof IRotate)) - return true; - IRotate def = (IRotate) state.getBlock(); - SpeedLevel minimumRequiredSpeedLevel = def.getMinimumRequiredSpeedLevel(); - if (minimumRequiredSpeedLevel == null) - return true; - if (minimumRequiredSpeedLevel == SpeedLevel.MEDIUM) - return Math.abs(getSpeed()) >= AllConfigs.SERVER.kinetics.mediumSpeed.get(); - if (minimumRequiredSpeedLevel == SpeedLevel.FAST) - return Math.abs(getSpeed()) >= AllConfigs.SERVER.kinetics.fastSpeed.get(); - return true; - } - - public static void switchToBlockState(World world, BlockPos pos, BlockState state) { - if (world.isRemote) - return; - - TileEntity tileEntityIn = world.getTileEntity(pos); - BlockState currentState = world.getBlockState(pos); - boolean isKinetic = tileEntityIn instanceof KineticTileEntity; - - if (currentState == state) - return; - if (tileEntityIn == null || !isKinetic) { - world.setBlockState(pos, state, 3); - return; - } - - KineticTileEntity tileEntity = (KineticTileEntity) tileEntityIn; - if (state.getBlock() instanceof KineticBlock - && !((KineticBlock) state.getBlock()).areStatesKineticallyEquivalent(currentState, state)) { - if (tileEntity.hasNetwork()) - tileEntity.getOrCreateNetwork() - .remove(tileEntity); - tileEntity.detachKinetics(); - tileEntity.removeSource(); - } - - world.setBlockState(pos, state, 3); - } - - @Override - public void addBehaviours(List behaviours) {} - - @Override - public boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { - boolean notFastEnough = !isSpeedRequirementFulfilled() && getSpeed() != 0; - - if (overStressed && AllConfigs.CLIENT.enableOverstressedTooltip.get()) { - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.stressometer.overstressed") - .formatted(GOLD))); - ITextComponent hint = Lang.translate("gui.contraptions.network_overstressed"); - List cutString = TooltipHelper.cutTextComponent(hint, GRAY, TextFormatting.WHITE); - for (int i = 0; i < cutString.size(); i++) - tooltip.add(componentSpacing.copy() - .append(cutString.get(i))); - return true; - } - - if (notFastEnough) { - tooltip.add(componentSpacing.copy() - .append(Lang.translate("tooltip.speedRequirement") - .formatted(GOLD))); - ITextComponent hint = - Lang.translate("gui.contraptions.not_fast_enough", I18n.format(getBlockState().getBlock() - .getTranslationKey())); - List cutString = TooltipHelper.cutTextComponent(hint, GRAY, TextFormatting.WHITE); - for (int i = 0; i < cutString.size(); i++) - tooltip.add(componentSpacing.copy() - .append(cutString.get(i))); - return true; - } - - return false; - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - boolean added = false; - float stressAtBase = calculateStressApplied(); - - if (calculateStressApplied() != 0 && StressImpact.isEnabled()) { - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.goggles.kinetic_stats"))); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("tooltip.stressImpact") - .formatted(TextFormatting.GRAY))); - - float stressTotal = stressAtBase * Math.abs(getTheoreticalSpeed()); - - tooltip.add(componentSpacing.copy() - .append(new StringTextComponent(" " + IHaveGoggleInformation.format(stressTotal)) - .append(Lang.translate("generic.unit.stress")) - .append(" ") - .formatted(TextFormatting.AQUA)) - .append(Lang.translate("gui.goggles.at_current_speed") - .formatted(TextFormatting.DARK_GRAY))); - - added = true; - } - - return added; - - } - - public void clearKineticInformation() { - speed = 0; - source = null; - network = null; - overStressed = false; - stress = 0; - capacity = 0; - lastStressApplied = 0; - lastCapacityProvided = 0; - } - - public void warnOfMovement() { - wasMoved = true; - } - - public int getFlickerScore() { - return flickerTally; - } - - public static float convertToDirection(float axisSpeed, Direction d) { - return d.getAxisDirection() == AxisDirection.POSITIVE ? axisSpeed : -axisSpeed; - } - - public static float convertToLinear(float speed) { return speed / 512f; } - - public static float convertToAngular(float speed) { return speed * 3 / 10f; } - - public boolean isOverStressed() { - return overStressed; - } - - // Custom Propagation - - /** - * Specify ratio of transferred rotation from this kinetic component to a - * specific other. - * - * @param target other Kinetic TE to transfer to - * @param stateFrom this TE's blockstate - * @param stateTo other TE's blockstate - * @param diff difference in position (to.pos - from.pos) - * @param connectedViaAxes whether these kinetic blocks are connected via mutual - * IRotate.hasShaftTowards() - * @param connectedViaCogs whether these kinetic blocks are connected via mutual - * IRotate.hasIntegratedCogwheel() - * @return factor of rotation speed from this TE to other. 0 if no rotation is - * transferred, or the standard rules apply (integrated shafts/cogs) - */ - public float propagateRotationTo(KineticTileEntity target, BlockState stateFrom, BlockState stateTo, BlockPos diff, - boolean connectedViaAxes, boolean connectedViaCogs) { - return 0; - } - - /** - * Specify additional locations the rotation propagator should look for - * potentially connected components. Neighbour list contains offset positions in - * all 6 directions by default. - * - * @param block - * @param state - * @param neighbours - * @return - */ - public List addPropagationLocations(IRotate block, BlockState state, List neighbours) { - if (!canPropagateDiagonally(block, state)) - return neighbours; - - Axis axis = block.getRotationAxis(state); - BlockPos.getAllInBox(new BlockPos(-1, -1, -1), new BlockPos(1, 1, 1)) - .forEach(offset -> { - if (axis.getCoordinate(offset.getX(), offset.getY(), offset.getZ()) != 0) - return; - if (offset.distanceSq(0, 0, 0, false) != BlockPos.ZERO.distanceSq(1, 1, 0, false)) - return; - neighbours.add(pos.add(offset)); - }); - return neighbours; - } - - /** - * Specify whether this component can propagate speed to the other in any - * circumstance. Shaft and cogwheel connections are already handled by internal - * logic. Does not have to be specified on both ends, it is assumed that this - * relation is symmetrical. - * - * @param other - * @param state - * @param otherState - * @return true if this and the other component should check their propagation - * factor and are not already connected via integrated cogs or shafts - */ - public boolean isCustomConnection(KineticTileEntity other, BlockState state, BlockState otherState) { - return false; - } - - protected boolean canPropagateDiagonally(IRotate block, BlockState state) { - return ICogWheel.isSmallCog(state); - } - - @Override - public void requestModelDataUpdate() { - super.requestModelDataUpdate(); - if (!this.removed) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> InstancedRenderDispatcher.enqueueUpdate(this)); - } - } - - protected AxisAlignedBB cachedBoundingBox; - - @OnlyIn(Dist.CLIENT) - public AxisAlignedBB getRenderBoundingBox() { - if (cachedBoundingBox == null) { - cachedBoundingBox = makeRenderBoundingBox(); - } - return cachedBoundingBox; - } - - protected AxisAlignedBB makeRenderBoundingBox() { - return super.getRenderBoundingBox(); - } - - @OnlyIn(Dist.CLIENT) - public void tickAudio() { - float componentSpeed = Math.abs(getSpeed()); - if (componentSpeed == 0) - return; - float pitch = MathHelper.clamp((componentSpeed / 256f) + .45f, .85f, 1f); - - if (isNoisy()) - SoundScapes.play(AmbienceGroup.KINETIC, pos, pitch); - - Block block = getBlockState().getBlock(); - if (ICogWheel.isSmallCog(block) || ICogWheel.isLargeCog(block) || block instanceof GearboxBlock) - SoundScapes.play(AmbienceGroup.COG, pos, pitch); - } - - protected boolean isNoisy() { - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java deleted file mode 100644 index bea28ca27..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntityRenderer.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.KineticDebugger; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.foundation.render.Compartment; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber(value = Dist.CLIENT) -public class KineticTileEntityRenderer extends SafeTileEntityRenderer { - - public static final Compartment KINETIC_TILE = new Compartment<>(); - public static boolean rainbowMode = false; - - public KineticTileEntityRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - for (RenderType type : RenderType.getBlockLayers()) - if (RenderTypeLookup.canRenderInLayer(te.getBlockState(), type)) - renderRotatingBuffer(te, getRotatedModel(te), ms, buffer.getBuffer(type), light); - } - - public static void renderRotatingKineticBlock(KineticTileEntity te, BlockState renderedState, MatrixStack ms, - IVertexBuilder buffer, int light) { - SuperByteBuffer superByteBuffer = CreateClient.BUFFER_CACHE.renderBlockIn(KINETIC_TILE, renderedState); - renderRotatingBuffer(te, superByteBuffer, ms, buffer, light); - } - - public static void renderRotatingBuffer(KineticTileEntity te, SuperByteBuffer superBuffer, MatrixStack ms, - IVertexBuilder buffer, int light) { - standardKineticRotationTransform(superBuffer, te, light).renderInto(ms, buffer); - } - - public static float getAngleForTe(KineticTileEntity te, final BlockPos pos, Axis axis) { - float time = AnimationTickHolder.getRenderTime(te.getWorld()); - float offset = getRotationOffsetForPosition(te, pos, axis); - float angle = ((time * te.getSpeed() * 3f / 10 + offset) % 360) / 180 * (float) Math.PI; - return angle; - } - - public static SuperByteBuffer standardKineticRotationTransform(SuperByteBuffer buffer, KineticTileEntity te, - int light) { - final BlockPos pos = te.getPos(); - Axis axis = ((IRotate) te.getBlockState() - .getBlock()).getRotationAxis(te.getBlockState()); - return kineticRotationTransform(buffer, te, axis, getAngleForTe(te, pos, axis), light); - } - - public static SuperByteBuffer kineticRotationTransform(SuperByteBuffer buffer, KineticTileEntity te, Axis axis, - float angle, int light) { - buffer.light(light); - buffer.rotateCentered(Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis), angle); - - int white = 0xFFFFFF; - if (KineticDebugger.isActive()) { - rainbowMode = true; - buffer.color(te.hasNetwork() ? ColorHelper.colorFromLong(te.network) : white); - } else { - float overStressedEffect = te.effects.overStressedEffect; - if (overStressedEffect != 0) - if (overStressedEffect > 0) - buffer.color(ColorHelper.mixColors(white, 0xFF0000, overStressedEffect)); - else - buffer.color(ColorHelper.mixColors(white, 0x00FFBB, -overStressedEffect)); - else - buffer.color(white); - } - - return buffer; - } - - protected static float getRotationOffsetForPosition(KineticTileEntity te, final BlockPos pos, final Axis axis) { - float offset = ICogWheel.isLargeCog(te.getBlockState()) ? 11.25f : 0; - double d = (((axis == Axis.X) ? 0 : pos.getX()) + ((axis == Axis.Y) ? 0 : pos.getY()) - + ((axis == Axis.Z) ? 0 : pos.getZ())) % 2; - if (d == 0) { - offset = 22.5f; - } - return offset; - } - - public static BlockState shaft(Axis axis) { - return AllBlocks.SHAFT.getDefaultState() - .with(BlockStateProperties.AXIS, axis); - } - - public static Axis getRotationAxisOf(KineticTileEntity te) { - return ((IRotate) te.getBlockState() - .getBlock()).getRotationAxis(te.getBlockState()); - } - - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return te.getBlockState(); - } - - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return CreateClient.BUFFER_CACHE.renderBlockIn(KINETIC_TILE, getRenderedBlockState(te)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileInstance.java deleted file mode 100644 index 76e98a3b0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/KineticTileInstance.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.instancing.InstanceMaterial; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.foundation.render.AllMaterialSpecs; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; - -public abstract class KineticTileInstance extends TileEntityInstance { - - protected final Direction.Axis axis; - - public KineticTileInstance(MaterialManager modelManager, T tile) { - super(modelManager, tile); - - axis = ((IRotate) blockState.getBlock()).getRotationAxis(blockState); - } - - protected final void updateRotation(RotatingData instance) { - updateRotation(instance, getRotationAxis(), getTileSpeed()); - } - - protected final void updateRotation(RotatingData instance, Direction.Axis axis) { - updateRotation(instance, axis, getTileSpeed()); - } - - protected final void updateRotation(RotatingData instance, float speed) { - updateRotation(instance, getRotationAxis(), speed); - } - - protected final void updateRotation(RotatingData instance, Direction.Axis axis, float speed) { - instance.setRotationAxis(axis) - .setRotationOffset(getRotationOffset(axis)) - .setRotationalSpeed(speed) - .setColor(tile); - } - - protected final RotatingData setup(RotatingData key) { - return setup(key, getRotationAxis(), getTileSpeed()); - } - - protected final RotatingData setup(RotatingData key, Direction.Axis axis) { - return setup(key, axis, getTileSpeed()); - } - - protected final RotatingData setup(RotatingData key, float speed) { - return setup(key, getRotationAxis(), speed); - } - - protected final RotatingData setup(RotatingData key, Direction.Axis axis, float speed) { - key.setRotationAxis(axis) - .setRotationalSpeed(speed) - .setRotationOffset(getRotationOffset(axis)) - .setColor(tile) - .setPosition(getInstancePosition()); - - return key; - } - - protected float getRotationOffset(final Direction.Axis axis) { - float offset = ICogWheel.isLargeCog(blockState) ? 11.25f : 0; - double d = (((axis == Direction.Axis.X) ? 0 : pos.getX()) + ((axis == Direction.Axis.Y) ? 0 : pos.getY()) - + ((axis == Direction.Axis.Z) ? 0 : pos.getZ())) % 2; - if (d == 0) { - offset = 22.5f; - } - return offset; - } - - protected Direction.Axis getRotationAxis() { - return axis; - } - - protected float getTileSpeed() { - return tile.getSpeed(); - } - - protected BlockState shaft() { - return shaft(getRotationAxis()); - } - - protected final InstanceMaterial getRotatingMaterial() { - return materialManager.getMaterial(AllMaterialSpecs.ROTATING); - } - - public static BlockState shaft(Direction.Axis axis) { - return AllBlocks.SHAFT.getDefaultState() - .with(ShaftBlock.AXIS, axis); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/RotatedPillarKineticBlock.java b/src/main/java/com/simibubi/create/content/contraptions/base/RotatedPillarKineticBlock.java deleted file mode 100644 index 75c45893c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/RotatedPillarKineticBlock.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Rotation; - -public abstract class RotatedPillarKineticBlock extends KineticBlock { - - public static final EnumProperty AXIS = BlockStateProperties.AXIS; - - public RotatedPillarKineticBlock(Properties properties) { - super(properties); - this.setDefaultState(this.getDefaultState() - .with(AXIS, Direction.Axis.Y)); - } - - @Override - public BlockState rotate(BlockState state, Rotation rot) { - switch (rot) { - case COUNTERCLOCKWISE_90: - case CLOCKWISE_90: - switch (state.get(AXIS)) { - case X: - return state.with(AXIS, Direction.Axis.Z); - case Z: - return state.with(AXIS, Direction.Axis.X); - default: - return state; - } - default: - return state; - } - } - - public static Axis getPreferredAxis(BlockItemUseContext context) { - Axis prefferedAxis = null; - for (Direction side : Iterate.directions) { - BlockState blockState = context.getWorld() - .getBlockState(context.getPos() - .offset(side)); - if (blockState.getBlock() instanceof IRotate) { - if (((IRotate) blockState.getBlock()).hasShaftTowards(context.getWorld(), context.getPos() - .offset(side), blockState, side.getOpposite())) - if (prefferedAxis != null && prefferedAxis != side.getAxis()) { - prefferedAxis = null; - break; - } else { - prefferedAxis = side.getAxis(); - } - } - } - return prefferedAxis; - } - - @Override - protected void fillStateContainer(StateContainer.Builder builder) { - builder.add(AXIS); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Axis preferredAxis = getPreferredAxis(context); - if (preferredAxis != null && (context.getPlayer() == null || !context.getPlayer() - .isSneaking())) - return this.getDefaultState() - .with(AXIS, preferredAxis); - return this.getDefaultState() - .with(AXIS, preferredAxis != null && context.getPlayer() - .isSneaking() ? context.getFace() - .getAxis() - : context.getNearestLookingDirection() - .getAxis()); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/RotatingData.java b/src/main/java/com/simibubi/create/content/contraptions/base/RotatingData.java deleted file mode 100644 index 443168be0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/RotatingData.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.gl.buffer.MappedBuffer; -import com.jozufozu.flywheel.backend.instancing.Instancer; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3f; - -public class RotatingData extends KineticData { - private byte rotationAxisX; - private byte rotationAxisY; - private byte rotationAxisZ; - - public RotatingData(Instancer owner) { - super(owner); - } - - public RotatingData setRotationAxis(Direction.Axis axis) { - Direction orientation = Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis); - setRotationAxis(orientation.getUnitVector()); - return this; - } - - public RotatingData setRotationAxis(Vector3f axis) { - setRotationAxis(axis.getX(), axis.getY(), axis.getZ()); - return this; - } - - public RotatingData setRotationAxis(float rotationAxisX, float rotationAxisY, float rotationAxisZ) { - this.rotationAxisX = (byte) (rotationAxisX * 127); - this.rotationAxisY = (byte) (rotationAxisY * 127); - this.rotationAxisZ = (byte) (rotationAxisZ * 127); - markDirty(); - return this; - } - - @Override - public void write(MappedBuffer buf) { - super.write(buf); - - buf.putVec3(rotationAxisX, rotationAxisY, rotationAxisZ); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java deleted file mode 100644 index 415882390..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/ShaftlessCogInstance.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.render.AllMaterialSpecs; - -public class ShaftlessCogInstance extends SingleRotatingInstance { - - public ShaftlessCogInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Instancer getModel() { - return materialManager.getMaterial(AllMaterialSpecs.ROTATING).getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState()); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/base/SingleRotatingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/base/SingleRotatingInstance.java deleted file mode 100644 index 17ba2884d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/base/SingleRotatingInstance.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.simibubi.create.content.contraptions.base; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; - -import net.minecraft.block.BlockState; - -public class SingleRotatingInstance extends KineticTileInstance { - - protected final RotatingData rotatingModel; - - public SingleRotatingInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - - rotatingModel = setup(getModel().createInstance()); - } - - @Override - public void update() { - updateRotation(rotatingModel); - } - - @Override - public void updateLight() { - relight(pos, rotatingModel); - } - - @Override - public void remove() { - rotatingModel.delete(); - } - - protected BlockState getRenderedBlockState() { - return blockState; - } - - protected Instancer getModel() { - return getRotatingMaterial().getModel(getRenderedBlockState()); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/ActorData.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/ActorData.java deleted file mode 100644 index dd8c01e8e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/ActorData.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.jozufozu.flywheel.backend.gl.buffer.MappedBuffer; -import com.jozufozu.flywheel.backend.instancing.InstanceData; -import com.jozufozu.flywheel.backend.instancing.Instancer; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3f; - -public class ActorData extends InstanceData { - private float x; - private float y; - private float z; - private byte blockLight; - private byte skyLight; - private float rotationOffset; - private byte rotationAxisX; - private byte rotationAxisY; - private byte rotationAxisZ; - private float qX; - private float qY; - private float qZ; - private float qW; - private byte rotationCenterX = 64; - private byte rotationCenterY = 64; - private byte rotationCenterZ = 64; - - private float speed; - - public ActorData(Instancer owner) { - super(owner); - } - - - public ActorData setPosition(BlockPos pos) { - this.x = pos.getX(); - this.y = pos.getY(); - this.z = pos.getZ(); - markDirty(); - return this; - } - - public ActorData setBlockLight(int blockLight) { - this.blockLight = (byte) ((blockLight & 0xF) << 4); - markDirty(); - return this; - } - - public ActorData setSkyLight(int skyLight) { - this.skyLight = (byte) ((skyLight & 0xF) << 4); - markDirty(); - return this; - } - - public ActorData setRotationOffset(float rotationOffset) { - this.rotationOffset = rotationOffset; - markDirty(); - return this; - } - - public ActorData setSpeed(float speed) { - this.speed = speed; - markDirty(); - return this; - } - - public ActorData setRotationAxis(Vector3f axis) { - setRotationAxis(axis.getX(), axis.getY(), axis.getZ()); - return this; - } - - public ActorData setRotationAxis(float rotationAxisX, float rotationAxisY, float rotationAxisZ) { - this.rotationAxisX = (byte) (rotationAxisX * 127); - this.rotationAxisY = (byte) (rotationAxisY * 127); - this.rotationAxisZ = (byte) (rotationAxisZ * 127); - markDirty(); - return this; - } - - public ActorData setRotationCenter(Vector3f axis) { - setRotationCenter(axis.getX(), axis.getY(), axis.getZ()); - return this; - } - - public ActorData setRotationCenter(float rotationCenterX, float rotationCenterY, float rotationCenterZ) { - this.rotationCenterX = (byte) (rotationCenterX * 127); - this.rotationCenterY = (byte) (rotationCenterY * 127); - this.rotationCenterZ = (byte) (rotationCenterZ * 127); - markDirty(); - return this; - } - - public ActorData setLocalRotation(Quaternion q) { - this.qX = q.getX(); - this.qY = q.getY(); - this.qZ = q.getZ(); - this.qW = q.getW(); - markDirty(); - return this; - } - - @Override - public void write(MappedBuffer buf) { - buf.putVec3(x, y, z); - buf.putVec2(blockLight, skyLight); - buf.putFloat(rotationOffset); - buf.putVec3(rotationAxisX, rotationAxisY, rotationAxisZ); - buf.putVec4(qX, qY, qZ, qW); - buf.putVec3(rotationCenterX, rotationCenterY, rotationCenterZ); - buf.putFloat(speed); - - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/AttachedActorBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/AttachedActorBlock.java deleted file mode 100644 index c9ea4bac8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/AttachedActorBlock.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.utility.BlockHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalBlock; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public abstract class AttachedActorBlock extends HorizontalBlock implements IWrenchable { - - protected AttachedActorBlock(Properties p_i48377_1_) { - super(p_i48377_1_); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - return ActionResultType.FAIL; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - Direction direction = state.get(HORIZONTAL_FACING); - return AllShapes.HARVESTER_BASE.get(direction); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(HORIZONTAL_FACING); - super.fillStateContainer(builder); - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - Direction direction = state.get(HORIZONTAL_FACING); - BlockPos offset = pos.offset(direction.getOpposite()); - return BlockHelper.hasBlockSolidSide(worldIn.getBlockState(offset), worldIn, offset, direction); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction facing; - if (context.getFace().getAxis().isVertical()) - facing = context.getPlacementHorizontalFacing().getOpposite(); - else { - BlockState blockState = - context.getWorld().getBlockState(context.getPos().offset(context.getFace().getOpposite())); - if (blockState.getBlock() instanceof AttachedActorBlock) - facing = blockState.get(HORIZONTAL_FACING); - else - facing = context.getFace(); - } - return getDefaultState().with(HORIZONTAL_FACING, facing); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BellMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BellMovementBehaviour.java deleted file mode 100644 index 58417de15..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BellMovementBehaviour.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class BellMovementBehaviour extends MovementBehaviour { - @Override - public boolean renderAsNormalTileEntity() { - return true; - } - - @Override - public void onSpeedChanged(MovementContext context, Vector3d oldMotion, Vector3d motion) { - double dotProduct = oldMotion.dotProduct(motion); - - if (dotProduct <= 0 && (context.relativeMotion.length() != 0) || context.firstMovement) - context.world.playSound(null, new BlockPos(context.position), SoundEvents.BLOCK_BELL_USE, - SoundCategory.BLOCKS, 2.0F, 1.0F); - } - - @Override - public void stopMoving(MovementContext context) { - if (context.position != null) - context.world.playSound(null, new BlockPos(context.position), SoundEvents.BLOCK_BELL_USE, SoundCategory.BLOCKS, - 2.0F, 1.0F); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java deleted file mode 100644 index a74d1a200..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingKineticTileEntity.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import java.util.concurrent.atomic.AtomicInteger; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.AirBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.GameRules; -import net.minecraft.world.server.ServerWorld; - -public abstract class BlockBreakingKineticTileEntity extends KineticTileEntity { - - public static final AtomicInteger NEXT_BREAKER_ID = new AtomicInteger(); - protected int ticksUntilNextProgress; - protected int destroyProgress; - protected int breakerId = -NEXT_BREAKER_ID.incrementAndGet(); - protected BlockPos breakingPos; - - public BlockBreakingKineticTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - if (destroyProgress == -1) - destroyNextTick(); - } - - @Override - public void lazyTick() { - super.lazyTick(); - if (ticksUntilNextProgress == -1) - destroyNextTick(); - } - - public void destroyNextTick() { - ticksUntilNextProgress = 1; - } - - protected abstract BlockPos getBreakingPos(); - - protected boolean shouldRun() { - return true; - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putInt("Progress", destroyProgress); - compound.putInt("NextTick", ticksUntilNextProgress); - if (breakingPos != null) - compound.put("Breaking", NBTUtil.writeBlockPos(breakingPos)); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - destroyProgress = compound.getInt("Progress"); - ticksUntilNextProgress = compound.getInt("NextTick"); - if (compound.contains("Breaking")) - breakingPos = NBTUtil.readBlockPos(compound.getCompound("Breaking")); - super.fromTag(state, compound, clientPacket); - } - - @Override - public void remove() { - if (!world.isRemote && destroyProgress != 0) - world.sendBlockBreakProgress(breakerId, breakingPos, -1); - super.remove(); - } - - @Override - public void tick() { - super.tick(); - - if (world.isRemote) - return; - if (!shouldRun()) - return; - if (getSpeed() == 0) - return; - - breakingPos = getBreakingPos(); - - if (ticksUntilNextProgress < 0) - return; - if (ticksUntilNextProgress-- > 0) - return; - - BlockState stateToBreak = world.getBlockState(breakingPos); - float blockHardness = stateToBreak.getBlockHardness(world, breakingPos); - - if (!canBreak(stateToBreak, blockHardness)) { - if (destroyProgress != 0) { - destroyProgress = 0; - world.sendBlockBreakProgress(breakerId, breakingPos, -1); - } - return; - } - - float breakSpeed = getBreakSpeed(); - destroyProgress += MathHelper.clamp((int) (breakSpeed / blockHardness), 1, 10 - destroyProgress); - world.playSound(null, pos, stateToBreak.getSoundType().getHitSound(), SoundCategory.NEUTRAL, .25f, 1); - - if (destroyProgress >= 10) { - onBlockBroken(stateToBreak); - destroyProgress = 0; - ticksUntilNextProgress = -1; - world.sendBlockBreakProgress(breakerId, breakingPos, -1); - return; - } - - ticksUntilNextProgress = (int) (blockHardness / breakSpeed); - world.sendBlockBreakProgress(breakerId, breakingPos, (int) destroyProgress); - } - - public boolean canBreak(BlockState stateToBreak, float blockHardness) { - return isBreakable(stateToBreak, blockHardness); - } - - public static boolean isBreakable(BlockState stateToBreak, float blockHardness) { - return !(stateToBreak.getMaterial().isLiquid() || stateToBreak.getBlock() instanceof AirBlock - || blockHardness == -1); - } - - public void onBlockBroken(BlockState stateToBreak) { - FluidState FluidState = world.getFluidState(breakingPos); - world.playEvent(2001, breakingPos, Block.getStateId(stateToBreak)); - TileEntity tileentity = stateToBreak.hasTileEntity() ? world.getTileEntity(breakingPos) : null; - Vector3d vec = VecHelper.offsetRandomly(VecHelper.getCenterOf(breakingPos), world.rand, .125f); - - Block.getDrops(stateToBreak, (ServerWorld) world, breakingPos, tileentity).forEach((stack) -> { - if (!stack.isEmpty() && world.getGameRules().getBoolean(GameRules.DO_TILE_DROPS) - && !world.restoringBlockSnapshots) { - ItemEntity itementity = new ItemEntity(world, vec.x, vec.y, vec.z, stack); - itementity.setDefaultPickupDelay(); - itementity.setMotion(Vector3d.ZERO); - world.addEntity(itementity); - } - }); - if (world instanceof ServerWorld) - stateToBreak.spawnAdditionalDrops((ServerWorld) world, breakingPos, ItemStack.EMPTY); - world.setBlockState(breakingPos, FluidState.getBlockState(), 3); - } - - protected float getBreakSpeed() { - return Math.abs(getSpeed() / 100f); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingMovementBehaviour.java deleted file mode 100644 index 14c090563..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/BlockBreakingMovementBehaviour.java +++ /dev/null @@ -1,214 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.utility.BlockHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.FallingBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.util.DamageSource; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; - -public class BlockBreakingMovementBehaviour extends MovementBehaviour { - - @Override - public void startMoving(MovementContext context) { - if (context.world.isRemote) - return; - context.data.putInt("BreakerId", -BlockBreakingKineticTileEntity.NEXT_BREAKER_ID.incrementAndGet()); - } - - @Override - public void visitNewPosition(MovementContext context, BlockPos pos) { - World world = context.world; - BlockState stateVisited = world.getBlockState(pos); - - if (!stateVisited.isNormalCube(world, pos)) - damageEntities(context, pos, world); - if (world.isRemote) - return; - if (!canBreak(world, pos, stateVisited)) - return; - - context.data.put("BreakingPos", NBTUtil.writeBlockPos(pos)); - context.stall = true; - } - - public void damageEntities(MovementContext context, BlockPos pos, World world) { - DamageSource damageSource = getDamageSource(); - if (damageSource == null && !throwsEntities()) - return; - Entities: for (Entity entity : world.getEntitiesWithinAABB(Entity.class, new AxisAlignedBB(pos))) { - if (entity instanceof ItemEntity) - continue; - if (entity instanceof AbstractContraptionEntity) - continue; - if (entity instanceof AbstractMinecartEntity) - for (Entity passenger : entity.getRecursivePassengers()) - if (passenger instanceof AbstractContraptionEntity - && ((AbstractContraptionEntity) passenger).getContraption() == context.contraption) - continue Entities; - - if (damageSource != null && !world.isRemote) { - float damage = (float) MathHelper.clamp(6 * Math.pow(context.relativeMotion.length(), 0.4) + 1, 2, 10); - entity.attackEntityFrom(damageSource, damage); - } - if (throwsEntities() && (world.isRemote == (entity instanceof PlayerEntity))) { - Vector3d motionBoost = context.motion.add(0, context.motion.length() / 4f, 0); - int maxBoost = 4; - if (motionBoost.length() > maxBoost) { - motionBoost = motionBoost.subtract(motionBoost.normalize().scale(motionBoost.length() - maxBoost)); - } - entity.setMotion(entity.getMotion().add(motionBoost)); - entity.velocityChanged = true; - } - } - } - - protected DamageSource getDamageSource() { - return null; - } - - protected boolean throwsEntities() { - return getDamageSource() != null; - } - - @Override - public void stopMoving(MovementContext context) { - CompoundNBT data = context.data; - if (context.world.isRemote) - return; - if (!data.contains("BreakingPos")) - return; - - World world = context.world; - int id = data.getInt("BreakerId"); - BlockPos breakingPos = NBTUtil.readBlockPos(data.getCompound("BreakingPos")); - - data.remove("Progress"); - data.remove("TicksUntilNextProgress"); - data.remove("BreakingPos"); - - context.stall = false; - world.sendBlockBreakProgress(id, breakingPos, -1); - } - - @Override - public void tick(MovementContext context) { - tickBreaker(context); - - CompoundNBT data = context.data; - if (!data.contains("WaitingTicks")) - return; - - int waitingTicks = data.getInt("WaitingTicks"); - if (waitingTicks-- > 0) { - data.putInt("WaitingTicks", waitingTicks); - context.stall = true; - return; - } - - BlockPos pos = NBTUtil.readBlockPos(data.getCompound("LastPos")); - data.remove("WaitingTicks"); - data.remove("LastPos"); - context.stall = false; - visitNewPosition(context, pos); - } - - public void tickBreaker(MovementContext context) { - CompoundNBT data = context.data; - if (context.world.isRemote) - return; - if (!data.contains("BreakingPos")) - return; - if (context.relativeMotion.equals(Vector3d.ZERO)) { - context.stall = false; - return; - } - - int ticksUntilNextProgress = data.getInt("TicksUntilNextProgress"); - if (ticksUntilNextProgress-- > 0) { - data.putInt("TicksUntilNextProgress", ticksUntilNextProgress); - return; - } - - World world = context.world; - BlockPos breakingPos = NBTUtil.readBlockPos(data.getCompound("BreakingPos")); - int destroyProgress = data.getInt("Progress"); - int id = data.getInt("BreakerId"); - BlockState stateToBreak = world.getBlockState(breakingPos); - float blockHardness = stateToBreak.getBlockHardness(world, breakingPos); - - if (!canBreak(world, breakingPos, stateToBreak)) { - if (destroyProgress != 0) { - destroyProgress = 0; - data.remove("Progress"); - data.remove("TicksUntilNextProgress"); - data.remove("BreakingPos"); - world.sendBlockBreakProgress(id, breakingPos, -1); - } - context.stall = false; - return; - } - - float breakSpeed = MathHelper.clamp(Math.abs(context.getAnimationSpeed()) / 500f, 1 / 128f, 16f); - destroyProgress += MathHelper.clamp((int) (breakSpeed / blockHardness), 1, 10 - destroyProgress); - world.playSound(null, breakingPos, stateToBreak.getSoundType().getHitSound(), SoundCategory.NEUTRAL, .25f, 1); - - if (destroyProgress >= 10) { - world.sendBlockBreakProgress(id, breakingPos, -1); - - // break falling blocks from top to bottom - BlockPos ogPos = breakingPos; - BlockState stateAbove = world.getBlockState(breakingPos.up()); - while (stateAbove.getBlock() instanceof FallingBlock) { - breakingPos = breakingPos.up(); - stateAbove = world.getBlockState(breakingPos.up()); - } - stateToBreak = world.getBlockState(breakingPos); - - context.stall = false; - BlockHelper.destroyBlock(context.world, breakingPos, 1f, stack -> this.dropItem(context, stack)); - onBlockBroken(context, ogPos, stateToBreak); - ticksUntilNextProgress = -1; - data.remove("Progress"); - data.remove("TicksUntilNextProgress"); - data.remove("BreakingPos"); - return; - } - - ticksUntilNextProgress = (int) (blockHardness / breakSpeed); - world.sendBlockBreakProgress(id, breakingPos, (int) destroyProgress); - data.putInt("TicksUntilNextProgress", ticksUntilNextProgress); - data.putInt("Progress", destroyProgress); - } - - public boolean canBreak(World world, BlockPos breakingPos, BlockState state) { - float blockHardness = state.getBlockHardness(world, breakingPos); - return BlockBreakingKineticTileEntity.isBreakable(state, blockHardness); - } - - protected void onBlockBroken(MovementContext context, BlockPos pos, BlockState brokenState) { - // Check for falling blocks - if (!(brokenState.getBlock() instanceof FallingBlock)) - return; - - CompoundNBT data = context.data; - data.putInt("WaitingTicks", 10); - data.put("LastPos", NBTUtil.writeBlockPos(pos)); - context.stall = true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/CampfireMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/CampfireMovementBehaviour.java deleted file mode 100644 index e27cffee5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/CampfireMovementBehaviour.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import java.util.Random; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import net.minecraft.block.CampfireBlock; -import net.minecraft.particles.ParticleTypes; - -public class CampfireMovementBehaviour extends MovementBehaviour { - @Override - public boolean renderAsNormalTileEntity() { - return true; - } - - @Override - public void tick(MovementContext context) { - if (context.world == null || !context.world.isRemote || context.position == null - || !context.state.get(CampfireBlock.LIT)) - return; - - // Mostly copied from CampfireBlock and CampfireTileEntity - Random random = context.world.rand; - if (random.nextFloat() < 0.11F) { - for (int i = 0; i < random.nextInt(2) + 2; ++i) { - context.world.addOptionalParticle( - context.state.get(CampfireBlock.SIGNAL_FIRE) ? ParticleTypes.CAMPFIRE_SIGNAL_SMOKE - : ParticleTypes.CAMPFIRE_COSY_SMOKE, - true, context.position.getX() + random.nextDouble() / (random.nextBoolean() ? 3D : -3D), - context.position.getY() + random.nextDouble() + random.nextDouble(), - context.position.getZ() + random.nextDouble() / (random.nextBoolean() ? 3D : -3D), 0.0D, 0.07D, - 0.0D); - } - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java deleted file mode 100644 index 316d7eed2..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillActorInstance.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.jozufozu.flywheel.backend.instancing.InstanceMaterial; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.foundation.render.AllMaterialSpecs; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Quaternion; - -public class DrillActorInstance extends ActorInstance { - - ActorData drillHead; - private final Direction facing; - - public DrillActorInstance(MaterialManager materialManager, PlacementSimulationWorld contraption, MovementContext context) { - super(materialManager, contraption, context); - - InstanceMaterial instanceMaterial = materialManager.getMaterial(AllMaterialSpecs.ACTORS); - - BlockState state = context.state; - - facing = state.get(DrillBlock.FACING); - - Direction.Axis axis = facing.getAxis(); - float eulerX = AngleHelper.verticalAngle(facing); - - float eulerY; - if (axis == Direction.Axis.Y) - eulerY = 0; - else - eulerY = facing.getHorizontalAngle() + ((axis == Direction.Axis.X) ? 180 : 0); - - drillHead = instanceMaterial.getModel(AllBlockPartials.DRILL_HEAD, state).createInstance(); - - drillHead.setPosition(context.localPos) - .setBlockLight(localBlockLight()) - .setRotationOffset(0) - .setRotationAxis(0, 0, 1) - .setLocalRotation(new Quaternion(eulerX, eulerY, 0, true)) - .setSpeed(getSpeed(facing)); - } - - @Override - public void beginFrame() { - drillHead.setSpeed(getSpeed(facing)); - } - - protected float getSpeed(Direction facing) { - if (context.contraption.stalled || !VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite())) - return context.getAnimationSpeed(); - return 0; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillBlock.java deleted file mode 100644 index b7c9d029a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillBlock.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.foundation.block.ITE; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class DrillBlock extends DirectionalKineticBlock implements ITE { - public static DamageSource damageSourceDrill = new DamageSource("create.mechanical_drill").setDamageBypassesArmor(); - - public DrillBlock(Properties properties) { - super(properties); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { - if (entityIn instanceof ItemEntity) - return; - if (!new AxisAlignedBB(pos).shrink(.1f).intersects(entityIn.getBoundingBox())) - return; - withTileEntityDo(worldIn, pos, te -> { - if (te.getSpeed() == 0) - return; - entityIn.attackEntityFrom(damageSourceDrill, (float) getDamage(te.getSpeed())); - }); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.DRILL.create(); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.CASING_12PX.get(state.get(FACING)); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - withTileEntityDo(worldIn, pos, DrillTileEntity::destroyNextTick); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(FACING).getAxis(); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == state.get(FACING).getOpposite(); - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } - - @Override - public Class getTileEntityClass() { - return DrillTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - - public static double getDamage(float speed) { - float speedAbs = Math.abs(speed); - double sub1 = Math.min(speedAbs / 16, 2); - double sub2 = Math.min(speedAbs / 32, 4); - double sub3 = Math.min(speedAbs / 64, 4); - return MathHelper.clamp(sub1 + sub2 + sub3, 1, 10); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java deleted file mode 100644 index 1df84bd4e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillInstance.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; - -public class DrillInstance extends SingleRotatingInstance { - - public DrillInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Instancer getModel() { - BlockState referenceState = tile.getBlockState(); - Direction facing = referenceState.get(FACING); - return getRotatingMaterial().getModel(AllBlockPartials.DRILL_HEAD, referenceState, facing); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java deleted file mode 100644 index cda9e9a75..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillMovementBehaviour.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.util.DamageSource; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class DrillMovementBehaviour extends BlockBreakingMovementBehaviour { - - @Override - public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.get(DrillBlock.FACING) - .getOpposite()); - } - - @Override - public Vector3d getActiveAreaOffset(MovementContext context) { - return Vector3d.of(context.state.get(DrillBlock.FACING) - .getDirectionVec()).scale(.65f); - } - - @Override - @OnlyIn(value = Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - if (!Backend.getInstance().canUseInstancing()) - DrillRenderer.renderInContraption(context, renderWorld, matrices, buffer); - } - - @Override - public boolean hasSpecialInstancedRendering() { - return true; - } - - @Nullable - @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { - return new DrillActorInstance(materialManager, simulationWorld, context); - } - - @Override - protected DamageSource getDamageSource() { - return DrillBlock.damageSourceDrill; - } - - @Override - public boolean canBreak(World world, BlockPos breakingPos, BlockState state) { - return super.canBreak(world, breakingPos, state) && !state.getCollisionShape(world, breakingPos) - .isEmpty(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java deleted file mode 100644 index df1e668d9..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillRenderer.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; - -public class DrillRenderer extends KineticTileEntityRenderer { - - public DrillRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.DRILL_HEAD, te.getBlockState()); - } - - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - BlockState state = context.state; - SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.DRILL_HEAD, state); - Direction facing = state.get(DrillBlock.FACING); - - float speed = (float) (context.contraption.stalled - || !VecHelper.isVecPointingTowards(context.relativeMotion, facing - .getOpposite()) ? context.getAnimationSpeed() : 0); - float time = AnimationTickHolder.getRenderTime() / 20; - float angle = (float) (((time * speed) % 360)); - - MatrixStack m = matrices.contraptionStack; - m.push(); - MatrixStacker.of(m) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing)) - .rotateZ(angle) - .unCentre(); - - superBuffer - .transform(m) - .light(matrices.entityMatrix, - ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) - .renderInto(matrices.entityStack, buffer.getBuffer(RenderType.getSolid())); - - m.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillTileEntity.java deleted file mode 100644 index 065d18491..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/DrillTileEntity.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.BlockPos; - -public class DrillTileEntity extends BlockBreakingKineticTileEntity { - - public DrillTileEntity(TileEntityType type) { - super(type); - } - - @Override - protected BlockPos getBreakingPos() { - return getPos().offset(getBlockState().get(DrillBlock.FACING)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java deleted file mode 100644 index fafd7c7e2..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterActorInstance.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; - -import com.jozufozu.flywheel.backend.instancing.InstanceMaterial; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; - -public class HarvesterActorInstance extends ActorInstance { - static double oneOverRadius = 16.0 / 6.5; - static float originOffset = 1 / 16f; - static Vector3d rotOffset = new Vector3d(0.5f, -2 * originOffset + 0.5f, originOffset + 0.5f); - - - ModelData harvester; - private Direction facing; - - private float horizontalAngle; - - private double rotation; - private double previousRotation; - - public HarvesterActorInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { - super(materialManager, simulationWorld, context); - - InstanceMaterial instanceMaterial = materialManager.getTransformMaterial(); - - BlockState state = context.state; - - facing = state.get(HORIZONTAL_FACING); - - harvester = instanceMaterial.getModel(AllBlockPartials.HARVESTER_BLADE, state).createInstance(); - - horizontalAngle = facing.getHorizontalAngle() + ((facing.getAxis() == Direction.Axis.X) ? 180 : 0); - - harvester.setBlockLight(localBlockLight()); - } - - @Override - public void tick() { - super.tick(); - - previousRotation = rotation; - - if (context.contraption.stalled || VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite())) - return; - - double arcLength = context.motion.length(); - - double radians = arcLength * oneOverRadius; - - float deg = AngleHelper.deg(radians); - - deg = (float) (((int) (deg * 3000)) / 3000); - - rotation += deg * 1.25; - - rotation %= 360; - } - - @Override - public void beginFrame() { - MatrixStack ms = new MatrixStack(); - MatrixStacker msr = MatrixStacker.of(ms); - - msr.translate(context.localPos) - .centre() - .rotateY(horizontalAngle) - .unCentre() - .translate(rotOffset) - .rotateX(getRotation()) - .translateBack(rotOffset); - - harvester.setTransform(ms); - } - - private double getRotation() { - return AngleHelper.angleLerp(AnimationTickHolder.getPartialTicks(), previousRotation, rotation); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterBlock.java deleted file mode 100644 index 8f6182917..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterBlock.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.simibubi.create.AllTileEntities; - -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.IBlockReader; - -public class HarvesterBlock extends AttachedActorBlock { - - public HarvesterBlock(Properties p_i48377_1_) { - super(p_i48377_1_); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return new HarvesterTileEntity(AllTileEntities.HARVESTER.get()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java deleted file mode 100644 index 0aed0b128..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterMovementBehaviour.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import static net.minecraft.block.HorizontalBlock.HORIZONTAL_FACING; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.mutable.MutableBoolean; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.CocoaBlock; -import net.minecraft.block.CropsBlock; -import net.minecraft.block.KelpBlock; -import net.minecraft.block.KelpTopBlock; -import net.minecraft.block.SugarCaneBlock; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.item.ItemStack; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.Property; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.IPlantable; - -public class HarvesterMovementBehaviour extends MovementBehaviour { - - @Override - public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.get(HORIZONTAL_FACING) - .getOpposite()); - } - - @Override - public boolean hasSpecialInstancedRendering() { - return true; - } - - @Nullable - @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { - return new HarvesterActorInstance(materialManager, simulationWorld, context); - } - - @Override - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffers) { - if (!Backend.getInstance().canUseInstancing()) - HarvesterRenderer.renderInContraption(context, renderWorld, matrices, buffers); - } - - @Override - public Vector3d getActiveAreaOffset(MovementContext context) { - return Vector3d.of(context.state.get(HORIZONTAL_FACING) - .getDirectionVec()) - .scale(.45); - } - - @Override - public void visitNewPosition(MovementContext context, BlockPos pos) { - World world = context.world; - BlockState stateVisited = world.getBlockState(pos); - boolean notCropButCuttable = false; - - if (world.isRemote) - return; - - if (!isValidCrop(world, pos, stateVisited)) { - if (isValidOther(world, pos, stateVisited)) - notCropButCuttable = true; - else - return; - } - - MutableBoolean seedSubtracted = new MutableBoolean(notCropButCuttable); - BlockState state = stateVisited; - BlockHelper.destroyBlock(world, pos, 1, stack -> { - if (!seedSubtracted.getValue() && stack.isItemEqual(new ItemStack(state.getBlock()))) { - stack.shrink(1); - seedSubtracted.setTrue(); - } - dropItem(context, stack); - }); - - world.setBlockState(pos, cutCrop(world, pos, stateVisited)); - } - - private boolean isValidCrop(World world, BlockPos pos, BlockState state) { - if (state.getBlock() instanceof CropsBlock) { - CropsBlock crop = (CropsBlock) state.getBlock(); - if (!crop.isMaxAge(state)) - return false; - return true; - } - if (state.getCollisionShape(world, pos) - .isEmpty() || state.getBlock() instanceof CocoaBlock) { - for (Property property : state.getProperties()) { - if (!(property instanceof IntegerProperty)) - continue; - if (!property.getName() - .equals(BlockStateProperties.AGE_0_1.getName())) - continue; - if (((IntegerProperty) property).getAllowedValues() - .size() - 1 != state.get((IntegerProperty) property) - .intValue()) - continue; - return true; - } - } - - return false; - } - - private boolean isValidOther(World world, BlockPos pos, BlockState state) { - if (state.getBlock() instanceof CropsBlock) - return false; - if (state.getBlock() instanceof SugarCaneBlock) - return true; - - if (state.getCollisionShape(world, pos) - .isEmpty() || state.getBlock() instanceof CocoaBlock) { - if (state.getBlock() instanceof KelpBlock) - return true; - if (state.getBlock() instanceof KelpTopBlock) - return true; - - for (Property property : state.getProperties()) { - if (!(property instanceof IntegerProperty)) - continue; - if (!property.getName() - .equals(BlockStateProperties.AGE_0_1.getName())) - continue; - return false; - } - - if (state.getBlock() instanceof IPlantable) - return true; - } - - return false; - } - - private BlockState cutCrop(World world, BlockPos pos, BlockState state) { - Block block = state.getBlock(); - if (block instanceof CropsBlock) { - CropsBlock crop = (CropsBlock) block; - return crop.withAge(0); - } - if (block == Blocks.SWEET_BERRY_BUSH) { - return state.with(BlockStateProperties.AGE_0_3, Integer.valueOf(1)); - } - if (block == Blocks.SUGAR_CANE || block == Blocks.KELP) { - if (state.getFluidState() - .isEmpty()) - return Blocks.AIR.getDefaultState(); - return state.getFluidState() - .getBlockState(); - } - if (state.getCollisionShape(world, pos) - .isEmpty() || block instanceof CocoaBlock) { - for (Property property : state.getProperties()) { - if (!(property instanceof IntegerProperty)) - continue; - if (!property.getName() - .equals(BlockStateProperties.AGE_0_1.getName())) - continue; - return state.with((IntegerProperty) property, Integer.valueOf(0)); - } - } - - if (state.getFluidState() - .isEmpty()) - return Blocks.AIR.getDefaultState(); - return state.getFluidState() - .getBlockState(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java deleted file mode 100644 index 3ab34b532..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterRenderer.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; - -public class HarvesterRenderer extends SafeTileEntityRenderer { - - public HarvesterRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(HarvesterTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - BlockState blockState = te.getBlockState(); - SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.HARVESTER_BLADE, blockState); - transform(te.getWorld(), blockState.get(HarvesterBlock.HORIZONTAL_FACING), superBuffer, - te.manuallyAnimatedSpeed); - superBuffer.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getCutoutMipped())); - } - - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffers) { - BlockState blockState = context.state; - Direction facing = blockState.get(HORIZONTAL_FACING); - SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.HARVESTER_BLADE, blockState); - float speed = (float) (!VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite()) - ? context.getAnimationSpeed() - : 0); - if (context.contraption.stalled) - speed = 0; - - superBuffer.transform(matrices.contraptionStack); - transform(context.world, facing, superBuffer, speed); - - superBuffer - .light(matrices.entityMatrix, - ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) - .renderInto(matrices.entityStack, buffers.getBuffer(RenderType.getCutoutMipped())); - } - - public static void transform(World world, Direction facing, SuperByteBuffer superBuffer, float speed) { - float originOffset = 1 / 16f; - Vector3d rotOffset = new Vector3d(0, -2 * originOffset, originOffset).add(VecHelper.getCenterOf(BlockPos.ZERO)); - float time = AnimationTickHolder.getRenderTime(world) / 20; - float angle = (time * speed) % 360; - - superBuffer.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing))) - .translate(rotOffset.x, rotOffset.y, rotOffset.z) - .rotate(Direction.WEST, AngleHelper.rad(angle)) - .translate(-rotOffset.x, -rotOffset.y, -rotOffset.z); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterTileEntity.java deleted file mode 100644 index 0bda273c1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/HarvesterTileEntity.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; - -import net.minecraft.tileentity.TileEntityType; - -public class HarvesterTileEntity extends SyncedTileEntity { - - public HarvesterTileEntity(TileEntityType type) { - super(type); - } - - // For simulations such as Ponder - float manuallyAnimatedSpeed; - - public void setAnimatedSpeed(float speed) { - manuallyAnimatedSpeed = speed; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughBlock.java deleted file mode 100644 index 31a5ffad3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughBlock.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import java.util.UUID; - -import com.mojang.authlib.GameProfile; - -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.common.util.FakePlayer; - -public class PloughBlock extends AttachedActorBlock { - - public PloughBlock(Properties p_i48377_1_) { - super(p_i48377_1_); - } - - /** - * The OnHoeUse event takes a player, so we better not pass null - */ - static class PloughFakePlayer extends FakePlayer { - - public static final GameProfile PLOUGH_PROFILE = - new GameProfile(UUID.fromString("9e2faded-eeee-4ec2-c314-dad129ae971d"), "Plough"); - - public PloughFakePlayer(ServerWorld world) { - super(world, PLOUGH_PROFILE); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java deleted file mode 100644 index 98e628ab0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PloughMovementBehaviour.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import static net.minecraft.block.HorizontalBlock.HORIZONTAL_FACING; - -import com.simibubi.create.content.contraptions.components.actors.PloughBlock.PloughFakePlayer; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.FarmlandBlock; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.Items; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootParameters; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.RayTraceResult.Type; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class PloughMovementBehaviour extends BlockBreakingMovementBehaviour { - - @Override - public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.get(HORIZONTAL_FACING) - .getOpposite()); - } - - @Override - public void visitNewPosition(MovementContext context, BlockPos pos) { - super.visitNewPosition(context, pos); - World world = context.world; - if (world.isRemote) - return; - BlockPos below = pos.down(); - if (!world.isBlockPresent(below)) - return; - - Vector3d vec = VecHelper.getCenterOf(pos); - PloughFakePlayer player = getPlayer(context); - - if (player == null) - return; - - BlockRayTraceResult ray = world - .rayTraceBlocks(new RayTraceContext(vec, vec.add(0, -1, 0), BlockMode.OUTLINE, FluidMode.NONE, player)); - if (ray.getType() != Type.BLOCK) - return; - - ItemUseContext ctx = new ItemUseContext(player, Hand.MAIN_HAND, ray); - new ItemStack(Items.DIAMOND_HOE).onItemUse(ctx); - } - - @Override - public Vector3d getActiveAreaOffset(MovementContext context) { - return Vector3d.of(context.state.get(HORIZONTAL_FACING) - .getDirectionVec()).scale(.45); - } - - @Override - protected boolean throwsEntities() { - return true; - } - - @Override - public boolean canBreak(World world, BlockPos breakingPos, BlockState state) { - return state.getCollisionShape(world, breakingPos) - .isEmpty() && !(state.getBlock() instanceof FlowingFluidBlock) - && !(world.getBlockState(breakingPos.down()) - .getBlock() instanceof FarmlandBlock); - } - - @Override - protected void onBlockBroken(MovementContext context, BlockPos pos, BlockState brokenState) { - super.onBlockBroken(context, pos, brokenState); - - if (brokenState.getBlock() == Blocks.SNOW && context.world instanceof ServerWorld) { - ServerWorld world = (ServerWorld) context.world; - brokenState.getDrops(new LootContext.Builder(world).withParameter(LootParameters.BLOCK_STATE, brokenState) - .withParameter(LootParameters.ORIGIN, Vector3d.ofCenter(pos)) - .withParameter(LootParameters.THIS_ENTITY, getPlayer(context)) - .withParameter(LootParameters.TOOL, new ItemStack(Items.IRON_SHOVEL))) - .forEach(s -> dropItem(context, s)); - } - } - - @Override - public void stopMoving(MovementContext context) { - super.stopMoving(context); - if (context.temporaryData instanceof PloughFakePlayer) - ((PloughFakePlayer) context.temporaryData).remove(); - } - - private PloughFakePlayer getPlayer(MovementContext context) { - if (!(context.temporaryData instanceof PloughFakePlayer) && context.world != null) { - PloughFakePlayer player = new PloughFakePlayer((ServerWorld) context.world); - player.setHeldItem(Hand.MAIN_HAND, new ItemStack(Items.DIAMOND_HOE)); - context.temporaryData = player; - } - return (PloughFakePlayer) context.temporaryData; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableFluidInterfaceTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableFluidInterfaceTileEntity.java deleted file mode 100644 index 4c27df6f1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableFluidInterfaceTileEntity.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; - -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.templates.FluidTank; - -public class PortableFluidInterfaceTileEntity extends PortableStorageInterfaceTileEntity { - - protected LazyOptional capability; - - public PortableFluidInterfaceTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - capability = createEmptyHandler(); - } - - @Override - public void startTransferringTo(Contraption contraption, float distance) { - LazyOptional oldcap = capability; - capability = LazyOptional.of(() -> new InterfaceFluidHandler(contraption.fluidInventory)); - oldcap.invalidate(); - super.startTransferringTo(contraption, distance); - } - - @Override - protected void invalidateCapability() { - capability.invalidate(); - } - - @Override - protected void stopTransferring() { - LazyOptional oldcap = capability; - capability = createEmptyHandler(); - oldcap.invalidate(); - super.stopTransferring(); - } - - private LazyOptional createEmptyHandler() { - return LazyOptional.of(() -> new InterfaceFluidHandler(new FluidTank(0))); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (isFluidHandlerCap(cap)) - return capability.cast(); - return super.getCapability(cap, side); - } - - class InterfaceFluidHandler implements IFluidHandler { - - private IFluidHandler wrapped; - - public InterfaceFluidHandler(IFluidHandler wrapped) { - this.wrapped = wrapped; - } - - @Override - public int getTanks() { - return wrapped.getTanks(); - } - - @Override - public FluidStack getFluidInTank(int tank) { - return wrapped.getFluidInTank(tank); - } - - @Override - public int getTankCapacity(int tank) { - return wrapped.getTankCapacity(tank); - } - - @Override - public boolean isFluidValid(int tank, FluidStack stack) { - return wrapped.isFluidValid(tank, stack); - } - - @Override - public int fill(FluidStack resource, FluidAction action) { - if (!isConnected()) - return 0; - int fill = wrapped.fill(resource, action); - if (fill > 0 && action.execute()) - onContentTransferred(); - return fill; - } - - @Override - public FluidStack drain(FluidStack resource, FluidAction action) { - if (!canTransfer()) - return FluidStack.EMPTY; - FluidStack drain = wrapped.drain(resource, action); - if (!drain.isEmpty() && action.execute()) - onContentTransferred(); - return drain; - } - - @Override - public FluidStack drain(int maxDrain, FluidAction action) { - if (!canTransfer()) - return FluidStack.EMPTY; - FluidStack drain = wrapped.drain(maxDrain, action); - if (!drain.isEmpty() && (action.execute() || drain.getAmount() == 1)) - onContentTransferred(); - return drain; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java deleted file mode 100644 index 227c42dee..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableItemInterfaceTileEntity.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.foundation.item.ItemHandlerWrapper; - -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemStackHandler; - -public class PortableItemInterfaceTileEntity extends PortableStorageInterfaceTileEntity { - - protected LazyOptional capability; - - public PortableItemInterfaceTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - capability = LazyOptional.empty(); - } - - @Override - public void startTransferringTo(Contraption contraption, float distance) { - LazyOptional oldCap = capability; - capability = LazyOptional.of(() -> new InterfaceItemHandler(contraption.inventory)); - oldCap.invalidate(); - super.startTransferringTo(contraption, distance); - } - - @Override - protected void stopTransferring() { - LazyOptional oldCap = capability; - capability = LazyOptional.of(() -> new InterfaceItemHandler(new ItemStackHandler(0))); - oldCap.invalidate(); - super.stopTransferring(); - } - - @Override - protected void invalidateCapability() { - capability.invalidate(); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (isItemHandlerCap(cap)) - return capability.cast(); - return super.getCapability(cap, side); - } - - class InterfaceItemHandler extends ItemHandlerWrapper { - - public InterfaceItemHandler(IItemHandlerModifiable wrapped) { - super(wrapped); - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - if (!canTransfer()) - return ItemStack.EMPTY; - ItemStack extractItem = super.extractItem(slot, amount, simulate); - if (!simulate && !extractItem.isEmpty()) - onContentTransferred(); - return extractItem; - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - if (!canTransfer()) - return stack; - ItemStack insertItem = super.insertItem(slot, stack, simulate); - if (!simulate && !insertItem.equals(stack, false)) - onContentTransferred(); - return insertItem; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java deleted file mode 100644 index 7afae49c4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceBlock.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.block.ProperDirectionalBlock; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class PortableStorageInterfaceBlock extends ProperDirectionalBlock - implements ITE { - - boolean fluids; - - public static PortableStorageInterfaceBlock forItems(Properties p_i48415_1_) { - return new PortableStorageInterfaceBlock(p_i48415_1_, false); - } - - public static PortableStorageInterfaceBlock forFluids(Properties p_i48415_1_) { - return new PortableStorageInterfaceBlock(p_i48415_1_, true); - } - - private PortableStorageInterfaceBlock(Properties p_i48415_1_, boolean fluids) { - super(p_i48415_1_); - this.fluids = fluids; - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return (fluids ? AllTileEntities.PORTABLE_FLUID_INTERFACE : AllTileEntities.PORTABLE_STORAGE_INTERFACE) - .create(); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_, - boolean p_220069_6_) { - withTileEntityDo(world, pos, PortableStorageInterfaceTileEntity::neighbourChanged); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - return getDefaultState().with(FACING, context.getNearestLookingDirection() - .getOpposite()); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.PORTABLE_STORAGE_INTERFACE.get(state.get(FACING)); - } - - @Override - public boolean hasComparatorInputOverride(BlockState state) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) { - return getTileEntityOptional(worldIn, pos).map(te -> te.isConnected() ? 15 : 0) - .orElse(0); - } - - @Override - public Class getTileEntityClass() { - return PortableStorageInterfaceTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java deleted file mode 100644 index 6bd6b8f13..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceMovement.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import java.util.Optional; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class PortableStorageInterfaceMovement extends MovementBehaviour { - - static final String _workingPos_ = "WorkingPos"; - static final String _clientPrevPos_ = "ClientPrevPos"; - - @Override - public Vector3d getActiveAreaOffset(MovementContext context) { - return Vector3d.of(context.state.get(PortableStorageInterfaceBlock.FACING) - .getDirectionVec()).scale(1.85f); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - PortableStorageInterfaceRenderer.renderInContraption(context, renderWorld, matrices, buffer); - } - - @Override - public void visitNewPosition(MovementContext context, BlockPos pos) { - context.data.remove(_workingPos_); - if (findInterface(context, pos)) - context.stall = true; - } - - protected boolean findInterface(MovementContext context, BlockPos pos) { - Optional currentFacingIfValid = getCurrentFacingIfValid(context); - if (!currentFacingIfValid.isPresent()) - return false; - - Direction currentFacing = currentFacingIfValid.get(); - PortableStorageInterfaceTileEntity psi = - findStationaryInterface(context.world, pos, context.state, currentFacing); - if (psi == null) - return false; - - if ((psi.isTransferring() || psi.isPowered()) && !context.world.isRemote) - return false; - context.data.put(_workingPos_, NBTUtil.writeBlockPos(psi.getPos())); - if (!context.world.isRemote) { - Vector3d diff = VecHelper.getCenterOf(psi.getPos()) - .subtract(context.position); - diff = VecHelper.project(diff, Vector3d.of(currentFacing.getDirectionVec())); - float distance = (float) (diff.length() + 1.85f - 1); - psi.startTransferringTo(context.contraption, distance); - } else { - context.data.put(_clientPrevPos_, NBTUtil.writeBlockPos(pos)); - } - return true; - } - - @Override - public void tick(MovementContext context) { - if (context.world.isRemote) { - boolean stalled = context.contraption.stalled; - if (stalled && !context.data.contains(_workingPos_)) { - BlockPos pos = new BlockPos(context.position); - if (!context.data.contains(_clientPrevPos_) - || !NBTUtil.readBlockPos(context.data.getCompound(_clientPrevPos_)) - .equals(pos)) - findInterface(context, pos); - } - if (!stalled) - reset(context); - return; - } - - if (!context.data.contains(_workingPos_)) - return; - - BlockPos pos = NBTUtil.readBlockPos(context.data.getCompound(_workingPos_)); - Optional currentFacingIfValid = getCurrentFacingIfValid(context); - if (!currentFacingIfValid.isPresent()) - return; - - PortableStorageInterfaceTileEntity stationaryInterface = - getStationaryInterfaceAt(context.world, pos, context.state, currentFacingIfValid.get()); - if (stationaryInterface == null || !stationaryInterface.isTransferring()) { - reset(context); - return; - } - } - - @Override - public void stopMoving(MovementContext context) { - reset(context); - } - - public void reset(MovementContext context) { - context.data.remove(_clientPrevPos_); - context.data.remove(_workingPos_); - context.stall = false; - } - - private PortableStorageInterfaceTileEntity findStationaryInterface(World world, BlockPos pos, BlockState state, - Direction facing) { - for (int i = 0; i < 2; i++) { - PortableStorageInterfaceTileEntity interfaceAt = - getStationaryInterfaceAt(world, pos.offset(facing, i), state, facing); - if (interfaceAt == null) - continue; - return interfaceAt; - } - return null; - } - - private PortableStorageInterfaceTileEntity getStationaryInterfaceAt(World world, BlockPos pos, BlockState state, - Direction facing) { - TileEntity te = world.getTileEntity(pos); - if (!(te instanceof PortableStorageInterfaceTileEntity)) - return null; - BlockState blockState = world.getBlockState(pos); - if (blockState.getBlock() != state.getBlock()) - return null; - if (blockState.get(PortableStorageInterfaceBlock.FACING) != facing.getOpposite()) - return null; - return (PortableStorageInterfaceTileEntity) te; - } - - private Optional getCurrentFacingIfValid(MovementContext context) { - Vector3d directionVec = Vector3d.of(context.state.get(PortableStorageInterfaceBlock.FACING) - .getDirectionVec()); - directionVec = context.rotation.apply(directionVec); - Direction facingFromVector = Direction.getFacingFromVector(directionVec.x, directionVec.y, directionVec.z); - if (directionVec.distanceTo(Vector3d.of(facingFromVector.getDirectionVec())) > 1 / 2f) - return Optional.empty(); - return Optional.of(facingFromVector); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java deleted file mode 100644 index 287b2314f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceRenderer.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import java.util.function.Consumer; - -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class PortableStorageInterfaceRenderer extends SafeTileEntityRenderer { - - public PortableStorageInterfaceRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(PortableStorageInterfaceTileEntity te, float partialTicks, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - BlockState blockState = te.getBlockState(); - float progress = te.getExtensionDistance(partialTicks); - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - render(blockState, te.isConnected(), progress, null, sbb -> sbb.light(light) - .renderInto(ms, vb)); - } - - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - BlockState blockState = context.state; - PortableStorageInterfaceTileEntity te = getTargetPSI(context); - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - float renderPartialTicks = AnimationTickHolder.getPartialTicks(); - - float progress = 0; - boolean lit = false; - if (te != null) { - progress = te.getExtensionDistance(renderPartialTicks); - lit = te.isConnected(); - } - - render(blockState, lit, progress, matrices.contraptionStack, sbb -> sbb.light(matrices.entityMatrix, - ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) - .renderInto(matrices.entityStack, vb)); - } - - private static void render(BlockState blockState, boolean lit, float progress, - MatrixStack local, Consumer drawCallback) { - SuperByteBuffer middle = PartialBufferer.get(getMiddleForState(blockState, lit), blockState); - SuperByteBuffer top = PartialBufferer.get(getTopForState(blockState), blockState); - - if (local != null) { - middle.transform(local); - top.transform(local); - } - Direction facing = blockState.get(PortableStorageInterfaceBlock.FACING); - rotateToFacing(middle, facing); - rotateToFacing(top, facing); - middle.translate(0, progress * 0.5f + 0.375f, 0); - top.translate(0, progress, 0); - - drawCallback.accept(middle); - drawCallback.accept(top); - } - - private static void rotateToFacing(SuperByteBuffer buffer, Direction facing) { - buffer.matrixStacker() - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) - .unCentre(); - } - - protected static PortableStorageInterfaceTileEntity getTargetPSI(MovementContext context) { - String _workingPos_ = PortableStorageInterfaceMovement._workingPos_; - if (!context.contraption.stalled || !context.data.contains(_workingPos_)) - return null; - - BlockPos pos = NBTUtil.readBlockPos(context.data.getCompound(_workingPos_)); - TileEntity tileEntity = context.world.getTileEntity(pos); - if (!(tileEntity instanceof PortableStorageInterfaceTileEntity)) - return null; - - PortableStorageInterfaceTileEntity psi = (PortableStorageInterfaceTileEntity) tileEntity; - if (!psi.isTransferring()) - return null; - return psi; - } - - static PartialModel getMiddleForState(BlockState state, boolean lit) { - if (AllBlocks.PORTABLE_FLUID_INTERFACE.has(state)) - return lit ? AllBlockPartials.PORTABLE_FLUID_INTERFACE_MIDDLE_POWERED - : AllBlockPartials.PORTABLE_FLUID_INTERFACE_MIDDLE; - return lit ? AllBlockPartials.PORTABLE_STORAGE_INTERFACE_MIDDLE_POWERED - : AllBlockPartials.PORTABLE_STORAGE_INTERFACE_MIDDLE; - } - - static PartialModel getTopForState(BlockState state) { - if (AllBlocks.PORTABLE_FLUID_INTERFACE.has(state)) - return AllBlockPartials.PORTABLE_FLUID_INTERFACE_TOP; - return AllBlockPartials.PORTABLE_STORAGE_INTERFACE_TOP; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java deleted file mode 100644 index 30bb7d191..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/PortableStorageInterfaceTileEntity.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import java.util.List; - -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public abstract class PortableStorageInterfaceTileEntity extends SmartTileEntity { - - protected int transferTimer; - protected float distance; - protected LerpedFloat connectionAnimation; - protected boolean powered; - protected Entity connectedEntity; - - public PortableStorageInterfaceTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - transferTimer = 0; - connectionAnimation = LerpedFloat.linear() - .startWithValue(0); - powered = false; - } - - public void startTransferringTo(Contraption contraption, float distance) { - this.distance = distance; - connectedEntity = contraption.entity; - startConnecting(); - notifyUpdate(); - } - - protected void stopTransferring() { - connectedEntity = null; - } - - public boolean canTransfer() { - if (connectedEntity != null && !connectedEntity.isAlive()) - stopTransferring(); - return connectedEntity != null && isConnected(); - } - - protected abstract void invalidateCapability(); - - @Override - public void tick() { - super.tick(); - boolean wasConnected = isConnected(); - int timeUnit = getTransferTimeout() / 2; - - if (transferTimer > 0 && (!isVirtual() || transferTimer != timeUnit)) { - transferTimer--; - if (transferTimer == 0 || powered) - stopTransferring(); - } - - boolean isConnected = isConnected(); - if (wasConnected != isConnected && !world.isRemote) - markDirty(); - - float progress = 0; - if (isConnected) - progress = 1; - else if (transferTimer >= timeUnit * 3) - progress = MathHelper.lerp((transferTimer - timeUnit * 3) / (float) timeUnit, 1, 0); - else if (transferTimer < timeUnit) - progress = MathHelper.lerp(transferTimer / (float) timeUnit, 0, 1); - connectionAnimation.setValue(progress); - } - - @Override - public void remove() { - super.remove(); - invalidateCapability(); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - transferTimer = compound.getInt("Timer"); - distance = compound.getFloat("Distance"); - powered = compound.getBoolean("Powered"); - } - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - super.write(compound, clientPacket); - compound.putInt("Timer", transferTimer); - compound.putFloat("Distance", distance); - compound.putBoolean("Powered", powered); - } - - public void neighbourChanged() { - boolean isBlockPowered = world.isBlockPowered(pos); - if (isBlockPowered == powered) - return; - powered = isBlockPowered; - sendData(); - } - - public boolean isPowered() { - return powered; - } - - protected AxisAlignedBB cachedBoundingBox; - - @Override - @OnlyIn(Dist.CLIENT) - public AxisAlignedBB getRenderBoundingBox() { - if (cachedBoundingBox == null) { - cachedBoundingBox = super.getRenderBoundingBox().grow(2); - } - return cachedBoundingBox; - } - - public boolean isTransferring() { - return transferTimer != 0; - } - - boolean isConnected() { - int timeUnit = getTransferTimeout() / 2; - return transferTimer >= timeUnit && transferTimer <= timeUnit * 3; - } - - float getExtensionDistance(float partialTicks) { - return connectionAnimation.getValue(partialTicks) * distance / 2; - } - - float getConnectionDistance() { - return distance; - } - - public void startConnecting() { - transferTimer = getTransferTimeout() * 2; - } - - public void onContentTransferred() { - int timeUnit = getTransferTimeout() / 2; - transferTimer = timeUnit * 3; - sendData(); - } - - protected Integer getTransferTimeout() { - return AllConfigs.SERVER.logistics.psiTimeout.get(); - } - - @Override - public void addBehaviours(List behaviours) {} - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java deleted file mode 100644 index 375445b5f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SawMovementBehaviour.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.simibubi.create.content.contraptions.components.saw.SawBlock; -import com.simibubi.create.content.contraptions.components.saw.SawRenderer; -import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.foundation.utility.TreeCutter; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.ItemHandlerHelper; - -public class SawMovementBehaviour extends BlockBreakingMovementBehaviour { - - @Override - public boolean isActive(MovementContext context) { - return !VecHelper.isVecPointingTowards(context.relativeMotion, context.state.get(SawBlock.FACING) - .getOpposite()); - } - - @Override - public Vector3d getActiveAreaOffset(MovementContext context) { - return Vector3d.of(context.state.get(SawBlock.FACING).getDirectionVec()).scale(.65f); - } - - @Override - public void visitNewPosition(MovementContext context, BlockPos pos) { - super.visitNewPosition(context, pos); - Vector3d facingVec = Vector3d.of(context.state.get(SawBlock.FACING).getDirectionVec()); - facingVec = context.rotation.apply(facingVec); - - Direction closestToFacing = Direction.getFacingFromVector(facingVec.x, facingVec.y, facingVec.z); - if(closestToFacing.getAxis().isVertical() && context.data.contains("BreakingPos")) { - context.data.remove("BreakingPos"); - context.stall = false; - } - } - - @Override - public boolean canBreak(World world, BlockPos breakingPos, BlockState state) { - return super.canBreak(world, breakingPos, state) && SawTileEntity.isSawable(state); - } - - @Override - protected void onBlockBroken(MovementContext context, BlockPos pos, BlockState brokenState) { - if (brokenState.isIn(BlockTags.LEAVES)) - return; - TreeCutter.findTree(context.world, pos).destroyBlocks(context.world, null, (stack, dropPos) -> dropItemFromCutTree(context, stack, dropPos)); - } - - public void dropItemFromCutTree(MovementContext context, BlockPos pos, ItemStack stack) { - ItemStack remainder = ItemHandlerHelper.insertItem(context.contraption.inventory, stack, false); - if (remainder.isEmpty()) - return; - - World world = context.world; - Vector3d dropPos = VecHelper.getCenterOf(pos); - float distance = (float) dropPos.distanceTo(context.position); - ItemEntity entity = new ItemEntity(world, dropPos.x, dropPos.y, dropPos.z, remainder); - entity.setMotion(context.relativeMotion.scale(distance / 20f)); - world.addEntity(entity); - } - - @Override - @OnlyIn(value = Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - SawRenderer.renderInContraption(context, renderWorld, matrices, buffer); - } - - @Override - protected DamageSource getDamageSource() { - return SawBlock.damageSourceSaw; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java deleted file mode 100644 index bd2f0001c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatBlock.java +++ /dev/null @@ -1,152 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import java.util.List; - -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.foundation.utility.DyeHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.MobEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.pathfinding.PathNodeType; -import net.minecraft.pathfinding.PathType; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class SeatBlock extends Block { - - private final boolean inCreativeTab; - - public SeatBlock(Properties p_i48440_1_, boolean inCreativeTab) { - super(p_i48440_1_); - this.inCreativeTab = inCreativeTab; - } - - @Override - public void fillItemGroup(ItemGroup group, NonNullList p_149666_2_) { - if (group != ItemGroup.SEARCH && !inCreativeTab) - return; - super.fillItemGroup(group, p_149666_2_); - } - - @Override - public void onFallenUpon(World p_180658_1_, BlockPos p_180658_2_, Entity p_180658_3_, float p_180658_4_) { - super.onFallenUpon(p_180658_1_, p_180658_2_, p_180658_3_, p_180658_4_ * 0.5F); - } - - @Override - public void onLanded(IBlockReader reader, Entity entity) { - BlockPos pos = entity.getBlockPos(); - if (entity instanceof PlayerEntity || !(entity instanceof LivingEntity) || !canBePickedUp(entity) || isSeatOccupied(entity.world, pos)) { - Blocks.PINK_BED.onLanded(reader, entity); - return; - } - if (reader.getBlockState(pos) - .getBlock() != this) - return; - sitDown(entity.world, pos, entity); - } - - @Override - public PathNodeType getAiPathNodeType(BlockState state, IBlockReader world, BlockPos pos, - @Nullable MobEntity entity) { - return PathNodeType.RAIL; - } - - @Override - public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.SEAT; - } - - @Override - public VoxelShape getCollisionShape(BlockState p_220071_1_, IBlockReader p_220071_2_, BlockPos p_220071_3_, - ISelectionContext p_220071_4_) { - return AllShapes.SEAT_COLLISION; - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult p_225533_6_) { - if (player.isSneaking()) - return ActionResultType.PASS; - - ItemStack heldItem = player.getHeldItem(hand); - for (DyeColor color : DyeColor.values()) { - if (!heldItem.getItem() - .isIn(DyeHelper.getTagOfDye(color))) - continue; - if (world.isRemote) - return ActionResultType.SUCCESS; - - BlockState newState = AllBlocks.SEATS.get(color).getDefaultState(); - if (newState != state) - world.setBlockState(pos, newState); - return ActionResultType.SUCCESS; - } - - List seats = world.getEntitiesWithinAABB(SeatEntity.class, new AxisAlignedBB(pos)); - if (!seats.isEmpty()) { - SeatEntity seatEntity = seats.get(0); - List passengers = seatEntity.getPassengers(); - if (!passengers.isEmpty() && passengers.get(0) instanceof PlayerEntity) - return ActionResultType.PASS; - if (!world.isRemote) { - seatEntity.removePassengers(); - player.startRiding(seatEntity); - } - return ActionResultType.SUCCESS; - } - - if (world.isRemote) - return ActionResultType.SUCCESS; - sitDown(world, pos, player); - return ActionResultType.SUCCESS; - } - - public static boolean isSeatOccupied(World world, BlockPos pos) { - return !world.getEntitiesWithinAABB(SeatEntity.class, new AxisAlignedBB(pos)) - .isEmpty(); - } - - public static boolean canBePickedUp(Entity passenger) { - return !(passenger instanceof PlayerEntity) && (passenger instanceof LivingEntity); - } - - public static void sitDown(World world, BlockPos pos, Entity entity) { - if (world.isRemote) - return; - SeatEntity seat = new SeatEntity(world, pos); - seat.setPos(pos.getX() + .5f, pos.getY(), pos.getZ() + .5f); - world.addEntity(seat); - entity.startRiding(seat, true); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatEntity.java deleted file mode 100644 index b5dea8fcd..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatEntity.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import com.simibubi.create.AllEntityTypes; - -import net.minecraft.client.renderer.culling.ClippingHelper; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.IPacket; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData; -import net.minecraftforge.fml.network.NetworkHooks; - -public class SeatEntity extends Entity implements IEntityAdditionalSpawnData { - - public SeatEntity(EntityType p_i48580_1_, World p_i48580_2_) { - super(p_i48580_1_, p_i48580_2_); - } - - public SeatEntity(World world, BlockPos pos) { - this(AllEntityTypes.SEAT.get(), world); - noClip = true; - } - - public static EntityType.Builder build(EntityType.Builder builder) { - @SuppressWarnings("unchecked") - EntityType.Builder entityBuilder = (EntityType.Builder) builder; - return entityBuilder.size(0.25f, 0.35f); - } - - @Override - public AxisAlignedBB getBoundingBox() { - return super.getBoundingBox(); - } - - @Override - public void setPos(double x, double y, double z) { - super.setPos(x, y, z); - AxisAlignedBB bb = getBoundingBox(); - Vector3d diff = new Vector3d(x, y, z).subtract(bb.getCenter()); - setBoundingBox(bb.offset(diff)); - } - - @Override - public void setMotion(Vector3d p_213317_1_) {} - - @Override - public void tick() { - if (world.isRemote) - return; - boolean blockPresent = world.getBlockState(getBlockPos()) - .getBlock() instanceof SeatBlock; - if (isBeingRidden() && blockPresent) - return; - this.remove(); - } - - @Override - protected boolean canBeRidden(Entity entity) { - // Fake Players (tested with deployers) have a BUNCH of weird issues, don't let them ride seats - return !(entity instanceof FakePlayer); - } - - @Override - protected void removePassenger(Entity entity) { - super.removePassenger(entity); - Vector3d pos = entity.getPositionVec(); - entity.setPosition(pos.x, pos.y + 0.85f, pos.z); - } - - @Override - protected void registerData() {} - - @Override - protected void readAdditional(CompoundNBT p_70037_1_) {} - - @Override - protected void writeAdditional(CompoundNBT p_213281_1_) {} - - @Override - public IPacket createSpawnPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - - public static class Render extends EntityRenderer { - - public Render(EntityRendererManager p_i46179_1_) { - super(p_i46179_1_); - } - - @Override - public boolean shouldRender(SeatEntity p_225626_1_, ClippingHelper p_225626_2_, double p_225626_3_, double p_225626_5_, double p_225626_7_) { - return false; - } - - @Override - public ResourceLocation getEntityTexture(SeatEntity p_110775_1_) { - return null; - } - } - - @Override - public void writeSpawnData(PacketBuffer buffer) {} - - @Override - public void readSpawnData(PacketBuffer additionalData) {} -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatMovementBehaviour.java deleted file mode 100644 index e2143baf2..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/SeatMovementBehaviour.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors; - -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.SlabBlock; -import net.minecraft.entity.Entity; -import net.minecraft.state.properties.SlabType; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class SeatMovementBehaviour extends MovementBehaviour { - - @Override - public void startMoving(MovementContext context) { - super.startMoving(context); - int indexOf = context.contraption.getSeats() - .indexOf(context.localPos); - context.data.putInt("SeatIndex", indexOf); - } - - @Override - public void visitNewPosition(MovementContext context, BlockPos pos) { - super.visitNewPosition(context, pos); - - AbstractContraptionEntity contraptionEntity = context.contraption.entity; - if (contraptionEntity == null) - return; - int index = context.data.getInt("SeatIndex"); - if (index == -1) - return; - - Map seatMapping = context.contraption.getSeatMapping(); - BlockState blockState = context.world.getBlockState(pos); - boolean slab = blockState.getBlock() instanceof SlabBlock && blockState.get(SlabBlock.TYPE) == SlabType.BOTTOM; - boolean solid = blockState.isSolid() || slab; - - // Occupied - if (seatMapping.containsValue(index)) { - if (!solid) - return; - Entity toDismount = null; - for (Map.Entry entry : seatMapping.entrySet()) { - if (entry.getValue() != index) - continue; - for (Entity entity : contraptionEntity.getPassengers()) { - if (!entry.getKey() - .equals(entity.getUniqueID())) - continue; - toDismount = entity; - } - } - if (toDismount != null) { - toDismount.stopRiding(); - Vector3d position = VecHelper.getCenterOf(pos) - .add(0, slab ? .5f : 1f, 0); - toDismount.setPositionAndUpdate(position.x, position.y, position.z); - toDismount.getPersistentData() - .remove("ContraptionDismountLocation"); - } - return; - } - - if (solid) - return; - - List nearbyEntities = context.world.getEntitiesWithinAABB(Entity.class, - new AxisAlignedBB(pos).shrink(1 / 16f), SeatBlock::canBePickedUp); - if (!nearbyEntities.isEmpty()) - contraptionEntity.addSittingPassenger(nearbyEntities.get(0), index); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/StorageInterfaceMovement.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/StorageInterfaceMovement.java deleted file mode 100644 index c4d4b606e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/StorageInterfaceMovement.java +++ /dev/null @@ -1,157 +0,0 @@ -//package com.simibubi.create.content.contraptions.components.actors; -// -//import java.util.function.Predicate; -// -//import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -//import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -//import com.simibubi.create.content.logistics.block.transposer.TransposerBlock; -//import com.simibubi.create.content.logistics.block.transposer.TransposerTileEntity; -//import com.simibubi.create.foundation.config.AllConfigs; -//import com.simibubi.create.foundation.item.ItemHelper; -//import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -//import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -//import com.simibubi.create.foundation.tileEntity.behaviour.inventory.SingleTargetAutoExtractingBehaviour; -//import com.simibubi.create.foundation.utility.VecHelper; -// -//import net.minecraft.item.ItemStack; -//import net.minecraft.nbt.NBTUtil; -//import net.minecraft.tileentity.TileEntity; -//import net.minecraft.util.Direction; -//import net.minecraft.util.Direction.Axis; -//import net.minecraft.util.math.BlockPos; -//import net.minecraft.util.math.vector.Vector3d; -//import net.minecraft.world.World; -//import net.minecraftforge.items.IItemHandlerModifiable; -//import net.minecraftforge.items.ItemHandlerHelper; -// -//public class StorageInterfaceMovement extends MovementBehaviour { -// -// private static final String _exporting_ = "Exporting"; -// private static final String _delay_ = "Delay"; -// private static final String _workingPos_ = "WorkingPos"; -// -// @Override -// public Vector3d getActiveAreaOffset(MovementContext context) { -// return new Vector3d(context.state.get(PortableStorageInterfaceBlock.FACING).getDirectionVec()).scale(.85f); -// } -// -// @Override -// public void visitNewPosition(MovementContext context, BlockPos pos) { -// Direction currentFacing = getCurrentFacing(context); -// TransposerTileEntity transposer = getValidTransposer(context.world, pos, currentFacing.getAxis()); -// if (transposer == null) -// return; -// context.data.put(_workingPos_, NBTUtil.writeBlockPos(pos)); -// context.data.putBoolean(_exporting_, -// TransposerBlock.getBlockFacing(transposer.getBlockState()) != currentFacing); -// context.stall = true; -// } -// -// @Override -// public void tick(MovementContext context) { -// if (!context.data.contains(_workingPos_)) -// return; -// if (context.world.isRemote) -// return; -// -// BlockPos pos = NBTUtil.readBlockPos(context.data.getCompound(_workingPos_)); -// TransposerTileEntity transposer = getValidTransposer(context.world, pos, getCurrentFacing(context).getAxis()); -// if (transposer == null) { -// reset(context); -// return; -// } -// -// int nextExtract = context.data.getInt(_delay_); -// if (nextExtract > 0) { -// nextExtract--; -// context.data.putInt(_delay_, nextExtract); -// return; -// } -// -// boolean extract = context.data.getBoolean(_exporting_); -// boolean success = false; -// IItemHandlerModifiable inv = context.contraption.inventory; -// SingleTargetAutoExtractingBehaviour extracting = -// TileEntityBehaviour.get(transposer, SingleTargetAutoExtractingBehaviour.TYPE); -// FilteringBehaviour filtering = TileEntityBehaviour.get(transposer, FilteringBehaviour.TYPE); -// -// if (extract) { -// // Export from Contraption -// Predicate test = extracting.getFilterTest(); -// int exactAmount = extracting.getAmountFromFilter(); -// ItemStack itemExtracted = ItemStack.EMPTY; -// if (exactAmount != -1) -// itemExtracted = ItemHelper.extract(inv, test, exactAmount, false); -// else -// itemExtracted = ItemHelper.extract(inv, test, transposer::amountToExtract, false); -// -// if (!itemExtracted.isEmpty()) { -// transposer.onExtract(itemExtracted); -// success = exactAmount == -1; -// } -// -// } else { -// // Import to Contraption -// if (extracting != null) { -// extracting.setSynchronized(false); -// extracting.withAdditionalFilter(stack -> { -// if (filtering.anyAmount()) -// return true; -// return ItemHandlerHelper.insertItemStacked(inv, stack, true).isEmpty(); -// }); -// -// extracting.withAmountThreshold(stack -> { -// ItemStack tester = stack.copy(); -// tester.setCount(tester.getMaxStackSize()); -// return stack.getCount() - ItemHandlerHelper.insertItemStacked(inv, stack, true).getCount(); -// }); -// -// extracting.setCallback(stack -> { -// ItemHandlerHelper.insertItemStacked(inv, stack, false); -// }); -// -// success = extracting.extract() && filtering.anyAmount(); -// extracting.setSynchronized(true); -// transposer.applyFilteringCallbacks(); -// extracting.setCallback(transposer::onExtract); -// } -// } -// -// if (!success) { -// reset(context); -// return; -// } -// -// context.data.putInt(_delay_, AllConfigs.SERVER.logistics.extractorDelay.get()); -// } -// -// @Override -// public void stopMoving(MovementContext context) { -// reset(context); -// } -// -// public void reset(MovementContext context) { -// context.data.remove(_workingPos_); -// context.data.remove(_delay_); -// context.data.remove(_exporting_); -// context.stall = false; -// } -// -// private TransposerTileEntity getValidTransposer(World world, BlockPos pos, Axis validAxis) { -// TileEntity te = world.getTileEntity(pos); -// if (!(te instanceof TransposerTileEntity)) -// return null; -// if (TransposerBlock.getBlockFacing(world.getBlockState(pos)).getAxis() != validAxis) -// return null; -// if (world.isBlockPowered(pos)) -// return null; -// return (TransposerTileEntity) te; -// } -// -// private Direction getCurrentFacing(MovementContext context) { -// Vector3d directionVec = new Vector3d(context.state.get(PortableStorageInterfaceBlock.FACING).getDirectionVec()); -// directionVec = VecHelper.rotate(directionVec, context.rotation.x, context.rotation.y, context.rotation.z); -// return Direction.getFacingFromVector(directionVec.x, directionVec.y, directionVec.z); -// } -// -//} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/ContraptionBlockSource.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/ContraptionBlockSource.java deleted file mode 100644 index 57bfc9449..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/ContraptionBlockSource.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.dispenser.IBlockSource; -import net.minecraft.server.MinecraftServer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.server.ServerWorld; - -@MethodsReturnNonnullByDefault -public class ContraptionBlockSource implements IBlockSource { - private final BlockPos pos; - private final MovementContext context; - private final Direction overrideFacing; - - public ContraptionBlockSource(MovementContext context, BlockPos pos) { - this(context, pos, null); - } - - public ContraptionBlockSource(MovementContext context, BlockPos pos, @Nullable Direction overrideFacing) { - this.pos = pos; - this.context = context; - this.overrideFacing = overrideFacing; - } - - @Override - public double getX() { - return (double)this.pos.getX() + 0.5D; - } - - @Override - public double getY() { - return (double)this.pos.getY() + 0.5D; - } - - @Override - public double getZ() { - return (double)this.pos.getZ() + 0.5D; - } - - @Override - public BlockPos getBlockPos() { - return pos; - } - - @Override - public BlockState getBlockState() { - if(context.state.contains(BlockStateProperties.FACING) && overrideFacing != null) - return context.state.with(BlockStateProperties.FACING, overrideFacing); - return context.state; - } - - @Override - @Nullable - public T getBlockTileEntity() { - return null; - } - - @Override - @Nullable - public ServerWorld getWorld() { - MinecraftServer server = context.world.getServer(); - return server != null ? server.getWorld(context.world.getRegistryKey()) : null; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenseItemLocation.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenseItemLocation.java deleted file mode 100644 index 2b0b23916..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenseItemLocation.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -public class DispenseItemLocation { - private final boolean internal; - private final int slot; - - public static final DispenseItemLocation NONE = new DispenseItemLocation(false, -1); - - public DispenseItemLocation(boolean internal, int slot) { - this.internal = internal; - this.slot = slot; - } - - public boolean isInternal() { - return internal; - } - - public int getSlot() { - return slot; - } - - public boolean isEmpty() { - return slot < 0; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenserMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenserMovementBehaviour.java deleted file mode 100644 index 39837a67f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DispenserMovementBehaviour.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -import java.util.HashMap; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.block.DispenserBlock; -import net.minecraft.dispenser.DefaultDispenseItemBehavior; -import net.minecraft.dispenser.IDispenseItemBehavior; -import net.minecraft.dispenser.ProjectileDispenseBehavior; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class DispenserMovementBehaviour extends DropperMovementBehaviour { - private static final HashMap MOVED_DISPENSE_ITEM_BEHAVIOURS = new HashMap<>(); - private static final HashMap MOVED_PROJECTILE_DISPENSE_BEHAVIOURS = new HashMap<>(); - private static final DispenserLookup BEHAVIOUR_LOOKUP = new DispenserLookup(); - private static boolean spawneggsRegistered = false; - - public static void gatherMovedDispenseItemBehaviours() { - IMovedDispenseItemBehaviour.init(); - } - - public static void registerMovedDispenseItemBehaviour(Item item, IMovedDispenseItemBehaviour movedDispenseItemBehaviour) { - MOVED_DISPENSE_ITEM_BEHAVIOURS.put(item, movedDispenseItemBehaviour); - } - - @Override - protected void activate(MovementContext context, BlockPos pos) { - if (!spawneggsRegistered) { - spawneggsRegistered = true; - IMovedDispenseItemBehaviour.initSpawneggs(); - } - - DispenseItemLocation location = getDispenseLocation(context); - if (location.isEmpty()) { - context.world.playEvent(1001, pos, 0); - } else { - ItemStack itemstack = getItemStackAt(location, context); - // Special dispense item behaviour for moving contraptions - if (MOVED_DISPENSE_ITEM_BEHAVIOURS.containsKey(itemstack.getItem())) { - setItemStackAt(location, MOVED_DISPENSE_ITEM_BEHAVIOURS.get(itemstack.getItem()).dispense(itemstack, context, pos), context); - return; - } - - ItemStack backup = itemstack.copy(); - // If none is there, try vanilla registry - try { - if (MOVED_PROJECTILE_DISPENSE_BEHAVIOURS.containsKey(itemstack.getItem())) { - setItemStackAt(location, MOVED_PROJECTILE_DISPENSE_BEHAVIOURS.get(itemstack.getItem()).dispense(itemstack, context, pos), context); - return; - } - - IDispenseItemBehavior idispenseitembehavior = BEHAVIOUR_LOOKUP.getBehavior(itemstack); - if (idispenseitembehavior instanceof ProjectileDispenseBehavior) { // Projectile behaviours can be converted most of the time - IMovedDispenseItemBehaviour iMovedDispenseItemBehaviour = MovedProjectileDispenserBehaviour.of((ProjectileDispenseBehavior) idispenseitembehavior); - setItemStackAt(location, iMovedDispenseItemBehaviour.dispense(itemstack, context, pos), context); - MOVED_PROJECTILE_DISPENSE_BEHAVIOURS.put(itemstack.getItem(), iMovedDispenseItemBehaviour); // buffer conversion if successful - return; - } - - Vector3d facingVec = Vector3d.of(context.state.get(DispenserBlock.FACING).getDirectionVec()); - facingVec = context.rotation.apply(facingVec); - facingVec.normalize(); - Direction clostestFacing = Direction.getFacingFromVector(facingVec.x, facingVec.y, facingVec.z); - ContraptionBlockSource blockSource = new ContraptionBlockSource(context, pos, clostestFacing); - - if (idispenseitembehavior.getClass() != DefaultDispenseItemBehavior.class) { // There is a dispense item behaviour registered for the vanilla dispenser - setItemStackAt(location, idispenseitembehavior.dispense(blockSource, itemstack), context); - return; - } - } catch (NullPointerException ignored) { - itemstack = backup; // Something went wrong with the TE being null in ContraptionBlockSource, reset the stack - } - - setItemStackAt(location, defaultBehaviour.dispense(itemstack, context, pos), context); // the default: launch the item - } - } - - @ParametersAreNonnullByDefault - @MethodsReturnNonnullByDefault - private static class DispenserLookup extends DispenserBlock { - protected DispenserLookup() { - super(Block.Properties.from(Blocks.DISPENSER)); - } - - public IDispenseItemBehavior getBehavior(ItemStack itemStack) { - return super.getBehavior(itemStack); - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DropperMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DropperMovementBehaviour.java deleted file mode 100644 index 27aa13c60..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/DropperMovementBehaviour.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.item.ItemHelper; - -import net.minecraft.inventory.ItemStackHelper; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; - -public class DropperMovementBehaviour extends MovementBehaviour { - protected static final MovedDefaultDispenseItemBehaviour defaultBehaviour = new MovedDefaultDispenseItemBehaviour(); - private static final Random RNG = new Random(); - - protected void activate(MovementContext context, BlockPos pos) { - DispenseItemLocation location = getDispenseLocation(context); - if (location.isEmpty()) { - context.world.playEvent(1001, pos, 0); - } else { - setItemStackAt(location, defaultBehaviour.dispense(getItemStackAt(location, context), context, pos), context); - } - } - - @Override - public void visitNewPosition(MovementContext context, BlockPos pos) { - if (context.world.isRemote) - return; - collectItems(context); - activate(context, pos); - } - - private void collectItems(MovementContext context) { - getStacks(context).stream().filter(itemStack -> !itemStack.isEmpty() && itemStack.getItem() != Items.AIR && itemStack.getMaxStackSize() > itemStack.getCount()).forEach(itemStack -> itemStack.grow( - ItemHelper.extract(context.contraption.inventory, itemStack::isItemEqual, ItemHelper.ExtractionCountMode.UPTO, itemStack.getMaxStackSize() - itemStack.getCount(), false).getCount())); - } - - private void updateTemporaryData(MovementContext context) { - if (!(context.temporaryData instanceof NonNullList) && context.world != null) { - NonNullList stacks = NonNullList.withSize(getInvSize(), ItemStack.EMPTY); - ItemStackHelper.loadAllItems(context.tileData, stacks); - context.temporaryData = stacks; - } - } - - @SuppressWarnings("unchecked") - private NonNullList getStacks(MovementContext context) { - updateTemporaryData(context); - return (NonNullList) context.temporaryData; - } - - private ArrayList getUseableLocations(MovementContext context) { - ArrayList useable = new ArrayList<>(); - for (int slot = 0; slot < getInvSize(); slot++) { - DispenseItemLocation location = new DispenseItemLocation(true, slot); - ItemStack testStack = getItemStackAt(location, context); - if (testStack == null || testStack.isEmpty()) - continue; - if (testStack.getMaxStackSize() == 1) { - location = new DispenseItemLocation(false, ItemHelper.findFirstMatchingSlotIndex(context.contraption.inventory, testStack::isItemEqual)); - if (!getItemStackAt(location, context).isEmpty()) - useable.add(location); - } else if (testStack.getCount() >= 2) - useable.add(location); - } - return useable; - } - - @Override - public void writeExtraData(MovementContext context) { - NonNullList stacks = getStacks(context); - if (stacks == null) - return; - ItemStackHelper.saveAllItems(context.tileData, stacks); - } - - @Override - public void stopMoving(MovementContext context) { - super.stopMoving(context); - writeExtraData(context); - } - - protected DispenseItemLocation getDispenseLocation(MovementContext context) { - int i = -1; - int j = 1; - List useableLocations = getUseableLocations(context); - for (int k = 0; k < useableLocations.size(); ++k) { - if (RNG.nextInt(j++) == 0) { - i = k; - } - } - if (i < 0) - return DispenseItemLocation.NONE; - else - return useableLocations.get(i); - } - - protected ItemStack getItemStackAt(DispenseItemLocation location, MovementContext context) { - if (location.isInternal()) { - return getStacks(context).get(location.getSlot()); - } else { - return context.contraption.inventory.getStackInSlot(location.getSlot()); - } - } - - protected void setItemStackAt(DispenseItemLocation location, ItemStack stack, MovementContext context) { - if (location.isInternal()) { - getStacks(context).set(location.getSlot(), stack); - } else { - context.contraption.inventory.setStackInSlot(location.getSlot(), stack); - } - } - - private static int getInvSize() { - return 9; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/IMovedDispenseItemBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/IMovedDispenseItemBehaviour.java deleted file mode 100644 index c70c6b899..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/IMovedDispenseItemBehaviour.java +++ /dev/null @@ -1,199 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -import java.util.Random; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import net.minecraft.block.BeehiveBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.IBucketPickupHandler; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.SpawnReason; -import net.minecraft.entity.item.TNTEntity; -import net.minecraft.entity.projectile.FireworkRocketEntity; -import net.minecraft.entity.projectile.PotionEntity; -import net.minecraft.entity.projectile.ProjectileEntity; -import net.minecraft.entity.projectile.SmallFireballEntity; -import net.minecraft.fluid.FlowingFluid; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.SpawnEggItem; -import net.minecraft.potion.PotionUtils; -import net.minecraft.potion.Potions; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.FluidTags; -import net.minecraft.tileentity.BeehiveTileEntity; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.Util; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public interface IMovedDispenseItemBehaviour { - - static void initSpawneggs() { - final IMovedDispenseItemBehaviour spawnEggDispenseBehaviour = new MovedDefaultDispenseItemBehaviour() { - @Override - protected ItemStack dispenseStack(ItemStack itemStack, MovementContext context, BlockPos pos, - Vector3d facing) { - if (!(itemStack.getItem() instanceof SpawnEggItem)) - return super.dispenseStack(itemStack, context, pos, facing); - if (context.world instanceof ServerWorld) { - EntityType entityType = ((SpawnEggItem) itemStack.getItem()).getType(itemStack.getTag()); - Entity spawnedEntity = entityType.spawn((ServerWorld) context.world, itemStack, null, - pos.add(facing.x + .7, facing.y + .7, facing.z + .7), SpawnReason.DISPENSER, facing.y < .5, - false); - if (spawnedEntity != null) - spawnedEntity.setMotion(context.motion.scale(2)); - } - itemStack.shrink(1); - return itemStack; - } - }; - - for (SpawnEggItem spawneggitem : SpawnEggItem.getEggs()) - DispenserMovementBehaviour.registerMovedDispenseItemBehaviour(spawneggitem, spawnEggDispenseBehaviour); - } - - static void init() { - MovedProjectileDispenserBehaviour movedPotionDispenseItemBehaviour = new MovedProjectileDispenserBehaviour() { - @Override - protected ProjectileEntity getProjectileEntity(World world, double x, double y, double z, - ItemStack itemStack) { - return Util.make(new PotionEntity(world, x, y, z), (p_218411_1_) -> p_218411_1_.setItem(itemStack)); - } - - protected float getProjectileInaccuracy() { - return super.getProjectileInaccuracy() * 0.5F; - } - - protected float getProjectileVelocity() { - return super.getProjectileVelocity() * .5F; - } - }; - - DispenserMovementBehaviour.registerMovedDispenseItemBehaviour(Items.SPLASH_POTION, - movedPotionDispenseItemBehaviour); - DispenserMovementBehaviour.registerMovedDispenseItemBehaviour(Items.LINGERING_POTION, - movedPotionDispenseItemBehaviour); - - DispenserMovementBehaviour.registerMovedDispenseItemBehaviour(Items.TNT, - new MovedDefaultDispenseItemBehaviour() { - @Override - protected ItemStack dispenseStack(ItemStack itemStack, MovementContext context, BlockPos pos, - Vector3d facing) { - double x = pos.getX() + facing.x * .7 + .5; - double y = pos.getY() + facing.y * .7 + .5; - double z = pos.getZ() + facing.z * .7 + .5; - TNTEntity tntentity = new TNTEntity(context.world, x, y, z, null); - tntentity.addVelocity(context.motion.x, context.motion.y, context.motion.z); - context.world.addEntity(tntentity); - context.world.playSound(null, tntentity.getX(), tntentity.getY(), tntentity.getZ(), - SoundEvents.ENTITY_TNT_PRIMED, SoundCategory.BLOCKS, 1.0F, 1.0F); - itemStack.shrink(1); - return itemStack; - } - }); - - DispenserMovementBehaviour.registerMovedDispenseItemBehaviour(Items.FIREWORK_ROCKET, - new MovedDefaultDispenseItemBehaviour() { - @Override - protected ItemStack dispenseStack(ItemStack itemStack, MovementContext context, BlockPos pos, - Vector3d facing) { - double x = pos.getX() + facing.x * .7 + .5; - double y = pos.getY() + facing.y * .7 + .5; - double z = pos.getZ() + facing.z * .7 + .5; - FireworkRocketEntity fireworkrocketentity = - new FireworkRocketEntity(context.world, itemStack, x, y, z, true); - fireworkrocketentity.shoot(facing.x, facing.y, facing.z, 0.5F, 1.0F); - context.world.addEntity(fireworkrocketentity); - itemStack.shrink(1); - return itemStack; - } - - @Override - protected void playDispenseSound(IWorld world, BlockPos pos) { - world.playEvent(1004, pos, 0); - } - }); - - DispenserMovementBehaviour.registerMovedDispenseItemBehaviour(Items.FIRE_CHARGE, - new MovedDefaultDispenseItemBehaviour() { - @Override - protected void playDispenseSound(IWorld world, BlockPos pos) { - world.playEvent(1018, pos, 0); - } - - @Override - protected ItemStack dispenseStack(ItemStack itemStack, MovementContext context, BlockPos pos, - Vector3d facing) { - Random random = context.world.rand; - double x = pos.getX() + facing.x * .7 + .5; - double y = pos.getY() + facing.y * .7 + .5; - double z = pos.getZ() + facing.z * .7 + .5; - context.world.addEntity(Util.make( - new SmallFireballEntity(context.world, x, y, z, - random.nextGaussian() * 0.05D + facing.x + context.motion.x, - random.nextGaussian() * 0.05D + facing.y + context.motion.y, - random.nextGaussian() * 0.05D + facing.z + context.motion.z), - (p_229425_1_) -> p_229425_1_.setStack(itemStack))); - itemStack.shrink(1); - return itemStack; - } - }); - - DispenserMovementBehaviour.registerMovedDispenseItemBehaviour(Items.GLASS_BOTTLE, - new MovedOptionalDispenseBehaviour() { - @Override - protected ItemStack dispenseStack(ItemStack itemStack, MovementContext context, BlockPos pos, - Vector3d facing) { - this.successful = false; - BlockPos interactAt = pos.offset(getClosestFacingDirection(facing)); - BlockState state = context.world.getBlockState(interactAt); - Block block = state.getBlock(); - - if (block.isIn(BlockTags.BEEHIVES) && state.get(BeehiveBlock.HONEY_LEVEL) >= 5) { - ((BeehiveBlock) block).takeHoney(context.world, state, interactAt, null, - BeehiveTileEntity.State.BEE_RELEASED); - this.successful = true; - return placeItemInInventory(itemStack, new ItemStack(Items.HONEY_BOTTLE), context, pos, - facing); - } else if (context.world.getFluidState(interactAt) - .isTagged(FluidTags.WATER)) { - this.successful = true; - return placeItemInInventory(itemStack, - PotionUtils.addPotionToItemStack(new ItemStack(Items.POTION), Potions.WATER), context, pos, - facing); - } else { - return super.dispenseStack(itemStack, context, pos, facing); - } - } - }); - - DispenserMovementBehaviour.registerMovedDispenseItemBehaviour(Items.BUCKET, - new MovedDefaultDispenseItemBehaviour() { - @Override - protected ItemStack dispenseStack(ItemStack itemStack, MovementContext context, BlockPos pos, - Vector3d facing) { - BlockPos interactAt = pos.offset(getClosestFacingDirection(facing)); - BlockState state = context.world.getBlockState(interactAt); - Block block = state.getBlock(); - if (block instanceof IBucketPickupHandler) { - Fluid fluid = ((IBucketPickupHandler) block).pickupFluid(context.world, interactAt, state); - if (fluid instanceof FlowingFluid) - return placeItemInInventory(itemStack, new ItemStack(fluid.getFilledBucket()), context, pos, - facing); - } - return super.dispenseStack(itemStack, context, pos, facing); - } - }); - } - - ItemStack dispense(ItemStack itemStack, MovementContext context, BlockPos pos); -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedDefaultDispenseItemBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedDefaultDispenseItemBehaviour.java deleted file mode 100644 index 88aea0fed..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedDefaultDispenseItemBehaviour.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import net.minecraft.block.DispenserBlock; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.HopperTileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraftforge.items.ItemHandlerHelper; - -public class MovedDefaultDispenseItemBehaviour implements IMovedDispenseItemBehaviour { - private static final MovedDefaultDispenseItemBehaviour defaultInstance = new MovedDefaultDispenseItemBehaviour(); - - public static void doDispense(World p_82486_0_, ItemStack p_82486_1_, int p_82486_2_, Vector3d facing, BlockPos p_82486_4_, MovementContext context) { - double d0 = p_82486_4_.getX() + facing.x + .5; - double d1 = p_82486_4_.getY() + facing.y + .5; - double d2 = p_82486_4_.getZ() + facing.z + .5; - if (Direction.getFacingFromVector(facing.x, facing.y, facing.z).getAxis() == Direction.Axis.Y) { - d1 = d1 - 0.125D; - } else { - d1 = d1 - 0.15625D; - } - - ItemEntity itementity = new ItemEntity(p_82486_0_, d0, d1, d2, p_82486_1_); - double d3 = p_82486_0_.rand.nextDouble() * 0.1D + 0.2D; - itementity.setMotion(p_82486_0_.rand.nextGaussian() * (double) 0.0075F * (double) p_82486_2_ + facing.getX() * d3 + context.motion.x, p_82486_0_.rand.nextGaussian() * (double) 0.0075F * (double) p_82486_2_ + facing.getY() * d3 + context.motion.y, p_82486_0_.rand.nextGaussian() * (double) 0.0075F * (double) p_82486_2_ + facing.getZ() * d3 + context.motion.z); - p_82486_0_.addEntity(itementity); - } - - @Override - public ItemStack dispense(ItemStack itemStack, MovementContext context, BlockPos pos) { - Vector3d facingVec = Vector3d.of(context.state.get(DispenserBlock.FACING).getDirectionVec()); - facingVec = context.rotation.apply(facingVec); - facingVec.normalize(); - - Direction closestToFacing = getClosestFacingDirection(facingVec); - IInventory iinventory = HopperTileEntity.getInventoryAtPosition(context.world, pos.offset(closestToFacing)); - if (iinventory == null) { - this.playDispenseSound(context.world, pos); - this.spawnDispenseParticles(context.world, pos, closestToFacing); - return this.dispenseStack(itemStack, context, pos, facingVec); - } else { - if (HopperTileEntity.putStackInInventoryAllSlots(null, iinventory, itemStack.copy().split(1), closestToFacing.getOpposite()).isEmpty()) - itemStack.shrink(1); - return itemStack; - } - } - - /** - * Dispense the specified stack, play the dispense sound and spawn particles. - */ - protected ItemStack dispenseStack(ItemStack itemStack, MovementContext context, BlockPos pos, Vector3d facing) { - ItemStack itemstack = itemStack.split(1); - doDispense(context.world, itemstack, 6, facing, pos, context); - return itemStack; - } - - /** - * Play the dispense sound from the specified block. - */ - protected void playDispenseSound(IWorld world, BlockPos pos) { - world.playEvent(1000, pos, 0); - } - - /** - * Order clients to display dispense particles from the specified block and facing. - */ - protected void spawnDispenseParticles(IWorld world, BlockPos pos, Vector3d facing) { - spawnDispenseParticles(world, pos, getClosestFacingDirection(facing)); - } - - protected void spawnDispenseParticles(IWorld world, BlockPos pos, Direction direction) { - world.playEvent(2000, pos, direction.getIndex()); - } - - protected Direction getClosestFacingDirection(Vector3d exactFacing) { - return Direction.getFacingFromVector(exactFacing.x, exactFacing.y, exactFacing.z); - } - - protected ItemStack placeItemInInventory(ItemStack consumedFrom, ItemStack output, MovementContext context, BlockPos pos, Vector3d facing) { - consumedFrom.shrink(1); - ItemStack remainder = ItemHandlerHelper.insertItem(context.contraption.inventory, output.copy(), false); - if (!remainder.isEmpty()) - defaultInstance.dispenseStack(output, context, pos, facing); - return consumedFrom; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedOptionalDispenseBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedOptionalDispenseBehaviour.java deleted file mode 100644 index d3eb7e88e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedOptionalDispenseBehaviour.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; - -public class MovedOptionalDispenseBehaviour extends MovedDefaultDispenseItemBehaviour { - protected boolean successful = true; - - @Override - protected void playDispenseSound(IWorld world, BlockPos pos) { - world.playEvent(this.successful ? 1000 : 1001, pos, 0); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedProjectileDispenserBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedProjectileDispenserBehaviour.java deleted file mode 100644 index bd39d404f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/MovedProjectileDispenserBehaviour.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -import java.lang.reflect.Method; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import net.minecraft.dispenser.IPosition; -import net.minecraft.dispenser.ProjectileDispenseBehavior; -import net.minecraft.entity.projectile.ProjectileEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; - -public abstract class MovedProjectileDispenserBehaviour extends MovedDefaultDispenseItemBehaviour { - - @Override - protected ItemStack dispenseStack(ItemStack itemStack, MovementContext context, BlockPos pos, Vector3d facing) { - double x = pos.getX() + facing.x * .7 + .5; - double y = pos.getY() + facing.y * .7 + .5; - double z = pos.getZ() + facing.z * .7 + .5; - ProjectileEntity ProjectileEntity = this.getProjectileEntity(context.world, x, y, z, itemStack.copy()); - if (ProjectileEntity == null) - return itemStack; - Vector3d effectiveMovementVec = facing.scale(getProjectileVelocity()).add(context.motion); - ProjectileEntity.shoot(effectiveMovementVec.x, effectiveMovementVec.y, effectiveMovementVec.z, (float) effectiveMovementVec.length(), this.getProjectileInaccuracy()); - context.world.addEntity(ProjectileEntity); - itemStack.shrink(1); - return itemStack; - } - - @Override - protected void playDispenseSound(IWorld world, BlockPos pos) { - world.playEvent(1002, pos, 0); - } - - @Nullable - protected abstract ProjectileEntity getProjectileEntity(World world, double x, double y, double z, ItemStack itemStack); - - protected float getProjectileInaccuracy() { - return 6.0F; - } - - protected float getProjectileVelocity() { - return 1.1F; - } - - public static MovedProjectileDispenserBehaviour of(ProjectileDispenseBehavior vanillaBehaviour) { - return new MovedProjectileDispenserBehaviour() { - @Override - protected ProjectileEntity getProjectileEntity(World world, double x, double y, double z, ItemStack itemStack) { - try { - return (ProjectileEntity) MovedProjectileDispenserBehaviour.getProjectileEntityLookup().invoke(vanillaBehaviour, world, new SimplePos(x, y, z) , itemStack); - } catch (Throwable ignored) { - } - return null; - } - - @Override - protected float getProjectileInaccuracy() { - try { - return (float) MovedProjectileDispenserBehaviour.getProjectileInaccuracyLookup().invoke(vanillaBehaviour); - } catch (Throwable ignored) { - } - return super.getProjectileInaccuracy(); - } - - @Override - protected float getProjectileVelocity() { - try { - return (float) MovedProjectileDispenserBehaviour.getProjectileVelocityLookup().invoke(vanillaBehaviour); - } catch (Throwable ignored) { - } - return super.getProjectileVelocity(); - } - }; - } - - private static Method getProjectileEntityLookup() { - Method getProjectileEntity = ObfuscationReflectionHelper.findMethod(ProjectileDispenseBehavior.class, "func_82499_a", World.class, IPosition.class, ItemStack.class); - getProjectileEntity.setAccessible(true); - return getProjectileEntity; - } - - private static Method getProjectileInaccuracyLookup() { - Method getProjectileInaccuracy = ObfuscationReflectionHelper.findMethod(ProjectileDispenseBehavior.class, "func_82498_a"); - getProjectileInaccuracy.setAccessible(true); - return getProjectileInaccuracy; - } - - private static Method getProjectileVelocityLookup() { - Method getProjectileVelocity = ObfuscationReflectionHelper.findMethod(ProjectileDispenseBehavior.class, "func_82500_b"); - getProjectileVelocity.setAccessible(true); - return getProjectileVelocity; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/SimplePos.java b/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/SimplePos.java deleted file mode 100644 index 5da3e0b13..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/actors/dispenser/SimplePos.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.content.contraptions.components.actors.dispenser; - -import net.minecraft.dispenser.IPosition; - -public class SimplePos implements IPosition { - private final double x; - private final double y; - private final double z; - - public SimplePos(double x, double y, double z) { - this.x = x; - this.y = y; - this.z = z; - } - - @Override - public double getX() { - return x; - } - - @Override - public double getY() { - return y; - } - - @Override - public double getZ() { - return z; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockBlock.java deleted file mode 100644 index 3b179fc49..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockBlock.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.simibubi.create.content.contraptions.components.clock; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; - -public class CuckooClockBlock extends HorizontalKineticBlock { - - private boolean mysterious; - - public static CuckooClockBlock regular(Properties properties) { - return new CuckooClockBlock(false, properties); - } - - public static CuckooClockBlock mysterious(Properties properties) { - return new CuckooClockBlock(true, properties); - } - - protected CuckooClockBlock(boolean mysterious, Properties properties) { - super(properties); - this.mysterious = mysterious; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.CUCKOO_CLOCK.create(); - } - - @Override - public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.CUCKOO_CLOCK; - } - - @Override - public void fillItemGroup(ItemGroup group, NonNullList items) { - if (!mysterious) - super.fillItemGroup(group, items); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction preferred = getPreferredHorizontalFacing(context); - if (preferred != null) - return getDefaultState().with(HORIZONTAL_FACING, preferred.getOpposite()); - return this.getDefaultState().with(HORIZONTAL_FACING, context.getPlacementHorizontalFacing().getOpposite()); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == state.get(HORIZONTAL_FACING).getOpposite(); - } - - public static boolean containsSurprise(BlockState state) { - Block block = state.getBlock(); - return block instanceof CuckooClockBlock && ((CuckooClockBlock) block).mysterious; - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(HORIZONTAL_FACING).getAxis(); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java deleted file mode 100644 index 03f8fa982..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockRenderer.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.simibubi.create.content.contraptions.components.clock; - -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.components.clock.CuckooClockTileEntity.Animation; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; - -public class CuckooClockRenderer extends KineticTileEntityRenderer { - - public CuckooClockRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (!(te instanceof CuckooClockTileEntity)) - return; - - CuckooClockTileEntity clock = (CuckooClockTileEntity) te; - BlockState blockState = te.getBlockState(); - int packedLightmapCoords = WorldRenderer.getLightmapCoordinates(te.getWorld(), blockState, te.getPos()); - Direction direction = blockState.get(CuckooClockBlock.HORIZONTAL_FACING); - - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - - // Render Hands - SuperByteBuffer hourHand = PartialBufferer.get(AllBlockPartials.CUCKOO_HOUR_HAND, blockState); - SuperByteBuffer minuteHand = PartialBufferer.get(AllBlockPartials.CUCKOO_MINUTE_HAND, blockState); - float hourAngle = clock.hourHand.get(partialTicks); - float minuteAngle = clock.minuteHand.get(partialTicks); - rotateHand(hourHand, hourAngle, direction).light(packedLightmapCoords) - .renderInto(ms, vb); - rotateHand(minuteHand, minuteAngle, direction).light(packedLightmapCoords) - .renderInto(ms, vb); - - // Doors - SuperByteBuffer leftDoor = PartialBufferer.get(AllBlockPartials.CUCKOO_LEFT_DOOR, blockState); - SuperByteBuffer rightDoor = PartialBufferer.get(AllBlockPartials.CUCKOO_RIGHT_DOOR, blockState); - float angle = 0; - float offset = 0; - - if (clock.animationType != null) { - float value = clock.animationProgress.get(partialTicks); - int step = clock.animationType == Animation.SURPRISE ? 3 : 15; - for (int phase = 30; phase <= 60; phase += step) { - float local = value - phase; - if (local < -step / 3) - continue; - else if (local < 0) - angle = MathHelper.lerp(((value - (phase - 5)) / 5), 0, 135); - else if (local < step / 3) - angle = 135; - else if (local < 2 * step / 3) - angle = MathHelper.lerp(((value - (phase + 5)) / 5), 135, 0); - - } - } - - rotateDoor(leftDoor, angle, true, direction).light(packedLightmapCoords) - .renderInto(ms, vb); - rotateDoor(rightDoor, angle, false, direction).light(packedLightmapCoords) - .renderInto(ms, vb); - - // Figure - if (clock.animationType != Animation.NONE) { - offset = -(angle / 135) * 1 / 2f + 10 / 16f; - PartialModel partialModel = (clock.animationType == Animation.PIG ? AllBlockPartials.CUCKOO_PIG : AllBlockPartials.CUCKOO_CREEPER); - SuperByteBuffer figure = - PartialBufferer.get(partialModel, blockState); - figure.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(direction.rotateYCCW()))); - figure.translate(offset, 0, 0); - figure.light(packedLightmapCoords) - .renderInto(ms, vb); - } - - } - - @Override - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return transform(AllBlockPartials.SHAFT_HALF, te); - } - - private SuperByteBuffer transform(PartialModel partial, KineticTileEntity te) { - return PartialBufferer.getFacing(partial, te.getBlockState(), te.getBlockState() - .get(CuckooClockBlock.HORIZONTAL_FACING) - .getOpposite()); - } - - private SuperByteBuffer rotateHand(SuperByteBuffer buffer, float angle, Direction facing) { - float pivotX = 2 / 16f; - float pivotY = 6 / 16f; - float pivotZ = 8 / 16f; - buffer.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing.rotateYCCW()))); - buffer.translate(pivotX, pivotY, pivotZ); - buffer.rotate(Direction.EAST, angle); - buffer.translate(-pivotX, -pivotY, -pivotZ); - return buffer; - } - - private SuperByteBuffer rotateDoor(SuperByteBuffer buffer, float angle, boolean left, Direction facing) { - float pivotX = 2 / 16f; - float pivotY = 0; - float pivotZ = (left ? 6 : 10) / 16f; - buffer.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing.rotateYCCW()))); - buffer.translate(pivotX, pivotY, pivotZ); - buffer.rotate(Direction.UP, AngleHelper.rad(angle) * (left ? -1 : 1)); - buffer.translate(-pivotX, -pivotY, -pivotZ); - return buffer; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java deleted file mode 100644 index 9b3aefbd8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/clock/CuckooClockTileEntity.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.simibubi.create.content.contraptions.components.clock; - -import static com.simibubi.create.foundation.utility.AngleHelper.deg; -import static com.simibubi.create.foundation.utility.AngleHelper.getShortestAngleDiff; -import static com.simibubi.create.foundation.utility.AngleHelper.rad; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; -import com.simibubi.create.foundation.gui.widgets.InterpolatedValue; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.Explosion; - -public class CuckooClockTileEntity extends KineticTileEntity { - - public static DamageSource CUCKOO_SURPRISE = new DamageSource("create.cuckoo_clock_explosion").setExplosion(); - - public InterpolatedChasingValue hourHand = new InterpolatedChasingValue().withSpeed(.2f); - public InterpolatedChasingValue minuteHand = new InterpolatedChasingValue().withSpeed(.2f); - public InterpolatedValue animationProgress = new InterpolatedValue(); - public Animation animationType; - private boolean sendAnimationUpdate; - - enum Animation { - PIG, CREEPER, SURPRISE, NONE; - } - - public CuckooClockTileEntity(TileEntityType type) { - super(type); - animationType = Animation.NONE; - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - if (clientPacket && compound.contains("Animation")) { - animationType = NBTHelper.readEnum(compound, "Animation", Animation.class); - animationProgress.lastValue = 0; - animationProgress.value = 0; - } - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - if (clientPacket && sendAnimationUpdate) - NBTHelper.writeEnum(compound, "Animation", animationType); - sendAnimationUpdate = false; - super.write(compound, clientPacket); - } - - @Override - public void tick() { - super.tick(); - if (getSpeed() == 0) - return; - - - boolean isNatural = world.getDimension().isNatural(); - int dayTime = (int) ((world.getDayTime() * (isNatural ? 1 : 24)) % 24000); - int hours = (dayTime / 1000 + 6) % 24; - int minutes = (dayTime % 1000) * 60 / 1000; - - if (!isNatural) { - if (world.isRemote) { - moveHands(hours, minutes); - - if (AnimationTickHolder.getTicks() % 6 == 0) - playSound(SoundEvents.BLOCK_NOTE_BLOCK_HAT, 1 / 16f, 2f); - else if (AnimationTickHolder.getTicks() % 3 == 0) - playSound(SoundEvents.BLOCK_NOTE_BLOCK_HAT, 1 / 16f, 1.5f); - } - return; - } - - if (!world.isRemote) { - if (animationType == Animation.NONE) { - if (hours == 12 && minutes < 5) - startAnimation(Animation.PIG); - if (hours == 18 && minutes < 36 && minutes > 31) - startAnimation(Animation.CREEPER); - } else { - float value = animationProgress.value; - animationProgress.set(value + 1); - if (value > 100) - animationType = Animation.NONE; - - if (animationType == Animation.SURPRISE && animationProgress.value == 50) { - Vector3d center = VecHelper.getCenterOf(pos); - world.destroyBlock(pos, false); - world.createExplosion(null, CUCKOO_SURPRISE, null, center.x, center.y, center.z, 3, false, - Explosion.Mode.BREAK); - } - - } - } - - if (world.isRemote) { - moveHands(hours, minutes); - - if (animationType == Animation.NONE) { - if (AnimationTickHolder.getTicks() % 32 == 0) - playSound(SoundEvents.BLOCK_NOTE_BLOCK_HAT, 1 / 16f, 2f); - else if (AnimationTickHolder.getTicks() % 16 == 0) - playSound(SoundEvents.BLOCK_NOTE_BLOCK_HAT, 1 / 16f, 1.5f); - } else { - - boolean isSurprise = animationType == Animation.SURPRISE; - float value = animationProgress.value; - animationProgress.set(value + 1); - if (value > 100) - animationType = null; - - // sounds - - if (value == 1) - playSound(SoundEvents.BLOCK_NOTE_BLOCK_CHIME, 2, .5f); - if (value == 21) - playSound(SoundEvents.BLOCK_NOTE_BLOCK_CHIME, 2, 0.793701f); - - if (value > 30 && isSurprise) { - Vector3d pos = VecHelper.offsetRandomly(VecHelper.getCenterOf(this.pos), world.rand, .5f); - world.addParticle(ParticleTypes.LARGE_SMOKE, pos.x, pos.y, pos.z, 0, 0, 0); - } - if (value == 40 && isSurprise) - playSound(SoundEvents.ENTITY_TNT_PRIMED, 1f, 1f); - - int step = isSurprise ? 3 : 15; - for (int phase = 30; phase <= 60; phase += step) { - if (value == phase - step / 3) - playSound(SoundEvents.BLOCK_CHEST_OPEN, 1 / 16f, 2f); - if (value == phase) { - if (animationType == Animation.PIG) - playSound(SoundEvents.ENTITY_PIG_AMBIENT, 1 / 4f, 1f); - else - playSound(SoundEvents.ENTITY_CREEPER_HURT, 1 / 4f, 3f); - } - if (value == phase + step / 3) - playSound(SoundEvents.BLOCK_CHEST_CLOSE, 1 / 16f, 2f); - - } - - } - - return; - } - } - - public void startAnimation(Animation animation) { - animationType = animation; - if (animation != null && CuckooClockBlock.containsSurprise(getBlockState())) - animationType = Animation.SURPRISE; - animationProgress.lastValue = 0; - animationProgress.value = 0; - sendAnimationUpdate = true; - - if (animation == Animation.CREEPER) - AllTriggers.triggerForNearbyPlayers(AllTriggers.CUCKOO, world, pos, 10); - - sendData(); - } - - public void moveHands(int hours, int minutes) { - float hourTarget = (float) (360 / 12 * (hours % 12)); - float minuteTarget = (float) (360 / 60 * minutes); - - hourHand.target(hourHand.value + rad(getShortestAngleDiff(deg(hourHand.value), hourTarget))); - minuteHand.target(minuteHand.value + rad(getShortestAngleDiff(deg(minuteHand.value), minuteTarget))); - - hourHand.tick(); - minuteHand.tick(); - } - - private void playSound(SoundEvent sound, float volume, float pitch) { - Vector3d vec = VecHelper.getCenterOf(pos); - world.playSound(vec.x, vec.y, vec.z, sound, SoundCategory.BLOCKS, volume, pitch, false); - } - - @Override - public boolean shouldRenderNormally() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java deleted file mode 100644 index db6b86bfd..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/ConnectedInputHandler.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import static com.simibubi.create.content.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.function.Consumer; -import java.util.stream.Collectors; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.CombinedInvWrapper; - -public class ConnectedInputHandler { - - public static boolean shouldConnect(World world, BlockPos pos, Direction face, Direction direction) { - BlockState refState = world.getBlockState(pos); - if (!refState.contains(HORIZONTAL_FACING)) - return false; - Direction refDirection = refState.get(HORIZONTAL_FACING); - if (direction.getAxis() == refDirection.getAxis()) - return false; - if (face == refDirection) - return false; - BlockState neighbour = world.getBlockState(pos.offset(direction)); - if (!AllBlocks.MECHANICAL_CRAFTER.has(neighbour)) - return false; - if (refDirection != neighbour.get(HORIZONTAL_FACING)) - return false; - return true; - } - - public static void toggleConnection(World world, BlockPos pos, BlockPos pos2) { - MechanicalCrafterTileEntity crafter1 = CrafterHelper.getCrafter(world, pos); - MechanicalCrafterTileEntity crafter2 = CrafterHelper.getCrafter(world, pos2); - - if (crafter1 == null || crafter2 == null) - return; - - BlockPos controllerPos1 = crafter1.getPos() - .add(crafter1.input.data.get(0)); - BlockPos controllerPos2 = crafter2.getPos() - .add(crafter2.input.data.get(0)); - - if (controllerPos1.equals(controllerPos2)) { - MechanicalCrafterTileEntity controller = CrafterHelper.getCrafter(world, controllerPos1); - - Set positions = controller.input.data.stream() - .map(controllerPos1::add) - .collect(Collectors.toSet()); - List frontier = new LinkedList<>(); - List splitGroup = new ArrayList<>(); - - frontier.add(pos2); - positions.remove(pos2); - positions.remove(pos); - while (!frontier.isEmpty()) { - BlockPos current = frontier.remove(0); - for (Direction direction : Iterate.directions) { - BlockPos next = current.offset(direction); - if (!positions.remove(next)) - continue; - splitGroup.add(next); - frontier.add(next); - } - } - - initAndAddAll(world, crafter1, positions); - initAndAddAll(world, crafter2, splitGroup); - - crafter1.markDirty(); - crafter1.connectivityChanged(); - crafter2.markDirty(); - crafter2.connectivityChanged(); - return; - } - - if (!crafter1.input.isController) - crafter1 = CrafterHelper.getCrafter(world, controllerPos1); - if (!crafter2.input.isController) - crafter2 = CrafterHelper.getCrafter(world, controllerPos2); - if (crafter1 == null || crafter2 == null) - return; - - connectControllers(world, crafter1, crafter2); - - world.setBlockState(crafter1.getPos(), crafter1.getBlockState(), 3); - - crafter1.markDirty(); - crafter1.connectivityChanged(); - crafter2.markDirty(); - crafter2.connectivityChanged(); - } - - public static void initAndAddAll(World world, MechanicalCrafterTileEntity crafter, Collection positions) { - crafter.input = new ConnectedInput(); - positions.forEach(splitPos -> { - modifyAndUpdate(world, splitPos, input -> { - input.attachTo(crafter.getPos(), splitPos); - crafter.input.data.add(splitPos.subtract(crafter.getPos())); - }); - }); - } - - public static void connectControllers(World world, MechanicalCrafterTileEntity crafter1, - MechanicalCrafterTileEntity crafter2) { - - crafter1.input.data.forEach(offset -> { - BlockPos connectedPos = crafter1.getPos() - .add(offset); - modifyAndUpdate(world, connectedPos, input -> { - }); - }); - - crafter2.input.data.forEach(offset -> { - if (offset.equals(BlockPos.ZERO)) - return; - BlockPos connectedPos = crafter2.getPos() - .add(offset); - modifyAndUpdate(world, connectedPos, input -> { - input.attachTo(crafter1.getPos(), connectedPos); - crafter1.input.data.add(BlockPos.ZERO.subtract(input.data.get(0))); - }); - }); - - crafter2.input.attachTo(crafter1.getPos(), crafter2.getPos()); - crafter1.input.data.add(BlockPos.ZERO.subtract(crafter2.input.data.get(0))); - } - - private static void modifyAndUpdate(World world, BlockPos pos, Consumer callback) { - TileEntity te = world.getTileEntity(pos); - if (!(te instanceof MechanicalCrafterTileEntity)) - return; - - MechanicalCrafterTileEntity crafter = (MechanicalCrafterTileEntity) te; - callback.accept(crafter.input); - crafter.markDirty(); - crafter.connectivityChanged(); - } - - public static class ConnectedInput { - boolean isController; - List data = Collections.synchronizedList(new ArrayList<>()); - - public ConnectedInput() { - isController = true; - data.add(BlockPos.ZERO); - } - - public void attachTo(BlockPos controllerPos, BlockPos myPos) { - isController = false; - data.clear(); - data.add(controllerPos.subtract(myPos)); - } - - public IItemHandler getItemHandler(World world, BlockPos pos) { - if (!isController) { - BlockPos controllerPos = pos.add(data.get(0)); - ConnectedInput input = CrafterHelper.getInput(world, controllerPos); - if (input == this || input == null || !input.isController) - return new ItemStackHandler(); - return input.getItemHandler(world, controllerPos); - } - - List list = data.stream() - .map(l -> CrafterHelper.getCrafter(world, pos.add(l))) - .filter(Objects::nonNull) - .map(crafter -> crafter.getInventory()) - .collect(Collectors.toList()); - return new CombinedInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class)); - } - - public void write(CompoundNBT nbt) { - nbt.putBoolean("Controller", isController); - ListNBT list = new ListNBT(); - data.forEach(pos -> list.add(NBTUtil.writeBlockPos(pos))); - nbt.put("Data", list); - } - - public void read(CompoundNBT nbt) { - isController = nbt.getBoolean("Controller"); - data.clear(); - nbt.getList("Data", NBT.TAG_COMPOUND) - .forEach(inbt -> data.add(NBTUtil.readBlockPos((CompoundNBT) inbt))); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterCTBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterCTBehaviour.java deleted file mode 100644 index f4cf702e7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterCTBehaviour.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import static com.simibubi.create.content.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING; - -import com.simibubi.create.AllSpriteShifts; -import com.simibubi.create.content.contraptions.components.crafter.ConnectedInputHandler.ConnectedInput; -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; - -public class CrafterCTBehaviour extends ConnectedTextureBehaviour { - - @Override - public boolean connectsTo(BlockState state, BlockState other, IBlockDisplayReader reader, BlockPos pos, BlockPos otherPos, - Direction face) { - if (state.getBlock() != other.getBlock()) - return false; - if (state.get(HORIZONTAL_FACING) != other.get(HORIZONTAL_FACING)) - return false; - - ConnectedInput input1 = CrafterHelper.getInput(reader, pos); - ConnectedInput input2 = CrafterHelper.getInput(reader, otherPos); - - if (input1 == null || input2 == null) - return false; - if (input1.data.isEmpty() || input2.data.isEmpty()) - return false; - try { - if (pos.add(input1.data.get(0)) - .equals(otherPos.add(input2.data.get(0)))) - return true; - } catch (IndexOutOfBoundsException e) { - // race condition. data somehow becomes empty between the last 2 if statements - } - - return false; - } - - @Override - protected boolean reverseUVs(BlockState state, Direction direction) { - if (!direction.getAxis() - .isVertical()) - return false; - Direction facing = state.get(HORIZONTAL_FACING); - if (facing.getAxis() == direction.getAxis()) - return false; - - boolean isNegative = facing.getAxisDirection() == AxisDirection.NEGATIVE; - if (direction == Direction.DOWN && facing.getAxis() == Axis.Z) - return !isNegative; - return isNegative; - } - - @Override - public CTSpriteShiftEntry get(BlockState state, Direction direction) { - Direction facing = state.get(HORIZONTAL_FACING); - boolean isFront = facing.getAxis() == direction.getAxis(); - boolean isVertical = direction.getAxis() - .isVertical(); - boolean facingX = facing.getAxis() == Axis.X; - return isFront ? AllSpriteShifts.CRAFTER_FRONT - : isVertical && !facingX ? AllSpriteShifts.CRAFTER_OTHERSIDE : AllSpriteShifts.CRAFTER_SIDE; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterHelper.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterHelper.java deleted file mode 100644 index ed41f7c3a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/CrafterHelper.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; - -public class CrafterHelper { - - public static MechanicalCrafterTileEntity getCrafter(IBlockDisplayReader reader, BlockPos pos) { - TileEntity te = reader.getTileEntity(pos); - if (!(te instanceof MechanicalCrafterTileEntity)) - return null; - return (MechanicalCrafterTileEntity) te; - } - - public static ConnectedInputHandler.ConnectedInput getInput(IBlockDisplayReader reader, BlockPos pos) { - MechanicalCrafterTileEntity crafter = getCrafter(reader, pos); - return crafter == null ? null : crafter.input; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java deleted file mode 100644 index 05c41789d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterBlock.java +++ /dev/null @@ -1,284 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.crafter.ConnectedInputHandler.ConnectedInput; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity.Phase; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pointing; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.items.ItemStackHandler; - -public class MechanicalCrafterBlock extends HorizontalKineticBlock implements ITE, ICogWheel { - - public static final EnumProperty POINTING = EnumProperty.create("pointing", Pointing.class); - - public MechanicalCrafterBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(POINTING, Pointing.UP)); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(POINTING)); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MECHANICAL_CRAFTER.create(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(HORIZONTAL_FACING) - .getAxis(); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction face = context.getFace(); - BlockPos placedOnPos = context.getPos() - .offset(face.getOpposite()); - BlockState blockState = context.getWorld() - .getBlockState(placedOnPos); - - if ((blockState.getBlock() != this) || (context.getPlayer() != null && context.getPlayer() - .isSneaking())) { - BlockState stateForPlacement = super.getStateForPlacement(context); - Direction direction = stateForPlacement.get(HORIZONTAL_FACING); - if (direction != face) - stateForPlacement = stateForPlacement.with(POINTING, pointingFromFacing(face, direction)); - return stateForPlacement; - } - - Direction otherFacing = blockState.get(HORIZONTAL_FACING); - Pointing pointing = pointingFromFacing(face, otherFacing); - return getDefaultState().with(HORIZONTAL_FACING, otherFacing) - .with(POINTING, pointing); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() == newState.getBlock()) { - if (getTargetDirection(state) != getTargetDirection(newState)) { - MechanicalCrafterTileEntity crafter = CrafterHelper.getCrafter(worldIn, pos); - if (crafter != null) - crafter.blockChanged(); - } - } - - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { - MechanicalCrafterTileEntity crafter = CrafterHelper.getCrafter(worldIn, pos); - if (crafter != null) { - if (crafter.covered) - Block.spawnAsEntity(worldIn, pos, AllItems.CRAFTER_SLOT_COVER.asStack()); - crafter.ejectWholeGrid(); - } - - for (Direction direction : Iterate.directions) { - if (direction.getAxis() == state.get(HORIZONTAL_FACING) - .getAxis()) - continue; - - BlockPos otherPos = pos.offset(direction); - ConnectedInput thisInput = CrafterHelper.getInput(worldIn, pos); - ConnectedInput otherInput = CrafterHelper.getInput(worldIn, otherPos); - - if (thisInput == null || otherInput == null) - continue; - if (!pos.add(thisInput.data.get(0)) - .equals(otherPos.add(otherInput.data.get(0)))) - continue; - - ConnectedInputHandler.toggleConnection(worldIn, pos, otherPos); - } - - worldIn.removeTileEntity(pos); - } - } - - public static Pointing pointingFromFacing(Direction pointingFace, Direction blockFacing) { - boolean positive = blockFacing.getAxisDirection() == AxisDirection.POSITIVE; - - Pointing pointing = pointingFace == Direction.DOWN ? Pointing.UP : Pointing.DOWN; - if (pointingFace == Direction.EAST) - pointing = positive ? Pointing.LEFT : Pointing.RIGHT; - if (pointingFace == Direction.WEST) - pointing = positive ? Pointing.RIGHT : Pointing.LEFT; - if (pointingFace == Direction.NORTH) - pointing = positive ? Pointing.LEFT : Pointing.RIGHT; - if (pointingFace == Direction.SOUTH) - pointing = positive ? Pointing.RIGHT : Pointing.LEFT; - return pointing; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (context.getFace() == state.get(HORIZONTAL_FACING)) { - if (!context.getWorld().isRemote) - KineticTileEntity.switchToBlockState(context.getWorld(), context.getPos(), state.cycle(POINTING)); - return ActionResultType.SUCCESS; - } - - return ActionResultType.PASS; - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - ItemStack heldItem = player.getHeldItem(handIn); - boolean isHand = heldItem.isEmpty() && handIn == Hand.MAIN_HAND; - - TileEntity te = worldIn.getTileEntity(pos); - if (!(te instanceof MechanicalCrafterTileEntity)) - return ActionResultType.PASS; - MechanicalCrafterTileEntity crafter = (MechanicalCrafterTileEntity) te; - boolean wrenched = AllItems.WRENCH.isIn(heldItem); - - if (AllBlocks.MECHANICAL_ARM.isIn(heldItem)) - return ActionResultType.PASS; - - if (hit.getFace() == state.get(HORIZONTAL_FACING)) { - - if (crafter.phase != Phase.IDLE && !wrenched) { - crafter.ejectWholeGrid(); - return ActionResultType.SUCCESS; - } - - if (crafter.phase == Phase.IDLE && !isHand && !wrenched) { - if (worldIn.isRemote) - return ActionResultType.SUCCESS; - - if (AllItems.CRAFTER_SLOT_COVER.isIn(heldItem)) { - if (crafter.covered) - return ActionResultType.PASS; - if (!crafter.inventory.isEmpty()) - return ActionResultType.PASS; - crafter.covered = true; - crafter.markDirty(); - crafter.sendData(); - if (!player.isCreative()) - heldItem.shrink(1); - return ActionResultType.SUCCESS; - } - - LazyOptional capability = - crafter.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); - if (!capability.isPresent()) - return ActionResultType.PASS; - ItemStack remainder = - ItemHandlerHelper.insertItem(capability.orElse(new ItemStackHandler()), heldItem.copy(), false); - if (remainder.getCount() != heldItem.getCount()) - player.setHeldItem(handIn, remainder); - return ActionResultType.SUCCESS; - } - - ItemStack inSlot = crafter.getInventory().getStackInSlot(0); - if (inSlot.isEmpty()) { - if (crafter.covered && !wrenched) { - if (worldIn.isRemote) - return ActionResultType.SUCCESS; - crafter.covered = false; - crafter.markDirty(); - crafter.sendData(); - if (!player.isCreative()) - player.inventory.placeItemBackInInventory(worldIn, AllItems.CRAFTER_SLOT_COVER.asStack()); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - if (!isHand && !ItemHandlerHelper.canItemStacksStack(heldItem, inSlot)) - return ActionResultType.PASS; - if (worldIn.isRemote) - return ActionResultType.SUCCESS; - player.inventory.placeItemBackInInventory(worldIn, inSlot); - crafter.getInventory().setStackInSlot(0, ItemStack.EMPTY); - return ActionResultType.SUCCESS; - } - - return ActionResultType.PASS; - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - InvManipulationBehaviour behaviour = TileEntityBehaviour.get(worldIn, pos, InvManipulationBehaviour.TYPE); - if (behaviour != null) - behaviour.onNeighborChanged(fromPos); - } - - @Override - public float getParticleTargetRadius() { - return .85f; - } - - @Override - public float getParticleInitialRadius() { - return .75f; - } - - public static Direction getTargetDirection(BlockState state) { - if (!AllBlocks.MECHANICAL_CRAFTER.has(state)) - return Direction.UP; - Direction facing = state.get(HORIZONTAL_FACING); - Pointing point = state.get(POINTING); - Vector3d targetVec = new Vector3d(0, 1, 0); - targetVec = VecHelper.rotate(targetVec, -point.getXRotation(), Axis.Z); - targetVec = VecHelper.rotate(targetVec, AngleHelper.horizontalAngle(facing), Axis.Y); - return Direction.getFacingFromVector(targetVec.x, targetVec.y, targetVec.z); - } - - public static boolean isValidTarget(World world, BlockPos targetPos, BlockState crafterState) { - BlockState targetState = world.getBlockState(targetPos); - if (!world.isBlockPresent(targetPos)) - return false; - if (!AllBlocks.MECHANICAL_CRAFTER.has(targetState)) - return false; - if (crafterState.get(HORIZONTAL_FACING) != targetState.get(HORIZONTAL_FACING)) - return false; - if (Math.abs(crafterState.get(POINTING) - .getXRotation() - - targetState.get(POINTING) - .getXRotation()) == 180) - return false; - return true; - } - - @Override - public Class getTileEntityClass() { - return MechanicalCrafterTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java deleted file mode 100644 index 4ca256adf..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterInstance.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import java.util.function.Supplier; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.util.Direction; - -public class MechanicalCrafterInstance extends SingleRotatingInstance { - - public MechanicalCrafterInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Instancer getModel() { - Direction facing = blockState.get(MechanicalCrafterBlock.HORIZONTAL_FACING); - - Supplier ms = () -> { - MatrixStack stack = new MatrixStack(); - MatrixStacker stacker = MatrixStacker.of(stack).centre(); - - if (facing.getAxis() == Direction.Axis.X) - stacker.rotateZ(90); - else if (facing.getAxis() == Direction.Axis.Z) - stacker.rotateX(90); - - stacker.unCentre(); - return stack; - }; - return getRotatingMaterial().getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState, facing, ms); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java deleted file mode 100644 index a4575de82..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterRenderer.java +++ /dev/null @@ -1,210 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import static com.simibubi.create.content.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING; -import static com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer.standardKineticRotationTransform; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllSpriteShifts; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity.Phase; -import com.simibubi.create.content.contraptions.components.crafter.RecipeGridHandler.GroupedItems; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; - -public class MechanicalCrafterRenderer extends SafeTileEntityRenderer { - - public MechanicalCrafterRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(MechanicalCrafterTileEntity te, float partialTicks, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - ms.push(); - Direction facing = te.getBlockState() - .get(HORIZONTAL_FACING); - Vector3d vec = Vector3d.of(facing.getDirectionVec()).scale(.58) - .add(.5, .5, .5); - - if (te.phase == Phase.EXPORTING) { - Direction targetDirection = MechanicalCrafterBlock.getTargetDirection(te.getBlockState()); - float progress = - MathHelper.clamp((1000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, 0, 1); - vec = vec.add(Vector3d.of(targetDirection.getDirectionVec()).scale(progress * .75f)); - } - - ms.translate(vec.x, vec.y, vec.z); - ms.scale(1 / 2f, 1 / 2f, 1 / 2f); - float yRot = AngleHelper.horizontalAngle(facing); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(yRot)); - renderItems(te, partialTicks, ms, buffer, light, overlay); - ms.pop(); - - renderFast(te, partialTicks, ms, buffer, light); - } - - public void renderItems(MechanicalCrafterTileEntity te, float partialTicks, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - if (te.phase == Phase.IDLE) { - ItemStack stack = te.getInventory().getStackInSlot(0); - if (!stack.isEmpty()) { - ms.push(); - ms.translate(0, 0, -1 / 256f); - Minecraft.getInstance() - .getItemRenderer() - .renderItem(stack, TransformType.FIXED, light, overlay, ms, buffer); - ms.pop(); - } - } else { - // render grouped items - GroupedItems items = te.groupedItems; - float distance = .5f; - - ms.push(); - - if (te.phase == Phase.CRAFTING) { - items = te.groupedItemsBeforeCraft; - items.calcStats(); - float progress = - MathHelper.clamp((2000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, 0, 1); - float earlyProgress = MathHelper.clamp(progress * 2, 0, 1); - float lateProgress = MathHelper.clamp(progress * 2 - 1, 0, 1); - - ms.scale(1 - lateProgress, 1 - lateProgress, 1 - lateProgress); - Vector3d centering = - new Vector3d(-items.minX + (-items.width + 1) / 2f, -items.minY + (-items.height + 1) / 2f, 0) - .scale(earlyProgress); - ms.translate(centering.x * .5f, centering.y * .5f, 0); - distance += (-4 * (progress - .5f) * (progress - .5f) + 1) * .25f; - } - - boolean onlyRenderFirst = te.phase == Phase.INSERTING || te.phase == Phase.CRAFTING && te.countDown < 1000; - final float spacing = distance; - items.grid.forEach((pair, stack) -> { - if (onlyRenderFirst && (pair.getLeft() - .intValue() != 0 - || pair.getRight() - .intValue() != 0)) - return; - - ms.push(); - Integer x = pair.getKey(); - Integer y = pair.getValue(); - ms.translate(x * spacing, y * spacing, 0); - MatrixStacker.of(ms) - .nudge(x * 13 + y + te.getPos() - .hashCode()); - Minecraft.getInstance() - .getItemRenderer() - .renderItem(stack, TransformType.FIXED, light, overlay, ms, buffer); - ms.pop(); - }); - - ms.pop(); - - if (te.phase == Phase.CRAFTING) { - items = te.groupedItems; - float progress = - MathHelper.clamp((1000 - te.countDown + te.getCountDownSpeed() * partialTicks) / 1000f, 0, 1); - float earlyProgress = MathHelper.clamp(progress * 2, 0, 1); - float lateProgress = MathHelper.clamp(progress * 2 - 1, 0, 1); - - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(earlyProgress * 2 * 360)); - float upScaling = earlyProgress * 1.125f; - float downScaling = 1 + (1 - lateProgress) * .125f; - ms.scale(upScaling, upScaling, upScaling); - ms.scale(downScaling, downScaling, downScaling); - - items.grid.forEach((pair, stack) -> { - if (pair.getLeft() - .intValue() != 0 - || pair.getRight() - .intValue() != 0) - return; - Minecraft.getInstance() - .getItemRenderer() - .renderItem(stack, TransformType.FIXED, light, overlay, ms, buffer); - }); - } - - } - } - - public void renderFast(MechanicalCrafterTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light) { - BlockState blockState = te.getBlockState(); - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - - if (!Backend.getInstance().canUseInstancing(te.getWorld())) { - SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState); - standardKineticRotationTransform(superBuffer, te, light); - superBuffer.rotateCentered(Direction.UP, (float) (blockState.get(HORIZONTAL_FACING).getAxis() != Direction.Axis.X ? 0 : Math.PI / 2)); - superBuffer.rotateCentered(Direction.EAST, (float) (Math.PI / 2)); - superBuffer.renderInto(ms, vb); - } - - Direction targetDirection = MechanicalCrafterBlock.getTargetDirection(blockState); - BlockPos pos = te.getPos(); - - if ((te.covered || te.phase != Phase.IDLE) && te.phase != Phase.CRAFTING && te.phase != Phase.INSERTING) { - SuperByteBuffer lidBuffer = - renderAndTransform(te, AllBlockPartials.MECHANICAL_CRAFTER_LID, blockState, pos); - lidBuffer.renderInto(ms, vb); - } - - if (MechanicalCrafterBlock.isValidTarget(te.getWorld(), pos.offset(targetDirection), blockState)) { - SuperByteBuffer beltBuffer = - renderAndTransform(te, AllBlockPartials.MECHANICAL_CRAFTER_BELT, blockState, pos); - SuperByteBuffer beltFrameBuffer = - renderAndTransform(te, AllBlockPartials.MECHANICAL_CRAFTER_BELT_FRAME, blockState, pos); - - if (te.phase == Phase.EXPORTING) { - int textureIndex = (int) ((te.getCountDownSpeed() / 128f * AnimationTickHolder.getTicks())); - beltBuffer.shiftUVtoSheet(AllSpriteShifts.CRAFTER_THINGIES, (textureIndex % 4) / 4f, 0, 1); - } - - beltBuffer.renderInto(ms, vb); - beltFrameBuffer.renderInto(ms, vb); - - } else { - SuperByteBuffer arrowBuffer = - renderAndTransform(te, AllBlockPartials.MECHANICAL_CRAFTER_ARROW, blockState, pos); - arrowBuffer.renderInto(ms, vb); - } - - } - - private SuperByteBuffer renderAndTransform(MechanicalCrafterTileEntity te, PartialModel renderBlock, - BlockState crafterState, BlockPos pos) { - SuperByteBuffer buffer = PartialBufferer.get(renderBlock, crafterState); - float xRot = crafterState.get(MechanicalCrafterBlock.POINTING) - .getXRotation(); - float yRot = AngleHelper.horizontalAngle(crafterState.get(HORIZONTAL_FACING)); - buffer.rotateCentered(Direction.UP, (float) ((yRot + 90) / 180 * Math.PI)); - buffer.rotateCentered(Direction.EAST, (float) ((xRot) / 180 * Math.PI)); - buffer.light(WorldRenderer.getLightmapCoordinates(te.getWorld(), crafterState, pos)); - return buffer; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java deleted file mode 100644 index 8a12fcffc..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCrafterTileEntity.java +++ /dev/null @@ -1,524 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import static com.simibubi.create.content.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Map.Entry; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.crafter.ConnectedInputHandler.ConnectedInput; -import com.simibubi.create.content.contraptions.components.crafter.RecipeGridHandler.GroupedItems; -import com.simibubi.create.foundation.item.SmartInventory; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.edgeInteraction.EdgeInteractionBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; -import com.simibubi.create.foundation.utility.BlockFace; -import com.simibubi.create.foundation.utility.Pointing; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.IItemHandler; - -public class MechanicalCrafterTileEntity extends KineticTileEntity { - - enum Phase { - IDLE, ACCEPTING, ASSEMBLING, EXPORTING, WAITING, CRAFTING, INSERTING; - } - - public static class Inventory extends SmartInventory { - - private MechanicalCrafterTileEntity te; - - public Inventory(MechanicalCrafterTileEntity te) { - super(1, te, 1, false); - this.te = te; - forbidExtraction(); - whenContentsChanged(slot -> { - if (getStackInSlot(slot).isEmpty()) - return; - if (te.phase == Phase.IDLE) - te.checkCompletedRecipe(false); - }); - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - if (te.phase != Phase.IDLE) - return stack; - if (te.covered) - return stack; - ItemStack insertItem = super.insertItem(slot, stack, simulate); - if (insertItem.getCount() != stack.getCount() && !simulate) - te.getWorld() - .playSound(null, te.getPos(), SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.BLOCKS, .25f, - .5f); - return insertItem; - } - - } - - protected Inventory inventory; - protected GroupedItems groupedItems = new GroupedItems(); - protected ConnectedInput input = new ConnectedInput(); - protected LazyOptional invSupplier = LazyOptional.of(() -> input.getItemHandler(world, pos)); - protected boolean reRender; - protected Phase phase; - protected int countDown; - protected boolean covered; - protected boolean wasPoweredBefore; - - protected GroupedItems groupedItemsBeforeCraft; // for rendering on client - private InvManipulationBehaviour inserting; - private EdgeInteractionBehaviour connectivity; - - private ItemStack scriptedResult = ItemStack.EMPTY; - - public MechanicalCrafterTileEntity(TileEntityType type) { - super(type); - setLazyTickRate(20); - phase = Phase.IDLE; - groupedItemsBeforeCraft = new GroupedItems(); - inventory = new Inventory(this); - - // Does not get serialized due to active checking in tick - wasPoweredBefore = true; - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - inserting = new InvManipulationBehaviour(this, this::getTargetFace); - connectivity = new EdgeInteractionBehaviour(this, ConnectedInputHandler::toggleConnection) - .connectivity(ConnectedInputHandler::shouldConnect) - .require(AllItems.WRENCH.get()); - behaviours.add(inserting); - behaviours.add(connectivity); - } - - public void blockChanged() { - removeBehaviour(InvManipulationBehaviour.TYPE); - inserting = new InvManipulationBehaviour(this, this::getTargetFace); - attachBehaviourLate(inserting); - } - - public BlockFace getTargetFace(World world, BlockPos pos, BlockState state) { - return new BlockFace(pos, MechanicalCrafterBlock.getTargetDirection(state)); - } - - public Direction getTargetDirection() { - return MechanicalCrafterBlock.getTargetDirection(getBlockState()); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.put("Inventory", inventory.serializeNBT()); - - CompoundNBT inputNBT = new CompoundNBT(); - input.write(inputNBT); - compound.put("ConnectedInput", inputNBT); - - CompoundNBT groupedItemsNBT = new CompoundNBT(); - groupedItems.write(groupedItemsNBT); - compound.put("GroupedItems", groupedItemsNBT); - - compound.putString("Phase", phase.name()); - compound.putInt("CountDown", countDown); - compound.putBoolean("Cover", covered); - - super.write(compound, clientPacket); - - if (clientPacket && reRender) { - compound.putBoolean("Redraw", true); - reRender = false; - } - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - Phase phaseBefore = phase; - GroupedItems before = this.groupedItems; - - inventory.deserializeNBT(compound.getCompound("Inventory")); - input.read(compound.getCompound("ConnectedInput")); - groupedItems = GroupedItems.read(compound.getCompound("GroupedItems")); - phase = Phase.IDLE; - String name = compound.getString("Phase"); - for (Phase phase : Phase.values()) - if (phase.name() - .equals(name)) - this.phase = phase; - countDown = compound.getInt("CountDown"); - covered = compound.getBoolean("Cover"); - super.fromTag(state, compound, clientPacket); - if (!clientPacket) - return; - if (compound.contains("Redraw")) - world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 16); - if (phaseBefore != phase && phase == Phase.CRAFTING) - groupedItemsBeforeCraft = before; - if (phaseBefore == Phase.EXPORTING && phase == Phase.WAITING) { - Direction facing = getBlockState().get(MechanicalCrafterBlock.HORIZONTAL_FACING); - Vector3d vec = Vector3d.of(facing.getDirectionVec()) - .scale(.75) - .add(VecHelper.getCenterOf(pos)); - Direction targetDirection = MechanicalCrafterBlock.getTargetDirection(getBlockState()); - vec = vec.add(Vector3d.of(targetDirection.getDirectionVec()) - .scale(1)); - world.addParticle(ParticleTypes.CRIT, vec.x, vec.y, vec.z, 0, 0, 0); - } - } - - @Override - public void remove() { - invSupplier.invalidate(); - super.remove(); - } - - public int getCountDownSpeed() { - if (getSpeed() == 0) - return 0; - return MathHelper.clamp((int) Math.abs(getSpeed()), 4, 250); - } - - @Override - public void tick() { - super.tick(); - - if (phase == Phase.ACCEPTING) - return; - - boolean onClient = world.isRemote; - boolean runLogic = !onClient || isVirtual(); - - if (wasPoweredBefore != world.isBlockPowered(pos)) { - wasPoweredBefore = world.isBlockPowered(pos); - if (wasPoweredBefore) { - if (!runLogic) - return; - checkCompletedRecipe(true); - } - } - - if (phase == Phase.ASSEMBLING) { - countDown -= getCountDownSpeed(); - if (countDown < 0) { - countDown = 0; - if (!runLogic) - return; - if (RecipeGridHandler.getTargetingCrafter(this) != null) { - phase = Phase.EXPORTING; - countDown = 1000; - sendData(); - return; - } - - ItemStack result = - isVirtual() ? scriptedResult : RecipeGridHandler.tryToApplyRecipe(world, groupedItems); - - if (result != null) { - List containers = new ArrayList<>(); - groupedItems.grid.values() - .forEach(stack -> { - if (stack.hasContainerItem()) - containers.add(stack.getContainerItem() - .copy()); - }); - - if (isVirtual()) - groupedItemsBeforeCraft = groupedItems; - - groupedItems = new GroupedItems(result); - for (int i = 0; i < containers.size(); i++) { - ItemStack stack = containers.get(i); - GroupedItems container = new GroupedItems(); - container.grid.put(Pair.of(i, 0), stack); - container.mergeOnto(groupedItems, Pointing.LEFT); - } - - phase = Phase.CRAFTING; - countDown = 2000; - sendData(); - return; - } - ejectWholeGrid(); - return; - } - } - - if (phase == Phase.EXPORTING) { - countDown -= getCountDownSpeed(); - - if (countDown < 0) { - countDown = 0; - if (!runLogic) - return; - - MechanicalCrafterTileEntity targetingCrafter = RecipeGridHandler.getTargetingCrafter(this); - if (targetingCrafter == null) { - ejectWholeGrid(); - return; - } - - Pointing pointing = getBlockState().get(MechanicalCrafterBlock.POINTING); - groupedItems.mergeOnto(targetingCrafter.groupedItems, pointing); - groupedItems = new GroupedItems(); - - float pitch = targetingCrafter.groupedItems.grid.size() * 1/16f + .5f; - AllSoundEvents.CRAFTER_CLICK.playOnServer(world, pos, 1, pitch); - - phase = Phase.WAITING; - countDown = 0; - sendData(); - targetingCrafter.continueIfAllPrecedingFinished(); - targetingCrafter.sendData(); - return; - } - } - - if (phase == Phase.CRAFTING) { - - if (onClient) { - Direction facing = getBlockState().get(MechanicalCrafterBlock.HORIZONTAL_FACING); - float progress = countDown / 2000f; - Vector3d facingVec = Vector3d.of(facing.getDirectionVec()); - Vector3d vec = facingVec.scale(.65) - .add(VecHelper.getCenterOf(pos)); - Vector3d offset = VecHelper.offsetRandomly(Vector3d.ZERO, world.rand, .125f) - .mul(VecHelper.axisAlingedPlaneOf(facingVec)) - .normalize() - .scale(progress * .5f) - .add(vec); - if (progress > .5f) - world.addParticle(ParticleTypes.CRIT, offset.x, offset.y, offset.z, 0, 0, 0); - - if (!groupedItemsBeforeCraft.grid.isEmpty() && progress < .5f) { - if (groupedItems.grid.containsKey(Pair.of(0, 0))) { - ItemStack stack = groupedItems.grid.get(Pair.of(0, 0)); - groupedItemsBeforeCraft = new GroupedItems(); - - for (int i = 0; i < 10; i++) { - Vector3d randVec = VecHelper.offsetRandomly(Vector3d.ZERO, world.rand, .125f) - .mul(VecHelper.axisAlingedPlaneOf(facingVec)) - .normalize() - .scale(.25f); - Vector3d offset2 = randVec.add(vec); - randVec = randVec.scale(.35f); - world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), offset2.x, offset2.y, - offset2.z, randVec.x, randVec.y, randVec.z); - } - } - } - } - - int prev = countDown; - countDown -= getCountDownSpeed(); - - if (countDown < 1000 && prev >= 1000) { - AllSoundEvents.CRAFTER_CLICK.playOnServer(world, pos, 1, 2); - AllSoundEvents.CRAFTER_CRAFT.playOnServer(world, pos); - } - - if (countDown < 0) { - countDown = 0; - if (!runLogic) - return; - tryInsert(); - return; - } - } - - if (phase == Phase.INSERTING) { - if (runLogic && isTargetingBelt()) - tryInsert(); - return; - } - } - - protected boolean isTargetingBelt() { - DirectBeltInputBehaviour behaviour = getTargetingBelt(); - return behaviour != null && behaviour.canInsertFromSide(getTargetDirection()); - } - - protected DirectBeltInputBehaviour getTargetingBelt() { - BlockPos targetPos = pos.offset(getTargetDirection()); - return TileEntityBehaviour.get(world, targetPos, DirectBeltInputBehaviour.TYPE); - } - - public void tryInsert() { - if (!inserting.hasInventory() && !isTargetingBelt()) { - ejectWholeGrid(); - return; - } - - boolean chagedPhase = phase != Phase.INSERTING; - final List> inserted = new LinkedList<>(); - - DirectBeltInputBehaviour behaviour = getTargetingBelt(); - for (Entry, ItemStack> entry : groupedItems.grid.entrySet()) { - Pair pair = entry.getKey(); - ItemStack stack = entry.getValue(); - BlockFace face = getTargetFace(world, pos, getBlockState()); - - ItemStack remainder = behaviour == null ? inserting.insert(stack.copy()) - : behaviour.handleInsertion(stack, face.getFace(), false); - if (!remainder.isEmpty()) { - stack.setCount(remainder.getCount()); - continue; - } - - inserted.add(pair); - } - - inserted.forEach(groupedItems.grid::remove); - if (groupedItems.grid.isEmpty()) - ejectWholeGrid(); - else - phase = Phase.INSERTING; - if (!inserted.isEmpty() || chagedPhase) - sendData(); - } - - public void ejectWholeGrid() { - List chain = RecipeGridHandler.getAllCraftersOfChain(this); - if (chain == null) - return; - chain.forEach(MechanicalCrafterTileEntity::eject); - } - - public void eject() { - BlockState blockState = getBlockState(); - boolean present = AllBlocks.MECHANICAL_CRAFTER.has(blockState); - Vector3d vec = present ? Vector3d.of(blockState.get(HORIZONTAL_FACING) - .getDirectionVec()) - .scale(.75f) : Vector3d.ZERO; - Vector3d ejectPos = VecHelper.getCenterOf(pos) - .add(vec); - groupedItems.grid.forEach((pair, stack) -> dropItem(ejectPos, stack)); - if (!inventory.getStackInSlot(0) - .isEmpty()) - dropItem(ejectPos, inventory.getStackInSlot(0)); - phase = Phase.IDLE; - groupedItems = new GroupedItems(); - inventory.setStackInSlot(0, ItemStack.EMPTY); - sendData(); - } - - public void dropItem(Vector3d ejectPos, ItemStack stack) { - ItemEntity itemEntity = new ItemEntity(world, ejectPos.x, ejectPos.y, ejectPos.z, stack); - itemEntity.setDefaultPickupDelay(); - world.addEntity(itemEntity); - } - - @Override - public void lazyTick() { - super.lazyTick(); - if (world.isRemote && !isVirtual()) - return; - if (phase == Phase.IDLE && craftingItemPresent()) - checkCompletedRecipe(false); - if (phase == Phase.INSERTING) - tryInsert(); - } - - public boolean craftingItemPresent() { - return !inventory.getStackInSlot(0) - .isEmpty(); - } - - public boolean craftingItemOrCoverPresent() { - return !inventory.getStackInSlot(0) - .isEmpty() || covered; - } - - protected void checkCompletedRecipe(boolean poweredStart) { - if (getSpeed() == 0) - return; - if (world.isRemote && !isVirtual()) - return; - List chain = RecipeGridHandler.getAllCraftersOfChainIf(this, - poweredStart ? MechanicalCrafterTileEntity::craftingItemPresent - : MechanicalCrafterTileEntity::craftingItemOrCoverPresent, - poweredStart); - if (chain == null) - return; - chain.forEach(MechanicalCrafterTileEntity::begin); - } - - protected void begin() { - phase = Phase.ACCEPTING; - groupedItems = new GroupedItems(inventory.getStackInSlot(0)); - inventory.setStackInSlot(0, ItemStack.EMPTY); - if (RecipeGridHandler.getPrecedingCrafters(this) - .isEmpty()) { - phase = Phase.ASSEMBLING; - countDown = 500; - } - sendData(); - } - - protected void continueIfAllPrecedingFinished() { - List preceding = RecipeGridHandler.getPrecedingCrafters(this); - if (preceding == null) { - ejectWholeGrid(); - return; - } - - for (MechanicalCrafterTileEntity mechanicalCrafterTileEntity : preceding) - if (mechanicalCrafterTileEntity.phase != Phase.WAITING) - return; - - phase = Phase.ASSEMBLING; - countDown = Math.max(100, getCountDownSpeed() + 1); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (isItemHandlerCap(cap)) - return invSupplier.cast(); - return super.getCapability(cap, side); - } - - public void connectivityChanged() { - reRender = true; - sendData(); - invSupplier.invalidate(); - invSupplier = LazyOptional.of(() -> input.getItemHandler(world, pos)); - } - - public Inventory getInventory() { - return inventory; - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - - public void setScriptedResult(ItemStack scriptedResult) { - this.scriptedResult = scriptedResult; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCraftingInventory.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCraftingInventory.java deleted file mode 100644 index 600cb4996..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCraftingInventory.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.content.contraptions.components.crafter.RecipeGridHandler.GroupedItems; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.inventory.container.Container; -import net.minecraft.item.ItemStack; - -public class MechanicalCraftingInventory extends CraftingInventory { - - private static Container dummyContainer = new Container(null, -1) { - public boolean canInteractWith(PlayerEntity playerIn) { - return false; - } - }; - - public MechanicalCraftingInventory(GroupedItems items) { - super(dummyContainer, items.width, items.height); - for (int y = 0; y < items.height; y++) { - for (int x = 0; x < items.width; x++) { - ItemStack stack = items.grid.get(Pair.of(x + items.minX, y + items.minY)); - setInventorySlotContents(x + (items.height - y - 1) * items.width, - stack == null ? ItemStack.EMPTY : stack.copy()); - } - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCraftingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCraftingRecipe.java deleted file mode 100644 index a44acfa42..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/MechanicalCraftingRecipe.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import com.google.gson.JsonObject; -import com.simibubi.create.AllRecipeTypes; - -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.item.crafting.ShapedRecipe; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; - -public class MechanicalCraftingRecipe extends ShapedRecipe { - - public MechanicalCraftingRecipe(ResourceLocation idIn, String groupIn, int recipeWidthIn, int recipeHeightIn, - NonNullList recipeItemsIn, ItemStack recipeOutputIn) { - super(idIn, groupIn, recipeWidthIn, recipeHeightIn, recipeItemsIn, recipeOutputIn); - } - - private static MechanicalCraftingRecipe fromShaped(ShapedRecipe recipe) { - return new MechanicalCraftingRecipe(recipe.getId(), recipe.getGroup(), recipe.getWidth(), recipe.getHeight(), - recipe.getIngredients(), recipe.getRecipeOutput()); - } - - @Override - public boolean matches(CraftingInventory inv, World worldIn) { - return inv instanceof MechanicalCraftingInventory && super.matches(inv, worldIn); - } - - @Override - public IRecipeType getType() { - return AllRecipeTypes.MECHANICAL_CRAFTING.type; - } - - @Override - public boolean isDynamic() { - return true; - } - - @Override - public IRecipeSerializer getSerializer() { - return AllRecipeTypes.MECHANICAL_CRAFTING.serializer; - } - - public static class Serializer extends ShapedRecipe.Serializer { - - @Override - public ShapedRecipe read(ResourceLocation recipeId, JsonObject json) { - return fromShaped(super.read(recipeId, json)); - } - - @Override - public ShapedRecipe read(ResourceLocation recipeId, PacketBuffer buffer) { - return fromShaped(super.read(recipeId, buffer)); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java deleted file mode 100644 index 3f32854de..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crafter/RecipeGridHandler.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crafter; - -import static com.simibubi.create.content.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Predicate; - -import org.apache.commons.lang3.tuple.Pair; - -import com.google.common.base.Predicates; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.BlockState; -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants.NBT; - -public class RecipeGridHandler { - - public static List getAllCraftersOfChain(MechanicalCrafterTileEntity root) { - return getAllCraftersOfChainIf(root, Predicates.alwaysTrue()); - } - - public static List getAllCraftersOfChainIf(MechanicalCrafterTileEntity root, - Predicate test) { - return getAllCraftersOfChainIf(root, test, false); - } - - public static List getAllCraftersOfChainIf(MechanicalCrafterTileEntity root, - Predicate test, boolean poweredStart) { - List crafters = new ArrayList<>(); - List> frontier = new ArrayList<>(); - Set visited = new HashSet<>(); - frontier.add(Pair.of(root, null)); - - boolean powered = false; - boolean empty = false; - boolean allEmpty = true; - - while (!frontier.isEmpty()) { - Pair pair = frontier.remove(0); - MechanicalCrafterTileEntity current = pair.getKey(); - MechanicalCrafterTileEntity last = pair.getValue(); - - if (visited.contains(current)) - return null; - if (!(test.test(current))) - empty = true; - else - allEmpty = false; - if (poweredStart && current.getWorld() - .isBlockPowered(current.getPos())) - powered = true; - - crafters.add(current); - visited.add(current); - - MechanicalCrafterTileEntity target = getTargetingCrafter(current); - if (target != last && target != null) - frontier.add(Pair.of(target, current)); - for (MechanicalCrafterTileEntity preceding : getPrecedingCrafters(current)) - if (preceding != last) - frontier.add(Pair.of(preceding, current)); - } - - return empty && !powered || allEmpty ? null : crafters; - } - - public static MechanicalCrafterTileEntity getTargetingCrafter(MechanicalCrafterTileEntity crafter) { - BlockState state = crafter.getBlockState(); - if (!isCrafter(state)) - return null; - - BlockPos targetPos = crafter.getPos() - .offset(MechanicalCrafterBlock.getTargetDirection(state)); - MechanicalCrafterTileEntity targetTE = CrafterHelper.getCrafter(crafter.getWorld(), targetPos); - if (targetTE == null) - return null; - - BlockState targetState = targetTE.getBlockState(); - if (!isCrafter(targetState)) - return null; - if (state.get(HORIZONTAL_FACING) != targetState.get(HORIZONTAL_FACING)) - return null; - return targetTE; - } - - public static List getPrecedingCrafters(MechanicalCrafterTileEntity crafter) { - BlockPos pos = crafter.getPos(); - World world = crafter.getWorld(); - List crafters = new ArrayList<>(); - BlockState blockState = crafter.getBlockState(); - if (!isCrafter(blockState)) - return crafters; - - Direction blockFacing = blockState.get(HORIZONTAL_FACING); - Direction blockPointing = MechanicalCrafterBlock.getTargetDirection(blockState); - for (Direction facing : Iterate.directions) { - if (blockFacing.getAxis() == facing.getAxis()) - continue; - if (blockPointing == facing) - continue; - - BlockPos neighbourPos = pos.offset(facing); - BlockState neighbourState = world.getBlockState(neighbourPos); - if (!isCrafter(neighbourState)) - continue; - if (MechanicalCrafterBlock.getTargetDirection(neighbourState) != facing.getOpposite()) - continue; - if (blockFacing != neighbourState.get(HORIZONTAL_FACING)) - continue; - MechanicalCrafterTileEntity te = CrafterHelper.getCrafter(world, neighbourPos); - if (te == null) - continue; - - crafters.add(te); - } - - return crafters; - } - - private static boolean isCrafter(BlockState state) { - return AllBlocks.MECHANICAL_CRAFTER.has(state); - } - - public static ItemStack tryToApplyRecipe(World world, GroupedItems items) { - items.calcStats(); - CraftingInventory craftinginventory = new MechanicalCraftingInventory(items); - ItemStack result = null; - if (AllConfigs.SERVER.recipes.allowRegularCraftingInCrafter.get()) - result = world.getRecipeManager() - .getRecipe(IRecipeType.CRAFTING, craftinginventory, world) - .map(r -> r.getCraftingResult(craftinginventory)) - .orElse(null); - if (result == null) - result = AllRecipeTypes.MECHANICAL_CRAFTING.find(craftinginventory, world) - .map(r -> r.getCraftingResult(craftinginventory)) - .orElse(null); - return result; - } - - public static class GroupedItems { - Map, ItemStack> grid = new HashMap<>(); - int minX, minY, maxX, maxY, width, height; - boolean statsReady; - - public GroupedItems() {} - - public GroupedItems(ItemStack stack) { - grid.put(Pair.of(0, 0), stack); - } - - public void mergeOnto(GroupedItems other, Pointing pointing) { - int xOffset = pointing == Pointing.LEFT ? 1 : pointing == Pointing.RIGHT ? -1 : 0; - int yOffset = pointing == Pointing.DOWN ? 1 : pointing == Pointing.UP ? -1 : 0; - grid.forEach( - (pair, stack) -> other.grid.put(Pair.of(pair.getKey() + xOffset, pair.getValue() + yOffset), stack)); - other.statsReady = false; - } - - public void write(CompoundNBT nbt) { - ListNBT gridNBT = new ListNBT(); - grid.forEach((pair, stack) -> { - CompoundNBT entry = new CompoundNBT(); - entry.putInt("x", pair.getKey()); - entry.putInt("y", pair.getValue()); - entry.put("item", stack.serializeNBT()); - gridNBT.add(entry); - }); - nbt.put("Grid", gridNBT); - } - - public static GroupedItems read(CompoundNBT nbt) { - GroupedItems items = new GroupedItems(); - ListNBT gridNBT = nbt.getList("Grid", NBT.TAG_COMPOUND); - gridNBT.forEach(inbt -> { - CompoundNBT entry = (CompoundNBT) inbt; - int x = entry.getInt("x"); - int y = entry.getInt("y"); - ItemStack stack = ItemStack.read(entry.getCompound("item")); - items.grid.put(Pair.of(x, y), stack); - }); - return items; - } - - public void calcStats() { - if (statsReady) - return; - statsReady = true; - - minX = 0; - minY = 0; - maxX = 0; - maxY = 0; - - for (Pair pair : grid.keySet()) { - int x = pair.getKey(); - int y = pair.getValue(); - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); - } - - width = maxX - minX + 1; - height = maxY - minY + 1; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java deleted file mode 100644 index bef299a96..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankBlock.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crank; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class HandCrankBlock extends DirectionalKineticBlock implements ITE { - - public HandCrankBlock(Properties properties) { - super(properties); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.CRANK.get(state.get(FACING)); - } - - @OnlyIn(Dist.CLIENT) - public PartialModel getRenderedHandle() { - return AllBlockPartials.HAND_CRANK_HANDLE; - } - - public int getRotationSpeed() { - return 32; - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.ENTITYBLOCK_ANIMATED; - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - - withTileEntityDo(worldIn, pos, te -> te.turn(player.isSneaking())); - player.addExhaustion(getRotationSpeed() * AllConfigs.SERVER.kinetics.crankHungerMultiplier.getF()); - return ActionResultType.SUCCESS; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction preferred = getPreferredFacing(context); - if (preferred == null || (context.getPlayer() != null && context.getPlayer() - .isSneaking())) - return getDefaultState().with(FACING, context.getFace()); - return getDefaultState().with(FACING, preferred.getOpposite()); - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - Direction facing = state.get(FACING) - .getOpposite(); - BlockPos neighbourPos = pos.offset(facing); - BlockState neighbour = worldIn.getBlockState(neighbourPos); - return !neighbour.getCollisionShape(worldIn, neighbourPos) - .isEmpty(); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - Direction blockFacing = state.get(FACING); - if (fromPos.equals(pos.offset(blockFacing.getOpposite()))) { - if (!isValidPosition(state, worldIn, pos)) { - worldIn.destroyBlock(pos, true); - return; - } - } - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.HAND_CRANK.create(); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == state.get(FACING) - .getOpposite(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(FACING) - .getAxis(); - } - - @Override - public Class getTileEntityClass() { - return HandCrankTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java deleted file mode 100644 index b353c463b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankInstance.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crank; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.Block; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; - -public class HandCrankInstance extends SingleRotatingInstance implements IDynamicInstance { - - private final HandCrankTileEntity tile; - private ModelData crank; - private Direction facing; - - public HandCrankInstance(MaterialManager modelManager, HandCrankTileEntity tile) { - super(modelManager, tile); - this.tile = tile; - - Block block = blockState.getBlock(); - PartialModel renderedHandle = null; - if (block instanceof HandCrankBlock) - renderedHandle = ((HandCrankBlock) block).getRenderedHandle(); - if (renderedHandle == null) - return; - - facing = blockState.get(BlockStateProperties.FACING); - Direction opposite = facing.getOpposite(); - Instancer model = getTransformMaterial().getModel(renderedHandle, blockState, opposite); - crank = model.createInstance(); - - rotateCrank(); - } - - @Override - public void beginFrame() { - if (crank == null) return; - - rotateCrank(); - } - - private void rotateCrank() { - Direction.Axis axis = facing.getAxis(); - float angle = (tile.independentAngle + AnimationTickHolder.getPartialTicks() * tile.chasingVelocity) / 360; - - MatrixStack ms = new MatrixStack(); - MatrixStacker.of(ms) - .translate(getInstancePosition()) - .centre() - .rotate(Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis), angle) - .unCentre(); - - crank.setTransform(ms); - } - - @Override - public void remove() { - super.remove(); - if (crank != null) crank.delete(); - } - - @Override - public void updateLight() { - super.updateLight(); - if (crank != null) relight(pos, crank); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankRenderer.java deleted file mode 100644 index 586f0ea90..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankRenderer.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crank; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; - -public class HandCrankRenderer extends KineticTileEntityRenderer { - - public HandCrankRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - BlockState state = te.getBlockState(); - Block block = state.getBlock(); - PartialModel renderedHandle = null; - if (block instanceof HandCrankBlock) - renderedHandle = ((HandCrankBlock) block).getRenderedHandle(); - if (renderedHandle == null) - return; - - Direction facing = state.get(FACING); - SuperByteBuffer handle = PartialBufferer.getFacing(renderedHandle, state, facing.getOpposite()); - HandCrankTileEntity crank = (HandCrankTileEntity) te; - kineticRotationTransform(handle, te, facing.getAxis(), - (crank.independentAngle + partialTicks * crank.chasingVelocity) / 360, light); - handle.renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java deleted file mode 100644 index 259a89b10..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/HandCrankTileEntity.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crank; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; - -public class HandCrankTileEntity extends GeneratingKineticTileEntity { - - public int inUse; - public boolean backwards; - public float independentAngle; - public float chasingVelocity; - - public HandCrankTileEntity(TileEntityType type) { - super(type); - } - - public void turn(boolean back) { - boolean update = false; - - if (getGeneratedSpeed() == 0 || back != backwards) - update = true; - - inUse = 10; - this.backwards = back; - if (update && !world.isRemote) - updateGeneratedRotation(); - } - - @Override - public float getGeneratedSpeed() { - Block block = getBlockState().getBlock(); - if (!(block instanceof HandCrankBlock)) - return 0; - HandCrankBlock crank = (HandCrankBlock) block; - int speed = (inUse == 0 ? 0 : backwards ? -1 : 1) * crank.getRotationSpeed(); - return convertToDirection(speed, getBlockState().get(HandCrankBlock.FACING)); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putInt("InUse", inUse); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - inUse = compound.getInt("InUse"); - super.fromTag(state, compound, clientPacket); - } - - @Override - public void tick() { - super.tick(); - - float actualSpeed = getSpeed(); - chasingVelocity += ((actualSpeed * 10 / 3f) - chasingVelocity) * .25f; - independentAngle += chasingVelocity; - - if (inUse > 0) { - inUse--; - - if (inUse == 0 && !world.isRemote) - updateGeneratedRotation(); - } - } - - @Override - protected Block getStressConfigKey() { - return AllBlocks.HAND_CRANK.get(); - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - - @Override - public void tickAudio() { - super.tickAudio(); - if (inUse > 0 && AnimationTickHolder.getTicks() % 10 == 0) { - if (!AllBlocks.HAND_CRANK.has(getBlockState())) - return; - AllSoundEvents.CRANKING.playAt(world, pos, (inUse) / 2.5f, .65f + (10 - inUse) / 10f, true); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java deleted file mode 100644 index 8b0b71e91..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crank/ValveHandleBlock.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crank; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.utility.DyeHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@ParametersAreNonnullByDefault -public class ValveHandleBlock extends HandCrankBlock { - private final boolean inCreativeTab; - - public static ValveHandleBlock copper(Properties properties) { - return new ValveHandleBlock(properties, true); - } - - public static ValveHandleBlock dyed(Properties properties) { - return new ValveHandleBlock(properties, false); - } - - private ValveHandleBlock(Properties properties, boolean inCreativeTab) { - super(properties); - this.inCreativeTab = inCreativeTab; - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - ItemStack heldItem = player.getHeldItem(handIn); - for (DyeColor color : DyeColor.values()) { - if (!heldItem.getItem() - .isIn(DyeHelper.getTagOfDye(color))) - continue; - if (worldIn.isRemote) - return ActionResultType.SUCCESS; - - BlockState newState = AllBlocks.DYED_VALVE_HANDLES.get(color) - .getDefaultState() - .with(FACING, state.get(FACING)); - if (newState != state) - worldIn.setBlockState(pos, newState); - return ActionResultType.SUCCESS; - } - - return super.onUse(state, worldIn, pos, player, handIn, hit); - } - - @Override - public void fillItemGroup(ItemGroup group, NonNullList p_149666_2_) { - if (group != ItemGroup.SEARCH && !inCreativeTab) - return; - super.fillItemGroup(group, p_149666_2_); - } - - @Override - @OnlyIn(Dist.CLIENT) - public PartialModel getRenderedHandle() { - return null; - } - - @Override - public int getRotationSpeed() { - return 16; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/AbstractCrushingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/AbstractCrushingRecipe.java deleted file mode 100644 index 350a5269a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/AbstractCrushingRecipe.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crusher; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public abstract class AbstractCrushingRecipe extends ProcessingRecipe { - - public AbstractCrushingRecipe(AllRecipeTypes recipeType, ProcessingRecipeParams params) { - super(recipeType, params); - } - - @Override - protected int getMaxInputCount() { - return 1; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingRecipe.java deleted file mode 100644 index d03b8e07e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingRecipe.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crusher; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraft.world.World; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -@ParametersAreNonnullByDefault -public class CrushingRecipe extends AbstractCrushingRecipe { - - public CrushingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.CRUSHING, params); - } - - @Override - public boolean matches(RecipeWrapper inv, World worldIn) { - if (inv.isEmpty()) - return false; - return ingredients.get(0) - .test(inv.getStackInSlot(0)); - } - - @Override - protected int getMaxOutputCount() { - return 7; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelBlock.java deleted file mode 100644 index 34e587985..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelBlock.java +++ /dev/null @@ -1,205 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crusher; - -import static com.simibubi.create.content.contraptions.components.crusher.CrushingWheelControllerBlock.VALID; -import static net.minecraft.block.DirectionalBlock.FACING; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public class CrushingWheelBlock extends RotatedPillarKineticBlock implements ITE { - - public CrushingWheelBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.CRUSHING_WHEEL.create(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(AXIS); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.ENTITYBLOCK_ANIMATED; - } - - @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, - ISelectionContext context) { - return AllShapes.CRUSHING_WHEEL_COLLISION_SHAPE; - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - - for (Direction d : Iterate.directions) { - if (d.getAxis() == state.get(AXIS)) - continue; - if (AllBlocks.CRUSHING_WHEEL_CONTROLLER.has(worldIn.getBlockState(pos.offset(d)))) - worldIn.setBlockState(pos.offset(d), Blocks.AIR.getDefaultState()); - } - - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { - worldIn.removeTileEntity(pos); - } - } - - public void updateControllers(BlockState state, World world, BlockPos pos, Direction side) { - if (side.getAxis() == state.get(AXIS)) - return; - if (world == null) - return; - - BlockPos controllerPos = pos.offset(side); - BlockPos otherWheelPos = pos.offset(side, 2); - - boolean controllerExists = AllBlocks.CRUSHING_WHEEL_CONTROLLER.has(world.getBlockState(controllerPos)); - boolean controllerIsValid = controllerExists && world.getBlockState(controllerPos) - .get(VALID); - Direction controllerOldDirection = controllerExists - ? world.getBlockState(controllerPos) - .get(FACING) - : null; - - boolean controllerShouldExist = false; - boolean controllerShouldBeValid = false; - Direction controllerNewDirection = Direction.DOWN; - - BlockState otherState = world.getBlockState(otherWheelPos); - if (AllBlocks.CRUSHING_WHEEL.has(otherState)) { - controllerShouldExist = true; - - CrushingWheelTileEntity te = getTileEntity(world, pos); - CrushingWheelTileEntity otherTe = getTileEntity(world, otherWheelPos); - - if (te != null && otherTe != null && (te.getSpeed() > 0) != (otherTe.getSpeed() > 0) - && te.getSpeed() != 0) { - Axis wheelAxis = state.get(AXIS); - Axis sideAxis = side.getAxis(); - int controllerADO = Math.round(Math.signum(te.getSpeed())) * side.getAxisDirection().getOffset(); - Vector3d controllerDirVec = new Vector3d(wheelAxis == Axis.X ? 1 : 0 - , wheelAxis == Axis.Y ? 1 : 0 - , wheelAxis == Axis.Z ? 1 : 0) - .crossProduct(new Vector3d(sideAxis == Axis.X ? 1 : 0 - , sideAxis == Axis.Y ? 1 : 0 - , sideAxis == Axis.Z ? 1 : 0)); - - controllerNewDirection = Direction.getFacingFromVector(controllerDirVec.x * controllerADO - , controllerDirVec.y * controllerADO - , controllerDirVec.z * controllerADO); - - controllerShouldBeValid = true; - } - if (otherState.get(AXIS) != state.get(AXIS)) - controllerShouldExist = false; - } - - if (!controllerShouldExist) { - if (controllerExists) - world.setBlockState(controllerPos, Blocks.AIR.getDefaultState()); - return; - } - - if (!controllerExists) { - if (!world.getBlockState(controllerPos) - .getMaterial() - .isReplaceable()) - return; - world.setBlockState(controllerPos, AllBlocks.CRUSHING_WHEEL_CONTROLLER.getDefaultState() - .with(VALID, controllerShouldBeValid) - .with(FACING, controllerNewDirection)); - } else if (controllerIsValid != controllerShouldBeValid || controllerOldDirection != controllerNewDirection) { - world.setBlockState(controllerPos, world.getBlockState(controllerPos) - .with(VALID, controllerShouldBeValid) - .with(FACING, controllerNewDirection)); - } - - ((CrushingWheelControllerBlock) AllBlocks.CRUSHING_WHEEL_CONTROLLER.get()) - .updateSpeed(world.getBlockState(controllerPos), world, controllerPos); - - } - - @Override - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { - if (entityIn.getY() < pos.getY() + 1.25f || !entityIn.isOnGround()) - return; - - float speed = getTileEntityOptional(worldIn, pos).map(CrushingWheelTileEntity::getSpeed) - .orElse(0f); - - double x = 0; - double z = 0; - - if (state.get(AXIS) == Axis.X) { - z = speed / 20f; - x += (pos.getX() + .5f - entityIn.getX()) * .1f; - } - if (state.get(AXIS) == Axis.Z) { - x = speed / -20f; - z += (pos.getZ() + .5f - entityIn.getZ()) * .1f; - } - entityIn.setMotion(entityIn.getMotion() - .add(x, 0, z)); - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - for (Direction direction : Iterate.directions) { - BlockPos neighbourPos = pos.offset(direction); - BlockState neighbourState = worldIn.getBlockState(neighbourPos); - Axis stateAxis = state.get(AXIS); - if (AllBlocks.CRUSHING_WHEEL_CONTROLLER.has(neighbourState) && direction.getAxis() != stateAxis) - return false; - if (!AllBlocks.CRUSHING_WHEEL.has(neighbourState)) - continue; - if (neighbourState.get(AXIS) != stateAxis || stateAxis != direction.getAxis()) - return false; - } - - return true; - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(AXIS); - } - - @Override - public float getParticleTargetRadius() { - return 1.125f; - } - - @Override - public float getParticleInitialRadius() { - return 1f; - } - - @Override - public Class getTileEntityClass() { - return CrushingWheelTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerBlock.java deleted file mode 100644 index 944b8e073..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerBlock.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crusher; - -import java.util.Random; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.DirectionalBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.Difficulty; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; - -public class CrushingWheelControllerBlock extends DirectionalBlock - implements ITE { - - public CrushingWheelControllerBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - } - - public static final BooleanProperty VALID = BooleanProperty.create("valid"); - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public boolean isReplaceable(BlockState state, BlockItemUseContext useContext) { - return false; - } - - @Override - public boolean addRunningEffects(BlockState state, World world, BlockPos pos, Entity entity) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.CRUSHING_WHEEL_CONTROLLER.create(); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(VALID); - builder.add(FACING); - super.fillStateContainer(builder); - } - - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { - if (!state.get(VALID)) - return; - - Direction facing = state.get(FACING); - Axis axis = facing.getAxis(); - - checkEntityForProcessing(worldIn, pos, entityIn); - - withTileEntityDo(worldIn, pos, te -> { - if (te.processingEntity == entityIn) - - entityIn.setMotionMultiplier(state, new Vector3d(axis == Axis.X ? (double) 0.05F : 0.25D - , axis == Axis.Y ? (double) 0.05F : 0.25D - , axis == Axis.Z ? (double) 0.05F : 0.25D)); - }); - } - - public void checkEntityForProcessing(World worldIn, BlockPos pos, Entity entityIn) { - CrushingWheelControllerTileEntity te = getTileEntity(worldIn, pos); - if (te == null) - return; - if (te.crushingspeed == 0) - return; - if (entityIn instanceof ItemEntity) - ((ItemEntity) entityIn).setPickupDelay(10); - CompoundNBT data = entityIn.getPersistentData(); - if (data.contains("BypassCrushingWheel")) { - if (pos.equals(NBTUtil.readBlockPos(data.getCompound("BypassCrushingWheel")))) - return; - } - if (te.isOccupied()) - return; - boolean isPlayer = entityIn instanceof PlayerEntity; - if (isPlayer && ((PlayerEntity) entityIn).isCreative()) - return; - if (isPlayer && entityIn.world.getDifficulty() == Difficulty.PEACEFUL) - return; - - te.startCrushing(entityIn); - } - - @Override - public void onLanded(IBlockReader worldIn, Entity entityIn) { - super.onLanded(worldIn, entityIn); - //Moved to onEntityCollision to allow for omnidirectional input - } - - @Override - public void animateTick(BlockState stateIn, World worldIn, BlockPos pos, Random rand) { - if (!stateIn.get(VALID)) - return; - if (rand.nextInt(1) != 0) - return; - double d0 = (double) ((float) pos.getX() + rand.nextFloat()); - double d1 = (double) ((float) pos.getY() + rand.nextFloat()); - double d2 = (double) ((float) pos.getZ() + rand.nextFloat()); - worldIn.addParticle(ParticleTypes.CRIT, d0, d1, d2, 0.0D, 0.0D, 0.0D); - } - - @Override - public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, - BlockPos currentPos, BlockPos facingPos) { - updateSpeed(stateIn, worldIn, currentPos); - return stateIn; - } - - public void updateSpeed(BlockState state, IWorld world, BlockPos pos) { - withTileEntityDo(world, pos, te -> { - if (!state.get(VALID)) { - if (te.crushingspeed != 0) { - te.crushingspeed = 0; - te.sendData(); - } - return; - } - - for (Direction d : Iterate.directions) { - BlockState neighbour = world.getBlockState(pos.offset(d)); - if (!AllBlocks.CRUSHING_WHEEL.has(neighbour)) - continue; - if (neighbour.get(BlockStateProperties.AXIS) == d.getAxis()) - continue; - KineticTileEntity wheelTe = (KineticTileEntity) world.getTileEntity(pos.offset(d)); - te.crushingspeed = Math.abs(wheelTe.getSpeed() / 50f); - te.sendData(); - break; - } - }); - } - - @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, - ISelectionContext context) { - VoxelShape standardShape = AllShapes.CRUSHING_WHEEL_CONTROLLER_COLLISION.get(state.get(FACING)); - - if (!state.get(VALID)) - return standardShape; - - Entity entity = context.getEntity(); - if (entity == null) - return standardShape; - - CompoundNBT data = entity.getPersistentData(); - if (data.contains("BypassCrushingWheel")) - if (pos.equals(NBTUtil.readBlockPos(data.getCompound("BypassCrushingWheel")))) - if (state.get(FACING) != Direction.UP) // Allow output items to land on top of the block rather than falling back through. - return VoxelShapes.empty(); - - CrushingWheelControllerTileEntity te = getTileEntity(worldIn, pos); - if (te != null && te.processingEntity == entity) - return VoxelShapes.empty(); - - return standardShape; - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.hasTileEntity() || state.getBlock() == newState.getBlock()) - return; - - withTileEntityDo(worldIn, pos, te -> ItemHelper.dropContents(worldIn, pos, te.inventory)); - worldIn.removeTileEntity(pos); - } - - @Override - public Class getTileEntityClass() { - return CrushingWheelControllerTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java deleted file mode 100644 index e8562843c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelControllerTileEntity.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crusher; - -import static net.minecraft.block.DirectionalBlock.FACING; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Random; -import java.util.UUID; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingInventory; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class CrushingWheelControllerTileEntity extends SmartTileEntity { - - public Entity processingEntity; - private UUID entityUUID; - protected boolean searchForEntity; - - public ProcessingInventory inventory; - protected LazyOptional handler = LazyOptional.of(() -> inventory); - private RecipeWrapper wrapper; - public float crushingspeed; - - public CrushingWheelControllerTileEntity(TileEntityType type) { - super(type); - inventory = new ProcessingInventory(this::itemInserted) { - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - return super.isItemValid(slot, stack) && processingEntity == null; - } - - }; - wrapper = new RecipeWrapper(inventory); - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new DirectBeltInputBehaviour(this).onlyInsertWhen(this::supportsDirectBeltInput)); - } - - private boolean supportsDirectBeltInput(Direction side) { - BlockState blockState = getBlockState(); - if (blockState == null) - return false; - Direction direction = blockState.get(CrushingWheelControllerBlock.FACING); - return direction == Direction.DOWN || direction == side; - } - - @Override - public void tick() { - super.tick(); - if (searchForEntity) { - searchForEntity = false; - List search = world.getEntitiesInAABBexcluding(null, new AxisAlignedBB(getPos()), - e -> entityUUID.equals(e.getUniqueID())); - if (search.isEmpty()) - clear(); - else - processingEntity = search.get(0); - } - - - - if (!isOccupied()) - return; - if (crushingspeed == 0) - return; - - float speed = crushingspeed * 4; - - Vector3d centerPos = VecHelper.getCenterOf(pos); - Direction facing = getBlockState().get(FACING); - int offset = facing.getAxisDirection().getOffset(); - Vector3d outSpeed = new Vector3d((facing.getAxis() == Axis.X ? 0.25D : 0.0D) * offset - , offset == 1 ? (facing.getAxis() == Axis.Y ? 0.5D : 0.0D) : 0.0D //Increased upwards speed so upwards crushing wheels shoot out the item properly. - , (facing.getAxis() == Axis.Z ? 0.25D : 0.0D) * offset); //No downwards speed, so downwards crushing wheels drop the items as before. - Vector3d outPos = centerPos.add((facing.getAxis() == Axis.X ? .55f * offset : 0f) - , (facing.getAxis() == Axis.Y ? .55f * offset : 0f) - , (facing.getAxis() == Axis.Z ? .55f * offset : 0f)); - - if (!hasEntity()) { - - float processingSpeed = - MathHelper.clamp((speed) / (!inventory.appliedRecipe ? MathHelper.log2(inventory.getStackInSlot(0) - .getCount()) : 1), .25f, 20); - inventory.remainingTime -= processingSpeed; - spawnParticles(inventory.getStackInSlot(0)); - - if (world.isRemote) - return; - - if (inventory.remainingTime < 20 && !inventory.appliedRecipe) { - applyRecipe(); - inventory.appliedRecipe = true; - world.notifyBlockUpdate(pos, getBlockState(), getBlockState(), 2 | 16); - return; - } - - if (inventory.remainingTime > 0) { - return; - } - inventory.remainingTime = 0; - - //Output Items - if (facing.getAxis().isHorizontal() || facing == Direction.DOWN) { - BlockPos nextPos = pos.add(facing.getAxis() == Axis.X ? 1f * offset : 0f - , (-1f) - , facing.getAxis() == Axis.Z ? 1f * offset : 0f); - DirectBeltInputBehaviour behaviour = TileEntityBehaviour.get(world, nextPos, DirectBeltInputBehaviour.TYPE); - if (behaviour != null) { - boolean changed = false; - if (!behaviour.canInsertFromSide(facing)) - return; - for (int slot = 0; slot < inventory.getSlots(); slot++) { - ItemStack stack = inventory.getStackInSlot(slot); - if (stack.isEmpty()) - continue; - ItemStack remainder = behaviour.handleInsertion(stack, facing, false); - if (remainder.equals(stack, false)) - continue; - inventory.setStackInSlot(slot, remainder); - changed = true; - } - if (changed) { - markDirty(); - sendData(); - } - return; - } - } - - //Eject Items - for (int slot = 0; slot < inventory.getSlots(); slot++) { - ItemStack stack = inventory.getStackInSlot(slot); - if (stack.isEmpty()) - continue; - ItemEntity entityIn = new ItemEntity(world, outPos.x, outPos.y, outPos.z, stack); - entityIn.setMotion(outSpeed); - entityIn.getPersistentData() - .put("BypassCrushingWheel", NBTUtil.writeBlockPos(pos)); - world.addEntity(entityIn); - } - inventory.clear(); - world.notifyBlockUpdate(pos, getBlockState(), getBlockState(), 2 | 16); - - - return; - } - - if (!processingEntity.isAlive() || !processingEntity.getBoundingBox() - .intersects(new AxisAlignedBB(pos).grow(.5f))) { - clear(); - return; - } - - double xMotion = ((pos.getX() + .5f) - processingEntity.getX()) / 2f; - double zMotion = ((pos.getZ() + .5f) - processingEntity.getZ()) / 2f; - if (processingEntity.isSneaking()) - xMotion = zMotion = 0; - double movement = Math.max(-speed / 4f, -.5f) * -offset; - processingEntity.setMotion(new Vector3d(facing.getAxis() == Axis.X ? movement : xMotion - , facing.getAxis() == Axis.Y ? movement : 0f //Do not move entities upwards or downwards for horizontal crushers, - , facing.getAxis() == Axis.Z ? movement : zMotion)); //Or they'll only get their feet crushed. - - if (world.isRemote) - return; - - if (!(processingEntity instanceof ItemEntity)) { - Vector3d entityOutPos = outPos.add(facing.getAxis() == Axis.X ? .5f * offset : 0f - , facing.getAxis() == Axis.Y ? .5f * offset : 0f - , facing.getAxis() == Axis.Z ? .5f * offset : 0f); - int crusherDamage = AllConfigs.SERVER.kinetics.crushingDamage.get(); - - if (processingEntity instanceof LivingEntity) { - if ((((LivingEntity) processingEntity).getHealth() - crusherDamage <= 0) //Takes LivingEntity instances as exception, so it can move them before it would kill them. - && (((LivingEntity) processingEntity).hurtTime <= 0)) { //This way it can actually output the items to the right spot. - processingEntity.setPosition(entityOutPos.x - , entityOutPos.y - , entityOutPos.z); - } - } - processingEntity.attackEntityFrom(CrushingWheelTileEntity.damageSource, - crusherDamage); - if (!processingEntity.isAlive()) { - processingEntity.setPosition(entityOutPos.x - , entityOutPos.y - , entityOutPos.z); - } - return; - } - - ItemEntity itemEntity = (ItemEntity) processingEntity; - itemEntity.setPickupDelay(20); - if (facing.getAxis() == Axis.Y) { - if (processingEntity.getY() * -offset < (centerPos.y - .25f) * -offset) { - intakeItem(itemEntity); - } - } else if (facing.getAxis() == Axis.Z) { - if (processingEntity.getZ() * -offset < (centerPos.z - .25f) * -offset) { - intakeItem(itemEntity); - } - } else { - if (processingEntity.getX() * -offset < (centerPos.x - .25f) * -offset) { - intakeItem(itemEntity); - } - } - } - - private void intakeItem(ItemEntity itemEntity) { - inventory.clear(); - inventory.setStackInSlot(0, itemEntity.getItem() - .copy()); - itemInserted(inventory.getStackInSlot(0)); - itemEntity.remove(); - world.notifyBlockUpdate(pos, getBlockState(), getBlockState(), 2 | 16); - } - - protected void spawnParticles(ItemStack stack) { - if (stack == null || stack.isEmpty()) - return; - - IParticleData particleData = null; - if (stack.getItem() instanceof BlockItem) - particleData = new BlockParticleData(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock() - .getDefaultState()); - else - particleData = new ItemParticleData(ParticleTypes.ITEM, stack); - - Random r = world.rand; - for (int i = 0; i < 4; i++) - world.addParticle(particleData, pos.getX() + r.nextFloat(), pos.getY() + r.nextFloat(), - pos.getZ() + r.nextFloat(), 0, 0, 0); - } - - private void applyRecipe() { - Optional> recipe = findRecipe(); - - List list = new ArrayList<>(); - if (recipe.isPresent()) { - int rolls = inventory.getStackInSlot(0) - .getCount(); - inventory.clear(); - for (int roll = 0; roll < rolls; roll++) { - List rolledResults = recipe.get() - .rollResults(); - for (int i = 0; i < rolledResults.size(); i++) { - ItemStack stack = rolledResults.get(i); - ItemHelper.addToList(stack, list); - } - } - for (int slot = 0; slot < list.size() && slot + 1 < inventory.getSlots(); slot++) - inventory.setStackInSlot(slot + 1, list.get(slot)); - } else { - inventory.clear(); - } - - } - - public Optional> findRecipe() { - Optional> crushingRecipe = AllRecipeTypes.CRUSHING.find(wrapper, world); - if (!crushingRecipe.isPresent()) - crushingRecipe = AllRecipeTypes.MILLING.find(wrapper, world); - return crushingRecipe; - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - if (hasEntity()) - compound.put("Entity", NBTUtil.fromUuid(entityUUID)); - compound.put("Inventory", inventory.serializeNBT()); - compound.putFloat("Speed", crushingspeed); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - if (compound.contains("Entity") && !isOccupied()) { - entityUUID = NBTUtil.readUniqueId(NBTHelper.getINBT(compound, "Entity")); - this.searchForEntity = true; - } - crushingspeed = compound.getFloat("Speed"); - inventory.deserializeNBT(compound.getCompound("Inventory")); - } - - public void startCrushing(Entity entity) { - processingEntity = entity; - entityUUID = entity.getUniqueID(); - } - - private void itemInserted(ItemStack stack) { - Optional> recipe = findRecipe(); - inventory.remainingTime = recipe.isPresent() ? recipe.get() - .getProcessingDuration() : 100; - inventory.appliedRecipe = false; - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) - return handler.cast(); - return super.getCapability(cap, side); - } - - public void clear() { - processingEntity = null; - entityUUID = null; - } - - public boolean isOccupied() { - return hasEntity() || !inventory.isEmpty(); - } - - public boolean hasEntity() { - return processingEntity != null; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java deleted file mode 100644 index ea210238d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/crusher/CrushingWheelTileEntity.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.simibubi.create.content.contraptions.components.crusher; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.event.entity.living.LivingDropsEvent; -import net.minecraftforge.event.entity.living.LootingLevelEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class CrushingWheelTileEntity extends KineticTileEntity { - - public static DamageSource damageSource = new DamageSource("create.crush").setDamageBypassesArmor() - .setDifficultyScaled(); - - public CrushingWheelTileEntity(TileEntityType type) { - super(type); - setLazyTickRate(20); - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - fixControllers(); - } - - public void fixControllers() { - for (Direction d : Iterate.directions) - ((CrushingWheelBlock) getBlockState().getBlock()).updateControllers(getBlockState(), getWorld(), getPos(), - d); - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - return new AxisAlignedBB(pos).grow(1); - } - - @Override - public void lazyTick() { - super.lazyTick(); - fixControllers(); - } - - @SubscribeEvent - public static void crushingIsFortunate(LootingLevelEvent event) { - if (event.getDamageSource() != damageSource) - return; - event.setLootingLevel(2); //This does not currently increase mob drops. It seems like this only works for damage done by an entity. - } - - @SubscribeEvent - public static void handleCrushedMobDrops(LivingDropsEvent event) { - if (event.getSource() != CrushingWheelTileEntity.damageSource) - return; - Vector3d outSpeed = Vector3d.ZERO; - for (ItemEntity outputItem : event.getDrops()) { - outputItem.setMotion(outSpeed); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java deleted file mode 100644 index 7d007d11e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/BeltDeployerCallbacks.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; - -import java.util.List; -import java.util.stream.Collectors; - -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.State; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.items.ItemHandlerHelper; - -public class BeltDeployerCallbacks { - - public static ProcessingResult onItemReceived(TransportedItemStack s, TransportedItemStackHandlerBehaviour i, - DeployerTileEntity deployerTileEntity) { - - if (deployerTileEntity.getSpeed() == 0) - return ProcessingResult.PASS; - if (deployerTileEntity.mode == Mode.PUNCH) - return ProcessingResult.PASS; - BlockState blockState = deployerTileEntity.getBlockState(); - if (!blockState.contains(FACING) || blockState.get(FACING) != Direction.DOWN) - return ProcessingResult.PASS; - if (deployerTileEntity.state != State.WAITING) - return ProcessingResult.HOLD; - if (deployerTileEntity.redstoneLocked) - return ProcessingResult.PASS; - - if (deployerTileEntity.getRecipe(s.stack) == null) - return ProcessingResult.PASS; - - deployerTileEntity.start(); - return ProcessingResult.HOLD; - } - - public static ProcessingResult whenItemHeld(TransportedItemStack s, TransportedItemStackHandlerBehaviour i, - DeployerTileEntity deployerTileEntity) { - - if (deployerTileEntity.getSpeed() == 0) - return ProcessingResult.PASS; - BlockState blockState = deployerTileEntity.getBlockState(); - if (!blockState.contains(FACING) || blockState.get(FACING) != Direction.DOWN) - return ProcessingResult.PASS; - IRecipe recipe = deployerTileEntity.getRecipe(s.stack); - if (recipe == null) - return ProcessingResult.PASS; - - if (deployerTileEntity.state == State.RETRACTING && deployerTileEntity.timer == 1000) { - activate(s, i, deployerTileEntity, recipe); - return ProcessingResult.HOLD; - } - - if (deployerTileEntity.state == State.WAITING) { - if (deployerTileEntity.redstoneLocked) - return ProcessingResult.PASS; - deployerTileEntity.start(); - } - - return ProcessingResult.HOLD; - } - - public static void activate(TransportedItemStack transported, TransportedItemStackHandlerBehaviour handler, - DeployerTileEntity deployerTileEntity, IRecipe recipe) { - - List collect = - InWorldProcessing.applyRecipeOn(ItemHandlerHelper.copyStackWithSize(transported.stack, 1), recipe) - .stream() - .map(stack -> { - TransportedItemStack copy = transported.copy(); - boolean centered = BeltHelper.isItemUpright(stack); - copy.stack = stack; - copy.locked = true; - copy.angle = centered ? 180 : Create.RANDOM.nextInt(360); - return copy; - }) - .collect(Collectors.toList()); - - TransportedItemStack left = transported.copy(); - deployerTileEntity.player.spawnedItemEffects = transported.stack.copy(); - left.stack.shrink(1); - - if (collect.isEmpty()) - handler.handleProcessingOnItem(transported, TransportedResult.convertTo(left)); - else - handler.handleProcessingOnItem(transported, TransportedResult.convertToAndLeaveHeld(collect, left)); - - ItemStack heldItem = deployerTileEntity.player.getHeldItemMainhand(); - if (heldItem.isDamageable()) - heldItem.damageItem(1, deployerTileEntity.player, s -> s.sendBreakAnimation(Hand.MAIN_HAND)); - else - heldItem.shrink(1); - - BlockPos pos = deployerTileEntity.getPos(); - World world = deployerTileEntity.getWorld(); - if (heldItem.isEmpty()) - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_BREAK, SoundCategory.BLOCKS, .25f, 1); - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.BLOCKS, .25f, .75f); - if (recipe instanceof SandPaperPolishingRecipe) - AllSoundEvents.AUTO_POLISH.playOnServer(world, pos, .25f, 1f); - - deployerTileEntity.sendData(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java deleted file mode 100644 index 437ac1686..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerActorInstance.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import static com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE; -import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; - -import com.jozufozu.flywheel.backend.instancing.InstanceMaterial; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileInstance; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.foundation.render.AllMaterialSpecs; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class DeployerActorInstance extends ActorInstance { - - Direction facing; - boolean stationaryTimer; - - float yRot; - float zRot; - float zRotPole; - - ModelData pole; - ModelData hand; - RotatingData shaft; - - public DeployerActorInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { - super(materialManager, simulationWorld, context); - - InstanceMaterial mat = materialManager.getTransformMaterial(); - - BlockState state = context.state; - DeployerTileEntity.Mode mode = NBTHelper.readEnum(context.tileData, "Mode", DeployerTileEntity.Mode.class); - PartialModel handPose = DeployerRenderer.getHandPose(mode); - - stationaryTimer = context.data.contains("StationaryTimer"); - facing = state.get(FACING); - - boolean rotatePole = state.get(AXIS_ALONG_FIRST_COORDINATE) ^ facing.getAxis() == Direction.Axis.Z; - yRot = AngleHelper.horizontalAngle(facing); - zRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0; - zRotPole = rotatePole ? 90 : 0; - - pole = mat.getModel(AllBlockPartials.DEPLOYER_POLE, state).createInstance(); - hand = mat.getModel(handPose, state).createInstance(); - - Direction.Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state); - shaft = materialManager.getMaterial(AllMaterialSpecs.ROTATING) - .getModel(KineticTileInstance.shaft(axis)) - .createInstance(); - - int blockLight = localBlockLight(); - - shaft.setRotationAxis(axis) - .setPosition(context.localPos) - .setBlockLight(blockLight); - - pole.setBlockLight(blockLight); - hand.setBlockLight(blockLight); - } - - @Override - public void beginFrame() { - double factor; - if (context.contraption.stalled || context.position == null || context.data.contains("StationaryTimer")) { - factor = MathHelper.sin(AnimationTickHolder.getRenderTime() * .5f) * .25f + .25f; - } else { - Vector3d center = VecHelper.getCenterOf(new BlockPos(context.position)); - double distance = context.position.distanceTo(center); - double nextDistance = context.position.add(context.motion) - .distanceTo(center); - factor = .5f - MathHelper.clamp(MathHelper.lerp(AnimationTickHolder.getPartialTicks(), distance, nextDistance), 0, 1); - } - - Vector3d offset = Vector3d.of(facing.getDirectionVec()).scale(factor); - - MatrixStack ms = new MatrixStack(); - MatrixStacker msr = MatrixStacker.of(ms); - - msr.translate(context.localPos) - .translate(offset); - - transformModel(msr, pole, hand, yRot, zRot, zRotPole); - } - - static void transformModel(MatrixStacker msr, ModelData pole, ModelData hand, float yRot, float zRot, float zRotPole) { - - msr.centre(); - msr.rotate(Direction.SOUTH, (float) ((zRot) / 180 * Math.PI)); - msr.rotate(Direction.UP, (float) ((yRot) / 180 * Math.PI)); - - msr.push(); - msr.rotate(Direction.SOUTH, (float) ((zRotPole) / 180 * Math.PI)); - msr.unCentre(); - pole.setTransform(msr.unwrap()); - msr.pop(); - - msr.unCentre(); - - hand.setTransform(msr.unwrap()); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java deleted file mode 100644 index 1e4b1e449..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerApplicationRecipe.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import java.util.List; -import java.util.stream.Collectors; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.world.World; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class DeployerApplicationRecipe extends ProcessingRecipe { - - public DeployerApplicationRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.DEPLOYING, params); - } - - @Override - public boolean matches(RecipeWrapper inv, World p_77569_2_) { - return ingredients.get(0) - .test(inv.getStackInSlot(0)) - && ingredients.get(1) - .test(inv.getStackInSlot(1)); - } - - @Override - protected int getMaxInputCount() { - return 2; - } - - @Override - protected int getMaxOutputCount() { - return 2; - } - - public Ingredient getRequiredHeldItem() { - if (ingredients.isEmpty()) - throw new IllegalStateException("Deploying Recipe: " + id.toString() + " has no tool!"); - return ingredients.get(0); - } - - public Ingredient getProcessedItem() { - if (ingredients.size() < 2) - throw new IllegalStateException("Deploying Recipe: " + id.toString() + " has no ingredient!"); - return ingredients.get(1); - } - - public static List convert(List> sandpaperRecipes) { - return sandpaperRecipes.stream() - .map(r -> new ProcessingRecipeBuilder<>(DeployerApplicationRecipe::new, Create.asResource(r.getId() - .getPath() + "_using_deployer")) - .require(Ingredient.fromItems(AllItems.SAND_PAPER.get(), AllItems.RED_SAND_PAPER.get())) - .require(r.getIngredients() - .get(0)) - .output(r.getRecipeOutput()) - .build()) - .collect(Collectors.toList()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java deleted file mode 100644 index 43d4d656b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerBlock.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class DeployerBlock extends DirectionalAxisKineticBlock implements ITE { - - public DeployerBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.DEPLOYER.create(); - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.CASING_12PX.get(state.get(FACING)); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (context.getFace() == state.get(FACING)) { - if (!context.getWorld().isRemote) - withTileEntityDo(context.getWorld(), context.getPos(), DeployerTileEntity::changeMode); - return ActionResultType.SUCCESS; - } - return super.onWrenched(state, context); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { - withTileEntityDo(worldIn, pos, te -> { - if (te.player != null && !isMoving) { - te.player.inventory.dropAllItems(); - te.overflowItems.forEach(itemstack -> te.player.dropItem(itemstack, true, false)); - te.player.remove(); - te.player = null; - } - }); - - TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE); - worldIn.removeTileEntity(pos); - } - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - ItemStack heldByPlayer = player.getHeldItem(handIn) - .copy(); - if (AllItems.WRENCH.isIn(heldByPlayer)) - return ActionResultType.PASS; - - if (hit.getFace() != state.get(FACING)) - return ActionResultType.PASS; - if (worldIn.isRemote) - return ActionResultType.SUCCESS; - - withTileEntityDo(worldIn, pos, te -> { - ItemStack heldByDeployer = te.player.getHeldItemMainhand() - .copy(); - if (heldByDeployer.isEmpty() && heldByPlayer.isEmpty()) - return; - - player.setHeldItem(handIn, heldByDeployer); - te.player.setHeldItem(Hand.MAIN_HAND, heldByPlayer); - te.sendData(); - }); - - return ActionResultType.SUCCESS; - } - - @Override - public Class getTileEntityClass() { - return DeployerTileEntity.class; - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { - super.onBlockAdded(state, world, pos, oldState, isMoving); - withTileEntityDo(world, pos, DeployerTileEntity::redstoneUpdate); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, - BlockPos p_220069_5_, boolean p_220069_6_) { - withTileEntityDo(world, pos, DeployerTileEntity::redstoneUpdate); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java deleted file mode 100644 index 76163d2ee..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFakePlayer.java +++ /dev/null @@ -1,169 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import java.util.OptionalInt; -import java.util.UUID; - -import org.apache.commons.lang3.tuple.Pair; - -import com.mojang.authlib.GameProfile; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.config.CKinetics; -import com.simibubi.create.foundation.utility.Lang; - -import io.netty.util.concurrent.Future; -import io.netty.util.concurrent.GenericFutureListener; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.MobEntity; -import net.minecraft.entity.Pose; -import net.minecraft.entity.monster.CreeperEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.inventory.container.INamedContainerProvider; -import net.minecraft.item.ItemStack; -import net.minecraft.network.IPacket; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.PacketDirection; -import net.minecraft.network.play.ServerPlayNetHandler; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.EntityDamageSource; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.event.entity.EntityEvent; -import net.minecraftforge.event.entity.living.LivingDropsEvent; -import net.minecraftforge.event.entity.living.LivingExperienceDropEvent; -import net.minecraftforge.event.entity.living.LivingSetAttackTargetEvent; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class DeployerFakePlayer extends FakePlayer { - - private static final NetworkManager NETWORK_MANAGER = new NetworkManager(PacketDirection.CLIENTBOUND); - public static final GameProfile DEPLOYER_PROFILE = - new GameProfile(UUID.fromString("9e2faded-cafe-4ec2-c314-dad129ae971d"), "Deployer"); - Pair blockBreakingProgress; - ItemStack spawnedItemEffects; - - public DeployerFakePlayer(ServerWorld world) { - super(world, DEPLOYER_PROFILE); - connection = new FakePlayNetHandler(world.getServer(), this); - } - - @Override - public OptionalInt openContainer(INamedContainerProvider container) { - return OptionalInt.empty(); - } - - @Override - public ITextComponent getDisplayName() { - return Lang.translate("block.deployer.damage_source_name"); - } - - @Override - @OnlyIn(Dist.CLIENT) - public float getEyeHeight(Pose poseIn) { - return 0; - } - - @Override - public Vector3d getPositionVec() { - return new Vector3d(getX(), getY(), getZ()); - } - - @Override - public float getCooldownPeriod() { - return 1 / 64f; - } - - @Override - public boolean canEat(boolean ignoreHunger) { - return false; - } - - @Override - public ItemStack onFoodEaten(World world, ItemStack stack) { - stack.shrink(1); - return stack; - } - - @SubscribeEvent - public static void deployerHasEyesOnHisFeet(EntityEvent.Size event) { - if (event.getEntity() instanceof DeployerFakePlayer) - event.setNewEyeHeight(0); - } - - @SubscribeEvent(priority = EventPriority.LOWEST) - public static void deployerCollectsDropsFromKilledEntities(LivingDropsEvent event) { - if (!(event.getSource() instanceof EntityDamageSource)) - return; - EntityDamageSource source = (EntityDamageSource) event.getSource(); - Entity trueSource = source.getTrueSource(); - if (trueSource != null && trueSource instanceof DeployerFakePlayer) { - DeployerFakePlayer fakePlayer = (DeployerFakePlayer) trueSource; - event.getDrops() - .forEach(stack -> fakePlayer.inventory.placeItemBackInInventory(trueSource.world, stack.getItem())); - event.setCanceled(true); - } - } - - @Override - protected void playEquipSound(ItemStack p_184606_1_) {} - - @Override - public void remove(boolean keepData) { - if (blockBreakingProgress != null && !world.isRemote) - world.sendBlockBreakProgress(getEntityId(), blockBreakingProgress.getKey(), -1); - super.remove(keepData); - } - - @SubscribeEvent - public static void deployerKillsDoNotSpawnXP(LivingExperienceDropEvent event) { - if (event.getAttackingPlayer() instanceof DeployerFakePlayer) - event.setCanceled(true); - } - - @SubscribeEvent - public static void entitiesDontRetaliate(LivingSetAttackTargetEvent event) { - if (!(event.getTarget() instanceof DeployerFakePlayer)) - return; - LivingEntity entityLiving = event.getEntityLiving(); - if (!(entityLiving instanceof MobEntity)) - return; - MobEntity mob = (MobEntity) entityLiving; - - CKinetics.DeployerAggroSetting setting = AllConfigs.SERVER.kinetics.ignoreDeployerAttacks.get(); - - switch (setting) { - case ALL: - mob.setAttackTarget(null); - break; - case CREEPERS: - if (mob instanceof CreeperEntity) - mob.setAttackTarget(null); - break; - case NONE: - default: - } - } - - private static class FakePlayNetHandler extends ServerPlayNetHandler { - public FakePlayNetHandler(MinecraftServer server, ServerPlayerEntity playerIn) { - super(server, NETWORK_MANAGER, playerIn); - } - - @Override - public void sendPacket(IPacket packetIn) {} - - @Override - public void sendPacket(IPacket packetIn, - GenericFutureListener> futureListeners) {} - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFilterSlot.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFilterSlot.java deleted file mode 100644 index b5c071b12..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerFilterSlot.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.vector.Vector3d; - -public class DeployerFilterSlot extends ValueBoxTransform { - - @Override - protected Vector3d getLocalOffset(BlockState state) { - Direction facing = state.get(DeployerBlock.FACING); - Vector3d vec = VecHelper.voxelSpace(8f, 13.5f, 11.5f); - - float yRot = AngleHelper.horizontalAngle(facing); - float zRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0; - vec = VecHelper.rotateCentered(vec, yRot, Axis.Y); - vec = VecHelper.rotateCentered(vec, zRot, Axis.Z); - - return vec; - } - - @Override - protected void rotate(BlockState state, MatrixStack ms) { - Direction facing = state.get(DeployerBlock.FACING); - float xRot = facing == Direction.UP ? 90 : facing == Direction.DOWN ? 270 : 0; - float yRot = AngleHelper.horizontalAngle(facing) + 180; - MatrixStacker.of(ms) - .rotateY(yRot) - .rotateX(xRot); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java deleted file mode 100644 index 66acd7430..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java +++ /dev/null @@ -1,431 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import static net.minecraftforge.eventbus.api.Event.Result.DEFAULT; -import static net.minecraftforge.eventbus.api.Event.Result.DENY; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.tuple.Pair; - -import com.google.common.collect.Multimap; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlockItem; -import com.simibubi.create.content.curiosities.tools.SandPaperItem; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.AbstractFireBlock; -import net.minecraft.block.BeehiveBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.DoublePlantBlock; -import net.minecraft.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.BucketItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.Items; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.server.management.PlayerInteractionManager; -import net.minecraft.state.properties.DoubleBlockHalf; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.GameType; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.event.entity.player.PlayerInteractEvent.LeftClickBlock; -import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock; -import net.minecraftforge.eventbus.api.Event; - -public class DeployerHandler { - - private static final class ItemUseWorld extends WrappedWorld { - private final Direction face; - private final BlockPos pos; - boolean rayMode = false; - - private ItemUseWorld(World world, Direction face, BlockPos pos) { - super(world, world.getChunkProvider()); - this.face = face; - this.pos = pos; - } - - @Override - public BlockRayTraceResult rayTraceBlocks(RayTraceContext context) { - rayMode = true; - BlockRayTraceResult rayTraceBlocks = super.rayTraceBlocks(context); - rayMode = false; - return rayTraceBlocks; - } - - @Override - public BlockState getBlockState(BlockPos position) { - if (rayMode && (pos.offset(face.getOpposite(), 3) - .equals(position) - || pos.offset(face.getOpposite(), 1) - .equals(position))) - return Blocks.BEDROCK.getDefaultState(); - return world.getBlockState(position); - } - } - - static boolean shouldActivate(ItemStack held, World world, BlockPos targetPos, @Nullable Direction facing) { - if (held.getItem() instanceof BlockItem) - if (world.getBlockState(targetPos) - .getBlock() == ((BlockItem) held.getItem()).getBlock()) - return false; - - if (held.getItem() instanceof BucketItem) { - BucketItem bucketItem = (BucketItem) held.getItem(); - Fluid fluid = bucketItem.getFluid(); - if (fluid != Fluids.EMPTY && world.getFluidState(targetPos) - .getFluid() == fluid) - return false; - } - - if (!held.isEmpty() && facing == Direction.DOWN - && TileEntityBehaviour.get(world, targetPos, TransportedItemStackHandlerBehaviour.TYPE) != null) - return false; - - return true; - } - - static void activate(DeployerFakePlayer player, Vector3d vec, BlockPos clickedPos, Vector3d extensionVector, - Mode mode) { - Multimap attributeModifiers = player.getHeldItemMainhand() - .getAttributeModifiers(EquipmentSlotType.MAINHAND); - player.getAttributes() - .addTemporaryModifiers(attributeModifiers); - activateInner(player, vec, clickedPos, extensionVector, mode); - player.getAttributes() - .addTemporaryModifiers(attributeModifiers); - } - - private static void activateInner(DeployerFakePlayer player, Vector3d vec, BlockPos clickedPos, - Vector3d extensionVector, Mode mode) { - - Vector3d rayOrigin = vec.add(extensionVector.scale(3 / 2f + 1 / 64f)); - Vector3d rayTarget = vec.add(extensionVector.scale(5 / 2f - 1 / 64f)); - player.setPosition(rayOrigin.x, rayOrigin.y, rayOrigin.z); - BlockPos pos = new BlockPos(vec); - ItemStack stack = player.getHeldItemMainhand(); - Item item = stack.getItem(); - - // Check for entities - final ServerWorld world = player.getServerWorld(); - List entities = world.getEntitiesWithinAABB(Entity.class, new AxisAlignedBB(clickedPos)); - Hand hand = Hand.MAIN_HAND; - if (!entities.isEmpty()) { - Entity entity = entities.get(world.rand.nextInt(entities.size())); - List capturedDrops = new ArrayList<>(); - boolean success = false; - entity.captureDrops(capturedDrops); - - // Use on entity - if (mode == Mode.USE) { - ActionResultType cancelResult = ForgeHooks.onInteractEntity(player, entity, hand); - if (cancelResult == ActionResultType.FAIL) { - entity.captureDrops(null); - return; - } - if (cancelResult == null) { - if (entity.processInitialInteract(player, hand) - .isAccepted()) - success = true; - else if (entity instanceof LivingEntity && stack.useOnEntity(player, (LivingEntity) entity, hand) - .isAccepted()) - success = true; - } - if (!success && stack.isFood() && entity instanceof PlayerEntity) { - PlayerEntity playerEntity = (PlayerEntity) entity; - if (playerEntity.canEat(item.getFood() - .canEatWhenFull())) { - playerEntity.onFoodEaten(world, stack); - player.spawnedItemEffects = stack.copy(); - success = true; - } - } - } - - // Punch entity - if (mode == Mode.PUNCH) { - player.resetCooldown(); - player.attackTargetEntityWithCurrentItem(entity); - success = true; - } - - entity.captureDrops(null); - capturedDrops.forEach(e -> player.inventory.placeItemBackInInventory(world, e.getItem())); - if (success) - return; - } - - // Shoot ray - RayTraceContext rayTraceContext = - new RayTraceContext(rayOrigin, rayTarget, BlockMode.OUTLINE, FluidMode.NONE, player); - BlockRayTraceResult result = world.rayTraceBlocks(rayTraceContext); - if (result.getPos() != clickedPos) - result = new BlockRayTraceResult(result.getHitVec(), result.getFace(), clickedPos, result.isInside()); - BlockState clickedState = world.getBlockState(clickedPos); - Direction face = result.getFace(); - if (face == null) - face = Direction.getFacingFromVector(extensionVector.x, extensionVector.y, extensionVector.z) - .getOpposite(); - - // Left click - if (mode == Mode.PUNCH) { - if (!world.isBlockModifiable(player, clickedPos)) - return; - if (clickedState.getShape(world, clickedPos) - .isEmpty()) { - player.blockBreakingProgress = null; - return; - } - LeftClickBlock event = ForgeHooks.onLeftClickBlock(player, clickedPos, face); - if (event.isCanceled()) - return; - if (BlockHelper.extinguishFire(world, player, clickedPos, face)) // FIXME: is there an equivalent in world, as there was in 1.15? - return; - if (event.getUseBlock() != DENY) - clickedState.onBlockClicked(world, clickedPos, player); - if (stack.isEmpty()) - return; - - float progress = clickedState.getPlayerRelativeBlockHardness(player, world, clickedPos) * 16; - float before = 0; - Pair blockBreakingProgress = player.blockBreakingProgress; - if (blockBreakingProgress != null) - before = blockBreakingProgress.getValue(); - progress += before; - world.playSound(null, clickedPos, clickedState.getSoundType() - .getHitSound(), SoundCategory.NEUTRAL, .25f, 1); - - if (progress >= 1) { - tryHarvestBlock(player.interactionManager, clickedPos); - world.sendBlockBreakProgress(player.getEntityId(), clickedPos, -1); - player.blockBreakingProgress = null; - return; - } - if (progress <= 0) { - player.blockBreakingProgress = null; - return; - } - - if ((int) (before * 10) != (int) (progress * 10)) - world.sendBlockBreakProgress(player.getEntityId(), clickedPos, (int) (progress * 10)); - player.blockBreakingProgress = Pair.of(clickedPos, progress); - return; - } - - // Right click - ItemUseContext itemusecontext = new ItemUseContext(player, hand, result); - Event.Result useBlock = DEFAULT; - Event.Result useItem = DEFAULT; - if (!clickedState.getShape(world, clickedPos) - .isEmpty()) { - RightClickBlock event = ForgeHooks.onRightClickBlock(player, hand, clickedPos, result); - useBlock = event.getUseBlock(); - useItem = event.getUseItem(); - } - - // Item has custom active use - if (useItem != DENY) { - ActionResultType actionresult = stack.onItemUseFirst(itemusecontext); - if (actionresult != ActionResultType.PASS) - return; - } - - boolean holdingSomething = !player.getHeldItemMainhand() - .isEmpty(); - boolean flag1 = - !(player.isSneaking() && holdingSomething) || (stack.doesSneakBypassUse(world, clickedPos, player)); - - // Use on block - if (useBlock != DENY && flag1 - && safeOnUse(clickedState, world, clickedPos, player, hand, result).isAccepted()) - return; - if (stack.isEmpty()) - return; - if (useItem == DENY) - return; - if (item instanceof BlockItem - && !(item instanceof CartAssemblerBlockItem) - && !clickedState.isReplaceable(new BlockItemUseContext(itemusecontext))) - return; - - // Reposition fire placement for convenience - if (item == Items.FLINT_AND_STEEL) { - Direction newFace = result.getFace(); - BlockPos newPos = result.getPos(); - if (!AbstractFireBlock.method_30032(world, clickedPos, newFace)) - newFace = Direction.UP; - if (clickedState.getMaterial() == Material.AIR) - newPos = newPos.offset(face.getOpposite()); - result = new BlockRayTraceResult(result.getHitVec(), newFace, newPos, result.isInside()); - itemusecontext = new ItemUseContext(player, hand, result); - } - - // 'Inert' item use behaviour & block placement - ActionResultType onItemUse = stack.onItemUse(itemusecontext); - if (onItemUse.isAccepted()) - return; - if (item == Items.ENDER_PEARL) - return; - - // buckets create their own ray, We use a fake wall to contain the active area - World itemUseWorld = world; - if (item instanceof BucketItem || item instanceof SandPaperItem) - itemUseWorld = new ItemUseWorld(world, face, pos); - - ActionResult onItemRightClick = item.onItemRightClick(itemUseWorld, player, hand); - ItemStack resultStack = onItemRightClick.getResult(); - if (resultStack != stack || resultStack.getCount() != stack.getCount() || resultStack.getUseDuration() > 0 - || resultStack.getDamage() != stack.getDamage()) { - player.setHeldItem(hand, onItemRightClick.getResult()); - } - - CompoundNBT tag = stack.getTag(); - if (tag != null && stack.getItem() instanceof SandPaperItem && tag.contains("Polishing")) { - player.spawnedItemEffects = ItemStack.read(tag.getCompound("Polishing")); - AllSoundEvents.AUTO_POLISH.playOnServer(world, pos, .25f, 1f); - } - - if (!player.getActiveItemStack() - .isEmpty()) - player.setHeldItem(hand, stack.onItemUseFinish(world, player)); - - player.resetActiveHand(); - } - - public static boolean tryHarvestBlock(PlayerInteractionManager interactionManager, BlockPos pos) { - // <> PlayerInteractionManager#tryHarvestBlock - - ServerWorld world = interactionManager.world; - ServerPlayerEntity player = interactionManager.player; - BlockState blockstate = world.getBlockState(pos); - GameType gameType = interactionManager.getGameType(); - - if (net.minecraftforge.common.ForgeHooks.onBlockBreakEvent(world, gameType, player, pos) == -1) - return false; - - TileEntity tileentity = world.getTileEntity(pos); - if (player.getHeldItemMainhand() - .onBlockStartBreak(pos, player)) - return false; - if (player.isBlockBreakingRestricted(world, pos, gameType)) - return false; - - ItemStack prevHeldItem = player.getHeldItemMainhand(); - ItemStack heldItem = prevHeldItem.copy(); - - boolean canHarvest = blockstate.canHarvestBlock(world, pos, player); - prevHeldItem.onBlockDestroyed(world, blockstate, pos, player); - if (prevHeldItem.isEmpty() && !heldItem.isEmpty()) - net.minecraftforge.event.ForgeEventFactory.onPlayerDestroyItem(player, heldItem, Hand.MAIN_HAND); - - - BlockPos posUp = pos.up(); - BlockState stateUp = world.getBlockState(posUp); - if (blockstate.getBlock() instanceof DoublePlantBlock - && blockstate.get(DoublePlantBlock.HALF) == DoubleBlockHalf.LOWER - && stateUp.getBlock() == blockstate.getBlock() - && stateUp.get(DoublePlantBlock.HALF) == DoubleBlockHalf.UPPER - ) { - // hack to prevent DoublePlantBlock from dropping a duplicate item - world.setBlockState(pos, Blocks.AIR.getDefaultState(), 35); - world.setBlockState(posUp, Blocks.AIR.getDefaultState(), 35); - } else { - if (!blockstate.removedByPlayer(world, pos, player, canHarvest, world.getFluidState(pos))) - return true; - } - - blockstate.getBlock() - .onPlayerDestroy(world, pos, blockstate); - if (!canHarvest) - return true; - - Block.getDrops(blockstate, world, pos, tileentity, player, prevHeldItem) - .forEach(item -> player.inventory.placeItemBackInInventory(world, item)); - blockstate.spawnAdditionalDrops(world, pos, prevHeldItem); - return true; - } - - public static ActionResultType safeOnUse(BlockState state, World world, BlockPos pos, PlayerEntity player, - Hand hand, BlockRayTraceResult ray) { - if (state.getBlock() instanceof BeehiveBlock) - return safeOnBeehiveUse(state, world, pos, player, hand); - return state.onUse(world, player, hand, ray); - } - - protected static ActionResultType safeOnBeehiveUse(BlockState state, World world, BlockPos pos, PlayerEntity player, - Hand hand) { - // <> BeehiveBlock#onUse - - BeehiveBlock block = (BeehiveBlock) state.getBlock(); - ItemStack prevHeldItem = player.getHeldItem(hand); - int honeyLevel = state.get(BeehiveBlock.HONEY_LEVEL); - boolean success = false; - if (honeyLevel < 5) - return ActionResultType.PASS; - - if (prevHeldItem.getItem() == Items.SHEARS) { - world.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.BLOCK_BEEHIVE_SHEAR, - SoundCategory.NEUTRAL, 1.0F, 1.0F); - // <> BeehiveBlock#dropHoneycomb - player.inventory.placeItemBackInInventory(world, new ItemStack(Items.HONEYCOMB, 3)); - prevHeldItem.damageItem(1, player, s -> s.sendBreakAnimation(hand)); - success = true; - } - - if (prevHeldItem.getItem() == Items.GLASS_BOTTLE) { - prevHeldItem.shrink(1); - world.playSound(player, player.getX(), player.getY(), player.getZ(), SoundEvents.ITEM_BOTTLE_FILL, - SoundCategory.NEUTRAL, 1.0F, 1.0F); - ItemStack honeyBottle = new ItemStack(Items.HONEY_BOTTLE); - if (prevHeldItem.isEmpty()) - player.setHeldItem(hand, honeyBottle); - else - player.inventory.placeItemBackInInventory(world, honeyBottle); - success = true; - } - - if (!success) - return ActionResultType.PASS; - - block.takeHoney(world, state, pos); - return ActionResultType.SUCCESS; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java deleted file mode 100644 index 5981b32d8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerInstance.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import static com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE; -import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.ITickableInstance; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3i; - -public class DeployerInstance extends ShaftInstance implements IDynamicInstance, ITickableInstance { - - final DeployerTileEntity tile; - final Direction facing; - final float yRot; - final float zRot; - final float zRotPole; - - protected final OrientedData pole; - - protected OrientedData hand; - - PartialModel currentHand; - float progress; - private boolean newHand = false; - - public DeployerInstance(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); - - this.tile = (DeployerTileEntity) super.tile; - facing = blockState.get(FACING); - - boolean rotatePole = blockState.get(AXIS_ALONG_FIRST_COORDINATE) ^ facing.getAxis() == Direction.Axis.Z; - - yRot = AngleHelper.horizontalAngle(facing); - zRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0; - zRotPole = rotatePole ? 90 : 0; - - pole = getOrientedMaterial().getModel(AllBlockPartials.DEPLOYER_POLE, blockState).createInstance(); - - updateHandPose(); - relight(pos, pole); - - progress = getProgress(AnimationTickHolder.getPartialTicks()); - updateRotation(pole, hand, yRot, zRot, zRotPole); - updatePosition(); - } - - @Override - public void tick() { - newHand = updateHandPose(); - } - - @Override - public void beginFrame() { - - float newProgress = getProgress(AnimationTickHolder.getPartialTicks()); - - if (!newHand && MathHelper.epsilonEquals(newProgress, progress)) return; - - progress = newProgress; - newHand = false; - - updatePosition(); - } - - @Override - public void updateLight() { - super.updateLight(); - relight(pos, hand, pole); - } - - @Override - public void remove() { - super.remove(); - hand.delete(); - pole.delete(); - } - - private boolean updateHandPose() { - PartialModel handPose = tile.getHandPose(); - - if (currentHand == handPose) return false; - currentHand = handPose; - - if (hand != null) hand.delete(); - - hand = getOrientedMaterial().getModel(currentHand, blockState).createInstance(); - - relight(pos, hand); - updateRotation(pole, hand, yRot, zRot, zRotPole); - updatePosition(); - - return true; - } - - private float getProgress(float partialTicks) { - if (tile.state == DeployerTileEntity.State.EXPANDING) - return 1 - (tile.timer - partialTicks * tile.getTimerSpeed()) / 1000f; - if (tile.state == DeployerTileEntity.State.RETRACTING) - return (tile.timer - partialTicks * tile.getTimerSpeed()) / 1000f; - return 0; - } - - private void updatePosition() { - float handLength = currentHand == AllBlockPartials.DEPLOYER_HAND_POINTING ? 0 - : currentHand == AllBlockPartials.DEPLOYER_HAND_HOLDING ? 4 / 16f : 3 / 16f; - float distance = Math.min(MathHelper.clamp(progress, 0, 1) * (tile.reach + handLength), 21 / 16f); - Vector3i facingVec = facing.getDirectionVec(); - BlockPos blockPos = getInstancePosition(); - - float x = blockPos.getX() + ((float) facingVec.getX()) * distance; - float y = blockPos.getY() + ((float) facingVec.getY()) * distance; - float z = blockPos.getZ() + ((float) facingVec.getZ()) * distance; - - pole.setPosition(x, y, z); - hand.setPosition(x, y, z); - } - - static void updateRotation(OrientedData pole, OrientedData hand, float yRot, float zRot, float zRotPole) { - - Quaternion q = Direction.SOUTH.getUnitVector().getDegreesQuaternion(zRot); - q.multiply(Direction.UP.getUnitVector().getDegreesQuaternion(yRot)); - - hand.setRotation(q); - - q.multiply(Direction.SOUTH.getUnitVector().getDegreesQuaternion(zRotPole)); - - pole.setRotation(q); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerItemHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerItemHandler.java deleted file mode 100644 index 0e7ba0183..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerItemHandler.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import java.util.Iterator; - -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemHandlerHelper; - -public class DeployerItemHandler implements IItemHandlerModifiable { - - private DeployerTileEntity te; - private DeployerFakePlayer player; - - public DeployerItemHandler(DeployerTileEntity te) { - this.te = te; - this.player = te.player; - } - - @Override - public int getSlots() { - return 1; - } - - @Override - public ItemStack getStackInSlot(int slot) { - return getHeld(); - } - - public ItemStack getHeld() { - if (player == null) - return ItemStack.EMPTY; - return player.getHeldItemMainhand(); - } - - public void set(ItemStack stack) { - if (player == null) - return; - if (te.getWorld().isRemote) - return; - player.setHeldItem(Hand.MAIN_HAND, stack); - te.markDirty(); - te.sendData(); - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - ItemStack held = getHeld(); - if (!isItemValid(slot, stack)) - return stack; - if (held.isEmpty()) { - if (!simulate) - set(stack); - return ItemStack.EMPTY; - } - if (!ItemHandlerHelper.canItemStacksStack(held, stack)) - return stack; - - int space = held.getMaxStackSize() - held.getCount(); - ItemStack remainder = stack.copy(); - ItemStack split = remainder.split(space); - - if (space == 0) - return stack; - if (!simulate) { - held = held.copy(); - held.setCount(held.getCount() + split.getCount()); - set(held); - } - - return remainder; - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - if (amount == 0) - return ItemStack.EMPTY; - - ItemStack extractedFromOverflow = ItemStack.EMPTY; - ItemStack returnToOverflow = ItemStack.EMPTY; - - for (Iterator iterator = te.overflowItems.iterator(); iterator.hasNext();) { - ItemStack existing = iterator.next(); - if (existing.isEmpty()) { - iterator.remove(); - continue; - } - - int toExtract = Math.min(amount, existing.getMaxStackSize()); - if (existing.getCount() <= toExtract) { - if (!simulate) - iterator.remove(); - extractedFromOverflow = existing; - break; - } - if (!simulate) { - iterator.remove(); - returnToOverflow = ItemHandlerHelper.copyStackWithSize(existing, existing.getCount() - toExtract); - } - extractedFromOverflow = ItemHandlerHelper.copyStackWithSize(existing, toExtract); - break; - } - - if (!returnToOverflow.isEmpty()) - te.overflowItems.add(returnToOverflow); - if (!extractedFromOverflow.isEmpty()) - return extractedFromOverflow; - - ItemStack held = getHeld(); - if (amount == 0 || held.isEmpty()) - return ItemStack.EMPTY; - if (!te.filtering.getFilter() - .isEmpty() && te.filtering.test(held)) - return ItemStack.EMPTY; - if (simulate) - return held.copy() - .split(amount); - - ItemStack toReturn = held.split(amount); - te.markDirty(); - te.sendData(); - return toReturn; - } - - @Override - public int getSlotLimit(int slot) { - return Math.min(getHeld().getMaxStackSize(), 64); - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - FilteringBehaviour filteringBehaviour = te.getBehaviour(FilteringBehaviour.TYPE); - return filteringBehaviour == null || filteringBehaviour.test(stack); - } - - @Override - public void setStackInSlot(int slot, ItemStack stack) { - set(stack); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java deleted file mode 100644 index 4243f024a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerMovementBehaviour.java +++ /dev/null @@ -1,274 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import java.util.Arrays; -import java.util.List; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.tuple.Pair; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.content.schematics.SchematicWorld; -import com.simibubi.create.content.schematics.filtering.SchematicInstances; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.item.ItemHelper.ExtractionCountMode; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.NBTProcessors; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.common.util.BlockSnapshot; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.event.ForgeEventFactory; -import net.minecraftforge.items.IItemHandler; - -public class DeployerMovementBehaviour extends MovementBehaviour { - - @Override - public Vector3d getActiveAreaOffset(MovementContext context) { - return Vector3d.of(context.state.get(DeployerBlock.FACING) - .getDirectionVec()) - .scale(2); - } - - @Override - public void visitNewPosition(MovementContext context, BlockPos pos) { - if (context.world.isRemote) - return; - - tryGrabbingItem(context); - DeployerFakePlayer player = getPlayer(context); - Mode mode = getMode(context); - if (mode == Mode.USE && !DeployerHandler.shouldActivate(player.getHeldItemMainhand(), context.world, pos, null)) - return; - - activate(context, pos, player, mode); - tryDisposeOfExcess(context); - context.stall = player.blockBreakingProgress != null; - } - - public void activate(MovementContext context, BlockPos pos, DeployerFakePlayer player, Mode mode) { - World world = context.world; - - ItemStack filter = getFilter(context); - if (AllItems.SCHEMATIC.isIn(filter)) - activateAsSchematicPrinter(context, pos, player, world, filter); - - Vector3d facingVec = Vector3d.of(context.state.get(DeployerBlock.FACING) - .getDirectionVec()); - facingVec = context.rotation.apply(facingVec); - Vector3d vec = context.position.subtract(facingVec.scale(2)); - player.rotationYaw = AbstractContraptionEntity.yawFromVector(facingVec); - player.rotationPitch = AbstractContraptionEntity.pitchFromVector(facingVec) - 90; - - DeployerHandler.activate(player, vec, pos, facingVec, mode); - } - - protected void activateAsSchematicPrinter(MovementContext context, BlockPos pos, DeployerFakePlayer player, - World world, ItemStack filter) { - if (!filter.hasTag()) - return; - if (!world.getBlockState(pos) - .getMaterial() - .isReplaceable()) - return; - - CompoundNBT tag = filter.getTag(); - if (!tag.getBoolean("Deployed")) - return; - SchematicWorld schematicWorld = SchematicInstances.get(world, filter); - if (schematicWorld == null) - return; - if (!schematicWorld.getBounds() - .isVecInside(pos.subtract(schematicWorld.anchor))) - return; - BlockState blockState = schematicWorld.getBlockState(pos); - ItemRequirement requirement = ItemRequirement.of(blockState, schematicWorld.getTileEntity(pos)); - if (requirement.isInvalid() || requirement.isEmpty()) - return; - if (AllBlocks.BELT.has(blockState)) - return; - - List requiredItems = requirement.getRequiredItems(); - ItemStack firstRequired = requiredItems.isEmpty() ? ItemStack.EMPTY : requiredItems.get(0).item; - - if (!context.contraption.hasUniversalCreativeCrate) { - IItemHandler iItemHandler = context.contraption.inventory; - for (ItemRequirement.StackRequirement required : requiredItems) { - int amountFound = ItemHelper - .extract(iItemHandler, s -> ItemRequirement.validate(required.item, s), ExtractionCountMode.UPTO, - required.item.getCount(), true) - .getCount(); - if (amountFound < required.item.getCount()) - return; - } - for (ItemRequirement.StackRequirement required : requiredItems) - ItemHelper.extract(iItemHandler, s -> ItemRequirement.validate(required.item, s), ExtractionCountMode.UPTO, - required.item.getCount(), false); - } - - CompoundNBT data = null; - if (AllBlockTags.SAFE_NBT.matches(blockState)) { - TileEntity tile = schematicWorld.getTileEntity(pos); - if (tile != null) { - data = tile.write(new CompoundNBT()); - data = NBTProcessors.process(tile, data, true); - } - } - - BlockSnapshot blocksnapshot = BlockSnapshot.create(world.getRegistryKey(), world, pos); - BlockHelper.placeSchematicBlock(world, blockState, pos, firstRequired, data); - if (ForgeEventFactory.onBlockPlace(player, blocksnapshot, Direction.UP)) - blocksnapshot.restore(true, false); - } - - @Override - public void tick(MovementContext context) { - if (context.world.isRemote) - return; - if (!context.stall) - return; - - DeployerFakePlayer player = getPlayer(context); - Mode mode = getMode(context); - - Pair blockBreakingProgress = player.blockBreakingProgress; - if (blockBreakingProgress != null) { - int timer = context.data.getInt("Timer"); - if (timer < 20) { - timer++; - context.data.putInt("Timer", timer); - return; - } - - context.data.remove("Timer"); - activate(context, blockBreakingProgress.getKey(), player, mode); - tryDisposeOfExcess(context); - } - - context.stall = player.blockBreakingProgress != null; - } - - @Override - public void stopMoving(MovementContext context) { - if (context.world.isRemote) - return; - - DeployerFakePlayer player = getPlayer(context); - if (player == null) - return; - - context.tileData.put("Inventory", player.inventory.write(new ListNBT())); - player.remove(); - } - - private void tryGrabbingItem(MovementContext context) { - DeployerFakePlayer player = getPlayer(context); - if (player == null) - return; - if (player.getHeldItemMainhand() - .isEmpty()) { - ItemStack filter = getFilter(context); - if (AllItems.SCHEMATIC.isIn(filter)) - return; - ItemStack held = ItemHelper.extract(context.contraption.inventory, - stack -> FilterItem.test(context.world, stack, filter), 1, false); - player.setHeldItem(Hand.MAIN_HAND, held); - } - } - - private void tryDisposeOfExcess(MovementContext context) { - DeployerFakePlayer player = getPlayer(context); - if (player == null) - return; - PlayerInventory inv = player.inventory; - ItemStack filter = getFilter(context); - - for (List list : Arrays.asList(inv.armorInventory, inv.offHandInventory, inv.mainInventory)) { - for (int i = 0; i < list.size(); ++i) { - ItemStack itemstack = list.get(i); - if (itemstack.isEmpty()) - continue; - - if (list == inv.mainInventory && i == inv.currentItem - && FilterItem.test(context.world, itemstack, filter)) - continue; - - dropItem(context, itemstack); - list.set(i, ItemStack.EMPTY); - } - } - } - - @Override - public void writeExtraData(MovementContext context) { - DeployerFakePlayer player = getPlayer(context); - if (player == null) - return; - context.data.put("HeldItem", player.getHeldItemMainhand() - .serializeNBT()); - } - - private DeployerFakePlayer getPlayer(MovementContext context) { - if (!(context.temporaryData instanceof DeployerFakePlayer) && context.world instanceof ServerWorld) { - DeployerFakePlayer deployerFakePlayer = new DeployerFakePlayer((ServerWorld) context.world); - deployerFakePlayer.inventory.read(context.tileData.getList("Inventory", NBT.TAG_COMPOUND)); - if (context.data.contains("HeldItem")) - deployerFakePlayer.setHeldItem(Hand.MAIN_HAND, ItemStack.read(context.data.getCompound("HeldItem"))); - context.tileData.remove("Inventory"); - context.temporaryData = deployerFakePlayer; - } - return (DeployerFakePlayer) context.temporaryData; - } - - private ItemStack getFilter(MovementContext context) { - return ItemStack.read(context.tileData.getCompound("Filter")); - } - - private Mode getMode(MovementContext context) { - return NBTHelper.readEnum(context.tileData, "Mode", Mode.class); - } - - @Override - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffers) { - if (!Backend.getInstance().canUseInstancing()) - DeployerRenderer.renderInContraption(context, renderWorld, matrices, buffers); - } - - @Override - public boolean hasSpecialInstancedRendering() { - return true; - } - - @Nullable - @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { - return new DeployerActorInstance(materialManager, simulationWorld, context); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java deleted file mode 100644 index 9eee73565..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerRenderer.java +++ /dev/null @@ -1,205 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import static com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE; -import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity.Mode; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.item.BlockItem; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.world.World; - -public class DeployerRenderer extends SafeTileEntityRenderer { - - public DeployerRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(DeployerTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - renderItem(te, partialTicks, ms, buffer, light, overlay); - FilteringRenderer.renderOnTileEntity(te, partialTicks, ms, buffer, light, overlay); - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - renderComponents(te, partialTicks, ms, buffer, light, overlay); - } - - protected void renderItem(DeployerTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - if (te.heldItem.isEmpty()) return; - - BlockState deployerState = te.getBlockState(); - Vector3d offset = getHandOffset(te, partialTicks, deployerState).add(VecHelper.getCenterOf(BlockPos.ZERO)); - ms.push(); - ms.translate(offset.x, offset.y, offset.z); - - Direction facing = deployerState.get(FACING); - boolean punching = te.mode == Mode.PUNCH; - - float yRot = AngleHelper.horizontalAngle(facing) + 180; - float zRot = facing == Direction.UP ? 90 : facing == Direction.DOWN ? 270 : 0; - boolean displayMode = facing == Direction.UP && te.getSpeed() == 0 && !punching; - - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(yRot)); - if (!displayMode) { - ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(zRot)); - ms.translate(0, 0, -11 / 16f); - } - - if (punching) - ms.translate(0, 1 / 8f, -1 / 16f); - - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); - - TransformType transform = TransformType.NONE; - boolean isBlockItem = (te.heldItem.getItem() instanceof BlockItem) - && itemRenderer.getItemModelWithOverrides(te.heldItem, Minecraft.getInstance().world, null) - .isGui3d(); - - if (displayMode) { - float scale = isBlockItem ? 1.25f : 1; - ms.translate(0, isBlockItem ? 9 / 16f : 11 / 16f, 0); - ms.scale(scale, scale, scale); - transform = TransformType.GROUND; - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(AnimationTickHolder.getRenderTime(te.getWorld()))); - - } else { - float scale = punching ? .75f : isBlockItem ? .75f - 1 / 64f : .5f; - ms.scale(scale, scale, scale); - transform = punching ? TransformType.THIRD_PERSON_RIGHT_HAND : TransformType.FIXED; - } - - itemRenderer.renderItem(te.heldItem, transform, light, overlay, ms, buffer); - ms.pop(); - } - - protected void renderComponents(DeployerTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - if (!Backend.getInstance().canUseInstancing(te.getWorld())) { - KineticTileEntityRenderer.renderRotatingKineticBlock(te, getRenderedBlockState(te), ms, vb, light); - } - - BlockState blockState = te.getBlockState(); - BlockPos pos = te.getPos(); - Vector3d offset = getHandOffset(te, partialTicks, blockState); - - SuperByteBuffer pole = PartialBufferer.get(AllBlockPartials.DEPLOYER_POLE, blockState); - SuperByteBuffer hand = PartialBufferer.get(te.getHandPose(), blockState); - - transform(te.getWorld(), pole.translate(offset.x, offset.y, offset.z), blockState, pos, true).renderInto(ms, - vb); - transform(te.getWorld(), hand.translate(offset.x, offset.y, offset.z), blockState, pos, false).renderInto(ms, - vb); - } - - protected Vector3d getHandOffset(DeployerTileEntity te, float partialTicks, BlockState blockState) { - float distance = te.getHandOffset(partialTicks); - return Vector3d.of(blockState.get(FACING).getDirectionVec()).scale(distance); - } - - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return KineticTileEntityRenderer.shaft(KineticTileEntityRenderer.getRotationAxisOf(te)); - } - - private static SuperByteBuffer transform(World world, SuperByteBuffer buffer, BlockState deployerState, - BlockPos pos, boolean axisDirectionMatters) { - Direction facing = deployerState.get(FACING); - - float zRotLast = - axisDirectionMatters && (deployerState.get(AXIS_ALONG_FIRST_COORDINATE) ^ facing.getAxis() == Axis.Z) ? 90 - : 0; - float yRot = AngleHelper.horizontalAngle(facing); - float zRot = facing == Direction.UP ? 270 : facing == Direction.DOWN ? 90 : 0; - - buffer.rotateCentered(Direction.SOUTH, (float) ((zRot) / 180 * Math.PI)); - buffer.rotateCentered(Direction.UP, (float) ((yRot) / 180 * Math.PI)); - buffer.rotateCentered(Direction.SOUTH, (float) ((zRotLast) / 180 * Math.PI)); - buffer.light(WorldRenderer.getLightmapCoordinates(world, deployerState, pos)); - return buffer; - } - - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid()); - BlockState blockState = context.state; - BlockPos pos = BlockPos.ZERO; - Mode mode = NBTHelper.readEnum(context.tileData, "Mode", Mode.class); - World world = context.world; - PartialModel handPose = getHandPose(mode); - - SuperByteBuffer pole = PartialBufferer.get(AllBlockPartials.DEPLOYER_POLE, blockState); - SuperByteBuffer hand = PartialBufferer.get(handPose, blockState); - - double factor; - if (context.contraption.stalled || context.position == null || context.data.contains("StationaryTimer")) { - factor = MathHelper.sin(AnimationTickHolder.getRenderTime() * .5f) * .25f + .25f; - } else { - Vector3d center = VecHelper.getCenterOf(new BlockPos(context.position)); - double distance = context.position.distanceTo(center); - double nextDistance = context.position.add(context.motion) - .distanceTo(center); - factor = .5f - MathHelper.clamp(MathHelper.lerp(AnimationTickHolder.getPartialTicks(), distance, nextDistance), 0, 1); - } - - Vector3d offset = Vector3d.of(blockState.get(FACING) - .getDirectionVec()).scale(factor); - - MatrixStack m = matrices.contraptionStack; - m.push(); - m.translate(offset.x, offset.y, offset.z); - - pole.transform(m); - hand.transform(m); - pole = transform(world, pole, blockState, pos, true); - hand = transform(world, hand, blockState, pos, false); - - pole.light(matrices.entityMatrix, ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) - .renderInto(matrices.entityStack, builder); - hand.light(matrices.entityMatrix, ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) - .renderInto(matrices.entityStack, builder); - - m.pop(); - } - - static PartialModel getHandPose(DeployerTileEntity.Mode mode) { - return mode == DeployerTileEntity.Mode.PUNCH ? AllBlockPartials.DEPLOYER_HAND_PUNCHING : AllBlockPartials.DEPLOYER_HAND_POINTING; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java deleted file mode 100644 index 8dbe3e5fb..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerTileEntity.java +++ /dev/null @@ -1,456 +0,0 @@ -package com.simibubi.create.content.contraptions.components.deployer; - -import static com.simibubi.create.content.contraptions.base.DirectionalKineticBlock.FACING; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.curiosities.tools.SandPaperItem; -import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe.SandPaperInv; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class DeployerTileEntity extends KineticTileEntity { - - protected State state; - protected Mode mode; - protected ItemStack heldItem = ItemStack.EMPTY; - protected DeployerFakePlayer player; - protected int timer; - protected float reach; - protected boolean boop = false; - protected List overflowItems = new ArrayList<>(); - protected FilteringBehaviour filtering; - protected boolean redstoneLocked; - private LazyOptional invHandler; - private ListNBT deferredInventoryList; - - private LerpedFloat animatedOffset; - - public BeltProcessingBehaviour processingBehaviour; - - enum State { - WAITING, EXPANDING, RETRACTING, DUMPING; - } - - enum Mode { - PUNCH, USE - } - - public DeployerTileEntity(TileEntityType type) { - super(type); - state = State.WAITING; - mode = Mode.USE; - heldItem = ItemStack.EMPTY; - redstoneLocked = false; - animatedOffset = LerpedFloat.linear() - .startWithValue(0); - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - filtering = new FilteringBehaviour(this, new DeployerFilterSlot()); - behaviours.add(filtering); - processingBehaviour = - new BeltProcessingBehaviour(this).whenItemEnters((s, i) -> BeltDeployerCallbacks.onItemReceived(s, i, this)) - .whileItemHeld((s, i) -> BeltDeployerCallbacks.whenItemHeld(s, i, this)); - behaviours.add(processingBehaviour); - } - - @Override - public void initialize() { - super.initialize(); - if (!world.isRemote) { - player = new DeployerFakePlayer((ServerWorld) world); - if (deferredInventoryList != null) { - player.inventory.read(deferredInventoryList); - deferredInventoryList = null; - heldItem = player.getHeldItemMainhand(); - sendData(); - } - Vector3d initialPos = VecHelper.getCenterOf(pos.offset(getBlockState().get(FACING))); - player.setPosition(initialPos.x, initialPos.y, initialPos.z); - } - invHandler = LazyOptional.of(this::createHandler); - } - - protected void onExtract(ItemStack stack) { - player.setHeldItem(Hand.MAIN_HAND, stack.copy()); - sendData(); - markDirty(); - } - - protected int getTimerSpeed() { - return (int) (getSpeed() == 0 ? 0 : MathHelper.clamp(Math.abs(getSpeed() * 2), 8, 512)); - } - - @Override - public void tick() { - super.tick(); - - if (getSpeed() == 0) - return; - if (!world.isRemote && player != null && player.blockBreakingProgress != null) { - if (world.isAirBlock(player.blockBreakingProgress.getKey())) { - world.sendBlockBreakProgress(player.getEntityId(), player.blockBreakingProgress.getKey(), -1); - player.blockBreakingProgress = null; - } - } - if (timer > 0) { - timer -= getTimerSpeed(); - return; - } - if (world.isRemote) - return; - - ItemStack stack = player.getHeldItemMainhand(); - if (state == State.WAITING) { - if (!overflowItems.isEmpty()) { - timer = getTimerSpeed() * 10; - return; - } - - boolean changed = false; - for (int i = 0; i < player.inventory.getSizeInventory(); i++) { - if (overflowItems.size() > 10) - break; - ItemStack item = player.inventory.getStackInSlot(i); - if (item.isEmpty()) - continue; - if (item != stack || !filtering.test(item)) { - overflowItems.add(item); - player.inventory.setInventorySlotContents(i, ItemStack.EMPTY); - changed = true; - } - } - - if (changed) { - sendData(); - timer = getTimerSpeed() * 10; - return; - } - - Direction facing = getBlockState().get(FACING); - if (mode == Mode.USE && !DeployerHandler.shouldActivate(stack, world, pos.offset(facing, 2), facing)) { - timer = getTimerSpeed() * 10; - return; - } - - // Check for advancement conditions - if (mode == Mode.PUNCH && !boop && startBoop(facing)) - return; - if (redstoneLocked) - return; - - start(); - return; - } - - if (state == State.EXPANDING) { - if (boop) - triggerBoop(); - activate(); - - state = State.RETRACTING; - timer = 1000; - sendData(); - return; - } - - if (state == State.RETRACTING) { - state = State.WAITING; - timer = 500; - sendData(); - return; - } - - } - - protected void start() { - state = State.EXPANDING; - Vector3d movementVector = getMovementVector(); - Vector3d rayOrigin = VecHelper.getCenterOf(pos) - .add(movementVector.scale(3 / 2f)); - Vector3d rayTarget = VecHelper.getCenterOf(pos) - .add(movementVector.scale(5 / 2f)); - RayTraceContext rayTraceContext = - new RayTraceContext(rayOrigin, rayTarget, BlockMode.OUTLINE, FluidMode.NONE, player); - BlockRayTraceResult result = world.rayTraceBlocks(rayTraceContext); - reach = (float) (.5f + Math.min(result.getHitVec() - .subtract(rayOrigin) - .length(), .75f)); - timer = 1000; - sendData(); - } - - public boolean startBoop(Direction facing) { - if (!world.isAirBlock(pos.offset(facing, 1)) || !world.isAirBlock(pos.offset(facing, 2))) - return false; - BlockPos otherDeployer = pos.offset(facing, 4); - if (!world.isBlockPresent(otherDeployer)) - return false; - TileEntity otherTile = world.getTileEntity(otherDeployer); - if (!(otherTile instanceof DeployerTileEntity)) - return false; - DeployerTileEntity deployerTile = (DeployerTileEntity) otherTile; - if (world.getBlockState(otherDeployer) - .get(FACING) - .getOpposite() != facing || deployerTile.mode != Mode.PUNCH) - return false; - - boop = true; - reach = 1f; - timer = 1000; - state = State.EXPANDING; - sendData(); - return true; - } - - public void triggerBoop() { - TileEntity otherTile = world.getTileEntity(pos.offset(getBlockState().get(FACING), 4)); - if (!(otherTile instanceof DeployerTileEntity)) - return; - - DeployerTileEntity deployerTile = (DeployerTileEntity) otherTile; - if (!deployerTile.boop || deployerTile.state != State.EXPANDING) - return; - if (deployerTile.timer > 0) - return; - - // everything should be met - boop = false; - deployerTile.boop = false; - deployerTile.state = State.RETRACTING; - deployerTile.timer = 1000; - deployerTile.sendData(); - - // award nearby players - List players = - world.getEntitiesWithinAABB(ServerPlayerEntity.class, new AxisAlignedBB(pos).grow(9)); - players.forEach(AllTriggers.DEPLOYER_BOOP::trigger); - } - - protected void activate() { - Vector3d movementVector = getMovementVector(); - Direction direction = getBlockState().get(FACING); - Vector3d center = VecHelper.getCenterOf(pos); - BlockPos clickedPos = pos.offset(direction, 2); - player.rotationYaw = direction.getHorizontalAngle(); - player.rotationPitch = direction == Direction.UP ? -90 : direction == Direction.DOWN ? 90 : 0; - - if (direction == Direction.DOWN - && TileEntityBehaviour.get(world, clickedPos, TransportedItemStackHandlerBehaviour.TYPE) != null) - return; // Belt processing handled in BeltDeployerCallbacks - - DeployerHandler.activate(player, center, clickedPos, movementVector, mode); - if (player != null) - heldItem = player.getHeldItemMainhand(); - } - - protected Vector3d getMovementVector() { - if (!AllBlocks.DEPLOYER.has(getBlockState())) - return Vector3d.ZERO; - return Vector3d.of(getBlockState().get(FACING) - .getDirectionVec()); - } - - @Override - protected void fromTag(BlockState blockState, CompoundNBT compound, boolean clientPacket) { - state = NBTHelper.readEnum(compound, "State", State.class); - mode = NBTHelper.readEnum(compound, "Mode", Mode.class); - timer = compound.getInt("Timer"); - redstoneLocked = compound.getBoolean("Powered"); - - deferredInventoryList = compound.getList("Inventory", NBT.TAG_COMPOUND); - overflowItems = NBTHelper.readItemList(compound.getList("Overflow", NBT.TAG_COMPOUND)); - if (compound.contains("HeldItem")) - heldItem = ItemStack.read(compound.getCompound("HeldItem")); - super.fromTag(blockState, compound, clientPacket); - - if (!clientPacket) - return; - reach = compound.getFloat("Reach"); - if (compound.contains("Particle")) { - ItemStack particleStack = ItemStack.read(compound.getCompound("Particle")); - SandPaperItem.spawnParticles(VecHelper.getCenterOf(pos) - .add(getMovementVector().scale(reach + 1)), particleStack, this.world); - } - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - NBTHelper.writeEnum(compound, "Mode", mode); - NBTHelper.writeEnum(compound, "State", state); - compound.putInt("Timer", timer); - compound.putBoolean("Powered", redstoneLocked); - - if (player != null) { - compound.put("HeldItem", player.getHeldItemMainhand() - .serializeNBT()); - ListNBT invNBT = new ListNBT(); - player.inventory.write(invNBT); - compound.put("Inventory", invNBT); - compound.put("Overflow", NBTHelper.writeItemList(overflowItems)); - } - - super.write(compound, clientPacket); - - if (!clientPacket) - return; - compound.putFloat("Reach", reach); - if (player == null) - return; - compound.put("HeldItem", player.getHeldItemMainhand() - .serializeNBT()); - if (player.spawnedItemEffects != null) { - compound.put("Particle", player.spawnedItemEffects.serializeNBT()); - player.spawnedItemEffects = null; - } - } - - private IItemHandlerModifiable createHandler() { - return new DeployerItemHandler(this); - } - - public void redstoneUpdate() { - if (world.isRemote) - return; - boolean blockPowered = world.isBlockPowered(pos); - if (blockPowered == redstoneLocked) - return; - redstoneLocked = blockPowered; - sendData(); - } - - public PartialModel getHandPose() { - return mode == Mode.PUNCH ? AllBlockPartials.DEPLOYER_HAND_PUNCHING - : heldItem.isEmpty() ? AllBlockPartials.DEPLOYER_HAND_POINTING : AllBlockPartials.DEPLOYER_HAND_HOLDING; - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - return super.makeRenderBoundingBox().grow(3); - } - - @Override - public void remove() { - super.remove(); - if (invHandler != null) - invHandler.invalidate(); - } - - public void changeMode() { - mode = mode == Mode.PUNCH ? Mode.USE : Mode.PUNCH; - markDirty(); - sendData(); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (isItemHandlerCap(cap) && invHandler != null) - return invHandler.cast(); - return super.getCapability(cap, side); - } - - @Override - public boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { - if (super.addToTooltip(tooltip, isPlayerSneaking)) - return true; - if (getSpeed() == 0) - return false; - if (overflowItems.isEmpty()) - return false; - TooltipHelper.addHint(tooltip, "hint.full_deployer"); - return true; - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - - public float getHandOffset(float partialTicks) { - if (isVirtual()) - return animatedOffset.getValue(partialTicks); - - float progress = 0; - int timerSpeed = getTimerSpeed(); - PartialModel handPose = getHandPose(); - - if (state == State.EXPANDING) - progress = 1 - (timer - partialTicks * timerSpeed) / 1000f; - if (state == State.RETRACTING) - progress = (timer - partialTicks * timerSpeed) / 1000f; - float handLength = handPose == AllBlockPartials.DEPLOYER_HAND_POINTING ? 0 - : handPose == AllBlockPartials.DEPLOYER_HAND_HOLDING ? 4 / 16f : 3 / 16f; - float distance = Math.min(MathHelper.clamp(progress, 0, 1) * (reach + handLength), 21 / 16f); - - return distance; - } - - public void setAnimatedOffset(float offset) { - animatedOffset.setValue(offset); - } - - RecipeWrapper recipeInv = new RecipeWrapper(new ItemStackHandler(2)); - SandPaperInv sandpaperInv = new SandPaperInv(ItemStack.EMPTY); - - @Nullable - public IRecipe getRecipe(ItemStack stack) { - if (player == null) - return null; - ItemStack heldItemMainhand = player.getHeldItemMainhand(); - if (heldItemMainhand.getItem() instanceof SandPaperItem) { - sandpaperInv.setInventorySlotContents(0, stack); - return AllRecipeTypes.SANDPAPER_POLISHING.find(sandpaperInv, world) - .orElse(null); - } - recipeInv.setInventorySlotContents(0, heldItemMainhand); - recipeInv.setInventorySlotContents(1, stack); - return AllRecipeTypes.DEPLOYING.find(recipeInv, world) - .orElse(null); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java deleted file mode 100644 index 72001c7ee..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrent.java +++ /dev/null @@ -1,399 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.AllTags; -import com.simibubi.create.content.contraptions.particle.AirFlowParticleData; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing.Type; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.monster.EndermanEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; - -public class AirCurrent { - - private static final DamageSource damageSourceFire = new DamageSource("create.fan_fire").setDifficultyScaled() - .setFireDamage(); - private static final DamageSource damageSourceLava = new DamageSource("create.fan_lava").setDifficultyScaled() - .setFireDamage(); - - public final IAirCurrentSource source; - public AxisAlignedBB bounds = new AxisAlignedBB(0, 0, 0, 0, 0, 0); - public List segments = new ArrayList<>(); - public Direction direction; - public boolean pushing; - public float maxDistance; - - protected List> affectedItemHandlers = - new ArrayList<>(); - protected List caughtEntities = new ArrayList<>(); - - static boolean isClientPlayerInAirCurrent; - - public AirCurrent(IAirCurrentSource source) { - this.source = source; - } - - public void tick() { - if (direction == null) - rebuild(); - World world = source.getAirCurrentWorld(); - Direction facing = direction; - if (world != null && world.isRemote) { - float offset = pushing ? 0.5f : maxDistance + .5f; - Vector3d pos = VecHelper.getCenterOf(source.getAirCurrentPos()) - .add(Vector3d.of(facing.getDirectionVec()) - .scale(offset)); - if (world.rand.nextFloat() < AllConfigs.CLIENT.fanParticleDensity.get()) - world.addParticle(new AirFlowParticleData(source.getAirCurrentPos()), pos.x, pos.y, pos.z, 0, 0, 0); - } - - tickAffectedEntities(world, facing); - tickAffectedHandlers(); - } - - protected void tickAffectedEntities(World world, Direction facing) { - for (Iterator iterator = caughtEntities.iterator(); iterator.hasNext();) { - Entity entity = iterator.next(); - if (!entity.isAlive() || !entity.getBoundingBox().intersects(bounds) || isPlayerCreativeFlying(entity)) { - iterator.remove(); - continue; - } - - Vector3d center = VecHelper.getCenterOf(source.getAirCurrentPos()); - Vector3i flow = (pushing ? facing : facing.getOpposite()).getDirectionVec(); - - float sneakModifier = entity.isSneaking() ? 4096f : 512f; - float speed = Math.abs(source.getSpeed()); - double entityDistance = entity.getPositionVec() - .distanceTo(center); - float acceleration = (float) (speed / sneakModifier / (entityDistance / maxDistance)); - Vector3d previousMotion = entity.getMotion(); - float maxAcceleration = 5; - - double xIn = - MathHelper.clamp(flow.getX() * acceleration - previousMotion.x, -maxAcceleration, maxAcceleration); - double yIn = - MathHelper.clamp(flow.getY() * acceleration - previousMotion.y, -maxAcceleration, maxAcceleration); - double zIn = - MathHelper.clamp(flow.getZ() * acceleration - previousMotion.z, -maxAcceleration, maxAcceleration); - - entity.setMotion(previousMotion.add(new Vector3d(xIn, yIn, zIn).scale(1 / 8f))); - entity.fallDistance = 0; - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> enableClientPlayerSound(entity, MathHelper.clamp(speed / 128f * .4f, 0.01f, .4f))); - - if (entity instanceof ServerPlayerEntity) - ((ServerPlayerEntity) entity).connection.floatingTickCount = 0; - - entityDistance -= .5f; - InWorldProcessing.Type processingType = getSegmentAt((float) entityDistance); - if (entity instanceof ServerPlayerEntity) - AllTriggers.triggerFor(AllTriggers.FAN_PROCESSING.constructTriggerFor(processingType), - (PlayerEntity) entity); - - if (processingType == null || processingType == Type.NONE) { - continue; - } - - if (entity instanceof ItemEntity) { - InWorldProcessing.spawnParticlesForProcessing(world, entity.getPositionVec(), processingType); - ItemEntity itemEntity = (ItemEntity) entity; - if (world.isRemote) - continue; - if (InWorldProcessing.canProcess(itemEntity, processingType)) - InWorldProcessing.applyProcessing(itemEntity, processingType); - continue; - } - - if (world.isRemote) - continue; - - switch (processingType) { - case BLASTING: - if (!entity.isFireImmune()) { - entity.setFire(10); - entity.attackEntityFrom(damageSourceLava, 4); - } - break; - case SMOKING: - if (!entity.isFireImmune()) { - entity.setFire(2); - entity.attackEntityFrom(damageSourceFire, 2); - } - break; - case SPLASHING: - if (entity instanceof EndermanEntity || entity.getType() == EntityType.SNOW_GOLEM - || entity.getType() == EntityType.BLAZE) { - entity.attackEntityFrom(DamageSource.DROWN, 2); - } - if (!entity.isBurning()) - break; - entity.extinguish(); - world.playSound(null, entity.getBlockPos(), SoundEvents.ENTITY_GENERIC_EXTINGUISH_FIRE, - SoundCategory.NEUTRAL, 0.7F, 1.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.4F); - break; - default: - break; - } - } - - } - - public void rebuild() { - if (source.getSpeed() == 0) { - maxDistance = 0; - segments.clear(); - bounds = new AxisAlignedBB(0, 0, 0, 0, 0, 0); - return; - } - - direction = source.getAirflowOriginSide(); - pushing = source.getAirFlowDirection() == direction; - maxDistance = source.getMaxDistance(); - - World world = source.getAirCurrentWorld(); - BlockPos start = source.getAirCurrentPos(); - float max = this.maxDistance; - Direction facing = direction; - Vector3d directionVec = Vector3d.of(facing.getDirectionVec()); - maxDistance = getFlowLimit(world, start, max, facing); - - // Determine segments with transported fluids/gases - AirCurrentSegment currentSegment = new AirCurrentSegment(); - segments.clear(); - currentSegment.startOffset = 0; - InWorldProcessing.Type type = Type.NONE; - - int limit = (int) (maxDistance + .5f); - int searchStart = pushing ? 0 : limit; - int searchEnd = pushing ? limit : 0; - int searchStep = pushing ? 1 : -1; - - for (int i = searchStart; i * searchStep <= searchEnd * searchStep; i += searchStep) { - BlockPos currentPos = start.offset(direction, i); - InWorldProcessing.Type newType = InWorldProcessing.Type.byBlock(world, currentPos); - if (newType != Type.NONE) - type = newType; - if (currentSegment.type != type || currentSegment.startOffset == 0) { - currentSegment.endOffset = i; - if (currentSegment.startOffset != 0) - segments.add(currentSegment); - currentSegment = new AirCurrentSegment(); - currentSegment.startOffset = i; - currentSegment.type = type; - } - } - currentSegment.endOffset = searchEnd + searchStep; - segments.add(currentSegment); - - // Build Bounding Box - if (maxDistance < 0.25f) - bounds = new AxisAlignedBB(0, 0, 0, 0, 0, 0); - else { - float factor = maxDistance - 1; - Vector3d scale = directionVec.scale(factor); - if (factor > 0) - bounds = new AxisAlignedBB(start.offset(direction)).expand(scale); - else { - bounds = new AxisAlignedBB(start.offset(direction)).contract(scale.x, scale.y, scale.z) - .offset(scale); - } - } - findAffectedHandlers(); - } - - public static float getFlowLimit(World world, BlockPos start, float max, Direction facing) { - Vector3d directionVec = Vector3d.of(facing.getDirectionVec()); - Vector3d planeVec = VecHelper.axisAlingedPlaneOf(directionVec); - - // 4 Rays test for holes in the shapes blocking the flow - float offsetDistance = .25f; - Vector3d[] offsets = new Vector3d[] { planeVec.mul(offsetDistance, offsetDistance, offsetDistance), - planeVec.mul(-offsetDistance, -offsetDistance, offsetDistance), - planeVec.mul(offsetDistance, -offsetDistance, -offsetDistance), - planeVec.mul(-offsetDistance, offsetDistance, -offsetDistance), }; - - float limitedDistance = 0; - - // Determine the distance of the air flow - Outer: for (int i = 1; i <= max; i++) { - BlockPos currentPos = start.offset(facing, i); - if (!world.isBlockPresent(currentPos)) - break; - BlockState state = world.getBlockState(currentPos); - if (shouldAlwaysPass(state)) - continue; - VoxelShape voxelshape = state.getCollisionShape(world, currentPos, ISelectionContext.dummy()); - if (voxelshape.isEmpty()) - continue; - if (voxelshape == VoxelShapes.fullCube()) { - max = i - 1; - break; - } - - for (Vector3d offset : offsets) { - Vector3d rayStart = VecHelper.getCenterOf(currentPos) - .subtract(directionVec.scale(.5f + 1 / 32f)) - .add(offset); - Vector3d rayEnd = rayStart.add(directionVec.scale(1 + 1 / 32f)); - BlockRayTraceResult blockraytraceresult = - world.rayTraceBlocks(rayStart, rayEnd, currentPos, voxelshape, state); - if (blockraytraceresult == null) - continue Outer; - - double distance = i - 1 + blockraytraceresult.getHitVec() - .distanceTo(rayStart); - if (limitedDistance < distance) - limitedDistance = (float) distance; - } - - max = limitedDistance; - break; - } - return max; - } - - public void findEntities() { - caughtEntities.clear(); - caughtEntities = source.getAirCurrentWorld() - .getEntitiesWithinAABBExcludingEntity(null, bounds); - } - - public void findAffectedHandlers() { - World world = source.getAirCurrentWorld(); - BlockPos start = source.getAirCurrentPos(); - affectedItemHandlers.clear(); - for (int i = 0; i < maxDistance + 1; i++) { - Type type = getSegmentAt(i); - if (type == null) - continue; - - for (int offset : Iterate.zeroAndOne) { - BlockPos pos = start.offset(direction, i) - .down(offset); - TransportedItemStackHandlerBehaviour behaviour = - TileEntityBehaviour.get(world, pos, TransportedItemStackHandlerBehaviour.TYPE); - if (behaviour != null) - affectedItemHandlers.add(Pair.of(behaviour, type)); - if (direction.getAxis() - .isVertical()) - break; - } - } - } - - public void tickAffectedHandlers() { - for (Pair pair : affectedItemHandlers) { - TransportedItemStackHandlerBehaviour handler = pair.getKey(); - World world = handler.getWorld(); - InWorldProcessing.Type processingType = pair.getRight(); - - handler.handleProcessingOnAllItems((transported) -> { - InWorldProcessing.spawnParticlesForProcessing(world, handler.getWorldPositionOf(transported), - processingType); - if (world.isRemote) - return TransportedResult.doNothing(); - return InWorldProcessing.applyProcessing(transported, world, processingType); - }); - } - } - - private static boolean shouldAlwaysPass(BlockState state) { - return AllTags.AllBlockTags.FAN_TRANSPARENT.matches(state); - } - - public InWorldProcessing.Type getSegmentAt(float offset) { - for (AirCurrentSegment airCurrentSegment : segments) { - if (offset > airCurrentSegment.endOffset && pushing) - continue; - if (offset < airCurrentSegment.endOffset && !pushing) - continue; - return airCurrentSegment.type; - } - return InWorldProcessing.Type.NONE; - } - - public static class AirCurrentSegment { - InWorldProcessing.Type type; - int startOffset; - int endOffset; - } - - @OnlyIn(Dist.CLIENT) - static AirCurrentSound flyingSound; - - @OnlyIn(Dist.CLIENT) - private static void enableClientPlayerSound(Entity e, float maxVolume) { - if (e != Minecraft.getInstance() - .getRenderViewEntity()) - return; - - isClientPlayerInAirCurrent = true; - - float pitch = (float) MathHelper.clamp(e.getMotion() - .length() * .5f, .5f, 2f); - - if (flyingSound == null || flyingSound.isDonePlaying()) { - flyingSound = new AirCurrentSound(SoundEvents.ITEM_ELYTRA_FLYING, pitch); - Minecraft.getInstance() - .getSoundHandler() - .play(flyingSound); - } - flyingSound.setPitch(pitch); - flyingSound.fadeIn(maxVolume); - } - - @OnlyIn(Dist.CLIENT) - public static void tickClientPlayerSounds() { - if (!AirCurrent.isClientPlayerInAirCurrent && flyingSound != null) - if (flyingSound.isFaded()) - flyingSound.stop(); - else - flyingSound.fadeOut(); - isClientPlayerInAirCurrent = false; - } - - public static boolean isPlayerCreativeFlying(Entity entity) { - if (entity instanceof PlayerEntity) { - PlayerEntity player = (PlayerEntity) entity; - return player.isCreative() && player.abilities.isFlying; - } - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrentSound.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrentSound.java deleted file mode 100644 index 7a9c4a7db..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/AirCurrentSound.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import net.minecraft.client.audio.TickableSound; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; - -public class AirCurrentSound extends TickableSound { - - private float pitch; - - protected AirCurrentSound(SoundEvent p_i46532_1_, float pitch) { - super(p_i46532_1_, SoundCategory.BLOCKS); - this.pitch = pitch; - volume = 0.01f; - repeat = true; - repeatDelay = 0; - global = true; - } - - @Override - public void tick() {} - - public void setPitch(float pitch) { - this.pitch = pitch; - } - - public void fadeIn(float maxVolume) { - volume = Math.min(maxVolume, volume + .05f); - } - - public void fadeOut() { - volume = Math.max(0, volume - .05f); - } - - public boolean isFaded() { - return volume == 0; - } - - @Override - public float getPitch() { - return pitch; - } - - public void stop() { - setDone(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanBlock.java deleted file mode 100644 index 8cb03c361..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanBlock.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.content.logistics.block.chute.AbstractChuteBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public class EncasedFanBlock extends DirectionalKineticBlock implements ITE { - - public EncasedFanBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ENCASED_FAN.create(); - } - - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - super.onBlockAdded(state, worldIn, pos, oldState, isMoving); - blockUpdate(state, worldIn, pos); - } - - @Override - public void updateDiagonalNeighbors(BlockState stateIn, IWorld worldIn, BlockPos pos, int flags, int count) { - super.updateDiagonalNeighbors(stateIn, worldIn, pos, flags, count); - blockUpdate(stateIn, worldIn, pos); - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState p_196243_4_, boolean p_196243_5_) { - if (state.hasTileEntity() && (state.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasTileEntity())) { - withTileEntityDo(world, pos, EncasedFanTileEntity::updateChute); - world.removeTileEntity(pos); - } - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - blockUpdate(state, worldIn, pos); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - Direction face = context.getFace(); - - BlockState placedOn = world.getBlockState(pos.offset(face.getOpposite())); - BlockState placedOnOpposite = world.getBlockState(pos.offset(face)); - if (AbstractChuteBlock.isChute(placedOn)) - return getDefaultState().with(FACING, face.getOpposite()); - if (AbstractChuteBlock.isChute(placedOnOpposite)) - return getDefaultState().with(FACING, face); - - Direction preferredFacing = getPreferredFacing(context); - if (preferredFacing == null) - preferredFacing = context.getNearestLookingDirection(); - return getDefaultState().with(FACING, context.getPlayer() != null && context.getPlayer() - .isSneaking() ? preferredFacing : preferredFacing.getOpposite()); - } - - protected void blockUpdate(BlockState state, IWorld worldIn, BlockPos pos) { - if (worldIn instanceof WrappedWorld) - return; - notifyFanTile(worldIn, pos); - if (worldIn.isRemote()) - return; - withTileEntityDo(worldIn, pos, te -> te.queueGeneratorUpdate()); - } - - protected void notifyFanTile(IWorld world, BlockPos pos) { - withTileEntityDo(world, pos, EncasedFanTileEntity::blockInFrontChanged); - } - - @Override - public BlockState updateAfterWrenched(BlockState newState, ItemUseContext context) { - blockUpdate(newState, context.getWorld(), context.getPos()); - return newState; - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(FACING) - .getAxis(); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == state.get(FACING) - .getOpposite(); - } - - @Override - public boolean showCapacityWithAnnotation() { - return true; - } - - @Override - public Class getTileEntityClass() { - return EncasedFanTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java deleted file mode 100644 index 7424cdf81..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanRenderer.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; - -public class EncasedFanRenderer extends KineticTileEntityRenderer { - - public EncasedFanRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - Direction direction = te.getBlockState() - .get(FACING); - IVertexBuilder vb = buffer.getBuffer(RenderType.getCutoutMipped()); - - int lightBehind = WorldRenderer.getLightmapCoordinates(te.getWorld(), te.getPos().offset(direction.getOpposite())); - int lightInFront = WorldRenderer.getLightmapCoordinates(te.getWorld(), te.getPos().offset(direction)); - - SuperByteBuffer shaftHalf = - PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction.getOpposite()); - SuperByteBuffer fanInner = - PartialBufferer.getFacing(AllBlockPartials.ENCASED_FAN_INNER, te.getBlockState(), direction.getOpposite()); - - float time = AnimationTickHolder.getRenderTime(te.getWorld()); - float speed = te.getSpeed() * 5; - if (speed > 0) - speed = MathHelper.clamp(speed, 80, 64 * 20); - if (speed < 0) - speed = MathHelper.clamp(speed, -64 * 20, -80); - float angle = (time * speed * 3 / 10f) % 360; - angle = angle / 180f * (float) Math.PI; - - standardKineticRotationTransform(shaftHalf, te, lightBehind).renderInto(ms, vb); - kineticRotationTransform(fanInner, te, direction.getAxis(), angle, lightInFront).renderInto(ms, vb); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java deleted file mode 100644 index 16da67993..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/EncasedFanTileEntity.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; -import com.simibubi.create.content.logistics.block.chute.ChuteTileEntity; -import com.simibubi.create.foundation.config.AllConfigs; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -@MethodsReturnNonnullByDefault -public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements IAirCurrentSource { - - public AirCurrent airCurrent; - protected int airCurrentUpdateCooldown; - protected int entitySearchCooldown; - protected boolean isGenerator; - protected boolean updateAirFlow; - protected boolean updateGenerator; - - public EncasedFanTileEntity(TileEntityType type) { - super(type); - isGenerator = false; - airCurrent = new AirCurrent(this); - updateAirFlow = true; - updateGenerator = false; - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - if (!wasMoved) - isGenerator = compound.getBoolean("Generating"); - if (clientPacket) - airCurrent.rebuild(); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putBoolean("Generating", isGenerator); - super.write(compound, clientPacket); - } - - @Override - public float calculateAddedStressCapacity() { - return lastCapacityProvided = (isGenerator ? super.calculateAddedStressCapacity() : 0); - } - - @Override - public float calculateStressApplied() { - return isGenerator ? 0 : super.calculateStressApplied(); - } - - @Override - public float getGeneratedSpeed() { - return isGenerator ? AllConfigs.SERVER.kinetics.generatingFanSpeed.get() : 0; - } - - public void queueGeneratorUpdate() { - updateGenerator = true; - } - - public void updateGenerator() { - BlockState blockState = getBlockState(); - boolean shouldGenerate = true; - - if (!AllBlocks.ENCASED_FAN.has(blockState)) - shouldGenerate = false; - - if (shouldGenerate && blockState.get(EncasedFanBlock.FACING) != Direction.DOWN) - shouldGenerate = false; - - if (shouldGenerate) - shouldGenerate = world != null && world.isBlockPowered(pos) && world.isBlockPresent(pos.down()) && blockBelowIsHot(); - - if (shouldGenerate == isGenerator) - return; - isGenerator = shouldGenerate; - updateGeneratedRotation(); - } - - public boolean blockBelowIsHot() { - if (world == null) - return false; - BlockState checkState = world.getBlockState(pos.down()); - - if (!checkState.getBlock() - .isIn(AllBlockTags.FAN_HEATERS.tag)) - return false; - - if (checkState.contains(BlazeBurnerBlock.HEAT_LEVEL) && !checkState.get(BlazeBurnerBlock.HEAT_LEVEL) - .isAtLeast(BlazeBurnerBlock.HeatLevel.FADING)) - return false; - - if (checkState.contains(BlockStateProperties.LIT) && !checkState.get(BlockStateProperties.LIT)) - return false; - - return true; - } - - @Override - public AirCurrent getAirCurrent() { - return airCurrent; - } - - @Nullable - @Override - public World getAirCurrentWorld() { - return world; - } - - @Override - public BlockPos getAirCurrentPos() { - return pos; - } - - @Override - public Direction getAirflowOriginSide() { - return this.getBlockState() - .get(EncasedFanBlock.FACING); - } - - @Override - public Direction getAirFlowDirection() { - float speed = getSpeed(); - if (speed == 0) - return null; - Direction facing = getBlockState().get(BlockStateProperties.FACING); - speed = convertToDirection(speed, facing); - return speed > 0 ? facing : facing.getOpposite(); - } - - @Override - public boolean isSourceRemoved() { - return removed; - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - updateAirFlow = true; - updateChute(); - } - - public void updateChute() { - Direction direction = getBlockState().get(EncasedFanBlock.FACING); - if (!direction.getAxis() - .isVertical()) - return; - TileEntity poweredChute = world.getTileEntity(pos.offset(direction)); - if (!(poweredChute instanceof ChuteTileEntity)) - return; - ChuteTileEntity chuteTE = (ChuteTileEntity) poweredChute; - if (direction == Direction.DOWN) - chuteTE.updatePull(); - else - chuteTE.updatePush(1); - } - - public void blockInFrontChanged() { - updateAirFlow = true; - } - - @Override - public void tick() { - super.tick(); - - boolean server = !world.isRemote || isVirtual(); - - if (server && airCurrentUpdateCooldown-- <= 0) { - airCurrentUpdateCooldown = AllConfigs.SERVER.kinetics.fanBlockCheckRate.get(); - updateAirFlow = true; - } - - if (updateAirFlow) { - updateAirFlow = false; - airCurrent.rebuild(); - sendData(); - } - - if (updateGenerator) { - updateGenerator = false; - updateGenerator(); - } - - if (getSpeed() == 0 || isGenerator) - return; - - if (entitySearchCooldown-- <= 0) { - entitySearchCooldown = 5; - airCurrent.findEntities(); - } - - airCurrent.tick(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java deleted file mode 100644 index 5bae092ce..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/FanInstance.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileInstance; -import com.simibubi.create.content.contraptions.base.RotatingData; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; - -public class FanInstance extends KineticTileInstance { - - protected final RotatingData shaft; - protected final RotatingData fan; - final Direction direction; - private final Direction opposite; - - public FanInstance(MaterialManager modelManager, EncasedFanTileEntity tile) { - super(modelManager, tile); - - direction = blockState.get(FACING); - - opposite = direction.getOpposite(); - shaft = getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite).createInstance(); - fan = getRotatingMaterial().getModel(AllBlockPartials.ENCASED_FAN_INNER, blockState, opposite).createInstance(); - - setup(shaft); - setup(fan, getFanSpeed()); - } - - private float getFanSpeed() { - float speed = tile.getSpeed() * 5; - if (speed > 0) - speed = MathHelper.clamp(speed, 80, 64 * 20); - if (speed < 0) - speed = MathHelper.clamp(speed, -64 * 20, -80); - return speed; - } - - @Override - public void update() { - updateRotation(shaft); - updateRotation(fan, getFanSpeed()); - } - - @Override - public void updateLight() { - BlockPos behind = pos.offset(opposite); - relight(behind, shaft); - - BlockPos inFront = pos.offset(direction); - relight(inFront, fan); - } - - @Override - public void remove() { - shaft.delete(); - fan.delete(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java deleted file mode 100644 index bee9d4852..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/IAirCurrentSource.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.config.CKinetics; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; - -@MethodsReturnNonnullByDefault -public interface IAirCurrentSource { - @Nullable - AirCurrent getAirCurrent(); - - @Nullable - World getAirCurrentWorld(); - - BlockPos getAirCurrentPos(); - - float getSpeed(); - - Direction getAirflowOriginSide(); - - @Nullable - Direction getAirFlowDirection(); - - default float getMaxDistance() { - float speed = Math.abs(this.getSpeed()); - CKinetics config = AllConfigs.SERVER.kinetics; - float distanceFactor = Math.min(speed / config.fanRotationArgmax.get(), 1); - float pushDistance = MathHelper.lerp(distanceFactor, 3, config.fanPushDistance.get()); - float pullDistance = MathHelper.lerp(distanceFactor, 3f, config.fanPullDistance.get()); - return this.getSpeed() > 0 ? pushDistance : pullDistance; - } - - boolean isSourceRemoved(); -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleBlock.java deleted file mode 100644 index b25a7d0d5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleBlock.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ProperDirectionalBlock; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class NozzleBlock extends ProperDirectionalBlock { - - public NozzleBlock(Properties p_i48415_1_) { - super(p_i48415_1_); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - return ActionResultType.FAIL; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.NOZZLE.create(); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - return getDefaultState().with(FACING, context.getFace()); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.NOZZLE.get(state.get(FACING)); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - if (fromPos.equals(pos.offset(state.get(FACING).getOpposite()))) - if (!isValidPosition(state, worldIn, pos)) { - worldIn.destroyBlock(pos, true); - return; - } - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - Direction towardsFan = state.get(FACING).getOpposite(); - TileEntity te = worldIn.getTileEntity(pos.offset(towardsFan)); - return te instanceof IAirCurrentSource - && ((IAirCurrentSource) te).getAirflowOriginSide() == towardsFan.getOpposite(); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleTileEntity.java deleted file mode 100644 index 73066ab14..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/NozzleTileEntity.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.Explosion.Mode; - -public class NozzleTileEntity extends SmartTileEntity { - - private List pushingEntities = new ArrayList<>(); - private float range; - private boolean pushing; - private BlockPos fanPos; - - public NozzleTileEntity(TileEntityType type) { - super(type); - setLazyTickRate(5); - } - - @Override - public void addBehaviours(List behaviours) {} - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - super.write(compound, clientPacket); - if (!clientPacket) - return; - compound.putFloat("Range", range); - compound.putBoolean("Pushing", pushing); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - if (!clientPacket) - return; - range = compound.getFloat("Range"); - pushing = compound.getBoolean("Pushing"); - } - - @Override - public void initialize() { - fanPos = pos.offset(getBlockState().get(NozzleBlock.FACING) - .getOpposite()); - super.initialize(); - } - - @Override - public void tick() { - super.tick(); - - float range = calcRange(); - if (this.range != range) - setRange(range); - - Vector3d center = VecHelper.getCenterOf(pos); - if (world.isRemote && range != 0) { - if (world.rand.nextInt( - MathHelper.clamp((AllConfigs.SERVER.kinetics.fanPushDistance.get() - (int) range), 1, 10)) == 0) { - Vector3d start = VecHelper.offsetRandomly(center, world.rand, pushing ? 1 : range / 2); - Vector3d motion = center.subtract(start) - .normalize() - .scale(MathHelper.clamp(range * (pushing ? .025f : 1f), 0, .5f) * (pushing ? -1 : 1)); - world.addParticle(ParticleTypes.POOF, start.x, start.y, start.z, motion.x, motion.y, motion.z); - } - } - - for (Iterator iterator = pushingEntities.iterator(); iterator.hasNext();) { - Entity entity = iterator.next(); - Vector3d diff = entity.getPositionVec() - .subtract(center); - - if (!(entity instanceof PlayerEntity) && world.isRemote) - continue; - - double distance = diff.length(); - if (distance > range || entity.isSneaking() || AirCurrent.isPlayerCreativeFlying(entity)) { - iterator.remove(); - continue; - } - - if (!pushing && distance < 1.5f) - continue; - - float factor = (entity instanceof ItemEntity) ? 1 / 128f : 1 / 32f; - Vector3d pushVec = diff.normalize() - .scale((range - distance) * (pushing ? 1 : -1)); - entity.setMotion(entity.getMotion() - .add(pushVec.scale(factor))); - entity.fallDistance = 0; - entity.velocityChanged = true; - } - - } - - public void setRange(float range) { - this.range = range; - if (range == 0) - pushingEntities.clear(); - sendData(); - } - - private float calcRange() { - TileEntity te = world.getTileEntity(fanPos); - if (!(te instanceof IAirCurrentSource)) - return 0; - - IAirCurrentSource source = (IAirCurrentSource) te; - if (source instanceof EncasedFanTileEntity && ((EncasedFanTileEntity) source).isGenerator) - return 0; - if (source.getAirCurrent() == null) - return 0; - if (source.getSpeed() == 0) - return 0; - pushing = source.getAirFlowDirection() == source.getAirflowOriginSide(); - return source.getMaxDistance(); - } - - @Override - public void lazyTick() { - super.lazyTick(); - - if (range == 0) - return; - - Vector3d center = VecHelper.getCenterOf(pos); - AxisAlignedBB bb = new AxisAlignedBB(center, center).grow(range / 2f); - - for (Entity entity : world.getEntitiesWithinAABB(Entity.class, bb)) { - Vector3d diff = entity.getPositionVec() - .subtract(center); - - double distance = diff.length(); - if (distance > range || entity.isSneaking() || AirCurrent.isPlayerCreativeFlying(entity)) - continue; - - boolean canSee = canSee(entity); - if (!canSee) { - pushingEntities.remove(entity); - continue; - } - - if (!pushingEntities.contains(entity)) - pushingEntities.add(entity); - } - - for (Iterator iterator = pushingEntities.iterator(); iterator.hasNext();) { - Entity entity = iterator.next(); - if (entity.isAlive()) - continue; - iterator.remove(); - } - - if (!pushing && pushingEntities.size() > 256 && !world.isRemote) { - world.createExplosion(null, center.x, center.y, center.z, 2, Mode.NONE); - for (Iterator iterator = pushingEntities.iterator(); iterator.hasNext();) { - Entity entity = iterator.next(); - entity.remove(); - iterator.remove(); - } - } - - } - - private boolean canSee(Entity entity) { - RayTraceContext context = new RayTraceContext(entity.getPositionVec(), VecHelper.getCenterOf(pos), - BlockMode.COLLIDER, FluidMode.NONE, entity); - return pos.equals(world.rayTraceBlocks(context) - .getPos()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/fan/SplashingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/fan/SplashingRecipe.java deleted file mode 100644 index 9bf446385..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/fan/SplashingRecipe.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.simibubi.create.content.contraptions.components.fan; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing.SplashingWrapper; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -public class SplashingRecipe extends ProcessingRecipe { - - public SplashingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.SPLASHING, params); - } - - @Override - public boolean matches(SplashingWrapper inv, World worldIn) { - if (inv.isEmpty()) - return false; - return ingredients.get(0) - .test(inv.getStackInSlot(0)); - } - - @Override - protected int getMaxInputCount() { - return 1; - } - - @Override - protected int getMaxOutputCount() { - return 12; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java deleted file mode 100644 index b3cbcb990..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlyWheelInstance.java +++ /dev/null @@ -1,197 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel; - -import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; - -import java.util.Collections; -import java.util.List; - -import com.google.common.collect.Lists; -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.InstanceData; -import com.jozufozu.flywheel.backend.instancing.InstanceMaterial; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileInstance; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.MathHelper; - -public class FlyWheelInstance extends KineticTileInstance implements IDynamicInstance { - - protected final Direction facing; - protected final Direction connection; - - protected boolean connectedLeft; - protected float connectorAngleMult; - - protected final RotatingData shaft; - - protected final ModelData wheel; - - protected List connectors; - protected ModelData upperRotating; - protected ModelData lowerRotating; - protected ModelData upperSliding; - protected ModelData lowerSliding; - - protected float lastAngle = Float.NaN; - - public FlyWheelInstance(MaterialManager modelManager, FlywheelTileEntity tile) { - super(modelManager, tile); - - facing = blockState.get(HORIZONTAL_FACING); - - shaft = setup(shaftModel().createInstance()); - - BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); - wheel = getTransformMaterial().getModel(AllBlockPartials.FLYWHEEL, referenceState, referenceState.get(HORIZONTAL_FACING)).createInstance(); - - connection = FlywheelBlock.getConnection(blockState); - if (connection != null) { - connectedLeft = blockState.get(FlywheelBlock.CONNECTION) == FlywheelBlock.ConnectionState.LEFT; - - boolean flipAngle = connection.getAxis() == Direction.Axis.X ^ connection.getAxisDirection() == Direction.AxisDirection.NEGATIVE; - - connectorAngleMult = flipAngle ? -1 : 1; - - InstanceMaterial mat = getTransformMaterial(); - - upperRotating = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState).createInstance(); - lowerRotating = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState).createInstance(); - upperSliding = mat.getModel(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState).createInstance(); - lowerSliding = mat.getModel(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState).createInstance(); - - connectors = Lists.newArrayList(upperRotating, lowerRotating, upperSliding, lowerSliding); - } else { - connectors = Collections.emptyList(); - } - - animate(tile.angle); - } - - @Override - public void beginFrame() { - - float partialTicks = AnimationTickHolder.getPartialTicks(); - - float speed = tile.visualSpeed.get(partialTicks) * 3 / 10f; - float angle = tile.angle + speed * partialTicks; - - if (Math.abs(angle - lastAngle) < 0.001) return; - - animate(angle); - - lastAngle = angle; - } - - private void animate(float angle) { - MatrixStack ms = new MatrixStack(); - MatrixStacker msr = MatrixStacker.of(ms); - - msr.translate(getInstancePosition()); - - if (connection != null) { - float rotation = angle * connectorAngleMult; - - ms.push(); - rotateToFacing(msr, connection); - - ms.push(); - transformConnector(msr, true, true, rotation, connectedLeft); - upperRotating.setTransform(ms); - ms.pop(); - - ms.push(); - transformConnector(msr, false, true, rotation, connectedLeft); - lowerRotating.setTransform(ms); - ms.pop(); - - ms.push(); - transformConnector(msr, true, false, rotation, connectedLeft); - upperSliding.setTransform(ms); - ms.pop(); - - ms.push(); - transformConnector(msr, false, false, rotation, connectedLeft); - lowerSliding.setTransform(ms); - ms.pop(); - - ms.pop(); - } - - msr.centre() - .rotate(Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, facing.getAxis()), AngleHelper.rad(angle)) - .unCentre(); - - wheel.setTransform(ms); - } - - @Override - public void update() { - updateRotation(shaft); - } - - @Override - public void updateLight() { - relight(pos, shaft, wheel); - - if (connection != null) { - relight(this.pos.offset(connection), connectors.stream()); - } - } - - @Override - public void remove() { - shaft.delete(); - wheel.delete(); - - connectors.forEach(InstanceData::delete); - connectors.clear(); - } - - protected Instancer shaftModel() { - Direction opposite = facing.getOpposite(); - return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, opposite); - } - - protected void transformConnector(MatrixStacker ms, boolean upper, boolean rotating, float angle, boolean flip) { - float shift = upper ? 1 / 4f : -1 / 8f; - float offset = upper ? 1 / 4f : 1 / 4f; - float radians = (float) (angle / 180 * Math.PI); - float shifting = MathHelper.sin(radians) * shift + offset; - - float maxAngle = upper ? -5 : -15; - float minAngle = upper ? -45 : 5; - float barAngle = 0; - - if (rotating) - barAngle = MathHelper.lerp((MathHelper.sin((float) (radians + Math.PI / 2)) + 1) / 2, minAngle, maxAngle); - - float pivotX = (upper ? 8f : 3f) / 16; - float pivotY = (upper ? 8f : 2f) / 16; - float pivotZ = (upper ? 23f : 21.5f) / 16f; - - ms.translate(pivotX, pivotY, pivotZ + shifting); - if (rotating) - ms.rotate(Direction.EAST, AngleHelper.rad(barAngle)); - ms.translate(-pivotX, -pivotY, -pivotZ); - - if (flip && !upper) - ms.translate(9 / 16f, 0, 0); - } - - protected void rotateToFacing(MatrixStacker buffer, Direction facing) { - buffer.centre() - .rotate(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing))) - .unCentre(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelBlock.java deleted file mode 100644 index 607dcdd19..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelBlock.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineTileEntity; -import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public class FlywheelBlock extends HorizontalKineticBlock { - - public static EnumProperty CONNECTION = EnumProperty.create("connection", ConnectionState.class); - - public FlywheelBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(CONNECTION, ConnectionState.NONE)); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(CONNECTION)); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.FLYWHEEL.create(); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction preferred = getPreferredHorizontalFacing(context); - if (preferred != null) - return getDefaultState().with(HORIZONTAL_FACING, preferred.getOpposite()); - return this.getDefaultState().with(HORIZONTAL_FACING, context.getPlacementHorizontalFacing()); - } - - public static boolean isConnected(BlockState state) { - return getConnection(state) != null; - } - - public static Direction getConnection(BlockState state) { - Direction facing = state.get(HORIZONTAL_FACING); - ConnectionState connection = state.get(CONNECTION); - - if (connection == ConnectionState.LEFT) - return facing.rotateYCCW(); - if (connection == ConnectionState.RIGHT) - return facing.rotateY(); - return null; - } - - public static void setConnection(World world, BlockPos pos, BlockState state, Direction direction) { - Direction facing = state.get(HORIZONTAL_FACING); - ConnectionState connection = ConnectionState.NONE; - - if (direction == facing.rotateY()) - connection = ConnectionState.RIGHT; - if (direction == facing.rotateYCCW()) - connection = ConnectionState.LEFT; - - world.setBlockState(pos, state.with(CONNECTION, connection), 18); - AllTriggers.triggerForNearbyPlayers(AllTriggers.FLYWHEEL, world, pos, 4); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == state.get(HORIZONTAL_FACING).getOpposite(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(HORIZONTAL_FACING).getAxis(); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - Direction connection = getConnection(state); - if (connection == null) - return super.onWrenched(state ,context); - - if (context.getFace().getAxis() == state.get(HORIZONTAL_FACING).getAxis()) - return ActionResultType.PASS; - - World world = context.getWorld(); - BlockPos enginePos = context.getPos().offset(connection, 2); - BlockState engine = world.getBlockState(enginePos); - if (engine.getBlock() instanceof FurnaceEngineBlock) - ((FurnaceEngineBlock) engine.getBlock()).withTileEntityDo(world, enginePos, EngineTileEntity::detachWheel); - - return super.onWrenched(state.with(CONNECTION, ConnectionState.NONE), context); - } - - public enum ConnectionState implements IStringSerializable { - NONE, LEFT, RIGHT; - - @Override - public String getString() { - return Lang.asId(name()); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelGenerator.java deleted file mode 100644 index 13dc7759d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelGenerator.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel; - -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraftforge.client.model.generators.ModelFile; - -public class FlywheelGenerator extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - return 0; - } - - @Override - protected int getYRotation(BlockState state) { - return horizontalAngle(state.get(FlywheelBlock.HORIZONTAL_FACING)) + 90; - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - return prov.models() - .getExistingFile(prov.modLoc("block/" + ctx.getName() + "/casing_" + state.get(FlywheelBlock.CONNECTION) - .getString())); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java deleted file mode 100644 index fc67fbd98..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelRenderer.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel; - -import static com.simibubi.create.content.contraptions.base.HorizontalKineticBlock.HORIZONTAL_FACING; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock.ConnectionState; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.MathHelper; - -public class FlywheelRenderer extends KineticTileEntityRenderer { - - public FlywheelRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - BlockState blockState = te.getBlockState(); - FlywheelTileEntity wte = (FlywheelTileEntity) te; - - float speed = wte.visualSpeed.get(partialTicks) * 3 / 10f; - float angle = wte.angle + speed * partialTicks; - - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - - if (FlywheelBlock.isConnected(blockState)) { - Direction connection = FlywheelBlock.getConnection(blockState); - light = WorldRenderer.getLightmapCoordinates(te.getWorld(), blockState, te.getPos() - .offset(connection)); - float rotation = - connection.getAxis() == Axis.X ^ connection.getAxisDirection() == AxisDirection.NEGATIVE ? -angle - : angle; - boolean flip = blockState.get(FlywheelBlock.CONNECTION) == ConnectionState.LEFT; - - transformConnector( - rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_UPPER_ROTATING, blockState), connection), true, true, - rotation, flip).light(light) - .renderInto(ms, vb); - transformConnector( - rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_LOWER_ROTATING, blockState), connection), false, true, - rotation, flip).light(light) - .renderInto(ms, vb); - - transformConnector(rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_UPPER_SLIDING, blockState), connection), - true, false, rotation, flip).light(light) - .renderInto(ms, vb); - transformConnector(rotateToFacing(PartialBufferer.get(AllBlockPartials.FLYWHEEL_LOWER_SLIDING, blockState), connection), - false, false, rotation, flip).light(light) - .renderInto(ms, vb); - } - - renderFlywheel(te, ms, light, blockState, angle, vb); - } - - private void renderFlywheel(KineticTileEntity te, MatrixStack ms, int light, BlockState blockState, float angle, IVertexBuilder vb) { - BlockState referenceState = blockState.rotate(Rotation.CLOCKWISE_90); - Direction facing = referenceState.get(BlockStateProperties.HORIZONTAL_FACING); - SuperByteBuffer wheel = PartialBufferer.getFacing(AllBlockPartials.FLYWHEEL, referenceState, facing); - kineticRotationTransform(wheel, te, blockState.get(HORIZONTAL_FACING) - .getAxis(), AngleHelper.rad(angle), light); - wheel.renderInto(ms, vb); - } - - @Override - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), te.getBlockState() - .get(BlockStateProperties.HORIZONTAL_FACING) - .getOpposite()); - } - - protected SuperByteBuffer transformConnector(SuperByteBuffer buffer, boolean upper, boolean rotating, float angle, - boolean flip) { - - float shift = upper ? 1 / 4f : -1 / 8f; - float offset = upper ? 1 / 4f : 1 / 4f; - float radians = (float) (angle / 180 * Math.PI); - float shifting = MathHelper.sin(radians) * shift + offset; - - float maxAngle = upper ? -5 : -15; - float minAngle = upper ? -45 : 5; - float barAngle = 0; - - if (rotating) - barAngle = MathHelper.lerp((MathHelper.sin((float) (radians + Math.PI / 2)) + 1) / 2, minAngle, maxAngle); - - float pivotX = (upper ? 8f : 3f) / 16; - float pivotY = (upper ? 8f : 2f) / 16; - float pivotZ = (upper ? 23f : 21.5f) / 16f; - - buffer.translate(pivotX, pivotY, pivotZ + shifting); - if (rotating) - buffer.rotate(Direction.EAST, AngleHelper.rad(barAngle)); - buffer.translate(-pivotX, -pivotY, -pivotZ); - - if (flip && !upper) - buffer.translate(9 / 16f, 0, 0); - - return buffer; - } - - protected SuperByteBuffer rotateToFacing(SuperByteBuffer buffer, Direction facing) { - buffer.rotateCentered(Direction.UP, AngleHelper.rad(AngleHelper.horizontalAngle(facing))); - return buffer; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelTileEntity.java deleted file mode 100644 index b27ccb01c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/FlywheelTileEntity.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel; - -import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; -import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.AxisAlignedBB; - -public class FlywheelTileEntity extends GeneratingKineticTileEntity { - - private float generatedCapacity; - private float generatedSpeed; - private int stoppingCooldown; - - // Client - InterpolatedChasingValue visualSpeed = new InterpolatedChasingValue(); - float angle; - - public FlywheelTileEntity(TileEntityType type) { - super(type); - } - - public void setRotation(float speed, float capacity) { - if (generatedSpeed != speed || generatedCapacity != capacity) { - - if (speed == 0) { - if (stoppingCooldown == 0) - stoppingCooldown = 40; - return; - } - - stoppingCooldown = 0; - generatedSpeed = speed; - generatedCapacity = capacity; - updateGeneratedRotation(); - } - } - - @Override - public float getGeneratedSpeed() { - return convertToDirection(generatedSpeed, getBlockState().get(FlywheelBlock.HORIZONTAL_FACING)); - } - - @Override - public float calculateAddedStressCapacity() { - return lastCapacityProvided = generatedCapacity; - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - return super.makeRenderBoundingBox().grow(2); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putFloat("GeneratedSpeed", generatedSpeed); - compound.putFloat("GeneratedCapacity", generatedCapacity); - compound.putInt("Cooldown", stoppingCooldown); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - generatedSpeed = compound.getFloat("GeneratedSpeed"); - generatedCapacity = compound.getFloat("GeneratedCapacity"); - stoppingCooldown = compound.getInt("Cooldown"); - super.fromTag(state, compound, clientPacket); - if (clientPacket) - visualSpeed.withSpeed(1 / 32f) - .target(getGeneratedSpeed()); - } - - @Override - public void tick() { - super.tick(); - - if (world.isRemote) { - float targetSpeed = isVirtual() ? speed : getGeneratedSpeed(); - visualSpeed.target(targetSpeed); - visualSpeed.tick(); - angle += visualSpeed.value * 3 / 10f; - angle %= 360; - return; - } - - /* - * After getting moved by pistons the generatedSpeed attribute reads 16 but the - * actual speed stays at 0, if it happens update rotation - */ - if (getGeneratedSpeed() != 0 && getSpeed() == 0) - updateGeneratedRotation(); - - if (stoppingCooldown == 0) - return; - - stoppingCooldown--; - if (stoppingCooldown == 0) { - generatedCapacity = 0; - generatedSpeed = 0; - updateGeneratedRotation(); - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineBlock.java deleted file mode 100644 index a32696209..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineBlock.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel.engine; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalBlock; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public abstract class EngineBlock extends HorizontalBlock implements IWrenchable { - - protected EngineBlock(Properties builder) { - super(builder); - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - return isValidPosition(state, worldIn, pos, state.get(HORIZONTAL_FACING)); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - return ActionResultType.FAIL; - } - - @Override - public abstract TileEntity createTileEntity(BlockState state, IBlockReader world); - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction facing = context.getFace(); - return getDefaultState().with(HORIZONTAL_FACING, - facing.getAxis().isVertical() ? context.getPlacementHorizontalFacing().getOpposite() : facing); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(HORIZONTAL_FACING)); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - if (fromPos.equals(getBaseBlockPos(state, pos))) { - if (!isValidPosition(state, worldIn, pos)) { - worldIn.destroyBlock(pos, true); - return; - } - } - } - - private boolean isValidPosition(BlockState state, IBlockReader world, BlockPos pos, Direction facing) { - BlockPos baseBlockPos = getBaseBlockPos(state, pos); - if (!isValidBaseBlock(world.getBlockState(baseBlockPos), world, pos)) - return false; - for (Direction otherFacing : Iterate.horizontalDirections) { - if (otherFacing == facing) - continue; - BlockPos otherPos = baseBlockPos.offset(otherFacing); - BlockState otherState = world.getBlockState(otherPos); - if (otherState.getBlock() instanceof EngineBlock - && getBaseBlockPos(otherState, otherPos).equals(baseBlockPos)) - return false; - } - - return true; - } - - public static BlockPos getBaseBlockPos(BlockState state, BlockPos pos) { - return pos.offset(state.get(HORIZONTAL_FACING).getOpposite()); - } - - @Nullable - @OnlyIn(Dist.CLIENT) - public abstract PartialModel getFrameModel(); - - protected abstract boolean isValidBaseBlock(BlockState baseBlock, IBlockReader world, BlockPos pos); - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java deleted file mode 100644 index 4ce123e96..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineInstance.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel.engine; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.Block; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; - -public class EngineInstance extends TileEntityInstance { - - protected ModelData frame; - - public EngineInstance(MaterialManager modelManager, EngineTileEntity tile) { - super(modelManager, tile); - - Block block = blockState - .getBlock(); - if (!(block instanceof EngineBlock)) - return; - - EngineBlock engineBlock = (EngineBlock) block; - PartialModel frame = engineBlock.getFrameModel(); - - Direction facing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); - - this.frame = getTransformMaterial().getModel(frame, blockState).createInstance(); - - float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing)); - - MatrixStack ms = new MatrixStack(); - MatrixStacker msr = MatrixStacker.of(ms); - - msr.translate(getInstancePosition()) - .nudge(tile.hashCode()) - .centre() - .rotate(Direction.UP, angle) - .unCentre() - .translate(0, 0, -1); - - this.frame.setTransform(ms); - } - - @Override - public void remove() { - frame.delete(); - } - - @Override - public void updateLight() { - relight(pos, frame); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java deleted file mode 100644 index ce77b42ef..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineRenderer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel.engine; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; - -public class EngineRenderer extends SafeTileEntityRenderer { - - public EngineRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(T te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light, - int overlay) { - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - Block block = te.getBlockState() - .getBlock(); - if (block instanceof EngineBlock) { - EngineBlock engineBlock = (EngineBlock) block; - PartialModel frame = engineBlock.getFrameModel(); - if (frame != null) { - Direction facing = te.getBlockState() - .get(EngineBlock.HORIZONTAL_FACING); - float angle = AngleHelper.rad(AngleHelper.horizontalAngle(facing)); - PartialBufferer.get(frame, te.getBlockState()) - .rotateCentered(Direction.UP, angle) - .translate(0, 0, -1) - .light(WorldRenderer.getLightmapCoordinates(te.getWorld(), te.getBlockState(), te.getPos())) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java deleted file mode 100644 index 719a735ca..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/EngineTileEntity.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel.engine; - -import java.util.List; - -import com.jozufozu.flywheel.backend.instancing.IInstanceRendered; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelBlock; -import com.simibubi.create.content.contraptions.components.flywheel.FlywheelTileEntity; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class EngineTileEntity extends SmartTileEntity implements IInstanceRendered { - - public float appliedCapacity; - public float appliedSpeed; - protected FlywheelTileEntity poweredWheel; - - public EngineTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - } - - @Override - public void addBehaviours(List behaviours) { - } - - protected AxisAlignedBB cachedBoundingBox; - @Override - @OnlyIn(Dist.CLIENT) - public AxisAlignedBB getRenderBoundingBox() { - if (cachedBoundingBox == null) { - cachedBoundingBox = super.getRenderBoundingBox().grow(1.5f); - } - return cachedBoundingBox; - } - - @Override - public void lazyTick() { - super.lazyTick(); - if (world.isRemote) - return; - if (poweredWheel != null && poweredWheel.isRemoved()) - poweredWheel = null; - if (poweredWheel == null) - attachWheel(); - } - - public void attachWheel() { - Direction engineFacing = getBlockState().get(EngineBlock.HORIZONTAL_FACING); - BlockPos wheelPos = pos.offset(engineFacing, 2); - BlockState wheelState = world.getBlockState(wheelPos); - if (!AllBlocks.FLYWHEEL.has(wheelState)) - return; - Direction wheelFacing = wheelState.get(FlywheelBlock.HORIZONTAL_FACING); - if (wheelFacing.getAxis() != engineFacing.rotateY().getAxis()) - return; - if (FlywheelBlock.isConnected(wheelState) - && FlywheelBlock.getConnection(wheelState) != engineFacing.getOpposite()) - return; - TileEntity te = world.getTileEntity(wheelPos); - if (te.isRemoved()) - return; - if (te instanceof FlywheelTileEntity) { - if (!FlywheelBlock.isConnected(wheelState)) - FlywheelBlock.setConnection(world, te.getPos(), te.getBlockState(), engineFacing.getOpposite()); - poweredWheel = (FlywheelTileEntity) te; - refreshWheelSpeed(); - } - } - - public void detachWheel() { - if (poweredWheel == null || poweredWheel.isRemoved()) - return; - poweredWheel.setRotation(0, 0); - FlywheelBlock.setConnection(world, poweredWheel.getPos(), poweredWheel.getBlockState(), null); - poweredWheel = null; - } - - @Override - public void remove() { - detachWheel(); - super.remove(); - } - - protected void refreshWheelSpeed() { - if (poweredWheel == null) - return; - poweredWheel.setRotation(appliedSpeed, appliedCapacity); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java deleted file mode 100644 index e3083ac1a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineBlock.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel.engine; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.AbstractFurnaceBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.PlayerInteractEvent.RightClickBlock; -import net.minecraftforge.eventbus.api.Event.Result; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class FurnaceEngineBlock extends EngineBlock implements ITE { - - public FurnaceEngineBlock(Properties properties) { - super(properties); - } - - @Override - protected boolean isValidBaseBlock(BlockState baseBlock, IBlockReader world, BlockPos pos) { - return baseBlock.getBlock() instanceof AbstractFurnaceBlock; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.FURNACE_ENGINE.get(state.get(HORIZONTAL_FACING)); - } - - @Override - public PartialModel getFrameModel() { - return AllBlockPartials.FURNACE_GENERATOR_FRAME; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.FURNACE_ENGINE.create(); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - super.neighborChanged(state, worldIn, pos, blockIn, fromPos, isMoving); - if (worldIn instanceof WrappedWorld) - return; - if (worldIn.isRemote) - return; - - if (fromPos.equals(getBaseBlockPos(state, pos))) - if (isValidPosition(state, worldIn, pos)) - withTileEntityDo(worldIn, pos, FurnaceEngineTileEntity::updateFurnace); - } - - @SubscribeEvent - public static void usingFurnaceEngineOnFurnacePreventsGUI(RightClickBlock event) { - ItemStack item = event.getItemStack(); - if (!(item.getItem() instanceof BlockItem)) - return; - BlockItem blockItem = (BlockItem) item.getItem(); - if (blockItem.getBlock() != AllBlocks.FURNACE_ENGINE.get()) - return; - BlockState state = event.getWorld().getBlockState(event.getPos()); - if (event.getFace().getAxis().isVertical()) - return; - if (state.getBlock() instanceof AbstractFurnaceBlock) - event.setUseBlock(Result.DENY); - } - - @Override - public Class getTileEntityClass() { - return FurnaceEngineTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java deleted file mode 100644 index 947e03081..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/flywheel/engine/FurnaceEngineTileEntity.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.simibubi.create.content.contraptions.components.flywheel.engine; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.block.AbstractFurnaceBlock; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.tileentity.TileEntityType; - -public class FurnaceEngineTileEntity extends EngineTileEntity { - - public FurnaceEngineTileEntity(TileEntityType type) { - super(type); - } - - @Override - public void lazyTick() { - updateFurnace(); - super.lazyTick(); - } - - public void updateFurnace() { - BlockState state = world.getBlockState(EngineBlock.getBaseBlockPos(getBlockState(), pos)); - if (!(state.getBlock() instanceof AbstractFurnaceBlock)) - return; - - float modifier = state.getBlock() == Blocks.BLAST_FURNACE ? 2 : 1; - boolean active = state.contains(AbstractFurnaceBlock.LIT) && state.get(AbstractFurnaceBlock.LIT); - float speed = active ? 16 * modifier : 0; - float capacity = - (float) (active ? AllConfigs.SERVER.kinetics.stressValues.getCapacityOf(AllBlocks.FURNACE_ENGINE.get()) - : 0); - - appliedCapacity = capacity; - appliedSpeed = speed; - refreshWheelSpeed(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java deleted file mode 100644 index 3cf4316e4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillStoneCogInstance.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.contraptions.components.millstone; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; - -public class MillStoneCogInstance extends SingleRotatingInstance { - - public MillStoneCogInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Instancer getModel() { - return getRotatingMaterial().getModel(AllBlockPartials.MILLSTONE_COG, tile.getBlockState()); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillingRecipe.java deleted file mode 100644 index 0bc0460c7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillingRecipe.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.simibubi.create.content.contraptions.components.millstone; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.components.crusher.AbstractCrushingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraft.world.World; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -@ParametersAreNonnullByDefault -public class MillingRecipe extends AbstractCrushingRecipe { - - public MillingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.MILLING, params); - } - - @Override - public boolean matches(RecipeWrapper inv, World worldIn) { - if (inv.isEmpty()) - return false; - return ingredients.get(0) - .test(inv.getStackInSlot(0)); - } - - @Override - protected int getMaxOutputCount() { - return 4; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneBlock.java deleted file mode 100644 index dcfb06eb1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneBlock.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.simibubi.create.content.contraptions.components.millstone; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.KineticBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemStackHandler; - -public class MillstoneBlock extends KineticBlock implements ITE, ICogWheel { - - public MillstoneBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MILLSTONE.create(); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.MILLSTONE; - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == Direction.DOWN; - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.getHeldItem(handIn).isEmpty()) - return ActionResultType.PASS; - if (worldIn.isRemote) - return ActionResultType.SUCCESS; - - withTileEntityDo(worldIn, pos, millstone -> { - boolean emptyOutput = true; - IItemHandlerModifiable inv = millstone.outputInv; - for (int slot = 0; slot < inv.getSlots(); slot++) { - ItemStack stackInSlot = inv.getStackInSlot(slot); - if (!stackInSlot.isEmpty()) - emptyOutput = false; - player.inventory.placeItemBackInInventory(worldIn, stackInSlot); - inv.setStackInSlot(slot, ItemStack.EMPTY); - } - - if (emptyOutput) { - inv = millstone.inputInv; - for (int slot = 0; slot < inv.getSlots(); slot++) { - player.inventory.placeItemBackInInventory(worldIn, inv.getStackInSlot(slot)); - inv.setStackInSlot(slot, ItemStack.EMPTY); - } - } - - millstone.markDirty(); - millstone.sendData(); - }); - - return ActionResultType.SUCCESS; - } - - @Override - public void onLanded(IBlockReader worldIn, Entity entityIn) { - super.onLanded(worldIn, entityIn); - - if (entityIn.world.isRemote) - return; - if (!(entityIn instanceof ItemEntity)) - return; - if (!entityIn.isAlive()) - return; - - MillstoneTileEntity millstone = null; - for (BlockPos pos : Iterate.hereAndBelow(entityIn.getBlockPos())) - if (millstone == null) - millstone = getTileEntity(worldIn, pos); - - if (millstone == null) - return; - - ItemEntity itemEntity = (ItemEntity) entityIn; - LazyOptional capability = millstone.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); - if (!capability.isPresent()) - return; - - ItemStack remainder = capability.orElse(new ItemStackHandler()).insertItem(0, itemEntity.getItem(), false); - if (remainder.isEmpty()) - itemEntity.remove(); - if (remainder.getCount() < itemEntity.getItem().getCount()) - itemEntity.setItem(remainder); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { - withTileEntityDo(worldIn, pos, te -> { - ItemHelper.dropContents(worldIn, pos, te.inputInv); - ItemHelper.dropContents(worldIn, pos, te.outputInv); - }); - - worldIn.removeTileEntity(pos); - } - } - - @Override - public Axis getRotationAxis(BlockState state) { - return Axis.Y; - } - - @Override - public Class getTileEntityClass() { - return MillstoneTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneRenderer.java deleted file mode 100644 index 7fb801ee7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneRenderer.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simibubi.create.content.contraptions.components.millstone; - -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.SuperByteBuffer; - -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; - -public class MillstoneRenderer extends KineticTileEntityRenderer { - - public MillstoneRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return CreateClient.BUFFER_CACHE.renderPartial(AllBlockPartials.MILLSTONE_COG, te.getBlockState()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneTileEntity.java deleted file mode 100644 index d9c9fe512..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/millstone/MillstoneTileEntity.java +++ /dev/null @@ -1,206 +0,0 @@ -package com.simibubi.create.content.contraptions.components.millstone; - -import java.util.List; -import java.util.Optional; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.CombinedInvWrapper; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class MillstoneTileEntity extends KineticTileEntity { - - public ItemStackHandler inputInv; - public ItemStackHandler outputInv; - public LazyOptional capability; - public int timer; - private MillingRecipe lastRecipe; - - public MillstoneTileEntity(TileEntityType type) { - super(type); - inputInv = new ItemStackHandler(1); - outputInv = new ItemStackHandler(9); - capability = LazyOptional.of(MillstoneInventoryHandler::new); - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new DirectBeltInputBehaviour(this)); - super.addBehaviours(behaviours); - } - - @Override - public void tick() { - super.tick(); - - if (getSpeed() == 0) - return; - for (int i = 0; i < outputInv.getSlots(); i++) - if (outputInv.getStackInSlot(i) - .getCount() == outputInv.getSlotLimit(i)) - return; - - if (timer > 0) { - timer -= getProcessingSpeed(); - - if (world.isRemote) { - spawnParticles(); - return; - } - if (timer <= 0) - process(); - return; - } - - if (inputInv.getStackInSlot(0) - .isEmpty()) - return; - - RecipeWrapper inventoryIn = new RecipeWrapper(inputInv); - if (lastRecipe == null || !lastRecipe.matches(inventoryIn, world)) { - Optional recipe = AllRecipeTypes.MILLING.find(inventoryIn, world); - if (!recipe.isPresent()) { - timer = 100; - sendData(); - } else { - lastRecipe = recipe.get(); - timer = lastRecipe.getProcessingDuration(); - sendData(); - } - return; - } - - timer = lastRecipe.getProcessingDuration(); - sendData(); - } - - @Override - public void remove() { - super.remove(); - capability.invalidate(); - } - - private void process() { - RecipeWrapper inventoryIn = new RecipeWrapper(inputInv); - - if (lastRecipe == null || !lastRecipe.matches(inventoryIn, world)) { - Optional recipe = AllRecipeTypes.MILLING.find(inventoryIn, world); - if (!recipe.isPresent()) - return; - lastRecipe = recipe.get(); - } - - ItemStack stackInSlot = inputInv.getStackInSlot(0); - stackInSlot.shrink(1); - inputInv.setStackInSlot(0, stackInSlot); - lastRecipe.rollResults() - .forEach(stack -> ItemHandlerHelper.insertItemStacked(outputInv, stack, false)); - sendData(); - markDirty(); - } - - public void spawnParticles() { - ItemStack stackInSlot = inputInv.getStackInSlot(0); - if (stackInSlot.isEmpty()) - return; - - ItemParticleData data = new ItemParticleData(ParticleTypes.ITEM, stackInSlot); - float angle = world.rand.nextFloat() * 360; - Vector3d offset = new Vector3d(0, 0, 0.5f); - offset = VecHelper.rotate(offset, angle, Axis.Y); - Vector3d target = VecHelper.rotate(offset, getSpeed() > 0 ? 25 : -25, Axis.Y); - - Vector3d center = offset.add(VecHelper.getCenterOf(pos)); - target = VecHelper.offsetRandomly(target.subtract(offset), world.rand, 1 / 128f); - world.addParticle(data, center.x, center.y, center.z, target.x, target.y, target.z); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putInt("Timer", timer); - compound.put("InputInventory", inputInv.serializeNBT()); - compound.put("OutputInventory", outputInv.serializeNBT()); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - timer = compound.getInt("Timer"); - inputInv.deserializeNBT(compound.getCompound("InputInventory")); - outputInv.deserializeNBT(compound.getCompound("OutputInventory")); - super.fromTag(state, compound, clientPacket); - } - - public int getProcessingSpeed() { - return MathHelper.clamp((int) Math.abs(getSpeed() / 16f), 1, 512); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (isItemHandlerCap(cap)) - return capability.cast(); - return super.getCapability(cap, side); - } - - private boolean canProcess(ItemStack stack) { - ItemStackHandler tester = new ItemStackHandler(1); - tester.setStackInSlot(0, stack); - RecipeWrapper inventoryIn = new RecipeWrapper(tester); - - if (lastRecipe != null && lastRecipe.matches(inventoryIn, world)) - return true; - return AllRecipeTypes.MILLING.find(inventoryIn, world) - .isPresent(); - } - - private class MillstoneInventoryHandler extends CombinedInvWrapper { - - public MillstoneInventoryHandler() { - super(inputInv, outputInv); - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - if (outputInv == getHandlerFromIndex(getIndexForSlot(slot))) - return false; - return canProcess(stack) && super.isItemValid(slot, stack); - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - if (outputInv == getHandlerFromIndex(getIndexForSlot(slot))) - return stack; - if (!isItemValid(slot, stack)) - return stack; - return super.insertItem(slot, stack, simulate); - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - if (inputInv == getHandlerFromIndex(getIndexForSlot(slot))) - return ItemStack.EMPTY; - return super.extractItem(slot, amount, simulate); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/BasinOperatorBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/BasinOperatorBlockItem.java deleted file mode 100644 index e6831212e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/BasinOperatorBlockItem.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.simibubi.create.content.contraptions.components.mixer; - -import com.simibubi.create.AllBlocks; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class BasinOperatorBlockItem extends BlockItem { - - public BasinOperatorBlockItem(Block block, Properties builder) { - super(block, builder); - } - - @Override - public ActionResultType tryPlace(BlockItemUseContext context) { - BlockPos placedOnPos = context.getPos() - .offset(context.getFace() - .getOpposite()); - BlockState placedOnState = context.getWorld() - .getBlockState(placedOnPos); - if (AllBlocks.BASIN.has(placedOnState) || AllBlocks.BELT.has(placedOnState) - || AllBlocks.DEPOT.has(placedOnState) || AllBlocks.WEIGHTED_EJECTOR.has(placedOnState)) { - if (context.getWorld() - .getBlockState(placedOnPos.up(2)) - .getMaterial() - .isReplaceable()) - context = BlockItemUseContext.func_221536_a(context, placedOnPos.up(2), Direction.UP); - else - return ActionResultType.FAIL; - } - - return super.tryPlace(context); - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/CompactingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/CompactingRecipe.java deleted file mode 100644 index 7e25e410e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/CompactingRecipe.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simibubi.create.content.contraptions.components.mixer; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.BasinRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -public class CompactingRecipe extends BasinRecipe { - - public CompactingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.COMPACTING, params); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerBlock.java deleted file mode 100644 index 1d20436b9..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerBlock.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.simibubi.create.content.contraptions.components.mixer; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.KineticBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; - -public class MechanicalMixerBlock extends KineticBlock implements ITE, ICogWheel { - - public MechanicalMixerBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MECHANICAL_MIXER.create(); - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - return !AllBlocks.BASIN.has(worldIn.getBlockState(pos.down())); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (context.getEntity() instanceof PlayerEntity) - return AllShapes.CASING_14PX.get(Direction.DOWN); - - return AllShapes.MECHANICAL_PROCESSOR_SHAPE; - } - - @Override - public Axis getRotationAxis(BlockState state) { - return Axis.Y; - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return false; - } - - @Override - public float getParticleTargetRadius() { - return .85f; - } - - @Override - public float getParticleInitialRadius() { - return .75f; - } - - @Override - public SpeedLevel getMinimumRequiredSpeedLevel() { - return SpeedLevel.MEDIUM; - } - - @Override - public Class getTileEntityClass() { - return MechanicalMixerTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java deleted file mode 100644 index 0f84de945..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerRenderer.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.content.contraptions.components.mixer; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class MechanicalMixerRenderer extends KineticTileEntityRenderer { - - public MechanicalMixerRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - public boolean isGlobalRenderer(KineticTileEntity te) { - return true; - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - BlockState blockState = te.getBlockState(); - MechanicalMixerTileEntity mixer = (MechanicalMixerTileEntity) te; - BlockPos pos = te.getPos(); - - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - - SuperByteBuffer superBuffer = PartialBufferer.get(AllBlockPartials.SHAFTLESS_COGWHEEL, blockState); - standardKineticRotationTransform(superBuffer, te, light).renderInto(ms, vb); - - int packedLightmapCoords = WorldRenderer.getLightmapCoordinates(te.getWorld(), blockState, pos); - float renderedHeadOffset = mixer.getRenderedHeadOffset(partialTicks); - float speed = mixer.getRenderedHeadRotationSpeed(partialTicks); - float time = AnimationTickHolder.getRenderTime(te.getWorld()); - float angle = ((time * speed * 6 / 10f) % 360) / 180 * (float) Math.PI; - - SuperByteBuffer poleRender = PartialBufferer.get(AllBlockPartials.MECHANICAL_MIXER_POLE, blockState); - poleRender.translate(0, -renderedHeadOffset, 0) - .light(packedLightmapCoords) - .renderInto(ms, vb); - - SuperByteBuffer headRender = PartialBufferer.get(AllBlockPartials.MECHANICAL_MIXER_HEAD, blockState); - headRender.rotateCentered(Direction.UP, angle) - .translate(0, -renderedHeadOffset, 0) - .light(packedLightmapCoords) - .renderInto(ms, vb); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java deleted file mode 100644 index 86d4219dd..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MechanicalMixerTileEntity.java +++ /dev/null @@ -1,286 +0,0 @@ -package com.simibubi.create.content.contraptions.components.mixer; - -import java.util.List; -import java.util.Optional; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.fluids.FluidFX; -import com.simibubi.create.content.contraptions.fluids.recipe.PotionMixingRecipeManager; -import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity; -import com.simibubi.create.content.contraptions.processing.BasinTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.advancement.ITriggerable; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.item.SmartInventory; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; - -public class MechanicalMixerTileEntity extends BasinOperatingTileEntity { - - private static final Object shapelessOrMixingRecipesKey = new Object(); - - public int runningTicks; - public int processingTicks; - public boolean running; - - public MechanicalMixerTileEntity(TileEntityType type) { - super(type); - } - - public float getRenderedHeadOffset(float partialTicks) { - int localTick; - float offset = 0; - if (running) { - if (runningTicks < 20) { - localTick = runningTicks; - float num = (localTick + partialTicks) / 20f; - num = ((2 - MathHelper.cos((float) (num * Math.PI))) / 2); - offset = num - .5f; - } else if (runningTicks <= 20) { - offset = 1; - } else { - localTick = 40 - runningTicks; - float num = (localTick - partialTicks) / 20f; - num = ((2 - MathHelper.cos((float) (num * Math.PI))) / 2); - offset = num - .5f; - } - } - return offset + 7 / 16f; - } - - public float getRenderedHeadRotationSpeed(float partialTicks) { - float speed = getSpeed(); - if (running) { - if (runningTicks < 15) { - return speed; - } - if (runningTicks <= 20) { - return speed * 2; - } - return speed; - } - return speed / 2; - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - return new AxisAlignedBB(pos).expand(0, -1.5, 0); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - running = compound.getBoolean("Running"); - runningTicks = compound.getInt("Ticks"); - super.fromTag(state, compound, clientPacket); - - if (clientPacket && hasWorld()) - getBasin().ifPresent(bte -> bte.setAreFluidsMoving(running && runningTicks <= 20)); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putBoolean("Running", running); - compound.putInt("Ticks", runningTicks); - super.write(compound, clientPacket); - } - - @Override - public void tick() { - super.tick(); - - if (runningTicks >= 40) { - running = false; - runningTicks = 0; - return; - } - - float speed = Math.abs(getSpeed()); - if (running && world != null) { - if (world.isRemote && runningTicks == 20) - renderParticles(); - - if ((!world.isRemote || isVirtual()) && runningTicks == 20) { - if (processingTicks < 0) { - processingTicks = MathHelper.clamp((MathHelper.log2((int) (512 / speed))) * 15 + 1, 1, 512); - - Optional basin = getBasin(); - if (basin.isPresent()) { - Couple tanks = basin.get() - .getTanks(); - if (!tanks.getFirst() - .isEmpty() - || !tanks.getSecond() - .isEmpty()) - world.playSound(null, pos, SoundEvents.BLOCK_BUBBLE_COLUMN_WHIRLPOOL_AMBIENT, - SoundCategory.BLOCKS, .75f, speed < 65 ? .75f : 1.5f); - } - - } else { - processingTicks--; - if (processingTicks == 0) { - runningTicks++; - processingTicks = -1; - applyBasinRecipe(); - sendData(); - } - } - } - - if (runningTicks != 20) - runningTicks++; - } - } - - public void renderParticles() { - Optional basin = getBasin(); - if (!basin.isPresent() || world == null) - return; - - for (SmartInventory inv : basin.get() - .getInvs()) { - for (int slot = 0; slot < inv.getSlots(); slot++) { - ItemStack stackInSlot = inv.getStackInSlot(slot); - if (stackInSlot.isEmpty()) - continue; - ItemParticleData data = new ItemParticleData(ParticleTypes.ITEM, stackInSlot); - spillParticle(data); - } - } - - for (SmartFluidTankBehaviour behaviour : basin.get() - .getTanks()) { - if (behaviour == null) - continue; - for (TankSegment tankSegment : behaviour.getTanks()) { - if (tankSegment.isEmpty(0)) - continue; - spillParticle(FluidFX.getFluidParticle(tankSegment.getRenderedFluid())); - } - } - } - - protected void spillParticle(IParticleData data) { - float angle = world.rand.nextFloat() * 360; - Vector3d offset = new Vector3d(0, 0, 0.25f); - offset = VecHelper.rotate(offset, angle, Axis.Y); - Vector3d target = VecHelper.rotate(offset, getSpeed() > 0 ? 25 : -25, Axis.Y) - .add(0, .25f, 0); - Vector3d center = offset.add(VecHelper.getCenterOf(pos)); - target = VecHelper.offsetRandomly(target.subtract(offset), world.rand, 1 / 128f); - world.addParticle(data, center.x, center.y - 1.75f, center.z, target.x, target.y, target.z); - } - - @Override - protected List> getMatchingRecipes() { - List> matchingRecipes = super.getMatchingRecipes(); - - Optional basin = getBasin(); - if (!basin.isPresent()) - return matchingRecipes; - IItemHandler availableItems = basin.get() - .getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) - .orElse(null); - if (availableItems == null) - return matchingRecipes; - - for (int i = 0; i < availableItems.getSlots(); i++) { - ItemStack stack = availableItems.getStackInSlot(i); - if (stack.isEmpty()) - continue; - - List list = PotionMixingRecipeManager.ALL.get(stack.getItem()); - if (list == null) - continue; - for (MixingRecipe mixingRecipe : list) - if (matchBasinRecipe(mixingRecipe)) - matchingRecipes.add(mixingRecipe); - } - - return matchingRecipes; - } - - @Override - protected boolean matchStaticFilters(IRecipe r) { - return ((r.getSerializer() == IRecipeSerializer.CRAFTING_SHAPELESS - && AllConfigs.SERVER.recipes.allowShapelessInMixer.get() && r.getIngredients() - .size() > 1) - || r.getType() == AllRecipeTypes.MIXING.type); - } - - @Override - public void startProcessingBasin() { - if (running && runningTicks <= 20) - return; - super.startProcessingBasin(); - running = true; - runningTicks = 0; - } - - @Override - public boolean continueWithPreviousRecipe() { - runningTicks = 20; - return true; - } - - @Override - protected void onBasinRemoved() { - if (!running) - return; - runningTicks = 40; - running = false; - } - - @Override - protected Object getRecipeCacheKey() { - return shapelessOrMixingRecipesKey; - } - - @Override - protected boolean isRunning() { - return running; - } - - @Override - protected Optional getProcessedRecipeTrigger() { - return Optional.of(AllTriggers.MIXER_MIX); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void tickAudio() { - super.tickAudio(); - - // SoundEvents.BLOCK_STONE_BREAK - boolean slow = Math.abs(getSpeed()) < 65; - if (slow && AnimationTickHolder.getTicks() % 2 == 0) - return; - if (runningTicks == 20) - AllSoundEvents.MIXING.playAt(world, pos, .75f, 1, true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java deleted file mode 100644 index 7aac448c8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixerInstance.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.simibubi.create.content.contraptions.components.mixer; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.ShaftlessCogInstance; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.util.Direction; - -public class MixerInstance extends ShaftlessCogInstance implements IDynamicInstance { - - private final RotatingData mixerHead; - private final OrientedData mixerPole; - private final MechanicalMixerTileEntity mixer; - - public MixerInstance(MaterialManager dispatcher, MechanicalMixerTileEntity tile) { - super(dispatcher, tile); - this.mixer = tile; - - mixerHead = getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_MIXER_HEAD, blockState) - .createInstance(); - - mixerHead.setRotationAxis(Direction.Axis.Y); - - mixerPole = getOrientedMaterial() - .getModel(AllBlockPartials.MECHANICAL_MIXER_POLE, blockState) - .createInstance(); - - - float renderedHeadOffset = getRenderedHeadOffset(); - - transformPole(renderedHeadOffset); - transformHead(renderedHeadOffset); - } - - @Override - public void beginFrame() { - - float renderedHeadOffset = getRenderedHeadOffset(); - - transformPole(renderedHeadOffset); - transformHead(renderedHeadOffset); - } - - private void transformHead(float renderedHeadOffset) { - float speed = mixer.getRenderedHeadRotationSpeed(AnimationTickHolder.getPartialTicks()); - - mixerHead.setPosition(getInstancePosition()) - .nudge(0, -renderedHeadOffset, 0) - .setRotationalSpeed(speed * 2); - } - - private void transformPole(float renderedHeadOffset) { - mixerPole.setPosition(getInstancePosition()) - .nudge(0, -renderedHeadOffset, 0); - } - - private float getRenderedHeadOffset() { - return mixer.getRenderedHeadOffset(AnimationTickHolder.getPartialTicks()); - } - - @Override - public void updateLight() { - super.updateLight(); - - relight(pos.down(), mixerHead); - relight(pos, mixerPole); - } - - @Override - public void remove() { - super.remove(); - mixerHead.delete(); - mixerPole.delete(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixingRecipe.java deleted file mode 100644 index 12e1d7b0f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/mixer/MixingRecipe.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simibubi.create.content.contraptions.components.mixer; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.BasinRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -public class MixingRecipe extends BasinRecipe { - - public MixingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.MIXING, params); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorBlock.java deleted file mode 100644 index 7239a505e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorBlock.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.content.contraptions.components.motor; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; - -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; - -public class CreativeMotorBlock extends DirectionalKineticBlock { - - public CreativeMotorBlock(Properties properties) { - super(properties); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.MOTOR_BLOCK.get(state.get(FACING)); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MOTOR.create(); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction preferred = getPreferredFacing(context); - if ((context.getPlayer() != null && context.getPlayer() - .isSneaking()) || preferred == null) - return super.getStateForPlacement(context); - return getDefaultState().with(FACING, preferred); - } - - // IRotate: - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == state.get(FACING); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(FACING) - .getAxis(); - } - - @Override - public boolean hideStressImpact() { - return true; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorGenerator.java deleted file mode 100644 index a26c54d41..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorGenerator.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.content.contraptions.components.motor; - -import com.simibubi.create.foundation.data.AssetLookup; -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraftforge.client.model.generators.ModelFile; - -public class CreativeMotorGenerator extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - return state.get(CreativeMotorBlock.FACING) == Direction.DOWN ? 180 : 0; - } - - @Override - protected int getYRotation(BlockState state) { - return state.get(CreativeMotorBlock.FACING) - .getAxis() - .isVertical() ? 0 : horizontalAngle(state.get(CreativeMotorBlock.FACING)); - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - return state.get(CreativeMotorBlock.FACING) - .getAxis() - .isVertical() ? AssetLookup.partialBaseModel(ctx, prov, "vertical") - : AssetLookup.partialBaseModel(ctx, prov); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorRenderer.java deleted file mode 100644 index 513e0f200..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorRenderer.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simibubi.create.content.contraptions.components.motor; - -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; - -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; - -public class CreativeMotorRenderer extends KineticTileEntityRenderer { - - public CreativeMotorRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java deleted file mode 100644 index 1f0168b87..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/motor/CreativeMotorTileEntity.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.simibubi.create.content.contraptions.components.motor; - -import java.util.List; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour.StepContext; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.tileentity.TileEntityType; - -public class CreativeMotorTileEntity extends GeneratingKineticTileEntity { - - public static final int DEFAULT_SPEED = 16; - protected ScrollValueBehaviour generatedSpeed; - - public CreativeMotorTileEntity(TileEntityType type) { - super(type); - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - Integer max = AllConfigs.SERVER.kinetics.maxMotorSpeed.get(); - - CenteredSideValueBoxTransform slot = new CenteredSideValueBoxTransform( - (motor, side) -> motor.get(CreativeMotorBlock.FACING) == side.getOpposite()); - - generatedSpeed = new ScrollValueBehaviour(Lang.translate("generic.speed"), this, slot); - generatedSpeed.between(-max, max); - generatedSpeed.value = DEFAULT_SPEED; - generatedSpeed.scrollableValue = DEFAULT_SPEED; - generatedSpeed.withUnit(i -> Lang.translate("generic.unit.rpm")); - generatedSpeed.withCallback(i -> this.updateGeneratedRotation()); - generatedSpeed.withStepFunction(CreativeMotorTileEntity::step); - behaviours.add(generatedSpeed); - } - - @Override - public void initialize() { - super.initialize(); - if (!hasSource() || getGeneratedSpeed() > getTheoreticalSpeed()) - updateGeneratedRotation(); - } - - @Override - public float getGeneratedSpeed() { - if (!AllBlocks.CREATIVE_MOTOR.has(getBlockState())) - return 0; - return convertToDirection(generatedSpeed.getValue(), getBlockState().get(CreativeMotorBlock.FACING)); - } - - public static int step(StepContext context) { - int current = context.currentValue; - int step = 1; - - if (!context.shift) { - int magnitude = Math.abs(current) - (context.forward == current > 0 ? 0 : 1); - - if (magnitude >= 4) - step *= 4; - if (magnitude >= 32) - step *= 4; - if (magnitude >= 128) - step *= 4; - } - - return (int) (current + (context.forward ? step : -step) == 0 ? step + 1 : step); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java deleted file mode 100644 index 3bc960959..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/BeltPressingCallbacks.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.simibubi.create.content.contraptions.components.press; - -import static com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult.HOLD; -import static com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult.PASS; - -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity.Mode; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; - -import net.minecraftforge.items.ItemHandlerHelper; - -public class BeltPressingCallbacks { - - static ProcessingResult onItemReceived(TransportedItemStack transported, - TransportedItemStackHandlerBehaviour handler, MechanicalPressTileEntity press) { - if (press.getSpeed() == 0) - return PASS; - if (press.running) - return HOLD; - if (!press.getRecipe(transported.stack) - .isPresent()) - return PASS; - - press.start(Mode.BELT); - return HOLD; - } - - static ProcessingResult whenItemHeld(TransportedItemStack transported, TransportedItemStackHandlerBehaviour handler, - MechanicalPressTileEntity pressTe) { - - if (pressTe.getSpeed() == 0) - return PASS; - if (!pressTe.running) - return PASS; - if (pressTe.runningTicks != MechanicalPressTileEntity.CYCLE / 2) - return HOLD; - - Optional recipe = pressTe.getRecipe(transported.stack); - pressTe.pressedItems.clear(); - pressTe.pressedItems.add(transported.stack); - - if (!recipe.isPresent()) - return PASS; - - boolean bulk = MechanicalPressTileEntity.canProcessInBulk() || transported.stack.getCount() == 1; - - List collect = InWorldProcessing - .applyRecipeOn(bulk ? transported.stack : ItemHandlerHelper.copyStackWithSize(transported.stack, 1), - recipe.get()) - .stream() - .map(stack -> { - TransportedItemStack copy = transported.copy(); - boolean centered = BeltHelper.isItemUpright(stack); - copy.stack = stack; - copy.locked = true; - copy.angle = centered ? 180 : Create.RANDOM.nextInt(360); - return copy; - }) - .collect(Collectors.toList()); - - if (bulk) { - if (collect.isEmpty()) - handler.handleProcessingOnItem(transported, TransportedResult.removeItem()); - else - handler.handleProcessingOnItem(transported, TransportedResult.convertTo(collect)); - - } else { - TransportedItemStack left = transported.copy(); - left.stack.shrink(1); - - if (collect.isEmpty()) - handler.handleProcessingOnItem(transported, TransportedResult.convertTo(left)); - else - handler.handleProcessingOnItem(transported, TransportedResult.convertToAndLeaveHeld(collect, left)); - } - - pressTe.sendData(); - return HOLD; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressBlock.java deleted file mode 100644 index 8de328a78..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressBlock.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.simibubi.create.content.contraptions.components.press; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; - -public class MechanicalPressBlock extends HorizontalKineticBlock implements ITE { - - public MechanicalPressBlock(Properties properties) { - super(properties); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - if (context.getEntity() instanceof PlayerEntity) - return AllShapes.CASING_14PX.get(Direction.DOWN); - return AllShapes.MECHANICAL_PROCESSOR_SHAPE; - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - return !AllBlocks.BASIN.has(worldIn.getBlockState(pos.down())); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MECHANICAL_PRESS.create(); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction prefferedSide = getPreferredHorizontalFacing(context); - if (prefferedSide != null) - return getDefaultState().with(HORIZONTAL_FACING, prefferedSide); - return super.getStateForPlacement(context); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(HORIZONTAL_FACING) - .getAxis(); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(HORIZONTAL_FACING) - .getAxis(); - } - - @Override - public Class getTileEntityClass() { - return MechanicalPressTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java deleted file mode 100644 index 2b31d4afc..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressRenderer.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.content.contraptions.components.press; - -import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.math.BlockPos; - -public class MechanicalPressRenderer extends KineticTileEntityRenderer { - - public MechanicalPressRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - public boolean isGlobalRenderer(KineticTileEntity te) { - return true; - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - BlockPos pos = te.getPos(); - BlockState blockState = te.getBlockState(); - int packedLightmapCoords = WorldRenderer.getLightmapCoordinates(te.getWorld(), blockState, pos); - float renderedHeadOffset = ((MechanicalPressTileEntity) te).getRenderedHeadOffset(partialTicks); - - SuperByteBuffer headRender = PartialBufferer.getFacing(AllBlockPartials.MECHANICAL_PRESS_HEAD, blockState, blockState.get(HORIZONTAL_FACING)); - headRender.translate(0, -renderedHeadOffset, 0) - .light(packedLightmapCoords) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - - @Override - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return shaft(getRotationAxisOf(te)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java deleted file mode 100644 index f87ef8786..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/MechanicalPressTileEntity.java +++ /dev/null @@ -1,387 +0,0 @@ -package com.simibubi.create.content.contraptions.components.press; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.processing.BasinOperatingTileEntity; -import com.simibubi.create.content.contraptions.processing.BasinTileEntity; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.advancement.ITriggerable; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.item.SmartInventory; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.SoundType; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.ICraftingRecipe; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class MechanicalPressTileEntity extends BasinOperatingTileEntity { - - private static final Object compressingRecipesKey = new Object(); - public List pressedItems = new ArrayList<>(); - public BeltProcessingBehaviour processingBehaviour; - - public int prevRunningTicks; - public int runningTicks; - static final int CYCLE = 240; - static final int ENTITY_SCAN = 10; - int entityScanCooldown; - - public boolean running; - public Mode mode; - public boolean finished; - - public MechanicalPressTileEntity(TileEntityType type) { - super(type); - mode = Mode.WORLD; - entityScanCooldown = ENTITY_SCAN; - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - processingBehaviour = - new BeltProcessingBehaviour(this).whenItemEnters((s, i) -> BeltPressingCallbacks.onItemReceived(s, i, this)) - .whileItemHeld((s, i) -> BeltPressingCallbacks.whenItemHeld(s, i, this)); - behaviours.add(processingBehaviour); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - running = compound.getBoolean("Running"); - mode = Mode.values()[compound.getInt("Mode")]; - finished = compound.getBoolean("Finished"); - prevRunningTicks = runningTicks = compound.getInt("Ticks"); - super.fromTag(state, compound, clientPacket); - - if (clientPacket) { - NBTHelper.iterateCompoundList(compound.getList("ParticleItems", NBT.TAG_COMPOUND), - c -> pressedItems.add(ItemStack.read(c))); - spawnParticles(); - } - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putBoolean("Running", running); - compound.putInt("Mode", mode.ordinal()); - compound.putBoolean("Finished", finished); - compound.putInt("Ticks", runningTicks); - super.write(compound, clientPacket); - - if (clientPacket) { - compound.put("ParticleItems", NBTHelper.writeCompoundList(pressedItems, ItemStack::serializeNBT)); - pressedItems.clear(); - } - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - return new AxisAlignedBB(pos).expand(0, -1.5, 0) - .expand(0, 1, 0); - } - - public float getRenderedHeadOffset(float partialTicks) { - if (!running) - return 0; - int runningTicks = Math.abs(this.runningTicks); - float ticks = MathHelper.lerp(partialTicks, prevRunningTicks, runningTicks); - if (runningTicks < (CYCLE * 2) / 3) - return (float) MathHelper.clamp(Math.pow(ticks / CYCLE * 2, 3), 0, 1) * mode.headOffset; - return MathHelper.clamp((CYCLE - ticks) / CYCLE * 3, 0, 1) * mode.headOffset; - } - - public void start(Mode mode) { - this.mode = mode; - running = true; - prevRunningTicks = 0; - runningTicks = 0; - pressedItems.clear(); - sendData(); - } - - public boolean inWorld() { - return mode == Mode.WORLD; - } - - public boolean onBasin() { - return mode == Mode.BASIN; - } - - @Override - public void tick() { - super.tick(); - - if (!running || world == null) { - if (hasWorld() && !world.isRemote) { - - if (getSpeed() == 0) - return; - if (entityScanCooldown > 0) - entityScanCooldown--; - if (entityScanCooldown <= 0) { - entityScanCooldown = ENTITY_SCAN; - if (TileEntityBehaviour.get(world, pos.down(2), TransportedItemStackHandlerBehaviour.TYPE) != null) - return; - if (AllBlocks.BASIN.has(world.getBlockState(pos.down(2)))) - return; - - for (ItemEntity itemEntity : world.getEntitiesWithinAABB(ItemEntity.class, - new AxisAlignedBB(pos.down()).shrink(.125f))) { - if (!itemEntity.isAlive() || !itemEntity.isOnGround()) - continue; - ItemStack stack = itemEntity.getItem(); - Optional recipe = getRecipe(stack); - if (!recipe.isPresent()) - continue; - start(Mode.WORLD); - return; - } - } - - } - return; - } - - if (world.isRemote && runningTicks == -CYCLE / 2) { - prevRunningTicks = CYCLE / 2; - return; - } - - if (runningTicks == CYCLE / 2 && getSpeed() != 0) { - if (inWorld()) - applyPressingInWorld(); - if (onBasin()) - applyCompactingOnBasin(); - - if (world.getBlockState(pos.down(2)).getSoundType() == SoundType.CLOTH) - AllSoundEvents.MECHANICAL_PRESS_ACTIVATION_ON_BELT.playOnServer(world, pos); - else - AllSoundEvents.MECHANICAL_PRESS_ACTIVATION.playOnServer(world, pos, .5f, .75f + (Math.abs(getSpeed()) / 1024f)); - - if (!world.isRemote) - sendData(); - } - - if (!world.isRemote && runningTicks > CYCLE) { - finished = true; - running = false; - - if (onBasin() && matchBasinRecipe(currentRecipe)) - startProcessingBasin(); - - pressedItems.clear(); - sendData(); - return; - } - - prevRunningTicks = runningTicks; - runningTicks += getRunningTickSpeed(); - if (prevRunningTicks < CYCLE / 2 && runningTicks >= CYCLE / 2) { - runningTicks = CYCLE / 2; - // Pause the ticks until a packet is received - if (world.isRemote && !isVirtual()) - runningTicks = -(CYCLE / 2); - } - } - - protected void applyCompactingOnBasin() { - if (world.isRemote) - return; - pressedItems.clear(); - applyBasinRecipe(); - Optional basin = getBasin(); - SmartInventory inputs = basin.get() - .getInputInventory(); - if (basin.isPresent()) { - for (int slot = 0; slot < inputs.getSlots(); slot++) { - ItemStack stackInSlot = inputs.getStackInSlot(slot); - if (stackInSlot.isEmpty()) - continue; - pressedItems.add(stackInSlot); - } - } - sendData(); - } - - protected void applyPressingInWorld() { - AxisAlignedBB bb = new AxisAlignedBB(pos.down(1)); - boolean bulk = canProcessInBulk(); - pressedItems.clear(); - if (world.isRemote) - return; - for (Entity entity : world.getEntitiesWithinAABBExcludingEntity(null, bb)) { - if (!(entity instanceof ItemEntity)) - continue; - if (!entity.isAlive() || !entity.isOnGround()) - continue; - ItemEntity itemEntity = (ItemEntity) entity; - ItemStack item = itemEntity.getItem(); - pressedItems.add(item); - sendData(); - Optional recipe = getRecipe(item); - if (!recipe.isPresent()) - continue; - - if (bulk || item.getCount() == 1) { - InWorldProcessing.applyRecipeOn(itemEntity, recipe.get()); - } else { - for (ItemStack result : InWorldProcessing.applyRecipeOn(ItemHandlerHelper.copyStackWithSize(item, 1), - recipe.get())) { - ItemEntity created = - new ItemEntity(world, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), result); - created.setDefaultPickupDelay(); - created.setMotion(VecHelper.offsetRandomly(Vector3d.ZERO, Create.RANDOM, .05f)); - world.addEntity(created); - } - item.shrink(1); - } - - AllTriggers.triggerForNearbyPlayers(AllTriggers.BONK, world, pos, 4); - entityScanCooldown = 0; - - if (!bulk) - break; - } - } - - public static boolean canProcessInBulk() { - return AllConfigs.SERVER.recipes.bulkPressing.get(); - } - - public int getRunningTickSpeed() { - if (getSpeed() == 0) - return 0; - return (int) MathHelper.lerp(MathHelper.clamp(Math.abs(getSpeed()) / 512f, 0, 1), 1, 60); - } - - protected void spawnParticles() { - if (pressedItems.isEmpty()) - return; - - if (mode == Mode.BASIN) - pressedItems.forEach(stack -> makeCompactingParticleEffect(VecHelper.getCenterOf(pos.down(2)), stack)); - if (mode == Mode.BELT) - pressedItems.forEach(stack -> makePressingParticleEffect(VecHelper.getCenterOf(pos.down(2)) - .add(0, 8 / 16f, 0), stack)); - if (mode == Mode.WORLD) - pressedItems.forEach(stack -> makePressingParticleEffect(VecHelper.getCenterOf(pos.down(1)) - .add(0, -1 / 4f, 0), stack)); - - pressedItems.clear(); - } - - public void makePressingParticleEffect(Vector3d pos, ItemStack stack) { - if (world == null || !world.isRemote) - return; - for (int i = 0; i < 20; i++) { - Vector3d motion = VecHelper.offsetRandomly(Vector3d.ZERO, world.rand, .125f) - .mul(1, 0, 1); - world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), pos.x, pos.y - .25f, pos.z, motion.x, - motion.y + .125f, motion.z); - } - } - - public void makeCompactingParticleEffect(Vector3d pos, ItemStack stack) { - if (world == null || !world.isRemote) - return; - for (int i = 0; i < 20; i++) { - Vector3d motion = VecHelper.offsetRandomly(Vector3d.ZERO, world.rand, .175f) - .mul(1, 0, 1); - world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), pos.x, pos.y, pos.z, motion.x, - motion.y + .25f, motion.z); - } - } - - private static final RecipeWrapper pressingInv = new RecipeWrapper(new ItemStackHandler(1)); - - public Optional getRecipe(ItemStack item) { - pressingInv.setInventorySlotContents(0, item); - return AllRecipeTypes.PRESSING.find(pressingInv, world); - } - - public static boolean canCompress(NonNullList ingredients) { - return AllConfigs.SERVER.recipes.allowShapedSquareInPress.get() - && (ingredients.size() == 4 || ingredients.size() == 9) && ItemHelper.condenseIngredients(ingredients) - .size() == 1; - } - - @Override - protected boolean matchStaticFilters(IRecipe recipe) { - return (recipe instanceof ICraftingRecipe && canCompress(recipe.getIngredients())) - || recipe.getType() == AllRecipeTypes.COMPACTING.type; - } - - @Override - protected Object getRecipeCacheKey() { - return compressingRecipesKey; - } - - @Override - public void startProcessingBasin() { - if (running && runningTicks <= CYCLE / 2) - return; - super.startProcessingBasin(); - start(Mode.BASIN); - } - - @Override - protected void onBasinRemoved() { - pressedItems.clear(); - running = false; - runningTicks = 0; - sendData(); - } - - @Override - protected boolean isRunning() { - return running; - } - - @Override - protected Optional getProcessedRecipeTrigger() { - return Optional.of(AllTriggers.PRESS_COMPACT); - } - - public enum Mode { - WORLD(1), BELT(19f / 16f), BASIN(22f / 16f) - - ; - - float headOffset; - - Mode(float headOffset) { - this.headOffset = headOffset; - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java deleted file mode 100644 index 866fd4fa3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressInstance.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.content.contraptions.components.press; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3f; - -public class PressInstance extends ShaftInstance implements IDynamicInstance { - - private final OrientedData pressHead; - private final MechanicalPressTileEntity press; - - public PressInstance(MaterialManager dispatcher, MechanicalPressTileEntity tile) { - super(dispatcher, tile); - press = tile; - - pressHead = dispatcher.getOrientedMaterial() - .getModel(AllBlockPartials.MECHANICAL_PRESS_HEAD, blockState) - .createInstance(); - - Quaternion q = Vector3f.POSITIVE_Y.getDegreesQuaternion(AngleHelper.horizontalAngle(blockState.get(MechanicalPressBlock.HORIZONTAL_FACING))); - - pressHead.setRotation(q); - - transformModels(); - } - - @Override - public void beginFrame() { - if (!press.running) - return; - - transformModels(); - } - - private void transformModels() { - float renderedHeadOffset = getRenderedHeadOffset(press); - - pressHead.setPosition(getInstancePosition()) - .nudge(0, -renderedHeadOffset, 0); - } - - private float getRenderedHeadOffset(MechanicalPressTileEntity press) { - return press.getRenderedHeadOffset(AnimationTickHolder.getPartialTicks()); - } - - @Override - public void updateLight() { - super.updateLight(); - - relight(pos, pressHead); - } - - @Override - public void remove() { - super.remove(); - pressHead.delete(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/press/PressingRecipe.java deleted file mode 100644 index 481acc8e0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/press/PressingRecipe.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.content.contraptions.components.press; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraft.world.World; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -@ParametersAreNonnullByDefault -public class PressingRecipe extends ProcessingRecipe { - - public PressingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.PRESSING, params); - } - - @Override - public boolean matches(RecipeWrapper inv, World worldIn) { - if (inv.isEmpty()) - return false; - return ingredients.get(0) - .test(inv.getStackInSlot(0)); - } - - @Override - protected int getMaxInputCount() { - return 1; - } - - @Override - protected int getMaxOutputCount() { - return 2; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/CuttingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/CuttingRecipe.java deleted file mode 100644 index bb76d1cab..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/CuttingRecipe.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.simibubi.create.content.contraptions.components.saw; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraft.world.World; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -@ParametersAreNonnullByDefault -public class CuttingRecipe extends ProcessingRecipe { - - public CuttingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.CUTTING, params); - } - - @Override - public boolean matches(RecipeWrapper inv, World worldIn) { - if (inv.isEmpty()) - return false; - return ingredients.get(0) - .test(inv.getStackInSlot(0)); - } - - @Override - protected int getMaxInputCount() { - return 1; - } - - @Override - protected int getMaxOutputCount() { - return 4; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawBlock.java deleted file mode 100644 index a4458acd7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawBlock.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.simibubi.create.content.contraptions.components.saw; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.components.actors.DrillBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class SawBlock extends DirectionalAxisKineticBlock implements ITE { - public static DamageSource damageSourceSaw = new DamageSource("create.mechanical_saw").setDamageBypassesArmor(); - - public SawBlock(Properties properties) { - super(properties); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockState stateForPlacement = super.getStateForPlacement(context); - Direction facing = stateForPlacement.get(FACING); - if (facing.getAxis().isVertical()) - return stateForPlacement; - return stateForPlacement.with(AXIS_ALONG_FIRST_COORDINATE, facing.getAxis() == Axis.X); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.SAW.create(); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.CASING_12PX.get(state.get(FACING)); - } - - @Override - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { - if (entityIn instanceof ItemEntity) - return; - if (!new AxisAlignedBB(pos).shrink(.1f).intersects(entityIn.getBoundingBox())) - return; - withTileEntityDo(worldIn, pos, te -> { - if (te.getSpeed() == 0) - return; - entityIn.attackEntityFrom(damageSourceSaw, (float) DrillBlock.getDamage(te.getSpeed())); - }); - } - - @Override - public void onLanded(IBlockReader worldIn, Entity entityIn) { - super.onLanded(worldIn, entityIn); - if (!(entityIn instanceof ItemEntity)) - return; - if (entityIn.world.isRemote) - return; - - BlockPos pos = entityIn.getBlockPos(); - withTileEntityDo(entityIn.world, pos, te -> { - if (te.getSpeed() == 0) - return; - te.insertItem((ItemEntity) entityIn); - }); - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } - - public static boolean isHorizontal(BlockState state) { - return state.get(FACING).getAxis().isHorizontal(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return isHorizontal(state) ? state.get(FACING).getAxis() : super.getRotationAxis(state); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return isHorizontal(state) ? face == state.get(FACING).getOpposite() - : super.hasShaftTowards(world, pos, state, face); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.hasTileEntity() || state.getBlock() == newState.getBlock()) - return; - - withTileEntityDo(worldIn, pos, te -> ItemHelper.dropContents(worldIn, pos, te.inventory)); - TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE); - worldIn.removeTileEntity(pos); - } - - @Override - public Class getTileEntityClass() { - return SawTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawFilterSlot.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawFilterSlot.java deleted file mode 100644 index a9c13fa6c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawFilterSlot.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.simibubi.create.content.contraptions.components.saw; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; - -public class SawFilterSlot extends ValueBoxTransform { - - @Override - protected Vector3d getLocalOffset(BlockState state) { - if (state.get(SawBlock.FACING) != Direction.UP) - return null; - Vector3d x = VecHelper.voxelSpace(8f, 12.5f, 12.25f); - Vector3d z = VecHelper.voxelSpace(12.25f, 12.5f, 8f); - return state.get(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? z : x; - } - - @Override - protected void rotate(BlockState state, MatrixStack ms) { - int yRot = state.get(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 270 : 180; - MatrixStacker.of(ms) - .rotateY(yRot) - .rotateX(90); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawGenerator.java deleted file mode 100644 index 3883a3787..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawGenerator.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.simibubi.create.content.contraptions.components.saw; - -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraftforge.client.model.generators.ModelFile; - -public class SawGenerator extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - return state.get(SawBlock.FACING) == Direction.DOWN ? 180 : 0; - } - - @Override - protected int getYRotation(BlockState state) { - Direction facing = state.get(SawBlock.FACING); - boolean axisAlongFirst = state.get(SawBlock.AXIS_ALONG_FIRST_COORDINATE); - if (facing.getAxis() - .isVertical()) - return axisAlongFirst ? 90 : 0; - return horizontalAngle(facing); - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - String path = "block/" + ctx.getName() + "/"; - String orientation = state.get(SawBlock.FACING) - .getAxis() - .isVertical() ? "vertical" : "horizontal"; - - return prov.models() - .getExistingFile(prov.modLoc(path + orientation)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java deleted file mode 100644 index 287e1b80f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawInstance.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.content.contraptions.components.saw; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Rotation; - -public class SawInstance extends SingleRotatingInstance { - - public SawInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Instancer getModel() { - if (blockState.get(FACING).getAxis().isHorizontal()) { - BlockState referenceState = blockState.rotate(tile.getWorld(), tile.getPos(), Rotation.CLOCKWISE_180); - Direction facing = referenceState.get(FACING); - return getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, referenceState, facing); - } else { - return getRotatingMaterial().getModel(shaft()); - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java deleted file mode 100644 index 7d4532965..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawRenderer.java +++ /dev/null @@ -1,207 +0,0 @@ -package com.simibubi.create.content.contraptions.components.saw; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; - -public class SawRenderer extends SafeTileEntityRenderer { - - public SawRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(SawTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light, - int overlay) { - renderBlade(te, ms, buffer, light); - renderItems(te, partialTicks, ms, buffer, light, overlay); - FilteringRenderer.renderOnTileEntity(te, partialTicks, ms, buffer, light, overlay); - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - renderShaft(te, ms, buffer, light, overlay); - } - - protected void renderBlade(SawTileEntity te, MatrixStack ms, IRenderTypeBuffer buffer, int light) { - BlockState blockState = te.getBlockState(); - PartialModel partial; - float speed = te.getSpeed(); - boolean rotate = false; - - if (SawBlock.isHorizontal(blockState)) { - if (speed > 0) { - partial = AllBlockPartials.SAW_BLADE_HORIZONTAL_ACTIVE; - } else if (speed < 0) { - partial = AllBlockPartials.SAW_BLADE_HORIZONTAL_REVERSED; - } else { - partial = AllBlockPartials.SAW_BLADE_HORIZONTAL_INACTIVE; - } - } else { - if (te.getSpeed() > 0) { - partial = AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE; - } else if (speed < 0) { - partial = AllBlockPartials.SAW_BLADE_VERTICAL_REVERSED; - } else { - partial = AllBlockPartials.SAW_BLADE_VERTICAL_INACTIVE; - } - - if (!blockState.get(SawBlock.AXIS_ALONG_FIRST_COORDINATE)) - rotate = true; - } - - SuperByteBuffer superBuffer = PartialBufferer.getFacing(partial, blockState); - if (rotate) { - superBuffer.rotateCentered(Direction.UP, AngleHelper.rad(90)); - } - superBuffer - .color(0xFFFFFF) - .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getCutoutMipped())); - } - - protected void renderShaft(SawTileEntity te, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - KineticTileEntityRenderer.renderRotatingBuffer(te, getRotatedModel(te), ms, - buffer.getBuffer(RenderType.getSolid()), light); - } - - protected void renderItems(SawTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - boolean processingMode = te.getBlockState() - .get(SawBlock.FACING) == Direction.UP; - if (processingMode && !te.inventory.isEmpty()) { - boolean alongZ = !te.getBlockState() - .get(SawBlock.AXIS_ALONG_FIRST_COORDINATE); - ms.push(); - - boolean moving = te.inventory.recipeDuration != 0; - float offset = moving ? (float) (te.inventory.remainingTime) / te.inventory.recipeDuration : 0; - float processingSpeed = MathHelper.clamp(Math.abs(te.getSpeed()) / 32, 1, 128); - if (moving) - offset = MathHelper.clamp(offset + ((-partialTicks + .5f) * processingSpeed) / te.inventory.recipeDuration, 0, 1); - - if (te.getSpeed() == 0) - offset = .5f; - if (te.getSpeed() < 0 ^ alongZ) - offset = 1 - offset; - - for (int i = 0; i < te.inventory.getSlots(); i++) { - ItemStack stack = te.inventory.getStackInSlot(i); - if (stack.isEmpty()) - continue; - - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); - IBakedModel modelWithOverrides = itemRenderer.getItemModelWithOverrides(stack, te.getWorld(), null); - boolean blockItem = modelWithOverrides.isGui3d(); - - ms.translate(alongZ ? offset : .5, blockItem ? .925f : 13f / 16f, alongZ ? .5 : offset); - - ms.scale(.5f, .5f, .5f); - if (alongZ) - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(90)); - ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(90)); - itemRenderer.renderItem(stack, ItemCameraTransforms.TransformType.FIXED, light, overlay, ms, buffer); - break; - } - - ms.pop(); - } - } - - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - BlockState state = te.getBlockState(); - if (state.get(FACING).getAxis().isHorizontal()) - return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, state.rotate(te.getWorld(), te.getPos(), Rotation.CLOCKWISE_180)); - return CreateClient.BUFFER_CACHE.renderBlockIn(KineticTileEntityRenderer.KINETIC_TILE, - getRenderedBlockState(te)); - } - - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return KineticTileEntityRenderer.shaft(KineticTileEntityRenderer.getRotationAxisOf(te)); - } - - public static void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - BlockState state = context.state; - Direction facing = state.get(SawBlock.FACING); - - Vector3d facingVec = Vector3d.of(context.state.get(SawBlock.FACING) - .getDirectionVec()); - facingVec = context.rotation.apply(facingVec); - - Direction closestToFacing = Direction.getFacingFromVector(facingVec.x, facingVec.y, facingVec.z); - - boolean horizontal = closestToFacing.getAxis() - .isHorizontal(); - boolean backwards = VecHelper.isVecPointingTowards(context.relativeMotion, facing.getOpposite()); - boolean moving = context.getAnimationSpeed() != 0; - boolean shouldAnimate = - (context.contraption.stalled && horizontal) || (!context.contraption.stalled && !backwards && moving); - - SuperByteBuffer superBuffer; - if (SawBlock.isHorizontal(state)) { - if (shouldAnimate) - superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_HORIZONTAL_ACTIVE, state); - else - superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_HORIZONTAL_INACTIVE, state); - } else { - if (shouldAnimate) - superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_VERTICAL_ACTIVE, state); - else - superBuffer = PartialBufferer.get(AllBlockPartials.SAW_BLADE_VERTICAL_INACTIVE, state); - } - - MatrixStack m = matrices.contraptionStack; - m.push(); - MatrixStacker.of(m) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing)); - if (!SawBlock.isHorizontal(state)) - MatrixStacker.of(m) - .rotateZ(state.get(SawBlock.AXIS_ALONG_FIRST_COORDINATE) ? 0 : 90); - MatrixStacker.of(m) - .unCentre(); - - superBuffer - .transform(m) - .light(matrices.entityMatrix, - ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) - .renderInto(matrices.entityStack, buffer.getBuffer(RenderType.getCutoutMipped())); - - m.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java deleted file mode 100644 index e1188703e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/saw/SawTileEntity.java +++ /dev/null @@ -1,463 +0,0 @@ -package com.simibubi.create.content.contraptions.components.saw; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Random; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.AllTags; -import com.simibubi.create.content.contraptions.components.actors.BlockBreakingKineticTileEntity; -import com.simibubi.create.content.contraptions.processing.ProcessingInventory; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.sound.SoundScapes; -import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.TreeCutter; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.recipe.RecipeConditions; -import com.simibubi.create.foundation.utility.recipe.RecipeFinder; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BambooBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.CactusBlock; -import net.minecraft.block.ChorusPlantBlock; -import net.minecraft.block.KelpBlock; -import net.minecraft.block.KelpTopBlock; -import net.minecraft.block.SoundType; -import net.minecraft.block.StemGrownBlock; -import net.minecraft.block.SugarCaneBlock; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.StonecuttingRecipe; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tags.BlockTags; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.LazyValue; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.registry.Registry; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class SawTileEntity extends BlockBreakingKineticTileEntity { - - private static final Object cuttingRecipesKey = new Object(); - public static final LazyValue> woodcuttingRecipeType = - new LazyValue<>(() -> Registry.RECIPE_TYPE.getOrDefault(new ResourceLocation("druidcraft", "woodcutting"))); - - public ProcessingInventory inventory; - private int recipeIndex; - private final LazyOptional invProvider; - private FilteringBehaviour filtering; - private boolean processingStarted; - - public SawTileEntity(TileEntityType type) { - super(type); - inventory = new ProcessingInventory(this::start); - inventory.remainingTime = -1; - recipeIndex = 0; - invProvider = LazyOptional.of(() -> inventory); - processingStarted = false; - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - filtering = new FilteringBehaviour(this, new SawFilterSlot()).forRecipes(); - behaviours.add(filtering); - behaviours.add(new DirectBeltInputBehaviour(this).allowingBeltFunnelsWhen(this::canProcess)); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.put("Inventory", inventory.serializeNBT()); - compound.putInt("RecipeIndex", recipeIndex); - super.write(compound, clientPacket); - - if (!clientPacket || !processingStarted) - return; - processingStarted = false; - NBTHelper.putMarker(compound, "ProcessingStarted"); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - inventory.deserializeNBT(compound.getCompound("Inventory")); - recipeIndex = compound.getInt("RecipeIndex"); - if (compound.contains("ProcessingStarted")) - processingStarted = true; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void tickAudio() { - super.tickAudio(); - if (getSpeed() == 0) - return; - - SoundScapes.play(AmbienceGroup.SAW, pos, 1); - - ItemStack stackInSlot = inventory.getStackInSlot(0); - if (stackInSlot.isEmpty()) - return; - - boolean isWood = false; - Item item = stackInSlot.getItem(); - if (item instanceof BlockItem) { - Block block = ((BlockItem) item).getBlock(); - isWood = block.getSoundType(block.getDefaultState(), world, pos, null) == SoundType.WOOD; - } - - if (processingStarted) { - processingStarted = false; - if (!isWood) - AllSoundEvents.SAW_ACTIVATE_STONE.playAt(world, pos, 1, 1, true); - else - AllSoundEvents.SAW_ACTIVATE_WOOD.playAt(world, pos, 1, 1, true); - return; - } - - AllSoundEvents.SAW_PROCESS.playAt(world, pos, 1, 1, true); - } - - @Override - public void tick() { - if (shouldRun() && ticksUntilNextProgress < 0) - destroyNextTick(); - super.tick(); - - if (!canProcess()) - return; - if (getSpeed() == 0) - return; - if (inventory.remainingTime == -1) { - if (!inventory.isEmpty() && !inventory.appliedRecipe) - start(inventory.getStackInSlot(0)); - return; - } - - float processingSpeed = MathHelper.clamp(Math.abs(getSpeed()) / 32, 1, 128); - inventory.remainingTime -= processingSpeed; - - if (inventory.remainingTime > 0) - spawnParticles(inventory.getStackInSlot(0)); - - if (inventory.remainingTime < 20 && !inventory.appliedRecipe) { - applyRecipe(); - inventory.appliedRecipe = true; - sendData(); - return; - } - - Vector3d itemMovement = getItemMovementVec(); - Direction itemMovementFacing = Direction.getFacingFromVector(itemMovement.x, itemMovement.y, itemMovement.z); - if (inventory.remainingTime > 0) - return; - inventory.remainingTime = 0; - - for (int slot = 0; slot < inventory.getSlots(); slot++) { - ItemStack stack = inventory.getStackInSlot(slot); - if (stack.isEmpty()) - continue; - ItemStack tryExportingToBeltFunnel = getBehaviour(DirectBeltInputBehaviour.TYPE) - .tryExportingToBeltFunnel(stack, itemMovementFacing.getOpposite(), false); - if (tryExportingToBeltFunnel != null) { - if (tryExportingToBeltFunnel.getCount() != stack.getCount()) { - inventory.setStackInSlot(slot, tryExportingToBeltFunnel); - notifyUpdate(); - return; - } - if (!tryExportingToBeltFunnel.isEmpty()) - return; - } - } - - BlockPos nextPos = pos.add(itemMovement.x, itemMovement.y, itemMovement.z); - DirectBeltInputBehaviour behaviour = TileEntityBehaviour.get(world, nextPos, DirectBeltInputBehaviour.TYPE); - if (behaviour != null) { - boolean changed = false; - if (!behaviour.canInsertFromSide(itemMovementFacing)) - return; - for (int slot = 0; slot < inventory.getSlots(); slot++) { - ItemStack stack = inventory.getStackInSlot(slot); - if (stack.isEmpty()) - continue; - ItemStack remainder = behaviour.handleInsertion(stack, itemMovementFacing, false); - if (remainder.equals(stack, false)) - continue; - inventory.setStackInSlot(slot, remainder); - changed = true; - } - if (changed) { - markDirty(); - sendData(); - } - return; - } - - // Eject Items - Vector3d outPos = VecHelper.getCenterOf(pos) - .add(itemMovement.scale(.5f) - .add(0, .5, 0)); - Vector3d outMotion = itemMovement.scale(.0625) - .add(0, .125, 0); - for (int slot = 0; slot < inventory.getSlots(); slot++) { - ItemStack stack = inventory.getStackInSlot(slot); - if (stack.isEmpty()) - continue; - ItemEntity entityIn = new ItemEntity(world, outPos.x, outPos.y, outPos.z, stack); - entityIn.setMotion(outMotion); - world.addEntity(entityIn); - } - inventory.clear(); - world.updateComparatorOutputLevel(pos, getBlockState().getBlock()); - inventory.remainingTime = -1; - sendData(); - } - - @Override - public void remove() { - invProvider.invalidate(); - super.remove(); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY && side != Direction.DOWN) - return invProvider.cast(); - return super.getCapability(cap, side); - } - - protected void spawnParticles(ItemStack stack) { - if (stack == null || stack.isEmpty()) - return; - - IParticleData particleData = null; - float speed = 1; - if (stack.getItem() instanceof BlockItem) - particleData = new BlockParticleData(ParticleTypes.BLOCK, ((BlockItem) stack.getItem()).getBlock() - .getDefaultState()); - else { - particleData = new ItemParticleData(ParticleTypes.ITEM, stack); - speed = .125f; - } - - Random r = world.rand; - Vector3d vec = getItemMovementVec(); - Vector3d pos = VecHelper.getCenterOf(this.pos); - float offset = inventory.recipeDuration != 0 ? (float) (inventory.remainingTime) / inventory.recipeDuration : 0; - offset -= .5f; - world.addParticle(particleData, pos.getX() + -vec.x * offset, pos.getY() + .45f, pos.getZ() + -vec.z * offset, - -vec.x * speed, r.nextFloat() * speed, -vec.z * speed); - } - - public Vector3d getItemMovementVec() { - boolean alongX = !getBlockState().get(SawBlock.AXIS_ALONG_FIRST_COORDINATE); - int offset = getSpeed() < 0 ? -1 : 1; - return new Vector3d(offset * (alongX ? 1 : 0), 0, offset * (alongX ? 0 : -1)); - } - - private void applyRecipe() { - List> recipes = getRecipes(); - if (recipes.isEmpty()) - return; - if (recipeIndex >= recipes.size()) - recipeIndex = 0; - - IRecipe recipe = recipes.get(recipeIndex); - - int rolls = inventory.getStackInSlot(0) - .getCount(); - inventory.clear(); - - List list = new ArrayList<>(); - for (int roll = 0; roll < rolls; roll++) { - List results = new LinkedList(); - if (recipe instanceof CuttingRecipe) - results = ((CuttingRecipe) recipe).rollResults(); - else if (recipe instanceof StonecuttingRecipe || recipe.getType() == woodcuttingRecipeType.getValue()) - results.add(recipe.getRecipeOutput() - .copy()); - - for (int i = 0; i < results.size(); i++) { - ItemStack stack = results.get(i); - ItemHelper.addToList(stack, list); - } - } - for (int slot = 0; slot < list.size() && slot + 1 < inventory.getSlots(); slot++) - inventory.setStackInSlot(slot + 1, list.get(slot)); - - } - - private List> getRecipes() { - /* - * Predicate> types = - * AllConfigs.SERVER.recipes.allowStonecuttingOnSaw.get() ? - * RecipeConditions.isOfType(IRecipeType.STONECUTTING, - * AllRecipeTypes.CUTTING.getType()) : - * RecipeConditions.isOfType(AllRecipeTypes.CUTTING.getType()); - * - */ - - Predicate> types = RecipeConditions.isOfType(AllRecipeTypes.CUTTING.getType(), - AllConfigs.SERVER.recipes.allowStonecuttingOnSaw.get() ? IRecipeType.STONECUTTING : null, - AllConfigs.SERVER.recipes.allowWoodcuttingOnSaw.get() ? woodcuttingRecipeType.getValue() : null); - - List> startedSearch = RecipeFinder.get(cuttingRecipesKey, world, types); - return startedSearch.stream() - .filter(RecipeConditions.outputMatchesFilter(filtering)) - .filter(RecipeConditions.firstIngredientMatches(inventory.getStackInSlot(0))) - .collect(Collectors.toList()); - } - - public void insertItem(ItemEntity entity) { - if (!canProcess()) - return; - if (!inventory.isEmpty()) - return; - if (!entity.isAlive()) - return; - if (world.isRemote) - return; - - inventory.clear(); - inventory.insertItem(0, entity.getItem() - .copy(), false); - entity.remove(); - } - - public void start(ItemStack inserted) { - if (!canProcess()) - return; - if (inventory.isEmpty()) - return; - if (world.isRemote && !isVirtual()) - return; - - List> recipes = getRecipes(); - boolean valid = !recipes.isEmpty(); - processingStarted = true; - int time = 50; - - if (recipes.isEmpty()) { - inventory.remainingTime = inventory.recipeDuration = 10; - inventory.appliedRecipe = false; - sendData(); - return; - } - - if (valid) { - recipeIndex++; - if (recipeIndex >= recipes.size()) - recipeIndex = 0; - } - - IRecipe recipe = recipes.get(recipeIndex); - if (recipe instanceof CuttingRecipe) { - time = ((CuttingRecipe) recipe).getProcessingDuration(); - } - - inventory.remainingTime = time * Math.max(1, (inserted.getCount() / 5)); - inventory.recipeDuration = inventory.remainingTime; - inventory.appliedRecipe = false; - sendData(); - } - - protected boolean canProcess() { - return getBlockState().get(SawBlock.FACING) == Direction.UP; - } - - // Block Breaker - - @Override - protected boolean shouldRun() { - return getBlockState().get(SawBlock.FACING) - .getAxis() - .isHorizontal(); - } - - @Override - protected BlockPos getBreakingPos() { - return getPos().offset(getBlockState().get(SawBlock.FACING)); - } - - @Override - public void onBlockBroken(BlockState stateToBreak) { - super.onBlockBroken(stateToBreak); - TreeCutter.findTree(world, breakingPos) - .destroyBlocks(world, null, this::dropItemFromCutTree); - } - - public void dropItemFromCutTree(BlockPos pos, ItemStack stack) { - float distance = (float) Math.sqrt(pos.distanceSq(breakingPos)); - Vector3d dropPos = VecHelper.getCenterOf(pos); - ItemEntity entity = new ItemEntity(world, dropPos.x, dropPos.y, dropPos.z, stack); - entity.setMotion(Vector3d.of(breakingPos.subtract(this.pos)) - .scale(distance / 20f)); - world.addEntity(entity); - } - - @Override - public boolean canBreak(BlockState stateToBreak, float blockHardness) { - boolean sawable = isSawable(stateToBreak); - return super.canBreak(stateToBreak, blockHardness) && sawable; - } - - public static boolean isSawable(BlockState stateToBreak) { - if (stateToBreak.isIn(BlockTags.LOGS) || AllTags.AllBlockTags.SLIMY_LOGS.matches(stateToBreak) - || stateToBreak.isIn(BlockTags.LEAVES)) - return true; - Block block = stateToBreak.getBlock(); - if (block instanceof BambooBlock) - return true; - if (block instanceof StemGrownBlock) - return true; - if (block instanceof CactusBlock) - return true; - if (block instanceof SugarCaneBlock) - return true; - if (block instanceof KelpBlock) - return true; - if (block instanceof KelpTopBlock) - return true; - if (block instanceof ChorusPlantBlock) - return true; - return false; - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java deleted file mode 100644 index 7008ac746..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AbstractContraptionEntity.java +++ /dev/null @@ -1,701 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.io.IOException; -import java.util.IdentityHashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.UUID; - -import org.apache.commons.lang3.mutable.MutableInt; -import org.apache.commons.lang3.tuple.MutablePair; - -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllMovementBehaviours; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.actors.SeatEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionSeatMappingPacket; -import com.simibubi.create.foundation.collision.Matrix3d; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.material.PushReaction; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.item.HangingEntity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.projectile.ProjectileEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.network.IPacket; -import net.minecraft.network.PacketBuffer; -import net.minecraft.network.datasync.DataParameter; -import net.minecraft.network.datasync.DataSerializers; -import net.minecraft.network.datasync.EntityDataManager; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData; -import net.minecraftforge.fml.network.NetworkHooks; -import net.minecraftforge.fml.network.PacketDistributor; - -public abstract class AbstractContraptionEntity extends Entity implements IEntityAdditionalSpawnData { - - private static final DataParameter STALLED = - EntityDataManager.createKey(AbstractContraptionEntity.class, DataSerializers.BOOLEAN); - - public final Map collidingEntities; - - protected Contraption contraption; - protected boolean initialized; - protected boolean prevPosInvalid; - private boolean ticking; - - public AbstractContraptionEntity(EntityType entityTypeIn, World worldIn) { - super(entityTypeIn, worldIn); - prevPosInvalid = true; - collidingEntities = new IdentityHashMap<>(); - } - - protected void setContraption(Contraption contraption) { - this.contraption = contraption; - if (contraption == null) - return; - if (world.isRemote) - return; - contraption.onEntityCreated(this); - } - - public boolean supportsTerrainCollision() { - return contraption instanceof TranslatingContraption; - } - - protected void contraptionInitialize() { - contraption.onEntityInitialize(world, this); - initialized = true; - } - - public boolean collisionEnabled() { - return true; - } - - public void addSittingPassenger(Entity passenger, int seatIndex) { - passenger.startRiding(this, true); - if (world.isRemote) - return; - contraption.getSeatMapping() - .put(passenger.getUniqueID(), seatIndex); - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), - new ContraptionSeatMappingPacket(getEntityId(), contraption.getSeatMapping())); - } - - @Override - protected void removePassenger(Entity passenger) { - Vector3d transformedVector = getPassengerPosition(passenger, 1); - super.removePassenger(passenger); - if (world.isRemote) - return; - if (transformedVector != null) - passenger.getPersistentData() - .put("ContraptionDismountLocation", VecHelper.writeNBT(transformedVector)); - contraption.getSeatMapping() - .remove(passenger.getUniqueID()); - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), - new ContraptionSeatMappingPacket(getEntityId(), contraption.getSeatMapping())); - } - - @Override - public void updatePassengerPosition(Entity passenger, IMoveCallback callback) { - if (!isPassenger(passenger)) - return; - Vector3d transformedVector = getPassengerPosition(passenger, 1); - if (transformedVector == null) - return; - callback.accept(passenger, transformedVector.x, transformedVector.y, transformedVector.z); - } - - protected Vector3d getPassengerPosition(Entity passenger, float partialTicks) { - UUID id = passenger.getUniqueID(); - if (passenger instanceof OrientedContraptionEntity) { - BlockPos localPos = contraption.getBearingPosOf(id); - if (localPos != null) - return toGlobalVector(VecHelper.getCenterOf(localPos), partialTicks) - .add(VecHelper.getCenterOf(BlockPos.ZERO)) - .subtract(.5f, 1, .5f); - } - - AxisAlignedBB bb = passenger.getBoundingBox(); - double ySize = bb.getYSize(); - BlockPos seat = contraption.getSeatOf(id); - if (seat == null) - return null; - Vector3d transformedVector = toGlobalVector(Vector3d.of(seat) - .add(.5, passenger.getYOffset() + ySize - .15f, .5), partialTicks).add(VecHelper.getCenterOf(BlockPos.ZERO)) - .subtract(0.5, ySize, 0.5); - return transformedVector; - } - - @Override - protected boolean canFitPassenger(Entity p_184219_1_) { - if (p_184219_1_ instanceof OrientedContraptionEntity) - return true; - return contraption.getSeatMapping() - .size() < contraption.getSeats() - .size(); - } - - public boolean handlePlayerInteraction(PlayerEntity player, BlockPos localPos, Direction side, - Hand interactionHand) { - int indexOfSeat = contraption.getSeats() - .indexOf(localPos); - if (indexOfSeat == -1) - return false; - - // Eject potential existing passenger - Entity toDismount = null; - for (Entry entry : contraption.getSeatMapping() - .entrySet()) { - if (entry.getValue() != indexOfSeat) - continue; - for (Entity entity : getPassengers()) { - if (!entry.getKey() - .equals(entity.getUniqueID())) - continue; - if (entity instanceof PlayerEntity) - return false; - toDismount = entity; - } - } - - if (toDismount != null && !world.isRemote) { - Vector3d transformedVector = getPassengerPosition(toDismount, 1); - toDismount.stopRiding(); - if (transformedVector != null) - toDismount.setPositionAndUpdate(transformedVector.x, transformedVector.y, transformedVector.z); - } - - if (world.isRemote) - return true; - addSittingPassenger(player, indexOfSeat); - return true; - } - - public Vector3d toGlobalVector(Vector3d localVec, float partialTicks) { - Vector3d rotationOffset = VecHelper.getCenterOf(BlockPos.ZERO); - localVec = localVec.subtract(rotationOffset); - localVec = applyRotation(localVec, partialTicks); - localVec = localVec.add(rotationOffset) - .add(getAnchorVec()); - return localVec; - } - - public Vector3d toLocalVector(Vector3d globalVec, float partialTicks) { - Vector3d rotationOffset = VecHelper.getCenterOf(BlockPos.ZERO); - globalVec = globalVec.subtract(getAnchorVec()) - .subtract(rotationOffset); - globalVec = reverseRotation(globalVec, partialTicks); - globalVec = globalVec.add(rotationOffset); - return globalVec; - } - - @Override - public final void tick() { - if (contraption == null) { - remove(); - return; - } - - for (Iterator> iterator = collidingEntities.entrySet() - .iterator(); iterator.hasNext();) - if (iterator.next() - .getValue() - .incrementAndGet() > 3) - iterator.remove(); - - prevPosX = getX(); - prevPosY = getY(); - prevPosZ = getZ(); - prevPosInvalid = false; - - if (!initialized) - contraptionInitialize(); - contraption.onEntityTick(world); - tickContraption(); - super.tick(); - } - - protected abstract void tickContraption(); - - public abstract Vector3d applyRotation(Vector3d localPos, float partialTicks); - - public abstract Vector3d reverseRotation(Vector3d localPos, float partialTicks); - - public void tickActors() { - boolean stalledPreviously = contraption.stalled; - - if (!world.isRemote) - contraption.stalled = false; - - ticking = true; - for (MutablePair pair : contraption.getActors()) { - MovementContext context = pair.right; - BlockInfo blockInfo = pair.left; - MovementBehaviour actor = AllMovementBehaviours.of(blockInfo.state); - - Vector3d oldMotion = context.motion; - Vector3d actorPosition = toGlobalVector(VecHelper.getCenterOf(blockInfo.pos) - .add(actor.getActiveAreaOffset(context)), 1); - BlockPos gridPosition = new BlockPos(actorPosition); - boolean newPosVisited = - !context.stall && shouldActorTrigger(context, blockInfo, actor, actorPosition, gridPosition); - - context.rotation = v -> applyRotation(v, 1); - context.position = actorPosition; - if (!actor.isActive(context)) - continue; - if (newPosVisited && !context.stall) { - actor.visitNewPosition(context, gridPosition); - if (!isAlive()) - break; - context.firstMovement = false; - } - if (!oldMotion.equals(context.motion)) { - actor.onSpeedChanged(context, oldMotion, context.motion); - if (!isAlive()) - break; - } - actor.tick(context); - if (!isAlive()) - break; - contraption.stalled |= context.stall; - } - if (!isAlive()) { - contraption.stop(world); - return; - } - ticking = false; - - for (Entity entity : getPassengers()) { - if (!(entity instanceof OrientedContraptionEntity)) - continue; - if (!contraption.stabilizedSubContraptions.containsKey(entity.getUniqueID())) - continue; - OrientedContraptionEntity orientedCE = (OrientedContraptionEntity) entity; - if (orientedCE.contraption != null && orientedCE.contraption.stalled) { - contraption.stalled = true; - break; - } - } - - if (!world.isRemote) { - if (!stalledPreviously && contraption.stalled) - onContraptionStalled(); - dataManager.set(STALLED, contraption.stalled); - return; - } - - contraption.stalled = isStalled(); - } - - protected void onContraptionStalled() { - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), - new ContraptionStallPacket(getEntityId(), getX(), getY(), getZ(), getStalledAngle())); - } - - protected boolean shouldActorTrigger(MovementContext context, BlockInfo blockInfo, MovementBehaviour actor, - Vector3d actorPosition, BlockPos gridPosition) { - Vector3d previousPosition = context.position; - if (previousPosition == null) - return false; - - context.motion = actorPosition.subtract(previousPosition); - Vector3d relativeMotion = context.motion; - relativeMotion = reverseRotation(relativeMotion, 1); - context.relativeMotion = relativeMotion; - return !new BlockPos(previousPosition).equals(gridPosition) - || context.relativeMotion.length() > 0 && context.firstMovement; - } - - public void move(double x, double y, double z) { - setPosition(getX() + x, getY() + y, getZ() + z); - } - - public Vector3d getAnchorVec() { - return getPositionVec(); - } - - public float getYawOffset() { - return 0; - } - - @Override - public void setPosition(double x, double y, double z) { - super.setPosition(x, y, z); - if (contraption == null) - return; - AxisAlignedBB cbox = contraption.bounds; - if (cbox == null) - return; - Vector3d actualVec = getAnchorVec(); - setBoundingBox(cbox.offset(actualVec)); - } - - public static float yawFromVector(Vector3d vec) { - return (float) ((3 * Math.PI / 2 + Math.atan2(vec.z, vec.x)) / Math.PI * 180); - } - - public static float pitchFromVector(Vector3d vec) { - return (float) ((Math.acos(vec.y)) / Math.PI * 180); - } - - public static EntityType.Builder build(EntityType.Builder builder) { - @SuppressWarnings("unchecked") - EntityType.Builder entityBuilder = - (EntityType.Builder) builder; - return entityBuilder.size(1, 1); - } - - @Override - protected void registerData() { - this.dataManager.register(STALLED, false); - } - - @Override - public IPacket createSpawnPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - - @Override - public void writeSpawnData(PacketBuffer buffer) { - CompoundNBT compound = new CompoundNBT(); - writeAdditional(compound, true); - - try { - ByteArrayDataOutput dataOutput = ByteStreams.newDataOutput(); - CompressedStreamTools.write(compound, dataOutput); - byte[] byteArray = dataOutput.toByteArray(); - int estimatedPacketSize = byteArray.length; - if (estimatedPacketSize > 2_000_000) { - Create.LOGGER.warn("Could not send Contraption Spawn Data (Packet too big): " - + getContraption().getType().id + " @" + getPositionVec() + " (" + getUniqueID().toString() + ")"); - buffer.writeCompoundTag(new CompoundNBT()); - return; - } - - } catch (IOException e) { - e.printStackTrace(); - buffer.writeCompoundTag(new CompoundNBT()); - return; - } - - buffer.writeCompoundTag(compound); - } - - @Override - protected final void writeAdditional(CompoundNBT compound) { - writeAdditional(compound, false); - } - - protected void writeAdditional(CompoundNBT compound, boolean spawnPacket) { - if (contraption != null) - compound.put("Contraption", contraption.writeNBT(spawnPacket)); - compound.putBoolean("Stalled", isStalled()); - compound.putBoolean("Initialized", initialized); - } - - @Override - public void readSpawnData(PacketBuffer additionalData) { - readAdditional(additionalData.readCompoundTag(), true); - } - - @Override - protected final void readAdditional(CompoundNBT compound) { - readAdditional(compound, false); - } - - protected void readAdditional(CompoundNBT compound, boolean spawnData) { - if (compound.isEmpty()) - return; - - initialized = compound.getBoolean("Initialized"); - contraption = Contraption.fromNBT(world, compound.getCompound("Contraption"), spawnData); - contraption.entity = this; - dataManager.set(STALLED, compound.getBoolean("Stalled")); - } - - public void disassemble() { - if (!isAlive()) - return; - if (contraption == null) - return; - - remove(); - - StructureTransform transform = makeStructureTransform(); - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), - new ContraptionDisassemblyPacket(this.getEntityId(), transform)); - - contraption.addBlocksToWorld(world, transform); - contraption.addPassengersToWorld(world, transform, getPassengers()); - - for (Entity entity : getPassengers()) { - if (!(entity instanceof OrientedContraptionEntity)) - continue; - UUID id = entity.getUniqueID(); - if (!contraption.stabilizedSubContraptions.containsKey(id)) - continue; - BlockPos transformed = transform.apply(contraption.stabilizedSubContraptions.get(id) - .getConnectedPos()); - entity.setPosition(transformed.getX(), transformed.getY(), transformed.getZ()); - ((AbstractContraptionEntity) entity).disassemble(); - } - - removePassengers(); - moveCollidedEntitiesOnDisassembly(transform); - AllSoundEvents.CONTRAPTION_DISASSEMBLE.playOnServer(world, getBlockPos()); - } - - private void moveCollidedEntitiesOnDisassembly(StructureTransform transform) { - for (Entity entity : collidingEntities.keySet()) { - Vector3d localVec = toLocalVector(entity.getPositionVec(), 0); - Vector3d transformed = transform.apply(localVec); - if (world.isRemote) - entity.setPosition(transformed.x, transformed.y + 1 / 16f, transformed.z); - else - entity.setPositionAndUpdate(transformed.x, transformed.y + 1 / 16f, transformed.z); - } - } - - @SuppressWarnings("deprecation") - @Override - public void remove(boolean keepData) { - if (!world.isRemote && !removed && contraption != null) { - if (!ticking) - contraption.stop(world); - } - if (contraption != null) - contraption.onEntityRemoved(this); - super.remove(keepData); - } - - protected abstract StructureTransform makeStructureTransform(); - - @Override - public void onKillCommand() { - removePassengers(); - super.onKillCommand(); - } - - @Override - protected void outOfWorld() { - removePassengers(); - super.outOfWorld(); - } - - @Override - public void onRemovedFromWorld() { - super.onRemovedFromWorld(); - if (world != null && world.isRemote) - return; - getPassengers().forEach(Entity::remove); - } - - @Override - protected void doWaterSplashEffect() {} - - public Contraption getContraption() { - return contraption; - } - - public boolean isStalled() { - return dataManager.get(STALLED); - } - - @OnlyIn(Dist.CLIENT) - static void handleStallPacket(ContraptionStallPacket packet) { - Entity entity = Minecraft.getInstance().world.getEntityByID(packet.entityID); - if (!(entity instanceof AbstractContraptionEntity)) - return; - AbstractContraptionEntity ce = (AbstractContraptionEntity) entity; - ce.handleStallInformation(packet.x, packet.y, packet.z, packet.angle); - } - - @OnlyIn(Dist.CLIENT) - static void handleDisassemblyPacket(ContraptionDisassemblyPacket packet) { - Entity entity = Minecraft.getInstance().world.getEntityByID(packet.entityID); - if (!(entity instanceof AbstractContraptionEntity)) - return; - AbstractContraptionEntity ce = (AbstractContraptionEntity) entity; - ce.moveCollidedEntitiesOnDisassembly(packet.transform); - } - - protected abstract float getStalledAngle(); - - protected abstract void handleStallInformation(float x, float y, float z, float angle); - - @Override - @SuppressWarnings("deprecation") - public CompoundNBT writeWithoutTypeId(CompoundNBT nbt) { - Vector3d vec = getPositionVec(); - List passengers = getPassengers(); - - for (Entity entity : passengers) { - // setPos has world accessing side-effects when removed == false - entity.removed = true; - - // Gather passengers into same chunk when saving - Vector3d prevVec = entity.getPositionVec(); - entity.setPos(vec.x, prevVec.y, vec.z); - - // Super requires all passengers to not be removed in order to write them to the - // tag - entity.removed = false; - } - - CompoundNBT tag = super.writeWithoutTypeId(nbt); - return tag; - } - - @Override - // Make sure nothing can move contraptions out of the way - public void setMotion(Vector3d motionIn) {} - - @Override - public PushReaction getPushReaction() { - return PushReaction.IGNORE; - } - - public void setContraptionMotion(Vector3d vec) { - super.setMotion(vec); - } - - @Override - public boolean canBeCollidedWith() { - return false; - } - - @Override - public boolean attackEntityFrom(DamageSource source, float amount) { - return false; - } - - public Vector3d getPrevPositionVec() { - return prevPosInvalid ? getPositionVec() : new Vector3d(prevPosX, prevPosY, prevPosZ); - } - - public abstract ContraptionRotationState getRotationState(); - - public Vector3d getContactPointMotion(Vector3d globalContactPoint) { - if (prevPosInvalid) - return Vector3d.ZERO; - Vector3d contactPoint = toGlobalVector(toLocalVector(globalContactPoint, 0), 1); - return contactPoint.subtract(globalContactPoint) - .add(getPositionVec().subtract(getPrevPositionVec())); - } - - public boolean canCollideWith(Entity e) { - if (e instanceof PlayerEntity && e.isSpectator()) - return false; - if (e.noClip) - return false; - if (e instanceof HangingEntity) - return false; - if (e instanceof AbstractMinecartEntity) - return !(contraption instanceof MountedContraption); - if (e instanceof SuperGlueEntity) - return false; - if (e instanceof SeatEntity) - return false; - if (e instanceof ProjectileEntity) - return false; - if (e.getRidingEntity() != null) - return false; - - Entity riding = this.getRidingEntity(); - while (riding != null) { - if (riding == e) - return false; - riding = riding.getRidingEntity(); - } - - return e.getPushReaction() == PushReaction.NORMAL; - } - - @Override - public boolean isOnePlayerRiding() { - return false; - } - - @OnlyIn(Dist.CLIENT) - public abstract void doLocalTransforms(float partialTicks, MatrixStack[] matrixStacks); - - public static class ContraptionRotationState { - public static final ContraptionRotationState NONE = new ContraptionRotationState(); - - float xRotation = 0; - float yRotation = 0; - float zRotation = 0; - float secondYRotation = 0; - Matrix3d matrix; - - public Matrix3d asMatrix() { - if (matrix != null) - return matrix; - - matrix = new Matrix3d().asIdentity(); - if (xRotation != 0) - matrix.multiply(new Matrix3d().asXRotation(AngleHelper.rad(-xRotation))); - if (yRotation != 0) - matrix.multiply(new Matrix3d().asYRotation(AngleHelper.rad(yRotation))); - if (zRotation != 0) - matrix.multiply(new Matrix3d().asZRotation(AngleHelper.rad(-zRotation))); - return matrix; - } - - public boolean hasVerticalRotation() { - return xRotation != 0 || zRotation != 0; - } - - public float getYawOffset() { - return secondYRotation; - } - - } - - // @Override //TODO find 1.16 replacement - // public void updateAquatics() { - /* - * Override this with an empty method to reduce enormous calculation time when contraptions are in water - * WARNING: THIS HAS A BUNCH OF SIDE EFFECTS! - * - Fluids will not try to change contraption movement direction - * - this.inWater and this.isInWater() will return unreliable data - * - entities riding a contraption will not cause water splashes (seats are their own entity so this should be fine) - * - fall distance is not reset when the contraption is in water - * - this.eyesInWater and this.canSwim() will always be false - * - swimming state will never be updated - */ - // extinguish(); - // } - - @Override - public void setFire(int p_70015_1_) { - // Contraptions no longer catch fire - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AssemblyException.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AssemblyException.java deleted file mode 100644 index 51eb14340..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/AssemblyException.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TranslationTextComponent; - -public class AssemblyException extends Exception { - - private static final long serialVersionUID = 1L; - public final ITextComponent component; - private BlockPos position = null; - - public static void write(CompoundNBT compound, AssemblyException exception) { - if (exception == null) - return; - - CompoundNBT nbt = new CompoundNBT(); - nbt.putString("Component", ITextComponent.Serializer.toJson(exception.component)); - if (exception.hasPosition()) - nbt.putLong("Position", exception.getPosition() - .toLong()); - - compound.put("LastException", nbt); - } - - public static AssemblyException read(CompoundNBT compound) { - if (!compound.contains("LastException")) - return null; - - CompoundNBT nbt = compound.getCompound("LastException"); - String string = nbt.getString("Component"); - AssemblyException exception = new AssemblyException(ITextComponent.Serializer.fromJson(string)); - if (nbt.contains("Position")) - exception.position = BlockPos.fromLong(nbt.getLong("Position")); - - return exception; - } - - public AssemblyException(ITextComponent component) { - this.component = component; - } - - public AssemblyException(String langKey, Object... objects) { - this(new TranslationTextComponent("create.gui.assembly.exception." + langKey, objects)); - } - - public static AssemblyException unmovableBlock(BlockPos pos, BlockState state) { - AssemblyException e = new AssemblyException("unmovableBlock", pos.getX(), pos.getY(), pos.getZ(), - new TranslationTextComponent(state.getBlock() - .getTranslationKey())); - e.position = pos; - return e; - } - - public static AssemblyException unloadedChunk(BlockPos pos) { - AssemblyException e = new AssemblyException("chunkNotLoaded", pos.getX(), pos.getY(), pos.getZ()); - e.position = pos; - return e; - } - - public static AssemblyException structureTooLarge() { - return new AssemblyException("structureTooLarge", AllConfigs.SERVER.kinetics.maxBlocksMoved.get()); - } - - public static AssemblyException tooManyPistonPoles() { - return new AssemblyException("tooManyPistonPoles", AllConfigs.SERVER.kinetics.maxPistonPoles.get()); - } - - public static AssemblyException noPistonPoles() { - return new AssemblyException("noPistonPoles"); - } - - public static AssemblyException notEnoughSails(int sails) { - return new AssemblyException("not_enough_sails", sails, AllConfigs.SERVER.kinetics.minimumWindmillSails.get()); - } - - public boolean hasPosition() { - return position != null; - } - - public BlockPos getPosition() { - return position; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java deleted file mode 100644 index ca957fcd0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/BlockMovementChecks.java +++ /dev/null @@ -1,420 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.content.contraptions.components.actors.AttachedActorBlock; -import com.simibubi.create.content.contraptions.components.actors.HarvesterBlock; -import com.simibubi.create.content.contraptions.components.actors.PortableStorageInterfaceBlock; -import com.simibubi.create.content.contraptions.components.crank.HandCrankBlock; -import com.simibubi.create.content.contraptions.components.fan.NozzleBlock; -import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkBearingTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.SailBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankConnectivityHandler; -import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; - -import net.minecraft.block.AbstractPressurePlateBlock; -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.AbstractSignBlock; -import net.minecraft.block.BedBlock; -import net.minecraft.block.BellBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.CarpetBlock; -import net.minecraft.block.DoorBlock; -import net.minecraft.block.FenceGateBlock; -import net.minecraft.block.FlowerPotBlock; -import net.minecraft.block.GrindstoneBlock; -import net.minecraft.block.HorizontalBlock; -import net.minecraft.block.HorizontalFaceBlock; -import net.minecraft.block.LadderBlock; -import net.minecraft.block.RedstoneDiodeBlock; -import net.minecraft.block.RedstoneWallTorchBlock; -import net.minecraft.block.RedstoneWireBlock; -import net.minecraft.block.StandingSignBlock; -import net.minecraft.block.TorchBlock; -import net.minecraft.block.WallSignBlock; -import net.minecraft.block.WallTorchBlock; -import net.minecraft.block.material.PushReaction; -import net.minecraft.state.properties.AttachFace; -import net.minecraft.state.properties.BedPart; -import net.minecraft.state.properties.BellAttachment; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.DoubleBlockHalf; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class BlockMovementChecks { - - private static final List MOVEMENT_NECESSARY_CHECKS = new ArrayList<>(); - private static final List MOVEMENT_ALLOWED_CHECKS = new ArrayList<>(); - private static final List BRITTLE_CHECKS = new ArrayList<>(); - private static final List ATTACHED_CHECKS = new ArrayList<>(); - private static final List NOT_SUPPORTIVE_CHECKS = new ArrayList<>(); - - // Registration - // Add new checks to the front instead of the end - - public static void registerMovementNecessaryCheck(MovementNecessaryCheck check) { - MOVEMENT_NECESSARY_CHECKS.add(0, check); - } - - public static void registerMovementAllowedCheck(MovementAllowedCheck check) { - MOVEMENT_ALLOWED_CHECKS.add(0, check); - } - - public static void registerBrittleCheck(BrittleCheck check) { - BRITTLE_CHECKS.add(0, check); - } - - public static void registerAttachedCheck(AttachedCheck check) { - ATTACHED_CHECKS.add(0, check); - } - - public static void registerNotSupportiveCheck(NotSupportiveCheck check) { - NOT_SUPPORTIVE_CHECKS.add(0, check); - } - - public static void registerAllChecks(AllChecks checks) { - registerMovementNecessaryCheck(checks); - registerMovementAllowedCheck(checks); - registerBrittleCheck(checks); - registerAttachedCheck(checks); - registerNotSupportiveCheck(checks); - } - - // Actual check methods - - public static boolean isMovementNecessary(BlockState state, World world, BlockPos pos) { - for (MovementNecessaryCheck check : MOVEMENT_NECESSARY_CHECKS) { - CheckResult result = check.isMovementNecessary(state, world, pos); - if (result != CheckResult.PASS) { - return result.toBoolean(); - } - } - return isMovementNecessaryFallback(state, world, pos); - } - - public static boolean isMovementAllowed(BlockState state, World world, BlockPos pos) { - for (MovementAllowedCheck check : MOVEMENT_ALLOWED_CHECKS) { - CheckResult result = check.isMovementAllowed(state, world, pos); - if (result != CheckResult.PASS) { - return result.toBoolean(); - } - } - return isMovementAllowedFallback(state, world, pos); - } - - /** - * Brittle blocks will be collected first, as they may break when other blocks - * are removed before them - */ - public static boolean isBrittle(BlockState state) { - for (BrittleCheck check : BRITTLE_CHECKS) { - CheckResult result = check.isBrittle(state); - if (result != CheckResult.PASS) { - return result.toBoolean(); - } - } - return isBrittleFallback(state); - } - - /** - * Attached blocks will move if blocks they are attached to are moved - */ - public static boolean isBlockAttachedTowards(BlockState state, World world, BlockPos pos, - Direction direction) { - for (AttachedCheck check : ATTACHED_CHECKS) { - CheckResult result = check.isBlockAttachedTowards(state, world, pos, direction); - if (result != CheckResult.PASS) { - return result.toBoolean(); - } - } - return isBlockAttachedTowardsFallback(state, world, pos, direction); - } - - /** - * Non-Supportive blocks will not continue a chain of blocks picked up by e.g. a - * piston - */ - public static boolean isNotSupportive(BlockState state, Direction facing) { - for (NotSupportiveCheck check : NOT_SUPPORTIVE_CHECKS) { - CheckResult result = check.isNotSupportive(state, facing); - if (result != CheckResult.PASS) { - return result.toBoolean(); - } - } - return isNotSupportiveFallback(state, facing); - } - - // Fallback checks - - private static boolean isMovementNecessaryFallback(BlockState state, World world, BlockPos pos) { - if (isBrittle(state)) - return true; - if (state.getBlock() instanceof FenceGateBlock) - return true; - if (state.getMaterial() - .isReplaceable()) - return false; - if (state.getCollisionShape(world, pos) - .isEmpty()) - return false; - return true; - } - - private static boolean isMovementAllowedFallback(BlockState state, World world, BlockPos pos) { - Block block = state.getBlock(); - if (block instanceof AbstractChassisBlock) - return true; - if (state.getBlockHardness(world, pos) == -1) - return false; - if (AllBlockTags.NON_MOVABLE.matches(state)) - return false; - - // Move controllers only when they aren't moving - if (block instanceof MechanicalPistonBlock && state.get(MechanicalPistonBlock.STATE) != PistonState.MOVING) - return true; - if (block instanceof MechanicalBearingBlock) { - TileEntity te = world.getTileEntity(pos); - if (te instanceof MechanicalBearingTileEntity) - return !((MechanicalBearingTileEntity) te).isRunning(); - } - if (block instanceof WindmillBearingBlock) { - TileEntity te = world.getTileEntity(pos); - if (te instanceof WindmillBearingTileEntity) - return !((WindmillBearingTileEntity) te).isRunning(); - } - if (block instanceof ClockworkBearingBlock) { - TileEntity te = world.getTileEntity(pos); - if (te instanceof ClockworkBearingTileEntity) - return !((ClockworkBearingTileEntity) te).isRunning(); - } - if (block instanceof PulleyBlock) { - TileEntity te = world.getTileEntity(pos); - if (te instanceof PulleyTileEntity) - return !((PulleyTileEntity) te).running; - } - - if (AllBlocks.BELT.has(state)) - return true; - if (state.getBlock() instanceof GrindstoneBlock) - return true; - return state.getPushReaction() != PushReaction.BLOCK; - } - - private static boolean isBrittleFallback(BlockState state) { - Block block = state.getBlock(); - if (state.contains(BlockStateProperties.HANGING)) - return true; - - if (block instanceof LadderBlock) - return true; - if (block instanceof TorchBlock) - return true; - if (block instanceof AbstractSignBlock) - return true; - if (block instanceof AbstractPressurePlateBlock) - return true; - if (block instanceof HorizontalFaceBlock && !(block instanceof GrindstoneBlock)) - return true; - if (block instanceof CartAssemblerBlock) - return false; - if (block instanceof AbstractRailBlock) - return true; - if (block instanceof RedstoneDiodeBlock) - return true; - if (block instanceof RedstoneWireBlock) - return true; - if (block instanceof CarpetBlock) - return true; - return AllBlockTags.BRITTLE.tag.contains(block); - } - - private static boolean isBlockAttachedTowardsFallback(BlockState state, World world, BlockPos pos, - Direction direction) { - Block block = state.getBlock(); - if (block instanceof LadderBlock) - return state.get(LadderBlock.FACING) == direction.getOpposite(); - if (block instanceof WallTorchBlock) - return state.get(WallTorchBlock.HORIZONTAL_FACING) == direction.getOpposite(); - if (block instanceof WallSignBlock) - return state.get(WallSignBlock.FACING) == direction.getOpposite(); - if (block instanceof StandingSignBlock) - return direction == Direction.DOWN; - if (block instanceof AbstractPressurePlateBlock) - return direction == Direction.DOWN; - if (block instanceof DoorBlock) { - if (state.get(DoorBlock.HALF) == DoubleBlockHalf.LOWER && direction == Direction.UP) - return true; - return direction == Direction.DOWN; - } - if (block instanceof BedBlock) { - Direction facing = state.get(BedBlock.HORIZONTAL_FACING); - if (state.get(BedBlock.PART) == BedPart.HEAD) - facing = facing.getOpposite(); - return direction == facing; - } - if (block instanceof RedstoneLinkBlock) - return direction.getOpposite() == state.get(RedstoneLinkBlock.FACING); - if (block instanceof FlowerPotBlock) - return direction == Direction.DOWN; - if (block instanceof RedstoneDiodeBlock) - return direction == Direction.DOWN; - if (block instanceof RedstoneWireBlock) - return direction == Direction.DOWN; - if (block instanceof CarpetBlock) - return direction == Direction.DOWN; - if (block instanceof RedstoneWallTorchBlock) - return state.get(RedstoneWallTorchBlock.FACING) == direction.getOpposite(); - if (block instanceof TorchBlock) - return direction == Direction.DOWN; - if (block instanceof HorizontalFaceBlock) { - AttachFace attachFace = state.get(HorizontalFaceBlock.FACE); - if (attachFace == AttachFace.CEILING) - return direction == Direction.UP; - if (attachFace == AttachFace.FLOOR) - return direction == Direction.DOWN; - if (attachFace == AttachFace.WALL) - return direction.getOpposite() == state.get(HorizontalFaceBlock.HORIZONTAL_FACING); - } - if (state.contains(BlockStateProperties.HANGING)) - return direction == (state.get(BlockStateProperties.HANGING) ? Direction.UP : Direction.DOWN); - if (block instanceof AbstractRailBlock) - return direction == Direction.DOWN; - if (block instanceof AttachedActorBlock) - return direction == state.get(HarvesterBlock.HORIZONTAL_FACING) - .getOpposite(); - if (block instanceof HandCrankBlock) - return direction == state.get(HandCrankBlock.FACING) - .getOpposite(); - if (block instanceof NozzleBlock) - return direction == state.get(NozzleBlock.FACING) - .getOpposite(); - if (block instanceof EngineBlock) - return direction == state.get(EngineBlock.HORIZONTAL_FACING) - .getOpposite(); - if (block instanceof BellBlock) { - BellAttachment attachment = state.get(BlockStateProperties.BELL_ATTACHMENT); - if (attachment == BellAttachment.FLOOR) - return direction == Direction.DOWN; - if (attachment == BellAttachment.CEILING) - return direction == Direction.UP; - return direction == state.get(HorizontalBlock.HORIZONTAL_FACING); - } - if (state.getBlock() instanceof SailBlock) - return direction.getAxis() != state.get(SailBlock.FACING) - .getAxis(); - if (state.getBlock() instanceof FluidTankBlock) - return FluidTankConnectivityHandler.isConnected(world, pos, pos.offset(direction)); - if (AllBlocks.STICKER.has(state) && state.get(StickerBlock.EXTENDED)) { - return direction == state.get(StickerBlock.FACING) - && !isNotSupportive(world.getBlockState(pos.offset(direction)), direction.getOpposite()); - } - return false; - } - - private static boolean isNotSupportiveFallback(BlockState state, Direction facing) { - if (AllBlocks.MECHANICAL_DRILL.has(state)) - return state.get(BlockStateProperties.FACING) == facing; - if (AllBlocks.MECHANICAL_BEARING.has(state)) - return state.get(BlockStateProperties.FACING) == facing; - if (AllBlocks.CART_ASSEMBLER.has(state)) - return Direction.DOWN == facing; - if (AllBlocks.MECHANICAL_SAW.has(state)) - return state.get(BlockStateProperties.FACING) == facing; - if (AllBlocks.PORTABLE_STORAGE_INTERFACE.has(state)) - return state.get(PortableStorageInterfaceBlock.FACING) == facing; - if (state.getBlock() instanceof AttachedActorBlock) - return state.get(BlockStateProperties.HORIZONTAL_FACING) == facing; - if (AllBlocks.ROPE_PULLEY.has(state)) - return facing == Direction.DOWN; - if (state.getBlock() instanceof CarpetBlock) - return facing == Direction.UP; - if (state.getBlock() instanceof SailBlock) - return facing.getAxis() == state.get(SailBlock.FACING) - .getAxis(); - if (AllBlocks.PISTON_EXTENSION_POLE.has(state)) - return facing.getAxis() != state.get(BlockStateProperties.FACING) - .getAxis(); - if (AllBlocks.MECHANICAL_PISTON_HEAD.has(state)) - return facing.getAxis() != state.get(BlockStateProperties.FACING) - .getAxis(); - if (AllBlocks.STICKER.has(state) && !state.get(StickerBlock.EXTENDED)) - return facing == state.get(StickerBlock.FACING); - return isBrittle(state); - } - - // Check classes - - public static interface MovementNecessaryCheck { - public CheckResult isMovementNecessary(BlockState state, World world, BlockPos pos); - } - - public static interface MovementAllowedCheck { - public CheckResult isMovementAllowed(BlockState state, World world, BlockPos pos); - } - - public static interface BrittleCheck { - /** - * Brittle blocks will be collected first, as they may break when other blocks - * are removed before them - */ - public CheckResult isBrittle(BlockState state); - } - - public static interface AttachedCheck { - /** - * Attached blocks will move if blocks they are attached to are moved - */ - public CheckResult isBlockAttachedTowards(BlockState state, World world, BlockPos pos, Direction direction); - } - - public static interface NotSupportiveCheck { - /** - * Non-Supportive blocks will not continue a chain of blocks picked up by e.g. a - * piston - */ - public CheckResult isNotSupportive(BlockState state, Direction direction); - } - - public static interface AllChecks extends MovementNecessaryCheck, MovementAllowedCheck, BrittleCheck, AttachedCheck, NotSupportiveCheck { - } - - public static enum CheckResult { - SUCCESS, - FAIL, - PASS; - - public Boolean toBoolean() { - return this == PASS ? null : (this == SUCCESS ? true : false); - } - - public static CheckResult of(boolean b) { - return b ? SUCCESS : FAIL; - } - - public static CheckResult of(Boolean b) { - return b == null ? PASS : (b ? SUCCESS : FAIL); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java deleted file mode 100644 index 01e0f1153..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/Contraption.java +++ /dev/null @@ -1,1286 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPistonHead; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Objects; -import java.util.Optional; -import java.util.Queue; -import java.util.Set; -import java.util.UUID; -import java.util.concurrent.CompletableFuture; -import java.util.function.BiConsumer; -import java.util.stream.Collectors; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.tuple.MutablePair; -import org.apache.commons.lang3.tuple.Pair; - -import com.jozufozu.flywheel.backend.IFlywheelWorld; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllMovementBehaviours; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.actors.SeatBlock; -import com.simibubi.create.content.contraptions.components.actors.SeatEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.MechanicalBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.WindmillBearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.ChassisTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueHandler; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonHeadBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock.MagnetBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock.RopeBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.render.EmptyLighter; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; -import com.simibubi.create.content.logistics.block.inventories.CreativeCrateTileEntity; -import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.fluid.CombinedTankWrapper; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.utility.BlockFace; -import com.simibubi.create.foundation.utility.ICoordinate; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.NBTProcessors; -import com.simibubi.create.foundation.utility.UniqueLinkedList; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.AbstractButtonBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.ChestBlock; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.block.PressurePlateBlock; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.Entity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.ChestType; -import net.minecraft.state.properties.PistonType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.IBooleanFunction; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.palette.HashMapPalette; -import net.minecraft.village.PointOfInterestType; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.Constants.BlockFlags; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidTank; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.fluids.capability.templates.FluidTank; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.wrapper.CombinedInvWrapper; -import net.minecraftforge.registries.GameData; - -public abstract class Contraption { - - public Optional> simplifiedEntityColliders; - public AbstractContraptionEntity entity; - public ContraptionInvWrapper inventory; - public CombinedTankWrapper fluidInventory; - public AxisAlignedBB bounds; - public BlockPos anchor; - public boolean stalled; - public boolean hasUniversalCreativeCrate; - - protected Map blocks; - protected Map storage; - protected Map fluidStorage; - protected List> actors; - protected Set> superglue; - protected List seats; - protected Map seatMapping; - protected Map stabilizedSubContraptions; - - private List glueToRemove; - private Map initialPassengers; - private List pendingSubContraptions; - - private CompletableFuture simplifiedEntityColliderProvider; - - // Client - public Map presentTileEntities; - public List maybeInstancedTileEntities; - public List specialRenderedTileEntities; - - protected ContraptionWorld world; - - public Contraption() { - blocks = new HashMap<>(); - storage = new HashMap<>(); - seats = new ArrayList<>(); - actors = new ArrayList<>(); - superglue = new HashSet<>(); - seatMapping = new HashMap<>(); - fluidStorage = new HashMap<>(); - glueToRemove = new ArrayList<>(); - initialPassengers = new HashMap<>(); - presentTileEntities = new HashMap<>(); - maybeInstancedTileEntities = new ArrayList<>(); - specialRenderedTileEntities = new ArrayList<>(); - pendingSubContraptions = new ArrayList<>(); - stabilizedSubContraptions = new HashMap<>(); - simplifiedEntityColliders = Optional.empty(); - } - - public ContraptionWorld getContraptionWorld() { - if (world == null) - world = new ContraptionWorld(entity.world, this); - return world; - } - - public abstract boolean assemble(World world, BlockPos pos) throws AssemblyException; - - public abstract boolean canBeStabilized(Direction facing, BlockPos localPos); - - protected abstract ContraptionType getType(); - - protected boolean customBlockPlacement(IWorld world, BlockPos pos, BlockState state) { - return false; - } - - protected boolean customBlockRemoval(IWorld world, BlockPos pos, BlockState state) { - return false; - } - - protected boolean addToInitialFrontier(World world, BlockPos pos, Direction forcedDirection, - Queue frontier) throws AssemblyException { - return true; - } - - public static Contraption fromNBT(World world, CompoundNBT nbt, boolean spawnData) { - String type = nbt.getString("Type"); - Contraption contraption = ContraptionType.fromType(type); - contraption.readNBT(world, nbt, spawnData); - contraption.world = new ContraptionWorld(world, contraption); - contraption.gatherBBsOffThread(); - return contraption; - } - - public boolean searchMovedStructure(World world, BlockPos pos, @Nullable Direction forcedDirection) - throws AssemblyException { - initialPassengers.clear(); - Queue frontier = new UniqueLinkedList<>(); - Set visited = new HashSet<>(); - anchor = pos; - - if (bounds == null) - bounds = new AxisAlignedBB(BlockPos.ZERO); - - if (!BlockMovementChecks.isBrittle(world.getBlockState(pos))) - frontier.add(pos); - if (!addToInitialFrontier(world, pos, forcedDirection, frontier)) - return false; - for (int limit = 100000; limit > 0; limit--) { - if (frontier.isEmpty()) - return true; - if (!moveBlock(world, forcedDirection, frontier, visited)) - return false; - } - throw AssemblyException.structureTooLarge(); - } - - public void onEntityCreated(AbstractContraptionEntity entity) { - this.entity = entity; - - // Create subcontraptions - for (BlockFace blockFace : pendingSubContraptions) { - Direction face = blockFace.getFace(); - StabilizedContraption subContraption = new StabilizedContraption(face); - World world = entity.world; - BlockPos pos = blockFace.getPos(); - try { - if (!subContraption.assemble(world, pos)) - continue; - } catch (AssemblyException e) { - continue; - } - subContraption.removeBlocksFromWorld(world, BlockPos.ZERO); - OrientedContraptionEntity movedContraption = - OrientedContraptionEntity.create(world, subContraption, Optional.of(face)); - BlockPos anchor = blockFace.getConnectedPos(); - movedContraption.setPosition(anchor.getX() + .5f, anchor.getY(), anchor.getZ() + .5f); - world.addEntity(movedContraption); - stabilizedSubContraptions.put(movedContraption.getUniqueID(), new BlockFace(toLocalPos(pos), face)); - } - - // Gather itemhandlers of mounted storage - List list = storage.values() - .stream() - .map(MountedStorage::getItemHandler) - .collect(Collectors.toList()); - inventory = new ContraptionInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class)); - - List fluidHandlers = fluidStorage.values() - .stream() - .map(MountedFluidStorage::getFluidHandler) - .collect(Collectors.toList()); - fluidInventory = new CombinedTankWrapper( - Arrays.copyOf(fluidHandlers.toArray(), fluidHandlers.size(), IFluidHandler[].class)); - gatherBBsOffThread(); - } - - public void onEntityRemoved(AbstractContraptionEntity entity) { - if (simplifiedEntityColliderProvider != null) { - simplifiedEntityColliderProvider.cancel(false); - simplifiedEntityColliderProvider = null; - } - } - - public void onEntityInitialize(World world, AbstractContraptionEntity contraptionEntity) { - if (world.isRemote) - return; - - for (OrientedContraptionEntity orientedCE : world.getEntitiesWithinAABB(OrientedContraptionEntity.class, - contraptionEntity.getBoundingBox() - .grow(1))) - if (stabilizedSubContraptions.containsKey(orientedCE.getUniqueID())) - orientedCE.startRiding(contraptionEntity); - - for (BlockPos seatPos : getSeats()) { - Entity passenger = initialPassengers.get(seatPos); - if (passenger == null) - continue; - int seatIndex = getSeats().indexOf(seatPos); - if (seatIndex == -1) - continue; - contraptionEntity.addSittingPassenger(passenger, seatIndex); - } - } - - public void onEntityTick(World world) { - fluidStorage.forEach((pos, mfs) -> mfs.tick(entity, pos, world.isRemote)); - } - - /** move the first block in frontier queue */ - protected boolean moveBlock(World world, @Nullable Direction forcedDirection, Queue frontier, - Set visited) throws AssemblyException { - BlockPos pos = frontier.poll(); - if (pos == null) - return false; - visited.add(pos); - - if (World.isOutsideBuildHeight(pos)) - return true; - if (!world.isBlockPresent(pos)) - throw AssemblyException.unloadedChunk(pos); - if (isAnchoringBlockAt(pos)) - return true; - BlockState state = world.getBlockState(pos); - if (!BlockMovementChecks.isMovementNecessary(state, world, pos)) - return true; - if (!movementAllowed(state, world, pos)) - throw AssemblyException.unmovableBlock(pos, state); - if (state.getBlock() instanceof AbstractChassisBlock - && !moveChassis(world, pos, forcedDirection, frontier, visited)) - return false; - - if (AllBlocks.ADJUSTABLE_CRATE.has(state)) - AdjustableCrateBlock.splitCrate(world, pos); - - if (AllBlocks.BELT.has(state)) - moveBelt(pos, frontier, visited, state); - - if (AllBlocks.GANTRY_CARRIAGE.has(state)) - moveGantryPinion(world, pos, frontier, visited, state); - - if (AllBlocks.GANTRY_SHAFT.has(state)) - moveGantryShaft(world, pos, frontier, visited, state); - - if (AllBlocks.STICKER.has(state) && state.get(StickerBlock.EXTENDED)) { - Direction offset = state.get(StickerBlock.FACING); - BlockPos attached = pos.offset(offset); - if (!visited.contains(attached) - && !BlockMovementChecks.isNotSupportive(world.getBlockState(attached), offset.getOpposite())) - frontier.add(attached); - } - - // Bearings potentially create stabilized sub-contraptions - if (AllBlocks.MECHANICAL_BEARING.has(state)) - moveBearing(pos, frontier, visited, state); - - // WM Bearings attach their structure when moved - if (AllBlocks.WINDMILL_BEARING.has(state)) - moveWindmillBearing(pos, frontier, visited, state); - - // Seats transfer their passenger to the contraption - if (state.getBlock() instanceof SeatBlock) - moveSeat(world, pos); - - // Pulleys drag their rope and their attached structure - if (state.getBlock() instanceof PulleyBlock) - movePulley(world, pos, frontier, visited); - - // Pistons drag their attaches poles and extension - if (state.getBlock() instanceof MechanicalPistonBlock) - if (!moveMechanicalPiston(world, pos, frontier, visited, state)) - return false; - if (isExtensionPole(state)) - movePistonPole(world, pos, frontier, visited, state); - if (isPistonHead(state)) - movePistonHead(world, pos, frontier, visited, state); - - // Cart assemblers attach themselves - BlockPos posDown = pos.down(); - BlockState stateBelow = world.getBlockState(posDown); - if (!visited.contains(posDown) && AllBlocks.CART_ASSEMBLER.has(stateBelow)) - frontier.add(posDown); - - Map superglue = SuperGlueHandler.gatherGlue(world, pos); - - // Slime blocks and super glue drag adjacent blocks if possible - for (Direction offset : Iterate.directions) { - BlockPos offsetPos = pos.offset(offset); - BlockState blockState = world.getBlockState(offsetPos); - if (isAnchoringBlockAt(offsetPos)) - continue; - if (!movementAllowed(blockState, world, offsetPos)) { - if (offset == forcedDirection) - throw AssemblyException.unmovableBlock(pos, state); - continue; - } - - boolean wasVisited = visited.contains(offsetPos); - boolean faceHasGlue = superglue.containsKey(offset); - boolean blockAttachedTowardsFace = - BlockMovementChecks.isBlockAttachedTowards(blockState, world, offsetPos, offset.getOpposite()); - boolean brittle = BlockMovementChecks.isBrittle(blockState); - boolean canStick = !brittle && state.canStickTo(blockState) && blockState.canStickTo(state); - if (canStick) { - if (state.getPushReaction() == PushReaction.PUSH_ONLY - || blockState.getPushReaction() == PushReaction.PUSH_ONLY) { - canStick = false; - } - if (BlockMovementChecks.isNotSupportive(state, offset)) { - canStick = false; - } - if (BlockMovementChecks.isNotSupportive(blockState, offset.getOpposite())) { - canStick = false; - } - } - - if (!wasVisited && (canStick || blockAttachedTowardsFace || faceHasGlue - || (offset == forcedDirection && !BlockMovementChecks.isNotSupportive(state, forcedDirection)))) - frontier.add(offsetPos); - if (faceHasGlue) - addGlue(superglue.get(offset)); - } - - addBlock(pos, capture(world, pos)); - if (blocks.size() <= AllConfigs.SERVER.kinetics.maxBlocksMoved.get()) - return true; - else - throw AssemblyException.structureTooLarge(); - } - - protected void movePistonHead(World world, BlockPos pos, Queue frontier, Set visited, - BlockState state) { - Direction direction = state.get(MechanicalPistonHeadBlock.FACING); - BlockPos offset = pos.offset(direction.getOpposite()); - if (!visited.contains(offset)) { - BlockState blockState = world.getBlockState(offset); - if (isExtensionPole(blockState) && blockState.get(PistonExtensionPoleBlock.FACING) - .getAxis() == direction.getAxis()) - frontier.add(offset); - if (blockState.getBlock() instanceof MechanicalPistonBlock) { - Direction pistonFacing = blockState.get(MechanicalPistonBlock.FACING); - if (pistonFacing == direction && blockState.get(MechanicalPistonBlock.STATE) == PistonState.EXTENDED) - frontier.add(offset); - } - } - if (state.get(MechanicalPistonHeadBlock.TYPE) == PistonType.STICKY) { - BlockPos attached = pos.offset(direction); - if (!visited.contains(attached)) - frontier.add(attached); - } - } - - protected void movePistonPole(World world, BlockPos pos, Queue frontier, Set visited, - BlockState state) { - for (Direction d : Iterate.directionsInAxis(state.get(PistonExtensionPoleBlock.FACING) - .getAxis())) { - BlockPos offset = pos.offset(d); - if (!visited.contains(offset)) { - BlockState blockState = world.getBlockState(offset); - if (isExtensionPole(blockState) && blockState.get(PistonExtensionPoleBlock.FACING) - .getAxis() == d.getAxis()) - frontier.add(offset); - if (isPistonHead(blockState) && blockState.get(MechanicalPistonHeadBlock.FACING) - .getAxis() == d.getAxis()) - frontier.add(offset); - if (blockState.getBlock() instanceof MechanicalPistonBlock) { - Direction pistonFacing = blockState.get(MechanicalPistonBlock.FACING); - if (pistonFacing == d || pistonFacing == d.getOpposite() - && blockState.get(MechanicalPistonBlock.STATE) == PistonState.EXTENDED) - frontier.add(offset); - } - } - } - } - - protected void moveGantryPinion(World world, BlockPos pos, Queue frontier, Set visited, - BlockState state) { - BlockPos offset = pos.offset(state.get(GantryCarriageBlock.FACING)); - if (!visited.contains(offset)) - frontier.add(offset); - Axis rotationAxis = ((IRotate) state.getBlock()).getRotationAxis(state); - for (Direction d : Iterate.directionsInAxis(rotationAxis)) { - offset = pos.offset(d); - BlockState offsetState = world.getBlockState(offset); - if (AllBlocks.GANTRY_SHAFT.has(offsetState) && offsetState.get(GantryShaftBlock.FACING) - .getAxis() == d.getAxis()) - if (!visited.contains(offset)) - frontier.add(offset); - } - } - - protected void moveGantryShaft(World world, BlockPos pos, Queue frontier, Set visited, - BlockState state) { - for (Direction d : Iterate.directions) { - BlockPos offset = pos.offset(d); - if (!visited.contains(offset)) { - BlockState offsetState = world.getBlockState(offset); - Direction facing = state.get(GantryShaftBlock.FACING); - if (d.getAxis() == facing.getAxis() && AllBlocks.GANTRY_SHAFT.has(offsetState) - && offsetState.get(GantryShaftBlock.FACING) == facing) - frontier.add(offset); - else if (AllBlocks.GANTRY_CARRIAGE.has(offsetState) && offsetState.get(GantryCarriageBlock.FACING) == d) - frontier.add(offset); - } - } - } - - private void moveWindmillBearing(BlockPos pos, Queue frontier, Set visited, BlockState state) { - Direction facing = state.get(WindmillBearingBlock.FACING); - BlockPos offset = pos.offset(facing); - if (!visited.contains(offset)) - frontier.add(offset); - } - - private void moveBearing(BlockPos pos, Queue frontier, Set visited, BlockState state) { - Direction facing = state.get(MechanicalBearingBlock.FACING); - if (!canBeStabilized(facing, pos.subtract(anchor))) { - BlockPos offset = pos.offset(facing); - if (!visited.contains(offset)) - frontier.add(offset); - return; - } - pendingSubContraptions.add(new BlockFace(pos, facing)); - } - - private void moveBelt(BlockPos pos, Queue frontier, Set visited, BlockState state) { - BlockPos nextPos = BeltBlock.nextSegmentPosition(state, pos, true); - BlockPos prevPos = BeltBlock.nextSegmentPosition(state, pos, false); - if (nextPos != null && !visited.contains(nextPos)) - frontier.add(nextPos); - if (prevPos != null && !visited.contains(prevPos)) - frontier.add(prevPos); - } - - private void moveSeat(World world, BlockPos pos) { - BlockPos local = toLocalPos(pos); - getSeats().add(local); - List seatsEntities = world.getEntitiesWithinAABB(SeatEntity.class, new AxisAlignedBB(pos)); - if (!seatsEntities.isEmpty()) { - SeatEntity seat = seatsEntities.get(0); - List passengers = seat.getPassengers(); - if (!passengers.isEmpty()) - initialPassengers.put(local, passengers.get(0)); - } - } - - private void movePulley(World world, BlockPos pos, Queue frontier, Set visited) { - int limit = AllConfigs.SERVER.kinetics.maxRopeLength.get(); - BlockPos ropePos = pos; - while (limit-- >= 0) { - ropePos = ropePos.down(); - if (!world.isBlockPresent(ropePos)) - break; - BlockState ropeState = world.getBlockState(ropePos); - Block block = ropeState.getBlock(); - if (!(block instanceof RopeBlock) && !(block instanceof MagnetBlock)) { - if (!visited.contains(ropePos)) - frontier.add(ropePos); - break; - } - addBlock(ropePos, capture(world, ropePos)); - } - } - - private boolean moveMechanicalPiston(World world, BlockPos pos, Queue frontier, Set visited, - BlockState state) throws AssemblyException { - Direction direction = state.get(MechanicalPistonBlock.FACING); - PistonState pistonState = state.get(MechanicalPistonBlock.STATE); - if (pistonState == PistonState.MOVING) - return false; - - BlockPos offset = pos.offset(direction.getOpposite()); - if (!visited.contains(offset)) { - BlockState poleState = world.getBlockState(offset); - if (AllBlocks.PISTON_EXTENSION_POLE.has(poleState) && poleState.get(PistonExtensionPoleBlock.FACING) - .getAxis() == direction.getAxis()) - frontier.add(offset); - } - - if (pistonState == PistonState.EXTENDED || MechanicalPistonBlock.isStickyPiston(state)) { - offset = pos.offset(direction); - if (!visited.contains(offset)) - frontier.add(offset); - } - - return true; - } - - private boolean moveChassis(World world, BlockPos pos, Direction movementDirection, Queue frontier, - Set visited) { - TileEntity te = world.getTileEntity(pos); - if (!(te instanceof ChassisTileEntity)) - return false; - ChassisTileEntity chassis = (ChassisTileEntity) te; - chassis.addAttachedChasses(frontier, visited); - List includedBlockPositions = chassis.getIncludedBlockPositions(movementDirection, false); - if (includedBlockPositions == null) - return false; - for (BlockPos blockPos : includedBlockPositions) - if (!visited.contains(blockPos)) - frontier.add(blockPos); - return true; - } - - protected Pair capture(World world, BlockPos pos) { - BlockState blockstate = world.getBlockState(pos); - if (blockstate.getBlock() instanceof ChestBlock) - blockstate = blockstate.with(ChestBlock.TYPE, ChestType.SINGLE); - if (AllBlocks.ADJUSTABLE_CRATE.has(blockstate)) - blockstate = blockstate.with(AdjustableCrateBlock.DOUBLE, false); - if (AllBlocks.REDSTONE_CONTACT.has(blockstate)) - blockstate = blockstate.with(RedstoneContactBlock.POWERED, true); - if (blockstate.getBlock() instanceof AbstractButtonBlock) { - blockstate = blockstate.with(AbstractButtonBlock.POWERED, false); - world.getPendingBlockTicks() - .scheduleTick(pos, blockstate.getBlock(), -1); - } - if (blockstate.getBlock() instanceof PressurePlateBlock) { - blockstate = blockstate.with(PressurePlateBlock.POWERED, false); - world.getPendingBlockTicks() - .scheduleTick(pos, blockstate.getBlock(), -1); - } - CompoundNBT compoundnbt = getTileEntityNBT(world, pos); - TileEntity tileentity = world.getTileEntity(pos); - return Pair.of(new BlockInfo(pos, blockstate, compoundnbt), tileentity); - } - - protected void addBlock(BlockPos pos, Pair pair) { - BlockInfo captured = pair.getKey(); - BlockPos localPos = pos.subtract(anchor); - BlockInfo blockInfo = new BlockInfo(localPos, captured.state, captured.nbt); - - if (blocks.put(localPos, blockInfo) != null) - return; - bounds = bounds.union(new AxisAlignedBB(localPos)); - - TileEntity te = pair.getValue(); - if (te != null && MountedStorage.canUseAsStorage(te)) - storage.put(localPos, new MountedStorage(te)); - if (te != null && MountedFluidStorage.canUseAsStorage(te)) - fluidStorage.put(localPos, new MountedFluidStorage(te)); - if (AllMovementBehaviours.contains(captured.state.getBlock())) - actors.add(MutablePair.of(blockInfo, null)); - if (te instanceof CreativeCrateTileEntity - && ((CreativeCrateTileEntity) te).getBehaviour(FilteringBehaviour.TYPE) - .getFilter() - .isEmpty()) - hasUniversalCreativeCrate = true; - } - - @Nullable - protected CompoundNBT getTileEntityNBT(World world, BlockPos pos) { - TileEntity tileentity = world.getTileEntity(pos); - if (tileentity == null) - return null; - CompoundNBT nbt = tileentity.write(new CompoundNBT()); - nbt.remove("x"); - nbt.remove("y"); - nbt.remove("z"); - - if (tileentity instanceof FluidTankTileEntity && nbt.contains("Controller")) - nbt.put("Controller", - NBTUtil.writeBlockPos(toLocalPos(NBTUtil.readBlockPos(nbt.getCompound("Controller"))))); - - return nbt; - } - - protected void addGlue(SuperGlueEntity entity) { - BlockPos pos = entity.getHangingPosition(); - Direction direction = entity.getFacingDirection(); - this.superglue.add(Pair.of(toLocalPos(pos), direction)); - glueToRemove.add(entity); - } - - protected BlockPos toLocalPos(BlockPos globalPos) { - return globalPos.subtract(anchor); - } - - protected boolean movementAllowed(BlockState state, World world, BlockPos pos) { - return BlockMovementChecks.isMovementAllowed(state, world, pos); - } - - protected boolean isAnchoringBlockAt(BlockPos pos) { - return pos.equals(anchor); - } - - public void readNBT(World world, CompoundNBT nbt, boolean spawnData) { - blocks.clear(); - presentTileEntities.clear(); - specialRenderedTileEntities.clear(); - - INBT blocks = nbt.get("Blocks"); - // used to differentiate between the 'old' and the paletted serialization - boolean usePalettedDeserialization = - blocks != null && blocks.getId() == 10 && ((CompoundNBT) blocks).contains("Palette"); - readBlocksCompound(blocks, world, usePalettedDeserialization); - - actors.clear(); - nbt.getList("Actors", 10) - .forEach(c -> { - CompoundNBT comp = (CompoundNBT) c; - BlockInfo info = this.blocks.get(NBTUtil.readBlockPos(comp.getCompound("Pos"))); - MovementContext context = MovementContext.readNBT(world, info, comp, this); - getActors().add(MutablePair.of(info, context)); - }); - - superglue.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Superglue", NBT.TAG_COMPOUND), c -> superglue - .add(Pair.of(NBTUtil.readBlockPos(c.getCompound("Pos")), Direction.byIndex(c.getByte("Direction"))))); - - seats.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Seats", NBT.TAG_COMPOUND), c -> seats.add(NBTUtil.readBlockPos(c))); - - seatMapping.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Passengers", NBT.TAG_COMPOUND), - c -> seatMapping.put(NBTUtil.readUniqueId(NBTHelper.getINBT(c, "Id")), c.getInt("Seat"))); - - stabilizedSubContraptions.clear(); - NBTHelper.iterateCompoundList(nbt.getList("SubContraptions", NBT.TAG_COMPOUND), - c -> stabilizedSubContraptions.put(c.getUniqueId("Id"), BlockFace.fromNBT(c.getCompound("Location")))); - - storage.clear(); - NBTHelper.iterateCompoundList(nbt.getList("Storage", NBT.TAG_COMPOUND), c -> storage - .put(NBTUtil.readBlockPos(c.getCompound("Pos")), MountedStorage.deserialize(c.getCompound("Data")))); - - fluidStorage.clear(); - NBTHelper.iterateCompoundList(nbt.getList("FluidStorage", NBT.TAG_COMPOUND), c -> fluidStorage - .put(NBTUtil.readBlockPos(c.getCompound("Pos")), MountedFluidStorage.deserialize(c.getCompound("Data")))); - - if (spawnData) - fluidStorage.forEach((pos, mfs) -> { - TileEntity tileEntity = presentTileEntities.get(pos); - if (!(tileEntity instanceof FluidTankTileEntity)) - return; - FluidTankTileEntity tank = (FluidTankTileEntity) tileEntity; - IFluidTank tankInventory = tank.getTankInventory(); - if (tankInventory instanceof FluidTank) - ((FluidTank) tankInventory).setFluid(mfs.tank.getFluid()); - tank.getFluidLevel() - .start(tank.getFillState()); - mfs.assignTileEntity(tank); - }); - - IItemHandlerModifiable[] handlers = new IItemHandlerModifiable[storage.size()]; - int index = 0; - for (MountedStorage mountedStorage : storage.values()) - handlers[index++] = mountedStorage.getItemHandler(); - - IFluidHandler[] fluidHandlers = new IFluidHandler[fluidStorage.size()]; - index = 0; - for (MountedFluidStorage mountedStorage : fluidStorage.values()) - fluidHandlers[index++] = mountedStorage.getFluidHandler(); - - inventory = new ContraptionInvWrapper(handlers); - fluidInventory = new CombinedTankWrapper(fluidHandlers); - - if (nbt.contains("BoundsFront")) - bounds = NBTHelper.readAABB(nbt.getList("BoundsFront", 5)); - - stalled = nbt.getBoolean("Stalled"); - hasUniversalCreativeCrate = nbt.getBoolean("BottomlessSupply"); - anchor = NBTUtil.readBlockPos(nbt.getCompound("Anchor")); - } - - public CompoundNBT writeNBT(boolean spawnPacket) { - CompoundNBT nbt = new CompoundNBT(); - nbt.putString("Type", getType().id); - - CompoundNBT blocksNBT = writeBlocksCompound(); - - ListNBT actorsNBT = new ListNBT(); - for (MutablePair actor : getActors()) { - CompoundNBT compound = new CompoundNBT(); - compound.put("Pos", NBTUtil.writeBlockPos(actor.left.pos)); - AllMovementBehaviours.of(actor.left.state) - .writeExtraData(actor.right); - actor.right.writeToNBT(compound); - actorsNBT.add(compound); - } - - ListNBT superglueNBT = new ListNBT(); - ListNBT storageNBT = new ListNBT(); - if (!spawnPacket) { - for (Pair glueEntry : superglue) { - CompoundNBT c = new CompoundNBT(); - c.put("Pos", NBTUtil.writeBlockPos(glueEntry.getKey())); - c.putByte("Direction", (byte) glueEntry.getValue() - .getIndex()); - superglueNBT.add(c); - } - - for (BlockPos pos : storage.keySet()) { - CompoundNBT c = new CompoundNBT(); - MountedStorage mountedStorage = storage.get(pos); - if (!mountedStorage.isValid()) - continue; - c.put("Pos", NBTUtil.writeBlockPos(pos)); - c.put("Data", mountedStorage.serialize()); - storageNBT.add(c); - } - } - - ListNBT fluidStorageNBT = new ListNBT(); - for (BlockPos pos : fluidStorage.keySet()) { - CompoundNBT c = new CompoundNBT(); - MountedFluidStorage mountedStorage = fluidStorage.get(pos); - if (!mountedStorage.isValid()) - continue; - c.put("Pos", NBTUtil.writeBlockPos(pos)); - c.put("Data", mountedStorage.serialize()); - fluidStorageNBT.add(c); - } - - nbt.put("Seats", NBTHelper.writeCompoundList(getSeats(), NBTUtil::writeBlockPos)); - nbt.put("Passengers", NBTHelper.writeCompoundList(getSeatMapping().entrySet(), e -> { - CompoundNBT tag = new CompoundNBT(); - tag.put("Id", NBTUtil.fromUuid(e.getKey())); - tag.putInt("Seat", e.getValue()); - return tag; - })); - - nbt.put("SubContraptions", NBTHelper.writeCompoundList(stabilizedSubContraptions.entrySet(), e -> { - CompoundNBT tag = new CompoundNBT(); - tag.putUniqueId("Id", e.getKey()); - tag.put("Location", e.getValue() - .serializeNBT()); - return tag; - })); - - nbt.put("Blocks", blocksNBT); - nbt.put("Actors", actorsNBT); - nbt.put("Superglue", superglueNBT); - nbt.put("Storage", storageNBT); - nbt.put("FluidStorage", fluidStorageNBT); - nbt.put("Anchor", NBTUtil.writeBlockPos(anchor)); - nbt.putBoolean("Stalled", stalled); - nbt.putBoolean("BottomlessSupply", hasUniversalCreativeCrate); - - if (bounds != null) { - ListNBT bb = NBTHelper.writeAABB(bounds); - nbt.put("BoundsFront", bb); - } - - return nbt; - } - - private CompoundNBT writeBlocksCompound() { - CompoundNBT compound = new CompoundNBT(); - HashMapPalette palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> { - throw new IllegalStateException("Palette Map index exceeded maximum"); - }, NBTUtil::readBlockState, NBTUtil::writeBlockState); - ListNBT blockList = new ListNBT(); - - for (BlockInfo block : this.blocks.values()) { - int id = palette.idFor(block.state); - CompoundNBT c = new CompoundNBT(); - c.putLong("Pos", block.pos.toLong()); - c.putInt("State", id); - if (block.nbt != null) - c.put("Data", block.nbt); - blockList.add(c); - } - - ListNBT paletteNBT = new ListNBT(); - palette.writePaletteToList(paletteNBT); - compound.put("Palette", paletteNBT); - compound.put("BlockList", blockList); - - return compound; - } - - private void readBlocksCompound(INBT compound, World world, boolean usePalettedDeserialization) { - HashMapPalette palette = null; - ListNBT blockList; - if (usePalettedDeserialization) { - CompoundNBT c = ((CompoundNBT) compound); - palette = new HashMapPalette<>(GameData.getBlockStateIDMap(), 16, (i, s) -> { - throw new IllegalStateException("Palette Map index exceeded maximum"); - }, NBTUtil::readBlockState, NBTUtil::writeBlockState); - palette.read(c.getList("Palette", 10)); - - blockList = c.getList("BlockList", 10); - } else { - blockList = (ListNBT) compound; - } - - HashMapPalette finalPalette = palette; - blockList.forEach(e -> { - CompoundNBT c = (CompoundNBT) e; - - BlockInfo info = usePalettedDeserialization ? readBlockInfo(c, finalPalette) : legacyReadBlockInfo(c); - - this.blocks.put(info.pos, info); - - if (world.isRemote) { - Block block = info.state.getBlock(); - CompoundNBT tag = info.nbt; - MovementBehaviour movementBehaviour = AllMovementBehaviours.of(block); - if (tag == null) - return; - - tag.putInt("x", info.pos.getX()); - tag.putInt("y", info.pos.getY()); - tag.putInt("z", info.pos.getZ()); - - TileEntity te = TileEntity.createFromTag(info.state, tag); - if (te == null) - return; - te.setLocation(new ContraptionTileWorld(world, te, info), te.getPos()); - if (te instanceof KineticTileEntity) - ((KineticTileEntity) te).setSpeed(0); - te.getBlockState(); - - if (movementBehaviour == null || !movementBehaviour.hasSpecialInstancedRendering()) - maybeInstancedTileEntities.add(te); - - if (movementBehaviour != null && !movementBehaviour.renderAsNormalTileEntity()) - return; - - presentTileEntities.put(info.pos, te); - specialRenderedTileEntities.add(te); - } - - }); - } - - private static BlockInfo readBlockInfo(CompoundNBT blockListEntry, HashMapPalette palette) { - return new BlockInfo(BlockPos.fromLong(blockListEntry.getLong("Pos")), - Objects.requireNonNull(palette.get(blockListEntry.getInt("State"))), - blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); - } - - private static BlockInfo legacyReadBlockInfo(CompoundNBT blockListEntry) { - return new BlockInfo(NBTUtil.readBlockPos(blockListEntry.getCompound("Pos")), - NBTUtil.readBlockState(blockListEntry.getCompound("Block")), - blockListEntry.contains("Data") ? blockListEntry.getCompound("Data") : null); - } - - public void removeBlocksFromWorld(World world, BlockPos offset) { - storage.values() - .forEach(MountedStorage::removeStorageFromWorld); - fluidStorage.values() - .forEach(MountedFluidStorage::removeStorageFromWorld); - glueToRemove.forEach(SuperGlueEntity::remove); - - for (boolean brittles : Iterate.trueAndFalse) { - for (Iterator iterator = blocks.values() - .iterator(); iterator.hasNext();) { - BlockInfo block = iterator.next(); - if (brittles != BlockMovementChecks.isBrittle(block.state)) - continue; - - BlockPos add = block.pos.add(anchor) - .add(offset); - if (customBlockRemoval(world, add, block.state)) - continue; - BlockState oldState = world.getBlockState(add); - Block blockIn = oldState.getBlock(); - if (block.state.getBlock() != blockIn) - iterator.remove(); - world.removeTileEntity(add); - int flags = BlockFlags.IS_MOVING | BlockFlags.NO_NEIGHBOR_DROPS | BlockFlags.UPDATE_NEIGHBORS - | BlockFlags.BLOCK_UPDATE | BlockFlags.RERENDER_MAIN_THREAD; - if (blockIn instanceof IWaterLoggable && oldState.contains(BlockStateProperties.WATERLOGGED) - && oldState.get(BlockStateProperties.WATERLOGGED) - .booleanValue()) { - world.setBlockState(add, Blocks.WATER.getDefaultState(), flags); - continue; - } - world.setBlockState(add, Blocks.AIR.getDefaultState(), flags); - } - } - for (BlockInfo block : blocks.values()) { - BlockPos add = block.pos.add(anchor) - .add(offset); -// if (!shouldUpdateAfterMovement(block)) -// continue; - int flags = BlockFlags.IS_MOVING | BlockFlags.DEFAULT; - world.notifyBlockUpdate(add, block.state, Blocks.AIR.getDefaultState(), flags); - block.state.updateDiagonalNeighbors(world, add, flags & -2); - } - } - - public void addBlocksToWorld(World world, StructureTransform transform) { - for (boolean nonBrittles : Iterate.trueAndFalse) { - for (BlockInfo block : blocks.values()) { - if (nonBrittles == BlockMovementChecks.isBrittle(block.state)) - continue; - - BlockPos targetPos = transform.apply(block.pos); - BlockState state = transform.apply(block.state); - - if (customBlockPlacement(world, targetPos, state)) - continue; - - if (nonBrittles) - for (Direction face : Iterate.directions) - state = state.updatePostPlacement(face, world.getBlockState(targetPos.offset(face)), world, - targetPos, targetPos.offset(face)); - - BlockState blockState = world.getBlockState(targetPos); - if (blockState.getBlockHardness(world, targetPos) == -1 || (state.getCollisionShape(world, targetPos) - .isEmpty() - && !blockState.getCollisionShape(world, targetPos) - .isEmpty())) { - if (targetPos.getY() == 0) - targetPos = targetPos.up(); - world.playEvent(2001, targetPos, Block.getStateId(state)); - Block.spawnDrops(state, world, targetPos, null); - continue; - } - if (state.getBlock() instanceof IWaterLoggable && state.contains(BlockStateProperties.WATERLOGGED)) { - FluidState FluidState = world.getFluidState(targetPos); - state = state.with(BlockStateProperties.WATERLOGGED, FluidState.getFluid() == Fluids.WATER); - } - - world.destroyBlock(targetPos, true); - world.setBlockState(targetPos, state, 3 | BlockFlags.IS_MOVING); - - boolean verticalRotation = transform.rotationAxis == null || transform.rotationAxis.isHorizontal(); - verticalRotation = verticalRotation && transform.rotation != Rotation.NONE; - if (verticalRotation) { - if (state.getBlock() instanceof RopeBlock || state.getBlock() instanceof MagnetBlock) - world.destroyBlock(targetPos, true); - } - - TileEntity tileEntity = world.getTileEntity(targetPos); - CompoundNBT tag = block.nbt; - if (tileEntity != null) - tag = NBTProcessors.process(tileEntity, tag, false); - if (tileEntity != null && tag != null) { - tag.putInt("x", targetPos.getX()); - tag.putInt("y", targetPos.getY()); - tag.putInt("z", targetPos.getZ()); - - if (verticalRotation && tileEntity instanceof PulleyTileEntity) { - tag.remove("Offset"); - tag.remove("InitialOffset"); - } - - if (tileEntity instanceof FluidTankTileEntity && tag.contains("LastKnownPos")) - tag.put("LastKnownPos", NBTUtil.writeBlockPos(BlockPos.ZERO.down())); - - tileEntity.fromTag(block.state, tag); - - if (storage.containsKey(block.pos)) { - MountedStorage mountedStorage = storage.get(block.pos); - if (mountedStorage.isValid()) - mountedStorage.addStorageToWorld(tileEntity); - } - - if (fluidStorage.containsKey(block.pos)) { - MountedFluidStorage mountedStorage = fluidStorage.get(block.pos); - if (mountedStorage.isValid()) - mountedStorage.addStorageToWorld(tileEntity); - } - } - } - } - for (BlockInfo block : blocks.values()) { - if (!shouldUpdateAfterMovement(block)) - continue; - BlockPos targetPos = transform.apply(block.pos); - world.markAndNotifyBlock(targetPos, world.getChunkAt(targetPos), block.state, block.state, - BlockFlags.IS_MOVING | BlockFlags.DEFAULT, 512); - } - - for (int i = 0; i < inventory.getSlots(); i++) { - if (!inventory.isSlotExternal(i)) - inventory.setStackInSlot(i, ItemStack.EMPTY); - } - for (int i = 0; i < fluidInventory.getTanks(); i++) - fluidInventory.drain(fluidInventory.getFluidInTank(i), FluidAction.EXECUTE); - - for (Pair pair : superglue) { - BlockPos targetPos = transform.apply(pair.getKey()); - Direction targetFacing = transform.transformFacing(pair.getValue()); - - SuperGlueEntity entity = new SuperGlueEntity(world, targetPos, targetFacing); - if (entity.onValidSurface()) { - if (!world.isRemote) - world.addEntity(entity); - } - } - } - - public void addPassengersToWorld(World world, StructureTransform transform, List seatedEntities) { - for (Entity seatedEntity : seatedEntities) { - if (getSeatMapping().isEmpty()) - continue; - Integer seatIndex = getSeatMapping().get(seatedEntity.getUniqueID()); - BlockPos seatPos = getSeats().get(seatIndex); - seatPos = transform.apply(seatPos); - if (!(world.getBlockState(seatPos) - .getBlock() instanceof SeatBlock)) - continue; - if (SeatBlock.isSeatOccupied(world, seatPos)) - continue; - SeatBlock.sitDown(world, seatPos, seatedEntity); - } - } - - public void startMoving(World world) { - for (MutablePair pair : actors) { - MovementContext context = new MovementContext(world, pair.left, this); - AllMovementBehaviours.of(pair.left.state) - .startMoving(context); - pair.setRight(context); - } - } - - public void stop(World world) { - foreachActor(world, (behaviour, ctx) -> { - behaviour.stopMoving(ctx); - ctx.position = null; - ctx.motion = Vector3d.ZERO; - ctx.relativeMotion = Vector3d.ZERO; - ctx.rotation = v -> v; - }); - } - - public void foreachActor(World world, BiConsumer callBack) { - for (MutablePair pair : actors) - callBack.accept(AllMovementBehaviours.of(pair.getLeft().state), pair.getRight()); - } - - protected boolean shouldUpdateAfterMovement(BlockInfo info) { - if (PointOfInterestType.forState(info.state) - .isPresent()) - return false; - return true; - } - - public void expandBoundsAroundAxis(Axis axis) { - Set blocks = getBlocks().keySet(); - - int radius = (int) (Math.ceil(Math.sqrt(getRadius(blocks, axis)))); - - GridAlignedBB betterBounds = GridAlignedBB.ofRadius(radius); - - GridAlignedBB contraptionBounds = GridAlignedBB.from(bounds); - if (axis == Direction.Axis.X) { - betterBounds.maxX = contraptionBounds.maxX; - betterBounds.minX = contraptionBounds.minX; - } else if (axis == Direction.Axis.Y) { - betterBounds.maxY = contraptionBounds.maxY; - betterBounds.minY = contraptionBounds.minY; - } else if (axis == Direction.Axis.Z) { - betterBounds.maxZ = contraptionBounds.maxZ; - betterBounds.minZ = contraptionBounds.minZ; - } - - bounds = betterBounds.toAABB(); - } - - public void addExtraInventories(Entity entity) {} - - public Map getSeatMapping() { - return seatMapping; - } - - public BlockPos getSeatOf(UUID entityId) { - if (!getSeatMapping().containsKey(entityId)) - return null; - int seatIndex = getSeatMapping().get(entityId); - if (seatIndex >= getSeats().size()) - return null; - return getSeats().get(seatIndex); - } - - public BlockPos getBearingPosOf(UUID subContraptionEntityId) { - if (stabilizedSubContraptions.containsKey(subContraptionEntityId)) - return stabilizedSubContraptions.get(subContraptionEntityId) - .getConnectedPos(); - return null; - } - - public void setSeatMapping(Map seatMapping) { - this.seatMapping = seatMapping; - } - - public List getSeats() { - return seats; - } - - public Map getBlocks() { - return blocks; - } - - public List> getActors() { - return actors; - } - - public void updateContainedFluid(BlockPos localPos, FluidStack containedFluid) { - MountedFluidStorage mountedFluidStorage = fluidStorage.get(localPos); - if (mountedFluidStorage != null) - mountedFluidStorage.updateFluid(containedFluid); - } - - @OnlyIn(Dist.CLIENT) - public ContraptionLighter makeLighter() { - return new EmptyLighter(this); - } - - private void gatherBBsOffThread() { - getContraptionWorld(); - simplifiedEntityColliderProvider = CompletableFuture.supplyAsync(() -> { - VoxelShape combinedShape = VoxelShapes.empty(); - for (Entry entry : blocks.entrySet()) { - BlockInfo info = entry.getValue(); - BlockPos localPos = entry.getKey(); - VoxelShape collisionShape = info.state.getCollisionShape(world, localPos); - if (collisionShape.isEmpty()) - continue; - combinedShape = VoxelShapes.combine(combinedShape, - collisionShape.withOffset(localPos.getX(), localPos.getY(), localPos.getZ()), IBooleanFunction.OR); - } - return combinedShape.simplify() - .toBoundingBoxList(); - }) - .thenAccept(r -> { - simplifiedEntityColliders = Optional.of(r); - simplifiedEntityColliderProvider = null; - }); - } - - public static float getRadius(Set blocks, Direction.Axis axis) { - switch (axis) { - case X: - return getMaxDistSqr(blocks, BlockPos::getY, BlockPos::getZ); - case Y: - return getMaxDistSqr(blocks, BlockPos::getX, BlockPos::getZ); - case Z: - return getMaxDistSqr(blocks, BlockPos::getX, BlockPos::getY); - } - - throw new IllegalStateException("Impossible axis"); - } - - public static float getMaxDistSqr(Set blocks, ICoordinate one, ICoordinate other) { - float maxDistSq = -1; - for (BlockPos pos : blocks) { - float a = one.get(pos); - float b = other.get(pos); - - float distSq = a * a + b * b; - - if (distSq > maxDistSq) - maxDistSq = distSq; - } - - return maxDistSq; - } - - private static class ContraptionTileWorld extends WrappedWorld implements IFlywheelWorld { - - private final TileEntity te; - private final BlockInfo info; - - public ContraptionTileWorld(World world, TileEntity te, BlockInfo info) { - super(world); - this.te = te; - this.info = info; - } - - @Override - public BlockState getBlockState(BlockPos pos) { - if (!pos.equals(te.getPos())) - return Blocks.AIR.getDefaultState(); - return info.state; - } - - @Override - public boolean isBlockPresent(BlockPos pos) { - return pos.equals(te.getPos()); - } - } - - public static class ContraptionInvWrapper extends CombinedInvWrapper { - protected final boolean isExternal; - - public ContraptionInvWrapper(boolean isExternal, IItemHandlerModifiable... itemHandler) { - super(itemHandler); - this.isExternal = isExternal; - } - - public ContraptionInvWrapper(IItemHandlerModifiable... itemHandler) { - this(false, itemHandler); - } - - public boolean isSlotExternal(int slot) { - if (isExternal) - return true; - IItemHandlerModifiable handler = getHandlerFromIndex(getIndexForSlot(slot)); - return handler instanceof ContraptionInvWrapper && ((ContraptionInvWrapper) handler).isSlotExternal(slot); - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java deleted file mode 100644 index 0c0bee7e1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java +++ /dev/null @@ -1,584 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import static net.minecraft.entity.Entity.collideBoundingBoxHeuristically; -import static net.minecraft.entity.Entity.horizontalMag; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Stream; - -import org.apache.commons.lang3.mutable.MutableBoolean; -import org.apache.commons.lang3.mutable.MutableFloat; -import org.apache.commons.lang3.mutable.MutableInt; -import org.apache.commons.lang3.mutable.MutableObject; - -import com.google.common.base.Predicates; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllMovementBehaviours; -import com.simibubi.create.content.contraptions.components.actors.BlockBreakingMovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity.ContraptionRotationState; -import com.simibubi.create.content.contraptions.components.structureMovement.sync.ClientMotionPacket; -import com.simibubi.create.foundation.collision.ContinuousOBBCollider.ContinuousSeparationManifold; -import com.simibubi.create.foundation.collision.Matrix3d; -import com.simibubi.create.foundation.collision.OrientedBB; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.CocoaBlock; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.ReuseableStream; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.IBooleanFunction; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; - -public class ContraptionCollider { - - enum PlayerType { - NONE, CLIENT, REMOTE, SERVER - } - - static void collideEntities(AbstractContraptionEntity contraptionEntity) { - World world = contraptionEntity.getEntityWorld(); - Contraption contraption = contraptionEntity.getContraption(); - AxisAlignedBB bounds = contraptionEntity.getBoundingBox(); - - if (contraption == null) - return; - if (bounds == null) - return; - - Vector3d contraptionPosition = contraptionEntity.getPositionVec(); - Vector3d contraptionMotion = contraptionPosition.subtract(contraptionEntity.getPrevPositionVec()); - Vector3d anchorVec = contraptionEntity.getAnchorVec(); - ContraptionRotationState rotation = null; - - // After death, multiple refs to the client player may show up in the area - boolean skipClientPlayer = false; - - List entitiesWithinAABB = world.getEntitiesWithinAABB(Entity.class, bounds.grow(2) - .expand(0, 32, 0), contraptionEntity::canCollideWith); - for (Entity entity : entitiesWithinAABB) { - - PlayerType playerType = getPlayerType(entity); - if (playerType == PlayerType.REMOTE) - continue; - - if (playerType == PlayerType.SERVER && entity instanceof ServerPlayerEntity) { - ((ServerPlayerEntity) entity).connection.floatingTickCount = 0; - continue; - } - - if (playerType == PlayerType.CLIENT) - if (skipClientPlayer) - continue; - else - skipClientPlayer = true; - - // Init matrix - if (rotation == null) - rotation = contraptionEntity.getRotationState(); - Matrix3d rotationMatrix = rotation.asMatrix(); - - // Transform entity position and motion to local space - Vector3d entityPosition = entity.getPositionVec(); - AxisAlignedBB entityBounds = entity.getBoundingBox(); - Vector3d motion = entity.getMotion(); - float yawOffset = rotation.getYawOffset(); - Vector3d position = getWorldToLocalTranslation(entity, anchorVec, rotationMatrix, yawOffset); - - // Prepare entity bounds - AxisAlignedBB localBB = entityBounds.offset(position) - .grow(1.0E-7D); - OrientedBB obb = new OrientedBB(localBB); - obb.setRotation(rotationMatrix); - motion = motion.subtract(contraptionMotion); - motion = rotationMatrix.transform(motion); - - // Use simplified bbs when present - final Vector3d motionCopy = motion; - List collidableBBs = contraption.simplifiedEntityColliders.orElseGet(() -> { - - // Else find 'nearby' individual block shapes to collide with - List bbs = new ArrayList<>(); - ReuseableStream potentialHits = - getPotentiallyCollidedShapes(world, contraption, localBB.expand(motionCopy)); - potentialHits.createStream() - .forEach(shape -> shape.toBoundingBoxList() - .forEach(bbs::add)); - return bbs; - - }); - - MutableObject collisionResponse = new MutableObject<>(Vector3d.ZERO); - MutableObject normal = new MutableObject<>(Vector3d.ZERO); - MutableObject location = new MutableObject<>(Vector3d.ZERO); - MutableBoolean surfaceCollision = new MutableBoolean(false); - MutableFloat temporalResponse = new MutableFloat(1); - Vector3d obbCenter = obb.getCenter(); - - // Apply separation maths - boolean doHorizontalPass = !rotation.hasVerticalRotation(); - for (boolean horizontalPass : Iterate.trueAndFalse) { - boolean verticalPass = !horizontalPass || !doHorizontalPass; - - for (AxisAlignedBB bb : collidableBBs) { - Vector3d currentResponse = collisionResponse.getValue(); - Vector3d currentCenter = obbCenter.add(currentResponse); - - if (Math.abs(currentCenter.x - bb.getCenter().x) - entityBounds.getXSize() - 1 > bb.getXSize() / 2) - continue; - if (Math.abs((currentCenter.y + motion.y) - bb.getCenter().y) - entityBounds.getYSize() - - 1 > bb.getYSize() / 2) - continue; - if (Math.abs(currentCenter.z - bb.getCenter().z) - entityBounds.getZSize() - 1 > bb.getZSize() / 2) - continue; - - obb.setCenter(currentCenter); - ContinuousSeparationManifold intersect = obb.intersect(bb, motion); - - if (intersect == null) - continue; - if (verticalPass && surfaceCollision.isFalse()) - surfaceCollision.setValue(intersect.isSurfaceCollision()); - - double timeOfImpact = intersect.getTimeOfImpact(); - boolean isTemporal = timeOfImpact > 0 && timeOfImpact < 1; - Vector3d collidingNormal = intersect.getCollisionNormal(); - Vector3d collisionPosition = intersect.getCollisionPosition(); - - if (!isTemporal) { - Vector3d separation = intersect.asSeparationVec(entity.stepHeight); - if (separation != null && !separation.equals(Vector3d.ZERO)) { - collisionResponse.setValue(currentResponse.add(separation)); - timeOfImpact = 0; - } - } - - boolean nearest = timeOfImpact >= 0 && temporalResponse.getValue() > timeOfImpact; - if (collidingNormal != null && nearest) - normal.setValue(collidingNormal); - if (collisionPosition != null && nearest) - location.setValue(collisionPosition); - - if (isTemporal) { - if (temporalResponse.getValue() > timeOfImpact) - temporalResponse.setValue(timeOfImpact); - } - } - - if (verticalPass) - break; - - boolean noVerticalMotionResponse = temporalResponse.getValue() == 1; - boolean noVerticalCollision = collisionResponse.getValue().y == 0; - if (noVerticalCollision && noVerticalMotionResponse) - break; - - // Re-run collisions with horizontal offset - collisionResponse.setValue(collisionResponse.getValue() - .mul(129 / 128f, 0, 129 / 128f)); - continue; - } - - // Resolve collision - Vector3d entityMotion = entity.getMotion(); - Vector3d entityMotionNoTemporal = entityMotion; - Vector3d collisionNormal = normal.getValue(); - Vector3d collisionLocation = location.getValue(); - Vector3d totalResponse = collisionResponse.getValue(); - boolean hardCollision = !totalResponse.equals(Vector3d.ZERO); - boolean temporalCollision = temporalResponse.getValue() != 1; - Vector3d motionResponse = !temporalCollision ? motion - : motion.normalize() - .scale(motion.length() * temporalResponse.getValue()); - - rotationMatrix.transpose(); - motionResponse = rotationMatrix.transform(motionResponse) - .add(contraptionMotion); - totalResponse = rotationMatrix.transform(totalResponse); - totalResponse = VecHelper.rotate(totalResponse, yawOffset, Axis.Y); - collisionNormal = rotationMatrix.transform(collisionNormal); - collisionNormal = VecHelper.rotate(collisionNormal, yawOffset, Axis.Y); - collisionNormal = collisionNormal.normalize(); - collisionLocation = rotationMatrix.transform(collisionLocation); - collisionLocation = VecHelper.rotate(collisionLocation, yawOffset, Axis.Y); - rotationMatrix.transpose(); - - double bounce = 0; - double slide = 0; - - if (!collisionLocation.equals(Vector3d.ZERO)) { - collisionLocation = collisionLocation.add(entity.getPositionVec() - .add(entity.getBoundingBox() - .getCenter()) - .scale(.5f)); - if (temporalCollision) - collisionLocation = collisionLocation.add(0, motionResponse.y, 0); - BlockPos pos = new BlockPos(contraptionEntity.toLocalVector(collisionLocation, 0)); - if (contraption.getBlocks() - .containsKey(pos)) { - BlockState blockState = contraption.getBlocks() - .get(pos).state; - bounce = BlockHelper.getBounceMultiplier(blockState.getBlock()); - slide = Math.max(0, blockState.getSlipperiness(contraption.world, pos, entity) - .6f); - } - } - - boolean hasNormal = !collisionNormal.equals(Vector3d.ZERO); - boolean anyCollision = hardCollision || temporalCollision; - - if (bounce > 0 && hasNormal && anyCollision && bounceEntity(entity, collisionNormal, contraptionEntity, bounce)) { - entity.world.playSound(playerType == PlayerType.CLIENT ? (PlayerEntity) entity : null, - entity.getX(), entity.getY(), entity.getZ(), SoundEvents.BLOCK_SLIME_BLOCK_FALL, - SoundCategory.BLOCKS, .5f, 1); - continue; - } - - if (temporalCollision) { - double idealVerticalMotion = motionResponse.y; - if (idealVerticalMotion != entityMotion.y) { - entity.setMotion(entityMotion.mul(1, 0, 1) - .add(0, idealVerticalMotion, 0)); - entityMotion = entity.getMotion(); - } - } - - if (hardCollision) { - double motionX = entityMotion.getX(); - double motionY = entityMotion.getY(); - double motionZ = entityMotion.getZ(); - double intersectX = totalResponse.getX(); - double intersectY = totalResponse.getY(); - double intersectZ = totalResponse.getZ(); - - double horizonalEpsilon = 1 / 128f; - if (motionX != 0 && Math.abs(intersectX) > horizonalEpsilon && motionX > 0 == intersectX < 0) - entityMotion = entityMotion.mul(0, 1, 1); - if (motionY != 0 && intersectY != 0 && motionY > 0 == intersectY < 0) - entityMotion = entityMotion.mul(1, 0, 1) - .add(0, contraptionMotion.y, 0); - if (motionZ != 0 && Math.abs(intersectZ) > horizonalEpsilon && motionZ > 0 == intersectZ < 0) - entityMotion = entityMotion.mul(1, 1, 0); - } - - if (bounce == 0 && slide > 0 && hasNormal && anyCollision && rotation.hasVerticalRotation()) { - double slideFactor = collisionNormal.mul(1, 0, 1) - .length() * 1.25f; - Vector3d motionIn = entityMotionNoTemporal.mul(0, .9, 0) - .add(0, -.01f, 0); - Vector3d slideNormal = collisionNormal.crossProduct(motionIn.crossProduct(collisionNormal)) - .normalize(); - Vector3d newMotion = entityMotion.mul(.85, 0, .85) - .add(slideNormal.scale((.2f + slide) * motionIn.length() * slideFactor) - .add(0, -.1f - collisionNormal.y * .125f, 0)); - entity.setMotion(newMotion); - entityMotion = entity.getMotion(); - } - - if (!hardCollision && surfaceCollision.isFalse()) - continue; - - Vector3d allowedMovement = getAllowedMovement(totalResponse, entity); - entity.setPosition(entityPosition.x + allowedMovement.x, entityPosition.y + allowedMovement.y, - entityPosition.z + allowedMovement.z); - entityPosition = entity.getPositionVec(); - - entity.velocityChanged = true; - Vector3d contactPointMotion = Vector3d.ZERO; - - if (surfaceCollision.isTrue()) { - entity.fallDistance = 0; - contraptionEntity.collidingEntities.put(entity, new MutableInt(0)); - boolean canWalk = bounce != 0 || slide == 0; - if (canWalk || !rotation.hasVerticalRotation()) { - if (canWalk) - entity.onGround = true; - if (entity instanceof ItemEntity) - entityMotion = entityMotion.mul(.5f, 1, .5f); - } - contactPointMotion = contraptionEntity.getContactPointMotion(entityPosition); - allowedMovement = getAllowedMovement(contactPointMotion, entity); - entity.setPosition(entityPosition.x + allowedMovement.x, entityPosition.y, - entityPosition.z + allowedMovement.z); - } - - entity.setMotion(entityMotion); - - if (playerType != PlayerType.CLIENT) - continue; - - double d0 = entity.getX() - entity.prevPosX - contactPointMotion.x; - double d1 = entity.getZ() - entity.prevPosZ - contactPointMotion.z; - float limbSwing = MathHelper.sqrt(d0 * d0 + d1 * d1) * 4.0F; - if (limbSwing > 1.0F) - limbSwing = 1.0F; - AllPackets.channel.sendToServer(new ClientMotionPacket(entityMotion, true, limbSwing)); - } - - } - - static boolean bounceEntity(Entity entity, Vector3d normal, AbstractContraptionEntity contraption, double factor) { - if (factor == 0) - return false; - if (entity.bypassesLandingEffects()) - return false; - - Vector3d contactPointMotion = contraption.getContactPointMotion(entity.getPositionVec()); - Vector3d motion = entity.getMotion().subtract(contactPointMotion); - Vector3d deltav = normal.scale(factor*2*motion.dotProduct(normal)); - if (deltav.dotProduct(deltav) < 0.1f) - return false; - entity.setMotion(entity.getMotion().subtract(deltav)); - return true; - } - - public static Vector3d getWorldToLocalTranslation(Entity entity, AbstractContraptionEntity contraptionEntity) { - return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), contraptionEntity.getRotationState()); - } - - public static Vector3d getWorldToLocalTranslation(Entity entity, Vector3d anchorVec, ContraptionRotationState rotation) { - return getWorldToLocalTranslation(entity, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); - } - - public static Vector3d getWorldToLocalTranslation(Entity entity, Vector3d anchorVec, Matrix3d rotationMatrix, float yawOffset) { - Vector3d entityPosition = entity.getPositionVec(); - Vector3d centerY = new Vector3d(0, entity.getBoundingBox().getYSize() / 2, 0); - Vector3d position = entityPosition; - position = position.add(centerY); - position = position.subtract(VecHelper.CENTER_OF_ORIGIN); - position = position.subtract(anchorVec); - position = VecHelper.rotate(position, -yawOffset, Axis.Y); - position = rotationMatrix.transform(position); - position = position.add(VecHelper.CENTER_OF_ORIGIN); - position = position.subtract(centerY); - position = position.subtract(entityPosition); - return position; - } - - public static Vector3d getWorldToLocalTranslation(Vector3d entity, AbstractContraptionEntity contraptionEntity) { - return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), contraptionEntity.getRotationState()); - } - - public static Vector3d getWorldToLocalTranslation(Vector3d inPos, Vector3d anchorVec, ContraptionRotationState rotation) { - return getWorldToLocalTranslation(inPos, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); - } - - public static Vector3d getWorldToLocalTranslation(Vector3d inPos, Vector3d anchorVec, Matrix3d rotationMatrix, float yawOffset) { - Vector3d position = inPos; - position = position.subtract(VecHelper.CENTER_OF_ORIGIN); - position = position.subtract(anchorVec); - position = VecHelper.rotate(position, -yawOffset, Axis.Y); - position = rotationMatrix.transform(position); - position = position.add(VecHelper.CENTER_OF_ORIGIN); - position = position.subtract(inPos); - return position; - } - - /** From Entity#getAllowedMovement **/ - static Vector3d getAllowedMovement(Vector3d movement, Entity e) { - AxisAlignedBB bb = e.getBoundingBox(); - ISelectionContext ctx = ISelectionContext.forEntity(e); - World world = e.world; - VoxelShape voxelshape = world.getWorldBorder() - .getShape(); - Stream stream = - VoxelShapes.compare(voxelshape, VoxelShapes.create(bb.shrink(1.0E-7D)), IBooleanFunction.AND) - ? Stream.empty() - : Stream.of(voxelshape); - Stream stream1 = world.getEntityCollisions(e, bb.expand(movement), entity -> false); // FIXME: 1.15 equivalent translated correctly? - ReuseableStream reuseablestream = new ReuseableStream<>(Stream.concat(stream1, stream)); - Vector3d allowedMovement = movement.lengthSquared() == 0.0D ? movement - : collideBoundingBoxHeuristically(e, movement, bb, world, ctx, reuseablestream); - boolean xDifferent = movement.x != allowedMovement.x; - boolean yDifferent = movement.y != allowedMovement.y; - boolean zDifferent = movement.z != allowedMovement.z; - boolean notMovingUp = e.isOnGround() || yDifferent && movement.y < 0.0D; - if (e.stepHeight > 0.0F && notMovingUp && (xDifferent || zDifferent)) { - Vector3d allowedStep = collideBoundingBoxHeuristically(e, new Vector3d(movement.x, (double) e.stepHeight, movement.z), - bb, world, ctx, reuseablestream); - Vector3d allowedStepGivenMovement = collideBoundingBoxHeuristically(e, new Vector3d(0.0D, (double) e.stepHeight, 0.0D), - bb.expand(movement.x, 0.0D, movement.z), world, ctx, reuseablestream); - if (allowedStepGivenMovement.y < (double) e.stepHeight) { - Vector3d vec3 = collideBoundingBoxHeuristically(e, new Vector3d(movement.x, 0.0D, movement.z), - bb.offset(allowedStepGivenMovement), world, ctx, reuseablestream).add(allowedStepGivenMovement); - if (horizontalMag(vec3) > horizontalMag(allowedStep)) { - allowedStep = vec3; - } - } - - if (horizontalMag(allowedStep) > horizontalMag(allowedMovement)) { - return allowedStep.add(collideBoundingBoxHeuristically(e, new Vector3d(0.0D, -allowedStep.y + movement.y, 0.0D), - bb.offset(allowedStep), world, ctx, reuseablestream)); - } - } - - return allowedMovement; - } - - private static PlayerType getPlayerType(Entity entity) { - if (!(entity instanceof PlayerEntity)) - return PlayerType.NONE; - if (!entity.world.isRemote) - return PlayerType.SERVER; - MutableBoolean isClient = new MutableBoolean(false); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> isClient.setValue(isClientPlayerEntity(entity))); - return isClient.booleanValue() ? PlayerType.CLIENT : PlayerType.REMOTE; - } - - @OnlyIn(Dist.CLIENT) - private static boolean isClientPlayerEntity(Entity entity) { - return entity instanceof ClientPlayerEntity; - } - - private static ReuseableStream getPotentiallyCollidedShapes(World world, Contraption contraption, - AxisAlignedBB localBB) { - - double height = localBB.getYSize(); - double width = localBB.getXSize(); - double horizontalFactor = (height > width && width != 0) ? height / width : 1; - double verticalFactor = (width > height && height != 0) ? width / height : 1; - AxisAlignedBB blockScanBB = localBB.grow(0.5f); - blockScanBB = blockScanBB.grow(horizontalFactor, verticalFactor, horizontalFactor); - - BlockPos min = new BlockPos(blockScanBB.minX, blockScanBB.minY, blockScanBB.minZ); - BlockPos max = new BlockPos(blockScanBB.maxX, blockScanBB.maxY, blockScanBB.maxZ); - - ReuseableStream potentialHits = new ReuseableStream<>(BlockPos.getAllInBox(min, max) - .filter(contraption.getBlocks()::containsKey) - .map(p -> { - BlockState blockState = contraption.getBlocks() - .get(p).state; - BlockPos pos = contraption.getBlocks() - .get(p).pos; - VoxelShape collisionShape = blockState.getCollisionShape(world, p); - return collisionShape.withOffset(pos.getX(), pos.getY(), pos.getZ()); - }) - .filter(Predicates.not(VoxelShape::isEmpty))); - - return potentialHits; - } - - public static boolean collideBlocks(AbstractContraptionEntity contraptionEntity) { - if (!contraptionEntity.supportsTerrainCollision()) - return false; - - World world = contraptionEntity.getEntityWorld(); - Vector3d motion = contraptionEntity.getMotion(); - TranslatingContraption contraption = (TranslatingContraption) contraptionEntity.getContraption(); - AxisAlignedBB bounds = contraptionEntity.getBoundingBox(); - Vector3d position = contraptionEntity.getPositionVec(); - BlockPos gridPos = new BlockPos(position); - - if (contraption == null) - return false; - if (bounds == null) - return false; - if (motion.equals(Vector3d.ZERO)) - return false; - - Direction movementDirection = Direction.getFacingFromVector(motion.x, motion.y, motion.z); - - // Blocks in the world - if (movementDirection.getAxisDirection() == AxisDirection.POSITIVE) - gridPos = gridPos.offset(movementDirection); - if (isCollidingWithWorld(world, contraption, gridPos, movementDirection)) - return true; - - // Other moving Contraptions - for (ControlledContraptionEntity otherContraptionEntity : world.getEntitiesWithinAABB( - ControlledContraptionEntity.class, bounds.grow(1), e -> !e.equals(contraptionEntity))) { - - if (!otherContraptionEntity.supportsTerrainCollision()) - continue; - - Vector3d otherMotion = otherContraptionEntity.getMotion(); - TranslatingContraption otherContraption = (TranslatingContraption) otherContraptionEntity.getContraption(); - AxisAlignedBB otherBounds = otherContraptionEntity.getBoundingBox(); - Vector3d otherPosition = otherContraptionEntity.getPositionVec(); - - if (otherContraption == null) - return false; - if (otherBounds == null) - return false; - - if (!bounds.offset(motion) - .intersects(otherBounds.offset(otherMotion))) - continue; - - for (BlockPos colliderPos : contraption.getColliders(world, movementDirection)) { - colliderPos = colliderPos.add(gridPos) - .subtract(new BlockPos(otherPosition)); - if (!otherContraption.getBlocks() - .containsKey(colliderPos)) - continue; - return true; - } - } - - return false; - } - - public static boolean isCollidingWithWorld(World world, TranslatingContraption contraption, BlockPos anchor, - Direction movementDirection) { - for (BlockPos pos : contraption.getColliders(world, movementDirection)) { - BlockPos colliderPos = pos.add(anchor); - - if (!world.isBlockPresent(colliderPos)) - return true; - - BlockState collidedState = world.getBlockState(colliderPos); - BlockInfo blockInfo = contraption.getBlocks() - .get(pos); - - if (AllMovementBehaviours.contains(blockInfo.state.getBlock())) { - MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state.getBlock()); - if (movementBehaviour instanceof BlockBreakingMovementBehaviour) { - BlockBreakingMovementBehaviour behaviour = (BlockBreakingMovementBehaviour) movementBehaviour; - if (!behaviour.canBreak(world, colliderPos, collidedState) - && !collidedState.getCollisionShape(world, pos) - .isEmpty()) { - return true; - } - continue; - } - } - - if (AllBlocks.PULLEY_MAGNET.has(collidedState) && pos.equals(BlockPos.ZERO) - && movementDirection == Direction.UP) - continue; - if (collidedState.getBlock() instanceof CocoaBlock) - continue; - if (!collidedState.getMaterial() - .isReplaceable() - && !collidedState.getCollisionShape(world, colliderPos) - .isEmpty()) { - return true; - } - - } - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionDisassemblyPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionDisassemblyPacket.java deleted file mode 100644 index 50b27b6ff..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionDisassemblyPacket.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class ContraptionDisassemblyPacket extends SimplePacketBase { - - int entityID; - StructureTransform transform; - - public ContraptionDisassemblyPacket(int entityID, StructureTransform transform) { - this.entityID = entityID; - this.transform = transform; - } - - public ContraptionDisassemblyPacket(PacketBuffer buffer) { - entityID = buffer.readInt(); - transform = StructureTransform.fromBuffer(buffer); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(entityID); - transform.writeToBuffer(buffer); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> AbstractContraptionEntity.handleDisassemblyPacket(this))); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionEntityRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionEntityRenderer.java deleted file mode 100644 index 8d8ed3b62..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionEntityRenderer.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.culling.ClippingHelper; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.util.ResourceLocation; - -public class ContraptionEntityRenderer extends EntityRenderer { - - public ContraptionEntityRenderer(EntityRendererManager manager) { - super(manager); - } - - @Override - public ResourceLocation getEntityTexture(C entity) { - return null; - } - - @Override - public boolean shouldRender(C entity, ClippingHelper clippingHelper, double cameraX, double cameraY, - double cameraZ) { - if (entity.getContraption() == null) - return false; - if (!entity.isAlive()) - return false; - - return super.shouldRender(entity, clippingHelper, cameraX, cameraY, cameraZ); - } - - @Override - public void render(C entity, float yaw, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffers, - int overlay) { - super.render(entity, yaw, partialTicks, ms, buffers, overlay); - - ContraptionMatrices matrices = new ContraptionMatrices(ms, entity); - Contraption contraption = entity.getContraption(); - if (contraption != null) { - ContraptionRenderDispatcher.render(entity, contraption, matrices, buffers); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java deleted file mode 100644 index a21df0650..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandler.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.lang.ref.WeakReference; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.WorldAttached; - -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import it.unimi.dsi.fastutil.objects.ObjectLists; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants.NBT; - -public class ContraptionHandler { - - /* Global map of loaded contraptions */ - - public static WorldAttached>> loadedContraptions; - static WorldAttached> queuedAdditions; - - static { - loadedContraptions = new WorldAttached<>(HashMap::new); - queuedAdditions = new WorldAttached<>(() -> ObjectLists.synchronize(new ObjectArrayList<>())); - } - - public static void tick(World world) { - Map> map = loadedContraptions.get(world); - List queued = queuedAdditions.get(world); - - for (AbstractContraptionEntity contraptionEntity : queued) - map.put(contraptionEntity.getEntityId(), new WeakReference<>(contraptionEntity)); - queued.clear(); - - Collection> values = map.values(); - for (Iterator> iterator = values.iterator(); iterator.hasNext();) { - WeakReference weakReference = iterator.next(); - AbstractContraptionEntity contraptionEntity = weakReference.get(); - if (contraptionEntity == null || !contraptionEntity.isAlive()) { - iterator.remove(); - continue; - } - ContraptionCollider.collideEntities(contraptionEntity); - } - } - - public static void addSpawnedContraptionsToCollisionList(Entity entity, World world) { - if (entity instanceof AbstractContraptionEntity) - queuedAdditions.get(world) - .add((AbstractContraptionEntity) entity); - } - - public static void entitiesWhoJustDismountedGetSentToTheRightLocation(LivingEntity entityLiving, World world) { - if (world.isRemote) - return; - CompoundNBT data = entityLiving.getPersistentData(); - if (!data.contains("ContraptionDismountLocation")) - return; - Vector3d position = VecHelper.readNBT(data.getList("ContraptionDismountLocation", NBT.TAG_DOUBLE)); - if (entityLiving.getRidingEntity() == null) - entityLiving.setPositionAndUpdate(position.x, position.y, position.z); - data.remove("ContraptionDismountLocation"); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandlerClient.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandlerClient.java deleted file mode 100644 index 3ab9bb670..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionHandlerClient.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import org.apache.commons.lang3.mutable.MutableObject; - -import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionInteractionPacket; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.RaycastHelper; -import com.simibubi.create.foundation.utility.RaycastHelper.PredicateTraceResult; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.entity.player.RemoteClientPlayerEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.InputEvent.ClickInputEvent; -import net.minecraftforge.event.TickEvent.Phase; -import net.minecraftforge.event.TickEvent.PlayerTickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class ContraptionHandlerClient { - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void preventRemotePlayersWalkingAnimations(PlayerTickEvent event) { - if (event.phase == Phase.START) - return; - if (!(event.player instanceof RemoteClientPlayerEntity)) - return; - RemoteClientPlayerEntity remotePlayer = (RemoteClientPlayerEntity) event.player; - CompoundNBT data = remotePlayer.getPersistentData(); - if (!data.contains("LastOverrideLimbSwingUpdate")) - return; - - int lastOverride = data.getInt("LastOverrideLimbSwingUpdate"); - data.putInt("LastOverrideLimbSwingUpdate", lastOverride + 1); - if (lastOverride > 5) { - data.remove("LastOverrideLimbSwingUpdate"); - data.remove("OverrideLimbSwing"); - return; - } - - float limbSwing = data.getFloat("OverrideLimbSwing"); - remotePlayer.prevPosX = remotePlayer.getX() - (limbSwing / 4); - remotePlayer.prevPosZ = remotePlayer.getZ(); - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void rightClickingOnContraptionsGetsHandledLocally(ClickInputEvent event) { - Minecraft mc = Minecraft.getInstance(); - ClientPlayerEntity player = mc.player; - if (player == null) - return; - if (player.isPassenger()) - return; - if (mc.world == null) - return; - if (!event.isUseItem()) - return; - Vector3d origin = RaycastHelper.getTraceOrigin(player); - - double reach = mc.playerController.getBlockReachDistance(); - if (mc.objectMouseOver != null && mc.objectMouseOver.getHitVec() != null) - reach = Math.min(mc.objectMouseOver.getHitVec() - .distanceTo(origin), reach); - - Vector3d target = RaycastHelper.getTraceTarget(player, reach, origin); - for (AbstractContraptionEntity contraptionEntity : mc.world - .getEntitiesWithinAABB(AbstractContraptionEntity.class, new AxisAlignedBB(origin, target))) { - - Vector3d localOrigin = contraptionEntity.toLocalVector(origin, 1); - Vector3d localTarget = contraptionEntity.toLocalVector(target, 1); - Contraption contraption = contraptionEntity.getContraption(); - - MutableObject mutableResult = new MutableObject<>(); - PredicateTraceResult predicateResult = RaycastHelper.rayTraceUntil(localOrigin, localTarget, p -> { - BlockInfo blockInfo = contraption.getBlocks() - .get(p); - if (blockInfo == null) - return false; - BlockState state = blockInfo.state; - VoxelShape raytraceShape = state.getShape(Minecraft.getInstance().world, BlockPos.ZERO.down()); - if (raytraceShape.isEmpty()) - return false; - BlockRayTraceResult rayTrace = raytraceShape.rayTrace(localOrigin, localTarget, p); - if (rayTrace != null) { - mutableResult.setValue(rayTrace); - return true; - } - return false; - }); - - if (predicateResult == null || predicateResult.missed()) - return; - - BlockRayTraceResult rayTraceResult = mutableResult.getValue(); - Hand hand = event.getHand(); - Direction face = rayTraceResult.getFace(); - BlockPos pos = rayTraceResult.getPos(); - - if (!contraptionEntity.handlePlayerInteraction(player, pos, face, hand)) - return; - AllPackets.channel.sendToServer(new ContraptionInteractionPacket(contraptionEntity, hand, pos, face)); - event.setCanceled(true); - event.setSwingHand(false); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java deleted file mode 100644 index 0e5a776b3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionLighter.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ILightUpdateListener; -import com.jozufozu.flywheel.light.LightUpdater; -import com.jozufozu.flywheel.light.LightVolume; -import com.simibubi.create.content.contraptions.components.structureMovement.render.RenderedContraption; - -import net.minecraft.world.IBlockDisplayReader; -import net.minecraft.world.LightType; - -public abstract class ContraptionLighter implements ILightUpdateListener { - protected final C contraption; - public final LightVolume lightVolume; - - protected GridAlignedBB bounds; - - protected boolean scheduleRebuild; - - protected ContraptionLighter(C contraption) { - this.contraption = contraption; - - bounds = getContraptionBounds(); - - lightVolume = new LightVolume(contraptionBoundsToVolume(bounds.copy())); - - lightVolume.initialize(contraption.entity.world); - scheduleRebuild = true; - - startListening(); - } - - public void tick(RenderedContraption owner) { - if (scheduleRebuild) { - lightVolume.initialize(owner.contraption.entity.world); - scheduleRebuild = false; - } - } - - public abstract GridAlignedBB getContraptionBounds(); - - @Override - public boolean onLightUpdate(IBlockDisplayReader world, LightType type, GridAlignedBB changed) { - lightVolume.notifyLightUpdate(world, type, changed); - return false; - } - - @Override - public boolean onLightPacket(IBlockDisplayReader world, int chunkX, int chunkZ) { - lightVolume.notifyLightPacket(world, chunkX, chunkZ); - return false; - } - - protected void startListening() { - LightUpdater.getInstance().startListening(bounds, this); - } - - protected GridAlignedBB contraptionBoundsToVolume(GridAlignedBB bounds) { - bounds.grow(2); // so we have at least enough data on the edges to avoid artifacts and have smooth lighting - bounds.minY = Math.max(bounds.minY, 0); - bounds.maxY = Math.min(bounds.maxY, 255); - - return bounds; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionStallPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionStallPacket.java deleted file mode 100644 index 9c9aac76f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionStallPacket.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class ContraptionStallPacket extends SimplePacketBase { - - int entityID; - float x; - float y; - float z; - float angle; - - public ContraptionStallPacket(int entityID, double posX, double posY, double posZ, float angle) { - this.entityID = entityID; - this.x = (float) posX; - this.y = (float) posY; - this.z = (float) posZ; - this.angle = angle; - } - - public ContraptionStallPacket(PacketBuffer buffer) { - entityID = buffer.readInt(); - x = buffer.readFloat(); - y = buffer.readFloat(); - z = buffer.readFloat(); - angle = buffer.readFloat(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(entityID); - writeAll(buffer, x, y, z, angle); - } - - @Override - public void handle(Supplier context) { - context.get().enqueueWork( - () -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> AbstractContraptionEntity.handleStallPacket(this))); - context.get().setPacketHandled(true); - } - - private void writeAll(PacketBuffer buffer, float... floats) { - for (float f : floats) - buffer.writeFloat(f); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionType.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionType.java deleted file mode 100644 index 5ddf9e9bf..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionType.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.function.Supplier; - -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyContraption; - -public class ContraptionType { - - public static Map entries = new HashMap<>(); - public static ContraptionType - PISTON = register("piston", PistonContraption::new), - BEARING = register("bearing", BearingContraption::new), - PULLEY = register("pulley", PulleyContraption::new), - CLOCKWORK = register("clockwork", ClockworkContraption::new), - MOUNTED = register("mounted", MountedContraption::new), - STABILIZED = register("stabilized", StabilizedContraption::new), - GANTRY = register("gantry", GantryContraption::new); - - Supplier factory; - String id; - - public static ContraptionType register(String id, Supplier factory) { - ContraptionType value = new ContraptionType(id, factory); - entries.put(id, value); - return value; - } - - private ContraptionType(String id, Supplier factory) { - this.factory = factory; - this.id = id; - } - - public static Contraption fromType(String type) { - for (Entry allContraptionTypes : entries.entrySet()) - if (type.equals(allContraptionTypes.getKey())) - return allContraptionTypes.getValue().factory.get(); - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java deleted file mode 100644 index bff9499dd..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template; - -public class ContraptionWorld extends WrappedWorld { - final Contraption contraption; - - public ContraptionWorld(World world, Contraption contraption) { - super(world); - - this.contraption = contraption; - } - - - @Override - public BlockState getBlockState(BlockPos pos) { - Template.BlockInfo blockInfo = contraption.getBlocks().get(pos); - - if (blockInfo != null) - return blockInfo.state; - - return Blocks.AIR.getDefaultState(); - } - - @Override - public void playSound(PlayerEntity player, double x, double y, double z, SoundEvent soundIn, SoundCategory category, float volume, float pitch) { - - Vector3d worldPos = ContraptionCollider.getWorldToLocalTranslation(new Vector3d(x, y, z), this.contraption.entity); - - worldPos = worldPos.add(x, y, z); - - world.playSound(player, worldPos.x, worldPos.y, worldPos.z, soundIn, category, volume, pitch); - } - - @Override - public void playSound(double x, double y, double z, SoundEvent p_184134_7_, SoundCategory p_184134_8_, float p_184134_9_, float p_184134_10_, boolean p_184134_11_) { - world.playSound(x, y, z, p_184134_7_, p_184134_8_, p_184134_9_, p_184134_10_, p_184134_11_); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java deleted file mode 100644 index dbdef7a30..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ControlledContraptionEntity.java +++ /dev/null @@ -1,240 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import static com.simibubi.create.foundation.utility.AngleHelper.angleLerp; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllEntityTypes; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingContraption; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.entity.EntityType; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -/** - * Ex: Pistons, bearings
- * Controlled Contraption Entities can rotate around one axis and translate. - *
- * They are bound to an {@link IControlContraption} - */ -public class ControlledContraptionEntity extends AbstractContraptionEntity { - - protected BlockPos controllerPos; - protected Axis rotationAxis; - protected float prevAngle; - protected float angle; - protected float angleDelta; - - public ControlledContraptionEntity(EntityType type, World world) { - super(type, world); - } - - public static ControlledContraptionEntity create(World world, IControlContraption controller, - Contraption contraption) { - ControlledContraptionEntity entity = - new ControlledContraptionEntity(AllEntityTypes.CONTROLLED_CONTRAPTION.get(), world); - entity.controllerPos = controller.getBlockPosition(); - entity.setContraption(contraption); - return entity; - } - - @Override - public Vector3d getContactPointMotion(Vector3d globalContactPoint) { - if (contraption instanceof TranslatingContraption) - return getMotion(); - return super.getContactPointMotion(globalContactPoint); - } - - @Override - protected void setContraption(Contraption contraption) { - super.setContraption(contraption); - if (contraption instanceof BearingContraption) - rotationAxis = ((BearingContraption) contraption).getFacing() - .getAxis(); - - } - - @Override - protected void readAdditional(CompoundNBT compound, boolean spawnPacket) { - super.readAdditional(compound, spawnPacket); - controllerPos = NBTUtil.readBlockPos(compound.getCompound("Controller")); - if (compound.contains("Axis")) - rotationAxis = NBTHelper.readEnum(compound, "Axis", Axis.class); - angle = compound.getFloat("Angle"); - } - - @Override - protected void writeAdditional(CompoundNBT compound, boolean spawnPacket) { - super.writeAdditional(compound, spawnPacket); - compound.put("Controller", NBTUtil.writeBlockPos(controllerPos)); - if (rotationAxis != null) - NBTHelper.writeEnum(compound, "Axis", rotationAxis); - compound.putFloat("Angle", angle); - } - - @Override - public ContraptionRotationState getRotationState() { - ContraptionRotationState crs = new ContraptionRotationState(); - if (rotationAxis == Axis.X) - crs.xRotation = angle; - if (rotationAxis == Axis.Y) - crs.yRotation = angle; - if (rotationAxis == Axis.Z) - crs.zRotation = angle; - return crs; - } - - @Override - public Vector3d applyRotation(Vector3d localPos, float partialTicks) { - localPos = VecHelper.rotate(localPos, getAngle(partialTicks), rotationAxis); - return localPos; - } - - @Override - public Vector3d reverseRotation(Vector3d localPos, float partialTicks) { - localPos = VecHelper.rotate(localPos, -getAngle(partialTicks), rotationAxis); - return localPos; - } - - public void setAngle(float angle) { - this.angle = angle; - } - - public float getAngle(float partialTicks) { - return partialTicks == 1.0F ? angle : angleLerp(partialTicks, prevAngle, angle); - } - - public void setRotationAxis(Axis rotationAxis) { - this.rotationAxis = rotationAxis; - } - - public Axis getRotationAxis() { - return rotationAxis; - } - - @Override - public void setPositionAndUpdate(double p_70634_1_, double p_70634_3_, double p_70634_5_) {} - - @Override - @OnlyIn(Dist.CLIENT) - public void setPositionAndRotationDirect(double x, double y, double z, float yw, float pt, int inc, boolean t) {} - - protected void tickContraption() { - angleDelta = angle - prevAngle; - prevAngle = angle; - tickActors(); - - if (controllerPos == null) - return; - if (!world.isBlockPresent(controllerPos)) - return; - IControlContraption controller = getController(); - if (controller == null) { - remove(); - return; - } - if (!controller.isAttachedTo(this)) { - controller.attach(this); - if (world.isRemote) - setPosition(getX(), getY(), getZ()); - } - - Vector3d motion = getMotion(); - move(motion.x, motion.y, motion.z); - if (ContraptionCollider.collideBlocks(this)) - getController().collided(); - } - - @Override - protected boolean shouldActorTrigger(MovementContext context, BlockInfo blockInfo, MovementBehaviour actor, - Vector3d actorPosition, BlockPos gridPosition) { - if (super.shouldActorTrigger(context, blockInfo, actor, actorPosition, gridPosition)) - return true; - - // Special activation timer for actors in the center of a bearing contraption - if (!(contraption instanceof BearingContraption)) - return false; - BearingContraption bc = (BearingContraption) contraption; - Direction facing = bc.getFacing(); - Vector3d activeAreaOffset = actor.getActiveAreaOffset(context); - if (!activeAreaOffset.mul(VecHelper.axisAlingedPlaneOf(Vector3d.of(facing.getDirectionVec()))) - .equals(Vector3d.ZERO)) - return false; - if (!VecHelper.onSameAxis(blockInfo.pos, BlockPos.ZERO, facing.getAxis())) - return false; - context.motion = Vector3d.of(facing.getDirectionVec()).scale(angleDelta / 360.0); - context.relativeMotion = context.motion; - int timer = context.data.getInt("StationaryTimer"); - if (timer > 0) { - context.data.putInt("StationaryTimer", timer - 1); - return false; - } - - context.data.putInt("StationaryTimer", 20); - return true; - } - - protected IControlContraption getController() { - if (controllerPos == null) - return null; - if (!world.isBlockPresent(controllerPos)) - return null; - TileEntity te = world.getTileEntity(controllerPos); - if (!(te instanceof IControlContraption)) - return null; - return (IControlContraption) te; - } - - @Override - protected StructureTransform makeStructureTransform() { - BlockPos offset = new BlockPos(getAnchorVec().add(.5, .5, .5)); - float xRot = rotationAxis == Axis.X ? angle : 0; - float yRot = rotationAxis == Axis.Y ? angle : 0; - float zRot = rotationAxis == Axis.Z ? angle : 0; - return new StructureTransform(offset, xRot, yRot, zRot); - } - - @Override - protected void onContraptionStalled() { - IControlContraption controller = getController(); - if (controller != null) - controller.onStall(); - super.onContraptionStalled(); - } - - @Override - protected float getStalledAngle() { - return angle; - } - - @Override - protected void handleStallInformation(float x, float y, float z, float angle) { - setPos(x, y, z); - this.angle = angle; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void doLocalTransforms(float partialTicks, MatrixStack[] matrixStacks) { - float angle = getAngle(partialTicks); - Axis axis = getRotationAxis(); - - for (MatrixStack stack : matrixStacks) - MatrixStacker.of(stack) - .nudge(getEntityId()) - .centre() - .rotate(angle, axis) - .unCentre(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java deleted file mode 100644 index 2bf9f5db0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/DirectionalExtenderScrollOptionSlot.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.util.function.BiPredicate; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; - -public class DirectionalExtenderScrollOptionSlot extends CenteredSideValueBoxTransform { - - public DirectionalExtenderScrollOptionSlot(BiPredicate allowedDirections) { - super(allowedDirections); - } - - @Override - protected Vector3d getLocalOffset(BlockState state) { - return super.getLocalOffset(state) - .add(Vector3d.of(state.get(BlockStateProperties.FACING).getDirectionVec()).scale(-2 / 16f)); - } - - @Override - protected void rotate(BlockState state, MatrixStack ms) { - if (!getSide().getAxis().isHorizontal()) - MatrixStacker.of(ms).rotateY(AngleHelper.horizontalAngle(state.get(BlockStateProperties.FACING)) - 90); - super.rotate(state, ms); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java deleted file mode 100644 index e5d8c1c9f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IControlContraption.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.math.BlockPos; - -public interface IControlContraption { - - public boolean isAttachedTo(AbstractContraptionEntity contraption); - - public void attach(ControlledContraptionEntity contraption); - - public void onStall(); - - public boolean isValid(); - - public void collided(); - - public BlockPos getBlockPosition(); - - static enum MovementMode implements INamedIconOptions { - - MOVE_PLACE(AllIcons.I_MOVE_PLACE), - MOVE_PLACE_RETURNED(AllIcons.I_MOVE_PLACE_RETURNED), - MOVE_NEVER_PLACE(AllIcons.I_MOVE_NEVER_PLACE), - - ; - - private String translationKey; - private AllIcons icon; - - private MovementMode(AllIcons icon) { - this.icon = icon; - translationKey = "contraptions.movement_mode." + Lang.asId(name()); - } - - @Override - public AllIcons getIcon() { - return icon; - } - - @Override - public String getTranslationKey() { - return translationKey; - } - - } - - static enum RotationMode implements INamedIconOptions { - - ROTATE_PLACE(AllIcons.I_ROTATE_PLACE), - ROTATE_PLACE_RETURNED(AllIcons.I_ROTATE_PLACE_RETURNED), - ROTATE_NEVER_PLACE(AllIcons.I_ROTATE_NEVER_PLACE), - - ; - - private String translationKey; - private AllIcons icon; - - private RotationMode(AllIcons icon) { - this.icon = icon; - translationKey = "contraptions.movement_mode." + Lang.asId(name()); - } - - @Override - public AllIcons getIcon() { - return icon; - } - - @Override - public String getTranslationKey() { - return translationKey; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java deleted file mode 100644 index 2bbd13f3a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/IDisplayAssemblyExceptions.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import static net.minecraft.util.text.TextFormatting.GRAY; -import static net.minecraft.util.text.TextFormatting.WHITE; - -import java.util.Arrays; -import java.util.List; - -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; - -public interface IDisplayAssemblyExceptions { - - default boolean addExceptionToTooltip(List tooltip) { - AssemblyException e = getLastAssemblyException(); - if (e == null) - return false; - - if (!tooltip.isEmpty()) - tooltip.add(StringTextComponent.EMPTY); - - tooltip.add(IHaveGoggleInformation.componentSpacing.copy().append(Lang.translate("gui.assembly.exception").formatted(TextFormatting.GOLD))); - - String text = TooltipHelper.getUnformattedDeepText(e.component); - Arrays.stream(text.split("\n")) - .forEach(l -> TooltipHelper.cutStringTextComponent(l, GRAY, WHITE) - .forEach(c -> tooltip.add(IHaveGoggleInformation.componentSpacing.copy().append(c)))); - - return true; - } - - AssemblyException getLastAssemblyException(); -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedFluidStorage.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedFluidStorage.java deleted file mode 100644 index 1709ae7d9..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedFluidStorage.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionFluidPacket; -import com.simibubi.create.content.contraptions.fluids.tank.CreativeFluidTankTileEntity; -import com.simibubi.create.content.contraptions.fluids.tank.CreativeFluidTankTileEntity.CreativeSmartFluidTank; -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankTileEntity; -import com.simibubi.create.foundation.fluid.SmartFluidTank; -import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidTank; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fml.network.PacketDistributor; - -public class MountedFluidStorage { - - SmartFluidTank tank; - private boolean valid; - private TileEntity te; - - private int packetCooldown = 0; - private boolean sendPacket = false; - - public static boolean canUseAsStorage(TileEntity te) { - if (te instanceof FluidTankTileEntity) - return ((FluidTankTileEntity) te).isController(); - return false; - } - - public MountedFluidStorage(TileEntity te) { - assignTileEntity(te); - } - - public void assignTileEntity(TileEntity te) { - this.te = te; - tank = createMountedTank(te); - } - - private SmartFluidTank createMountedTank(TileEntity te) { - if (te instanceof CreativeFluidTankTileEntity) - return new CreativeSmartFluidTank( - ((FluidTankTileEntity) te).getTotalTankSize() * FluidTankTileEntity.getCapacityMultiplier(), $ -> { - }); - if (te instanceof FluidTankTileEntity) - return new SmartFluidTank( - ((FluidTankTileEntity) te).getTotalTankSize() * FluidTankTileEntity.getCapacityMultiplier(), - this::onFluidStackChanged); - return null; - } - - public void tick(Entity entity, BlockPos pos, boolean isRemote) { - if (!isRemote) { - if (packetCooldown > 0) - packetCooldown--; - else if (sendPacket) { - sendPacket = false; - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> entity), - new ContraptionFluidPacket(entity.getEntityId(), pos, tank.getFluid())); - packetCooldown = 8; - } - return; - } - - if (!(te instanceof FluidTankTileEntity)) - return; - FluidTankTileEntity tank = (FluidTankTileEntity) te; - tank.getFluidLevel() - .tick(); - } - - public void updateFluid(FluidStack fluid) { - tank.setFluid(fluid); - if (!(te instanceof FluidTankTileEntity)) - return; - float fillState = tank.getFluidAmount() / (float) tank.getCapacity(); - FluidTankTileEntity tank = (FluidTankTileEntity) te; - if (tank.getFluidLevel() == null) - tank.setFluidLevel(new InterpolatedChasingValue().start(fillState)); - tank.getFluidLevel() - .target(fillState); - IFluidTank tankInventory = tank.getTankInventory(); - if (tankInventory instanceof SmartFluidTank) - ((SmartFluidTank) tankInventory).setFluid(fluid); - } - - public void removeStorageFromWorld() { - valid = false; - if (te == null) - return; - - IFluidHandler teHandler = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) - .orElse(null); - if (!(teHandler instanceof SmartFluidTank)) - return; - SmartFluidTank smartTank = (SmartFluidTank) teHandler; - tank.setFluid(smartTank.getFluid()); - sendPacket = false; - valid = true; - } - - private void onFluidStackChanged(FluidStack fs) { - sendPacket = true; - } - - public void addStorageToWorld(TileEntity te) { - if (tank instanceof CreativeSmartFluidTank) - return; - - LazyOptional capability = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY); - IFluidHandler teHandler = capability.orElse(null); - if (!(teHandler instanceof SmartFluidTank)) - return; - - SmartFluidTank inv = (SmartFluidTank) teHandler; - inv.setFluid(tank.getFluid().copy()); - } - - public IFluidHandler getFluidHandler() { - return tank; - } - - public CompoundNBT serialize() { - if (!valid) - return null; - CompoundNBT tag = tank.writeToNBT(new CompoundNBT()); - tag.putInt("Capacity", tank.getCapacity()); - - if (tank instanceof CreativeSmartFluidTank) { - NBTHelper.putMarker(tag, "Bottomless"); - tag.put("ProvidedStack", tank.getFluid() - .writeToNBT(new CompoundNBT())); - } - return tag; - } - - public static MountedFluidStorage deserialize(CompoundNBT nbt) { - MountedFluidStorage storage = new MountedFluidStorage(null); - if (nbt == null) - return storage; - - int capacity = nbt.getInt("Capacity"); - storage.tank = new SmartFluidTank(capacity, storage::onFluidStackChanged); - storage.valid = true; - - if (nbt.contains("Bottomless")) { - FluidStack providedStack = FluidStack.loadFluidStackFromNBT(nbt.getCompound("ProvidedStack")); - CreativeSmartFluidTank creativeSmartFluidTank = new CreativeSmartFluidTank(capacity, $ -> { - }); - creativeSmartFluidTank.setContainedFluid(providedStack); - storage.tank = creativeSmartFluidTank; - return storage; - } - - storage.tank.readFromNBT(nbt); - return storage; - } - - public boolean isValid() { - return valid; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java deleted file mode 100644 index fb49312d3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MountedStorage.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.processing.ProcessingInventory; -import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock; -import com.simibubi.create.content.logistics.block.inventories.BottomlessItemHandler; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.block.ChestBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.ChestType; -import net.minecraft.tileentity.BarrelTileEntity; -import net.minecraft.tileentity.ChestTileEntity; -import net.minecraft.tileentity.ShulkerBoxTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemStackHandler; - -public class MountedStorage { - - private static final ItemStackHandler dummyHandler = new ItemStackHandler(); - - ItemStackHandler handler; - boolean valid; - private TileEntity te; - - public static boolean canUseAsStorage(TileEntity te) { - if (te == null) - return false; - - if (AllTileEntities.ADJUSTABLE_CRATE.is(te)) - return true; - if (AllTileEntities.CREATIVE_CRATE.is(te)) - return true; - if (te instanceof ShulkerBoxTileEntity) - return true; - if (te instanceof ChestTileEntity) - return true; - if (te instanceof BarrelTileEntity) - return true; - - LazyOptional capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); - IItemHandler handler = capability.orElse(null); - return handler instanceof ItemStackHandler && !(handler instanceof ProcessingInventory); - } - - public MountedStorage(TileEntity te) { - this.te = te; - handler = dummyHandler; - } - - public void removeStorageFromWorld() { - valid = false; - if (te == null) - return; - - // Split double chests - if (te.getType() == TileEntityType.CHEST || te.getType() == TileEntityType.TRAPPED_CHEST) { - if (te.getBlockState() - .get(ChestBlock.TYPE) != ChestType.SINGLE) - te.getWorld() - .setBlockState(te.getPos(), te.getBlockState() - .with(ChestBlock.TYPE, ChestType.SINGLE)); - te.updateContainingBlockInfo(); - } - - // Split double flexcrates - if (AllTileEntities.ADJUSTABLE_CRATE.is(te)) { - if (te.getBlockState() - .get(AdjustableCrateBlock.DOUBLE)) - te.getWorld() - .setBlockState(te.getPos(), te.getBlockState() - .with(AdjustableCrateBlock.DOUBLE, false)); - te.updateContainingBlockInfo(); - } - - IItemHandler teHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) - .orElse(dummyHandler); - if (teHandler == dummyHandler) - return; - - // te uses ItemStackHandler - if (teHandler instanceof ItemStackHandler) { - handler = (ItemStackHandler) teHandler; - valid = true; - return; - } - - // serialization not accessible -> fill into a serializable handler - if (teHandler instanceof IItemHandlerModifiable) { - IItemHandlerModifiable inv = (IItemHandlerModifiable) teHandler; - handler = new ItemStackHandler(teHandler.getSlots()); - for (int slot = 0; slot < handler.getSlots(); slot++) { - handler.setStackInSlot(slot, inv.getStackInSlot(slot)); - inv.setStackInSlot(slot, ItemStack.EMPTY); - } - valid = true; - return; - } - - } - - public void addStorageToWorld(TileEntity te) { - // FIXME: More dynamic mounted storage in .4 - if (handler instanceof BottomlessItemHandler) - return; - - LazyOptional capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY); - IItemHandler teHandler = capability.orElse(null); - if (!(teHandler instanceof IItemHandlerModifiable)) - return; - - IItemHandlerModifiable inv = (IItemHandlerModifiable) teHandler; - for (int slot = 0; slot < Math.min(inv.getSlots(), handler.getSlots()); slot++) - inv.setStackInSlot(slot, handler.getStackInSlot(slot)); - } - - public IItemHandlerModifiable getItemHandler() { - return handler; - } - - public CompoundNBT serialize() { - if (!valid) - return null; - CompoundNBT tag = handler.serializeNBT(); - - if (handler instanceof BottomlessItemHandler) { - NBTHelper.putMarker(tag, "Bottomless"); - tag.put("ProvidedStack", handler.getStackInSlot(0) - .serializeNBT()); - } - - return tag; - } - - public static MountedStorage deserialize(CompoundNBT nbt) { - MountedStorage storage = new MountedStorage(null); - storage.handler = new ItemStackHandler(); - if (nbt == null) - return storage; - storage.valid = true; - - if (nbt.contains("Bottomless")) { - ItemStack providedStack = ItemStack.read(nbt.getCompound("ProvidedStack")); - storage.handler = new BottomlessItemHandler(() -> providedStack); - return storage; - } - - storage.handler.deserializeNBT(nbt); - return storage; - } - - public boolean isValid() { - return valid; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java deleted file mode 100644 index e2b035323..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementBehaviour.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.ItemHandlerHelper; - -public abstract class MovementBehaviour { - - public boolean isActive(MovementContext context) { - return true; - } - - public void tick(MovementContext context) {} - - public void startMoving(MovementContext context) {} - - public void visitNewPosition(MovementContext context, BlockPos pos) {} - - public Vector3d getActiveAreaOffset(MovementContext context) { - return Vector3d.ZERO; - } - - public void dropItem(MovementContext context, ItemStack stack) { - ItemStack remainder = ItemHandlerHelper.insertItem(context.contraption.inventory, stack, false); - if (remainder.isEmpty()) - return; - - Vector3d vec = context.position; - ItemEntity itemEntity = new ItemEntity(context.world, vec.x, vec.y, vec.z, remainder); - itemEntity.setMotion(context.motion.add(0, 0.5f, 0) - .scale(context.world.rand.nextFloat() * .3f)); - context.world.addEntity(itemEntity); - } - - public void stopMoving(MovementContext context) { - - } - - public void writeExtraData(MovementContext context) { - - } - - public boolean renderAsNormalTileEntity() { - return false; - } - - public boolean hasSpecialInstancedRendering() { - return false; - } - - @OnlyIn(Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) {} - - @OnlyIn(Dist.CLIENT) - @Nullable - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { - return null; - } - - public void onSpeedChanged(MovementContext context, Vector3d oldMotion, Vector3d motion) { - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java deleted file mode 100644 index fa26f9ca1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/MovementContext.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.util.function.UnaryOperator; - -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.common.util.Constants.NBT; - -public class MovementContext { - - public Vector3d position; - public Vector3d motion; - public Vector3d relativeMotion; - public UnaryOperator rotation; - - public World world; - public BlockState state; - public BlockPos localPos; - public CompoundNBT tileData; - - public boolean stall; - public boolean firstMovement; - public CompoundNBT data; - public Contraption contraption; - public Object temporaryData; - - public MovementContext(World world, BlockInfo info, Contraption contraption) { - this.world = world; - this.state = info.state; - this.tileData = info.nbt; - this.contraption = contraption; - localPos = info.pos; - - firstMovement = true; - motion = Vector3d.ZERO; - relativeMotion = Vector3d.ZERO; - rotation = v -> v; - position = null; - data = new CompoundNBT(); - stall = false; - } - - public float getAnimationSpeed() { - int modifier = 1000; - double length = -motion.length(); - if (world.isRemote && contraption.stalled) - return 700; - if (Math.abs(length) < 1 / 512f) - return 0; - return (((int) (length * modifier + 100 * Math.signum(length))) / 100) * 100; - } - - public static MovementContext readNBT(World world, BlockInfo info, CompoundNBT nbt, Contraption contraption) { - MovementContext context = new MovementContext(world, info, contraption); - context.motion = VecHelper.readNBT(nbt.getList("Motion", NBT.TAG_DOUBLE)); - context.relativeMotion = VecHelper.readNBT(nbt.getList("RelativeMotion", NBT.TAG_DOUBLE)); - if (nbt.contains("Position")) - context.position = VecHelper.readNBT(nbt.getList("Position", NBT.TAG_DOUBLE)); - context.stall = nbt.getBoolean("Stall"); - context.firstMovement = nbt.getBoolean("FirstMovement"); - context.data = nbt.getCompound("Data"); - return context; - } - - public CompoundNBT writeToNBT(CompoundNBT nbt) { - nbt.put("Motion", VecHelper.writeNBT(motion)); - nbt.put("RelativeMotion", VecHelper.writeNBT(relativeMotion)); - if (position != null) - nbt.put("Position", VecHelper.writeNBT(position)); - nbt.putBoolean("Stall", stall); - nbt.putBoolean("FirstMovement", firstMovement); - nbt.put("Data", data); - return nbt; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java deleted file mode 100644 index 50345908c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/NonStationaryLighter.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.simibubi.create.content.contraptions.components.structureMovement.render.RenderedContraption; - -public class NonStationaryLighter extends ContraptionLighter { - public NonStationaryLighter(C contraption) { - super(contraption); - } - - @Override - public void tick(RenderedContraption owner) { - super.tick(owner); - GridAlignedBB contraptionBounds = getContraptionBounds(); - - if (!contraptionBounds.sameAs(bounds)) { - lightVolume.move(contraption.entity.world, contraptionBoundsToVolume(contraptionBounds)); - bounds = contraptionBounds; - - startListening(); - } - } - - @Override - public GridAlignedBB getContraptionBounds() { - GridAlignedBB bb = GridAlignedBB.from(contraption.bounds); - - bb.translate(contraption.entity.getBlockPos()); - - return bb; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java deleted file mode 100644 index 49b4d3594..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntity.java +++ /dev/null @@ -1,598 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import static com.simibubi.create.foundation.utility.AngleHelper.angleLerp; - -import java.util.Optional; -import java.util.UUID; - -import javax.annotation.Nullable; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllEntityTypes; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.StabilizedContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerTileEntity.CartMovementMode; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.MountedContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.network.datasync.DataParameter; -import net.minecraft.network.datasync.DataSerializers; -import net.minecraft.network.datasync.EntityDataManager; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.LazyOptional; - -/** - * Ex: Minecarts, Couplings
- * Oriented Contraption Entities can rotate freely around two axes - * simultaneously. - */ -public class OrientedContraptionEntity extends AbstractContraptionEntity { - - private static final Ingredient FUEL_ITEMS = Ingredient.fromItems(Items.COAL, Items.CHARCOAL); - - private static final DataParameter> COUPLING = - EntityDataManager.createKey(OrientedContraptionEntity.class, DataSerializers.OPTIONAL_UNIQUE_ID); - private static final DataParameter INITIAL_ORIENTATION = - EntityDataManager.createKey(OrientedContraptionEntity.class, DataSerializers.DIRECTION); - - protected Vector3d motionBeforeStall; - protected boolean forceAngle; - private boolean isSerializingFurnaceCart; - private boolean attachedExtraInventories; - private boolean manuallyPlaced; - - public float prevYaw; - public float yaw; - public float targetYaw; - - public float prevPitch; - public float pitch; - public float targetPitch; - - // When placed using a contraption item - private float initialYawOffset; - - public OrientedContraptionEntity(EntityType type, World world) { - super(type, world); - motionBeforeStall = Vector3d.ZERO; - attachedExtraInventories = false; - isSerializingFurnaceCart = false; - initialYawOffset = -1; - } - - public static OrientedContraptionEntity create(World world, Contraption contraption, - Optional initialOrientation) { - OrientedContraptionEntity entity = - new OrientedContraptionEntity(AllEntityTypes.ORIENTED_CONTRAPTION.get(), world); - entity.setContraption(contraption); - initialOrientation.ifPresent(entity::setInitialOrientation); - entity.startAtInitialYaw(); - return entity; - } - - public static OrientedContraptionEntity createAtYaw(World world, Contraption contraption, - Optional initialOrientation, float initialYaw) { - OrientedContraptionEntity entity = create(world, contraption, initialOrientation); - entity.startAtYaw(initialYaw); - entity.manuallyPlaced = true; - return entity; - } - - public void setInitialOrientation(Direction direction) { - dataManager.set(INITIAL_ORIENTATION, direction); - } - - public Direction getInitialOrientation() { - return dataManager.get(INITIAL_ORIENTATION); - } - - public void deferOrientation(Direction newInitialAngle) { - dataManager.set(INITIAL_ORIENTATION, Direction.UP); - yaw = initialYawOffset = newInitialAngle.getHorizontalAngle(); - } - - @Override - public float getYawOffset() { - return getInitialYaw(); - } - - public float getInitialYaw() { - return (isInitialOrientationPresent() ? dataManager.get(INITIAL_ORIENTATION) : Direction.SOUTH) - .getHorizontalAngle(); - } - - @Override - protected void registerData() { - super.registerData(); - dataManager.register(COUPLING, Optional.empty()); - dataManager.register(INITIAL_ORIENTATION, Direction.UP); - } - - @Override - public ContraptionRotationState getRotationState() { - ContraptionRotationState crs = new ContraptionRotationState(); - - float yawOffset = getYawOffset(); - crs.zRotation = pitch; - crs.yRotation = -yaw + yawOffset; - - if (pitch != 0 && yaw != 0) { - crs.secondYRotation = -yaw; - crs.yRotation = yawOffset; - } - - return crs; - } - - @Override - public void stopRiding() { - if (!world.isRemote && isAlive()) - disassemble(); - super.stopRiding(); - } - - @Override - protected void readAdditional(CompoundNBT compound, boolean spawnPacket) { - super.readAdditional(compound, spawnPacket); - - if (compound.contains("InitialOrientation")) - setInitialOrientation(NBTHelper.readEnum(compound, "InitialOrientation", Direction.class)); - - yaw = compound.getFloat("Yaw"); - pitch = compound.getFloat("Pitch"); - manuallyPlaced = compound.getBoolean("Placed"); - - if (compound.contains("ForceYaw")) - startAtYaw(compound.getFloat("ForceYaw")); - - ListNBT vecNBT = compound.getList("CachedMotion", 6); - if (!vecNBT.isEmpty()) { - motionBeforeStall = new Vector3d(vecNBT.getDouble(0), vecNBT.getDouble(1), vecNBT.getDouble(2)); - if (!motionBeforeStall.equals(Vector3d.ZERO)) - targetYaw = prevYaw = yaw += yawFromVector(motionBeforeStall); - setMotion(Vector3d.ZERO); - } - - setCouplingId(compound.contains("OnCoupling") ? compound.getUniqueId("OnCoupling") : null); - } - - @Override - protected void writeAdditional(CompoundNBT compound, boolean spawnPacket) { - super.writeAdditional(compound, spawnPacket); - - if (motionBeforeStall != null) - compound.put("CachedMotion", - newDoubleNBTList(motionBeforeStall.x, motionBeforeStall.y, motionBeforeStall.z)); - - Direction optional = dataManager.get(INITIAL_ORIENTATION); - if (optional.getAxis() - .isHorizontal()) - NBTHelper.writeEnum(compound, "InitialOrientation", optional); - if (forceAngle) { - compound.putFloat("ForceYaw", yaw); - forceAngle = false; - } - - compound.putBoolean("Placed", manuallyPlaced); - compound.putFloat("Yaw", yaw); - compound.putFloat("Pitch", pitch); - - if (getCouplingId() != null) - compound.putUniqueId("OnCoupling", getCouplingId()); - } - - @Override - public void notifyDataManagerChange(DataParameter key) { - super.notifyDataManagerChange(key); - if (key == INITIAL_ORIENTATION && isInitialOrientationPresent() && !manuallyPlaced) - startAtInitialYaw(); - } - - public boolean isInitialOrientationPresent() { - return dataManager.get(INITIAL_ORIENTATION) - .getAxis() - .isHorizontal(); - } - - public void startAtInitialYaw() { - startAtYaw(getInitialYaw()); - } - - public void startAtYaw(float yaw) { - targetYaw = this.yaw = prevYaw = yaw; - forceAngle = true; - } - - @Override - public Vector3d applyRotation(Vector3d localPos, float partialTicks) { - localPos = VecHelper.rotate(localPos, getInitialYaw(), Axis.Y); - localPos = VecHelper.rotate(localPos, getPitch(partialTicks), Axis.Z); - localPos = VecHelper.rotate(localPos, getYaw(partialTicks), Axis.Y); - return localPos; - } - - @Override - public Vector3d reverseRotation(Vector3d localPos, float partialTicks) { - localPos = VecHelper.rotate(localPos, -getYaw(partialTicks), Axis.Y); - localPos = VecHelper.rotate(localPos, -getPitch(partialTicks), Axis.Z); - localPos = VecHelper.rotate(localPos, -getInitialYaw(), Axis.Y); - return localPos; - } - - public float getYaw(float partialTicks) { - return -(partialTicks == 1.0F ? yaw : angleLerp(partialTicks, prevYaw, yaw)); - } - - public float getPitch(float partialTicks) { - return partialTicks == 1.0F ? pitch : angleLerp(partialTicks, prevPitch, pitch); - } - - @Override - protected void tickContraption() { - Entity e = getRidingEntity(); - if (e == null) - return; - - boolean rotationLock = false; - boolean pauseWhileRotating = false; - boolean wasStalled = isStalled(); - if (contraption instanceof MountedContraption) { - MountedContraption mountedContraption = (MountedContraption) contraption; - rotationLock = mountedContraption.rotationMode == CartMovementMode.ROTATION_LOCKED; - pauseWhileRotating = mountedContraption.rotationMode == CartMovementMode.ROTATE_PAUSED; - } - - Entity riding = e; - while (riding.getRidingEntity() != null && !(contraption instanceof StabilizedContraption)) - riding = riding.getRidingEntity(); - - boolean isOnCoupling = false; - UUID couplingId = getCouplingId(); - isOnCoupling = couplingId != null && riding instanceof AbstractMinecartEntity; - - if (!attachedExtraInventories) { - attachInventoriesFromRidingCarts(riding, isOnCoupling, couplingId); - attachedExtraInventories = true; - } - - boolean rotating = updateOrientation(rotationLock, wasStalled, riding, isOnCoupling); - if (!rotating || !pauseWhileRotating) - tickActors(); - boolean isStalled = isStalled(); - - LazyOptional capability = - riding.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); - if (capability.isPresent()) { - if (!world.isRemote()) - capability.orElse(null) - .setStalledExternally(isStalled); - } else { - if (isStalled) { - if (!wasStalled) - motionBeforeStall = riding.getMotion(); - riding.setMotion(0, 0, 0); - } - if (wasStalled && !isStalled) { - riding.setMotion(motionBeforeStall); - motionBeforeStall = Vector3d.ZERO; - } - } - - if (world.isRemote) - return; - - if (!isStalled()) { - if (isOnCoupling) { - Couple coupledCarts = getCoupledCartsIfPresent(); - if (coupledCarts == null) - return; - coupledCarts.map(MinecartController::cart) - .forEach(this::powerFurnaceCartWithFuelFromStorage); - return; - } - powerFurnaceCartWithFuelFromStorage(riding); - } - } - - protected boolean updateOrientation(boolean rotationLock, boolean wasStalled, Entity riding, boolean isOnCoupling) { - if (isOnCoupling) { - Couple coupledCarts = getCoupledCartsIfPresent(); - if (coupledCarts == null) - return false; - - Vector3d positionVec = coupledCarts.getFirst() - .cart() - .getPositionVec(); - Vector3d coupledVec = coupledCarts.getSecond() - .cart() - .getPositionVec(); - - double diffX = positionVec.x - coupledVec.x; - double diffY = positionVec.y - coupledVec.y; - double diffZ = positionVec.z - coupledVec.z; - - prevYaw = yaw; - prevPitch = pitch; - yaw = (float) (MathHelper.atan2(diffZ, diffX) * 180 / Math.PI); - pitch = (float) (Math.atan2(diffY, Math.sqrt(diffX * diffX + diffZ * diffZ)) * 180 / Math.PI); - - if (getCouplingId().equals(riding.getUniqueID())) { - pitch *= -1; - yaw += 180; - } - return false; - } - - if (contraption instanceof StabilizedContraption) { - if (!(riding instanceof OrientedContraptionEntity)) - return false; - StabilizedContraption stabilized = (StabilizedContraption) contraption; - Direction facing = stabilized.getFacing(); - if (facing.getAxis() - .isVertical()) - return false; - OrientedContraptionEntity parent = (OrientedContraptionEntity) riding; - prevYaw = yaw; - yaw = -parent.getYaw(1); - return false; - } - - prevYaw = yaw; - if (wasStalled) - return false; - - boolean rotating = false; - Vector3d movementVector = riding.getMotion(); - Vector3d locationDiff = riding.getPositionVec() - .subtract(riding.prevPosX, riding.prevPosY, riding.prevPosZ); - if (!(riding instanceof AbstractMinecartEntity)) - movementVector = locationDiff; - Vector3d motion = movementVector.normalize(); - - if (!isInitialOrientationPresent() && !world.isRemote) { - if (locationDiff.length() > 0) { - Direction facingFromVector = - Direction.getFacingFromVector(locationDiff.x, locationDiff.y, locationDiff.z); - if (initialYawOffset != -1) - facingFromVector = Direction.fromAngle(facingFromVector.getHorizontalAngle() - initialYawOffset); - if (facingFromVector.getAxis() - .isHorizontal()) - setInitialOrientation(facingFromVector); - } - } - - if (!rotationLock) { - if (motion.length() > 0) { - targetYaw = yawFromVector(motion); - if (targetYaw < 0) - targetYaw += 360; - if (yaw < 0) - yaw += 360; - } - - prevYaw = yaw; - yaw = angleLerp(0.4f, yaw, targetYaw); - if (Math.abs(AngleHelper.getShortestAngleDiff(yaw, targetYaw)) < 1f) - yaw = targetYaw; - else - rotating = true; - } - return rotating; - } - - protected void powerFurnaceCartWithFuelFromStorage(Entity riding) { - if (!(riding instanceof FurnaceMinecartEntity)) - return; - FurnaceMinecartEntity furnaceCart = (FurnaceMinecartEntity) riding; - - // Notify to not trigger serialization side-effects - isSerializingFurnaceCart = true; - CompoundNBT nbt = furnaceCart.serializeNBT(); - isSerializingFurnaceCart = false; - - int fuel = nbt.getInt("Fuel"); - int fuelBefore = fuel; - double pushX = nbt.getDouble("PushX"); - double pushZ = nbt.getDouble("PushZ"); - - int i = MathHelper.floor(furnaceCart.getX()); - int j = MathHelper.floor(furnaceCart.getY()); - int k = MathHelper.floor(furnaceCart.getZ()); - if (furnaceCart.world.getBlockState(new BlockPos(i, j - 1, k)) - .isIn(BlockTags.RAILS)) - --j; - - BlockPos blockpos = new BlockPos(i, j, k); - BlockState blockstate = this.world.getBlockState(blockpos); - if (furnaceCart.canUseRail() && blockstate.isIn(BlockTags.RAILS)) - if (fuel > 1) - riding.setMotion(riding.getMotion() - .normalize() - .scale(1)); - if (fuel < 5 && contraption != null) { - ItemStack coal = ItemHelper.extract(contraption.inventory, FUEL_ITEMS, 1, false); - if (!coal.isEmpty()) - fuel += 3600; - } - - if (fuel != fuelBefore || pushX != 0 || pushZ != 0) { - nbt.putInt("Fuel", fuel); - nbt.putDouble("PushX", 0); - nbt.putDouble("PushZ", 0); - furnaceCart.deserializeNBT(nbt); - } - } - - @Nullable - public Couple getCoupledCartsIfPresent() { - UUID couplingId = getCouplingId(); - if (couplingId == null) - return null; - MinecartController controller = CapabilityMinecartController.getIfPresent(world, couplingId); - if (controller == null || !controller.isPresent()) - return null; - UUID coupledCart = controller.getCoupledCart(true); - MinecartController coupledController = CapabilityMinecartController.getIfPresent(world, coupledCart); - if (coupledController == null || !coupledController.isPresent()) - return null; - return Couple.create(controller, coupledController); - } - - protected void attachInventoriesFromRidingCarts(Entity riding, boolean isOnCoupling, UUID couplingId) { - if (isOnCoupling) { - Couple coupledCarts = getCoupledCartsIfPresent(); - if (coupledCarts == null) - return; - coupledCarts.map(MinecartController::cart) - .forEach(contraption::addExtraInventories); - return; - } - contraption.addExtraInventories(riding); - } - - @Override - public CompoundNBT writeWithoutTypeId(CompoundNBT nbt) { - return isSerializingFurnaceCart ? nbt : super.writeWithoutTypeId(nbt); - } - - @Nullable - public UUID getCouplingId() { - Optional uuid = dataManager.get(COUPLING); - return uuid == null ? null : uuid.isPresent() ? uuid.get() : null; - } - - public void setCouplingId(UUID id) { - dataManager.set(COUPLING, Optional.ofNullable(id)); - } - - @Override - public Vector3d getAnchorVec() { - return new Vector3d(getX() - .5, getY(), getZ() - .5); - } - - @Override - protected StructureTransform makeStructureTransform() { - BlockPos offset = new BlockPos(getAnchorVec().add(.5, .5, .5)); - return new StructureTransform(offset, 0, -yaw + getInitialYaw(), 0); - } - - @Override - protected float getStalledAngle() { - return yaw; - } - - @Override - protected void handleStallInformation(float x, float y, float z, float angle) { - yaw = angle; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void doLocalTransforms(float partialTicks, MatrixStack[] matrixStacks) { - float angleInitialYaw = getInitialYaw(); - float angleYaw = getYaw(partialTicks); - float anglePitch = getPitch(partialTicks); - - for (MatrixStack stack : matrixStacks) - stack.translate(-.5f, 0, -.5f); - - Entity ridingEntity = getRidingEntity(); - if (ridingEntity instanceof AbstractMinecartEntity) - repositionOnCart(partialTicks, matrixStacks, ridingEntity); - else if (ridingEntity instanceof AbstractContraptionEntity) { - if (ridingEntity.getRidingEntity() instanceof AbstractMinecartEntity) - repositionOnCart(partialTicks, matrixStacks, ridingEntity.getRidingEntity()); - else - repositionOnContraption(partialTicks, matrixStacks, ridingEntity); - } - - for (MatrixStack stack : matrixStacks) - MatrixStacker.of(stack) - .nudge(getEntityId()) - .centre() - .rotateY(angleYaw) - .rotateZ(anglePitch) - .rotateY(angleInitialYaw) - .unCentre(); - } - - @OnlyIn(Dist.CLIENT) - private void repositionOnContraption(float partialTicks, MatrixStack[] matrixStacks, Entity ridingEntity) { - Vector3d pos = getContraptionOffset(partialTicks, ridingEntity); - for (MatrixStack stack : matrixStacks) - stack.translate(pos.x, pos.y, pos.z); - } - - // Minecarts do not always render at their exact location, so the contraption - // has to adjust aswell - @OnlyIn(Dist.CLIENT) - private void repositionOnCart(float partialTicks, MatrixStack[] matrixStacks, Entity ridingEntity) { - Vector3d cartPos = getCartOffset(partialTicks, ridingEntity); - - if (cartPos == Vector3d.ZERO) return; - - for (MatrixStack stack : matrixStacks) - stack.translate(cartPos.x, cartPos.y, cartPos.z); - } - - @OnlyIn(Dist.CLIENT) - private Vector3d getContraptionOffset(float partialTicks, Entity ridingEntity) { - AbstractContraptionEntity parent = (AbstractContraptionEntity) ridingEntity; - Vector3d passengerPosition = parent.getPassengerPosition(this, partialTicks); - double x = passengerPosition.x - MathHelper.lerp(partialTicks, this.lastTickPosX, this.getX()); - double y = passengerPosition.y - MathHelper.lerp(partialTicks, this.lastTickPosY, this.getY()); - double z = passengerPosition.z - MathHelper.lerp(partialTicks, this.lastTickPosZ, this.getZ()); - - return new Vector3d(x, y, z); - } - - @OnlyIn(Dist.CLIENT) - private Vector3d getCartOffset(float partialTicks, Entity ridingEntity) { - AbstractMinecartEntity cart = (AbstractMinecartEntity) ridingEntity; - double cartX = MathHelper.lerp(partialTicks, cart.lastTickPosX, cart.getX()); - double cartY = MathHelper.lerp(partialTicks, cart.lastTickPosY, cart.getY()); - double cartZ = MathHelper.lerp(partialTicks, cart.lastTickPosZ, cart.getZ()); - Vector3d cartPos = cart.getPos(cartX, cartY, cartZ); - - if (cartPos != null) { - Vector3d cartPosFront = cart.getPosOffset(cartX, cartY, cartZ, (double) 0.3F); - Vector3d cartPosBack = cart.getPosOffset(cartX, cartY, cartZ, (double) -0.3F); - if (cartPosFront == null) - cartPosFront = cartPos; - if (cartPosBack == null) - cartPosBack = cartPos; - - cartX = cartPos.x - cartX; - cartY = (cartPosFront.y + cartPosBack.y) / 2.0D - cartY; - cartZ = cartPos.z - cartZ; - - return new Vector3d(cartX, cartY, cartZ); - } - - return Vector3d.ZERO; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntityRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntityRenderer.java deleted file mode 100644 index d1cfea7c5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/OrientedContraptionEntityRenderer.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import net.minecraft.client.renderer.culling.ClippingHelper; -import net.minecraft.client.renderer.entity.EntityRendererManager; - -public class OrientedContraptionEntityRenderer extends ContraptionEntityRenderer { - - public OrientedContraptionEntityRenderer(EntityRendererManager p_i46179_1_) { - super(p_i46179_1_); - } - - @Override - public boolean shouldRender(OrientedContraptionEntity entity, ClippingHelper p_225626_2_, double p_225626_3_, - double p_225626_5_, double p_225626_7_) { - if (!super.shouldRender(entity, p_225626_2_, p_225626_3_, p_225626_5_, p_225626_7_)) - return false; - if (entity.getContraption() - .getType() == ContraptionType.MOUNTED && entity.getRidingEntity() == null) - return false; - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java deleted file mode 100644 index 1d47d2554..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/StructureTransform.java +++ /dev/null @@ -1,349 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import static net.minecraft.block.HorizontalFaceBlock.FACE; -import static net.minecraft.state.properties.BlockStateProperties.AXIS; -import static net.minecraft.state.properties.BlockStateProperties.FACING; -import static net.minecraft.state.properties.BlockStateProperties.HORIZONTAL_FACING; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; -import com.simibubi.create.foundation.utility.DirectionHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BellBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalFaceBlock; -import net.minecraft.block.SlabBlock; -import net.minecraft.block.StairsBlock; -import net.minecraft.network.PacketBuffer; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.properties.AttachFace; -import net.minecraft.state.properties.BellAttachment; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.Half; -import net.minecraft.state.properties.SlabType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class StructureTransform { - - // Assuming structures cannot be rotated around multiple axes at once - Rotation rotation; - int angle; - Axis rotationAxis; - BlockPos offset; - - private StructureTransform(BlockPos offset, int angle, Axis axis, Rotation rotation) { - this.offset = offset; - this.angle = angle; - rotationAxis = axis; - this.rotation = rotation; - } - - public StructureTransform(BlockPos offset, float xRotation, float yRotation, float zRotation) { - this.offset = offset; - if (xRotation != 0) { - rotationAxis = Axis.X; - angle = (int) (Math.round(xRotation / 90) * 90); - } - if (yRotation != 0) { - rotationAxis = Axis.Y; - angle = (int) (Math.round(yRotation / 90) * 90); - } - if (zRotation != 0) { - rotationAxis = Axis.Z; - angle = (int) (Math.round(zRotation / 90) * 90); - } - - angle %= 360; - if (angle < -90) - angle += 360; - - this.rotation = Rotation.NONE; - if (angle == -90 || angle == 270) - this.rotation = Rotation.CLOCKWISE_90; - if (angle == 90) - this.rotation = Rotation.COUNTERCLOCKWISE_90; - if (angle == 180) - this.rotation = Rotation.CLOCKWISE_180; - - } - - public Vector3d apply(Vector3d localVec) { - Vector3d vec = localVec; - if (rotationAxis != null) - vec = VecHelper.rotateCentered(vec, angle, rotationAxis); - vec = vec.add(Vector3d.of(offset)); - return vec; - } - - public BlockPos apply(BlockPos localPos) { - Vector3d vec = VecHelper.getCenterOf(localPos); - if (rotationAxis != null) - vec = VecHelper.rotateCentered(vec, angle, rotationAxis); - localPos = new BlockPos(vec); - return localPos.add(offset); - } - - /** - * Minecraft does not support blockstate rotation around axes other than y. Add - * specific cases here for blockstates, that should react to rotations around - * horizontal axes - */ - public BlockState apply(BlockState state) { - Block block = state.getBlock(); - - if (rotationAxis == Axis.Y) { - if (block instanceof BellBlock) { - if (state.get(BlockStateProperties.BELL_ATTACHMENT) == BellAttachment.DOUBLE_WALL) { - state = state.with(BlockStateProperties.BELL_ATTACHMENT, BellAttachment.SINGLE_WALL); - } - return state.with(HorizontalFaceBlock.HORIZONTAL_FACING, - rotation.rotate(state.get(HorizontalFaceBlock.HORIZONTAL_FACING))); - } - return state.rotate(rotation); - } - - if (block instanceof AbstractChassisBlock) - return rotateChassis(state); - - if (block instanceof HorizontalFaceBlock) { - Direction stateFacing = state.get(HorizontalFaceBlock.HORIZONTAL_FACING); - AttachFace stateFace = state.get(FACE); - Direction forcedAxis = rotationAxis == Axis.Z ? Direction.EAST : Direction.SOUTH; - - if (stateFacing.getAxis() == rotationAxis && stateFace == AttachFace.WALL) - return state; - - for (int i = 0; i < rotation.ordinal(); i++) { - stateFace = state.get(FACE); - stateFacing = state.get(HorizontalFaceBlock.HORIZONTAL_FACING); - - boolean b = state.get(FACE) == AttachFace.CEILING; - state = state.with(HORIZONTAL_FACING, b ? forcedAxis : forcedAxis.getOpposite()); - - if (stateFace != AttachFace.WALL) { - state = state.with(FACE, AttachFace.WALL); - continue; - } - - if (stateFacing.getAxisDirection() == AxisDirection.POSITIVE) { - state = state.with(FACE, AttachFace.FLOOR); - continue; - } - state = state.with(FACE, AttachFace.CEILING); - } - - return state; - } - - boolean halfTurn = rotation == Rotation.CLOCKWISE_180; - if (block instanceof StairsBlock) { - state = transformStairs(state, halfTurn); - return state; - } - - if (AllBlocks.BELT.has(state)) { - state = transformBelt(state, halfTurn); - return state; - } - - if (state.contains(FACING)) { - Direction newFacing = transformFacing(state.get(FACING)); - if (state.contains(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE)) { - if (rotationAxis == newFacing.getAxis() && rotation.ordinal() % 2 == 1) - state = state.cycle(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE); - } - state = state.with(FACING, newFacing); - - } else if (state.contains(AXIS)) { - state = state.with(AXIS, transformAxis(state.get(AXIS))); - - } else if (halfTurn) { - - if (state.contains(FACING)) { - Direction stateFacing = state.get(FACING); - if (stateFacing.getAxis() == rotationAxis) - return state; - } - - if (state.contains(HORIZONTAL_FACING)) { - Direction stateFacing = state.get(HORIZONTAL_FACING); - if (stateFacing.getAxis() == rotationAxis) - return state; - } - - state = state.rotate(rotation); - if (state.contains(SlabBlock.TYPE) && state.get(SlabBlock.TYPE) != SlabType.DOUBLE) - state = state.with(SlabBlock.TYPE, - state.get(SlabBlock.TYPE) == SlabType.BOTTOM ? SlabType.TOP : SlabType.BOTTOM); - } - - return state; - } - - protected BlockState transformStairs(BlockState state, boolean halfTurn) { - if (state.get(StairsBlock.FACING) - .getAxis() != rotationAxis) { - for (int i = 0; i < rotation.ordinal(); i++) { - Direction direction = state.get(StairsBlock.FACING); - Half half = state.get(StairsBlock.HALF); - if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ half == Half.BOTTOM - ^ direction.getAxis() == Axis.Z) - state = state.cycle(StairsBlock.HALF); - else - state = state.with(StairsBlock.FACING, direction.getOpposite()); - } - } else { - if (halfTurn) { - state = state.cycle(StairsBlock.HALF); - } - } - return state; - } - - protected BlockState transformBelt(BlockState state, boolean halfTurn) { - Direction initialDirection = state.get(BeltBlock.HORIZONTAL_FACING); - boolean diagonal = - state.get(BeltBlock.SLOPE) == BeltSlope.DOWNWARD || state.get(BeltBlock.SLOPE) == BeltSlope.UPWARD; - - if (!diagonal) { - for (int i = 0; i < rotation.ordinal(); i++) { - Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - BeltSlope slope = state.get(BeltBlock.SLOPE); - boolean vertical = slope == BeltSlope.VERTICAL; - boolean horizontal = slope == BeltSlope.HORIZONTAL; - boolean sideways = slope == BeltSlope.SIDEWAYS; - - Direction newDirection = direction.getOpposite(); - BeltSlope newSlope = BeltSlope.VERTICAL; - - if (vertical) { - if (direction.getAxis() == rotationAxis) { - newDirection = direction.rotateYCCW(); - newSlope = BeltSlope.SIDEWAYS; - } else { - newSlope = BeltSlope.HORIZONTAL; - newDirection = direction; - if (direction.getAxis() == Axis.Z) - newDirection = direction.getOpposite(); - } - } - - if (sideways) { - newDirection = direction; - if (direction.getAxis() == rotationAxis) - newSlope = BeltSlope.HORIZONTAL; - else - newDirection = direction.rotateYCCW(); - } - - if (horizontal) { - newDirection = direction; - if (direction.getAxis() == rotationAxis) - newSlope = BeltSlope.SIDEWAYS; - else if (direction.getAxis() != Axis.Z) - newDirection = direction.getOpposite(); - } - - state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); - state = state.with(BeltBlock.SLOPE, newSlope); - } - - } else if (initialDirection.getAxis() != rotationAxis) { - for (int i = 0; i < rotation.ordinal(); i++) { - Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - Direction newDirection = direction.getOpposite(); - BeltSlope slope = state.get(BeltBlock.SLOPE); - boolean upward = slope == BeltSlope.UPWARD; - boolean downward = slope == BeltSlope.DOWNWARD; - - // Rotate diagonal - if (direction.getAxisDirection() == AxisDirection.POSITIVE ^ downward ^ direction.getAxis() == Axis.Z) { - state = state.with(BeltBlock.SLOPE, upward ? BeltSlope.DOWNWARD : BeltSlope.UPWARD); - } else { - state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); - } - } - - } else if (halfTurn) { - Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - Direction newDirection = direction.getOpposite(); - BeltSlope slope = state.get(BeltBlock.SLOPE); - boolean vertical = slope == BeltSlope.VERTICAL; - - if (diagonal) { - state = state.with(BeltBlock.SLOPE, slope == BeltSlope.UPWARD ? BeltSlope.DOWNWARD - : slope == BeltSlope.DOWNWARD ? BeltSlope.UPWARD : slope); - } else if (vertical) { - state = state.with(BeltBlock.HORIZONTAL_FACING, newDirection); - } - } - return state; - } - - public Axis transformAxis(Axis axisIn) { - Direction facing = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axisIn); - facing = transformFacing(facing); - Axis axis = facing.getAxis(); - return axis; - } - - public Direction transformFacing(Direction facing) { - for (int i = 0; i < rotation.ordinal(); i++) - facing = DirectionHelper.rotateAround(facing, rotationAxis); - return facing; - } - - private BlockState rotateChassis(BlockState state) { - if (rotation == Rotation.NONE) - return state; - - BlockState rotated = state.with(AXIS, transformAxis(state.get(AXIS))); - AbstractChassisBlock block = (AbstractChassisBlock) state.getBlock(); - - for (Direction face : Iterate.directions) { - BooleanProperty glueableSide = block.getGlueableSide(rotated, face); - if (glueableSide != null) - rotated = rotated.with(glueableSide, false); - } - - for (Direction face : Iterate.directions) { - BooleanProperty glueableSide = block.getGlueableSide(state, face); - if (glueableSide == null || !state.get(glueableSide)) - continue; - Direction rotatedFacing = transformFacing(face); - BooleanProperty rotatedGlueableSide = block.getGlueableSide(rotated, rotatedFacing); - if (rotatedGlueableSide != null) - rotated = rotated.with(rotatedGlueableSide, true); - } - - return rotated; - } - - public static StructureTransform fromBuffer(PacketBuffer buffer) { - BlockPos readBlockPos = buffer.readBlockPos(); - int readAngle = buffer.readInt(); - int axisIndex = buffer.readVarInt(); - int rotationIndex = buffer.readVarInt(); - return new StructureTransform(readBlockPos, readAngle, axisIndex == -1 ? null : Axis.values()[axisIndex], - rotationIndex == -1 ? null : Rotation.values()[rotationIndex]); - } - - public void writeToBuffer(PacketBuffer buffer) { - buffer.writeBlockPos(offset); - buffer.writeInt(angle); - buffer.writeVarInt(rotationAxis == null ? -1 : rotationAxis.ordinal()); - buffer.writeVarInt(rotation == null ? -1 : rotation.ordinal()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/TranslatingContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/TranslatingContraption.java deleted file mode 100644 index a692a112a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/TranslatingContraption.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; - -public abstract class TranslatingContraption extends Contraption { - - protected Set cachedColliders; - protected Direction cachedColliderDirection; - - public Set getColliders(World world, Direction movementDirection) { - if (getBlocks() == null) - return Collections.emptySet(); - if (cachedColliders == null || cachedColliderDirection != movementDirection) { - cachedColliders = new HashSet<>(); - cachedColliderDirection = movementDirection; - - for (BlockInfo info : getBlocks().values()) { - BlockPos offsetPos = info.pos.offset(movementDirection); - if (info.state.getCollisionShape(world, offsetPos) - .isEmpty()) - continue; - if (getBlocks().containsKey(offsetPos) - && !getBlocks().get(offsetPos).state.getCollisionShape(world, offsetPos) - .isEmpty()) - continue; - cachedColliders.add(info.pos); - } - - } - return cachedColliders; - } - - @Override - public void removeBlocksFromWorld(World world, BlockPos offset) { - int count = blocks.size(); - super.removeBlocksFromWorld(world, offset); - if (count != blocks.size()) { - cachedColliders = null; - } - } - - @Override - public boolean canBeStabilized(Direction facing, BlockPos localPos) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java deleted file mode 100644 index 16bd4e82a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/AnchoredLighter.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; - -public class AnchoredLighter extends ContraptionLighter { - - public AnchoredLighter(Contraption contraption) { - super(contraption); - } - - @Override - public GridAlignedBB getContraptionBounds() { - GridAlignedBB bb = GridAlignedBB.from(contraption.bounds); - bb.translate(contraption.anchor); - return bb; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingBlock.java deleted file mode 100644 index 66e55acbe..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingBlock.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorldReader; - -public abstract class BearingBlock extends DirectionalKineticBlock { - - public BearingBlock(Properties properties) { - super(properties); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == state.get(FACING).getOpposite(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(FACING).getAxis(); - } - - @Override - public boolean showCapacityWithAnnotation() { - return true; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - ActionResultType resultType = super.onWrenched(state, context); - if (!context.getWorld().isRemote && resultType.isAccepted()) { - TileEntity te = context.getWorld().getTileEntity(context.getPos()); - if (te instanceof MechanicalBearingTileEntity) { - ((MechanicalBearingTileEntity) te).disassemble(); - } - } - return resultType; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingContraption.java deleted file mode 100644 index 8e1e60aa6..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingContraption.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class BearingContraption extends Contraption { - - protected int sailBlocks; - protected Direction facing; - - private boolean isWindmill; - - public BearingContraption() {} - - public BearingContraption(boolean isWindmill, Direction facing) { - this.isWindmill = isWindmill; - this.facing = facing; - } - - @Override - public boolean assemble(World world, BlockPos pos) throws AssemblyException { - BlockPos offset = pos.offset(facing); - if (!searchMovedStructure(world, offset, null)) - return false; - startMoving(world); - expandBoundsAroundAxis(facing.getAxis()); - if (isWindmill && sailBlocks < AllConfigs.SERVER.kinetics.minimumWindmillSails.get()) - throw AssemblyException.notEnoughSails(sailBlocks); - if (blocks.isEmpty()) - return false; - return true; - } - - @Override - protected ContraptionType getType() { - return ContraptionType.BEARING; - } - - @Override - protected boolean isAnchoringBlockAt(BlockPos pos) { - return pos.equals(anchor.offset(facing.getOpposite())); - } - - @Override - public void addBlock(BlockPos pos, Pair capture) { - BlockPos localPos = pos.subtract(anchor); - if (!getBlocks().containsKey(localPos) && AllBlockTags.WINDMILL_SAILS.matches(capture.getKey().state)) - sailBlocks++; - super.addBlock(pos, capture); - } - - @Override - public CompoundNBT writeNBT(boolean spawnPacket) { - CompoundNBT tag = super.writeNBT(spawnPacket); - tag.putInt("Sails", sailBlocks); - tag.putInt("Facing", facing.getIndex()); - return tag; - } - - @Override - public void readNBT(World world, CompoundNBT tag, boolean spawnData) { - sailBlocks = tag.getInt("Sails"); - facing = Direction.byIndex(tag.getInt("Facing")); - super.readNBT(world, tag, spawnData); - } - - public int getSailBlocks() { - return sailBlocks; - } - - public Direction getFacing() { - return facing; - } - - @Override - public boolean canBeStabilized(Direction facing, BlockPos localPos) { - if (facing.getOpposite() == this.facing && BlockPos.ZERO.equals(localPos)) - return false; - return facing.getAxis() == this.facing.getAxis(); - } - - @OnlyIn(Dist.CLIENT) - @Override - public ContraptionLighter makeLighter() { - return new AnchoredLighter(this); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java deleted file mode 100644 index 52febb972..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingInstance.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.BackHalfShaftInstance; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3f; - -public class BearingInstance extends BackHalfShaftInstance implements IDynamicInstance { - final B bearing; - - final OrientedData topInstance; - - final Vector3f rotationAxis; - final Quaternion blockOrientation; - - public BearingInstance(MaterialManager modelManager, B tile) { - super(modelManager, tile); - this.bearing = tile; - - Direction facing = blockState.get(BlockStateProperties.FACING); - rotationAxis = Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis).getUnitVector(); - - blockOrientation = getBlockStateOrientation(facing); - - PartialModel top = - bearing.isWoodenTop() ? AllBlockPartials.BEARING_TOP_WOODEN : AllBlockPartials.BEARING_TOP; - - topInstance = getOrientedMaterial().getModel(top, blockState).createInstance(); - - topInstance.setPosition(getInstancePosition()).setRotation(blockOrientation); - } - - @Override - public void beginFrame() { - - float interpolatedAngle = bearing.getInterpolatedAngle(AnimationTickHolder.getPartialTicks() - 1); - Quaternion rot = rotationAxis.getDegreesQuaternion(interpolatedAngle); - - rot.multiply(blockOrientation); - - topInstance.setRotation(rot); - } - - @Override - public void updateLight() { - super.updateLight(); - relight(pos, topInstance); - } - - @Override - public void remove() { - super.remove(); - topInstance.delete(); - } - - static Quaternion getBlockStateOrientation(Direction facing) { - Quaternion orientation; - - if (facing.getAxis().isHorizontal()) { - orientation = Vector3f.POSITIVE_Y.getDegreesQuaternion(AngleHelper.horizontalAngle(facing.getOpposite())); - } else { - orientation = Quaternion.IDENTITY.copy(); - } - - orientation.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-90 - AngleHelper.verticalAngle(facing))); - return orientation; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java deleted file mode 100644 index 0d23f7523..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/BearingRenderer.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; - -public class BearingRenderer extends KineticTileEntityRenderer { - - public BearingRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - - IBearingTileEntity bearingTe = (IBearingTileEntity) te; - final Direction facing = te.getBlockState() - .get(BlockStateProperties.FACING); - PartialModel top = - bearingTe.isWoodenTop() ? AllBlockPartials.BEARING_TOP_WOODEN : AllBlockPartials.BEARING_TOP; - SuperByteBuffer superBuffer = PartialBufferer.get(top, te.getBlockState()); - - float interpolatedAngle = bearingTe.getInterpolatedAngle(partialTicks - 1); - kineticRotationTransform(superBuffer, te, facing.getAxis(), (float) (interpolatedAngle / 180 * Math.PI), light); - - if (facing.getAxis() - .isHorizontal()) - superBuffer.rotateCentered(Direction.UP, - AngleHelper.rad(AngleHelper.horizontalAngle(facing.getOpposite()))); - superBuffer.rotateCentered(Direction.EAST, AngleHelper.rad(-90 - AngleHelper.verticalAngle(facing))); - superBuffer.renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - - @Override - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), te.getBlockState() - .get(BearingBlock.FACING) - .getOpposite()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingBlock.java deleted file mode 100644 index 125950656..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingBlock.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class ClockworkBearingBlock extends BearingBlock implements ITE { - - public ClockworkBearingBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.CLOCKWORK_BEARING.create(); - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, - PlayerEntity player, Hand handIn, BlockRayTraceResult hit) { - if (!player.isAllowEdit()) - return ActionResultType.FAIL; - if (player.isSneaking()) - return ActionResultType.FAIL; - if (player.getHeldItem(handIn).isEmpty()) { - if (!worldIn.isRemote) { - withTileEntityDo(worldIn, pos, te -> { - if (te.running) { - te.disassemble(); - return; - } - te.assembleNextTick = true; - }); - } - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - - @Override - public Class getTileEntityClass() { - return ClockworkBearingTileEntity.class; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - ActionResultType resultType = super.onWrenched(state, context); - if (!context.getWorld().isRemote && resultType.isAccepted()) - withTileEntityDo(context.getWorld(), context.getPos(), ClockworkBearingTileEntity::disassemble); - return resultType; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java deleted file mode 100644 index 4d60ec775..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkBearingTileEntity.java +++ /dev/null @@ -1,429 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import java.util.List; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.ClockworkContraption.HandType; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.ServerSpeedProvider; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; - -public class ClockworkBearingTileEntity extends KineticTileEntity - implements IBearingTileEntity, IDisplayAssemblyExceptions { - - protected ControlledContraptionEntity hourHand; - protected ControlledContraptionEntity minuteHand; - protected float hourAngle; - protected float minuteAngle; - protected float clientHourAngleDiff; - protected float clientMinuteAngleDiff; - - protected boolean running; - protected boolean assembleNextTick; - protected AssemblyException lastException; - protected ScrollOptionBehaviour operationMode; - - private float prevForcedAngle; - - public ClockworkBearingTileEntity(TileEntityType type) { - super(type); - setLazyTickRate(3); - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - operationMode = new ScrollOptionBehaviour<>(ClockHands.class, - Lang.translate("contraptions.clockwork.clock_hands"), this, getMovementModeSlot()); - operationMode.requiresWrench(); - behaviours.add(operationMode); - } - - @Override - public boolean isWoodenTop() { - return false; - } - - @Override - public void tick() { - super.tick(); - - if (world.isRemote) { - prevForcedAngle = hourAngle; - clientMinuteAngleDiff /= 2; - clientHourAngleDiff /= 2; - } - - if (!world.isRemote && assembleNextTick) { - assembleNextTick = false; - if (running) { - boolean canDisassemble = true; - if (speed == 0 && (canDisassemble || hourHand == null || hourHand.getContraption() - .getBlocks() - .isEmpty())) { - if (hourHand != null) - hourHand.getContraption() - .stop(world); - if (minuteHand != null) - minuteHand.getContraption() - .stop(world); - disassemble(); - } - return; - } else - assemble(); - return; - } - - if (!running) - return; - - if (!(hourHand != null && hourHand.isStalled())) { - float newAngle = hourAngle + getHourArmSpeed(); - hourAngle = (float) (newAngle % 360); - } - - if (!(minuteHand != null && minuteHand.isStalled())) { - float newAngle = minuteAngle + getMinuteArmSpeed(); - minuteAngle = (float) (newAngle % 360); - } - - applyRotations(); - } - - @Override - public AssemblyException getLastAssemblyException() { - return lastException; - } - - protected void applyRotations() { - BlockState blockState = getBlockState(); - Axis axis = Axis.X; - - if (blockState.contains(BlockStateProperties.FACING)) - axis = blockState.get(BlockStateProperties.FACING) - .getAxis(); - - if (hourHand != null) { - hourHand.setAngle(hourAngle); - hourHand.setRotationAxis(axis); - } - if (minuteHand != null) { - minuteHand.setAngle(minuteAngle); - minuteHand.setRotationAxis(axis); - } - } - - @Override - public void lazyTick() { - super.lazyTick(); - if (hourHand != null && !world.isRemote) - sendData(); - } - - public float getHourArmSpeed() { - float speed = getAngularSpeed() / 2f; - - if (speed != 0) { - ClockHands mode = ClockHands.values()[operationMode.getValue()]; - float hourTarget = mode == ClockHands.HOUR_FIRST ? getHourTarget(false) - : mode == ClockHands.MINUTE_FIRST ? getMinuteTarget() : getHourTarget(true); - float shortestAngleDiff = AngleHelper.getShortestAngleDiff(hourAngle, hourTarget); - if (shortestAngleDiff < 0) { - speed = Math.max(speed, shortestAngleDiff); - } else { - speed = Math.min(-speed, shortestAngleDiff); - } - } - - return speed + clientHourAngleDiff / 3f; - } - - public float getMinuteArmSpeed() { - float speed = getAngularSpeed(); - - if (speed != 0) { - ClockHands mode = ClockHands.values()[operationMode.getValue()]; - float minuteTarget = mode == ClockHands.MINUTE_FIRST ? getHourTarget(false) : getMinuteTarget(); - float shortestAngleDiff = AngleHelper.getShortestAngleDiff(minuteAngle, minuteTarget); - if (shortestAngleDiff < 0) { - speed = Math.max(speed, shortestAngleDiff); - } else { - speed = Math.min(-speed, shortestAngleDiff); - } - } - - return speed + clientMinuteAngleDiff / 3f; - } - - protected float getHourTarget(boolean cycle24) { - boolean isNatural = world.getDimension().isNatural(); - int dayTime = (int) ((world.getDayTime() * (isNatural ? 1 : 24)) % 24000); - int hours = (dayTime / 1000 + 6) % 24; - int offset = getBlockState().get(ClockworkBearingBlock.FACING) - .getAxisDirection() - .getOffset(); - float hourTarget = (float) (offset * -360 / (cycle24 ? 24f : 12f) * (hours % (cycle24 ? 24 : 12))); - return hourTarget; - } - - protected float getMinuteTarget() { - boolean isNatural = world.getDimension().isNatural(); - int dayTime = (int) ((world.getDayTime() * (isNatural ? 1 : 24)) % 24000); - int minutes = (dayTime % 1000) * 60 / 1000; - int offset = getBlockState().get(ClockworkBearingBlock.FACING) - .getAxisDirection() - .getOffset(); - float minuteTarget = (float) (offset * -360 / 60f * (minutes)); - return minuteTarget; - } - - public float getAngularSpeed() { - float speed = -Math.abs(getSpeed() * 3 / 10f); - if (world.isRemote) - speed *= ServerSpeedProvider.get(); - return speed; - } - - public void assemble() { - if (!(world.getBlockState(pos) - .getBlock() instanceof ClockworkBearingBlock)) - return; - - Direction direction = getBlockState().get(BlockStateProperties.FACING); - - // Collect Construct - Pair contraption; - try { - contraption = ClockworkContraption.assembleClockworkAt(world, pos, direction); - lastException = null; - } catch (AssemblyException e) { - lastException = e; - sendData(); - return; - } - if (contraption == null) - return; - if (contraption.getLeft() == null) - return; - if (contraption.getLeft() - .getBlocks() - .isEmpty()) - return; - BlockPos anchor = pos.offset(direction); - - contraption.getLeft() - .removeBlocksFromWorld(world, BlockPos.ZERO); - hourHand = ControlledContraptionEntity.create(world, this, contraption.getLeft()); - hourHand.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - hourHand.setRotationAxis(direction.getAxis()); - world.addEntity(hourHand); - - AllTriggers.triggerForNearbyPlayers(AllTriggers.CLOCKWORK_BEARING, world, pos, 5); - - if (contraption.getRight() != null) { - anchor = pos.offset(direction, contraption.getRight().offset + 1); - contraption.getRight() - .removeBlocksFromWorld(world, BlockPos.ZERO); - minuteHand = ControlledContraptionEntity.create(world, this, contraption.getRight()); - minuteHand.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - minuteHand.setRotationAxis(direction.getAxis()); - world.addEntity(minuteHand); - } - - // Run - running = true; - hourAngle = 0; - minuteAngle = 0; - sendData(); - } - - public void disassemble() { - if (!running && hourHand == null && minuteHand == null) - return; - - hourAngle = 0; - minuteAngle = 0; - applyRotations(); - - if (hourHand != null) { - hourHand.disassemble(); - } - if (minuteHand != null) - minuteHand.disassemble(); - - hourHand = null; - minuteHand = null; - running = false; - sendData(); - } - - @Override - public void attach(ControlledContraptionEntity contraption) { - if (!(contraption.getContraption() instanceof ClockworkContraption)) - return; - - ClockworkContraption cc = (ClockworkContraption) contraption.getContraption(); - markDirty(); - Direction facing = getBlockState().get(BlockStateProperties.FACING); - BlockPos anchor = pos.offset(facing, cc.offset + 1); - if (cc.handType == HandType.HOUR) { - this.hourHand = contraption; - hourHand.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - } else { - this.minuteHand = contraption; - minuteHand.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - } - if (!world.isRemote) { - this.running = true; - sendData(); - } - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putBoolean("Running", running); - compound.putFloat("HourAngle", hourAngle); - compound.putFloat("MinuteAngle", minuteAngle); - AssemblyException.write(compound, lastException); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - float hourAngleBefore = hourAngle; - float minuteAngleBefore = minuteAngle; - - running = compound.getBoolean("Running"); - hourAngle = compound.getFloat("HourAngle"); - minuteAngle = compound.getFloat("MinuteAngle"); - lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); - - if (!clientPacket) - return; - - if (running) { - clientHourAngleDiff = AngleHelper.getShortestAngleDiff(hourAngleBefore, hourAngle); - clientMinuteAngleDiff = AngleHelper.getShortestAngleDiff(minuteAngleBefore, minuteAngle); - hourAngle = hourAngleBefore; - minuteAngle = minuteAngleBefore; - } else { - hourHand = null; - minuteHand = null; - } - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - assembleNextTick = true; - } - - @Override - public boolean isValid() { - return !isRemoved(); - } - - @Override - public float getInterpolatedAngle(float partialTicks) { - if (isVirtual()) - return MathHelper.lerp(partialTicks, prevForcedAngle, hourAngle); - if (hourHand == null || hourHand.isStalled()) - partialTicks = 0; - return MathHelper.lerp(partialTicks, hourAngle, hourAngle + getHourArmSpeed()); - } - - @Override - public void onStall() { - if (!world.isRemote) - sendData(); - } - - @Override - public void remove() { - if (!world.isRemote) - disassemble(); - super.remove(); - } - - @Override - public void collided() {} - - @Override - public boolean isAttachedTo(AbstractContraptionEntity contraption) { - if (!(contraption.getContraption() instanceof ClockworkContraption)) - return false; - ClockworkContraption cc = (ClockworkContraption) contraption.getContraption(); - if (cc.handType == HandType.HOUR) - return this.hourHand == contraption; - else - return this.minuteHand == contraption; - } - - public boolean isRunning() { - return running; - } - - static enum ClockHands implements INamedIconOptions { - - HOUR_FIRST(AllIcons.I_HOUR_HAND_FIRST), - MINUTE_FIRST(AllIcons.I_MINUTE_HAND_FIRST), - HOUR_FIRST_24(AllIcons.I_HOUR_HAND_FIRST_24), - - ; - - private String translationKey; - private AllIcons icon; - - private ClockHands(AllIcons icon) { - this.icon = icon; - translationKey = "contraptions.clockwork." + Lang.asId(name()); - } - - @Override - public AllIcons getIcon() { - return icon; - } - - @Override - public String getTranslationKey() { - return translationKey; - } - - } - - @Override - public BlockPos getBlockPosition() { - return pos; - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - - public void setAngle(float forcedAngle) { - hourAngle = forcedAngle; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkContraption.java deleted file mode 100644 index 949228ba9..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/ClockworkContraption.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import java.util.HashSet; -import java.util.Queue; -import java.util.Set; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class ClockworkContraption extends Contraption { - - protected Direction facing; - public HandType handType; - public int offset; - private Set ignoreBlocks = new HashSet<>(); - - @Override - protected ContraptionType getType() { - return ContraptionType.CLOCKWORK; - } - - private void ignoreBlocks(Set blocks, BlockPos anchor) { - for (BlockPos blockPos : blocks) - ignoreBlocks.add(anchor.add(blockPos)); - } - - @Override - protected boolean isAnchoringBlockAt(BlockPos pos) { - return pos.equals(anchor.offset(facing.getOpposite(), offset + 1)); - } - - public static Pair assembleClockworkAt(World world, BlockPos pos, - Direction direction) throws AssemblyException { - int hourArmBlocks = 0; - - ClockworkContraption hourArm = new ClockworkContraption(); - ClockworkContraption minuteArm = null; - - hourArm.facing = direction; - hourArm.handType = HandType.HOUR; - if (!hourArm.assemble(world, pos)) - return null; - for (int i = 0; i < 16; i++) { - BlockPos offsetPos = BlockPos.ZERO.offset(direction, i); - if (hourArm.getBlocks() - .containsKey(offsetPos)) - continue; - hourArmBlocks = i; - break; - } - - if (hourArmBlocks > 0) { - minuteArm = new ClockworkContraption(); - minuteArm.facing = direction; - minuteArm.handType = HandType.MINUTE; - minuteArm.offset = hourArmBlocks; - minuteArm.ignoreBlocks(hourArm.getBlocks() - .keySet(), hourArm.anchor); - if (!minuteArm.assemble(world, pos)) - return null; - if (minuteArm.getBlocks() - .isEmpty()) - minuteArm = null; - } - - hourArm.startMoving(world); - hourArm.expandBoundsAroundAxis(direction.getAxis()); - if (minuteArm != null) { - minuteArm.startMoving(world); - minuteArm.expandBoundsAroundAxis(direction.getAxis()); - } - return Pair.of(hourArm, minuteArm); - } - - @Override - public boolean assemble(World world, BlockPos pos) throws AssemblyException { - return searchMovedStructure(world, pos, facing); - } - - @Override - public boolean searchMovedStructure(World world, BlockPos pos, Direction direction) throws AssemblyException { - return super.searchMovedStructure(world, pos.offset(direction, offset + 1), null); - } - - @Override - protected boolean moveBlock(World world, Direction direction, Queue frontier, - Set visited) throws AssemblyException { - if (ignoreBlocks.contains(frontier.peek())) { - frontier.poll(); - return true; - } - return super.moveBlock(world, direction, frontier, visited); - } - - @Override - public CompoundNBT writeNBT(boolean spawnPacket) { - CompoundNBT tag = super.writeNBT(spawnPacket); - tag.putInt("facing", facing.getIndex()); - tag.putInt("offset", offset); - NBTHelper.writeEnum(tag, "HandType", handType); - return tag; - } - - @Override - public void readNBT(World world, CompoundNBT tag, boolean spawnData) { - facing = Direction.byIndex(tag.getInt("facing")); - handType = NBTHelper.readEnum(tag, "HandType", HandType.class); - offset = tag.getInt("offset"); - super.readNBT(world, tag, spawnData); - } - - @Override - public boolean canBeStabilized(Direction facing, BlockPos localPos) { - if (BlockPos.ZERO.equals(localPos) || BlockPos.ZERO.equals(localPos.offset(facing))) - return false; - return facing.getAxis() == this.facing.getAxis(); - } - - public static enum HandType { - HOUR, MINUTE - } - - @Override - public ContraptionLighter makeLighter() { - return new AnchoredLighter(this); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/IBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/IBearingTileEntity.java deleted file mode 100644 index e729feae4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/IBearingTileEntity.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.simibubi.create.content.contraptions.components.structureMovement.DirectionalExtenderScrollOptionSlot; -import com.simibubi.create.content.contraptions.components.structureMovement.IControlContraption; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; - -import net.minecraft.util.Direction.Axis; - -public interface IBearingTileEntity extends IControlContraption { - - float getInterpolatedAngle(float partialTicks); - - boolean isWoodenTop(); - - default ValueBoxTransform getMovementModeSlot() { - return new DirectionalExtenderScrollOptionSlot((state, d) -> { - Axis axis = d.getAxis(); - Axis bearingAxis = state.get(BearingBlock.FACING) - .getAxis(); - return bearingAxis != axis; - }); - } - - void setAngle(float forcedAngle); - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingBlock.java deleted file mode 100644 index 9bf59c537..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingBlock.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class MechanicalBearingBlock extends BearingBlock implements ITE { - - public MechanicalBearingBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MECHANICAL_BEARING.create(); - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.isAllowEdit()) - return ActionResultType.FAIL; - if (player.isSneaking()) - return ActionResultType.FAIL; - if (player.getHeldItem(handIn) - .isEmpty()) { - if (worldIn.isRemote) - return ActionResultType.SUCCESS; - withTileEntityDo(worldIn, pos, te -> { - if (te.running) { - te.disassemble(); - return; - } - te.assembleNextTick = true; - }); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - - @Override - public Class getTileEntityClass() { - return MechanicalBearingTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java deleted file mode 100644 index 2cc024c2a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/MechanicalBearingTileEntity.java +++ /dev/null @@ -1,334 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import java.util.List; - -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.ServerSpeedProvider; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.text.ITextComponent; - -public class MechanicalBearingTileEntity extends GeneratingKineticTileEntity - implements IBearingTileEntity, IDisplayAssemblyExceptions { - - protected ScrollOptionBehaviour movementMode; - protected ControlledContraptionEntity movedContraption; - protected float angle; - protected boolean running; - protected boolean assembleNextTick; - protected float clientAngleDiff; - protected AssemblyException lastException; - - private float prevAngle; - - public MechanicalBearingTileEntity(TileEntityType type) { - super(type); - setLazyTickRate(3); - } - - @Override - public boolean isWoodenTop() { - return false; - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - movementMode = new ScrollOptionBehaviour<>(RotationMode.class, Lang.translate("contraptions.movement_mode"), - this, getMovementModeSlot()); - movementMode.requiresWrench(); - behaviours.add(movementMode); - } - - @Override - public void remove() { - if (!world.isRemote) - disassemble(); - super.remove(); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putBoolean("Running", running); - compound.putFloat("Angle", angle); - AssemblyException.write(compound, lastException); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - if (wasMoved) { - super.fromTag(state, compound, clientPacket); - return; - } - - float angleBefore = angle; - running = compound.getBoolean("Running"); - angle = compound.getFloat("Angle"); - lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); - if (!clientPacket) - return; - if (running) { - clientAngleDiff = AngleHelper.getShortestAngleDiff(angleBefore, angle); - angle = angleBefore; - } else - movedContraption = null; - } - - @Override - public float getInterpolatedAngle(float partialTicks) { - if (isVirtual()) - return MathHelper.lerp(partialTicks + .5f, prevAngle, angle); - if (movedContraption == null || movedContraption.isStalled() || !running) - partialTicks = 0; - return MathHelper.lerp(partialTicks, angle, angle + getAngularSpeed()); - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - assembleNextTick = true; - - if (movedContraption != null && Math.signum(prevSpeed) != Math.signum(getSpeed()) && prevSpeed != 0) { - movedContraption.getContraption() - .stop(world); - } - } - - public float getAngularSpeed() { - float speed = convertToAngular(isWindmill() ? getGeneratedSpeed() : getSpeed()); - if (getSpeed() == 0) - speed = 0; - if (world.isRemote) { - speed *= ServerSpeedProvider.get(); - speed += clientAngleDiff / 3f; - } - return speed; - } - - @Override - public AssemblyException getLastAssemblyException() { - return lastException; - } - - protected boolean isWindmill() { - return false; - } - - @Override - public BlockPos getBlockPosition() { - return pos; - } - - public void assemble() { - if (!(world.getBlockState(pos) - .getBlock() instanceof BearingBlock)) - return; - - Direction direction = getBlockState().get(FACING); - BearingContraption contraption = new BearingContraption(isWindmill(), direction); - try { - if (!contraption.assemble(world, pos)) - return; - - lastException = null; - } catch (AssemblyException e) { - lastException = e; - sendData(); - return; - } - - if (isWindmill()) - AllTriggers.triggerForNearbyPlayers(AllTriggers.WINDMILL, world, pos, 5); - if (contraption.getSailBlocks() >= 16 * 8) - AllTriggers.triggerForNearbyPlayers(AllTriggers.MAXED_WINDMILL, world, pos, 5); - - contraption.removeBlocksFromWorld(world, BlockPos.ZERO); - movedContraption = ControlledContraptionEntity.create(world, this, contraption); - BlockPos anchor = pos.offset(direction); - movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - movedContraption.setRotationAxis(direction.getAxis()); - world.addEntity(movedContraption); - - AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(world, pos); - - running = true; - angle = 0; - sendData(); - updateGeneratedRotation(); - } - - public void disassemble() { - if (!running && movedContraption == null) - return; - angle = 0; - if (isWindmill()) - applyRotation(); - if (movedContraption != null) { - movedContraption.disassemble(); - AllSoundEvents.CONTRAPTION_DISASSEMBLE.playOnServer(world, pos); - } - - movedContraption = null; - running = false; - updateGeneratedRotation(); - assembleNextTick = false; - sendData(); - } - - @Override - public void tick() { - super.tick(); - - prevAngle = angle; - if (world.isRemote) - clientAngleDiff /= 2; - - if (!world.isRemote && assembleNextTick) { - assembleNextTick = false; - if (running) { - boolean canDisassemble = movementMode.get() == RotationMode.ROTATE_PLACE - || (isNearInitialAngle() && movementMode.get() == RotationMode.ROTATE_PLACE_RETURNED); - if (speed == 0 && (canDisassemble || movedContraption == null || movedContraption.getContraption() - .getBlocks() - .isEmpty())) { - if (movedContraption != null) - movedContraption.getContraption() - .stop(world); - disassemble(); - return; - } - } else { - if (speed == 0 && !isWindmill()) - return; - assemble(); - } - } - - if (!running) - return; - - if (!(movedContraption != null && movedContraption.isStalled())) { - float angularSpeed = getAngularSpeed(); - float newAngle = angle + angularSpeed; - angle = (float) (newAngle % 360); - } - - applyRotation(); - } - - public boolean isNearInitialAngle() { - return Math.abs(angle) < 45 || Math.abs(angle) > 7 * 45; - } - - @Override - public void lazyTick() { - super.lazyTick(); - if (movedContraption != null && !world.isRemote) - sendData(); - } - - protected void applyRotation() { - if (movedContraption == null) - return; - movedContraption.setAngle(angle); - BlockState blockState = getBlockState(); - if (blockState.contains(BlockStateProperties.FACING)) - movedContraption.setRotationAxis(blockState.get(BlockStateProperties.FACING) - .getAxis()); - } - - @Override - public void attach(ControlledContraptionEntity contraption) { - BlockState blockState = getBlockState(); - if (!(contraption.getContraption() instanceof BearingContraption)) - return; - if (!blockState.contains(FACING)) - return; - - this.movedContraption = contraption; - markDirty(); - BlockPos anchor = pos.offset(blockState.get(FACING)); - movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - if (!world.isRemote) { - this.running = true; - sendData(); - } - } - - @Override - public void onStall() { - if (!world.isRemote) - sendData(); - } - - @Override - public boolean isValid() { - return !isRemoved(); - } - - @Override - public void collided() {} - - @Override - public boolean isAttachedTo(AbstractContraptionEntity contraption) { - return movedContraption == contraption; - } - - public boolean isRunning() { - return running; - } - - @Override - public boolean addToTooltip(List tooltip, boolean isPlayerSneaking) { - if (super.addToTooltip(tooltip, isPlayerSneaking)) - return true; - if (isPlayerSneaking) - return false; - if (!isWindmill() && getSpeed() == 0) - return false; - if (running) - return false; - BlockState state = getBlockState(); - if (!(state.getBlock() instanceof BearingBlock)) - return false; - - BlockState attachedState = world.getBlockState(pos.offset(state.get(BearingBlock.FACING))); - if (attachedState.getMaterial() - .isReplaceable()) - return false; - TooltipHelper.addHint(tooltip, "hint.empty_bearing"); - return true; - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - - public void setAngle(float forcedAngle) { - angle = forcedAngle; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java deleted file mode 100644 index b4cfaea85..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/SailBlock.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.function.Predicate; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.foundation.block.ProperDirectionalBlock; -import com.simibubi.create.foundation.utility.DyeHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.placement.IPlacementHelper; -import com.simibubi.create.foundation.utility.placement.PlacementHelpers; -import com.simibubi.create.foundation.utility.placement.PlacementOffset; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ShearsItem; -import net.minecraft.pathfinding.PathType; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class SailBlock extends ProperDirectionalBlock { - - public static SailBlock frame(Properties properties) { - return new SailBlock(properties, true); - } - - public static SailBlock withCanvas(Properties properties) { - return new SailBlock(properties, false); - } - - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); - - private final boolean frame; - - protected SailBlock(Properties p_i48415_1_, boolean frame) { - super(p_i48415_1_); - this.frame = frame; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockState state = super.getStateForPlacement(context); - return state.with(FACING, state.get(FACING).getOpposite()); - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult ray) { - ItemStack heldItem = player.getHeldItem(hand); - - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); - if (placementHelper.matchesItem(heldItem)) - return placementHelper.getOffset(player, world, state, pos, ray).placeInWorld(world, (BlockItem) heldItem.getItem(), player, hand, ray); - - if (heldItem.getItem() instanceof ShearsItem) { - if (!world.isRemote) - applyDye(state, world, pos, null); - return ActionResultType.SUCCESS; - } - - if (frame) - return ActionResultType.PASS; - - for (DyeColor color : DyeColor.values()) { - if (!heldItem.getItem() - .isIn(DyeHelper.getTagOfDye(color))) - continue; - if (!world.isRemote) - applyDye(state, world, pos, color); - return ActionResultType.SUCCESS; - } - - return ActionResultType.PASS; - } - - protected void applyDye(BlockState state, World world, BlockPos pos, @Nullable DyeColor color) { - BlockState newState = - (color == null ? AllBlocks.SAIL_FRAME : AllBlocks.DYED_SAILS.get(color)).getDefaultState() - .with(FACING, state.get(FACING)); - - // Dye the block itself - if (state != newState) { - world.setBlockState(pos, newState); - return; - } - - // Dye all adjacent - for (Direction d : Iterate.directions) { - if (d.getAxis() == state.get(FACING) - .getAxis()) - continue; - BlockPos offset = pos.offset(d); - BlockState adjacentState = world.getBlockState(offset); - Block block = adjacentState.getBlock(); - if (!(block instanceof SailBlock) || ((SailBlock) block).frame) - continue; - if (state == adjacentState) - continue; - world.setBlockState(offset, newState); - return; - } - - // Dye all the things - List frontier = new ArrayList<>(); - frontier.add(pos); - Set visited = new HashSet<>(); - int timeout = 100; - while (!frontier.isEmpty()) { - if (timeout-- < 0) - break; - - BlockPos currentPos = frontier.remove(0); - visited.add(currentPos); - - for (Direction d : Iterate.directions) { - if (d.getAxis() == state.get(FACING) - .getAxis()) - continue; - BlockPos offset = currentPos.offset(d); - if (visited.contains(offset)) - continue; - BlockState adjacentState = world.getBlockState(offset); - Block block = adjacentState.getBlock(); - if (!(block instanceof SailBlock) || ((SailBlock) block).frame && color != null) - continue; - if (state != adjacentState) - world.setBlockState(offset, newState); - frontier.add(offset); - visited.add(offset); - } - } - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { - return (frame ? AllShapes.SAIL_FRAME : AllShapes.SAIL).get(state.get(FACING)); - } - - @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader p_220071_2_, BlockPos p_220071_3_, ISelectionContext p_220071_4_) { - if (frame) - return AllShapes.SAIL_FRAME_COLLISION.get(state.get(FACING)); - return getShape(state, p_220071_2_, p_220071_3_, p_220071_4_); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, PlayerEntity player) { - ItemStack pickBlock = super.getPickBlock(state, target, world, pos, player); - if (pickBlock.isEmpty()) - return AllBlocks.SAIL.get() - .getPickBlock(state, target, world, pos, player); - return pickBlock; - } - - public void onFallenUpon(World p_180658_1_, BlockPos p_180658_2_, Entity p_180658_3_, float p_180658_4_) { - if (frame) - super.onFallenUpon(p_180658_1_, p_180658_2_, p_180658_3_, p_180658_4_); - super.onFallenUpon(p_180658_1_, p_180658_2_, p_180658_3_, 0); - } - - public void onLanded(IBlockReader p_176216_1_, Entity p_176216_2_) { - if (frame || p_176216_2_.bypassesLandingEffects()) { - super.onLanded(p_176216_1_, p_176216_2_); - } else { - this.bounce(p_176216_2_); - } - } - - private void bounce(Entity p_226860_1_) { - Vector3d Vector3d = p_226860_1_.getMotion(); - if (Vector3d.y < 0.0D) { - double d0 = p_226860_1_ instanceof LivingEntity ? 1.0D : 0.8D; - p_226860_1_.setMotion(Vector3d.x, -Vector3d.y * (double) 0.26F * d0, Vector3d.z); - } - - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { - @Override - public Predicate getItemPredicate() { - return i -> AllBlocks.SAIL.isIn(i) || AllBlocks.SAIL_FRAME.isIn(i); - } - - @Override - public Predicate getStatePredicate() { - return s -> s.getBlock() instanceof SailBlock; - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(SailBlock.FACING).getAxis(), dir -> world.getBlockState(pos.offset(dir)).getMaterial().isReplaceable()); - - if (directions.isEmpty()) - return PlacementOffset.fail(); - else { - return PlacementOffset.success(pos.offset(directions.get(0)), s -> s.with(FACING, state.get(FACING))); - } - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java deleted file mode 100644 index 9f7080e50..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingInstance.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3f; - -public class StabilizedBearingInstance extends ActorInstance { - - final OrientedData topInstance; - - final Direction facing; - final Vector3f rotationAxis; - final Quaternion blockOrientation; - - public StabilizedBearingInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { - super(materialManager, simulationWorld, context); - - BlockState blockState = context.state; - - facing = blockState.get(BlockStateProperties.FACING); - rotationAxis = Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, facing.getAxis()).getUnitVector(); - - blockOrientation = BearingInstance.getBlockStateOrientation(facing); - - topInstance = materialManager.getOrientedMaterial().getModel(AllBlockPartials.BEARING_TOP, blockState).createInstance(); - - topInstance.setPosition(context.localPos) - .setRotation(blockOrientation) - .setBlockLight(localBlockLight()); - } - - @Override - public void beginFrame() { - float counterRotationAngle = StabilizedBearingMovementBehaviour.getCounterRotationAngle(context, facing, AnimationTickHolder.getPartialTicks()); - - Quaternion rotation = rotationAxis.getDegreesQuaternion(counterRotationAngle); - - rotation.multiply(blockOrientation); - - topInstance.setRotation(rotation); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java deleted file mode 100644 index 3ca4d5d17..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedBearingMovementBehaviour.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ActorInstance; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionMatrices; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class StabilizedBearingMovementBehaviour extends MovementBehaviour { - - @Override - @OnlyIn(Dist.CLIENT) - public void renderInContraption(MovementContext context, PlacementSimulationWorld renderWorld, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - if (Backend.getInstance().canUseInstancing()) return; - - Direction facing = context.state.get(BlockStateProperties.FACING); - PartialModel top = AllBlockPartials.BEARING_TOP; - SuperByteBuffer superBuffer = PartialBufferer.get(top, context.state); - float renderPartialTicks = AnimationTickHolder.getPartialTicks(); - - // rotate to match blockstate - Quaternion orientation = BearingInstance.getBlockStateOrientation(facing); - - // rotate against parent - float angle = getCounterRotationAngle(context, facing, renderPartialTicks) * facing.getAxisDirection().getOffset(); - - Quaternion rotation = facing.getUnitVector().getDegreesQuaternion(angle); - - rotation.multiply(orientation); - - orientation = rotation; - - superBuffer.transform(matrices.contraptionStack); - superBuffer.rotateCentered(orientation); - - // render - superBuffer - .light(matrices.entityMatrix, - ContraptionRenderDispatcher.getContraptionWorldLight(context, renderWorld)) - .renderInto(matrices.entityStack, buffer.getBuffer(RenderType.getSolid())); - } - - @Override - public boolean hasSpecialInstancedRendering() { - return true; - } - - @Nullable - @Override - public ActorInstance createInstance(MaterialManager materialManager, PlacementSimulationWorld simulationWorld, MovementContext context) { - return new StabilizedBearingInstance(materialManager, simulationWorld, context); - } - - static float getCounterRotationAngle(MovementContext context, Direction facing, float renderPartialTicks) { - float offset = 0; - - Axis axis = facing.getAxis(); - - AbstractContraptionEntity entity = context.contraption.entity; - if (entity instanceof ControlledContraptionEntity) { - ControlledContraptionEntity controlledCE = (ControlledContraptionEntity) entity; - if (context.contraption.canBeStabilized(facing, context.localPos)) - offset = -controlledCE.getAngle(renderPartialTicks); - - } else if (entity instanceof OrientedContraptionEntity) { - OrientedContraptionEntity orientedCE = (OrientedContraptionEntity) entity; - if (axis.isVertical()) - offset = -orientedCE.getYaw(renderPartialTicks); - else { - if (orientedCE.isInitialOrientationPresent() && orientedCE.getInitialOrientation() - .getAxis() == axis) - offset = -orientedCE.getPitch(renderPartialTicks); - } - } - return offset; - } - - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedContraption.java deleted file mode 100644 index 4eec742bc..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/StabilizedContraption.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; -import com.simibubi.create.content.contraptions.components.structureMovement.NonStationaryLighter; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class StabilizedContraption extends Contraption { - - private Direction facing; - - public StabilizedContraption() {} - - public StabilizedContraption(Direction facing) { - this.facing = facing; - } - - @Override - public boolean assemble(World world, BlockPos pos) throws AssemblyException { - BlockPos offset = pos.offset(facing); - if (!searchMovedStructure(world, offset, null)) - return false; - startMoving(world); - if (blocks.isEmpty()) - return false; - return true; - } - - @Override - protected boolean isAnchoringBlockAt(BlockPos pos) { - return false; - } - - @Override - protected ContraptionType getType() { - return ContraptionType.STABILIZED; - } - - @Override - public CompoundNBT writeNBT(boolean spawnPacket) { - CompoundNBT tag = super.writeNBT(spawnPacket); - tag.putInt("Facing", facing.getIndex()); - return tag; - } - - @Override - public void readNBT(World world, CompoundNBT tag, boolean spawnData) { - facing = Direction.byIndex(tag.getInt("Facing")); - super.readNBT(world, tag, spawnData); - } - - @Override - public boolean canBeStabilized(Direction facing, BlockPos localPos) { - return false; - } - - public Direction getFacing() { - return facing; - } - - @Override - public ContraptionLighter makeLighter() { - return new NonStationaryLighter<>(this); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingBlock.java deleted file mode 100644 index 0f5bb749f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingBlock.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class WindmillBearingBlock extends BearingBlock implements ITE { - - public WindmillBearingBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.WINDMILL_BEARING.create(); - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.isAllowEdit()) - return ActionResultType.FAIL; - if (player.isSneaking()) - return ActionResultType.FAIL; - if (player.getHeldItem(handIn) - .isEmpty()) { - if (worldIn.isRemote) - return ActionResultType.SUCCESS; - withTileEntityDo(worldIn, pos, te -> { - if (te.running) { - te.disassemble(); - return; - } - te.assembleNextTick = true; - }); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - - @Override - public Class getTileEntityClass() { - return WindmillBearingTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java deleted file mode 100644 index ccd717284..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/bearing/WindmillBearingTileEntity.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.bearing; - -import java.util.List; - -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.MathHelper; - -public class WindmillBearingTileEntity extends MechanicalBearingTileEntity { - - protected ScrollOptionBehaviour movementDirection; - protected float lastGeneratedSpeed; - - public WindmillBearingTileEntity(TileEntityType type) { - super(type); - } - - @Override - public void updateGeneratedRotation() { - super.updateGeneratedRotation(); - lastGeneratedSpeed = getGeneratedSpeed(); - } - - @Override - public void onSpeedChanged(float prevSpeed) { - boolean cancelAssembly = assembleNextTick; - super.onSpeedChanged(prevSpeed); - assembleNextTick = cancelAssembly; - } - - @Override - public float getGeneratedSpeed() { - if (!running) - return 0; - if (movedContraption == null) - return lastGeneratedSpeed; - int sails = ((BearingContraption) movedContraption.getContraption()).getSailBlocks() / 8; - return MathHelper.clamp(sails, 1, 16) * getAngleSpeedDirection(); - } - - @Override - protected boolean isWindmill() { - return true; - } - - protected float getAngleSpeedDirection() { - RotationDirection rotationDirection = RotationDirection.values()[movementDirection.getValue()]; - return (rotationDirection == RotationDirection.CLOCKWISE ? 1 : -1); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putFloat("LastGenerated", lastGeneratedSpeed); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - if (!wasMoved) - lastGeneratedSpeed = compound.getFloat("LastGenerated"); - super.fromTag(state, compound, clientPacket); - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - behaviours.remove(movementMode); - movementDirection = new ScrollOptionBehaviour<>(RotationDirection.class, - Lang.translate("contraptions.windmill.rotation_direction"), this, getMovementModeSlot()); - movementDirection.requiresWrench(); - movementDirection.withCallback($ -> onDirectionChanged()); - behaviours.add(movementDirection); - } - - private void onDirectionChanged() { - if (!running) - return; - if (!world.isRemote) - updateGeneratedRotation(); - } - - @Override - public boolean isWoodenTop() { - return true; - } - - static enum RotationDirection implements INamedIconOptions { - - CLOCKWISE(AllIcons.I_REFRESH), COUNTER_CLOCKWISE(AllIcons.I_ROTATE_CCW), - - ; - - private String translationKey; - private AllIcons icon; - - private RotationDirection(AllIcons icon) { - this.icon = icon; - translationKey = "generic." + Lang.asId(name()); - } - - @Override - public AllIcons getIcon() { - return icon; - } - - @Override - public String getTranslationKey() { - return translationKey; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/AbstractChassisBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/AbstractChassisBlock.java deleted file mode 100644 index 2156411af..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/AbstractChassisBlock.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.block.RotatedPillarBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.state.BooleanProperty; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraftforge.common.Tags; - -public abstract class AbstractChassisBlock extends RotatedPillarBlock implements IWrenchable { - - public AbstractChassisBlock(Properties properties) { - super(properties); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.CHASSIS.create(); - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.isAllowEdit()) - return ActionResultType.PASS; - - ItemStack heldItem = player.getHeldItem(handIn); - boolean isSlimeBall = heldItem.getItem() - .isIn(Tags.Items.SLIMEBALLS) || AllItems.SUPER_GLUE.isIn(heldItem); - - BooleanProperty affectedSide = getGlueableSide(state, hit.getFace()); - if (affectedSide == null) - return ActionResultType.PASS; - - if (isSlimeBall && state.get(affectedSide)) { - for (Direction face : Iterate.directions) { - BooleanProperty glueableSide = getGlueableSide(state, face); - if (glueableSide != null && !state.get(glueableSide) && glueAllowedOnSide(worldIn, pos, state, face)) { - if (worldIn.isRemote) { - Vector3d vec = hit.getHitVec(); - worldIn.addParticle(ParticleTypes.ITEM_SLIME, vec.x, vec.y, vec.z, 0, 0, 0); - return ActionResultType.SUCCESS; - } - AllSoundEvents.SLIME_ADDED.playOnServer(worldIn, pos, .5f, 1); - state = state.with(glueableSide, true); - } - } - if (!worldIn.isRemote) - worldIn.setBlockState(pos, state); - return ActionResultType.SUCCESS; - } - - if ((!heldItem.isEmpty() || !player.isSneaking()) && !isSlimeBall) - return ActionResultType.PASS; - if (state.get(affectedSide) == isSlimeBall) - return ActionResultType.PASS; - if (!glueAllowedOnSide(worldIn, pos, state, hit.getFace())) - return ActionResultType.PASS; - if (worldIn.isRemote) { - Vector3d vec = hit.getHitVec(); - worldIn.addParticle(ParticleTypes.ITEM_SLIME, vec.x, vec.y, vec.z, 0, 0, 0); - return ActionResultType.SUCCESS; - } - - AllSoundEvents.SLIME_ADDED.playOnServer(worldIn, pos, .5f, 1); - worldIn.setBlockState(pos, state.with(affectedSide, isSlimeBall)); - return ActionResultType.SUCCESS; - } - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { - if (rotation == Rotation.NONE) - return state; - - @SuppressWarnings("deprecation") - BlockState rotated = super.rotate(state, rotation); - for (Direction face : Iterate.directions) { - BooleanProperty glueableSide = getGlueableSide(rotated, face); - if (glueableSide != null) - rotated = rotated.with(glueableSide, false); - } - - for (Direction face : Iterate.directions) { - BooleanProperty glueableSide = getGlueableSide(state, face); - if (glueableSide == null || !state.get(glueableSide)) - continue; - Direction rotatedFacing = rotation.rotate(face); - BooleanProperty rotatedGlueableSide = getGlueableSide(rotated, rotatedFacing); - if (rotatedGlueableSide != null) - rotated = rotated.with(rotatedGlueableSide, true); - } - - return rotated; - } - - @Override - public BlockState mirror(BlockState state, Mirror mirrorIn) { - if (mirrorIn == Mirror.NONE) - return state; - - BlockState mirrored = state; - for (Direction face : Iterate.directions) { - BooleanProperty glueableSide = getGlueableSide(mirrored, face); - if (glueableSide != null) - mirrored = mirrored.with(glueableSide, false); - } - - for (Direction face : Iterate.directions) { - BooleanProperty glueableSide = getGlueableSide(state, face); - if (glueableSide == null || !state.get(glueableSide)) - continue; - Direction mirroredFacing = mirrorIn.mirror(face); - BooleanProperty mirroredGlueableSide = getGlueableSide(mirrored, mirroredFacing); - if (mirroredGlueableSide != null) - mirrored = mirrored.with(mirroredGlueableSide, true); - } - - return mirrored; - } - - public abstract BooleanProperty getGlueableSide(BlockState state, Direction face); - - protected boolean glueAllowedOnSide(IBlockReader world, BlockPos pos, BlockState state, Direction side) { - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisRangeDisplay.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisRangeDisplay.java deleted file mode 100644 index fee951e82..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisRangeDisplay.java +++ /dev/null @@ -1,205 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import com.mojang.datafixers.util.Pair; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllKeys; -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.CreateClient; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.World; - -public class ChassisRangeDisplay { - - private static final int DISPLAY_TIME = 200; - private static GroupEntry lastHoveredGroup = null; - - private static class Entry { - ChassisTileEntity te; - int timer; - - public Entry(ChassisTileEntity te) { - this.te = te; - timer = DISPLAY_TIME; - CreateClient.OUTLINER.showCluster(getOutlineKey(), createSelection(te)) - .colored(0xFFFFFF) - .disableNormals() - .lineWidth(1 / 16f) - .withFaceTexture(AllSpecialTextures.HIGHLIGHT_CHECKERED); - } - - protected Object getOutlineKey() { - return Pair.of(te.getPos(), 1); - } - - protected Set createSelection(ChassisTileEntity chassis) { - Set positions = new HashSet<>(); - List includedBlockPositions = chassis.getIncludedBlockPositions(null, true); - if (includedBlockPositions == null) - return Collections.emptySet(); - positions.addAll(includedBlockPositions); - return positions; - } - - } - - private static class GroupEntry extends Entry { - - List includedTEs; - - public GroupEntry(ChassisTileEntity te) { - super(te); - } - - @Override - protected Object getOutlineKey() { - return this; - } - - @Override - protected Set createSelection(ChassisTileEntity chassis) { - Set list = new HashSet<>(); - includedTEs = te.collectChassisGroup(); - if (includedTEs == null) - return list; - for (ChassisTileEntity chassisTileEntity : includedTEs) - list.addAll(super.createSelection(chassisTileEntity)); - return list; - } - - } - - static Map entries = new HashMap<>(); - static List groupEntries = new ArrayList<>(); - - public static void tick() { - PlayerEntity player = Minecraft.getInstance().player; - World world = Minecraft.getInstance().world; - boolean hasWrench = AllItems.WRENCH.isIn(player.getHeldItemMainhand()); - - for (Iterator iterator = entries.keySet() - .iterator(); iterator.hasNext();) { - BlockPos pos = iterator.next(); - Entry entry = entries.get(pos); - if (tickEntry(entry, hasWrench)) - iterator.remove(); - CreateClient.OUTLINER.keep(entry.getOutlineKey()); - } - - for (Iterator iterator = groupEntries.iterator(); iterator.hasNext();) { - GroupEntry group = iterator.next(); - if (tickEntry(group, hasWrench)) { - iterator.remove(); - if (group == lastHoveredGroup) - lastHoveredGroup = null; - } - CreateClient.OUTLINER.keep(group.getOutlineKey()); - } - - if (!hasWrench) - return; - - RayTraceResult over = Minecraft.getInstance().objectMouseOver; - if (!(over instanceof BlockRayTraceResult)) - return; - BlockRayTraceResult ray = (BlockRayTraceResult) over; - BlockPos pos = ray.getPos(); - TileEntity tileEntity = world.getTileEntity(pos); - if (tileEntity == null || tileEntity.isRemoved()) - return; - if (!(tileEntity instanceof ChassisTileEntity)) - return; - - boolean ctrl = AllKeys.ctrlDown(); - ChassisTileEntity chassisTileEntity = (ChassisTileEntity) tileEntity; - - if (ctrl) { - GroupEntry existingGroupForPos = getExistingGroupForPos(pos); - if (existingGroupForPos != null) { - for (ChassisTileEntity included : existingGroupForPos.includedTEs) - entries.remove(included.getPos()); - existingGroupForPos.timer = DISPLAY_TIME; - return; - } - } - - if (!entries.containsKey(pos) || ctrl) - display(chassisTileEntity); - else { - if (!ctrl) - entries.get(pos).timer = DISPLAY_TIME; - } - } - - private static boolean tickEntry(Entry entry, boolean hasWrench) { - ChassisTileEntity chassisTileEntity = entry.te; - World teWorld = chassisTileEntity.getWorld(); - World world = Minecraft.getInstance().world; - - if (chassisTileEntity.isRemoved() || teWorld == null || teWorld != world - || !world.isBlockPresent(chassisTileEntity.getPos())) { - return true; - } - - if (!hasWrench && entry.timer > 20) { - entry.timer = 20; - return false; - } - - entry.timer--; - if (entry.timer == 0) - return true; - return false; - } - - public static void display(ChassisTileEntity chassis) { - - // Display a group and kill any selections of its contained chassis blocks - if (AllKeys.ctrlDown()) { - GroupEntry hoveredGroup = new GroupEntry(chassis); - - for (ChassisTileEntity included : hoveredGroup.includedTEs) - CreateClient.OUTLINER.remove(included.getPos()); - - groupEntries.forEach(entry -> CreateClient.OUTLINER.remove(entry.getOutlineKey())); - groupEntries.clear(); - entries.clear(); - groupEntries.add(hoveredGroup); - return; - } - - // Display an individual chassis and kill any group selections that contained it - BlockPos pos = chassis.getPos(); - GroupEntry entry = getExistingGroupForPos(pos); - if (entry != null) - CreateClient.OUTLINER.remove(entry.getOutlineKey()); - - groupEntries.clear(); - entries.clear(); - entries.put(pos, new Entry(chassis)); - - } - - private static GroupEntry getExistingGroupForPos(BlockPos pos) { - for (GroupEntry groupEntry : groupEntries) - for (ChassisTileEntity chassis : groupEntry.includedTEs) - if (pos.equals(chassis.getPos())) - return groupEntry; - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java deleted file mode 100644 index 51e17c7fc..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/ChassisTileEntity.java +++ /dev/null @@ -1,234 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import static net.minecraft.state.properties.BlockStateProperties.AXIS; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Queue; -import java.util.Set; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.BulkScrollValueBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; - -public class ChassisTileEntity extends SmartTileEntity { - - ScrollValueBehaviour range; - - public ChassisTileEntity(TileEntityType type) { - super(type); - } - - @Override - public void addBehaviours(List behaviours) { - int max = AllConfigs.SERVER.kinetics.maxChassisRange.get(); - range = new BulkScrollValueBehaviour(Lang.translate("generic.range"), this, new CenteredSideValueBoxTransform(), - te -> ((ChassisTileEntity) te).collectChassisGroup()); - range.requiresWrench(); - range.between(1, max); - range - .withClientCallback( - i -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> ChassisRangeDisplay.display(this))); - range.value = max / 2; - behaviours.add(range); - } - - @Override - public void initialize() { - super.initialize(); - if (getBlockState().getBlock() instanceof RadialChassisBlock) - range.setLabel(Lang.translate("generic.radius")); - } - - public int getRange() { - return range.getValue(); - } - - public List getIncludedBlockPositions(Direction forcedMovement, boolean visualize) { - if (!(getBlockState().getBlock() instanceof AbstractChassisBlock)) - return Collections.emptyList(); - return isRadial() ? getIncludedBlockPositionsRadial(forcedMovement, visualize) - : getIncludedBlockPositionsLinear(forcedMovement, visualize); - } - - protected boolean isRadial() { - return world.getBlockState(pos).getBlock() instanceof RadialChassisBlock; - } - - public List collectChassisGroup() { - Queue frontier = new LinkedList<>(); - List collected = new ArrayList<>(); - Set visited = new HashSet<>(); - frontier.add(pos); - while (!frontier.isEmpty()) { - BlockPos current = frontier.poll(); - if (visited.contains(current)) - continue; - visited.add(current); - TileEntity tileEntity = world.getTileEntity(current); - if (tileEntity instanceof ChassisTileEntity) { - ChassisTileEntity chassis = (ChassisTileEntity) tileEntity; - collected.add(chassis); - visited.add(current); - chassis.addAttachedChasses(frontier, visited); - } - } - return collected; - } - - public boolean addAttachedChasses(Queue frontier, Set visited) { - BlockState state = getBlockState(); - if (!(state.getBlock() instanceof AbstractChassisBlock)) - return false; - Axis axis = state.get(AbstractChassisBlock.AXIS); - if (isRadial()) { - - // Collect chain of radial chassis - for (int offset : new int[] { -1, 1 }) { - Direction direction = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - BlockPos currentPos = pos.offset(direction, offset); - if (!world.isBlockPresent(currentPos)) - return false; - - BlockState neighbourState = world.getBlockState(currentPos); - if (!AllBlocks.RADIAL_CHASSIS.has(neighbourState)) - continue; - if (axis != neighbourState.get(BlockStateProperties.AXIS)) - continue; - if (!visited.contains(currentPos)) - frontier.add(currentPos); - } - - return true; - } - - // Collect group of connected linear chassis - for (Direction offset : Iterate.directions) { - BlockPos current = pos.offset(offset); - if (visited.contains(current)) - continue; - if (!world.isBlockPresent(current)) - return false; - - BlockState neighbourState = world.getBlockState(current); - if (!LinearChassisBlock.isChassis(neighbourState)) - continue; - if (!LinearChassisBlock.sameKind(state, neighbourState)) - continue; - if (neighbourState.get(AXIS) != axis) - continue; - - frontier.add(current); - } - - return true; - } - - private List getIncludedBlockPositionsLinear(Direction forcedMovement, boolean visualize) { - List positions = new ArrayList<>(); - BlockState state = getBlockState(); - AbstractChassisBlock block = (AbstractChassisBlock) state.getBlock(); - Axis axis = state.get(AbstractChassisBlock.AXIS); - Direction facing = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - int chassisRange = visualize ? range.scrollableValue : getRange(); - - for (int offset : new int[] { 1, -1 }) { - if (offset == -1) - facing = facing.getOpposite(); - boolean sticky = state.get(block.getGlueableSide(state, facing)); - for (int i = 1; i <= chassisRange; i++) { - BlockPos current = pos.offset(facing, i); - BlockState currentState = world.getBlockState(current); - - if (forcedMovement != facing && !sticky) - break; - - // Ignore replaceable Blocks and Air-like - if (!BlockMovementChecks.isMovementNecessary(currentState, world, current)) - break; - if (BlockMovementChecks.isBrittle(currentState)) - break; - - positions.add(current); - - if (BlockMovementChecks.isNotSupportive(currentState, facing)) - break; - } - } - - return positions; - } - - private List getIncludedBlockPositionsRadial(Direction forcedMovement, boolean visualize) { - List positions = new ArrayList<>(); - BlockState state = world.getBlockState(pos); - Axis axis = state.get(AbstractChassisBlock.AXIS); - AbstractChassisBlock block = (AbstractChassisBlock) state.getBlock(); - int chassisRange = visualize ? range.scrollableValue : getRange(); - - for (Direction facing : Iterate.directions) { - if (facing.getAxis() == axis) - continue; - if (!state.get(block.getGlueableSide(state, facing))) - continue; - - BlockPos startPos = pos.offset(facing); - List localFrontier = new LinkedList<>(); - Set localVisited = new HashSet<>(); - localFrontier.add(startPos); - - while (!localFrontier.isEmpty()) { - BlockPos searchPos = localFrontier.remove(0); - BlockState searchedState = world.getBlockState(searchPos); - - if (localVisited.contains(searchPos)) - continue; - if (!searchPos.withinDistance(pos, chassisRange + .5f)) - continue; - if (!BlockMovementChecks.isMovementNecessary(searchedState, world, searchPos)) - continue; - if (BlockMovementChecks.isBrittle(searchedState)) - continue; - - localVisited.add(searchPos); - if (!searchPos.equals(pos)) - positions.add(searchPos); - - for (Direction offset : Iterate.directions) { - if (offset.getAxis() == axis) - continue; - if (searchPos.equals(pos) && offset != facing) - continue; - if (BlockMovementChecks.isNotSupportive(searchedState, offset)) - continue; - - localFrontier.add(searchPos.offset(offset)); - } - } - } - - return positions; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/LinearChassisBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/LinearChassisBlock.java deleted file mode 100644 index c10ea95da..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/LinearChassisBlock.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSpriteShifts; -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; - -public class LinearChassisBlock extends AbstractChassisBlock { - - public static final BooleanProperty STICKY_TOP = BooleanProperty.create("sticky_top"); - public static final BooleanProperty STICKY_BOTTOM = BooleanProperty.create("sticky_bottom"); - - public LinearChassisBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(STICKY_TOP, false) - .with(STICKY_BOTTOM, false)); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(STICKY_TOP, STICKY_BOTTOM); - super.fillStateContainer(builder); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockPos placedOnPos = context.getPos() - .offset(context.getFace() - .getOpposite()); - BlockState blockState = context.getWorld() - .getBlockState(placedOnPos); - - if (context.getPlayer() == null || !context.getPlayer() - .isSneaking()) { - if (isChassis(blockState)) - return getDefaultState().with(AXIS, blockState.get(AXIS)); - return getDefaultState().with(AXIS, context.getNearestLookingDirection() - .getAxis()); - } - return super.getStateForPlacement(context); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction side, BlockState other, IWorld p_196271_4_, - BlockPos p_196271_5_, BlockPos p_196271_6_) { - BooleanProperty property = getGlueableSide(state, side); - if (property == null || !sameKind(state, other) || state.get(AXIS) != other.get(AXIS)) - return state; - return state.with(property, false); - } - - @Override - public BooleanProperty getGlueableSide(BlockState state, Direction face) { - if (face.getAxis() != state.get(AXIS)) - return null; - return face.getAxisDirection() == AxisDirection.POSITIVE ? STICKY_TOP : STICKY_BOTTOM; - } - - @Override - protected boolean glueAllowedOnSide(IBlockReader world, BlockPos pos, BlockState state, Direction side) { - BlockState other = world.getBlockState(pos.offset(side)); - return !sameKind(other, state) || state.get(AXIS) != other.get(AXIS); - } - - public static boolean isChassis(BlockState state) { - return AllBlocks.LINEAR_CHASSIS.has(state) || AllBlocks.SECONDARY_LINEAR_CHASSIS.has(state); - } - - public static boolean sameKind(BlockState state1, BlockState state2) { - return state1.getBlock() == state2.getBlock(); - } - - public static class ChassisCTBehaviour extends ConnectedTextureBehaviour { - - @Override - public CTSpriteShiftEntry get(BlockState state, Direction direction) { - Block block = state.getBlock(); - BooleanProperty glueableSide = ((LinearChassisBlock) block).getGlueableSide(state, direction); - if (glueableSide == null) - return AllBlocks.LINEAR_CHASSIS.has(state) ? AllSpriteShifts.CHASSIS_SIDE - : AllSpriteShifts.SECONDARY_CHASSIS_SIDE; - return state.get(glueableSide) ? AllSpriteShifts.CHASSIS_STICKY : AllSpriteShifts.CHASSIS; - } - - @Override - protected Direction getUpDirection(IBlockDisplayReader reader, BlockPos pos, BlockState state, Direction face) { - Axis axis = state.get(AXIS); - if (face.getAxis() == axis) - return super.getUpDirection(reader, pos, state, face); - return Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - } - - @Override - protected Direction getRightDirection(IBlockDisplayReader reader, BlockPos pos, BlockState state, Direction face) { - Axis axis = state.get(AXIS); - return axis != face.getAxis() && axis.isHorizontal() ? (face.getAxis() - .isHorizontal() ? Direction.DOWN : (axis == Axis.X ? Direction.NORTH : Direction.EAST)) - : super.getRightDirection(reader, pos, state, face); - } - - @Override - protected boolean reverseUVsHorizontally(BlockState state, Direction face) { - Axis axis = state.get(AXIS); - boolean side = face.getAxis() != axis; - if (side && axis == Axis.X && face.getAxis() - .isHorizontal()) - return true; - return super.reverseUVsHorizontally(state, face); - } - - @Override - protected boolean reverseUVsVertically(BlockState state, Direction face) { - return super.reverseUVsVertically(state, face); - } - - @Override - public boolean reverseUVs(BlockState state, Direction face) { - Axis axis = state.get(AXIS); - boolean end = face.getAxis() == axis; - if (end && axis.isHorizontal() && (face.getAxisDirection() == AxisDirection.POSITIVE)) - return true; - if (!end && axis.isHorizontal() && face == Direction.DOWN) - return true; - return super.reverseUVs(state, face); - } - - @Override - public boolean connectsTo(BlockState state, BlockState other, IBlockDisplayReader reader, BlockPos pos, - BlockPos otherPos, Direction face) { - Axis axis = state.get(AXIS); - boolean superConnect = face.getAxis() == axis ? super.connectsTo(state, other, reader, pos, otherPos, face) - : sameKind(state, other); - return superConnect && axis == other.get(AXIS); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/RadialChassisBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/RadialChassisBlock.java deleted file mode 100644 index 852c168bb..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/RadialChassisBlock.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; - -public class RadialChassisBlock extends AbstractChassisBlock { - - public static final BooleanProperty STICKY_NORTH = BooleanProperty.create("sticky_north"); - public static final BooleanProperty STICKY_SOUTH = BooleanProperty.create("sticky_south"); - public static final BooleanProperty STICKY_EAST = BooleanProperty.create("sticky_east"); - public static final BooleanProperty STICKY_WEST = BooleanProperty.create("sticky_west"); - - public RadialChassisBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(STICKY_EAST, false).with(STICKY_SOUTH, false).with(STICKY_NORTH, false) - .with(STICKY_WEST, false)); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(STICKY_NORTH, STICKY_EAST, STICKY_SOUTH, STICKY_WEST); - super.fillStateContainer(builder); - } - - @Override - public BooleanProperty getGlueableSide(BlockState state, Direction face) { - Axis axis = state.get(AXIS); - - if (axis == Axis.X) { - if (face == Direction.NORTH) - return STICKY_WEST; - if (face == Direction.SOUTH) - return STICKY_EAST; - if (face == Direction.UP) - return STICKY_NORTH; - if (face == Direction.DOWN) - return STICKY_SOUTH; - } - - if (axis == Axis.Y) { - if (face == Direction.NORTH) - return STICKY_NORTH; - if (face == Direction.SOUTH) - return STICKY_SOUTH; - if (face == Direction.EAST) - return STICKY_EAST; - if (face == Direction.WEST) - return STICKY_WEST; - } - - if (axis == Axis.Z) { - if (face == Direction.UP) - return STICKY_NORTH; - if (face == Direction.DOWN) - return STICKY_SOUTH; - if (face == Direction.EAST) - return STICKY_EAST; - if (face == Direction.WEST) - return STICKY_WEST; - } - - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerBlock.java deleted file mode 100644 index 277223c95..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerBlock.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.block.ProperDirectionalBlock; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class StickerBlock extends ProperDirectionalBlock implements ITE { - - public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final BooleanProperty EXTENDED = BlockStateProperties.EXTENDED; - - public StickerBlock(Properties p_i48415_1_) { - super(p_i48415_1_); - setDefaultState(getDefaultState().with(POWERED, false) - .with(EXTENDED, false)); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction nearestLookingDirection = context.getNearestLookingDirection(); - boolean shouldPower = context.getWorld() - .isBlockPowered(context.getPos()); - Direction facing = context.getPlayer() != null && context.getPlayer() - .isSneaking() ? nearestLookingDirection : nearestLookingDirection.getOpposite(); - - return getDefaultState().with(FACING, facing) - .with(POWERED, shouldPower); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(POWERED, EXTENDED)); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - boolean previouslyPowered = state.get(POWERED); - if (previouslyPowered != worldIn.isBlockPowered(pos)) { - state = state.cycle(POWERED); - if (state.get(POWERED)) - state = state.cycle(EXTENDED); - worldIn.setBlockState(pos, state, 2); - } - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public boolean shouldCheckWeakPower(BlockState state, IWorldReader world, BlockPos pos, Direction side) { - return false; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.STICKER.create(); - } - - @Override - public Class getTileEntityClass() { - return StickerTileEntity.class; - } - - // Slime block stuff - - private boolean isUprightSticker(IBlockReader world, BlockPos pos) { - BlockState blockState = world.getBlockState(pos); - return AllBlocks.STICKER.has(blockState) && blockState.get(FACING) == Direction.UP; - } - - @Override - public void onFallenUpon(World p_180658_1_, BlockPos p_180658_2_, Entity p_180658_3_, float p_180658_4_) { - if (!isUprightSticker(p_180658_1_, p_180658_2_) || p_180658_3_.bypassesLandingEffects()) { - super.onFallenUpon(p_180658_1_, p_180658_2_, p_180658_3_, p_180658_4_); - } else { - p_180658_3_.handleFallDamage(p_180658_4_, 0.0F); - } - } - - @Override - public void onLanded(IBlockReader p_176216_1_, Entity p_176216_2_) { - if (!isUprightSticker(p_176216_1_, p_176216_2_.getBlockPos() - .down()) || p_176216_2_.bypassesLandingEffects()) { - super.onLanded(p_176216_1_, p_176216_2_); - } else { - this.func_226946_a_(p_176216_2_); - } - } - - private void func_226946_a_(Entity p_226946_1_) { - Vector3d Vector3d = p_226946_1_.getMotion(); - if (Vector3d.y < 0.0D) { - double d0 = p_226946_1_ instanceof LivingEntity ? 1.0D : 0.8D; - p_226946_1_.setMotion(Vector3d.x, -Vector3d.y * d0, Vector3d.z); - } - } - - @Override - public void onEntityWalk(World p_176199_1_, BlockPos p_176199_2_, Entity p_176199_3_) { - double d0 = Math.abs(p_176199_3_.getMotion().y); - if (d0 < 0.1D && !p_176199_3_.bypassesSteppingEffects() && isUprightSticker(p_176199_1_, p_176199_2_)) { - double d1 = 0.4D + d0 * 0.2D; - p_176199_3_.setMotion(p_176199_3_.getMotion() - .mul(d1, 1.0D, d1)); - } - super.onEntityWalk(p_176199_1_, p_176199_2_, p_176199_3_); - } - - @Override - public boolean addLandingEffects(BlockState state1, ServerWorld worldserver, BlockPos pos, BlockState state2, - LivingEntity entity, int numberOfParticles) { - if (isUprightSticker(worldserver, pos)) { - worldserver.spawnParticle(new BlockParticleData(ParticleTypes.BLOCK, Blocks.SLIME_BLOCK.getDefaultState()), - entity.getX(), entity.getY(), entity.getZ(), numberOfParticles, 0.0D, 0.0D, 0.0D, (double) 0.15F); - return true; - } - return super.addLandingEffects(state1, worldserver, pos, state2, entity, numberOfParticles); - } - - @Override - public boolean addRunningEffects(BlockState state, World world, BlockPos pos, Entity entity) { - if (state.get(FACING) == Direction.UP) { - Vector3d Vector3d = entity.getMotion(); - world.addParticle( - new BlockParticleData(ParticleTypes.BLOCK, Blocks.SLIME_BLOCK.getDefaultState()).setPos(pos), - entity.getX() + ((double) world.rand.nextFloat() - 0.5D) * (double) entity.getWidth(), - entity.getY() + 0.1D, - entity.getZ() + ((double) world.rand.nextFloat() - 0.5D) * (double) entity.getWidth(), Vector3d.x * -4.0D, - 1.5D, Vector3d.z * -4.0D); - return true; - } - return super.addRunningEffects(state, world, pos, entity); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java deleted file mode 100644 index f57cebc70..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerInstance.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.client.Minecraft; -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; - -public class StickerInstance extends TileEntityInstance implements IDynamicInstance { - - float lastOffset = Float.NaN; - final Direction facing; - final boolean fakeWorld; - final int offset; - - private final ModelData head; - - public StickerInstance(MaterialManager modelManager, StickerTileEntity tile) { - super(modelManager, tile); - - head = getTransformMaterial().getModel(AllBlockPartials.STICKER_HEAD, blockState).createInstance(); - - fakeWorld = tile.getWorld() != Minecraft.getInstance().world; - facing = blockState.get(StickerBlock.FACING); - offset = blockState.get(StickerBlock.EXTENDED) ? 1 : 0; - - animateHead(offset); - } - - @Override - public void beginFrame() { - float offset = tile.piston.getValue(AnimationTickHolder.getPartialTicks()); - - if (fakeWorld) - offset = this.offset; - - if (MathHelper.epsilonEquals(offset, lastOffset)) - return; - - animateHead(offset); - - lastOffset = offset; - } - - private void animateHead(float offset) { - MatrixStack stack = new MatrixStack(); - MatrixStacker.of(stack) - .translate(getInstancePosition()) - .nudge(tile.hashCode()) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing) + 90) - .unCentre() - .translate(0, (offset * offset) * 4 / 16f, 0); - - head.setTransform(stack); - } - - @Override - public void updateLight() { - relight(pos, head); - } - - @Override - public void remove() { - head.delete(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java deleted file mode 100644 index a63c27957..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerRenderer.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; - -public class StickerRenderer extends SafeTileEntityRenderer { - - public StickerRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(StickerTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - BlockState state = te.getBlockState(); - SuperByteBuffer head = PartialBufferer.get(AllBlockPartials.STICKER_HEAD, state); - float offset = te.piston.getValue(AnimationTickHolder.getPartialTicks(te.getWorld())); - - if (te.getWorld() != Minecraft.getInstance().world && !te.isVirtual()) - offset = state.get(StickerBlock.EXTENDED) ? 1 : 0; - - Direction facing = state.get(StickerBlock.FACING); - head.matrixStacker() - .nudge(te.hashCode()) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing) + 90) - .unCentre() - .translate(0, (offset * offset) * 4 / 16f, 0); - - head.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java deleted file mode 100644 index 7282a1183..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/chassis/StickerTileEntity.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.chassis; - -import java.util.List; - -import com.jozufozu.flywheel.backend.instancing.IInstanceRendered; -import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; - -public class StickerTileEntity extends SmartTileEntity implements IInstanceRendered { - - LerpedFloat piston; - boolean update; - - public StickerTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - piston = LerpedFloat.linear(); - update = false; - } - - @Override - public void addBehaviours(List behaviours) {} - - @Override - public void initialize() { - super.initialize(); - if (!world.isRemote) - return; - piston.startWithValue(isBlockStateExtended() ? 1 : 0); - } - - public boolean isBlockStateExtended() { - BlockState blockState = getBlockState(); - boolean extended = AllBlocks.STICKER.has(blockState) && blockState.get(StickerBlock.EXTENDED); - return extended; - } - - @Override - public void tick() { - super.tick(); - if (!world.isRemote) - return; - piston.tickChaser(); - - if (isAttachedToBlock() && piston.getValue(0) != piston.getValue() && piston.getValue() == 1) { - SuperGlueItem.spawnParticles(world, pos, getBlockState().get(StickerBlock.FACING), true); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> playSound(true)); - } - - if (!update) - return; - update = false; - int target = isBlockStateExtended() ? 1 : 0; - if (isAttachedToBlock() && target == 0 && piston.getChaseTarget() == 1) - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> playSound(false)); - piston.chase(target, .4f, Chaser.LINEAR); - - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> InstancedRenderDispatcher.enqueueUpdate(this)); - } - - public boolean isAttachedToBlock() { - BlockState blockState = getBlockState(); - if (!AllBlocks.STICKER.has(blockState)) - return false; - Direction direction = blockState.get(StickerBlock.FACING); - return SuperGlueEntity.isValidFace(world, pos.offset(direction), direction.getOpposite()); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - if (clientPacket) - update = true; - } - - @OnlyIn(Dist.CLIENT) - public void playSound(boolean attach) { - AllSoundEvents.SLIME_ADDED.play(world, Minecraft.getInstance().player, pos, 0.35f, attach ? 0.75f : 0.2f); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageBlock.java deleted file mode 100644 index 849bfb36b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageBlock.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.gantry; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public class GantryCarriageBlock extends DirectionalAxisKineticBlock implements ITE { - - public GantryCarriageBlock(Properties properties) { - super(properties); - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { - Direction direction = state.get(FACING); - BlockState shaft = world.getBlockState(pos.offset(direction.getOpposite())); - return AllBlocks.GANTRY_SHAFT.has(shaft) && shaft.get(GantryShaftBlock.FACING) - .getAxis() != direction.getAxis(); - } - - @Override - public void updateDiagonalNeighbors(BlockState stateIn, IWorld worldIn, BlockPos pos, int flags, int count) { - super.updateDiagonalNeighbors(stateIn, worldIn, pos, flags, count); - withTileEntityDo(worldIn, pos, GantryCarriageTileEntity::checkValidGantryShaft); - } - - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - super.onBlockAdded(state, worldIn, pos, oldState, isMoving); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.GANTRY_PINION.create(); - } - - @Override - protected Direction getFacingForPlacement(BlockItemUseContext context) { - return context.getFace(); - } - - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.isAllowEdit() || player.isSneaking()) - return ActionResultType.PASS; - if (player.getHeldItem(handIn) - .isEmpty()) { - withTileEntityDo(worldIn, pos, te -> te.checkValidGantryShaft()); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockState stateForPlacement = super.getStateForPlacement(context); - Direction opposite = stateForPlacement.get(FACING) - .getOpposite(); - return cycleAxisIfNecessary(stateForPlacement, opposite, context.getWorld() - .getBlockState(context.getPos() - .offset(opposite))); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, BlockPos updatePos, - boolean p_220069_6_) { - if (updatePos.equals(pos.offset(state.get(FACING) - .getOpposite())) && !isValidPosition(state, world, pos)) - world.destroyBlock(pos, true); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState otherState, IWorld world, - BlockPos pos, BlockPos p_196271_6_) { - if (state.get(FACING) != direction.getOpposite()) - return state; - return cycleAxisIfNecessary(state, direction, otherState); - } - - protected BlockState cycleAxisIfNecessary(BlockState state, Direction direction, BlockState otherState) { - if (!AllBlocks.GANTRY_SHAFT.has(otherState)) - return state; - if (otherState.get(GantryShaftBlock.FACING) - .getAxis() == direction.getAxis()) - return state; - if (isValidGantryShaftAxis(state, otherState)) - return state; - return state.cycle(AXIS_ALONG_FIRST_COORDINATE); - } - - public static boolean isValidGantryShaftAxis(BlockState pinionState, BlockState gantryState) { - return getValidGantryShaftAxis(pinionState) == gantryState.get(GantryShaftBlock.FACING) - .getAxis(); - } - - public static Axis getValidGantryShaftAxis(BlockState state) { - if (!(state.getBlock() instanceof GantryCarriageBlock)) - return Axis.Y; - IRotate block = (IRotate) state.getBlock(); - Axis rotationAxis = block.getRotationAxis(state); - Axis facingAxis = state.get(FACING) - .getAxis(); - for (Axis axis : Iterate.axes) - if (axis != rotationAxis && axis != facingAxis) - return axis; - return Axis.Y; - } - - public static Axis getValidGantryPinionAxis(BlockState state, Axis shaftAxis) { - Axis facingAxis = state.get(FACING) - .getAxis(); - for (Axis axis : Iterate.axes) - if (axis != shaftAxis && axis != facingAxis) - return axis; - return Axis.Y; - } - - @Override - public Class getTileEntityClass() { - return GantryCarriageTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java deleted file mode 100644 index e2d3a8630..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageInstance.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.gantry; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; - -public class GantryCarriageInstance extends ShaftInstance implements IDynamicInstance { - - private final ModelData gantryCogs; - - final Direction facing; - final Boolean alongFirst; - final Direction.Axis rotationAxis; - final float rotationMult; - final BlockPos visualPos; - - private float lastAngle = Float.NaN; - - public GantryCarriageInstance(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); - - gantryCogs = getTransformMaterial() - .getModel(AllBlockPartials.GANTRY_COGS, blockState) - .createInstance(); - - facing = blockState.get(GantryCarriageBlock.FACING); - alongFirst = blockState.get(GantryCarriageBlock.AXIS_ALONG_FIRST_COORDINATE); - rotationAxis = KineticTileEntityRenderer.getRotationAxisOf(tile); - - rotationMult = getRotationMultiplier(getGantryAxis(), facing); - - visualPos = facing.getAxisDirection() == Direction.AxisDirection.POSITIVE ? tile.getPos() - : tile.getPos() - .offset(facing.getOpposite()); - - animateCogs(getCogAngle()); - } - - @Override - public void beginFrame() { - float cogAngle = getCogAngle(); - - if (MathHelper.epsilonEquals(cogAngle, lastAngle)) return; - - animateCogs(cogAngle); - } - - private float getCogAngle() { - return GantryCarriageRenderer.getAngleForTe(tile, visualPos, rotationAxis) * rotationMult; - } - - private void animateCogs(float cogAngle) { - MatrixStack ms = new MatrixStack(); - MatrixStacker.of(ms) - .translate(getInstancePosition()) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) - .rotateY(alongFirst ^ facing.getAxis() == Direction.Axis.Z ? 90 : 0) - .translate(0, -9 / 16f, 0) - .multiply(Vector3f.POSITIVE_X.getRadialQuaternion(-cogAngle)) - .translate(0, 9 / 16f, 0) - .unCentre(); - - gantryCogs.setTransform(ms); - } - - static float getRotationMultiplier(Direction.Axis gantryAxis, Direction facing) { - float multiplier = 1; - if (gantryAxis == Direction.Axis.Z) - if (facing == Direction.DOWN) - multiplier *= -1; - if (gantryAxis == Direction.Axis.Y) - if (facing == Direction.NORTH || facing == Direction.EAST) - multiplier *= -1; - - return multiplier; - } - - private Direction.Axis getGantryAxis() { - Direction.Axis gantryAxis = Direction.Axis.X; - for (Direction.Axis axis : Iterate.axes) - if (axis != rotationAxis && axis != facing.getAxis()) - gantryAxis = axis; - return gantryAxis; - } - - @Override - public void updateLight() { - relight(pos, gantryCogs, rotatingModel); - } - - @Override - public void remove() { - super.remove(); - gantryCogs.delete(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java deleted file mode 100644 index 5ae13bc6d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageRenderer.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.gantry; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3f; - -public class GantryCarriageRenderer extends KineticTileEntityRenderer { - - public GantryCarriageRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - BlockState state = te.getBlockState(); - Direction facing = state.get(GantryCarriageBlock.FACING); - Boolean alongFirst = state.get(GantryCarriageBlock.AXIS_ALONG_FIRST_COORDINATE); - Axis rotationAxis = getRotationAxisOf(te); - BlockPos visualPos = facing.getAxisDirection() == AxisDirection.POSITIVE ? te.getPos() - : te.getPos() - .offset(facing.getOpposite()); - float angleForTe = getAngleForTe(te, visualPos, rotationAxis); - - Axis gantryAxis = Axis.X; - for (Axis axis : Iterate.axes) - if (axis != rotationAxis && axis != facing.getAxis()) - gantryAxis = axis; - - if (gantryAxis == Axis.Z) - if (facing == Direction.DOWN) - angleForTe *= -1; - if (gantryAxis == Axis.Y) - if (facing == Direction.NORTH || facing == Direction.EAST) - angleForTe *= -1; - - SuperByteBuffer cogs = PartialBufferer.get(AllBlockPartials.GANTRY_COGS, state); - cogs.matrixStacker() - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) - .rotateY(alongFirst ^ facing.getAxis() == Axis.Z ? 90 : 0) - .translate(0, -9 / 16f, 0) - .multiply(Vector3f.POSITIVE_X.getRadialQuaternion(-angleForTe)) - .translate(0, 9 / 16f, 0) - .unCentre(); - - cogs.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - - } - - public static float getAngleForTe(KineticTileEntity te, final BlockPos pos, Axis axis) { - float time = AnimationTickHolder.getRenderTime(te.getWorld()); - float offset = getRotationOffsetForPosition(te, pos, axis); - return ((time * te.getSpeed() * 3f / 20 + offset) % 360) / 180 * (float) Math.PI; - } - - @Override - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return shaft(getRotationAxisOf(te)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java deleted file mode 100644 index 897068624..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryCarriageTileEntity.java +++ /dev/null @@ -1,181 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.gantry; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; -import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; - -public class GantryCarriageTileEntity extends KineticTileEntity implements IDisplayAssemblyExceptions { - - boolean assembleNextTick; - protected AssemblyException lastException; - - public GantryCarriageTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - @Override - public void onSpeedChanged(float previousSpeed) { - super.onSpeedChanged(previousSpeed); - } - - public void checkValidGantryShaft() { - if (shouldAssemble()) - queueAssembly(); - } - - @Override - public void initialize() { - super.initialize(); - if (!getBlockState().isValidPosition(world, pos)) - world.destroyBlock(pos, true); - } - - public void queueAssembly() { - assembleNextTick = true; - } - - @Override - public void tick() { - super.tick(); - - if (world.isRemote) - return; - - if (assembleNextTick) { - tryAssemble(); - assembleNextTick = false; - } - } - - @Override - public AssemblyException getLastAssemblyException() { - return lastException; - } - - private void tryAssemble() { - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof GantryCarriageBlock)) - return; - - Direction direction = blockState.get(FACING); - GantryContraption contraption = new GantryContraption(direction); - - TileEntity shaftTe = world.getTileEntity(pos.offset(direction.getOpposite())); - if (!(shaftTe instanceof GantryShaftTileEntity)) - return; - BlockState shaftState = shaftTe.getBlockState(); - if (!AllBlocks.GANTRY_SHAFT.has(shaftState)) - return; - - float pinionMovementSpeed = ((GantryShaftTileEntity) shaftTe).getPinionMovementSpeed(); - Direction shaftOrientation = shaftState.get(GantryShaftBlock.FACING); - Direction movementDirection = shaftOrientation; - if (pinionMovementSpeed < 0) - movementDirection = movementDirection.getOpposite(); - - try { - lastException = null; - if (!contraption.assemble(world, pos)) - return; - - sendData(); - } catch (AssemblyException e) { - lastException = e; - sendData(); - return; - } - if (ContraptionCollider.isCollidingWithWorld(world, contraption, pos.offset(movementDirection), - movementDirection)) - return; - - contraption.removeBlocksFromWorld(world, BlockPos.ZERO); - GantryContraptionEntity movedContraption = - GantryContraptionEntity.create(world, contraption, shaftOrientation); - BlockPos anchor = pos; - movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(world, pos); - world.addEntity(movedContraption); - } - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - AssemblyException.write(compound, lastException); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); - } - - @Override - public float propagateRotationTo(KineticTileEntity target, BlockState stateFrom, BlockState stateTo, BlockPos diff, - boolean connectedViaAxes, boolean connectedViaCogs) { - float defaultModifier = - super.propagateRotationTo(target, stateFrom, stateTo, diff, connectedViaAxes, connectedViaCogs); - - if (connectedViaAxes) - return defaultModifier; - if (!AllBlocks.GANTRY_SHAFT.has(stateTo)) - return defaultModifier; - if (!stateTo.get(GantryShaftBlock.POWERED)) - return defaultModifier; - - Direction direction = Direction.getFacingFromVector(diff.getX(), diff.getY(), diff.getZ()); - if (stateFrom.get(GantryCarriageBlock.FACING) != direction.getOpposite()) - return defaultModifier; - return getGantryPinionModifier(stateTo.get(GantryShaftBlock.FACING), stateFrom.get(GantryCarriageBlock.FACING)); - } - - public static float getGantryPinionModifier(Direction shaft, Direction pinionDirection) { - Axis shaftAxis = shaft.getAxis(); - float directionModifier = shaft.getAxisDirection() - .getOffset(); - if (shaftAxis == Axis.Y) - if (pinionDirection == Direction.NORTH || pinionDirection == Direction.EAST) - return -directionModifier; - if (shaftAxis == Axis.X) - if (pinionDirection == Direction.DOWN || pinionDirection == Direction.SOUTH) - return -directionModifier; - if (shaftAxis == Axis.Z) - if (pinionDirection == Direction.UP || pinionDirection == Direction.WEST) - return -directionModifier; - return directionModifier; - } - - private boolean shouldAssemble() { - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof GantryCarriageBlock)) - return false; - Direction facing = blockState.get(GantryCarriageBlock.FACING) - .getOpposite(); - BlockState shaftState = world.getBlockState(pos.offset(facing)); - if (!(shaftState.getBlock() instanceof GantryShaftBlock)) - return false; - if (shaftState.get(GantryShaftBlock.POWERED)) - return false; - TileEntity te = world.getTileEntity(pos.offset(facing)); - return te instanceof GantryShaftTileEntity && ((GantryShaftTileEntity) te).canAssembleOn(); - } - - @Override - public boolean shouldRenderNormally() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraption.java deleted file mode 100644 index df6366c73..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraption.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.gantry; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; -import com.simibubi.create.content.contraptions.components.structureMovement.NonStationaryLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.TranslatingContraption; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; - -public class GantryContraption extends TranslatingContraption { - - protected Direction facing; - - public GantryContraption() {} - - public GantryContraption(Direction facing) { - this.facing = facing; - } - - @Override - public boolean assemble(World world, BlockPos pos) throws AssemblyException { - if (!searchMovedStructure(world, pos, null)) - return false; - startMoving(world); - return true; - } - - @Override - public CompoundNBT writeNBT(boolean spawnPacket) { - CompoundNBT tag = super.writeNBT(spawnPacket); - tag.putInt("Facing", facing.getIndex()); - return tag; - } - - @Override - public void readNBT(World world, CompoundNBT tag, boolean spawnData) { - facing = Direction.byIndex(tag.getInt("Facing")); - super.readNBT(world, tag, spawnData); - } - - @Override - protected boolean isAnchoringBlockAt(BlockPos pos) { - return super.isAnchoringBlockAt(pos.offset(facing)); - } - - @Override - protected ContraptionType getType() { - return ContraptionType.GANTRY; - } - - public Direction getFacing() { - return facing; - } - - @Override - protected boolean shouldUpdateAfterMovement(BlockInfo info) { - return super.shouldUpdateAfterMovement(info) && !AllBlocks.GANTRY_CARRIAGE.has(info.state); - } - - @Override - public ContraptionLighter makeLighter() { - return new NonStationaryLighter<>(this); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionEntity.java deleted file mode 100644 index 4066c61b4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionEntity.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.gantry; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllEntityTypes; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; -import com.simibubi.create.content.contraptions.components.structureMovement.StructureTransform; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftBlock; -import com.simibubi.create.content.contraptions.relays.advanced.GantryShaftTileEntity; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.ServerSpeedProvider; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.network.PacketDistributor; - -public class GantryContraptionEntity extends AbstractContraptionEntity { - - Direction movementAxis; - double clientOffsetDiff; - double axisMotion; - - public GantryContraptionEntity(EntityType entityTypeIn, World worldIn) { - super(entityTypeIn, worldIn); - } - - public static GantryContraptionEntity create(World world, Contraption contraption, Direction movementAxis) { - GantryContraptionEntity entity = new GantryContraptionEntity(AllEntityTypes.GANTRY_CONTRAPTION.get(), world); - entity.setContraption(contraption); - entity.movementAxis = movementAxis; - return entity; - } - - @Override - protected void tickContraption() { - if (!(contraption instanceof GantryContraption)) - return; - - double prevAxisMotion = axisMotion; - if (world.isRemote) { - clientOffsetDiff *= .75f; - updateClientMotion(); - } - - checkPinionShaft(); - tickActors(); - Vector3d movementVec = getMotion(); - - if (ContraptionCollider.collideBlocks(this)) { - if (!world.isRemote) - disassemble(); - return; - } - - if (!isStalled() && ticksExisted > 2) - move(movementVec.x, movementVec.y, movementVec.z); - - if (Math.signum(prevAxisMotion) != Math.signum(axisMotion) && prevAxisMotion != 0) - contraption.stop(world); - if (!world.isRemote && (prevAxisMotion != axisMotion || ticksExisted % 3 == 0)) - sendPacket(); - } - - protected void checkPinionShaft() { - Vector3d movementVec; - Direction facing = ((GantryContraption) contraption).getFacing(); - Vector3d currentPosition = getAnchorVec().add(.5, .5, .5); - BlockPos gantryShaftPos = new BlockPos(currentPosition).offset(facing.getOpposite()); - - TileEntity te = world.getTileEntity(gantryShaftPos); - if (!(te instanceof GantryShaftTileEntity) || !AllBlocks.GANTRY_SHAFT.has(te.getBlockState())) { - if (!world.isRemote) { - setContraptionMotion(Vector3d.ZERO); - disassemble(); - } - return; - } - - BlockState blockState = te.getBlockState(); - Direction direction = blockState.get(GantryShaftBlock.FACING); - GantryShaftTileEntity gantryShaftTileEntity = (GantryShaftTileEntity) te; - - float pinionMovementSpeed = gantryShaftTileEntity.getPinionMovementSpeed(); - movementVec = Vector3d.of(direction.getDirectionVec()).scale(pinionMovementSpeed); - - if (blockState.get(GantryShaftBlock.POWERED) || pinionMovementSpeed == 0) { - setContraptionMotion(Vector3d.ZERO); - if (!world.isRemote) - disassemble(); - return; - } - - Vector3d nextPosition = currentPosition.add(movementVec); - double currentCoord = direction.getAxis() - .getCoordinate(currentPosition.x, currentPosition.y, currentPosition.z); - double nextCoord = direction.getAxis() - .getCoordinate(nextPosition.x, nextPosition.y, nextPosition.z); - - if ((MathHelper.floor(currentCoord) + .5f < nextCoord != (pinionMovementSpeed * direction.getAxisDirection() - .getOffset() < 0))) - if (!gantryShaftTileEntity.canAssembleOn()) { - setContraptionMotion(Vector3d.ZERO); - if (!world.isRemote) - disassemble(); - return; - } - - if (world.isRemote) - return; - - axisMotion = pinionMovementSpeed; - setContraptionMotion(movementVec); - } - - @Override - protected void writeAdditional(CompoundNBT compound, boolean spawnPacket) { - NBTHelper.writeEnum(compound, "GantryAxis", movementAxis); - super.writeAdditional(compound, spawnPacket); - } - - protected void readAdditional(CompoundNBT compound, boolean spawnData) { - movementAxis = NBTHelper.readEnum(compound, "GantryAxis", Direction.class); - super.readAdditional(compound, spawnData); - } - - @Override - public Vector3d applyRotation(Vector3d localPos, float partialTicks) { - return localPos; - } - - @Override - public Vector3d reverseRotation(Vector3d localPos, float partialTicks) { - return localPos; - } - - @Override - protected StructureTransform makeStructureTransform() { - return new StructureTransform(new BlockPos(getAnchorVec().add(.5, .5, .5)), 0, 0, 0); - } - - @Override - protected float getStalledAngle() { - return 0; - } - - @Override - public void setPositionAndUpdate(double p_70634_1_, double p_70634_3_, double p_70634_5_) {} - - @Override - @OnlyIn(Dist.CLIENT) - public void setPositionAndRotationDirect(double x, double y, double z, float yw, float pt, int inc, boolean t) {} - - @Override - protected void handleStallInformation(float x, float y, float z, float angle) { - setPos(x, y, z); - clientOffsetDiff = 0; - } - - @Override - public ContraptionRotationState getRotationState() { - return ContraptionRotationState.NONE; - } - - @Override - public void doLocalTransforms(float partialTicks, MatrixStack[] matrixStacks) { } - - public void updateClientMotion() { - float modifier = movementAxis.getAxisDirection() - .getOffset(); - setContraptionMotion(Vector3d.of(movementAxis.getDirectionVec()) - .scale((axisMotion + clientOffsetDiff * modifier / 2f) * ServerSpeedProvider.get())); - } - - public double getAxisCoord() { - Vector3d anchorVec = getAnchorVec(); - return movementAxis.getAxis() - .getCoordinate(anchorVec.x, anchorVec.y, anchorVec.z); - } - - public void sendPacket() { - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), - new GantryContraptionUpdatePacket(getEntityId(), getAxisCoord(), axisMotion)); - } - - @OnlyIn(Dist.CLIENT) - public static void handlePacket(GantryContraptionUpdatePacket packet) { - Entity entity = Minecraft.getInstance().world.getEntityByID(packet.entityID); - if (!(entity instanceof GantryContraptionEntity)) - return; - GantryContraptionEntity ce = (GantryContraptionEntity) entity; - ce.axisMotion = packet.motion; - ce.clientOffsetDiff = packet.coord - ce.getAxisCoord(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionUpdatePacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionUpdatePacket.java deleted file mode 100644 index 54463c051..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/gantry/GantryContraptionUpdatePacket.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.gantry; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class GantryContraptionUpdatePacket extends SimplePacketBase { - - int entityID; - double coord; - double motion; - - public GantryContraptionUpdatePacket(int entityID, double coord, double motion) { - this.entityID = entityID; - this.coord = coord; - this.motion = motion; - } - - public GantryContraptionUpdatePacket(PacketBuffer buffer) { - entityID = buffer.readInt(); - coord = buffer.readFloat(); - motion = buffer.readFloat(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(entityID); - buffer.writeFloat((float) coord); - buffer.writeFloat((float) motion); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork( - () -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> GantryContraptionEntity.handlePacket(this))); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueEffectPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueEffectPacket.java deleted file mode 100644 index a70a8d1c7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueEffectPacket.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.glue; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class GlueEffectPacket extends SimplePacketBase { - - private BlockPos pos; - private Direction direction; - private boolean fullBlock; - - public GlueEffectPacket(BlockPos pos, Direction direction, boolean fullBlock) { - this.pos = pos; - this.direction = direction; - this.fullBlock = fullBlock; - } - - public GlueEffectPacket(PacketBuffer buffer) { - pos = buffer.readBlockPos(); - direction = Direction.byIndex(buffer.readByte()); - fullBlock = buffer.readBoolean(); - } - - public void write(PacketBuffer buffer) { - buffer.writeBlockPos(pos); - buffer.writeByte(direction.getIndex()); - buffer.writeBoolean(fullBlock); - } - - @OnlyIn(Dist.CLIENT) - public void handle(Supplier context) { - context.get().enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - Minecraft mc = Minecraft.getInstance(); - if (!mc.player.getBlockPos().withinDistance(pos, 100)) - return; - SuperGlueItem.spawnParticles(mc.world, pos, direction, fullBlock); - })); - context.get().setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java deleted file mode 100644 index cc171a904..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/GlueInstance.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.glue; - -import com.jozufozu.flywheel.backend.gl.buffer.VecBuffer; -import com.jozufozu.flywheel.backend.instancing.ITickableInstance; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.entity.EntityInstance; -import com.jozufozu.flywheel.backend.model.BufferedModel; -import com.jozufozu.flywheel.backend.model.IndexedModel; -import com.jozufozu.flywheel.core.Formats; -import com.jozufozu.flywheel.core.Materials; -import com.jozufozu.flywheel.core.instancing.ConditionalInstance; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllStitchedTextures; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.LightType; - -public class GlueInstance extends EntityInstance implements ITickableInstance { - - private static final ResourceLocation TEXTURE = new ResourceLocation(Create.ID, "textures/entity/super_glue/slime.png"); - - private final Quaternion rotation; - protected ConditionalInstance model; - - public GlueInstance(MaterialManager materialManager, SuperGlueEntity entity) { - super(materialManager, entity); - - Instancer instancer = materialManager.getMaterial(Materials.ORIENTED) - .get(entity.getType(), GlueInstance::supplyModel); - - Direction face = entity.getFacingDirection(); - rotation = new Quaternion(AngleHelper.verticalAngle(face), AngleHelper.horizontalAngleNew(face), 0, true); - - model = new ConditionalInstance<>(instancer) - .withCondition(this::shouldShow) - .withSetupFunc(this::positionModel) - .update(); - } - - @Override - public void tick() { - model.update(); - } - - @Override - public void remove() { - model.delete(); - } - - private void positionModel(OrientedData model) { - - model.setPosition(getInstancePosition()) - .setPivot(0, 0, 0) - .setRotation(rotation); - - updateLight(model); - } - - @Override - public void updateLight() { - model.get().ifPresent(this::updateLight); - } - - private void updateLight(OrientedData model) { - BlockPos pos = entity.getHangingPosition(); - model.setBlockLight(world.getLightLevel(LightType.BLOCK, pos)) - .setSkyLight(world.getLightLevel(LightType.SKY, pos)); - } - - private boolean shouldShow() { - PlayerEntity player = Minecraft.getInstance().player; - - return entity.isVisible() - || AllItems.SUPER_GLUE.isIn(player.getHeldItemMainhand()) - || AllItems.SUPER_GLUE.isIn(player.getHeldItemOffhand()); - } - - public static BufferedModel supplyModel() { - Vector3d diff = Vector3d.of(Direction.SOUTH.getDirectionVec()); - Vector3d extension = diff.normalize() - .scale(1 / 32f - 1 / 128f); - - Vector3d plane = VecHelper.axisAlingedPlaneOf(diff); - Direction.Axis axis = Direction.getFacingFromVector(diff.x, diff.y, diff.z) - .getAxis(); - - Vector3d start = Vector3d.ZERO.subtract(extension); - Vector3d end = Vector3d.ZERO.add(extension); - - plane = plane.scale(1 / 2f); - Vector3d a1 = plane.add(start); - Vector3d b1 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a2 = plane.add(start); - Vector3d b2 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a3 = plane.add(start); - Vector3d b3 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a4 = plane.add(start); - Vector3d b4 = plane.add(end); - - VecBuffer buffer = VecBuffer.allocate(Formats.UNLIT_MODEL.getStride() * 8); - - TextureAtlasSprite sprite = AllStitchedTextures.SUPER_GLUE.getSprite(); - - // pos normal uv - // inside quad - buffer.putVec3((float) a1.x, (float) a1.y, (float) a1.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(sprite.getMaxU(), sprite.getMinV()); - buffer.putVec3((float) a2.x, (float) a2.y, (float) a2.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(sprite.getMaxU(), sprite.getMaxV()); - buffer.putVec3((float) a3.x, (float) a3.y, (float) a3.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(sprite.getMinU(), sprite.getMaxV()); - buffer.putVec3((float) a4.x, (float) a4.y, (float) a4.z).putVec3((byte) 0, (byte) 0, (byte) -127).putVec2(sprite.getMinU(), sprite.getMinV()); - // outside quad - buffer.putVec3((float) b4.x, (float) b4.y, (float) b4.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(sprite.getMinU(), sprite.getMinV()); - buffer.putVec3((float) b3.x, (float) b3.y, (float) b3.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(sprite.getMinU(), sprite.getMaxV()); - buffer.putVec3((float) b2.x, (float) b2.y, (float) b2.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(sprite.getMaxU(), sprite.getMaxV()); - buffer.putVec3((float) b1.x, (float) b1.y, (float) b1.z).putVec3((byte) 0, (byte) 0, (byte) 127).putVec2(sprite.getMaxU(), sprite.getMinV()); - - buffer.rewind(); - - - return IndexedModel.fromSequentialQuads(Formats.UNLIT_MODEL, buffer.unwrap(), 8); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java deleted file mode 100644 index 54ec8d2a3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueEntity.java +++ /dev/null @@ -1,491 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.glue; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.Validate; - -import com.jozufozu.flywheel.backend.instancing.IInstanceRendered; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllEntityTypes; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.BearingBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.AbstractChassisBlock; -import com.simibubi.create.content.schematics.ISpecialEntityItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.BlockFace; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.DirectionalBlock; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntitySize; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.MoverType; -import net.minecraft.entity.Pose; -import net.minecraft.entity.effect.LightningBoltEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.IPacket; -import net.minecraft.network.PacketBuffer; -import net.minecraft.state.BooleanProperty; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.RayTraceResult.Type; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData; -import net.minecraftforge.fml.network.NetworkHooks; -import net.minecraftforge.fml.network.PacketDistributor; - -public class SuperGlueEntity extends Entity implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement, IInstanceRendered { - - private int validationTimer; - protected BlockPos hangingPosition; - protected Direction facingDirection = Direction.SOUTH; - - public SuperGlueEntity(EntityType type, World world) { - super(type, world); - } - - public SuperGlueEntity(World world, BlockPos pos, Direction direction) { - this(AllEntityTypes.SUPER_GLUE.get(), world); - hangingPosition = pos; - facingDirection = direction; - updateFacingWithBoundingBox(); - } - - @Override - protected void registerData() {} - - public int getWidthPixels() { - return 12; - } - - public int getHeightPixels() { - return 12; - } - - public void onBroken(@Nullable Entity breaker) { - playSound(SoundEvents.ENTITY_SLIME_SQUISH_SMALL, 1.0F, 1.0F); - if (onValidSurface()) { - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> this), - new GlueEffectPacket(getHangingPosition(), getFacingDirection().getOpposite(), false)); - AllSoundEvents.SLIME_ADDED.playFrom(this, 0.5F, 0.5F); - } - } - - public void playPlaceSound() { - AllSoundEvents.SLIME_ADDED.playFrom(this, 0.5F, 0.75F); - } - - protected void updateFacingWithBoundingBox() { - Validate.notNull(getFacingDirection()); - if (getFacingDirection().getAxis() - .isHorizontal()) { - this.rotationPitch = 0.0F; - this.rotationYaw = getFacingDirection().getHorizontalIndex() * 90; - } else { - this.rotationPitch = -90 * getFacingDirection().getAxisDirection() - .getOffset(); - this.rotationYaw = 0.0F; - } - - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.updateBoundingBox(); - } - - protected void updateBoundingBox() { - if (this.getFacingDirection() != null) { - double offset = 0.5 - 1 / 256d; - double x = hangingPosition.getX() + 0.5 - facingDirection.getXOffset() * offset; - double y = hangingPosition.getY() + 0.5 - facingDirection.getYOffset() * offset; - double z = hangingPosition.getZ() + 0.5 - facingDirection.getZOffset() * offset; - this.setPos(x, y, z); - double w = getWidthPixels(); - double h = getHeightPixels(); - double l = getWidthPixels(); - Axis axis = this.getFacingDirection() - .getAxis(); - double depth = 2 - 1 / 128f; - - switch (axis) { - case X: - w = depth; - break; - case Y: - h = depth; - break; - case Z: - l = depth; - } - - w = w / 32.0D; - h = h / 32.0D; - l = l / 32.0D; - this.setBoundingBox(new AxisAlignedBB(x - w, y - h, z - l, x + w, y + h, z + l)); - } - } - - @Override - public void tick() { - if (this.validationTimer++ == 10 && !this.world.isRemote) { - this.validationTimer = 0; - if (isAlive() && !this.onValidSurface()) { - remove(); - onBroken(null); - } - } - - } - - public boolean isVisible() { - if (!isAlive()) - return false; - if (world instanceof WrappedWorld) - return true; - - BlockPos pos = hangingPosition; - BlockPos pos2 = pos.offset(getFacingDirection().getOpposite()); - return isValidFace(world, pos2, getFacingDirection()) != isValidFace(world, pos, - getFacingDirection().getOpposite()); - } - - public boolean onValidSurface() { - BlockPos pos = hangingPosition; - BlockPos pos2 = hangingPosition.offset(getFacingDirection().getOpposite()); - if (pos2.getY() >= 256) - return false; - if (!world.isAreaLoaded(pos, 0) || !world.isAreaLoaded(pos2, 0)) - return true; - if (!isValidFace(world, pos2, getFacingDirection()) - && !isValidFace(world, pos, getFacingDirection().getOpposite())) - return false; - if (isSideSticky(world, pos2, getFacingDirection()) - || isSideSticky(world, pos, getFacingDirection().getOpposite())) - return false; - return world.getEntitiesInAABBexcluding(this, getBoundingBox(), e -> e instanceof SuperGlueEntity) - .isEmpty(); - } - - public static boolean isValidFace(World world, BlockPos pos, Direction direction) { - BlockState state = world.getBlockState(pos); - if (BlockMovementChecks.isBlockAttachedTowards(state, world, pos, direction)) - return true; - if (!BlockMovementChecks.isMovementNecessary(state, world, pos)) - return false; - if (BlockMovementChecks.isNotSupportive(state, direction)) - return false; - return true; - } - - public static boolean isSideSticky(World world, BlockPos pos, Direction direction) { - BlockState state = world.getBlockState(pos); - if (AllBlocks.STICKY_MECHANICAL_PISTON.has(state)) - return state.get(DirectionalKineticBlock.FACING) == direction; - - if (AllBlocks.STICKER.has(state)) - return state.get(DirectionalBlock.FACING) == direction; - - if (state.getBlock() == Blocks.SLIME_BLOCK) - return true; - if (state.getBlock() == Blocks.HONEY_BLOCK) - return true; - - if (AllBlocks.CART_ASSEMBLER.has(state)) - return Direction.UP == direction; - - if (AllBlocks.GANTRY_CARRIAGE.has(state)) - return state.get(DirectionalKineticBlock.FACING) == direction; - - if (state.getBlock() instanceof BearingBlock) { - return state.get(DirectionalKineticBlock.FACING) == direction; - } - - if (state.getBlock() instanceof AbstractChassisBlock) { - BooleanProperty glueableSide = ((AbstractChassisBlock) state.getBlock()).getGlueableSide(state, direction); - if (glueableSide == null) - return false; - return state.get(glueableSide); - } - - return false; - } - - @Override - public boolean canBeCollidedWith() { - return true; - } - - @Override - public boolean hitByEntity(Entity entity) { - return entity instanceof PlayerEntity - ? attackEntityFrom(DamageSource.causePlayerDamage((PlayerEntity) entity), 0) - : false; - } - - @Override - public Direction getHorizontalFacing() { - return this.getFacingDirection(); - } - - @Override - public boolean attackEntityFrom(DamageSource source, float amount) { - if (this.isInvulnerableTo(source)) - return false; - Entity immediateSource = source.getImmediateSource(); - if (!isVisible() && immediateSource instanceof PlayerEntity) { - if (!AllItems.SUPER_GLUE.isIn(((PlayerEntity) immediateSource).getHeldItemMainhand())) - return true; - } - - if (isAlive() && !world.isRemote) { - remove(); - markVelocityChanged(); - onBroken(source.getTrueSource()); - } - - return true; - } - - @Override - public void move(MoverType typeIn, Vector3d pos) { - if (!world.isRemote && isAlive() && pos.lengthSquared() > 0.0D) { - remove(); - onBroken(null); - } - } - - @Override - public void addVelocity(double x, double y, double z) { - if (!world.isRemote && isAlive() && x * x + y * y + z * z > 0.0D) { - remove(); - onBroken(null); - } - } - - @Override - protected float getEyeHeight(Pose poseIn, EntitySize sizeIn) { - return 0.0F; - } - - @Override - public ItemStack getPickedResult(RayTraceResult target) { - return AllItems.SUPER_GLUE.asStack(); - } - - @Override - public void applyEntityCollision(Entity entityIn) { - super.applyEntityCollision(entityIn); - } - - @Override - public ActionResultType processInitialInteract(PlayerEntity player, Hand hand) { - if (player instanceof FakePlayer) - return ActionResultType.PASS; - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - triggerPlaceBlock(player, hand); - }); - return ActionResultType.CONSUME; - } - - @OnlyIn(Dist.CLIENT) - private void triggerPlaceBlock(PlayerEntity player, Hand hand) { - if (!(player instanceof ClientPlayerEntity)) - return; - if (!(player.world instanceof ClientWorld)) - return; - - ClientPlayerEntity cPlayer = (ClientPlayerEntity) player; - Minecraft mc = Minecraft.getInstance(); - RayTraceResult ray = - cPlayer.pick(mc.playerController.getBlockReachDistance(), AnimationTickHolder.getPartialTicks(), false); - - if (!(ray instanceof BlockRayTraceResult)) - return; - if (ray.getType() == Type.MISS) - return; - BlockRayTraceResult blockRay = (BlockRayTraceResult) ray; - BlockFace rayFace = new BlockFace(blockRay.getPos(), blockRay.getFace()); - BlockFace hangingFace = new BlockFace(getHangingPosition(), getFacingDirection().getOpposite()); - if (!rayFace.isEquivalent(hangingFace)) - return; - - for (Hand handIn : Hand.values()) { - ItemStack itemstack = cPlayer.getHeldItem(handIn); - int countBefore = itemstack.getCount(); - ActionResultType actionResultType = - mc.playerController.func_217292_a(cPlayer, (ClientWorld) cPlayer.world, handIn, blockRay); - if (actionResultType != ActionResultType.SUCCESS) - return; - - cPlayer.swingArm(handIn); - if (!itemstack.isEmpty() && (itemstack.getCount() != countBefore || mc.playerController.isInCreativeMode())) - mc.gameRenderer.itemRenderer.resetEquippedProgress(handIn); - return; - } - } - - @Override - public void writeAdditional(CompoundNBT compound) { - compound.putByte("Facing", (byte) this.getFacingDirection() - .getIndex()); - BlockPos blockpos = this.getHangingPosition(); - compound.putInt("TileX", blockpos.getX()); - compound.putInt("TileY", blockpos.getY()); - compound.putInt("TileZ", blockpos.getZ()); - } - - @Override - public void readAdditional(CompoundNBT compound) { - this.hangingPosition = - new BlockPos(compound.getInt("TileX"), compound.getInt("TileY"), compound.getInt("TileZ")); - this.facingDirection = Direction.byIndex(compound.getByte("Facing")); - updateFacingWithBoundingBox(); - } - - @Override - public ItemEntity entityDropItem(ItemStack stack, float yOffset) { - float xOffset = (float) this.getFacingDirection() - .getXOffset() * 0.15F; - float zOffset = (float) this.getFacingDirection() - .getZOffset() * 0.15F; - ItemEntity itementity = - new ItemEntity(this.world, this.getX() + xOffset, this.getY() + yOffset, this.getZ() + zOffset, stack); - itementity.setDefaultPickupDelay(); - this.world.addEntity(itementity); - return itementity; - } - - @Override - protected boolean shouldSetPosAfterLoading() { - return false; - } - - @Override - public void setPosition(double x, double y, double z) { - hangingPosition = new BlockPos(x, y, z); - updateBoundingBox(); - isAirBorne = true; - } - - @Override - public float getRotatedYaw(Rotation transformRotation) { - if (this.getFacingDirection() - .getAxis() != Direction.Axis.Y) { - switch (transformRotation) { - case CLOCKWISE_180: - facingDirection = facingDirection.getOpposite(); - break; - case COUNTERCLOCKWISE_90: - facingDirection = facingDirection.rotateYCCW(); - break; - case CLOCKWISE_90: - facingDirection = facingDirection.rotateY(); - default: - break; - } - } - - float f = MathHelper.wrapDegrees(this.rotationYaw); - switch (transformRotation) { - case CLOCKWISE_180: - return f + 180.0F; - case COUNTERCLOCKWISE_90: - return f + 90.0F; - case CLOCKWISE_90: - return f + 270.0F; - default: - return f; - } - } - - public BlockPos getHangingPosition() { - return this.hangingPosition; - } - - @Override - public float getMirroredYaw(Mirror transformMirror) { - return this.getRotatedYaw(transformMirror.toRotation(this.getFacingDirection())); - } - - public Direction getAttachedDirection(BlockPos pos) { - return !pos.equals(hangingPosition) ? getFacingDirection() : getFacingDirection().getOpposite(); - } - - @Override - public void onStruckByLightning(ServerWorld world, LightningBoltEntity lightningBolt) {} - - @Override - public void recalculateSize() {} - - public static EntityType.Builder build(EntityType.Builder builder) { - @SuppressWarnings("unchecked") - EntityType.Builder entityBuilder = (EntityType.Builder) builder; - return entityBuilder; - } - - @Override - public IPacket createSpawnPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - - @Override - public void writeSpawnData(PacketBuffer buffer) { - CompoundNBT compound = new CompoundNBT(); - writeAdditional(compound); - buffer.writeCompoundTag(compound); - } - - @Override - public void readSpawnData(PacketBuffer additionalData) { - readAdditional(additionalData.readCompoundTag()); - } - - public Direction getFacingDirection() { - return facingDirection; - } - - @Override - public ItemRequirement getRequiredItems() { - return new ItemRequirement(ItemUseType.DAMAGE, AllItems.SUPER_GLUE.get()); - } - - @Override - public boolean doesEntityNotTriggerPressurePlate() { - return true; - } - - @Override - public World getWorld() { - return world; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueHandler.java deleted file mode 100644 index 89830765c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueHandler.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.glue; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.placement.IPlacementHelper; -import com.simibubi.create.foundation.utility.worldWrappers.RayTraceWorld; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceResult.Type; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeMod; -import net.minecraftforge.event.world.BlockEvent.EntityPlaceEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.fml.network.PacketDistributor; - -@EventBusSubscriber -public class SuperGlueHandler { - - public static Map gatherGlue(IWorld world, BlockPos pos) { - List entities = world.getEntitiesWithinAABB(SuperGlueEntity.class, new AxisAlignedBB(pos)); - Map map = new HashMap<>(); - for (SuperGlueEntity entity : entities) - map.put(entity.getAttachedDirection(pos), entity); - return map; - } - - @SubscribeEvent - public static void glueListensForBlockPlacement(EntityPlaceEvent event) { - IWorld world = event.getWorld(); - Entity entity = event.getEntity(); - BlockPos pos = event.getPos(); - - if (entity == null || world == null || pos == null) - return; - if (world.isRemote()) - return; - - Map gatheredGlue = gatherGlue(world, pos); - for (Direction direction : gatheredGlue.keySet()) - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), - new GlueEffectPacket(pos, direction, true)); - - if (entity instanceof PlayerEntity) - glueInOffHandAppliesOnBlockPlace(event, pos, (PlayerEntity) entity); - } - - public static void glueInOffHandAppliesOnBlockPlace(EntityPlaceEvent event, BlockPos pos, PlayerEntity placer) { - ItemStack itemstack = placer.getHeldItemOffhand(); - ModifiableAttributeInstance reachAttribute = placer.getAttribute(ForgeMod.REACH_DISTANCE.get()); - if (!AllItems.SUPER_GLUE.isIn(itemstack) || reachAttribute == null) - return; - if (AllItems.WRENCH.isIn(placer.getHeldItemMainhand())) - return; - if (event.getPlacedAgainst() == IPlacementHelper.ID) - return; - - double distance = reachAttribute.getValue(); - Vector3d start = placer.getEyePosition(1); - Vector3d look = placer.getLook(1); - Vector3d end = start.add(look.x * distance, look.y * distance, look.z * distance); - World world = placer.world; - - RayTraceWorld rayTraceWorld = - new RayTraceWorld(world, (p, state) -> p.equals(pos) ? Blocks.AIR.getDefaultState() : state); - BlockRayTraceResult ray = rayTraceWorld.rayTraceBlocks( - new RayTraceContext(start, end, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, placer)); - - Direction face = ray.getFace(); - if (face == null || ray.getType() == Type.MISS) - return; - - if (!ray.getPos() - .offset(face) - .equals(pos)) { - event.setCanceled(true); - return; - } - - SuperGlueEntity entity = new SuperGlueEntity(world, ray.getPos(), face.getOpposite()); - CompoundNBT compoundnbt = itemstack.getTag(); - if (compoundnbt != null) - EntityType.applyItemNBT(world, placer, entity, compoundnbt); - - if (entity.onValidSurface()) { - if (!world.isRemote) { - entity.playPlaceSound(); - world.addEntity(entity); - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), - new GlueEffectPacket(ray.getPos(), face, true)); - } - itemstack.damageItem(1, placer, SuperGlueItem::onBroken); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueItem.java deleted file mode 100644 index 98863bfaa..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueItem.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.glue; - -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.entity.EntityType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.Items; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class SuperGlueItem extends Item { - - public SuperGlueItem(Properties properties) { - super(properties); - } - - @Override - public boolean isDamageable() { - return true; - } - - @Override - public int getMaxDamage(ItemStack stack) { - return 99; - } - - @Override - public int getItemStackLimit(ItemStack stack) { - return 1; - } - - @Override - public ActionResultType onItemUse(ItemUseContext context) { - BlockPos blockpos = context.getPos(); - Direction direction = context.getFace(); - BlockPos blockpos1 = blockpos.offset(direction); - PlayerEntity playerentity = context.getPlayer(); - ItemStack itemstack = context.getItem(); - - if (playerentity == null || !this.canPlace(playerentity, direction, itemstack, blockpos1)) - return ActionResultType.FAIL; - - World world = context.getWorld(); - SuperGlueEntity entity = new SuperGlueEntity(world, blockpos1, direction); - CompoundNBT compoundnbt = itemstack.getTag(); - if (compoundnbt != null) - EntityType.applyItemNBT(world, playerentity, entity, compoundnbt); - - if (!entity.onValidSurface()) - return ActionResultType.FAIL; - - if (!world.isRemote) { - entity.playPlaceSound(); - world.addEntity(entity); - } - itemstack.damageItem(1, playerentity, SuperGlueItem::onBroken); - - return ActionResultType.SUCCESS; - } - - public static void onBroken(PlayerEntity player) { - - } - - protected boolean canPlace(PlayerEntity entity, Direction facing, ItemStack stack, BlockPos pos) { - return !World.isOutsideBuildHeight(pos) && entity.canPlayerEdit(pos, facing, stack); - } - - @OnlyIn(Dist.CLIENT) - public static void spawnParticles(World world, BlockPos pos, Direction direction, boolean fullBlock) { - Vector3d vec = Vector3d.of(direction.getDirectionVec()); - Vector3d plane = VecHelper.axisAlingedPlaneOf(vec); - Vector3d facePos = VecHelper.getCenterOf(pos) - .add(vec.scale(.5f)); - - float distance = fullBlock ? 1f : .25f + .25f * (world.rand.nextFloat() - .5f); - plane = plane.scale(distance); - ItemStack stack = new ItemStack(Items.SLIME_BALL); - - for (int i = fullBlock ? 40 : 15; i > 0; i--) { - Vector3d offset = VecHelper.rotate(plane, 360 * world.rand.nextFloat(), direction.getAxis()); - Vector3d motion = offset.normalize() - .scale(1 / 16f); - if (fullBlock) - offset = new Vector3d(MathHelper.clamp(offset.x, -.5, .5), MathHelper.clamp(offset.y, -.5, .5), - MathHelper.clamp(offset.z, -.5, .5)); - Vector3d particlePos = facePos.add(offset); - world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), particlePos.x, particlePos.y, - particlePos.z, motion.x, motion.y, motion.z); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java deleted file mode 100644 index 34bfa5f3b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/glue/SuperGlueRenderer.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.glue; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.matrix.MatrixStack.Entry; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllItems; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.culling.ClippingHelper; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public class SuperGlueRenderer extends EntityRenderer { - - private ResourceLocation regular = new ResourceLocation(Create.ID, "textures/entity/super_glue/slime.png"); - - private float[] insideQuad; - private float[] outsideQuad; - - public SuperGlueRenderer(EntityRendererManager renderManager) { - super(renderManager); - initQuads(); - } - - @Override - public ResourceLocation getEntityTexture(SuperGlueEntity entity) { - return regular; - } - - @Override - public boolean shouldRender(SuperGlueEntity entity, ClippingHelper frustum, double x, double y, double z) { - if (super.shouldRender(entity, frustum, x, y, z)) { - PlayerEntity player = Minecraft.getInstance().player; - boolean visible = entity.isVisible(); - boolean holdingGlue = AllItems.SUPER_GLUE.isIn(player.getHeldItemMainhand()) - || AllItems.SUPER_GLUE.isIn(player.getHeldItemOffhand()); - - if (visible || holdingGlue) - return true; - } - return false; - } - - @Override - public void render(SuperGlueEntity entity, float yaw, float partialTicks, MatrixStack ms, - IRenderTypeBuffer buffer, int light) { - super.render(entity, yaw, partialTicks, ms, buffer, light); - - IVertexBuilder builder = buffer.getBuffer(RenderType.getEntityCutout(getEntityTexture(entity))); - light = getBrightnessForRender(entity); - Direction face = entity.getFacingDirection(); - - ms.push(); - MatrixStacker.of(ms) - .rotateY(AngleHelper.horizontalAngleNew(face)) - .rotateX(AngleHelper.verticalAngle(face)); - Entry peek = ms.peek(); - - renderQuad(builder, peek, insideQuad, light, -1); - renderQuad(builder, peek, outsideQuad, light, 1); - - ms.pop(); - } - - private void initQuads() { - Vector3d diff = Vector3d.of(Direction.SOUTH.getDirectionVec()); - Vector3d extension = diff.normalize() - .scale(1 / 32f - 1 / 128f); - - Vector3d plane = VecHelper.axisAlingedPlaneOf(diff); - Axis axis = Direction.getFacingFromVector(diff.x, diff.y, diff.z) - .getAxis(); - - Vector3d start = Vector3d.ZERO.subtract(extension); - Vector3d end = Vector3d.ZERO.add(extension); - - plane = plane.scale(1 / 2f); - Vector3d a1 = plane.add(start); - Vector3d b1 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a2 = plane.add(start); - Vector3d b2 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a3 = plane.add(start); - Vector3d b3 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a4 = plane.add(start); - Vector3d b4 = plane.add(end); - - insideQuad = new float[] { - (float) a1.x, (float) a1.y, (float) a1.z, 1, 0, - (float) a2.x, (float) a2.y, (float) a2.z, 1, 1, - (float) a3.x, (float) a3.y, (float) a3.z, 0, 1, - (float) a4.x, (float) a4.y, (float) a4.z, 0, 0, - }; - outsideQuad = new float[] { - (float) b4.x, (float) b4.y, (float) b4.z, 0, 0, - (float) b3.x, (float) b3.y, (float) b3.z, 0, 1, - (float) b2.x, (float) b2.y, (float) b2.z, 1, 1, - (float) b1.x, (float) b1.y, (float) b1.z, 1, 0, - }; - } - - private int getBrightnessForRender(SuperGlueEntity entity) { - BlockPos blockpos = entity.getHangingPosition(); - BlockPos blockpos2 = blockpos.offset(entity.getFacingDirection() - .getOpposite()); - - World world = entity.getEntityWorld(); - int light = world.isBlockPresent(blockpos) ? WorldRenderer.getLightmapCoordinates(world, blockpos) : 15; - int light2 = world.isBlockPresent(blockpos2) ? WorldRenderer.getLightmapCoordinates(world, blockpos2) : 15; - return Math.max(light, light2); - } - - // Vertex format: pos x, pos y, pos z, u, v - private void renderQuad(IVertexBuilder builder, Entry matrix, float[] data, int light, float normalZ) { - for (int i = 0; i < 4; i++) { - builder.vertex(matrix.getModel(), data[5 * i], data[5 * i + 1], data[5 * i + 2]) - .color(255, 255, 255, 255) - .texture(data[5 * i + 3], data[5 * i + 4]) - .overlay(OverlayTexture.DEFAULT_UV) - .light(light) - .normal(matrix.getNormal(), 0.0f, 0.0f, normalZ) - .endVertex(); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssembleRailType.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssembleRailType.java deleted file mode 100644 index d3863f8ae..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssembleRailType.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.mounted; - -import java.util.function.Predicate; -import java.util.function.Supplier; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; -import com.simibubi.create.foundation.utility.Lang; -import com.tterrag.registrate.util.entry.BlockEntry; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.item.Item; -import net.minecraft.util.IStringSerializable; - -public enum CartAssembleRailType implements IStringSerializable { - - REGULAR(Blocks.RAIL), - POWERED_RAIL(Blocks.POWERED_RAIL), - DETECTOR_RAIL(Blocks.DETECTOR_RAIL), - ACTIVATOR_RAIL(Blocks.ACTIVATOR_RAIL), - CONTROLLER_RAIL(AllBlocks.CONTROLLER_RAIL, blockState -> AllBlocks.CONTROLLER_RAIL.has(blockState) - && blockState.contains(ControllerRailBlock.BACKWARDS) && !blockState.get(ControllerRailBlock.BACKWARDS)), - CONTROLLER_RAIL_BACKWARDS(AllBlocks.CONTROLLER_RAIL, blockState -> AllBlocks.CONTROLLER_RAIL.has(blockState) - && blockState.contains(ControllerRailBlock.BACKWARDS) && blockState.get(ControllerRailBlock.BACKWARDS)) - - ; - - private final Supplier railBlockSupplier; - private final Supplier railItemSupplier; - public final Predicate matches; - - CartAssembleRailType(Block block) { - this.railBlockSupplier = () -> block; - this.railItemSupplier = block::asItem; - this.matches = blockState -> blockState.getBlock() == getBlock(); - } - - CartAssembleRailType(BlockEntry block, Predicate matches) { - this.railBlockSupplier = block::get; - this.railItemSupplier = () -> block.get().asItem(); - this.matches = matches; - } - - public Block getBlock() { - return railBlockSupplier.get(); - } - - public Item getItem() { - return railItemSupplier.get(); - } - - @Override - public String getString() { - return Lang.asId(name()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java deleted file mode 100644 index 1245feb7e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlock.java +++ /dev/null @@ -1,379 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.mounted; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.ChestMinecartEntity; -import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootParameters; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.RailShape; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class CartAssemblerBlock extends AbstractRailBlock - implements ITE, IWrenchable, ISpecialBlockItemRequirement { - - public static final Property RAIL_SHAPE = - EnumProperty.create("shape", RailShape.class, RailShape.EAST_WEST, RailShape.NORTH_SOUTH); - public static final Property RAIL_TYPE = - EnumProperty.create("rail_type", CartAssembleRailType.class); - public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - - public CartAssemblerBlock(Properties properties) { - super(true, properties); - setDefaultState(getDefaultState().with(POWERED, false) - .with(RAIL_TYPE, CartAssembleRailType.POWERED_RAIL)); - } - - public static BlockState createAnchor(BlockState state) { - Axis axis = state.get(RAIL_SHAPE) == RailShape.NORTH_SOUTH ? Axis.Z : Axis.X; - return AllBlocks.MINECART_ANCHOR.getDefaultState() - .with(BlockStateProperties.HORIZONTAL_AXIS, axis); - } - - private static Item getRailItem(BlockState state) { - return state.get(RAIL_TYPE) - .getItem(); - } - - public static BlockState getRailBlock(BlockState state) { - AbstractRailBlock railBlock = (AbstractRailBlock) state.get(RAIL_TYPE) - .getBlock(); - BlockState railState = railBlock.getDefaultState() - .with(railBlock.getShapeProperty(), state.get(RAIL_SHAPE)); - if (railState.contains(ControllerRailBlock.BACKWARDS)) { - railState = railState.with(ControllerRailBlock.BACKWARDS, state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS); - } - return railState; - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(RAIL_SHAPE, POWERED, RAIL_TYPE); - super.fillStateContainer(builder); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.CART_ASSEMBLER.create(); - } - - @Override - public boolean canMakeSlopes(@Nonnull BlockState state, @Nonnull IBlockReader world, @Nonnull BlockPos pos) { - return false; - } - - @Override - public void onMinecartPass(@Nonnull BlockState state, @Nonnull World world, @Nonnull BlockPos pos, - AbstractMinecartEntity cart) { - if (!canAssembleTo(cart)) - return; - if (world.isRemote) - return; - - withTileEntityDo(world, pos, te -> te.assembleNextTick(cart)); - } - - public enum CartAssemblerAction { - ASSEMBLE, DISASSEMBLE, ASSEMBLE_ACCELERATE, DISASSEMBLE_BRAKE, ASSEMBLE_ACCELERATE_DIRECTIONAL, PASS; - - public boolean shouldAssemble() { - return this == ASSEMBLE || this == ASSEMBLE_ACCELERATE || this == ASSEMBLE_ACCELERATE_DIRECTIONAL; - } - - public boolean shouldDisassemble() { - return this == DISASSEMBLE || this == DISASSEMBLE_BRAKE; - } - } - - public static CartAssemblerAction getActionForCart(BlockState state, AbstractMinecartEntity cart) { - CartAssembleRailType type = state.get(RAIL_TYPE); - boolean powered = state.get(POWERED); - - if (type == CartAssembleRailType.REGULAR) - return powered ? CartAssemblerAction.ASSEMBLE : CartAssemblerAction.DISASSEMBLE; - - if (type == CartAssembleRailType.ACTIVATOR_RAIL) - return powered ? CartAssemblerAction.DISASSEMBLE : CartAssemblerAction.PASS; - - if (type == CartAssembleRailType.POWERED_RAIL) - return powered ? CartAssemblerAction.ASSEMBLE_ACCELERATE : CartAssemblerAction.DISASSEMBLE_BRAKE; - - if (type == CartAssembleRailType.DETECTOR_RAIL) - return cart.getPassengers() - .isEmpty() ? CartAssemblerAction.ASSEMBLE_ACCELERATE : CartAssemblerAction.DISASSEMBLE; - - if (type == CartAssembleRailType.CONTROLLER_RAIL || type == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS) - return powered ? CartAssemblerAction.ASSEMBLE_ACCELERATE_DIRECTIONAL - : CartAssemblerAction.DISASSEMBLE_BRAKE; - - return CartAssemblerAction.PASS; - } - - public static boolean canAssembleTo(AbstractMinecartEntity cart) { - return cart.canBeRidden() || cart instanceof FurnaceMinecartEntity || cart instanceof ChestMinecartEntity; - } - - @Override - @Nonnull - public ActionResultType onUse(@Nonnull BlockState state, @Nonnull World world, @Nonnull BlockPos pos, - PlayerEntity player, @Nonnull Hand hand, @Nonnull BlockRayTraceResult blockRayTraceResult) { - - ItemStack itemStack = player.getHeldItem(hand); - Item previousItem = getRailItem(state); - Item heldItem = itemStack.getItem(); - if (heldItem != previousItem) { - - CartAssembleRailType newType = null; - for (CartAssembleRailType type : CartAssembleRailType.values()) - if (heldItem == type.getItem()) - newType = type; - if (newType == null) - return ActionResultType.PASS; - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, 1, 1); - world.setBlockState(pos, state.with(RAIL_TYPE, newType)); - - if (!player.isCreative()) { - itemStack.shrink(1); - player.inventory.placeItemBackInInventory(world, new ItemStack(previousItem)); - } - return ActionResultType.SUCCESS; - } - - return ActionResultType.PASS; - } - - @Override - public void neighborChanged(@Nonnull BlockState state, @Nonnull World worldIn, @Nonnull BlockPos pos, - @Nonnull Block blockIn, @Nonnull BlockPos fromPos, boolean isMoving) { - if (worldIn.isRemote) - return; - - boolean previouslyPowered = state.get(POWERED); - if (previouslyPowered != worldIn.isBlockPowered(pos)) { - worldIn.setBlockState(pos, state.cycle(POWERED), 2); - } - - super.neighborChanged(state, worldIn, pos, blockIn, fromPos, isMoving); - } - - @Override - @Nonnull - public Property getShapeProperty() { - return RAIL_SHAPE; - } - - @Override - @Nonnull - public VoxelShape getShape(BlockState state, @Nonnull IBlockReader worldIn, @Nonnull BlockPos pos, - @Nonnull ISelectionContext context) { - return AllShapes.CART_ASSEMBLER.get(getRailAxis(state)); - } - - protected Axis getRailAxis(BlockState state) { - return state.get(RAIL_SHAPE) == RailShape.NORTH_SOUTH ? Direction.Axis.Z : Direction.Axis.X; - } - - @Override - @Nonnull - public VoxelShape getCollisionShape(@Nonnull BlockState state, @Nonnull IBlockReader worldIn, @Nonnull BlockPos pos, - ISelectionContext context) { - Entity entity = context.getEntity(); - if (entity instanceof AbstractMinecartEntity) - return VoxelShapes.empty(); - if (entity instanceof PlayerEntity) - return AllShapes.CART_ASSEMBLER_PLAYER_COLLISION.get(getRailAxis(state)); - return VoxelShapes.fullCube(); - } - - @Override - @Nonnull - public PushReaction getPushReaction(@Nonnull BlockState state) { - return PushReaction.BLOCK; - } - - @Override - public Class getTileEntityClass() { - return CartAssemblerTileEntity.class; - } - - @Override - public boolean isValidPosition(@Nonnull BlockState state, @Nonnull IWorldReader world, @Nonnull BlockPos pos) { - return false; - } - - @Override - @SuppressWarnings("deprecation") - @Nonnull - public List getDrops(@Nonnull BlockState state, - @Nonnull net.minecraft.loot.LootContext.Builder builder) { - List drops = super.getDrops(state, builder); - drops.addAll(getRailBlock(state).getDrops(builder)); - return drops; - } - - @Override - public ItemRequirement getRequiredItems(BlockState state, TileEntity te) { - ArrayList reuiredItems = new ArrayList<>(); - reuiredItems.add(new ItemStack(getRailItem(state))); - reuiredItems.add(new ItemStack(asItem())); - return new ItemRequirement(ItemUseType.CONSUME, reuiredItems); - } - - @SuppressWarnings("deprecation") - public List getDropedAssembler(BlockState state, ServerWorld world, BlockPos pos, - @Nullable TileEntity p_220077_3_, @Nullable Entity p_220077_4_, ItemStack p_220077_5_) { - return super.getDrops(state, (new LootContext.Builder(world)).withRandom(world.rand) - .withParameter(LootParameters.ORIGIN, Vector3d.of(pos)) - .withParameter(LootParameters.TOOL, p_220077_5_) - .withNullableParameter(LootParameters.THIS_ENTITY, p_220077_4_) - .withNullableParameter(LootParameters.BLOCK_ENTITY, p_220077_3_)); - } - - @Override - public ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - PlayerEntity player = context.getPlayer(); - if (world.isRemote) - return ActionResultType.SUCCESS; - - if (player != null && !player.isCreative()) - getDropedAssembler(state, (ServerWorld) world, pos, world.getTileEntity(pos), player, context.getItem()) - .forEach(itemStack -> { - player.inventory.placeItemBackInInventory(world, itemStack); - }); - if(world instanceof ServerWorld) - state.spawnAdditionalDrops((ServerWorld) world, pos, ItemStack.EMPTY); - world.setBlockState(pos, getRailBlock(state)); - return ActionResultType.SUCCESS; - } - - public static class MinecartAnchorBlock extends Block { - - public MinecartAnchorBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(BlockStateProperties.HORIZONTAL_AXIS); - super.fillStateContainer(builder); - } - - @Override - @Nonnull - public VoxelShape getShape(@Nonnull BlockState p_220053_1_, @Nonnull IBlockReader p_220053_2_, - @Nonnull BlockPos p_220053_3_, @Nonnull ISelectionContext p_220053_4_) { - return VoxelShapes.empty(); - } - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - if (world.isRemote) - return ActionResultType.SUCCESS; - BlockPos pos = context.getPos(); - world.setBlockState(pos, rotate(state, Rotation.CLOCKWISE_90), 3); - world.notifyNeighborsOfStateChange(pos.down(), this); - return ActionResultType.SUCCESS; - } - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { - if (rotation == Rotation.NONE) - return state; - - boolean is_controller_rail_backwards = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS; - boolean is_controller_rail = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL || is_controller_rail_backwards; - BlockState base = AllBlocks.CONTROLLER_RAIL.getDefaultState() - .with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE)) - .with(ControllerRailBlock.BACKWARDS, is_controller_rail_backwards) - .rotate(rotation); - if (is_controller_rail) { - state = state.with(RAIL_TYPE, - base.get(ControllerRailBlock.BACKWARDS) ? CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS : - CartAssembleRailType.CONTROLLER_RAIL - ); - } - return state.with(RAIL_SHAPE, base.get(ControllerRailBlock.SHAPE)); - } - - @Override - public BlockState mirror(BlockState state, Mirror mirror) { - if (mirror == Mirror.NONE) - return state; - - boolean is_controller_rail_backwards = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS; - boolean is_controller_rail = state.get(RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL || is_controller_rail_backwards; - BlockState base = AllBlocks.CONTROLLER_RAIL.getDefaultState() - .with(ControllerRailBlock.SHAPE, state.get(RAIL_SHAPE)) - .with(ControllerRailBlock.BACKWARDS, is_controller_rail_backwards) - .mirror(mirror); - if (is_controller_rail) { - state = state.with(RAIL_TYPE, - base.get(ControllerRailBlock.BACKWARDS) ? CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS : - CartAssembleRailType.CONTROLLER_RAIL - ); - } - return state.with(RAIL_SHAPE, base.get(ControllerRailBlock.SHAPE)); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java deleted file mode 100644 index 78c25232b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerBlockItem.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.mounted; - -import javax.annotation.Nonnull; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.properties.RailShape; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class CartAssemblerBlockItem extends BlockItem { - - public CartAssemblerBlockItem(Block block, Properties properties) { - super(block, properties); - } - - @Override - @Nonnull - public ActionResultType onItemUse(ItemUseContext context) { - if (tryPlaceAssembler(context)) { - context.getWorld().playSound(null, context.getPos(), SoundEvents.BLOCK_STONE_PLACE, SoundCategory.BLOCKS, 1, 1); - return ActionResultType.SUCCESS; - } - return super.onItemUse(context); - } - - public boolean tryPlaceAssembler(ItemUseContext context) { - BlockPos pos = context.getPos(); - World world = context.getWorld(); - BlockState state = world.getBlockState(pos); - Block block = state.getBlock(); - PlayerEntity player = context.getPlayer(); - - if (player == null) - return false; - if (!(block instanceof AbstractRailBlock)) { - Lang.sendStatus(player, "block.cart_assembler.invalid"); - return false; - } - - RailShape shape = state.get(((AbstractRailBlock) block).getShapeProperty()); - if (shape != RailShape.EAST_WEST && shape != RailShape.NORTH_SOUTH) - return false; - - BlockState newState = AllBlocks.CART_ASSEMBLER.getDefaultState() - .with(CartAssemblerBlock.RAIL_SHAPE, shape); - CartAssembleRailType newType = null; - for (CartAssembleRailType type : CartAssembleRailType.values()) - if (type.matches.test(state)) - newType = type; - if (newType == null) - return false; - if (world.isRemote) - return true; - - newState = newState.with(CartAssemblerBlock.RAIL_TYPE, newType); - world.setBlockState(pos, newState); - if (!player.isCreative()) - context.getItem().shrink(1); - return true; - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java deleted file mode 100644 index ef76efaaa..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java +++ /dev/null @@ -1,314 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.mounted; - -import java.util.List; -import java.util.Optional; -import java.util.UUID; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingHandler; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.content.contraptions.components.tracks.ControllerRailBlock; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.RailShape; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; - -public class CartAssemblerTileEntity extends SmartTileEntity implements IDisplayAssemblyExceptions { - private static final int assemblyCooldown = 8; - - protected ScrollOptionBehaviour movementMode; - private int ticksSinceMinecartUpdate; - protected AssemblyException lastException; - - protected AbstractMinecartEntity cartToAssemble; - - public CartAssemblerTileEntity(TileEntityType type) { - super(type); - ticksSinceMinecartUpdate = assemblyCooldown; - } - - @Override - public void tick() { - super.tick(); - if (ticksSinceMinecartUpdate < assemblyCooldown) { - ticksSinceMinecartUpdate++; - } - - tryAssemble(cartToAssemble); - cartToAssemble = null; - } - - public void tryAssemble(AbstractMinecartEntity cart) { - if (cart == null) - return; - - if (!isMinecartUpdateValid()) - return; - resetTicksSinceMinecartUpdate(); - - BlockState state = world.getBlockState(pos); - if (!AllBlocks.CART_ASSEMBLER.has(state)) - return; - CartAssemblerBlock block = (CartAssemblerBlock) state.getBlock(); - - CartAssemblerBlock.CartAssemblerAction action = CartAssemblerBlock.getActionForCart(state, cart); - if (action.shouldAssemble()) - assemble(world, pos, cart); - if (action.shouldDisassemble()) - disassemble(world, pos, cart); - if (action == CartAssemblerBlock.CartAssemblerAction.ASSEMBLE_ACCELERATE) { - Direction facing = cart.getAdjustedHorizontalFacing(); - - RailShape railShape = state.get(CartAssemblerBlock.RAIL_SHAPE); - for (Direction d : Iterate.directionsInAxis(railShape == RailShape.EAST_WEST ? Axis.X : Axis.Z)) - if (world.getBlockState(pos.offset(d)) - .isNormalCube(world, pos.offset(d))) - facing = d.getOpposite(); - - float speed = block.getRailMaxSpeed(state, world, pos, cart); - cart.setMotion(facing.getXOffset() * speed, facing.getYOffset() * speed, facing.getZOffset() * speed); - } - if (action == CartAssemblerBlock.CartAssemblerAction.ASSEMBLE_ACCELERATE_DIRECTIONAL) { - Vector3i accelerationVector = ControllerRailBlock.getAccelerationVector( - AllBlocks.CONTROLLER_RAIL.getDefaultState() - .with(ControllerRailBlock.SHAPE, state.get(CartAssemblerBlock.RAIL_SHAPE)) - .with(ControllerRailBlock.BACKWARDS, state.get(CartAssemblerBlock.RAIL_TYPE) == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS)); - float speed = block.getRailMaxSpeed(state, world, pos, cart); - cart.setMotion(Vector3d.of(accelerationVector).scale(speed)); - } - if (action == CartAssemblerBlock.CartAssemblerAction.DISASSEMBLE_BRAKE) { - Vector3d diff = VecHelper.getCenterOf(pos) - .subtract(cart.getPositionVec()); - cart.setMotion(diff.x / 16f, 0, diff.z / 16f); - } - } - - protected void assemble(World world, BlockPos pos, AbstractMinecartEntity cart) { - if (!cart.getPassengers() - .isEmpty()) - return; - - LazyOptional optional = - cart.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); - if (optional.isPresent() && optional.orElse(null) - .isCoupledThroughContraption()) - return; - - CartMovementMode mode = CartMovementMode.values()[movementMode.value]; - - MountedContraption contraption = new MountedContraption(mode); - try { - if (!contraption.assemble(world, pos)) - return; - - lastException = null; - sendData(); - } catch (AssemblyException e) { - lastException = e; - sendData(); - return; - } - - boolean couplingFound = contraption.connectedCart != null; - Optional initialOrientation = cart.getMotion() - .length() < 1 / 512f ? Optional.empty() : Optional.of(cart.getAdjustedHorizontalFacing()); - - if (couplingFound) { - cart.setPosition(pos.getX() + .5f, pos.getY(), pos.getZ() + .5f); - if (!CouplingHandler.tryToCoupleCarts(null, world, cart.getEntityId(), - contraption.connectedCart.getEntityId())) - return; - } - - contraption.removeBlocksFromWorld(world, BlockPos.ZERO); - contraption.startMoving(world); - contraption.expandBoundsAroundAxis(Axis.Y); - - if (couplingFound) { - Vector3d diff = contraption.connectedCart.getPositionVec() - .subtract(cart.getPositionVec()); - initialOrientation = Optional.of(Direction.fromAngle(MathHelper.atan2(diff.z, diff.x) * 180 / Math.PI)); - } - - OrientedContraptionEntity entity = OrientedContraptionEntity.create(world, contraption, initialOrientation); - if (couplingFound) - entity.setCouplingId(cart.getUniqueID()); - entity.setPosition(pos.getX(), pos.getY(), pos.getZ()); - world.addEntity(entity); - entity.startRiding(cart); - - if (cart instanceof FurnaceMinecartEntity) { - CompoundNBT nbt = cart.serializeNBT(); - nbt.putDouble("PushZ", 0); - nbt.putDouble("PushX", 0); - cart.deserializeNBT(nbt); - } - } - - protected void disassemble(World world, BlockPos pos, AbstractMinecartEntity cart) { - if (cart.getPassengers() - .isEmpty()) - return; - Entity entity = cart.getPassengers() - .get(0); - if (!(entity instanceof OrientedContraptionEntity)) - return; - OrientedContraptionEntity contraption = (OrientedContraptionEntity) entity; - UUID couplingId = contraption.getCouplingId(); - - if (couplingId == null) { - disassembleCart(cart); - return; - } - - Couple coupledCarts = contraption.getCoupledCartsIfPresent(); - if (coupledCarts == null) - return; - - // Make sure connected cart is present and being disassembled - for (boolean current : Iterate.trueAndFalse) { - MinecartController minecartController = coupledCarts.get(current); - if (minecartController.cart() == cart) - continue; - BlockPos otherPos = minecartController.cart() - .getBlockPos(); - BlockState blockState = world.getBlockState(otherPos); - if (!AllBlocks.CART_ASSEMBLER.has(blockState)) - return; - if (!CartAssemblerBlock.getActionForCart(blockState, minecartController.cart()).shouldDisassemble()) - return; - } - - for (boolean current : Iterate.trueAndFalse) - coupledCarts.get(current) - .removeConnection(current); - disassembleCart(cart); - } - - protected void disassembleCart(AbstractMinecartEntity cart) { - cart.removePassengers(); - if (cart instanceof FurnaceMinecartEntity) { - CompoundNBT nbt = cart.serializeNBT(); - nbt.putDouble("PushZ", cart.getMotion().x); - nbt.putDouble("PushX", cart.getMotion().z); - cart.deserializeNBT(nbt); - } - } - - @Override - public void addBehaviours(List behaviours) { - movementMode = new ScrollOptionBehaviour<>(CartMovementMode.class, - Lang.translate("contraptions.cart_movement_mode"), this, getMovementModeSlot()); - movementMode.requiresWrench(); - behaviours.add(movementMode); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - AssemblyException.write(compound, lastException); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); - } - - @Override - public AssemblyException getLastAssemblyException() { - return lastException; - } - - protected ValueBoxTransform getMovementModeSlot() { - return new CartAssemblerValueBoxTransform(); - } - - private class CartAssemblerValueBoxTransform extends CenteredSideValueBoxTransform { - - public CartAssemblerValueBoxTransform() { - super((state, d) -> { - if (d.getAxis() - .isVertical()) - return false; - if (!state.contains(CartAssemblerBlock.RAIL_SHAPE)) - return false; - RailShape railShape = state.get(CartAssemblerBlock.RAIL_SHAPE); - return (d.getAxis() == Axis.X) == (railShape == RailShape.NORTH_SOUTH); - }); - } - - @Override - protected Vector3d getSouthLocation() { - return VecHelper.voxelSpace(8, 8, 18); - } - - } - - public enum CartMovementMode implements INamedIconOptions { - - ROTATE(AllIcons.I_CART_ROTATE), - ROTATE_PAUSED(AllIcons.I_CART_ROTATE_PAUSED), - ROTATION_LOCKED(AllIcons.I_CART_ROTATE_LOCKED), - - ; - - private String translationKey; - private AllIcons icon; - - CartMovementMode(AllIcons icon) { - this.icon = icon; - translationKey = "contraptions.cart_movement_mode." + Lang.asId(name()); - } - - @Override - public AllIcons getIcon() { - return icon; - } - - @Override - public String getTranslationKey() { - return translationKey; - } - } - - public void resetTicksSinceMinecartUpdate() { - ticksSinceMinecartUpdate = 0; - } - - public void assembleNextTick(AbstractMinecartEntity cart) { - if (cartToAssemble == null) - cartToAssemble = cart; - } - - public boolean isMinecartUpdateValid() { - return ticksSinceMinecartUpdate >= assemblyCooldown; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/ItemHandlerModifiableFromIInventory.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/ItemHandlerModifiableFromIInventory.java deleted file mode 100644 index 3dd313411..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/ItemHandlerModifiableFromIInventory.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.mounted; - -import javax.annotation.Nonnull; -import javax.annotation.ParametersAreNonnullByDefault; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemHandlerHelper; - - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class ItemHandlerModifiableFromIInventory implements IItemHandlerModifiable { - private final IInventory inventory; - - public ItemHandlerModifiableFromIInventory(IInventory inventory) { - this.inventory = inventory; - } - - @Override - public void setStackInSlot(int slot, ItemStack stack) { - inventory.setInventorySlotContents(slot, stack); - } - - @Override - public int getSlots() { - return inventory.getSizeInventory(); - } - - @Override - public ItemStack getStackInSlot(int slot) { - return inventory.getStackInSlot(slot); - } - - @Override - @Nonnull - public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) - { - if (stack.isEmpty()) - return ItemStack.EMPTY; - - if (!isItemValid(slot, stack)) - return stack; - - validateSlotIndex(slot); - - ItemStack existing = getStackInSlot(slot); - - int limit = getStackLimit(slot, stack); - - if (!existing.isEmpty()) - { - if (!ItemHandlerHelper.canItemStacksStack(stack, existing)) - return stack; - - limit -= existing.getCount(); - } - - if (limit <= 0) - return stack; - - boolean reachedLimit = stack.getCount() > limit; - - if (!simulate) - { - if (existing.isEmpty()) - { - setStackInSlot(slot, reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, limit) : stack); - } - else - { - existing.grow(reachedLimit ? limit : stack.getCount()); - } - } - - return reachedLimit ? ItemHandlerHelper.copyStackWithSize(stack, stack.getCount()- limit) : ItemStack.EMPTY; - } - - @Override - @Nonnull - public ItemStack extractItem(int slot, int amount, boolean simulate) - { - if (amount == 0) - return ItemStack.EMPTY; - - validateSlotIndex(slot); - - ItemStack existing = getStackInSlot(slot); - - if (existing.isEmpty()) - return ItemStack.EMPTY; - - int toExtract = Math.min(amount, existing.getMaxStackSize()); - - if (existing.getCount() <= toExtract) - { - if (!simulate) - { - setStackInSlot(slot, ItemStack.EMPTY); - return existing; - } - else - { - return existing.copy(); - } - } - else - { - if (!simulate) - { - setStackInSlot(slot, ItemHandlerHelper.copyStackWithSize(existing, existing.getCount() - toExtract)); - } - - return ItemHandlerHelper.copyStackWithSize(existing, toExtract); - } - } - - @Override - public int getSlotLimit(int slot) { - return inventory.getInventoryStackLimit(); - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - return inventory.isItemValidForSlot(slot, stack); - } - - private void validateSlotIndex(int slot) - { - if (slot < 0 || slot >= getSlots()) - throw new RuntimeException("Slot " + slot + " not in valid range - [0," + getSlots() + ")"); - } - - private int getStackLimit(int slot, ItemStack stack) - { - return Math.min(getSlotLimit(slot), stack.getMaxStackSize()); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java deleted file mode 100644 index 522163f37..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MinecartContraptionItem.java +++ /dev/null @@ -1,284 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.mounted; - -import java.io.IOException; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Nullable; - -import com.google.common.io.ByteArrayDataOutput; -import com.google.common.io.ByteStreams; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.BlockState; -import net.minecraft.block.DispenserBlock; -import net.minecraft.block.material.Material; -import net.minecraft.dispenser.DefaultDispenseItemBehavior; -import net.minecraft.dispenser.IBlockSource; -import net.minecraft.dispenser.IDispenseItemBehavior; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity.Type; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.state.properties.RailShape; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class MinecartContraptionItem extends Item { - - private final AbstractMinecartEntity.Type minecartType; - - public static MinecartContraptionItem rideable(Properties builder) { - return new MinecartContraptionItem(Type.RIDEABLE, builder); - } - - public static MinecartContraptionItem furnace(Properties builder) { - return new MinecartContraptionItem(Type.FURNACE, builder); - } - - public static MinecartContraptionItem chest(Properties builder) { - return new MinecartContraptionItem(Type.CHEST, builder); - } - - private MinecartContraptionItem(Type minecartTypeIn, Properties builder) { - super(builder); - this.minecartType = minecartTypeIn; - DispenserBlock.registerDispenseBehavior(this, DISPENSER_BEHAVIOR); - } - - // Taken and adjusted from MinecartItem - private static final IDispenseItemBehavior DISPENSER_BEHAVIOR = new DefaultDispenseItemBehavior() { - private final DefaultDispenseItemBehavior behaviourDefaultDispenseItem = new DefaultDispenseItemBehavior(); - - @Override - public ItemStack dispenseStack(IBlockSource source, ItemStack stack) { - Direction direction = source.getBlockState() - .get(DispenserBlock.FACING); - World world = source.getWorld(); - double d0 = source.getX() + (double) direction.getXOffset() * 1.125D; - double d1 = Math.floor(source.getY()) + (double) direction.getYOffset(); - double d2 = source.getZ() + (double) direction.getZOffset() * 1.125D; - BlockPos blockpos = source.getBlockPos() - .offset(direction); - BlockState blockstate = world.getBlockState(blockpos); - RailShape railshape = blockstate.getBlock() instanceof AbstractRailBlock - ? ((AbstractRailBlock) blockstate.getBlock()).getRailDirection(blockstate, world, blockpos, null) - : RailShape.NORTH_SOUTH; - double d3; - if (blockstate.isIn(BlockTags.RAILS)) { - if (railshape.isAscending()) { - d3 = 0.6D; - } else { - d3 = 0.1D; - } - } else { - if (blockstate.getMaterial() != Material.AIR || !world.getBlockState(blockpos.down()) - .isIn(BlockTags.RAILS)) { - return this.behaviourDefaultDispenseItem.dispense(source, stack); - } - - BlockState blockstate1 = world.getBlockState(blockpos.down()); - RailShape railshape1 = blockstate1.getBlock() instanceof AbstractRailBlock - ? ((AbstractRailBlock) blockstate1.getBlock()).getRailDirection(blockstate1, world, blockpos.down(), - null) - : RailShape.NORTH_SOUTH; - if (direction != Direction.DOWN && railshape1.isAscending()) { - d3 = -0.4D; - } else { - d3 = -0.9D; - } - } - - AbstractMinecartEntity abstractminecartentity = AbstractMinecartEntity.create(world, d0, d1 + d3, d2, - ((MinecartContraptionItem) stack.getItem()).minecartType); - if (stack.hasDisplayName()) - abstractminecartentity.setCustomName(stack.getDisplayName()); - world.addEntity(abstractminecartentity); - addContraptionToMinecart(world, stack, abstractminecartentity, direction); - - stack.shrink(1); - return stack; - } - - @Override - protected void playDispenseSound(IBlockSource source) { - source.getWorld() - .playEvent(1000, source.getBlockPos(), 0); - } - }; - - // Taken and adjusted from MinecartItem - @Override - public ActionResultType onItemUse(ItemUseContext context) { - World world = context.getWorld(); - BlockPos blockpos = context.getPos(); - BlockState blockstate = world.getBlockState(blockpos); - if (!blockstate.isIn(BlockTags.RAILS)) { - return ActionResultType.FAIL; - } else { - ItemStack itemstack = context.getItem(); - if (!world.isRemote) { - RailShape railshape = blockstate.getBlock() instanceof AbstractRailBlock - ? ((AbstractRailBlock) blockstate.getBlock()).getRailDirection(blockstate, world, blockpos, null) - : RailShape.NORTH_SOUTH; - double d0 = 0.0D; - if (railshape.isAscending()) { - d0 = 0.5D; - } - - AbstractMinecartEntity abstractminecartentity = - AbstractMinecartEntity.create(world, (double) blockpos.getX() + 0.5D, - (double) blockpos.getY() + 0.0625D + d0, (double) blockpos.getZ() + 0.5D, this.minecartType); - if (itemstack.hasDisplayName()) - abstractminecartentity.setCustomName(itemstack.getDisplayName()); - PlayerEntity player = context.getPlayer(); - world.addEntity(abstractminecartentity); - addContraptionToMinecart(world, itemstack, abstractminecartentity, - player == null ? null : player.getHorizontalFacing()); - } - - itemstack.shrink(1); - return ActionResultType.SUCCESS; - } - } - - public static void addContraptionToMinecart(World world, ItemStack itemstack, AbstractMinecartEntity cart, - @Nullable Direction newFacing) { - CompoundNBT tag = itemstack.getOrCreateTag(); - if (tag.contains("Contraption")) { - CompoundNBT contraptionTag = tag.getCompound("Contraption"); - - Optional intialOrientation = Optional.empty(); - if (contraptionTag.contains("InitialOrientation")) - intialOrientation = - Optional.of(NBTHelper.readEnum(contraptionTag, "InitialOrientation", Direction.class)); - - Contraption mountedContraption = Contraption.fromNBT(world, contraptionTag, false); - OrientedContraptionEntity contraptionEntity = - newFacing == null ? OrientedContraptionEntity.create(world, mountedContraption, intialOrientation) - : OrientedContraptionEntity.createAtYaw(world, mountedContraption, intialOrientation, - newFacing.getHorizontalAngle()); - - contraptionEntity.startRiding(cart); - contraptionEntity.setPosition(cart.getX(), cart.getY(), cart.getZ()); - world.addEntity(contraptionEntity); - } - } - - @Override - public String getTranslationKey(ItemStack stack) { - return "item.create.minecart_contraption"; - } - - @Override - public void fillItemGroup(ItemGroup group, NonNullList items) {} - - @SubscribeEvent - public static void wrenchCanBeUsedToPickUpMinecartContraptions(PlayerInteractEvent.EntityInteract event) { - Entity entity = event.getTarget(); - PlayerEntity player = event.getPlayer(); - if (player == null || entity == null) - return; - - ItemStack wrench = player.getHeldItem(event.getHand()); - if (!AllItems.WRENCH.isIn(wrench)) - return; - if (entity instanceof AbstractContraptionEntity) - entity = entity.getRidingEntity(); - if (!(entity instanceof AbstractMinecartEntity)) - return; - AbstractMinecartEntity cart = (AbstractMinecartEntity) entity; - Type type = cart.getMinecartType(); - if (type != Type.RIDEABLE && type != Type.FURNACE && type != Type.CHEST) - return; - List passengers = cart.getPassengers(); - if (passengers.isEmpty() || !(passengers.get(0) instanceof OrientedContraptionEntity)) - return; - OrientedContraptionEntity contraption = (OrientedContraptionEntity) passengers.get(0); - - if (event.getWorld().isRemote) { - event.setCancellationResult(ActionResultType.SUCCESS); - event.setCanceled(true); - return; - } - - ItemStack generatedStack = create(type, contraption).setDisplayName(entity.getCustomName()); - - try { - ByteArrayDataOutput dataOutput = ByteStreams.newDataOutput(); - CompressedStreamTools.write(generatedStack.serializeNBT(), dataOutput); - int estimatedPacketSize = dataOutput.toByteArray().length; - if (estimatedPacketSize > 2_000_000) { - player.sendStatusMessage(Lang.translate("contraption.minecart_contraption_too_big") - .formatted(TextFormatting.RED), true); - return; - } - - } catch (IOException e) { - e.printStackTrace(); - return; - } - - player.inventory.placeItemBackInInventory(event.getWorld(), generatedStack); - contraption.remove(); - entity.remove(); - event.setCancellationResult(ActionResultType.SUCCESS); - event.setCanceled(true); - } - - public static ItemStack create(Type type, OrientedContraptionEntity entity) { - ItemStack stack = ItemStack.EMPTY; - - switch (type) { - case RIDEABLE: - stack = AllItems.MINECART_CONTRAPTION.asStack(); - break; - case FURNACE: - stack = AllItems.FURNACE_MINECART_CONTRAPTION.asStack(); - break; - case CHEST: - stack = AllItems.CHEST_MINECART_CONTRAPTION.asStack(); - break; - default: - break; - } - - if (stack.isEmpty()) - return stack; - - CompoundNBT tag = entity.getContraption() - .writeNBT(false); - tag.remove("UUID"); - tag.remove("Pos"); - tag.remove("Motion"); - - if (entity.isInitialOrientationPresent()) - NBTHelper.writeEnum(tag, "InitialOrientation", entity.getInitialOrientation()); - - stack.getOrCreateTag() - .put("Contraption", tag); - return stack; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MountedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MountedContraption.java deleted file mode 100644 index fae052d36..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/MountedContraption.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.mounted; - -import static com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock.RAIL_SHAPE; - -import java.util.Queue; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; -import com.simibubi.create.content.contraptions.components.structureMovement.NonStationaryLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerTileEntity.CartMovementMode; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.inventory.IInventory; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.RailShape; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.wrapper.CombinedInvWrapper; -import net.minecraftforge.items.wrapper.InvWrapper; - -public class MountedContraption extends Contraption { - - public CartMovementMode rotationMode; - public AbstractMinecartEntity connectedCart; - - public MountedContraption() { - this(CartMovementMode.ROTATE); - } - - public MountedContraption(CartMovementMode mode) { - rotationMode = mode; - } - - @Override - protected ContraptionType getType() { - return ContraptionType.MOUNTED; - } - - @Override - public boolean assemble(World world, BlockPos pos) throws AssemblyException { - BlockState state = world.getBlockState(pos); - if (!state.contains(RAIL_SHAPE)) - return false; - if (!searchMovedStructure(world, pos, null)) - return false; - - Axis axis = state.get(RAIL_SHAPE) == RailShape.EAST_WEST ? Axis.X : Axis.Z; - addBlock(pos, Pair.of(new BlockInfo(pos, AllBlocks.MINECART_ANCHOR.getDefaultState() - .with(BlockStateProperties.HORIZONTAL_AXIS, axis), null), null)); - - if (blocks.size() == 1) - return false; - - return true; - } - - @Override - protected boolean addToInitialFrontier(World world, BlockPos pos, Direction direction, Queue frontier) { - frontier.clear(); - frontier.add(pos.up()); - return true; - } - - @Override - protected Pair capture(World world, BlockPos pos) { - Pair pair = super.capture(world, pos); - BlockInfo capture = pair.getKey(); - if (!AllBlocks.CART_ASSEMBLER.has(capture.state)) - return pair; - - Pair anchorSwap = - Pair.of(new BlockInfo(pos, CartAssemblerBlock.createAnchor(capture.state), null), pair.getValue()); - if (pos.equals(anchor) || connectedCart != null) - return anchorSwap; - - for (Axis axis : Iterate.axes) { - if (axis.isVertical() || !VecHelper.onSameAxis(anchor, pos, axis)) - continue; - for (AbstractMinecartEntity abstractMinecartEntity : world - .getEntitiesWithinAABB(AbstractMinecartEntity.class, new AxisAlignedBB(pos))) { - if (!CartAssemblerBlock.canAssembleTo(abstractMinecartEntity)) - break; - connectedCart = abstractMinecartEntity; - connectedCart.setPosition(pos.getX() + .5, pos.getY(), pos.getZ() + .5f); - } - } - - return anchorSwap; - } - - @Override - protected boolean movementAllowed(BlockState state, World world, BlockPos pos) { - if (!pos.equals(anchor) && AllBlocks.CART_ASSEMBLER.has(state)) - return testSecondaryCartAssembler(world, state, pos); - return super.movementAllowed(state, world, pos); - } - - protected boolean testSecondaryCartAssembler(World world, BlockState state, BlockPos pos) { - for (Axis axis : Iterate.axes) { - if (axis.isVertical() || !VecHelper.onSameAxis(anchor, pos, axis)) - continue; - for (AbstractMinecartEntity abstractMinecartEntity : world - .getEntitiesWithinAABB(AbstractMinecartEntity.class, new AxisAlignedBB(pos))) { - if (!CartAssemblerBlock.canAssembleTo(abstractMinecartEntity)) - break; - return true; - } - } - return false; - } - - @Override - public CompoundNBT writeNBT(boolean spawnPacket) { - CompoundNBT tag = super.writeNBT(spawnPacket); - NBTHelper.writeEnum(tag, "RotationMode", rotationMode); - return tag; - } - - @Override - public void readNBT(World world, CompoundNBT nbt, boolean spawnData) { - rotationMode = NBTHelper.readEnum(nbt, "RotationMode", CartMovementMode.class); - super.readNBT(world, nbt, spawnData); - } - - @Override - protected boolean customBlockPlacement(IWorld world, BlockPos pos, BlockState state) { - return AllBlocks.MINECART_ANCHOR.has(state); - } - - @Override - protected boolean customBlockRemoval(IWorld world, BlockPos pos, BlockState state) { - return AllBlocks.MINECART_ANCHOR.has(state); - } - - @Override - public boolean canBeStabilized(Direction facing, BlockPos localPos) { - return true; - } - - @Override - public void addExtraInventories(Entity cart) { - if (!(cart instanceof IInventory)) - return; - IItemHandlerModifiable handlerFromInv = new ContraptionInvWrapper(true, new InvWrapper((IInventory) cart)); - inventory = new ContraptionInvWrapper(handlerFromInv, inventory); - } - - @Override - public ContraptionLighter makeLighter() { - return new NonStationaryLighter<>(this); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java deleted file mode 100644 index 35dfac048..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/LinearActuatorTileEntity.java +++ /dev/null @@ -1,319 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import java.util.List; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.IControlContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.ServerSpeedProvider; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public abstract class LinearActuatorTileEntity extends KineticTileEntity - implements IControlContraption, IDisplayAssemblyExceptions { - - public float offset; - public boolean running; - public boolean assembleNextTick; - public AbstractContraptionEntity movedContraption; - protected boolean forceMove; - protected ScrollOptionBehaviour movementMode; - protected boolean waitingForSpeedChange; - protected AssemblyException lastException; - - // Custom position sync - protected float clientOffsetDiff; - - public LinearActuatorTileEntity(TileEntityType typeIn) { - super(typeIn); - setLazyTickRate(3); - forceMove = true; - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - movementMode = new ScrollOptionBehaviour<>(MovementMode.class, Lang.translate("contraptions.movement_mode"), - this, getMovementModeSlot()); - movementMode.requiresWrench(); - movementMode.withCallback(t -> waitingForSpeedChange = false); - behaviours.add(movementMode); - } - - @Override - public void tick() { - super.tick(); - - if (movedContraption != null) { - if (!movedContraption.isAlive()) - movedContraption = null; - } - - if (world.isRemote) - clientOffsetDiff *= .75f; - - if (waitingForSpeedChange && movedContraption != null) { - if (world.isRemote) { - float syncSpeed = clientOffsetDiff / 2f; - offset += syncSpeed; - movedContraption.setContraptionMotion(toMotionVector(syncSpeed)); - return; - } - movedContraption.setContraptionMotion(Vector3d.ZERO); - return; - } - - if (!world.isRemote && assembleNextTick) { - assembleNextTick = false; - if (running) { - if (getSpeed() == 0) - tryDisassemble(); - else - sendData(); - return; - } else { - if (getSpeed() != 0) - try { - assemble(); - lastException = null; - } catch (AssemblyException e) { - lastException = e; - } - sendData(); - } - return; - } - - if (!running) - return; - - boolean contraptionPresent = movedContraption != null; - float movementSpeed = getMovementSpeed(); - float newOffset = offset + movementSpeed; - if ((int) newOffset != (int) offset) - visitNewPosition(); - - if (!contraptionPresent || !movedContraption.isStalled()) - offset = newOffset; - - if (contraptionPresent) - applyContraptionMotion(); - - int extensionRange = getExtensionRange(); - if (offset <= 0 || offset >= extensionRange) { - offset = offset <= 0 ? 0 : extensionRange; - if (!world.isRemote) { - applyContraptionMotion(); - applyContraptionPosition(); - tryDisassemble(); - if (waitingForSpeedChange) { - forceMove = true; - sendData(); - } - } - return; - } - } - - @Override - public void lazyTick() { - super.lazyTick(); - if (movedContraption != null && !world.isRemote) - sendData(); - } - - protected int getGridOffset(float offset) { - return MathHelper.clamp((int) (offset + .5f), 0, getExtensionRange()); - } - - public float getInterpolatedOffset(float partialTicks) { - float interpolatedOffset = - MathHelper.clamp(offset + (partialTicks - .5f) * getMovementSpeed(), 0, getExtensionRange()); - return interpolatedOffset; - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - assembleNextTick = true; - waitingForSpeedChange = false; - - if (movedContraption != null && Math.signum(prevSpeed) != Math.signum(getSpeed()) && prevSpeed != 0) { - movedContraption.getContraption() - .stop(world); - } - } - - @Override - public void remove() { - this.removed = true; - if (!world.isRemote) - disassemble(); - super.remove(); - } - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - compound.putBoolean("Running", running); - compound.putBoolean("Waiting", waitingForSpeedChange); - compound.putFloat("Offset", offset); - AssemblyException.write(compound, lastException); - super.write(compound, clientPacket); - - if (clientPacket && forceMove) { - compound.putBoolean("ForceMovement", forceMove); - forceMove = false; - } - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - boolean forceMovement = compound.contains("ForceMovement"); - float offsetBefore = offset; - - running = compound.getBoolean("Running"); - waitingForSpeedChange = compound.getBoolean("Waiting"); - offset = compound.getFloat("Offset"); - lastException = AssemblyException.read(compound); - super.fromTag(state, compound, clientPacket); - - if (!clientPacket) - return; - if (forceMovement) - applyContraptionPosition(); - else if (running) { - clientOffsetDiff = offset - offsetBefore; - offset = offsetBefore; - } - if (!running) - movedContraption = null; - } - - @Override - public AssemblyException getLastAssemblyException() { - return lastException; - } - - public abstract void disassemble(); - - protected abstract void assemble() throws AssemblyException; - - protected abstract int getExtensionRange(); - - protected abstract int getInitialOffset(); - - protected abstract ValueBoxTransform getMovementModeSlot(); - - protected abstract Vector3d toMotionVector(float speed); - - protected abstract Vector3d toPosition(float offset); - - protected void visitNewPosition() {} - - protected void tryDisassemble() { - if (removed) { - disassemble(); - return; - } - if (movementMode.get() == MovementMode.MOVE_NEVER_PLACE) { - waitingForSpeedChange = true; - return; - } - int initial = getInitialOffset(); - if ((int) (offset + .5f) != initial && movementMode.get() == MovementMode.MOVE_PLACE_RETURNED) { - waitingForSpeedChange = true; - return; - } - disassemble(); - } - - @Override - public void collided() { - if (world.isRemote) { - waitingForSpeedChange = true; - return; - } - offset = getGridOffset(offset - getMovementSpeed()); - applyContraptionPosition(); - tryDisassemble(); - } - - protected void applyContraptionMotion() { - if (movedContraption == null) - return; - if (movedContraption.isStalled()) { - movedContraption.setContraptionMotion(Vector3d.ZERO); - return; - } - movedContraption.setContraptionMotion(getMotionVector()); - } - - protected void applyContraptionPosition() { - if (movedContraption == null) - return; - Vector3d vec = toPosition(offset); - movedContraption.setPosition(vec.x, vec.y, vec.z); - if (getSpeed() == 0 || waitingForSpeedChange) - movedContraption.setContraptionMotion(Vector3d.ZERO); - } - - public float getMovementSpeed() { - float movementSpeed = MathHelper.clamp(convertToLinear(getSpeed()), -.49f, .49f) + clientOffsetDiff / 2f; - if (world.isRemote) - movementSpeed *= ServerSpeedProvider.get(); - return movementSpeed; - } - - public Vector3d getMotionVector() { - return toMotionVector(getMovementSpeed()); - } - - @Override - public void onStall() { - if (!world.isRemote) { - forceMove = true; - sendData(); - } - } - - public void onLengthBroken() { - offset = 0; - sendData(); - } - - @Override - public boolean isValid() { - return !isRemoved(); - } - - @Override - public void attach(ControlledContraptionEntity contraption) { - this.movedContraption = contraption; - if (!world.isRemote) { - this.running = true; - sendData(); - } - } - - @Override - public boolean isAttachedTo(AbstractContraptionEntity contraption) { - return movedContraption == contraption; - } - - @Override - public BlockPos getBlockPosition() { - return pos; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonBlock.java deleted file mode 100644 index 98efed20f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonBlock.java +++ /dev/null @@ -1,234 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import java.util.Random; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemUseContext; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.common.Tags; - -public class MechanicalPistonBlock extends DirectionalAxisKineticBlock implements ITE { - - public static final EnumProperty STATE = EnumProperty.create("state", PistonState.class); - protected boolean isSticky; - - public static MechanicalPistonBlock normal(Properties properties) { - return new MechanicalPistonBlock(properties, false); - } - - public static MechanicalPistonBlock sticky(Properties properties) { - return new MechanicalPistonBlock(properties, true); - } - - protected MechanicalPistonBlock(Properties properties, boolean sticky) { - super(properties); - setDefaultState(getDefaultState().with(FACING, Direction.NORTH) - .with(STATE, PistonState.RETRACTED)); - isSticky = sticky; - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(STATE); - super.fillStateContainer(builder); - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.isAllowEdit()) - return ActionResultType.PASS; - if (player.isSneaking()) - return ActionResultType.PASS; - if (!player.getHeldItem(handIn) - .getItem() - .isIn(Tags.Items.SLIMEBALLS)) { - if (player.getHeldItem(handIn) - .isEmpty()) { - withTileEntityDo(worldIn, pos, te -> te.assembleNextTick = true); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - if (state.get(STATE) != PistonState.RETRACTED) - return ActionResultType.PASS; - Direction direction = state.get(FACING); - if (hit.getFace() != direction) - return ActionResultType.PASS; - if (((MechanicalPistonBlock) state.getBlock()).isSticky) - return ActionResultType.PASS; - if (worldIn.isRemote) { - Vector3d vec = hit.getHitVec(); - worldIn.addParticle(ParticleTypes.ITEM_SLIME, vec.x, vec.y, vec.z, 0, 0, 0); - return ActionResultType.SUCCESS; - } - AllSoundEvents.SLIME_ADDED.playOnServer(worldIn, pos, .5f, 1); - if (!player.isCreative()) - player.getHeldItem(handIn) - .shrink(1); - worldIn.setBlockState(pos, AllBlocks.STICKY_MECHANICAL_PISTON.getDefaultState() - .with(FACING, direction) - .with(AXIS_ALONG_FIRST_COORDINATE, state.get(AXIS_ALONG_FIRST_COORDINATE))); - return ActionResultType.SUCCESS; - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, BlockPos fromPos, - boolean p_220069_6_) { - Direction direction = state.get(FACING); - if (!fromPos.equals(pos.offset(direction.getOpposite()))) - return; - if (!world.isRemote && !world.getPendingBlockTicks() - .isTickPending(pos, this)) - world.getPendingBlockTicks() - .scheduleTick(pos, this, 0); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld worldIn, BlockPos pos, Random r) { - Direction direction = state.get(FACING); - BlockState pole = worldIn.getBlockState(pos.offset(direction.getOpposite())); - if (!AllBlocks.PISTON_EXTENSION_POLE.has(pole)) - return; - if (pole.get(PistonExtensionPoleBlock.FACING) - .getAxis() != direction.getAxis()) - return; - withTileEntityDo(worldIn, pos, te -> { - if (te.lastException == null) - return; - te.lastException = null; - te.sendData(); - }); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MECHANICAL_PISTON.create(); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (state.get(STATE) != PistonState.RETRACTED) - return ActionResultType.PASS; - return super.onWrenched(state, context); - } - - public enum PistonState implements IStringSerializable { - RETRACTED, MOVING, EXTENDED; - - @Override - public String getString() { - return Lang.asId(name()); - } - } - - @Override - public void onBlockHarvested(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { - Direction direction = state.get(FACING); - BlockPos pistonHead = null; - BlockPos pistonBase = pos; - boolean dropBlocks = player == null || !player.isCreative(); - - Integer maxPoles = maxAllowedPistonPoles(); - for (int offset = 1; offset < maxPoles; offset++) { - BlockPos currentPos = pos.offset(direction, offset); - BlockState block = worldIn.getBlockState(currentPos); - - if (isExtensionPole(block) && direction.getAxis() == block.get(BlockStateProperties.FACING) - .getAxis()) - continue; - - if (isPistonHead(block) && block.get(BlockStateProperties.FACING) == direction) { - pistonHead = currentPos; - } - - break; - } - - if (pistonHead != null && pistonBase != null) { - BlockPos.getAllInBox(pistonBase, pistonHead) - .filter(p -> !p.equals(pos)) - .forEach(p -> worldIn.destroyBlock(p, dropBlocks)); - } - - for (int offset = 1; offset < maxPoles; offset++) { - BlockPos currentPos = pos.offset(direction.getOpposite(), offset); - BlockState block = worldIn.getBlockState(currentPos); - - if (isExtensionPole(block) && direction.getAxis() == block.get(BlockStateProperties.FACING) - .getAxis()) { - worldIn.destroyBlock(currentPos, dropBlocks); - continue; - } - - break; - } - - super.onBlockHarvested(worldIn, pos, state, player); - } - - public static int maxAllowedPistonPoles() { - return AllConfigs.SERVER.kinetics.maxPistonPoles.get(); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - - if (state.get(STATE) == PistonState.EXTENDED) - return AllShapes.MECHANICAL_PISTON_EXTENDED.get(state.get(FACING)); - - if (state.get(STATE) == PistonState.MOVING) - return AllShapes.MECHANICAL_PISTON.get(state.get(FACING)); - - return VoxelShapes.fullCube(); - } - - @Override - public Class getTileEntityClass() { - return MechanicalPistonTileEntity.class; - } - - public static boolean isPiston(BlockState state) { - return AllBlocks.MECHANICAL_PISTON.has(state) || isStickyPiston(state); - } - - public static boolean isStickyPiston(BlockState state) { - return AllBlocks.STICKY_MECHANICAL_PISTON.has(state); - } - - public static boolean isExtensionPole(BlockState state) { - return AllBlocks.PISTON_EXTENSION_POLE.has(state); - } - - public static boolean isPistonHead(BlockState state) { - return AllBlocks.MECHANICAL_PISTON_HEAD.has(state); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonGenerator.java deleted file mode 100644 index 34e30c52c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonGenerator.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.PistonBlock; -import net.minecraft.state.properties.PistonType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraftforge.client.model.generators.ModelFile; - -public class MechanicalPistonGenerator extends SpecialBlockStateGen { - - private final PistonType type; - - public MechanicalPistonGenerator(PistonType type) { - this.type = type; - } - - @Override - protected int getXRotation(BlockState state) { - Direction facing = state.get(MechanicalPistonBlock.FACING); - return facing.getAxis() - .isVertical() ? facing == Direction.DOWN ? 180 : 0 : 90; - } - - @Override - protected int getYRotation(BlockState state) { - Direction facing = state.get(MechanicalPistonBlock.FACING); - return facing.getAxis() - .isVertical() ? 0 : horizontalAngle(facing) + 180; - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - Direction facing = state.get(PistonBlock.FACING); - boolean axisAlongFirst = state.get(MechanicalPistonBlock.AXIS_ALONG_FIRST_COORDINATE); - PistonState pistonState = state.get(MechanicalPistonBlock.STATE); - - String path = "block/mechanical_piston"; - String folder = pistonState == PistonState.RETRACTED ? type.getString() : pistonState.getString(); - String partial = facing.getAxis() == Axis.X ^ axisAlongFirst ? "block_rotated" : "block"; - - return prov.models() - .getExistingFile(prov.modLoc(path + "/" + folder + "/" + partial)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonHeadBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonHeadBlock.java deleted file mode 100644 index fe9c50d8a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonHeadBlock.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; -import com.simibubi.create.foundation.block.ProperDirectionalBlock; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.PistonType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; - -public class MechanicalPistonHeadBlock extends ProperDirectionalBlock implements IWaterLoggable { - - public static final EnumProperty TYPE = BlockStateProperties.PISTON_TYPE; - - public MechanicalPistonHeadBlock(Properties p_i48415_1_) { - super(p_i48415_1_); - setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(TYPE, BlockStateProperties.WATERLOGGED); - super.fillStateContainer(builder); - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllBlocks.PISTON_EXTENSION_POLE.asStack(); - } - - @Override - public void onBlockHarvested(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { - Direction direction = state.get(FACING); - BlockPos pistonHead = pos; - BlockPos pistonBase = null; - - for (int offset = 1; offset < MechanicalPistonBlock.maxAllowedPistonPoles(); offset++) { - BlockPos currentPos = pos.offset(direction.getOpposite(), offset); - BlockState block = worldIn.getBlockState(currentPos); - - if (isExtensionPole(block) && direction.getAxis() == block.get(BlockStateProperties.FACING) - .getAxis()) - continue; - - if (MechanicalPistonBlock.isPiston(block) && block.get(BlockStateProperties.FACING) == direction) - pistonBase = currentPos; - - break; - } - - if (pistonHead != null && pistonBase != null) { - final BlockPos basePos = pistonBase; - BlockPos.getAllInBox(pistonBase, pistonHead) - .filter(p -> !p.equals(pos) && !p.equals(basePos)) - .forEach(p -> worldIn.destroyBlock(p, !player.isCreative())); - worldIn.setBlockState(basePos, worldIn.getBlockState(basePos) - .with(MechanicalPistonBlock.STATE, PistonState.RETRACTED)); - } - - super.onBlockHarvested(worldIn, pos, state, player); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.MECHANICAL_PISTON_HEAD.get(state.get(FACING)); - } - - @Override - public FluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : Fluids.EMPTY.getDefaultState(); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, - IWorld world, BlockPos pos, BlockPos neighbourPos) { - if (state.get(BlockStateProperties.WATERLOGGED)) { - world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); - } - return state; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - FluidState FluidState = context.getWorld().getFluidState(context.getPos()); - return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(FluidState.getFluid() == Fluids.WATER)); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonRenderer.java deleted file mode 100644 index ae6114f31..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonRenderer.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; - -public class MechanicalPistonRenderer extends KineticTileEntityRenderer { - - public MechanicalPistonRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return shaft(getRotationAxisOf(te)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java deleted file mode 100644 index 8297c9b20..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/MechanicalPistonTileEntity.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; -import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.DirectionalExtenderScrollOptionSlot; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.utility.ServerSpeedProvider; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class MechanicalPistonTileEntity extends LinearActuatorTileEntity { - - protected boolean hadCollisionWithOtherPiston; - protected int extensionLength; - - public MechanicalPistonTileEntity(TileEntityType type) { - super(type); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - extensionLength = compound.getInt("ExtensionLength"); - super.fromTag(state, compound, clientPacket); - } - - @Override - protected void write(CompoundNBT tag, boolean clientPacket) { - tag.putInt("ExtensionLength", extensionLength); - super.write(tag, clientPacket); - } - - @Override - public void assemble() throws AssemblyException { - if (!(world.getBlockState(pos) - .getBlock() instanceof MechanicalPistonBlock)) - return; - - Direction direction = getBlockState().get(BlockStateProperties.FACING); - - // Collect Construct - PistonContraption contraption = new PistonContraption(direction, getMovementSpeed() < 0); - if (!contraption.assemble(world, pos)) - return; - - Direction positive = Direction.getFacingFromAxis(AxisDirection.POSITIVE, direction.getAxis()); - Direction movementDirection = - getSpeed() > 0 ^ direction.getAxis() != Axis.Z ? positive : positive.getOpposite(); - - BlockPos anchor = contraption.anchor.offset(direction, contraption.initialExtensionProgress); - if (ContraptionCollider.isCollidingWithWorld(world, contraption, anchor.offset(movementDirection), - movementDirection)) - return; - - // Check if not at limit already - extensionLength = contraption.extensionLength; - float resultingOffset = contraption.initialExtensionProgress + Math.signum(getMovementSpeed()) * .5f; - if (resultingOffset <= 0 || resultingOffset >= extensionLength) { - return; - } - - // Run - running = true; - offset = contraption.initialExtensionProgress; - sendData(); - clientOffsetDiff = 0; - - BlockPos startPos = BlockPos.ZERO.offset(direction, contraption.initialExtensionProgress); - contraption.removeBlocksFromWorld(world, startPos); - movedContraption = ControlledContraptionEntity.create(getWorld(), this, contraption); - applyContraptionPosition(); - forceMove = true; - world.addEntity(movedContraption); - - AllSoundEvents.CONTRAPTION_ASSEMBLE.playOnServer(world, pos); - } - - @Override - public void disassemble() { - if (!running && movedContraption == null) - return; - if (!removed) - getWorld().setBlockState(pos, getBlockState().with(MechanicalPistonBlock.STATE, PistonState.EXTENDED), - 3 | 16); - if (movedContraption != null) { - applyContraptionPosition(); - movedContraption.disassemble(); - AllSoundEvents.CONTRAPTION_DISASSEMBLE.playOnServer(world, pos); - } - running = false; - movedContraption = null; - sendData(); - - if (removed) - AllBlocks.MECHANICAL_PISTON.get() - .onBlockHarvested(world, pos, getBlockState(), null); - } - - @Override - public void collided() { - super.collided(); - if (!running && getMovementSpeed() > 0) - assembleNextTick = true; - } - - @Override - public float getMovementSpeed() { - float movementSpeed = MathHelper.clamp(convertToLinear(getSpeed()), -.49f, .49f); - if (world.isRemote) - movementSpeed *= ServerSpeedProvider.get(); - Direction pistonDirection = getBlockState().get(BlockStateProperties.FACING); - int movementModifier = pistonDirection.getAxisDirection() - .getOffset() * (pistonDirection.getAxis() == Axis.Z ? -1 : 1); - movementSpeed = movementSpeed * -movementModifier + clientOffsetDiff / 2f; - - int extensionRange = getExtensionRange(); - movementSpeed = MathHelper.clamp(movementSpeed, 0 - offset, extensionRange - offset); - return movementSpeed; - } - - @Override - protected int getExtensionRange() { - return extensionLength; - } - - @Override - protected void visitNewPosition() {} - - @Override - protected Vector3d toMotionVector(float speed) { - Direction pistonDirection = getBlockState().get(BlockStateProperties.FACING); - return Vector3d.of(pistonDirection.getDirectionVec()) - .scale(speed); - } - - @Override - protected Vector3d toPosition(float offset) { - Vector3d position = Vector3d.of(getBlockState().get(BlockStateProperties.FACING) - .getDirectionVec()) - .scale(offset); - return position.add(Vector3d.of(movedContraption.getContraption().anchor)); - } - - @Override - protected ValueBoxTransform getMovementModeSlot() { - return new DirectionalExtenderScrollOptionSlot((state, d) -> { - Axis axis = d.getAxis(); - Axis extensionAxis = state.get(MechanicalPistonBlock.FACING) - .getAxis(); - Axis shaftAxis = ((IRotate) state.getBlock()).getRotationAxis(state); - return extensionAxis != axis && shaftAxis != axis; - }); - } - - @Override - protected int getInitialOffset() { - return movedContraption == null ? 0 - : ((PistonContraption) movedContraption.getContraption()).initialExtensionProgress; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonContraption.java deleted file mode 100644 index b8c33f45b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonContraption.java +++ /dev/null @@ -1,252 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import static com.simibubi.create.AllBlocks.MECHANICAL_PISTON_HEAD; -import static com.simibubi.create.AllBlocks.PISTON_EXTENSION_POLE; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPiston; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPistonHead; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isStickyPiston; -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import java.util.ArrayList; -import java.util.List; -import java.util.Queue; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; -import com.simibubi.create.content.contraptions.components.structureMovement.TranslatingContraption; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.CarpetBlock; -import net.minecraft.block.material.PushReaction; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.PistonType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class PistonContraption extends TranslatingContraption { - - protected int extensionLength; - protected int initialExtensionProgress; - protected Direction orientation; - - private AxisAlignedBB pistonExtensionCollisionBox; - private boolean retract; - - @Override - protected ContraptionType getType() { - return ContraptionType.PISTON; - } - - public PistonContraption() {} - - public PistonContraption(Direction direction, boolean retract) { - orientation = direction; - this.retract = retract; - } - - @Override - public boolean assemble(World world, BlockPos pos) throws AssemblyException { - if (!collectExtensions(world, pos, orientation)) - return false; - int count = blocks.size(); - if (!searchMovedStructure(world, anchor, retract ? orientation.getOpposite() : orientation)) - return false; - if (blocks.size() == count) { // no new blocks added - bounds = pistonExtensionCollisionBox; - } else { - bounds = bounds.union(pistonExtensionCollisionBox); - } - startMoving(world); - return true; - } - - private boolean collectExtensions(World world, BlockPos pos, Direction direction) throws AssemblyException { - List poles = new ArrayList<>(); - BlockPos actualStart = pos; - BlockState nextBlock = world.getBlockState(actualStart.offset(direction)); - int extensionsInFront = 0; - BlockState blockState = world.getBlockState(pos); - boolean sticky = isStickyPiston(blockState); - - if (!isPiston(blockState)) - return false; - - if (blockState.get(MechanicalPistonBlock.STATE) == PistonState.EXTENDED) { - while (PistonExtensionPoleBlock.PlacementHelper.get().matchesAxis(nextBlock, direction.getAxis()) || isPistonHead(nextBlock) && nextBlock.get(FACING) == direction) { - - actualStart = actualStart.offset(direction); - poles.add(new BlockInfo(actualStart, nextBlock.with(FACING, direction), null)); - extensionsInFront++; - - if (isPistonHead(nextBlock)) - break; - - nextBlock = world.getBlockState(actualStart.offset(direction)); - if (extensionsInFront > MechanicalPistonBlock.maxAllowedPistonPoles()) - throw AssemblyException.tooManyPistonPoles(); - } - } - - if (extensionsInFront == 0) - poles.add(new BlockInfo(pos, MECHANICAL_PISTON_HEAD.getDefaultState() - .with(FACING, direction) - .with(BlockStateProperties.PISTON_TYPE, sticky ? PistonType.STICKY : PistonType.DEFAULT), null)); - else - poles.add(new BlockInfo(pos, PISTON_EXTENSION_POLE.getDefaultState() - .with(FACING, direction), null)); - - BlockPos end = pos; - nextBlock = world.getBlockState(end.offset(direction.getOpposite())); - int extensionsInBack = 0; - - while (PistonExtensionPoleBlock.PlacementHelper.get().matchesAxis(nextBlock, direction.getAxis())) { - end = end.offset(direction.getOpposite()); - poles.add(new BlockInfo(end, nextBlock.with(FACING, direction), null)); - extensionsInBack++; - nextBlock = world.getBlockState(end.offset(direction.getOpposite())); - - if (extensionsInFront + extensionsInBack > MechanicalPistonBlock.maxAllowedPistonPoles()) - throw AssemblyException.tooManyPistonPoles(); - } - - anchor = pos.offset(direction, initialExtensionProgress + 1); - extensionLength = extensionsInBack + extensionsInFront; - initialExtensionProgress = extensionsInFront; - pistonExtensionCollisionBox = new AxisAlignedBB( - BlockPos.ZERO.offset(direction, -1), - BlockPos.ZERO.offset(direction, -extensionLength - 1)).expand(1, - 1, 1); - - if (extensionLength == 0) - throw AssemblyException.noPistonPoles(); - - bounds = new AxisAlignedBB(0, 0, 0, 0, 0, 0); - - for (BlockInfo pole : poles) { - BlockPos relPos = pole.pos.offset(direction, -extensionsInFront); - BlockPos localPos = relPos.subtract(anchor); - getBlocks().put(localPos, new BlockInfo(localPos, pole.state, null)); - //pistonExtensionCollisionBox = pistonExtensionCollisionBox.union(new AxisAlignedBB(localPos)); - } - - return true; - } - - @Override - protected boolean isAnchoringBlockAt(BlockPos pos) { - return pistonExtensionCollisionBox.contains(VecHelper.getCenterOf(pos.subtract(anchor))); - } - - @Override - protected boolean addToInitialFrontier(World world, BlockPos pos, Direction direction, Queue frontier) throws AssemblyException { - frontier.clear(); - boolean sticky = isStickyPiston(world.getBlockState(pos.offset(orientation, -1))); - boolean retracting = direction != orientation; - if (retracting && !sticky) - return true; - for (int offset = 0; offset <= AllConfigs.SERVER.kinetics.maxChassisRange.get(); offset++) { - if (offset == 1 && retracting) - return true; - BlockPos currentPos = pos.offset(orientation, offset + initialExtensionProgress); - if (retracting && World.isOutsideBuildHeight(currentPos)) - return true; - if (!world.isBlockPresent(currentPos)) - throw AssemblyException.unloadedChunk(currentPos); - BlockState state = world.getBlockState(currentPos); - if (!BlockMovementChecks.isMovementNecessary(state, world, currentPos)) - return true; - if (BlockMovementChecks.isBrittle(state) && !(state.getBlock() instanceof CarpetBlock)) - return true; - if (isPistonHead(state) && state.get(FACING) == direction.getOpposite()) - return true; - if (!BlockMovementChecks.isMovementAllowed(state, world, currentPos)) - if (retracting) - return true; - else - throw AssemblyException.unmovableBlock(currentPos, state); - if (retracting && state.getPushReaction() == PushReaction.PUSH_ONLY) - return true; - frontier.add(currentPos); - if (BlockMovementChecks.isNotSupportive(state, orientation)) - return true; - } - return true; - } - - @Override - public void addBlock(BlockPos pos, Pair capture) { - super.addBlock(pos.offset(orientation, -initialExtensionProgress), capture); - } - - @Override - public BlockPos toLocalPos(BlockPos globalPos) { - return globalPos.subtract(anchor) - .offset(orientation, -initialExtensionProgress); - } - - @Override - protected boolean customBlockPlacement(IWorld world, BlockPos pos, BlockState state) { - BlockPos pistonPos = anchor.offset(orientation, -1); - BlockState pistonState = world.getBlockState(pistonPos); - TileEntity te = world.getTileEntity(pistonPos); - if (pos.equals(pistonPos)) { - if (te == null || te.isRemoved()) - return true; - if (!isExtensionPole(state) && isPiston(pistonState)) - world.setBlockState(pistonPos, pistonState.with(MechanicalPistonBlock.STATE, PistonState.RETRACTED), - 3 | 16); - return true; - } - return false; - } - - @Override - protected boolean customBlockRemoval(IWorld world, BlockPos pos, BlockState state) { - BlockPos pistonPos = anchor.offset(orientation, -1); - BlockState blockState = world.getBlockState(pos); - if (pos.equals(pistonPos) && isPiston(blockState)) { - world.setBlockState(pos, blockState.with(MechanicalPistonBlock.STATE, PistonState.MOVING), 66 | 16); - return true; - } - return false; - } - - @Override - public void readNBT(World world, CompoundNBT nbt, boolean spawnData) { - super.readNBT(world, nbt, spawnData); - initialExtensionProgress = nbt.getInt("InitialLength"); - extensionLength = nbt.getInt("ExtensionLength"); - orientation = Direction.byIndex(nbt.getInt("Orientation")); - } - - @Override - public CompoundNBT writeNBT(boolean spawnPacket) { - CompoundNBT tag = super.writeNBT(spawnPacket); - tag.putInt("InitialLength", initialExtensionProgress); - tag.putInt("ExtensionLength", extensionLength); - tag.putInt("Orientation", orientation.getIndex()); - return tag; - } - - @OnlyIn(Dist.CLIENT) - @Override - public ContraptionLighter makeLighter() { - return new PistonLighter(this); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java deleted file mode 100644 index 38191de92..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonExtensionPoleBlock.java +++ /dev/null @@ -1,207 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isExtensionPole; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPiston; -import static com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.isPistonHead; - -import java.util.function.Predicate; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.block.ProperDirectionalBlock; -import com.simibubi.create.foundation.utility.placement.IPlacementHelper; -import com.simibubi.create.foundation.utility.placement.PlacementHelpers; -import com.simibubi.create.foundation.utility.placement.util.PoleHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraftforge.common.ToolType; - -public class PistonExtensionPoleBlock extends ProperDirectionalBlock implements IWrenchable, IWaterLoggable { - - private static final int placementHelperId = PlacementHelpers.register(PlacementHelper.get()); - - public PistonExtensionPoleBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(FACING, Direction.UP).with(BlockStateProperties.WATERLOGGED, false)); - } - - @Override - public ToolType getHarvestTool(BlockState state) { - return null; - } - - @Override - public boolean canHarvestBlock(BlockState state, IBlockReader world, BlockPos pos, PlayerEntity player) { - for (ToolType toolType : player.getHeldItemMainhand() - .getToolTypes()) { - if (isToolEffective(state, toolType)) - return true; - } - return super.canHarvestBlock(state, world, pos, player); - } - - @Override - public boolean isToolEffective(BlockState state, ToolType tool) { - return tool == ToolType.AXE || tool == ToolType.PICKAXE; - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } - - @Override - public void onBlockHarvested(World worldIn, BlockPos pos, BlockState state, PlayerEntity player) { - Axis axis = state.get(FACING) - .getAxis(); - Direction direction = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - BlockPos pistonHead = null; - BlockPos pistonBase = null; - - for (int modifier : new int[] { 1, -1 }) { - for (int offset = modifier; modifier * offset < MechanicalPistonBlock.maxAllowedPistonPoles(); offset += - modifier) { - BlockPos currentPos = pos.offset(direction, offset); - BlockState block = worldIn.getBlockState(currentPos); - - if (isExtensionPole(block) && axis == block.get(FACING) - .getAxis()) - continue; - - if (isPiston(block) && block.get(BlockStateProperties.FACING) - .getAxis() == axis) - pistonBase = currentPos; - - if (isPistonHead(block) && block.get(BlockStateProperties.FACING) - .getAxis() == axis) - pistonHead = currentPos; - - break; - } - } - - if (pistonHead != null && pistonBase != null && worldIn.getBlockState(pistonHead) - .get(BlockStateProperties.FACING) == worldIn.getBlockState(pistonBase) - .get(BlockStateProperties.FACING)) { - - final BlockPos basePos = pistonBase; - BlockPos.getAllInBox(pistonBase, pistonHead) - .filter(p -> !p.equals(pos) && !p.equals(basePos)) - .forEach(p -> worldIn.destroyBlock(p, !player.isCreative())); - worldIn.setBlockState(basePos, worldIn.getBlockState(basePos) - .with(MechanicalPistonBlock.STATE, PistonState.RETRACTED)); - - TileEntity te = worldIn.getTileEntity(basePos); - if (te instanceof MechanicalPistonTileEntity) { - MechanicalPistonTileEntity baseTE = (MechanicalPistonTileEntity) te; - baseTE.offset = 0; - baseTE.onLengthBroken(); - } - } - - super.onBlockHarvested(worldIn, pos, state, player); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.FOUR_VOXEL_POLE.get(state.get(FACING) - .getAxis()); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - FluidState FluidState = context.getWorld() - .getFluidState(context.getPos()); - return getDefaultState().with(FACING, context.getFace() - .getOpposite()) - .with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(FluidState.getFluid() == Fluids.WATER)); - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult ray) { - ItemStack heldItem = player.getHeldItem(hand); - - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); - if (placementHelper.matchesItem(heldItem) && !player.isSneaking()) - return placementHelper.getOffset(player, world, state, pos, ray).placeInWorld(world, (BlockItem) heldItem.getItem(), player, hand, ray); - - return ActionResultType.PASS; - } - - @Override - public FluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) - : Fluids.EMPTY.getDefaultState(); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(BlockStateProperties.WATERLOGGED); - super.fillStateContainer(builder); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, IWorld world, BlockPos pos, BlockPos neighbourPos) { - if (state.get(BlockStateProperties.WATERLOGGED)) { - world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); - } - return state; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - - @MethodsReturnNonnullByDefault - public static class PlacementHelper extends PoleHelper { - - private static final PlacementHelper instance = new PlacementHelper(); - - public static PlacementHelper get() { - return instance; - } - - private PlacementHelper(){ - super( - AllBlocks.PISTON_EXTENSION_POLE::has, - state -> state.get(FACING).getAxis(), - FACING - ); - } - - @Override - public Predicate getItemPredicate() { - return AllBlocks.PISTON_EXTENSION_POLE::isIn; - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java deleted file mode 100644 index 84fa87b31..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/piston/PistonLighter.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.piston; - -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; - -import net.minecraft.util.math.vector.Vector3i; - -public class PistonLighter extends ContraptionLighter { - public PistonLighter(PistonContraption contraption) { - super(contraption); - } - - @Override - public GridAlignedBB getContraptionBounds() { - GridAlignedBB bounds = GridAlignedBB.from(contraption.bounds); - bounds.translate(contraption.anchor); - - int length = contraption.extensionLength; - Vector3i direction = contraption.orientation.getDirectionVec(); - - int shift = length / 2; - int shiftX = direction.getX() * shift; - int shiftY = direction.getY() * shift; - int shiftZ = direction.getZ() * shift; - bounds.translate(shiftX, shiftY, shiftZ); - - int grow = (length + 1) / 2; - int extendX = Math.abs(direction.getX() * grow); - int extendY = Math.abs(direction.getY() * grow); - int extendZ = Math.abs(direction.getZ() * grow); - bounds.grow(extendX, extendY, extendZ); - - return bounds; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java deleted file mode 100644 index b77adc308..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyInstance.java +++ /dev/null @@ -1,201 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - -import java.util.Arrays; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.instancing.ConditionalInstance; -import com.jozufozu.flywheel.core.instancing.GroupInstance; -import com.jozufozu.flywheel.core.instancing.SelectInstance; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ILightUpdateListener; -import com.jozufozu.flywheel.light.LightUpdater; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraft.world.LightType; - -public abstract class AbstractPulleyInstance extends ShaftInstance implements IDynamicInstance, ILightUpdateListener { - - final OrientedData coil; - final SelectInstance magnet; - final GroupInstance rope; - final ConditionalInstance halfRope; - - protected float offset; - protected final Direction rotatingAbout; - protected final Vector3f rotationAxis; - - private byte[] bLight = new byte[1]; - private byte[] sLight = new byte[1]; - private GridAlignedBB volume; - - public AbstractPulleyInstance(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); - - rotatingAbout = Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis); - rotationAxis = rotatingAbout.getUnitVector(); - - coil = getCoilModel() - .createInstance() - .setPosition(getInstancePosition()); - - magnet = new SelectInstance<>(this::getMagnetModelIndex); - magnet.addModel(getMagnetModel()) - .addModel(getHalfMagnetModel()); - - rope = new GroupInstance<>(getRopeModel()); - halfRope = new ConditionalInstance<>(getHalfRopeModel()) - .withCondition(this::shouldRenderHalfRope); - } - - @Override - public void beginFrame() { - updateOffset(); - - transformModels(); - } - - private void transformModels() { - resizeRope(); - - coil.setRotation(rotationAxis.getDegreesQuaternion(offset * 180)); - magnet.update().get().ifPresent(data -> - { - int index = Math.max(0, MathHelper.floor(offset)); - data.setPosition(getInstancePosition()) - .nudge(0, -offset, 0) - .setBlockLight(bLight[index]) - .setSkyLight(sLight[index]); - } - ); - - halfRope.update().get().ifPresent(rope -> { - float f = offset % 1; - float halfRopeNudge = f > .75f ? f - 1 : f; - - rope.setPosition(getInstancePosition()) - .nudge(0, -halfRopeNudge, 0) - .setBlockLight(bLight[0]) - .setSkyLight(sLight[0]); - }); - - if (isRunning()) { - int size = rope.size(); - for (int i = 0; i < size; i++) { - rope.get(i) - .setPosition(getInstancePosition()) - .nudge(0, -offset + i + 1, 0) - .setBlockLight(bLight[size - i]) - .setSkyLight(sLight[size - i]); - } - } else { - rope.clear(); - } - } - - @Override - public void updateLight() { - super.updateLight(); - relight(pos, coil); - } - - @Override - public void remove() { - super.remove(); - coil.delete(); - magnet.delete(); - rope.clear(); - halfRope.delete(); - } - - protected abstract Instancer getRopeModel(); - - protected abstract Instancer getMagnetModel(); - - protected abstract Instancer getHalfMagnetModel(); - - protected abstract Instancer getCoilModel(); - - protected abstract Instancer getHalfRopeModel(); - - protected abstract float getOffset(); - - protected abstract boolean isRunning(); - - protected void resizeRope() { - int neededRopeCount = getNeededRopeCount(); - rope.resize(neededRopeCount); - - int length = MathHelper.ceil(offset); - - if (volume == null || bLight.length < length + 1) { - volume = GridAlignedBB.from(pos.down(length), pos); - volume.fixMinMax(); - - bLight = Arrays.copyOf(bLight, length + 1); - sLight = Arrays.copyOf(sLight, length + 1); - - initLight(world, volume); - - LightUpdater.getInstance().startListening(volume, this); - } - } - - private void updateOffset() { - offset = getOffset(); - } - - private int getNeededRopeCount() { - return Math.max(0, MathHelper.ceil(offset - 1.25f)); - } - - private boolean shouldRenderHalfRope() { - float f = offset % 1; - return offset > .75f && (f < .25f || f > .75f); - } - - private int getMagnetModelIndex() { - if (isRunning() || offset == 0) { - return offset > .25f ? 0 : 1; - } else { - return -1; - } - } - - @Override - public boolean decreaseFramerateWithDistance() { - return false; - } - - @Override - public boolean onLightUpdate(IBlockDisplayReader world, LightType type, GridAlignedBB changed) { - changed.intersectAssign(volume); - - initLight(world, changed); - - return false; - } - - private void initLight(IBlockDisplayReader world, GridAlignedBB changed) { - int top = this.pos.getY(); - BlockPos.Mutable pos = new BlockPos.Mutable(); - changed.forEachContained((x, y, z) -> { - pos.setPos(x, y, z); - byte block = (byte) world.getLightLevel(LightType.BLOCK, pos); - byte sky = (byte) world.getLightLevel(LightType.SKY, pos); - - int i = top - y; - - bLight[i] = block; - sLight[i] = sky; - }); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java deleted file mode 100644 index f8994d9e7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/AbstractPulleyRenderer.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; - -public abstract class AbstractPulleyRenderer extends KineticTileEntityRenderer { - - private PartialModel halfRope; - private PartialModel halfMagnet; - - public AbstractPulleyRenderer(TileEntityRendererDispatcher dispatcher, PartialModel halfRope, - PartialModel halfMagnet) { - super(dispatcher); - this.halfRope = halfRope; - this.halfMagnet = halfMagnet; - } - - @Override - public boolean isGlobalRenderer(KineticTileEntity p_188185_1_) { - return true; - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - float offset = getOffset(te, partialTicks); - boolean running = isRunning(te); - - Axis rotationAxis = ((IRotate) te.getBlockState() - .getBlock()).getRotationAxis(te.getBlockState()); - kineticRotationTransform(getRotatedCoil(te), te, rotationAxis, AngleHelper.rad(offset * 180), light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - - World world = te.getWorld(); - BlockState blockState = te.getBlockState(); - BlockPos pos = te.getPos(); - - SuperByteBuffer halfMagnet = PartialBufferer.get(this.halfMagnet, blockState); - SuperByteBuffer halfRope = PartialBufferer.get(this.halfRope, blockState); - SuperByteBuffer magnet = renderMagnet(te); - SuperByteBuffer rope = renderRope(te); - - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - if (running || offset == 0) - renderAt(world, offset > .25f ? magnet : halfMagnet, offset, pos, ms, vb); - - float f = offset % 1; - if (offset > .75f && (f < .25f || f > .75f)) - renderAt(world, halfRope, f > .75f ? f - 1 : f, pos, ms, vb); - - if (!running) - return; - - for (int i = 0; i < offset - 1.25f; i++) - renderAt(world, rope, offset - i - 1, pos, ms, vb); - } - - private void renderAt(IWorld world, SuperByteBuffer partial, float offset, BlockPos pulleyPos, MatrixStack ms, - IVertexBuilder buffer) { - BlockPos actualPos = pulleyPos.down((int) offset); - int light = WorldRenderer.getLightmapCoordinates(world, world.getBlockState(actualPos), actualPos); - partial.translate(0, -offset, 0) - .light(light) - .renderInto(ms, buffer); - } - - protected abstract Axis getShaftAxis(KineticTileEntity te); - - protected abstract PartialModel getCoil(); - - protected abstract SuperByteBuffer renderRope(KineticTileEntity te); - - protected abstract SuperByteBuffer renderMagnet(KineticTileEntity te); - - protected abstract float getOffset(KineticTileEntity te, float partialTicks); - - protected abstract boolean isRunning(KineticTileEntity te); - - @Override - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return shaft(getShaftAxis(te)); - } - - protected SuperByteBuffer getRotatedCoil(KineticTileEntity te) { - BlockState blockState = te.getBlockState(); - return PartialBufferer.getFacing(getCoil(), blockState, Direction.getFacingFromAxis(AxisDirection.POSITIVE, getShaftAxis(te))); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java deleted file mode 100644 index b6fb4679c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/HosePulleyInstance.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.fluids.actors.HosePulleyTileEntity; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -public class HosePulleyInstance extends AbstractPulleyInstance { - final HosePulleyTileEntity tile = (HosePulleyTileEntity) super.tile; - - public HosePulleyInstance(MaterialManager dispatcher, HosePulleyTileEntity tile) { - super(dispatcher, tile); - beginFrame(); - } - - protected Instancer getRopeModel() { - return getOrientedMaterial().getModel(AllBlockPartials.HOSE, blockState); - } - - protected Instancer getMagnetModel() { - return getOrientedMaterial().getModel(AllBlockPartials.HOSE_MAGNET, blockState); - } - - protected Instancer getHalfMagnetModel() { - return getOrientedMaterial().getModel(AllBlockPartials.HOSE_HALF_MAGNET, blockState); - } - - protected Instancer getCoilModel() { - return getOrientedMaterial().getModel(AllBlockPartials.HOSE_COIL, blockState, rotatingAbout); - } - - protected Instancer getHalfRopeModel() { - return getOrientedMaterial().getModel(AllBlockPartials.HOSE_HALF, blockState); - } - - protected float getOffset() { - return tile.getInterpolatedOffset(AnimationTickHolder.getPartialTicks()); - } - - protected boolean isRunning() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java deleted file mode 100644 index adcaca95f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyBlock.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; - -public class PulleyBlock extends HorizontalAxisKineticBlock implements ITE { - - public static EnumProperty HORIZONTAL_AXIS = BlockStateProperties.HORIZONTAL_AXIS; - - public PulleyBlock(Properties properties) { - super(properties); - } - - private static void onRopeBroken(World world, BlockPos pulleyPos) { - TileEntity te = world.getTileEntity(pulleyPos); - if (te instanceof PulleyTileEntity) { - PulleyTileEntity pulley = (PulleyTileEntity) te; - pulley.initialOffset = 0; - pulley.onLengthBroken(); - } - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ROPE_PULLEY.create(); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.getBlock() != newState.getBlock()) { - if (!worldIn.isRemote) { - BlockState below = worldIn.getBlockState(pos.down()); - if (below.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.down(), true); - } - if (state.hasTileEntity()) - worldIn.removeTileEntity(pos); - } - } - - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (!player.isAllowEdit()) - return ActionResultType.PASS; - if (player.isSneaking()) - return ActionResultType.PASS; - if (player.getHeldItem(handIn) - .isEmpty()) { - withTileEntityDo(worldIn, pos, te -> te.assembleNextTick = true); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.PULLEY.get(state.get(HORIZONTAL_AXIS)); - } - - @Override - public Class getTileEntityClass() { - return PulleyTileEntity.class; - } - - private static class RopeBlockBase extends Block implements IWaterLoggable { - - public RopeBlockBase(Properties properties) { - super(properties); - setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.BLOCK; - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllBlocks.ROPE_PULLEY.asStack(); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!isMoving && (!state.contains(BlockStateProperties.WATERLOGGED) || !newState.contains(BlockStateProperties.WATERLOGGED) || state.get(BlockStateProperties.WATERLOGGED) == newState.get(BlockStateProperties.WATERLOGGED))) { - onRopeBroken(worldIn, pos.up()); - if (!worldIn.isRemote) { - BlockState above = worldIn.getBlockState(pos.up()); - BlockState below = worldIn.getBlockState(pos.down()); - if (above.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.up(), true); - if (below.getBlock() instanceof RopeBlockBase) - worldIn.destroyBlock(pos.down(), true); - } - } - if (state.hasTileEntity() && state.getBlock() != newState.getBlock()) { - worldIn.removeTileEntity(pos); - } - } - - - @Override - public FluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) : Fluids.EMPTY.getDefaultState(); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(BlockStateProperties.WATERLOGGED); - super.fillStateContainer(builder); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, - IWorld world, BlockPos pos, BlockPos neighbourPos) { - if (state.get(BlockStateProperties.WATERLOGGED)) { - world.getPendingFluidTicks().scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); - } - return state; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - FluidState FluidState = context.getWorld().getFluidState(context.getPos()); - return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(FluidState.getFluid() == Fluids.WATER)); - } - - } - - public static class MagnetBlock extends RopeBlockBase { - - public MagnetBlock(Properties properties) { - super(properties); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.PULLEY_MAGNET; - } - - } - - public static class RopeBlock extends RopeBlockBase { - - public RopeBlock(Properties properties) { - super(properties); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.FOUR_VOXEL_POLE.get(Direction.UP); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyContraption.java deleted file mode 100644 index bb81e319e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyContraption.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionType; -import com.simibubi.create.content.contraptions.components.structureMovement.TranslatingContraption; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class PulleyContraption extends TranslatingContraption { - - int initialOffset; - - @Override - protected ContraptionType getType() { - return ContraptionType.PULLEY; - } - - public PulleyContraption() {} - - public PulleyContraption(int initialOffset) { - this.initialOffset = initialOffset; - } - - @Override - public boolean assemble(World world, BlockPos pos) throws AssemblyException { - if (!searchMovedStructure(world, pos, null)) - return false; - startMoving(world); - return true; - } - - @Override - protected boolean isAnchoringBlockAt(BlockPos pos) { - if (pos.getX() != anchor.getX() || pos.getZ() != anchor.getZ()) - return false; - int y = pos.getY(); - if (y <= anchor.getY() || y > anchor.getY() + initialOffset + 1) - return false; - return true; - } - - @Override - public CompoundNBT writeNBT(boolean spawnPacket) { - CompoundNBT tag = super.writeNBT(spawnPacket); - tag.putInt("InitialOffset", initialOffset); - return tag; - } - - @Override - public void readNBT(World world, CompoundNBT nbt, boolean spawnData) { - initialOffset = nbt.getInt("InitialOffset"); - super.readNBT(world, nbt, spawnData); - } - - @Override - public ContraptionLighter makeLighter() { - return new PulleyLighter(this); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java deleted file mode 100644 index 27d75fa07..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyLighter.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class PulleyLighter extends ContraptionLighter { - public PulleyLighter(PulleyContraption contraption) { - super(contraption); - } - - @Override - public GridAlignedBB getContraptionBounds() { - - GridAlignedBB bounds = GridAlignedBB.from(contraption.bounds); - - World world = contraption.entity.world; - - BlockPos.Mutable pos = contraption.anchor.mutableCopy(); - while (!AllBlocks.ROPE_PULLEY.has(world.getBlockState(pos)) && pos.getY() < 256) { - pos.move(0, 1, 0); - } - - bounds.translate(pos); - bounds.minY = 1; // the super constructor will take care of making this 0 - - return bounds; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java deleted file mode 100644 index c1813dc06..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyRenderer.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.foundation.render.SuperByteBuffer; - -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.MathHelper; - -public class PulleyRenderer extends AbstractPulleyRenderer { - - public PulleyRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher, AllBlockPartials.ROPE_HALF, AllBlockPartials.ROPE_HALF_MAGNET); - } - - @Override - protected Axis getShaftAxis(KineticTileEntity te) { - return te.getBlockState() - .get(PulleyBlock.HORIZONTAL_AXIS); - } - - @Override - protected PartialModel getCoil() { - return AllBlockPartials.ROPE_COIL; - } - - @Override - protected SuperByteBuffer renderRope(KineticTileEntity te) { - return CreateClient.BUFFER_CACHE.renderBlock(AllBlocks.ROPE.getDefaultState()); - } - - @Override - protected SuperByteBuffer renderMagnet(KineticTileEntity te) { - return CreateClient.BUFFER_CACHE.renderBlock(AllBlocks.PULLEY_MAGNET.getDefaultState()); - } - - @Override - protected float getOffset(KineticTileEntity te, float partialTicks) { - PulleyTileEntity pulley = (PulleyTileEntity) te; - return getTileOffset(partialTicks, pulley); - } - - @Override - protected boolean isRunning(KineticTileEntity te) { - return ((PulleyTileEntity) te).running || te.isVirtual(); - } - - - static float getTileOffset(float partialTicks, PulleyTileEntity tile) { - float offset = tile.getInterpolatedOffset(partialTicks); - - if (tile.movedContraption != null) { - AbstractContraptionEntity e = tile.movedContraption; - PulleyContraption c = (PulleyContraption) tile.movedContraption.getContraption(); - double entityPos = MathHelper.lerp(partialTicks, e.lastTickPosY, e.getY()); - offset = (float) -(entityPos - c.anchor.getY() - c.initialOffset); - } - - return offset; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java deleted file mode 100644 index f892445c5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/PulleyTileEntity.java +++ /dev/null @@ -1,246 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.BlockMovementChecks; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; -import com.simibubi.create.content.contraptions.components.structureMovement.ControlledContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.LinearActuatorTileEntity; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.behaviour.CenteredSideValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class PulleyTileEntity extends LinearActuatorTileEntity { - - protected int initialOffset; - private float prevAnimatedOffset; - - public PulleyTileEntity(TileEntityType type) { - super(type); - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - return super.makeRenderBoundingBox().expand(0, -offset, 0); - } - - @Override - public double getMaxRenderDistanceSquared() { - return super.getMaxRenderDistanceSquared() + offset * offset; - } - - @Override - public void tick() { - super.tick(); - if (isVirtual()) - prevAnimatedOffset = offset; - } - - @Override - protected void assemble() throws AssemblyException { - if (!(world.getBlockState(pos) - .getBlock() instanceof PulleyBlock)) - return; - if (speed == 0) - return; - int maxLength = AllConfigs.SERVER.kinetics.maxRopeLength.get(); - int i = 1; - while (i <= maxLength) { - BlockPos ropePos = pos.down(i); - BlockState ropeState = world.getBlockState(ropePos); - if (!AllBlocks.ROPE.has(ropeState) && !AllBlocks.PULLEY_MAGNET.has(ropeState)) { - break; - } - ++i; - } - offset = i - 1; - if (offset >= getExtensionRange() && getSpeed() > 0) - return; - if (offset <= 0 && getSpeed() < 0) - return; - - // Collect Construct - if (!world.isRemote) { - BlockPos anchor = pos.down(MathHelper.floor(offset + 1)); - initialOffset = MathHelper.floor(offset); - PulleyContraption contraption = new PulleyContraption(initialOffset); - boolean canAssembleStructure = contraption.assemble(world, anchor); - - if (canAssembleStructure) { - Direction movementDirection = getSpeed() > 0 ? Direction.DOWN : Direction.UP; - if (ContraptionCollider.isCollidingWithWorld(world, contraption, anchor.offset(movementDirection), - movementDirection)) - canAssembleStructure = false; - } - - if (!canAssembleStructure && getSpeed() > 0) - return; - - for (i = ((int) offset); i > 0; i--) { - BlockPos offset = pos.down(i); - BlockState oldState = world.getBlockState(offset); - if (oldState.getBlock() instanceof IWaterLoggable && oldState.contains(BlockStateProperties.WATERLOGGED) - && oldState.get(BlockStateProperties.WATERLOGGED)) { - world.setBlockState(offset, Blocks.WATER.getDefaultState(), 66); - continue; - } - world.setBlockState(offset, Blocks.AIR.getDefaultState(), 66); - } - - if (!contraption.getBlocks().isEmpty()) { - contraption.removeBlocksFromWorld(world, BlockPos.ZERO); - movedContraption = ControlledContraptionEntity.create(world, this, contraption); - movedContraption.setPosition(anchor.getX(), anchor.getY(), anchor.getZ()); - world.addEntity(movedContraption); - forceMove = true; - } - } - - clientOffsetDiff = 0; - running = true; - sendData(); - } - - @Override - public void disassemble() { - if (!running && movedContraption == null) - return; - offset = getGridOffset(offset); - if (movedContraption != null) - applyContraptionPosition(); - - if (!world.isRemote) { - if (!removed) { - if (offset > 0) { - BlockPos magnetPos = pos.down((int) offset); - FluidState ifluidstate = world.getFluidState(magnetPos); - world.destroyBlock(magnetPos, world.getBlockState(magnetPos) - .getCollisionShape(world, magnetPos) - .isEmpty()); - world.setBlockState(magnetPos, AllBlocks.PULLEY_MAGNET.getDefaultState() - .with(BlockStateProperties.WATERLOGGED, - Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)), - 66); - } - - boolean[] waterlog = new boolean[(int) offset]; - - for (int i = 1; i <= ((int) offset) - 1; i++) { - BlockPos ropePos = pos.down(i); - FluidState ifluidstate = world.getFluidState(ropePos); - waterlog[i] = ifluidstate.getFluid() == Fluids.WATER; - world.destroyBlock(ropePos, world.getBlockState(ropePos) - .getCollisionShape(world, ropePos) - .isEmpty()); - } - for (int i = 1; i <= ((int) offset) - 1; i++) - world.setBlockState(pos.down(i), AllBlocks.ROPE.getDefaultState() - .with(BlockStateProperties.WATERLOGGED, waterlog[i]), 66); - } - - if (movedContraption != null) - movedContraption.disassemble(); - } - - if (movedContraption != null) - movedContraption.remove(); - movedContraption = null; - initialOffset = 0; - running = false; - sendData(); - } - - @Override - protected Vector3d toPosition(float offset) { - if (movedContraption.getContraption() instanceof PulleyContraption) { - PulleyContraption contraption = (PulleyContraption) movedContraption.getContraption(); - return Vector3d.of(contraption.anchor).add(0, contraption.initialOffset - offset, 0); - - } - return Vector3d.ZERO; - } - - @Override - protected void visitNewPosition() { - super.visitNewPosition(); - if (world.isRemote) - return; - if (movedContraption != null) - return; - if (getSpeed() <= 0) - return; - - BlockPos posBelow = pos.down((int) (offset + getMovementSpeed()) + 1); - BlockState state = world.getBlockState(posBelow); - if (!BlockMovementChecks.isMovementNecessary(state, world, posBelow)) - return; - if (BlockMovementChecks.isBrittle(state)) - return; - - disassemble(); - assembleNextTick = true; - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - initialOffset = compound.getInt("InitialOffset"); - super.fromTag(state, compound, clientPacket); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putInt("InitialOffset", initialOffset); - super.write(compound, clientPacket); - } - - @Override - protected int getExtensionRange() { - return Math.max(0, Math.min(AllConfigs.SERVER.kinetics.maxRopeLength.get(), pos.getY() - 1)); - } - - @Override - protected int getInitialOffset() { - return initialOffset; - } - - @Override - protected Vector3d toMotionVector(float speed) { - return new Vector3d(0, -speed, 0); - } - - @Override - protected ValueBoxTransform getMovementModeSlot() { - return new CenteredSideValueBoxTransform((state, d) -> d == Direction.UP); - } - - @Override - public float getInterpolatedOffset(float partialTicks) { - if (isVirtual()) - return MathHelper.lerp(partialTicks, prevAnimatedOffset, offset); - boolean moving = running && (movedContraption == null || !movedContraption.isStalled()); - return super.getInterpolatedOffset(moving ? partialTicks : 0.5f); - } - - public void animateOffset(float forcedOffset) { - offset = forcedOffset; - } - - @Override - public boolean shouldRenderNormally() { - return false; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java deleted file mode 100644 index 1fc46cab0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/pulley/RopePulleyInstance.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.pulley; - - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.OrientedData; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -public class RopePulleyInstance extends AbstractPulleyInstance { - final PulleyTileEntity tile = (PulleyTileEntity) super.tile; - - public RopePulleyInstance(MaterialManager dispatcher, PulleyTileEntity tile) { - super(dispatcher, tile); - beginFrame(); - } - - protected Instancer getRopeModel() { - return getOrientedMaterial().getModel(AllBlocks.ROPE.getDefaultState()); - } - - protected Instancer getMagnetModel() { - return getOrientedMaterial().getModel(AllBlocks.PULLEY_MAGNET.getDefaultState()); - } - - protected Instancer getHalfMagnetModel() { - return getOrientedMaterial().getModel(AllBlockPartials.ROPE_HALF_MAGNET, blockState); - } - - protected Instancer getCoilModel() { - return getOrientedMaterial().getModel(AllBlockPartials.ROPE_COIL, blockState, rotatingAbout); - } - - protected Instancer getHalfRopeModel() { - return getOrientedMaterial().getModel(AllBlockPartials.ROPE_HALF, blockState); - } - - protected float getOffset() { - float partialTicks = AnimationTickHolder.getPartialTicks(); - return PulleyRenderer.getTileOffset(partialTicks, tile); - } - - protected boolean isRunning() { - return tile.running || tile.isVirtual(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java deleted file mode 100644 index 4c02741d1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ActorInstance.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.world.LightType; - -public abstract class ActorInstance { - protected final MaterialManager materialManager; - protected final PlacementSimulationWorld simulationWorld; - protected final MovementContext context; - - public ActorInstance(MaterialManager materialManager, PlacementSimulationWorld world, MovementContext context) { - this.materialManager = materialManager; - this.simulationWorld = world; - this.context = context; - } - - public void tick() { } - - public void beginFrame() { } - - protected int localBlockLight() { - return simulationWorld.getLightLevel(LightType.BLOCK, context.localPos); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java deleted file mode 100644 index 1cf73852d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionInstanceManager.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.tuple.Pair; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileInstanceManager; -import com.simibubi.create.AllMovementBehaviours; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.gen.feature.template.Template; - -public class ContraptionInstanceManager extends TileInstanceManager { - - protected ArrayList actors = new ArrayList<>(); - - private final WeakReference contraption; - - ContraptionInstanceManager(RenderedContraption contraption, MaterialManager materialManager) { - super(materialManager); - this.contraption = new WeakReference<>(contraption); - } - - public void tick() { - actors.forEach(ActorInstance::tick); - } - - @Override - public void beginFrame(ActiveRenderInfo info) { - super.beginFrame(info); - - actors.forEach(ActorInstance::beginFrame); - } - - @Override - protected boolean shouldFrameUpdate(BlockPos worldPos, float lookX, float lookY, float lookZ, int cX, int cY, int cZ) { - return true; - } - - @Nullable - public ActorInstance createActor(Pair actor) { - Template.BlockInfo blockInfo = actor.getLeft(); - MovementContext context = actor.getRight(); - - MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state); - - if (movementBehaviour != null && movementBehaviour.hasSpecialInstancedRendering()) { - ActorInstance instance = movementBehaviour.createInstance(materialManager, getContraption().renderWorld, context); - - actors.add(instance); - - return instance; - } - - return null; - } - - public RenderedContraption getContraption() { - return contraption.get(); - } -} - diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMaterialManager.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMaterialManager.java deleted file mode 100644 index fc66294b9..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMaterialManager.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.MaterialRenderer; -import com.jozufozu.flywheel.core.WorldContext; -import com.jozufozu.flywheel.core.shader.IProgramCallback; - -import net.minecraft.client.renderer.RenderType; -import net.minecraft.util.math.vector.Matrix4f; - -public class ContraptionMaterialManager extends MaterialManager { - public ContraptionMaterialManager(WorldContext context) { - super(context); - } - - @Override - public void render(RenderType layer, Matrix4f viewProjection, double camX, double camY, double camZ, IProgramCallback callback) { - for (MaterialRenderer material : atlasRenderers) { - material.render(layer, viewProjection, camX, camY, camZ, callback); - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMatrices.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMatrices.java deleted file mode 100644 index d6e82d17d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionMatrices.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.entity.Entity; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Matrix3f; -import net.minecraft.util.math.vector.Matrix4f; - -public class ContraptionMatrices { - public final MatrixStack entityStack; - public final MatrixStack contraptionStack; - public final Matrix4f entityMatrix; - - public ContraptionMatrices(MatrixStack entityStack, AbstractContraptionEntity entity) { - this.entityStack = entityStack; - this.contraptionStack = new MatrixStack(); - float partialTicks = AnimationTickHolder.getPartialTicks(); - entity.doLocalTransforms(partialTicks, new MatrixStack[] { this.contraptionStack }); - entityMatrix = translateTo(entity, partialTicks); - } - - public MatrixStack getFinalStack() { - MatrixStack finalStack = new MatrixStack(); - transform(finalStack, entityStack); - transform(finalStack, contraptionStack); - return finalStack; - } - - public Matrix4f getFinalModel() { - Matrix4f finalModel = entityStack.peek().getModel().copy(); - finalModel.multiply(contraptionStack.peek().getModel()); - return finalModel; - } - - public Matrix3f getFinalNormal() { - Matrix3f finalNormal = entityStack.peek().getNormal().copy(); - finalNormal.multiply(contraptionStack.peek().getNormal()); - return finalNormal; - } - - public Matrix4f getFinalLight() { - Matrix4f lightTransform = entityMatrix.copy(); - lightTransform.multiply(contraptionStack.peek().getModel()); - return lightTransform; - } - - public static Matrix4f translateTo(Entity entity, float partialTicks) { - double x = MathHelper.lerp(partialTicks, entity.lastTickPosX, entity.getX()); - double y = MathHelper.lerp(partialTicks, entity.lastTickPosY, entity.getY()); - double z = MathHelper.lerp(partialTicks, entity.lastTickPosZ, entity.getZ()); - return Matrix4f.translate((float) x, (float) y, (float) z); - } - - public static void transform(MatrixStack ms, MatrixStack transform) { - ms.peek().getModel() - .multiply(transform.peek() - .getModel()); - ms.peek().getNormal() - .multiply(transform.peek() - .getNormal()); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionProgram.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionProgram.java deleted file mode 100644 index 529051f11..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionProgram.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import java.util.List; - -import org.lwjgl.opengl.GL20; - -import com.jozufozu.flywheel.backend.loading.Program; -import com.jozufozu.flywheel.core.shader.WorldProgram; -import com.jozufozu.flywheel.core.shader.extension.IProgramExtension; - -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Matrix4f; - -public class ContraptionProgram extends WorldProgram { - protected final int uLightBoxSize; - protected final int uLightBoxMin; - protected final int uModel; - - protected int uLightVolume; - - public ContraptionProgram(Program program, List extensions) { - super(program, extensions); - uLightBoxSize = getUniformLocation("uLightBoxSize"); - uLightBoxMin = getUniformLocation("uLightBoxMin"); - uModel = getUniformLocation("uModel"); - } - - @Override - protected void registerSamplers() { - super.registerSamplers(); - uLightVolume = setSamplerBinding("uLightVolume", 4); - } - - public void bind(Matrix4f model, AxisAlignedBB lightVolume) { - double sizeX = lightVolume.maxX - lightVolume.minX; - double sizeY = lightVolume.maxY - lightVolume.minY; - double sizeZ = lightVolume.maxZ - lightVolume.minZ; - GL20.glUniform3f(uLightBoxSize, (float) sizeX, (float) sizeY, (float) sizeZ); - GL20.glUniform3f(uLightBoxMin, (float) lightVolume.minX, (float) lightVolume.minY, (float) lightVolume.minZ); - uploadMatrixUniform(uModel, model); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java deleted file mode 100644 index ce4963c3e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionRenderDispatcher.java +++ /dev/null @@ -1,336 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import static org.lwjgl.opengl.GL11.glBindTexture; -import static org.lwjgl.opengl.GL13.GL_QUADS; -import static org.lwjgl.opengl.GL13.GL_TEXTURE0; -import static org.lwjgl.opengl.GL13.GL_TEXTURE4; -import static org.lwjgl.opengl.GL13.GL_TEXTURE_3D; -import static org.lwjgl.opengl.GL13.glActiveTexture; -import static org.lwjgl.opengl.GL13.glDisable; -import static org.lwjgl.opengl.GL13.glEnable; - -import java.util.List; -import java.util.Random; - -import org.apache.commons.lang3.tuple.Pair; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.event.BeginFrameEvent; -import com.jozufozu.flywheel.event.ReloadRenderersEvent; -import com.jozufozu.flywheel.event.RenderLayerEvent; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllMovementBehaviours; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; -import com.simibubi.create.foundation.render.AllProgramSpecs; -import com.simibubi.create.foundation.render.Compartment; -import com.simibubi.create.foundation.render.CreateContexts; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.render.SuperByteBufferCache; -import com.simibubi.create.foundation.render.TileEntityRenderHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.BlockModelRenderer; -import net.minecraft.client.renderer.BlockModelShapes; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.LightType; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template; -import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.client.model.data.EmptyModelData; -import net.minecraftforge.common.util.Lazy; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber -public class ContraptionRenderDispatcher { - private static final Lazy MODEL_RENDERER = Lazy.of(() -> new BlockModelRenderer(Minecraft.getInstance().getBlockColors())); - private static final Lazy BLOCK_MODELS = Lazy.of(() -> Minecraft.getInstance().getModelManager().getBlockModelShapes()); - private static int worldHolderRefreshCounter; - - public static final Int2ObjectMap RENDERERS = new Int2ObjectOpenHashMap<>(); - public static final Int2ObjectMap WORLD_HOLDERS = new Int2ObjectOpenHashMap<>(); - public static final Compartment> CONTRAPTION = new Compartment<>(); - - public static void tick() { - if (Minecraft.getInstance().isGamePaused()) return; - - for (RenderedContraption contraption : RENDERERS.values()) { - contraption.getLighter().tick(contraption); - - contraption.kinetics.tick(); - } - - worldHolderRefreshCounter++; - if (worldHolderRefreshCounter >= 20) { - removeDeadHolders(); - worldHolderRefreshCounter = 0; - } - } - - @SubscribeEvent - public static void beginFrame(BeginFrameEvent event) { - ActiveRenderInfo info = event.getInfo(); - double camX = info.getProjectedView().x; - double camY = info.getProjectedView().y; - double camZ = info.getProjectedView().z; - for (RenderedContraption renderer : RENDERERS.values()) { - renderer.beginFrame(info, camX, camY, camZ); - } - } - - @SubscribeEvent - public static void renderLayer(RenderLayerEvent event) { - removeDeadContraptions(); - - if (RENDERERS.isEmpty()) return; - RenderType layer = event.getType(); - - layer.startDrawing(); - glEnable(GL_TEXTURE_3D); - glActiveTexture(GL_TEXTURE4); // the shaders expect light volumes to be in texture 4 - - if (Backend.getInstance().canUseVBOs()) { - ContraptionProgram structureShader = CreateContexts.STRUCTURE.getProgram(AllProgramSpecs.STRUCTURE); - - structureShader.bind(); - structureShader.uploadViewProjection(event.viewProjection); - structureShader.uploadCameraPos(event.camX, event.camY, event.camZ); - - for (RenderedContraption renderer : RENDERERS.values()) { - renderer.doRenderLayer(layer, structureShader); - } - } - - if (Backend.getInstance().canUseInstancing()) { - for (RenderedContraption renderer : RENDERERS.values()) { - renderer.materialManager.render(layer, event.viewProjection, event.camX, event.camY, event.camZ, renderer::setup); - } - } - - glBindTexture(GL_TEXTURE_3D, 0); - layer.endDrawing(); - glDisable(GL_TEXTURE_3D); - glActiveTexture(GL_TEXTURE0); - } - - @SubscribeEvent - public static void onRendererReload(ReloadRenderersEvent event) { - invalidateAll(); - } - - public static void render(AbstractContraptionEntity entity, Contraption contraption, - ContraptionMatrices matrices, IRenderTypeBuffer buffers) { - World world = entity.world; - if (Backend.getInstance().canUseVBOs() && Backend.isFlywheelWorld(world)) { - RenderedContraption renderer = getRenderer(world, contraption); - PlacementSimulationWorld renderWorld = renderer.renderWorld; - - ContraptionRenderDispatcher.renderDynamic(world, renderWorld, contraption, matrices, buffers); - } else { - ContraptionWorldHolder holder = getWorldHolder(world, contraption); - PlacementSimulationWorld renderWorld = holder.renderWorld; - - ContraptionRenderDispatcher.renderDynamic(world, renderWorld, contraption, matrices, buffers); - ContraptionRenderDispatcher.renderStructure(world, renderWorld, contraption, matrices, buffers); - } - } - - private static RenderedContraption getRenderer(World world, Contraption c) { - int entityId = c.entity.getEntityId(); - RenderedContraption contraption = RENDERERS.get(entityId); - - if (contraption == null) { - PlacementSimulationWorld renderWorld = setupRenderWorld(world, c); - contraption = new RenderedContraption(c, renderWorld); - RENDERERS.put(entityId, contraption); - } - - return contraption; - } - - private static ContraptionWorldHolder getWorldHolder(World world, Contraption c) { - int entityId = c.entity.getEntityId(); - ContraptionWorldHolder holder = WORLD_HOLDERS.get(entityId); - - if (holder == null) { - PlacementSimulationWorld renderWorld = setupRenderWorld(world, c); - holder = new ContraptionWorldHolder(c, renderWorld); - WORLD_HOLDERS.put(entityId, holder); - } - - return holder; - } - - public static PlacementSimulationWorld setupRenderWorld(World world, Contraption c) { - PlacementSimulationWorld renderWorld = new PlacementSimulationWorld(world); - - renderWorld.setTileEntities(c.presentTileEntities.values()); - - for (Template.BlockInfo info : c.getBlocks() - .values()) - // Skip individual lighting updates to prevent lag with large contraptions - renderWorld.setBlockState(info.pos, info.state, 128); - - renderWorld.updateLightSources(); - renderWorld.lighter.tick(Integer.MAX_VALUE, false, false); - - return renderWorld; - } - - public static void renderDynamic(World world, PlacementSimulationWorld renderWorld, Contraption c, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - renderTileEntities(world, renderWorld, c, matrices, buffer); - if (buffer instanceof IRenderTypeBuffer.Impl) - ((IRenderTypeBuffer.Impl) buffer).draw(); - renderActors(world, renderWorld, c, matrices, buffer); - } - - public static void renderTileEntities(World world, PlacementSimulationWorld renderWorld, Contraption c, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - TileEntityRenderHelper.renderTileEntities(world, renderWorld, c.specialRenderedTileEntities, - matrices.getFinalStack(), matrices.getFinalLight(), buffer); - } - - protected static void renderActors(World world, PlacementSimulationWorld renderWorld, Contraption c, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - for (Pair actor : c.getActors()) { - MovementContext context = actor.getRight(); - if (context == null) - continue; - if (context.world == null) - context.world = world; - Template.BlockInfo blockInfo = actor.getLeft(); - - MatrixStack m = matrices.contraptionStack; - m.push(); - MatrixStacker.of(m) - .translate(blockInfo.pos); - - MovementBehaviour movementBehaviour = AllMovementBehaviours.of(blockInfo.state); - if (movementBehaviour != null) - movementBehaviour.renderInContraption(context, renderWorld, matrices, buffer); - - m.pop(); - } - } - - public static void renderStructure(World world, PlacementSimulationWorld renderWorld, Contraption c, - ContraptionMatrices matrices, IRenderTypeBuffer buffer) { - SuperByteBufferCache bufferCache = CreateClient.BUFFER_CACHE; - List blockLayers = RenderType.getBlockLayers(); - - buffer.getBuffer(RenderType.getSolid()); - for (int i = 0; i < blockLayers.size(); i++) { - RenderType layer = blockLayers.get(i); - Pair key = Pair.of(c, i); - SuperByteBuffer contraptionBuffer = bufferCache.get(CONTRAPTION, key, () -> buildStructureBuffer(renderWorld, c, layer)); - if (contraptionBuffer.isEmpty()) - continue; - contraptionBuffer - .transform(matrices.contraptionStack) - .light(matrices.entityMatrix) - .hybridLight() - .renderInto(matrices.entityStack, buffer.getBuffer(layer)); - } - } - - private static SuperByteBuffer buildStructureBuffer(PlacementSimulationWorld renderWorld, Contraption c, RenderType layer) { - BufferBuilder builder = buildStructure(renderWorld, c, layer); - return new SuperByteBuffer(builder); - } - - public static BufferBuilder buildStructure(PlacementSimulationWorld renderWorld, Contraption c, RenderType layer) { - MatrixStack ms = new MatrixStack(); - Random random = new Random(); - BufferBuilder builder = new BufferBuilder(DefaultVertexFormats.BLOCK.getIntegerSize()); - builder.begin(GL_QUADS, DefaultVertexFormats.BLOCK); - - ForgeHooksClient.setRenderLayer(layer); - BlockModelRenderer.enableCache(); - for (Template.BlockInfo info : c.getBlocks() - .values()) { - BlockState state = info.state; - - if (state.getRenderType() != BlockRenderType.MODEL) - continue; - if (!RenderTypeLookup.canRenderInLayer(state, layer)) - continue; - - BlockPos pos = info.pos; - - ms.push(); - ms.translate(pos.getX(), pos.getY(), pos.getZ()); - MODEL_RENDERER.get().renderModel(renderWorld, BLOCK_MODELS.get().getModel(state), state, pos, ms, builder, true, - random, 42, OverlayTexture.DEFAULT_UV, EmptyModelData.INSTANCE); - ms.pop(); - } - BlockModelRenderer.disableCache(); - ForgeHooksClient.setRenderLayer(null); - - builder.finishDrawing(); - return builder; - } - - public static int getLight(World world, float lx, float ly, float lz) { - BlockPos.Mutable pos = new BlockPos.Mutable(); - float block = 0, sky = 0; - float offset = 1 / 8f; - - for (float zOffset = offset; zOffset >= -offset; zOffset -= 2 * offset) - for (float yOffset = offset; yOffset >= -offset; yOffset -= 2 * offset) - for (float xOffset = offset; xOffset >= -offset; xOffset -= 2 * offset) { - pos.setPos(lx + xOffset, ly + yOffset, lz + zOffset); - block += world.getLightLevel(LightType.BLOCK, pos) / 8f; - sky += world.getLightLevel(LightType.SKY, pos) / 8f; - } - - return LightTexture.pack((int) block, (int) sky); - } - - public static int getContraptionWorldLight(MovementContext context, PlacementSimulationWorld renderWorld) { - return WorldRenderer.getLightmapCoordinates(renderWorld, context.localPos); - } - - public static void invalidateAll() { - for (RenderedContraption renderer : RENDERERS.values()) { - renderer.invalidate(); - } - - RENDERERS.clear(); - WORLD_HOLDERS.clear(); - } - - public static void removeDeadContraptions() { - RENDERERS.values().removeIf(renderer -> { - if (renderer.isDead()) { - renderer.invalidate(); - return true; - } - return false; - }); - } - - public static void removeDeadHolders() { - WORLD_HOLDERS.values().removeIf(ContraptionWorldHolder::isDead); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionWorldHolder.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionWorldHolder.java deleted file mode 100644 index 4ae414016..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/ContraptionWorldHolder.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -public class ContraptionWorldHolder { - public final Contraption contraption; - public final PlacementSimulationWorld renderWorld; - - public ContraptionWorldHolder(Contraption contraption, PlacementSimulationWorld renderWorld) { - this.contraption = contraption; - this.renderWorld = renderWorld; - } - - public int getEntityId() { - return contraption.entity.getEntityId(); - } - - public boolean isDead() { - return !contraption.entity.isAlive(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java deleted file mode 100644 index da4a5384b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/EmptyLighter.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; - -// so other contraptions don't crash before they have a lighter -public class EmptyLighter extends ContraptionLighter { - public EmptyLighter(Contraption contraption) { - super(contraption); - } - - @Override - public GridAlignedBB getContraptionBounds() { - return new GridAlignedBB(0, 0, 0, 1, 1, 1); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/LightVolumeDebugger.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/LightVolumeDebugger.java deleted file mode 100644 index 8645e4077..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/LightVolumeDebugger.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import java.util.ArrayList; - -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Pair; -import com.simibubi.create.foundation.utility.outliner.AABBOutline; - -public class LightVolumeDebugger { - public static void render(MatrixStack ms, SuperRenderTypeBuffer buffer) { - ContraptionRenderDispatcher.RENDERERS.values() - .stream() - .flatMap(r -> { - GridAlignedBB texture = r.getLighter().lightVolume.getTextureVolume(); - GridAlignedBB sample = r.getLighter().lightVolume.getSampleVolume(); - - ArrayList> pairs = new ArrayList<>(2); - - pairs.add(Pair.of(texture, 0xFFFFFF)); - pairs.add(Pair.of(sample, 0xFFFF00)); - - return pairs.stream(); - }) - .map(pair -> { - AABBOutline outline = new AABBOutline(GridAlignedBB.toAABB(pair.getFirst())); - - outline.getParams().colored(pair.getSecond()); - return outline; - }) - .forEach(outline -> outline.render(ms, buffer, AnimationTickHolder.getPartialTicks())); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java deleted file mode 100644 index 84ce22b80..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/render/RenderedContraption.java +++ /dev/null @@ -1,207 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.render; - -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.gl.attrib.CommonAttributes; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; -import com.jozufozu.flywheel.backend.instancing.IInstanceRendered; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.backend.model.ArrayModelRenderer; -import com.jozufozu.flywheel.backend.model.BufferedModel; -import com.jozufozu.flywheel.backend.model.IndexedModel; -import com.jozufozu.flywheel.backend.model.ModelRenderer; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.util.BufferBuilderReader; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionLighter; -import com.simibubi.create.foundation.render.CreateContexts; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.world.World; - -public class RenderedContraption extends ContraptionWorldHolder { - public static final VertexFormat FORMAT = VertexFormat.builder() - .addAttributes(CommonAttributes.VEC3, - CommonAttributes.NORMAL, - CommonAttributes.UV, - CommonAttributes.RGBA, - CommonAttributes.LIGHT) - .build(); - - private final ContraptionLighter lighter; - - public final MaterialManager materialManager; - public final ContraptionInstanceManager kinetics; - - private final Map renderLayers = new HashMap<>(); - - private Matrix4f model; - private AxisAlignedBB lightBox; - - public RenderedContraption(Contraption contraption, PlacementSimulationWorld renderWorld) { - super(contraption, renderWorld); - this.lighter = contraption.makeLighter(); - this.materialManager = new ContraptionMaterialManager(CreateContexts.CWORLD); - this.kinetics = new ContraptionInstanceManager(this, materialManager); - - buildLayers(); - if (Backend.getInstance().canUseInstancing()) { - buildInstancedTiles(); - buildActors(); - } - } - - public ContraptionLighter getLighter() { - return lighter; - } - - public void doRenderLayer(RenderType layer, ContraptionProgram shader) { - ModelRenderer structure = renderLayers.get(layer); - if (structure != null) { - setup(shader); - structure.draw(); - } - } - - public void beginFrame(ActiveRenderInfo info, double camX, double camY, double camZ) { - kinetics.beginFrame(info); - - AbstractContraptionEntity entity = contraption.entity; - float pt = AnimationTickHolder.getPartialTicks(); - - MatrixStack stack = new MatrixStack(); - - double x = MathHelper.lerp(pt, entity.lastTickPosX, entity.getX()) - camX; - double y = MathHelper.lerp(pt, entity.lastTickPosY, entity.getY()) - camY; - double z = MathHelper.lerp(pt, entity.lastTickPosZ, entity.getZ()) - camZ; - stack.translate(x, y, z); - - entity.doLocalTransforms(pt, new MatrixStack[] { stack }); - - model = stack.peek().getModel(); - - AxisAlignedBB lightBox = GridAlignedBB.toAABB(lighter.lightVolume.getTextureVolume()); - - this.lightBox = lightBox.offset(-camX, -camY, -camZ); - } - - void setup(ContraptionProgram shader) { - if (model == null || lightBox == null) return; - shader.bind(model, lightBox); - lighter.lightVolume.bind(); - } - - void invalidate() { - for (ModelRenderer buffer : renderLayers.values()) { - buffer.delete(); - } - renderLayers.clear(); - - lighter.lightVolume.delete(); - - materialManager.delete(); - kinetics.invalidate(); - } - - private void buildLayers() { - for (ModelRenderer buffer : renderLayers.values()) { - buffer.delete(); - } - - renderLayers.clear(); - - List blockLayers = RenderType.getBlockLayers(); - - for (RenderType layer : blockLayers) { - BufferedModel layerModel = buildStructureModel(renderWorld, contraption, layer); - - if (layerModel != null) { - if (Backend.getInstance().compat.vertexArrayObjectsSupported()) - renderLayers.put(layer, new ArrayModelRenderer(layerModel)); - else - renderLayers.put(layer, new ModelRenderer(layerModel)); - } - } - } - - private void buildInstancedTiles() { - Collection tileEntities = contraption.maybeInstancedTileEntities; - if (!tileEntities.isEmpty()) { - for (TileEntity te : tileEntities) { - if (te instanceof IInstanceRendered) { - World world = te.getWorld(); - BlockPos pos = te.getPos(); - te.setLocation(renderWorld, pos); - kinetics.add(te); - te.setLocation(world, pos); - } - } - } - } - - private void buildActors() { - contraption.getActors().forEach(kinetics::createActor); - } - - @Nullable - private static BufferedModel buildStructureModel(PlacementSimulationWorld renderWorld, Contraption c, RenderType layer) { - BufferBuilderReader reader = new BufferBuilderReader(ContraptionRenderDispatcher.buildStructure(renderWorld, c, layer)); - - int vertexCount = reader.getVertexCount(); - if (vertexCount == 0) return null; - - VertexFormat format = FORMAT; - - ByteBuffer vertices = ByteBuffer.allocate(format.getStride() * vertexCount); - vertices.order(ByteOrder.nativeOrder()); - - for (int i = 0; i < vertexCount; i++) { - vertices.putFloat(reader.getX(i)); - vertices.putFloat(reader.getY(i)); - vertices.putFloat(reader.getZ(i)); - - vertices.put(reader.getNX(i)); - vertices.put(reader.getNY(i)); - vertices.put(reader.getNZ(i)); - - vertices.putFloat(reader.getU(i)); - vertices.putFloat(reader.getV(i)); - - vertices.put(reader.getR(i)); - vertices.put(reader.getG(i)); - vertices.put(reader.getB(i)); - vertices.put(reader.getA(i)); - - int light = reader.getLight(i); - - byte block = (byte) (LightTexture.getBlockLightCoordinates(light) << 4); - byte sky = (byte) (LightTexture.getSkyLightCoordinates(light) << 4); - - vertices.put(block); - vertices.put(sky); - } - - vertices.rewind(); - - return IndexedModel.fromSequentialQuads(format, vertices, vertexCount); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ClientMotionPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ClientMotionPacket.java deleted file mode 100644 index 1a4c7307c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ClientMotionPacket.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.sync; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.fml.network.NetworkEvent.Context; -import net.minecraftforge.fml.network.PacketDistributor; - -public class ClientMotionPacket extends SimplePacketBase { - - private Vector3d motion; - private boolean onGround; - private float limbSwing; - - public ClientMotionPacket(Vector3d motion, boolean onGround, float limbSwing) { - this.motion = motion; - this.onGround = onGround; - this.limbSwing = limbSwing; - } - - public ClientMotionPacket(PacketBuffer buffer) { - motion = new Vector3d(buffer.readFloat(), buffer.readFloat(), buffer.readFloat()); - onGround = buffer.readBoolean(); - limbSwing = buffer.readFloat(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeFloat((float) motion.x); - buffer.writeFloat((float) motion.y); - buffer.writeFloat((float) motion.z); - buffer.writeBoolean(onGround); - buffer.writeFloat(limbSwing); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - ServerPlayerEntity sender = context.get() - .getSender(); - if (sender == null) - return; - sender.setMotion(motion); - sender.setOnGround(onGround); - if (onGround) { - sender.handleFallDamage(sender.fallDistance, 1); - sender.fallDistance = 0; - sender.connection.floatingTickCount = 0; - } - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> sender), - new LimbSwingUpdatePacket(sender.getEntityId(), sender.getPositionVec(), limbSwing)); - }); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionFluidPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionFluidPacket.java deleted file mode 100644 index bc0d308bd..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionFluidPacket.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.sync; - -import java.util.function.Supplier; - -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class ContraptionFluidPacket extends SimplePacketBase { - - private int entityId; - private BlockPos localPos; - private FluidStack containedFluid; - - public ContraptionFluidPacket(int entityId, BlockPos localPos, FluidStack containedFluid) { - this.entityId = entityId; - this.localPos = localPos; - this.containedFluid = containedFluid; - } - - public ContraptionFluidPacket(PacketBuffer buffer) { - entityId = buffer.readInt(); - localPos = buffer.readBlockPos(); - containedFluid = FluidStack.readFromPacket(buffer); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(entityId); - buffer.writeBlockPos(localPos); - containedFluid.writeToPacket(buffer); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - Entity entityByID = Minecraft.getInstance().world.getEntityByID(entityId); - if (!(entityByID instanceof AbstractContraptionEntity)) - return; - AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID; - contraptionEntity.getContraption().updateContainedFluid(localPos, containedFluid); - }); - context.get() - .setPacketHandled(true); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionInteractionPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionInteractionPacket.java deleted file mode 100644 index 1120719d6..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionInteractionPacket.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.sync; - -import java.util.function.Supplier; - -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.common.ForgeMod; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class ContraptionInteractionPacket extends SimplePacketBase { - - private Hand interactionHand; - private int target; - private BlockPos localPos; - private Direction face; - - public ContraptionInteractionPacket(AbstractContraptionEntity target, Hand hand, BlockPos localPos, Direction side) { - this.interactionHand = hand; - this.localPos = localPos; - this.target = target.getEntityId(); - this.face = side; - } - - public ContraptionInteractionPacket(PacketBuffer buffer) { - target = buffer.readInt(); - int handId = buffer.readInt(); - interactionHand = handId == -1 ? null : Hand.values()[handId]; - localPos = buffer.readBlockPos(); - face = Direction.byIndex(buffer.readShort()); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(target); - buffer.writeInt(interactionHand == null ? -1 : interactionHand.ordinal()); - buffer.writeBlockPos(localPos); - buffer.writeShort(face.getIndex()); - } - - @Override - public void handle(Supplier context) { - context.get().enqueueWork(() -> { - ServerPlayerEntity sender = context.get().getSender(); - if (sender == null) - return; - Entity entityByID = sender.getServerWorld().getEntityByID(target); - if (!(entityByID instanceof AbstractContraptionEntity)) - return; - AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID; - double d = sender.getAttribute(ForgeMod.REACH_DISTANCE.get()).getValue() + 10; - if (!sender.canEntityBeSeen(entityByID)) - d -= 3; - d *= d; - if (sender.getDistanceSq(entityByID) > d) { - // TODO log? - return; - } - if (contraptionEntity.handlePlayerInteraction(sender, localPos, face, interactionHand)) - sender.swingHand(interactionHand, true); - }); - context.get().setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionSeatMappingPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionSeatMappingPacket.java deleted file mode 100644 index 6d6ce8d8f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/ContraptionSeatMappingPacket.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.sync; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import java.util.function.Supplier; - -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class ContraptionSeatMappingPacket extends SimplePacketBase { - - private Map mapping; - private int entityID; - - public ContraptionSeatMappingPacket(int entityID, Map mapping) { - this.entityID = entityID; - this.mapping = mapping; - } - - public ContraptionSeatMappingPacket(PacketBuffer buffer) { - entityID = buffer.readInt(); - mapping = new HashMap<>(); - short size = buffer.readShort(); - for (int i = 0; i < size; i++) - mapping.put(buffer.readUniqueId(), (int) buffer.readShort()); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(entityID); - buffer.writeShort(mapping.size()); - mapping.forEach((k, v) -> { - buffer.writeUniqueId(k); - buffer.writeShort(v); - }); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - Entity entityByID = Minecraft.getInstance().world.getEntityByID(entityID); - if (!(entityByID instanceof AbstractContraptionEntity)) - return; - AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID; - contraptionEntity.getContraption() - .setSeatMapping(mapping); - }); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/LimbSwingUpdatePacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/LimbSwingUpdatePacket.java deleted file mode 100644 index c4f1f70a8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/sync/LimbSwingUpdatePacket.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.sync; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class LimbSwingUpdatePacket extends SimplePacketBase { - - private int entityId; - private Vector3d position; - private float limbSwing; - - public LimbSwingUpdatePacket(int entityId, Vector3d position, float limbSwing) { - this.entityId = entityId; - this.position = position; - this.limbSwing = limbSwing; - } - - public LimbSwingUpdatePacket(PacketBuffer buffer) { - entityId = buffer.readInt(); - position = new Vector3d(buffer.readFloat(), buffer.readFloat(), buffer.readFloat()); - limbSwing = buffer.readFloat(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(entityId); - buffer.writeFloat((float) position.x); - buffer.writeFloat((float) position.y); - buffer.writeFloat((float) position.z); - buffer.writeFloat(limbSwing); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - ClientWorld world = Minecraft.getInstance().world; - if (world == null) - return; - Entity entity = world.getEntityByID(entityId); - if (entity == null) - return; - CompoundNBT data = entity.getPersistentData(); - data.putInt("LastOverrideLimbSwingUpdate", 0); - data.putFloat("OverrideLimbSwing", limbSwing); - entity.setPositionAndRotationDirect(position.x, position.y, position.z, entity.rotationYaw, - entity.rotationPitch, 2, false); - }); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingCreationPacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingCreationPacket.java deleted file mode 100644 index 795a3e89e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingCreationPacket.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class CouplingCreationPacket extends SimplePacketBase { - - int id1, id2; - - public CouplingCreationPacket(AbstractMinecartEntity cart1, AbstractMinecartEntity cart2) { - id1 = cart1.getEntityId(); - id2 = cart2.getEntityId(); - } - - public CouplingCreationPacket(PacketBuffer buffer) { - id1 = buffer.readInt(); - id2 = buffer.readInt(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(id1); - buffer.writeInt(id2); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - ServerPlayerEntity sender = context.get() - .getSender(); - if (sender != null) - CouplingHandler.tryToCoupleCarts(sender, sender.world, id1, id2); - }); - context.get() - .setPacketHandled(true); - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandler.java deleted file mode 100644 index e16e87de6..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandler.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train; - -import java.util.Set; -import java.util.UUID; -import java.util.function.Consumer; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllItems; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.event.entity.EntityMountEvent; -import net.minecraftforge.eventbus.api.Event.Result; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class CouplingHandler { - - @SubscribeEvent - public static void preventEntitiesFromMoutingOccupiedCart(EntityMountEvent event) { - Entity e = event.getEntityBeingMounted(); - LazyOptional optional = e.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); - if (!optional.isPresent()) - return; - if (event.getEntityMounting() instanceof AbstractContraptionEntity) - return; - MinecartController controller = optional.orElse(null); - if (controller.isCoupledThroughContraption()) { - event.setCanceled(true); - event.setResult(Result.DENY); - } - } - - public static void forEachLoadedCoupling(World world, Consumer> consumer) { - if (world == null) - return; - Set cartsWithCoupling = CapabilityMinecartController.loadedMinecartsWithCoupling.get(world); - if (cartsWithCoupling == null) - return; - cartsWithCoupling.forEach(id -> { - MinecartController controller = CapabilityMinecartController.getIfPresent(world, id); - if (controller == null) - return; - if (!controller.isLeadingCoupling()) - return; - UUID coupledCart = controller.getCoupledCart(true); - MinecartController coupledController = CapabilityMinecartController.getIfPresent(world, coupledCart); - if (coupledController == null) - return; - consumer.accept(Couple.create(controller, coupledController)); - }); - } - - public static boolean tryToCoupleCarts(@Nullable PlayerEntity player, World world, int cartId1, int cartId2) { - Entity entity1 = world.getEntityByID(cartId1); - Entity entity2 = world.getEntityByID(cartId2); - - if (!(entity1 instanceof AbstractMinecartEntity)) - return false; - if (!(entity2 instanceof AbstractMinecartEntity)) - return false; - - String tooMany = "two_couplings_max"; - String unloaded = "unloaded"; - String noLoops = "no_loops"; - String tooFar = "too_far"; - - int distanceTo = (int) entity1.getPositionVec() - .distanceTo(entity2.getPositionVec()); - boolean contraptionCoupling = player == null; - - if (distanceTo < 2) { - if (contraptionCoupling) - return false; // dont allow train contraptions with <2 distance - distanceTo = 2; - } - - if (distanceTo > AllConfigs.SERVER.kinetics.maxCartCouplingLength.get()) { - status(player, tooFar); - return false; - } - - AbstractMinecartEntity cart1 = (AbstractMinecartEntity) entity1; - AbstractMinecartEntity cart2 = (AbstractMinecartEntity) entity2; - UUID mainID = cart1.getUniqueID(); - UUID connectedID = cart2.getUniqueID(); - MinecartController mainController = CapabilityMinecartController.getIfPresent(world, mainID); - MinecartController connectedController = CapabilityMinecartController.getIfPresent(world, connectedID); - - if (mainController == null || connectedController == null) { - status(player, unloaded); - return false; - } - if (mainController.isFullyCoupled() || connectedController.isFullyCoupled()) { - status(player, tooMany); - return false; - } - - if (mainController.isLeadingCoupling() && mainController.getCoupledCart(true) - .equals(connectedID) || connectedController.isLeadingCoupling() - && connectedController.getCoupledCart(true) - .equals(mainID)) - return false; - - for (boolean main : Iterate.trueAndFalse) { - MinecartController current = main ? mainController : connectedController; - boolean forward = current.isLeadingCoupling(); - int safetyCount = 1000; - - while (true) { - if (safetyCount-- <= 0) { - Create.LOGGER.warn("Infinite loop in coupling iteration"); - return false; - } - - current = getNextInCouplingChain(world, current, forward); - if (current == null) { - status(player, unloaded); - return false; - } - if (current == connectedController) { - status(player, noLoops); - return false; - } - if (current == MinecartController.EMPTY) - break; - } - } - - if (!contraptionCoupling) { - for (Hand hand : Hand.values()) { - if (player.isCreative()) - break; - ItemStack heldItem = player.getHeldItem(hand); - if (!AllItems.MINECART_COUPLING.isIn(heldItem)) - continue; - heldItem.shrink(1); - break; - } - } - - mainController.prepareForCoupling(true); - connectedController.prepareForCoupling(false); - - mainController.coupleWith(true, connectedID, distanceTo, contraptionCoupling); - connectedController.coupleWith(false, mainID, distanceTo, contraptionCoupling); - return true; - } - - @Nullable - /** - * MinecartController.EMPTY if none connected, null if not yet loaded - */ - public static MinecartController getNextInCouplingChain(World world, MinecartController controller, - boolean forward) { - UUID coupledCart = controller.getCoupledCart(forward); - if (coupledCart == null) - return MinecartController.empty(); - return CapabilityMinecartController.getIfPresent(world, coupledCart); - } - - public static void status(PlayerEntity player, String key) { - if (player == null) - return; - player.sendStatusMessage(Lang.translate("minecart_coupling." + key), true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandlerClient.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandlerClient.java deleted file mode 100644 index 00fda4789..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingHandlerClient.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train; - -import java.util.Random; - -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.particles.RedstoneParticleData; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Vector3d; - -public class CouplingHandlerClient { - - static AbstractMinecartEntity selectedCart; - static Random r = new Random(); - - public static void tick() { - if (selectedCart == null) - return; - spawnSelectionParticles(selectedCart.getBoundingBox(), false); - ClientPlayerEntity player = Minecraft.getInstance().player; - ItemStack heldItemMainhand = player.getHeldItemMainhand(); - ItemStack heldItemOffhand = player.getHeldItemOffhand(); - if (AllItems.MINECART_COUPLING.isIn(heldItemMainhand) || AllItems.MINECART_COUPLING.isIn(heldItemOffhand)) - return; - selectedCart = null; - } - - static void onCartClicked(PlayerEntity player, AbstractMinecartEntity entity) { - if (Minecraft.getInstance().player != player) - return; - if (selectedCart == null || selectedCart == entity) { - selectedCart = entity; - spawnSelectionParticles(selectedCart.getBoundingBox(), true); - return; - } - spawnSelectionParticles(entity.getBoundingBox(), true); - AllPackets.channel.sendToServer(new CouplingCreationPacket(selectedCart, entity)); - selectedCart = null; - } - - static void sneakClick() { - selectedCart = null; - } - - private static void spawnSelectionParticles(AxisAlignedBB axisAlignedBB, boolean highlight) { - ClientWorld world = Minecraft.getInstance().world; - Vector3d center = axisAlignedBB.getCenter(); - int amount = highlight ? 100 : 2; - IParticleData particleData = highlight ? ParticleTypes.END_ROD : new RedstoneParticleData(1, 1, 1, 1); - for (int i = 0; i < amount; i++) { - Vector3d v = VecHelper.offsetRandomly(Vector3d.ZERO, r, 1); - double yOffset = v.y; - v = v.mul(1, 0, 1) - .normalize() - .add(0, yOffset / 8f, 0) - .add(center); - world.addParticle(particleData, v.x, v.y, v.z, 0, 0, 0); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingPhysics.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingPhysics.java deleted file mode 100644 index e16ea5263..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingPhysics.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train; - -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.MoverType; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.state.properties.RailShape; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; - -public class CouplingPhysics { - - public static void tick(World world) { - CouplingHandler.forEachLoadedCoupling(world, c -> tickCoupling(world, c)); - } - - public static void tickCoupling(World world, Couple c) { - Couple carts = c.map(MinecartController::cart); - float couplingLength = c.getFirst() - .getCouplingLength(true); - softCollisionStep(world, carts, couplingLength); - if (world.isRemote) - return; - hardCollisionStep(world, carts, couplingLength); - } - - public static void hardCollisionStep(World world, Couple carts, double couplingLength) { - if (!MinecartSim2020.canAddMotion(carts.get(false)) && MinecartSim2020.canAddMotion(carts.get(true))) - carts = carts.swap(); - - Couple corrections = Couple.create(null, null); - Couple maxSpeed = carts.map(AbstractMinecartEntity::getMaxCartSpeedOnRail); - boolean firstLoop = true; - for (boolean current : new boolean[] { true, false, true }) { - AbstractMinecartEntity cart = carts.get(current); - AbstractMinecartEntity otherCart = carts.get(!current); - - float stress = (float) (couplingLength - cart.getPositionVec() - .distanceTo(otherCart.getPositionVec())); - - if (Math.abs(stress) < 1 / 8f) - continue; - - RailShape shape = null; - BlockPos railPosition = cart.getCurrentRailPosition(); - BlockState railState = world.getBlockState(railPosition.up()); - - if (railState.getBlock() instanceof AbstractRailBlock) { - AbstractRailBlock block = (AbstractRailBlock) railState.getBlock(); - shape = block.getRailDirection(railState, world, railPosition, cart); - } - - Vector3d correction = Vector3d.ZERO; - Vector3d pos = cart.getPositionVec(); - Vector3d link = otherCart.getPositionVec() - .subtract(pos); - float correctionMagnitude = firstLoop ? -stress / 2f : -stress; - - if (!MinecartSim2020.canAddMotion(cart)) - correctionMagnitude /= 2; - - correction = shape != null - ? followLinkOnRail(link, pos, correctionMagnitude, MinecartSim2020.getRailVec(shape)).subtract(pos) - : link.normalize() - .scale(correctionMagnitude); - - float maxResolveSpeed = 1.75f; - correction = VecHelper.clamp(correction, Math.min(maxResolveSpeed, maxSpeed.get(current))); - - if (corrections.get(current) == null) - corrections.set(current, correction); - - if (shape != null) - MinecartSim2020.moveCartAlongTrack(cart, correction, railPosition, railState); - else { - cart.move(MoverType.SELF, correction); - cart.setMotion(cart.getMotion() - .scale(0.95f)); - } - firstLoop = false; - } - } - - public static void softCollisionStep(World world, Couple carts, double couplingLength) { - Couple maxSpeed = carts.map(AbstractMinecartEntity::getMaxCartSpeedOnRail); - Couple canAddmotion = carts.map(MinecartSim2020::canAddMotion); - - // Assuming Minecarts will never move faster than 1 block/tick - Couple motions = carts.map(Entity::getMotion); - motions.replaceWithParams(VecHelper::clamp, Couple.create(1f, 1f)); - Couple nextPositions = carts.map(MinecartSim2020::predictNextPositionOf); - - Couple shapes = carts.mapWithContext((cart, current) -> { - AbstractMinecartEntity minecart = cart.getMinecart(); - Vector3d vec = nextPositions.get(current); - int x = MathHelper.floor(vec.getX()); - int y = MathHelper.floor(vec.getY()); - int z = MathHelper.floor(vec.getZ()); - BlockPos pos = new BlockPos(x, y - 1, z); - if (minecart.world.getBlockState(pos).isIn(BlockTags.RAILS)) pos = pos.down(); - BlockPos railPosition = pos; - BlockState railState = world.getBlockState(railPosition.up()); - if (!(railState.getBlock() instanceof AbstractRailBlock)) - return null; - AbstractRailBlock block = (AbstractRailBlock) railState.getBlock(); - return block.getRailDirection(railState, world, railPosition, cart); - }); - - float futureStress = (float) (couplingLength - nextPositions.getFirst() - .distanceTo(nextPositions.getSecond())); - if (MathHelper.epsilonEquals(futureStress, 0D)) - return; - - for (boolean current : Iterate.trueAndFalse) { - Vector3d correction = Vector3d.ZERO; - Vector3d pos = nextPositions.get(current); - Vector3d link = nextPositions.get(!current) - .subtract(pos); - float correctionMagnitude = -futureStress / 2f; - - if (canAddmotion.get(current) != canAddmotion.get(!current)) - correctionMagnitude = !canAddmotion.get(current) ? 0 : correctionMagnitude * 2; - if (!canAddmotion.get(current)) - continue; - - RailShape shape = shapes.get(current); - if (shape != null) { - Vector3d railVec = MinecartSim2020.getRailVec(shape); - correction = followLinkOnRail(link, pos, correctionMagnitude, railVec).subtract(pos); - } else - correction = link.normalize() - .scale(correctionMagnitude); - - correction = VecHelper.clamp(correction, maxSpeed.get(current)); - - motions.set(current, motions.get(current) - .add(correction)); - } - - motions.replaceWithParams(VecHelper::clamp, maxSpeed); - carts.forEachWithParams(Entity::setMotion, motions); - } - - public static Vector3d followLinkOnRail(Vector3d link, Vector3d cart, float diffToReduce, Vector3d railAxis) { - double dotProduct = railAxis.dotProduct(link); - if (Double.isNaN(dotProduct) || dotProduct == 0 || diffToReduce == 0) - return cart; - - Vector3d axis = railAxis.scale(-Math.signum(dotProduct)); - Vector3d center = cart.add(link); - double radius = link.length() - diffToReduce; - Vector3d intersectSphere = VecHelper.intersectSphere(cart, axis, center, radius); - - // Cannot satisfy on current rail vector - if (intersectSphere == null) - return cart.add(VecHelper.project(link, axis)); - - return intersectSphere; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java deleted file mode 100644 index 7e987e371..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/CouplingRenderer.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train; - -import static net.minecraft.util.math.MathHelper.lerp; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.KineticDebugger; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; - -public class CouplingRenderer { - - public static void renderAll(MatrixStack ms, IRenderTypeBuffer buffer) { - CouplingHandler.forEachLoadedCoupling(Minecraft.getInstance().world, - c -> { - if (c.getFirst().hasContraptionCoupling(true)) - return; - CouplingRenderer.renderCoupling(ms, buffer, c.map(MinecartController::cart)); - }); - } - - public static void tickDebugModeRenders() { - if (KineticDebugger.isActive()) - CouplingHandler.forEachLoadedCoupling(Minecraft.getInstance().world, CouplingRenderer::doDebugRender); - } - - public static void renderCoupling(MatrixStack ms, IRenderTypeBuffer buffer, Couple carts) { - ClientWorld world = Minecraft.getInstance().world; - - if (carts.getFirst() == null || carts.getSecond() == null) - return; - - Couple lightValues = - carts.map(c -> WorldRenderer.getLightmapCoordinates(world, new BlockPos(c.getBoundingBox() - .getCenter()))); - - Vector3d center = carts.getFirst() - .getPositionVec() - .add(carts.getSecond() - .getPositionVec()) - .scale(.5f); - - Couple transforms = carts.map(c -> getSuitableCartEndpoint(c, center)); - - BlockState renderState = Blocks.AIR.getDefaultState(); - IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid()); - SuperByteBuffer attachment = PartialBufferer.get(AllBlockPartials.COUPLING_ATTACHMENT, renderState); - SuperByteBuffer ring = PartialBufferer.get(AllBlockPartials.COUPLING_RING, renderState); - SuperByteBuffer connector = PartialBufferer.get(AllBlockPartials.COUPLING_CONNECTOR, renderState); - - Vector3d zero = Vector3d.ZERO; - Vector3d firstEndpoint = transforms.getFirst() - .apply(zero); - Vector3d secondEndpoint = transforms.getSecond() - .apply(zero); - Vector3d endPointDiff = secondEndpoint.subtract(firstEndpoint); - double connectorYaw = -Math.atan2(endPointDiff.z, endPointDiff.x) * 180.0D / Math.PI; - double connectorPitch = Math.atan2(endPointDiff.y, endPointDiff.mul(1, 0, 1) - .length()) * 180 / Math.PI; - - MatrixStacker msr = MatrixStacker.of(ms); - carts.forEachWithContext((cart, isFirst) -> { - CartEndpoint cartTransform = transforms.get(isFirst); - - ms.push(); - cartTransform.apply(ms); - attachment.light(lightValues.get(isFirst)) - .renderInto(ms, builder); - msr.rotateY(connectorYaw - cartTransform.yaw); - ring.light(lightValues.get(isFirst)) - .renderInto(ms, builder); - ms.pop(); - }); - - int l1 = lightValues.getFirst(); - int l2 = lightValues.getSecond(); - int meanBlockLight = (((l1 >> 4) & 0xf) + ((l2 >> 4) & 0xf)) / 2; - int meanSkyLight = (((l1 >> 20) & 0xf) + ((l2 >> 20) & 0xf)) / 2; - - ms.push(); - msr.translate(firstEndpoint) - .rotateY(connectorYaw) - .rotateZ(connectorPitch); - ms.scale((float) endPointDiff.length(), 1, 1); - - connector.light(meanSkyLight << 20 | meanBlockLight << 4) - .renderInto(ms, builder); - ms.pop(); - } - - private static CartEndpoint getSuitableCartEndpoint(AbstractMinecartEntity cart, Vector3d centerOfCoupling) { - long i = cart.getEntityId() * 493286711L; - i = i * i * 4392167121L + i * 98761L; - float x = (((float) (i >> 16 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F; - float y = (((float) (i >> 20 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F + 0.375F; - float z = (((float) (i >> 24 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F; - - float pt = AnimationTickHolder.getPartialTicks(); - - double xIn = lerp(pt, cart.lastTickPosX, cart.getX()); - double yIn = lerp(pt, cart.lastTickPosY, cart.getY()); - double zIn = lerp(pt, cart.lastTickPosZ, cart.getZ()); - - float yaw = lerp(pt, cart.prevRotationYaw, cart.rotationYaw); - float pitch = lerp(pt, cart.prevRotationPitch, cart.rotationPitch); - float roll = cart.getRollingAmplitude() - pt; - - float rollAmplifier = cart.getDamage() - pt; - if (rollAmplifier < 0.0F) - rollAmplifier = 0.0F; - roll = roll > 0 ? MathHelper.sin(roll) * roll * rollAmplifier / 10.0F * cart.getRollingDirection() : 0; - - Vector3d positionVec = new Vector3d(xIn, yIn, zIn); - Vector3d frontVec = positionVec.add(VecHelper.rotate(new Vector3d(.5, 0, 0), 180 - yaw, Axis.Y)); - Vector3d backVec = positionVec.add(VecHelper.rotate(new Vector3d(-.5, 0, 0), 180 - yaw, Axis.Y)); - - Vector3d railVecOfPos = cart.getPos(xIn, yIn, zIn); - boolean flip = false; - - if (railVecOfPos != null) { - frontVec = cart.getPosOffset(xIn, yIn, zIn, (double) 0.3F); - backVec = cart.getPosOffset(xIn, yIn, zIn, (double) -0.3F); - if (frontVec == null) - frontVec = railVecOfPos; - if (backVec == null) - backVec = railVecOfPos; - - x += railVecOfPos.x; - y += (frontVec.y + backVec.y) / 2; - z += railVecOfPos.z; - - Vector3d endPointDiff = backVec.add(-frontVec.x, -frontVec.y, -frontVec.z); - if (endPointDiff.length() != 0.0D) { - endPointDiff = endPointDiff.normalize(); - yaw = (float) (Math.atan2(endPointDiff.z, endPointDiff.x) * 180.0D / Math.PI); - pitch = (float) (Math.atan(endPointDiff.y) * 73.0D); - } - } else { - x += xIn; - y += yIn; - z += zIn; - } - - final float offsetMagnitude = 13 / 16f; - boolean isBackFaceCloser = - frontVec.squareDistanceTo(centerOfCoupling) > backVec.squareDistanceTo(centerOfCoupling); - flip = isBackFaceCloser; - float offset = isBackFaceCloser ? -offsetMagnitude : offsetMagnitude; - - return new CartEndpoint(x, y + 2 / 16f, z, 180 - yaw, -pitch, roll, offset, flip); - } - - static class CartEndpoint { - - float x; - float y; - float z; - float yaw; - float pitch; - float roll; - float offset; - boolean flip; - - public CartEndpoint(float x, float y, float z, float yaw, float pitch, float roll, float offset, boolean flip) { - this.x = x; - this.y = y; - this.z = z; - this.yaw = yaw; - this.pitch = pitch; - this.roll = roll; - this.offset = offset; - this.flip = flip; - } - - public Vector3d apply(Vector3d vec) { - vec = vec.add(offset, 0, 0); - vec = VecHelper.rotate(vec, roll, Axis.X); - vec = VecHelper.rotate(vec, pitch, Axis.Z); - vec = VecHelper.rotate(vec, yaw, Axis.Y); - return vec.add(x, y, z); - } - - public void apply(MatrixStack ms) { - ms.translate(x, y, z); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(yaw)); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(pitch)); - ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(roll)); - ms.translate(offset, 0, 0); - if (flip) - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(180)); - } - - } - - public static void doDebugRender(Couple c) { - int yOffset = 1; - MinecartController first = c.getFirst(); - AbstractMinecartEntity mainCart = first.cart(); - Vector3d mainCenter = mainCart.getPositionVec() - .add(0, yOffset, 0); - Vector3d connectedCenter = c.getSecond() - .cart() - .getPositionVec() - .add(0, yOffset, 0); - - int color = ColorHelper.mixColors(0xabf0e9, 0xee8572, (float) MathHelper - .clamp(Math.abs(first.getCouplingLength(true) - connectedCenter.distanceTo(mainCenter)) * 8, 0, 1)); - - CreateClient.OUTLINER.showLine(mainCart.getEntityId() + "", mainCenter, connectedCenter) - .colored(color) - .lineWidth(1 / 8f); - - Vector3d point = mainCart.getPositionVec() - .add(0, yOffset, 0); - CreateClient.OUTLINER.showLine(mainCart.getEntityId() + "_dot", point, point.add(0, 1 / 128f, 0)) - .colored(0xffffff) - .lineWidth(1 / 4f); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartCouplingItem.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartCouplingItem.java deleted file mode 100644 index 66986c18d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartCouplingItem.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; - -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.event.entity.player.PlayerInteractEvent.EntityInteract; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class MinecartCouplingItem extends Item { - - public MinecartCouplingItem(Properties p_i48487_1_) { - super(p_i48487_1_); - } - - @SubscribeEvent(priority = EventPriority.HIGH) - public static void handleInteractionWithMinecart(PlayerInteractEvent.EntityInteract event) { - Entity interacted = event.getTarget(); - if (!(interacted instanceof AbstractMinecartEntity)) - return; - AbstractMinecartEntity minecart = (AbstractMinecartEntity) interacted; - PlayerEntity player = event.getPlayer(); - if (player == null) - return; - LazyOptional capability = - minecart.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); - if (!capability.isPresent()) - return; - MinecartController controller = capability.orElse(null); - - ItemStack heldItem = player.getHeldItem(event.getHand()); - if (AllItems.MINECART_COUPLING.isIn(heldItem)) { - if (!onCouplingInteractOnMinecart(event, minecart, player, controller)) - return; - } else if (AllItems.WRENCH.isIn(heldItem)) { - if (!onWrenchInteractOnMinecart(event, minecart, player, controller)) - return; - } else - return; - - event.setCanceled(true); - event.setCancellationResult(ActionResultType.SUCCESS); - } - - protected static boolean onCouplingInteractOnMinecart(PlayerInteractEvent.EntityInteract event, - AbstractMinecartEntity minecart, PlayerEntity player, MinecartController controller) { - World world = event.getWorld(); - if (controller.isFullyCoupled()) { - if (!world.isRemote) - CouplingHandler.status(player, "two_couplings_max"); - return true; - } - if (world != null && world.isRemote) - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> cartClicked(player, minecart)); - return true; - } - - private static boolean onWrenchInteractOnMinecart(EntityInteract event, AbstractMinecartEntity minecart, - PlayerEntity player, MinecartController controller) { - int couplings = (controller.isConnectedToCoupling() ? 1 : 0) + (controller.isLeadingCoupling() ? 1 : 0); - if (couplings == 0) - return false; - if (event.getWorld().isRemote) - return true; - - for (boolean forward : Iterate.trueAndFalse) { - if (controller.hasContraptionCoupling(forward)) - couplings--; - } - - CouplingHandler.status(player, "removed"); - controller.decouple(); - if (!player.isCreative()) - player.inventory.placeItemBackInInventory(event.getWorld(), - new ItemStack(AllItems.MINECART_COUPLING.get(), couplings)); - return true; - } - - @OnlyIn(Dist.CLIENT) - private static void cartClicked(PlayerEntity player, AbstractMinecartEntity interacted) { - CouplingHandlerClient.onCartClicked(player, (AbstractMinecartEntity) interacted); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartSim2020.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartSim2020.java deleted file mode 100644 index 0a8f00f41..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/MinecartSim2020.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train; - -import static net.minecraft.entity.Entity.horizontalMag; - -import java.util.Map; - -import com.google.common.collect.Maps; -import com.mojang.datafixers.util.Pair; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.BlockState; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; -import net.minecraft.state.properties.RailShape; -import net.minecraft.util.Direction; -import net.minecraft.util.Util; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraftforge.common.util.LazyOptional; - -/** - * Useful methods for dealing with Minecarts - * - */ -public class MinecartSim2020 { - private static final Map> MATRIX = - Util.make(Maps.newEnumMap(RailShape.class), (map) -> { - Vector3i west = Direction.WEST.getDirectionVec(); - Vector3i east = Direction.EAST.getDirectionVec(); - Vector3i north = Direction.NORTH.getDirectionVec(); - Vector3i south = Direction.SOUTH.getDirectionVec(); - map.put(RailShape.NORTH_SOUTH, Pair.of(north, south)); - map.put(RailShape.EAST_WEST, Pair.of(west, east)); - map.put(RailShape.ASCENDING_EAST, Pair.of(west.down(), east)); - map.put(RailShape.ASCENDING_WEST, Pair.of(west, east.down())); - map.put(RailShape.ASCENDING_NORTH, Pair.of(north, south.down())); - map.put(RailShape.ASCENDING_SOUTH, Pair.of(north.down(), south)); - map.put(RailShape.SOUTH_EAST, Pair.of(south, east)); - map.put(RailShape.SOUTH_WEST, Pair.of(south, west)); - map.put(RailShape.NORTH_WEST, Pair.of(north, west)); - map.put(RailShape.NORTH_EAST, Pair.of(north, east)); - }); - - public static Vector3d predictNextPositionOf(AbstractMinecartEntity cart) { - Vector3d position = cart.getPositionVec(); - Vector3d motion = VecHelper.clamp(cart.getMotion(), 1f); - return position.add(motion); - } - - public static boolean canAddMotion(AbstractMinecartEntity c) { - if (c instanceof FurnaceMinecartEntity) - return MathHelper.epsilonEquals(((FurnaceMinecartEntity) c).pushX, 0) - && MathHelper.epsilonEquals(((FurnaceMinecartEntity) c).pushZ, 0); - LazyOptional capability = - c.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); - if (capability.isPresent() && capability.orElse(null) - .isStalled()) - return false; - return true; - } - - public static void moveCartAlongTrack(AbstractMinecartEntity cart, Vector3d forcedMovement, BlockPos cartPos, - BlockState trackState) { - - if (forcedMovement.equals(Vector3d.ZERO)) - return; - - Vector3d previousMotion = cart.getMotion(); - cart.fallDistance = 0.0F; - - double x = cart.getX(); - double y = cart.getY(); - double z = cart.getZ(); - - double actualX = x; - double actualY = y; - double actualZ = z; - - Vector3d actualVec = cart.getPos(actualX, actualY, actualZ); - actualY = cartPos.getY() + 1; - - AbstractRailBlock abstractrailblock = (AbstractRailBlock) trackState.getBlock(); - RailShape railshape = abstractrailblock.getRailDirection(trackState, cart.world, cartPos, cart); - switch (railshape) { - case ASCENDING_EAST: - forcedMovement = forcedMovement.add(-1 * cart.getSlopeAdjustment(), 0.0D, 0.0D); - actualY++; - break; - case ASCENDING_WEST: - forcedMovement = forcedMovement.add(cart.getSlopeAdjustment(), 0.0D, 0.0D); - actualY++; - break; - case ASCENDING_NORTH: - forcedMovement = forcedMovement.add(0.0D, 0.0D, cart.getSlopeAdjustment()); - actualY++; - break; - case ASCENDING_SOUTH: - forcedMovement = forcedMovement.add(0.0D, 0.0D, -1 * cart.getSlopeAdjustment()); - actualY++; - default: - break; - } - - Pair pair = MATRIX.get(railshape); - Vector3i Vector3i = pair.getFirst(); - Vector3i Vector3i1 = pair.getSecond(); - double d4 = (double) (Vector3i1.getX() - Vector3i.getX()); - double d5 = (double) (Vector3i1.getZ() - Vector3i.getZ()); -// double d6 = Math.sqrt(d4 * d4 + d5 * d5); - double d7 = forcedMovement.x * d4 + forcedMovement.z * d5; - if (d7 < 0.0D) { - d4 = -d4; - d5 = -d5; - } - - double d23 = (double) cartPos.getX() + 0.5D + (double) Vector3i.getX() * 0.5D; - double d10 = (double) cartPos.getZ() + 0.5D + (double) Vector3i.getZ() * 0.5D; - double d12 = (double) cartPos.getX() + 0.5D + (double) Vector3i1.getX() * 0.5D; - double d13 = (double) cartPos.getZ() + 0.5D + (double) Vector3i1.getZ() * 0.5D; - d4 = d12 - d23; - d5 = d13 - d10; - double d14; - if (d4 == 0.0D) { - d14 = actualZ - (double) cartPos.getZ(); - } else if (d5 == 0.0D) { - d14 = actualX - (double) cartPos.getX(); - } else { - double d15 = actualX - d23; - double d16 = actualZ - d10; - d14 = (d15 * d4 + d16 * d5) * 2.0D; - } - - actualX = d23 + d4 * d14; - actualZ = d10 + d5 * d14; - - cart.setPosition(actualX, actualY, actualZ); - cart.setMotion(forcedMovement); - cart.moveMinecartOnRail(cartPos); - - x = cart.getX(); - y = cart.getY(); - z = cart.getZ(); - - if (Vector3i.getY() != 0 && MathHelper.floor(x) - cartPos.getX() == Vector3i.getX() - && MathHelper.floor(z) - cartPos.getZ() == Vector3i.getZ()) { - cart.setPosition(x, y + (double) Vector3i.getY(), z); - } else if (Vector3i1.getY() != 0 && MathHelper.floor(x) - cartPos.getX() == Vector3i1.getX() - && MathHelper.floor(z) - cartPos.getZ() == Vector3i1.getZ()) { - cart.setPosition(x, y + (double) Vector3i1.getY(), z); - } - - x = cart.getX(); - y = cart.getY(); - z = cart.getZ(); - - Vector3d Vector3d3 = cart.getPos(x, y, z); - if (Vector3d3 != null && actualVec != null) { - double d17 = (actualVec.y - Vector3d3.y) * 0.05D; - Vector3d Vector3d4 = cart.getMotion(); - double d18 = Math.sqrt(horizontalMag(Vector3d4)); - if (d18 > 0.0D) { - cart.setMotion(Vector3d4.mul((d18 + d17) / d18, 1.0D, (d18 + d17) / d18)); - } - - cart.setPosition(x, Vector3d3.y, z); - } - - x = cart.getX(); - y = cart.getY(); - z = cart.getZ(); - - int j = MathHelper.floor(x); - int i = MathHelper.floor(z); - if (j != cartPos.getX() || i != cartPos.getZ()) { - Vector3d Vector3d5 = cart.getMotion(); - double d26 = Math.sqrt(horizontalMag(Vector3d5)); - cart.setMotion(d26 * (double) (j - cartPos.getX()), Vector3d5.y, d26 * (double) (i - cartPos.getZ())); - } - - cart.setMotion(previousMotion); - } - - public static Vector3d getRailVec(RailShape shape) { - switch (shape) { - case ASCENDING_NORTH: - case ASCENDING_SOUTH: - case NORTH_SOUTH: - return new Vector3d(0, 0, 1); - case ASCENDING_EAST: - case ASCENDING_WEST: - case EAST_WEST: - return new Vector3d(1, 0, 0); - case NORTH_EAST: - case SOUTH_WEST: - return new Vector3d(1, 0, 1).normalize(); - case NORTH_WEST: - case SOUTH_EAST: - return new Vector3d(1, 0, -1).normalize(); - default: - return new Vector3d(0, 1, 0); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/CapabilityMinecartController.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/CapabilityMinecartController.java deleted file mode 100644 index fa21259c0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/CapabilityMinecartController.java +++ /dev/null @@ -1,281 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train.capability; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.UUID; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllItems; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingHandler; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.WorldAttached; - -import it.unimi.dsi.fastutil.objects.ObjectArrayList; -import it.unimi.dsi.fastutil.objects.ObjectLists; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.INBT; -import net.minecraft.util.Direction; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityInject; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.ICapabilitySerializable; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.common.util.NonNullConsumer; -import net.minecraftforge.event.AttachCapabilitiesEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.world.ChunkEvent; - -public class CapabilityMinecartController implements ICapabilitySerializable { - - /* Global map of loaded carts */ - - public static WorldAttached> loadedMinecartsByUUID; - public static WorldAttached> loadedMinecartsWithCoupling; - static WorldAttached> queuedAdditions; - static WorldAttached> queuedUnloads; - - /** - * This callback wrapper ensures that the listeners map in the controller - * capability only ever contains one instance - */ - public static class MinecartRemovalListener implements NonNullConsumer> { - - private World world; - private AbstractMinecartEntity cart; - - public MinecartRemovalListener(World world, AbstractMinecartEntity cart) { - this.world = world; - this.cart = cart; - } - - @Override - public boolean equals(Object obj) { - return obj instanceof MinecartRemovalListener; - } - - @Override - public int hashCode() { - return 100; - } - - @Override - public void accept(LazyOptional t) { - onCartRemoved(world, cart); - } - - } - - static { - loadedMinecartsByUUID = new WorldAttached<>(HashMap::new); - loadedMinecartsWithCoupling = new WorldAttached<>(HashSet::new); - queuedAdditions = new WorldAttached<>(() -> ObjectLists.synchronize(new ObjectArrayList<>())); - queuedUnloads = new WorldAttached<>(() -> ObjectLists.synchronize(new ObjectArrayList<>())); - } - - public static void tick(World world) { - List toRemove = new ArrayList<>(); - Map carts = loadedMinecartsByUUID.get(world); - List queued = queuedAdditions.get(world); - List queuedRemovals = queuedUnloads.get(world); - Set cartsWithCoupling = loadedMinecartsWithCoupling.get(world); - Set keySet = carts.keySet(); - - keySet.removeAll(queuedRemovals); - cartsWithCoupling.removeAll(queuedRemovals); - - for (AbstractMinecartEntity cart : queued) { - UUID uniqueID = cart.getUniqueID(); - - if (world.isRemote && carts.containsKey(uniqueID)) { - MinecartController minecartController = carts.get(uniqueID); - if (minecartController != null) { - AbstractMinecartEntity minecartEntity = minecartController.cart(); - if (minecartEntity != null && minecartEntity.getEntityId() != cart.getEntityId()) - continue; // Away with you, Fake Entities! - } - } - - cartsWithCoupling.remove(uniqueID); - - LazyOptional capability = cart.getCapability(MINECART_CONTROLLER_CAPABILITY); - MinecartController controller = capability.orElse(null); - capability.addListener(new MinecartRemovalListener(world, cart)); - carts.put(uniqueID, controller); - - capability.ifPresent(mc -> { - if (mc.isLeadingCoupling()) - cartsWithCoupling.add(uniqueID); - }); - if (!world.isRemote && controller != null) - controller.sendData(); - } - - queuedRemovals.clear(); - queued.clear(); - - for (Entry entry : carts.entrySet()) { - MinecartController controller = entry.getValue(); - if (controller != null) { - if (controller.isPresent()) { - controller.tick(); - continue; - } - } - toRemove.add(entry.getKey()); - } - - cartsWithCoupling.removeAll(toRemove); - keySet.removeAll(toRemove); - } - - public static void onChunkUnloaded(ChunkEvent.Unload event) { - ChunkPos chunkPos = event.getChunk() - .getPos(); - Map carts = loadedMinecartsByUUID.get(event.getWorld()); - for (MinecartController minecartController : carts.values()) { - if (minecartController == null) - continue; - if (!minecartController.isPresent()) - continue; - AbstractMinecartEntity cart = minecartController.cart(); - if (cart.chunkCoordX == chunkPos.x && cart.chunkCoordZ == chunkPos.z) - queuedUnloads.get(event.getWorld()) - .add(cart.getUniqueID()); - } - } - - protected static void onCartRemoved(World world, AbstractMinecartEntity entity) { - Map carts = loadedMinecartsByUUID.get(world); - List unloads = queuedUnloads.get(world); - UUID uniqueID = entity.getUniqueID(); - if (!carts.containsKey(uniqueID) || unloads.contains(uniqueID)) - return; - if (world.isRemote) - return; - handleKilledMinecart(world, carts.get(uniqueID), entity.getPositionVec()); - } - - protected static void handleKilledMinecart(World world, MinecartController controller, Vector3d removedPos) { - if (controller == null) - return; - for (boolean forward : Iterate.trueAndFalse) { - MinecartController next = CouplingHandler.getNextInCouplingChain(world, controller, forward); - if (next == null || next == MinecartController.EMPTY) - continue; - - next.removeConnection(!forward); - if (controller.hasContraptionCoupling(forward)) - continue; - AbstractMinecartEntity cart = next.cart(); - if (cart == null) - continue; - - Vector3d itemPos = cart.getPositionVec() - .add(removedPos) - .scale(.5f); - ItemEntity itemEntity = - new ItemEntity(world, itemPos.x, itemPos.y, itemPos.z, AllItems.MINECART_COUPLING.asStack()); - itemEntity.setDefaultPickupDelay(); - world.addEntity(itemEntity); - } - } - - @Nullable - public static MinecartController getIfPresent(World world, UUID cartId) { - Map carts = loadedMinecartsByUUID.get(world); - if (carts == null) - return null; - if (!carts.containsKey(cartId)) - return null; - return carts.get(cartId); - } - - /* Capability management */ - - @CapabilityInject(MinecartController.class) - public static Capability MINECART_CONTROLLER_CAPABILITY = null; - - public static void attach(AttachCapabilitiesEvent event) { - Entity entity = event.getObject(); - if (!(entity instanceof AbstractMinecartEntity)) - return; - - CapabilityMinecartController capability = new CapabilityMinecartController((AbstractMinecartEntity) entity); - ResourceLocation id = Create.asResource("minecart_controller"); - event.addCapability(id, capability); - event.addListener(() -> { - if (capability.cap.isPresent()) - capability.cap.invalidate(); - }); - queuedAdditions.get(entity.getEntityWorld()) - .add((AbstractMinecartEntity) entity); - } - - public static void startTracking(PlayerEvent.StartTracking event) { - Entity entity = event.getTarget(); - if (!(entity instanceof AbstractMinecartEntity)) - return; - entity.getCapability(MINECART_CONTROLLER_CAPABILITY) - .ifPresent(MinecartController::sendData); - } - - public static void register() { - CapabilityManager.INSTANCE.register(MinecartController.class, new Capability.IStorage() { - - @Override - public INBT writeNBT(Capability capability, MinecartController instance, - Direction side) { - return instance.serializeNBT(); - } - - @Override - public void readNBT(Capability capability, MinecartController instance, Direction side, - INBT base) { - instance.deserializeNBT((CompoundNBT) base); - } - - }, MinecartController::empty); - } - - /* Capability provider */ - - private final LazyOptional cap; - private MinecartController handler; - - public CapabilityMinecartController(AbstractMinecartEntity minecart) { - handler = new MinecartController(minecart); - cap = LazyOptional.of(() -> handler); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (cap == MINECART_CONTROLLER_CAPABILITY) - return this.cap.cast(); - return LazyOptional.empty(); - } - - @Override - public CompoundNBT serializeNBT() { - return handler.serializeNBT(); - } - - @Override - public void deserializeNBT(CompoundNBT nbt) { - handler.deserializeNBT(nbt); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java deleted file mode 100644 index 59b33b656..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartController.java +++ /dev/null @@ -1,436 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train.capability; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.UUID; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.mutable.MutableBoolean; - -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.OrientedContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingHandler; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.PoweredRailBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.MinecartEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.fml.network.PacketDistributor; - -/** - * Extended code for Minecarts, this allows for handling stalled carts and - * coupled trains - */ -public class MinecartController implements INBTSerializable { - - public static MinecartController EMPTY; - private boolean needsEntryRefresh; - private WeakReference weakRef; - - /* - * Stall information, - */ - private Couple> stallData; - - /* - * Coupling information,
- */ - private Couple> couplings; - - public MinecartController(AbstractMinecartEntity minecart) { - weakRef = new WeakReference<>(minecart); - stallData = Couple.create(Optional::empty); - couplings = Couple.create(Optional::empty); - needsEntryRefresh = true; - } - - public void tick() { - AbstractMinecartEntity cart = cart(); - World world = getWorld(); - - if (needsEntryRefresh) { - CapabilityMinecartController.queuedAdditions.get(world).add(cart); - needsEntryRefresh = false; - } - - stallData.forEach(opt -> opt.ifPresent(sd -> sd.tick(cart))); - - MutableBoolean internalStall = new MutableBoolean(false); - couplings.forEachWithContext((opt, main) -> opt.ifPresent(cd -> { - - UUID idOfOther = cd.idOfCart(!main); - MinecartController otherCart = CapabilityMinecartController.getIfPresent(world, idOfOther); - internalStall.setValue( - internalStall.booleanValue() || otherCart == null || !otherCart.isPresent() || otherCart.isStalled(false)); - - })); - if (!world.isRemote) { - setStalled(internalStall.booleanValue(), true); - disassemble(cart); - } - } - - private void disassemble(AbstractMinecartEntity cart) { - if (cart instanceof MinecartEntity) { - return; - } - List passengers = cart.getPassengers(); - if (passengers.isEmpty() || !(passengers.get(0) instanceof AbstractContraptionEntity)) { - return; - } - World world = cart.world; - int i = MathHelper.floor(cart.getX()); - int j = MathHelper.floor(cart.getY()); - int k = MathHelper.floor(cart.getZ()); - if (world.getBlockState(new BlockPos(i, j - 1, k)) - .isIn(BlockTags.RAILS)) { - --j; - } - BlockPos blockpos = new BlockPos(i, j, k); - BlockState blockstate = world.getBlockState(blockpos); - if (cart.canUseRail() && blockstate.isIn(BlockTags.RAILS) - && blockstate.getBlock() instanceof PoweredRailBlock - && ((PoweredRailBlock) blockstate.getBlock()) - .isActivatorRail()) { - if (cart.isBeingRidden()) { - cart.removePassengers(); - } - - if (cart.getRollingAmplitude() == 0) { - cart.setRollingDirection(-cart.getRollingDirection()); - cart.setRollingAmplitude(10); - cart.setDamage(50.0F); - cart.velocityChanged = true; - } - } - } - - public boolean isFullyCoupled() { - return isLeadingCoupling() && isConnectedToCoupling(); - } - - public boolean isLeadingCoupling() { - return couplings.get(true) - .isPresent(); - } - - public boolean isConnectedToCoupling() { - return couplings.get(false) - .isPresent(); - } - - public boolean isCoupledThroughContraption() { - for (boolean current : Iterate.trueAndFalse) - if (hasContraptionCoupling(current)) - return true; - return false; - } - - public boolean hasContraptionCoupling(boolean current) { - Optional optional = couplings.get(current); - return optional.isPresent() && optional.get().contraption; - } - - public float getCouplingLength(boolean leading) { - Optional optional = couplings.get(leading); - if (optional.isPresent()) - return optional.get().length; - return 0; - } - - public void decouple() { - couplings.forEachWithContext((opt, main) -> opt.ifPresent(cd -> { - UUID idOfOther = cd.idOfCart(!main); - MinecartController otherCart = CapabilityMinecartController.getIfPresent(getWorld(), idOfOther); - if (otherCart == null) - return; - - removeConnection(main); - otherCart.removeConnection(!main); - })); - } - - public void removeConnection(boolean main) { - if (hasContraptionCoupling(main) && !getWorld().isRemote) { - List passengers = cart().getPassengers(); - if (!passengers.isEmpty()) { - Entity entity = passengers.get(0); - if (entity instanceof AbstractContraptionEntity) - ((AbstractContraptionEntity) entity).disassemble(); - } - } - - couplings.set(main, Optional.empty()); - needsEntryRefresh |= main; - sendData(); - } - - public void prepareForCoupling(boolean isLeading) { - // reverse existing chain if necessary - if (isLeading && isLeadingCoupling() || !isLeading && isConnectedToCoupling()) { - - List cartsToFlip = new ArrayList<>(); - MinecartController current = this; - boolean forward = current.isLeadingCoupling(); - int safetyCount = 1000; - - while (true) { - if (safetyCount-- <= 0) { - Create.LOGGER.warn("Infinite loop in coupling iteration"); - return; - } - cartsToFlip.add(current); - current = CouplingHandler.getNextInCouplingChain(getWorld(), current, forward); - if (current == null || current == MinecartController.EMPTY) - break; - } - - for (MinecartController minecartController : cartsToFlip) { - MinecartController mc = minecartController; - mc.couplings.forEachWithContext((opt, leading) -> opt.ifPresent(cd -> { - cd.flip(); - if (!cd.contraption) - return; - List passengers = mc.cart() - .getPassengers(); - if (passengers.isEmpty()) - return; - Entity entity = passengers.get(0); - if (!(entity instanceof OrientedContraptionEntity)) - return; - OrientedContraptionEntity contraption = (OrientedContraptionEntity) entity; - UUID couplingId = contraption.getCouplingId(); - if (couplingId == cd.mainCartID) { - contraption.setCouplingId(cd.connectedCartID); - return; - } - if (couplingId == cd.connectedCartID) { - contraption.setCouplingId(cd.mainCartID); - return; - } - })); - mc.couplings = mc.couplings.swap(); - mc.needsEntryRefresh = true; - if (mc == this) - continue; - mc.sendData(); - } - } - } - - public void coupleWith(boolean isLeading, UUID coupled, float length, boolean contraption) { - UUID mainID = isLeading ? cart().getUniqueID() : coupled; - UUID connectedID = isLeading ? coupled : cart().getUniqueID(); - couplings.set(isLeading, Optional.of(new CouplingData(mainID, connectedID, length, contraption))); - needsEntryRefresh |= isLeading; - sendData(); - } - - @Nullable - public UUID getCoupledCart(boolean asMain) { - Optional optional = couplings.get(asMain); - if (!optional.isPresent()) - return null; - CouplingData couplingData = optional.get(); - return asMain ? couplingData.connectedCartID : couplingData.mainCartID; - } - - public boolean isStalled() { - return isStalled(true) || isStalled(false); - } - - private boolean isStalled(boolean internal) { - return stallData.get(internal) - .isPresent(); - } - - public void setStalledExternally(boolean stall) { - setStalled(stall, false); - } - - private void setStalled(boolean stall, boolean internal) { - if (isStalled(internal) == stall) - return; - - AbstractMinecartEntity cart = cart(); - if (stall) { - stallData.set(internal, Optional.of(new StallData(cart))); - sendData(); - return; - } - - if (!isStalled(!internal)) - stallData.get(internal) - .get() - .release(cart); - stallData.set(internal, Optional.empty()); - - sendData(); - } - - public void sendData() { - if (getWorld().isRemote) - return; - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(this::cart), - new MinecartControllerUpdatePacket(this)); - } - - @Override - public CompoundNBT serializeNBT() { - CompoundNBT compoundNBT = new CompoundNBT(); - - stallData.forEachWithContext((opt, internal) -> opt - .ifPresent(sd -> compoundNBT.put(internal ? "InternalStallData" : "StallData", sd.serialize()))); - couplings.forEachWithContext((opt, main) -> opt - .ifPresent(cd -> compoundNBT.put(main ? "MainCoupling" : "ConnectedCoupling", cd.serialize()))); - - return compoundNBT; - } - - @Override - public void deserializeNBT(CompoundNBT nbt) { - Optional internalSD = Optional.empty(); - Optional externalSD = Optional.empty(); - Optional mainCD = Optional.empty(); - Optional connectedCD = Optional.empty(); - - if (nbt.contains("InternalStallData")) - internalSD = Optional.of(StallData.read(nbt.getCompound("InternalStallData"))); - if (nbt.contains("StallData")) - externalSD = Optional.of(StallData.read(nbt.getCompound("StallData"))); - if (nbt.contains("MainCoupling")) - mainCD = Optional.of(CouplingData.read(nbt.getCompound("MainCoupling"))); - if (nbt.contains("ConnectedCoupling")) - connectedCD = Optional.of(CouplingData.read(nbt.getCompound("ConnectedCoupling"))); - - stallData = Couple.create(internalSD, externalSD); - couplings = Couple.create(mainCD, connectedCD); - needsEntryRefresh = true; - } - - public boolean isPresent() { - return weakRef.get() != null && cart().isAlive(); - } - - public AbstractMinecartEntity cart() { - return weakRef.get(); - } - - public static MinecartController empty() { - return EMPTY != null ? EMPTY : (EMPTY = new MinecartController(null)); - } - - private World getWorld() { - return cart().getEntityWorld(); - } - - private static class CouplingData { - - private UUID mainCartID; - private UUID connectedCartID; - private float length; - private boolean contraption; - - public CouplingData(UUID mainCartID, UUID connectedCartID, float length, boolean contraption) { - this.mainCartID = mainCartID; - this.connectedCartID = connectedCartID; - this.length = length; - this.contraption = contraption; - } - - void flip() { - UUID swap = mainCartID; - mainCartID = connectedCartID; - connectedCartID = swap; - } - - CompoundNBT serialize() { - CompoundNBT nbt = new CompoundNBT(); - nbt.put("Main", NBTUtil.fromUuid(mainCartID)); - nbt.put("Connected", NBTUtil.fromUuid(connectedCartID)); - nbt.putFloat("Length", length); - nbt.putBoolean("Contraption", contraption); - return nbt; - } - - static CouplingData read(CompoundNBT nbt) { - UUID mainCartID = NBTUtil.readUniqueId(NBTHelper.getINBT(nbt, "Main")); - UUID connectedCartID = NBTUtil.readUniqueId(NBTHelper.getINBT(nbt, "Connected")); - float length = nbt.getFloat("Length"); - boolean contraption = nbt.getBoolean("Contraption"); - return new CouplingData(mainCartID, connectedCartID, length, contraption); - } - - public UUID idOfCart(boolean main) { - return main ? mainCartID : connectedCartID; - } - - } - - private static class StallData { - Vector3d position; - Vector3d motion; - float yaw, pitch; - - private StallData() {} - - StallData(AbstractMinecartEntity entity) { - position = entity.getPositionVec(); - motion = entity.getMotion(); - yaw = entity.rotationYaw; - pitch = entity.rotationPitch; - tick(entity); - } - - void tick(AbstractMinecartEntity entity) { - entity.setPosition(position.x, position.y, position.z); - entity.setMotion(Vector3d.ZERO); - entity.rotationYaw = yaw; - entity.rotationPitch = pitch; - } - - void release(AbstractMinecartEntity entity) { - entity.setMotion(motion); - } - - CompoundNBT serialize() { - CompoundNBT nbt = new CompoundNBT(); - nbt.put("Pos", VecHelper.writeNBT(position)); - nbt.put("Motion", VecHelper.writeNBT(motion)); - nbt.putFloat("Yaw", yaw); - nbt.putFloat("Pitch", pitch); - return nbt; - } - - static StallData read(CompoundNBT nbt) { - StallData stallData = new StallData(); - stallData.position = VecHelper.readNBT(nbt.getList("Pos", NBT.TAG_DOUBLE)); - stallData.motion = VecHelper.readNBT(nbt.getList("Motion", NBT.TAG_DOUBLE)); - stallData.yaw = nbt.getFloat("Yaw"); - stallData.pitch = nbt.getFloat("Pitch"); - return stallData; - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartControllerUpdatePacket.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartControllerUpdatePacket.java deleted file mode 100644 index 58008e2c8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/train/capability/MinecartControllerUpdatePacket.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.content.contraptions.components.structureMovement.train.capability; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class MinecartControllerUpdatePacket extends SimplePacketBase { - - int entityID; - CompoundNBT nbt; - - public MinecartControllerUpdatePacket(MinecartController controller) { - entityID = controller.cart() - .getEntityId(); - nbt = controller.serializeNBT(); - } - - public MinecartControllerUpdatePacket(PacketBuffer buffer) { - entityID = buffer.readInt(); - nbt = buffer.readCompoundTag(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(entityID); - buffer.writeCompoundTag(nbt); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::handleCL)); - context.get() - .setPacketHandled(true); - } - - @OnlyIn(Dist.CLIENT) - private void handleCL() { - ClientWorld world = Minecraft.getInstance().world; - if (world == null) - return; - Entity entityByID = world.getEntityByID(entityID); - if (entityByID == null) - return; - entityByID.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY) - .ifPresent(mc -> mc.deserializeNBT(nbt)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java deleted file mode 100644 index 95d44b209..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailBlock.java +++ /dev/null @@ -1,320 +0,0 @@ -package com.simibubi.create.content.contraptions.components.tracks; - -import static net.minecraft.state.properties.RailShape.NORTH_SOUTH; - -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VecHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.RailShape; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class ControllerRailBlock extends AbstractRailBlock implements IWrenchable { - - public static final EnumProperty SHAPE = BlockStateProperties.RAIL_SHAPE_STRAIGHT; - public static final BooleanProperty BACKWARDS = BooleanProperty.create("backwards"); - public static final IntegerProperty POWER = BlockStateProperties.POWER_0_15; - - public ControllerRailBlock(Properties properties) { - super(true, properties); - this.setDefaultState(this.stateContainer.getBaseState() - .with(POWER, 0) - .with(BACKWARDS, false) - .with(SHAPE, NORTH_SOUTH)); - } - - public static Vector3i getAccelerationVector(BlockState state) { - Direction pointingTo = getPointingTowards(state); - return (isStateBackwards(state) ? pointingTo.getOpposite() : pointingTo).getDirectionVec(); - } - - private static Direction getPointingTowards(BlockState state) { - switch (state.get(SHAPE)) { - case ASCENDING_WEST: - case EAST_WEST: - return Direction.WEST; - case ASCENDING_EAST: - return Direction.EAST; - case ASCENDING_SOUTH: - return Direction.SOUTH; - default: - return Direction.NORTH; - } - } - - @Override - protected BlockState getUpdatedState(World world, BlockPos pos, BlockState state, boolean p_208489_4_) { - BlockState updatedState = super.getUpdatedState(world, pos, state, p_208489_4_); - if (updatedState.get(SHAPE) == state.get(SHAPE)) - return updatedState; - BlockState reversedUpdatedState = updatedState; - - // Rails snapping to others at 90 degrees should follow their direction - if (getPointingTowards(state).getAxis() != getPointingTowards(updatedState).getAxis()) { - for (boolean opposite : Iterate.trueAndFalse) { - Direction offset = getPointingTowards(updatedState); - if (opposite) - offset = offset.getOpposite(); - for (BlockPos adjPos : Iterate.hereBelowAndAbove(pos.offset(offset))) { - BlockState adjState = world.getBlockState(adjPos); - if (!AllBlocks.CONTROLLER_RAIL.has(adjState)) - continue; - if (getPointingTowards(adjState).getAxis() != offset.getAxis()) - continue; - if (adjState.get(BACKWARDS) != reversedUpdatedState.get(BACKWARDS)) - reversedUpdatedState = reversedUpdatedState.cycle(BACKWARDS); - } - } - } - - // Replace if changed - if (reversedUpdatedState != updatedState) - world.setBlockState(pos, reversedUpdatedState); - return reversedUpdatedState; - } - - private static void decelerateCart(BlockPos pos, AbstractMinecartEntity cart) { - Vector3d diff = VecHelper.getCenterOf(pos) - .subtract(cart.getPositionVec()); - cart.setMotion(diff.x / 16f, 0, diff.z / 16f); - - if (cart instanceof FurnaceMinecartEntity) { - FurnaceMinecartEntity fme = (FurnaceMinecartEntity) cart; - fme.pushX = fme.pushZ = 0; - } - } - - private static boolean isStableWith(BlockState testState, IBlockReader world, BlockPos pos) { - return hasSolidSideOnTop(world, pos.down()) && (!testState.get(SHAPE) - .isAscending() || hasSolidSideOnTop(world, pos.offset(getPointingTowards(testState)))); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { - Direction direction = p_196258_1_.getPlacementHorizontalFacing(); - BlockState base = super.getStateForPlacement(p_196258_1_); - return (base == null ? getDefaultState() : base).with(BACKWARDS, - direction.getAxisDirection() == AxisDirection.POSITIVE); - } - - @Override - public Property getShapeProperty() { - return SHAPE; - } - - @Override - protected void fillStateContainer(StateContainer.Builder p_206840_1_) { - p_206840_1_.add(SHAPE, POWER, BACKWARDS); - } - - @Override - public void onMinecartPass(BlockState state, World world, BlockPos pos, AbstractMinecartEntity cart) { - if (world.isRemote) - return; - Vector3d accelerationVec = Vector3d.of(getAccelerationVector(state)); - double targetSpeed = cart.getMaxSpeedWithRail() * state.get(POWER) / 15f; - - if (cart instanceof FurnaceMinecartEntity) { - FurnaceMinecartEntity fme = (FurnaceMinecartEntity) cart; - fme.pushX = accelerationVec.x; - fme.pushZ = accelerationVec.z; - } - - Vector3d motion = cart.getMotion(); - if ((motion.dotProduct(accelerationVec) >= 0 || motion.lengthSquared() < 0.0001) && targetSpeed > 0) - cart.setMotion(accelerationVec.scale(targetSpeed)); - else - decelerateCart(pos, cart); - } - - @Override - protected void updateState(BlockState state, World world, BlockPos pos, Block block) { - int newPower = calculatePower(world, pos); - if (state.get(POWER) != newPower) - placeAndNotify(state.with(POWER, newPower), pos, world); - } - - private int calculatePower(World world, BlockPos pos) { - int newPower = world.getRedstonePowerFromNeighbors(pos); - if (newPower != 0) - return newPower; - - int forwardDistance = 0; - int backwardsDistance = 0; - BlockPos lastForwardRail = pos; - BlockPos lastBackwardsRail = pos; - int forwardPower = 0; - int backwardsPower = 0; - - for (int i = 0; i < 15; i++) { - BlockPos testPos = findNextRail(lastForwardRail, world, false); - if (testPos == null) - break; - forwardDistance++; - lastForwardRail = testPos; - forwardPower = world.getRedstonePowerFromNeighbors(testPos); - if (forwardPower != 0) - break; - } - for (int i = 0; i < 15; i++) { - BlockPos testPos = findNextRail(lastBackwardsRail, world, true); - if (testPos == null) - break; - backwardsDistance++; - lastBackwardsRail = testPos; - backwardsPower = world.getRedstonePowerFromNeighbors(testPos); - if (backwardsPower != 0) - break; - } - - if (forwardDistance > 8 && backwardsDistance > 8) - return 0; - if (backwardsPower == 0 && forwardDistance <= 8) - return forwardPower; - if (forwardPower == 0 && backwardsDistance <= 8) - return backwardsPower; - if (backwardsPower != 0 && forwardPower != 0) - return MathHelper.ceil((backwardsPower * forwardDistance + forwardPower * backwardsDistance) - / (double) (forwardDistance + backwardsDistance)); - return 0; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - if (world.isRemote) - return ActionResultType.SUCCESS; - BlockPos pos = context.getPos(); - for (Rotation testRotation : new Rotation[] { Rotation.CLOCKWISE_90, Rotation.CLOCKWISE_180, - Rotation.COUNTERCLOCKWISE_90 }) { - BlockState testState = rotate(state, testRotation); - if (isStableWith(testState, world, pos)) { - placeAndNotify(testState, pos, world); - break; - } - } - return ActionResultType.SUCCESS; - } - - @Override - public ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - BlockState testState = state.with(BACKWARDS, !state.get(BACKWARDS)); - if (isStableWith(testState, world, pos)) - placeAndNotify(testState, pos, world); - return ActionResultType.SUCCESS; - } - - private void placeAndNotify(BlockState state, BlockPos pos, World world) { - world.setBlockState(pos, state, 3); - world.notifyNeighborsOfStateChange(pos.down(), this); - if (state.get(SHAPE) - .isAscending()) - world.notifyNeighborsOfStateChange(pos.up(), this); - } - - @Nullable - private BlockPos findNextRail(BlockPos from, IBlockReader world, boolean reversed) { - BlockState current = world.getBlockState(from); - if (!(current.getBlock() instanceof ControllerRailBlock)) - return null; - Vector3i accelerationVec = getAccelerationVector(current); - BlockPos baseTestPos = reversed ? from.subtract(accelerationVec) : from.add(accelerationVec); - for (BlockPos testPos : Iterate.hereBelowAndAbove(baseTestPos)) { - if (testPos.getY() > from.getY() && !current.get(SHAPE) - .isAscending()) - continue; - BlockState testState = world.getBlockState(testPos); - if (testState.getBlock() instanceof ControllerRailBlock - && getAccelerationVector(testState).equals(accelerationVec)) - return testPos; - } - return null; - } - - @Override - public boolean hasComparatorInputOverride(BlockState state) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState state, World world, BlockPos pos) { - return state.get(POWER); - } - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { - if (rotation == Rotation.NONE) - return state; - - RailShape railshape = Blocks.POWERED_RAIL.getDefaultState() - .with(SHAPE, state.get(SHAPE)) - .rotate(rotation) - .get(SHAPE); - state = state.with(SHAPE, railshape); - - if (rotation == Rotation.CLOCKWISE_180 - || (getPointingTowards(state).getAxis() == Axis.Z) == (rotation == Rotation.COUNTERCLOCKWISE_90)) - return state.cycle(BACKWARDS); - - return state; - } - - @Override - public BlockState mirror(BlockState state, Mirror mirror) { - if (mirror == Mirror.NONE) - return state; - - RailShape railshape = Blocks.POWERED_RAIL.getDefaultState() - .with(SHAPE, state.get(SHAPE)) - .mirror(mirror) - .get(SHAPE); - state = state.with(SHAPE, railshape); - - if ((getPointingTowards(state).getAxis() == Axis.Z) == (mirror == Mirror.LEFT_RIGHT)) - return state.cycle(BACKWARDS); - - return state; - } - - public static boolean isStateBackwards(BlockState state) { - return state.get(BACKWARDS) ^ isReversedSlope(state); - } - - public static boolean isReversedSlope(BlockState state) { - return state.get(SHAPE) == RailShape.ASCENDING_SOUTH || state.get(SHAPE) == RailShape.ASCENDING_EAST; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailGenerator.java deleted file mode 100644 index cc961ac13..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ControllerRailGenerator.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.simibubi.create.content.contraptions.components.tracks; - -import com.simibubi.create.foundation.data.AssetLookup; -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.state.Property; -import net.minecraft.state.properties.RailShape; -import net.minecraftforge.client.model.generators.ModelFile; - -public class ControllerRailGenerator extends SpecialBlockStateGen { - - @Override - protected Property[] getIgnoredProperties() { - return new Property[] { ControllerRailBlock.POWER }; - } - - @Override - protected int getXRotation(BlockState state) { - return 0; - } - - @Override - protected int getYRotation(BlockState state) { - RailShape shape = state.get(ControllerRailBlock.SHAPE); - boolean backwards = ControllerRailBlock.isStateBackwards(state); - int rotation = backwards ? 180 : 0; - - switch (shape) { - case EAST_WEST: - case ASCENDING_WEST: - return rotation + 270; - case ASCENDING_EAST: - return rotation + 90; - case ASCENDING_SOUTH: - return rotation + 180; - default: - return rotation; - } - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - RailShape shape = state.get(ControllerRailBlock.SHAPE); - boolean backwards = ControllerRailBlock.isStateBackwards(state); - - String model = shape.isAscending() ? backwards ? "ascending_south" : "ascending_north" : "north_south"; - return AssetLookup.partialBaseModel(ctx, prov, model); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ReinforcedRailBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ReinforcedRailBlock.java deleted file mode 100644 index cb092ceff..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/tracks/ReinforcedRailBlock.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.simibubi.create.content.contraptions.components.tracks; - -import javax.annotation.Nonnull; - -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.RailShape; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public class ReinforcedRailBlock extends AbstractRailBlock { - - public static Property RAIL_SHAPE = - EnumProperty.create("shape", RailShape.class, RailShape.EAST_WEST, RailShape.NORTH_SOUTH); - - public static Property CONNECTS_N = BooleanProperty.create("connects_n"); - public static Property CONNECTS_S = BooleanProperty.create("connects_s"); - - public ReinforcedRailBlock(Properties properties) { - super(true, properties); - } - - @Override - public void fillItemGroup(ItemGroup p_149666_1_, NonNullList p_149666_2_) { - // TODO re-add when finished - } - - @Nonnull - @Override - public Property getShapeProperty() { - return RAIL_SHAPE; - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(RAIL_SHAPE, CONNECTS_N, CONNECTS_S); - super.fillStateContainer(builder); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - boolean alongX = context.getPlacementHorizontalFacing().getAxis() == Axis.X; - return super.getStateForPlacement(context).with(RAIL_SHAPE, alongX ? RailShape.EAST_WEST : RailShape.NORTH_SOUTH).with(CONNECTS_N, false).with(CONNECTS_S, false); - } - - @Override - public boolean canMakeSlopes(@Nonnull BlockState state, @Nonnull IBlockReader world, @Nonnull BlockPos pos) { - return false; - } - - @Override - protected void updateState(@Nonnull BlockState state, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull Block block) { - super.updateState(state, world, pos, block); - world.setBlockState(pos, getUpdatedState(world, pos, state, true)); - } - - @Override - @Nonnull - protected BlockState getUpdatedState(@Nonnull World world, BlockPos pos, BlockState state, - boolean p_208489_4_) { - - boolean alongX = state.get(RAIL_SHAPE) == RailShape.EAST_WEST; - BlockPos sPos = pos.add(alongX ? -1 : 0, 0, alongX ? 0 : 1); - BlockPos nPos = pos.add(alongX ? 1 : 0, 0, alongX ? 0 : -1); - - return super.getUpdatedState(world, pos, state, p_208489_4_).with(CONNECTS_S, world.getBlockState(sPos).getBlock() instanceof ReinforcedRailBlock && - (world.getBlockState(sPos).get(RAIL_SHAPE) == state.get(RAIL_SHAPE))) - .with(CONNECTS_N, world.getBlockState(nPos).getBlock() instanceof ReinforcedRailBlock && - (world.getBlockState(nPos).get(RAIL_SHAPE) == state.get(RAIL_SHAPE))); - } - - @Override - @Nonnull - public VoxelShape getCollisionShape(@Nonnull BlockState state, @Nonnull IBlockReader worldIn, @Nonnull BlockPos pos, - ISelectionContext context) { //FIXME - if (context.getEntity() instanceof AbstractMinecartEntity) - return VoxelShapes.empty(); - return getShape(state, worldIn, pos, null); - } - - @Override - @Nonnull - public VoxelShape getShape(BlockState state, @Nonnull IBlockReader reader, @Nonnull BlockPos pos, ISelectionContext context) { - boolean alongX = state.get(RAIL_SHAPE) == RailShape.EAST_WEST; - return VoxelShapes.or(makeCuboidShape(0, -2, 0, 16, 2, 16), VoxelShapes.or(makeCuboidShape(0, -2, 0, alongX ? 16 : -1, 12, alongX ? -1 : 16), makeCuboidShape(alongX ? 0 : 17, -2, alongX ? 17 : 0, 16, 12, 16))); - } - - @Override - @Nonnull - public PushReaction getPushReaction(BlockState state) { - return PushReaction.BLOCK; - } - - /* FIXME: Same thing as before, does this still matter? If so, what is the new way of doing it? - @Override - public boolean isNormalCube(BlockState state, IBlockReader worldIn, BlockPos pos) { - return false; - }*/ - - @Override - public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { - return !(world.getBlockState(pos.down()).getBlock() instanceof AbstractRailBlock || world.getBlockState(pos.up()).getBlock() instanceof AbstractRailBlock); - } - - @Override - public void neighborChanged(@Nonnull BlockState state, World world, @Nonnull BlockPos pos, @Nonnull Block block, @Nonnull BlockPos pos2, boolean p_220069_6_) { - if (!world.isRemote) { - if ((world.getBlockState(pos.down()).getBlock() instanceof AbstractRailBlock)) { - if (!p_220069_6_) { - spawnDrops(state, world, pos); - } - world.removeBlock(pos, false); - } else { - this.updateState(state, world, pos, block); - } - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableBlock.java deleted file mode 100644 index c9763ef7f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableBlock.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.simibubi.create.content.contraptions.components.turntable; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.KineticBlock; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public class TurntableBlock extends KineticBlock implements ITE { - - public TurntableBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.TURNTABLE.create(); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.ENTITYBLOCK_ANIMATED; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.TURNTABLE_SHAPE; - } - - @Override - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity e) { - if (!e.isOnGround()) - return; - if (e.getMotion().y > 0) - return; - if (e.getY() < pos.getY() + .5f) - return; - - withTileEntityDo(worldIn, pos, te -> { - float speed = ((KineticTileEntity) te).getSpeed() * 3 / 10; - if (speed == 0) - return; - - World world = e.getEntityWorld(); - if (world.isRemote && (e instanceof PlayerEntity)) { - if (worldIn.getBlockState(e.getBlockPos()) != state) { - Vector3d origin = VecHelper.getCenterOf(pos); - Vector3d offset = e.getPositionVec() - .subtract(origin); - offset = VecHelper.rotate(offset, MathHelper.clamp(speed, -16, 16) / 1f, Axis.Y); - Vector3d movement = origin.add(offset) - .subtract(e.getPositionVec()); - e.setMotion(e.getMotion() - .add(movement)); - e.velocityChanged = true; - } - } - - if ((e instanceof PlayerEntity)) - return; - if (world.isRemote) - return; - - if ((e instanceof LivingEntity)) { - float diff = e.getRotationYawHead() - speed; - ((LivingEntity) e).setIdleTime(20); - e.setRenderYawOffset(diff); - e.setRotationYawHead(diff); - e.setOnGround(false); - e.velocityChanged = true; - } - - e.rotationYaw -= speed; - }); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == Direction.DOWN; - } - - @Override - public Axis getRotationAxis(BlockState state) { - return Axis.Y; - } - - @Override - public Class getTileEntityClass() { - return TurntableTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableHandler.java b/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableHandler.java deleted file mode 100644 index b4649949a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableHandler.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.simibubi.create.content.contraptions.components.turntable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class TurntableHandler { - - public static void gameRenderTick() { - Minecraft mc = Minecraft.getInstance(); - BlockPos pos = mc.player.getBlockPos(); - - if (!AllBlocks.TURNTABLE.has(mc.world.getBlockState(pos))) - return; - if (!mc.player.isOnGround()) - return; - if (mc.isGamePaused()) - return; - - TileEntity tileEntity = mc.world.getTileEntity(pos); - if (!(tileEntity instanceof TurntableTileEntity)) - return; - - TurntableTileEntity turnTable = (TurntableTileEntity) tileEntity; - float speed = turnTable.getSpeed() * 3/10; - - if (speed == 0) - return; - - Vector3d origin = VecHelper.getCenterOf(pos); - Vector3d offset = mc.player.getPositionVec().subtract(origin); - - if (offset.length() > 1/4f) - speed *= MathHelper.clamp((1/2f - offset.length()) * 2, 0, 1); - - mc.player.rotationYaw = mc.player.prevRotationYaw - speed * AnimationTickHolder.getPartialTicks(); - mc.player.renderYawOffset = mc.player.rotationYaw; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableTileEntity.java deleted file mode 100644 index a23f4d811..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/turntable/TurntableTileEntity.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simibubi.create.content.contraptions.components.turntable; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; - -import net.minecraft.tileentity.TileEntityType; - -public class TurntableTileEntity extends KineticTileEntity { - - public TurntableTileEntity(TileEntityType type) { - super(type); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java deleted file mode 100644 index de25c380c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelBlock.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.simibubi.create.content.contraptions.components.waterwheel; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllFluids; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.BubbleColumnBlock; -import net.minecraft.fluid.FluidState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class WaterWheelBlock extends HorizontalKineticBlock implements ITE { - - public WaterWheelBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.WATER_WHEEL.create(); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.ENTITYBLOCK_ANIMATED; - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - for (Direction direction : Iterate.directions) { - BlockPos neighbourPos = pos.offset(direction); - BlockState neighbourState = worldIn.getBlockState(neighbourPos); - if (!AllBlocks.WATER_WHEEL.has(neighbourState)) - continue; - if (neighbourState.get(HORIZONTAL_FACING) - .getAxis() != state.get(HORIZONTAL_FACING) - .getAxis() - || state.get(HORIZONTAL_FACING) - .getAxis() != direction.getAxis()) - return false; - } - - return true; - } - - @Override - public BlockState updatePostPlacement(BlockState stateIn, Direction facing, BlockState facingState, IWorld worldIn, - BlockPos currentPos, BlockPos facingPos) { - if (worldIn instanceof WrappedWorld) - return stateIn; - updateFlowAt(stateIn, worldIn, currentPos, facing); - updateWheelSpeed(worldIn, currentPos); - return stateIn; - } - - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - updateAllSides(state, worldIn, pos); - } - - public void updateAllSides(BlockState state, World worldIn, BlockPos pos) { - for (Direction d : Iterate.directions) - updateFlowAt(state, worldIn, pos, d); - updateWheelSpeed(worldIn, pos); - } - - private void updateFlowAt(BlockState state, IWorld world, BlockPos pos, Direction side) { - if (side.getAxis() == state.get(HORIZONTAL_FACING) - .getAxis()) - return; - - FluidState fluid = world.getFluidState(pos.offset(side)); - Direction wf = state.get(HORIZONTAL_FACING); - boolean clockwise = wf.getAxisDirection() == AxisDirection.POSITIVE; - int clockwiseMultiplier = 2; - - Vector3d vec = fluid.getFlow(world, pos.offset(side)); - if (side.getAxis() - .isHorizontal()) { - BlockState adjacentBlock = world.getBlockState(pos.offset(side)); - if (adjacentBlock.getBlock() == Blocks.BUBBLE_COLUMN.getBlock()) - vec = new Vector3d(0, adjacentBlock.get(BubbleColumnBlock.DRAG) ? -1 : 1, 0); - } - - vec = vec.scale(side.getAxisDirection() - .getOffset()); - vec = new Vector3d(Math.signum(vec.x), Math.signum(vec.y), Math.signum(vec.z)); - Vector3d flow = vec; - - withTileEntityDo(world, pos, te -> { - double flowStrength = 0; - - if (wf.getAxis() == Axis.Z) { - if (side.getAxis() == Axis.Y) - flowStrength = flow.x > 0 ^ !clockwise ? -flow.x * clockwiseMultiplier : -flow.x; - if (side.getAxis() == Axis.X) - flowStrength = flow.y < 0 ^ !clockwise ? flow.y * clockwiseMultiplier : flow.y; - } - - if (wf.getAxis() == Axis.X) { - if (side.getAxis() == Axis.Y) - flowStrength = flow.z < 0 ^ !clockwise ? flow.z * clockwiseMultiplier : flow.z; - if (side.getAxis() == Axis.Z) - flowStrength = flow.y > 0 ^ !clockwise ? -flow.y * clockwiseMultiplier : -flow.y; - } - - if (te.getSpeed() == 0 && flowStrength != 0 && !world.isRemote()) { - AllTriggers.triggerForNearbyPlayers(AllTriggers.WATER_WHEEL, world, pos, 5); - if (FluidHelper.isLava(fluid.getFluid())) - AllTriggers.triggerForNearbyPlayers(AllTriggers.LAVA_WHEEL, world, pos, 5); - if (fluid.getFluid().isEquivalentTo(AllFluids.CHOCOLATE.get())) - AllTriggers.triggerForNearbyPlayers(AllTriggers.CHOCOLATE_WHEEL, world, pos, 5); - } - - Integer flowModifier = AllConfigs.SERVER.kinetics.waterWheelFlowSpeed.get(); - te.setFlow(side, (float) (flowStrength * flowModifier / 2f)); - }); - } - - private void updateWheelSpeed(IWorld world, BlockPos pos) { - withTileEntityDo(world, pos, WaterWheelTileEntity::updateGeneratedRotation); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction facing = context.getFace(); - BlockState placedOn = context.getWorld() - .getBlockState(context.getPos() - .offset(facing.getOpposite())); - if (AllBlocks.WATER_WHEEL.has(placedOn)) - return getDefaultState().with(HORIZONTAL_FACING, placedOn.get(HORIZONTAL_FACING)); - if (facing.getAxis() - .isHorizontal()) - return getDefaultState().with(HORIZONTAL_FACING, context.getPlayer() != null && context.getPlayer() - .isSneaking() ? facing.getOpposite() : facing); - return super.getStateForPlacement(context); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return state.get(HORIZONTAL_FACING) - .getAxis() == face.getAxis(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(HORIZONTAL_FACING) - .getAxis(); - } - - @Override - public float getParticleTargetRadius() { - return 1.125f; - } - - @Override - public float getParticleInitialRadius() { - return 1f; - } - - @Override - public boolean hideStressImpact() { - return true; - } - - @Override - public Class getTileEntityClass() { - return WaterWheelTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java deleted file mode 100644 index 7f89e5c47..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/components/waterwheel/WaterWheelTileEntity.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.simibubi.create.content.contraptions.components.waterwheel; - -import java.util.HashMap; -import java.util.Map; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; - -public class WaterWheelTileEntity extends GeneratingKineticTileEntity { - - private Map flows; - - public WaterWheelTileEntity(TileEntityType type) { - super(type); - flows = new HashMap<>(); - for (Direction d : Iterate.directions) - setFlow(d, 0); - setLazyTickRate(20); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - if (compound.contains("Flows")) { - for (Direction d : Iterate.directions) - setFlow(d, compound.getCompound("Flows") - .getFloat(d.getString())); - } - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - return new AxisAlignedBB(pos).grow(1); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - CompoundNBT flows = new CompoundNBT(); - for (Direction d : Iterate.directions) - flows.putFloat(d.getString(), this.flows.get(d)); - compound.put("Flows", flows); - - super.write(compound, clientPacket); - } - - public void setFlow(Direction direction, float speed) { - flows.put(direction, speed); - markDirty(); - } - - @Override - public float getGeneratedSpeed() { - float speed = 0; - for (Float f : flows.values()) - speed += f; - if (speed != 0) - speed += AllConfigs.SERVER.kinetics.waterWheelBaseSpeed.get() * Math.signum(speed); - return speed; - } - - @Override - public void lazyTick() { - super.lazyTick(); - AllBlocks.WATER_WHEEL.get() - .updateAllSides(getBlockState(), world, pos); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FlowSource.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FlowSource.java deleted file mode 100644 index e2beb3a37..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FlowSource.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.lang.ref.WeakReference; -import java.util.function.Predicate; - -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.BlockFace; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; - -public abstract class FlowSource { - - private static final LazyOptional EMPTY = LazyOptional.empty(); - - BlockFace location; - - public FlowSource(BlockFace location) { - this.location = location; - } - - public FluidStack provideFluid(Predicate extractionPredicate) { - IFluidHandler tank = provideHandler().orElse(null); - if (tank == null) - return FluidStack.EMPTY; - FluidStack immediateFluid = tank.drain(1, FluidAction.SIMULATE); - if (extractionPredicate.test(immediateFluid)) - return immediateFluid; - - for (int i = 0; i < tank.getTanks(); i++) { - FluidStack contained = tank.getFluidInTank(i); - if (contained.isEmpty()) - continue; - if (!extractionPredicate.test(contained)) - continue; - FluidStack toExtract = contained.copy(); - toExtract.setAmount(1); - return tank.drain(toExtract, FluidAction.SIMULATE); - } - - return FluidStack.EMPTY; - } - - // Layer III. PFIs need active attention to prevent them from disengaging early - public void keepAlive() {} - - public abstract boolean isEndpoint(); - - public void manageSource(World world) {} - - public void whileFlowPresent(World world, boolean pulling) {} - - public LazyOptional provideHandler() { - return EMPTY; - } - - public static class FluidHandler extends FlowSource { - LazyOptional fluidHandler; - - public FluidHandler(BlockFace location) { - super(location); - fluidHandler = EMPTY; - } - - public void manageSource(World world) { - if (fluidHandler.isPresent()) - return; - TileEntity tileEntity = world.getTileEntity(location.getConnectedPos()); - if (tileEntity != null) - fluidHandler = tileEntity.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, - location.getOppositeFace()); - } - - @Override - public LazyOptional provideHandler() { - return fluidHandler; - } - - @Override - public boolean isEndpoint() { - return true; - } - } - - public static class OtherPipe extends FlowSource { - WeakReference cached; - - public OtherPipe(BlockFace location) { - super(location); - } - - @Override - public void manageSource(World world) { - if (cached != null && cached.get() != null && !cached.get().tileEntity.isRemoved()) - return; - cached = null; - FluidTransportBehaviour fluidTransportBehaviour = - TileEntityBehaviour.get(world, location.getConnectedPos(), FluidTransportBehaviour.TYPE); - if (fluidTransportBehaviour != null) - cached = new WeakReference<>(fluidTransportBehaviour); - } - - @Override - public FluidStack provideFluid(Predicate extractionPredicate) { - if (cached == null || cached.get() == null) - return FluidStack.EMPTY; - FluidTransportBehaviour behaviour = cached.get(); - FluidStack providedOutwardFluid = behaviour.getProvidedOutwardFluid(location.getOppositeFace()); - return extractionPredicate.test(providedOutwardFluid) ? providedOutwardFluid : FluidStack.EMPTY; - } - - @Override - public boolean isEndpoint() { - return false; - } - - } - - public static class Blocked extends FlowSource { - - public Blocked(BlockFace location) { - super(location); - } - - @Override - public boolean isEndpoint() { - return false; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java deleted file mode 100644 index 9a2d9f047..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidBottleItemHook.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import com.simibubi.create.Create; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.item.GlassBottleItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class FluidBottleItemHook extends Item { - - public FluidBottleItemHook(Properties p_i48487_1_) { - super(p_i48487_1_); - } - - @SubscribeEvent - public static void preventWaterBottlesFromCreatesFluids(PlayerInteractEvent.RightClickItem event) { - ItemStack itemStack = event.getItemStack(); - if (itemStack.isEmpty()) - return; - if (!(itemStack.getItem() instanceof GlassBottleItem)) - return; - - World world = event.getWorld(); - PlayerEntity player = event.getPlayer(); - RayTraceResult raytraceresult = rayTrace(world, player, RayTraceContext.FluidMode.SOURCE_ONLY); - if (raytraceresult.getType() != RayTraceResult.Type.BLOCK) - return; - BlockPos blockpos = ((BlockRayTraceResult) raytraceresult).getPos(); - if (!world.isBlockModifiable(player, blockpos)) - return; - - FluidState fluidState = world.getFluidState(blockpos); - if (fluidState.isTagged(FluidTags.WATER) && fluidState.getFluid() - .getRegistryName() - .getNamespace() - .equals(Create.ID)) { - event.setCancellationResult(ActionResultType.PASS); - event.setCanceled(true); - return; - } - - return; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidFX.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidFX.java deleted file mode 100644 index bd22b97d1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidFX.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.util.Random; - -import com.simibubi.create.AllParticleTypes; -import com.simibubi.create.content.contraptions.fluids.particle.FluidParticleData; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; - -public class FluidFX { - - static Random r = new Random(); - - public static void splash(BlockPos pos, FluidStack fluidStack) { - Fluid fluid = fluidStack.getFluid(); - if (fluid == Fluids.EMPTY) - return; - - FluidState defaultState = fluid.getDefaultState(); - if (defaultState == null || defaultState.isEmpty()) { - return; - } - - BlockParticleData blockParticleData = new BlockParticleData(ParticleTypes.BLOCK, defaultState.getBlockState()); - Vector3d center = VecHelper.getCenterOf(pos); - - for (int i = 0; i < 20; i++) { - Vector3d v = VecHelper.offsetRandomly(Vector3d.ZERO, r, .25f); - particle(blockParticleData, center.add(v), v); - } - - } - - public static IParticleData getFluidParticle(FluidStack fluid) { - return new FluidParticleData(AllParticleTypes.FLUID_PARTICLE.get(), fluid); - } - - public static IParticleData getDrippingParticle(FluidStack fluid) { - IParticleData particle = null; - if (FluidHelper.isWater(fluid.getFluid())) - particle = ParticleTypes.DRIPPING_WATER; - if (FluidHelper.isLava(fluid.getFluid())) - particle = ParticleTypes.DRIPPING_LAVA; - if (particle == null) - particle = new FluidParticleData(AllParticleTypes.FLUID_DRIP.get(), fluid); - return particle; - } - - public static void spawnRimParticles(World world, BlockPos pos, Direction side, int amount, IParticleData particle, - float rimRadius) { - Vector3d directionVec = Vector3d.of(side.getDirectionVec()); - for (int i = 0; i < amount; i++) { - Vector3d vec = VecHelper.offsetRandomly(Vector3d.ZERO, r, 1) - .normalize(); - vec = VecHelper.clampComponentWise(vec, rimRadius) - .mul(VecHelper.axisAlingedPlaneOf(directionVec)) - .add(directionVec.scale(.45 + r.nextFloat() / 16f)); - Vector3d m = vec.scale(.05f); - vec = vec.add(VecHelper.getCenterOf(pos)); - - world.addOptionalParticle(particle, vec.x, vec.y - 1 / 16f, vec.z, m.x, m.y, m.z); - } - } - - public static void spawnPouringLiquid(World world, BlockPos pos, int amount, IParticleData particle, - float rimRadius, Vector3d directionVec, boolean inbound) { - for (int i = 0; i < amount; i++) { - Vector3d vec = VecHelper.offsetRandomly(Vector3d.ZERO, r, rimRadius * .75f); - vec = vec.mul(VecHelper.axisAlingedPlaneOf(directionVec)) - .add(directionVec.scale(.5 + r.nextFloat() / 4f)); - Vector3d m = vec.scale(1 / 4f); - Vector3d centerOf = VecHelper.getCenterOf(pos); - vec = vec.add(centerOf); - if (inbound) { - vec = vec.add(m); - m = centerOf.add(directionVec.scale(.5)) - .subtract(vec) - .scale(1 / 16f); - } - world.addOptionalParticle(particle, vec.x, vec.y - 1 / 16f, vec.z, m.x, m.y, m.z); - } - } - - private static void particle(IParticleData data, Vector3d pos, Vector3d motion) { - world().addParticle(data, pos.x, pos.y, pos.z, motion.x, motion.y, motion.z); - } - - private static World world() { - return Minecraft.getInstance().world; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java deleted file mode 100644 index 364b7cf29..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidNetwork.java +++ /dev/null @@ -1,292 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.function.Supplier; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.fluids.PipeConnection.Flow; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.BlockFace; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; - -public class FluidNetwork { - - private static int CYCLES_PER_TICK = 16; - - World world; - BlockFace start; - - Supplier> sourceSupplier; - LazyOptional source; - int transferSpeed; - - int pauseBeforePropagation; - List queued; - Set> frontier; - Set visited; - FluidStack fluid; - List>> targets; - Map> cache; - - public FluidNetwork(World world, BlockFace location, Supplier> sourceSupplier) { - this.world = world; - this.start = location; - this.sourceSupplier = sourceSupplier; - this.source = LazyOptional.empty(); - this.fluid = FluidStack.EMPTY; - this.frontier = new HashSet<>(); - this.visited = new HashSet<>(); - this.targets = new ArrayList<>(); - this.cache = new HashMap<>(); - this.queued = new ArrayList<>(); - reset(); - } - - public void tick() { - if (pauseBeforePropagation > 0) { - pauseBeforePropagation--; - return; - } - - for (int cycle = 0; cycle < CYCLES_PER_TICK; cycle++) { - boolean shouldContinue = false; - for (Iterator iterator = queued.iterator(); iterator.hasNext();) { - BlockFace blockFace = iterator.next(); - if (!isPresent(blockFace)) - continue; - PipeConnection pipeConnection = get(blockFace); - if (pipeConnection != null) { - if (blockFace.equals(start)) - transferSpeed = (int) Math.max(1, pipeConnection.pressure.get(true) / 2f); - frontier.add(Pair.of(blockFace, pipeConnection)); - } - iterator.remove(); - } - -// drawDebugOutlines(); - - for (Iterator> iterator = frontier.iterator(); iterator.hasNext();) { - Pair pair = iterator.next(); - BlockFace blockFace = pair.getFirst(); - PipeConnection pipeConnection = pair.getSecond(); - - if (!pipeConnection.hasFlow()) - continue; - - Flow flow = pipeConnection.flow.get(); - if (!fluid.isEmpty() && !flow.fluid.isFluidEqual(fluid)) { - iterator.remove(); - continue; - } - if (!flow.inbound) { - if (pipeConnection.comparePressure() >= 0) - iterator.remove(); - continue; - } - if (!flow.complete) - continue; - - if (fluid.isEmpty()) - fluid = flow.fluid; - - boolean canRemove = true; - for (Direction side : Iterate.directions) { - if (side == blockFace.getFace()) - continue; - BlockFace adjacentLocation = new BlockFace(blockFace.getPos(), side); - PipeConnection adjacent = get(adjacentLocation); - if (adjacent == null) - continue; - if (!adjacent.hasFlow()) { - // Branch could potentially still appear - if (adjacent.hasPressure() && adjacent.pressure.getSecond() > 0) - canRemove = false; - continue; - } - Flow outFlow = adjacent.flow.get(); - if (outFlow.inbound) { - if (adjacent.comparePressure() > 0) - canRemove = false; - continue; - } - if (!outFlow.complete) { - canRemove = false; - continue; - } - - if (adjacent.source.isPresent() && adjacent.source.get() - .isEndpoint()) { - targets.add(Pair.of(adjacentLocation, adjacent.source.get() - .provideHandler())); - continue; - } - - if (visited.add(adjacentLocation.getConnectedPos())) { - queued.add(adjacentLocation.getOpposite()); - shouldContinue = true; - } - } - if (canRemove) - iterator.remove(); - } - if (!shouldContinue) - break; - } - -// drawDebugOutlines(); - - if (!source.isPresent()) - source = sourceSupplier.get(); - if (!source.isPresent()) - return; - if (targets.isEmpty()) - return; - for (Pair> pair : targets) { - if (pair.getSecond() - .isPresent()) - continue; - PipeConnection pipeConnection = get(pair.getFirst()); - if (pipeConnection == null) - continue; - pipeConnection.source.ifPresent(fs -> { - if (fs.isEndpoint()) - pair.setSecond(fs.provideHandler()); - }); - } - - int flowSpeed = transferSpeed; - for (boolean simulate : Iterate.trueAndFalse) { - FluidAction action = simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE; - - IFluidHandler handler = source.orElse(null); - if (handler == null) - return; - - FluidStack transfer = FluidStack.EMPTY; - for (int i = 0; i < handler.getTanks(); i++) { - FluidStack contained = handler.getFluidInTank(i); - if (contained.isEmpty()) - continue; - if (!contained.isFluidEqual(fluid)) - continue; - FluidStack toExtract = FluidHelper.copyStackWithAmount(contained, flowSpeed); - transfer = handler.drain(toExtract, action); - } - - if (transfer.isEmpty()) { - FluidStack genericExtract = handler.drain(flowSpeed, action); - if (!genericExtract.isEmpty() && genericExtract.isFluidEqual(fluid)) - transfer = genericExtract; - } - - if (transfer.isEmpty()) - return; - - List>> availableOutputs = new ArrayList<>(targets); - while (!availableOutputs.isEmpty() && transfer.getAmount() > 0) { - int dividedTransfer = transfer.getAmount() / availableOutputs.size(); - int remainder = transfer.getAmount() % availableOutputs.size(); - - for (Iterator>> iterator = - availableOutputs.iterator(); iterator.hasNext();) { - Pair> pair = iterator.next(); - int toTransfer = dividedTransfer; - if (remainder > 0) { - toTransfer++; - remainder--; - } - - if (transfer.isEmpty()) - break; - IFluidHandler targetHandler = pair.getSecond() - .orElse(null); - if (targetHandler == null) { - iterator.remove(); - continue; - } - - FluidStack divided = transfer.copy(); - divided.setAmount(toTransfer); - int fill = targetHandler.fill(divided, action); - transfer.setAmount(transfer.getAmount() - fill); - if (fill < toTransfer) - iterator.remove(); - } - - } - - flowSpeed -= transfer.getAmount(); - transfer = FluidStack.EMPTY; - } - } - -// private void drawDebugOutlines() { -// FluidPropagator.showBlockFace(start) -// .lineWidth(1 / 8f) -// .colored(0xff0000); -// for (Pair> pair : targets) -// FluidPropagator.showBlockFace(pair.getFirst()) -// .lineWidth(1 / 8f) -// .colored(0x00ff00); -// for (Pair pair : frontier) -// FluidPropagator.showBlockFace(pair.getFirst()) -// .lineWidth(1 / 4f) -// .colored(0xfaaa33); -// } - - public void reset() { - frontier.clear(); - visited.clear(); - targets.clear(); - queued.clear(); - fluid = FluidStack.EMPTY; - queued.add(start); - pauseBeforePropagation = 2; - } - - @Nullable - private PipeConnection get(BlockFace location) { - BlockPos pos = location.getPos(); - FluidTransportBehaviour fluidTransfer = getFluidTransfer(pos); - if (fluidTransfer == null) - return null; - return fluidTransfer.getConnection(location.getFace()); - } - - private boolean isPresent(BlockFace location) { - return world.isAreaLoaded(location.getPos(), 0); - } - - @Nullable - private FluidTransportBehaviour getFluidTransfer(BlockPos pos) { - WeakReference weakReference = cache.get(pos); - FluidTransportBehaviour behaviour = weakReference != null ? weakReference.get() : null; - if (behaviour != null && behaviour.tileEntity.isRemoved()) - behaviour = null; - if (behaviour == null) { - behaviour = TileEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE); - if (behaviour != null) - cache.put(pos, new WeakReference<>(behaviour)); - } - return behaviour; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java deleted file mode 100644 index 6e49b3c2e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidPropagator.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.fluids.PipeConnection.Flow; -import com.simibubi.create.content.contraptions.fluids.pipes.AxisPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.World; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; - -public class FluidPropagator { - - public static void propagateChangedPipe(IWorld world, BlockPos pipePos, BlockState pipeState) { - List> frontier = new ArrayList<>(); - Set visited = new HashSet<>(); - Set> discoveredPumps = new HashSet<>(); - - frontier.add(Pair.of(0, pipePos)); - - // Visit all connected pumps to update their network - while (!frontier.isEmpty()) { - Pair pair = frontier.remove(0); - BlockPos currentPos = pair.getSecond(); - if (visited.contains(currentPos)) - continue; - visited.add(currentPos); - BlockState currentState = currentPos.equals(pipePos) ? pipeState : world.getBlockState(currentPos); - FluidTransportBehaviour pipe = getPipe(world, currentPos); - if (pipe == null) - continue; - pipe.wipePressure(); - - for (Direction direction : getPipeConnections(currentState, pipe)) { - BlockPos target = currentPos.offset(direction); - if (!world.isAreaLoaded(target, 0)) - continue; - - TileEntity tileEntity = world.getTileEntity(target); - BlockState targetState = world.getBlockState(target); - if (tileEntity instanceof PumpTileEntity) { - if (!AllBlocks.MECHANICAL_PUMP.has(targetState) || targetState.get(PumpBlock.FACING) - .getAxis() != direction.getAxis()) - continue; - discoveredPumps.add(Pair.of((PumpTileEntity) tileEntity, direction.getOpposite())); - continue; - } - if (visited.contains(target)) - continue; - FluidTransportBehaviour targetPipe = getPipe(world, target); - if (targetPipe == null) - continue; - Integer distance = pair.getFirst(); - if (distance >= getPumpRange() && !targetPipe.hasAnyPressure()) - continue; - if (targetPipe.canHaveFlowToward(targetState, direction.getOpposite())) - frontier.add(Pair.of(distance + 1, target)); - } - } - - discoveredPumps.forEach(pair -> pair.getFirst() - .updatePipesOnSide(pair.getSecond())); - } - - public static void resetAffectedFluidNetworks(World world, BlockPos start, Direction side) { - List frontier = new ArrayList<>(); - Set visited = new HashSet<>(); - frontier.add(start); - - while (!frontier.isEmpty()) { - BlockPos pos = frontier.remove(0); - if (visited.contains(pos)) - continue; - visited.add(pos); - FluidTransportBehaviour pipe = getPipe(world, pos); - if (pipe == null) - continue; - - for (Direction d : Iterate.directions) { - if (pos.equals(start) && d != side) - continue; - BlockPos target = pos.offset(d); - if (visited.contains(target)) - continue; - - PipeConnection connection = pipe.getConnection(d); - if (connection == null) - continue; - if (!connection.hasFlow()) - continue; - - Flow flow = connection.flow.get(); - if (!flow.inbound) - continue; - - connection.resetNetwork(); - frontier.add(target); - } - } - } - - public static Direction validateNeighbourChange(BlockState state, World world, BlockPos pos, Block otherBlock, - BlockPos neighborPos, boolean isMoving) { - if (world.isRemote) - return null; - if (otherBlock instanceof FluidPipeBlock) - return null; - if (otherBlock instanceof AxisPipeBlock) - return null; - if (otherBlock instanceof PumpBlock) - return null; - if (otherBlock instanceof FlowingFluidBlock) - return null; - if (getStraightPipeAxis(state) == null) - return null; - for (Direction d : Iterate.directions) { - if (!pos.offset(d) - .equals(neighborPos)) - continue; - return d; - } - return null; - } - - public static FluidTransportBehaviour getPipe(IBlockReader reader, BlockPos pos) { - return TileEntityBehaviour.get(reader, pos, FluidTransportBehaviour.TYPE); - } - - public static boolean isOpenEnd(IBlockReader reader, BlockPos pos, Direction side) { - BlockPos connectedPos = pos.offset(side); - BlockState connectedState = reader.getBlockState(connectedPos); - FluidTransportBehaviour pipe = FluidPropagator.getPipe(reader, connectedPos); - if (pipe != null && pipe.canHaveFlowToward(connectedState, side.getOpposite())) - return false; - if (PumpBlock.isPump(connectedState) && connectedState.get(PumpBlock.FACING) - .getAxis() == side.getAxis()) - return false; - if (connectedState.contains(BlockStateProperties.HONEY_LEVEL)) - return true; - if (BlockHelper.hasBlockSolidSide(connectedState, reader, connectedPos, side.getOpposite())) - return false; - if (!(connectedState.getMaterial() - .isReplaceable() && connectedState.getBlockHardness(reader, connectedPos) != -1) - && !connectedState.contains(BlockStateProperties.WATERLOGGED)) - return false; - return true; - } - - public static List getPipeConnections(BlockState state, FluidTransportBehaviour pipe) { - List list = new ArrayList<>(); - for (Direction d : Iterate.directions) - if (pipe.canHaveFlowToward(state, d)) - list.add(d); - return list; - } - - public static int getPumpRange() { - return AllConfigs.SERVER.fluids.mechanicalPumpRange.get(); - } - -// static AxisAlignedBB smallCenter = new AxisAlignedBB(BlockPos.ZERO).shrink(.25); -// -// @Deprecated -// public static OutlineParams showBlockFace(BlockFace face) { -// MutableObject params = new MutableObject<>(new OutlineParams()); -// DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { -// Vector3d directionVec = new Vector3d(face.getFace() -// .getDirectionVec()); -// Vector3d scaleVec = directionVec.scale(-.25f * face.getFace() -// .getAxisDirection() -// .getOffset()); -// directionVec = directionVec.scale(.45f); -// params.setValue(CreateClient.outliner.showAABB(face, -// FluidPropagator.smallCenter.offset(directionVec.add(new Vector3d(face.getPos()))) -// .grow(scaleVec.x, scaleVec.y, scaleVec.z) -// .grow(1 / 16f))); -// }); -// return params.getValue() -// .lineWidth(1 / 16f); -// } - - public static boolean hasFluidCapability(IBlockReader world, BlockPos pos, Direction side) { - TileEntity tileEntity = world.getTileEntity(pos); - return tileEntity != null && tileEntity.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side) - .isPresent(); - } - - @Nullable - public static Axis getStraightPipeAxis(BlockState state) { - if (state.getBlock() instanceof PumpBlock) - return state.get(PumpBlock.FACING) - .getAxis(); - if (state.getBlock() instanceof AxisPipeBlock) - return state.get(AxisPipeBlock.AXIS); - if (!FluidPipeBlock.isPipe(state)) - return null; - Axis axisFound = null; - int connections = 0; - for (Axis axis : Iterate.axes) { - Direction d1 = Direction.getFacingFromAxis(AxisDirection.NEGATIVE, axis); - Direction d2 = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - boolean openAt1 = FluidPipeBlock.isOpenAt(state, d1); - boolean openAt2 = FluidPipeBlock.isOpenAt(state, d2); - if (openAt1) - connections++; - if (openAt2) - connections++; - if (openAt1 && openAt2) - if (axisFound != null) - return null; - else - axisFound = axis; - } - return connections == 2 ? axisFound : null; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidReactions.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidReactions.java deleted file mode 100644 index aa010ab7b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidReactions.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import com.simibubi.create.AllFluids; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.utility.BlockHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; - -public class FluidReactions { - - public static void handlePipeFlowCollision(World world, BlockPos pos, FluidStack fluid, FluidStack fluid2) { - Fluid f1 = fluid.getFluid(); - Fluid f2 = fluid2.getFluid(); - BlockHelper.destroyBlock(world, pos, 1); - AllTriggers.triggerForNearbyPlayers(AllTriggers.PIPE_COLLISION, world, pos, 5); - - if (f1 == Fluids.WATER && f2 == Fluids.LAVA || f2 == Fluids.WATER && f1 == Fluids.LAVA) - world.setBlockState(pos, Blocks.COBBLESTONE.getDefaultState()); - else if (f1 == Fluids.LAVA && FluidHelper.hasBlockState(f2)) { - BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f2) - .getDefaultState()); - if (lavaInteraction != null) - world.setBlockState(pos, lavaInteraction); - } else if (f2 == Fluids.LAVA && FluidHelper.hasBlockState(f1)) { - BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(f1) - .getDefaultState()); - if (lavaInteraction != null) - world.setBlockState(pos, lavaInteraction); - } - } - - public static void handlePipeSpillCollision(World world, BlockPos pos, Fluid pipeFluid, FluidState worldFluid) { - Fluid pf = FluidHelper.convertToStill(pipeFluid); - Fluid wf = worldFluid.getFluid(); - if (pf.isIn(FluidTags.WATER) && wf == Fluids.LAVA) - world.setBlockState(pos, Blocks.OBSIDIAN.getDefaultState()); - else if (pf == Fluids.WATER && wf == Fluids.FLOWING_LAVA) - world.setBlockState(pos, Blocks.COBBLESTONE.getDefaultState()); - else if (pf == Fluids.LAVA && wf == Fluids.WATER) - world.setBlockState(pos, Blocks.STONE.getDefaultState()); - else if (pf == Fluids.LAVA && wf == Fluids.FLOWING_WATER) - world.setBlockState(pos, Blocks.COBBLESTONE.getDefaultState()); - - if (pf == Fluids.LAVA) { - BlockState lavaInteraction = AllFluids.getLavaInteraction(worldFluid); - if (lavaInteraction != null) - world.setBlockState(pos, lavaInteraction); - } else if (wf == Fluids.FLOWING_LAVA && FluidHelper.hasBlockState(pf)) { - BlockState lavaInteraction = AllFluids.getLavaInteraction(FluidHelper.convertToFlowing(pf) - .getDefaultState()); - if (lavaInteraction != null) - world.setBlockState(pos, lavaInteraction); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTransportBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTransportBehaviour.java deleted file mode 100644 index 1d5d087fa..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/FluidTransportBehaviour.java +++ /dev/null @@ -1,269 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.util.Collection; -import java.util.IdentityHashMap; -import java.util.Map; -import java.util.function.Predicate; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.fluids.pipes.EncasedPipeBlock; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; - -public abstract class FluidTransportBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - - enum UpdatePhase { - WAIT_FOR_PUMPS, // Do not run Layer II logic while pumps could still be distributing pressure - FLIP_FLOWS, // Do not cut any flows until all pipes had a chance to reverse them - IDLE; // Operate normally - } - - Map interfaces; - UpdatePhase phase; - - public FluidTransportBehaviour(SmartTileEntity te) { - super(te); - phase = UpdatePhase.WAIT_FOR_PUMPS; - } - - public boolean canPullFluidFrom(FluidStack fluid, BlockState state, Direction direction) { - return true; - } - - public abstract boolean canHaveFlowToward(BlockState state, Direction direction); - - @Override - public void initialize() { - super.initialize(); - createConnectionData(); - } - - @Override - public void tick() { - super.tick(); - World world = getWorld(); - BlockPos pos = getPos(); - boolean onClient = world.isRemote; - - if (interfaces == null) - return; - Collection connections = interfaces.values(); - - // Do not provide a lone pipe connection with its own flow input - PipeConnection singleSource = null; - -// if (onClient) { -// connections.forEach(connection -> { -// connection.visualizeFlow(pos); -// connection.visualizePressure(pos); -// }); -// } - - if (phase == UpdatePhase.WAIT_FOR_PUMPS) { - phase = UpdatePhase.FLIP_FLOWS; - return; - } - - if (!onClient) { - boolean sendUpdate = false; - for (PipeConnection connection : connections) { - sendUpdate |= connection.flipFlowsIfPressureReversed(); - connection.manageSource(world, pos); - } - if (sendUpdate) - tileEntity.notifyUpdate(); - } - - if (phase == UpdatePhase.FLIP_FLOWS) { - phase = UpdatePhase.IDLE; - return; - } - - if (!onClient) { - FluidStack availableFlow = FluidStack.EMPTY; - FluidStack collidingFlow = FluidStack.EMPTY; - - for (PipeConnection connection : connections) { - FluidStack fluidInFlow = connection.getProvidedFluid(); - if (fluidInFlow.isEmpty()) - continue; - if (availableFlow.isEmpty()) { - singleSource = connection; - availableFlow = fluidInFlow; - continue; - } - if (availableFlow.isFluidEqual(fluidInFlow)) { - singleSource = null; - availableFlow = fluidInFlow; - continue; - } - collidingFlow = fluidInFlow; - break; - } - - if (!collidingFlow.isEmpty()) { - FluidReactions.handlePipeFlowCollision(world, pos, availableFlow, collidingFlow); - return; - } - - boolean sendUpdate = false; - for (PipeConnection connection : connections) { - FluidStack internalFluid = singleSource != connection ? availableFlow : FluidStack.EMPTY; - Predicate extractionPredicate = - extracted -> canPullFluidFrom(extracted, tileEntity.getBlockState(), connection.side); - sendUpdate |= connection.manageFlows(world, pos, internalFluid, extractionPredicate); - } - - if (sendUpdate) - tileEntity.notifyUpdate(); - } - - for (PipeConnection connection : connections) - connection.tickFlowProgress(world, pos); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - super.read(nbt, clientPacket); - if (interfaces == null) - interfaces = new IdentityHashMap<>(); - for (Direction face : Iterate.directions) - if (nbt.contains(face.getName2())) - interfaces.computeIfAbsent(face, d -> new PipeConnection(d)); - - // Invalid data (missing/outdated). Defer init to runtime - if (interfaces.isEmpty()) { - interfaces = null; - return; - } - - interfaces.values() - .forEach(connection -> connection.deserializeNBT(nbt, clientPacket)); - } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - super.write(nbt, clientPacket); - if (clientPacket) - createConnectionData(); - if (interfaces == null) - return; - - interfaces.values() - .forEach(connection -> connection.serializeNBT(nbt, clientPacket)); - } - - public FluidStack getProvidedOutwardFluid(Direction side) { - createConnectionData(); - if (!interfaces.containsKey(side)) - return FluidStack.EMPTY; - return interfaces.get(side) - .provideOutboundFlow(); - } - - @Nullable - public PipeConnection getConnection(Direction side) { - createConnectionData(); - return interfaces.get(side); - } - - public boolean hasAnyPressure() { - createConnectionData(); - for (PipeConnection pipeConnection : interfaces.values()) - if (pipeConnection.hasPressure()) - return true; - return false; - } - - @Nullable - public PipeConnection.Flow getFlow(Direction side) { - createConnectionData(); - if (!interfaces.containsKey(side)) - return null; - return interfaces.get(side).flow.orElse(null); - } - - public void addPressure(Direction side, boolean inbound, float pressure) { - createConnectionData(); - if (!interfaces.containsKey(side)) - return; - interfaces.get(side) - .addPressure(inbound, pressure); - tileEntity.sendData(); - } - - public void wipePressure() { - if (interfaces != null) - for (Direction d : Iterate.directions) { - if (!canHaveFlowToward(tileEntity.getBlockState(), d)) - interfaces.remove(d); - else - interfaces.computeIfAbsent(d, PipeConnection::new); - } - phase = UpdatePhase.WAIT_FOR_PUMPS; - createConnectionData(); - interfaces.values() - .forEach(PipeConnection::wipePressure); - tileEntity.sendData(); - } - - private void createConnectionData() { - if (interfaces != null) - return; - interfaces = new IdentityHashMap<>(); - for (Direction d : Iterate.directions) - if (canHaveFlowToward(tileEntity.getBlockState(), d)) - interfaces.put(d, new PipeConnection(d)); - } - - public AttachmentTypes getRenderedRimAttachment(IBlockDisplayReader world, BlockPos pos, BlockState state, - Direction direction) { - if (!canHaveFlowToward(state, direction)) - return AttachmentTypes.NONE; - - BlockPos offsetPos = pos.offset(direction); - BlockState facingState = world.getBlockState(offsetPos); - - if (facingState.getBlock() instanceof PumpBlock && facingState.get(PumpBlock.FACING) - .getAxis() == direction.getAxis()) - return AttachmentTypes.NONE; - - if (AllBlocks.ENCASED_FLUID_PIPE.has(facingState) - && facingState.get(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(direction.getOpposite()))) - return AttachmentTypes.NONE; - - if (FluidPropagator.hasFluidCapability(world, offsetPos, direction.getOpposite()) - && !AllBlocks.HOSE_PULLEY.has(facingState)) - return AttachmentTypes.DRAIN; - - return AttachmentTypes.RIM; - } - - public static enum AttachmentTypes { - NONE, RIM, DRAIN; - - public boolean hasModel() { - return this != NONE; - } - } - - @Override - public BehaviourType getType() { - return TYPE; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java deleted file mode 100644 index 7cc6874b3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/OpenEndedPipe.java +++ /dev/null @@ -1,305 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import static net.minecraft.state.properties.BlockStateProperties.HONEY_LEVEL; -import static net.minecraft.state.properties.BlockStateProperties.WATERLOGGED; - -import java.util.List; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllFluids; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.utility.BlockFace; - -import net.minecraft.block.BlockState; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.entity.LivingEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.PotionUtils; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.templates.FluidTank; - -public class OpenEndedPipe extends FlowSource { - - World world; - BlockPos pos; - AxisAlignedBB aoe; - - private OpenEndFluidHandler fluidHandler; - private BlockPos outputPos; - private boolean wasPulling; - - private FluidStack cachedFluid; - private List cachedEffects; - - public OpenEndedPipe(BlockFace face) { - super(face); - fluidHandler = new OpenEndFluidHandler(); - outputPos = face.getConnectedPos(); - pos = face.getPos(); - aoe = new AxisAlignedBB(outputPos).expand(0, -1, 0); - if (face.getFace() == Direction.DOWN) - aoe = aoe.expand(0, -1, 0); - } - - @Override - public void manageSource(World world) { - this.world = world; - } - - private FluidStack removeFluidFromSpace(boolean simulate) { - FluidStack empty = FluidStack.EMPTY; - if (world == null) - return empty; - if (!world.isAreaLoaded(outputPos, 0)) - return empty; - - BlockState state = world.getBlockState(outputPos); - FluidState fluidState = state.getFluidState(); - boolean waterlog = state.contains(WATERLOGGED); - - if (state.contains(HONEY_LEVEL) && state.get(HONEY_LEVEL) >= 5) { - if (!simulate) - world.setBlockState(outputPos, state.with(HONEY_LEVEL, 0), 3); - return new FluidStack(AllFluids.HONEY.get() - .getStillFluid(), 250); - } - - if (!waterlog && !state.getMaterial() - .isReplaceable()) - return empty; - if (fluidState.isEmpty() || !fluidState.isSource()) - return empty; - - FluidStack stack = new FluidStack(fluidState.getFluid(), 1000); - - if (simulate) - return stack; - - AllTriggers.triggerForNearbyPlayers(AllTriggers.PIPE_SPILL, world, pos, 5); - - if (waterlog) { - world.setBlockState(outputPos, state.with(WATERLOGGED, false), 3); - world.getPendingFluidTicks() - .scheduleTick(outputPos, Fluids.WATER, 1); - return stack; - } - world.setBlockState(outputPos, fluidState.getBlockState() - .with(FlowingFluidBlock.LEVEL, 14), 3); - return stack; - } - - private boolean provideFluidToSpace(FluidStack fluid, boolean simulate) { - if (world == null) - return false; - if (!world.isAreaLoaded(outputPos, 0)) - return false; - - BlockState state = world.getBlockState(outputPos); - FluidState fluidState = state.getFluidState(); - boolean waterlog = state.contains(WATERLOGGED); - - if (!waterlog && !state.getMaterial() - .isReplaceable()) - return false; - if (fluid.isEmpty()) - return false; - if (!FluidHelper.hasBlockState(fluid.getFluid())) { - if (!simulate) - applyEffects(world, fluid); - return true; - } - - if (!fluidState.isEmpty() && fluidState.getFluid() != fluid.getFluid()) { - FluidReactions.handlePipeSpillCollision(world, outputPos, fluid.getFluid(), fluidState); - return false; - } - - if (fluidState.isSource()) - return false; - if (waterlog && fluid.getFluid() != Fluids.WATER) - return false; - if (simulate) - return true; - - if (world.getDimension().isUltrawarm() && fluid.getFluid() - .isIn(FluidTags.WATER)) { - int i = outputPos.getX(); - int j = outputPos.getY(); - int k = outputPos.getZ(); - world.playSound(null, i, j, k, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, - 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - return true; - } - - AllTriggers.triggerForNearbyPlayers(AllTriggers.PIPE_SPILL, world, pos, 5); - - if (waterlog) { - world.setBlockState(outputPos, state.with(WATERLOGGED, true), 3); - world.getPendingFluidTicks() - .scheduleTick(outputPos, Fluids.WATER, 1); - return true; - } - world.setBlockState(outputPos, fluid.getFluid() - .getDefaultState() - .getBlockState(), 3); - return true; - } - - private void applyEffects(World world, FluidStack fluid) { - if (!fluid.getFluid() - .isEquivalentTo(AllFluids.POTION.get())) { - // other fx - return; - } - - if (cachedFluid == null || cachedEffects == null || !fluid.isFluidEqual(cachedFluid)) { - FluidStack copy = fluid.copy(); - copy.setAmount(250); - ItemStack bottle = PotionFluidHandler.fillBottle(new ItemStack(Items.GLASS_BOTTLE), fluid); - cachedEffects = PotionUtils.getEffectsFromStack(bottle); - } - - if (cachedEffects.isEmpty()) - return; - - List list = - this.world.getEntitiesWithinAABB(LivingEntity.class, aoe, LivingEntity::canBeHitWithPotion); - for (LivingEntity livingentity : list) { - for (EffectInstance effectinstance : cachedEffects) { - Effect effect = effectinstance.getPotion(); - if (effect.isInstant()) { - effect.affectEntity(null, null, livingentity, effectinstance.getAmplifier(), 0.5D); - continue; - } - livingentity.addPotionEffect(new EffectInstance(effectinstance)); - } - } - - } - - @Override - public LazyOptional provideHandler() { - return LazyOptional.of(() -> fluidHandler); - } - - public CompoundNBT serializeNBT() { - CompoundNBT compound = new CompoundNBT(); - fluidHandler.writeToNBT(compound); - compound.putBoolean("Pulling", wasPulling); - compound.put("Location", location.serializeNBT()); - return compound; - } - - public static OpenEndedPipe fromNBT(CompoundNBT compound) { - OpenEndedPipe oep = new OpenEndedPipe(BlockFace.fromNBT(compound.getCompound("Location"))); - oep.fluidHandler.readFromNBT(compound); - oep.wasPulling = compound.getBoolean("Pulling"); - return oep; - } - - private class OpenEndFluidHandler extends FluidTank { - - public OpenEndFluidHandler() { - super(1000); - } - - @Override - public int fill(FluidStack resource, FluidAction action) { - // Never allow being filled when a source is attached - if (world == null) - return 0; - if (!world.isAreaLoaded(outputPos, 0)) - return 0; - if (resource.isEmpty()) - return 0; - if (!provideFluidToSpace(resource, true)) - return 0; - - if (!getFluid().isEmpty() && !getFluid().isFluidEqual(resource)) - setFluid(FluidStack.EMPTY); - if (wasPulling) - wasPulling = false; - - int fill = super.fill(resource, action); - if (action.execute() && (getFluidAmount() == 1000 || !FluidHelper.hasBlockState(getFluid().getFluid())) - && provideFluidToSpace(getFluid(), false)) - setFluid(FluidStack.EMPTY); - return fill; - } - - @Override - public FluidStack drain(FluidStack resource, FluidAction action) { - return drainInner(resource.getAmount(), resource, action); - } - - @Override - public FluidStack drain(int maxDrain, FluidAction action) { - return drainInner(maxDrain, null, action); - } - - private FluidStack drainInner(int amount, @Nullable FluidStack filter, FluidAction action) { - FluidStack empty = FluidStack.EMPTY; - boolean filterPresent = filter != null; - - if (world == null) - return empty; - if (!world.isAreaLoaded(outputPos, 0)) - return empty; - if (amount == 0) - return empty; - if (amount > 1000) { - amount = 1000; - if (filterPresent) - filter = FluidHelper.copyStackWithAmount(filter, amount); - } - - if (!wasPulling) - wasPulling = true; - - FluidStack drainedFromInternal = filterPresent ? super.drain(filter, action) : super.drain(amount, action); - if (!drainedFromInternal.isEmpty()) - return drainedFromInternal; - - FluidStack drainedFromWorld = removeFluidFromSpace(action.simulate()); - if (drainedFromWorld.isEmpty()) - return FluidStack.EMPTY; - if (filterPresent && !drainedFromWorld.isFluidEqual(filter)) - return FluidStack.EMPTY; - - int remainder = drainedFromWorld.getAmount() - amount; - drainedFromWorld.setAmount(amount); - - if (!action.simulate() && remainder > 0) { - if (!getFluid().isEmpty() && !getFluid().isFluidEqual(drainedFromWorld)) - setFluid(FluidStack.EMPTY); - super.fill(FluidHelper.copyStackWithAmount(drainedFromWorld, remainder), FluidAction.EXECUTE); - } - return drainedFromWorld; - } - - } - - @Override - public boolean isEndpoint() { - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java deleted file mode 100644 index cda095609..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeAttachmentModel.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Random; - -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour.AttachmentTypes; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; -import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; -import com.simibubi.create.foundation.block.connected.BakedModelWrapperWithData; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; -import net.minecraftforge.client.model.data.ModelDataMap.Builder; -import net.minecraftforge.client.model.data.ModelProperty; - -public class PipeAttachmentModel extends BakedModelWrapperWithData { - - private static ModelProperty PIPE_PROPERTY = new ModelProperty<>(); - - public PipeAttachmentModel(IBakedModel template) { - super(template); - } - - @Override - protected Builder gatherModelData(Builder builder, IBlockDisplayReader world, BlockPos pos, BlockState state) { - PipeModelData data = new PipeModelData(); - FluidTransportBehaviour transport = TileEntityBehaviour.get(world, pos, FluidTransportBehaviour.TYPE); - BracketedTileEntityBehaviour bracket = TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); - - if (transport != null) - for (Direction d : Iterate.directions) - data.putRim(d, transport.getRenderedRimAttachment(world, pos, state, d)); - if (bracket != null) - data.putBracket(bracket.getBracket()); - - data.setEncased(FluidPipeBlock.shouldDrawCasing(world, pos, state)); - return builder.withInitial(PIPE_PROPERTY, data); - } - - @Override - public List getQuads(BlockState state, Direction side, Random rand, IModelData data) { - List quads = super.getQuads(state, side, rand, data); - if (data instanceof ModelDataMap) { - ModelDataMap modelDataMap = (ModelDataMap) data; - if (modelDataMap.hasProperty(PIPE_PROPERTY)) { - quads = new ArrayList<>(quads); - addQuads(quads, state, side, rand, modelDataMap, modelDataMap.getData(PIPE_PROPERTY)); - } - } - return quads; - } - - private void addQuads(List quads, BlockState state, Direction side, Random rand, IModelData data, - PipeModelData pipeData) { - for (Direction d : Iterate.directions) - if (pipeData.hasRim(d)) - quads.addAll(AllBlockPartials.PIPE_ATTACHMENTS.get(pipeData.getRim(d)) - .get(d) - .get() - .getQuads(state, side, rand, data)); - if (pipeData.isEncased()) - quads.addAll(AllBlockPartials.FLUID_PIPE_CASING.get() - .getQuads(state, side, rand, data)); - IBakedModel bracket = pipeData.getBracket(); - if (bracket != null) - quads.addAll(bracket.getQuads(state, side, rand, data)); - } - - private class PipeModelData { - AttachmentTypes[] rims; - boolean encased; - IBakedModel bracket; - - public PipeModelData() { - rims = new AttachmentTypes[6]; - Arrays.fill(rims, AttachmentTypes.NONE); - } - - public void putBracket(BlockState state) { - this.bracket = Minecraft.getInstance() - .getBlockRendererDispatcher() - .getModelForState(state); - } - - public IBakedModel getBracket() { - return bracket; - } - - public void putRim(Direction face, AttachmentTypes rim) { - rims[face.getIndex()] = rim; - } - - public void setEncased(boolean encased) { - this.encased = encased; - } - - public boolean hasRim(Direction face) { - return rims[face.getIndex()] != AttachmentTypes.NONE; - } - - public AttachmentTypes getRim(Direction face) { - return rims[face.getIndex()]; - } - - public boolean isEncased() { - return encased; - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java deleted file mode 100644 index 5f3fc685b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PipeConnection.java +++ /dev/null @@ -1,481 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.util.Optional; -import java.util.Random; -import java.util.function.Predicate; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.BlockFace; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.FloatNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.particles.IParticleData; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fml.DistExecutor; - -public class PipeConnection { - - Direction side; - - // Layer I - Couple pressure; // [inbound, outward] - Optional source; - Optional previousSource; - - // Layer II - Optional flow; - boolean particleSplashNextTick; - - // Layer III - Optional network; // not serialized - - public PipeConnection(Direction side) { - this.side = side; - pressure = Couple.create(() -> 0f); - flow = Optional.empty(); - previousSource = Optional.empty(); - source = Optional.empty(); - network = Optional.empty(); - particleSplashNextTick = false; - } - - public FluidStack getProvidedFluid() { - FluidStack empty = FluidStack.EMPTY; - if (!hasFlow()) - return empty; - Flow flow = this.flow.get(); - if (!flow.inbound) - return empty; - if (!flow.complete) - return empty; - return flow.fluid; - } - - public boolean flipFlowsIfPressureReversed() { - if (!hasFlow()) - return false; - boolean singlePressure = comparePressure() != 0 && (getInboundPressure() == 0 || getOutwardPressure() == 0); - Flow flow = this.flow.get(); - if (!singlePressure || comparePressure() < 0 == flow.inbound) - return false; - flow.inbound = !flow.inbound; - if (!flow.complete) - this.flow = Optional.empty(); - return true; - } - - public void manageSource(World world, BlockPos pos) { - if (!source.isPresent() && !determineSource(world, pos)) - return; - FlowSource flowSource = source.get(); - flowSource.manageSource(world); - } - - public boolean manageFlows(World world, BlockPos pos, FluidStack internalFluid, - Predicate extractionPredicate) { - - // Only keep network if still valid - Optional retainedNetwork = network; - network = Optional.empty(); - - // chunk border - if (!source.isPresent() && !determineSource(world, pos)) - return false; - FlowSource flowSource = source.get(); - - if (!hasFlow()) { - if (!hasPressure()) - return false; - - // Try starting a new flow - boolean prioritizeInbound = comparePressure() < 0; - for (boolean trueFalse : Iterate.trueAndFalse) { - boolean inbound = prioritizeInbound == trueFalse; - if (pressure.get(inbound) == 0) - continue; - if (tryStartingNewFlow(inbound, inbound ? flowSource.provideFluid(extractionPredicate) : internalFluid)) - return true; - } - return false; - } - - // Manage existing flow - Flow flow = this.flow.get(); - FluidStack provided = flow.inbound ? flowSource.provideFluid(extractionPredicate) : internalFluid; - if (!hasPressure() || provided.isEmpty() || !provided.isFluidEqual(flow.fluid)) { - this.flow = Optional.empty(); - return true; - } - - // Overwrite existing flow - if (flow.inbound != comparePressure() < 0) { - boolean inbound = !flow.inbound; - if (inbound && !provided.isEmpty() || !inbound && !internalFluid.isEmpty()) { - FluidPropagator.resetAffectedFluidNetworks(world, pos, side); - tryStartingNewFlow(inbound, inbound ? flowSource.provideFluid(extractionPredicate) : internalFluid); - return true; - } - } - - flowSource.whileFlowPresent(world, flow.inbound); - - if (!flowSource.isEndpoint()) - return false; - if (!flow.inbound) - return false; - - // Layer III - network = retainedNetwork; - if (!hasNetwork()) - network = Optional.of(new FluidNetwork(world, new BlockFace(pos, side), flowSource::provideHandler)); - network.get() - .tick(); - - return false; - } - - private boolean tryStartingNewFlow(boolean inbound, FluidStack providedFluid) { - if (providedFluid.isEmpty()) - return false; - Flow flow = new Flow(inbound, providedFluid); - this.flow = Optional.of(flow); - return true; - } - - private boolean determineSource(World world, BlockPos pos) { - if (!world.isAreaLoaded(pos, 1)) - return false; - BlockFace location = new BlockFace(pos, side); - - if (FluidPropagator.isOpenEnd(world, pos, side)) { - if (previousSource.orElse(null) instanceof OpenEndedPipe) - source = previousSource; - else - source = Optional.of(new OpenEndedPipe(location)); - return true; - } - - if (FluidPropagator.hasFluidCapability(world, location.getConnectedPos(), side.getOpposite())) { - source = Optional.of(new FlowSource.FluidHandler(location)); - return true; - } - - FluidTransportBehaviour behaviour = - TileEntityBehaviour.get(world, pos.offset(side), FluidTransportBehaviour.TYPE); - source = Optional.of(behaviour == null ? new FlowSource.Blocked(location) : new FlowSource.OtherPipe(location)); - return true; - } - - public void tickFlowProgress(World world, BlockPos pos) { - if (!hasFlow()) - return; - Flow flow = this.flow.get(); - if (flow.fluid.isEmpty()) - return; - - if (world.isRemote) { - if (!source.isPresent()) - determineSource(world, pos); - - spawnParticles(world, pos, flow.fluid); - if (particleSplashNextTick) - spawnSplashOnRim(world, pos, flow.fluid); - particleSplashNextTick = false; - } - - float flowSpeed = 1 / 32f + MathHelper.clamp(pressure.get(flow.inbound) / 512f, 0, 1) * 31 / 32f; - flow.progress.setValue(Math.min(flow.progress.getValue() + flowSpeed, 1)); - if (flow.progress.getValue() >= 1) { - flow.complete = true; - if (flow.inbound && AllBlocks.GLASS_FLUID_PIPE.has(world.getBlockState(pos))) - AllTriggers.triggerForNearbyPlayers(AllTriggers.GLASS_PIPE, world, pos, 5); - } - } - - public void serializeNBT(CompoundNBT tag, boolean clientPacket) { - CompoundNBT connectionData = new CompoundNBT(); - tag.put(side.getName2(), connectionData); - - if (hasPressure()) { - ListNBT pressureData = new ListNBT(); - pressureData.add(FloatNBT.of(getInboundPressure())); - pressureData.add(FloatNBT.of(getOutwardPressure())); - connectionData.put("Pressure", pressureData); - } - - if (hasOpenEnd()) - connectionData.put("OpenEnd", ((OpenEndedPipe) source.get()).serializeNBT()); - - if (hasFlow()) { - CompoundNBT flowData = new CompoundNBT(); - Flow flow = this.flow.get(); - flow.fluid.writeToNBT(flowData); - flowData.putBoolean("In", flow.inbound); - if (!flow.complete) - flowData.put("Progress", flow.progress.writeNBT()); - connectionData.put("Flow", flowData); - } - - } - - private boolean hasOpenEnd() { - return source.orElse(null) instanceof OpenEndedPipe; - } - - public void deserializeNBT(CompoundNBT tag, boolean clientPacket) { - CompoundNBT connectionData = tag.getCompound(side.getName2()); - - if (connectionData.contains("Pressure")) { - ListNBT pressureData = connectionData.getList("Pressure", NBT.TAG_FLOAT); - pressure = Couple.create(pressureData.getFloat(0), pressureData.getFloat(1)); - } else - pressure.replace(f -> 0f); - - source = Optional.empty(); - if (connectionData.contains("OpenEnd")) - source = Optional.of(OpenEndedPipe.fromNBT(connectionData.getCompound("OpenEnd"))); - - if (connectionData.contains("Flow")) { - CompoundNBT flowData = connectionData.getCompound("Flow"); - FluidStack fluid = FluidStack.loadFluidStackFromNBT(flowData); - boolean inbound = flowData.getBoolean("In"); - if (!flow.isPresent()) { - flow = Optional.of(new Flow(inbound, fluid)); - if (clientPacket) - particleSplashNextTick = true; - } - Flow flow = this.flow.get(); - - flow.fluid = fluid; - flow.inbound = inbound; - flow.complete = !flowData.contains("Progress"); - - if (!flow.complete) - flow.progress.readNBT(flowData.getCompound("Progress"), clientPacket); - else { - if (flow.progress.getValue() == 0) - flow.progress.startWithValue(1); - flow.progress.setValue(1); - } - - } else - flow = Optional.empty(); - - } - - /** - * @return zero if outward == inbound
- * positive if outward > inbound
- * negative if outward < inbound - */ - public float comparePressure() { - return getOutwardPressure() - getInboundPressure(); - } - - public void wipePressure() { - this.pressure.replace(f -> 0f); - if (this.source.isPresent()) - this.previousSource = this.source; - this.source = Optional.empty(); - resetNetwork(); - } - - public FluidStack provideOutboundFlow() { - if (!hasFlow()) - return FluidStack.EMPTY; - Flow flow = this.flow.get(); - if (!flow.complete || flow.inbound) - return FluidStack.EMPTY; - return flow.fluid; - } - - public void addPressure(boolean inbound, float pressure) { - this.pressure = this.pressure.mapWithContext((f, in) -> in == inbound ? f + pressure : f); - } - - public boolean hasPressure() { - return getInboundPressure() != 0 || getOutwardPressure() != 0; - } - - private float getOutwardPressure() { - return pressure.getSecond(); - } - - private float getInboundPressure() { - return pressure.getFirst(); - } - - public boolean hasFlow() { - return flow.isPresent(); - } - - public boolean hasNetwork() { - return network.isPresent(); - } - - public void resetNetwork() { - network.ifPresent(FluidNetwork::reset); - } - - public class Flow { - - public boolean complete; - public boolean inbound; - public LerpedFloat progress; - public FluidStack fluid; - - public Flow(boolean inbound, FluidStack fluid) { - this.inbound = inbound; - this.fluid = fluid; - this.progress = LerpedFloat.linear() - .startWithValue(0); - this.complete = false; - } - - } - - public static final int MAX_PARTICLE_RENDER_DISTANCE = 20; - public static final int SPLASH_PARTICLE_AMOUNT = 1; - public static final float IDLE_PARTICLE_SPAWN_CHANCE = 1 / 1000f; - public static final float RIM_RADIUS = 1 / 4f + 1 / 64f; - public static final Random r = new Random(); - - public void spawnSplashOnRim(World world, BlockPos pos, FluidStack fluid) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> spawnSplashOnRimInner(world, pos, fluid)); - } - - public void spawnParticles(World world, BlockPos pos, FluidStack fluid) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> spawnParticlesInner(world, pos, fluid)); - } - - @OnlyIn(Dist.CLIENT) - private void spawnParticlesInner(World world, BlockPos pos, FluidStack fluid) { - if (!isRenderEntityWithinDistance(pos)) - return; - if (hasOpenEnd()) - spawnPouringLiquid(world, pos, fluid, 1); - else if (r.nextFloat() < IDLE_PARTICLE_SPAWN_CHANCE) - spawnRimParticles(world, pos, fluid, 1); - } - - @OnlyIn(Dist.CLIENT) - private void spawnSplashOnRimInner(World world, BlockPos pos, FluidStack fluid) { - if (!isRenderEntityWithinDistance(pos)) - return; - spawnRimParticles(world, pos, fluid, SPLASH_PARTICLE_AMOUNT); - } - - @OnlyIn(Dist.CLIENT) - private void spawnRimParticles(World world, BlockPos pos, FluidStack fluid, int amount) { - if (hasOpenEnd()) { - spawnPouringLiquid(world, pos, fluid, amount); - return; - } - - IParticleData particle = FluidFX.getDrippingParticle(fluid); - FluidFX.spawnRimParticles(world, pos, side, amount, particle, RIM_RADIUS); - } - - @OnlyIn(Dist.CLIENT) - private void spawnPouringLiquid(World world, BlockPos pos, FluidStack fluid, int amount) { - IParticleData particle = FluidFX.getFluidParticle(fluid); - Vector3d directionVec = Vector3d.of(side.getDirectionVec()); - if (!hasFlow()) - return; - Flow flow = this.flow.get(); - FluidFX.spawnPouringLiquid(world, pos, amount, particle, RIM_RADIUS, directionVec, flow.inbound); - } - - @OnlyIn(Dist.CLIENT) - public static boolean isRenderEntityWithinDistance(BlockPos pos) { - Entity renderViewEntity = Minecraft.getInstance() - .getRenderViewEntity(); - if (renderViewEntity == null) - return false; - Vector3d center = VecHelper.getCenterOf(pos); - if (renderViewEntity.getPositionVec() - .distanceTo(center) > MAX_PARTICLE_RENDER_DISTANCE) - return false; - return true; - } - -// void visualizePressure(BlockPos pos) { -// if (!hasPressure()) -// return; -// -// pressure.forEachWithContext((pressure, inbound) -> { -// if (inbound) -// return; -// -// Vector3d directionVec = new Vector3d(side.getDirectionVec()); -// Vector3d scaleVec = directionVec.scale(-.25f * side.getAxisDirection() -// .getOffset()); -// directionVec = directionVec.scale(inbound ? .35f : .45f); -// CreateClient.outliner.chaseAABB("pressure" + pos.toShortString() + side.getName() + String.valueOf(inbound), -// FluidPropagator.smallCenter.offset(directionVec.add(new Vector3d(pos))) -// .grow(scaleVec.x, scaleVec.y, scaleVec.z) -// .expand(0, pressure / 64f, 0) -// .grow(1 / 64f)); -// }); -// } -// -// void visualizeFlow(BlockPos pos) { -// if (!hasFlow()) -// return; -// -// Vector3d directionVec = new Vector3d(side.getDirectionVec()); -// float size = 1 / 4f; -// float length = .5f; -// Flow flow = this.flow.get(); -// boolean inbound = flow.inbound; -// FluidStack fluid = flow.fluid; -// -// if (flow.progress == null) -// return; -// float value = flow.progress.getValue(); -// Vector3d start = directionVec.scale(inbound ? .5 : .5f - length); -// Vector3d offset = directionVec.scale(length * (inbound ? -1 : 1)) -// .scale(value); -// -// Vector3d scale = new Vector3d(1, 1, 1).subtract(directionVec.scale(side.getAxisDirection() -// .getOffset())) -// .scale(size); -// AxisAlignedBB bb = new AxisAlignedBB(start, start.add(offset)).offset(VecHelper.getCenterOf(pos)) -// .grow(scale.x, scale.y, scale.z); -// -// int color = 0x7fdbda; -// if (!fluid.isEmpty()) { -// Fluid fluid2 = fluid.getFluid(); -// if (fluid2 == Fluids.WATER) -// color = 0x1D4D9B; -// else if (fluid2 == Fluids.LAVA) -// color = 0xFF773D; -// else -// color = fluid2.getAttributes() -// .getColor(fluid); -// } -// -// CreateClient.outliner.chaseAABB(this, bb) -// .withFaceTexture(AllSpecialTextures.SELECTION) -// .colored(color) -// .lineWidth(0); -// } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java deleted file mode 100644 index 6dd88516a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpBlock.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.util.Random; - -import org.apache.commons.lang3.mutable.MutableBoolean; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.network.DebugPacketSender; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.TickPriority; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class PumpBlock extends DirectionalKineticBlock implements IWaterLoggable, ICogWheel { - - public PumpBlock(Properties p_i48415_1_) { - super(p_i48415_1_); - setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.MECHANICAL_PUMP.create(); - } - - @Override - public BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) { - return originalState.with(FACING, originalState.get(FACING) - .getOpposite()); - } - - @Override - public BlockState updateAfterWrenched(BlockState newState, ItemUseContext context) { - BlockState state = super.updateAfterWrenched(newState, context); - World world = context.getWorld(); - BlockPos pos = context.getPos(); - if (world.isRemote) - return state; - TileEntity tileEntity = world.getTileEntity(pos); - if (!(tileEntity instanceof PumpTileEntity)) - return state; - PumpTileEntity pump = (PumpTileEntity) tileEntity; - pump.sidesToUpdate.forEach(MutableBoolean::setTrue); - pump.reversed = !pump.reversed; - return state; - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(FACING) - .getAxis(); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.PUMP.get(state.get(FACING)); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPacketSender.func_218806_a(world, pos); - Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); - if (d == null) - return; - if (!isOpenAt(state, d)) - return; - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); -// if (world.isRemote) -// return; -// if (otherBlock instanceof FluidPipeBlock) -// return; -// TileEntity tileEntity = world.getTileEntity(pos); -// if (!(tileEntity instanceof PumpTileEntity)) -// return; -// PumpTileEntity pump = (PumpTileEntity) tileEntity; -// Direction facing = state.get(FACING); -// for (boolean front : Iterate.trueAndFalse) { -// Direction side = front ? facing : facing.getOpposite(); -// if (!pos.offset(side) -// .equals(neighborPos)) -// continue; -// pump.updatePipesOnSide(side); -// } - } - - @Override - public FluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) - : Fluids.EMPTY.getDefaultState(); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(BlockStateProperties.WATERLOGGED); - super.fillStateContainer(builder); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, - IWorld world, BlockPos pos, BlockPos neighbourPos) { - if (state.get(BlockStateProperties.WATERLOGGED)) { - world.getPendingFluidTicks() - .scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); - } - return state; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - FluidState FluidState = context.getWorld() - .getFluidState(context.getPos()); - return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, - Boolean.valueOf(FluidState.getFluid() == Fluids.WATER)); - } - - public static boolean isPump(BlockState state) { - return state.getBlock() instanceof PumpBlock; - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (world.isRemote) - return; - if (state != oldState) - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - public static boolean isOpenAt(BlockState state, Direction d) { - return d.getAxis() == state.get(FACING) - .getAxis(); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random r) { - FluidPropagator.propagateChangedPipe(world, pos, state); - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isRemote) - FluidPropagator.propagateChangedPipe(world, pos, state); - if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) - world.removeTileEntity(pos); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java deleted file mode 100644 index 119c8b141..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpCogInstance.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; - -public class PumpCogInstance extends SingleRotatingInstance { - - public PumpCogInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Instancer getModel() { - BlockState referenceState = tile.getBlockState(); - Direction facing = referenceState.get(FACING); - return getRotatingMaterial().getModel(AllBlockPartials.MECHANICAL_PUMP_COG, referenceState, facing); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java deleted file mode 100644 index 8ecc077a4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpRenderer.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class PumpRenderer extends KineticTileEntityRenderer { - - public PumpRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - if (!(te instanceof PumpTileEntity)) - return; - PumpTileEntity pump = (PumpTileEntity) te; - Vector3d rotationOffset = new Vector3d(.5, 14 / 16f, .5); - BlockState blockState = te.getBlockState(); - float angle = MathHelper.lerp(pump.arrowDirection.getValue(partialTicks), 0, 90) - 90; - for (float yRot : new float[] { 0, 90 }) { - ms.push(); - SuperByteBuffer arrow = PartialBufferer.get(AllBlockPartials.MECHANICAL_PUMP_ARROW, blockState); - Direction direction = blockState.get(PumpBlock.FACING); - MatrixStacker.of(ms) - .centre() - .rotateY(AngleHelper.horizontalAngle(direction) + 180) - .rotateX(-AngleHelper.verticalAngle(direction) - 90) - .unCentre() - .translate(rotationOffset) - .rotateY(yRot) - .rotateZ(angle) - .translateBack(rotationOffset); - arrow.light(light).renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - ms.pop(); - } - } - - @Override - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.getFacing(AllBlockPartials.MECHANICAL_PUMP_COG, te.getBlockState()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java deleted file mode 100644 index 1311e286d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/PumpTileEntity.java +++ /dev/null @@ -1,386 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.mutable.MutableBoolean; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.BlockFace; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pair; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraft.world.IWorld; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; - -public class PumpTileEntity extends KineticTileEntity { - - LerpedFloat arrowDirection; - Couple sidesToUpdate; - boolean reversed; - - public PumpTileEntity(TileEntityType typeIn) { - super(typeIn); - arrowDirection = LerpedFloat.linear() - .startWithValue(1); - sidesToUpdate = Couple.create(MutableBoolean::new); - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - behaviours.add(new PumpFluidTransferBehaviour(this)); - } - - @Override - public void initialize() { - super.initialize(); - reversed = getSpeed() < 0; - } - - @Override - public void tick() { - super.tick(); - float speed = getSpeed(); - - if (world.isRemote) { - if (speed == 0) - return; - arrowDirection.chase(speed >= 0 ? 1 : -1, .5f, Chaser.EXP); - arrowDirection.tickChaser(); - return; - } - - sidesToUpdate.forEachWithContext((update, isFront) -> { - if (update.isFalse()) - return; - update.setFalse(); - distributePressureTo(isFront ? getFront() : getFront().getOpposite()); - }); - - if (speed == 0) - return; - if (speed < 0 != reversed) { - reversed = speed < 0; - return; - } - } - - @Override - public void onSpeedChanged(float previousSpeed) { - super.onSpeedChanged(previousSpeed); - - if (previousSpeed == getSpeed()) - return; - if (speed != 0) - reversed = speed < 0; - if (world.isRemote) - return; - - BlockPos frontPos = pos.offset(getFront()); - BlockPos backPos = pos.offset(getFront().getOpposite()); - FluidPropagator.propagateChangedPipe(world, frontPos, world.getBlockState(frontPos)); - FluidPropagator.propagateChangedPipe(world, backPos, world.getBlockState(backPos)); - - FluidTransportBehaviour behaviour = getBehaviour(FluidTransportBehaviour.TYPE); - if (behaviour != null) - behaviour.wipePressure(); - sidesToUpdate.forEach(MutableBoolean::setTrue); - } - - protected void distributePressureTo(Direction side) { - if (getSpeed() == 0) - return; - - BlockFace start = new BlockFace(pos, side); - boolean pull = isPullingOnSide(isFront(side)); - Set targets = new HashSet<>(); - Map>> pipeGraph = new HashMap<>(); - - if (!pull) - FluidPropagator.resetAffectedFluidNetworks(world, pos, side.getOpposite()); - - if (!hasReachedValidEndpoint(world, start, pull)) { - - pipeGraph.computeIfAbsent(pos, $ -> Pair.of(0, new IdentityHashMap<>())) - .getSecond() - .put(side, pull); - pipeGraph.computeIfAbsent(start.getConnectedPos(), $ -> Pair.of(1, new IdentityHashMap<>())) - .getSecond() - .put(side.getOpposite(), !pull); - - List> frontier = new ArrayList<>(); - Set visited = new HashSet<>(); - int maxDistance = FluidPropagator.getPumpRange(); - frontier.add(Pair.of(1, start.getConnectedPos())); - - while (!frontier.isEmpty()) { - Pair entry = frontier.remove(0); - int distance = entry.getFirst(); - BlockPos currentPos = entry.getSecond(); - - if (!world.isAreaLoaded(currentPos, 0)) - continue; - if (visited.contains(currentPos)) - continue; - visited.add(currentPos); - BlockState currentState = world.getBlockState(currentPos); - FluidTransportBehaviour pipe = FluidPropagator.getPipe(world, currentPos); - if (pipe == null) - continue; - - for (Direction face : FluidPropagator.getPipeConnections(currentState, pipe)) { - BlockFace blockFace = new BlockFace(currentPos, face); - BlockPos connectedPos = blockFace.getConnectedPos(); - - if (!world.isAreaLoaded(connectedPos, 0)) - continue; - if (blockFace.isEquivalent(start)) - continue; - if (hasReachedValidEndpoint(world, blockFace, pull)) { - pipeGraph.computeIfAbsent(currentPos, $ -> Pair.of(distance, new IdentityHashMap<>())) - .getSecond() - .put(face, pull); - targets.add(blockFace); - continue; - } - - FluidTransportBehaviour pipeBehaviour = FluidPropagator.getPipe(world, connectedPos); - if (pipeBehaviour == null) - continue; - if (pipeBehaviour instanceof PumpFluidTransferBehaviour) - continue; - if (visited.contains(connectedPos)) - continue; - if (distance + 1 >= maxDistance) { - pipeGraph.computeIfAbsent(currentPos, $ -> Pair.of(distance, new IdentityHashMap<>())) - .getSecond() - .put(face, pull); - targets.add(blockFace); - continue; - } - - pipeGraph.computeIfAbsent(currentPos, $ -> Pair.of(distance, new IdentityHashMap<>())) - .getSecond() - .put(face, pull); - pipeGraph.computeIfAbsent(connectedPos, $ -> Pair.of(distance + 1, new IdentityHashMap<>())) - .getSecond() - .put(face.getOpposite(), !pull); - frontier.add(Pair.of(distance + 1, connectedPos)); - } - } - } - - // DFS - Map> validFaces = new HashMap<>(); - searchForEndpointRecursively(pipeGraph, targets, validFaces, - new BlockFace(start.getPos(), start.getOppositeFace()), pull); - - float pressure = Math.abs(getSpeed()); - for (Set set : validFaces.values()) { - int parallelBranches = set.size(); - for (BlockFace face : set) { - BlockPos pipePos = face.getPos(); - Direction pipeSide = face.getFace(); - - if (pipePos.equals(pos)) - continue; - - boolean inbound = pipeGraph.get(pipePos) - .getSecond() - .get(pipeSide); - FluidTransportBehaviour pipeBehaviour = FluidPropagator.getPipe(world, pipePos); - if (pipeBehaviour == null) - continue; - - pipeBehaviour.addPressure(pipeSide, inbound, pressure / parallelBranches); - } - } - - } - - protected boolean searchForEndpointRecursively(Map>> pipeGraph, - Set targets, Map> validFaces, BlockFace currentFace, boolean pull) { - BlockPos currentPos = currentFace.getPos(); - if (!pipeGraph.containsKey(currentPos)) - return false; - Pair> pair = pipeGraph.get(currentPos); - int distance = pair.getFirst(); - - boolean atLeastOneBranchSuccessful = false; - for (Direction nextFacing : Iterate.directions) { - if (nextFacing == currentFace.getFace()) - continue; - Map map = pair.getSecond(); - if (!map.containsKey(nextFacing)) - continue; - - BlockFace localTarget = new BlockFace(currentPos, nextFacing); - if (targets.contains(localTarget)) { - validFaces.computeIfAbsent(distance, $ -> new HashSet<>()) - .add(localTarget); - atLeastOneBranchSuccessful = true; - continue; - } - - if (map.get(nextFacing) != pull) - continue; - if (!searchForEndpointRecursively(pipeGraph, targets, validFaces, - new BlockFace(currentPos.offset(nextFacing), nextFacing.getOpposite()), pull)) - continue; - - validFaces.computeIfAbsent(distance, $ -> new HashSet<>()) - .add(localTarget); - atLeastOneBranchSuccessful = true; - } - - if (atLeastOneBranchSuccessful) - validFaces.computeIfAbsent(distance, $ -> new HashSet<>()) - .add(currentFace); - - return atLeastOneBranchSuccessful; - } - - private boolean hasReachedValidEndpoint(IWorld world, BlockFace blockFace, boolean pull) { - BlockPos connectedPos = blockFace.getConnectedPos(); - BlockState connectedState = world.getBlockState(connectedPos); - TileEntity tileEntity = world.getTileEntity(connectedPos); - Direction face = blockFace.getFace(); - - // facing a pump - if (PumpBlock.isPump(connectedState) && connectedState.get(PumpBlock.FACING) - .getAxis() == face.getAxis() && tileEntity instanceof PumpTileEntity) { - PumpTileEntity pumpTE = (PumpTileEntity) tileEntity; - return pumpTE.isPullingOnSide(pumpTE.isFront(blockFace.getOppositeFace())) != pull; - } - - // other pipe, no endpoint - FluidTransportBehaviour pipe = FluidPropagator.getPipe(world, connectedPos); - if (pipe != null && pipe.canHaveFlowToward(connectedState, blockFace.getOppositeFace())) - return false; - - // fluid handler endpoint - if (tileEntity != null) { - LazyOptional capability = - tileEntity.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, face.getOpposite()); - if (capability.isPresent()) - return true; - } - - // open endpoint - return FluidPropagator.isOpenEnd(world, blockFace.getPos(), face); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putBoolean("Reversed", reversed); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - reversed = compound.getBoolean("Reversed"); - super.fromTag(state, compound, clientPacket); - } - - public void updatePipesOnSide(Direction side) { - if (!isSideAccessible(side)) - return; - updatePipeNetwork(isFront(side)); - getBehaviour(FluidTransportBehaviour.TYPE).wipePressure(); - } - - protected boolean isFront(Direction side) { - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof PumpBlock)) - return false; - Direction front = blockState.get(PumpBlock.FACING); - boolean isFront = side == front; - return isFront; - } - - @Nullable - protected Direction getFront() { - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof PumpBlock)) - return null; - return blockState.get(PumpBlock.FACING); - } - - protected void updatePipeNetwork(boolean front) { - sidesToUpdate.get(front) - .setTrue(); - } - - public boolean isSideAccessible(Direction side) { - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof PumpBlock)) - return false; - return blockState.get(PumpBlock.FACING) - .getAxis() == side.getAxis(); - } - - public boolean isPullingOnSide(boolean front) { - return front == reversed; - } - - class PumpFluidTransferBehaviour extends FluidTransportBehaviour { - - public PumpFluidTransferBehaviour(SmartTileEntity te) { - super(te); - } - - @Override - public void tick() { - super.tick(); - for (Entry entry : interfaces.entrySet()) { - boolean pull = isPullingOnSide(isFront(entry.getKey())); - Couple pressure = entry.getValue().pressure; - pressure.set(pull, Math.abs(getSpeed())); - pressure.set(!pull, 0f); - } - } - - @Override - public boolean canHaveFlowToward(BlockState state, Direction direction) { - return isSideAccessible(direction); - } - - @Override - public AttachmentTypes getRenderedRimAttachment(IBlockDisplayReader world, BlockPos pos, BlockState state, - Direction direction) { - AttachmentTypes attachment = super.getRenderedRimAttachment(world, pos, state, direction); - if (attachment == AttachmentTypes.RIM) - return AttachmentTypes.NONE; - return attachment; - } - - } - - @Override - public boolean shouldRenderNormally() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/VirtualFluid.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/VirtualFluid.java deleted file mode 100644 index 9ab196582..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/VirtualFluid.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.FluidState; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraftforge.fluids.ForgeFlowingFluid; - -public class VirtualFluid extends ForgeFlowingFluid { - - public VirtualFluid(Properties properties) { - super(properties); - } - - @Override - public Fluid getStillFluid() { - return super.getStillFluid(); - } - - @Override - public Fluid getFlowingFluid() { - return this; - } - - @Override - public Item getFilledBucket() { - return Items.AIR; - } - - @Override - protected BlockState getBlockState(FluidState state) { - return Blocks.AIR.getDefaultState(); - } - - @Override - public boolean isSource(FluidState p_207193_1_) { - return false; - } - - @Override - public int getLevel(FluidState p_207192_1_) { - return 0; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingBySpout.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingBySpout.java deleted file mode 100644 index fc012e730..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingBySpout.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.List; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.foundation.fluid.FluidIngredient; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class FillingBySpout { - - static RecipeWrapper wrapper = new RecipeWrapper(new ItemStackHandler(1)); - - public static boolean canItemBeFilled(World world, ItemStack stack) { - wrapper.setInventorySlotContents(0, stack); - if (AllRecipeTypes.FILLING.find(wrapper, world) - .isPresent()) - return true; - return GenericItemFilling.canItemBeFilled(world, stack); - } - - public static int getRequiredAmountForItem(World world, ItemStack stack, FluidStack availableFluid) { - wrapper.setInventorySlotContents(0, stack); - for (IRecipe recipe : world.getRecipeManager() - .getRecipes(AllRecipeTypes.FILLING.getType(), wrapper, world)) { - FillingRecipe fillingRecipe = (FillingRecipe) recipe; - FluidIngredient requiredFluid = fillingRecipe.getRequiredFluid(); - if (requiredFluid.test(availableFluid)) - return requiredFluid.getRequiredAmount(); - } - return GenericItemFilling.getRequiredAmountForItem(world, stack, availableFluid); - } - - public static ItemStack fillItem(World world, int requiredAmount, ItemStack stack, FluidStack availableFluid) { - FluidStack toFill = availableFluid.copy(); - toFill.setAmount(requiredAmount); - - wrapper.setInventorySlotContents(0, stack); - for (IRecipe recipe : world.getRecipeManager() - .getRecipes(AllRecipeTypes.FILLING.getType(), wrapper, world)) { - FillingRecipe fillingRecipe = (FillingRecipe) recipe; - FluidIngredient requiredFluid = fillingRecipe.getRequiredFluid(); - if (requiredFluid.test(toFill)) { - List results = fillingRecipe.rollResults(); - availableFluid.shrink(requiredAmount); - stack.shrink(1); - return results.isEmpty() ? ItemStack.EMPTY : results.get(0); - } - } - - return GenericItemFilling.fillItem(world, requiredAmount, stack, availableFluid); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java deleted file mode 100644 index 7a085f03a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FillingRecipe.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; -import com.simibubi.create.foundation.fluid.FluidIngredient; - -import net.minecraft.world.World; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class FillingRecipe extends ProcessingRecipe { - - public FillingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.FILLING, params); - } - - @Override - public boolean matches(RecipeWrapper inv, World p_77569_2_) { - return ingredients.get(0).test(inv.getStackInSlot(0)); - } - - @Override - protected int getMaxInputCount() { - return 1; - } - - @Override - protected int getMaxOutputCount() { - return 1; - } - - @Override - protected int getMaxFluidInputCount() { - return 1; - } - - public FluidIngredient getRequiredFluid() { - if (fluidIngredients.isEmpty()) - throw new IllegalStateException("Filling Recipe: " + id.toString() + " has no fluid ingredient!"); - return fluidIngredients.get(0); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java deleted file mode 100644 index 7d49cd826..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidDrainingBehaviour.java +++ /dev/null @@ -1,339 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; - -import it.unimi.dsi.fastutil.PriorityQueue; -import it.unimi.dsi.fastutil.objects.ObjectHeapPriorityQueue; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; - -public class FluidDrainingBehaviour extends FluidManipulationBehaviour { - - Fluid fluid; - - // Execution - Set validationSet; - PriorityQueue queue; - boolean isValid; - - // Validation - List validationFrontier; - Set validationVisited; - Set newValidationSet; - - public FluidDrainingBehaviour(SmartTileEntity te) { - super(te); - validationVisited = new HashSet<>(); - validationFrontier = new ArrayList<>(); - validationSet = new HashSet<>(); - newValidationSet = new HashSet<>(); - queue = new ObjectHeapPriorityQueue<>(this::comparePositions); - } - - @Nullable - public boolean pullNext(BlockPos root, boolean simulate) { - if (!frontier.isEmpty()) - return false; - if (!Objects.equals(root, rootPos)) { - rebuildContext(root); - return false; - } - - if (counterpartActed) { - counterpartActed = false; - softReset(root); - return false; - } - - if (affectedArea == null) - affectedArea = new MutableBoundingBox(root, root); - - World world = getWorld(); - if (!queue.isEmpty() && !isValid) { - rebuildContext(root); - return false; - } - - if (validationFrontier.isEmpty() && !queue.isEmpty() && !simulate && revalidateIn == 0) - revalidate(root); - - while (!queue.isEmpty()) { - // Dont dequeue here, so we can decide not to dequeue a valid entry when - // simulating - BlockPos currentPos = queue.first().pos; - BlockState blockState = world.getBlockState(currentPos); - BlockState emptied = blockState; - Fluid fluid = Fluids.EMPTY; - - if (blockState.contains(BlockStateProperties.WATERLOGGED) && blockState.get(BlockStateProperties.WATERLOGGED)) { - emptied = blockState.with(BlockStateProperties.WATERLOGGED, Boolean.valueOf(false)); - fluid = Fluids.WATER; - } else if (blockState.getBlock() instanceof FlowingFluidBlock) { - FlowingFluidBlock flowingFluid = (FlowingFluidBlock) blockState.getBlock(); - emptied = Blocks.AIR.getDefaultState(); - if (blockState.get(FlowingFluidBlock.LEVEL) == 0) - fluid = flowingFluid.getFluid(); - else { - affectedArea.expandTo(new MutableBoundingBox(currentPos, currentPos)); - world.setBlockState(currentPos, emptied, 2 | 16); - queue.dequeue(); - if (queue.isEmpty()) { - isValid = checkValid(world, rootPos); - reset(); - } - continue; - } - } else if (blockState.getFluidState() - .getFluid() != Fluids.EMPTY - && blockState.getCollisionShape(world, currentPos, ISelectionContext.dummy()) - .isEmpty()) { - fluid = blockState.getFluidState() - .getFluid(); - emptied = Blocks.AIR.getDefaultState(); - } - - if (this.fluid == null) - this.fluid = fluid; - - if (!this.fluid.isEquivalentTo(fluid)) { - queue.dequeue(); - if (queue.isEmpty()) { - isValid = checkValid(world, rootPos); - reset(); - } - continue; - } - - if (simulate) - return true; - - playEffect(world, currentPos, fluid, true); - AllTriggers.triggerForNearbyPlayers(AllTriggers.HOSE_PULLEY, world, tileEntity.getPos(), 8); - - if (infinite) { - AllTriggers.triggerForNearbyPlayers(AllTriggers.INFINITE_FLUID.constructTriggerFor(FluidHelper.convertToStill(fluid)), world, tileEntity.getPos(), 8); - return true; - } - - world.setBlockState(currentPos, emptied, 2 | 16); - affectedArea.expandTo(new MutableBoundingBox(currentPos, currentPos)); - - queue.dequeue(); - if (queue.isEmpty()) { - isValid = checkValid(world, rootPos); - reset(); - } else if (!validationSet.contains(currentPos)) { - reset(); - } - return true; - } - - if (rootPos == null) - return false; - - if (isValid) - rebuildContext(root); - - return false; - } - - protected void softReset(BlockPos root) { - queue.clear(); - validationSet.clear(); - newValidationSet.clear(); - validationFrontier.clear(); - validationVisited.clear(); - visited.clear(); - infinite = false; - setValidationTimer(); - frontier.add(new BlockPosEntry(root, 0)); - tileEntity.sendData(); - } - - protected boolean checkValid(World world, BlockPos root) { - BlockPos currentPos = root; - for (int timeout = 1000; timeout > 0 && !root.equals(tileEntity.getPos()); timeout--) { - FluidBlockType canPullFluidsFrom = canPullFluidsFrom(world.getBlockState(currentPos), currentPos); - if (canPullFluidsFrom == FluidBlockType.FLOWING) { - currentPos = currentPos.up(); - continue; - } - if (canPullFluidsFrom == FluidBlockType.SOURCE) - return true; - break; - } - return false; - } - - enum FluidBlockType { - NONE, SOURCE, FLOWING; - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - super.read(nbt, clientPacket); - if (!clientPacket && affectedArea != null) - frontier.add(new BlockPosEntry(rootPos, 0)); - } - - protected FluidBlockType canPullFluidsFrom(BlockState blockState, BlockPos pos) { - if (blockState.contains(BlockStateProperties.WATERLOGGED) && blockState.get(BlockStateProperties.WATERLOGGED)) - return FluidBlockType.SOURCE; - if (blockState.getBlock() instanceof FlowingFluidBlock) - return blockState.get(FlowingFluidBlock.LEVEL) == 0 ? FluidBlockType.SOURCE : FluidBlockType.FLOWING; - if (blockState.getFluidState() - .getFluid() != Fluids.EMPTY && blockState.getCollisionShape(getWorld(), pos, ISelectionContext.dummy()) - .isEmpty()) - return FluidBlockType.SOURCE; - return FluidBlockType.NONE; - } - - @Override - public void tick() { - super.tick(); - if (rootPos != null) - isValid = checkValid(getWorld(), rootPos); - if (!frontier.isEmpty()) { - continueSearch(); - return; - } - if (!validationFrontier.isEmpty()) { - continueValidation(); - return; - } - if (revalidateIn > 0) - revalidateIn--; - } - - @Override - public void lazyTick() { - super.lazyTick(); - } - - public void rebuildContext(BlockPos root) { - reset(); - rootPos = root; - affectedArea = new MutableBoundingBox(rootPos, rootPos); - if (isValid) - frontier.add(new BlockPosEntry(root, 0)); - } - - public void revalidate(BlockPos root) { - validationFrontier.clear(); - validationVisited.clear(); - newValidationSet.clear(); - validationFrontier.add(new BlockPosEntry(root, 0)); - setValidationTimer(); - } - - private void continueSearch() { - fluid = search(fluid, frontier, visited, (e, d) -> { - queue.enqueue(new BlockPosEntry(e, d)); - validationSet.add(e); - }, false); - - World world = getWorld(); - int maxBlocks = maxBlocks(); - if (visited.size() > maxBlocks && canDrainInfinitely(fluid)) { - infinite = true; - // Find first block with valid fluid - while (true) { - BlockPos first = queue.first().pos; - if (canPullFluidsFrom(world.getBlockState(first), first) != FluidBlockType.SOURCE) { - queue.dequeue(); - continue; - } - break; - } - BlockPos firstValid = queue.first().pos; - frontier.clear(); - visited.clear(); - queue.clear(); - queue.enqueue(new BlockPosEntry(firstValid, 0)); - tileEntity.sendData(); - return; - } - - if (!frontier.isEmpty()) - return; - - tileEntity.sendData(); - visited.clear(); - } - - private void continueValidation() { - search(fluid, validationFrontier, validationVisited, (e, d) -> newValidationSet.add(e), false); - - int maxBlocks = maxBlocks(); - if (validationVisited.size() > maxBlocks && canDrainInfinitely(fluid)) { - if (!infinite) - reset(); - validationFrontier.clear(); - setLongValidationTimer(); - return; - } - - if (!validationFrontier.isEmpty()) - return; - if (infinite) { - reset(); - return; - } - - validationSet = newValidationSet; - newValidationSet = new HashSet<>(); - validationVisited.clear(); - } - - @Override - public void reset() { - super.reset(); - - fluid = null; - rootPos = null; - queue.clear(); - validationSet.clear(); - newValidationSet.clear(); - validationFrontier.clear(); - validationVisited.clear(); - tileEntity.sendData(); - } - - public static BehaviourType TYPE = new BehaviourType<>(); - - @Override - public BehaviourType getType() { - return TYPE; - } - - protected boolean isSearching() { - return !frontier.isEmpty(); - } - - public FluidStack getDrainableFluid(BlockPos rootPos) { - return fluid == null || isSearching() || !pullNext(rootPos, true) ? FluidStack.EMPTY - : new FluidStack(fluid, 1000); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java deleted file mode 100644 index a4b6fe0cd..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidFillingBehaviour.java +++ /dev/null @@ -1,314 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.utility.Iterate; - -import it.unimi.dsi.fastutil.PriorityQueue; -import it.unimi.dsi.fastutil.objects.ObjectHeapPriorityQueue; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.DoorBlock; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.block.material.Material; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.FluidTags; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.ITickList; -import net.minecraft.world.NextTickListEntry; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerTickList; - -public class FluidFillingBehaviour extends FluidManipulationBehaviour { - - PriorityQueue queue; - - List infinityCheckFrontier; - Set infinityCheckVisited; - - public FluidFillingBehaviour(SmartTileEntity te) { - super(te); - queue = new ObjectHeapPriorityQueue<>((p, p2) -> -comparePositions(p, p2)); - revalidateIn = 1; - infinityCheckFrontier = new ArrayList<>(); - infinityCheckVisited = new HashSet<>(); - } - - @Override - public void tick() { - super.tick(); - if (!infinityCheckFrontier.isEmpty() && rootPos != null) { - Fluid fluid = getWorld().getFluidState(rootPos) - .getFluid(); - if (fluid != Fluids.EMPTY) - continueValidation(fluid); - } - if (revalidateIn > 0) - revalidateIn--; - } - - protected void continueValidation(Fluid fluid) { - search(fluid, infinityCheckFrontier, infinityCheckVisited, - (p, d) -> infinityCheckFrontier.add(new BlockPosEntry(p, d)), true); - int maxBlocks = maxBlocks(); - - if (infinityCheckVisited.size() > maxBlocks && maxBlocks != -1) { - if (!infinite) { - reset(); - infinite = true; - tileEntity.sendData(); - } - infinityCheckFrontier.clear(); - setLongValidationTimer(); - return; - } - - if (!infinityCheckFrontier.isEmpty()) - return; - if (infinite) { - reset(); - return; - } - - infinityCheckVisited.clear(); - } - - public boolean tryDeposit(Fluid fluid, BlockPos root, boolean simulate) { - if (!Objects.equals(root, rootPos)) { - reset(); - rootPos = root; - queue.enqueue(new BlockPosEntry(root, 0)); - affectedArea = new MutableBoundingBox(rootPos, rootPos); - return false; - } - - if (counterpartActed) { - counterpartActed = false; - softReset(root); - return false; - } - - if (affectedArea == null) - affectedArea = new MutableBoundingBox(root, root); - - if (revalidateIn == 0) { - visited.clear(); - infinityCheckFrontier.clear(); - infinityCheckVisited.clear(); - infinityCheckFrontier.add(new BlockPosEntry(root, 0)); - setValidationTimer(); - softReset(root); - } - - World world = getWorld(); - int maxRange = maxRange(); - int maxRangeSq = maxRange * maxRange; - int maxBlocks = maxBlocks(); - boolean evaporate = world.getDimension() - .isUltrawarm() && fluid.isIn(FluidTags.WATER); - - if (infinite || evaporate) { - FluidState fluidState = world.getFluidState(rootPos); - boolean equivalentTo = fluidState.getFluid() - .isEquivalentTo(fluid); - if (!equivalentTo && !evaporate) - return false; - if (simulate) - return true; - playEffect(world, null, fluid, false); - if (evaporate) { - int i = root.getX(); - int j = root.getY(); - int k = root.getZ(); - world.playSound(null, i, j, k, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, - 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - } - return true; - } - - boolean success = false; - for (int i = 0; !success && !queue.isEmpty() && i < searchedPerTick; i++) { - BlockPosEntry entry = queue.first(); - BlockPos currentPos = entry.pos; - - if (visited.contains(currentPos)) { - queue.dequeue(); - continue; - } - - if (!simulate) - visited.add(currentPos); - - if (visited.size() >= maxBlocks && maxBlocks != -1) { - infinite = true; - visited.clear(); - queue.clear(); - return false; - } - - SpaceType spaceType = getAtPos(world, currentPos, fluid); - if (spaceType == SpaceType.BLOCKING) - continue; - if (spaceType == SpaceType.FILLABLE) { - success = true; - if (!simulate) { - playEffect(world, currentPos, fluid, false); - - BlockState blockState = world.getBlockState(currentPos); - if (blockState.contains(BlockStateProperties.WATERLOGGED) && fluid.isEquivalentTo(Fluids.WATER)) { - world.setBlockState(currentPos, - updatePostWaterlogging(blockState.with(BlockStateProperties.WATERLOGGED, true)), 2 | 16); - } else { - replaceBlock(world, currentPos, blockState); - world.setBlockState(currentPos, FluidHelper.convertToStill(fluid) - .getDefaultState() - .getBlockState(), 2 | 16); - } - - ITickList pendingFluidTicks = world.getPendingFluidTicks(); - if (pendingFluidTicks instanceof ServerTickList) { - ServerTickList serverTickList = (ServerTickList) pendingFluidTicks; - NextTickListEntry removedEntry = null; - for (NextTickListEntry nextTickListEntry : serverTickList.pendingTickListEntriesHashSet) { - if (nextTickListEntry.position.equals(currentPos)) { - removedEntry = nextTickListEntry; - break; - } - } - if (removedEntry != null) { - serverTickList.pendingTickListEntriesHashSet.remove(removedEntry); - serverTickList.pendingTickListEntriesTreeSet.remove(removedEntry); - } - } - - affectedArea.expandTo(new MutableBoundingBox(currentPos, currentPos)); - } - } - - if (simulate && success) - return true; - - visited.add(currentPos); - queue.dequeue(); - - for (Direction side : Iterate.directions) { - if (side == Direction.UP) - continue; - - BlockPos offsetPos = currentPos.offset(side); - if (visited.contains(offsetPos)) - continue; - if (offsetPos.distanceSq(rootPos) > maxRangeSq) - continue; - - SpaceType nextSpaceType = getAtPos(world, offsetPos, fluid); - if (nextSpaceType != SpaceType.BLOCKING) - queue.enqueue(new BlockPosEntry(offsetPos, entry.distance + 1)); - } - } - - if (!simulate && success) - AllTriggers.triggerForNearbyPlayers(AllTriggers.HOSE_PULLEY, world, tileEntity.getPos(), 8); - return success; - } - - protected void softReset(BlockPos root) { - visited.clear(); - queue.clear(); - queue.enqueue(new BlockPosEntry(root, 0)); - infinite = false; - setValidationTimer(); - tileEntity.sendData(); - } - - enum SpaceType { - FILLABLE, FILLED, BLOCKING - } - - protected SpaceType getAtPos(World world, BlockPos pos, Fluid toFill) { - BlockState blockState = world.getBlockState(pos); - FluidState fluidState = blockState.getFluidState(); - - if (blockState.contains(BlockStateProperties.WATERLOGGED)) - return toFill.isEquivalentTo(Fluids.WATER) - ? blockState.get(BlockStateProperties.WATERLOGGED) ? SpaceType.FILLED : SpaceType.FILLABLE - : SpaceType.BLOCKING; - - if (blockState.getBlock() instanceof FlowingFluidBlock) - return blockState.get(FlowingFluidBlock.LEVEL) == 0 - ? toFill.isEquivalentTo(fluidState.getFluid()) ? SpaceType.FILLED : SpaceType.BLOCKING - : SpaceType.FILLABLE; - - if (fluidState.getFluid() != Fluids.EMPTY - && blockState.getCollisionShape(getWorld(), pos, ISelectionContext.dummy()) - .isEmpty()) - return toFill.isEquivalentTo(fluidState.getFluid()) ? SpaceType.FILLED : SpaceType.BLOCKING; - - return canBeReplacedByFluid(world, pos, blockState) ? SpaceType.FILLABLE : SpaceType.BLOCKING; - } - - protected void replaceBlock(World world, BlockPos pos, BlockState state) { - TileEntity tileentity = state.getBlock() - .hasTileEntity(state) ? world.getTileEntity(pos) : null; - Block.spawnDrops(state, world, pos, tileentity); - } - - // From FlowingFluidBlock#isBlocked - protected boolean canBeReplacedByFluid(IBlockReader world, BlockPos pos, BlockState state) { - Block block = state.getBlock(); - if (!(block instanceof DoorBlock) && !block.isIn(BlockTags.SIGNS) && block != Blocks.LADDER - && block != Blocks.SUGAR_CANE && block != Blocks.BUBBLE_COLUMN) { - Material material = state.getMaterial(); - if (material != Material.PORTAL && material != Material.STRUCTURE_VOID && material != Material.OCEAN_PLANT - && material != Material.SEA_GRASS) { - return !material.blocksMovement(); - } else { - return false; - } - } else { - return false; - } - } - - protected BlockState updatePostWaterlogging(BlockState state) { - if (state.contains(BlockStateProperties.LIT)) - state = state.with(BlockStateProperties.LIT, false); - return state; - } - - @Override - public void reset() { - super.reset(); - queue.clear(); - infinityCheckFrontier.clear(); - infinityCheckVisited.clear(); - } - - public static BehaviourType TYPE = new BehaviourType<>(); - - @Override - public BehaviourType getType() { - return TYPE; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidManipulationBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidManipulationBehaviour.java deleted file mode 100644 index 16e61b211..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidManipulationBehaviour.java +++ /dev/null @@ -1,228 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.function.BiConsumer; - -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.FluidState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.fluids.FluidStack; - -public abstract class FluidManipulationBehaviour extends TileEntityBehaviour { - - protected static class BlockPosEntry { - public BlockPos pos; - public int distance; - - public BlockPosEntry(BlockPos pos, int distance) { - this.pos = pos; - this.distance = distance; - } - } - - MutableBoundingBox affectedArea; - BlockPos rootPos; - boolean infinite; - protected boolean counterpartActed; - - // Search - static final int searchedPerTick = 256; - List frontier; - Set visited; - - static final int validationTimer = 160; - int revalidateIn; - - public FluidManipulationBehaviour(SmartTileEntity te) { - super(te); - setValidationTimer(); - infinite = false; - visited = new HashSet<>(); - frontier = new ArrayList<>(); - } - - public void counterpartActed() { - counterpartActed = true; - } - - protected int setValidationTimer() { - return revalidateIn = validationTimer; - } - - protected int setLongValidationTimer() { - return revalidateIn = validationTimer * 2; - } - - protected int maxRange() { - return AllConfigs.SERVER.fluids.hosePulleyRange.get(); - } - - protected int maxBlocks() { - return AllConfigs.SERVER.fluids.hosePulleyBlockThreshold.get(); - } - - public void reset() { - if (affectedArea != null) - scheduleUpdatesInAffectedArea(); - affectedArea = null; - setValidationTimer(); - frontier.clear(); - visited.clear(); - infinite = false; - } - - @Override - public void destroy() { - reset(); - super.destroy(); - } - - protected void scheduleUpdatesInAffectedArea() { - World world = getWorld(); - BlockPos.getAllInBox(new BlockPos(affectedArea.minX - 1, affectedArea.minY - 1, affectedArea.minZ - 1), new BlockPos(affectedArea.maxX + 1, affectedArea.maxY + 1, affectedArea.maxZ + 1)) - .forEach(pos -> { - FluidState nextFluidState = world.getFluidState(pos); - if (nextFluidState.isEmpty()) - return; - world.getPendingFluidTicks() - .scheduleTick(pos, nextFluidState.getFluid(), world.getRandom() - .nextInt(5)); - }); - } - - protected int comparePositions(BlockPosEntry e1, BlockPosEntry e2) { - Vector3d centerOfRoot = VecHelper.getCenterOf(rootPos); - BlockPos pos2 = e2.pos; - BlockPos pos1 = e1.pos; - if (pos1.getY() != pos2.getY()) - return Integer.compare(pos2.getY(), pos1.getY()); - int compareDistance = Integer.compare(e2.distance, e1.distance); - if (compareDistance != 0) - return compareDistance; - return Double.compare(VecHelper.getCenterOf(pos2) - .squareDistanceTo(centerOfRoot), - VecHelper.getCenterOf(pos1) - .squareDistanceTo(centerOfRoot)); - } - - protected Fluid search(Fluid fluid, List frontier, Set visited, - BiConsumer add, boolean searchDownward) { - World world = getWorld(); - int maxBlocks = maxBlocks(); - int maxRange = canDrainInfinitely(fluid) ? maxRange() : maxRange() / 2; - int maxRangeSq = maxRange * maxRange; - int i; - - for (i = 0; i < searchedPerTick && !frontier.isEmpty() - && (visited.size() <= maxBlocks || !canDrainInfinitely(fluid)); i++) { - BlockPosEntry entry = frontier.remove(0); - BlockPos currentPos = entry.pos; - if (visited.contains(currentPos)) - continue; - visited.add(currentPos); - - FluidState fluidState = world.getFluidState(currentPos); - if (fluidState.isEmpty()) - continue; - - Fluid currentFluid = FluidHelper.convertToStill(fluidState.getFluid()); - if (fluid == null) - fluid = currentFluid; - if (!currentFluid.isEquivalentTo(fluid)) - continue; - - add.accept(currentPos, entry.distance); - - for (Direction side : Iterate.directions) { - if (!searchDownward && side == Direction.DOWN) - continue; - - BlockPos offsetPos = currentPos.offset(side); - if (visited.contains(offsetPos)) - continue; - if (offsetPos.distanceSq(rootPos) > maxRangeSq) - continue; - - FluidState nextFluidState = world.getFluidState(offsetPos); - if (nextFluidState.isEmpty()) - continue; - Fluid nextFluid = nextFluidState.getFluid(); - if (nextFluid == FluidHelper.convertToFlowing(nextFluid) && side == Direction.UP - && !VecHelper.onSameAxis(rootPos, offsetPos, Axis.Y)) - continue; - - frontier.add(new BlockPosEntry(offsetPos, entry.distance + 1)); - } - } - - return fluid; - } - - protected void playEffect(World world, BlockPos pos, Fluid fluid, boolean fillSound) { - BlockPos splooshPos = pos == null ? tileEntity.getPos() : pos; - - SoundEvent soundevent = fillSound ? fluid.getAttributes() - .getFillSound() - : fluid.getAttributes() - .getEmptySound(); - if (soundevent == null) - soundevent = fluid.isIn(FluidTags.LAVA) - ? fillSound ? SoundEvents.ITEM_BUCKET_FILL_LAVA : SoundEvents.ITEM_BUCKET_EMPTY_LAVA - : fillSound ? SoundEvents.ITEM_BUCKET_FILL : SoundEvents.ITEM_BUCKET_EMPTY; - - world.playSound(null, splooshPos, soundevent, SoundCategory.BLOCKS, 0.3F, 1.0F); - if (world instanceof ServerWorld) - AllPackets.sendToNear(world, splooshPos, 10, new FluidSplashPacket(splooshPos, new FluidStack(fluid, 1))); - } - - protected boolean canDrainInfinitely(Fluid fluid) { - return maxBlocks() != -1; // && !AllFluidTags.NO_INFINITE_DRAINING.matches(fluid); - } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - if (rootPos != null) - nbt.put("LastPos", NBTUtil.writeBlockPos(rootPos)); - if (affectedArea != null) { - nbt.put("AffectedAreaFrom", - NBTUtil.writeBlockPos(new BlockPos(affectedArea.minX, affectedArea.minY, affectedArea.minZ))); - nbt.put("AffectedAreaTo", - NBTUtil.writeBlockPos(new BlockPos(affectedArea.maxX, affectedArea.maxY, affectedArea.maxZ))); - } - super.write(nbt, clientPacket); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - if (nbt.contains("LastPos")) - rootPos = NBTUtil.readBlockPos(nbt.getCompound("LastPos")); - if (nbt.contains("AffectedAreaFrom") && nbt.contains("AffectedAreaTo")) - affectedArea = new MutableBoundingBox(NBTUtil.readBlockPos(nbt.getCompound("AffectedAreaFrom")), - NBTUtil.readBlockPos(nbt.getCompound("AffectedAreaTo"))); - super.read(nbt, clientPacket); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidSplashPacket.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidSplashPacket.java deleted file mode 100644 index 0b523ffcc..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/FluidSplashPacket.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.function.Supplier; - -import com.simibubi.create.content.contraptions.fluids.FluidFX; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class FluidSplashPacket extends SimplePacketBase { - - private BlockPos pos; - private FluidStack fluid; - - public FluidSplashPacket(BlockPos pos, FluidStack fluid) { - this.pos = pos; - this.fluid = fluid; - } - - public FluidSplashPacket(PacketBuffer buffer) { - pos = buffer.readBlockPos(); - fluid = buffer.readFluidStack(); - } - - public void write(PacketBuffer buffer) { - buffer.writeBlockPos(pos); - buffer.writeFluidStack(fluid); - } - - public void handle(Supplier ctx) { - ctx.get() - .enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - if (Minecraft.getInstance().player.getPositionVec() - .distanceTo(new Vector3d(pos.getX(), pos.getY(), pos.getZ())) > 100) - return; - FluidFX.splash(pos, fluid); - })); - ctx.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/GenericItemFilling.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/GenericItemFilling.java deleted file mode 100644 index 271378b4d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/GenericItemFilling.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import com.simibubi.create.AllFluids; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; -import com.simibubi.create.foundation.fluid.FluidHelper; - -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BucketItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.MilkBucketItem; -import net.minecraft.potion.PotionUtils; -import net.minecraft.potion.Potions; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import net.minecraftforge.fluids.capability.wrappers.FluidBucketWrapper; - -public class GenericItemFilling { - - /** - * Checks if an ItemStack's IFluidHandlerItem is valid. Ideally, this check would - * not be necessary. Unfortunately, some mods that copy the functionality of the - * MilkBucketItem copy the FluidBucketWrapper capability that is patched in by - * Forge without looking into what it actually does. In all cases this is - * incorrect because having a non-bucket item turn into a bucket item does not - * make sense. - * - *

This check is only necessary for filling since a FluidBucketWrapper will be - * empty if it is initialized with a non-bucket item. - * - * @param stack The ItemStack. - * @param fluidHandler The IFluidHandlerItem instance retrieved from the ItemStack. - * @return If the IFluidHandlerItem is valid for the passed ItemStack. - */ - public static boolean isFluidHandlerValid(ItemStack stack, IFluidHandlerItem fluidHandler) { - // Not instanceof in case a correct subclass is made - if (fluidHandler.getClass() == FluidBucketWrapper.class) { - Item item = stack.getItem(); - // Forge does not patch the FluidBucketWrapper onto subclasses of BucketItem - if (item.getClass() != BucketItem.class && !(item instanceof MilkBucketItem)) { - return false; - } - } - return true; - } - - public static boolean canItemBeFilled(World world, ItemStack stack) { - if (stack.getItem() == Items.GLASS_BOTTLE) - return true; - if (stack.getItem() == Items.MILK_BUCKET) - return false; - - LazyOptional capability = - stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); - IFluidHandlerItem tank = capability.orElse(null); - if (tank == null) - return false; - if (!isFluidHandlerValid(stack, tank)) - return false; - for (int i = 0; i < tank.getTanks(); i++) { - if (tank.getFluidInTank(i) - .getAmount() < tank.getTankCapacity(i)) - return true; - } - return false; - } - - public static int getRequiredAmountForItem(World world, ItemStack stack, FluidStack availableFluid) { - if (stack.getItem() == Items.GLASS_BOTTLE && canFillGlassBottleInternally(availableFluid)) - return PotionFluidHandler.getRequiredAmountForFilledBottle(stack, availableFluid); - if (stack.getItem() == Items.BUCKET && canFillBucketInternally(availableFluid)) - return 1000; - - LazyOptional capability = - stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); - IFluidHandlerItem tank = capability.orElse(null); - if (tank == null) - return -1; - if (tank instanceof FluidBucketWrapper) { - Item filledBucket = availableFluid.getFluid() - .getFilledBucket(); - if (filledBucket == null || filledBucket == Items.AIR) - return -1; - if (!((FluidBucketWrapper) tank).getFluid() - .isEmpty()) - return -1; - return 1000; - } - - int filled = tank.fill(availableFluid, FluidAction.SIMULATE); - return filled == 0 ? -1 : filled; - } - - private static boolean canFillGlassBottleInternally(FluidStack availableFluid) { - return availableFluid.getFluid() - .isEquivalentTo(Fluids.WATER) - || availableFluid.getFluid() - .isEquivalentTo(AllFluids.POTION.get()); - } - - private static boolean canFillBucketInternally(FluidStack availableFluid) { - return availableFluid.getFluid() - .isEquivalentTo(AllFluids.MILK.get().getFlowingFluid()); - } - - public static ItemStack fillItem(World world, int requiredAmount, ItemStack stack, FluidStack availableFluid) { - FluidStack toFill = availableFluid.copy(); - toFill.setAmount(requiredAmount); - availableFluid.shrink(requiredAmount); - - if (stack.getItem() == Items.GLASS_BOTTLE && canFillGlassBottleInternally(toFill)) { - ItemStack fillBottle = ItemStack.EMPTY; - if (FluidHelper.isWater(toFill.getFluid())) - fillBottle = PotionUtils.addPotionToItemStack(new ItemStack(Items.POTION), Potions.WATER); - else - fillBottle = PotionFluidHandler.fillBottle(stack, toFill); - stack.shrink(1); - return fillBottle; - } - - if (stack.getItem() == Items.BUCKET && canFillBucketInternally(toFill)) { - ItemStack filledBucket = new ItemStack(Items.MILK_BUCKET); - stack.shrink(1); - return filledBucket; - } - - ItemStack split = stack.copy(); - split.setCount(1); - LazyOptional capability = - split.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); - IFluidHandlerItem tank = capability.orElse(null); - if (tank == null) - return ItemStack.EMPTY; - tank.fill(toFill, FluidAction.EXECUTE); - ItemStack container = tank.getContainer() - .copy(); - stack.shrink(1); - return container; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyBlock.java deleted file mode 100644 index 7ec814a63..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyBlock.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public class HosePulleyBlock extends HorizontalKineticBlock implements ITE { - - public HosePulleyBlock(Properties properties) { - super(properties); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(HORIZONTAL_FACING) - .rotateY() - .getAxis(); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Direction preferredHorizontalFacing = getPreferredHorizontalFacing(context); - return this.getDefaultState() - .with(HORIZONTAL_FACING, - preferredHorizontalFacing != null ? preferredHorizontalFacing.rotateYCCW() - : context.getPlacementHorizontalFacing() - .getOpposite()); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return state.get(HORIZONTAL_FACING) - .rotateY() == face; - } - - public static boolean hasPipeTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return state.get(HORIZONTAL_FACING) - .rotateYCCW() == face; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.HOSE_PULLEY.create(); - } - - @Override - public Direction getPreferredHorizontalFacing(BlockItemUseContext context) { - Direction fromParent = super.getPreferredHorizontalFacing(context); - if (fromParent != null) - return fromParent; - - Direction prefferedSide = null; - for (Direction facing : Iterate.horizontalDirections) { - BlockPos pos = context.getPos() - .offset(facing); - BlockState blockState = context.getWorld() - .getBlockState(pos); - if (FluidPipeBlock.canConnectTo(context.getWorld(), pos, blockState, facing)) - if (prefferedSide != null && prefferedSide.getAxis() != facing.getAxis()) { - prefferedSide = null; - break; - } else - prefferedSide = facing; - } - return prefferedSide == null ? null : prefferedSide.getOpposite(); - } - - @Override - public void onReplaced(BlockState p_196243_1_, World world, BlockPos pos, BlockState p_196243_4_, - boolean p_196243_5_) { - if (p_196243_1_.hasTileEntity() - && (p_196243_1_.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasTileEntity())) { - TileEntityBehaviour.destroy(world, pos, FluidDrainingBehaviour.TYPE); - TileEntityBehaviour.destroy(world, pos, FluidFillingBehaviour.TYPE); - world.removeTileEntity(pos); - } - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.PULLEY.get(state.get(HORIZONTAL_FACING) - .rotateY() - .getAxis()); - } - - @Override - public Class getTileEntityClass() { - return HosePulleyTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyFluidHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyFluidHandler.java deleted file mode 100644 index 86837a340..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyFluidHandler.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.function.Supplier; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.fluid.SmartFluidTank; - -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; - -public class HosePulleyFluidHandler implements IFluidHandler { - - // The dynamic interface - - @Override - public int fill(FluidStack resource, FluidAction action) { - if (!internalTank.isEmpty() && !resource.isFluidEqual(internalTank.getFluid())) - return 0; - if (resource.isEmpty() || !FluidHelper.hasBlockState(resource.getFluid())) - return 0; - - int diff = resource.getAmount(); - int totalAmountAfterFill = diff + internalTank.getFluidAmount(); - FluidStack remaining = resource.copy(); - - if (predicate.get() && totalAmountAfterFill >= 1000) { - if (filler.tryDeposit(resource.getFluid(), rootPosGetter.get(), action.simulate())) { - drainer.counterpartActed(); - remaining.shrink(1000); - diff -= 1000; - } - } - - if (action.simulate()) - return diff <= 0 ? resource.getAmount() : internalTank.fill(remaining, action); - if (diff <= 0) { - internalTank.drain(-diff, FluidAction.EXECUTE); - return resource.getAmount(); - } - - return internalTank.fill(remaining, action); - } - - @Override - public FluidStack getFluidInTank(int tank) { - if (internalTank.isEmpty()) - return drainer.getDrainableFluid(rootPosGetter.get()); - return internalTank.getFluidInTank(tank); - } - - @Override - public FluidStack drain(FluidStack resource, FluidAction action) { - return drainInternal(resource.getAmount(), resource, action); - } - - @Override - public FluidStack drain(int maxDrain, FluidAction action) { - return drainInternal(maxDrain, null, action); - } - - private FluidStack drainInternal(int maxDrain, @Nullable FluidStack resource, FluidAction action) { - if (resource != null && !internalTank.isEmpty() && !resource.isFluidEqual(internalTank.getFluid())) - return FluidStack.EMPTY; - if (internalTank.getFluidAmount() >= 1000) - return internalTank.drain(maxDrain, action); - BlockPos pos = rootPosGetter.get(); - FluidStack returned = drainer.getDrainableFluid(pos); - if (!predicate.get() || !drainer.pullNext(pos, action.simulate())) - return internalTank.drain(maxDrain, action); - - filler.counterpartActed(); - FluidStack leftover = returned.copy(); - int available = 1000 + internalTank.getFluidAmount(); - int drained; - - if (!internalTank.isEmpty() && !internalTank.getFluid() - .isFluidEqual(returned) || returned.isEmpty()) - return internalTank.drain(maxDrain, action); - - if (resource != null && !returned.isFluidEqual(resource)) - return FluidStack.EMPTY; - - drained = Math.min(maxDrain, available); - returned.setAmount(drained); - leftover.setAmount(available - drained); - if (action.execute() && !leftover.isEmpty()) - internalTank.setFluid(leftover); - return returned; - } - - // - - private SmartFluidTank internalTank; - private FluidFillingBehaviour filler; - private FluidDrainingBehaviour drainer; - private Supplier rootPosGetter; - private Supplier predicate; - - public HosePulleyFluidHandler(SmartFluidTank internalTank, FluidFillingBehaviour filler, - FluidDrainingBehaviour drainer, Supplier rootPosGetter, Supplier predicate) { - this.internalTank = internalTank; - this.filler = filler; - this.drainer = drainer; - this.rootPosGetter = rootPosGetter; - this.predicate = predicate; - } - - @Override - public int getTanks() { - return internalTank.getTanks(); - } - - @Override - public int getTankCapacity(int tank) { - return internalTank.getTankCapacity(tank); - } - - @Override - public boolean isFluidValid(int tank, FluidStack stack) { - return internalTank.isFluidValid(tank, stack); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java deleted file mode 100644 index 1b93f3fa5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyRenderer.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.AbstractPulleyRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; - -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction.Axis; - -public class HosePulleyRenderer extends AbstractPulleyRenderer { - - public HosePulleyRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher, AllBlockPartials.HOSE_HALF, AllBlockPartials.HOSE_HALF_MAGNET); - } - - @Override - protected Axis getShaftAxis(KineticTileEntity te) { - return te.getBlockState() - .get(HosePulleyBlock.HORIZONTAL_FACING) - .rotateY() - .getAxis(); - } - - @Override - protected PartialModel getCoil() { - return AllBlockPartials.HOSE_COIL; - } - - @Override - protected SuperByteBuffer renderRope(KineticTileEntity te) { - return PartialBufferer.get(AllBlockPartials.HOSE, te.getBlockState()); - } - - @Override - protected SuperByteBuffer renderMagnet(KineticTileEntity te) { - return PartialBufferer.get(AllBlockPartials.HOSE_MAGNET, te.getBlockState()); - } - - @Override - protected float getOffset(KineticTileEntity te, float partialTicks) { - return ((HosePulleyTileEntity) te).getInterpolatedOffset(partialTicks); - } - - @Override - protected boolean isRunning(KineticTileEntity te) { - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java deleted file mode 100644 index bad588a5f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/HosePulleyTileEntity.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.List; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.fluid.SmartFluidTank; -import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.ServerSpeedProvider; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; - -public class HosePulleyTileEntity extends KineticTileEntity { - - LerpedFloat offset; - boolean isMoving; - - private SmartFluidTank internalTank; - private LazyOptional capability; - private FluidDrainingBehaviour drainer; - private FluidFillingBehaviour filler; - private HosePulleyFluidHandler handler; - private boolean infinite; - - public HosePulleyTileEntity(TileEntityType typeIn) { - super(typeIn); - offset = LerpedFloat.linear() - .startWithValue(0); - isMoving = true; - internalTank = new SmartFluidTank(1500, this::onTankContentsChanged); - handler = new HosePulleyFluidHandler(internalTank, filler, drainer, - () -> pos.down((int) Math.ceil(offset.getValue())), () -> !this.isMoving); - capability = LazyOptional.of(() -> handler); - } - - @Override - public void sendData() { - infinite = filler.infinite || drainer.infinite; - super.sendData(); - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - boolean addToGoggleTooltip = super.addToGoggleTooltip(tooltip, isPlayerSneaking); - if (infinite) - TooltipHelper.addHint(tooltip, "hint.hose_pulley"); - return addToGoggleTooltip; - } - - @Override - public void addBehaviours(List behaviours) { - drainer = new FluidDrainingBehaviour(this); - filler = new FluidFillingBehaviour(this); - behaviours.add(drainer); - behaviours.add(filler); - super.addBehaviours(behaviours); - } - - protected void onTankContentsChanged(FluidStack contents) {} - - @Override - public void onSpeedChanged(float previousSpeed) { - isMoving = true; - if (getSpeed() == 0) { - offset.forceNextSync(); - offset.setValue(Math.round(offset.getValue())); - isMoving = false; - } - - if (isMoving) { - float newOffset = offset.getValue() + getMovementSpeed(); - if (newOffset < 0) - isMoving = false; - if (!world.getBlockState(pos.down((int) Math.ceil(newOffset))) - .getMaterial() - .isReplaceable()) { - isMoving = false; - } - if (isMoving) { - drainer.reset(); - filler.reset(); - } - } - - super.onSpeedChanged(previousSpeed); - } - - @Override - @OnlyIn(Dist.CLIENT) - public AxisAlignedBB getRenderBoundingBox() { - return super.getRenderBoundingBox().expand(0, -offset.getValue(), 0); - } - - @Override - @OnlyIn(Dist.CLIENT) - public double getMaxRenderDistanceSquared() { - return super.getMaxRenderDistanceSquared() + offset.getValue() * offset.getValue(); - } - - @Override - public void tick() { - super.tick(); - float newOffset = offset.getValue() + getMovementSpeed(); - if (newOffset < 0) { - newOffset = 0; - isMoving = false; - } - if (!world.getBlockState(pos.down((int) Math.ceil(newOffset))) - .getMaterial() - .isReplaceable()) { - newOffset = (int) newOffset; - isMoving = false; - } - if (getSpeed() == 0) - isMoving = false; - - offset.setValue(newOffset); - } - - @Override - public void lazyTick() { - super.lazyTick(); - if (world.isRemote) - return; - if (isMoving) - return; - - int ceil = (int) Math.ceil(offset.getValue() + getMovementSpeed()); - if (getMovementSpeed() > 0 && world.getBlockState(pos.down(ceil)) - .getMaterial() - .isReplaceable()) { - isMoving = true; - drainer.reset(); - filler.reset(); - return; - } - - sendData(); - } - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - compound.put("Offset", offset.writeNBT()); - compound.put("Tank", internalTank.writeToNBT(new CompoundNBT())); - super.write(compound, clientPacket); - if (clientPacket) - compound.putBoolean("Infinite", infinite); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - offset.readNBT(compound.getCompound("Offset"), clientPacket); - internalTank.readFromNBT(compound.getCompound("Tank")); - super.fromTag(state, compound, clientPacket); - if (clientPacket) - infinite = compound.getBoolean("Infinite"); - } - - @Override - public void remove() { - super.remove(); - capability.invalidate(); - } - - public float getMovementSpeed() { - float movementSpeed = convertToLinear(getSpeed()); - if (world.isRemote) - movementSpeed *= ServerSpeedProvider.get(); - return movementSpeed; - } - - public float getInterpolatedOffset(float pt) { - return offset.getValue(pt); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (isFluidHandlerCap(cap) - && (side == null || HosePulleyBlock.hasPipeTowards(world, pos, getBlockState(), side))) - return this.capability.cast(); - return super.getCapability(cap, side); - } - - @Override - public boolean shouldRenderNormally() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java deleted file mode 100644 index 5b9e93781..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainBlock.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.tileEntity.ComparatorUtil; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.InventoryHelper; -import net.minecraft.item.ItemStack; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class ItemDrainBlock extends Block implements IWrenchable, ITE { - - public ItemDrainBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - ItemStack heldItem = player.getHeldItem(handIn); - - return onTileEntityUse(worldIn, pos, te -> { - if (!heldItem.isEmpty()) { - te.internalTank.allowInsertion(); - ActionResultType tryExchange = tryExchange(worldIn, player, handIn, heldItem, te); - te.internalTank.forbidInsertion(); - if (tryExchange.isAccepted()) - return tryExchange; - } - - ItemStack heldItemStack = te.getHeldItemStack(); - if (!worldIn.isRemote && !heldItemStack.isEmpty()) { - player.inventory.placeItemBackInInventory(worldIn, heldItemStack); - te.heldItem = null; - te.notifyUpdate(); - } - return ActionResultType.SUCCESS; - }); - } - - protected ActionResultType tryExchange(World worldIn, PlayerEntity player, Hand handIn, ItemStack heldItem, - ItemDrainTileEntity te) { - if (FluidHelper.tryEmptyItemIntoTE(worldIn, player, handIn, heldItem, te)) - return ActionResultType.SUCCESS; - if (EmptyingByBasin.canItemBeEmptied(worldIn, heldItem)) - return ActionResultType.SUCCESS; - return ActionResultType.PASS; - } - - @Override - public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.CASING_13PX.get(Direction.UP); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.hasTileEntity() || state.getBlock() == newState.getBlock()) - return; - withTileEntityDo(worldIn, pos, te -> { - ItemStack heldItemStack = te.getHeldItemStack(); - if (!heldItemStack.isEmpty()) - InventoryHelper.spawnItemStack(worldIn, pos.getX(), pos.getY(), pos.getZ(), heldItemStack); - }); - worldIn.removeTileEntity(pos); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ITEM_DRAIN.create(); - } - - @Override - public Class getTileEntityClass() { - return ItemDrainTileEntity.class; - } - - @Override - public boolean hasComparatorInputOverride(BlockState state) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) { - return ComparatorUtil.levelOfSmartFluidTank(worldIn, pos); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainItemHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainItemHandler.java deleted file mode 100644 index eeb68b089..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainItemHandler.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemHandlerHelper; - -public class ItemDrainItemHandler implements IItemHandler { - - private ItemDrainTileEntity te; - private Direction side; - - public ItemDrainItemHandler(ItemDrainTileEntity te, Direction side) { - this.te = te; - this.side = side; - } - - @Override - public int getSlots() { - return 1; - } - - @Override - public ItemStack getStackInSlot(int slot) { - return te.getHeldItemStack(); - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - if (!te.getHeldItemStack() - .isEmpty()) - return stack; - - ItemStack returned = ItemStack.EMPTY; - if (stack.getCount() > 1 && EmptyingByBasin.canItemBeEmptied(te.getWorld(), stack)) { - returned = ItemHandlerHelper.copyStackWithSize(stack, stack.getCount() - 1); - stack = ItemHandlerHelper.copyStackWithSize(stack, 1); - } - - if (!simulate) { - TransportedItemStack heldItem = new TransportedItemStack(stack); - heldItem.prevBeltPosition = 0; - te.setHeldItem(heldItem, side.getOpposite()); - te.notifyUpdate(); - } - - return returned; - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - TransportedItemStack held = te.heldItem; - if (held == null) - return ItemStack.EMPTY; - - ItemStack stack = held.stack.copy(); - ItemStack extracted = stack.split(amount); - if (!simulate) { - te.heldItem.stack = stack; - if (stack.isEmpty()) - te.heldItem = null; - te.notifyUpdate(); - } - return extracted; - } - - @Override - public int getSlotLimit(int slot) { - return 64; - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java deleted file mode 100644 index 8b7ac12f4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainRenderer.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.Random; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.fluid.FluidRenderer; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; -import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraftforge.fluids.FluidStack; - -public class ItemDrainRenderer extends SmartTileEntityRenderer { - - public ItemDrainRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(ItemDrainTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - renderFluid(te, partialTicks, ms, buffer, light); - renderItem(te, partialTicks, ms, buffer, light, overlay); - } - - protected void renderItem(ItemDrainTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - TransportedItemStack transported = te.heldItem; - if (transported == null) - return; - - MatrixStacker msr = MatrixStacker.of(ms); - Vector3d itemPosition = VecHelper.getCenterOf(te.getPos()); - - Direction insertedFrom = transported.insertedFrom; - if (!insertedFrom.getAxis() - .isHorizontal()) - return; - - ms.push(); - ms.translate(.5f, 15 / 16f, .5f); - msr.nudge(0); - float offset = MathHelper.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition); - float sideOffset = MathHelper.lerp(partialTicks, transported.prevSideOffset, transported.sideOffset); - - Vector3d offsetVec = Vector3d.of(insertedFrom.getOpposite() - .getDirectionVec()) - .scale(.5f - offset); - ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); - boolean alongX = insertedFrom.rotateY() - .getAxis() == Axis.X; - if (!alongX) - sideOffset *= -1; - ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset); - - ItemStack itemStack = transported.stack; - Random r = new Random(0); - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); - int count = (int) (MathHelper.log2((int) (itemStack.getCount()))) / 2; - boolean renderUpright = BeltHelper.isItemUpright(itemStack); - boolean blockItem = itemRenderer.getItemModelWithOverrides(itemStack, null, null) - .isGui3d(); - - if (renderUpright) - ms.translate(0, 3 / 32d, 0); - - int positive = insertedFrom.getAxisDirection() - .getOffset(); - float verticalAngle = positive * offset * 360; - if (insertedFrom.getAxis() != Axis.X) - msr.rotateX(verticalAngle); - if (insertedFrom.getAxis() != Axis.Z) - msr.rotateZ(-verticalAngle); - - if (renderUpright) { - Entity renderViewEntity = Minecraft.getInstance().renderViewEntity; - if (renderViewEntity != null) { - Vector3d positionVec = renderViewEntity.getPositionVec(); - Vector3d vectorForOffset = itemPosition.add(offsetVec); - Vector3d diff = vectorForOffset.subtract(positionVec); - - if (insertedFrom.getAxis() != Axis.X) - diff = VecHelper.rotate(diff, verticalAngle, Axis.X); - if (insertedFrom.getAxis() != Axis.Z) - diff = VecHelper.rotate(diff, -verticalAngle, Axis.Z); - - float yRot = (float) MathHelper.atan2(diff.z, -diff.x); - ms.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion((float) (yRot - Math.PI / 2))); - } - ms.translate(0, 0, -1 / 16f); - } - - for (int i = 0; i <= count; i++) { - ms.push(); - if (blockItem) - ms.translate(r.nextFloat() * .0625f * i, 0, r.nextFloat() * .0625f * i); - ms.scale(.5f, .5f, .5f); - if (!blockItem && !renderUpright) - msr.rotateX(90); - itemRenderer.renderItem(itemStack, TransformType.FIXED, light, overlay, ms, buffer); - ms.pop(); - - if (!renderUpright) { - if (!blockItem) - msr.rotateY(10); - ms.translate(0, blockItem ? 1 / 64d : 1 / 16d, 0); - } else - ms.translate(0, 0, -1 / 16f); - } - - ms.pop(); - } - - protected void renderFluid(ItemDrainTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light) { - SmartFluidTankBehaviour tank = te.internalTank; - if (tank == null) - return; - - TankSegment primaryTank = tank.getPrimaryTank(); - FluidStack fluidStack = primaryTank.getRenderedFluid(); - float level = primaryTank.getFluidLevel() - .getValue(partialTicks); - - if (!fluidStack.isEmpty() && level != 0) { - float yMin = 5f / 16f; - float min = 2f / 16f; - float max = min + (12 / 16f); - float yOffset = (7 / 16f) * level; - ms.push(); - ms.translate(0, yOffset, 0); - FluidRenderer.renderTiledFluidBB(fluidStack, min, yMin - yOffset, min, max, yMin, max, buffer, ms, light, - false); - ms.pop(); - } - - ItemStack heldItemStack = te.getHeldItemStack(); - if (heldItemStack.isEmpty()) - return; - FluidStack fluidStack2 = EmptyingByBasin.emptyItem(te.getWorld(), heldItemStack, true) - .getFirst(); - if (fluidStack2.isEmpty()) { - if (fluidStack.isEmpty()) - return; - fluidStack2 = fluidStack; - } - - int processingTicks = te.processingTicks; - float processingPT = te.processingTicks - partialTicks; - float processingProgress = 1 - (processingPT - 5) / 10; - processingProgress = MathHelper.clamp(processingProgress, 0, 1); - float radius = 0; - - if (processingTicks != -1) { - radius = (float) (Math.pow(((2 * processingProgress) - 1), 2) - 1); - AxisAlignedBB bb = new AxisAlignedBB(0.5, 1.0, 0.5, 0.5, 0.25, 0.5).grow(radius / 32f); - FluidRenderer.renderTiledFluidBB(fluidStack2, (float) bb.minX, (float) bb.minY, (float) bb.minZ, - (float) bb.maxX, (float) bb.maxY, (float) bb.maxZ, buffer, ms, light, true); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainTileEntity.java deleted file mode 100644 index ab80e1ff0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/ItemDrainTileEntity.java +++ /dev/null @@ -1,300 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; - -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pair; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.items.ItemHandlerHelper; - -public class ItemDrainTileEntity extends SmartTileEntity implements IHaveGoggleInformation { - - public static final int FILLING_TIME = 20; - - SmartFluidTankBehaviour internalTank; - TransportedItemStack heldItem; - protected int processingTicks; - Map> itemHandlers; - - public ItemDrainTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - itemHandlers = new IdentityHashMap<>(); - for (Direction d : Iterate.horizontalDirections) { - ItemDrainItemHandler itemDrainItemHandler = new ItemDrainItemHandler(this, d); - itemHandlers.put(d, LazyOptional.of(() -> itemDrainItemHandler)); - } - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new DirectBeltInputBehaviour(this).allowingBeltFunnels() - .setInsertionHandler(this::tryInsertingFromSide)); - behaviours.add(internalTank = SmartFluidTankBehaviour.single(this, 1500) - .allowExtraction() - .forbidInsertion()); - } - - private ItemStack tryInsertingFromSide(TransportedItemStack transportedStack, Direction side, boolean simulate) { - ItemStack inserted = transportedStack.stack; - ItemStack returned = ItemStack.EMPTY; - - if (!getHeldItemStack().isEmpty()) - return inserted; - - if (inserted.getCount() > 1 && EmptyingByBasin.canItemBeEmptied(world, inserted)) { - returned = ItemHandlerHelper.copyStackWithSize(inserted, inserted.getCount() - 1); - inserted = ItemHandlerHelper.copyStackWithSize(inserted, 1); - } - - if (simulate) - return returned; - - transportedStack = transportedStack.copy(); - transportedStack.beltPosition = side.getAxis() - .isVertical() ? .5f : 0; - transportedStack.prevSideOffset = transportedStack.sideOffset; - transportedStack.prevBeltPosition = transportedStack.beltPosition; - setHeldItem(transportedStack, side); - markDirty(); - sendData(); - - return returned; - } - - public ItemStack getHeldItemStack() { - return heldItem == null ? ItemStack.EMPTY : heldItem.stack; - } - - @Override - public void tick() { - super.tick(); - - if (heldItem == null) { - processingTicks = 0; - return; - } - - boolean onClient = world.isRemote && !isVirtual(); - - if (processingTicks > 0) { - heldItem.prevBeltPosition = .5f; - boolean wasAtBeginning = processingTicks == FILLING_TIME; - if (!onClient || processingTicks < FILLING_TIME) - processingTicks--; - if (!continueProcessing()) { - processingTicks = 0; - notifyUpdate(); - return; - } - if (wasAtBeginning != (processingTicks == FILLING_TIME)) - sendData(); - return; - } - - heldItem.prevBeltPosition = heldItem.beltPosition; - heldItem.prevSideOffset = heldItem.sideOffset; - - heldItem.beltPosition += itemMovementPerTick(); - if (heldItem.beltPosition > 1) { - heldItem.beltPosition = 1; - - if (onClient) - return; - - Direction side = heldItem.insertedFrom; - - ItemStack tryExportingToBeltFunnel = getBehaviour(DirectBeltInputBehaviour.TYPE) - .tryExportingToBeltFunnel(heldItem.stack, side.getOpposite(), false); - if (tryExportingToBeltFunnel != null) { - if (tryExportingToBeltFunnel.getCount() != heldItem.stack.getCount()) { - if (tryExportingToBeltFunnel.isEmpty()) - heldItem = null; - else - heldItem.stack = tryExportingToBeltFunnel; - notifyUpdate(); - return; - } - if (!tryExportingToBeltFunnel.isEmpty()) - return; - } - - BlockPos nextPosition = pos.offset(side); - DirectBeltInputBehaviour directBeltInputBehaviour = - TileEntityBehaviour.get(world, nextPosition, DirectBeltInputBehaviour.TYPE); - if (directBeltInputBehaviour == null) { - if (!BlockHelper.hasBlockSolidSide(world.getBlockState(nextPosition), world, nextPosition, - side.getOpposite())) { - ItemStack ejected = heldItem.stack; - Vector3d outPos = VecHelper.getCenterOf(pos) - .add(Vector3d.of(side.getDirectionVec()) - .scale(.75)); - float movementSpeed = itemMovementPerTick(); - Vector3d outMotion = Vector3d.of(side.getDirectionVec()) - .scale(movementSpeed) - .add(0, 1 / 8f, 0); - outPos.add(outMotion.normalize()); - ItemEntity entity = new ItemEntity(world, outPos.x, outPos.y + 6 / 16f, outPos.z, ejected); - entity.setMotion(outMotion); - entity.setDefaultPickupDelay(); - entity.velocityChanged = true; - world.addEntity(entity); - - heldItem = null; - notifyUpdate(); - } - return; - } - - if (!directBeltInputBehaviour.canInsertFromSide(side)) - return; - - ItemStack returned = directBeltInputBehaviour.handleInsertion(heldItem.copy(), side, false); - - if (returned.isEmpty()) { - if (world.getTileEntity(nextPosition) instanceof ItemDrainTileEntity) - AllTriggers.triggerForNearbyPlayers(AllTriggers.CHAINED_ITEM_DRAIN, world, pos, 5); - heldItem = null; - notifyUpdate(); - return; - } - - if (returned.getCount() != heldItem.stack.getCount()) { - heldItem.stack = returned; - notifyUpdate(); - return; - } - - return; - } - - if (heldItem.prevBeltPosition < .5f && heldItem.beltPosition >= .5f) { - if (!EmptyingByBasin.canItemBeEmptied(world, heldItem.stack)) - return; - heldItem.beltPosition = .5f; - if (onClient) - return; - processingTicks = FILLING_TIME; - sendData(); - } - - } - - protected boolean continueProcessing() { - if (world.isRemote && !isVirtual()) - return true; - if (processingTicks < 5) - return true; - if (!EmptyingByBasin.canItemBeEmptied(world, heldItem.stack)) - return false; - - Pair emptyItem = EmptyingByBasin.emptyItem(world, heldItem.stack, true); - FluidStack fluidFromItem = emptyItem.getFirst(); - - if (processingTicks > 5) { - internalTank.allowInsertion(); - if (internalTank.getPrimaryHandler() - .fill(fluidFromItem, FluidAction.SIMULATE) != fluidFromItem.getAmount()) { - internalTank.forbidInsertion(); - processingTicks = FILLING_TIME; - return true; - } - internalTank.forbidInsertion(); - return true; - } - - emptyItem = EmptyingByBasin.emptyItem(world, heldItem.stack.copy(), false); - AllTriggers.triggerForNearbyPlayers(AllTriggers.ITEM_DRAIN, world, pos, 5); - - // Process finished - ItemStack out = emptyItem.getSecond(); - if (!out.isEmpty()) - heldItem.stack = out; - else - heldItem = null; - internalTank.allowInsertion(); - internalTank.getPrimaryHandler() - .fill(fluidFromItem, FluidAction.EXECUTE); - internalTank.forbidInsertion(); - notifyUpdate(); - return true; - } - - private float itemMovementPerTick() { - return 1 / 8f; - } - - @Override - public void remove() { - super.remove(); - for (LazyOptional lazyOptional : itemHandlers.values()) - lazyOptional.invalidate(); - } - - public void setHeldItem(TransportedItemStack heldItem, Direction insertedFrom) { - this.heldItem = heldItem; - this.heldItem.insertedFrom = insertedFrom; - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putInt("ProcessingTicks", processingTicks); - if (heldItem != null) - compound.put("HeldItem", heldItem.serializeNBT()); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - heldItem = null; - processingTicks = compound.getInt("ProcessingTicks"); - if (compound.contains("HeldItem")) - heldItem = TransportedItemStack.read(compound.getCompound("HeldItem")); - super.fromTag(state, compound, clientPacket); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (side != null && side.getAxis() - .isHorizontal() && isItemHandlerCap(cap)) - return itemHandlers.get(side) - .cast(); - - if (side != Direction.UP && isFluidHandlerCap(cap)) - return internalTank.getCapability() - .cast(); - - return super.getCapability(cap, side); - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - return containedFluidTooltip(tooltip, isPlayerSneaking, getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutBlock.java deleted file mode 100644 index be3a9dcd2..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutBlock.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.tileEntity.ComparatorUtil; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class SpoutBlock extends Block implements IWrenchable { - - public SpoutBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.SPOUT; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.SPOUT.create(); - } - - @Override - public boolean hasComparatorInputOverride(BlockState state) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) { - return ComparatorUtil.levelOfSmartFluidTank(worldIn, pos); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutRenderer.java deleted file mode 100644 index 56e8a77d6..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutRenderer.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.fluid.FluidRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.fluids.FluidStack; - -public class SpoutRenderer extends SafeTileEntityRenderer { - - public SpoutRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - static final PartialModel[] BITS = - { AllBlockPartials.SPOUT_TOP, AllBlockPartials.SPOUT_MIDDLE, AllBlockPartials.SPOUT_BOTTOM }; - - @Override - protected void renderSafe(SpoutTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - SmartFluidTankBehaviour tank = te.tank; - if (tank == null) - return; - - TankSegment primaryTank = tank.getPrimaryTank(); - FluidStack fluidStack = primaryTank.getRenderedFluid(); - float level = primaryTank.getFluidLevel() - .getValue(partialTicks); - - if (!fluidStack.isEmpty() && level != 0) { - float min = 2.5f / 16f; - float max = min + (11 / 16f); - float yOffset = (11 / 16f) * level; - ms.push(); - ms.translate(0, yOffset, 0); - FluidRenderer.renderTiledFluidBB(fluidStack, min, min - yOffset, min, max, min, max, buffer, ms, light, - false); - ms.pop(); - } - - int processingTicks = te.getCorrectedProcessingTicks(); - float processingPT = te.getCorrectedProcessingTicks() - partialTicks; - float processingProgress = 1 - (processingPT - 5) / 10; - processingProgress = MathHelper.clamp(processingProgress, 0, 1); - float radius = 0; - - if (processingTicks != -1) { - radius = (float) (Math.pow(((2 * processingProgress) - 1), 2) - 1); - AxisAlignedBB bb = new AxisAlignedBB(0.5, .5, 0.5, 0.5, -1.2, 0.5).grow(radius / 32f); - FluidRenderer.renderTiledFluidBB(fluidStack, (float) bb.minX, (float) bb.minY, (float) bb.minZ, - (float) bb.maxX, (float) bb.maxY, (float) bb.maxZ, buffer, ms, light, true); - } - - float squeeze = radius; - if (processingPT < 0) - squeeze = 0; - else if (processingPT < 2) - squeeze = MathHelper.lerp(processingPT / 2f, 0, -1); - else if (processingPT < 10) - squeeze = -1; - - ms.push(); - for (PartialModel bit : BITS) { - PartialBufferer.get(bit, te.getBlockState()) - .light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - ms.translate(0, -3 * squeeze / 32f, 0); - } - ms.pop(); - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java deleted file mode 100644 index 02c0e05a2..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/actors/SpoutTileEntity.java +++ /dev/null @@ -1,291 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.actors; - -import static com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult.HOLD; -import static com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult.PASS; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.fluids.FluidFX; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.item.PotionItem; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.IParticleData; -import net.minecraft.potion.PotionUtils; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fml.ModList; - -public class SpoutTileEntity extends SmartTileEntity implements IHaveGoggleInformation { - private static final boolean IS_TIC_LOADED = ModList.get().isLoaded("tconstruct"); - private static final Class CASTING_FLUID_HANDLER_CLASS; - static { - Class testClass; - try { - testClass = Class.forName("slimeknights.tconstruct.library.smeltery.CastingFluidHandler"); - } catch (ClassNotFoundException e) { - testClass = null; - } - CASTING_FLUID_HANDLER_CLASS = testClass; - } - - public static final int FILLING_TIME = 20; - - protected BeltProcessingBehaviour beltProcessing; - protected int processingTicks; - protected boolean sendSplash; - private boolean shouldAnimate = true; - - SmartFluidTankBehaviour tank; - - public SpoutTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - processingTicks = -1; - } - - protected AxisAlignedBB cachedBoundingBox; - - @Override - @OnlyIn(Dist.CLIENT) - public AxisAlignedBB getRenderBoundingBox() { - if (cachedBoundingBox == null) - cachedBoundingBox = super.getRenderBoundingBox().expand(0, -2, 0); - return cachedBoundingBox; - } - - @Override - public void addBehaviours(List behaviours) { - tank = SmartFluidTankBehaviour.single(this, 1000); - behaviours.add(tank); - - beltProcessing = new BeltProcessingBehaviour(this).whenItemEnters(this::onItemReceived) - .whileItemHeld(this::whenItemHeld); - behaviours.add(beltProcessing); - - } - - protected ProcessingResult onItemReceived(TransportedItemStack transported, - TransportedItemStackHandlerBehaviour handler) { - if (!FillingBySpout.canItemBeFilled(world, transported.stack)) - return PASS; - if (tank.isEmpty()) - return HOLD; - if (FillingBySpout.getRequiredAmountForItem(world, transported.stack, getCurrentFluidInTank()) == -1) - return PASS; - return HOLD; - } - - protected ProcessingResult whenItemHeld(TransportedItemStack transported, - TransportedItemStackHandlerBehaviour handler) { - shouldAnimate = true; - if (processingTicks != -1 && processingTicks != 5) - return HOLD; - if (!FillingBySpout.canItemBeFilled(world, transported.stack)) - return PASS; - if (tank.isEmpty()) - return HOLD; - FluidStack fluid = getCurrentFluidInTank(); - int requiredAmountForItem = FillingBySpout.getRequiredAmountForItem(world, transported.stack, fluid.copy()); - if (requiredAmountForItem == -1) - return PASS; - if (requiredAmountForItem > fluid.getAmount()) - return HOLD; - - if (processingTicks == -1) { - processingTicks = FILLING_TIME; - notifyUpdate(); - return HOLD; - } - - // Process finished - ItemStack out = FillingBySpout.fillItem(world, requiredAmountForItem, transported.stack, fluid); - if (!out.isEmpty()) { - List outList = new ArrayList<>(); - TransportedItemStack held = null; - TransportedItemStack result = transported.copy(); - result.stack = out; - if (!transported.stack.isEmpty()) - held = transported.copy(); - outList.add(result); - handler.handleProcessingOnItem(transported, TransportedResult.convertToAndLeaveHeld(outList, held)); - } - - AllTriggers.triggerForNearbyPlayers(AllTriggers.SPOUT, world, pos, 5); - if (out.getItem() instanceof PotionItem && !PotionUtils.getEffectsFromStack(out) - .isEmpty()) - AllTriggers.triggerForNearbyPlayers(AllTriggers.SPOUT_POTION, world, pos, 5); - - tank.getPrimaryHandler() - .setFluid(fluid); - sendSplash = true; - notifyUpdate(); - return HOLD; - } - - private void processTicCastBlock() { - if (!IS_TIC_LOADED || CASTING_FLUID_HANDLER_CLASS == null) - return; - if (world == null) - return; - IFluidHandler localTank = this.tank.getCapability() - .orElse(null); - if (localTank == null) - return; - FluidStack fluid = getCurrentFluidInTank(); - if (fluid.getAmount() == 0) - return; - TileEntity te = world.getTileEntity(pos.down(2)); - if (te == null) - return; - IFluidHandler handler = getFluidHandler(pos.down(2), Direction.UP); - if (!CASTING_FLUID_HANDLER_CLASS.isInstance(handler)) - return; - if (handler.getTanks() != 1) - return; - if (!handler.isFluidValid(0, this.getCurrentFluidInTank())) - return; - FluidStack containedFluid = handler.getFluidInTank(0); - if (!(containedFluid.isEmpty() || containedFluid.isFluidEqual(fluid))) - return; - if (processingTicks == -1) { - processingTicks = FILLING_TIME; - notifyUpdate(); - return; - } - FluidStack drained = localTank.drain(144, IFluidHandler.FluidAction.SIMULATE); - if (!drained.isEmpty()) { - int filled = handler.fill(drained, IFluidHandler.FluidAction.SIMULATE); - shouldAnimate = filled > 0; - sendSplash = shouldAnimate; - if (processingTicks == 5) { - if (filled > 0) { - drained = localTank.drain(filled, IFluidHandler.FluidAction.EXECUTE); - if (!drained.isEmpty()) { - FluidStack fillStack = drained.copy(); - fillStack.setAmount(Math.min(drained.getAmount(), 6)); - drained.shrink(filled); - fillStack.setAmount(filled); - handler.fill(fillStack, IFluidHandler.FluidAction.EXECUTE); - } - } - tank.getPrimaryHandler() - .setFluid(fluid); - this.notifyUpdate(); - } - } - } - - private FluidStack getCurrentFluidInTank() { - return tank.getPrimaryHandler() - .getFluid(); - } - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - super.write(compound, clientPacket); - - compound.putInt("ProcessingTicks", processingTicks); - if (sendSplash && clientPacket) { - compound.putBoolean("Splash", true); - sendSplash = false; - } - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - processingTicks = compound.getInt("ProcessingTicks"); - if (!clientPacket) - return; - if (compound.contains("Splash")) - spawnSplash(tank.getPrimaryTank() - .getRenderedFluid()); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY && side != Direction.DOWN) - return tank.getCapability() - .cast(); - return super.getCapability(cap, side); - } - - public void tick() { - super.tick(); - processTicCastBlock(); - if (processingTicks >= 0) - processingTicks--; - if (processingTicks >= 8 && world.isRemote && shouldAnimate) - spawnProcessingParticles(tank.getPrimaryTank() - .getRenderedFluid()); - } - - protected void spawnProcessingParticles(FluidStack fluid) { - Vector3d vec = VecHelper.getCenterOf(pos); - vec = vec.subtract(0, 8 / 16f, 0); - IParticleData particle = FluidFX.getFluidParticle(fluid); - world.addOptionalParticle(particle, vec.x, vec.y, vec.z, 0, -.1f, 0); - } - - protected static int SPLASH_PARTICLE_COUNT = 20; - - protected void spawnSplash(FluidStack fluid) { - Vector3d vec = VecHelper.getCenterOf(pos); - vec = vec.subtract(0, 2 - 5 / 16f, 0); - IParticleData particle = FluidFX.getFluidParticle(fluid); - for (int i = 0; i < SPLASH_PARTICLE_COUNT; i++) { - Vector3d m = VecHelper.offsetRandomly(Vector3d.ZERO, world.rand, 0.125f); - m = new Vector3d(m.x, Math.abs(m.y), m.z); - world.addOptionalParticle(particle, vec.x, vec.y, vec.z, m.x, m.y, m.z); - } - } - - @Nullable - private IFluidHandler getFluidHandler(BlockPos pos, Direction direction) { - if (this.world == null) { - return null; - } else { - TileEntity te = this.world.getTileEntity(pos); - return te != null ? te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, direction) - .orElse(null) : null; - } - } - - public int getCorrectedProcessingTicks() { - if (shouldAnimate) - return processingTicks; - return -1; - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - return containedFluidTooltip(tooltip, isPlayerSneaking, getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/BasinFluidParticle.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/BasinFluidParticle.java deleted file mode 100644 index 64f392743..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/BasinFluidParticle.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.particle; - -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.processing.BasinTileEntity; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.fluids.FluidStack; - -public class BasinFluidParticle extends FluidStackParticle { - - BlockPos basinPos; - Vector3d targetPos; - Vector3d centerOfBasin; - float yOffset; - - public BasinFluidParticle(ClientWorld world, FluidStack fluid, double x, double y, double z, double vx, double vy, - double vz) { - super(world, fluid, x, y, z, vx, vy, vz); - particleGravity = 0; - motionX = 0; - motionY = 0; - motionZ = 0; - yOffset = world.rand.nextFloat() * 1 / 32f; - posY += yOffset; - particleScale = 0; - maxAge = 60; - Vector3d currentPos = new Vector3d(posX, posY, posZ); - basinPos = new BlockPos(currentPos); - centerOfBasin = VecHelper.getCenterOf(basinPos); - - if (vx != 0) { - maxAge = 20; - Vector3d centerOf = VecHelper.getCenterOf(basinPos); - Vector3d diff = currentPos.subtract(centerOf) - .mul(1, 0, 1) - .normalize() - .scale(.375); - targetPos = centerOf.add(diff); - prevPosX = posX = centerOfBasin.x; - prevPosZ = posZ = centerOfBasin.z; - } - } - - @Override - public void tick() { - super.tick(); - particleScale = targetPos != null ? Math.max(1 / 32f, ((1f * age) / maxAge) / 8) - : 1 / 8f * (1 - ((Math.abs(age - (maxAge / 2)) / (1f * maxAge)))); - - if (age % 2 == 0) { - if (!AllBlocks.BASIN.has(world.getBlockState(basinPos))) { - setExpired(); - return; - } - - TileEntity tileEntity = world.getTileEntity(basinPos); - if (tileEntity instanceof BasinTileEntity) { - float totalUnits = ((BasinTileEntity) tileEntity).getTotalFluidUnits(0); - if (totalUnits < 1) - totalUnits = 0; - float fluidLevel = MathHelper.clamp(totalUnits / 2000, 0, 1); - posY = 2 / 16f + basinPos.getY() + 12 / 16f * fluidLevel + yOffset; - } - - } - - if (targetPos != null) { - float progess = (1f * age) / maxAge; - Vector3d currentPos = centerOfBasin.add(targetPos.subtract(centerOfBasin) - .scale(progess)); - posX = currentPos.x; - posZ = currentPos.z; - } - } - - @Override - public void buildGeometry(IVertexBuilder vb, ActiveRenderInfo info, float pt) { - Quaternion rotation = info.getRotation(); - Quaternion prevRotation = new Quaternion(rotation); - rotation.set(1, 0, 0, 1); - rotation.normalize(); - super.buildGeometry(vb, info, pt); - rotation.set(0, 0, 0, 1); - rotation.multiply(prevRotation); - } - - @Override - protected boolean canEvaporate() { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java deleted file mode 100644 index 14c324e72..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidParticleData.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.particle; - -import java.util.Optional; - -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.AllParticleTypes; -import com.simibubi.create.content.contraptions.particle.ICustomParticleData; - -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.fluid.Fluids; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleType; -import net.minecraft.util.registry.Registry; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; - -public class FluidParticleData implements IParticleData, ICustomParticleData { - - private ParticleType type; - private FluidStack fluid; - - public FluidParticleData() {} - - @SuppressWarnings("unchecked") - public FluidParticleData(ParticleType type, FluidStack fluid) { - this.type = (ParticleType) type; - this.fluid = fluid; - } - - @Override - @OnlyIn(Dist.CLIENT) - public IParticleFactory getFactory() { - return (data, world, x, y, z, vx, vy, vz) -> FluidStackParticle.create(data.type, world, data.fluid, x, y, z, - vx, vy, vz); - } - - @Override - public ParticleType getType() { - return type; - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeFluidStack(fluid); - } - - @Override - public String getParameters() { - return ForgeRegistries.PARTICLE_TYPES.getKey(type) + " " + fluid.getFluid() - .getRegistryName(); - } - - public static final Codec FLUID_CODEC = RecordCodecBuilder.create(i -> i.group( - Registry.FLUID.fieldOf("FluidName") - .forGetter(FluidStack::getFluid), - Codec.INT.fieldOf("Amount") - .forGetter(FluidStack::getAmount), - CompoundNBT.CODEC.optionalFieldOf("tag") - .forGetter((fs) -> { - return Optional.ofNullable(fs.getTag()); - })) - .apply(i, (f, a, t) -> new FluidStack(f, a, t.orElse(null)))); - - public static final Codec CODEC = RecordCodecBuilder.create(i -> i - .group(FLUID_CODEC.fieldOf("fluid") - .forGetter(p -> p.fluid)) - .apply(i, fs -> new FluidParticleData(AllParticleTypes.FLUID_PARTICLE.get(), fs))); - - public static final Codec BASIN_CODEC = RecordCodecBuilder.create(i -> i - .group(FLUID_CODEC.fieldOf("fluid") - .forGetter(p -> p.fluid)) - .apply(i, fs -> new FluidParticleData(AllParticleTypes.BASIN_FLUID.get(), fs))); - - public static final Codec DRIP_CODEC = RecordCodecBuilder.create(i -> i - .group(FLUID_CODEC.fieldOf("fluid") - .forGetter(p -> p.fluid)) - .apply(i, fs -> new FluidParticleData(AllParticleTypes.FLUID_DRIP.get(), fs))); - - public static final IParticleData.IDeserializer DESERIALIZER = - new IParticleData.IDeserializer() { - - // TODO Fluid particles on command - public FluidParticleData deserialize(ParticleType particleTypeIn, StringReader reader) - throws CommandSyntaxException { - return new FluidParticleData(particleTypeIn, new FluidStack(Fluids.WATER, 1)); - } - - public FluidParticleData read(ParticleType particleTypeIn, PacketBuffer buffer) { - return new FluidParticleData(particleTypeIn, buffer.readFluidStack()); - } - }; - - @Override - public IDeserializer getDeserializer() { - return DESERIALIZER; - } - - @Override - public Codec getCodec(ParticleType type) { - if (type == AllParticleTypes.BASIN_FLUID.get()) - return BASIN_CODEC; - if (type == AllParticleTypes.FLUID_DRIP.get()) - return DRIP_CODEC; - return CODEC; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidStackParticle.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidStackParticle.java deleted file mode 100644 index 1119601b4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/particle/FluidStackParticle.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.particle; - -import com.simibubi.create.AllParticleTypes; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid; -import com.simibubi.create.foundation.utility.ColorHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.IParticleRenderType; -import net.minecraft.client.particle.SpriteTexturedParticle; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.particles.ParticleType; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.fluids.FluidStack; - -public class FluidStackParticle extends SpriteTexturedParticle { - private final float field_217587_G; - private final float field_217588_H; - private FluidStack fluid; - - public static FluidStackParticle create(ParticleType type, ClientWorld world, FluidStack fluid, double x, - double y, double z, double vx, double vy, double vz) { - if (type == AllParticleTypes.BASIN_FLUID.get()) - return new BasinFluidParticle(world, fluid, x, y, z, vx, vy, vz); - return new FluidStackParticle(world, fluid, x, y, z, vx, vy, vz); - } - - public FluidStackParticle(ClientWorld world, FluidStack fluid, double x, double y, double z, double vx, double vy, - double vz) { - super(world, x, y, z, vx, vy, vz); - this.fluid = fluid; - this.setSprite(Minecraft.getInstance() - .getSpriteAtlas(PlayerContainer.BLOCK_ATLAS_TEXTURE) - .apply(fluid.getFluid() - .getAttributes() - .getStillTexture())); - - this.particleGravity = 1.0F; - this.particleRed = 0.8F; - this.particleGreen = 0.8F; - this.particleBlue = 0.8F; - this.multiplyColor(fluid.getFluid() - .getAttributes() - .getColor(fluid)); - - this.motionX = vx; - this.motionY = vy; - this.motionZ = vz; - - this.particleScale /= 2.0F; - this.field_217587_G = this.rand.nextFloat() * 3.0F; - this.field_217588_H = this.rand.nextFloat() * 3.0F; - } - - @Override - protected int getBrightnessForRender(float p_189214_1_) { - int brightnessForRender = super.getBrightnessForRender(p_189214_1_); - int skyLight = brightnessForRender >> 20; - int blockLight = (brightnessForRender >> 4) & 0xf; - blockLight = Math.max(blockLight, fluid.getFluid() - .getAttributes() - .getLuminosity(fluid)); - return (skyLight << 20) | (blockLight << 4); - } - - protected void multiplyColor(int color) { - this.particleRed *= (float) (color >> 16 & 255) / 255.0F; - this.particleGreen *= (float) (color >> 8 & 255) / 255.0F; - this.particleBlue *= (float) (color & 255) / 255.0F; - } - - protected float getMinU() { - return this.sprite.getInterpolatedU((double) ((this.field_217587_G + 1.0F) / 4.0F * 16.0F)); - } - - protected float getMaxU() { - return this.sprite.getInterpolatedU((double) (this.field_217587_G / 4.0F * 16.0F)); - } - - protected float getMinV() { - return this.sprite.getInterpolatedV((double) (this.field_217588_H / 4.0F * 16.0F)); - } - - protected float getMaxV() { - return this.sprite.getInterpolatedV((double) ((this.field_217588_H + 1.0F) / 4.0F * 16.0F)); - } - - @Override - public void tick() { - super.tick(); - if (!canEvaporate()) - return; - if (onGround) - setExpired(); - if (!isExpired) - return; - if (!onGround && world.rand.nextFloat() < 1 / 8f) - return; - - Vector3d rgb = ColorHelper.getRGB(fluid.getFluid() - .getAttributes() - .getColor(fluid)); - world.addParticle(ParticleTypes.ENTITY_EFFECT, posX, posY, posZ, rgb.x, rgb.y, rgb.z); - } - - protected boolean canEvaporate() { - return fluid.getFluid() instanceof PotionFluid; - } - - @Override - public IParticleRenderType getRenderType() { - return IParticleRenderType.TERRAIN_SHEET; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java deleted file mode 100644 index dde62b1ff..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/AxisPipeBlock.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.Map; -import java.util.Optional; -import java.util.Random; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.fluids.FluidPropagator; -import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; -import com.simibubi.create.content.contraptions.wrench.IWrenchableWithBracket; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.RotatedPillarBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.network.DebugPacketSender; -import net.minecraft.state.BooleanProperty; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.TickPriority; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class AxisPipeBlock extends RotatedPillarBlock implements IWrenchableWithBracket, IAxisPipe { - - public AxisPipeBlock(Properties p_i48339_1_) { - super(p_i48339_1_); - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isRemote) - FluidPropagator.propagateChangedPipe(world, pos, state); - if (state != newState && !isMoving) - removeBracket(world, pos, true).ifPresent(stack -> Block.spawnAsEntity(world, pos, stack)); - if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) - world.removeTileEntity(pos); - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult hit) { - if (!AllBlocks.COPPER_CASING.isIn(player.getHeldItem(hand))) - return ActionResultType.PASS; - if (!world.isRemote) { - BlockState newState = AllBlocks.ENCASED_FLUID_PIPE.getDefaultState(); - for (Direction d : Iterate.directionsInAxis(getAxis(state))) - newState = newState.with(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true); - world.setBlockState(pos, newState); - } - AllTriggers.triggerFor(AllTriggers.CASING_PIPE, player); - return ActionResultType.SUCCESS; - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (world.isRemote) - return; - if (state != oldState) - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllBlocks.FLUID_PIPE.asStack(); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPacketSender.func_218806_a(world, pos); - Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); - if (d == null) - return; - if (!isOpenAt(state, d)) - return; - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - public static boolean isOpenAt(BlockState state, Direction d) { - return d.getAxis() == state.get(AXIS); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random r) { - FluidPropagator.propagateChangedPipe(world, pos, state); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.EIGHT_VOXEL_POLE.get(state.get(AXIS)); - } - - public BlockState toRegularPipe(IWorld world, BlockPos pos, BlockState state) { - Direction side = Direction.getFacingFromAxis(AxisDirection.POSITIVE, state.get(AXIS)); - Map facingToPropertyMap = FluidPipeBlock.FACING_TO_PROPERTY_MAP; - return AllBlocks.FLUID_PIPE.get() - .updateBlockState(AllBlocks.FLUID_PIPE.getDefaultState() - .with(facingToPropertyMap.get(side), true) - .with(facingToPropertyMap.get(side.getOpposite()), true), side, null, world, pos); - } - - @Override - public Axis getAxis(BlockState state) { - return state.get(AXIS); - } - - @Override - public Optional removeBracket(IBlockReader world, BlockPos pos, boolean inOnReplacedContext) { - BracketedTileEntityBehaviour behaviour = TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); - if (behaviour == null) - return Optional.empty(); - BlockState bracket = behaviour.getBracket(); - behaviour.removeBracket(inOnReplacedContext); - if (bracket == Blocks.AIR.getDefaultState()) - return Optional.empty(); - return Optional.of(new ItemStack(bracket.getBlock())); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlock.java deleted file mode 100644 index 6932c02fb..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlock.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.Optional; - -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; -import com.simibubi.create.content.contraptions.fluids.FluidPropagator; -import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock; -import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; -import com.simibubi.create.foundation.block.ProperDirectionalBlock; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.IStringSerializable; - -public class BracketBlock extends ProperDirectionalBlock { - - public static final BooleanProperty AXIS_ALONG_FIRST_COORDINATE = - DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE; - public static final EnumProperty TYPE = EnumProperty.create("type", BracketType.class); - - public static enum BracketType implements IStringSerializable { - PIPE, COG, SHAFT; - - @Override - public String getString() { - return Lang.asId(name()); - } - - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(AXIS_ALONG_FIRST_COORDINATE) - .add(TYPE)); - } - - public BracketBlock(Properties p_i48415_1_) { - super(p_i48415_1_); - } - - public Optional getSuitableBracket(BlockState blockState, Direction direction) { - if (blockState.getBlock() instanceof AbstractShaftBlock) - return getSuitableBracket(blockState.get(RotatedPillarKineticBlock.AXIS), direction, - blockState.getBlock() instanceof CogWheelBlock ? BracketType.COG : BracketType.SHAFT); - return getSuitableBracket(FluidPropagator.getStraightPipeAxis(blockState), direction, BracketType.PIPE); - } - - private Optional getSuitableBracket(Axis targetBlockAxis, Direction direction, BracketType type) { - Axis axis = direction.getAxis(); - if (targetBlockAxis == null || targetBlockAxis == axis) - return Optional.empty(); - - boolean alongFirst = axis != Axis.Z ? targetBlockAxis == Axis.Z : targetBlockAxis == Axis.Y; - return Optional.of(getDefaultState().with(TYPE, type) - .with(FACING, direction) - .with(AXIS_ALONG_FIRST_COORDINATE, !alongFirst)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java deleted file mode 100644 index d7aaf70b8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketBlockItem.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.Optional; - -import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class BracketBlockItem extends BlockItem { - - public BracketBlockItem(Block p_i48527_1_, Properties p_i48527_2_) { - super(p_i48527_1_, p_i48527_2_); - } - - @Override - public ActionResultType onItemUse(ItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - BlockState state = world.getBlockState(pos); - BracketBlock bracketBlock = getBracketBlock(); - PlayerEntity player = context.getPlayer(); - - BracketedTileEntityBehaviour behaviour = TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); - - if (behaviour == null) - return ActionResultType.FAIL; - if (!behaviour.canHaveBracket()) - return ActionResultType.FAIL; - if (world.isRemote) - return ActionResultType.SUCCESS; - - Optional suitableBracket = bracketBlock.getSuitableBracket(state, context.getFace()); - if (!suitableBracket.isPresent() && player != null) - suitableBracket = - bracketBlock.getSuitableBracket(state, Direction.getFacingDirections(player)[0].getOpposite()); - if (!suitableBracket.isPresent()) - return ActionResultType.SUCCESS; - - BlockState bracket = behaviour.getBracket(); - behaviour.applyBracket(suitableBracket.get()); - - if (!world.isRemote && player != null) - behaviour.triggerAdvancements(world, player, state); - - if (player == null || !player.isCreative()) { - context.getItem() - .shrink(1); - if (bracket != Blocks.AIR.getDefaultState()) { - ItemStack returnedStack = new ItemStack(bracket.getBlock()); - if (player == null) - Block.spawnAsEntity(world, pos, returnedStack); - else - player.inventory.placeItemBackInInventory(world, returnedStack); - } - } - return ActionResultType.SUCCESS; - } - - private BracketBlock getBracketBlock() { - return (BracketBlock) getBlock(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketGenerator.java deleted file mode 100644 index 456ee4766..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/BracketGenerator.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import com.simibubi.create.foundation.data.DirectionalAxisBlockStateGen; -import com.tterrag.registrate.builders.ItemBuilder; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.util.nullness.NonNullFunction; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItem; -import net.minecraftforge.client.model.generators.ModelFile; - -public class BracketGenerator extends DirectionalAxisBlockStateGen { - - private String material; - - public BracketGenerator(String material) { - this.material = material; - } - - @Override - public String getModelPrefix(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - return ""; - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - String type = state.get(BracketBlock.TYPE) - .getString(); - boolean vertical = state.get(BracketBlock.FACING) - .getAxis() - .isVertical(); - - String path = "block/bracket/" + type + "/" + (vertical ? "ground" : "wall"); - - return prov.models() - .withExistingParent(path + "_" + material, prov.modLoc(path)) - .texture("bracket", prov.modLoc("block/bracket_" + material)) - .texture("plate", prov.modLoc("block/bracket_plate_" + material)); - } - - public static NonNullFunction, P> itemModel(String material) { - return b -> b.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/bracket/item")) - .texture("bracket", p.modLoc("block/bracket_" + material)) - .texture("plate", p.modLoc("block/bracket_plate_" + material))) - .build(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java deleted file mode 100644 index fe75a7c28..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/EncasedPipeBlock.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import static net.minecraft.state.properties.BlockStateProperties.DOWN; -import static net.minecraft.state.properties.BlockStateProperties.EAST; -import static net.minecraft.state.properties.BlockStateProperties.NORTH; -import static net.minecraft.state.properties.BlockStateProperties.SOUTH; -import static net.minecraft.state.properties.BlockStateProperties.UP; -import static net.minecraft.state.properties.BlockStateProperties.WEST; - -import java.util.Map; -import java.util.Random; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.fluids.FluidPropagator; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.SixWayBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.network.DebugPacketSender; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.TickPriority; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class EncasedPipeBlock extends Block implements IWrenchable, ISpecialBlockItemRequirement { - - public static final Map FACING_TO_PROPERTY_MAP = SixWayBlock.FACING_TO_PROPERTY_MAP; - - public EncasedPipeBlock(Properties p_i48339_1_) { - super(p_i48339_1_); - setDefaultState(getDefaultState().with(NORTH, false) - .with(SOUTH, false) - .with(DOWN, false) - .with(UP, false) - .with(WEST, false) - .with(EAST, false)); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN); - super.fillStateContainer(builder); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isRemote) - FluidPropagator.propagateChangedPipe(world, pos, state); - if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) - world.removeTileEntity(pos); - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (!world.isRemote && state != oldState) - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllBlocks.FLUID_PIPE.asStack(); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPacketSender.func_218806_a(world, pos); - Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); - if (d == null) - return; - if (!state.get(FACING_TO_PROPERTY_MAP.get(d))) - return; - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random r) { - FluidPropagator.propagateChangedPipe(world, pos, state); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ENCASED_FLUID_PIPE.create(); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - - if (world.isRemote) - return ActionResultType.SUCCESS; - - context.getWorld() - .playEvent(2001, context.getPos(), Block.getStateId(state)); - BlockState equivalentPipe = transferSixWayProperties(state, AllBlocks.FLUID_PIPE.getDefaultState()); - - Direction firstFound = Direction.UP; - for (Direction d : Iterate.directions) - if (state.get(FACING_TO_PROPERTY_MAP.get(d))) { - firstFound = d; - break; - } - - world.setBlockState(pos, AllBlocks.FLUID_PIPE.get() - .updateBlockState(equivalentPipe, firstFound, null, world, pos)); - return ActionResultType.SUCCESS; - } - - public static BlockState transferSixWayProperties(BlockState from, BlockState to) { - for (Direction d : Iterate.directions) { - BooleanProperty property = FACING_TO_PROPERTY_MAP.get(d); - to = to.with(property, from.get(property)); - } - return to; - } - - @Override - public ItemRequirement getRequiredItems(BlockState state, TileEntity te) { - return ItemRequirement.of(AllBlocks.FLUID_PIPE.getDefaultState(), te); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java deleted file mode 100644 index 3cf15b305..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeBlock.java +++ /dev/null @@ -1,295 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.Arrays; -import java.util.Optional; -import java.util.Random; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.fluids.FluidPropagator; -import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; -import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; -import com.simibubi.create.content.contraptions.wrench.IWrenchableWithBracket; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.block.SixWayBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.network.DebugPacketSender; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.TickPriority; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class FluidPipeBlock extends SixWayBlock implements IWaterLoggable, IWrenchableWithBracket { - - public FluidPipeBlock(Properties properties) { - super(4 / 16f, properties); - this.setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (tryRemoveBracket(context)) - return ActionResultType.SUCCESS; - - World world = context.getWorld(); - BlockPos pos = context.getPos(); - Axis axis = getAxis(world, pos, state); - if (axis == null) - return ActionResultType.PASS; - if (context.getFace() - .getAxis() == axis) - return ActionResultType.PASS; - if (!world.isRemote) - world.setBlockState(pos, AllBlocks.GLASS_FLUID_PIPE.getDefaultState() - .with(GlassFluidPipeBlock.AXIS, axis).with(BlockStateProperties.WATERLOGGED, state.get(BlockStateProperties.WATERLOGGED))); - return ActionResultType.SUCCESS; - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult hit) { - if (!AllBlocks.COPPER_CASING.isIn(player.getHeldItem(hand))) - return ActionResultType.PASS; - AllTriggers.triggerFor(AllTriggers.CASING_PIPE, player); - if (!world.isRemote) - world.setBlockState(pos, - EncasedPipeBlock.transferSixWayProperties(state, AllBlocks.ENCASED_FLUID_PIPE.getDefaultState())); - return ActionResultType.SUCCESS; - } - - @Nullable - private Axis getAxis(IBlockReader world, BlockPos pos, BlockState state) { - return FluidPropagator.getStraightPipeAxis(state); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.FLUID_PIPE.create(); - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isRemote) - FluidPropagator.propagateChangedPipe(world, pos, state); - if (state != newState && !isMoving) - removeBracket(world, pos, true).ifPresent(stack -> Block.spawnAsEntity(world, pos, stack)); - if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) - world.removeTileEntity(pos); - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (world.isRemote) - return; - if (state != oldState) - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPacketSender.func_218806_a(world, pos); - Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); - if (d == null) - return; - if (!isOpenAt(state, d)) - return; - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random r) { - FluidPropagator.propagateChangedPipe(world, pos, state); - } - - public static boolean isPipe(BlockState state) { - return state.getBlock() instanceof FluidPipeBlock; - } - - public static boolean canConnectTo(IBlockDisplayReader world, BlockPos neighbourPos, BlockState neighbour, Direction direction) { - if (FluidPropagator.hasFluidCapability(world, neighbourPos, direction.getOpposite())) - return true; - if (neighbour.contains(BlockStateProperties.HONEY_LEVEL)) - return true; - FluidTransportBehaviour transport = TileEntityBehaviour.get(world, neighbourPos, FluidTransportBehaviour.TYPE); - BracketedTileEntityBehaviour bracket = TileEntityBehaviour.get(world, neighbourPos, BracketedTileEntityBehaviour.TYPE); - if (isPipe(neighbour)) - return bracket == null || !bracket.isBracketPresent() - || FluidPropagator.getStraightPipeAxis(neighbour) == direction.getAxis(); - if (transport == null) - return false; - return transport.canHaveFlowToward(neighbour, direction.getOpposite()); - } - - public static boolean shouldDrawRim(IBlockDisplayReader world, BlockPos pos, BlockState state, - Direction direction) { - BlockPos offsetPos = pos.offset(direction); - BlockState facingState = world.getBlockState(offsetPos); - if (!isPipe(facingState)) - return true; - if (!canConnectTo(world, offsetPos, facingState, direction)) - return true; - if (!isCornerOrEndPipe(world, pos, state)) - return false; - if (FluidPropagator.getStraightPipeAxis(facingState) != null) - return true; - if (!shouldDrawCasing(world, pos, state) && shouldDrawCasing(world, offsetPos, facingState)) - return true; - if (isCornerOrEndPipe(world, offsetPos, facingState)) - return direction.getAxisDirection() == AxisDirection.POSITIVE; - return true; - } - - public static boolean isOpenAt(BlockState state, Direction direction) { - return state.get(FACING_TO_PROPERTY_MAP.get(direction)); - } - - public static boolean isCornerOrEndPipe(IBlockDisplayReader world, BlockPos pos, BlockState state) { - return isPipe(state) && FluidPropagator.getStraightPipeAxis(state) == null - && !shouldDrawCasing(world, pos, state); - } - - public static boolean shouldDrawCasing(IBlockDisplayReader world, BlockPos pos, BlockState state) { - if (!isPipe(state)) - return false; - for (Axis axis : Iterate.axes) { - int connections = 0; - for (Direction direction : Iterate.directions) - if (direction.getAxis() != axis && isOpenAt(state, direction)) - connections++; - if (connections > 2) - return true; - } - return false; - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(NORTH, EAST, SOUTH, WEST, UP, DOWN, BlockStateProperties.WATERLOGGED); - super.fillStateContainer(builder); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - FluidState FluidState = context.getWorld() - .getFluidState(context.getPos()); - return updateBlockState(getDefaultState(), context.getNearestLookingDirection(), null, context.getWorld(), - context.getPos()).with(BlockStateProperties.WATERLOGGED, - Boolean.valueOf(FluidState.getFluid() == Fluids.WATER)); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, - IWorld world, BlockPos pos, BlockPos neighbourPos) { - if (state.get(BlockStateProperties.WATERLOGGED)) - world.getPendingFluidTicks() - .scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); - if (isOpenAt(state, direction) && neighbourState.contains(BlockStateProperties.WATERLOGGED)) - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - return updateBlockState(state, direction, direction.getOpposite(), world, pos); - } - - public BlockState updateBlockState(BlockState state, Direction preferredDirection, @Nullable Direction ignore, - IBlockDisplayReader world, BlockPos pos) { - - BracketedTileEntityBehaviour bracket = TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); - if (bracket != null && bracket.isBracketPresent()) - return state; - - BlockState prevState = state; - int prevStateSides = (int) Arrays.stream(Iterate.directions) - .map(FACING_TO_PROPERTY_MAP::get) - .filter(prevState::get) - .count(); - - // Update sides that are not ignored - for (Direction d : Iterate.directions) - if (d != ignore) { - boolean shouldConnect = canConnectTo(world, pos.offset(d), world.getBlockState(pos.offset(d)), d); - state = state.with(FACING_TO_PROPERTY_MAP.get(d), shouldConnect); - } - - // See if it has enough connections - Direction connectedDirection = null; - for (Direction d : Iterate.directions) { - if (isOpenAt(state, d)) { - if (connectedDirection != null) - return state; - connectedDirection = d; - } - } - - // Add opposite end if only one connection - if (connectedDirection != null) - return state.with(FACING_TO_PROPERTY_MAP.get(connectedDirection.getOpposite()), true); - - // If we can't connect to anything and weren't connected before, do nothing - if (prevStateSides == 2) - return prevState; - - // Use preferred - return state.with(FACING_TO_PROPERTY_MAP.get(preferredDirection), true) - .with(FACING_TO_PROPERTY_MAP.get(preferredDirection.getOpposite()), true); - } - - @Override - public FluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) - : Fluids.EMPTY.getDefaultState(); - } - - @Override - public Optional removeBracket(IBlockReader world, BlockPos pos, boolean inOnReplacedContext) { - BracketedTileEntityBehaviour behaviour = - BracketedTileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); - if (behaviour == null) - return Optional.empty(); - BlockState bracket = behaviour.getBracket(); - behaviour.removeBracket(inOnReplacedContext); - if (bracket == Blocks.AIR.getDefaultState()) - return Optional.empty(); - return Optional.of(new ItemStack(bracket.getBlock())); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java deleted file mode 100644 index dbcbb66f1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidPipeTileEntity.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.List; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; -import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; - -public class FluidPipeTileEntity extends SmartTileEntity { - - public FluidPipeTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new StandardPipeFluidTransportBehaviour(this)); - behaviours.add(new BracketedTileEntityBehaviour(this, this::canHaveBracket) - .withTrigger(state -> AllTriggers.BRACKET_APPLY_TRIGGER.constructTriggerFor(state.getBlock()))); - } - - private boolean canHaveBracket(BlockState state) { - return !(state.getBlock() instanceof EncasedPipeBlock); - } - - class StandardPipeFluidTransportBehaviour extends FluidTransportBehaviour { - - public StandardPipeFluidTransportBehaviour(SmartTileEntity te) { - super(te); - } - - @Override - public boolean canHaveFlowToward(BlockState state, Direction direction) { - return (FluidPipeBlock.isPipe(state) || state.getBlock() instanceof EncasedPipeBlock) - && state.get(FluidPipeBlock.FACING_TO_PROPERTY_MAP.get(direction)); - } - - @Override - public AttachmentTypes getRenderedRimAttachment(IBlockDisplayReader world, BlockPos pos, BlockState state, - Direction direction) { - AttachmentTypes attachment = super.getRenderedRimAttachment(world, pos, state, direction); - - if (attachment == AttachmentTypes.RIM && AllBlocks.ENCASED_FLUID_PIPE.has(state)) - return AttachmentTypes.RIM; - - BlockPos offsetPos = pos.offset(direction); - if (!FluidPipeBlock.isPipe(world.getBlockState(offsetPos))) { - FluidTransportBehaviour pipeBehaviour = - TileEntityBehaviour.get(world, offsetPos, FluidTransportBehaviour.TYPE); - if (pipeBehaviour != null - && pipeBehaviour.canHaveFlowToward(world.getBlockState(offsetPos), direction.getOpposite())) - return AttachmentTypes.NONE; - } - - if (attachment == AttachmentTypes.RIM && !FluidPipeBlock.shouldDrawRim(world, pos, state, direction)) - return AttachmentTypes.NONE; - return attachment; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveBlock.java deleted file mode 100644 index 051093f80..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveBlock.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.Random; - -import javax.annotation.Nonnull; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.fluids.FluidPropagator; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.network.DebugPacketSender; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.TickPriority; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class FluidValveBlock extends DirectionalAxisKineticBlock implements IAxisPipe { - - public static final BooleanProperty ENABLED = BooleanProperty.create("enabled"); - - public FluidValveBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(ENABLED, false)); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.FLUID_VALVE.get(getPipeAxis(state)); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(ENABLED)); - } - - @Override - protected boolean prefersConnectionTo(IWorldReader reader, BlockPos pos, Direction facing, boolean shaftAxis) { - if (!shaftAxis) { - BlockPos offset = pos.offset(facing); - BlockState blockState = reader.getBlockState(offset); - return FluidPipeBlock.canConnectTo(reader, offset, blockState, facing); - } - return super.prefersConnectionTo(reader, pos, facing, shaftAxis); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.FLUID_VALVE.create(); - } - - @Nonnull - public static Axis getPipeAxis(BlockState state) { - if (!(state.getBlock() instanceof FluidValveBlock)) - throw new IllegalStateException("Provided BlockState is for a different block."); - Direction facing = state.get(FACING); - boolean alongFirst = !state.get(AXIS_ALONG_FIRST_COORDINATE); - for (Axis axis : Iterate.axes) { - if (axis == facing.getAxis()) - continue; - if (!alongFirst) { - alongFirst = true; - continue; - } - return axis; - } - throw new IllegalStateException("Impossible axis."); - } - - @Override - public Axis getAxis(BlockState state) { - return getPipeAxis(state); - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isRemote) - FluidPropagator.propagateChangedPipe(world, pos, state); - if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) - world.removeTileEntity(pos); - } - - @Override - public boolean isValidPosition(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { - return true; - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (world.isRemote) - return; - if (state != oldState) - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPacketSender.func_218806_a(world, pos); - Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); - if (d == null) - return; - if (!isOpenAt(state, d)) - return; - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - public static boolean isOpenAt(BlockState state, Direction d) { - return d.getAxis() == getPipeAxis(state); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random r) { - FluidPropagator.propagateChangedPipe(world, pos, state); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java deleted file mode 100644 index 33632b40b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveInstance.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; - -public class FluidValveInstance extends ShaftInstance implements IDynamicInstance { - - protected ModelData pointer; - - protected final double xRot; - protected final double yRot; - protected final int pointerRotationOffset; - - public FluidValveInstance(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); - - Direction facing = blockState.get(FluidValveBlock.FACING); - - yRot = AngleHelper.horizontalAngle(facing); - xRot = facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90; - - Direction.Axis pipeAxis = FluidValveBlock.getPipeAxis(blockState); - Direction.Axis shaftAxis = KineticTileEntityRenderer.getRotationAxisOf(tile); - - boolean twist = pipeAxis.isHorizontal() && shaftAxis == Direction.Axis.Z || pipeAxis.isVertical(); - pointerRotationOffset = twist ? 90 : 0; - - pointer = materialManager.getTransformMaterial().getModel(AllBlockPartials.FLUID_VALVE_POINTER, blockState).createInstance(); - - transformPointer((FluidValveTileEntity) tile); - } - - @Override - public void beginFrame() { - - FluidValveTileEntity valve = (FluidValveTileEntity) tile; - - if (valve.pointer.settled()) return; - - transformPointer(valve); - } - - private void transformPointer(FluidValveTileEntity valve) { - float pointerRotation = MathHelper.lerp(valve.pointer.getValue(AnimationTickHolder.getPartialTicks()), 0, -90); - - MatrixStack ms = new MatrixStack(); - MatrixStacker.of(ms) - .translate(getInstancePosition()) - .centre() - .rotateY(yRot) - .rotateX(xRot) - .rotateY(pointerRotationOffset + pointerRotation) - .unCentre(); - - pointer.setTransform(ms); - } - - @Override - public void updateLight() { - super.updateLight(); - relight(pos, pointer); - } - - @Override - public void remove() { - super.remove(); - pointer.delete(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java deleted file mode 100644 index f2f6306cd..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveRenderer.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.MathHelper; - -public class FluidValveRenderer extends KineticTileEntityRenderer { - - public FluidValveRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - BlockState blockState = te.getBlockState(); - SuperByteBuffer pointer = PartialBufferer.get(AllBlockPartials.FLUID_VALVE_POINTER, blockState); - Direction facing = blockState.get(FluidValveBlock.FACING); - - if (!(te instanceof FluidValveTileEntity)) - return; - FluidValveTileEntity valve = (FluidValveTileEntity) te; - float pointerRotation = MathHelper.lerp(valve.pointer.getValue(partialTicks), 0, -90); - Axis pipeAxis = FluidValveBlock.getPipeAxis(blockState); - Axis shaftAxis = KineticTileEntityRenderer.getRotationAxisOf(te); - - int pointerRotationOffset = 0; - if (pipeAxis.isHorizontal() && shaftAxis == Axis.Z || pipeAxis.isVertical()) - pointerRotationOffset = 90; - - MatrixStacker.of(ms) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(facing == Direction.UP ? 0 : facing == Direction.DOWN ? 180 : 90) - .rotateY(pointerRotationOffset + pointerRotation) - .unCentre(); - - pointer.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - - @Override - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return KineticTileEntityRenderer.shaft(KineticTileEntityRenderer.getRotationAxisOf(te)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java deleted file mode 100644 index 8125ea16f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/FluidValveTileEntity.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.List; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.fluids.pipes.StraightPipeTileEntity.StraightPipeFluidTransportBehaviour; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.fluids.FluidStack; - -public class FluidValveTileEntity extends KineticTileEntity { - - LerpedFloat pointer; - - public FluidValveTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - pointer = LerpedFloat.linear() - .startWithValue(0) - .chase(0, 0, Chaser.LINEAR); - } - - @Override - public void onSpeedChanged(float previousSpeed) { - super.onSpeedChanged(previousSpeed); - float speed = getSpeed(); - pointer.chase(speed > 0 ? 1 : 0, getChaseSpeed(), Chaser.LINEAR); - sendData(); - } - - @Override - public void tick() { - super.tick(); - pointer.tickChaser(); - - if (world.isRemote) - return; - - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof FluidValveBlock)) - return; - boolean stateOpen = blockState.get(FluidValveBlock.ENABLED); - - if (stateOpen && pointer.getValue() == 0) { - switchToBlockState(world, pos, blockState.with(FluidValveBlock.ENABLED, false)); - return; - } - if (!stateOpen && pointer.getValue() == 1) { - switchToBlockState(world, pos, blockState.with(FluidValveBlock.ENABLED, true)); - return; - } - } - - private float getChaseSpeed() { - return MathHelper.clamp(Math.abs(getSpeed()) / 16 / 20, 0, 1); - } - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - super.write(compound, clientPacket); - compound.put("Pointer", pointer.writeNBT()); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - pointer.readNBT(compound.getCompound("Pointer"), clientPacket); - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new ValvePipeBehaviour(this)); - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - - class ValvePipeBehaviour extends StraightPipeFluidTransportBehaviour { - - public ValvePipeBehaviour(SmartTileEntity te) { - super(te); - } - - @Override - public boolean canHaveFlowToward(BlockState state, Direction direction) { - return FluidValveBlock.getPipeAxis(state) == direction.getAxis(); - } - - @Override - public boolean canPullFluidFrom(FluidStack fluid, BlockState state, Direction direction) { - if (state.contains(FluidValveBlock.ENABLED) && state.get(FluidValveBlock.ENABLED)) - return super.canPullFluidFrom(fluid, state, direction); - return false; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/GlassFluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/GlassFluidPipeBlock.java deleted file mode 100644 index fffa566df..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/GlassFluidPipeBlock.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class GlassFluidPipeBlock extends AxisPipeBlock implements IWaterLoggable, ISpecialBlockItemRequirement { - - public static final BooleanProperty ALT = BooleanProperty.create("alt"); - - public GlassFluidPipeBlock(Properties p_i48339_1_) { - super(p_i48339_1_); - setDefaultState(getDefaultState().with(ALT, false).with(BlockStateProperties.WATERLOGGED, false)); - } - - @Override - protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(ALT, BlockStateProperties.WATERLOGGED)); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.GLASS_FLUID_PIPE.create(); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (tryRemoveBracket(context)) - return ActionResultType.SUCCESS; - BlockState newState; - World world = context.getWorld(); - BlockPos pos = context.getPos(); - newState = toRegularPipe(world, pos, state).with(BlockStateProperties.WATERLOGGED, state.get(BlockStateProperties.WATERLOGGED)); - world.setBlockState(pos, newState, 3); - return ActionResultType.SUCCESS; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - FluidState ifluidstate = context.getWorld() - .getFluidState(context.getPos()); - BlockState state = super.getStateForPlacement(context); - return state == null ? null : state.with(BlockStateProperties.WATERLOGGED, - ifluidstate.getFluid() == Fluids.WATER); - } - - @Override - public FluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) - : Fluids.EMPTY.getDefaultState(); - } - - @Override - public ItemRequirement getRequiredItems(BlockState state, TileEntity te) { - return ItemRequirement.of(AllBlocks.FLUID_PIPE.getDefaultState(), te); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/IAxisPipe.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/IAxisPipe.java deleted file mode 100644 index 2d5242a03..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/IAxisPipe.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import javax.annotation.Nullable; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction.Axis; - -public interface IAxisPipe { - - @Nullable - public static Axis getAxisOf(BlockState state) { - if (state.getBlock() instanceof IAxisPipe) - return ((IAxisPipe) state.getBlock()).getAxis(state); - return null; - } - - public Axis getAxis(BlockState state); - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeBlock.java deleted file mode 100644 index 2fcd7aa9a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeBlock.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.Random; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.fluids.FluidPropagator; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.VoxelShaper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalFaceBlock; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.network.DebugPacketSender; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.AttachFace; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.TickPriority; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class SmartFluidPipeBlock extends HorizontalFaceBlock implements IAxisPipe { - - public SmartFluidPipeBlock(Properties p_i48339_1_) { - super(p_i48339_1_); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(FACE) - .add(HORIZONTAL_FACING); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext ctx) { - BlockState stateForPlacement = super.getStateForPlacement(ctx); - Axis prefferedAxis = null; - BlockPos pos = ctx.getPos(); - World world = ctx.getWorld(); - for (Direction side : Iterate.directions) { - if (!prefersConnectionTo(world, pos, side)) - continue; - if (prefferedAxis != null && prefferedAxis != side.getAxis()) { - prefferedAxis = null; - break; - } - prefferedAxis = side.getAxis(); - } - - if (prefferedAxis == Axis.Y) - stateForPlacement = stateForPlacement.with(FACE, AttachFace.WALL) - .with(HORIZONTAL_FACING, stateForPlacement.get(HORIZONTAL_FACING) - .getOpposite()); - else if (prefferedAxis != null) { - if (stateForPlacement.get(FACE) == AttachFace.WALL) - stateForPlacement = stateForPlacement.with(FACE, AttachFace.FLOOR); - for (Direction direction : ctx.getNearestLookingDirections()) { - if (direction.getAxis() != prefferedAxis) - continue; - stateForPlacement = stateForPlacement.with(HORIZONTAL_FACING, direction.getOpposite()); - } - } - - return stateForPlacement; - } - - protected boolean prefersConnectionTo(IWorldReader reader, BlockPos pos, Direction facing) { - BlockPos offset = pos.offset(facing); - BlockState blockState = reader.getBlockState(offset); - return FluidPipeBlock.canConnectTo(reader, offset, blockState, facing); - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - boolean blockTypeChanged = state.getBlock() != newState.getBlock(); - if (blockTypeChanged && !world.isRemote) - FluidPropagator.propagateChangedPipe(world, pos, state); - if (state.hasTileEntity() && (blockTypeChanged || !newState.hasTileEntity())) - world.removeTileEntity(pos); - } - - @Override - public boolean isValidPosition(BlockState p_196260_1_, IWorldReader p_196260_2_, BlockPos p_196260_3_) { - return true; - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean isMoving) { - if (world.isRemote) - return; - if (state != oldState) - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block otherBlock, BlockPos neighborPos, - boolean isMoving) { - DebugPacketSender.func_218806_a(world, pos); - Direction d = FluidPropagator.validateNeighbourChange(state, world, pos, otherBlock, neighborPos, isMoving); - if (d == null) - return; - if (!isOpenAt(state, d)) - return; - world.getPendingBlockTicks() - .scheduleTick(pos, this, 1, TickPriority.HIGH); - } - - public static boolean isOpenAt(BlockState state, Direction d) { - return d.getAxis() == getPipeAxis(state); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random r) { - FluidPropagator.propagateChangedPipe(world, pos, state); - } - - protected static Axis getPipeAxis(BlockState state) { - return state.get(FACE) == AttachFace.WALL ? Axis.Y - : state.get(HORIZONTAL_FACING) - .getAxis(); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.SMART_FLUID_PIPE.create(); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - AttachFace face = state.get(FACE); - VoxelShaper shape = face == AttachFace.FLOOR ? AllShapes.SMART_FLUID_PIPE_FLOOR - : face == AttachFace.CEILING ? AllShapes.SMART_FLUID_PIPE_CEILING : AllShapes.SMART_FLUID_PIPE_WALL; - return shape.get(state.get(HORIZONTAL_FACING)); - } - - @Override - public Axis getAxis(BlockState state) { - return getPipeAxis(state); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeGenerator.java deleted file mode 100644 index 0b2467ab0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeGenerator.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import com.simibubi.create.foundation.data.AssetLookup; -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.state.properties.AttachFace; -import net.minecraftforge.client.model.generators.ModelFile; - -public class SmartFluidPipeGenerator extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - AttachFace attachFace = state.get(SmartFluidPipeBlock.FACE); - return attachFace == AttachFace.CEILING ? 180 : attachFace == AttachFace.FLOOR ? 0 : 270; - } - - @Override - protected int getYRotation(BlockState state) { - AttachFace attachFace = state.get(SmartFluidPipeBlock.FACE); - int angle = horizontalAngle(state.get(SmartFluidPipeBlock.HORIZONTAL_FACING)); - return angle + (attachFace == AttachFace.CEILING ? 180 : 0); - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - return AssetLookup.partialBaseModel(ctx, prov); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java deleted file mode 100644 index 8b9544464..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/SmartFluidPipeTileEntity.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.fluids.FluidPropagator; -import com.simibubi.create.content.contraptions.fluids.pipes.StraightPipeTileEntity.StraightPipeFluidTransportBehaviour; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.state.properties.AttachFace; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.fluids.FluidStack; - -public class SmartFluidPipeTileEntity extends SmartTileEntity { - - private FilteringBehaviour filter; - - public SmartFluidPipeTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new SmartPipeBehaviour(this)); - behaviours.add(filter = new FilteringBehaviour(this, new SmartPipeFilterSlot()).forFluids() - .withCallback(this::onFilterChanged)); - } - - private void onFilterChanged(ItemStack newFilter) { - if (world.isRemote) - return; - FluidPropagator.propagateChangedPipe(world, pos, getBlockState()); - } - - class SmartPipeBehaviour extends StraightPipeFluidTransportBehaviour { - - public SmartPipeBehaviour(SmartTileEntity te) { - super(te); - } - - @Override - public boolean canPullFluidFrom(FluidStack fluid, BlockState state, Direction direction) { - if (fluid.isEmpty() || filter != null && filter.test(fluid)) - return super.canPullFluidFrom(fluid, state, direction); - return false; - } - - @Override - public boolean canHaveFlowToward(BlockState state, Direction direction) { - return state.getBlock() instanceof SmartFluidPipeBlock - && SmartFluidPipeBlock.getPipeAxis(state) == direction.getAxis(); - } - - } - - class SmartPipeFilterSlot extends ValueBoxTransform { - - @Override - protected Vector3d getLocalOffset(BlockState state) { - AttachFace face = state.get(SmartFluidPipeBlock.FACE); - float y = face == AttachFace.CEILING ? 0.3f : face == AttachFace.WALL ? 11.3f : 15.3f; - float z = face == AttachFace.CEILING ? 4.6f : face == AttachFace.WALL ? 0.6f : 4.6f; - return VecHelper.rotateCentered(VecHelper.voxelSpace(8, y, z), angleY(state), Axis.Y); - } - - @Override - protected void rotate(BlockState state, MatrixStack ms) { - AttachFace face = state.get(SmartFluidPipeBlock.FACE); - MatrixStacker.of(ms) - .rotateY(angleY(state)) - .rotateX(face == AttachFace.CEILING ? -45 : 45); - } - - protected float angleY(BlockState state) { - AttachFace face = state.get(SmartFluidPipeBlock.FACE); - float horizontalAngle = AngleHelper.horizontalAngle(state.get(SmartFluidPipeBlock.HORIZONTAL_FACING)); - if (face == AttachFace.WALL) - horizontalAngle += 180; - return horizontalAngle; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java deleted file mode 100644 index 6b886ede3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/StraightPipeTileEntity.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import java.util.List; - -import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; -import com.simibubi.create.content.contraptions.relays.elementary.BracketedTileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; - -public class StraightPipeTileEntity extends SmartTileEntity { - - public StraightPipeTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new StraightPipeFluidTransportBehaviour(this)); - behaviours.add(new BracketedTileEntityBehaviour(this)); - } - - static class StraightPipeFluidTransportBehaviour extends FluidTransportBehaviour { - - public StraightPipeFluidTransportBehaviour(SmartTileEntity te) { - super(te); - } - - @Override - public boolean canHaveFlowToward(BlockState state, Direction direction) { - return state.contains(AxisPipeBlock.AXIS) && state.get(AxisPipeBlock.AXIS) == direction.getAxis(); - } - - @Override - public AttachmentTypes getRenderedRimAttachment(IBlockDisplayReader world, BlockPos pos, BlockState state, - Direction direction) { - AttachmentTypes attachment = super.getRenderedRimAttachment(world, pos, state, direction); - BlockState otherState = world.getBlockState(pos.offset(direction)); - - Axis axis = IAxisPipe.getAxisOf(state); - Axis otherAxis = IAxisPipe.getAxisOf(otherState); - - if (axis == otherAxis && axis != null) - if (state.getBlock() == otherState.getBlock() || direction.getAxisDirection() == AxisDirection.POSITIVE) - return AttachmentTypes.NONE; - - if (otherState.getBlock() instanceof FluidValveBlock - && FluidValveBlock.getPipeAxis(otherState) == direction.getAxis()) - return AttachmentTypes.NONE; - - return attachment; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/TransparentStraightPipeRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/TransparentStraightPipeRenderer.java deleted file mode 100644 index 5fc575317..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/pipes/TransparentStraightPipeRenderer.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.pipes; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.fluids.FluidTransportBehaviour; -import com.simibubi.create.content.contraptions.fluids.PipeConnection.Flow; -import com.simibubi.create.foundation.fluid.FluidRenderer; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraftforge.fluids.FluidStack; - -public class TransparentStraightPipeRenderer extends SafeTileEntityRenderer { - - public TransparentStraightPipeRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(StraightPipeTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - FluidTransportBehaviour pipe = te.getBehaviour(FluidTransportBehaviour.TYPE); - if (pipe == null) - return; - - for (Direction side : Iterate.directions) { - - Flow flow = pipe.getFlow(side); - if (flow == null) - continue; - FluidStack fluidStack = flow.fluid; - if (fluidStack.isEmpty()) - continue; - LerpedFloat progress = flow.progress; - if (progress == null) - continue; - - float value = progress.getValue(partialTicks); - boolean inbound = flow.inbound; - if (value == 1) { - if (inbound) { - Flow opposite = pipe.getFlow(side.getOpposite()); - if (opposite == null) - value -= 1e-6f; - } else { - FluidTransportBehaviour adjacent = TileEntityBehaviour.get(te.getWorld(), te.getPos() - .offset(side), FluidTransportBehaviour.TYPE); - if (adjacent == null) - value -= 1e-6f; - else { - Flow other = adjacent.getFlow(side.getOpposite()); - if (other == null || !other.inbound && !other.complete) - value -= 1e-6f; - } - } - } - - FluidRenderer.renderFluidStream(fluidStack, side, 3 / 16f, value, inbound, buffer, ms, light); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java deleted file mode 100644 index bac7497c1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluid.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.potion; - -import java.util.Collection; -import java.util.List; - -import com.simibubi.create.AllFluids; -import com.simibubi.create.content.contraptions.fluids.VirtualFluid; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.fluid.Fluid; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionUtils; -import net.minecraft.potion.Potions; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidAttributes; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; - -public class PotionFluid extends VirtualFluid { - - public enum BottleType { - REGULAR, SPLASH, LINGERING; - } - - public PotionFluid(Properties properties) { - super(properties); - } - - public static FluidStack withEffects(int amount, Potion potion, List customEffects) { - FluidStack fluidStack = new FluidStack(AllFluids.POTION.get() - .getStillFluid(), amount); - addPotionToFluidStack(fluidStack, potion); - appendEffects(fluidStack, customEffects); - return fluidStack; - } - - public static class PotionFluidAttributes extends FluidAttributes { - - public PotionFluidAttributes(Builder builder, Fluid fluid) { - super(builder, fluid); - } - - @Override - public int getColor(FluidStack stack) { - CompoundNBT tag = stack.getOrCreateTag(); - int color = PotionUtils.getPotionColorFromEffectList(PotionUtils.getEffectsFromTag(tag)) | 0xff000000; - return color; - } - - @Override - public String getTranslationKey(FluidStack stack) { - CompoundNBT tag = stack.getOrCreateTag(); - IItemProvider itemFromBottleType = - PotionFluidHandler.itemFromBottleType(NBTHelper.readEnum(tag, "Bottle", BottleType.class)); - return PotionUtils.getPotionTypeFromNBT(tag) - .getNamePrefixed(itemFromBottleType.asItem() - .getTranslationKey() + ".effect."); - } - - } - - public static FluidStack addPotionToFluidStack(FluidStack fs, Potion potion) { - ResourceLocation resourcelocation = ForgeRegistries.POTION_TYPES.getKey(potion); - if (potion == Potions.EMPTY) { - fs.removeChildTag("Potion"); - return fs; - } - fs.getOrCreateTag() - .putString("Potion", resourcelocation.toString()); - return fs; - } - - public static FluidStack appendEffects(FluidStack fs, Collection customEffects) { - if (customEffects.isEmpty()) - return fs; - CompoundNBT compoundnbt = fs.getOrCreateTag(); - ListNBT listnbt = compoundnbt.getList("CustomPotionEffects", 9); - for (EffectInstance effectinstance : customEffects) - listnbt.add(effectinstance.write(new CompoundNBT())); - compoundnbt.put("CustomPotionEffects", listnbt); - return fs; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java deleted file mode 100644 index f577c249c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/potion/PotionFluidHandler.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.potion; - -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import com.google.common.collect.Lists; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.BottleType; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.EffectUtils; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionUtils; -import net.minecraft.potion.Potions; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.Tuple; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.FluidStack; - -public class PotionFluidHandler { - - public static Pair emptyPotion(ItemStack stack, boolean simulate) { - FluidStack fluid = getFluidFromPotionItem(stack); - if (!simulate) - stack.shrink(1); - return Pair.of(fluid, new ItemStack(Items.GLASS_BOTTLE)); - } - - public static FluidIngredient potionIngredient(Potion potion, int amount) { - return FluidIngredient.fromFluidStack(FluidHelper.copyStackWithAmount(PotionFluidHandler - .getFluidFromPotionItem(PotionUtils.addPotionToItemStack(new ItemStack(Items.POTION), potion)), amount)); - } - - public static FluidStack getFluidFromPotionItem(ItemStack stack) { - Potion potion = PotionUtils.getPotionFromItem(stack); - List list = PotionUtils.getFullEffectsFromItem(stack); - FluidStack fluid = PotionFluid.withEffects(250, potion, list); - BottleType bottleTypeFromItem = bottleTypeFromItem(stack); - if (potion == Potions.WATER && list.isEmpty() && bottleTypeFromItem == BottleType.REGULAR) - return new FluidStack(Fluids.WATER, fluid.getAmount()); - NBTHelper.writeEnum(fluid.getOrCreateTag(), "Bottle", bottleTypeFromItem); - return fluid; - } - - public static BottleType bottleTypeFromItem(ItemStack stack) { - Item item = stack.getItem(); - if (item == Items.LINGERING_POTION) - return BottleType.LINGERING; - if (item == Items.SPLASH_POTION) - return BottleType.SPLASH; - return BottleType.REGULAR; - } - - public static IItemProvider itemFromBottleType(BottleType type) { - switch (type) { - case LINGERING: - return Items.LINGERING_POTION; - case SPLASH: - return Items.SPLASH_POTION; - case REGULAR: - default: - return Items.POTION; - } - } - - public static int getRequiredAmountForFilledBottle(ItemStack stack, FluidStack availableFluid) { - return 250; - } - - public static ItemStack fillBottle(ItemStack stack, FluidStack availableFluid) { - CompoundNBT tag = availableFluid.getOrCreateTag(); - ItemStack potionStack = new ItemStack(itemFromBottleType(NBTHelper.readEnum(tag, "Bottle", BottleType.class))); - PotionUtils.addPotionToItemStack(potionStack, PotionUtils.getPotionTypeFromNBT(tag)); - PotionUtils.appendEffects(potionStack, PotionUtils.getFullEffectsFromTag(tag)); - return potionStack; - } - - // Modified version of PotionUtils#addPotionTooltip - @OnlyIn(Dist.CLIENT) - public static void addPotionTooltip(FluidStack fs, List tooltip, float p_185182_2_) { - List list = PotionUtils.getEffectsFromTag(fs.getOrCreateTag()); - List> list1 = Lists.newArrayList(); - if (list.isEmpty()) { - tooltip.add((new TranslationTextComponent("effect.none")).formatted(TextFormatting.GRAY)); - } else { - for (EffectInstance effectinstance : list) { - TranslationTextComponent textcomponent = new TranslationTextComponent(effectinstance.getEffectName()); - Effect effect = effectinstance.getPotion(); - Map map = effect.getAttributeModifierMap(); - if (!map.isEmpty()) { - for (Entry entry : map.entrySet()) { - AttributeModifier attributemodifier = entry.getValue(); - AttributeModifier attributemodifier1 = new AttributeModifier(attributemodifier.getName(), - effect.getAttributeModifierAmount(effectinstance.getAmplifier(), attributemodifier), - attributemodifier.getOperation()); - list1.add(new Tuple<>( - entry.getKey().getTranslationKey(), - attributemodifier1)); - } - } - - if (effectinstance.getAmplifier() > 0) { - textcomponent.append(" ") - .append(new TranslationTextComponent("potion.potency." + effectinstance.getAmplifier()).getString()); - } - - if (effectinstance.getDuration() > 20) { - textcomponent.append(" (") - .append(EffectUtils.getPotionDurationString(effectinstance, p_185182_2_)) - .append(")"); - } - - tooltip.add(textcomponent.formatted(effect.getEffectType() - .getColor())); - } - } - - if (!list1.isEmpty()) { - tooltip.add(new StringTextComponent("")); - tooltip.add((new TranslationTextComponent("potion.whenDrank")).formatted(TextFormatting.DARK_PURPLE)); - - for (Tuple tuple : list1) { - AttributeModifier attributemodifier2 = tuple.getB(); - double d0 = attributemodifier2.getAmount(); - double d1; - if (attributemodifier2.getOperation() != AttributeModifier.Operation.MULTIPLY_BASE - && attributemodifier2.getOperation() != AttributeModifier.Operation.MULTIPLY_TOTAL) { - d1 = attributemodifier2.getAmount(); - } else { - d1 = attributemodifier2.getAmount() * 100.0D; - } - - if (d0 > 0.0D) { - tooltip.add((new TranslationTextComponent( - "attribute.modifier.plus." + attributemodifier2.getOperation() - .getId(), - ItemStack.DECIMALFORMAT.format(d1), - new TranslationTextComponent(tuple.getA()))) - .formatted(TextFormatting.BLUE)); - } else if (d0 < 0.0D) { - d1 = d1 * -1.0D; - tooltip.add((new TranslationTextComponent( - "attribute.modifier.take." + attributemodifier2.getOperation() - .getId(), - ItemStack.DECIMALFORMAT.format(d1), - new TranslationTextComponent(tuple.getA()))) - .formatted(TextFormatting.RED)); - } - } - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java deleted file mode 100644 index d77dd5520..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/FluidTransferRecipes.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.recipe; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.foundation.utility.ISimpleReloadListener; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class FluidTransferRecipes { - - public static List POTION_ITEMS = new ArrayList<>(); - public static List FILLED_BUCKETS = new ArrayList<>(); - - public static final ISimpleReloadListener LISTENER = (resourceManager, profiler) -> { - POTION_ITEMS.clear(); - FILLED_BUCKETS.clear(); - }; - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java deleted file mode 100644 index 1219f058a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/recipe/PotionMixingRecipeManager.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.recipe; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.mixer.MixingRecipe; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; -import com.simibubi.create.content.contraptions.processing.HeatCondition; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.utility.ISimpleReloadListener; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionBrewing; -import net.minecraft.potion.PotionUtils; -import net.minecraft.potion.Potions; -import net.minecraftforge.common.brewing.BrewingRecipeRegistry; -import net.minecraftforge.common.brewing.IBrewingRecipe; -import net.minecraftforge.common.brewing.VanillaBrewingRecipe; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistries; - -public class PotionMixingRecipeManager { - - public static Map> ALL = new HashMap<>(); - - public static List getAllBrewingRecipes() { - List mixingRecipes = new ArrayList<>(); - - // Vanilla - for (IBrewingRecipe iBrewingRecipe : BrewingRecipeRegistry.getRecipes()) { - if (!(iBrewingRecipe instanceof VanillaBrewingRecipe)) - continue; - - List bottles = new ArrayList<>(); - PotionBrewing.POTION_ITEMS.forEach(i -> { - for (ItemStack itemStack : i.getMatchingStacks()) - bottles.add(itemStack); - }); - - Collection reagents = getAllReagents(iBrewingRecipe); - - Set basicPotions = new HashSet<>(); - for (Potion potion : ForgeRegistries.POTION_TYPES.getValues()) { - if (potion == Potions.EMPTY) - continue; - for (ItemStack stack : bottles) - basicPotions.add(PotionUtils.addPotionToItemStack(stack.copy(), potion)); - } - - Set uniqueKeys = new HashSet<>(); - List potionFrontier = new ArrayList<>(); - List newPotions = new ArrayList<>(); - potionFrontier.addAll(basicPotions); - - int recipeIndex = 0; - - while (!potionFrontier.isEmpty()) { - newPotions.clear(); - - for (ItemStack inputPotionStack : potionFrontier) { - Potion inputPotion = PotionUtils.getPotionFromItem(inputPotionStack); - - for (ItemStack potionReagent : reagents) { - ItemStack outputPotionStack = iBrewingRecipe.getOutput(inputPotionStack.copy(), potionReagent); - if (outputPotionStack.isEmpty()) - continue; - - String uniqueKey = potionReagent.getItem() - .getRegistryName() - .toString() + "_" - + inputPotion.getRegistryName() - .toString() - + "_" + inputPotionStack.getItem() - .getRegistryName() - .toString(); - - if (!uniqueKeys.add(uniqueKey)) - continue; - - if (inputPotionStack.getItem() == outputPotionStack.getItem()) { - Potion outputPotion = PotionUtils.getPotionFromItem(outputPotionStack); - if (outputPotion == Potions.WATER) - continue; - } - - FluidStack fluidFromPotionItem = PotionFluidHandler.getFluidFromPotionItem(inputPotionStack); - FluidStack fluidFromPotionItem2 = PotionFluidHandler.getFluidFromPotionItem(outputPotionStack); - fluidFromPotionItem.setAmount(1000); - fluidFromPotionItem2.setAmount(1000); - - MixingRecipe mixingRecipe = new ProcessingRecipeBuilder<>(MixingRecipe::new, - Create.asResource("potion_" + recipeIndex++)).require(Ingredient.fromStacks(potionReagent)) - .require(FluidIngredient.fromFluidStack(fluidFromPotionItem)) - .output(fluidFromPotionItem2) - .requiresHeat(HeatCondition.HEATED) - .build(); - - mixingRecipes.add(mixingRecipe); - newPotions.add(outputPotionStack); - } - } - - potionFrontier.clear(); - potionFrontier.addAll(newPotions); - } - - break; - } - - // TODO Modded brewing recipes? - - return mixingRecipes; - } - - public static Collection getAllReagents(IBrewingRecipe recipe) { - return ForgeRegistries.ITEMS.getValues() - .stream() - .map(ItemStack::new) - .filter(recipe::isIngredient) - .collect(Collectors.toList()); - } - - public static final ISimpleReloadListener LISTENER = (resourceManager, profiler) -> { - ALL.clear(); - getAllBrewingRecipes().forEach(recipe -> { - for (Ingredient ingredient : recipe.getIngredients()) { - for (ItemStack itemStack : ingredient.getMatchingStacks()) { - ALL.computeIfAbsent(itemStack.getItem(), t -> new ArrayList<>()) - .add(recipe); - return; - } - } - }); - }; - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java deleted file mode 100644 index e5bf6f58a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/CreativeFluidTankTileEntity.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import java.util.List; -import java.util.function.Consumer; - -import com.simibubi.create.foundation.fluid.SmartFluidTank; - -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.fluids.FluidStack; - -public class CreativeFluidTankTileEntity extends FluidTankTileEntity { - - public CreativeFluidTankTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - } - - @Override - protected SmartFluidTank createInventory() { - return new CreativeSmartFluidTank(getCapacityMultiplier(), this::onFluidStackChanged); - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - return false; - } - - public static class CreativeSmartFluidTank extends SmartFluidTank { - - public CreativeSmartFluidTank(int capacity, Consumer updateCallback) { - super(capacity, updateCallback); - } - - @Override - public int getFluidAmount() { - return getFluid().isEmpty() ? 0 : getTankCapacity(0); - } - - public void setContainedFluid(FluidStack fluidStack) { - fluid = fluidStack.copy(); - if (!fluidStack.isEmpty()) - fluid.setAmount(getTankCapacity(0)); - onContentsChanged(); - } - - @Override - public int fill(FluidStack resource, FluidAction action) { - return resource.getAmount(); - } - - @Override - public FluidStack drain(FluidStack resource, FluidAction action) { - return super.drain(resource, FluidAction.SIMULATE); - } - - @Override - public FluidStack drain(int maxDrain, FluidAction action) { - return super.drain(maxDrain, FluidAction.SIMULATE); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankBlock.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankBlock.java deleted file mode 100644 index 2b7426d6a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankBlock.java +++ /dev/null @@ -1,327 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.fluids.actors.GenericItemFilling; -import com.simibubi.create.content.contraptions.fluids.tank.CreativeFluidTankTileEntity.CreativeSmartFluidTank; -import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.fluid.FluidHelper.FluidExchange; -import com.simibubi.create.foundation.tileEntity.ComparatorUtil; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.SoundType; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tags.FluidTags; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidAttributes; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; - -public class FluidTankBlock extends Block implements IWrenchable, ITE { - - public static final BooleanProperty TOP = BooleanProperty.create("top"); - public static final BooleanProperty BOTTOM = BooleanProperty.create("bottom"); - public static final EnumProperty SHAPE = EnumProperty.create("shape", Shape.class); - - private boolean creative; - - public static FluidTankBlock regular(Properties p_i48440_1_) { - return new FluidTankBlock(p_i48440_1_, false); - } - - public static FluidTankBlock creative(Properties p_i48440_1_) { - return new FluidTankBlock(p_i48440_1_, true); - } - - protected FluidTankBlock(Properties p_i48440_1_, boolean creative) { - super(p_i48440_1_); - this.creative = creative; - setDefaultState(getDefaultState().with(TOP, true) - .with(BOTTOM, true) - .with(SHAPE, Shape.WINDOW)); - } - - public static boolean isTank(BlockState state) { - return state.getBlock() instanceof FluidTankBlock; - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState oldState, boolean moved) { - if (oldState.getBlock() == state.getBlock()) - return; - if (moved) - return; - withTileEntityDo(world, pos, FluidTankTileEntity::updateConnectivity); - } - - @Override - protected void fillStateContainer(Builder p_206840_1_) { - p_206840_1_.add(TOP, BOTTOM, SHAPE); - } - - @Override - public int getLightValue(BlockState state, IBlockReader world, BlockPos pos) { - FluidTankTileEntity tankAt = FluidTankConnectivityHandler.anyTankAt(world, pos); - if (tankAt == null) - return 0; - FluidTankTileEntity controllerTE = tankAt.getControllerTE(); - if (controllerTE == null || !controllerTE.window) - return 0; - return tankAt.luminosity; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - withTileEntityDo(context.getWorld(), context.getPos(), FluidTankTileEntity::toggleWindows); - return ActionResultType.SUCCESS; - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult ray) { - ItemStack heldItem = player.getHeldItem(hand); - boolean onClient = world.isRemote; - - if (heldItem.isEmpty()) - return ActionResultType.PASS; - if (!player.isCreative()) - return ActionResultType.PASS; - - FluidExchange exchange = null; - FluidTankTileEntity te = FluidTankConnectivityHandler.anyTankAt(world, pos); - if (te == null) - return ActionResultType.FAIL; - - LazyOptional tankCapability = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY); - if (!tankCapability.isPresent()) - return ActionResultType.PASS; - IFluidHandler fluidTank = tankCapability.orElse(null); - FluidStack prevFluidInTank = fluidTank.getFluidInTank(0) - .copy(); - - if (FluidHelper.tryEmptyItemIntoTE(world, player, hand, heldItem, te)) - exchange = FluidExchange.ITEM_TO_TANK; - else if (FluidHelper.tryFillItemFromTE(world, player, hand, heldItem, te)) - exchange = FluidExchange.TANK_TO_ITEM; - - if (exchange == null) { - if (EmptyingByBasin.canItemBeEmptied(world, heldItem) - || GenericItemFilling.canItemBeFilled(world, heldItem)) - return ActionResultType.SUCCESS; - return ActionResultType.PASS; - } - - SoundEvent soundevent = null; - BlockState fluidState = null; - FluidStack fluidInTank = tankCapability.map(fh -> fh.getFluidInTank(0)) - .orElse(FluidStack.EMPTY); - - if (exchange == FluidExchange.ITEM_TO_TANK) { - if (creative && !onClient) { - FluidStack fluidInItem = EmptyingByBasin.emptyItem(world, heldItem, true) - .getFirst(); - if (!fluidInItem.isEmpty() && fluidTank instanceof CreativeSmartFluidTank) - ((CreativeSmartFluidTank) fluidTank).setContainedFluid(fluidInItem); - } - - Fluid fluid = fluidInTank.getFluid(); - fluidState = fluid.getDefaultState() - .getBlockState(); - FluidAttributes attributes = fluid.getAttributes(); - soundevent = attributes.getEmptySound(); - if (soundevent == null) - soundevent = - fluid.isIn(FluidTags.LAVA) ? SoundEvents.ITEM_BUCKET_EMPTY_LAVA : SoundEvents.ITEM_BUCKET_EMPTY; - } - if (exchange == FluidExchange.TANK_TO_ITEM) { - if (creative && !onClient) - if (fluidTank instanceof CreativeSmartFluidTank) - ((CreativeSmartFluidTank) fluidTank).setContainedFluid(FluidStack.EMPTY); - - Fluid fluid = prevFluidInTank.getFluid(); - fluidState = fluid.getDefaultState() - .getBlockState(); - soundevent = fluid.getAttributes() - .getFillSound(); - if (soundevent == null) - soundevent = - fluid.isIn(FluidTags.LAVA) ? SoundEvents.ITEM_BUCKET_FILL_LAVA : SoundEvents.ITEM_BUCKET_FILL; - } - - if (soundevent != null && !onClient) { - float pitch = MathHelper - .clamp(1 - (1f * fluidInTank.getAmount() / (FluidTankTileEntity.getCapacityMultiplier() * 16)), 0, 1); - pitch /= 1.5f; - pitch += .5f; - pitch += (world.rand.nextFloat() - .5f) / 4f; - world.playSound(null, pos, soundevent, SoundCategory.BLOCKS, .5f, pitch); - } - - if (!fluidInTank.isFluidStackIdentical(prevFluidInTank)) { - if (te instanceof FluidTankTileEntity) { - FluidTankTileEntity controllerTE = ((FluidTankTileEntity) te).getControllerTE(); - if (controllerTE != null) { - if (fluidState != null && onClient) { - BlockParticleData blockParticleData = new BlockParticleData(ParticleTypes.BLOCK, fluidState); - float level = (float) fluidInTank.getAmount() / fluidTank.getTankCapacity(0); - - boolean reversed = fluidInTank.getFluid() - .getAttributes() - .isLighterThanAir(); - if (reversed) - level = 1 - level; - - Vector3d vec = ray.getHitVec(); - vec = new Vector3d(vec.x, controllerTE.getPos() - .getY() + level * (controllerTE.height - .5f) + .25f, vec.z); - Vector3d motion = player.getPositionVec() - .subtract(vec) - .scale(1 / 20f); - vec = vec.add(motion); - world.addParticle(blockParticleData, vec.x, vec.y, vec.z, motion.x, motion.y, motion.z); - return ActionResultType.SUCCESS; - } - - controllerTE.sendDataImmediately(); - controllerTE.markDirty(); - } - } - } - - return ActionResultType.SUCCESS; - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - if (state.hasTileEntity() && (state.getBlock() != newState.getBlock() || !newState.hasTileEntity())) { - TileEntity te = world.getTileEntity(pos); - if (!(te instanceof FluidTankTileEntity)) - return; - FluidTankTileEntity tankTE = (FluidTankTileEntity) te; - world.removeTileEntity(pos); - FluidTankConnectivityHandler.splitTank(tankTE); - } - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return creative ? AllTileEntities.CREATIVE_FLUID_TANK.create() : AllTileEntities.FLUID_TANK.create(); - } - - @Override - public Class getTileEntityClass() { - return FluidTankTileEntity.class; - } - - @Override - public BlockState mirror(BlockState state, Mirror mirror) { - if (mirror == Mirror.NONE) - return state; - boolean x = mirror == Mirror.FRONT_BACK; - switch (state.get(SHAPE)) { - case WINDOW_NE: - return state.with(SHAPE, x ? Shape.WINDOW_NW : Shape.WINDOW_SE); - case WINDOW_NW: - return state.with(SHAPE, x ? Shape.WINDOW_NE : Shape.WINDOW_SW); - case WINDOW_SE: - return state.with(SHAPE, x ? Shape.WINDOW_SW : Shape.WINDOW_NE); - case WINDOW_SW: - return state.with(SHAPE, x ? Shape.WINDOW_SE : Shape.WINDOW_NW); - default: - return state; - } - } - - @Override - public BlockState rotate(BlockState state, Rotation rotation) { - for (int i = 0; i < rotation.ordinal(); i++) - state = rotateOnce(state); - return state; - } - - private BlockState rotateOnce(BlockState state) { - switch (state.get(SHAPE)) { - case WINDOW_NE: - return state.with(SHAPE, Shape.WINDOW_SE); - case WINDOW_NW: - return state.with(SHAPE, Shape.WINDOW_NE); - case WINDOW_SE: - return state.with(SHAPE, Shape.WINDOW_SW); - case WINDOW_SW: - return state.with(SHAPE, Shape.WINDOW_NW); - default: - return state; - } - } - - public enum Shape implements IStringSerializable { - PLAIN, WINDOW, WINDOW_NW, WINDOW_SW, WINDOW_NE, WINDOW_SE; - - @Override - public String getString() { - return Lang.asId(name()); - } - } - - // Tanks are less noisy when placed in batch - public static final SoundType SILENCED_METAL = - new SoundType(0.1F, 1.5F, SoundEvents.BLOCK_METAL_BREAK, SoundEvents.BLOCK_METAL_STEP, - SoundEvents.BLOCK_METAL_PLACE, SoundEvents.BLOCK_METAL_HIT, SoundEvents.BLOCK_METAL_FALL); - - @Override - public SoundType getSoundType(BlockState state, IWorldReader world, BlockPos pos, Entity entity) { - SoundType soundType = super.getSoundType(state, world, pos, entity); - if (entity != null && entity.getPersistentData() - .contains("SilenceTankSound")) - return SILENCED_METAL; - return soundType; - } - - @Override - public boolean hasComparatorInputOverride(BlockState state) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) { - return getTileEntityOptional(worldIn, pos).map(FluidTankTileEntity::getControllerTE) - .map(te -> ComparatorUtil.fractionToRedstoneLevel(te.getFillState())) - .orElse(0); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankCTBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankCTBehaviour.java deleted file mode 100644 index 3f7ff915f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankCTBehaviour.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.HorizontalCTBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; - -public class FluidTankCTBehaviour extends HorizontalCTBehaviour { - - public FluidTankCTBehaviour(CTSpriteShiftEntry layerShift, CTSpriteShiftEntry topShift) { - super(layerShift, topShift); - } - - public boolean buildContextForOccludedDirections() { - return true; - } - - @Override - public boolean connectsTo(BlockState state, BlockState other, IBlockDisplayReader reader, BlockPos pos, BlockPos otherPos, - Direction face) { - return state.getBlock() == other.getBlock() && FluidTankConnectivityHandler.isConnected(reader, pos, otherPos); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankConnectivityHandler.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankConnectivityHandler.java deleted file mode 100644 index 0c0c8f6ef..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankConnectivityHandler.java +++ /dev/null @@ -1,381 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.PriorityQueue; -import java.util.Set; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.content.contraptions.fluids.tank.CreativeFluidTankTileEntity.CreativeSmartFluidTank; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.fluids.capability.templates.FluidTank; - -public class FluidTankConnectivityHandler { - - public static void formTanks(FluidTankTileEntity te) { - TankSearchCache cache = new TankSearchCache(); - List frontier = new ArrayList<>(); - frontier.add(te); - formTanks(te.getType(), te.getWorld(), cache, frontier); - } - - private static void formTanks(TileEntityType type, IBlockReader world, TankSearchCache cache, - List frontier) { - PriorityQueue> creationQueue = makeCreationQueue(); - Set visited = new HashSet<>(); - - int minX = Integer.MAX_VALUE; - int minZ = Integer.MAX_VALUE; - for (FluidTankTileEntity fluidTankTileEntity : frontier) { - BlockPos pos = fluidTankTileEntity.getPos(); - minX = Math.min(pos.getX(), minX); - minZ = Math.min(pos.getZ(), minZ); - } - minX -= FluidTankTileEntity.getMaxSize(); - minZ -= FluidTankTileEntity.getMaxSize(); - - while (!frontier.isEmpty()) { - FluidTankTileEntity tank = frontier.remove(0); - BlockPos tankPos = tank.getPos(); - if (visited.contains(tankPos)) - continue; - - visited.add(tankPos); - - int amount = tryToFormNewTank(tank, cache, true); - if (amount > 1) - creationQueue.add(Pair.of(amount, tank)); - - for (Axis axis : Iterate.axes) { - Direction d = Direction.getFacingFromAxis(AxisDirection.NEGATIVE, axis); - BlockPos next = tankPos.offset(d); - - if (next.getX() <= minX || next.getZ() <= minZ) - continue; - if (visited.contains(next)) - continue; - FluidTankTileEntity nextTank = tankAt(type, world, next); - if (nextTank == null) - continue; - if (nextTank.isRemoved()) - continue; - frontier.add(nextTank); - } - } - - visited.clear(); - - while (!creationQueue.isEmpty()) { - Pair next = creationQueue.poll(); - FluidTankTileEntity toCreate = next.getValue(); - if (visited.contains(toCreate.getPos())) - continue; - visited.add(toCreate.getPos()); - tryToFormNewTank(toCreate, cache, false); - } - - } - - public static void splitTank(FluidTankTileEntity te) { - splitTankAndInvalidate(te, null, false); - } - - private static int tryToFormNewTank(FluidTankTileEntity te, TankSearchCache cache, boolean simulate) { - int bestWidth = 1; - int bestAmount = -1; - - if (!te.isController()) - return 0; - - for (int w = 1; w <= FluidTankTileEntity.getMaxSize(); w++) { - int amount = tryToFormNewTankOfWidth(te, w, cache, true); - if (amount < bestAmount) - continue; - bestWidth = w; - bestAmount = amount; - } - - if (!simulate) { - if (te.width == bestWidth && te.width * te.width * te.height == bestAmount) - return bestAmount; - - splitTankAndInvalidate(te, cache, false); - te.applyFluidTankSize(bestAmount); - tryToFormNewTankOfWidth(te, bestWidth, cache, simulate); - te.updateConnectivity = false; - te.width = bestWidth; - te.height = bestAmount / bestWidth / bestWidth; - - BlockState state = te.getBlockState(); - if (FluidTankBlock.isTank(state)) { - state = state.with(FluidTankBlock.BOTTOM, true); - state = state.with(FluidTankBlock.TOP, te.height == 1); - te.getWorld() - .setBlockState(te.getPos(), state, 22); - } - - te.setWindows(te.window); - te.onFluidStackChanged(te.tankInventory.getFluid()); - te.markDirty(); - } - - return bestAmount; - } - - private static int tryToFormNewTankOfWidth(FluidTankTileEntity te, int width, TankSearchCache cache, - boolean simulate) { - int amount = 0; - int height = 0; - TileEntityType type = te.getType(); - World world = te.getWorld(); - BlockPos origin = te.getPos(); - LazyOptional capability = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY); - FluidTank teTank = (FluidTank) capability.orElse(null); - FluidStack fluid = capability.map(ifh -> ifh.getFluidInTank(0)) - .orElse(FluidStack.EMPTY); - - Search: - - for (int yOffset = 0; yOffset < FluidTankTileEntity.getMaxHeight(); yOffset++) { - for (int xOffset = 0; xOffset < width; xOffset++) { - for (int zOffset = 0; zOffset < width; zOffset++) { - - BlockPos pos = origin.add(xOffset, yOffset, zOffset); - Optional tank = cache.getOrCache(type, world, pos); - if (!tank.isPresent()) - break Search; - - FluidTankTileEntity controller = tank.get(); - int otherWidth = controller.width; - if (otherWidth > width) - break Search; - - BlockPos controllerPos = controller.getPos(); - if (!controllerPos.equals(origin)) { - if (controllerPos.getX() < origin.getX()) - break Search; - if (controllerPos.getZ() < origin.getZ()) - break Search; - if (controllerPos.getX() + otherWidth > origin.getX() + width) - break Search; - if (controllerPos.getZ() + otherWidth > origin.getZ() + width) - break Search; - } - - FluidStack otherFluid = controller.getTankInventory() - .getFluid(); - if (!fluid.isEmpty() && !otherFluid.isEmpty() && !fluid.isFluidEqual(otherFluid)) - break Search; - - } - } - - amount += width * width; - height++; - } - - if (simulate) - return amount; - - boolean opaque = false; - - for (int yOffset = 0; yOffset < height; yOffset++) { - for (int xOffset = 0; xOffset < width; xOffset++) { - for (int zOffset = 0; zOffset < width; zOffset++) { - BlockPos pos = origin.add(xOffset, yOffset, zOffset); - FluidTankTileEntity tank = tankAt(type, world, pos); - if (tank == te) - continue; - - opaque |= !tank.window; - FluidTank tankTank = tank.tankInventory; - FluidStack fluidInTank = tankTank.getFluid(); - if (!fluidInTank.isEmpty()) { - if (teTank.isEmpty() && teTank instanceof CreativeSmartFluidTank) - ((CreativeSmartFluidTank) teTank).setContainedFluid(fluidInTank); - teTank.fill(fluidInTank, FluidAction.EXECUTE); - } - tankTank.setFluid(FluidStack.EMPTY); - - splitTankAndInvalidate(tank, cache, false); - tank.setController(origin); - tank.updateConnectivity = false; - cache.put(pos, te); - - BlockState state = world.getBlockState(pos); - if (!FluidTankBlock.isTank(state)) - continue; - state = state.with(FluidTankBlock.BOTTOM, yOffset == 0); - state = state.with(FluidTankBlock.TOP, yOffset == height - 1); - world.setBlockState(pos, state, 22); - } - } - } - - te.setWindows(!opaque); - - return amount; - } - - private static void splitTankAndInvalidate(FluidTankTileEntity te, @Nullable TankSearchCache cache, - boolean tryReconnect) { - // tryReconnect helps whenever only few tanks have been removed - - te = te.getControllerTE(); - if (te == null) - return; - - int height = te.height; - int width = te.width; - if (width == 1 && height == 1) - return; - - World world = te.getWorld(); - BlockPos origin = te.getPos(); - List frontier = new ArrayList<>(); - FluidStack toDistribute = te.tankInventory.getFluid() - .copy(); - int maxCapacity = FluidTankTileEntity.getCapacityMultiplier(); - if (!toDistribute.isEmpty() && !te.isRemoved()) - toDistribute.shrink(maxCapacity); - te.applyFluidTankSize(1); - - for (int yOffset = 0; yOffset < height; yOffset++) { - for (int xOffset = 0; xOffset < width; xOffset++) { - for (int zOffset = 0; zOffset < width; zOffset++) { - - BlockPos pos = origin.add(xOffset, yOffset, zOffset); - FluidTankTileEntity tankAt = tankAt(te.getType(), world, pos); - if (tankAt == null) - continue; - if (!tankAt.getController() - .equals(origin)) - continue; - FluidTankTileEntity controllerTE = tankAt.getControllerTE(); - tankAt.window = controllerTE == null || controllerTE.window; - tankAt.removeController(true); - - if (!toDistribute.isEmpty() && tankAt != te) { - FluidStack copy = toDistribute.copy(); - FluidTank tankInventory = tankAt.tankInventory; - if (tankInventory.isEmpty() && tankInventory instanceof CreativeSmartFluidTank) - ((CreativeSmartFluidTank) tankInventory).setContainedFluid(toDistribute); - else { - int split = Math.min(maxCapacity, toDistribute.getAmount()); - copy.setAmount(split); - toDistribute.shrink(split); - tankInventory.fill(copy, FluidAction.EXECUTE); - } - } - - if (tryReconnect) { - frontier.add(tankAt); - tankAt.updateConnectivity = false; - } - if (cache != null) - cache.put(pos, tankAt); - } - } - } - - te.fluidCapability.invalidate(); - if (tryReconnect) - formTanks(te.getType(), world, cache == null ? new TankSearchCache() : cache, frontier); - } - - private static PriorityQueue> makeCreationQueue() { - return new PriorityQueue<>(new Comparator>() { - @Override - public int compare(Pair o1, Pair o2) { - return o2.getKey() - o1.getKey(); - } - }); - } - - @Nullable - public static FluidTankTileEntity tankAt(TileEntityType type, IBlockReader world, BlockPos pos) { - TileEntity te = world.getTileEntity(pos); - if (te instanceof FluidTankTileEntity && te.getType() == type) - return (FluidTankTileEntity) te; - return null; - } - - @Nullable - public static FluidTankTileEntity anyTankAt(IBlockReader world, BlockPos pos) { - TileEntity te = world.getTileEntity(pos); - if (te instanceof FluidTankTileEntity) - return (FluidTankTileEntity) te; - return null; - } - - private static class TankSearchCache { - Map> controllerMap; - - public TankSearchCache() { - controllerMap = new HashMap<>(); - } - - void put(BlockPos pos, FluidTankTileEntity target) { - controllerMap.put(pos, Optional.of(target)); - } - - void putEmpty(BlockPos pos) { - controllerMap.put(pos, Optional.empty()); - } - - boolean hasVisited(BlockPos pos) { - return controllerMap.containsKey(pos); - } - - Optional getOrCache(TileEntityType type, IBlockReader world, BlockPos pos) { - if (hasVisited(pos)) - return controllerMap.get(pos); - FluidTankTileEntity tankAt = tankAt(type, world, pos); - if (tankAt == null) { - putEmpty(pos); - return Optional.empty(); - } - FluidTankTileEntity controller = tankAt.getControllerTE(); - if (controller == null) { - putEmpty(pos); - return Optional.empty(); - } - put(pos, controller); - return Optional.of(controller); - } - - } - - public static boolean isConnected(IBlockReader world, BlockPos tankPos, BlockPos otherTankPos) { - TileEntity te1 = world.getTileEntity(tankPos); - TileEntity te2 = world.getTileEntity(otherTankPos); - if (!(te1 instanceof FluidTankTileEntity) || !(te2 instanceof FluidTankTileEntity)) - return false; - return ((FluidTankTileEntity) te1).getController() - .equals(((FluidTankTileEntity) te2).getController()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankGenerator.java deleted file mode 100644 index 1a64dbeae..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankGenerator.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock.Shape; -import com.simibubi.create.foundation.data.AssetLookup; -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraftforge.client.model.generators.ModelFile; - -public class FluidTankGenerator extends SpecialBlockStateGen { - - private String prefix; - - public FluidTankGenerator() { - this(""); - } - - public FluidTankGenerator(String prefix) { - this.prefix = prefix; - } - - @Override - protected int getXRotation(BlockState state) { - return 0; - } - - @Override - protected int getYRotation(BlockState state) { - return 0; - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - Boolean top = state.get(FluidTankBlock.TOP); - Boolean bottom = state.get(FluidTankBlock.BOTTOM); - Shape shape = state.get(FluidTankBlock.SHAPE); - - String shapeName = "middle"; - if (top && bottom) - shapeName = "single"; - else if (top) - shapeName = "top"; - else if (bottom) - shapeName = "bottom"; - - String modelName = shapeName + (shape == Shape.PLAIN ? "" : "_" + shape.getString()); - - if (!prefix.isEmpty()) - return prov.models() - .withExistingParent(prefix + modelName, prov.modLoc("block/fluid_tank/block_" + modelName)) - .texture("0", prov.modLoc("block/" + prefix + "casing")) - .texture("1", prov.modLoc("block/" + prefix + "fluid_tank")) - .texture("3", prov.modLoc("block/" + prefix + "fluid_tank_window")) - .texture("4", prov.modLoc("block/" + prefix + "fluid_tank_window_single")) - .texture("particle", prov.modLoc("block/" + prefix + "fluid_tank")); - - return AssetLookup.partialBaseModel(ctx, prov, modelName); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankItem.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankItem.java deleted file mode 100644 index cec618615..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankItem.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; - -public class FluidTankItem extends BlockItem { - - public FluidTankItem(Block p_i48527_1_, Properties p_i48527_2_) { - super(p_i48527_1_, p_i48527_2_); - } - - @Override - public ActionResultType tryPlace(BlockItemUseContext ctx) { - ActionResultType initialResult = super.tryPlace(ctx); - if (!initialResult.isAccepted()) - return initialResult; - tryMultiPlace(ctx); - return initialResult; - } - - @Override - protected boolean onBlockPlaced(BlockPos p_195943_1_, World p_195943_2_, PlayerEntity p_195943_3_, - ItemStack p_195943_4_, BlockState p_195943_5_) { - MinecraftServer minecraftserver = p_195943_2_.getServer(); - if (minecraftserver == null) - return false; - CompoundNBT nbt = p_195943_4_.getChildTag("BlockEntityTag"); - if (nbt != null) { - nbt.remove("Luminosity"); - nbt.remove("Size"); - nbt.remove("Height"); - nbt.remove("Controller"); - nbt.remove("LastKnownPos"); - if (nbt.contains("TankContent")) { - FluidStack fluid = FluidStack.loadFluidStackFromNBT(nbt.getCompound("TankContent")); - if (!fluid.isEmpty()) { - fluid.setAmount(Math.min(FluidTankTileEntity.getCapacityMultiplier(), fluid.getAmount())); - nbt.put("TankContent", fluid.writeToNBT(new CompoundNBT())); - } - } - } - return super.onBlockPlaced(p_195943_1_, p_195943_2_, p_195943_3_, p_195943_4_, p_195943_5_); - } - - private void tryMultiPlace(BlockItemUseContext ctx) { - PlayerEntity player = ctx.getPlayer(); - if (player == null) - return; - if (player.isSneaking()) - return; - Direction face = ctx.getFace(); - if (!face.getAxis() - .isVertical()) - return; - ItemStack stack = ctx.getItem(); - World world = ctx.getWorld(); - BlockPos pos = ctx.getPos(); - BlockPos placedOnPos = pos.offset(face.getOpposite()); - BlockState placedOnState = world.getBlockState(placedOnPos); - - if (!FluidTankBlock.isTank(placedOnState)) - return; - FluidTankTileEntity tankAt = FluidTankConnectivityHandler.anyTankAt(world, placedOnPos); - if (tankAt == null) - return; - FluidTankTileEntity controllerTE = tankAt.getControllerTE(); - if (controllerTE == null) - return; - - int width = controllerTE.width; - if (width == 1) - return; - - int tanksToPlace = 0; - BlockPos startPos = face == Direction.DOWN ? controllerTE.getPos() - .down() - : controllerTE.getPos() - .up(controllerTE.height); - - if (startPos.getY() != pos.getY()) - return; - - for (int xOffset = 0; xOffset < width; xOffset++) { - for (int zOffset = 0; zOffset < width; zOffset++) { - BlockPos offsetPos = startPos.add(xOffset, 0, zOffset); - BlockState blockState = world.getBlockState(offsetPos); - if (FluidTankBlock.isTank(blockState)) - continue; - if (!blockState.getMaterial() - .isReplaceable()) - return; - tanksToPlace++; - } - } - - if (!player.isCreative() && stack.getCount() < tanksToPlace) - return; - - for (int xOffset = 0; xOffset < width; xOffset++) { - for (int zOffset = 0; zOffset < width; zOffset++) { - BlockPos offsetPos = startPos.add(xOffset, 0, zOffset); - BlockState blockState = world.getBlockState(offsetPos); - if (FluidTankBlock.isTank(blockState)) - continue; - BlockItemUseContext context = BlockItemUseContext.func_221536_a(ctx, offsetPos, face); - player.getPersistentData() - .putBoolean("SilenceTankSound", true); - super.tryPlace(context); - player.getPersistentData() - .remove("SilenceTankSound"); - } - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java deleted file mode 100644 index b182b7be1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankModel.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import com.simibubi.create.AllSpriteShifts; -import com.simibubi.create.foundation.block.connected.CTModel; -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap.Builder; -import net.minecraftforge.client.model.data.ModelProperty; - -public class FluidTankModel extends CTModel { - - protected static ModelProperty CULL_PROPERTY = new ModelProperty<>(); - - public static FluidTankModel standard(IBakedModel originalModel) { - return new FluidTankModel(originalModel, AllSpriteShifts.FLUID_TANK, AllSpriteShifts.COPPER_CASING); - } - - public static FluidTankModel creative(IBakedModel originalModel) { - return new FluidTankModel(originalModel, AllSpriteShifts.CREATIVE_FLUID_TANK, AllSpriteShifts.CREATIVE_CASING); - } - - private FluidTankModel(IBakedModel originalModel, CTSpriteShiftEntry side, CTSpriteShiftEntry top) { - super(originalModel, new FluidTankCTBehaviour(side, top)); - } - - @Override - protected Builder gatherModelData(Builder builder, IBlockDisplayReader world, BlockPos pos, BlockState state) { - CullData cullData = new CullData(); - for (Direction d : Iterate.horizontalDirections) - cullData.setCulled(d, FluidTankConnectivityHandler.isConnected(world, pos, pos.offset(d))); - return super.gatherModelData(builder, world, pos, state).withInitial(CULL_PROPERTY, cullData); - } - - @Override - public List getQuads(BlockState state, Direction side, Random rand, IModelData extraData) { - if (side != null) - return Collections.emptyList(); - - List quads = new ArrayList<>(); - for (Direction d : Iterate.directions) { - if (extraData.hasProperty(CULL_PROPERTY) && extraData.getData(CULL_PROPERTY) - .isCulled(d)) - continue; - quads.addAll(super.getQuads(state, d, rand, extraData)); - } - quads.addAll(super.getQuads(state, null, rand, extraData)); - return quads; - } - - private class CullData { - boolean[] culledFaces; - - public CullData() { - culledFaces = new boolean[4]; - Arrays.fill(culledFaces, false); - } - - void setCulled(Direction face, boolean cull) { - if (face.getAxis() - .isVertical()) - return; - culledFaces[face.getHorizontalIndex()] = cull; - } - - boolean isCulled(Direction face) { - if (face.getAxis() - .isVertical()) - return false; - return culledFaces[face.getHorizontalIndex()]; - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankRenderer.java deleted file mode 100644 index 2818b3a6f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankRenderer.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.fluid.FluidRenderer; -import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; - -public class FluidTankRenderer extends SafeTileEntityRenderer { - - public FluidTankRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(FluidTankTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - if (!te.isController()) - return; - if (!te.window) - return; - - InterpolatedChasingValue fluidLevel = te.fluidLevel; - if (fluidLevel == null) - return; - - float capHeight = 1 / 4f; - float tankHullWidth = 1 / 16f + 1 / 128f; - float minPuddleHeight = 1 / 16f; - float totalHeight = te.height - 2 * capHeight - minPuddleHeight; - - float level = fluidLevel.get(partialTicks); - if (level < 1 / (512f * totalHeight)) - return; - float clampedLevel = MathHelper.clamp(level * totalHeight, 0, totalHeight); - - FluidTank tank = te.tankInventory; - FluidStack fluidStack = tank.getFluid(); - - if (fluidStack.isEmpty()) - return; - - boolean top = fluidStack.getFluid() - .getAttributes() - .isLighterThanAir(); - - float xMin = tankHullWidth; - float xMax = xMin + te.width - 2 * tankHullWidth; - float yMin = totalHeight + capHeight + minPuddleHeight - clampedLevel; - float yMax = yMin + clampedLevel; - - if (top) { - yMin += totalHeight - clampedLevel; - yMax += totalHeight - clampedLevel; - } - - float zMin = tankHullWidth; - float zMax = zMin + te.width - 2 * tankHullWidth; - - ms.push(); - ms.translate(0, clampedLevel - totalHeight, 0); - FluidRenderer.renderTiledFluidBB(fluidStack, xMin, yMin, zMin, xMax, yMax, zMax, buffer, ms, light, false); - ms.pop(); - } - - @Override - public boolean isGlobalRenderer(FluidTankTileEntity te) { - return te.isController(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java deleted file mode 100644 index ccb7403ba..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/fluids/tank/FluidTankTileEntity.java +++ /dev/null @@ -1,462 +0,0 @@ -package com.simibubi.create.content.contraptions.fluids.tank; - -import static java.lang.Math.abs; - -import java.util.List; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.fluids.tank.FluidTankBlock.Shape; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.fluid.SmartFluidTank; -import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidAttributes; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidTank; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.fluids.capability.templates.FluidTank; - -public class FluidTankTileEntity extends SmartTileEntity implements IHaveGoggleInformation { - - private static final int MAX_SIZE = 3; - - protected LazyOptional fluidCapability; - protected boolean forceFluidLevelUpdate; - protected FluidTank tankInventory; - protected BlockPos controller; - protected BlockPos lastKnownPos; - protected boolean updateConnectivity; - protected boolean window; - protected int luminosity; - protected int width; - protected int height; - - private static final int SYNC_RATE = 8; - protected int syncCooldown; - protected boolean queuedSync; - - // For rendering purposes only - InterpolatedChasingValue fluidLevel; - - public FluidTankTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - tankInventory = createInventory(); - fluidCapability = LazyOptional.of(() -> tankInventory); - forceFluidLevelUpdate = true; - updateConnectivity = false; - window = true; - height = 1; - width = 1; - refreshCapability(); - } - - protected SmartFluidTank createInventory() { - return new SmartFluidTank(getCapacityMultiplier(), this::onFluidStackChanged); - } - - protected void updateConnectivity() { - updateConnectivity = false; - if (world.isRemote) - return; - if (!isController()) - return; - FluidTankConnectivityHandler.formTanks(this); - } - - @Override - public void tick() { - super.tick(); - if (syncCooldown > 0) { - syncCooldown--; - if (syncCooldown == 0 && queuedSync) - sendData(); - } - - if (lastKnownPos == null) - lastKnownPos = getPos(); - else if (!lastKnownPos.equals(pos) && pos != null) { - onPositionChanged(); - return; - } - - if (updateConnectivity) - updateConnectivity(); - if (fluidLevel != null) - fluidLevel.tick(); - } - - public boolean isController() { - return controller == null - || pos.getX() == controller.getX() && pos.getY() == controller.getY() && pos.getZ() == controller.getZ(); - } - - @Override - public void initialize() { - super.initialize(); - sendData(); - } - - private void onPositionChanged() { - removeController(true); - lastKnownPos = pos; - } - - protected void onFluidStackChanged(FluidStack newFluidStack) { - if (!hasWorld()) - return; - - FluidAttributes attributes = newFluidStack.getFluid() - .getAttributes(); - int luminosity = (int) (attributes.getLuminosity(newFluidStack) / 1.2f); - boolean reversed = attributes.isLighterThanAir(); - int maxY = (int) ((getFillState() * height) + 1); - - for (int yOffset = 0; yOffset < height; yOffset++) { - boolean isBright = reversed ? (height - yOffset <= maxY) : (yOffset < maxY); - int actualLuminosity = isBright ? luminosity : luminosity > 0 ? 1 : 0; - - for (int xOffset = 0; xOffset < width; xOffset++) { - for (int zOffset = 0; zOffset < width; zOffset++) { - BlockPos pos = this.pos.add(xOffset, yOffset, zOffset); - FluidTankTileEntity tankAt = FluidTankConnectivityHandler.anyTankAt(world, pos); - if (tankAt == null) - continue; - world.updateComparatorOutputLevel(pos, tankAt.getBlockState() - .getBlock()); - if (tankAt.luminosity == actualLuminosity) - continue; - tankAt.setLuminosity(actualLuminosity); - } - } - } - - if (!world.isRemote) { - markDirty(); - sendData(); - } - } - - protected void setLuminosity(int luminosity) { - if (world.isRemote) - return; - if (this.luminosity == luminosity) - return; - this.luminosity = luminosity; - sendData(); - } - - public FluidTankTileEntity getControllerTE() { - if (isController()) - return this; - TileEntity tileEntity = world.getTileEntity(controller); - if (tileEntity instanceof FluidTankTileEntity) - return (FluidTankTileEntity) tileEntity; - return null; - } - - public void applyFluidTankSize(int blocks) { - tankInventory.setCapacity(blocks * getCapacityMultiplier()); - int overflow = tankInventory.getFluidAmount() - tankInventory.getCapacity(); - if (overflow > 0) - tankInventory.drain(overflow, FluidAction.EXECUTE); - forceFluidLevelUpdate = true; - } - - public void removeController(boolean keepFluids) { - if (world.isRemote) - return; - updateConnectivity = true; - if (!keepFluids) - applyFluidTankSize(1); - controller = null; - width = 1; - height = 1; - onFluidStackChanged(tankInventory.getFluid()); - - BlockState state = getBlockState(); - if (FluidTankBlock.isTank(state)) { - state = state.with(FluidTankBlock.BOTTOM, true); - state = state.with(FluidTankBlock.TOP, true); - state = state.with(FluidTankBlock.SHAPE, window ? Shape.WINDOW : Shape.PLAIN); - getWorld().setBlockState(pos, state, 22); - } - - refreshCapability(); - markDirty(); - sendData(); - } - - public void toggleWindows() { - FluidTankTileEntity te = getControllerTE(); - if (te == null) - return; - te.setWindows(!te.window); - } - - public void sendDataImmediately() { - syncCooldown = 0; - queuedSync = false; - sendData(); - } - - @Override - public void sendData() { - if (syncCooldown > 0) { - queuedSync = true; - return; - } - super.sendData(); - queuedSync = false; - syncCooldown = SYNC_RATE; - } - - public void setWindows(boolean window) { - this.window = window; - for (int yOffset = 0; yOffset < height; yOffset++) { - for (int xOffset = 0; xOffset < width; xOffset++) { - for (int zOffset = 0; zOffset < width; zOffset++) { - - BlockPos pos = this.pos.add(xOffset, yOffset, zOffset); - BlockState blockState = world.getBlockState(pos); - if (!FluidTankBlock.isTank(blockState)) - continue; - - Shape shape = Shape.PLAIN; - if (window) { - // SIZE 1: Every tank has a window - if (width == 1) - shape = Shape.WINDOW; - // SIZE 2: Every tank has a corner window - if (width == 2) - shape = xOffset == 0 ? zOffset == 0 ? Shape.WINDOW_NW : Shape.WINDOW_SW - : zOffset == 0 ? Shape.WINDOW_NE : Shape.WINDOW_SE; - // SIZE 3: Tanks in the center have a window - if (width == 3 && abs(abs(xOffset) - abs(zOffset)) == 1) - shape = Shape.WINDOW; - } - - world.setBlockState(pos, blockState.with(FluidTankBlock.SHAPE, shape), 22); - world.getChunkProvider() - .getLightManager() - .checkBlock(pos); - } - } - } - } - - public void setController(BlockPos controller) { - if (world.isRemote) - return; - if (controller.equals(this.controller)) - return; - this.controller = controller; - refreshCapability(); - markDirty(); - sendData(); - } - - private void refreshCapability() { - LazyOptional oldCap = fluidCapability; - fluidCapability = LazyOptional.of(() -> isController() ? tankInventory - : getControllerTE() != null ? getControllerTE().tankInventory : new FluidTank(0)); - oldCap.invalidate(); - } - - public BlockPos getController() { - return isController() ? pos : controller; - } - - private AxisAlignedBB cachedBoundingBox; - - @Override - @OnlyIn(Dist.CLIENT) - public AxisAlignedBB getRenderBoundingBox() { - if (cachedBoundingBox == null) { - if (isController()) - cachedBoundingBox = super.getRenderBoundingBox().expand(width - 1, height - 1, width - 1); - else - cachedBoundingBox = super.getRenderBoundingBox(); - } - return cachedBoundingBox; - } - - @Override - @OnlyIn(Dist.CLIENT) - public double getMaxRenderDistanceSquared() { - int dist = 64 + getMaxHeight() * 2; - return dist * dist; - } - - @Nullable - public FluidTankTileEntity getOtherFluidTankTileEntity(Direction direction) { - TileEntity otherTE = world.getTileEntity(pos.offset(direction)); - if (otherTE instanceof FluidTankTileEntity) - return (FluidTankTileEntity) otherTE; - return null; - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - FluidTankTileEntity controllerTE = getControllerTE(); - if (controllerTE == null) - return false; - return containedFluidTooltip(tooltip, isPlayerSneaking, - controllerTE.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - - BlockPos controllerBefore = controller; - int prevSize = width; - int prevHeight = height; - int prevLum = luminosity; - - updateConnectivity = compound.contains("Uninitialized"); - luminosity = compound.getInt("Luminosity"); - controller = null; - lastKnownPos = null; - - if (compound.contains("LastKnownPos")) - lastKnownPos = NBTUtil.readBlockPos(compound.getCompound("LastKnownPos")); - if (compound.contains("Controller")) - controller = NBTUtil.readBlockPos(compound.getCompound("Controller")); - - if (isController()) { - window = compound.getBoolean("Window"); - width = compound.getInt("Size"); - height = compound.getInt("Height"); - tankInventory.setCapacity(getTotalTankSize() * getCapacityMultiplier()); - tankInventory.readFromNBT(compound.getCompound("TankContent")); - if (tankInventory.getSpace() < 0) - tankInventory.drain(-tankInventory.getSpace(), FluidAction.EXECUTE); - } - - if (compound.contains("ForceFluidLevel") || fluidLevel == null) - fluidLevel = new InterpolatedChasingValue().start(getFillState()) - .withSpeed(1 / 2f); - - if (!clientPacket) - return; - - boolean changeOfController = - controllerBefore == null ? controller != null : !controllerBefore.equals(controller); - if (changeOfController || prevSize != width || prevHeight != height) { - if (hasWorld()) - world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 16); - if (isController()) - tankInventory.setCapacity(getCapacityMultiplier() * getTotalTankSize()); - } - if (isController()) { - float fillState = getFillState(); - if (compound.contains("ForceFluidLevel") || fluidLevel == null) - fluidLevel = new InterpolatedChasingValue().start(fillState); - fluidLevel.target(fillState); - } - if (luminosity != prevLum && hasWorld()) - world.getChunkProvider() - .getLightManager() - .checkBlock(pos); - - if (compound.contains("LazySync")) - fluidLevel.withSpeed(compound.contains("LazySync") ? 1 / 8f : 1 / 2f); - } - - public float getFillState() { - return (float) tankInventory.getFluidAmount() / tankInventory.getCapacity(); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - if (updateConnectivity) - compound.putBoolean("Uninitialized", true); - if (lastKnownPos != null) - compound.put("LastKnownPos", NBTUtil.writeBlockPos(lastKnownPos)); - if (!isController()) - compound.put("Controller", NBTUtil.writeBlockPos(controller)); - if (isController()) { - compound.putBoolean("Window", window); - compound.put("TankContent", tankInventory.writeToNBT(new CompoundNBT())); - compound.putInt("Size", width); - compound.putInt("Height", height); - } - compound.putInt("Luminosity", luminosity); - super.write(compound, clientPacket); - - if (!clientPacket) - return; - if (forceFluidLevelUpdate) - compound.putBoolean("ForceFluidLevel", true); - if (queuedSync) - compound.putBoolean("LazySync", true); - forceFluidLevelUpdate = false; - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - if (!fluidCapability.isPresent()) - refreshCapability(); - if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) - return fluidCapability.cast(); - return super.getCapability(cap, side); - } - - @Override - public void remove() { - super.remove(); - } - - @Override - public void addBehaviours(List behaviours) {} - - public IFluidTank getTankInventory() { - return tankInventory; - } - - public int getTotalTankSize() { - return width * width * height; - } - - public static int getMaxSize() { - return MAX_SIZE; - } - - public static int getCapacityMultiplier() { - return AllConfigs.SERVER.fluids.fluidTankCapacity.get() * 1000; - } - - public static int getMaxHeight() { - return AllConfigs.SERVER.fluids.fluidTankMaxHeight.get(); - } - - public InterpolatedChasingValue getFluidLevel() { - return fluidLevel; - } - - public void setFluidLevel(InterpolatedChasingValue fluidLevel) { - this.fluidLevel = fluidLevel; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java deleted file mode 100644 index 63166fd4e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleConfigScreen.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.simibubi.create.content.contraptions.goggles; - -import java.util.ArrayList; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.gui.AbstractSimiScreen; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.ITextProperties; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; - -public class GoggleConfigScreen extends AbstractSimiScreen { - - private int offsetX; - private int offsetY; - private final List tooltip; - - public GoggleConfigScreen() { - ITextComponent componentSpacing = new StringTextComponent(" "); - tooltip = new ArrayList<>(); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.config.overlay1"))); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.config.overlay2") - .formatted(TextFormatting.GRAY))); - tooltip.add(StringTextComponent.EMPTY); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.config.overlay3"))); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.config.overlay4"))); - tooltip.add(StringTextComponent.EMPTY); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.config.overlay5") - .formatted(TextFormatting.GRAY))); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.config.overlay6") - .formatted(TextFormatting.GRAY))); - tooltip.add(StringTextComponent.EMPTY); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.config.overlay7"))); - tooltip.add(componentSpacing.copy() - .append(Lang.translate("gui.config.overlay8"))); - } - - @Override - protected void init() { - Minecraft mc = Minecraft.getInstance(); - this.width = mc.getWindow() - .getScaledWidth(); - this.height = mc.getWindow() - .getScaledHeight(); - - offsetX = AllConfigs.CLIENT.overlayOffsetX.get(); - offsetY = AllConfigs.CLIENT.overlayOffsetY.get(); - } - - @Override - public void removed() { - AllConfigs.CLIENT.overlayOffsetX.set(offsetX); - AllConfigs.CLIENT.overlayOffsetY.set(offsetY); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - updateOffset(x, y); - - return true; - } - - @Override - public boolean mouseDragged(double p_mouseDragged_1_, double p_mouseDragged_3_, int p_mouseDragged_5_, - double p_mouseDragged_6_, double p_mouseDragged_8_) { - updateOffset(p_mouseDragged_1_, p_mouseDragged_3_); - - return true; - } - - private void updateOffset(double windowX, double windowY) { - offsetX = (int) (windowX - (this.width / 2)); - offsetY = (int) (windowY - (this.height / 2)); - - int titleLinesCount = 1; - int tooltipTextWidth = 0; - for (ITextProperties textLine : tooltip) { - int textLineWidth = getMinecraft().fontRenderer.getWidth(textLine); - if (textLineWidth > tooltipTextWidth) - tooltipTextWidth = textLineWidth; - } - int tooltipHeight = 8; - if (tooltip.size() > 1) { - tooltipHeight += (tooltip.size() - 1) * 10; - if (tooltip.size() > titleLinesCount) - tooltipHeight += 2; // gap between title lines and next lines - } - - offsetX = MathHelper.clamp(offsetX, -(width / 2) - 5, (width / 2) - tooltipTextWidth - 20); - offsetY = MathHelper.clamp(offsetY, -(height / 2) + 17, (height / 2) - tooltipHeight + 5); - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - int posX = this.width / 2 + offsetX; - int posY = this.height / 2 + offsetY; - renderTooltip(ms, tooltip, posX, posY); - - // UIRenderHelper.breadcrumbArrow(ms, 50, 50, 100, 50, 20, 10, 0x80aa9999, 0x10aa9999); - // UIRenderHelper.breadcrumbArrow(ms, 100, 80, 0, -50, 20, -10, 0x80aa9999, 0x10aa9999); - - ItemStack item = AllItems.GOGGLES.asStack(); - GuiGameElement.of(item) - .at(posX + 10, posY - 16, 450) - .render(ms); - // GuiGameElement.of(item).at(0, 0, 450).render(ms); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java deleted file mode 100644 index 3bd7cebd9..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GoggleOverlayRenderer.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.simibubi.create.content.contraptions.goggles; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.outliner.Outline; -import com.simibubi.create.foundation.utility.outliner.Outliner.OutlineEntry; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.ITextProperties; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RenderGameOverlayEvent; -import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber(value = Dist.CLIENT) -public class GoggleOverlayRenderer { - - private static final Map outlines = CreateClient.OUTLINER.getOutlines(); - - @SubscribeEvent - public static void lookingAtBlocksThroughGogglesShowsTooltip(RenderGameOverlayEvent.Post event) { - MatrixStack ms = event.getMatrixStack(); - if (event.getType() != ElementType.HOTBAR) - return; - - RayTraceResult objectMouseOver = Minecraft.getInstance().objectMouseOver; - if (!(objectMouseOver instanceof BlockRayTraceResult)) - return; - - for (OutlineEntry entry : outlines.values()) { - if (!entry.isAlive()) - continue; - Outline outline = entry.getOutline(); - if (outline instanceof ValueBox && !((ValueBox) outline).isPassive) { - return; - } - } - - BlockRayTraceResult result = (BlockRayTraceResult) objectMouseOver; - Minecraft mc = Minecraft.getInstance(); - ClientWorld world = mc.world; - BlockPos pos = result.getPos(); - ItemStack headSlot = mc.player.getItemStackFromSlot(EquipmentSlotType.HEAD); - TileEntity te = world.getTileEntity(pos); - - boolean wearingGoggles = AllItems.GOGGLES.isIn(headSlot); - - boolean hasGoggleInformation = te instanceof IHaveGoggleInformation; - boolean hasHoveringInformation = te instanceof IHaveHoveringInformation; - - boolean goggleAddedInformation = false; - boolean hoverAddedInformation = false; - - List tooltip = new ArrayList<>(); - - if (hasGoggleInformation && wearingGoggles) { - IHaveGoggleInformation gte = (IHaveGoggleInformation) te; - goggleAddedInformation = gte.addToGoggleTooltip(tooltip, mc.player.isSneaking()); - } - - if (hasHoveringInformation) { - if (!tooltip.isEmpty()) - tooltip.add(StringTextComponent.EMPTY); - IHaveHoveringInformation hte = (IHaveHoveringInformation) te; - hoverAddedInformation = hte.addToTooltip(tooltip, mc.player.isSneaking()); - - if (goggleAddedInformation && !hoverAddedInformation) - tooltip.remove(tooltip.size() - 1); - } - - if (te instanceof IDisplayAssemblyExceptions) { - boolean exceptionAdded = ((IDisplayAssemblyExceptions) te).addExceptionToTooltip(tooltip); - if (exceptionAdded) { - hasHoveringInformation = true; - hoverAddedInformation = true; - } - } - - // break early if goggle or hover returned false when present - if ((hasGoggleInformation && !goggleAddedInformation) && (hasHoveringInformation && !hoverAddedInformation)) - return; - - // check for piston poles if goggles are worn - BlockState state = world.getBlockState(pos); - if (wearingGoggles && AllBlocks.PISTON_EXTENSION_POLE.has(state)) { - Direction[] directions = Iterate.directionsInAxis(state.get(PistonExtensionPoleBlock.FACING) - .getAxis()); - int poles = 1; - boolean pistonFound = false; - for (Direction dir : directions) { - int attachedPoles = PistonExtensionPoleBlock.PlacementHelper.get() - .attachedPoles(world, pos, dir); - poles += attachedPoles; - pistonFound |= world.getBlockState(pos.offset(dir, attachedPoles + 1)) - .getBlock() instanceof MechanicalPistonBlock; - } - - if (!pistonFound) - return; - if (!tooltip.isEmpty()) - tooltip.add(StringTextComponent.EMPTY); - - tooltip.add(IHaveGoggleInformation.componentSpacing.copy() - .append(Lang.translate("gui.goggles.pole_length")) - .append(new StringTextComponent(" " + poles))); - } - - if (tooltip.isEmpty()) - return; - - ms.push(); - Screen tooltipScreen = new TooltipScreen(null); - tooltipScreen.init(mc, mc.getWindow() - .getScaledWidth(), - mc.getWindow() - .getScaledHeight()); - - int titleLinesCount = 1; - int tooltipTextWidth = 0; - for (ITextProperties textLine : tooltip) { - int textLineWidth = mc.fontRenderer.getWidth(textLine); - if (textLineWidth > tooltipTextWidth) - tooltipTextWidth = textLineWidth; - } - - int tooltipHeight = 8; - if (tooltip.size() > 1) { - tooltipHeight += (tooltip.size() - 1) * 10; - if (tooltip.size() > titleLinesCount) - tooltipHeight += 2; // gap between title lines and next lines - } - - int posX = tooltipScreen.width / 2 + AllConfigs.CLIENT.overlayOffsetX.get(); - int posY = tooltipScreen.height / 2 + AllConfigs.CLIENT.overlayOffsetY.get(); - - posX = Math.min(posX, tooltipScreen.width - tooltipTextWidth - 20); - posY = Math.min(posY, tooltipScreen.height - tooltipHeight - 20); - - tooltipScreen.renderTooltip(ms, tooltip, posX, posY); - - ItemStack item = AllItems.GOGGLES.asStack(); - GuiGameElement.of(item) - .at(posX + 10, posY - 16, 450) - .render(ms); - ms.pop(); - } - - public static final class TooltipScreen extends Screen { - public TooltipScreen(ITextComponent p_i51108_1_) { - super(p_i51108_1_); - } - - @Override - public void init(Minecraft mc, int width, int height) { - this.client = mc; - this.itemRenderer = mc.getItemRenderer(); - this.textRenderer = mc.fontRenderer; - this.width = width; - this.height = height; - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesItem.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesItem.java deleted file mode 100644 index 3f917e6be..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesItem.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.content.contraptions.goggles; - -import com.simibubi.create.AllItems; - -import net.minecraft.block.DispenserBlock; -import net.minecraft.entity.MobEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.ArmorItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.world.World; - -public class GogglesItem extends Item { - - public GogglesItem(Properties properties) { - super(properties); - DispenserBlock.registerDispenseBehavior(this, ArmorItem.DISPENSER_BEHAVIOR); - } - - @Override - public EquipmentSlotType getEquipmentSlot(ItemStack stack) { - return EquipmentSlotType.HEAD; - } - - public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) { - ItemStack itemstack = playerIn.getHeldItem(handIn); - EquipmentSlotType equipmentslottype = MobEntity.getSlotForItemStack(itemstack); - ItemStack itemstack1 = playerIn.getItemStackFromSlot(equipmentslottype); - if (itemstack1.isEmpty()) { - playerIn.setItemStackToSlot(equipmentslottype, itemstack.copy()); - itemstack.setCount(0); - return new ActionResult<>(ActionResultType.SUCCESS, itemstack); - } else { - return new ActionResult<>(ActionResultType.FAIL, itemstack); - } - } - - public static boolean canSeeParticles(PlayerEntity player) { - for (ItemStack itemStack : player.getArmorInventoryList()) - if (AllItems.GOGGLES.isIn(itemStack)) - return true; - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesModel.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesModel.java deleted file mode 100644 index 9ba2b63dd..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/GogglesModel.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.simibubi.create.content.contraptions.goggles; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraftforge.client.model.BakedModelWrapper; - -public class GogglesModel extends BakedModelWrapper { - - public GogglesModel(IBakedModel template) { - super(template); - } - - @Override - public IBakedModel handlePerspective(TransformType cameraTransformType, MatrixStack mat) { - if (cameraTransformType == TransformType.HEAD) - return AllBlockPartials.GOGGLES.get() - .handlePerspective(cameraTransformType, mat); - return super.handlePerspective(cameraTransformType, mat); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java deleted file mode 100644 index af546a856..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveGoggleInformation.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.simibubi.create.content.contraptions.goggles; - -import java.text.NumberFormat; -import java.util.List; -import java.util.Locale; -import java.util.Optional; - -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; - -/* -* Implement this Interface in the TileEntity class that wants to add info to the screen -* */ -public interface IHaveGoggleInformation { - - Format numberFormat = new Format(); - String spacing = " "; - ITextComponent componentSpacing = new StringTextComponent(spacing); - - /** - * this method will be called when looking at a TileEntity that implemented this - * interface - * - * @return {@code true} if the tooltip creation was successful and should be displayed, - * or {@code false} if the overlay should not be displayed - * */ - default boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking){ - return false; - } - - static String format(double d) { - return numberFormat.get() - .format(d).replace("\u00A0", " "); - } - - default boolean containedFluidTooltip(List tooltip, boolean isPlayerSneaking, LazyOptional handler) { - tooltip.add(componentSpacing.copy().append(Lang.translate("gui.goggles.fluid_container"))); - TranslationTextComponent mb = Lang.translate("generic.unit.millibuckets"); - Optional resolve = handler.resolve(); - if (!resolve.isPresent()) - return false; - - IFluidHandler tank = resolve.get(); - if (tank.getTanks() == 0) - return false; - - ITextComponent indent = new StringTextComponent(spacing + " "); - - boolean isEmpty = true; - for (int i = 0; i < tank.getTanks(); i++) { - FluidStack fluidStack = tank.getFluidInTank(i); - if (fluidStack.isEmpty()) - continue; - - ITextComponent fluidName = new TranslationTextComponent(fluidStack.getTranslationKey()).formatted(TextFormatting.GRAY); - ITextComponent contained = new StringTextComponent(format(fluidStack.getAmount())).append(mb).formatted(TextFormatting.GOLD); - ITextComponent slash = new StringTextComponent(" / ").formatted(TextFormatting.GRAY); - ITextComponent capacity = new StringTextComponent(format(tank.getTankCapacity(i))).append(mb).formatted(TextFormatting.DARK_GRAY); - - tooltip.add(indent.copy() - .append(fluidName)); - tooltip.add(indent.copy() - .append(contained) - .append(slash) - .append(capacity)); - - isEmpty = false; - } - - if (tank.getTanks() > 1) { - if (isEmpty) - tooltip.remove(tooltip.size() - 1); - return true; - } - - if (!isEmpty) - return true; - - ITextComponent capacity = Lang.translate("gui.goggles.fluid_container.capacity").formatted(TextFormatting.GRAY); - ITextComponent amount = new StringTextComponent(format(tank.getTankCapacity(0))).append(mb).formatted(TextFormatting.GOLD); - - tooltip.add(indent.copy() - .append(capacity) - .append(amount)); - return true; - } - - class Format { - - private NumberFormat format = NumberFormat.getNumberInstance(Locale.ROOT);; - - private Format() {} - - public NumberFormat get() { - return format; - } - - public void update() { - format = NumberFormat.getInstance(Minecraft.getInstance() - .getLanguageManager() - .getCurrentLanguage() - .getJavaLocale()); - format.setMaximumFractionDigits(2); - format.setMinimumFractionDigits(0); - format.setGroupingUsed(true); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveHoveringInformation.java b/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveHoveringInformation.java deleted file mode 100644 index e4531bc91..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/goggles/IHaveHoveringInformation.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.simibubi.create.content.contraptions.goggles; - -import java.util.List; - -import net.minecraft.util.text.ITextComponent; - -/* -* Implement this Interface in the TileEntity class that wants to add info to the screen -* */ -public interface IHaveHoveringInformation { - - default boolean addToTooltip(List tooltip, boolean isPlayerSneaking){ - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticle.java b/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticle.java deleted file mode 100644 index d4399cde7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticle.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import javax.annotation.Nonnull; - -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.fan.IAirCurrentSource; -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.Blocks; -import net.minecraft.client.particle.IAnimatedSprite; -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.client.particle.IParticleRenderType; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.SimpleAnimatedParticle; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class AirFlowParticle extends SimpleAnimatedParticle { - - private final IAirCurrentSource source; - - protected AirFlowParticle(ClientWorld world, IAirCurrentSource source, double x, double y, double z, - IAnimatedSprite sprite) { - super(world, x, y, z, sprite, world.rand.nextFloat() * .5f); - this.source = source; - this.particleScale *= 0.75F; - this.maxAge = 40; - canCollide = false; - selectSprite(7); - Vector3d offset = VecHelper.offsetRandomly(Vector3d.ZERO, Create.RANDOM, .25f); - this.setPosition(posX + offset.x, posY + offset.y, posZ + offset.z); - this.prevPosX = posX; - this.prevPosY = posY; - this.prevPosZ = posZ; - setAlphaF(.25f); - } - - @Nonnull - public IParticleRenderType getRenderType() { - return IParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; - } - - @Override - public void tick() { - if (source == null || source.isSourceRemoved()) { - dissipate(); - return; - } - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if (this.age++ >= this.maxAge) { - this.setExpired(); - } else { - if (source.getAirCurrent() == null || !source.getAirCurrent().bounds.grow(.25f).contains(posX, posY, posZ)) { - dissipate(); - return; - } - - Vector3d directionVec = Vector3d.of(source.getAirCurrent().direction.getDirectionVec()); - Vector3d motion = directionVec.scale(1 / 8f); - if (!source.getAirCurrent().pushing) - motion = motion.scale(-1); - - double distance = new Vector3d(posX, posY, posZ).subtract(VecHelper.getCenterOf(source.getAirCurrentPos())) - .mul(directionVec).length() - .5f; - if (distance > source.getAirCurrent().maxDistance + 1 || distance < -.25f) { - dissipate(); - return; - } - motion = motion.scale(source.getAirCurrent().maxDistance - (distance - 1f)).scale(.5f); - selectSprite((int) MathHelper.clamp((distance / source.getAirCurrent().maxDistance) * 8 + world.rand.nextInt(4), - 0, 7)); - - morphType(distance); - - motionX = motion.x; - motionY = motion.y; - motionZ = motion.z; - - if (this.onGround) { - this.motionX *= 0.7; - this.motionZ *= 0.7; - } - this.move(this.motionX, this.motionY, this.motionZ); - - } - - } - - public void morphType(double distance) { - if(source.getAirCurrent() == null) - return; - InWorldProcessing.Type type = source.getAirCurrent().getSegmentAt((float) distance); - - if (type == InWorldProcessing.Type.SPLASHING) { - setColor(ColorHelper.mixColors(0x4499FF, 0x2277FF, world.rand.nextFloat())); - setAlphaF(1f); - selectSprite(world.rand.nextInt(3)); - if (world.rand.nextFloat() < 1 / 32f) - world.addParticle(ParticleTypes.BUBBLE, posX, posY, posZ, motionX * .125f, motionY * .125f, - motionZ * .125f); - if (world.rand.nextFloat() < 1 / 32f) - world.addParticle(ParticleTypes.BUBBLE_POP, posX, posY, posZ, motionX * .125f, motionY * .125f, - motionZ * .125f); - } - - if (type == InWorldProcessing.Type.SMOKING) { - setColor(ColorHelper.mixColors(0x0, 0x555555, world.rand.nextFloat())); - setAlphaF(1f); - selectSprite(world.rand.nextInt(3)); - if (world.rand.nextFloat() < 1 / 32f) - world.addParticle(ParticleTypes.SMOKE, posX, posY, posZ, motionX * .125f, motionY * .125f, - motionZ * .125f); - if (world.rand.nextFloat() < 1 / 32f) - world.addParticle(ParticleTypes.LARGE_SMOKE, posX, posY, posZ, motionX * .125f, motionY * .125f, - motionZ * .125f); - } - - if (type == InWorldProcessing.Type.BLASTING) { - setColor(ColorHelper.mixColors(0xFF4400, 0xFF8855, world.rand.nextFloat())); - setAlphaF(.5f); - selectSprite(world.rand.nextInt(3)); - if (world.rand.nextFloat() < 1 / 32f) - world.addParticle(ParticleTypes.FLAME, posX, posY, posZ, motionX * .25f, motionY * .25f, - motionZ * .25f); - if (world.rand.nextFloat() < 1 / 16f) - world.addParticle(new BlockParticleData(ParticleTypes.BLOCK, Blocks.LAVA.getDefaultState()), posX, posY, - posZ, motionX * .25f, motionY * .25f, motionZ * .25f); - } - - if (type == null) { - setColor(0xEEEEEE); - setAlphaF(.25f); - setSize(.2f, .2f); - } - } - - private void dissipate() { - setExpired(); - } - - public int getBrightnessForRender(float partialTick) { - BlockPos blockpos = new BlockPos(this.posX, this.posY, this.posZ); - return this.world.isBlockPresent(blockpos) ? WorldRenderer.getLightmapCoordinates(world, blockpos) : 0; - } - - private void selectSprite(int index) { - setSprite(field_217584_C.get(index, 8)); - } - - public static class Factory implements IParticleFactory { - private final IAnimatedSprite spriteSet; - - public Factory(IAnimatedSprite animatedSprite) { - this.spriteSet = animatedSprite; - } - - public Particle makeParticle(AirFlowParticleData data, ClientWorld worldIn, double x, double y, double z, - double xSpeed, double ySpeed, double zSpeed) { - TileEntity te = worldIn.getTileEntity(new BlockPos(data.posX, data.posY, data.posZ)); - if (!(te instanceof IAirCurrentSource)) - te = null; - return new AirFlowParticle(worldIn, (IAirCurrentSource) te, x, y, z, this.spriteSet); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticleData.java deleted file mode 100644 index 74f6d9a32..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/AirFlowParticleData.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import java.util.Locale; - -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.AllParticleTypes; - -import net.minecraft.client.particle.ParticleManager.IParticleMetaFactory; -import net.minecraft.network.PacketBuffer; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleType; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class AirFlowParticleData implements IParticleData, ICustomParticleDataWithSprite { - - public static final Codec CODEC = RecordCodecBuilder.create(i -> - i.group( - Codec.INT.fieldOf("x").forGetter(p -> p.posX), - Codec.INT.fieldOf("y").forGetter(p -> p.posY), - Codec.INT.fieldOf("z").forGetter(p -> p.posZ)) - .apply(i, AirFlowParticleData::new)); - - public static final IParticleData.IDeserializer DESERIALIZER = new IParticleData.IDeserializer() { - public AirFlowParticleData deserialize(ParticleType particleTypeIn, StringReader reader) - throws CommandSyntaxException { - reader.expect(' '); - int x = reader.readInt(); - reader.expect(' '); - int y = reader.readInt(); - reader.expect(' '); - int z = reader.readInt(); - return new AirFlowParticleData(x, y, z); - } - - public AirFlowParticleData read(ParticleType particleTypeIn, PacketBuffer buffer) { - return new AirFlowParticleData(buffer.readInt(), buffer.readInt(), buffer.readInt()); - } - }; - - final int posX; - final int posY; - final int posZ; - - public AirFlowParticleData(Vector3i pos) { - this(pos.getX(), pos.getY(), pos.getZ()); - } - - public AirFlowParticleData(int posX, int posY, int posZ) { - this.posX = posX; - this.posY = posY; - this.posZ = posZ; - } - - public AirFlowParticleData() { - this(0, 0, 0); - } - - @Override - public ParticleType getType() { - return AllParticleTypes.AIR_FLOW.get(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(posX); - buffer.writeInt(posY); - buffer.writeInt(posZ); - } - - @Override - public String getParameters() { - return String.format(Locale.ROOT, "%s %d %d %d", AllParticleTypes.AIR_FLOW.parameter(), posX, posY, posZ); - } - - @Override - public IDeserializer getDeserializer() { - return DESERIALIZER; - } - - @Override - public Codec getCodec(ParticleType type) { - return CODEC; - } - - @Override - @OnlyIn(Dist.CLIENT) - public IParticleMetaFactory getMetaFactory() { - return AirFlowParticle.Factory::new; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/AirParticle.java b/src/main/java/com/simibubi/create/content/contraptions/particle/AirParticle.java deleted file mode 100644 index 31d219f96..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/AirParticle.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.particle.IAnimatedSprite; -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.client.particle.IParticleRenderType; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.SimpleAnimatedParticle; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class AirParticle extends SimpleAnimatedParticle { - - private float originX, originY, originZ; - private float targetX, targetY, targetZ; - private float drag; - - private float twirlRadius, twirlAngleOffset; - private Axis twirlAxis; - - protected AirParticle(ClientWorld world, AirParticleData data, double x, double y, double z, double dx, double dy, - double dz, IAnimatedSprite sprite) { - super(world, x, y, z, sprite, world.rand.nextFloat() * .5f); - particleScale *= 0.75F; - canCollide = false; - - setPosition(posX, posY, posZ); - originX = (float) (prevPosX = posX); - originY = (float) (prevPosY = posY); - originZ = (float) (prevPosZ = posZ); - targetX = (float) (x + dx); - targetY = (float) (y + dy); - targetZ = (float) (z + dz); - drag = data.drag; - - twirlRadius = Create.RANDOM.nextFloat() / 6; - twirlAngleOffset = Create.RANDOM.nextFloat() * 360; - twirlAxis = Create.RANDOM.nextBoolean() ? Axis.X : Axis.Z; - - // speed in m/ticks - maxAge = Math.min((int) (new Vector3d(dx, dy, dz).length() / data.speed), 60); - selectSprite(7); - setAlphaF(.25f); - } - - public IParticleRenderType getRenderType() { - return IParticleRenderType.PARTICLE_SHEET_TRANSLUCENT; - } - - @Override - public void tick() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if (this.age++ >= this.maxAge) { - this.setExpired(); - return; - } - - float progress = (float) Math.pow(((float) age) / maxAge, drag); - float angle = (progress * 2 * 360 + twirlAngleOffset) % 360; - Vector3d twirl = VecHelper.rotate(new Vector3d(0, twirlRadius, 0), angle, twirlAxis); - - float x = (float) (MathHelper.lerp(progress, originX, targetX) + twirl.x); - float y = (float) (MathHelper.lerp(progress, originY, targetY) + twirl.y); - float z = (float) (MathHelper.lerp(progress, originZ, targetZ) + twirl.z); - - motionX = x - posX; - motionY = y - posY; - motionZ = z - posZ; - - selectSpriteWithAge(field_217584_C); - this.move(this.motionX, this.motionY, this.motionZ); - } - - public int getBrightnessForRender(float partialTick) { - BlockPos blockpos = new BlockPos(this.posX, this.posY, this.posZ); - return this.world.isBlockPresent(blockpos) ? WorldRenderer.getLightmapCoordinates(world, blockpos) : 0; - } - - private void selectSprite(int index) { - setSprite(field_217584_C.get(index, 8)); - } - - public static class Factory implements IParticleFactory { - private final IAnimatedSprite spriteSet; - - public Factory(IAnimatedSprite animatedSprite) { - this.spriteSet = animatedSprite; - } - - public Particle makeParticle(AirParticleData data, ClientWorld worldIn, double x, double y, double z, double xSpeed, - double ySpeed, double zSpeed) { - return new AirParticle(worldIn, data, x, y, z, xSpeed, ySpeed, zSpeed, this.spriteSet); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/AirParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/particle/AirParticleData.java deleted file mode 100644 index 7159756f8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/AirParticleData.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import java.util.Locale; - -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.AllParticleTypes; - -import net.minecraft.client.particle.ParticleManager.IParticleMetaFactory; -import net.minecraft.network.PacketBuffer; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class AirParticleData implements IParticleData, ICustomParticleDataWithSprite { - - public static final Codec CODEC = RecordCodecBuilder.create(i -> - i.group( - Codec.FLOAT.fieldOf("drag").forGetter(p -> p.drag), - Codec.FLOAT.fieldOf("speed").forGetter(p -> p.speed)) - .apply(i, AirParticleData::new)); - - public static final IParticleData.IDeserializer DESERIALIZER = - new IParticleData.IDeserializer() { - public AirParticleData deserialize(ParticleType particleTypeIn, StringReader reader) - throws CommandSyntaxException { - reader.expect(' '); - float drag = reader.readFloat(); - reader.expect(' '); - float speed = reader.readFloat(); - return new AirParticleData(drag, speed); - } - - public AirParticleData read(ParticleType particleTypeIn, PacketBuffer buffer) { - return new AirParticleData(buffer.readFloat(), buffer.readFloat()); - } - }; - - float drag; - float speed; - - public AirParticleData(float drag, float speed) { - this.drag = drag; - this.speed = speed; - } - - public AirParticleData() { - this(0, 0); - } - - @Override - public ParticleType getType() { - return AllParticleTypes.AIR.get(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeFloat(drag); - buffer.writeFloat(speed); - } - - @Override - public String getParameters() { - return String.format(Locale.ROOT, "%s %f %f", AllParticleTypes.AIR.parameter(), drag, speed); - } - - @Override - public IDeserializer getDeserializer() { - return DESERIALIZER; - } - - @Override - public Codec getCodec(ParticleType type) { - return CODEC; - } - - @Override - @OnlyIn(Dist.CLIENT) - public IParticleMetaFactory getMetaFactory() { - return AirParticle.Factory::new; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/CubeParticle.java b/src/main/java/com/simibubi/create/content/contraptions/particle/CubeParticle.java deleted file mode 100644 index f50fdf30d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/CubeParticle.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.IVertexBuilder; - -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.client.particle.IParticleRenderType; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class CubeParticle extends Particle { - - public static final Vector3d[] CUBE = { - // TOP - new Vector3d(1, 1, -1), new Vector3d(1, 1, 1), new Vector3d(-1, 1, 1), new Vector3d(-1, 1, -1), - - // BOTTOM - new Vector3d(-1, -1, -1), new Vector3d(-1, -1, 1), new Vector3d(1, -1, 1), new Vector3d(1, -1, -1), - - // FRONT - new Vector3d(-1, -1, 1), new Vector3d(-1, 1, 1), new Vector3d(1, 1, 1), new Vector3d(1, -1, 1), - - // BACK - new Vector3d(1, -1, -1), new Vector3d(1, 1, -1), new Vector3d(-1, 1, -1), new Vector3d(-1, -1, -1), - - // LEFT - new Vector3d(-1, -1, -1), new Vector3d(-1, 1, -1), new Vector3d(-1, 1, 1), new Vector3d(-1, -1, 1), - - // RIGHT - new Vector3d(1, -1, 1), new Vector3d(1, 1, 1), new Vector3d(1, 1, -1), new Vector3d(1, -1, -1) }; - - public static final Vector3d[] CUBE_NORMALS = { - // modified normals for the sides - new Vector3d(0, 1, 0), new Vector3d(0, -1, 0), new Vector3d(0, 0, 1), new Vector3d(0, 0, 1), new Vector3d(0, 0, 1), - new Vector3d(0, 0, 1), - - /* - * new Vector3d(0, 1, 0), new Vector3d(0, -1, 0), new Vector3d(0, 0, 1), new Vector3d(0, 0, - * -1), new Vector3d(-1, 0, 0), new Vector3d(1, 0, 0) - */ - }; - - private static final IParticleRenderType renderType = new IParticleRenderType() { - @Override - public void beginRender(BufferBuilder builder, TextureManager textureManager) { - RenderSystem.disableTexture(); - - // transparent, additive blending - RenderSystem.depthMask(false); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ONE); - RenderSystem.enableLighting(); - RenderSystem.enableColorMaterial(); - - // opaque -// RenderSystem.depthMask(true); -// RenderSystem.disableBlend(); -// RenderSystem.enableLighting(); - - builder.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); - } - - @Override - public void finishRender(Tessellator tessellator) { - tessellator.draw(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, - GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.disableLighting(); - RenderSystem.enableTexture(); - } - }; - - protected float scale; - protected boolean hot; - - public CubeParticle(ClientWorld world, double x, double y, double z, double motionX, double motionY, double motionZ) { - super(world, x, y, z); - this.motionX = motionX; - this.motionY = motionY; - this.motionZ = motionZ; - - setScale(0.2F); - } - - public void setScale(float scale) { - this.scale = scale; - this.setSize(scale * 0.5f, scale * 0.5f); - } - - public void averageAge(int age) { - this.maxAge = (int) (age + (rand.nextDouble() * 2D - 1D) * 8); - } - - public void setHot(boolean hot) { - this.hot = hot; - } - - private boolean billowing = false; - - @Override - public void tick() { - if (this.hot && this.age > 0) { - if (this.prevPosY == this.posY) { - billowing = true; - field_21507 = false; // Prevent motion being ignored due to vertical collision - if (this.motionX == 0 && this.motionZ == 0) { - Vector3d diff = Vector3d.of(new BlockPos(posX, posY, posZ)).add(0.5, 0.5, 0.5).subtract(posX, posY, posZ); - this.motionX = -diff.x * 0.1; - this.motionZ = -diff.z * 0.1; - } - this.motionX *= 1.1; - this.motionY *= 0.9; - this.motionZ *= 1.1; - } else if (billowing) { - this.motionY *= 1.2; - } - } - super.tick(); - } - - @Override - public void buildGeometry(IVertexBuilder builder, ActiveRenderInfo renderInfo, float p_225606_3_) { - Vector3d projectedView = renderInfo.getProjectedView(); - float lerpedX = (float) (MathHelper.lerp(p_225606_3_, this.prevPosX, this.posX) - projectedView.getX()); - float lerpedY = (float) (MathHelper.lerp(p_225606_3_, this.prevPosY, this.posY) - projectedView.getY()); - float lerpedZ = (float) (MathHelper.lerp(p_225606_3_, this.prevPosZ, this.posZ) - projectedView.getZ()); - - // int light = getBrightnessForRender(p_225606_3_); - int light = 15728880;// 15<<20 && 15<<4 - double ageMultiplier = 1 - Math.pow(age, 3) / Math.pow(maxAge, 3); - - for (int i = 0; i < 6; i++) { - // 6 faces to a cube - for (int j = 0; j < 4; j++) { - Vector3d vec = CUBE[i * 4 + j]; - vec = vec - /* .rotate(?) */ - .scale(scale * ageMultiplier) - .add(lerpedX, lerpedY, lerpedZ); - - Vector3d normal = CUBE_NORMALS[i]; - builder.vertex(vec.x, vec.y, vec.z) - .color(particleRed, particleGreen, particleBlue, particleAlpha) - .texture(0, 0) - .light(light) - .normal((float) normal.x, (float) normal.y, (float) normal.z) - .endVertex(); - } - } - } - - @Override - public IParticleRenderType getRenderType() { - return renderType; - } - - public static class Factory implements IParticleFactory { - - public Factory() {} - - @Override - public Particle makeParticle(CubeParticleData data, ClientWorld world, double x, double y, double z, double motionX, - double motionY, double motionZ) { - CubeParticle particle = new CubeParticle(world, x, y, z, motionX, motionY, motionZ); - particle.setColor(data.r, data.g, data.b); - particle.setScale(data.scale); - particle.averageAge(data.avgAge); - particle.setHot(data.hot); - return particle; - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/CubeParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/particle/CubeParticleData.java deleted file mode 100644 index 442a68b49..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/CubeParticleData.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import java.util.Locale; - -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.AllParticleTypes; - -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.network.PacketBuffer; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class CubeParticleData implements IParticleData, ICustomParticleData { - - public static final Codec CODEC = RecordCodecBuilder.create(i -> - i.group( - Codec.FLOAT.fieldOf("r").forGetter(p -> p.r), - Codec.FLOAT.fieldOf("g").forGetter(p -> p.g), - Codec.FLOAT.fieldOf("b").forGetter(p -> p.b), - Codec.FLOAT.fieldOf("scale").forGetter(p -> p.scale), - Codec.INT.fieldOf("avgAge").forGetter(p -> p.avgAge), - Codec.BOOL.fieldOf("hot").forGetter(p -> p.hot)) - .apply(i, CubeParticleData::new)); - - public static final IParticleData.IDeserializer DESERIALIZER = new IParticleData.IDeserializer() { - @Override - public CubeParticleData deserialize(ParticleType type, StringReader reader) throws CommandSyntaxException { - reader.expect(' '); - float r = reader.readFloat(); - reader.expect(' '); - float g = reader.readFloat(); - reader.expect(' '); - float b = reader.readFloat(); - reader.expect(' '); - float scale = reader.readFloat(); - reader.expect(' '); - int avgAge = reader.readInt(); - reader.expect(' '); - boolean hot = reader.readBoolean(); - return new CubeParticleData(r, g, b, scale, avgAge, hot); - } - - @Override - public CubeParticleData read(ParticleType type, PacketBuffer buffer) { - return new CubeParticleData(buffer.readFloat(), buffer.readFloat(), buffer.readFloat(), buffer.readFloat(), buffer.readInt(), buffer.readBoolean()); - } - }; - - final float r; - final float g; - final float b; - final float scale; - final int avgAge; - final boolean hot; - - public CubeParticleData(float r, float g, float b, float scale, int avgAge, boolean hot) { - this.r = r; - this.g = g; - this.b = b; - this.scale = scale; - this.avgAge = avgAge; - this.hot = hot; - } - - public CubeParticleData() { - this(0, 0, 0, 0, 0, false); - } - - @Override - public IDeserializer getDeserializer() { - return DESERIALIZER; - } - - @Override - public Codec getCodec(ParticleType type) { - return CODEC; - } - - @Override - @OnlyIn(Dist.CLIENT) - public IParticleFactory getFactory() { - return new CubeParticle.Factory(); - } - - @Override - public ParticleType getType() { - return AllParticleTypes.CUBE.get(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeFloat(r); - buffer.writeFloat(g); - buffer.writeFloat(b); - buffer.writeFloat(scale); - buffer.writeInt(avgAge); - buffer.writeBoolean(hot); - } - - @Override - public String getParameters() { - return String.format(Locale.ROOT, "%s %f %f %f %f %d %s", AllParticleTypes.CUBE.parameter(), r, g, b, scale, avgAge, hot); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticle.java b/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticle.java deleted file mode 100644 index 44dcdaa9a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticle.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import javax.annotation.ParametersAreNonnullByDefault; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.client.particle.IAnimatedSprite; -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.client.particle.IParticleRenderType; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.SimpleAnimatedParticle; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.math.MathHelper; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class HeaterParticle extends SimpleAnimatedParticle { - - private final IAnimatedSprite animatedSprite; - - public HeaterParticle(ClientWorld worldIn, float r, float g, float b, double x, double y, double z, double vx, double vy, - double vz, IAnimatedSprite spriteSet) { - super(worldIn, x, y, z, spriteSet, worldIn.rand.nextFloat() * .5f); - - this.animatedSprite = spriteSet; - - this.motionX = this.motionX * (double) 0.01F + vx; - this.motionY = this.motionY * (double) 0.01F + vy; - this.motionZ = this.motionZ * (double) 0.01F + vz; - - this.particleRed = r; - this.particleGreen = g; - this.particleBlue = b; - - this.posX += (this.rand.nextFloat() - this.rand.nextFloat()) * 0.05F; - this.posY += (this.rand.nextFloat() - this.rand.nextFloat()) * 0.05F; - this.posZ += (this.rand.nextFloat() - this.rand.nextFloat()) * 0.05F; - - this.maxAge = (int) (8.0D / (Math.random() * 0.8D + 0.2D)) + 4; - this.particleScale *= 1.875F; - this.selectSpriteWithAge(animatedSprite); - - } - - @Override - public IParticleRenderType getRenderType() { - return IParticleRenderType.PARTICLE_SHEET_LIT; - } - - @Override - public float getScale(float p_217561_1_) { - float f = ((float) this.age + p_217561_1_) / (float) this.maxAge; - return this.particleScale * (1.0F - f * f * 0.5F); - } - - @Override - public void move(double x, double y, double z) { - this.setBoundingBox(this.getBoundingBox() - .offset(x, y, z)); - this.resetPositionToBB(); - } - - @Override - public int getBrightnessForRender(float p_189214_1_) { - float f = ((float) this.age + p_189214_1_) / (float) this.maxAge; - f = MathHelper.clamp(f, 0.0F, 1.0F); - int i = super.getBrightnessForRender(p_189214_1_); - int j = i & 255; - int k = i >> 16 & 255; - j = j + (int) (f * 15.0F * 16.0F); - if (j > 240) { - j = 240; - } - - return j | k << 16; - } - - @Override - public void tick() { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - if (this.age++ >= this.maxAge) { - this.setExpired(); - } else { - this.selectSpriteWithAge(animatedSprite); - this.move(this.motionX, this.motionY, this.motionZ); - this.motionX *= (double) 0.96F; - this.motionY *= (double) 0.96F; - this.motionZ *= (double) 0.96F; - if (this.onGround) { - this.motionX *= (double) 0.7F; - this.motionZ *= (double) 0.7F; - } - } - } - - public static class Factory implements IParticleFactory { - private final IAnimatedSprite spriteSet; - - public Factory(IAnimatedSprite animatedSprite) { - this.spriteSet = animatedSprite; - } - - @Override - public Particle makeParticle(HeaterParticleData data, ClientWorld worldIn, double x, double y, double z, double vx, - double vy, double vz) { - return new HeaterParticle(worldIn, data.r, data.g, data.b, x, y, z, vx, vy, vz, this.spriteSet); - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticleData.java deleted file mode 100644 index a547ba995..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/HeaterParticleData.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import java.util.Locale; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.AllParticleTypes; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.client.particle.ParticleManager.IParticleMetaFactory; -import net.minecraft.network.PacketBuffer; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class HeaterParticleData implements IParticleData, ICustomParticleDataWithSprite { - - public static final Codec CODEC = RecordCodecBuilder.create(i -> - i.group( - Codec.FLOAT.fieldOf("r").forGetter(p -> p.r), - Codec.FLOAT.fieldOf("g").forGetter(p -> p.g), - Codec.FLOAT.fieldOf("b").forGetter(p -> p.b)) - .apply(i, HeaterParticleData::new)); - - public static final IParticleData.IDeserializer DESERIALIZER = - new IParticleData.IDeserializer() { - @Override - public HeaterParticleData deserialize(ParticleType arg0, StringReader reader) - throws CommandSyntaxException { - reader.expect(' '); - float r = reader.readFloat(); - reader.expect(' '); - float g = reader.readFloat(); - reader.expect(' '); - float b = reader.readFloat(); - return new HeaterParticleData(r, g, b); - } - - @Override - public HeaterParticleData read(ParticleType type, PacketBuffer buffer) { - return new HeaterParticleData(buffer.readFloat(), buffer.readFloat(), buffer.readFloat()); - } - }; - - final float r; - final float g; - final float b; - - public HeaterParticleData(float r, float g, float b) { - this.r = r; - this.g = g; - this.b = b; - } - - public HeaterParticleData() { - this(0, 0, 0); - } - - @Override - public IDeserializer getDeserializer() { - return DESERIALIZER; - } - - @Override - public Codec getCodec(ParticleType type) { - return CODEC; - } - - @Override - @OnlyIn(Dist.CLIENT) - public IParticleMetaFactory getMetaFactory() { - return HeaterParticle.Factory::new; - } - - @Override - public String getParameters() { - return String.format(Locale.ROOT, "%s %f %f %f", AllParticleTypes.HEATER_PARTICLE.parameter(), r, g, b); - } - - @Override - public ParticleType getType() { - return AllParticleTypes.HEATER_PARTICLE.get(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeFloat(r); - buffer.writeFloat(g); - buffer.writeFloat(b); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/ICustomParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/particle/ICustomParticleData.java deleted file mode 100644 index 8e067799c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/ICustomParticleData.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import com.mojang.serialization.Codec; - -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.IParticleData.IDeserializer; -import net.minecraft.particles.ParticleType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public interface ICustomParticleData { - - IDeserializer getDeserializer(); - - Codec getCodec(ParticleType type); - - public default ParticleType createType() { - return new ParticleType(false, getDeserializer()) { - - @Override - public Codec getCodec() { - return ICustomParticleData.this.getCodec(this); - } - }; - } - - @OnlyIn(Dist.CLIENT) - public IParticleFactory getFactory(); - - @OnlyIn(Dist.CLIENT) - public default void register(ParticleType type, ParticleManager particles) { - particles.registerFactory(type, getFactory()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/ICustomParticleDataWithSprite.java b/src/main/java/com/simibubi/create/content/contraptions/particle/ICustomParticleDataWithSprite.java deleted file mode 100644 index 65dd04908..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/ICustomParticleDataWithSprite.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import com.mojang.serialization.Codec; - -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.client.particle.ParticleManager.IParticleMetaFactory; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.IParticleData.IDeserializer; -import net.minecraft.particles.ParticleType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public interface ICustomParticleDataWithSprite extends ICustomParticleData { - - IDeserializer getDeserializer(); - - public default ParticleType createType() { - return new ParticleType(false, getDeserializer()) { - - @Override - public Codec getCodec() { - return ICustomParticleDataWithSprite.this.getCodec(this); - } - }; - } - - @Override - @OnlyIn(Dist.CLIENT) - default IParticleFactory getFactory() { - throw new IllegalAccessError("This particle type uses a metaFactory!"); - } - - @OnlyIn(Dist.CLIENT) - public IParticleMetaFactory getMetaFactory(); - - @Override - @OnlyIn(Dist.CLIENT) - public default void register(ParticleType type, ParticleManager particles) { - particles.registerFactory(type, getMetaFactory()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticle.java b/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticle.java deleted file mode 100644 index ffb2f1996..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticle.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.content.contraptions.goggles.GogglesItem; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.particle.IAnimatedSprite; -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.SimpleAnimatedParticle; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.vector.Vector3d; - -public class RotationIndicatorParticle extends SimpleAnimatedParticle { - - protected float radius; - protected float radius1; - protected float radius2; - protected float speed; - protected Axis axis; - protected Vector3d origin; - protected Vector3d offset; - protected boolean isVisible; - - private RotationIndicatorParticle(ClientWorld world, double x, double y, double z, int color, float radius1, - float radius2, float speed, Axis axis, int lifeSpan, boolean isVisible, IAnimatedSprite sprite) { - super(world, x, y, z, sprite, 0); - this.motionX = 0; - this.motionY = 0; - this.motionZ = 0; - this.origin = new Vector3d(x, y, z); - this.particleScale *= 0.75F; - this.maxAge = lifeSpan + this.rand.nextInt(32); - this.setColorFade(color); - this.setColor(ColorHelper.mixColors(color, 0xFFFFFF, .5f)); - this.selectSpriteWithAge(sprite); - this.radius1 = radius1; - this.radius = radius1; - this.radius2 = radius2; - this.speed = speed; - this.axis = axis; - this.isVisible = isVisible; - this.offset = axis.isHorizontal() ? new Vector3d(0, 1, 0) : new Vector3d(1, 0, 0); - move(0, 0, 0); - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - } - - @Override - public void tick() { - super.tick(); - radius += (radius2 - radius) * .1f; - } - - @Override - public void buildGeometry(IVertexBuilder buffer, ActiveRenderInfo renderInfo, float partialTicks) { - if (!isVisible) - return; - super.buildGeometry(buffer, renderInfo, partialTicks); - } - - public void move(double x, double y, double z) { - float time = AnimationTickHolder.getTicks(world); - float angle = (float) ((time * speed) % 360) - (speed / 2 * age * (((float) age) / maxAge)); - if (speed < 0 && axis.isVertical()) - angle += 180; - Vector3d position = VecHelper.rotate(this.offset.scale(radius), angle, axis).add(origin); - posX = position.x; - posY = position.y; - posZ = position.z; - } - - public static class Factory implements IParticleFactory { - private final IAnimatedSprite spriteSet; - - public Factory(IAnimatedSprite animatedSprite) { - this.spriteSet = animatedSprite; - } - - public Particle makeParticle(RotationIndicatorParticleData data, ClientWorld worldIn, double x, double y, double z, - double xSpeed, double ySpeed, double zSpeed) { - Minecraft mc = Minecraft.getInstance(); - ClientPlayerEntity player = mc.player; - boolean visible = worldIn != mc.world || player != null && GogglesItem.canSeeParticles(player); - return new RotationIndicatorParticle(worldIn, x, y, z, data.color, data.radius1, data.radius2, data.speed, - data.getAxis(), data.lifeSpan, visible, this.spriteSet); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticleData.java b/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticleData.java deleted file mode 100644 index 23fb007e9..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/particle/RotationIndicatorParticleData.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create.content.contraptions.particle; - -import java.util.Locale; - -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.serialization.Codec; -import com.mojang.serialization.DataResult; -import com.mojang.serialization.DynamicOps; -import com.mojang.serialization.codecs.PrimitiveCodec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.AllParticleTypes; - -import net.minecraft.client.particle.ParticleManager.IParticleMetaFactory; -import net.minecraft.network.PacketBuffer; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleType; -import net.minecraft.util.Direction.Axis; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class RotationIndicatorParticleData - implements IParticleData, ICustomParticleDataWithSprite { - - // TODO 1.16 make this unnecessary - public static final PrimitiveCodec CHAR = new PrimitiveCodec() { - @Override - public DataResult read(final DynamicOps ops, final T input) { - return ops.getNumberValue(input) - .map(n -> (char) n.shortValue()); - } - - @Override - public T write(final DynamicOps ops, final Character value) { - return ops.createShort((short) value.charValue()); - } - - @Override - public String toString() { - return "Bool"; - } - }; - - public static final Codec CODEC = RecordCodecBuilder.create(i -> i - .group(Codec.INT.fieldOf("color") - .forGetter(p -> p.color), - Codec.FLOAT.fieldOf("speed") - .forGetter(p -> p.speed), - Codec.FLOAT.fieldOf("radius1") - .forGetter(p -> p.radius1), - Codec.FLOAT.fieldOf("radius2") - .forGetter(p -> p.radius2), - Codec.INT.fieldOf("lifeSpan") - .forGetter(p -> p.lifeSpan), - CHAR.fieldOf("axis") - .forGetter(p -> p.axis)) - .apply(i, RotationIndicatorParticleData::new)); - - public static final IParticleData.IDeserializer DESERIALIZER = - new IParticleData.IDeserializer() { - public RotationIndicatorParticleData deserialize(ParticleType particleTypeIn, - StringReader reader) throws CommandSyntaxException { - reader.expect(' '); - int color = reader.readInt(); - reader.expect(' '); - float speed = (float) reader.readDouble(); - reader.expect(' '); - float rad1 = (float) reader.readDouble(); - reader.expect(' '); - float rad2 = (float) reader.readDouble(); - reader.expect(' '); - int lifeSpan = reader.readInt(); - reader.expect(' '); - char axis = reader.read(); - return new RotationIndicatorParticleData(color, speed, rad1, rad2, lifeSpan, axis); - } - - public RotationIndicatorParticleData read(ParticleType particleTypeIn, - PacketBuffer buffer) { - return new RotationIndicatorParticleData(buffer.readInt(), buffer.readFloat(), buffer.readFloat(), - buffer.readFloat(), buffer.readInt(), buffer.readChar()); - } - }; - - final int color; - final float speed; - final float radius1; - final float radius2; - final int lifeSpan; - final char axis; - - public RotationIndicatorParticleData(int color, float speed, float radius1, float radius2, int lifeSpan, - char axis) { - this.color = color; - this.speed = speed; - this.radius1 = radius1; - this.radius2 = radius2; - this.lifeSpan = lifeSpan; - this.axis = axis; - } - - public RotationIndicatorParticleData() { - this(0, 0, 0, 0, 0, '0'); - } - - @Override - public ParticleType getType() { - return AllParticleTypes.ROTATION_INDICATOR.get(); - } - - public Axis getAxis() { - return Axis.valueOf(axis + ""); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(color); - buffer.writeFloat(speed); - buffer.writeFloat(radius1); - buffer.writeFloat(radius2); - buffer.writeInt(lifeSpan); - buffer.writeChar(axis); - } - - @Override - public String getParameters() { - return String.format(Locale.ROOT, "%s %d %.2f %.2f %.2f %d %c", AllParticleTypes.ROTATION_INDICATOR.parameter(), - color, speed, radius1, radius2, lifeSpan, axis); - } - - @Override - public IDeserializer getDeserializer() { - return DESERIALIZER; - } - - @Override - public Codec getCodec(ParticleType type) { - return CODEC; - } - - @Override - @OnlyIn(Dist.CLIENT) - public IParticleMetaFactory getMetaFactory() { - return RotationIndicatorParticle.Factory::new; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java deleted file mode 100644 index 3829c5339..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinBlock.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.fluids.actors.GenericItemFilling; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; -import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.Items; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.DirectionProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.items.ItemStackHandler; - -public class BasinBlock extends Block implements ITE, IWrenchable { - - public static final DirectionProperty FACING = BlockStateProperties.FACING_EXCEPT_UP; - - public BasinBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - setDefaultState(getDefaultState().with(FACING, Direction.DOWN)); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(FACING)); - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { - TileEntity tileEntity = world.getTileEntity(pos.up()); - if (tileEntity instanceof BasinOperatingTileEntity) - return false; - return true; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.BASIN.create(); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (!context.getWorld().isRemote) - withTileEntityDo(context.getWorld(), context.getPos(), bte -> bte.onWrenched(context.getFace())); - return ActionResultType.SUCCESS; - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - ItemStack heldItem = player.getHeldItem(handIn); - - return onTileEntityUse(worldIn, pos, te -> { - if (!heldItem.isEmpty()) { - if (FluidHelper.tryEmptyItemIntoTE(worldIn, player, handIn, heldItem, te)) - return ActionResultType.SUCCESS; - if (FluidHelper.tryFillItemFromTE(worldIn, player, handIn, heldItem, te)) - return ActionResultType.SUCCESS; - - if (EmptyingByBasin.canItemBeEmptied(worldIn, heldItem) - || GenericItemFilling.canItemBeFilled(worldIn, heldItem)) - return ActionResultType.SUCCESS; - if (heldItem.getItem() - .equals(Items.SPONGE) - && !te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) - .map(iFluidHandler -> iFluidHandler.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.EXECUTE)) - .orElse(FluidStack.EMPTY) - .isEmpty()) { - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - - IItemHandlerModifiable inv = te.itemCapability.orElse(new ItemStackHandler(1)); - boolean success = false; - for (int slot = 0; slot < inv.getSlots(); slot++) { - ItemStack stackInSlot = inv.getStackInSlot(slot); - if (stackInSlot.isEmpty()) - continue; - player.inventory.placeItemBackInInventory(worldIn, stackInSlot); - inv.setStackInSlot(slot, ItemStack.EMPTY); - success = true; - } - if (success) - worldIn.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, .2f, - 1f + Create.RANDOM.nextFloat()); - te.onEmptied(); - return ActionResultType.SUCCESS; - }); - } - - @Override - public void onLanded(IBlockReader worldIn, Entity entityIn) { - super.onLanded(worldIn, entityIn); - if (!AllBlocks.BASIN.has(worldIn.getBlockState(entityIn.getBlockPos()))) - return; - if (!(entityIn instanceof ItemEntity)) - return; - if (!entityIn.isAlive()) - return; - ItemEntity itemEntity = (ItemEntity) entityIn; - withTileEntityDo(worldIn, entityIn.getBlockPos(), te -> { - - // Tossed items bypass the quarter-stack limit - te.inputInventory.withMaxStackSize(64); - ItemStack insertItem = ItemHandlerHelper.insertItem(te.inputInventory, itemEntity.getItem() - .copy(), false); - te.inputInventory.withMaxStackSize(16); - - if (insertItem.isEmpty()) { - itemEntity.remove(); - if (!itemEntity.world.isRemote) - AllTriggers.triggerForNearbyPlayers(AllTriggers.BASIN_THROW, itemEntity.world, - itemEntity.getBlockPos(), 3); - return; - } - - itemEntity.setItem(insertItem); - }); - } - - @Override - public VoxelShape getRaytraceShape(BlockState p_199600_1_, IBlockReader p_199600_2_, BlockPos p_199600_3_) { - return AllShapes.BASIN_RAYTRACE_SHAPE; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.BASIN_BLOCK_SHAPE; - } - - @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext ctx) { - if (ctx.getEntity() instanceof ItemEntity) - return AllShapes.BASIN_COLLISION_SHAPE; - return getShape(state, reader, pos, ctx); - } - - @Override - public void onReplaced(BlockState state, World worldIn, BlockPos pos, BlockState newState, boolean isMoving) { - if (!state.hasTileEntity() || state.getBlock() == newState.getBlock()) - return; - TileEntityBehaviour.destroy(worldIn, pos, FilteringBehaviour.TYPE); - withTileEntityDo(worldIn, pos, te -> { - ItemHelper.dropContents(worldIn, pos, te.inputInventory); - ItemHelper.dropContents(worldIn, pos, te.outputInventory); - te.spoutputBuffer.forEach(is -> Block.spawnAsEntity(worldIn, pos, is)); - }); - worldIn.removeTileEntity(pos); - } - - @Override - public boolean hasComparatorInputOverride(BlockState state) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) { - return getTileEntityOptional(worldIn, pos).map(BasinTileEntity::getInputInventory) - .map(ItemHelper::calcRedstoneFromInventory) - .orElse(0); - } - - @Override - public Class getTileEntityClass() { - return BasinTileEntity.class; - } - - public static boolean canOutputTo(IBlockReader world, BlockPos basinPos, Direction direction) { - BlockPos neighbour = basinPos.offset(direction); - BlockPos output = neighbour.down(); - BlockState blockState = world.getBlockState(neighbour); - - if (FunnelBlock.isFunnel(blockState)) { - if (FunnelBlock.getFunnelFacing(blockState) == direction) - return false; - } else if (!blockState.getCollisionShape(world, neighbour) - .isEmpty()) { - return false; - } else { - TileEntity tileEntity = world.getTileEntity(output); - if (tileEntity instanceof BeltTileEntity) { - BeltTileEntity belt = (BeltTileEntity) tileEntity; - return belt.getSpeed() == 0 || belt.getMovementFacing() != direction.getOpposite(); - } - } - - DirectBeltInputBehaviour directBeltInputBehaviour = - TileEntityBehaviour.get(world, output, DirectBeltInputBehaviour.TYPE); - if (directBeltInputBehaviour != null) - return directBeltInputBehaviour.canInsertFromSide(direction); - return false; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinGenerator.java deleted file mode 100644 index fe96055ac..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinGenerator.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import com.simibubi.create.foundation.data.AssetLookup; -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraftforge.client.model.generators.ModelFile; - -public class BasinGenerator extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - return 0; - } - - @Override - protected int getYRotation(BlockState state) { - return horizontalAngle(state.get(BasinBlock.FACING)); - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - if (state.get(BasinBlock.FACING).getAxis().isVertical()) - return AssetLookup.partialBaseModel(ctx, prov); - return AssetLookup.partialBaseModel(ctx, prov, "directional"); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinInventory.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinInventory.java deleted file mode 100644 index 70e5bce70..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinInventory.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import com.simibubi.create.foundation.item.SmartInventory; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.items.ItemHandlerHelper; - -public class BasinInventory extends SmartInventory { - - private BasinTileEntity te; - - public BasinInventory(int slots, BasinTileEntity te) { - super(slots, te, 16, true); - this.te = te; - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - // Only insert if no other slot already has a stack of this item - for (int i = 0; i < getSlots(); i++) - if (i != slot && ItemHandlerHelper.canItemStacksStack(stack, inv.getStackInSlot(i))) - return stack; - return super.insertItem(slot, stack, simulate); - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - ItemStack extractItem = super.extractItem(slot, amount, simulate); - if (!simulate && !extractItem.isEmpty()) - te.notifyChangeOfContents(); - return extractItem; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinMovementBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinMovementBehaviour.java deleted file mode 100644 index 8c51a8fa8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinMovementBehaviour.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.HashMap; -import java.util.Map; - -import com.simibubi.create.content.contraptions.components.structureMovement.MovementBehaviour; -import com.simibubi.create.content.contraptions.components.structureMovement.MovementContext; - -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.items.ItemStackHandler; - -public class BasinMovementBehaviour extends MovementBehaviour { - public Map getOrReadInventory(MovementContext context) { - Map map = new HashMap<>(); - map.put("InputItems", new ItemStackHandler(9)); - map.put("OutputItems", new ItemStackHandler(8)); - map.forEach((s, h) -> h.deserializeNBT(context.tileData.getCompound(s))); - return map; - } - - @Override - public boolean renderAsNormalTileEntity() { - return true; - } - - @Override - public void tick(MovementContext context) { - super.tick(context); - if (context.temporaryData == null || (boolean) context.temporaryData) { - Vector3d facingVec = context.rotation.apply(Vector3d.of(Direction.UP.getDirectionVec())); - facingVec.normalize(); - if (Direction.getFacingFromVector(facingVec.x, facingVec.y, facingVec.z) == Direction.DOWN) - dump(context, facingVec); - } - } - - private void dump(MovementContext context, Vector3d facingVec) { - getOrReadInventory(context).forEach((key, itemStackHandler) -> { - for (int i = 0; i < itemStackHandler.getSlots(); i++) { - if (itemStackHandler.getStackInSlot(i) - .isEmpty()) - continue; - ItemEntity itemEntity = new ItemEntity(context.world, context.position.x, context.position.y, - context.position.z, itemStackHandler.getStackInSlot(i)); - itemEntity.setMotion(facingVec.scale(.05)); - context.world.addEntity(itemEntity); - itemStackHandler.setStackInSlot(i, ItemStack.EMPTY); - } - context.tileData.put(key, itemStackHandler.serializeNBT()); - }); - TileEntity tileEntity = context.contraption.presentTileEntities.get(context.localPos); - if (tileEntity instanceof BasinTileEntity) - ((BasinTileEntity) tileEntity).readOnlyItems(context.tileData); - context.temporaryData = false; // did already dump, so can't any more - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java deleted file mode 100644 index a4f77ed6d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinOperatingTileEntity.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.advancement.ITriggerable; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.simple.DeferralBehaviour; -import com.simibubi.create.foundation.utility.recipe.RecipeFinder; - -import net.minecraft.inventory.IInventory; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; - -public abstract class BasinOperatingTileEntity extends KineticTileEntity { - - public DeferralBehaviour basinChecker; - public boolean basinRemoved; - protected IRecipe currentRecipe; - - public BasinOperatingTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - basinChecker = new DeferralBehaviour(this, this::updateBasin); - behaviours.add(basinChecker); - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - if (getSpeed() == 0) - basinRemoved = true; - basinRemoved = false; - basinChecker.scheduleUpdate(); - } - - @Override - public void tick() { - if (basinRemoved) { - basinRemoved = false; - onBasinRemoved(); - sendData(); - return; - } - - super.tick(); - } - - protected boolean updateBasin() { - if (!isSpeedRequirementFulfilled()) - return true; - if (getSpeed() == 0) - return true; - if (isRunning()) - return false; - if (world == null || world.isRemote) - return true; - - List> recipes = getMatchingRecipes(); - if (recipes.isEmpty()) - return true; - currentRecipe = recipes.get(0); - startProcessingBasin(); - sendData(); - return true; - } - - protected abstract boolean isRunning(); - - public void startProcessingBasin() {} - - public boolean continueWithPreviousRecipe() { - return true; - } - - protected boolean matchBasinRecipe(IRecipe recipe) { - if (recipe == null) - return false; - Optional basin = getBasin(); - if (!basin.isPresent()) - return false; - return BasinRecipe.match(basin.get(), recipe); - } - - protected void applyBasinRecipe() { - if (currentRecipe == null) - return; - - Optional optionalBasin = getBasin(); - if (!optionalBasin.isPresent()) - return; - BasinTileEntity basin = optionalBasin.get(); - if (!BasinRecipe.apply(basin, currentRecipe)) - return; - Optional processedRecipeTrigger = getProcessedRecipeTrigger(); - if (world != null && !world.isRemote && processedRecipeTrigger.isPresent()) - AllTriggers.triggerForNearbyPlayers(processedRecipeTrigger.get(), world, pos, 4); - basin.inputTank.sendDataImmediately(); - - // Continue mixing - if (matchBasinRecipe(currentRecipe)) { - continueWithPreviousRecipe(); - sendData(); - } - - basin.notifyChangeOfContents(); - } - - protected List> getMatchingRecipes() { - List> list = RecipeFinder.get(getRecipeCacheKey(), world, this::matchStaticFilters); - return list.stream() - .filter(this::matchBasinRecipe) - .sorted((r1, r2) -> r2.getIngredients() - .size() - - r1.getIngredients() - .size()) - .collect(Collectors.toList()); - } - - protected abstract void onBasinRemoved(); - - protected Optional getBasin() { - if (world == null) - return Optional.empty(); - TileEntity basinTE = world.getTileEntity(pos.down(2)); - if (!(basinTE instanceof BasinTileEntity)) - return Optional.empty(); - return Optional.of((BasinTileEntity) basinTE); - } - - protected Optional getProcessedRecipeTrigger() { - return Optional.empty(); - } - - protected abstract boolean matchStaticFilters(IRecipe recipe); - - protected abstract Object getRecipeCacheKey(); - - @Override - public boolean shouldRenderNormally() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java deleted file mode 100644 index 80e7a6349..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRecipe.java +++ /dev/null @@ -1,214 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.LinkedList; -import java.util.List; - -import javax.annotation.Nonnull; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.item.SmartInventory; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; - -public class BasinRecipe extends ProcessingRecipe { - - public static boolean match(BasinTileEntity basin, IRecipe recipe) { - FilteringBehaviour filter = basin.getFilter(); - if (filter == null) - return false; - - boolean filterTest = filter.test(recipe.getRecipeOutput()); - if (recipe instanceof BasinRecipe) { - BasinRecipe basinRecipe = (BasinRecipe) recipe; - if (basinRecipe.getRollableResults() - .isEmpty() - && !basinRecipe.getFluidResults() - .isEmpty()) - filterTest = filter.test(basinRecipe.getFluidResults() - .get(0)); - } - - if (!filterTest) - return false; - - return apply(basin, recipe, true); - } - - public static boolean apply(BasinTileEntity basin, IRecipe recipe) { - return apply(basin, recipe, false); - } - - private static boolean apply(BasinTileEntity basin, IRecipe recipe, boolean test) { - boolean isBasinRecipe = recipe instanceof BasinRecipe; - IItemHandler availableItems = basin.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) - .orElse(null); - IFluidHandler availableFluids = basin.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) - .orElse(null); - - if (availableItems == null || availableFluids == null) - return false; - - HeatLevel heat = BasinTileEntity.getHeatLevelOf(basin.getWorld() - .getBlockState(basin.getPos() - .down(1))); - if (isBasinRecipe && !((BasinRecipe) recipe).getRequiredHeat() - .testBlazeBurner(heat)) - return false; - - List recipeOutputItems = new ArrayList<>(); - List recipeOutputFluids = new ArrayList<>(); - - List ingredients = new LinkedList<>(recipe.getIngredients()); - ingredients.sort(Comparator.comparingInt(i -> i.getMatchingStacks().length)); - List fluidIngredients = - isBasinRecipe ? ((BasinRecipe) recipe).getFluidIngredients() : Collections.emptyList(); - - for (boolean simulate : Iterate.trueAndFalse) { - - if (!simulate && test) - return true; - - int[] extractedItemsFromSlot = new int[availableItems.getSlots()]; - int[] extractedFluidsFromTank = new int[availableFluids.getTanks()]; - - Ingredients: for (int i = 0; i < ingredients.size(); i++) { - Ingredient ingredient = ingredients.get(i); - - for (int slot = 0; slot < availableItems.getSlots(); slot++) { - if (simulate && availableItems.getStackInSlot(slot) - .getCount() <= extractedItemsFromSlot[slot]) - continue; - ItemStack extracted = availableItems.extractItem(slot, 1, true); - if (!ingredient.test(extracted)) - continue; - // Catalyst items are never consumed - if (extracted.hasContainerItem() && extracted.getContainerItem() - .isItemEqual(extracted)) - continue Ingredients; - if (!simulate) - availableItems.extractItem(slot, 1, false); - else if (extracted.hasContainerItem()) - recipeOutputItems.add(extracted.getContainerItem() - .copy()); - extractedItemsFromSlot[slot]++; - continue Ingredients; - } - - // something wasn't found - return false; - } - - boolean fluidsAffected = false; - FluidIngredients: for (int i = 0; i < fluidIngredients.size(); i++) { - FluidIngredient fluidIngredient = fluidIngredients.get(i); - int amountRequired = fluidIngredient.getRequiredAmount(); - - for (int tank = 0; tank < availableFluids.getTanks(); tank++) { - FluidStack fluidStack = availableFluids.getFluidInTank(tank); - if (simulate && fluidStack.getAmount() <= extractedFluidsFromTank[tank]) - continue; - if (!fluidIngredient.test(fluidStack)) - continue; - int drainedAmount = Math.min(amountRequired, fluidStack.getAmount()); - if (!simulate) { - fluidStack.shrink(drainedAmount); - fluidsAffected = true; - } - amountRequired -= drainedAmount; - if (amountRequired != 0) - continue; - extractedFluidsFromTank[tank] += drainedAmount; - continue FluidIngredients; - } - - // something wasn't found - return false; - } - - if (fluidsAffected) { - basin.getBehaviour(SmartFluidTankBehaviour.INPUT) - .foreach(TankSegment::onFluidStackChanged); - basin.getBehaviour(SmartFluidTankBehaviour.OUTPUT) - .foreach(TankSegment::onFluidStackChanged); - } - - if (simulate) { - if (recipe instanceof BasinRecipe) { - recipeOutputItems.addAll(((BasinRecipe) recipe).rollResults()); - recipeOutputFluids.addAll(((BasinRecipe) recipe).getFluidResults()); - } else - recipeOutputItems.add(recipe.getRecipeOutput()); - } - - if (!basin.acceptOutputs(recipeOutputItems, recipeOutputFluids, simulate)) - return false; - } - - return true; - } - - public static BasinRecipe convertShapeless(IRecipe recipe) { - BasinRecipe basinRecipe = - new ProcessingRecipeBuilder<>(BasinRecipe::new, recipe.getId()).withItemIngredients(recipe.getIngredients()) - .withSingleItemOutput(recipe.getRecipeOutput()) - .build(); - return basinRecipe; - } - - protected BasinRecipe(AllRecipeTypes type, ProcessingRecipeParams params) { - super(type, params); - } - - public BasinRecipe(ProcessingRecipeParams params) { - this(AllRecipeTypes.BASIN, params); - } - - @Override - protected int getMaxInputCount() { - return 9; - } - - @Override - protected int getMaxOutputCount() { - return 4; - } - - @Override - protected int getMaxFluidInputCount() { - return 2; - } - - @Override - protected int getMaxFluidOutputCount() { - return 2; - } - - @Override - protected boolean canRequireHeat() { - return true; - } - - @Override - public boolean matches(SmartInventory inv, @Nonnull World worldIn) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java deleted file mode 100644 index c19142761..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinRenderer.java +++ /dev/null @@ -1,183 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.Random; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.fluid.FluidRenderer; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; -import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.IntAttached; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemStackHandler; - -public class BasinRenderer extends SmartTileEntityRenderer { - - public BasinRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(BasinTileEntity basin, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(basin, partialTicks, ms, buffer, light, overlay); - - float fluidLevel = renderFluids(basin, partialTicks, ms, buffer, light, overlay); - float level = MathHelper.clamp(fluidLevel - .3f, .125f, .6f); - - ms.push(); - - BlockPos pos = basin.getPos(); - ms.translate(.5, .2f, .5); - MatrixStacker.of(ms) - .rotateY(basin.ingredientRotation.getValue(partialTicks)); - - Random r = new Random(pos.hashCode()); - Vector3d baseVector = new Vector3d(.125, level, 0); - - IItemHandlerModifiable inv = basin.itemCapability.orElse(new ItemStackHandler()); - int itemCount = 0; - for (int slot = 0; slot < inv.getSlots(); slot++) - if (!inv.getStackInSlot(slot) - .isEmpty()) - itemCount++; - - if (itemCount == 1) - baseVector = new Vector3d(0, level, 0); - - float anglePartition = 360f / itemCount; - for (int slot = 0; slot < inv.getSlots(); slot++) { - ItemStack stack = inv.getStackInSlot(slot); - if (stack.isEmpty()) - continue; - - ms.push(); - - if (fluidLevel > 0) { - ms.translate(0, - (MathHelper.sin( - AnimationTickHolder.getRenderTime(basin.getWorld()) / 12f + anglePartition * itemCount) + 1.5f) - * 1 / 32f, - 0); - } - - Vector3d itemPosition = VecHelper.rotate(baseVector, anglePartition * itemCount, Axis.Y); - ms.translate(itemPosition.x, itemPosition.y, itemPosition.z); - MatrixStacker.of(ms) - .rotateY(anglePartition * itemCount + 35) - .rotateX(65); - - for (int i = 0; i <= stack.getCount() / 8; i++) { - ms.push(); - - Vector3d vec = VecHelper.offsetRandomly(Vector3d.ZERO, r, 1 / 16f); - - ms.translate(vec.x, vec.y, vec.z); - renderItem(ms, buffer, light, overlay, stack); - ms.pop(); - } - ms.pop(); - - itemCount--; - } - ms.pop(); - - BlockState blockState = basin.getBlockState(); - if (!(blockState.getBlock() instanceof BasinBlock)) - return; - Direction direction = blockState.get(BasinBlock.FACING); - if (direction == Direction.DOWN) - return; - Vector3d directionVec = Vector3d.of(direction.getDirectionVec()); - Vector3d outVec = VecHelper.getCenterOf(BlockPos.ZERO) - .add(directionVec.scale(.55) - .subtract(0, 1 / 2f, 0)); - - boolean outToBasin = basin.getWorld() - .getBlockState(basin.getPos() - .offset(direction)) - .getBlock() instanceof BasinBlock; - - for (IntAttached intAttached : basin.visualizedOutputItems) { - float progress = 1 - (intAttached.getFirst() - partialTicks) / BasinTileEntity.OUTPUT_ANIMATION_TIME; - - if (!outToBasin && progress > .35f) - continue; - - ms.push(); - MatrixStacker.of(ms) - .translate(outVec) - .translate(new Vector3d(0, Math.max(-.55f, -(progress * progress * 2)), 0)) - .translate(directionVec.scale(progress * .5f)) - .rotateY(AngleHelper.horizontalAngle(direction)) - .rotateX(progress * 180); - renderItem(ms, buffer, light, overlay, intAttached.getValue()); - ms.pop(); - } - } - - protected void renderItem(MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay, ItemStack stack) { - Minecraft.getInstance() - .getItemRenderer() - .renderItem(stack, TransformType.GROUND, light, overlay, ms, buffer); - } - - protected float renderFluids(BasinTileEntity basin, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - SmartFluidTankBehaviour inputFluids = basin.getBehaviour(SmartFluidTankBehaviour.INPUT); - SmartFluidTankBehaviour outputFluids = basin.getBehaviour(SmartFluidTankBehaviour.OUTPUT); - SmartFluidTankBehaviour[] tanks = { inputFluids, outputFluids }; - float totalUnits = basin.getTotalFluidUnits(partialTicks); - if (totalUnits < 1) - return 0; - - float fluidLevel = MathHelper.clamp(totalUnits / 2000, 0, 1); - - float xMin = 2 / 16f; - float xMax = 2 / 16f; - final float yMin = 2 / 16f; - final float yMax = yMin + 12 / 16f * fluidLevel; - final float zMin = 2 / 16f; - final float zMax = 14 / 16f; - - for (SmartFluidTankBehaviour behaviour : tanks) { - if (behaviour == null) - continue; - for (TankSegment tankSegment : behaviour.getTanks()) { - FluidStack renderedFluid = tankSegment.getRenderedFluid(); - if (renderedFluid.isEmpty()) - continue; - float units = tankSegment.getTotalUnits(partialTicks); - if (units < 1) - continue; - - float partial = MathHelper.clamp(units / totalUnits, 0, 1); - xMax += partial * 12 / 16f; - FluidRenderer.renderTiledFluidBB(renderedFluid, xMin, yMin, zMin, xMax, yMax, zMax, buffer, ms, light, - false); - - xMin = xMax; - } - } - - return yMax; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java deleted file mode 100644 index 9601477f0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/BasinTileEntity.java +++ /dev/null @@ -1,626 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Optional; -import java.util.Random; - -import javax.annotation.Nonnull; - -import com.simibubi.create.AllParticleTypes; -import com.simibubi.create.AllTags; -import com.simibubi.create.content.contraptions.components.mixer.MechanicalMixerTileEntity; -import com.simibubi.create.content.contraptions.fluids.FluidFX; -import com.simibubi.create.content.contraptions.fluids.particle.FluidParticleData; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.fluid.CombinedTankWrapper; -import com.simibubi.create.foundation.item.SmartInventory; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour.TankSegment; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.IntAttached; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.nbt.StringNBT; -import net.minecraft.particles.IParticleData; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.items.wrapper.CombinedInvWrapper; - -public class BasinTileEntity extends SmartTileEntity implements IHaveGoggleInformation { - - private boolean areFluidsMoving; - LerpedFloat ingredientRotationSpeed; - LerpedFloat ingredientRotation; - - public BasinInventory inputInventory; - public SmartFluidTankBehaviour inputTank; - protected SmartInventory outputInventory; - protected SmartFluidTankBehaviour outputTank; - private FilteringBehaviour filtering; - private boolean contentsChanged; - - private Couple invs; - private Couple tanks; - - protected LazyOptional itemCapability; - protected LazyOptional fluidCapability; - - List disabledSpoutputs; - Direction preferredSpoutput; - protected List spoutputBuffer; - - public static final int OUTPUT_ANIMATION_TIME = 10; - List> visualizedOutputItems; - List> visualizedOutputFluids; - - public BasinTileEntity(TileEntityType type) { - super(type); - inputInventory = new BasinInventory(9, this); - inputInventory.whenContentsChanged($ -> contentsChanged = true); - outputInventory = new BasinInventory(9, this).forbidInsertion() - .withMaxStackSize(64); - areFluidsMoving = false; - itemCapability = LazyOptional.of(() -> new CombinedInvWrapper(inputInventory, outputInventory)); - contentsChanged = true; - ingredientRotation = LerpedFloat.angular() - .startWithValue(0); - ingredientRotationSpeed = LerpedFloat.linear() - .startWithValue(0); - - invs = Couple.create(inputInventory, outputInventory); - tanks = Couple.create(inputTank, outputTank); - visualizedOutputItems = Collections.synchronizedList(new ArrayList<>()); - visualizedOutputFluids = Collections.synchronizedList(new ArrayList<>()); - disabledSpoutputs = new ArrayList<>(); - preferredSpoutput = null; - spoutputBuffer = new ArrayList<>(); - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new DirectBeltInputBehaviour(this)); - filtering = new FilteringBehaviour(this, new BasinValueBox()).moveText(new Vector3d(2, -8, 0)) - .withCallback(newFilter -> contentsChanged = true) - .forRecipes(); - behaviours.add(filtering); - - inputTank = new SmartFluidTankBehaviour(SmartFluidTankBehaviour.INPUT, this, 2, 1000, true) - .whenFluidUpdates(() -> contentsChanged = true); - outputTank = new SmartFluidTankBehaviour(SmartFluidTankBehaviour.OUTPUT, this, 2, 1000, true) - .whenFluidUpdates(() -> contentsChanged = true) - .forbidInsertion(); - behaviours.add(inputTank); - behaviours.add(outputTank); - - fluidCapability = LazyOptional.of(() -> { - LazyOptional inputCap = inputTank.getCapability(); - LazyOptional outputCap = outputTank.getCapability(); - return new CombinedTankWrapper(inputCap.orElse(null), outputCap.orElse(null)); - }); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - inputInventory.deserializeNBT(compound.getCompound("InputItems")); - outputInventory.deserializeNBT(compound.getCompound("OutputItems")); - - preferredSpoutput = null; - if (compound.contains("PreferredSpoutput")) - preferredSpoutput = NBTHelper.readEnum(compound, "PreferredSpoutput", Direction.class); - disabledSpoutputs.clear(); - ListNBT disabledList = compound.getList("DisabledSpoutput", NBT.TAG_STRING); - disabledList.forEach(d -> disabledSpoutputs.add(Direction.valueOf(((StringNBT) d).getString()))); - spoutputBuffer = NBTHelper.readItemList(compound.getList("Overflow", NBT.TAG_COMPOUND)); - - if (!clientPacket) - return; - - NBTHelper.iterateCompoundList(compound.getList("VisualizedItems", NBT.TAG_COMPOUND), - c -> visualizedOutputItems.add(IntAttached.with(OUTPUT_ANIMATION_TIME, ItemStack.read(c)))); - NBTHelper.iterateCompoundList(compound.getList("VisualizedFluids", NBT.TAG_COMPOUND), - c -> visualizedOutputFluids - .add(IntAttached.with(OUTPUT_ANIMATION_TIME, FluidStack.loadFluidStackFromNBT(c)))); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - super.write(compound, clientPacket); - compound.put("InputItems", inputInventory.serializeNBT()); - compound.put("OutputItems", outputInventory.serializeNBT()); - - if (preferredSpoutput != null) - NBTHelper.writeEnum(compound, "PreferredSpoutput", preferredSpoutput); - ListNBT disabledList = new ListNBT(); - disabledSpoutputs.forEach(d -> disabledList.add(StringNBT.of(d.name()))); - compound.put("DisabledSpoutput", disabledList); - compound.put("Overflow", NBTHelper.writeItemList(spoutputBuffer)); - - if (!clientPacket) - return; - - compound.put("VisualizedItems", NBTHelper.writeCompoundList(visualizedOutputItems, ia -> ia.getValue() - .serializeNBT())); - compound.put("VisualizedFluids", NBTHelper.writeCompoundList(visualizedOutputFluids, ia -> ia.getValue() - .writeToNBT(new CompoundNBT()))); - visualizedOutputItems.clear(); - visualizedOutputFluids.clear(); - } - - public void onEmptied() { - getOperator().ifPresent(te -> te.basinRemoved = true); - } - - @Override - public void remove() { - onEmptied(); - itemCapability.invalidate(); - fluidCapability.invalidate(); - super.remove(); - } - - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, Direction side) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) - return itemCapability.cast(); - if (cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY) - return fluidCapability.cast(); - return super.getCapability(cap, side); - } - - @Override - public void notifyUpdate() { - super.notifyUpdate(); - } - - @Override - public void lazyTick() { - super.lazyTick(); - updateSpoutput(); - if (!world.isRemote) - return; - - TileEntity tileEntity = world.getTileEntity(pos.up(2)); - if (!(tileEntity instanceof MechanicalMixerTileEntity)) { - setAreFluidsMoving(false); - return; - } - MechanicalMixerTileEntity mixer = (MechanicalMixerTileEntity) tileEntity; - setAreFluidsMoving(mixer.running && mixer.runningTicks <= 20); - } - - public void onWrenched(Direction face) { - BlockState blockState = getBlockState(); - Direction currentFacing = blockState.get(BasinBlock.FACING); - - disabledSpoutputs.remove(face); - if (currentFacing == face) { - if (preferredSpoutput == face) - preferredSpoutput = null; - disabledSpoutputs.add(face); - } else - preferredSpoutput = face; - - updateSpoutput(); - } - - private void updateSpoutput() { - if (world.isRemote) - return; - - BlockState blockState = getBlockState(); - Direction currentFacing = blockState.get(BasinBlock.FACING); - - if (currentFacing != Direction.DOWN) - notifyChangeOfContents(); - - Direction newFacing = Direction.DOWN; - for (Direction test : Iterate.horizontalDirections) { - boolean canOutputTo = BasinBlock.canOutputTo(world, pos, test); - if (canOutputTo && !disabledSpoutputs.contains(test)) - newFacing = test; - } - - if (preferredSpoutput != null && BasinBlock.canOutputTo(world, pos, preferredSpoutput) - && preferredSpoutput != Direction.UP) - newFacing = preferredSpoutput; - - if (newFacing != currentFacing) - world.setBlockState(pos, blockState.with(BasinBlock.FACING, newFacing)); - } - - @Override - public void tick() { - super.tick(); - if (world.isRemote) { - createFluidParticles(); - tickVisualizedOutputs(); - ingredientRotationSpeed.tickChaser(); - ingredientRotation.setValue(ingredientRotation.getValue() + ingredientRotationSpeed.getValue()); - } - - if (!spoutputBuffer.isEmpty() && !world.isRemote) - tryClearingSpoutputOverflow(); - - if (!contentsChanged) - return; - contentsChanged = false; - getOperator().ifPresent(te -> te.basinChecker.scheduleUpdate()); - - for (Direction offset : Iterate.horizontalDirections) { - BlockPos toUpdate = pos.up() - .offset(offset); - BlockState stateToUpdate = world.getBlockState(toUpdate); - if (stateToUpdate.getBlock() instanceof BasinBlock - && stateToUpdate.get(BasinBlock.FACING) == offset.getOpposite()) { - TileEntity te = world.getTileEntity(toUpdate); - if (te instanceof BasinTileEntity) - ((BasinTileEntity) te).contentsChanged = true; - } - } - } - - private void tryClearingSpoutputOverflow() { - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof BasinBlock)) - return; - Direction direction = blockState.get(BasinBlock.FACING); - TileEntity te = world.getTileEntity(pos.down() - .offset(direction)); - IItemHandler targetInv = te == null ? null - : te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()) - .orElse(null); - boolean update = false; - - for (Iterator iterator = spoutputBuffer.iterator(); iterator.hasNext();) { - ItemStack itemStack = iterator.next(); - - if (direction == Direction.DOWN) { - Block.spawnAsEntity(world, pos, itemStack); - iterator.remove(); - update = true; - continue; - } - - if (targetInv == null) - return; - if (!ItemHandlerHelper.insertItemStacked(targetInv, itemStack, true) - .isEmpty()) - continue; - - update = true; - ItemHandlerHelper.insertItemStacked(targetInv, itemStack.copy(), false); - iterator.remove(); - visualizedOutputItems.add(IntAttached.withZero(itemStack)); - } - - if (update) { - notifyChangeOfContents(); - sendData(); - } - } - - public float getTotalFluidUnits(float partialTicks) { - int renderedFluids = 0; - float totalUnits = 0; - - for (SmartFluidTankBehaviour behaviour : getTanks()) { - if (behaviour == null) - continue; - for (TankSegment tankSegment : behaviour.getTanks()) { - if (tankSegment.getRenderedFluid() - .isEmpty()) - continue; - float units = tankSegment.getTotalUnits(partialTicks); - if (units < 1) - continue; - totalUnits += units; - renderedFluids++; - } - } - - if (renderedFluids == 0) - return 0; - if (totalUnits < 1) - return 0; - return totalUnits; - } - - private Optional getOperator() { - if (world == null) - return Optional.empty(); - TileEntity te = world.getTileEntity(pos.up(2)); - if (te instanceof BasinOperatingTileEntity) - return Optional.of((BasinOperatingTileEntity) te); - return Optional.empty(); - } - - public FilteringBehaviour getFilter() { - return filtering; - } - - public void notifyChangeOfContents() { - contentsChanged = true; - } - - public SmartInventory getInputInventory() { - return inputInventory; - } - - public SmartInventory getOutputInventory() { - return outputInventory; - } - - @Override - @OnlyIn(Dist.CLIENT) - public double getMaxRenderDistanceSquared() { - return 256; - } - - public boolean acceptOutputs(List outputItems, List outputFluids, boolean simulate) { - outputInventory.allowInsertion(); - outputTank.allowInsertion(); - boolean acceptOutputsInner = acceptOutputsInner(outputItems, outputFluids, simulate); - outputInventory.forbidInsertion(); - outputTank.forbidInsertion(); - return acceptOutputsInner; - } - - private boolean acceptOutputsInner(List outputItems, List outputFluids, boolean simulate) { - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof BasinBlock)) - return false; - Direction direction = blockState.get(BasinBlock.FACING); - - IItemHandler targetInv = null; - IFluidHandler targetTank = null; - - if (direction == Direction.DOWN) { - // No output basin, gather locally - targetInv = outputInventory; - targetTank = outputTank.getCapability() - .orElse(null); - - } else { - // Output basin, try moving items to it - if (!spoutputBuffer.isEmpty()) - return false; - TileEntity te = world.getTileEntity(pos.down() - .offset(direction)); - if (te == null) - return false; - targetInv = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, direction.getOpposite()) - .orElse(null); - targetTank = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, direction.getOpposite()) - .orElse(null); - } - - if (targetInv == null && !outputItems.isEmpty()) - return false; - for (ItemStack itemStack : outputItems) { - // Catalyst items are never consumed - if (itemStack.hasContainerItem() && itemStack.getContainerItem() - .isItemEqual(itemStack)) - continue; - - if (simulate || direction == Direction.DOWN) { - if (!ItemHandlerHelper.insertItemStacked(targetInv, itemStack.copy(), simulate) - .isEmpty()) - return false; - } else - spoutputBuffer.add(itemStack.copy()); - } - - if (outputFluids.isEmpty()) - return true; - if (targetTank == null) - return false; - - for (FluidStack fluidStack : outputFluids) { - FluidAction action = simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE; - int fill = targetTank instanceof SmartFluidTankBehaviour.InternalFluidHandler - ? ((SmartFluidTankBehaviour.InternalFluidHandler) targetTank).forceFill(fluidStack.copy(), action) - : targetTank.fill(fluidStack.copy(), action); - if (fill != fluidStack.getAmount()) - return false; - else if (!simulate) - visualizedOutputFluids.add(IntAttached.withZero(fluidStack)); - } - - return true; - } - - public void readOnlyItems(CompoundNBT compound) { - inputInventory.deserializeNBT(compound.getCompound("InputItems")); - outputInventory.deserializeNBT(compound.getCompound("OutputItems")); - } - - public static HeatLevel getHeatLevelOf(BlockState state) { - if (state.contains(BlazeBurnerBlock.HEAT_LEVEL)) - return state.get(BlazeBurnerBlock.HEAT_LEVEL); - return AllTags.AllBlockTags.FAN_HEATERS.matches(state) ? HeatLevel.SMOULDERING : HeatLevel.NONE; - } - - public Couple getTanks() { - return tanks; - } - - public Couple getInvs() { - return invs; - } - - // client things - - private void tickVisualizedOutputs() { - visualizedOutputFluids.forEach(IntAttached::decrement); - visualizedOutputItems.forEach(IntAttached::decrement); - visualizedOutputFluids.removeIf(IntAttached::isOrBelowZero); - visualizedOutputItems.removeIf(IntAttached::isOrBelowZero); - } - - private void createFluidParticles() { - Random r = world.rand; - - if (!visualizedOutputFluids.isEmpty()) - createOutputFluidParticles(r); - - if (!areFluidsMoving && r.nextFloat() > 1 / 8f) - return; - - int segments = 0; - for (SmartFluidTankBehaviour behaviour : getTanks()) { - if (behaviour == null) - continue; - for (TankSegment tankSegment : behaviour.getTanks()) - if (!tankSegment.isEmpty(0)) - segments++; - } - if (segments < 2) - return; - - float totalUnits = getTotalFluidUnits(0); - if (totalUnits == 0) - return; - float fluidLevel = MathHelper.clamp(totalUnits / 2000, 0, 1); - float rim = 2 / 16f; - float space = 12 / 16f; - float surface = pos.getY() + rim + space * fluidLevel + 1 / 32f; - - if (areFluidsMoving) { - createMovingFluidParticles(surface, segments); - return; - } - - for (SmartFluidTankBehaviour behaviour : getTanks()) { - if (behaviour == null) - continue; - for (TankSegment tankSegment : behaviour.getTanks()) { - if (tankSegment.isEmpty(0)) - continue; - float x = pos.getX() + rim + space * r.nextFloat(); - float z = pos.getZ() + rim + space * r.nextFloat(); - world.addOptionalParticle( - new FluidParticleData(AllParticleTypes.BASIN_FLUID.get(), tankSegment.getRenderedFluid()), x, - surface, z, 0, 0, 0); - } - } - } - - private void createOutputFluidParticles(Random r) { - BlockState blockState = getBlockState(); - if (!(blockState.getBlock() instanceof BasinBlock)) - return; - Direction direction = blockState.get(BasinBlock.FACING); - if (direction == Direction.DOWN) - return; - Vector3d directionVec = Vector3d.of(direction.getDirectionVec()); - Vector3d outVec = VecHelper.getCenterOf(pos) - .add(directionVec.scale(.65) - .subtract(0, 1 / 4f, 0)); - Vector3d outMotion = directionVec.scale(1 / 16f) - .add(0, -1 / 16f, 0); - - for (int i = 0; i < 3; i++) { - visualizedOutputFluids.forEach(ia -> { - FluidStack fluidStack = ia.getValue(); - IParticleData fluidParticle = FluidFX.getFluidParticle(fluidStack); - Vector3d m = VecHelper.offsetRandomly(outMotion, r, 1 / 16f); - world.addOptionalParticle(fluidParticle, outVec.x, outVec.y, outVec.z, m.x, m.y, m.z); - }); - } - } - - private void createMovingFluidParticles(float surface, int segments) { - Vector3d pointer = new Vector3d(1, 0, 0).scale(1 / 16f); - float interval = 360f / segments; - Vector3d centerOf = VecHelper.getCenterOf(pos); - float intervalOffset = (AnimationTickHolder.getTicks() * 18) % 360; - - int currentSegment = 0; - for (SmartFluidTankBehaviour behaviour : getTanks()) { - if (behaviour == null) - continue; - for (TankSegment tankSegment : behaviour.getTanks()) { - if (tankSegment.isEmpty(0)) - continue; - float angle = interval * (1 + currentSegment) + intervalOffset; - Vector3d vec = centerOf.add(VecHelper.rotate(pointer, angle, Axis.Y)); - world.addOptionalParticle( - new FluidParticleData(AllParticleTypes.BASIN_FLUID.get(), tankSegment.getRenderedFluid()), - vec.getX(), surface, vec.getZ(), 1, 0, 0); - currentSegment++; - } - } - } - - public boolean areFluidsMoving() { - return areFluidsMoving; - } - - public boolean setAreFluidsMoving(boolean areFluidsMoving) { - this.areFluidsMoving = areFluidsMoving; - ingredientRotationSpeed.chase(areFluidsMoving ? 20 : 0, .1f, Chaser.EXP); - return areFluidsMoving; - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - return containedFluidTooltip(tooltip, isPlayerSneaking, - getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY)); - } - - class BasinValueBox extends ValueBoxTransform.Sided { - - @Override - protected Vector3d getSouthLocation() { - return VecHelper.voxelSpace(8, 12, 15.75); - } - - @Override - protected boolean isSideActive(BlockState state, Direction direction) { - return direction.getAxis() - .isHorizontal(); - } - - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/EmptyingByBasin.java b/src/main/java/com/simibubi/create/content/contraptions/processing/EmptyingByBasin.java deleted file mode 100644 index 8545a81d1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/EmptyingByBasin.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.List; -import java.util.Optional; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.PotionItem; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class EmptyingByBasin { - - static RecipeWrapper wrapper = new RecipeWrapper(new ItemStackHandler(1)); - - public static boolean canItemBeEmptied(World world, ItemStack stack) { - if (stack.getItem() instanceof PotionItem) - return true; - - wrapper.setInventorySlotContents(0, stack); - if (AllRecipeTypes.EMPTYING.find(wrapper, world) - .isPresent()) - return true; - - LazyOptional capability = - stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); - IFluidHandlerItem tank = capability.orElse(null); - if (tank == null) - return false; - for (int i = 0; i < tank.getTanks(); i++) { - if (tank.getFluidInTank(i) - .getAmount() > 0) - return true; - } - return false; - } - - public static Pair emptyItem(World world, ItemStack stack, boolean simulate) { - FluidStack resultingFluid = FluidStack.EMPTY; - ItemStack resultingItem = ItemStack.EMPTY; - - if (stack.getItem() instanceof PotionItem) - return PotionFluidHandler.emptyPotion(stack, simulate); - - wrapper.setInventorySlotContents(0, stack); - Optional> recipe = AllRecipeTypes.EMPTYING.find(wrapper, world); - if (recipe.isPresent()) { - EmptyingRecipe emptyingRecipe = (EmptyingRecipe) recipe.get(); - List results = emptyingRecipe.rollResults(); - if (!simulate) - stack.shrink(1); - resultingItem = results.isEmpty() ? ItemStack.EMPTY : results.get(0); - resultingFluid = emptyingRecipe.getResultingFluid(); - return Pair.of(resultingFluid, resultingItem); - } - - ItemStack split = stack.copy(); - split.setCount(1); - LazyOptional capability = - split.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY); - IFluidHandlerItem tank = capability.orElse(null); - if (tank == null) - return Pair.of(resultingFluid, resultingItem); - resultingFluid = tank.drain(1000, simulate ? FluidAction.SIMULATE : FluidAction.EXECUTE); - resultingItem = tank.getContainer() - .copy(); - if (!simulate) - stack.shrink(1); - - return Pair.of(resultingFluid, resultingItem); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/EmptyingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/processing/EmptyingRecipe.java deleted file mode 100644 index fbed9d886..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/EmptyingRecipe.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; - -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class EmptyingRecipe extends ProcessingRecipe { - - public EmptyingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.EMPTYING, params); - } - - @Override - public boolean matches(RecipeWrapper inv, World p_77569_2_) { - return ingredients.get(0).test(inv.getStackInSlot(0)); - } - - @Override - protected int getMaxInputCount() { - return 1; - } - - @Override - protected int getMaxOutputCount() { - return 1; - } - - @Override - protected int getMaxFluidOutputCount() { - return 1; - } - - public FluidStack getResultingFluid() { - if (fluidResults.isEmpty()) - throw new IllegalStateException("Emptying Recipe: " + id.toString() + " has no fluid output!"); - return fluidResults.get(0); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/HeatCondition.java b/src/main/java/com/simibubi/create/content/contraptions/processing/HeatCondition.java deleted file mode 100644 index d2f3f5f39..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/HeatCondition.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.utility.Lang; - -public enum HeatCondition { - - NONE(0xffffff), HEATED(0xE88300), SUPERHEATED(0x5C93E8), - - ; - - private int color; - - private HeatCondition(int color) { - this.color = color; - } - - public boolean testBlazeBurner(BlazeBurnerBlock.HeatLevel level) { - if (this == SUPERHEATED) - return level == HeatLevel.SEETHING; - if (this == HEATED) - return level != HeatLevel.NONE && level != HeatLevel.SMOULDERING; - return true; - } - - public BlazeBurnerBlock.HeatLevel visualizeAsBlazeBurner() { - if (this == SUPERHEATED) - return HeatLevel.SEETHING; - if (this == HEATED) - return HeatLevel.KINDLED; - return HeatLevel.NONE; - } - - public String serialize() { - return Lang.asId(name()); - } - - public String getTranslationKey() { - return "recipe.heat_requirement." + serialize(); - } - - public static HeatCondition deserialize(String name) { - for (HeatCondition heatCondition : values()) - if (heatCondition.serialize() - .equals(name)) - return heatCondition; - Create.LOGGER.warn("Tried to deserialize invalid heat condition: \"" + name + "\""); - return NONE; - } - - public int getColor() { - return color; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java b/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java deleted file mode 100644 index b433755f1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/InWorldProcessing.java +++ /dev/null @@ -1,328 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import static com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.getHeatLevelOf; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.components.fan.SplashingRecipe; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; -import com.simibubi.create.foundation.utility.ColorHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.CampfireBlock; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.BlastingRecipe; -import net.minecraft.item.crafting.FurnaceRecipe; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.SmokingRecipe; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.particles.RedstoneParticleData; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class InWorldProcessing { - - private static final RecipeWrapper WRAPPER = new RecipeWrapper(new ItemStackHandler(1)); - private static final SplashingWrapper SPLASHING_WRAPPER = new SplashingWrapper(); - - public enum Type { - SMOKING, BLASTING, SPLASHING, NONE - - ; - - public static Type byBlock(IBlockReader reader, BlockPos pos) { - BlockState blockState = reader.getBlockState(pos); - FluidState fluidState = reader.getFluidState(pos); - if (fluidState.getFluid() == Fluids.WATER || fluidState.getFluid() == Fluids.FLOWING_WATER) - return Type.SPLASHING; - Block block = blockState.getBlock(); - if (block == Blocks.FIRE || AllBlocks.LIT_BLAZE_BURNER.has(blockState) - || (BlockTags.CAMPFIRES.contains(block) && blockState.method_28500(CampfireBlock.LIT).orElse(false)) - || getHeatLevelOf(blockState) == BlazeBurnerBlock.HeatLevel.SMOULDERING) - return Type.SMOKING; - if (block == Blocks.LAVA || getHeatLevelOf(blockState).isAtLeast(BlazeBurnerBlock.HeatLevel.FADING)) - return Type.BLASTING; - return Type.NONE; - } - } - - public static boolean canProcess(ItemEntity entity, Type type) { - if (entity.getPersistentData() - .contains("CreateData")) { - CompoundNBT compound = entity.getPersistentData() - .getCompound("CreateData"); - if (compound.contains("Processing")) { - CompoundNBT processing = compound.getCompound("Processing"); - - if (Type.valueOf(processing.getString("Type")) != type) { - boolean canProcess = canProcess(entity.getItem(), type, entity.world); - processing.putString("Type", type.name()); - if (!canProcess) - processing.putInt("Time", -1); - return canProcess; - } else if (processing.getInt("Time") >= 0) - return true; - else if (processing.getInt("Time") == -1) - return false; - } - } - return canProcess(entity.getItem(), type, entity.world); - } - - private static boolean canProcess(ItemStack stack, Type type, World world) { - if (type == Type.BLASTING) { - WRAPPER.setInventorySlotContents(0, stack); - Optional smeltingRecipe = world.getRecipeManager() - .getRecipe(IRecipeType.SMELTING, WRAPPER, world); - - if (smeltingRecipe.isPresent()) - return true; - - WRAPPER.setInventorySlotContents(0, stack); - Optional blastingRecipe = world.getRecipeManager() - .getRecipe(IRecipeType.BLASTING, WRAPPER, world); - - if (blastingRecipe.isPresent()) - return true; - - return !stack.getItem().isFireproof(); - } - - if (type == Type.SMOKING) { - WRAPPER.setInventorySlotContents(0, stack); - Optional recipe = world.getRecipeManager() - .getRecipe(IRecipeType.SMOKING, WRAPPER, world); - return recipe.isPresent(); - } - - if (type == Type.SPLASHING) - return isWashable(stack, world); - - return false; - } - - public static boolean isWashable(ItemStack stack, World world) { - SPLASHING_WRAPPER.setInventorySlotContents(0, stack); - Optional recipe = AllRecipeTypes.SPLASHING.find(SPLASHING_WRAPPER, world); - return recipe.isPresent(); - } - - public static void applyProcessing(ItemEntity entity, Type type) { - if (decrementProcessingTime(entity, type) != 0) - return; - List stacks = process(entity.getItem(), type, entity.world); - if (stacks == null) - return; - if (stacks.isEmpty()) { - entity.remove(); - return; - } - entity.setItem(stacks.remove(0)); - for (ItemStack additional : stacks) { - ItemEntity entityIn = new ItemEntity(entity.world, entity.getX(), entity.getY(), entity.getZ(), additional); - entityIn.setMotion(entity.getMotion()); - entity.world.addEntity(entityIn); - } - } - - public static TransportedResult applyProcessing(TransportedItemStack transported, World world, Type type) { - TransportedResult ignore = TransportedResult.doNothing(); - if (transported.processedBy != type) { - transported.processedBy = type; - int timeModifierForStackSize = ((transported.stack.getCount() - 1) / 16) + 1; - int processingTime = - (int) (AllConfigs.SERVER.kinetics.inWorldProcessingTime.get() * timeModifierForStackSize) + 1; - transported.processingTime = processingTime; - if (!canProcess(transported.stack, type, world)) - transported.processingTime = -1; - return ignore; - } - if (transported.processingTime == -1) - return ignore; - if (transported.processingTime-- > 0) - return ignore; - - List stacks = process(transported.stack, type, world); - if (stacks == null) - return ignore; - - List transportedStacks = new ArrayList<>(); - for (ItemStack additional : stacks) { - TransportedItemStack newTransported = transported.getSimilar(); - newTransported.stack = additional.copy(); - transportedStacks.add(newTransported); - } - return TransportedResult.convertTo(transportedStacks); - } - - private static List process(ItemStack stack, Type type, World world) { - if (type == Type.SPLASHING) { - SPLASHING_WRAPPER.setInventorySlotContents(0, stack); - Optional recipe = AllRecipeTypes.SPLASHING.find(SPLASHING_WRAPPER, world); - if (recipe.isPresent()) - return applyRecipeOn(stack, recipe.get()); - return null; - } - - WRAPPER.setInventorySlotContents(0, stack); - Optional smokingRecipe = world.getRecipeManager() - .getRecipe(IRecipeType.SMOKING, WRAPPER, world); - - if (type == Type.BLASTING) { - if (!smokingRecipe.isPresent()) { - WRAPPER.setInventorySlotContents(0, stack); - Optional smeltingRecipe = world.getRecipeManager() - .getRecipe(IRecipeType.SMELTING, WRAPPER, world); - - if (smeltingRecipe.isPresent()) - return applyRecipeOn(stack, smeltingRecipe.get()); - - WRAPPER.setInventorySlotContents(0, stack); - Optional blastingRecipe = world.getRecipeManager() - .getRecipe(IRecipeType.BLASTING, WRAPPER, world); - - if (blastingRecipe.isPresent()) - return applyRecipeOn(stack, blastingRecipe.get()); - } - - return Collections.emptyList(); - } - - if (type == Type.SMOKING && smokingRecipe.isPresent()) - return applyRecipeOn(stack, smokingRecipe.get()); - - return null; - } - - private static int decrementProcessingTime(ItemEntity entity, Type type) { - CompoundNBT nbt = entity.getPersistentData(); - - if (!nbt.contains("CreateData")) - nbt.put("CreateData", new CompoundNBT()); - CompoundNBT createData = nbt.getCompound("CreateData"); - - if (!createData.contains("Processing")) - createData.put("Processing", new CompoundNBT()); - CompoundNBT processing = createData.getCompound("Processing"); - - if (!processing.contains("Type") || Type.valueOf(processing.getString("Type")) != type) { - processing.putString("Type", type.name()); - int timeModifierForStackSize = ((entity.getItem() - .getCount() - 1) / 16) + 1; - int processingTime = - (int) (AllConfigs.SERVER.kinetics.inWorldProcessingTime.get() * timeModifierForStackSize) + 1; - processing.putInt("Time", processingTime); - } - - int value = processing.getInt("Time") - 1; - processing.putInt("Time", value); - return value; - } - - public static void applyRecipeOn(ItemEntity entity, IRecipe recipe) { - List stacks = applyRecipeOn(entity.getItem(), recipe); - if (stacks == null) - return; - if (stacks.isEmpty()) { - entity.remove(); - return; - } - entity.setItem(stacks.remove(0)); - for (ItemStack additional : stacks) { - ItemEntity entityIn = new ItemEntity(entity.world, entity.getX(), entity.getY(), entity.getZ(), additional); - entityIn.setMotion(entity.getMotion()); - entity.world.addEntity(entityIn); - } - } - - public static List applyRecipeOn(ItemStack stackIn, IRecipe recipe) { - List stacks; - - if (recipe instanceof ProcessingRecipe) { - stacks = new ArrayList<>(); - for (int i = 0; i < stackIn.getCount(); i++) { - List rollResults = ((ProcessingRecipe) recipe).rollResults(); - for (ItemStack stack : rollResults) { - for (ItemStack previouslyRolled : stacks) { - if (stack.isEmpty()) - continue; - if (!ItemHandlerHelper.canItemStacksStack(stack, previouslyRolled)) - continue; - int amount = Math.min(previouslyRolled.getMaxStackSize() - previouslyRolled.getCount(), - stack.getCount()); - previouslyRolled.grow(amount); - stack.shrink(amount); - } - - if (stack.isEmpty()) - continue; - - stacks.add(stack); - } - } - } else { - ItemStack out = recipe.getRecipeOutput() - .copy(); - stacks = ItemHelper.multipliedOutput(stackIn, out); - } - - return stacks; - } - - public static void spawnParticlesForProcessing(@Nullable World world, Vector3d vec, Type type) { - if (world == null || !world.isRemote) - return; - if (world.rand.nextInt(8) != 0) - return; - - switch (type) { - case BLASTING: - world.addParticle(ParticleTypes.LARGE_SMOKE, vec.x, vec.y + .25f, vec.z, 0, 1 / 16f, 0); - break; - case SMOKING: - world.addParticle(ParticleTypes.POOF, vec.x, vec.y + .25f, vec.z, 0, 1 / 16f, 0); - break; - case SPLASHING: - Vector3d color = ColorHelper.getRGB(0x0055FF); - world.addParticle(new RedstoneParticleData((float) color.x, (float) color.y, (float) color.z, 1), - vec.x + (world.rand.nextFloat() - .5f) * .5f, vec.y + .5f, vec.z + (world.rand.nextFloat() - .5f) * .5f, - 0, 1 / 8f, 0); - world.addParticle(ParticleTypes.SPIT, vec.x + (world.rand.nextFloat() - .5f) * .5f, vec.y + .5f, - vec.z + (world.rand.nextFloat() - .5f) * .5f, 0, 1 / 8f, 0); - break; - default: - break; - } - } - - public static class SplashingWrapper extends RecipeWrapper { - public SplashingWrapper() { - super(new ItemStackHandler(1)); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingInventory.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingInventory.java deleted file mode 100644 index 45cb0927b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingInventory.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.function.Consumer; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraftforge.items.ItemStackHandler; - -public class ProcessingInventory extends ItemStackHandler { - public float remainingTime; - public float recipeDuration; - public boolean appliedRecipe; - public Consumer callback; - - public ProcessingInventory(Consumer callback) { - super(10); - this.callback = callback; - } - - public void clear() { - for (int i = 0; i < getSlots(); i++) - setStackInSlot(i, ItemStack.EMPTY); - remainingTime = 0; - recipeDuration = 0; - appliedRecipe = false; - } - - public boolean isEmpty() { - for (int i = 0; i < getSlots(); i++) - if (!getStackInSlot(i).isEmpty()) - return false; - return true; - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - ItemStack insertItem = super.insertItem(slot, stack, simulate); - if (slot == 0 && !insertItem.equals(stack, true)) - callback.accept(insertItem.copy()); - return insertItem; - } - - @Override - public CompoundNBT serializeNBT() { - CompoundNBT nbt = super.serializeNBT(); - nbt.putFloat("ProcessingTime", remainingTime); - nbt.putFloat("RecipeTime", recipeDuration); - nbt.putBoolean("AppliedRecipe", appliedRecipe); - return nbt; - } - - @Override - public void deserializeNBT(CompoundNBT nbt) { - remainingTime = nbt.getFloat("ProcessingTime"); - recipeDuration = nbt.getFloat("RecipeTime"); - appliedRecipe = nbt.getBoolean("AppliedRecipe"); - super.deserializeNBT(nbt); - if(isEmpty()) - appliedRecipe = false; - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - return ItemStack.EMPTY; - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - return slot == 0 && isEmpty(); - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java deleted file mode 100644 index 8303e0686..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingOutput.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.Random; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.JsonSyntaxException; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.JsonToNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.JSONUtils; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.registries.ForgeRegistries; - -public class ProcessingOutput { - - public static final ProcessingOutput EMPTY = new ProcessingOutput(ItemStack.EMPTY, 1); - - private static final Random r = new Random(); - private final ItemStack stack; - private final float chance; - - private Pair compatDatagenOutput; - - public ProcessingOutput(ItemStack stack, float chance) { - this.stack = stack; - this.chance = chance; - } - - public ProcessingOutput(Pair item, float chance) { - this.stack = ItemStack.EMPTY; - this.compatDatagenOutput = item; - this.chance = chance; - } - - public ItemStack getStack() { - return stack; - } - - public float getChance() { - return chance; - } - - public ItemStack rollOutput() { - int outputAmount = stack.getCount(); - for (int roll = 0; roll < stack.getCount(); roll++) - if (r.nextFloat() > chance) - outputAmount--; - if (outputAmount == 0) - return ItemStack.EMPTY; - ItemStack out = stack.copy(); - out.setCount(outputAmount); - return out; - } - - public JsonElement serialize() { - JsonObject json = new JsonObject(); - ResourceLocation resourceLocation = compatDatagenOutput == null ? stack.getItem() - .getRegistryName() : compatDatagenOutput.getFirst(); - json.addProperty("item", resourceLocation.toString()); - int count = compatDatagenOutput == null ? stack.getCount() : compatDatagenOutput.getSecond(); - if (count != 1) - json.addProperty("count", count); - if (stack.hasTag()) - json.add("nbt", new JsonParser().parse(stack.getTag() - .toString())); - if (chance != 1) - json.addProperty("chance", chance); - return json; - } - - public static ProcessingOutput deserialize(JsonElement je) { - if (!je.isJsonObject()) - throw new JsonSyntaxException("ProcessingOutput must be a json object"); - - JsonObject json = je.getAsJsonObject(); - String itemId = JSONUtils.getString(json, "item"); - int count = JSONUtils.getInt(json, "count", 1); - float chance = JSONUtils.hasField(json, "chance") ? JSONUtils.getFloat(json, "chance") : 1; - ItemStack itemstack = new ItemStack(ForgeRegistries.ITEMS.getValue(new ResourceLocation(itemId)), count); - - if (JSONUtils.hasField(json, "nbt")) { - try { - JsonElement element = json.get("nbt"); - itemstack.setTag(JsonToNBT.getTagFromJson( - element.isJsonObject() ? Create.GSON.toJson(element) : JSONUtils.getString(element, "nbt"))); - } catch (CommandSyntaxException e) { - e.printStackTrace(); - } - } - - return new ProcessingOutput(itemstack, chance); - } - - public void write(PacketBuffer buf) { - buf.writeItemStack(getStack()); - buf.writeFloat(getChance()); - } - - public static ProcessingOutput read(PacketBuffer buf) { - return new ProcessingOutput(buf.readItemStack(), buf.readFloat()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java deleted file mode 100644 index 78febd8cc..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipe.java +++ /dev/null @@ -1,219 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import javax.annotation.ParametersAreNonnullByDefault; - -import org.apache.logging.log4j.Logger; - -import com.google.gson.JsonObject; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.utility.Lang; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidStack; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public abstract class ProcessingRecipe implements IRecipe { - - protected ResourceLocation id; - protected NonNullList ingredients; - protected NonNullList results; - protected NonNullList fluidIngredients; - protected NonNullList fluidResults; - protected int processingDuration; - protected HeatCondition requiredHeat; - - private IRecipeType type; - private IRecipeSerializer serializer; - private AllRecipeTypes enumType; - - public ProcessingRecipe(AllRecipeTypes recipeType, ProcessingRecipeParams params) { - - this.enumType = recipeType; - this.processingDuration = params.processingDuration; - this.fluidIngredients = params.fluidIngredients; - this.fluidResults = params.fluidResults; - this.serializer = recipeType.serializer; - this.requiredHeat = params.requiredHeat; - this.ingredients = params.ingredients; - this.type = recipeType.type; - this.results = params.results; - this.id = params.id; - - validate(Lang.asId(recipeType.name())); - } - - // Recipe type options: - - protected abstract int getMaxInputCount(); - - protected abstract int getMaxOutputCount(); - - protected boolean canRequireHeat() { - return false; - } - - protected boolean canSpecifyDuration() { - return true; - } - - protected int getMaxFluidInputCount() { - return 0; - } - - protected int getMaxFluidOutputCount() { - return 0; - } - - // - - private void validate(String recipeTypeName) { - String messageHeader = "Your custom " + recipeTypeName + " recipe (" + id.toString() + ")"; - Logger logger = Create.LOGGER; - int ingredientCount = ingredients.size(); - int outputCount = results.size(); - - if (ingredientCount > getMaxInputCount()) - logger.warn(messageHeader + " has more item inputs (" + ingredientCount + ") than supported (" - + getMaxInputCount() + ")."); - - if (outputCount > getMaxOutputCount()) - logger.warn(messageHeader + " has more item outputs (" + outputCount + ") than supported (" - + getMaxOutputCount() + ")."); - - if (processingDuration > 0 && !canSpecifyDuration()) - logger.warn(messageHeader + " specified a duration. Durations have no impact on this type of recipe."); - - if (requiredHeat != HeatCondition.NONE && !canRequireHeat()) - logger.warn( - messageHeader + " specified a heat condition. Heat conditions have no impact on this type of recipe."); - - ingredientCount = fluidIngredients.size(); - outputCount = fluidResults.size(); - - if (ingredientCount > getMaxFluidInputCount()) - logger.warn(messageHeader + " has more fluid inputs (" + ingredientCount + ") than supported (" - + getMaxFluidInputCount() + ")."); - - if (outputCount > getMaxFluidOutputCount()) - logger.warn(messageHeader + " has more fluid outputs (" + outputCount + ") than supported (" - + getMaxFluidOutputCount() + ")."); - } - - @Override - public NonNullList getIngredients() { - return ingredients; - } - - public NonNullList getFluidIngredients() { - return fluidIngredients; - } - - public NonNullList getRollableResults() { - return results; - } - - public NonNullList getFluidResults() { - return fluidResults; - } - - public List getRollableResultsAsItemStacks() { - return getRollableResults().stream() - .map(ProcessingOutput::getStack) - .collect(Collectors.toList()); - } - - public List rollResults() { - List results = new ArrayList<>(); - for (ProcessingOutput output : getRollableResults()) { - ItemStack stack = output.rollOutput(); - if (!stack.isEmpty()) - results.add(stack); - } - return results; - } - - public int getProcessingDuration() { - return processingDuration; - } - - public HeatCondition getRequiredHeat() { - return requiredHeat; - } - - // IRecipe<> paperwork - - @Override - public ItemStack getCraftingResult(T inv) { - return getRecipeOutput(); - } - - @Override - public boolean canFit(int width, int height) { - return true; - } - - @Override - public ItemStack getRecipeOutput() { - return getRollableResults().isEmpty() ? ItemStack.EMPTY - : getRollableResults().get(0) - .getStack(); - } - - @Override - public ResourceLocation getId() { - return id; - } - - @Override - public boolean isDynamic() { - return true; - } - - @Override - public IRecipeSerializer getSerializer() { - return serializer; - } - - // Processing recipes do not show up in the recipe book - @Override - public String getGroup() { - return "processing"; - } - - @Override - public IRecipeType getType() { - return type; - } - - // Additional Data added by subtypes - - public void readAdditional(JsonObject json) {} - - public void readAdditional(PacketBuffer buffer) {} - - public void writeAdditional(JsonObject json) {} - - public void writeAdditional(PacketBuffer buffer) {} - - public AllRecipeTypes getEnumType() { - return enumType; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java deleted file mode 100644 index be0045bae..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeBuilder.java +++ /dev/null @@ -1,271 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.fluid.FluidIngredient; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.tags.ITag; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.crafting.CraftingHelper; -import net.minecraftforge.common.crafting.conditions.ICondition; -import net.minecraftforge.common.crafting.conditions.ModLoadedCondition; -import net.minecraftforge.common.crafting.conditions.NotCondition; -import net.minecraftforge.fluids.FluidStack; - -public class ProcessingRecipeBuilder> { - - protected ProcessingRecipeFactory factory; - protected ProcessingRecipeParams params; - protected List recipeConditions; - - public ProcessingRecipeBuilder(ProcessingRecipeFactory factory, ResourceLocation recipeId) { - params = new ProcessingRecipeParams(recipeId); - recipeConditions = new ArrayList<>(); - this.factory = factory; - } - - public ProcessingRecipeBuilder withItemIngredients(Ingredient... ingredients) { - return withItemIngredients(NonNullList.from(Ingredient.EMPTY, ingredients)); - } - - public ProcessingRecipeBuilder withItemIngredients(NonNullList ingredients) { - params.ingredients = ingredients; - return this; - } - - public ProcessingRecipeBuilder withSingleItemOutput(ItemStack output) { - return withItemOutputs(new ProcessingOutput(output, 1)); - } - - public ProcessingRecipeBuilder withItemOutputs(ProcessingOutput... outputs) { - return withItemOutputs(NonNullList.from(ProcessingOutput.EMPTY, outputs)); - } - - public ProcessingRecipeBuilder withItemOutputs(NonNullList outputs) { - params.results = outputs; - return this; - } - - public ProcessingRecipeBuilder withFluidIngredients(FluidIngredient... ingredients) { - return withFluidIngredients(NonNullList.from(FluidIngredient.EMPTY, ingredients)); - } - - public ProcessingRecipeBuilder withFluidIngredients(NonNullList ingredients) { - params.fluidIngredients = ingredients; - return this; - } - - public ProcessingRecipeBuilder withFluidOutputs(FluidStack... outputs) { - return withFluidOutputs(NonNullList.from(FluidStack.EMPTY, outputs)); - } - - public ProcessingRecipeBuilder withFluidOutputs(NonNullList outputs) { - params.fluidResults = outputs; - return this; - } - - public ProcessingRecipeBuilder duration(int ticks) { - params.processingDuration = ticks; - return this; - } - - public ProcessingRecipeBuilder averageProcessingDuration() { - return duration(100); - } - - public ProcessingRecipeBuilder requiresHeat(HeatCondition condition) { - params.requiredHeat = condition; - return this; - } - - public T build() { - return factory.create(params); - } - - public void build(Consumer consumer) { - consumer.accept(new DataGenResult<>(build(), recipeConditions)); - } - - // Datagen shortcuts - - public ProcessingRecipeBuilder require(ITag.INamedTag tag) { - return require(Ingredient.fromTag(tag)); - } - - public ProcessingRecipeBuilder require(IItemProvider item) { - return require(Ingredient.fromItems(item)); - } - - public ProcessingRecipeBuilder require(Ingredient ingredient) { - params.ingredients.add(ingredient); - return this; - } - - public ProcessingRecipeBuilder require(Fluid fluid, int amount) { - return require(FluidIngredient.fromFluid(fluid, amount)); - } - - public ProcessingRecipeBuilder require(ITag.INamedTag fluidTag, int amount) { - return require(FluidIngredient.fromTag(fluidTag, amount)); - } - - public ProcessingRecipeBuilder require(FluidIngredient ingredient) { - params.fluidIngredients.add(ingredient); - return this; - } - - public ProcessingRecipeBuilder output(IItemProvider item) { - return output(item, 1); - } - - public ProcessingRecipeBuilder output(float chance, IItemProvider item) { - return output(chance, item, 1); - } - - public ProcessingRecipeBuilder output(IItemProvider item, int amount) { - return output(1, item, amount); - } - - public ProcessingRecipeBuilder output(float chance, IItemProvider item, int amount) { - return output(chance, new ItemStack(item, amount)); - } - - public ProcessingRecipeBuilder output(ItemStack output) { - return output(1, output); - } - - public ProcessingRecipeBuilder output(float chance, ItemStack output) { - params.results.add(new ProcessingOutput(output, chance)); - return this; - } - - public ProcessingRecipeBuilder output(float chance, ResourceLocation registryName, int amount) { - params.results.add(new ProcessingOutput(Pair.of(registryName, amount), chance)); - return this; - } - - public ProcessingRecipeBuilder output(Fluid fluid, int amount) { - fluid = FluidHelper.convertToStill(fluid); - return output(new FluidStack(fluid, amount)); - } - - public ProcessingRecipeBuilder output(FluidStack fluidStack) { - params.fluidResults.add(fluidStack); - return this; - } - - // - - public ProcessingRecipeBuilder whenModLoaded(String modid) { - return withCondition(new ModLoadedCondition(modid)); - } - - public ProcessingRecipeBuilder whenModMissing(String modid) { - return withCondition(new NotCondition(new ModLoadedCondition(modid))); - } - - public ProcessingRecipeBuilder withCondition(ICondition condition) { - recipeConditions.add(condition); - return this; - } - - @FunctionalInterface - public interface ProcessingRecipeFactory> { - T create(ProcessingRecipeParams params); - } - - public static class ProcessingRecipeParams { - - ResourceLocation id; - NonNullList ingredients; - NonNullList results; - NonNullList fluidIngredients; - NonNullList fluidResults; - int processingDuration; - HeatCondition requiredHeat; - - ProcessingRecipeParams(ResourceLocation id) { - this.id = id; - ingredients = NonNullList.create(); - results = NonNullList.create(); - fluidIngredients = NonNullList.create(); - fluidResults = NonNullList.create(); - processingDuration = 0; - requiredHeat = HeatCondition.NONE; - } - - } - - public static class DataGenResult> implements IFinishedRecipe { - - private List recipeConditions; - private ProcessingRecipeSerializer serializer; - private ResourceLocation id; - private S recipe; - - @SuppressWarnings("unchecked") - public DataGenResult(S recipe, List recipeConditions) { - this.recipeConditions = recipeConditions; - AllRecipeTypes recipeType = recipe.getEnumType(); - String typeName = Lang.asId(recipeType.name()); - this.recipe = recipe; - - if (!(recipeType.serializer instanceof ProcessingRecipeSerializer)) - throw new IllegalStateException("Cannot datagen ProcessingRecipe of type: " + typeName); - - this.id = Create.asResource(typeName + "/" + recipe.getId() - .getPath()); - this.serializer = (ProcessingRecipeSerializer) recipe.getSerializer(); - } - - @Override - public void serialize(JsonObject json) { - serializer.write(json, recipe); - if (recipeConditions.isEmpty()) - return; - - JsonArray conds = new JsonArray(); - recipeConditions.forEach(c -> conds.add(CraftingHelper.serialize(c))); - json.add("conditions", conds); - } - - @Override - public ResourceLocation getID() { - return id; - } - - @Override - public IRecipeSerializer getSerializer() { - return serializer; - } - - @Override - public JsonObject getAdvancementJson() { - return null; - } - - @Override - public ResourceLocation getAdvancementID() { - return null; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java deleted file mode 100644 index 031a7f973..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/ProcessingRecipeSerializer.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.simibubi.create.content.contraptions.processing; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeFactory; -import com.simibubi.create.foundation.fluid.FluidHelper; -import com.simibubi.create.foundation.fluid.FluidIngredient; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.JSONUtils; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.registries.ForgeRegistryEntry; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class ProcessingRecipeSerializer> extends ForgeRegistryEntry> - implements IRecipeSerializer { - - private final ProcessingRecipeFactory factory; - - public ProcessingRecipeSerializer(ProcessingRecipeFactory factory) { - this.factory = factory; - } - - protected void writeToJson(JsonObject json, T recipe) { - JsonArray jsonIngredients = new JsonArray(); - JsonArray jsonOutputs = new JsonArray(); - - recipe.getIngredients() - .forEach(i -> jsonIngredients.add(i.serialize())); - recipe.getFluidIngredients() - .forEach(i -> jsonIngredients.add(i.serialize())); - - recipe.getRollableResults() - .forEach(o -> jsonOutputs.add(o.serialize())); - recipe.getFluidResults() - .forEach(o -> jsonOutputs.add(FluidHelper.serializeFluidStack(o))); - - json.add("ingredients", jsonIngredients); - json.add("results", jsonOutputs); - - int processingDuration = recipe.getProcessingDuration(); - if (processingDuration > 0) - json.addProperty("processingTime", processingDuration); - - HeatCondition requiredHeat = recipe.getRequiredHeat(); - if (requiredHeat != HeatCondition.NONE) - json.addProperty("heatRequirement", requiredHeat.serialize()); - - recipe.writeAdditional(json); - } - - protected T readFromJson(ResourceLocation recipeId, JsonObject json) { - ProcessingRecipeBuilder builder = new ProcessingRecipeBuilder<>(factory, recipeId); - NonNullList ingredients = NonNullList.create(); - NonNullList fluidIngredients = NonNullList.create(); - NonNullList results = NonNullList.create(); - NonNullList fluidResults = NonNullList.create(); - - for (JsonElement je : JSONUtils.getJsonArray(json, "ingredients")) { - if (FluidIngredient.isFluidIngredient(je)) - fluidIngredients.add(FluidIngredient.deserialize(je)); - else - ingredients.add(Ingredient.deserialize(je)); - } - - for (JsonElement je : JSONUtils.getJsonArray(json, "results")) { - JsonObject jsonObject = je.getAsJsonObject(); - if (JSONUtils.hasField(jsonObject, "fluid")) - fluidResults.add(FluidHelper.deserializeFluidStack(jsonObject)); - else - results.add(ProcessingOutput.deserialize(je)); - } - - builder.withItemIngredients(ingredients) - .withItemOutputs(results) - .withFluidIngredients(fluidIngredients) - .withFluidOutputs(fluidResults); - - if (JSONUtils.hasField(json, "processingTime")) - builder.duration(JSONUtils.getInt(json, "processingTime")); - if (JSONUtils.hasField(json, "heatRequirement")) - builder.requiresHeat(HeatCondition.deserialize(JSONUtils.getString(json, "heatRequirement"))); - - return builder.build(); - } - - protected void writeToBuffer(PacketBuffer buffer, T recipe) { - NonNullList ingredients = recipe.getIngredients(); - NonNullList fluidIngredients = recipe.getFluidIngredients(); - NonNullList outputs = recipe.getRollableResults(); - NonNullList fluidOutputs = recipe.getFluidResults(); - - buffer.writeVarInt(ingredients.size()); - ingredients.forEach(i -> i.write(buffer)); - buffer.writeVarInt(fluidIngredients.size()); - fluidIngredients.forEach(i -> i.write(buffer)); - - buffer.writeVarInt(outputs.size()); - outputs.forEach(o -> o.write(buffer)); - buffer.writeVarInt(fluidOutputs.size()); - fluidOutputs.forEach(o -> o.writeToPacket(buffer)); - - buffer.writeVarInt(recipe.getProcessingDuration()); - buffer.writeVarInt(recipe.getRequiredHeat() - .ordinal()); - } - - protected T readFromBuffer(ResourceLocation recipeId, PacketBuffer buffer) { - NonNullList ingredients = NonNullList.create(); - NonNullList fluidIngredients = NonNullList.create(); - NonNullList results = NonNullList.create(); - NonNullList fluidResults = NonNullList.create(); - - int size = buffer.readVarInt(); - for (int i = 0; i < size; i++) - ingredients.add(Ingredient.read(buffer)); - - size = buffer.readVarInt(); - for (int i = 0; i < size; i++) - fluidIngredients.add(FluidIngredient.read(buffer)); - - size = buffer.readVarInt(); - for (int i = 0; i < size; i++) - results.add(ProcessingOutput.read(buffer)); - - size = buffer.readVarInt(); - for (int i = 0; i < size; i++) - fluidResults.add(FluidStack.readFromPacket(buffer)); - - return new ProcessingRecipeBuilder<>(factory, recipeId).withItemIngredients(ingredients) - .withItemOutputs(results) - .withFluidIngredients(fluidIngredients) - .withFluidOutputs(fluidResults) - .duration(buffer.readVarInt()) - .requiresHeat(HeatCondition.values()[buffer.readVarInt()]) - .build(); - } - - public final void write(JsonObject json, T recipe) { - writeToJson(json, recipe); - } - - @Override - public final T read(ResourceLocation id, JsonObject json) { - return readFromJson(id, json); - } - - @Override - public final void write(PacketBuffer buffer, T recipe) { - writeToBuffer(buffer, recipe); - } - - @Override - public final T read(ResourceLocation id, PacketBuffer buffer) { - return readFromBuffer(id, buffer); - } - - public ProcessingRecipeFactory getFactory() { - return factory; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java deleted file mode 100644 index ddd630313..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlock.java +++ /dev/null @@ -1,265 +0,0 @@ -package com.simibubi.create.content.contraptions.processing.burner; - -import java.util.Random; - -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.processing.BasinTileEntity; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.utility.Lang; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.advancements.criterion.StatePropertiesPredicate; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.FlintAndSteelItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.ConstantRange; -import net.minecraft.loot.ItemLootEntry; -import net.minecraft.loot.LootPool; -import net.minecraft.loot.LootTable; -import net.minecraft.loot.conditions.BlockStateProperty; -import net.minecraft.loot.conditions.ILootCondition.IBuilder; -import net.minecraft.pathfinding.PathType; -import net.minecraft.loot.conditions.SurvivesExplosion; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.NonNullList; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.FakePlayer; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class BlazeBurnerBlock extends Block implements ITE { - - public static final Property HEAT_LEVEL = EnumProperty.create("blaze", HeatLevel.class); - - public BlazeBurnerBlock(Properties properties) { - super(properties); - setDefaultState(super.getDefaultState().with(HEAT_LEVEL, HeatLevel.NONE)); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder); - builder.add(HEAT_LEVEL); - } - - @Override - public void onBlockAdded(BlockState state, World world, BlockPos pos, BlockState p_220082_4_, boolean p_220082_5_) { - if (world.isRemote) - return; - TileEntity tileEntity = world.getTileEntity(pos.up()); - if (!(tileEntity instanceof BasinTileEntity)) - return; - BasinTileEntity basin = (BasinTileEntity) tileEntity; - basin.notifyChangeOfContents(); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return state.get(HEAT_LEVEL) - .isAtLeast(HeatLevel.SMOULDERING); - } - - @Override - public void fillItemGroup(ItemGroup p_149666_1_, NonNullList p_149666_2_) { - p_149666_2_.add(AllItems.EMPTY_BLAZE_BURNER.asStack()); - super.fillItemGroup(p_149666_1_, p_149666_2_); - } - - @Nullable - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.HEATER.create(); - } - - @Override - public Class getTileEntityClass() { - return BlazeBurnerTileEntity.class; - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult blockRayTraceResult) { - ItemStack heldItem = player.getHeldItem(hand); - boolean dontConsume = player.isCreative(); - boolean forceOverflow = !(player instanceof FakePlayer); - - if (!state.hasTileEntity()) { - if (heldItem.getItem() instanceof FlintAndSteelItem) { - world.playSound(player, pos, SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.BLOCKS, 1.0F, - world.rand.nextFloat() * 0.4F + 0.8F); - if (world.isRemote) - return ActionResultType.SUCCESS; - heldItem.damageItem(1, player, p -> p.sendBreakAnimation(hand)); - world.setBlockState(pos, AllBlocks.LIT_BLAZE_BURNER.getDefaultState()); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } - - ActionResult res = tryInsert(state, world, pos, dontConsume ? heldItem.copy() : heldItem, forceOverflow, false); - ItemStack leftover = res.getResult(); - if (!world.isRemote && !dontConsume && !leftover.isEmpty()) { - if (heldItem.isEmpty()) { - player.setHeldItem(hand, leftover); - } else if (!player.inventory.addItemStackToInventory(leftover)) { - player.dropItem(leftover, false); - } - } - - return res.getType() == ActionResultType.SUCCESS ? res.getType() : ActionResultType.PASS; - } - - public static ActionResult tryInsert(BlockState state, World world, BlockPos pos, ItemStack stack, boolean forceOverflow, - boolean simulate) { - if (!state.hasTileEntity()) - return ActionResult.fail(ItemStack.EMPTY); - - TileEntity te = world.getTileEntity(pos); - if (!(te instanceof BlazeBurnerTileEntity)) - return ActionResult.fail(ItemStack.EMPTY); - BlazeBurnerTileEntity burnerTE = (BlazeBurnerTileEntity) te; - - if (!burnerTE.tryUpdateFuel(stack, forceOverflow, simulate)) - return ActionResult.fail(ItemStack.EMPTY); - - ItemStack container = stack.getContainerItem(); - if (!simulate && !world.isRemote) { - world.playSound(null, pos, SoundEvents.ENTITY_BLAZE_SHOOT, SoundCategory.BLOCKS, - .125f + world.rand.nextFloat() * .125f, .75f - world.rand.nextFloat() * .25f); - stack.shrink(1); - } - if (!container.isEmpty()) { - return ActionResult.success(container); - } - return ActionResult.success(ItemStack.EMPTY); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - ItemStack stack = context.getItem(); - Item item = stack.getItem(); - BlockState defaultState = getDefaultState(); - if (!(item instanceof BlazeBurnerBlockItem)) - return defaultState; - HeatLevel initialHeat = - ((BlazeBurnerBlockItem) item).hasCapturedBlaze() ? HeatLevel.SMOULDERING : HeatLevel.NONE; - return defaultState.with(HEAT_LEVEL, initialHeat); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext context) { - return AllShapes.HEATER_BLOCK_SHAPE; - } - - @Override - public VoxelShape getCollisionShape(BlockState p_220071_1_, IBlockReader p_220071_2_, BlockPos p_220071_3_, - ISelectionContext p_220071_4_) { - if (p_220071_4_ == ISelectionContext.dummy()) - return AllShapes.HEATER_BLOCK_SPECIAL_COLLISION_SHAPE; - return getShape(p_220071_1_, p_220071_2_, p_220071_3_, p_220071_4_); - } - - @Override - public int getLightValue(BlockState state, IBlockReader world, BlockPos pos) { - return MathHelper.clamp(state.get(HEAT_LEVEL) - .ordinal() * 4 - 1, 0, 15); - } - - public static HeatLevel getHeatLevelOf(BlockState blockState) { - return blockState.contains(BlazeBurnerBlock.HEAT_LEVEL) ? blockState.get(BlazeBurnerBlock.HEAT_LEVEL) - : HeatLevel.NONE; - } - - public static LootTable.Builder buildLootTable() { - IBuilder survivesExplosion = SurvivesExplosion.builder(); - BlazeBurnerBlock block = AllBlocks.BLAZE_BURNER.get(); - - LootTable.Builder builder = LootTable.builder(); - LootPool.Builder poolBuilder = LootPool.builder(); - for (HeatLevel level : HeatLevel.values()) { - IItemProvider drop = - level == HeatLevel.NONE ? AllItems.EMPTY_BLAZE_BURNER.get() : AllBlocks.BLAZE_BURNER.get(); - poolBuilder.addEntry(ItemLootEntry.builder(drop) - .acceptCondition(survivesExplosion) - .acceptCondition(BlockStateProperty.builder(block) - .properties(StatePropertiesPredicate.Builder.create() - .exactMatch(HEAT_LEVEL, level)))); - } - builder.addLootPool(poolBuilder.rolls(ConstantRange.of(1))); - return builder; - } - - @Override - public boolean hasComparatorInputOverride(BlockState p_149740_1_) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState state, World p_180641_2_, BlockPos p_180641_3_) { - return Math.max(0, state.get(HEAT_LEVEL).ordinal() -1); - } - - @OnlyIn(Dist.CLIENT) - public void animateTick(BlockState state, World world, BlockPos pos, Random random) { - if (random.nextInt(10) != 0) - return; - if (!state.get(HEAT_LEVEL) - .isAtLeast(HeatLevel.SMOULDERING)) - return; - world.playSound((double) ((float) pos.getX() + 0.5F), (double) ((float) pos.getY() + 0.5F), - (double) ((float) pos.getZ() + 0.5F), SoundEvents.BLOCK_CAMPFIRE_CRACKLE, SoundCategory.BLOCKS, - 0.5F + random.nextFloat(), random.nextFloat() * 0.7F + 0.6F, false); - } - - public enum HeatLevel implements IStringSerializable { - NONE, SMOULDERING, FADING, KINDLED, SEETHING,; - - public static HeatLevel byIndex(int index) { - return values()[index]; - } - - @Override - public String getString() { - return Lang.asId(name()); - } - - public boolean isAtLeast(HeatLevel heatLevel) { - return this.ordinal() >= heatLevel.ordinal(); - } - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java deleted file mode 100644 index ee8b13bb2..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerBlockItem.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.simibubi.create.content.contraptions.processing.burner; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.utility.VecHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.monster.BlazeEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.MobSpawnerTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.WeightedSpawnerEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.spawner.AbstractSpawner; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class BlazeBurnerBlockItem extends BlockItem { - - private final boolean capturedBlaze; - - public static BlazeBurnerBlockItem empty(Properties properties) { - return new BlazeBurnerBlockItem(AllBlocks.BLAZE_BURNER.get(), properties, false); - } - - public static BlazeBurnerBlockItem withBlaze(Block block, Properties properties) { - return new BlazeBurnerBlockItem(block, properties, true); - } - - @Override - public void addToBlockToItemMap(Map p_195946_1_, Item p_195946_2_) { - if (!hasCapturedBlaze()) - return; - super.addToBlockToItemMap(p_195946_1_, p_195946_2_); - } - - private BlazeBurnerBlockItem(Block block, Properties properties, boolean capturedBlaze) { - super(block, properties); - this.capturedBlaze = capturedBlaze; - } - - @Override - public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { - if (!hasCapturedBlaze()) - return; - super.fillItemGroup(p_150895_1_, p_150895_2_); - } - - @Override - public String getTranslationKey() { - return hasCapturedBlaze() ? super.getTranslationKey() : "item.create." + getRegistryName().getPath(); - } - - @Override - public ActionResultType onItemUse(ItemUseContext context) { - if (hasCapturedBlaze()) - return super.onItemUse(context); - - World world = context.getWorld(); - BlockPos pos = context.getPos(); - TileEntity te = world.getTileEntity(pos); - PlayerEntity player = context.getPlayer(); - - if (!(te instanceof MobSpawnerTileEntity)) - return super.onItemUse(context); - - AbstractSpawner spawner = ((MobSpawnerTileEntity) te).getSpawnerBaseLogic(); - List possibleSpawns = - ObfuscationReflectionHelper.getPrivateValue(AbstractSpawner.class, spawner, "field_98285_e"); - if (possibleSpawns.isEmpty()) { - possibleSpawns = new ArrayList<>(); - possibleSpawns - .add(ObfuscationReflectionHelper.getPrivateValue(AbstractSpawner.class, spawner, "field_98282_f")); - } - - ResourceLocation blazeId = EntityType.BLAZE.getRegistryName(); - for (WeightedSpawnerEntity e : possibleSpawns) { - ResourceLocation spawnerEntityId = new ResourceLocation(e.getNbt() - .getString("id")); - if (!spawnerEntityId.equals(blazeId)) - continue; - - spawnCaptureEffects(world, VecHelper.getCenterOf(pos)); - if (world.isRemote || player == null) - return ActionResultType.SUCCESS; - - giveBurnerItemTo(player, context.getItem(), context.getHand()); - return ActionResultType.SUCCESS; - } - - return super.onItemUse(context); - } - - @Override - public ActionResultType itemInteractionForEntity(ItemStack heldItem, PlayerEntity player, LivingEntity entity, Hand hand) { - if (hasCapturedBlaze()) - return ActionResultType.PASS; - if (!(entity instanceof BlazeEntity)) - return ActionResultType.PASS; - - World world = player.world; - spawnCaptureEffects(world, entity.getPositionVec()); - if (world.isRemote) - return ActionResultType.FAIL; - - giveBurnerItemTo(player, heldItem, hand); - entity.remove(); - return ActionResultType.FAIL; - } - - protected void giveBurnerItemTo(PlayerEntity player, ItemStack heldItem, Hand hand) { - ItemStack filled = AllBlocks.BLAZE_BURNER.asStack(); - if (!player.isCreative()) - heldItem.shrink(1); - if (heldItem.isEmpty()) { - player.setHeldItem(hand, filled); - return; - } - player.inventory.placeItemBackInInventory(player.world, filled); - } - - private void spawnCaptureEffects(World world, Vector3d vec) { - if (world.isRemote) { - for (int i = 0; i < 40; i++) { - Vector3d motion = VecHelper.offsetRandomly(Vector3d.ZERO, world.rand, .125f); - world.addParticle(ParticleTypes.FLAME, vec.x, vec.y, vec.z, motion.x, motion.y, motion.z); - Vector3d circle = motion.mul(1, 0, 1) - .normalize() - .scale(.5f); - world.addParticle(ParticleTypes.SMOKE, circle.x, vec.y, circle.z, 0, -0.125, 0); - } - return; - } - - BlockPos soundPos = new BlockPos(vec); - world.playSound(null, soundPos, SoundEvents.ENTITY_BLAZE_HURT, SoundCategory.HOSTILE, .25f, .75f); - world.playSound(null, soundPos, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.HOSTILE, .5f, .75f); - } - - public boolean hasCapturedBlaze() { - return capturedBlaze; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerHandler.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerHandler.java deleted file mode 100644 index 07582c253..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerHandler.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.simibubi.create.content.contraptions.processing.burner; - -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerTileEntity.FuelType; - -import net.minecraft.entity.projectile.EggEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.ProjectileImpactEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber -public class BlazeBurnerHandler { - - @SubscribeEvent - public static void thrownEggsGetEatenByBurner(ProjectileImpactEvent.Throwable event) { - if (!(event.getThrowable() instanceof EggEntity)) - return; - - if (event.getRayTraceResult() - .getType() != RayTraceResult.Type.BLOCK) - return; - - TileEntity tile = event.getThrowable().world.getTileEntity(new BlockPos(event.getRayTraceResult() - .getHitVec())); - if (!(tile instanceof BlazeBurnerTileEntity)) { - return; - } - - event.setCanceled(true); - event.getThrowable() - .setMotion(Vector3d.ZERO); - event.getThrowable() - .remove(); - - World world = event.getThrowable().world; - if (world.isRemote) - return; - - BlazeBurnerTileEntity heater = (BlazeBurnerTileEntity) tile; - if (heater.activeFuel != FuelType.SPECIAL) { - heater.activeFuel = FuelType.NORMAL; - heater.remainingBurnTime = - MathHelper.clamp(heater.remainingBurnTime + 80, 0, BlazeBurnerTileEntity.maxHeatCapacity); - heater.updateBlockState(); - heater.notifyUpdate(); - } - - AllSoundEvents.BLAZE_MUNCH.playOnServer(world, heater.getPos()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java deleted file mode 100644 index cf99503c0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerRenderer.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.content.contraptions.processing.burner; - -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; - -public class BlazeBurnerRenderer extends SafeTileEntityRenderer { - - public BlazeBurnerRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(BlazeBurnerTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - HeatLevel heatLevel = te.getHeatLevelFromBlock(); - if (heatLevel == HeatLevel.NONE) - return; - - float renderTick = AnimationTickHolder.getRenderTime(te.getWorld()) + (te.hashCode() % 13) * 16f; - float offset = (MathHelper.sin((float) ((renderTick / 16f) % (2 * Math.PI))) + .5f) / 16f; - - PartialModel blazeModel = AllBlockPartials.BLAZES.get(heatLevel); - SuperByteBuffer blazeBuffer = PartialBufferer.get(blazeModel, te.getBlockState()); - blazeBuffer.rotateCentered(Direction.UP, AngleHelper.rad(te.headAngle.getValue(partialTicks))); - blazeBuffer.translate(0, offset, 0); - blazeBuffer.light(0xF000F0) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerTileEntity.java deleted file mode 100644 index 7e104acca..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/BlazeBurnerTileEntity.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.simibubi.create.content.contraptions.processing.burner; - -import java.util.List; -import java.util.Random; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.particle.CubeParticleData; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.common.ForgeHooks; - -public class BlazeBurnerTileEntity extends SmartTileEntity { - - private final static int[][] heatParticleColors = - { { 0x3B141A, 0x47141A, 0x7A3B24, 0x854D26 }, { 0x2A0103, 0x741B0A, 0xC38246, 0xCCBD78 }, - { 0x630B03, 0x8B3503, 0xBC8200, 0xCCC849 }, { 0x1C6378, 0x4798B5, 0x4DA6C0, 0xBAC8CE } }; - - public static final int maxHeatCapacity = 10000; - - public static enum FuelType { - NONE, NORMAL, SPECIAL - } - - int remainingBurnTime; - FuelType activeFuel; - LerpedFloat headAngle; - - public BlazeBurnerTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - activeFuel = FuelType.NONE; - remainingBurnTime = 0; - headAngle = LerpedFloat.angular(); - } - - @Override - public void tick() { - super.tick(); - if (world.isRemote) { - tickRotation(); - spawnParticles(getHeatLevelFromBlock(), 1); - return; - } - - if (remainingBurnTime > 0) - remainingBurnTime--; - - if (activeFuel == FuelType.NORMAL) - updateBlockState(); - if (remainingBurnTime > 0) - return; - - if (activeFuel == FuelType.SPECIAL) { - activeFuel = FuelType.NORMAL; - remainingBurnTime = maxHeatCapacity / 2; - } else - activeFuel = FuelType.NONE; - updateBlockState(); - notifyUpdate(); - } - - private void tickRotation() { - ClientPlayerEntity player = Minecraft.getInstance().player; - float target = 0; - if (player != null) { - double x = player.getX(); - double z = player.getZ(); - if (isVirtual()) { - x = -4; - z = -10; - } - double dx = x - (getPos().getX() + 0.5); - double dz = z - (getPos().getZ() + 0.5); - target = AngleHelper.deg(-MathHelper.atan2(dz, dx)) - 90; - } - target = headAngle.getValue() + AngleHelper.getShortestAngleDiff(headAngle.getValue(), target); - headAngle.chase(target, .25f, Chaser.exp(5)); - headAngle.tickChaser(); - } - - @Override - public void addBehaviours(List behaviours) {} - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putInt("fuelLevel", activeFuel.ordinal()); - compound.putInt("burnTimeRemaining", remainingBurnTime); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - activeFuel = FuelType.values()[compound.getInt("fuelLevel")]; - remainingBurnTime = compound.getInt("burnTimeRemaining"); - super.fromTag(state, compound, clientPacket); - } - - /** - * @return true if the heater updated its burn time and a item should be - * consumed - */ - boolean tryUpdateFuel(ItemStack itemStack, boolean forceOverflow, boolean simulate) { - FuelType newFuel = FuelType.NONE; - int newBurnTime = ForgeHooks.getBurnTime(itemStack); - - if (newBurnTime > 0) - newFuel = FuelType.NORMAL; - if (AllItems.BLAZE_CAKE.isIn(itemStack)) { - newBurnTime = 1000; - newFuel = FuelType.SPECIAL; - } - - if (newFuel == FuelType.NONE) - return false; - if (newFuel.ordinal() < activeFuel.ordinal()) - return false; - if (activeFuel == FuelType.SPECIAL && remainingBurnTime > 20) - return false; - - if (newFuel == activeFuel) { - if (remainingBurnTime + newBurnTime > maxHeatCapacity && !forceOverflow) - return false; - newBurnTime = MathHelper.clamp(remainingBurnTime + newBurnTime, 0, maxHeatCapacity); - } - - if (simulate) - return true; - - activeFuel = newFuel; - remainingBurnTime = newBurnTime; - - if (world.isRemote) { - HeatLevel level = getHeatLevelFromFuelType(newFuel); - for (int i = 0; i < 20; i++) - spawnParticles(level, 1 + (.25 * (i / 4))); - return true; - } - - updateBlockState(); - return true; - } - - public BlazeBurnerBlock.HeatLevel getHeatLevelFromBlock() { - return BlazeBurnerBlock.getHeatLevelOf(getBlockState()); - } - - public void updateBlockState() { - HeatLevel inBlockState = getHeatLevelFromBlock(); - HeatLevel inTE = getHeatLevelFromFuelType(activeFuel); - if (inBlockState == inTE) - return; - world.setBlockState(pos, getBlockState().with(BlazeBurnerBlock.HEAT_LEVEL, inTE)); - notifyUpdate(); - } - - protected HeatLevel getHeatLevelFromFuelType(FuelType fuel) { - HeatLevel level = HeatLevel.SMOULDERING; - switch (activeFuel) { - case SPECIAL: - level = HeatLevel.SEETHING; - break; - case NORMAL: - boolean lowPercent = (double) remainingBurnTime / maxHeatCapacity < 0.1; - level = lowPercent ? HeatLevel.FADING : HeatLevel.KINDLED; - break; - default: - case NONE: - break; - } - return level; - } - - private void spawnParticles(HeatLevel heatLevel, double burstMult) { - if (world == null) - return; - if (heatLevel == BlazeBurnerBlock.HeatLevel.NONE) - return; - - Random r = world.getRandom(); - switch (heatLevel) { - case SMOULDERING: - if (r.nextDouble() > 0.25) - return; - spawnParticle(heatLevel, 0.03F, 15, false, 0.015 * burstMult, 0.1 * burstMult); - break; - case FADING: - if (r.nextDouble() > 0.5) - return; - spawnParticle(heatLevel, 0.035F, 18, false, 0.03 * burstMult, 0.15 * burstMult); - break; - case KINDLED: - spawnParticle(heatLevel, 0.04F, 35, true, 0.05 * burstMult, 0.2 * burstMult); - break; - case SEETHING: - for (int i = 0; i < 2; i++) { - if (r.nextDouble() > 0.6) - return; - spawnParticle(heatLevel, 0.045F, 35, true, 0.06 * burstMult, 0.22 * burstMult); - } - break; - default: - break; - } - } - - private void spawnParticle(HeatLevel heatLevel, float scale, int avgAge, boolean hot, double speed, double spread) { - Random random = world.getRandom(); - Vector3d color = randomColor(heatLevel); - world.addOptionalParticle( - new CubeParticleData((float) color.x, (float) color.y, (float) color.z, scale, avgAge, hot), - (double) pos.getX() + 0.5D + (random.nextDouble() * 2.0 - 1D) * spread, - (double) pos.getY() + 0.6D + (random.nextDouble() / 4.0), - (double) pos.getZ() + 0.5D + (random.nextDouble() * 2.0 - 1D) * spread, 0.0D, speed, 0.0D); - } - - private static Vector3d randomColor(BlazeBurnerBlock.HeatLevel heatLevel) { - if (heatLevel == BlazeBurnerBlock.HeatLevel.NONE) - return new Vector3d(0, 0, 0); - return ColorHelper.getRGB(heatParticleColors[heatLevel.ordinal() - 1][(int) (Math.random() * 4)]); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/LitBlazeBurnerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/processing/burner/LitBlazeBurnerBlock.java deleted file mode 100644 index cfe315f79..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/processing/burner/LitBlazeBurnerBlock.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.simibubi.create.content.contraptions.processing.burner; - -import java.util.Random; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.pathfinding.PathType; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class LitBlazeBurnerBlock extends Block { - -// 1.16: add a soul fire variant - -// public enum FlameType implements IStringSerializable { -// REGULAR, SOULFIRE; -// -// @Override -// public String getName() { -// return Lang.asId(name()); -// } -// -// } - - public LitBlazeBurnerBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult blockRayTraceResult) { - ItemStack heldItem = player.getHeldItem(hand); - - // Check for 'Shovels' - if (!heldItem.canHarvestBlock(Blocks.SNOW.getDefaultState())) - return ActionResultType.PASS; - - world.playSound(player, pos, SoundEvents.ENTITY_GENERIC_EXTINGUISH_FIRE, SoundCategory.BLOCKS, .5f, 2); - - if (world.isRemote) - return ActionResultType.SUCCESS; - if (!player.isCreative()) - heldItem.damageItem(1, player, p -> p.sendBreakAnimation(hand)); - - world.setBlockState(pos, AllBlocks.BLAZE_BURNER.getDefaultState()); - return ActionResultType.SUCCESS; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader reader, BlockPos pos, ISelectionContext context) { - return AllBlocks.BLAZE_BURNER.get() - .getShape(state, reader, pos, context); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllItems.EMPTY_BLAZE_BURNER.asStack(); - } - - @OnlyIn(Dist.CLIENT) - public void animateTick(BlockState p_180655_1_, World world, BlockPos pos, Random random) { - world.addOptionalParticle(ParticleTypes.LARGE_SMOKE, true, - (double) pos.getX() + 0.5D + random.nextDouble() / 3.0D * (double) (random.nextBoolean() ? 1 : -1), - (double) pos.getY() + random.nextDouble() + random.nextDouble(), - (double) pos.getZ() + 0.5D + random.nextDouble() / 3.0D * (double) (random.nextBoolean() ? 1 : -1), 0.0D, - 0.07D, 0.0D); - - if (random.nextInt(10) == 0) { - world.playSound((double) ((float) pos.getX() + 0.5F), (double) ((float) pos.getY() + 0.5F), - (double) ((float) pos.getZ() + 0.5F), SoundEvents.BLOCK_CAMPFIRE_CRACKLE, SoundCategory.BLOCKS, - 0.25F + random.nextFloat() * .25f, random.nextFloat() * 0.7F + 0.6F, false); - } - - if (random.nextInt(5) == 0) { - for (int i = 0; i < random.nextInt(1) + 1; ++i) { - world.addParticle(ParticleTypes.LAVA, (double) ((float) pos.getX() + 0.5F), - (double) ((float) pos.getY() + 0.5F), (double) ((float) pos.getZ() + 0.5F), - (double) (random.nextFloat() / 2.0F), 5.0E-5D, (double) (random.nextFloat() / 2.0F)); - } - } - } - - @Override - public boolean hasComparatorInputOverride(BlockState p_149740_1_) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState state, World p_180641_2_, BlockPos p_180641_3_) { - return 1; - } - - @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader reader, BlockPos pos, - ISelectionContext context) { - return AllBlocks.BLAZE_BURNER.get() - .getCollisionShape(state, reader, pos, context); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftBlock.java deleted file mode 100644 index 19a563c35..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftBlock.java +++ /dev/null @@ -1,313 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Predicate; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.placement.IPlacementHelper; -import com.simibubi.create.foundation.utility.placement.PlacementHelpers; -import com.simibubi.create.foundation.utility.placement.PlacementOffset; -import com.simibubi.create.foundation.utility.placement.util.PoleHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public class GantryShaftBlock extends DirectionalKineticBlock { - - public static final Property PART = EnumProperty.create("part", Part.class); - public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); - - public enum Part implements IStringSerializable { - START, MIDDLE, END, SINGLE; - - @Override - public String getString() { - return Lang.asId(name()); - } - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(PART, POWERED)); - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult ray) { - ItemStack heldItem = player.getHeldItem(hand); - - IPlacementHelper placementHelper = PlacementHelpers.get(placementHelperId); - if (!placementHelper.matchesItem(heldItem)) - return ActionResultType.PASS; - - return placementHelper.getOffset(player, world, state, pos, ray).placeInWorld(world, ((BlockItem) heldItem.getItem()), player, hand, ray); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.EIGHT_VOXEL_POLE.get(state.get(FACING) - .getAxis()); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.ENTITYBLOCK_ANIMATED; - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, - BlockPos pos, BlockPos neighbourPos) { - Direction facing = state.get(FACING); - Axis axis = facing.getAxis(); - if (direction.getAxis() != axis) - return state; - boolean connect = AllBlocks.GANTRY_SHAFT.has(neighbour) && neighbour.get(FACING) == facing; - - Part part = state.get(PART); - if (direction.getAxisDirection() == facing.getAxisDirection()) { - if (connect) { - if (part == Part.END) - part = Part.MIDDLE; - if (part == Part.SINGLE) - part = Part.START; - } else { - if (part == Part.MIDDLE) - part = Part.END; - if (part == Part.START) - part = Part.SINGLE; - } - } else { - if (connect) { - if (part == Part.START) - part = Part.MIDDLE; - if (part == Part.SINGLE) - part = Part.END; - } else { - if (part == Part.MIDDLE) - part = Part.START; - if (part == Part.END) - part = Part.SINGLE; - } - } - - return state.with(PART, part); - } - - public GantryShaftBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(POWERED, false) - .with(PART, Part.SINGLE)); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockState state = super.getStateForPlacement(context); - BlockPos pos = context.getPos(); - World world = context.getWorld(); - Direction face = context.getFace(); - - BlockState neighbour = world.getBlockState(pos.offset(state.get(FACING) - .getOpposite())); - - BlockState clickedState = - AllBlocks.GANTRY_SHAFT.has(neighbour) ? neighbour : world.getBlockState(pos.offset(face.getOpposite())); - - if (AllBlocks.GANTRY_SHAFT.has(clickedState) && clickedState.get(FACING) - .getAxis() == state.get(FACING) - .getAxis()) { - Direction facing = clickedState.get(FACING); - state = state.with(FACING, context.getPlayer() == null || !context.getPlayer() - .isSneaking() ? facing : facing.getOpposite()); - } - - return state.with(POWERED, shouldBePowered(state, world, pos)); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - ActionResultType onWrenched = super.onWrenched(state, context); - if (onWrenched.isAccepted()) { - BlockPos pos = context.getPos(); - World world = context.getWorld(); - neighborChanged(world.getBlockState(pos), world, pos, state.getBlock(), pos, false); - } - return onWrenched; - } - - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - super.onBlockAdded(state, worldIn, pos, oldState, isMoving); - - if (!worldIn.isRemote() && oldState.getBlock().is(AllBlocks.GANTRY_SHAFT.get())) { - Part oldPart = oldState.get(PART), part = state.get(PART); - if ((oldPart != Part.MIDDLE && part == Part.MIDDLE) || (oldPart == Part.SINGLE && part != Part.SINGLE)) { - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof GantryShaftTileEntity) - ((GantryShaftTileEntity) te).checkAttachedCarriageBlocks(); - } - } - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block p_220069_4_, BlockPos p_220069_5_, - boolean p_220069_6_) { - if (worldIn.isRemote) - return; - boolean previouslyPowered = state.get(POWERED); - boolean shouldPower = worldIn.isBlockPowered(pos); // shouldBePowered(state, worldIn, pos); - - if (!previouslyPowered && !shouldPower && shouldBePowered(state, worldIn, pos)) { - worldIn.setBlockState(pos, state.with(POWERED, true), 3); - return; - } - - if (previouslyPowered == shouldPower) - return; - - // Collect affected gantry shafts - List toUpdate = new ArrayList<>(); - Direction facing = state.get(FACING); - Axis axis = facing.getAxis(); - for (Direction d : Iterate.directionsInAxis(axis)) { - BlockPos currentPos = pos.offset(d); - while (true) { - if (!worldIn.isBlockPresent(currentPos)) - break; - BlockState currentState = worldIn.getBlockState(currentPos); - if (!(currentState.getBlock() instanceof GantryShaftBlock)) - break; - if (currentState.get(FACING) != facing) - break; - if (!shouldPower && currentState.get(POWERED) && worldIn.isBlockPowered(currentPos)) - return; - if (currentState.get(POWERED) == shouldPower) - break; - toUpdate.add(currentPos); - currentPos = currentPos.offset(d); - } - } - - toUpdate.add(pos); - for (BlockPos blockPos : toUpdate) { - BlockState blockState = worldIn.getBlockState(blockPos); - TileEntity te = worldIn.getTileEntity(blockPos); - if (te instanceof KineticTileEntity) - ((KineticTileEntity) te).detachKinetics(); - if (blockState.getBlock() instanceof GantryShaftBlock) - worldIn.setBlockState(blockPos, blockState.with(POWERED, shouldPower), 2); - } - } - - protected boolean shouldBePowered(BlockState state, World worldIn, BlockPos pos) { - boolean shouldPower = worldIn.isBlockPowered(pos); - - Direction facing = state.get(FACING); - for (Direction d : Iterate.directionsInAxis(facing.getAxis())) { - BlockPos neighbourPos = pos.offset(d); - if (!worldIn.isBlockPresent(neighbourPos)) - continue; - BlockState neighbourState = worldIn.getBlockState(neighbourPos); - if (!(neighbourState.getBlock() instanceof GantryShaftBlock)) - continue; - if (neighbourState.get(FACING) != facing) - continue; - shouldPower |= neighbourState.get(POWERED); - } - - return shouldPower; - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(FACING) - .getAxis(); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(FACING) - .getAxis(); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.GANTRY_SHAFT.create(); - } - - @Override - protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) { - return super.areStatesKineticallyEquivalent(oldState, newState) - && oldState.get(POWERED) == newState.get(POWERED); - } - - @Override - public float getParticleTargetRadius() { - return .35f; - } - - @Override - public float getParticleInitialRadius() { - return .25f; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - - public static class PlacementHelper extends PoleHelper { - - public PlacementHelper() { - super(AllBlocks.GANTRY_SHAFT::has, s -> s.get(FACING) - .getAxis(), FACING); - } - - @Override - public Predicate getItemPredicate() { - return AllBlocks.GANTRY_SHAFT::isIn; - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - PlacementOffset offset = super.getOffset(player, world, state, pos, ray); - offset.withTransform(offset.getTransform().andThen(s -> s.with(POWERED, state.get(POWERED)))); - return offset; - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java deleted file mode 100644 index 4cd68bcbf..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/GantryShaftTileEntity.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryCarriageTileEntity; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; - -public class GantryShaftTileEntity extends KineticTileEntity { - - public GantryShaftTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - public void checkAttachedCarriageBlocks() { - if (!canAssembleOn()) - return; - for (Direction d : Iterate.directions) { - if (d.getAxis() == getBlockState().get(GantryShaftBlock.FACING) - .getAxis()) - continue; - BlockPos offset = pos.offset(d); - BlockState pinionState = world.getBlockState(offset); - if (!AllBlocks.GANTRY_CARRIAGE.has(pinionState)) - continue; - if (pinionState.get(GantryCarriageBlock.FACING) != d) - continue; - TileEntity tileEntity = world.getTileEntity(offset); - if (tileEntity instanceof GantryCarriageTileEntity) - ((GantryCarriageTileEntity) tileEntity).queueAssembly(); - } - } - - @Override - public void onSpeedChanged(float previousSpeed) { - super.onSpeedChanged(previousSpeed); - checkAttachedCarriageBlocks(); - } - - @Override - public float propagateRotationTo(KineticTileEntity target, BlockState stateFrom, BlockState stateTo, BlockPos diff, - boolean connectedViaAxes, boolean connectedViaCogs) { - float defaultModifier = - super.propagateRotationTo(target, stateFrom, stateTo, diff, connectedViaAxes, connectedViaCogs); - - if (connectedViaAxes) - return defaultModifier; - if (!stateFrom.get(GantryShaftBlock.POWERED)) - return defaultModifier; - if (!AllBlocks.GANTRY_CARRIAGE.has(stateTo)) - return defaultModifier; - - Direction direction = Direction.getFacingFromVector(diff.getX(), diff.getY(), diff.getZ()); - if (stateTo.get(GantryCarriageBlock.FACING) != direction) - return defaultModifier; - return GantryCarriageTileEntity.getGantryPinionModifier(stateFrom.get(GantryShaftBlock.FACING), - stateTo.get(GantryCarriageBlock.FACING)); - } - - @Override - public boolean isCustomConnection(KineticTileEntity other, BlockState state, BlockState otherState) { - if (!AllBlocks.GANTRY_CARRIAGE.has(otherState)) - return false; - final BlockPos diff = other.getPos() - .subtract(pos); - Direction direction = Direction.getFacingFromVector(diff.getX(), diff.getY(), diff.getZ()); - return otherState.get(GantryCarriageBlock.FACING) == direction; - } - - public boolean canAssembleOn() { - BlockState blockState = getBlockState(); - if (!AllBlocks.GANTRY_SHAFT.has(blockState)) - return false; - if (blockState.get(GantryShaftBlock.POWERED)) - return false; - float speed = getPinionMovementSpeed(); - - switch (blockState.get(GantryShaftBlock.PART)) { - case END: - return speed < 0; - case MIDDLE: - return speed != 0; - case START: - return speed > 0; - case SINGLE: - default: - return false; - } - } - - public float getPinionMovementSpeed() { - BlockState blockState = getBlockState(); - if (!AllBlocks.GANTRY_SHAFT.has(blockState)) - return 0; - return MathHelper.clamp(convertToLinear(-getSpeed()), -.49f, .49f); - } - - @Override - protected boolean isNoisy() { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerBlock.java deleted file mode 100644 index 46a4f25d4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerBlock.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced; - -import java.util.function.Predicate; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock; -import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.utility.placement.IPlacementHelper; -import com.simibubi.create.foundation.utility.placement.PlacementHelpers; -import com.simibubi.create.foundation.utility.placement.PlacementOffset; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class SpeedControllerBlock extends HorizontalAxisKineticBlock implements ITE { - - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); - - public SpeedControllerBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ROTATION_SPEED_CONTROLLER.create(); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - BlockState above = context.getWorld() - .getBlockState(context.getPos() - .up()); - if (ICogWheel.isLargeCog(above) && above.get(CogWheelBlock.AXIS) - .isHorizontal()) - return getDefaultState().with(HORIZONTAL_AXIS, above.get(CogWheelBlock.AXIS) == Axis.X ? Axis.Z : Axis.X); - return super.getStateForPlacement(context); - } - - @Override - public void neighborChanged(BlockState state, World world, BlockPos pos, Block p_220069_4_, BlockPos neighbourPos, - boolean p_220069_6_) { - if (neighbourPos.equals(pos.up())) - withTileEntityDo(world, pos, SpeedControllerTileEntity::updateBracket); - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult ray) { - - ItemStack heldItem = player.getHeldItem(hand); - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); - if (helper.matchesItem(heldItem)) - return helper.getOffset(player, world, state, pos, ray).placeInWorld(world, (BlockItem) heldItem.getItem(), player, hand, ray); - - return ActionResultType.PASS; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.SPEED_CONTROLLER; - } - - @MethodsReturnNonnullByDefault - private static class PlacementHelper implements IPlacementHelper { - @Override - public Predicate getItemPredicate() { - return ((Predicate) ICogWheel::isLargeCogItem).and(ICogWheel::isDedicatedCogItem); - } - - @Override - public Predicate getStatePredicate() { - return AllBlocks.ROTATION_SPEED_CONTROLLER::has; - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - BlockPos newPos = pos.up(); - if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) - return PlacementOffset.fail(); - - Axis newAxis = state.get(HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X; - - if (!CogWheelBlock.isValidCogwheelPosition(true, world, newPos, newAxis)) - return PlacementOffset.fail(); - - return PlacementOffset.success(newPos, s -> s.with(CogWheelBlock.AXIS, newAxis)); - } - } - - @Override - public Class getTileEntityClass() { - return SpeedControllerTileEntity.class; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerRenderer.java deleted file mode 100644 index cb6c22d09..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerRenderer.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.renderer.SmartTileEntityRenderer; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class SpeedControllerRenderer extends SmartTileEntityRenderer { - - public SpeedControllerRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(SpeedControllerTileEntity tileEntityIn, float partialTicks, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - super.renderSafe(tileEntityIn, partialTicks, ms, buffer, light, overlay); - - IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid()); - if (!Backend.getInstance().canUseInstancing(tileEntityIn.getWorld())) { - KineticTileEntityRenderer.renderRotatingBuffer(tileEntityIn, getRotatedModel(tileEntityIn), ms, builder, light); - } - - if (!tileEntityIn.hasBracket) - return; - - BlockPos pos = tileEntityIn.getPos(); - World world = tileEntityIn.getWorld(); - BlockState blockState = tileEntityIn.getBlockState(); - boolean alongX = blockState.get(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X; - - SuperByteBuffer bracket = PartialBufferer.get(AllBlockPartials.SPEED_CONTROLLER_BRACKET, blockState); - bracket.translate(0, 1, 0); - bracket.rotateCentered(Direction.UP, - (float) (alongX ? Math.PI : Math.PI / 2)); - bracket.light(WorldRenderer.getLightmapCoordinates(world, pos.up())); - bracket.renderInto(ms, builder); - } - - private SuperByteBuffer getRotatedModel(SpeedControllerTileEntity te) { - return CreateClient.BUFFER_CACHE.renderBlockIn(KineticTileEntityRenderer.KINETIC_TILE, - KineticTileEntityRenderer.shaft(KineticTileEntityRenderer.getRotationAxisOf(te))); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java deleted file mode 100644 index 732ed470d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/SpeedControllerTileEntity.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced; - -import java.util.List; - -import com.simibubi.create.content.contraptions.RotationPropagator; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.motor.CreativeMotorTileEntity; -import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ICogWheel; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; - -public class SpeedControllerTileEntity extends KineticTileEntity { - - public static final int DEFAULT_SPEED = 16; - protected ScrollValueBehaviour targetSpeed; - - boolean hasBracket; - - public SpeedControllerTileEntity(TileEntityType type) { - super(type); - hasBracket = false; - } - - @Override - public void lazyTick() { - super.lazyTick(); - updateBracket(); - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - Integer max = AllConfigs.SERVER.kinetics.maxRotationSpeed.get(); - - targetSpeed = - new ScrollValueBehaviour(Lang.translate("generic.speed"), this, new ControllerValueBoxTransform()); - targetSpeed.between(-max, max); - targetSpeed.value = DEFAULT_SPEED; - targetSpeed.moveText(new Vector3d(9, 0, 10)); - targetSpeed.withUnit(i -> Lang.translate("generic.unit.rpm")); - targetSpeed.withCallback(i -> this.updateTargetRotation()); - targetSpeed.withStepFunction(CreativeMotorTileEntity::step); - behaviours.add(targetSpeed); - } - - private void updateTargetRotation() { - if (hasNetwork()) - getOrCreateNetwork().remove(this); - RotationPropagator.handleRemoved(world, pos, this); - removeSource(); - attachKinetics(); - } - - public static float getConveyedSpeed(KineticTileEntity cogWheel, KineticTileEntity speedControllerIn, - boolean targetingController) { - if (!(speedControllerIn instanceof SpeedControllerTileEntity)) - return 0; - - float speed = speedControllerIn.getTheoreticalSpeed(); - float wheelSpeed = cogWheel.getTheoreticalSpeed(); - float desiredOutputSpeed = getDesiredOutputSpeed(cogWheel, speedControllerIn, targetingController); - - float compareSpeed = targetingController ? speed : wheelSpeed; - if (desiredOutputSpeed >= 0 && compareSpeed >= 0) - return Math.max(desiredOutputSpeed, compareSpeed); - if (desiredOutputSpeed < 0 && compareSpeed < 0) - return Math.min(desiredOutputSpeed, compareSpeed); - - return desiredOutputSpeed; - } - - public static float getDesiredOutputSpeed(KineticTileEntity cogWheel, KineticTileEntity speedControllerIn, - boolean targetingController) { - SpeedControllerTileEntity speedController = (SpeedControllerTileEntity) speedControllerIn; - float targetSpeed = speedController.targetSpeed.getValue(); - float speed = speedControllerIn.getTheoreticalSpeed(); - float wheelSpeed = cogWheel.getTheoreticalSpeed(); - - if (targetSpeed == 0) - return 0; - if (targetingController && wheelSpeed == 0) - return 0; - if (!speedController.hasSource()) { - if (targetingController) - return targetSpeed; - return 0; - } - - boolean wheelPowersController = speedController.source.equals(cogWheel.getPos()); - - if (wheelPowersController) { - if (targetingController) - return targetSpeed; - return wheelSpeed; - } - - if (targetingController) - return speed; - return targetSpeed; - } - - public void updateBracket() { - if (world == null || !world.isRemote) - return; - BlockState stateAbove = world.getBlockState(pos.up()); - hasBracket = ICogWheel.isDedicatedCogWheel(stateAbove.getBlock()) && ICogWheel.isLargeCog(stateAbove) - && stateAbove.get(CogWheelBlock.AXIS).isHorizontal(); - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - - private class ControllerValueBoxTransform extends ValueBoxTransform.Sided { - - @Override - protected Vector3d getSouthLocation() { - return VecHelper.voxelSpace(8, 11f, 16); - } - - @Override - protected boolean isSideActive(BlockState state, Direction direction) { - if (direction.getAxis() - .isVertical()) - return false; - return state.get(SpeedControllerBlock.HORIZONTAL_AXIS) != direction.getAxis(); - } - - @Override - protected float getScale() { - return 0.275f; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/ConfigureSequencedGearshiftPacket.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/ConfigureSequencedGearshiftPacket.java deleted file mode 100644 index d47fd8a9e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/ConfigureSequencedGearshiftPacket.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.common.util.Constants.NBT; - -public class ConfigureSequencedGearshiftPacket extends TileEntityConfigurationPacket { - - private ListNBT instructions; - - public ConfigureSequencedGearshiftPacket(BlockPos pos, ListNBT instructions) { - super(pos); - this.instructions = instructions; - } - - public ConfigureSequencedGearshiftPacket(PacketBuffer buffer) { - super(buffer); - } - - @Override - protected void readSettings(PacketBuffer buffer) { - instructions = buffer.readCompoundTag().getList("data", NBT.TAG_COMPOUND); - } - - @Override - protected void writeSettings(PacketBuffer buffer) { - CompoundNBT tag = new CompoundNBT(); - tag.put("data", instructions); - buffer.writeCompoundTag(tag); - } - - @Override - protected void applySettings(SequencedGearshiftTileEntity te) { - te.run(-1); - te.instructions = Instruction.deserializeAll(instructions); - te.sendData(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/Instruction.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/Instruction.java deleted file mode 100644 index 2ffbcae4d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/Instruction.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -import java.util.Vector; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; - -public class Instruction { - - SequencerInstructions instruction; - InstructionSpeedModifiers speedModifier; - int value; - - public Instruction(SequencerInstructions instruction) { - this(instruction, 1); - } - - public Instruction(SequencerInstructions instruction, int value) { - this.instruction = instruction; - speedModifier = InstructionSpeedModifiers.FORWARD; - this.value = value; - } - - int getDuration(float currentProgress, float speed) { - speed *= speedModifier.value; - speed = Math.abs(speed); - - double target = value - currentProgress; - - switch (instruction) { - - case TURN_ANGLE: - double degreesPerTick = KineticTileEntity.convertToAngular(speed); - int ticks = (int) (target / degreesPerTick); - double degreesErr = target - degreesPerTick*ticks; - return ticks + (degreesPerTick > 2*degreesErr ? 0 : 1); - - case TURN_DISTANCE: - double metersPerTick = KineticTileEntity.convertToLinear(speed); - int offset = speed > 0 && speedModifier.value < 0 ? 1 : 2; - return (int) (target / metersPerTick + offset); - - case DELAY: - return (int) target; - - case AWAIT: - return -1; - - case END: - default: - break; - - } - return 0; - } - - float getTickProgress(float speed) { - switch(instruction) { - - case TURN_ANGLE: - return KineticTileEntity.convertToAngular(speed); - - case TURN_DISTANCE: - return KineticTileEntity.convertToLinear(speed); - - case DELAY: - return 1; - - case AWAIT: - case END: - default: - break; - - } - return 0; - } - - int getSpeedModifier() { - switch (instruction) { - - case TURN_ANGLE: - case TURN_DISTANCE: - return speedModifier.value; - - case END: - case DELAY: - case AWAIT: - default: - break; - - } - return 0; - } - - OnIsPoweredResult onRedstonePulse() { - return instruction == SequencerInstructions.AWAIT ? OnIsPoweredResult.CONTINUE : OnIsPoweredResult.NOTHING; - } - - public static ListNBT serializeAll(Vector instructions) { - ListNBT list = new ListNBT(); - instructions.forEach(i -> list.add(i.serialize())); - return list; - } - - public static Vector deserializeAll(ListNBT list) { - if (list.isEmpty()) - return createDefault(); - Vector instructions = new Vector<>(5); - list.forEach(inbt -> instructions.add(deserialize((CompoundNBT) inbt))); - return instructions; - } - - public static Vector createDefault() { - Vector instructions = new Vector<>(5); - instructions.add(new Instruction(SequencerInstructions.TURN_ANGLE, 90)); - instructions.add(new Instruction(SequencerInstructions.END)); - return instructions; - } - - CompoundNBT serialize() { - CompoundNBT tag = new CompoundNBT(); - NBTHelper.writeEnum(tag, "Type", instruction); - NBTHelper.writeEnum(tag, "Modifier", speedModifier); - tag.putInt("Value", value); - return tag; - } - - static Instruction deserialize(CompoundNBT tag) { - Instruction instruction = new Instruction(NBTHelper.readEnum(tag, "Type", SequencerInstructions.class)); - instruction.speedModifier = NBTHelper.readEnum(tag, "Modifier", InstructionSpeedModifiers.class); - instruction.value = tag.getInt("Value"); - return instruction; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java deleted file mode 100644 index 6835b54bf..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/InstructionSpeedModifiers.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public enum InstructionSpeedModifiers { - - FORWARD_FAST(2, ">>"), FORWARD(1, "->"), BACK(-1, "<-"), BACK_FAST(-2, "<<"), - - ; - - String translationKey; - int value; - ITextComponent label; - - private InstructionSpeedModifiers(int modifier, ITextComponent label) { - this.label = label; - translationKey = "gui.sequenced_gearshift.speed." + Lang.asId(name()); - value = modifier; - } - private InstructionSpeedModifiers(int modifier, String label) { - this.label = new StringTextComponent(label); - translationKey = "gui.sequenced_gearshift.speed." + Lang.asId(name()); - value = modifier; - } - - static List getOptions() { - List options = new ArrayList<>(); - for (InstructionSpeedModifiers entry : values()) - options.add(Lang.translate(entry.translationKey)); - return options; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/OnIsPoweredResult.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/OnIsPoweredResult.java deleted file mode 100644 index e942da652..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/OnIsPoweredResult.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -public enum OnIsPoweredResult { - NOTHING, - CONTINUE -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftBlock.java deleted file mode 100644 index eac794939..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftBlock.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -import java.util.Random; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock; -import com.simibubi.create.content.contraptions.base.KineticBlock; -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.gui.ScreenOpener; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; - -public class SequencedGearshiftBlock extends HorizontalAxisKineticBlock implements ITE { - - public static final BooleanProperty VERTICAL = BooleanProperty.create("vertical"); - public static final IntegerProperty STATE = IntegerProperty.create("state", 0, 5); - - public SequencedGearshiftBlock(Properties properties) { - super(properties); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(STATE, VERTICAL)); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.SEQUENCED_GEARSHIFT.create(); - } - - @Override - public boolean shouldCheckWeakPower(BlockState state, IWorldReader world, BlockPos pos, Direction side) { - return false; - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - if (!worldIn.getPendingBlockTicks() - .isTickPending(pos, this)) - worldIn.getPendingBlockTicks() - .scheduleTick(pos, this, 0); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld worldIn, BlockPos pos, Random r) { - boolean previouslyPowered = state.get(STATE) != 0; - boolean isPowered = worldIn.isBlockPowered(pos); - withTileEntityDo(worldIn, pos, sgte -> sgte.onRedstoneUpdate(isPowered, previouslyPowered)); - } - - @Override - protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) { - return false; - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - if (state.get(VERTICAL)) - return face.getAxis() - .isVertical(); - return super.hasShaftTowards(world, pos, state, face); - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - ItemStack held = player.getHeldItemMainhand(); - if (AllItems.WRENCH.isIn(held)) - return ActionResultType.PASS; - if (held.getItem() instanceof BlockItem) { - BlockItem blockItem = (BlockItem) held.getItem(); - if (blockItem.getBlock() instanceof KineticBlock && hasShaftTowards(worldIn, pos, state, hit.getFace())) - return ActionResultType.PASS; - } - - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> withTileEntityDo(worldIn, pos, te -> this.displayScreen(te, player))); - return ActionResultType.SUCCESS; - } - - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(SequencedGearshiftTileEntity te, PlayerEntity player) { - if (player instanceof ClientPlayerEntity) - ScreenOpener.open(new SequencedGearshiftScreen(te)); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Axis preferredAxis = RotatedPillarKineticBlock.getPreferredAxis(context); - if (preferredAxis != null && (context.getPlayer() == null || !context.getPlayer() - .isSneaking())) - return withAxis(preferredAxis, context); - return withAxis(context.getNearestLookingDirection() - .getAxis(), context); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - BlockState newState = state; - - if (context.getFace() - .getAxis() != Axis.Y) - if (newState.get(HORIZONTAL_AXIS) != context.getFace() - .getAxis()) - newState = newState.cycle(VERTICAL); - - return super.onWrenched(newState, context); - } - - private BlockState withAxis(Axis axis, BlockItemUseContext context) { - BlockState state = getDefaultState().with(VERTICAL, axis.isVertical()); - if (axis.isVertical()) - return state.with(HORIZONTAL_AXIS, context.getPlacementHorizontalFacing() - .getAxis()); - return state.with(HORIZONTAL_AXIS, axis); - } - - @Override - public Axis getRotationAxis(BlockState state) { - if (state.get(VERTICAL)) - return Axis.Y; - return super.getRotationAxis(state); - } - - @Override - public Class getTileEntityClass() { - return SequencedGearshiftTileEntity.class; - } - - @Override - public boolean hasComparatorInputOverride(BlockState p_149740_1_) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState state, World world, BlockPos pos) { - return state.get(STATE) - .intValue(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftGenerator.java deleted file mode 100644 index 86b5f5b59..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftGenerator.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction.Axis; -import net.minecraftforge.client.model.generators.ModelFile; - -public class SequencedGearshiftGenerator extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - return state.get(SequencedGearshiftBlock.VERTICAL) ? 90 : 0; - } - - @Override - protected int getYRotation(BlockState state) { - return state.get(SequencedGearshiftBlock.HORIZONTAL_AXIS) == Axis.X ? 90 : 0; - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - String variant = "idle"; - int seq = state.get(SequencedGearshiftBlock.STATE); - if (seq > 0) - variant = "seq_" + seq; - return prov.models() - .getExistingFile(prov.modLoc("block/" + ctx.getName() + "/" + variant)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java deleted file mode 100644 index fb073cbc2..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java +++ /dev/null @@ -1,207 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -import java.util.Vector; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.gui.AbstractSimiScreen; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.widgets.IconButton; -import com.simibubi.create.foundation.gui.widgets.ScrollInput; -import com.simibubi.create.foundation.gui.widgets.SelectionScrollInput; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.ListNBT; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class SequencedGearshiftScreen extends AbstractSimiScreen { - - private final ItemStack renderedItem = AllBlocks.SEQUENCED_GEARSHIFT.asStack(); - private final AllGuiTextures background = AllGuiTextures.SEQUENCER; - private IconButton confirmButton; - - private final ITextComponent title = Lang.translate("gui.sequenced_gearshift.title"); - private ListNBT compareTag; - private Vector instructions; - private BlockPos pos; - - private Vector> inputs; - - public SequencedGearshiftScreen(SequencedGearshiftTileEntity te) { - this.instructions = te.instructions; - this.pos = te.getPos(); - compareTag = Instruction.serializeAll(instructions); - } - - @Override - protected void init() { - setWindowSize(background.width + 50, background.height); - super.init(); - widgets.clear(); - - inputs = new Vector<>(5); - for (int row = 0; row < inputs.capacity(); row++) - inputs.add(new Vector<>(3)); - - for (int row = 0; row < instructions.size(); row++) - initInputsOfRow(row); - } - - public void initInputsOfRow(int row) { - int x = guiLeft + 30; - int y = guiTop + 18; - int rowHeight = 22; - - Vector rowInputs = inputs.get(row); - rowInputs.forEach(widgets::remove); - rowInputs.clear(); - int index = row; - Instruction instruction = instructions.get(row); - - ScrollInput type = - new SelectionScrollInput(x, y + rowHeight * row, 50, 18).forOptions(SequencerInstructions.getOptions()) - .calling(state -> instructionUpdated(index, state)) - .setState(instruction.instruction.ordinal()) - .titled(Lang.translate("gui.sequenced_gearshift.instruction")); - ScrollInput value = - new ScrollInput(x + 58, y + rowHeight * row, 28, 18).calling(state -> instruction.value = state); - ScrollInput direction = new SelectionScrollInput(x + 88, y + rowHeight * row, 28, 18) - .forOptions(InstructionSpeedModifiers.getOptions()) - .calling(state -> instruction.speedModifier = InstructionSpeedModifiers.values()[state]) - .titled(Lang.translate("gui.sequenced_gearshift.speed")); - - rowInputs.add(type); - rowInputs.add(value); - rowInputs.add(direction); - - widgets.addAll(rowInputs); - updateParamsOfRow(row); - - confirmButton = - new IconButton(guiLeft + background.width - 33, guiTop + background.height - 24, AllIcons.I_CONFIRM); - widgets.add(confirmButton); - } - - public void updateParamsOfRow(int row) { - Instruction instruction = instructions.get(row); - Vector rowInputs = inputs.get(row); - SequencerInstructions def = instruction.instruction; - boolean hasValue = def.hasValueParameter; - boolean hasModifier = def.hasSpeedParameter; - - ScrollInput value = rowInputs.get(1); - value.active = value.visible = hasValue; - if (hasValue) - value.withRange(1, def.maxValue + 1) - .titled(Lang.translate(def.parameterKey)) - .withShiftStep(def.shiftStep) - .setState(instruction.value) - .onChanged(); - if (def == SequencerInstructions.DELAY) { - value.withStepFunction(context -> { - int v = context.currentValue; - if (!context.forward) - v--; - if (v < 20) - return context.shift ? 20 : 1; - return context.shift ? 100 : 20; - }); - } else - value.withStepFunction(value.standardStep()); - - ScrollInput modifier = rowInputs.get(2); - modifier.active = modifier.visible = hasModifier; - if (hasModifier) - modifier.setState(instruction.speedModifier.ordinal()); - } - - @Override - protected void renderWindow(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - int hFontColor = 0xD3CBBE; - background.draw(matrixStack, this, guiLeft, guiTop); - - for (int row = 0; row < instructions.capacity(); row++) { - AllGuiTextures toDraw = AllGuiTextures.SEQUENCER_EMPTY; - int yOffset = toDraw.height * row; - if (row >= instructions.size()) { - toDraw.draw(matrixStack, guiLeft, guiTop + 14 + yOffset); - continue; - } - - Instruction instruction = instructions.get(row); - SequencerInstructions def = instruction.instruction; - def.background.draw(matrixStack, guiLeft, guiTop + 14 + yOffset); - - label(matrixStack, 36, yOffset - 3, Lang.translate(def.translationKey)); - if (def.hasValueParameter) { - String text = def.formatValue(instruction.value); - int stringWidth = textRenderer.getStringWidth(text); - label(matrixStack, 90 + (12 - stringWidth / 2), yOffset - 3, new StringTextComponent(text)); - } - if (def.hasSpeedParameter) - label(matrixStack, 127, yOffset - 3, instruction.speedModifier.label); - } - - textRenderer.drawWithShadow(matrixStack, title, guiLeft - 3 + (background.width - textRenderer.getWidth(title)) / 2, guiTop + 3, - 0xffffff); - - GuiGameElement.of(renderedItem) - .at(guiLeft + background.width + 10, guiTop + 100, -150) - .scale(5) - .render(matrixStack); - } - - private void label(MatrixStack matrixStack, int x, int y, ITextComponent text) { - textRenderer.drawWithShadow(matrixStack, text, guiLeft + x, guiTop + 26 + y, 0xFFFFEE); - } - - public void sendPacket() { - ListNBT serialized = Instruction.serializeAll(instructions); - if (serialized.equals(compareTag)) - return; - AllPackets.channel.sendToServer(new ConfigureSequencedGearshiftPacket(pos, serialized)); - } - - @Override - public void removed() { - sendPacket(); - } - - private void instructionUpdated(int index, int state) { - SequencerInstructions newValue = SequencerInstructions.values()[state]; - instructions.get(index).instruction = newValue; - instructions.get(index).value = newValue.defaultValue; - updateParamsOfRow(index); - if (newValue == SequencerInstructions.END) { - for (int i = instructions.size() - 1; i > index; i--) { - instructions.remove(i); - Vector rowInputs = inputs.get(i); - rowInputs.forEach(widgets::remove); - rowInputs.clear(); - } - } else { - if (index + 1 < instructions.capacity() && index + 1 == instructions.size()) { - instructions.add(new Instruction(SequencerInstructions.END)); - initInputsOfRow(index + 1); - } - } - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - if (confirmButton.isHovered()) { - Minecraft.getInstance().player.closeScreen(); - return true; - } - - return super.mouseClicked(x, y, button); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java deleted file mode 100644 index c65896513..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftTileEntity.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -import java.util.Vector; - -import com.simibubi.create.content.contraptions.relays.encased.SplitShaftTileEntity; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraftforge.common.util.Constants.NBT; - -public class SequencedGearshiftTileEntity extends SplitShaftTileEntity { - - Vector instructions; - int currentInstruction; - int currentInstructionDuration; - float currentInstructionProgress; - int timer; - boolean poweredPreviously; - - public SequencedGearshiftTileEntity(TileEntityType type) { - super(type); - instructions = Instruction.createDefault(); - currentInstruction = -1; - currentInstructionDuration = -1; - currentInstructionProgress = 0; - timer = 0; - poweredPreviously = false; - } - - @Override - public void tick() { - super.tick(); - - if (isIdle()) - return; - if (world.isRemote) - return; - if (currentInstructionDuration < 0) - return; - if (timer < currentInstructionDuration) { - timer++; - currentInstructionProgress += getInstruction(currentInstruction).getTickProgress(speed); - return; - } - run(currentInstruction + 1); - } - - @Override - public void onSpeedChanged(float previousSpeed) { - super.onSpeedChanged(previousSpeed); - if (isIdle()) - return; - float currentSpeed = Math.abs(speed); - if (Math.abs(previousSpeed) == currentSpeed) - return; - Instruction instruction = getInstruction(currentInstruction); - if (instruction == null) - return; - if (getSpeed() == 0) - run(-1); - - // Update instruction time with regards to new speed - currentInstructionDuration = instruction.getDuration(currentInstructionProgress, getTheoreticalSpeed()); - timer = 0; - } - - public boolean isIdle() { - return currentInstruction == -1; - } - - public void onRedstoneUpdate(boolean isPowered, boolean isRunning) { - if (!poweredPreviously && isPowered) - risingFlank(); - poweredPreviously = isPowered; - if (!isIdle()) - return; - if (isPowered == isRunning) - return; - if (!world.isBlockPowered(pos)) { - world.setBlockState(pos, getBlockState().with(SequencedGearshiftBlock.STATE, 0), 3); - return; - } - if (getSpeed() == 0) - return; - run(0); - } - - public void risingFlank() { - Instruction instruction = getInstruction(currentInstruction); - if (instruction == null) - return; - if (poweredPreviously) - return; - poweredPreviously = true; - - switch (instruction.onRedstonePulse()) { - case CONTINUE: - run(currentInstruction + 1); - break; - default: - break; - } - } - - protected void run(int instructionIndex) { - Instruction instruction = getInstruction(instructionIndex); - if (instruction == null || instruction.instruction == SequencerInstructions.END) { - if (getModifier() != 0) - detachKinetics(); - currentInstruction = -1; - currentInstructionDuration = -1; - currentInstructionProgress = 0; - timer = 0; - if (!world.isBlockPowered(pos)) - world.setBlockState(pos, getBlockState().with(SequencedGearshiftBlock.STATE, 0), 3); - else - sendData(); - return; - } - - detachKinetics(); - currentInstructionDuration = instruction.getDuration(0, getTheoreticalSpeed()); - currentInstruction = instructionIndex; - currentInstructionProgress = 0; - timer = 0; - world.setBlockState(pos, getBlockState().with(SequencedGearshiftBlock.STATE, instructionIndex + 1), 3); - } - - public Instruction getInstruction(int instructionIndex) { - return instructionIndex >= 0 && instructionIndex < instructions.size() ? instructions.get(instructionIndex) - : null; - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putInt("InstructionIndex", currentInstruction); - compound.putInt("InstructionDuration", currentInstructionDuration); - compound.putFloat("InstructionProgress", currentInstructionProgress); - compound.putInt("Timer", timer); - compound.putBoolean("PrevPowered", poweredPreviously); - compound.put("Instructions", Instruction.serializeAll(instructions)); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - currentInstruction = compound.getInt("InstructionIndex"); - currentInstructionDuration = compound.getInt("InstructionDuration"); - currentInstructionProgress = compound.getFloat("InstructionProgress"); - poweredPreviously = compound.getBoolean("PrevPowered"); - timer = compound.getInt("Timer"); - instructions = Instruction.deserializeAll(compound.getList("Instructions", NBT.TAG_COMPOUND)); - super.fromTag(state, compound, clientPacket); - } - - @Override - public float getRotationSpeedModifier(Direction face) { - if (isVirtual()) - return 1; - return (!hasSource() || face == getSourceFacing()) ? 1 : getModifier(); - } - - public int getModifier() { - if (currentInstruction >= instructions.size()) - return 0; - return isIdle() ? 0 - : instructions.get(currentInstruction) - .getSpeedModifier(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencerInstructions.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencerInstructions.java deleted file mode 100644 index ce15fe19c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencerInstructions.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.advanced.sequencer; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.text.ITextComponent; - -public enum SequencerInstructions { - - TURN_ANGLE("angle", AllGuiTextures.SEQUENCER_INSTRUCTION, true, true, 360, 45, 90), - TURN_DISTANCE("distance", AllGuiTextures.SEQUENCER_INSTRUCTION, true, true, 128, 5, 5), - DELAY("duration", AllGuiTextures.SEQUENCER_DELAY, true, false, 600, 20, 10), - AWAIT("", AllGuiTextures.SEQUENCER_AWAIT), - END("", AllGuiTextures.SEQUENCER_END), - - ; - - String translationKey; - String descriptiveTranslationKey; - String parameterKey; - boolean hasValueParameter; - boolean hasSpeedParameter; - AllGuiTextures background; - int maxValue; - int shiftStep; - int defaultValue; - - private SequencerInstructions(String parameterName, AllGuiTextures background) { - this(parameterName, background, false, false, -1, -1, -1); - } - - private SequencerInstructions(String parameterName, AllGuiTextures background, boolean hasValueParameter, - boolean hasSpeedParameter, int maxValue, int shiftStep, int defaultValue) { - this.hasValueParameter = hasValueParameter; - this.hasSpeedParameter = hasSpeedParameter; - this.background = background; - this.maxValue = maxValue; - this.shiftStep = shiftStep; - this.defaultValue = defaultValue; - translationKey = "gui.sequenced_gearshift.instruction." + Lang.asId(name()); - descriptiveTranslationKey = translationKey + ".descriptive"; - parameterKey = translationKey + "." + parameterName; - } - - static List getOptions() { - List options = new ArrayList<>(); - for (SequencerInstructions entry : values()) - options.add(Lang.translate(entry.descriptiveTranslationKey)); - return options; - } - - String formatValue(int value) { - if (this == TURN_ANGLE) - return value + Lang.translate("generic.unit.degrees").getString(); - if (this == TURN_DISTANCE) - return value + "m"; - if (this == DELAY) { - if (value >= 20) - return (value / 20) + "s"; - return value + "t"; - } - return "" + value; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java deleted file mode 100644 index fa974ea2b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ /dev/null @@ -1,618 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - -import org.apache.commons.lang3.mutable.MutableBoolean; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType; -import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler.TransportedEntityInfo; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; -import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.entity.Entity; -import net.minecraft.entity.MobEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.loot.LootParameters; -import net.minecraft.pathfinding.PathNodeType; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.Hand; -import net.minecraft.util.NonNullList; -import net.minecraft.util.Rotation; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraft.world.gen.DebugChunkGenerator; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.Tags; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; - -public class BeltBlock extends HorizontalKineticBlock implements ITE, ISpecialBlockItemRequirement { - - public static final Property SLOPE = EnumProperty.create("slope", BeltSlope.class); - public static final Property PART = EnumProperty.create("part", BeltPart.class); - public static final BooleanProperty CASING = BooleanProperty.create("casing"); - - public BeltBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(SLOPE, BeltSlope.HORIZONTAL) - .with(PART, BeltPart.START) - .with(CASING, false)); - } - - @Override - public void fillItemGroup(ItemGroup p_149666_1_, NonNullList p_149666_2_) { - p_149666_2_.add(AllItems.BELT_CONNECTOR.asStack()); - } - - @Override - protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) { - return super.areStatesKineticallyEquivalent(oldState, newState) && oldState.get(PART) == newState.get(PART); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - if (face.getAxis() != getRotationAxis(state)) - return false; - return getTileEntityOptional(world, pos).map(BeltTileEntity::hasPulley) - .orElse(false); - } - - @Override - public Axis getRotationAxis(BlockState state) { - if (state.get(SLOPE) == BeltSlope.SIDEWAYS) - return Axis.Y; - return state.get(HORIZONTAL_FACING) - .rotateY() - .getAxis(); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllItems.BELT_CONNECTOR.asStack(); - } - - /* - * FIXME - * - * @Override - * public Material getMaterial(BlockState state) { - * return state.get(CASING) ? Material.WOOD : Material.WOOL; - * } - */ - - @SuppressWarnings("deprecation") - @Override - public List getDrops(BlockState state, net.minecraft.loot.LootContext.Builder builder) { - List drops = super.getDrops(state, builder); - TileEntity tileEntity = builder.get(LootParameters.BLOCK_ENTITY); - if (tileEntity instanceof BeltTileEntity && ((BeltTileEntity) tileEntity).hasPulley()) - drops.addAll(AllBlocks.SHAFT.getDefaultState() - .getDrops(builder)); - return drops; - } - - @Override - public void spawnAdditionalDrops(BlockState state, ServerWorld worldIn, BlockPos pos, ItemStack p_220062_4_) { - BeltTileEntity controllerTE = BeltHelper.getControllerTE(worldIn, pos); - if (controllerTE != null) - controllerTE.getInventory() - .ejectAll(); - } - - @Override - public boolean isFlammable(BlockState state, IBlockReader world, BlockPos pos, Direction face) { - return false; - } - - @Override - public void onLanded(IBlockReader worldIn, Entity entityIn) { - super.onLanded(worldIn, entityIn); - BlockPos entityPosition = entityIn.getBlockPos(); - BlockPos beltPos = null; - - if (AllBlocks.BELT.has(worldIn.getBlockState(entityPosition))) - beltPos = entityPosition; - else if (AllBlocks.BELT.has(worldIn.getBlockState(entityPosition.down()))) - beltPos = entityPosition.down(); - if (beltPos == null) - return; - if (!(worldIn instanceof World)) - return; - - onEntityCollision(worldIn.getBlockState(beltPos), (World) worldIn, beltPos, entityIn); - } - - @Override - public void onEntityCollision(BlockState state, World worldIn, BlockPos pos, Entity entityIn) { - if (!canTransportObjects(state)) - return; - if (entityIn instanceof PlayerEntity) { - PlayerEntity player = (PlayerEntity) entityIn; - if (player.isSneaking()) - return; - if (player.abilities.isFlying) - return; - } - - if (AllItems.DIVING_BOOTS.get() - .isWornBy(entityIn)) - return; - - BeltTileEntity belt = BeltHelper.getSegmentTE(worldIn, pos); - if (belt == null) - return; - if (entityIn instanceof ItemEntity && entityIn.isAlive()) { - if (worldIn.isRemote) - return; - if (entityIn.getMotion().y > 0) - return; - if (!entityIn.isAlive()) - return; - withTileEntityDo(worldIn, pos, te -> { - ItemEntity itemEntity = (ItemEntity) entityIn; - IItemHandler handler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) - .orElse(null); - if (handler == null) - return; - ItemStack remainder = handler.insertItem(0, itemEntity.getItem() - .copy(), false); - if (remainder.isEmpty()) - itemEntity.remove(); - }); - return; - } - - BeltTileEntity controller = BeltHelper.getControllerTE(worldIn, pos); - if (controller == null || controller.passengers == null) - return; - if (controller.passengers.containsKey(entityIn)) { - TransportedEntityInfo info = controller.passengers.get(entityIn); - if (info.getTicksSinceLastCollision() != 0 || pos.equals(entityIn.getBlockPos())) - info.refresh(pos, state); - } else { - controller.passengers.put(entityIn, new TransportedEntityInfo(pos, state)); - entityIn.setOnGround(true); - } - } - - public static boolean canTransportObjects(BlockState state) { - if (!AllBlocks.BELT.has(state)) - return false; - BeltSlope slope = state.get(SLOPE); - return slope != BeltSlope.VERTICAL && slope != BeltSlope.SIDEWAYS; - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - if (player.isSneaking() || !player.isAllowEdit()) - return ActionResultType.PASS; - ItemStack heldItem = player.getHeldItem(handIn); - boolean isShaft = AllBlocks.SHAFT.isIn(heldItem); - boolean isDye = Tags.Items.DYES.contains(heldItem.getItem()); - boolean hasWater = EmptyingByBasin.emptyItem(world, heldItem, true) - .getFirst() - .getFluid() - .isEquivalentTo(Fluids.WATER); - boolean isHand = heldItem.isEmpty() && handIn == Hand.MAIN_HAND; - - if (isDye || hasWater) { - if (!world.isRemote) - withTileEntityDo(world, pos, te -> te.applyColor(DyeColor.getColor(heldItem))); - return ActionResultType.SUCCESS; - } - - BeltTileEntity belt = BeltHelper.getSegmentTE(world, pos); - if (belt == null) - return ActionResultType.PASS; - - if (isHand) { - BeltTileEntity controllerBelt = belt.getControllerTE(); - if (controllerBelt == null) - return ActionResultType.PASS; - if (world.isRemote) - return ActionResultType.SUCCESS; - MutableBoolean success = new MutableBoolean(false); - controllerBelt.getInventory() - .applyToEachWithin(belt.index + .5f, .55f, (transportedItemStack) -> { - player.inventory.placeItemBackInInventory(world, transportedItemStack.stack); - success.setTrue(); - return TransportedResult.removeItem(); - }); - if (success.isTrue()) - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, .2f, - 1f + Create.RANDOM.nextFloat()); - } - - if (isShaft) { - if (state.get(PART) != BeltPart.MIDDLE) - return ActionResultType.PASS; - if (world.isRemote) - return ActionResultType.SUCCESS; - if (!player.isCreative()) - heldItem.shrink(1); - KineticTileEntity.switchToBlockState(world, pos, state.with(PART, BeltPart.PULLEY)); - return ActionResultType.SUCCESS; - } - - if (AllBlocks.BRASS_CASING.isIn(heldItem)) { - if (world.isRemote) - return ActionResultType.SUCCESS; - AllTriggers.triggerFor(AllTriggers.CASING_BELT, player); - withTileEntityDo(world, pos, te -> te.setCasingType(CasingType.BRASS)); - return ActionResultType.SUCCESS; - } - - if (AllBlocks.ANDESITE_CASING.isIn(heldItem)) { - if (world.isRemote) - return ActionResultType.SUCCESS; - AllTriggers.triggerFor(AllTriggers.CASING_BELT, player); - withTileEntityDo(world, pos, te -> te.setCasingType(CasingType.ANDESITE)); - return ActionResultType.SUCCESS; - } - - return ActionResultType.PASS; - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - PlayerEntity player = context.getPlayer(); - BlockPos pos = context.getPos(); - - if (state.get(CASING)) { - if (world.isRemote) - return ActionResultType.SUCCESS; - withTileEntityDo(world, pos, te -> te.setCasingType(CasingType.NONE)); - return ActionResultType.SUCCESS; - } - - if (state.get(PART) == BeltPart.PULLEY) { - if (world.isRemote) - return ActionResultType.SUCCESS; - KineticTileEntity.switchToBlockState(world, pos, state.with(PART, BeltPart.MIDDLE)); - if (player != null && !player.isCreative()) - player.inventory.placeItemBackInInventory(world, AllBlocks.SHAFT.asStack()); - return ActionResultType.SUCCESS; - } - - return ActionResultType.FAIL; - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(SLOPE, PART, CASING); - super.fillStateContainer(builder); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Override - public PathNodeType getAiPathNodeType(BlockState state, IBlockReader world, BlockPos pos, MobEntity entity) { - return PathNodeType.RAIL; - } - - @Override - @OnlyIn(Dist.CLIENT) - public boolean addDestroyEffects(BlockState state, World world, BlockPos pos, ParticleManager manager) { - BlockHelper.addReducedDestroyEffects(state, world, pos, manager); - return true; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return BeltShapes.getShape(state); - } - - @Override - public VoxelShape getCollisionShape(BlockState state, IBlockReader worldIn, BlockPos pos, - ISelectionContext context) { - if (state.getBlock() != this) - return VoxelShapes.empty(); - - VoxelShape shape = getShape(state, worldIn, pos, context); - return getTileEntityOptional(worldIn, pos).map(te -> { - if (context.getEntity() == null) - return shape; - - BeltTileEntity controller = te.getControllerTE(); - if (controller == null) - return shape; - if (controller.passengers == null || !controller.passengers.containsKey(context.getEntity())) - return BeltShapes.getCollisionShape(state); - return shape; - - }).orElse(shape); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.BELT.create(); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return state.get(CASING) ? BlockRenderType.MODEL : BlockRenderType.ENTITYBLOCK_ANIMATED; - } - - public static void initBelt(World world, BlockPos pos) { - if (world.isRemote) - return; - if (world instanceof ServerWorld && ((ServerWorld) world).getChunkProvider() - .getChunkGenerator() instanceof DebugChunkGenerator) - return; - - BlockState state = world.getBlockState(pos); - if (!AllBlocks.BELT.has(state)) - return; - // Find controller - int limit = 1000; - BlockPos currentPos = pos; - while (limit-- > 0) { - BlockState currentState = world.getBlockState(currentPos); - if (!AllBlocks.BELT.has(currentState)) { - world.destroyBlock(pos, true); - return; - } - BlockPos nextSegmentPosition = nextSegmentPosition(currentState, currentPos, false); - if (nextSegmentPosition == null) - break; - if (!world.isAreaLoaded(nextSegmentPosition, 0)) - return; - currentPos = nextSegmentPosition; - } - - // Init belts - int index = 0; - List beltChain = getBeltChain(world, currentPos); - if (beltChain.size() < 2) { - world.destroyBlock(currentPos, true); - return; - } - - for (BlockPos beltPos : beltChain) { - TileEntity tileEntity = world.getTileEntity(beltPos); - BlockState currentState = world.getBlockState(beltPos); - - if (tileEntity instanceof BeltTileEntity && AllBlocks.BELT.has(currentState)) { - BeltTileEntity te = (BeltTileEntity) tileEntity; - te.setController(currentPos); - te.beltLength = beltChain.size(); - te.index = index; - te.attachKinetics(); - te.markDirty(); - te.sendData(); - - if (te.isController() && !canTransportObjects(currentState)) - te.getInventory() - .ejectAll(); - } else { - world.destroyBlock(currentPos, true); - return; - } - index++; - } - - } - - @Override - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - if (world.isRemote) - return; - if (state.getBlock() == newState.getBlock()) - return; - if (isMoving) - return; - - TileEntity te = world.getTileEntity(pos); - if (te instanceof BeltTileEntity) { - BeltTileEntity beltTileEntity = (BeltTileEntity) te; - if (beltTileEntity.isController()) - beltTileEntity.getInventory() - .ejectAll(); - world.removeTileEntity(pos); - } - - // Destroy chain - for (boolean forward : Iterate.trueAndFalse) { - BlockPos currentPos = nextSegmentPosition(state, pos, forward); - if (currentPos == null) - continue; - world.sendBlockBreakProgress(currentPos.hashCode(), currentPos, -1); - BlockState currentState = world.getBlockState(currentPos); - if (!AllBlocks.BELT.has(currentState)) - continue; - - boolean hasPulley = false; - TileEntity tileEntity = world.getTileEntity(currentPos); - if (tileEntity instanceof BeltTileEntity) { - BeltTileEntity belt = (BeltTileEntity) tileEntity; - if (belt.isController()) - belt.getInventory() - .ejectAll(); - - belt.remove(); - hasPulley = belt.hasPulley(); - } - - BlockState shaftState = AllBlocks.SHAFT.getDefaultState() - .with(BlockStateProperties.AXIS, getRotationAxis(currentState)); - world.setBlockState(currentPos, hasPulley ? shaftState : Blocks.AIR.getDefaultState(), 3); - world.playEvent(2001, currentPos, Block.getStateId(currentState)); - } - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction side, BlockState p_196271_3_, IWorld world, - BlockPos pos, BlockPos p_196271_6_) { - if (side.getAxis() - .isHorizontal()) - updateTunnelConnections(world, pos.up()); - return state; - } - - private void updateTunnelConnections(IWorld world, BlockPos pos) { - Block tunnelBlock = world.getBlockState(pos) - .getBlock(); - if (tunnelBlock instanceof BeltTunnelBlock) - ((BeltTunnelBlock) tunnelBlock).updateTunnel(world, pos); - } - - public static List getBeltChain(World world, BlockPos controllerPos) { - List positions = new LinkedList<>(); - - BlockState blockState = world.getBlockState(controllerPos); - if (!AllBlocks.BELT.has(blockState)) - return positions; - - int limit = 1000; - BlockPos current = controllerPos; - while (limit-- > 0 && current != null) { - BlockState state = world.getBlockState(current); - if (!AllBlocks.BELT.has(state)) - break; - positions.add(current); - current = nextSegmentPosition(state, current, true); - } - - return positions; - } - - public static BlockPos nextSegmentPosition(BlockState state, BlockPos pos, boolean forward) { - Direction direction = state.get(HORIZONTAL_FACING); - BeltSlope slope = state.get(SLOPE); - BeltPart part = state.get(PART); - - int offset = forward ? 1 : -1; - - if (part == BeltPart.END && forward || part == BeltPart.START && !forward) - return null; - if (slope == BeltSlope.VERTICAL) - return pos.up(direction.getAxisDirection() == AxisDirection.POSITIVE ? offset : -offset); - pos = pos.offset(direction, offset); - if (slope != BeltSlope.HORIZONTAL && slope != BeltSlope.SIDEWAYS) - return pos.up(slope == BeltSlope.UPWARD ? offset : -offset); - return pos; - } - - public static boolean canAccessFromSide(Direction facing, BlockState belt) { -// if (facing == null) -// return true; -// if (!belt.get(BeltBlock.CASING)) -// return false; -// BeltPart part = belt.get(BeltBlock.PART); -// if (part != BeltPart.MIDDLE && facing.getAxis() == belt.get(HORIZONTAL_FACING) -// .rotateY() -// .getAxis()) -// return false; -// -// BeltSlope slope = belt.get(BeltBlock.SLOPE); -// if (slope != BeltSlope.HORIZONTAL) { -// if (slope == BeltSlope.DOWNWARD && part == BeltPart.END) -// return true; -// if (slope == BeltSlope.UPWARD && part == BeltPart.START) -// return true; -// Direction beltSide = belt.get(HORIZONTAL_FACING); -// if (slope == BeltSlope.DOWNWARD) -// beltSide = beltSide.getOpposite(); -// if (beltSide == facing) -// return false; -// } - - return true; - } - - @Override - public Class getTileEntityClass() { - return BeltTileEntity.class; - } - - @Override - public ItemRequirement getRequiredItems(BlockState state, TileEntity te) { - List required = new ArrayList<>(); - if (state.get(PART) != BeltPart.MIDDLE) - required.add(AllBlocks.SHAFT.asStack()); - if (state.get(PART) == BeltPart.START) - required.add(AllItems.BELT_CONNECTOR.asStack()); - if (required.isEmpty()) - return ItemRequirement.NONE; - return new ItemRequirement(ItemUseType.CONSUME, required); - } - - @Override - public BlockState rotate(BlockState state, Rotation rot) { - BlockState rotate = super.rotate(state, rot); - - if (state.get(SLOPE) != BeltSlope.VERTICAL) - return rotate; - if (state.get(HORIZONTAL_FACING) - .getAxisDirection() != rotate.get(HORIZONTAL_FACING) - .getAxisDirection()) { - if (state.get(PART) == BeltPart.START) - return rotate.with(PART, BeltPart.END); - if (state.get(PART) == BeltPart.END) - return rotate.with(PART, BeltPart.START); - } - - return rotate; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltData.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltData.java deleted file mode 100644 index 2727ddbe1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltData.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import com.jozufozu.flywheel.backend.gl.buffer.MappedBuffer; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.simibubi.create.content.contraptions.base.KineticData; -import com.simibubi.create.foundation.block.render.SpriteShiftEntry; - -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.util.math.vector.Quaternion; - -public class BeltData extends KineticData { - private float qX; - private float qY; - private float qZ; - private float qW; - private float sourceU; - private float sourceV; - private float minU; - private float minV; - private float maxU; - private float maxV; - private byte scrollMult; - - public BeltData(Instancer owner) { - super(owner); - } - - public BeltData setRotation(Quaternion q) { - this.qX = q.getX(); - this.qY = q.getY(); - this.qZ = q.getZ(); - this.qW = q.getW(); - markDirty(); - return this; - } - - public BeltData setScrollTexture(SpriteShiftEntry spriteShift) { - TextureAtlasSprite source = spriteShift.getOriginal(); - TextureAtlasSprite target = spriteShift.getTarget(); - - this.sourceU = source.getMinU(); - this.sourceV = source.getMinV(); - this.minU = target.getMinU(); - this.minV = target.getMinV(); - this.maxU = target.getMaxU(); - this.maxV = target.getMaxV(); - markDirty(); - - return this; - } - - public BeltData setScrollMult(float scrollMult) { - this.scrollMult = (byte) (scrollMult * 127); - markDirty(); - return this; - } - - @Override - public void write(MappedBuffer buf) { - super.write(buf); - - buf.putVec4(qX, qY, qZ, qW); - buf.putVec2(sourceU, sourceV); - buf.putVec4(minU, minV, maxU, maxV); - buf.put(scrollMult); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java deleted file mode 100644 index 791849cd7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltGenerator.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.generators.ModelFile; - -public class BeltGenerator extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - BeltSlope slope = state.get(BeltBlock.SLOPE); - return slope == BeltSlope.VERTICAL ? 90 - : slope == BeltSlope.SIDEWAYS && direction.getAxisDirection() == AxisDirection.NEGATIVE ? 180 : 0; - } - - @Override - protected int getYRotation(BlockState state) { - Boolean casing = state.get(BeltBlock.CASING); - BeltSlope slope = state.get(BeltBlock.SLOPE); - - boolean flip = slope == BeltSlope.UPWARD; - boolean rotate = casing && slope == BeltSlope.VERTICAL; - Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - return horizontalAngle(direction) + (flip ? 180 : 0) + (rotate ? 90 : 0); - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - Boolean casing = state.get(BeltBlock.CASING); - - if (!casing) - return prov.models() - .getExistingFile(prov.modLoc("block/belt/particle")); - - BeltPart part = state.get(BeltBlock.PART); - Direction direction = state.get(BeltBlock.HORIZONTAL_FACING); - BeltSlope slope = state.get(BeltBlock.SLOPE); - boolean downward = slope == BeltSlope.DOWNWARD; - boolean diagonal = slope == BeltSlope.UPWARD || downward; - boolean vertical = slope == BeltSlope.VERTICAL; - boolean pulley = part == BeltPart.PULLEY; - boolean sideways = slope == BeltSlope.SIDEWAYS; - boolean negative = direction.getAxisDirection() == AxisDirection.NEGATIVE; - - if (!casing && pulley) - part = BeltPart.MIDDLE; - - if ((vertical && negative || downward || sideways && negative) && part != BeltPart.MIDDLE && !pulley) - part = part == BeltPart.END ? BeltPart.START : BeltPart.END; - - if (!casing && vertical) - slope = BeltSlope.HORIZONTAL; - if (casing && vertical) - slope = BeltSlope.SIDEWAYS; - - String path = "block/" + (casing ? "belt_casing/" : "belt/"); - String slopeName = slope.getString(); - String partName = part.getString(); - - if (diagonal) - slopeName = "diagonal"; - - ResourceLocation location = prov.modLoc(path + slopeName + "_" + partName); - return prov.models() - .getExistingFile(location); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltHelper.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltHelper.java deleted file mode 100644 index 9ce688a16..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltHelper.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import com.simibubi.create.AllTags.AllItemTags; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.IWorld; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; - -public class BeltHelper { - - public static boolean isItemUpright(ItemStack stack) { - return stack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY) - .isPresent() - || stack.getItem() - .isIn(AllItemTags.UPRIGHT_ON_BELT.tag); - } - - public static BeltTileEntity getSegmentTE(IWorld world, BlockPos pos) { - if (!world.isAreaLoaded(pos, 0)) - return null; - TileEntity tileEntity = world.getTileEntity(pos); - if (!(tileEntity instanceof BeltTileEntity)) - return null; - return (BeltTileEntity) tileEntity; - } - - public static BeltTileEntity getControllerTE(IWorld world, BlockPos pos) { - BeltTileEntity segment = getSegmentTE(world, pos); - if (segment == null) - return null; - BlockPos controllerPos = segment.controller; - if (controllerPos == null) - return null; - return getSegmentTE(world, controllerPos); - } - - public static BeltTileEntity getBeltForOffset(BeltTileEntity controller, float offset) { - return getBeltAtSegment(controller, (int) Math.floor(offset)); - } - - public static BeltTileEntity getBeltAtSegment(BeltTileEntity controller, int segment) { - BlockPos pos = getPositionForOffset(controller, segment); - TileEntity te = controller.getWorld() - .getTileEntity(pos); - if (te == null || !(te instanceof BeltTileEntity)) - return null; - return (BeltTileEntity) te; - } - - public static BlockPos getPositionForOffset(BeltTileEntity controller, int offset) { - BlockPos pos = controller.getPos(); - Vector3i vec = controller.getBeltFacing() - .getDirectionVec(); - BeltSlope slope = controller.getBlockState() - .get(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - - return pos.add(offset * vec.getX(), MathHelper.clamp(offset, 0, controller.beltLength - 1) * verticality, - offset * vec.getZ()); - } - - public static Vector3d getVectorForOffset(BeltTileEntity controller, float offset) { - BeltSlope slope = controller.getBlockState() - .get(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - float verticalMovement = verticality; - if (offset < .5) - verticalMovement = 0; - verticalMovement = verticalMovement * (Math.min(offset, controller.beltLength - .5f) - .5f); - Vector3d vec = VecHelper.getCenterOf(controller.getPos()); - Vector3d horizontalMovement = Vector3d.of(controller.getBeltFacing() - .getDirectionVec()).scale(offset - .5f); - - if (slope == BeltSlope.VERTICAL) - horizontalMovement = Vector3d.ZERO; - - vec = vec.add(horizontalMovement) - .add(0, verticalMovement, 0); - return vec; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java deleted file mode 100644 index 510e9f125..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltInstance.java +++ /dev/null @@ -1,176 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import java.util.ArrayList; -import java.util.function.Supplier; - -import com.jozufozu.flywheel.backend.instancing.InstanceData; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.KineticTileInstance; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.foundation.block.render.SpriteShiftEntry; -import com.simibubi.create.foundation.render.AllMaterialSpecs; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.item.DyeColor; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.world.LightType; - -public class BeltInstance extends KineticTileInstance { - - boolean upward; - boolean diagonal; - boolean sideways; - boolean vertical; - boolean alongX; - boolean alongZ; - BeltSlope beltSlope; - Direction facing; - protected ArrayList keys; - protected RotatingData pulleyKey; - - public BeltInstance(MaterialManager materialManager, BeltTileEntity tile) { - super(materialManager, tile); - - if (!AllBlocks.BELT.has(blockState)) - return; - - keys = new ArrayList<>(2); - - beltSlope = blockState.get(BeltBlock.SLOPE); - facing = blockState.get(BeltBlock.HORIZONTAL_FACING); - upward = beltSlope == BeltSlope.UPWARD; - diagonal = beltSlope.isDiagonal(); - sideways = beltSlope == BeltSlope.SIDEWAYS; - vertical = beltSlope == BeltSlope.VERTICAL; - alongX = facing.getAxis() == Direction.Axis.X; - alongZ = facing.getAxis() == Direction.Axis.Z; - - BeltPart part = blockState.get(BeltBlock.PART); - boolean start = part == BeltPart.START; - boolean end = part == BeltPart.END; - DyeColor color = tile.color.orElse(null); - - for (boolean bottom : Iterate.trueAndFalse) { - PartialModel beltPartial = BeltRenderer.getBeltPartial(diagonal, start, end, bottom); - SpriteShiftEntry spriteShift = BeltRenderer.getSpriteShiftEntry(color, diagonal, bottom); - - Instancer beltModel = materialManager.getMaterial(AllMaterialSpecs.BELTS).getModel(beltPartial, blockState); - - keys.add(setup(beltModel.createInstance(), bottom, spriteShift)); - - if (diagonal) break; - } - - if (tile.hasPulley()) { - Instancer pulleyModel = getPulleyModel(); - - pulleyKey = setup(pulleyModel.createInstance()); - } - } - - @Override - public void update() { - DyeColor color = tile.color.orElse(null); - - boolean bottom = true; - for (BeltData key : keys) { - - SpriteShiftEntry spriteShiftEntry = BeltRenderer.getSpriteShiftEntry(color, diagonal, bottom); - key.setScrollTexture(spriteShiftEntry) - .setColor(tile) - .setRotationalSpeed(getScrollSpeed()); - bottom = false; - } - - if (pulleyKey != null) { - updateRotation(pulleyKey); - } - } - - @Override - public void updateLight() { - relight(pos, keys.stream()); - - if (pulleyKey != null) relight(pos, pulleyKey); - } - - @Override - public void remove() { - keys.forEach(InstanceData::delete); - keys.clear(); - if (pulleyKey != null) pulleyKey.delete(); - pulleyKey = null; - } - - private float getScrollSpeed() { - float speed = tile.getSpeed(); - if (((facing.getAxisDirection() == Direction.AxisDirection.NEGATIVE) ^ upward) ^ - ((alongX && !diagonal) || (alongZ && diagonal))) { - speed = -speed; - } - if (sideways && (facing == Direction.SOUTH || facing == Direction.WEST) || (vertical && facing == Direction.EAST)) - speed = -speed; - - return speed; - } - - private Instancer getPulleyModel() { - Direction dir = getOrientation(); - - Direction.Axis axis = dir.getAxis(); - - Supplier ms = () -> { - MatrixStack modelTransform = new MatrixStack(); - MatrixStacker msr = MatrixStacker.of(modelTransform); - msr.centre(); - if (axis == Direction.Axis.X) - msr.rotateY(90); - if (axis == Direction.Axis.Y) - msr.rotateX(90); - msr.rotateX(90); - msr.unCentre(); - - return modelTransform; - }; - - return getRotatingMaterial().getModel(AllBlockPartials.BELT_PULLEY, blockState, dir, ms); - } - - private Direction getOrientation() { - Direction dir = blockState.get(BeltBlock.HORIZONTAL_FACING) - .rotateY(); - if (beltSlope == BeltSlope.SIDEWAYS) - dir = Direction.UP; - - return dir; - } - - private BeltData setup(BeltData key, boolean bottom, SpriteShiftEntry spriteShift) { - boolean downward = beltSlope == BeltSlope.DOWNWARD; - float rotX = (!diagonal && beltSlope != BeltSlope.HORIZONTAL ? 90 : 0) + (downward ? 180 : 0) + (sideways ? 90 : 0) + (vertical && alongZ ? 180 : 0); - float rotY = facing.getHorizontalAngle() + ((diagonal ^ alongX) && !downward ? 180 : 0) + (sideways && alongZ ? 180 : 0) + (vertical && alongX ? 90 : 0); - float rotZ = (sideways ? 90 : 0) + (vertical && alongX ? 90 : 0); - - Quaternion q = new Quaternion(rotX, rotY, rotZ, true); - - key.setScrollTexture(spriteShift) - .setScrollMult(diagonal ? 3f / 8f : 0.5f) - .setRotation(q) - .setRotationalSpeed(getScrollSpeed()) - .setRotationOffset(bottom ? 0.5f : 0f) - .setColor(tile) - .setPosition(getInstancePosition()) - .setBlockLight(world.getLightLevel(LightType.BLOCK, pos)) - .setSkyLight(world.getLightLevel(LightType.SKY, pos)); - - return key; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java deleted file mode 100644 index 668cbad48..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltModel.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import static com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CASING_PROPERTY; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.simibubi.create.AllSpriteShifts; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity.CasingType; -import com.simibubi.create.foundation.block.render.QuadHelper; -import com.simibubi.create.foundation.block.render.SpriteShiftEntry; -import com.simibubi.create.foundation.render.SuperByteBuffer; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.client.renderer.vertex.VertexFormat; -import net.minecraft.util.Direction; -import net.minecraftforge.client.model.BakedModelWrapper; -import net.minecraftforge.client.model.data.IModelData; - -public class BeltModel extends BakedModelWrapper { - - public BeltModel(IBakedModel template) { - super(template); - } - - @Override - public List getQuads(BlockState state, Direction side, Random rand, IModelData extraData) { - List quads = super.getQuads(state, side, rand, extraData); - if (!extraData.hasProperty(CASING_PROPERTY)) - return quads; - CasingType type = extraData.getData(CASING_PROPERTY); - if (type == CasingType.NONE || type == CasingType.BRASS) - return quads; - quads = new ArrayList<>(quads); - - SpriteShiftEntry spriteShift = AllSpriteShifts.ANDESIDE_BELT_CASING; - VertexFormat format = DefaultVertexFormats.BLOCK; - - for (int i = 0; i < quads.size(); i++) { - BakedQuad quad = quads.get(i); - if (spriteShift == null) - continue; - if (quad.getSprite() != spriteShift.getOriginal()) - continue; - - TextureAtlasSprite original = quad.getSprite(); - TextureAtlasSprite target = spriteShift.getTarget(); - BakedQuad newQuad = QuadHelper.clone(quad); - int[] vertexData = newQuad.getVertexData(); - - for (int vertex = 0; vertex < vertexData.length; vertex += format.getIntegerSize()) { - int uvOffset = 16 / 4; - int uIndex = vertex + uvOffset; - int vIndex = vertex + uvOffset + 1; - float u = Float.intBitsToFloat(vertexData[uIndex]); - float v = Float.intBitsToFloat(vertexData[vIndex]); - vertexData[uIndex] = - Float.floatToRawIntBits(target.getInterpolatedU(SuperByteBuffer.getUnInterpolatedU(original, u))); - vertexData[vIndex] = - Float.floatToRawIntBits(target.getInterpolatedV(SuperByteBuffer.getUnInterpolatedV(original, v))); - } - - quads.set(i, newQuad); - } - return quads; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltPart.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltPart.java deleted file mode 100644 index 90c20c6eb..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltPart.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.IStringSerializable; - -public enum BeltPart implements IStringSerializable { - START, MIDDLE, END, PULLEY; - - @Override - public String getString() { - return Lang.asId(name()); - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java deleted file mode 100644 index 780de7876..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltRenderer.java +++ /dev/null @@ -1,309 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import java.util.Random; -import java.util.function.Supplier; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllSpriteShifts; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.block.render.SpriteShiftEntry; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.ShadowRenderHelper; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.client.settings.GraphicsFanciness; -import net.minecraft.entity.Entity; -import net.minecraft.item.DyeColor; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.util.math.vector.Vector3i; - -public class BeltRenderer extends SafeTileEntityRenderer { - - public BeltRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - public boolean isGlobalRenderer(BeltTileEntity te) { - return te.isController(); - } - - @Override - protected void renderSafe(BeltTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - if (!Backend.getInstance().canUseInstancing(te.getWorld())) { - - BlockState blockState = te.getBlockState(); - if (!AllBlocks.BELT.has(blockState)) return; - - BeltSlope beltSlope = blockState.get(BeltBlock.SLOPE); - BeltPart part = blockState.get(BeltBlock.PART); - Direction facing = blockState.get(BeltBlock.HORIZONTAL_FACING); - AxisDirection axisDirection = facing.getAxisDirection(); - - boolean downward = beltSlope == BeltSlope.DOWNWARD; - boolean upward = beltSlope == BeltSlope.UPWARD; - boolean diagonal = downward || upward; - boolean start = part == BeltPart.START; - boolean end = part == BeltPart.END; - boolean sideways = beltSlope == BeltSlope.SIDEWAYS; - boolean alongX = facing.getAxis() == Axis.X; - - MatrixStack localTransforms = new MatrixStack(); - MatrixStacker msr = MatrixStacker.of(localTransforms); - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - float renderTick = AnimationTickHolder.getRenderTime(te.getWorld()); - - msr.centre(); - msr.rotateY(AngleHelper.horizontalAngle(facing) + (upward ? 180 : 0) + (sideways ? 270 : 0)); - msr.rotateZ(sideways ? 90 : 0); - msr.rotateX(!diagonal && beltSlope != BeltSlope.HORIZONTAL ? 90 : 0); - msr.unCentre(); - - if (downward || beltSlope == BeltSlope.VERTICAL && axisDirection == AxisDirection.POSITIVE) { - boolean b = start; - start = end; - end = b; - } - - DyeColor color = te.color.orElse(null); - - for (boolean bottom : Iterate.trueAndFalse) { - - PartialModel beltPartial = getBeltPartial(diagonal, start, end, bottom); - - SuperByteBuffer beltBuffer = PartialBufferer.get(beltPartial, blockState) - .light(light); - - SpriteShiftEntry spriteShift = getSpriteShiftEntry(color, diagonal, bottom); - - // UV shift - float speed = te.getSpeed(); - if (speed != 0 || te.color.isPresent()) { - float time = renderTick * axisDirection.getOffset(); - if (diagonal && (downward ^ alongX) || !sideways && !diagonal && alongX || sideways && axisDirection == AxisDirection.NEGATIVE) - speed = -speed; - - float scrollMult = diagonal ? 3f / 8f : 0.5f; - - float spriteSize = spriteShift.getTarget().getMaxV() - spriteShift.getTarget().getMinV(); - - double scroll = speed * time / (31.5 * 16) + (bottom ? 0.5 : 0.0); - scroll = scroll - Math.floor(scroll); - scroll = scroll * spriteSize * scrollMult; - - beltBuffer.shiftUVScrolling(spriteShift, (float) scroll); - } - - beltBuffer - .transform(localTransforms) - .renderInto(ms, vb); - - // Diagonal belt do not have a separate bottom model - if (diagonal) break; - } - - if (te.hasPulley()) { - Direction dir = sideways ? Direction.UP : blockState.get(BeltBlock.HORIZONTAL_FACING).rotateY(); - - Supplier matrixStackSupplier = () -> { - MatrixStack stack = new MatrixStack(); - MatrixStacker stacker = MatrixStacker.of(stack); - stacker.centre(); - if (dir.getAxis() == Axis.X) stacker.rotateY(90); - if (dir.getAxis() == Axis.Y) stacker.rotateX(90); - stacker.rotateX(90); - stacker.unCentre(); - return stack; - }; - - SuperByteBuffer superBuffer = CreateClient.BUFFER_CACHE.renderDirectionalPartial(AllBlockPartials.BELT_PULLEY, blockState, dir, matrixStackSupplier); - KineticTileEntityRenderer.standardKineticRotationTransform(superBuffer, te, light).renderInto(ms, vb); - } - } - - renderItems(te, partialTicks, ms, buffer, light, overlay); - } - - public static SpriteShiftEntry getSpriteShiftEntry(DyeColor color, boolean diagonal, boolean bottom) { - if (color != null) { - return (diagonal ? AllSpriteShifts.DYED_DIAGONAL_BELTS - : bottom ? AllSpriteShifts.DYED_OFFSET_BELTS : AllSpriteShifts.DYED_BELTS).get(color); - } else - return diagonal ? AllSpriteShifts.BELT_DIAGONAL - : bottom ? AllSpriteShifts.BELT_OFFSET : AllSpriteShifts.BELT; - } - - public static PartialModel getBeltPartial(boolean diagonal, boolean start, boolean end, boolean bottom) { - if (diagonal) { - if (start) return AllBlockPartials.BELT_DIAGONAL_START; - if (end) return AllBlockPartials.BELT_DIAGONAL_END; - return AllBlockPartials.BELT_DIAGONAL_MIDDLE; - } else if (bottom) { - if (start) return AllBlockPartials.BELT_START_BOTTOM; - if (end) return AllBlockPartials.BELT_END_BOTTOM; - return AllBlockPartials.BELT_MIDDLE_BOTTOM; - } else { - if (start) return AllBlockPartials.BELT_START; - if (end) return AllBlockPartials.BELT_END; - return AllBlockPartials.BELT_MIDDLE; - } - } - - protected void renderItems(BeltTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - if (!te.isController()) - return; - if (te.beltLength == 0) - return; - - ms.push(); - - Direction beltFacing = te.getBeltFacing(); - Vector3i directionVec = beltFacing - .getDirectionVec(); - Vector3d beltStartOffset = Vector3d.of(directionVec).scale(-.5) - .add(.5, 13 / 16f + .125f, .5); - ms.translate(beltStartOffset.x, beltStartOffset.y, beltStartOffset.z); - BeltSlope slope = te.getBlockState() - .get(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - boolean slopeAlongX = beltFacing - .getAxis() == Axis.X; - - boolean onContraption = te.getWorld() instanceof WrappedWorld; - - for (TransportedItemStack transported : te.getInventory() - .getTransportedItems()) { - ms.push(); - MatrixStacker.of(ms) - .nudge(transported.angle); - float offset = MathHelper.lerp(partialTicks, transported.prevBeltPosition, transported.beltPosition); - float sideOffset = MathHelper.lerp(partialTicks, transported.prevSideOffset, transported.sideOffset); - float verticalMovement = verticality; - - if (te.getSpeed() == 0) { - offset = transported.beltPosition; - sideOffset = transported.sideOffset; - } - - int stackLight = onContraption ? light : getPackedLight(te, offset); - - if (offset < .5) - verticalMovement = 0; - verticalMovement = verticalMovement * (Math.min(offset, te.beltLength - .5f) - .5f); - Vector3d offsetVec = Vector3d.of(directionVec).scale(offset) - .add(0, verticalMovement, 0); - boolean onSlope = - slope != BeltSlope.HORIZONTAL && MathHelper.clamp(offset, .5f, te.beltLength - .5f) == offset; - boolean tiltForward = (slope == BeltSlope.DOWNWARD ^ beltFacing - .getAxisDirection() == AxisDirection.POSITIVE) == (beltFacing - .getAxis() == Axis.Z); - float slopeAngle = onSlope ? tiltForward ? -45 : 45 : 0; - - ms.translate(offsetVec.x, offsetVec.y, offsetVec.z); - - boolean alongX = beltFacing - .rotateY() - .getAxis() == Axis.X; - if (!alongX) - sideOffset *= -1; - ms.translate(alongX ? sideOffset : 0, 0, alongX ? 0 : sideOffset); - - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); - boolean renderUpright = BeltHelper.isItemUpright(transported.stack); - boolean blockItem = itemRenderer.getItemModelWithOverrides(transported.stack, te.getWorld(), null) - .isGui3d(); - int count = (int) (MathHelper.log2((int) (transported.stack.getCount()))) / 2; - Random r = new Random(transported.angle); - - if (Minecraft.getInstance().gameSettings.graphicsMode == GraphicsFanciness.FANCY) { - Vector3d shadowPos = Vector3d.of(te.getPos()).add(beltStartOffset.scale(1) - .add(offsetVec) - .add(alongX ? sideOffset : 0, .39, alongX ? 0 : sideOffset)); - ShadowRenderHelper.renderShadow(ms, buffer, shadowPos, .75f, blockItem ? .2f : .2f); - } - - if (renderUpright) { - Entity renderViewEntity = Minecraft.getInstance().renderViewEntity; - if (renderViewEntity != null) { - Vector3d positionVec = renderViewEntity.getPositionVec(); - Vector3d vectorForOffset = BeltHelper.getVectorForOffset(te, offset); - Vector3d diff = vectorForOffset.subtract(positionVec); - float yRot = (float) MathHelper.atan2(diff.z, -diff.x); - ms.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion((float) (yRot + Math.PI / 2))); - } - ms.translate(0, 3 / 32d, 1 / 16f); - } - if (!renderUpright) - ms.multiply(new Vector3f(slopeAlongX ? 0 : 1, 0, slopeAlongX ? 1 : 0).getDegreesQuaternion(slopeAngle)); - - if (onSlope) - ms.translate(0, 1 / 8f, 0); - - for (int i = 0; i <= count; i++) { - ms.push(); - - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(transported.angle)); - if (!blockItem && !renderUpright) { - ms.translate(0, -.09375, 0); - ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(90)); - } - - if (blockItem) { - ms.translate(r.nextFloat() * .0625f * i, 0, r.nextFloat() * .0625f * i); - } - - ms.scale(.5f, .5f, .5f); - itemRenderer.renderItem(transported.stack, TransformType.FIXED, stackLight, overlay, ms, buffer); - ms.pop(); - - if (!renderUpright) { - if (!blockItem) - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(10)); - ms.translate(0, blockItem ? 1 / 64d : 1 / 16d, 0); - } else - ms.translate(0, 0, -1 / 16f); - - } - - ms.pop(); - } - ms.pop(); - } - - protected int getPackedLight(BeltTileEntity controller, float beltPos) { - int segment = (int) Math.floor(beltPos) * 2; - - if (controller.light == null || segment >= controller.light.length) return 0; - - return (controller.light[segment + 1] << 20) | (controller.light[segment] << 4); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java deleted file mode 100644 index 572fc124d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltShapes.java +++ /dev/null @@ -1,262 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import static net.minecraft.block.Block.makeCuboidShape; - -import java.util.HashMap; -import java.util.Map; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.foundation.utility.VoxelShaper; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.shapes.IBooleanFunction; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; - -public class BeltShapes { - - /* - * | hi. i made these comments mostly to help me with creating the shapes. but they should also be able to help you understand what i'm doing here if that's why you came here. cheers - * | - * | belt shape slope south descending - * | generated by makeSlopePart - * | z - * | y 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | | | | - * | | | | | | | - * | +5 | # | | belt shape flat south ending | belt shape flat south full | - * | +4 | # # | | generated by makeFlatEnding | generated by makeFlatFull | - * | +3 | # # # | z |z |z | - * | +2 | # # # # | 15 14 ... | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 | - * | +1 | # # # # # | | | | | | | | | - * | 15 ------+ - - - - - - - - - # # # # # #-- | --+---------- | --+ - - - - - - - - - - - - - - +-- | --+ - - - - - - - - - - - - - - +--- | - * | 14 | # # # # # # # | | | | | | | | | - * | 13 | # # # # # # # # | | | | | | | | | - * | 12 | # # # # # # # # # | | | | # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # # # | - * | 11 | # # # # # # # # # # | | | # # # # # # # # # # # # # # # # | # # # # # # # # # # # # # # # # | - * | 10 | # # # # # # # # # # # | # | # # # # # # # # # # # # # # # # | # # # # # # # # # # # # # # # # | - * | 9 | # # # # # # # # # # # | | # | # # # # # # # # # # # # # # # # | # # # # # # # # # # # # # # # # | - * | 8 | # # # # # # # # # # # | | # | # # # # # # # # # # # # # # # # | # # # # # # # # # # # # # # # # | - * | 7 | # # # # # # # # # # # | | # | # # # # # # # # # # # # # # # # | # # # # # # # # # # # # # # # # | - * | 6 | # # # # # # # # # # # | | # | # # # # # # # # # # # # # # # # | # # # # # # # # # # # # # # # # | - * | 5 # # # # # # # # # # # | | # | # # # # # # # # # # # # # # # # | # # # # # # # # # # # # # # # # | - * | 4 # # # # # # # # # # | | # | # # # # # # # # # # # # # # # # | # # # # # # # # # # # # # # # # | - * | 3 # # # # # # # # # | | # | | # # # # # # # # # # # # # # | | # # # # # # # # # # # # # # # # | - * | 2 # # # # # # # # | | # | | | | | | | - * | 1 # # # # # # # | | # | | | | | | | - * | 0 -------# # # # # # - - - - - - - - - +-- | --#---------- | --+ - - - - - - - - - - - - - - +-- | --+ - - - - - - - - - - - - - - +--- | - * |-1 # # # # # | | | | | | | | | | - * |-2 # # # # | | | | | | | | | | - * |-3 # # # | slice used | | | - * |-4 # # | to create | | | - * |-5 # | the stairs | | | - * | x 1 to 14 | | | | - */ - - /* - * |Belt shapes always consist of 2 halves depending on state. This class generated all shapes for belts facing SOUTH and then uses VoxelShapers to fill the remaining 3 Directions - * |Middle shapes use the same building part in both halved and don't need to be composed - * |some of these shapes could be skipped and easily achieved by rotating other shapes but i left them in for clarity's sake - * | Flat Belts: Sloped Belts: (DESC) (ASC) - * | south half north half south half north half south half north half - * | - * | Middle flat full flat full Middle slope desc slope desc slope asc slope asc - * | End flat end flat full End flat end slope desc flat end slope asc - * | Start flat full flat end Start slope desc flat end slope asc flat end - */ - - //Building parts for the shapes - private static final VoxelShape - SLOPE_DESC_PART = makeSlopePart(false), - SLOPE_ASC_PART = makeSlopePart(true), - SIDEWAYS_FULL_PART = makeSidewaysFull(), - SIDEWAYS_END_PART = makeSidewaysEnding(), - FLAT_FULL_PART = makeFlatFull(), - FLAT_END_PART = makeFlatEnding(); - - private static final VoxelShape SOUTH_MASK = makeCuboidShape(0,-5,8,16,16+5,16); - private static final VoxelShape NORTH_MASK = makeCuboidShape(0,-5,0,16,16+5,8); - - //Vertical Shapes - private static final VoxelShaper - VERTICAL_FULL = VerticalBeltShaper.make(FLAT_FULL_PART), - VERTICAL_END = VerticalBeltShaper.make(compose(FLAT_END_PART, FLAT_FULL_PART)), - VERTICAL_START = VerticalBeltShaper.make(compose(FLAT_FULL_PART, FLAT_END_PART)); - - //Flat Shapes - private static final VoxelShaper - FLAT_FULL = VoxelShaper.forHorizontalAxis(FLAT_FULL_PART, Axis.Z), - FLAT_END = VoxelShaper.forHorizontal(compose(FLAT_END_PART, FLAT_FULL_PART), Direction.SOUTH), - FLAT_START = VoxelShaper.forHorizontal(compose(FLAT_FULL_PART, FLAT_END_PART), Direction.SOUTH); - - //Sideways Shapes - private static final VoxelShaper - SIDE_FULL = VoxelShaper.forHorizontalAxis(SIDEWAYS_FULL_PART, Axis.Z), - SIDE_END = VoxelShaper.forHorizontal(compose(SIDEWAYS_END_PART, SIDEWAYS_FULL_PART), Direction.SOUTH), - SIDE_START = VoxelShaper.forHorizontal(compose(SIDEWAYS_FULL_PART, SIDEWAYS_END_PART), Direction.SOUTH); - - //Sloped Shapes - private static final VoxelShaper - SLOPE_DESC = VoxelShaper.forHorizontal(SLOPE_DESC_PART, Direction.SOUTH), - SLOPE_ASC = VoxelShaper.forHorizontal(SLOPE_ASC_PART, Direction.SOUTH), - SLOPE_DESC_END = VoxelShaper.forHorizontal(compose(FLAT_END_PART, SLOPE_DESC_PART), Direction.SOUTH), - SLOPE_DESC_START = VoxelShaper.forHorizontal(compose(SLOPE_DESC_PART, FLAT_END_PART), Direction.SOUTH), - SLOPE_ASC_END = VoxelShaper.forHorizontal(compose(FLAT_END_PART, SLOPE_ASC_PART), Direction.SOUTH), - SLOPE_ASC_START = VoxelShaper.forHorizontal(compose(SLOPE_ASC_PART, FLAT_END_PART), Direction.SOUTH); - - private static final VoxelShaper - PARTIAL_CASING = VoxelShaper.forHorizontal(makeCuboidShape(0, 0, 5, 16, 11, 16), Direction.SOUTH); - - static Map cache = new HashMap<>(); - static Map collisionCache = new HashMap<>(); - - private static VoxelShape compose(VoxelShape southPart, VoxelShape northPart){ - return VoxelShapes.or( - VoxelShapes.combine(SOUTH_MASK, southPart, IBooleanFunction.AND), - VoxelShapes.combine(NORTH_MASK, northPart, IBooleanFunction.AND) - ); - } - - private static VoxelShape makeSlopePart(boolean ascendingInstead) { - VoxelShape slice = makeCuboidShape(1, 0, 16, 15, 11, 15); - VoxelShape result = VoxelShapes.empty(); - - for (int i = 0; i < 16; i++) { - - int yOffset = ascendingInstead ? 10 - i : i - 5; - - result = VoxelShapes.or( - result,//move slice i voxels "right" and i-5 voxels "down" - slice.withOffset(0, yOffset / 16f, -i / 16f)); - } - - return result; - } - - private static VoxelShape makeFlatEnding(){ - return VoxelShapes.or( - makeCuboidShape(1,4,0,15,12,16), - makeCuboidShape(1,3,1,15,13,15) - ); - } - - private static VoxelShape makeFlatFull(){ - return makeCuboidShape(1,3,0,15,13,16); - } - - private static VoxelShape makeSidewaysEnding(){ - return VoxelShapes.or( - makeCuboidShape(4,1,0,12,15,16), - makeCuboidShape(3,1,1,13,15,15) - ); - } - - private static VoxelShape makeSidewaysFull(){ - return makeCuboidShape(3,1,0,13,15,16); - } - - public static VoxelShape getShape(BlockState state) { - if (cache.containsKey(state)) - return cache.get(state); - VoxelShape createdShape = VoxelShapes.or(getBeltShape(state), getCasingShape(state)); - cache.put(state, createdShape); - return createdShape; - } - - public static VoxelShape getCollisionShape(BlockState state) { - if (collisionCache.containsKey(state)) - return collisionCache.get(state); - VoxelShape createdShape = VoxelShapes.combine(AllShapes.BELT_COLLISION_MASK, getShape(state), IBooleanFunction.AND); - collisionCache.put(state, createdShape); - return createdShape; - } - - private static VoxelShape getBeltShape(BlockState state) { - Direction facing = state.get(BeltBlock.HORIZONTAL_FACING); - Axis axis = facing.getAxis(); - BeltPart part = state.get(BeltBlock.PART); - BeltSlope slope = state.get(BeltBlock.SLOPE); - - //vertical - if (slope == BeltSlope.VERTICAL) { - if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) - return VERTICAL_FULL.get(axis); - //vertical ending - return (part == BeltPart.START ? VERTICAL_START : VERTICAL_END).get(facing); - } - - //flat part - if (slope == BeltSlope.HORIZONTAL) { - if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) - return FLAT_FULL.get(axis); - //flat ending - return (part == BeltPart.START ? FLAT_START : FLAT_END).get(facing); - } - - //sideways part - if (slope == BeltSlope.SIDEWAYS) { - if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) - return SIDE_FULL.get(axis); - //flat ending - return (part == BeltPart.START ? SIDE_START : SIDE_END).get(facing); - } - - //slope - if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) - return (slope == BeltSlope.DOWNWARD ? SLOPE_DESC : SLOPE_ASC).get(facing); - //sloped ending - if (part == BeltPart.START) - return (slope == BeltSlope.DOWNWARD ? SLOPE_DESC_START : SLOPE_ASC_START).get(facing); - if (part == BeltPart.END) - return (slope == BeltSlope.DOWNWARD ? SLOPE_DESC_END : SLOPE_ASC_END).get(facing); - - //bad state - return VoxelShapes.empty(); - } - - private static VoxelShape getCasingShape(BlockState state) { - if (!state.get(BeltBlock.CASING)) - return VoxelShapes.empty(); - - Direction facing = state.get(BeltBlock.HORIZONTAL_FACING); - BeltPart part = state.get(BeltBlock.PART); - BeltSlope slope = state.get(BeltBlock.SLOPE); - - if (slope == BeltSlope.VERTICAL) - return VoxelShapes.empty(); - if (slope == BeltSlope.SIDEWAYS) - return VoxelShapes.empty(); - - if (slope == BeltSlope.HORIZONTAL) { - return AllShapes.CASING_11PX.get(Direction.UP); - } - - if (part == BeltPart.MIDDLE || part == BeltPart.PULLEY) - return PARTIAL_CASING.get(slope == BeltSlope.UPWARD ? facing : facing.getOpposite()); - - if (part == BeltPart.START) - return slope == BeltSlope.UPWARD ? AllShapes.CASING_11PX.get(Direction.UP) : PARTIAL_CASING.get(facing.getOpposite()); - if (part == BeltPart.END) - return slope == BeltSlope.DOWNWARD ? AllShapes.CASING_11PX.get(Direction.UP) : PARTIAL_CASING.get(facing); - - //something went wrong - return VoxelShapes.fullCube(); - } - - private static class VerticalBeltShaper extends VoxelShaper { - - public static VoxelShaper make(VoxelShape southBeltShape){ - return forDirectionsWithRotation( - rotatedCopy(southBeltShape, new Vector3d(-90,0,0)), - Direction.SOUTH, - Direction.Plane.HORIZONTAL,//idk, this can probably be improved :S - direction -> new Vector3d( - direction.getAxisDirection() == Direction.AxisDirection.POSITIVE ? 0 : 180, - -direction.getHorizontalAngle(), - 0)); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlope.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlope.java deleted file mode 100644 index ba8b4a8f5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltSlope.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.IStringSerializable; - -public enum BeltSlope implements IStringSerializable { - HORIZONTAL, UPWARD, DOWNWARD, VERTICAL, SIDEWAYS; - - @Override - public String getString() { - return Lang.asId(name()); - } - - public boolean isDiagonal() { - return this == UPWARD || this == DOWNWARD; - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java deleted file mode 100644 index 5beca0399..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltTileEntity.java +++ /dev/null @@ -1,597 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt; - -import static com.simibubi.create.content.contraptions.relays.belt.BeltPart.MIDDLE; -import static com.simibubi.create.content.contraptions.relays.belt.BeltSlope.HORIZONTAL; -import static net.minecraft.util.Direction.AxisDirection.NEGATIVE; -import static net.minecraft.util.Direction.AxisDirection.POSITIVE; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.function.Function; - -import com.jozufozu.flywheel.backend.instancing.InstancedRenderDispatcher; -import com.jozufozu.flywheel.light.GridAlignedBB; -import com.jozufozu.flywheel.light.ILightUpdateListener; -import com.jozufozu.flywheel.light.LightUpdater; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.transport.BeltInventory; -import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler; -import com.simibubi.create.content.contraptions.relays.belt.transport.BeltMovementHandler.TransportedEntityInfo; -import com.simibubi.create.content.contraptions.relays.belt.transport.BeltTunnelInteractionHandler; -import com.simibubi.create.content.contraptions.relays.belt.transport.ItemHandlerBeltSegment; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraft.world.LightType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; -import net.minecraftforge.client.model.data.ModelProperty; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; - -public class BeltTileEntity extends KineticTileEntity implements ILightUpdateListener { - - public Map passengers; - public Optional color; - public int beltLength; - public int index; - public Direction lastInsert; - public CasingType casing; - - protected BlockPos controller; - protected BeltInventory inventory; - protected LazyOptional itemHandler; - - public CompoundNBT trackerUpdateTag; - - // client - public byte[] light; - - public static enum CasingType { - NONE, ANDESITE, BRASS; - } - - public BeltTileEntity(TileEntityType type) { - super(type); - controller = BlockPos.ZERO; - itemHandler = LazyOptional.empty(); - casing = CasingType.NONE; - color = Optional.empty(); - } - - @Override - public void addBehaviours(List behaviours) { - super.addBehaviours(behaviours); - behaviours.add(new DirectBeltInputBehaviour(this).onlyInsertWhen(this::canInsertFrom) - .setInsertionHandler(this::tryInsertingFromSide)); - behaviours.add(new TransportedItemStackHandlerBehaviour(this, this::applyToAllItems) - .withStackPlacement(this::getWorldPositionOf)); - } - - @Override - public void tick() { - super.tick(); - - // Init belt - if (beltLength == 0) - BeltBlock.initBelt(world, pos); - if (!AllBlocks.BELT.has(world.getBlockState(pos))) - return; - - initializeItemHandler(); - - // Move Items - if (!isController()) - return; - - if (light == null && world.isRemote) { - initializeLight(); - LightUpdater.getInstance() - .startListening(getBeltVolume(), this); - } - - getInventory().tick(); - - if (getSpeed() == 0) - return; - - // Move Entities - if (passengers == null) - passengers = new HashMap<>(); - - List toRemove = new ArrayList<>(); - passengers.forEach((entity, info) -> { - boolean canBeTransported = BeltMovementHandler.canBeTransported(entity); - boolean leftTheBelt = - info.getTicksSinceLastCollision() > ((getBlockState().get(BeltBlock.SLOPE) != HORIZONTAL) ? 3 : 1); - if (!canBeTransported || leftTheBelt) { - toRemove.add(entity); - return; - } - - info.tick(); - BeltMovementHandler.transportEntity(this, entity, info); - }); - toRemove.forEach(passengers::remove); - } - - @Override - public float calculateStressApplied() { - if (!isController()) - return 0; - return super.calculateStressApplied(); - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - if (!isController()) - return super.makeRenderBoundingBox(); - else - return super.makeRenderBoundingBox().grow(beltLength + 1); - } - - protected void initializeItemHandler() { - if (world.isRemote || itemHandler.isPresent()) - return; - if (!world.isBlockPresent(controller)) - return; - TileEntity te = world.getTileEntity(controller); - if (te == null || !(te instanceof BeltTileEntity)) - return; - BeltInventory inventory = ((BeltTileEntity) te).getInventory(); - if (inventory == null) - return; - IItemHandler handler = new ItemHandlerBeltSegment(inventory, index); - itemHandler = LazyOptional.of(() -> handler); - } - - @Override - public LazyOptional getCapability(Capability cap, Direction side) { - if (cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (side == Direction.UP || BeltBlock.canAccessFromSide(side, getBlockState())) { - return itemHandler.cast(); - } - } - return super.getCapability(cap, side); - } - - @Override - public void remove() { - super.remove(); - itemHandler.invalidate(); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - if (controller != null) - compound.put("Controller", NBTUtil.writeBlockPos(controller)); - compound.putBoolean("IsController", isController()); - compound.putInt("Length", beltLength); - compound.putInt("Index", index); - NBTHelper.writeEnum(compound, "Casing", casing); - - if (color.isPresent()) - NBTHelper.writeEnum(compound, "Dye", color.get()); - - if (isController()) - compound.put("Inventory", getInventory().write()); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - - if (compound.getBoolean("IsController")) - controller = pos; - - color = compound.contains("Dye") ? Optional.of(NBTHelper.readEnum(compound, "Dye", DyeColor.class)) - : Optional.empty(); - - if (!wasMoved) { - if (!isController()) - controller = NBTUtil.readBlockPos(compound.getCompound("Controller")); - trackerUpdateTag = compound; - beltLength = compound.getInt("Length"); - index = compound.getInt("Index"); - } - - if (isController()) - getInventory().read(compound.getCompound("Inventory")); - - CasingType casingBefore = casing; - casing = NBTHelper.readEnum(compound, "Casing", CasingType.class); - - if (!clientPacket) - return; - - if (casingBefore == casing) - return; - if (!isVirtual()) - requestModelDataUpdate(); - if (hasWorld()) - world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 16); - } - - @Override - public void clearKineticInformation() { - super.clearKineticInformation(); - beltLength = 0; - index = 0; - controller = null; - trackerUpdateTag = new CompoundNBT(); - } - - public void applyColor(DyeColor colorIn) { - if (colorIn == null) { - if (!color.isPresent()) - return; - } else if (color.isPresent() && color.get() == colorIn) - return; - - for (BlockPos blockPos : BeltBlock.getBeltChain(world, getController())) { - BeltTileEntity belt = BeltHelper.getSegmentTE(world, blockPos); - if (belt == null) - continue; - belt.color = Optional.ofNullable(colorIn); - belt.markDirty(); - belt.sendData(); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> InstancedRenderDispatcher.enqueueUpdate(belt)); - } - } - - public BeltTileEntity getControllerTE() { - if (controller == null) - return null; - if (!world.isBlockPresent(controller)) - return null; - TileEntity te = world.getTileEntity(controller); - if (te == null || !(te instanceof BeltTileEntity)) - return null; - return (BeltTileEntity) te; - } - - public void setController(BlockPos controller) { - this.controller = controller; - } - - public BlockPos getController() { - return controller == null ? pos : controller; - } - - public boolean isController() { - return controller != null && pos.getX() == controller.getX() && pos.getY() == controller.getY() - && pos.getZ() == controller.getZ(); - } - - public float getBeltMovementSpeed() { - return getSpeed() / 480f; - } - - public float getDirectionAwareBeltMovementSpeed() { - int offset = getBeltFacing().getAxisDirection() - .getOffset(); - if (getBeltFacing().getAxis() == Axis.X) - offset *= -1; - return getBeltMovementSpeed() * offset; - } - - public boolean hasPulley() { - if (!AllBlocks.BELT.has(getBlockState())) - return false; - return getBlockState().get(BeltBlock.PART) != MIDDLE; - } - - protected boolean isLastBelt() { - if (getSpeed() == 0) - return false; - - Direction direction = getBeltFacing(); - if (getBlockState().get(BeltBlock.SLOPE) == BeltSlope.VERTICAL) - return false; - - BeltPart part = getBlockState().get(BeltBlock.PART); - if (part == MIDDLE) - return false; - - boolean movingPositively = (getSpeed() > 0 == (direction.getAxisDirection() - .getOffset() == 1)) ^ direction.getAxis() == Axis.X; - return part == BeltPart.START ^ movingPositively; - } - - public Vector3i getMovementDirection(boolean firstHalf) { - return this.getMovementDirection(firstHalf, false); - } - - public Vector3i getBeltChainDirection() { - return this.getMovementDirection(true, true); - } - - protected Vector3i getMovementDirection(boolean firstHalf, boolean ignoreHalves) { - if (getSpeed() == 0) - return BlockPos.ZERO; - - final BlockState blockState = getBlockState(); - final Direction beltFacing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); - final BeltSlope slope = blockState.get(BeltBlock.SLOPE); - final BeltPart part = blockState.get(BeltBlock.PART); - final Axis axis = beltFacing.getAxis(); - - Direction movementFacing = Direction.getFacingFromAxis(axis == Axis.X ? NEGATIVE : POSITIVE, axis); - boolean notHorizontal = blockState.get(BeltBlock.SLOPE) != HORIZONTAL; - if (getSpeed() < 0) - movementFacing = movementFacing.getOpposite(); - Vector3i movement = movementFacing.getDirectionVec(); - - boolean slopeBeforeHalf = (part == BeltPart.END) == (beltFacing.getAxisDirection() == POSITIVE); - boolean onSlope = notHorizontal && (part == MIDDLE || slopeBeforeHalf == firstHalf || ignoreHalves); - boolean movingUp = onSlope && slope == (movementFacing == beltFacing ? BeltSlope.UPWARD : BeltSlope.DOWNWARD); - - if (!onSlope) - return movement; - - return new Vector3i(movement.getX(), movingUp ? 1 : -1, movement.getZ()); - } - - public Direction getMovementFacing() { - Axis axis = getBeltFacing().getAxis(); - return Direction.getFacingFromAxisDirection(axis, - getBeltMovementSpeed() < 0 ^ axis == Axis.X ? NEGATIVE : POSITIVE); - } - - protected Direction getBeltFacing() { - return getBlockState().get(BlockStateProperties.HORIZONTAL_FACING); - } - - public BeltInventory getInventory() { - if (!isController()) { - BeltTileEntity controllerTE = getControllerTE(); - if (controllerTE != null) - return controllerTE.getInventory(); - return null; - } - if (inventory == null) { - inventory = new BeltInventory(this); - } - return inventory; - } - - private void applyToAllItems(float maxDistanceFromCenter, - Function processFunction) { - BeltTileEntity controller = getControllerTE(); - if (controller == null) - return; - BeltInventory inventory = controller.getInventory(); - if (inventory != null) - inventory.applyToEachWithin(index + .5f, maxDistanceFromCenter, processFunction); - } - - private Vector3d getWorldPositionOf(TransportedItemStack transported) { - BeltTileEntity controllerTE = getControllerTE(); - if (controllerTE == null) - return Vector3d.ZERO; - return BeltHelper.getVectorForOffset(controllerTE, transported.beltPosition); - } - - public void setCasingType(CasingType type) { - if (casing == type) - return; - if (casing != CasingType.NONE) - world.playEvent(2001, pos, - Block.getStateId(casing == CasingType.ANDESITE ? AllBlocks.ANDESITE_CASING.getDefaultState() - : AllBlocks.BRASS_CASING.getDefaultState())); - casing = type; - boolean shouldBlockHaveCasing = type != CasingType.NONE; - BlockState blockState = getBlockState(); - if (blockState.get(BeltBlock.CASING) != shouldBlockHaveCasing) - KineticTileEntity.switchToBlockState(world, pos, blockState.with(BeltBlock.CASING, shouldBlockHaveCasing)); - markDirty(); - sendData(); - } - - private boolean canInsertFrom(Direction side) { - if (getSpeed() == 0) - return false; - BlockState state = getBlockState(); - if (state.contains(BeltBlock.SLOPE) - && (state.get(BeltBlock.SLOPE) == BeltSlope.SIDEWAYS || state.get(BeltBlock.SLOPE) == BeltSlope.VERTICAL)) - return false; - return getMovementFacing() != side.getOpposite(); - } - - private ItemStack tryInsertingFromSide(TransportedItemStack transportedStack, Direction side, boolean simulate) { - BeltTileEntity nextBeltController = getControllerTE(); - ItemStack inserted = transportedStack.stack; - ItemStack empty = ItemStack.EMPTY; - - if (nextBeltController == null) - return inserted; - BeltInventory nextInventory = nextBeltController.getInventory(); - if (nextInventory == null) - return inserted; - - TileEntity teAbove = world.getTileEntity(pos.up()); - if (teAbove instanceof BrassTunnelTileEntity) { - BrassTunnelTileEntity tunnelTE = (BrassTunnelTileEntity) teAbove; - if (tunnelTE.hasDistributionBehaviour()) { - if (!tunnelTE.getStackToDistribute() - .isEmpty()) - return inserted; - if (!tunnelTE.testFlapFilter(side.getOpposite(), inserted)) - return inserted; - if (!simulate) { - BeltTunnelInteractionHandler.flapTunnel(nextInventory, index, side.getOpposite(), true); - tunnelTE.setStackToDistribute(inserted); - } - return empty; - } - } - - if (getSpeed() == 0) - return inserted; - if (getMovementFacing() == side.getOpposite()) - return inserted; - if (!nextInventory.canInsertAtFromSide(index, side)) - return inserted; - if (simulate) - return empty; - - transportedStack = transportedStack.copy(); - transportedStack.beltPosition = index + .5f - Math.signum(getDirectionAwareBeltMovementSpeed()) / 16f; - - Direction movementFacing = getMovementFacing(); - if (!side.getAxis() - .isVertical()) { - if (movementFacing != side) { - transportedStack.sideOffset = side.getAxisDirection() - .getOffset() * .35f; - if (side.getAxis() == Axis.X) - transportedStack.sideOffset *= -1; - } else - transportedStack.beltPosition = getDirectionAwareBeltMovementSpeed() > 0 ? index : index + 1; - } - - transportedStack.prevSideOffset = transportedStack.sideOffset; - transportedStack.insertedAt = index; - transportedStack.insertedFrom = side; - transportedStack.prevBeltPosition = transportedStack.beltPosition; - - BeltTunnelInteractionHandler.flapTunnel(nextInventory, index, side.getOpposite(), true); - - nextInventory.addItem(transportedStack); - nextBeltController.markDirty(); - nextBeltController.sendData(); - return empty; - } - - public static final ModelProperty CASING_PROPERTY = new ModelProperty<>(); - - @Override - public IModelData getModelData() { - return new ModelDataMap.Builder().withInitial(CASING_PROPERTY, casing) - .build(); - } - - @Override - protected boolean canPropagateDiagonally(IRotate block, BlockState state) { - return state.contains(BeltBlock.SLOPE) - && (state.get(BeltBlock.SLOPE) == BeltSlope.UPWARD || state.get(BeltBlock.SLOPE) == BeltSlope.DOWNWARD); - } - - @Override - public float propagateRotationTo(KineticTileEntity target, BlockState stateFrom, BlockState stateTo, BlockPos diff, - boolean connectedViaAxes, boolean connectedViaCogs) { - if (target instanceof BeltTileEntity && !connectedViaAxes) - return getController().equals(((BeltTileEntity) target).getController()) ? 1 : 0; - return 0; - } - - @Override - public boolean shouldRenderNormally() { - if (world == null) - return isController(); - BlockState state = getBlockState(); - return state != null && state.contains(BeltBlock.PART) && state.get(BeltBlock.PART) == BeltPart.START; - } - - @Override - public boolean onLightUpdate(IBlockDisplayReader world, LightType type, GridAlignedBB changed) { - if (this.removed) { - return true; - } - - GridAlignedBB beltVolume = getBeltVolume(); - - if (beltVolume.intersects(changed)) { - if (type == LightType.BLOCK) - updateBlockLight(); - - if (type == LightType.SKY) - updateSkyLight(); - } - - return false; - } - - private GridAlignedBB getBeltVolume() { - BlockPos endPos = BeltHelper.getPositionForOffset(this, beltLength - 1); - - GridAlignedBB bb = GridAlignedBB.from(pos, endPos); - bb.fixMinMax(); - return bb; - } - - private void initializeLight() { - if (beltLength > 0) { - light = new byte[beltLength * 2]; - - Vector3i vec = getBeltFacing().getDirectionVec(); - BeltSlope slope = getBlockState().get(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - - BlockPos.Mutable pos = new BlockPos.Mutable(controller.getX(), controller.getY(), controller.getZ()); - for (int i = 0; i < beltLength * 2; i += 2) { - light[i] = (byte) world.getLightLevel(LightType.BLOCK, pos); - light[i + 1] = (byte) world.getLightLevel(LightType.SKY, pos); - pos.move(vec.getX(), verticality, vec.getZ()); - } - } - } - - private void updateBlockLight() { - Vector3i vec = getBeltFacing().getDirectionVec(); - BeltSlope slope = getBlockState().get(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - - BlockPos.Mutable pos = new BlockPos.Mutable(controller.getX(), controller.getY(), controller.getZ()); - for (int i = 0; i < beltLength * 2; i += 2) { - light[i] = (byte) world.getLightLevel(LightType.BLOCK, pos); - - pos.move(vec.getX(), verticality, vec.getZ()); - } - } - - private void updateSkyLight() { - Vector3i vec = getBeltFacing().getDirectionVec(); - BeltSlope slope = getBlockState().get(BeltBlock.SLOPE); - int verticality = slope == BeltSlope.DOWNWARD ? -1 : slope == BeltSlope.UPWARD ? 1 : 0; - - BlockPos.Mutable pos = new BlockPos.Mutable(controller.getX(), controller.getY(), controller.getZ()); - for (int i = 1; i < beltLength * 2; i += 2) { - light[i] = (byte) world.getLightLevel(LightType.SKY, pos); - - pos.move(vec.getX(), verticality, vec.getZ()); - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorHandler.java deleted file mode 100644 index 420cf78e5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorHandler.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.item; - -import java.util.LinkedList; -import java.util.List; -import java.util.Random; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.particles.RedstoneParticleData; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; - -public class BeltConnectorHandler { - - private static Random r = new Random(); - - public static void tick() { - PlayerEntity player = Minecraft.getInstance().player; - World world = Minecraft.getInstance().world; - - if (player == null || world == null) - return; - if (Minecraft.getInstance().currentScreen != null) - return; - - for (Hand hand : Hand.values()) { - ItemStack heldItem = player.getHeldItem(hand); - - if (!AllItems.BELT_CONNECTOR.isIn(heldItem)) - continue; - if (!heldItem.hasTag()) - continue; - - CompoundNBT tag = heldItem.getTag(); - if (!tag.contains("FirstPulley")) - continue; - - BlockPos first = NBTUtil.readBlockPos(tag.getCompound("FirstPulley")); - - if (!world.getBlockState(first).contains(BlockStateProperties.AXIS)) - continue; - Axis axis = world.getBlockState(first) - .get(BlockStateProperties.AXIS); - - RayTraceResult rayTrace = Minecraft.getInstance().objectMouseOver; - if (rayTrace == null || !(rayTrace instanceof BlockRayTraceResult)) { - if (r.nextInt(50) == 0) { - world.addParticle(new RedstoneParticleData(.3f, .9f, .5f, 1), - first.getX() + .5f + randomOffset(.25f), first.getY() + .5f + randomOffset(.25f), - first.getZ() + .5f + randomOffset(.25f), 0, 0, 0); - } - return; - } - - BlockPos selected = ((BlockRayTraceResult) rayTrace).getPos(); - - if (world.getBlockState(selected) - .getMaterial() - .isReplaceable()) - return; - if (!ShaftBlock.isShaft(world.getBlockState(selected))) - selected = selected.offset(((BlockRayTraceResult) rayTrace).getFace()); - if (!selected.withinDistance(first, AllConfigs.SERVER.kinetics.maxBeltLength.get())) - return; - - boolean canConnect = - BeltConnectorItem.validateAxis(world, selected) && BeltConnectorItem.canConnect(world, first, selected); - - Vector3d start = Vector3d.of(first); - Vector3d end = Vector3d.of(selected); - Vector3d actualDiff = end.subtract(start); - end = end.subtract(axis.getCoordinate(actualDiff.x, 0, 0), axis.getCoordinate(0, actualDiff.y, 0), - axis.getCoordinate(0, 0, actualDiff.z)); - Vector3d diff = end.subtract(start); - - double x = Math.abs(diff.x); - double y = Math.abs(diff.y); - double z = Math.abs(diff.z); - float length = (float) Math.max(x, Math.max(y, z)); - Vector3d step = diff.normalize(); - - int sames = ((x == y) ? 1 : 0) + ((y == z) ? 1 : 0) + ((z == x) ? 1 : 0); - if (sames == 0) { - List validDiffs = new LinkedList<>(); - for (int i = -1; i <= 1; i++) - for (int j = -1; j <= 1; j++) - for (int k = -1; k <= 1; k++) { - if (axis.getCoordinate(i, j, k) != 0) - continue; - if (axis == Axis.Y && i != 0 && k != 0) - continue; - if (i == 0 && j == 0 && k == 0) - continue; - validDiffs.add(new Vector3d(i, j, k)); - } - int closestIndex = 0; - float closest = Float.MAX_VALUE; - for (Vector3d validDiff : validDiffs) { - double distanceTo = step.distanceTo(validDiff); - if (distanceTo < closest) { - closest = (float) distanceTo; - closestIndex = validDiffs.indexOf(validDiff); - } - } - step = validDiffs.get(closestIndex); - } - - if (axis == Axis.Y && step.x != 0 && step.z != 0) - return; - - step = new Vector3d(Math.signum(step.x), Math.signum(step.y), Math.signum(step.z)); - for (float f = 0; f < length; f += .0625f) { - Vector3d position = start.add(step.scale(f)); - if (r.nextInt(10) == 0) { - world.addParticle(new RedstoneParticleData(canConnect ? .3f : .9f, canConnect ? .9f : .3f, .5f, 1), - position.x + .5f, position.y + .5f, position.z + .5f, 0, 0, 0); - } - } - - return; - } - } - - private static float randomOffset(float range) { - return (r.nextFloat() - .5f) * 2 * range; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java deleted file mode 100644 index 1df40f3b8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/item/BeltConnectorItem.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.item; - -import java.util.LinkedList; -import java.util.List; - -import javax.annotation.Nonnull; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltPart; -import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; -import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class BeltConnectorItem extends BlockItem { - - public BeltConnectorItem(Properties properties) { - super(AllBlocks.BELT.get(), properties); - } - - @Override - public String getTranslationKey() { - return getDefaultTranslationKey(); - } - - @Override - public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { - if (p_150895_1_ == Create.BASE_CREATIVE_TAB) - return; - super.fillItemGroup(p_150895_1_, p_150895_2_); - } - - @Nonnull - @Override - public ActionResultType onItemUse(ItemUseContext context) { - PlayerEntity playerEntity = context.getPlayer(); - if (playerEntity != null && playerEntity.isSneaking()) { - context.getItem() - .setTag(null); - return ActionResultType.SUCCESS; - } - - World world = context.getWorld(); - BlockPos pos = context.getPos(); - boolean validAxis = validateAxis(world, pos); - - if (world.isRemote) - return validAxis ? ActionResultType.SUCCESS : ActionResultType.FAIL; - - CompoundNBT tag = context.getItem() - .getOrCreateTag(); - BlockPos firstPulley = null; - - // Remove first if no longer existant or valid - if (tag.contains("FirstPulley")) { - firstPulley = NBTUtil.readBlockPos(tag.getCompound("FirstPulley")); - if (!validateAxis(world, firstPulley) || !firstPulley.withinDistance(pos, maxLength() * 2)) { - tag.remove("FirstPulley"); - context.getItem() - .setTag(tag); - } - } - - if (!validAxis || playerEntity == null) - return ActionResultType.FAIL; - - if (tag.contains("FirstPulley")) { - - if (!canConnect(world, firstPulley, pos)) - return ActionResultType.FAIL; - - if (firstPulley != null && !firstPulley.equals(pos)) { - createBelts(world, firstPulley, pos); - AllTriggers.triggerFor(AllTriggers.CONNECT_BELT, playerEntity); - if (!playerEntity.isCreative()) - context.getItem() - .shrink(1); - } - - if (!context.getItem() - .isEmpty()) { - context.getItem() - .setTag(null); - playerEntity.getCooldownTracker() - .setCooldown(this, 5); - } - return ActionResultType.SUCCESS; - } - - tag.put("FirstPulley", NBTUtil.writeBlockPos(pos)); - context.getItem() - .setTag(tag); - playerEntity.getCooldownTracker() - .setCooldown(this, 5); - return ActionResultType.SUCCESS; - } - - public static void createBelts(World world, BlockPos start, BlockPos end) { - - BeltSlope slope = getSlopeBetween(start, end); - Direction facing = getFacingFromTo(start, end); - - BlockPos diff = end.subtract(start); - if (diff.getX() == diff.getZ()) - facing = Direction.getFacingFromAxis(facing.getAxisDirection(), world.getBlockState(start) - .get(BlockStateProperties.AXIS) == Axis.X ? Axis.Z : Axis.X); - - List beltsToCreate = getBeltChainBetween(start, end, slope, facing); - BlockState beltBlock = AllBlocks.BELT.getDefaultState(); - - for (BlockPos pos : beltsToCreate) { - BeltPart part = pos.equals(start) ? BeltPart.START : pos.equals(end) ? BeltPart.END : BeltPart.MIDDLE; - BlockState shaftState = world.getBlockState(pos); - boolean pulley = ShaftBlock.isShaft(shaftState); - if (part == BeltPart.MIDDLE && pulley) - part = BeltPart.PULLEY; - if (pulley && shaftState.get(AbstractShaftBlock.AXIS) == Axis.Y) - slope = BeltSlope.SIDEWAYS; - world.setBlockState(pos, beltBlock.with(BeltBlock.SLOPE, slope) - .with(BeltBlock.PART, part) - .with(BeltBlock.HORIZONTAL_FACING, facing), 3); - } - } - - private static Direction getFacingFromTo(BlockPos start, BlockPos end) { - Axis beltAxis = start.getX() == end.getX() ? Axis.Z : Axis.X; - BlockPos diff = end.subtract(start); - AxisDirection axisDirection = AxisDirection.POSITIVE; - - if (diff.getX() == 0 && diff.getZ() == 0) - axisDirection = diff.getY() > 0 ? AxisDirection.POSITIVE : AxisDirection.NEGATIVE; - else - axisDirection = beltAxis.getCoordinate(diff.getX(), 0, diff.getZ()) > 0 ? AxisDirection.POSITIVE - : AxisDirection.NEGATIVE; - - return Direction.getFacingFromAxis(axisDirection, beltAxis); - } - - private static BeltSlope getSlopeBetween(BlockPos start, BlockPos end) { - BlockPos diff = end.subtract(start); - - if (diff.getY() != 0) { - if (diff.getZ() != 0 || diff.getX() != 0) - return diff.getY() > 0 ? BeltSlope.UPWARD : BeltSlope.DOWNWARD; - return BeltSlope.VERTICAL; - } - return BeltSlope.HORIZONTAL; - } - - private static List getBeltChainBetween(BlockPos start, BlockPos end, BeltSlope slope, Direction direction) { - List positions = new LinkedList<>(); - int limit = 1000; - BlockPos current = start; - - do { - positions.add(current); - - if (slope == BeltSlope.VERTICAL) { - current = current.up(direction.getAxisDirection() == AxisDirection.POSITIVE ? 1 : -1); - continue; - } - - current = current.offset(direction); - if (slope != BeltSlope.HORIZONTAL) - current = current.up(slope == BeltSlope.UPWARD ? 1 : -1); - - } while (!current.equals(end) && limit-- > 0); - - positions.add(end); - return positions; - } - - public static boolean canConnect(World world, BlockPos first, BlockPos second) { - if (!world.isAreaLoaded(first, 1)) - return false; - if (!world.isAreaLoaded(second, 1)) - return false; - if (!second.withinDistance(first, maxLength())) - return false; - - BlockPos diff = second.subtract(first); - Axis shaftAxis = world.getBlockState(first) - .get(BlockStateProperties.AXIS); - - int x = diff.getX(); - int y = diff.getY(); - int z = diff.getZ(); - int sames = ((Math.abs(x) == Math.abs(y)) ? 1 : 0) + ((Math.abs(y) == Math.abs(z)) ? 1 : 0) - + ((Math.abs(z) == Math.abs(x)) ? 1 : 0); - - if (shaftAxis.getCoordinate(x, y, z) != 0) - return false; - if (sames != 1) - return false; - if (shaftAxis != world.getBlockState(second) - .get(BlockStateProperties.AXIS)) - return false; - if (shaftAxis == Axis.Y && x != 0 && z != 0) - return false; - - TileEntity tileEntity = world.getTileEntity(first); - TileEntity tileEntity2 = world.getTileEntity(second); - - if (!(tileEntity instanceof KineticTileEntity)) - return false; - if (!(tileEntity2 instanceof KineticTileEntity)) - return false; - - float speed1 = ((KineticTileEntity) tileEntity).getTheoreticalSpeed(); - float speed2 = ((KineticTileEntity) tileEntity2).getTheoreticalSpeed(); - if (Math.signum(speed1) != Math.signum(speed2) && speed1 != 0 && speed2 != 0) - return false; - - BlockPos step = new BlockPos(Math.signum(diff.getX()), Math.signum(diff.getY()), Math.signum(diff.getZ())); - int limit = 1000; - for (BlockPos currentPos = first.add(step); !currentPos.equals(second) && limit-- > 0; currentPos = - currentPos.add(step)) { - BlockState blockState = world.getBlockState(currentPos); - if (ShaftBlock.isShaft(blockState) && blockState.get(AbstractShaftBlock.AXIS) == shaftAxis) - continue; - if (!blockState.getMaterial() - .isReplaceable()) - return false; - } - - return true; - - } - - protected static Integer maxLength() { - return AllConfigs.SERVER.kinetics.maxBeltLength.get(); - } - - public static boolean validateAxis(World world, BlockPos pos) { - if (!world.isAreaLoaded(pos, 1)) - return false; - if (!ShaftBlock.isShaft(world.getBlockState(pos))) - return false; - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltCrusherInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltCrusherInteractionHandler.java deleted file mode 100644 index 39400e412..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltCrusherInteractionHandler.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.transport; - -import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelControllerBlock; -import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelControllerTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.items.ItemHandlerHelper; - -public class BeltCrusherInteractionHandler { - - public static boolean checkForCrushers(BeltInventory beltInventory, TransportedItemStack currentItem, - float nextOffset) { - - boolean beltMovementPositive = beltInventory.beltMovementPositive; - int firstUpcomingSegment = (int) Math.floor(currentItem.beltPosition); - int step = beltMovementPositive ? 1 : -1; - firstUpcomingSegment = MathHelper.clamp(firstUpcomingSegment, 0, beltInventory.belt.beltLength - 1); - - for (int segment = firstUpcomingSegment; beltMovementPositive ? segment <= nextOffset - : segment + 1 >= nextOffset; segment += step) { - BlockPos crusherPos = BeltHelper.getPositionForOffset(beltInventory.belt, segment) - .up(); - World world = beltInventory.belt.getWorld(); - BlockState crusherState = world.getBlockState(crusherPos); - if (!(crusherState.getBlock() instanceof CrushingWheelControllerBlock)) - continue; - Direction crusherFacing = crusherState.get(CrushingWheelControllerBlock.FACING); - Direction movementFacing = beltInventory.belt.getMovementFacing(); - if (crusherFacing != movementFacing) - continue; - - float crusherEntry = segment + .5f; - crusherEntry += .399f * (beltMovementPositive ? -1 : 1); - float postCrusherEntry = crusherEntry + .799f * (!beltMovementPositive ? -1 : 1); - - boolean hasCrossed = nextOffset > crusherEntry && nextOffset < postCrusherEntry && beltMovementPositive - || nextOffset < crusherEntry && nextOffset > postCrusherEntry && !beltMovementPositive; - if (!hasCrossed) - return false; - currentItem.beltPosition = crusherEntry; - - TileEntity te = world.getTileEntity(crusherPos); - if (!(te instanceof CrushingWheelControllerTileEntity)) - return true; - - CrushingWheelControllerTileEntity crusherTE = (CrushingWheelControllerTileEntity) te; - - ItemStack toInsert = currentItem.stack.copy(); - - ItemStack remainder = ItemHandlerHelper.insertItemStacked(crusherTE.inventory, toInsert, false); - if (toInsert.equals(remainder, false)) - return true; - - int notFilled = currentItem.stack.getCount() - toInsert.getCount(); - if (!remainder.isEmpty()) { - remainder.grow(notFilled); - } else if (notFilled > 0) - remainder = ItemHandlerHelper.copyStackWithSize(currentItem.stack, notFilled); - - currentItem.stack = remainder; - beltInventory.belt.sendData(); - return true; - } - - return false; - } - - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java deleted file mode 100644 index 8ea4af97f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltFunnelInteractionHandler.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.transport; - -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; -import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.inventory.InvManipulationBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.items.ItemHandlerHelper; - -public class BeltFunnelInteractionHandler { - - public static boolean checkForFunnels(BeltInventory beltInventory, TransportedItemStack currentItem, - float nextOffset) { - boolean beltMovementPositive = beltInventory.beltMovementPositive; - int firstUpcomingSegment = (int) Math.floor(currentItem.beltPosition); - int step = beltMovementPositive ? 1 : -1; - firstUpcomingSegment = MathHelper.clamp(firstUpcomingSegment, 0, beltInventory.belt.beltLength - 1); - - for (int segment = firstUpcomingSegment; beltMovementPositive ? segment <= nextOffset - : segment + 1 >= nextOffset; segment += step) { - BlockPos funnelPos = BeltHelper.getPositionForOffset(beltInventory.belt, segment) - .up(); - World world = beltInventory.belt.getWorld(); - BlockState funnelState = world.getBlockState(funnelPos); - if (!(funnelState.getBlock() instanceof BeltFunnelBlock)) - continue; - Direction funnelFacing = funnelState.get(BeltFunnelBlock.HORIZONTAL_FACING); - Direction movementFacing = beltInventory.belt.getMovementFacing(); - boolean blocking = funnelFacing == movementFacing.getOpposite(); - if (funnelFacing == movementFacing) - continue; - if (funnelState.get(BeltFunnelBlock.SHAPE) == Shape.PUSHING) - continue; - - float funnelEntry = segment + .5f; - if (funnelState.get(BeltFunnelBlock.SHAPE) == Shape.EXTENDED) - funnelEntry += .499f * (beltMovementPositive ? -1 : 1); - - boolean hasCrossed = nextOffset > funnelEntry && beltMovementPositive - || nextOffset < funnelEntry && !beltMovementPositive; - if (!hasCrossed) - return false; - if (blocking) - currentItem.beltPosition = funnelEntry; - - if (world.isRemote || funnelState.method_28500(BeltFunnelBlock.POWERED).orElse(false)) - if (blocking) - return true; - else - continue; - - TileEntity te = world.getTileEntity(funnelPos); - if (!(te instanceof FunnelTileEntity)) - return true; - - FunnelTileEntity funnelTE = (FunnelTileEntity) te; - InvManipulationBehaviour inserting = funnelTE.getBehaviour(InvManipulationBehaviour.TYPE); - FilteringBehaviour filtering = funnelTE.getBehaviour(FilteringBehaviour.TYPE); - - if (inserting == null || filtering != null && !filtering.test(currentItem.stack)) - if (blocking) - return true; - else - continue; - - int amountToExtract = funnelTE.getAmountToExtract(); - ItemStack toInsert = currentItem.stack.copy(); - if (amountToExtract > toInsert.getCount()) - if (blocking) - return true; - else - continue; - - if (amountToExtract != -1) - toInsert.setCount(amountToExtract); - - ItemStack remainder = inserting.insert(toInsert); - if (toInsert.equals(remainder, false)) - if (blocking) - return true; - else - continue; - - int notFilled = currentItem.stack.getCount() - toInsert.getCount(); - if (!remainder.isEmpty()) { - remainder.grow(notFilled); - } else if (notFilled > 0) - remainder = ItemHandlerHelper.copyStackWithSize(currentItem.stack, notFilled); - - funnelTE.flap(true); - funnelTE.onTransfer(toInsert); - currentItem.stack = remainder; - beltInventory.belt.sendData(); - if (blocking) - return true; - } - - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java deleted file mode 100644 index d445f9567..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltInventory.java +++ /dev/null @@ -1,446 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.transport; - -import static com.simibubi.create.content.contraptions.relays.belt.transport.BeltTunnelInteractionHandler.flapTunnel; - -import java.util.Collections; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.function.Function; - -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.BeltProcessingBehaviour.ProcessingResult; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.ServerSpeedProvider; - -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.util.Constants.NBT; - -public class BeltInventory { - - final BeltTileEntity belt; - private final List items; - final List toInsert; - final List toRemove; - boolean beltMovementPositive; - final float SEGMENT_WINDOW = .75f; - - public BeltInventory(BeltTileEntity te) { - this.belt = te; - items = new LinkedList<>(); - toInsert = new LinkedList<>(); - toRemove = new LinkedList<>(); - } - - public void tick() { - - // Added/Removed items from previous cycle - if (!toInsert.isEmpty() || !toRemove.isEmpty()) { - toInsert.forEach(this::insert); - toInsert.clear(); - items.removeAll(toRemove); - toRemove.clear(); - belt.markDirty(); - belt.sendData(); - } - - if (belt.getSpeed() == 0) - return; - - // Reverse item collection if belt just reversed - if (beltMovementPositive != belt.getDirectionAwareBeltMovementSpeed() > 0) { - beltMovementPositive = !beltMovementPositive; - Collections.reverse(items); - belt.markDirty(); - belt.sendData(); - } - - // Assuming the first entry is furthest on the belt - TransportedItemStack stackInFront = null; - TransportedItemStack currentItem = null; - Iterator iterator = items.iterator(); - - // Useful stuff - float beltSpeed = belt.getDirectionAwareBeltMovementSpeed(); - Direction movementFacing = belt.getMovementFacing(); - boolean horizontal = belt.getBlockState() - .get(BeltBlock.SLOPE) == BeltSlope.HORIZONTAL; - float spacing = 1; - World world = belt.getWorld(); - boolean onClient = world.isRemote && !belt.isVirtual(); - - // resolve ending only when items will reach it this tick - Ending ending = Ending.UNRESOLVED; - - // Loop over items - while (iterator.hasNext()) { - stackInFront = currentItem; - currentItem = iterator.next(); - currentItem.prevBeltPosition = currentItem.beltPosition; - currentItem.prevSideOffset = currentItem.sideOffset; - - if (currentItem.stack.isEmpty()) { - iterator.remove(); - currentItem = null; - continue; - } - - float movement = beltSpeed; - if (onClient) - movement *= ServerSpeedProvider.get(); - - // Don't move if held by processing (client) - if (world.isRemote && currentItem.locked) - continue; - - // Don't move if held by external components - if (currentItem.lockedExternally) { - currentItem.lockedExternally = false; - continue; - } - - // Don't move if other items are waiting in front - float currentPos = currentItem.beltPosition; - if (stackInFront != null) { - float diff = stackInFront.beltPosition - currentPos; - if (Math.abs(diff) <= spacing) - continue; - movement = - beltMovementPositive ? Math.min(movement, diff - spacing) : Math.max(movement, diff + spacing); - } - - // Don't move beyond the edge - float diffToEnd = beltMovementPositive ? belt.beltLength - currentPos : -currentPos; - if (Math.abs(diffToEnd) < Math.abs(movement) + 1) { - if (ending == Ending.UNRESOLVED) - ending = resolveEnding(); - diffToEnd += beltMovementPositive ? -ending.margin : ending.margin; - } - float limitedMovement = - beltMovementPositive ? Math.min(movement, diffToEnd) : Math.max(movement, diffToEnd); - float nextOffset = currentItem.beltPosition + limitedMovement; - - // Belt item processing - if (!onClient && horizontal) { - ItemStack item = currentItem.stack; - if (handleBeltProcessingAndCheckIfRemoved(currentItem, nextOffset)) { - iterator.remove(); - belt.sendData(); - continue; - } - if (item != currentItem.stack) - belt.sendData(); - if (currentItem.locked) - continue; - } - - // Belt Tunnels - if (BeltTunnelInteractionHandler.flapTunnelsAndCheckIfStuck(this, currentItem, nextOffset)) - continue; - - // Belt Funnels - if (BeltFunnelInteractionHandler.checkForFunnels(this, currentItem, nextOffset)) - continue; - - // Horizontal Crushing Wheels - if (BeltCrusherInteractionHandler.checkForCrushers(this, currentItem, nextOffset)) - continue; - - // Apply Movement - currentItem.beltPosition += limitedMovement; - currentItem.sideOffset += - (currentItem.getTargetSideOffset() - currentItem.sideOffset) * Math.abs(limitedMovement) * 2f; - currentPos = currentItem.beltPosition; - - // Movement successful - if (limitedMovement == movement || onClient) - continue; - - // End reached - int lastOffset = beltMovementPositive ? belt.beltLength - 1 : 0; - BlockPos nextPosition = BeltHelper.getPositionForOffset(belt, beltMovementPositive ? belt.beltLength : -1); - - if (ending == Ending.FUNNEL) - continue; - - if (ending == Ending.INSERT) { - DirectBeltInputBehaviour inputBehaviour = - TileEntityBehaviour.get(world, nextPosition, DirectBeltInputBehaviour.TYPE); - if (inputBehaviour == null) - continue; - if (!inputBehaviour.canInsertFromSide(movementFacing)) - continue; - - ItemStack remainder = inputBehaviour.handleInsertion(currentItem, movementFacing, false); - if (remainder.equals(currentItem.stack, false)) - continue; - - currentItem.stack = remainder; - if (remainder.isEmpty()) - iterator.remove(); - - flapTunnel(this, lastOffset, movementFacing, false); - belt.sendData(); - continue; - } - - if (ending == Ending.BLOCKED) - continue; - - if (ending == Ending.EJECT) { - eject(currentItem); - iterator.remove(); - flapTunnel(this, lastOffset, movementFacing, false); - belt.sendData(); - continue; - } - } - } - - protected boolean handleBeltProcessingAndCheckIfRemoved(TransportedItemStack currentItem, float nextOffset) { - int currentSegment = (int) currentItem.beltPosition; - - // Continue processing if held - if (currentItem.locked) { - BeltProcessingBehaviour processingBehaviour = getBeltProcessingAtSegment(currentSegment); - TransportedItemStackHandlerBehaviour stackHandlerBehaviour = - getTransportedItemStackHandlerAtSegment(currentSegment); - - if (stackHandlerBehaviour == null) - return false; - if (processingBehaviour == null) { - currentItem.locked = false; - belt.sendData(); - return false; - } - - ProcessingResult result = processingBehaviour.handleHeldItem(currentItem, stackHandlerBehaviour); - if (result == ProcessingResult.REMOVE) - return true; - if (result == ProcessingResult.HOLD) - return false; - - currentItem.locked = false; - belt.sendData(); - return false; - } - - // See if any new belt processing catches the item - if (currentItem.beltPosition > .5f || beltMovementPositive) { - int firstUpcomingSegment = (int) (currentItem.beltPosition + (beltMovementPositive ? .5f : -.5f)); - int step = beltMovementPositive ? 1 : -1; - - for (int segment = firstUpcomingSegment; beltMovementPositive ? segment + .5f <= nextOffset - : segment + .5f >= nextOffset; segment += step) { - - BeltProcessingBehaviour processingBehaviour = getBeltProcessingAtSegment(segment); - TransportedItemStackHandlerBehaviour stackHandlerBehaviour = - getTransportedItemStackHandlerAtSegment(segment); - - if (processingBehaviour == null) - continue; - if (stackHandlerBehaviour == null) - continue; - if (BeltProcessingBehaviour.isBlocked(belt.getWorld(), BeltHelper.getPositionForOffset(belt, segment))) - continue; - - ProcessingResult result = processingBehaviour.handleReceivedItem(currentItem, stackHandlerBehaviour); - if (result == ProcessingResult.REMOVE) - return true; - - if (result == ProcessingResult.HOLD) { - currentItem.beltPosition = segment + .5f + (beltMovementPositive ? 1 / 512f : -1 / 512f); - currentItem.locked = true; - belt.sendData(); - return false; - } - } - } - - return false; - } - - protected BeltProcessingBehaviour getBeltProcessingAtSegment(int segment) { - return TileEntityBehaviour.get(belt.getWorld(), BeltHelper.getPositionForOffset(belt, segment) - .up(2), BeltProcessingBehaviour.TYPE); - } - - protected TransportedItemStackHandlerBehaviour getTransportedItemStackHandlerAtSegment(int segment) { - return TileEntityBehaviour.get(belt.getWorld(), BeltHelper.getPositionForOffset(belt, segment), - TransportedItemStackHandlerBehaviour.TYPE); - } - - private enum Ending { - UNRESOLVED(0), EJECT(0), INSERT(.25f), FUNNEL(.5f), BLOCKED(.45f); - - private float margin; - - Ending(float f) { - this.margin = f; - } - } - - private Ending resolveEnding() { - World world = belt.getWorld(); - BlockPos nextPosition = BeltHelper.getPositionForOffset(belt, beltMovementPositive ? belt.beltLength : -1); - -// if (AllBlocks.BRASS_BELT_FUNNEL.has(world.getBlockState(lastPosition.up()))) -// return Ending.FUNNEL; - - DirectBeltInputBehaviour inputBehaviour = - TileEntityBehaviour.get(world, nextPosition, DirectBeltInputBehaviour.TYPE); - if (inputBehaviour != null) - return Ending.INSERT; - - if (BlockHelper.hasBlockSolidSide(world.getBlockState(nextPosition), world, nextPosition, belt.getMovementFacing() - .getOpposite())) - return Ending.BLOCKED; - - return Ending.EJECT; - } - - // - - public boolean canInsertAt(int segment) { - return canInsertAtFromSide(segment, Direction.UP); - } - - public boolean canInsertAtFromSide(int segment, Direction side) { - float segmentPos = segment; - if (belt.getMovementFacing() == side.getOpposite()) - return false; - if (belt.getMovementFacing() != side) - segmentPos += .5f; - else if (!beltMovementPositive) - segmentPos += 1f; - - for (TransportedItemStack stack : items) - if (isBlocking(segment, side, segmentPos, stack)) - return false; - for (TransportedItemStack stack : toInsert) - if (isBlocking(segment, side, segmentPos, stack)) - return false; - - return true; - } - - private boolean isBlocking(int segment, Direction side, float segmentPos, TransportedItemStack stack) { - float currentPos = stack.beltPosition; - if (stack.insertedAt == segment && stack.insertedFrom == side - && (beltMovementPositive ? currentPos <= segmentPos + 1 : currentPos >= segmentPos - 1)) - return true; - return false; - } - - public void addItem(TransportedItemStack newStack) { - toInsert.add(newStack); - } - - private void insert(TransportedItemStack newStack) { - if (items.isEmpty()) - items.add(newStack); - else { - int index = 0; - for (TransportedItemStack stack : items) { - if (stack.compareTo(newStack) > 0 == beltMovementPositive) - break; - index++; - } - items.add(index, newStack); - } - } - - public TransportedItemStack getStackAtOffset(int offset) { - float min = offset; - float max = offset + 1; - for (TransportedItemStack stack : items) { - if (stack.beltPosition > max) - continue; - if (stack.beltPosition > min) - return stack; - } - return null; - } - - public void read(CompoundNBT nbt) { - items.clear(); - nbt.getList("Items", NBT.TAG_COMPOUND) - .forEach(inbt -> items.add(TransportedItemStack.read((CompoundNBT) inbt))); - beltMovementPositive = nbt.getBoolean("PositiveOrder"); - } - - public CompoundNBT write() { - CompoundNBT nbt = new CompoundNBT(); - ListNBT itemsNBT = new ListNBT(); - items.forEach(stack -> itemsNBT.add(stack.serializeNBT())); - nbt.put("Items", itemsNBT); - nbt.putBoolean("PositiveOrder", beltMovementPositive); - return nbt; - } - - public void eject(TransportedItemStack stack) { - ItemStack ejected = stack.stack; - Vector3d outPos = BeltHelper.getVectorForOffset(belt, stack.beltPosition); - float movementSpeed = Math.max(Math.abs(belt.getBeltMovementSpeed()), 1 / 8f); - Vector3d outMotion = Vector3d.of(belt.getBeltChainDirection()).scale(movementSpeed) - .add(0, 1 / 8f, 0); - outPos = outPos.add(outMotion.normalize().scale(0.001)); - ItemEntity entity = new ItemEntity(belt.getWorld(), outPos.x, outPos.y + 6 / 16f, outPos.z, ejected); - entity.setMotion(outMotion); - entity.setDefaultPickupDelay(); - entity.velocityChanged = true; - belt.getWorld() - .addEntity(entity); - } - - public void ejectAll() { - items.forEach(this::eject); - items.clear(); - } - - public void applyToEachWithin(float position, float maxDistanceToPosition, - Function processFunction) { - boolean dirty = false; - for (TransportedItemStack transported : items) { - ItemStack stackBefore = transported.stack.copy(); - if (Math.abs(position - transported.beltPosition) >= maxDistanceToPosition) - continue; - TransportedResult result = processFunction.apply(transported); - if (result == null|| result.didntChangeFrom(stackBefore)) - continue; - - dirty = true; - if (result.hasHeldOutput()) { - TransportedItemStack held = result.getHeldOutput(); - held.beltPosition = ((int) position) + .5f - (beltMovementPositive ? 1 / 512f : -1 / 512f); - toInsert.add(held); - } - toInsert.addAll(result.getOutputs()); - toRemove.add(transported); - } - if (dirty) { - belt.markDirty(); - belt.sendData(); - } - } - - public List getTransportedItems() { - return items; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java deleted file mode 100644 index 9786a30c4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java +++ /dev/null @@ -1,212 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.transport; - -import static net.minecraft.entity.MoverType.SELF; -import static net.minecraft.util.Direction.AxisDirection.NEGATIVE; -import static net.minecraft.util.Direction.AxisDirection.POSITIVE; - -import java.util.List; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltPart; -import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.HangingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.Effects; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.World; - -public class BeltMovementHandler { - - public static class TransportedEntityInfo { - int ticksSinceLastCollision; - BlockPos lastCollidedPos; - BlockState lastCollidedState; - - public TransportedEntityInfo(BlockPos collision, BlockState belt) { - refresh(collision, belt); - } - - public void refresh(BlockPos collision, BlockState belt) { - ticksSinceLastCollision = 0; - lastCollidedPos = new BlockPos(collision).toImmutable(); - lastCollidedState = belt; - } - - public TransportedEntityInfo tick() { - ticksSinceLastCollision++; - return this; - } - - public int getTicksSinceLastCollision() { - return ticksSinceLastCollision; - } - } - - public static boolean canBeTransported(Entity entity) { - if (!entity.isAlive()) - return false; - if (entity instanceof PlayerEntity && ((PlayerEntity) entity).isSneaking()) - return false; - return true; - } - - public static void transportEntity(BeltTileEntity beltTe, Entity entityIn, TransportedEntityInfo info) { - BlockPos pos = info.lastCollidedPos; - World world = beltTe.getWorld(); - TileEntity te = world.getTileEntity(pos); - TileEntity tileEntityBelowPassenger = world.getTileEntity(entityIn.getBlockPos()); - BlockState blockState = info.lastCollidedState; - Direction movementFacing = - Direction.getFacingFromAxisDirection(blockState.get(BlockStateProperties.HORIZONTAL_FACING) - .getAxis(), beltTe.getSpeed() < 0 ? POSITIVE : NEGATIVE); - - boolean collidedWithBelt = te instanceof BeltTileEntity; - boolean betweenBelts = tileEntityBelowPassenger instanceof BeltTileEntity && tileEntityBelowPassenger != te; - - // Don't fight other Belts - if (!collidedWithBelt || betweenBelts) { - return; - } - - // Too slow - boolean notHorizontal = beltTe.getBlockState() - .get(BeltBlock.SLOPE) != BeltSlope.HORIZONTAL; - if (Math.abs(beltTe.getSpeed()) < 1) - return; - - // Not on top - if (entityIn.getY() - .25f < pos.getY()) - return; - - // Lock entities in place - boolean isPlayer = entityIn instanceof PlayerEntity; - if (entityIn instanceof LivingEntity && !isPlayer) { - ((LivingEntity) entityIn).addPotionEffect(new EffectInstance(Effects.SLOWNESS, 10, 1, false, false)); - } - - final Direction beltFacing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); - final BeltSlope slope = blockState.get(BeltBlock.SLOPE); - final Axis axis = beltFacing.getAxis(); - float movementSpeed = beltTe.getBeltMovementSpeed(); - final Direction movementDirection = Direction.getFacingFromAxis(axis == Axis.X ? NEGATIVE : POSITIVE, axis); - - Vector3i centeringDirection = Direction.getFacingFromAxis(POSITIVE, beltFacing.rotateY() - .getAxis()) - .getDirectionVec(); - Vector3d movement = Vector3d.of(movementDirection.getDirectionVec()) - .scale(movementSpeed); - - double diffCenter = - axis == Axis.Z ? (pos.getX() + .5f - entityIn.getX()) : (pos.getZ() + .5f - entityIn.getZ()); - if (Math.abs(diffCenter) > 48 / 64f) - return; - - BeltPart part = blockState.get(BeltBlock.PART); - float top = 13 / 16f; - boolean onSlope = notHorizontal && (part == BeltPart.MIDDLE || part == BeltPart.PULLEY - || part == (slope == BeltSlope.UPWARD ? BeltPart.END : BeltPart.START) && entityIn.getY() - pos.getY() < top - || part == (slope == BeltSlope.UPWARD ? BeltPart.START : BeltPart.END) - && entityIn.getY() - pos.getY() > top); - - boolean movingDown = onSlope && slope == (movementFacing == beltFacing ? BeltSlope.DOWNWARD : BeltSlope.UPWARD); - boolean movingUp = onSlope && slope == (movementFacing == beltFacing ? BeltSlope.UPWARD : BeltSlope.DOWNWARD); - - if (beltFacing.getAxis() == Axis.Z) { - boolean b = movingDown; - movingDown = movingUp; - movingUp = b; - } - - if (movingUp) - movement = movement.add(0, Math.abs(axis.getCoordinate(movement.x, movement.y, movement.z)), 0); - if (movingDown) - movement = movement.add(0, -Math.abs(axis.getCoordinate(movement.x, movement.y, movement.z)), 0); - - Vector3d centering = Vector3d.of(centeringDirection).scale(diffCenter * Math.min(Math.abs(movementSpeed), .1f) * 4); - float step = entityIn.stepHeight; - - if (!isPlayer) { - movement = movement.add(centering); - entityIn.stepHeight = 1; - } - - // Entity Collisions - if (Math.abs(movementSpeed) < .5f) { - Vector3d checkDistance = movement.normalize() - .scale(0.5); - AxisAlignedBB bb = entityIn.getBoundingBox(); - AxisAlignedBB checkBB = new AxisAlignedBB(bb.minX, bb.minY, bb.minZ, bb.maxX, bb.maxY, bb.maxZ); - checkBB = checkBB.offset(checkDistance) - .grow(-Math.abs(checkDistance.x), -Math.abs(checkDistance.y), -Math.abs(checkDistance.z)); - List list = world.getEntitiesWithinAABBExcludingEntity(entityIn, checkBB); - list.removeIf(e -> shouldIgnoreBlocking(entityIn, e)); - if (!list.isEmpty()) { - entityIn.setMotion(0, 0, 0); - info.ticksSinceLastCollision--; - return; - } - } - - entityIn.fallDistance = 0; - - if (movingUp) { - float minVelocity = .13f; - float yMovement = (float) -(Math.max(Math.abs(movement.y), minVelocity)); - entityIn.move(SELF, new Vector3d(0, yMovement, 0)); - entityIn.move(SELF, movement.mul(1, 0, 1)); - } else if (movingDown) { - entityIn.move(SELF, movement.mul(1, 0, 1)); - entityIn.move(SELF, movement.mul(0, 1, 0)); - } else { - entityIn.move(SELF, movement); - } - - if (!isPlayer) - entityIn.stepHeight = step; - - boolean movedPastEndingSlope = onSlope && (AllBlocks.BELT.has(world.getBlockState(entityIn.getBlockPos())) - || AllBlocks.BELT.has(world.getBlockState(entityIn.getBlockPos() - .down()))); - - if (movedPastEndingSlope && !movingDown && Math.abs(movementSpeed) > 0) - entityIn.setPosition(entityIn.getX(), entityIn.getY() + movement.y, entityIn.getZ()); - if (movedPastEndingSlope) { - entityIn.setMotion(movement); - entityIn.velocityChanged = true; - } - } - - public static boolean shouldIgnoreBlocking(Entity me, Entity other) { - if (other instanceof AbstractContraptionEntity) - return true; - if (other instanceof HangingEntity) - return true; - return isRidingOrBeingRiddenBy(me, other); - } - - public static boolean isRidingOrBeingRiddenBy(Entity me, Entity other) { - for (Entity entity : me.getPassengers()) { - if (entity.equals(other)) - return true; - if (isRidingOrBeingRiddenBy(entity, other)) - return true; - } - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java deleted file mode 100644 index 91b31e8f5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltTunnelInteractionHandler.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.transport; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; -import com.simibubi.create.content.contraptions.relays.belt.BeltSlope; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; -import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock; -import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.items.ItemHandlerHelper; - -public class BeltTunnelInteractionHandler { - - public static boolean flapTunnelsAndCheckIfStuck(BeltInventory beltInventory, TransportedItemStack current, - float nextOffset) { - - int currentSegment = (int) current.beltPosition; - int upcomingSegment = (int) nextOffset; - - Direction movementFacing = beltInventory.belt.getMovementFacing(); - if (!beltInventory.beltMovementPositive && nextOffset == 0) - upcomingSegment = -1; - if (currentSegment == upcomingSegment) - return false; - - if (stuckAtTunnel(beltInventory, upcomingSegment, current.stack, movementFacing)) { - current.beltPosition = currentSegment + (beltInventory.beltMovementPositive ? .99f : .01f); - return true; - } - - World world = beltInventory.belt.getWorld(); - boolean onServer = !world.isRemote || beltInventory.belt.isVirtual(); - boolean removed = false; - BeltTunnelTileEntity nextTunnel = getTunnelOnSegement(beltInventory, upcomingSegment); - - if (nextTunnel instanceof BrassTunnelTileEntity) { - BrassTunnelTileEntity brassTunnel = (BrassTunnelTileEntity) nextTunnel; - if (brassTunnel.hasDistributionBehaviour()) { - if (!brassTunnel.canTakeItems()) - return true; - if (onServer) { - brassTunnel.setStackToDistribute(current.stack); - current.stack = ItemStack.EMPTY; - beltInventory.belt.sendData(); - beltInventory.belt.markDirty(); - } - removed = true; - } - } else if (nextTunnel != null) { - BlockState blockState = nextTunnel.getBlockState(); - if (current.stack.getCount() > 1 && AllBlocks.ANDESITE_TUNNEL.has(blockState) - && BeltTunnelBlock.isJunction(blockState) - && movementFacing.getAxis() == blockState.get(BeltTunnelBlock.HORIZONTAL_AXIS)) { - - for (Direction d : Iterate.horizontalDirections) { - if (d.getAxis() == blockState.get(BeltTunnelBlock.HORIZONTAL_AXIS)) - continue; - if (!nextTunnel.flaps.containsKey(d)) - continue; - BlockPos outpos = nextTunnel.getPos() - .down() - .offset(d); - if (!world.isBlockPresent(outpos)) - return true; - DirectBeltInputBehaviour behaviour = - TileEntityBehaviour.get(world, outpos, DirectBeltInputBehaviour.TYPE); - if (behaviour == null) - continue; - if (!behaviour.canInsertFromSide(d)) - continue; - - ItemStack toinsert = ItemHandlerHelper.copyStackWithSize(current.stack, 1); - if (!behaviour.handleInsertion(toinsert, d, false).isEmpty()) - return true; - if (onServer) - flapTunnel(beltInventory, upcomingSegment, d, false); - - current.stack.shrink(1); - beltInventory.belt.sendData(); - if (current.stack.getCount() <= 1) - break; - } - } - } - - if (onServer) { - flapTunnel(beltInventory, currentSegment, movementFacing, false); - flapTunnel(beltInventory, upcomingSegment, movementFacing.getOpposite(), true); - } - - if (removed) - return true; - - return false; - } - - public static boolean stuckAtTunnel(BeltInventory beltInventory, int offset, ItemStack stack, - Direction movementDirection) { - BeltTileEntity belt = beltInventory.belt; - BlockPos pos = BeltHelper.getPositionForOffset(belt, offset) - .up(); - if (!(belt.getWorld() - .getBlockState(pos) - .getBlock() instanceof BrassTunnelBlock)) - return false; - TileEntity te = belt.getWorld() - .getTileEntity(pos); - if (te == null || !(te instanceof BrassTunnelTileEntity)) - return false; - BrassTunnelTileEntity tunnel = (BrassTunnelTileEntity) te; - return !tunnel.canInsert(movementDirection.getOpposite(), stack); - } - - public static void flapTunnel(BeltInventory beltInventory, int offset, Direction side, boolean inward) { - BeltTunnelTileEntity te = getTunnelOnSegement(beltInventory, offset); - if (te == null) - return; - te.flap(side, inward); - } - - protected static BeltTunnelTileEntity getTunnelOnSegement(BeltInventory beltInventory, int offset) { - BeltTileEntity belt = beltInventory.belt; - if (belt.getBlockState() - .get(BeltBlock.SLOPE) != BeltSlope.HORIZONTAL) - return null; - BlockPos pos = BeltHelper.getPositionForOffset(belt, offset) - .up(); - if (!(belt.getWorld() - .getBlockState(pos) - .getBlock() instanceof BeltTunnelBlock)) - return null; - TileEntity te = belt.getWorld() - .getTileEntity(pos); - if (te == null || !(te instanceof BeltTunnelTileEntity)) - return null; - return ((BeltTunnelTileEntity) te); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/ItemHandlerBeltSegment.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/ItemHandlerBeltSegment.java deleted file mode 100644 index 896051089..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/ItemHandlerBeltSegment.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.transport; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.items.IItemHandler; - -public class ItemHandlerBeltSegment implements IItemHandler { - - private final BeltInventory beltInventory; - int offset; - - public ItemHandlerBeltSegment(BeltInventory beltInventory, int offset) { - this.beltInventory = beltInventory; - this.offset = offset; - } - - @Override - public int getSlots() { - return 1; - } - - @Override - public ItemStack getStackInSlot(int slot) { - TransportedItemStack stackAtOffset = this.beltInventory.getStackAtOffset(offset); - if (stackAtOffset == null) - return ItemStack.EMPTY; - return stackAtOffset.stack; - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - if (this.beltInventory.canInsertAt(offset)) { - if (!simulate) { - TransportedItemStack newStack = new TransportedItemStack(stack); - newStack.insertedAt = offset; - newStack.beltPosition = offset + .5f + (beltInventory.beltMovementPositive ? -1 : 1) / 16f; - newStack.prevBeltPosition = newStack.beltPosition; - this.beltInventory.addItem(newStack); - this.beltInventory.belt.markDirty(); - this.beltInventory.belt.sendData(); - } - return ItemStack.EMPTY; - } - return stack; - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - TransportedItemStack transported = this.beltInventory.getStackAtOffset(offset); - if (transported == null) - return ItemStack.EMPTY; - - amount = Math.min(amount, transported.stack.getCount()); - ItemStack extracted = simulate ? transported.stack.copy().split(amount) : transported.stack.split(amount); - if (!simulate) { - this.beltInventory.belt.markDirty(); - this.beltInventory.belt.sendData(); - } - return extracted; - } - - @Override - public int getSlotLimit(int slot) { - return Math.min(getStackInSlot(slot).getMaxStackSize(), 64); - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - return true; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/TransportedItemStack.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/TransportedItemStack.java deleted file mode 100644 index 85cea6d9a..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/TransportedItemStack.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.belt.transport; - -import java.util.Random; - -import com.simibubi.create.content.contraptions.processing.InWorldProcessing; -import com.simibubi.create.content.contraptions.relays.belt.BeltHelper; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; - -public class TransportedItemStack implements Comparable { - - private static Random R = new Random(); - - public ItemStack stack; - public float beltPosition; - public float sideOffset; - public int angle; - public int insertedAt; - public Direction insertedFrom; - public boolean locked; - public boolean lockedExternally; - - public float prevBeltPosition; - public float prevSideOffset; - - public InWorldProcessing.Type processedBy; - public int processingTime; - - public TransportedItemStack(ItemStack stack) { - this.stack = stack; - boolean centered = BeltHelper.isItemUpright(stack); - angle = centered ? 180 : R.nextInt(360); - sideOffset = prevSideOffset = getTargetSideOffset(); - insertedFrom = Direction.UP; - } - - public float getTargetSideOffset() { - return (angle - 180) / (360 * 3f); - } - - @Override - public int compareTo(TransportedItemStack o) { - return beltPosition < o.beltPosition ? 1 : beltPosition > o.beltPosition ? -1 : 0; - } - - public TransportedItemStack getSimilar() { - TransportedItemStack copy = new TransportedItemStack(stack.copy()); - copy.beltPosition = beltPosition; - copy.insertedAt = insertedAt; - copy.insertedFrom = insertedFrom; - copy.prevBeltPosition = prevBeltPosition; - copy.prevSideOffset = prevSideOffset; - copy.processedBy = processedBy; - copy.processingTime = processingTime; - return copy; - } - - public TransportedItemStack copy() { - TransportedItemStack copy = getSimilar(); - copy.angle = angle; - copy.sideOffset = sideOffset; - return copy; - } - - public CompoundNBT serializeNBT() { - CompoundNBT nbt = new CompoundNBT(); - nbt.put("Item", stack.serializeNBT()); - nbt.putFloat("Pos", beltPosition); - nbt.putFloat("PrevPos", prevBeltPosition); - nbt.putFloat("Offset", sideOffset); - nbt.putFloat("PrevOffset", prevSideOffset); - nbt.putInt("InSegment", insertedAt); - nbt.putInt("Angle", angle); - nbt.putInt("InDirection", insertedFrom.getIndex()); - if (locked) - nbt.putBoolean("Locked", locked); - if (lockedExternally) - nbt.putBoolean("LockedExternally", lockedExternally); - return nbt; - } - - public static TransportedItemStack read(CompoundNBT nbt) { - TransportedItemStack stack = new TransportedItemStack(ItemStack.read(nbt.getCompound("Item"))); - stack.beltPosition = nbt.getFloat("Pos"); - stack.prevBeltPosition = nbt.getFloat("PrevPos"); - stack.sideOffset = nbt.getFloat("Offset"); - stack.prevSideOffset = nbt.getFloat("PrevOffset"); - stack.insertedAt = nbt.getInt("InSegment"); - stack.angle = nbt.getInt("Angle"); - stack.insertedFrom = Direction.byIndex(nbt.getInt("InDirection")); - stack.locked = nbt.getBoolean("Locked"); - stack.lockedExternally = nbt.getBoolean("LockedExternally"); - return stack; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java deleted file mode 100644 index ec3e1aff9..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/AbstractShaftBlock.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.elementary; - -import java.util.Optional; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; -import com.simibubi.create.content.contraptions.wrench.IWrenchableWithBracket; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.block.material.PushReaction; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -public abstract class AbstractShaftBlock extends RotatedPillarKineticBlock - implements IWaterLoggable, IWrenchableWithBracket { - - public AbstractShaftBlock(Properties properties) { - super(properties); - setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); - } - - @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - return IWrenchableWithBracket.super.onWrenched(state, context); - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.SIMPLE_KINETIC.create(); - } - - @Override - @SuppressWarnings("deprecation") - public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) { - if (state != newState && !isMoving) - removeBracket(world, pos, true).ifPresent(stack -> Block.spawnAsEntity(world, pos, stack)); - super.onReplaced(state, world, pos, newState, isMoving); - } - - // IRotate: - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(AXIS); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(AXIS); - } - - @Override - public FluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) - : Fluids.EMPTY.getDefaultState(); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(BlockStateProperties.WATERLOGGED); - super.fillStateContainer(builder); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, - IWorld world, BlockPos pos, BlockPos neighbourPos) { - if (state.get(BlockStateProperties.WATERLOGGED)) { - world.getPendingFluidTicks() - .scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); - } - return state; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - FluidState ifluidstate = context.getWorld() - .getFluidState(context.getPos()); - return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, - Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); - } - - @Override - public Optional removeBracket(IBlockReader world, BlockPos pos, boolean inOnReplacedContext) { - BracketedTileEntityBehaviour behaviour = TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); - if (behaviour == null) - return Optional.empty(); - BlockState bracket = behaviour.getBracket(); - behaviour.removeBracket(inOnReplacedContext); - if (bracket == Blocks.AIR.getDefaultState()) - return Optional.empty(); - return Optional.of(new ItemStack(bracket.getBlock())); - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java deleted file mode 100644 index 390a3ed1d..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedKineticBlockModel.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.elementary; - -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - -import com.jozufozu.flywheel.util.VirtualEmptyModelData; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; -import net.minecraftforge.client.model.BakedModelWrapper; -import net.minecraftforge.client.model.data.IModelData; -import net.minecraftforge.client.model.data.ModelDataMap; -import net.minecraftforge.client.model.data.ModelProperty; - -public class BracketedKineticBlockModel extends BakedModelWrapper { - - private static final ModelProperty BRACKET_PROPERTY = new ModelProperty<>(); - - public BracketedKineticBlockModel(IBakedModel template) { - super(template); - } - - @Override - public IModelData getModelData(IBlockDisplayReader world, BlockPos pos, BlockState state, IModelData tileData) { - if (tileData == VirtualEmptyModelData.INSTANCE) - return tileData; - BracketedModelData data = new BracketedModelData(); - BracketedTileEntityBehaviour attachmentBehaviour = - TileEntityBehaviour.get(world, pos, BracketedTileEntityBehaviour.TYPE); - if (attachmentBehaviour != null) - data.putBracket(attachmentBehaviour.getBracket()); - return new ModelDataMap.Builder().withInitial(BRACKET_PROPERTY, data) - .build(); - } - - @Override - public List getQuads(BlockState state, Direction side, Random rand, IModelData data) { - if (data instanceof ModelDataMap) { - List quads = new ArrayList<>(); - ModelDataMap modelDataMap = (ModelDataMap) data; - if (modelDataMap.hasProperty(BRACKET_PROPERTY)) { - quads = new ArrayList<>(quads); - addQuads(quads, state, side, rand, modelDataMap, modelDataMap.getData(BRACKET_PROPERTY)); - } - return quads; - } - return super.getQuads(state, side, rand, data); - } - - private void addQuads(List quads, BlockState state, Direction side, Random rand, IModelData data, - BracketedModelData pipeData) { - IBakedModel bracket = pipeData.getBracket(); - if (bracket == null) - return; - quads.addAll(bracket.getQuads(state, side, rand, data)); - } - - private class BracketedModelData { - IBakedModel bracket; - - public void putBracket(BlockState state) { - this.bracket = Minecraft.getInstance() - .getBlockRendererDispatcher() - .getModelForState(state); - } - - public IBakedModel getBracket() { - return bracket; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java deleted file mode 100644 index c926acd2f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/BracketedTileEntityBehaviour.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.elementary; - -import java.util.Optional; -import java.util.function.Function; -import java.util.function.Predicate; - -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.advancement.ITriggerable; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.world.World; - -public class BracketedTileEntityBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - - private Optional bracket; - private boolean reRender; - - private Predicate pred; - private Function trigger; - - public BracketedTileEntityBehaviour(SmartTileEntity te) { - this(te, state -> true); - } - - public BracketedTileEntityBehaviour(SmartTileEntity te, Predicate pred) { - super(te); - this.pred = pred; - bracket = Optional.empty(); - } - - public BracketedTileEntityBehaviour withTrigger(Function trigger) { - this.trigger = trigger; - return this; - } - - @Override - public BehaviourType getType() { - return TYPE; - } - - public void applyBracket(BlockState state) { - this.bracket = Optional.of(state); - reRender = true; - tileEntity.notifyUpdate(); - } - - public void triggerAdvancements(World world, PlayerEntity player, BlockState state) { - if (trigger == null) - return; - AllTriggers.triggerFor(trigger.apply(state), player); - } - - public void removeBracket(boolean inOnReplacedContext) { - World world = getWorld(); - if (!world.isRemote) - world.playEvent(2001, getPos(), Block.getStateId(getBracket())); - this.bracket = Optional.empty(); - reRender = true; - if (inOnReplacedContext) - tileEntity.sendData(); - else - tileEntity.notifyUpdate(); - } - - public boolean isBracketPresent() { - return getBracket() != Blocks.AIR.getDefaultState(); - } - - public BlockState getBracket() { - return bracket.orElse(Blocks.AIR.getDefaultState()); - } - - @Override - public ItemRequirement getRequiredItems() { - return ItemRequirement.of(getBracket(), null); - } - - @Override - public boolean isSafeNBT() { - return true; - } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - bracket.ifPresent(p -> nbt.put("Bracket", NBTUtil.writeBlockState(p))); - if (clientPacket && reRender) { - NBTHelper.putMarker(nbt, "Redraw"); - reRender = false; - } - super.write(nbt, clientPacket); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - bracket = Optional.empty(); - if (nbt.contains("Bracket")) - bracket = Optional.of(NBTUtil.readBlockState(nbt.getCompound("Bracket"))); - if (clientPacket && nbt.contains("Redraw")) - getWorld().notifyBlockUpdate(getPos(), tileEntity.getBlockState(), tileEntity.getBlockState(), 16); - super.read(nbt, clientPacket); - } - - public boolean canHaveBracket() { - return pred.test(tileEntity.getBlockState()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java deleted file mode 100644 index 7662c10f5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogWheelBlock.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.elementary; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.relays.advanced.SpeedControllerBlock; -import com.simibubi.create.foundation.utility.Iterate; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -@SuppressWarnings("deprecation") -public class CogWheelBlock extends AbstractShaftBlock implements ICogWheel { - boolean isLarge; - - protected CogWheelBlock(boolean large, Properties properties) { - super(properties); - isLarge = large; - } - - public static CogWheelBlock small(Properties properties) { - return new CogWheelBlock(false, properties); - } - - public static CogWheelBlock large(Properties properties) { - return new CogWheelBlock(true, properties); - } - - @Override - public boolean isLargeCog() { - return isLarge; - } - - @Override - public boolean isSmallCog() { - return !isLarge; - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return (isLarge ? AllShapes.LARGE_GEAR : AllShapes.SMALL_GEAR).get(state.get(AXIS)); - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader worldIn, BlockPos pos) { - return isValidCogwheelPosition(ICogWheel.isLargeCog(state), worldIn, pos, state.get(AXIS)); - } - - public static boolean isValidCogwheelPosition(boolean large, IWorldReader worldIn, BlockPos pos, Axis cogAxis) { - for (Direction facing : Iterate.directions) { - if (facing.getAxis() == cogAxis) - continue; - - BlockPos offsetPos = pos.offset(facing); - BlockState blockState = worldIn.getBlockState(offsetPos); - if (blockState.contains(AXIS) && facing.getAxis() == blockState.get(AXIS)) - continue; - - if (ICogWheel.isLargeCog(blockState) || large && ICogWheel.isSmallCog(blockState)) - return false; - } - return true; - } - - protected Axis getAxisForPlacement(BlockItemUseContext context) { - if (context.getPlayer() != null && context.getPlayer().isSneaking()) - return context.getFace().getAxis(); - - World world = context.getWorld(); - BlockState stateBelow = world.getBlockState(context.getPos().down()); - - if (AllBlocks.ROTATION_SPEED_CONTROLLER.has(stateBelow) && isLargeCog()) - return stateBelow.get(SpeedControllerBlock.HORIZONTAL_AXIS) == Axis.X ? Axis.Z : Axis.X; - - BlockPos placedOnPos = context.getPos().offset(context.getFace().getOpposite()); - BlockState placedAgainst = world.getBlockState(placedOnPos); - - Block block = placedAgainst.getBlock(); - if (ICogWheel.isSmallCog(placedAgainst)) - return ((IRotate) block).getRotationAxis(placedAgainst); - - Axis preferredAxis = getPreferredAxis(context); - return preferredAxis != null ? preferredAxis : context.getFace().getAxis(); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - boolean shouldWaterlog = context.getWorld().getFluidState(context.getPos()).getFluid() == Fluids.WATER; - return this.getDefaultState() - .with(AXIS, getAxisForPlacement(context)) - .with(BlockStateProperties.WATERLOGGED, shouldWaterlog); - } - - @Override - public float getParticleTargetRadius() { - return isLargeCog() ? 1.125f : .65f; - } - - @Override - public float getParticleInitialRadius() { - return isLargeCog() ? 1f : .75f; - } - - @Override - public boolean isDedicatedCogWheel() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java deleted file mode 100644 index a1e96d272..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/CogwheelBlockItem.java +++ /dev/null @@ -1,338 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.elementary; - -import static com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock.AXIS; - -import java.util.List; -import java.util.function.Predicate; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.placement.IPlacementHelper; -import com.simibubi.create.foundation.utility.placement.PlacementHelpers; -import com.simibubi.create.foundation.utility.placement.PlacementOffset; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.World; - -public class CogwheelBlockItem extends BlockItem { - - boolean large; - - private final int placementHelperId; - private final int integratedCogHelperId; - - public CogwheelBlockItem(CogWheelBlock block, Properties builder) { - super(block, builder); - large = block.isLarge; - - placementHelperId = PlacementHelpers.register(large ? new LargeCogHelper() : new SmallCogHelper()); - integratedCogHelperId = PlacementHelpers.register(large ? new IntegratedLargeCogHelper() : new IntegratedSmallCogHelper()); - } - - @Override - public ActionResultType onItemUseFirst(ItemStack stack, ItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - BlockState state = world.getBlockState(pos); - - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); - PlayerEntity player = context.getPlayer(); - BlockRayTraceResult ray = new BlockRayTraceResult(context.getHitVec(), context.getFace(), pos, true); - if (helper.matchesState(state) && player != null && !player.isSneaking()) { - return helper.getOffset(player, world, state, pos, ray).placeInWorld(world, this, player, context.getHand(), ray); - } - - if (integratedCogHelperId != -1) { - helper = PlacementHelpers.get(integratedCogHelperId); - - if (helper.matchesState(state) && player != null && !player.isSneaking()) { - return helper.getOffset(player, world, state, pos, ray).placeInWorld(world, this, player, context.getHand(), ray); - } - } - - return super.onItemUseFirst(stack, context); - } - - @Override - // Trigger cogwheel criterion - protected boolean placeBlock(BlockItemUseContext context, BlockState state) { - triggerShiftingGearsAdvancement(context.getWorld(), context.getPos(), state, context.getPlayer()); - return super.placeBlock(context, state); - } - - protected void triggerShiftingGearsAdvancement(World world, BlockPos pos, BlockState state, PlayerEntity player) { - if (world.isRemote || player == null) - return; - - Axis axis = state.get(CogWheelBlock.AXIS); - for (Axis perpendicular1 : Iterate.axes) { - if (perpendicular1 == axis) - continue; - Direction d1 = Direction.getFacingFromAxis(AxisDirection.POSITIVE, perpendicular1); - for (Axis perpendicular2 : Iterate.axes) { - if (perpendicular1 == perpendicular2) - continue; - if (axis == perpendicular2) - continue; - Direction d2 = Direction.getFacingFromAxis(AxisDirection.POSITIVE, perpendicular2); - for (int offset1 : Iterate.positiveAndNegative) { - for (int offset2 : Iterate.positiveAndNegative) { - BlockPos connectedPos = pos.offset(d1, offset1) - .offset(d2, offset2); - BlockState blockState = world.getBlockState(connectedPos); - if (!(blockState.getBlock() instanceof CogWheelBlock)) - continue; - if (blockState.get(CogWheelBlock.AXIS) != axis) - continue; - if (ICogWheel.isLargeCog(blockState) == large) - continue; - AllTriggers.triggerFor(AllTriggers.SHIFTING_GEARS, player); - } - } - } - } - } - - @MethodsReturnNonnullByDefault - private static class SmallCogHelper extends DiagonalCogHelper { - - @Override - public Predicate getItemPredicate() { - return ((Predicate) ICogWheel::isSmallCogItem).and(ICogWheel::isDedicatedCogItem); - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - if (hitOnShaft(state, ray)) - return PlacementOffset.fail(); - - if (!((CogWheelBlock) state.getBlock()).isLarge) { - List directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(AXIS)); - - for (Direction dir : directions) { - BlockPos newPos = pos.offset(dir); - - if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, state.get(AXIS))) - continue; - - if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) - continue; - - return PlacementOffset.success(newPos, s -> s.with(AXIS, state.get(AXIS))); - - } - - return PlacementOffset.fail(); - } - - return super.getOffset(player, world, state, pos, ray); - } - } - - @MethodsReturnNonnullByDefault - private static class LargeCogHelper extends DiagonalCogHelper { - - @Override - public Predicate getItemPredicate() { - return ((Predicate) ICogWheel::isLargeCogItem).and(ICogWheel::isDedicatedCogItem); - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - if (hitOnShaft(state, ray)) - return PlacementOffset.fail(); - - if (((CogWheelBlock) state.getBlock()).isLarge) { - Direction side = IPlacementHelper.orderedByDistanceOnlyAxis(pos, ray.getHitVec(), state.get(AXIS)) - .get(0); - List directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(AXIS)); - for (Direction dir : directions) { - BlockPos newPos = pos.offset(dir) - .offset(side); - - if (!CogWheelBlock.isValidCogwheelPosition(true, world, newPos, dir.getAxis())) - continue; - - if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) - continue; - - return PlacementOffset.success(newPos, s -> s.with(AXIS, dir.getAxis())); - } - - return PlacementOffset.fail(); - } - - return super.getOffset(player, world, state, pos, ray); - } - } - - @MethodsReturnNonnullByDefault - public abstract static class DiagonalCogHelper implements IPlacementHelper { - - @Override - public Predicate getStatePredicate() { - return s -> s.getBlock() instanceof CogWheelBlock; - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - // diagonal gears of different size - Direction closest = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), state.get(AXIS)) - .get(0); - List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), - state.get(AXIS), d -> d.getAxis() != closest.getAxis()); - - for (Direction dir : directions) { - BlockPos newPos = pos.offset(dir) - .offset(closest); - if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) - continue; - - if (!CogWheelBlock.isValidCogwheelPosition(ICogWheel.isLargeCog(state), world, newPos, state.get(AXIS))) - continue; - - return PlacementOffset.success(newPos, s -> s.with(AXIS, state.get(AXIS))); - } - - return PlacementOffset.fail(); - } - - protected boolean hitOnShaft(BlockState state, BlockRayTraceResult ray) { - return AllShapes.SIX_VOXEL_POLE.get(state.get(AXIS)) - .getBoundingBox() - .grow(0.001) - .contains(ray.getHitVec() - .subtract(ray.getHitVec() - .align(Iterate.axisSet))); - } - } - - @MethodsReturnNonnullByDefault - public static class IntegratedLargeCogHelper implements IPlacementHelper { - - @Override - public Predicate getItemPredicate() { - return ((Predicate) ICogWheel::isLargeCogItem).and(ICogWheel::isDedicatedCogItem); - } - - @Override - public Predicate getStatePredicate() { - return s -> !ICogWheel.isDedicatedCogWheel(s.getBlock()) && ICogWheel.isSmallCog(s); - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - Direction face = ray.getFace(); - Axis newAxis; - - if (state.contains(HorizontalKineticBlock.HORIZONTAL_FACING)) - newAxis = state.get(HorizontalKineticBlock.HORIZONTAL_FACING) - .getAxis(); - else if (state.contains(DirectionalKineticBlock.FACING)) - newAxis = state.get(DirectionalKineticBlock.FACING) - .getAxis(); - else - newAxis = Axis.Y; - - if (face.getAxis() == newAxis) - return PlacementOffset.fail(); - - List directions = - IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), face.getAxis(), newAxis); - - for (Direction d : directions) { - BlockPos newPos = pos.offset(face) - .offset(d); - - if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) - continue; - - if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, newAxis)) - return PlacementOffset.fail(); - - return PlacementOffset.success(newPos, s -> s.with(CogWheelBlock.AXIS, newAxis)); - } - - return PlacementOffset.fail(); - } - - } - - @MethodsReturnNonnullByDefault - public static class IntegratedSmallCogHelper implements IPlacementHelper { - - @Override - public Predicate getItemPredicate() { - return ((Predicate) ICogWheel::isSmallCogItem).and(ICogWheel::isDedicatedCogItem); - } - - @Override - public Predicate getStatePredicate() { - return s -> !ICogWheel.isDedicatedCogWheel(s.getBlock()) && ICogWheel.isSmallCog(s); - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - Direction face = ray.getFace(); - Axis newAxis; - - if (state.contains(HorizontalKineticBlock.HORIZONTAL_FACING)) - newAxis = state.get(HorizontalKineticBlock.HORIZONTAL_FACING) - .getAxis(); - else if (state.contains(DirectionalKineticBlock.FACING)) - newAxis = state.get(DirectionalKineticBlock.FACING) - .getAxis(); - else - newAxis = Axis.Y; - - if (face.getAxis() == newAxis) - return PlacementOffset.fail(); - - List directions = IPlacementHelper.orderedByDistanceExceptAxis(pos, ray.getHitVec(), newAxis); - - for (Direction d : directions) { - BlockPos newPos = pos.offset(d); - - if (!world.getBlockState(newPos) - .getMaterial() - .isReplaceable()) - continue; - - if (!CogWheelBlock.isValidCogwheelPosition(false, world, newPos, newAxis)) - return PlacementOffset.fail(); - - return PlacementOffset.success() - .at(newPos) - .withTransform(s -> s.with(CogWheelBlock.AXIS, newAxis)); - } - - return PlacementOffset.fail(); - } - - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ICogWheel.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ICogWheel.java deleted file mode 100644 index 079987ad8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ICogWheel.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.elementary; - -import com.simibubi.create.content.contraptions.base.IRotate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public interface ICogWheel extends IRotate { - - static boolean isSmallCog(BlockState state) { - return isSmallCog(state.getBlock()); - } - - static boolean isLargeCog(BlockState state) { - return isLargeCog(state.getBlock()); - } - - static boolean isSmallCog(Block block) { - return block instanceof ICogWheel && ((ICogWheel) block).isSmallCog(); - } - - static boolean isLargeCog(Block block) { - return block instanceof ICogWheel && ((ICogWheel) block).isLargeCog(); - } - - static boolean isDedicatedCogWheel(Block block) { - return block instanceof ICogWheel && ((ICogWheel) block).isDedicatedCogWheel(); - } - - static boolean isDedicatedCogItem(ItemStack test) { - Item item = test.getItem(); - if (!(item instanceof BlockItem)) - return false; - return isDedicatedCogWheel(((BlockItem) item).getBlock()); - } - - static boolean isSmallCogItem(ItemStack test) { - Item item = test.getItem(); - if (!(item instanceof BlockItem)) - return false; - return isSmallCog(((BlockItem) item).getBlock()); - } - - static boolean isLargeCogItem(ItemStack test) { - Item item = test.getItem(); - if (!(item instanceof BlockItem)) - return false; - return isLargeCog(((BlockItem) item).getBlock()); - } - - default boolean isLargeCog() { - return false; - } - - default boolean isSmallCog() { - return !isLargeCog(); - } - - default boolean isDedicatedCogWheel() { - return false; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java deleted file mode 100644 index 51c02d3af..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/ShaftBlock.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.elementary; - -import java.util.function.Predicate; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.utility.placement.IPlacementHelper; -import com.simibubi.create.foundation.utility.placement.PlacementHelpers; -import com.simibubi.create.foundation.utility.placement.util.PoleHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class ShaftBlock extends AbstractShaftBlock { - - private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); - - public ShaftBlock(Properties properties) { - super(properties); - } - - public static boolean isShaft(BlockState state) { - return AllBlocks.SHAFT.has(state); - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return AllShapes.SIX_VOXEL_POLE.get(state.get(AXIS)); - } - - @Override - public float getParticleTargetRadius() { - return .35f; - } - - @Override - public float getParticleInitialRadius() { - return .125f; - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult ray) { - if (player.isSneaking() || !player.isAllowEdit()) - return ActionResultType.PASS; - - ItemStack heldItem = player.getHeldItem(hand); - for (EncasedShaftBlock encasedShaft : new EncasedShaftBlock[] { AllBlocks.ANDESITE_ENCASED_SHAFT.get(), - AllBlocks.BRASS_ENCASED_SHAFT.get() }) { - - if (!encasedShaft.getCasing() - .isIn(heldItem)) - continue; - - if (world.isRemote) - return ActionResultType.SUCCESS; - - AllTriggers.triggerFor(AllTriggers.CASING_SHAFT, player); - KineticTileEntity.switchToBlockState(world, pos, encasedShaft.getDefaultState() - .with(AXIS, state.get(AXIS))); - return ActionResultType.SUCCESS; - } - - IPlacementHelper helper = PlacementHelpers.get(placementHelperId); - if (helper.matchesItem(heldItem)) - return helper.getOffset(player, world, state, pos, ray).placeInWorld(world, (BlockItem) heldItem.getItem(), player, hand, ray); - - return ActionResultType.PASS; - } - - @MethodsReturnNonnullByDefault - private static class PlacementHelper extends PoleHelper { - //used for extending a shaft in its axis, like the piston poles. works with shafts and cogs - - private PlacementHelper(){ - super( - state -> state.getBlock() instanceof AbstractShaftBlock, - state -> state.get(AXIS), - AXIS - ); - } - - @Override - public Predicate getItemPredicate() { - return i -> i.getItem() instanceof BlockItem && ((BlockItem) i.getItem()).getBlock() instanceof AbstractShaftBlock; - } - - @Override - public Predicate getStatePredicate() { - return AllBlocks.SHAFT::has; - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java deleted file mode 100644 index 5c651a8a7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/elementary/SimpleKineticTileEntity.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.elementary; - -import java.util.List; - -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; - -public class SimpleKineticTileEntity extends KineticTileEntity { - - public SimpleKineticTileEntity(TileEntityType type) { - super(type); - } - - @Override - public void addBehaviours(List behaviours) { - behaviours.add(new BracketedTileEntityBehaviour(this, state -> state.getBlock() instanceof AbstractShaftBlock) - .withTrigger(state -> AllTriggers.BRACKET_APPLY_TRIGGER.constructTriggerFor(state.getBlock()))); - super.addBehaviours(behaviours); - } - - @Override - public AxisAlignedBB makeRenderBoundingBox() { - return new AxisAlignedBB(pos).grow(1); - } - - @Override - public List addPropagationLocations(IRotate block, BlockState state, List neighbours) { - if (!ICogWheel.isLargeCog(state)) - return super.addPropagationLocations(block, state, neighbours); - - BlockPos.getAllInBox(new BlockPos(-1, -1, -1), new BlockPos(1, 1, 1)) - .forEach(offset -> { - if (offset.distanceSq(0, 0, 0, false) == BlockPos.ZERO.distanceSq(1, 1, 0, false)) - neighbours.add(pos.add(offset)); - }); - return neighbours; - } - - @Override - protected boolean isNoisy() { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AbstractEncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AbstractEncasedShaftBlock.java deleted file mode 100644 index df29e6e41..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AbstractEncasedShaftBlock.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.material.PushReaction; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.StateContainer; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorldReader; - -@MethodsReturnNonnullByDefault -public abstract class AbstractEncasedShaftBlock extends RotatedPillarKineticBlock { - public AbstractEncasedShaftBlock(Properties properties) { - super(properties); - } - - @Override - protected void fillStateContainer(StateContainer.Builder builder) { - super.fillStateContainer(builder); - } - - @Override - public boolean shouldCheckWeakPower(BlockState state, IWorldReader world, BlockPos pos, Direction side) { - return false; - } - - @Override - public PushReaction getPushReaction(@Nullable BlockState state) { - return PushReaction.NORMAL; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - if (context.getPlayer() != null && context.getPlayer() - .isSneaking()) - return super.getStateForPlacement(context); - Direction.Axis preferredAxis = getPreferredAxis(context); - return this.getDefaultState() - .with(AXIS, preferredAxis == null ? context.getNearestLookingDirection() - .getAxis() : preferredAxis); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(AXIS); - } - - @Override - public Direction.Axis getRotationAxis(BlockState state) { - return state.get(AXIS); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyBlock.java deleted file mode 100644 index 5ecd6ee43..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyBlock.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class AdjustablePulleyBlock extends EncasedBeltBlock implements ITE { - - public static BooleanProperty POWERED = BlockStateProperties.POWERED; - - public AdjustablePulleyBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(POWERED, false)); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(POWERED)); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ADJUSTABLE_PULLEY.create(); - } - - @Override - public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) { - super.onBlockAdded(state, worldIn, pos, oldState, isMoving); - if (oldState.getBlock() == state.getBlock()) - return; - withTileEntityDo(worldIn, pos, AdjustablePulleyTileEntity::neighborChanged); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - return super.getStateForPlacement(context).with(POWERED, context.getWorld() - .isBlockPowered(context.getPos())); - } - - @Override - protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) { - return super.areStatesKineticallyEquivalent(oldState, newState) - && oldState.get(POWERED) == newState.get(POWERED); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - withTileEntityDo(worldIn, pos, AdjustablePulleyTileEntity::neighborChanged); - - boolean previouslyPowered = state.get(POWERED); - if (previouslyPowered != worldIn.isBlockPowered(pos)) - worldIn.setBlockState(pos, state.cycle(POWERED), 18); - } - - @Override - public Class getTileEntityClass() { - return AdjustablePulleyTileEntity.class; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyTileEntity.java deleted file mode 100644 index 46c9d41de..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/AdjustablePulleyTileEntity.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; - -public class AdjustablePulleyTileEntity extends KineticTileEntity { - - int signal; - boolean signalChanged; - - public AdjustablePulleyTileEntity(TileEntityType type) { - super(type); - signal = 0; - setLazyTickRate(40); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putInt("Signal", signal); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - signal = compound.getInt("Signal"); - super.fromTag(state, compound, clientPacket); - } - - public float getModifier() { - return getModifierForSignal(signal); - } - - public void neighborChanged() { - if (!hasWorld()) - return; - int power = world.getRedstonePowerFromNeighbors(pos); - if (power != signal) - signalChanged = true; - } - - @Override - public void lazyTick() { - super.lazyTick(); - neighborChanged(); - } - - @Override - public void tick() { - super.tick(); - if (world.isRemote) - return; - if (signalChanged) { - signalChanged = false; - analogSignalChanged(world.getRedstonePowerFromNeighbors(pos)); - } - } - - protected void analogSignalChanged(int newSignal) { - detachKinetics(); - removeSource(); - signal = newSignal; - attachKinetics(); - } - - protected float getModifierForSignal(int newPower) { - if (newPower == 0) - return 1; - return 1 + ((newPower + 1) / 16f); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/CasingConnectivity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/CasingConnectivity.java deleted file mode 100644 index 936b624d4..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/CasingConnectivity.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import java.util.IdentityHashMap; -import java.util.Map; -import java.util.function.BiPredicate; - -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; - -public class CasingConnectivity { - - private Map entries; - - public CasingConnectivity() { - entries = new IdentityHashMap<>(); - } - - public Entry get(BlockState blockState) { - return entries.get(blockState.getBlock()); - } - - public void makeCasing(Block block, CTSpriteShiftEntry casing) { - new Entry(block, casing, (s, f) -> true).register(); - } - - public void make(Block block, CTSpriteShiftEntry casing) { - new Entry(block, casing, (s, f) -> true).register(); - } - - public void make(Block block, CTSpriteShiftEntry casing, BiPredicate predicate) { - new Entry(block, casing, predicate).register(); - } - - public class Entry { - - private Block block; - private CTSpriteShiftEntry casing; - private BiPredicate predicate; - - private Entry(Block block, CTSpriteShiftEntry casing, BiPredicate predicate) { - this.block = block; - this.casing = casing; - this.predicate = predicate; - } - - public CTSpriteShiftEntry getCasing() { - return casing; - } - - public boolean isSideValid(BlockState state, Direction face) { - return predicate.test(state, face); - } - - public void register() { - entries.put(block, this); - } - - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchBlock.java deleted file mode 100644 index 100a6be02..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchBlock.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.AllTileEntities; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class ClutchBlock extends GearshiftBlock { - - public ClutchBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.CLUTCH.create(); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - boolean previouslyPowered = state.get(POWERED); - if (previouslyPowered != worldIn.isBlockPowered(pos)) { - worldIn.setBlockState(pos, state.cycle(POWERED), 2 | 16); - detachKinetics(worldIn, pos, previouslyPowered); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchTileEntity.java deleted file mode 100644 index 34f40bf2b..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ClutchTileEntity.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; - -public class ClutchTileEntity extends SplitShaftTileEntity { - - public ClutchTileEntity(TileEntityType type) { - super(type); - } - - @Override - public float getRotationSpeedModifier(Direction face) { - if (hasSource()) { - if (face != getSourceFacing() && getBlockState().get(BlockStateProperties.POWERED)) - return 0; - } - return 1; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/DirectionalShaftHalvesTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/DirectionalShaftHalvesTileEntity.java deleted file mode 100644 index 2c9f672ec..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/DirectionalShaftHalvesTileEntity.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; - -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class DirectionalShaftHalvesTileEntity extends KineticTileEntity { - - public DirectionalShaftHalvesTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - public Direction getSourceFacing() { - BlockPos localSource = source.subtract(getPos()); - return Direction.getFacingFromVector(localSource.getX(), localSource.getY(), localSource.getZ()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltBlock.java deleted file mode 100644 index d74bd43df..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltBlock.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.material.PushReaction; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.EnumProperty; -import net.minecraft.state.Property; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; - -public class EncasedBeltBlock extends RotatedPillarKineticBlock { - - public static final Property PART = EnumProperty.create("part", Part.class); - public static final BooleanProperty CONNECTED_ALONG_FIRST_COORDINATE = - DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE; - - public EncasedBeltBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(PART, Part.NONE)); - } - - @Override - public boolean shouldCheckWeakPower(BlockState state, IWorldReader world, BlockPos pos, Direction side) { - return false; - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.NORMAL; - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(PART, CONNECTED_ALONG_FIRST_COORDINATE)); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - Axis placedAxis = context.getNearestLookingDirection() - .getAxis(); - Axis axis = context.getPlayer() != null && context.getPlayer() - .isSneaking() ? placedAxis : getPreferredAxis(context); - if (axis == null) - axis = placedAxis; - - BlockState state = getDefaultState().with(AXIS, axis); - for (Direction facing : Iterate.directions) { - if (facing.getAxis() == axis) - continue; - BlockPos pos = context.getPos(); - BlockPos offset = pos.offset(facing); - state = updatePostPlacement(state, facing, context.getWorld() - .getBlockState(offset), context.getWorld(), pos, offset); - } - return state; - } - - @Override - public BlockState updatePostPlacement(BlockState stateIn, Direction face, BlockState neighbour, IWorld worldIn, - BlockPos currentPos, BlockPos facingPos) { - Part part = stateIn.get(PART); - Axis axis = stateIn.get(AXIS); - boolean connectionAlongFirst = stateIn.get(CONNECTED_ALONG_FIRST_COORDINATE); - Axis connectionAxis = - connectionAlongFirst ? (axis == Axis.X ? Axis.Y : Axis.X) : (axis == Axis.Z ? Axis.Y : Axis.Z); - - Axis faceAxis = face.getAxis(); - boolean facingAlongFirst = axis == Axis.X ? faceAxis.isVertical() : faceAxis == Axis.X; - boolean positive = face.getAxisDirection() == AxisDirection.POSITIVE; - - if (axis == faceAxis) - return stateIn; - - if (!(neighbour.getBlock() instanceof EncasedBeltBlock)) { - if (facingAlongFirst != connectionAlongFirst || part == Part.NONE) - return stateIn; - if (part == Part.MIDDLE) - return stateIn.with(PART, positive ? Part.END : Part.START); - if ((part == Part.START) == positive) - return stateIn.with(PART, Part.NONE); - return stateIn; - } - - Part otherPart = neighbour.get(PART); - Axis otherAxis = neighbour.get(AXIS); - boolean otherConnection = neighbour.get(CONNECTED_ALONG_FIRST_COORDINATE); - Axis otherConnectionAxis = - otherConnection ? (otherAxis == Axis.X ? Axis.Y : Axis.X) : (otherAxis == Axis.Z ? Axis.Y : Axis.Z); - - if (neighbour.get(AXIS) == faceAxis) - return stateIn; - if (otherPart != Part.NONE && otherConnectionAxis != faceAxis) - return stateIn; - - if (part == Part.NONE) { - part = positive ? Part.START : Part.END; - connectionAlongFirst = axis == Axis.X ? faceAxis.isVertical() : faceAxis == Axis.X; - } else if (connectionAxis != faceAxis) { - return stateIn; - } - - if ((part == Part.START) != positive) - part = Part.MIDDLE; - - return stateIn.with(PART, part) - .with(CONNECTED_ALONG_FIRST_COORDINATE, connectionAlongFirst); - } - - @Override - public BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) { - if (originalState.get(PART) == Part.NONE) - return super.getRotatedBlockState(originalState, targetedFace); - return super.getRotatedBlockState(originalState, - Direction.getFacingFromAxis(AxisDirection.POSITIVE, getConnectionAxis(originalState))); - } - - @Override - public BlockState updateAfterWrenched(BlockState newState, ItemUseContext context) { -// Blocks.AIR.getDefaultState() -// .updateNeighbors(context.getWorld(), context.getPos(), 1); - Axis axis = newState.get(AXIS); - newState = getDefaultState().with(AXIS, axis); - if (newState.contains(BlockStateProperties.POWERED)) - newState = newState.with(BlockStateProperties.POWERED, context.getWorld() - .isBlockPowered(context.getPos())); - for (Direction facing : Iterate.directions) { - if (facing.getAxis() == axis) - continue; - BlockPos pos = context.getPos(); - BlockPos offset = pos.offset(facing); - newState = updatePostPlacement(newState, facing, context.getWorld() - .getBlockState(offset), context.getWorld(), pos, offset); - } -// newState.updateNeighbors(context.getWorld(), context.getPos(), 1 | 2); - return newState; - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() == state.get(AXIS); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(AXIS); - } - - public static boolean areBlocksConnected(BlockState state, BlockState other, Direction facing) { - Part part = state.get(PART); - Axis connectionAxis = getConnectionAxis(state); - Axis otherConnectionAxis = getConnectionAxis(other); - - if (otherConnectionAxis != connectionAxis) - return false; - if (facing.getAxis() != connectionAxis) - return false; - if (facing.getAxisDirection() == AxisDirection.POSITIVE && (part == Part.MIDDLE || part == Part.START)) - return true; - if (facing.getAxisDirection() == AxisDirection.NEGATIVE && (part == Part.MIDDLE || part == Part.END)) - return true; - - return false; - } - - protected static Axis getConnectionAxis(BlockState state) { - Axis axis = state.get(AXIS); - boolean connectionAlongFirst = state.get(CONNECTED_ALONG_FIRST_COORDINATE); - Axis connectionAxis = - connectionAlongFirst ? (axis == Axis.X ? Axis.Y : Axis.X) : (axis == Axis.Z ? Axis.Y : Axis.Z); - return connectionAxis; - } - - public static float getRotationSpeedModifier(KineticTileEntity from, KineticTileEntity to) { - float fromMod = 1; - float toMod = 1; - if (from instanceof AdjustablePulleyTileEntity) - fromMod = ((AdjustablePulleyTileEntity) from).getModifier(); - if (to instanceof AdjustablePulleyTileEntity) - toMod = ((AdjustablePulleyTileEntity) to).getModifier(); - return fromMod / toMod; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ENCASED_SHAFT.create(); - } - - public enum Part implements IStringSerializable { - START, MIDDLE, END, NONE; - - @Override - public String getString() { - return Lang.asId(name()); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltGenerator.java deleted file mode 100644 index 5ef334001..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedBeltGenerator.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import java.util.function.BiFunction; - -import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock.Part; -import com.simibubi.create.foundation.data.SpecialBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction.Axis; -import net.minecraftforge.client.model.generators.ModelFile; - -public class EncasedBeltGenerator extends SpecialBlockStateGen { - - private BiFunction modelFunc; - - public EncasedBeltGenerator(BiFunction modelFunc) { - this.modelFunc = modelFunc; - } - - @Override - protected int getXRotation(BlockState state) { - EncasedBeltBlock.Part part = state.get(EncasedBeltBlock.PART); - boolean connectedAlongFirst = state.get(EncasedBeltBlock.CONNECTED_ALONG_FIRST_COORDINATE); - Axis axis = state.get(EncasedBeltBlock.AXIS); - - if (part == Part.NONE) - return axis == Axis.Y ? 90 : 0; - if (axis == Axis.X) - return (connectedAlongFirst ? 90 : 0) + (part == Part.START ? 180 : 0); - if (axis == Axis.Z) - return (connectedAlongFirst ? 0 : (part == Part.START ? 270 : 90)); - return 0; - } - - @Override - protected int getYRotation(BlockState state) { - EncasedBeltBlock.Part part = state.get(EncasedBeltBlock.PART); - boolean connectedAlongFirst = state.get(EncasedBeltBlock.CONNECTED_ALONG_FIRST_COORDINATE); - Axis axis = state.get(EncasedBeltBlock.AXIS); - - if (part == Part.NONE) - return axis == Axis.X ? 90 : 0; - if (axis == Axis.Z) - return (connectedAlongFirst && part == Part.END ? 270 : 90); - boolean flip = part == Part.END && !connectedAlongFirst || part == Part.START && connectedAlongFirst; - if (axis == Axis.Y) - return (connectedAlongFirst ? 90 : 0) + (flip ? 180 : 0); - return 0; - } - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - return modelFunc.apply(state, getModelSuffix(state)); - } - - protected String getModelSuffix(BlockState state) { - EncasedBeltBlock.Part part = state.get(EncasedBeltBlock.PART); - Axis axis = state.get(EncasedBeltBlock.AXIS); - - if (part == Part.NONE) - return "single"; - - String orientation = axis == Axis.Y ? "vertical" : "horizontal"; - String section = part == Part.MIDDLE ? "middle" : "end"; - return section + "_" + orientation; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCTBehaviour.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCTBehaviour.java deleted file mode 100644 index 0676729fa..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedCTBehaviour.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockDisplayReader; - -public class EncasedCTBehaviour extends ConnectedTextureBehaviour { - - private CTSpriteShiftEntry shift; - - public EncasedCTBehaviour(CTSpriteShiftEntry shift) { - this.shift = shift; - } - - @Override - public boolean connectsTo(BlockState state, BlockState other, IBlockDisplayReader reader, BlockPos pos, BlockPos otherPos, - Direction face) { - if (isBeingBlocked(state, reader, pos, otherPos, face)) - return false; - CasingConnectivity cc = CreateClient.getCasingConnectivity(); - CasingConnectivity.Entry entry = cc.get(state); - CasingConnectivity.Entry otherEntry = cc.get(other); - if (entry == null || otherEntry == null) - return false; - if (!entry.isSideValid(state, face) || !otherEntry.isSideValid(other, face)) - return false; - if (entry.getCasing() != otherEntry.getCasing()) - return false; - return true; - } - - @Override - public CTSpriteShiftEntry get(BlockState state, Direction direction) { - return shift; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java deleted file mode 100644 index 09e6749a7..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftBlock.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.CasingBlock; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.schematics.ISpecialBlockItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement; -import com.tterrag.registrate.util.entry.BlockEntry; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.world.IBlockReader; - -public class EncasedShaftBlock extends AbstractEncasedShaftBlock implements ISpecialBlockItemRequirement { - - private BlockEntry casing; - - public static EncasedShaftBlock andesite(Properties properties) { - return new EncasedShaftBlock(properties, AllBlocks.ANDESITE_CASING); - } - - public static EncasedShaftBlock brass(Properties properties) { - return new EncasedShaftBlock(properties, AllBlocks.BRASS_CASING); - } - - protected EncasedShaftBlock(Properties properties, BlockEntry casing) { - super(properties); - this.casing = casing; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.ENCASED_SHAFT.create(); - } - - public BlockEntry getCasing() { - return casing; - } - - @Override - public ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { - if (context.getWorld().isRemote) - return ActionResultType.SUCCESS; - context.getWorld().playEvent(2001, context.getPos(), Block.getStateId(state)); - KineticTileEntity.switchToBlockState(context.getWorld(), context.getPos(), AllBlocks.SHAFT.getDefaultState().with(AXIS, state.get(AXIS))); - return ActionResultType.SUCCESS; - } - - @Override - public ItemRequirement getRequiredItems(BlockState state, TileEntity te) { - return ItemRequirement.of(AllBlocks.SHAFT.getDefaultState(), te); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftRenderer.java deleted file mode 100644 index 0c4541743..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftRenderer.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; - -public class EncasedShaftRenderer extends KineticTileEntityRenderer { - - public EncasedShaftRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return shaft(getRotationAxisOf(te)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java deleted file mode 100644 index a34417018..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/EncasedShaftTileEntity.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; - -import net.minecraft.tileentity.TileEntityType; - -public class EncasedShaftTileEntity extends KineticTileEntity { - - public EncasedShaftTileEntity(TileEntityType type) { - super(type); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/GearshiftBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/GearshiftBlock.java deleted file mode 100644 index 9e381f491..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/GearshiftBlock.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import java.util.Random; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.RotationPropagator; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.gearbox.GearshiftTileEntity; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.TickPriority; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class GearshiftBlock extends AbstractEncasedShaftBlock implements ITE { - - public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - - public GearshiftBlock(Properties properties) { - super(properties); - setDefaultState(getDefaultState().with(POWERED, false)); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.GEARSHIFT.create(); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(POWERED); - super.fillStateContainer(builder); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - return super.getStateForPlacement(context).with(POWERED, - context.getWorld().isBlockPowered(context.getPos())); - } - - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - boolean previouslyPowered = state.get(POWERED); - if (previouslyPowered != worldIn.isBlockPowered(pos)) { - detachKinetics(worldIn, pos, true); - worldIn.setBlockState(pos, state.cycle(POWERED), 2); - } - } - - @Override - public Class getTileEntityClass() { - return GearshiftTileEntity.class; - } - - public void detachKinetics(World worldIn, BlockPos pos, boolean reAttachNextTick) { - TileEntity te = worldIn.getTileEntity(pos); - if (te == null || !(te instanceof KineticTileEntity)) - return; - RotationPropagator.handleRemoved(worldIn, pos, (KineticTileEntity) te); - - // Re-attach next tick - if (reAttachNextTick) - worldIn.getPendingBlockTicks().scheduleTick(pos, this, 0, TickPriority.EXTREMELY_HIGH); - } - - @Override - public void scheduledTick(BlockState state, ServerWorld worldIn, BlockPos pos, Random random) { - TileEntity te = worldIn.getTileEntity(pos); - if (te == null || !(te instanceof KineticTileEntity)) - return; - KineticTileEntity kte = (KineticTileEntity) te; - RotationPropagator.handleAdded(worldIn, pos, kte); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftInstance.java deleted file mode 100644 index 0761c6e43..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/ShaftInstance.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; - -import net.minecraft.block.BlockState; - -public class ShaftInstance extends SingleRotatingInstance { - - public ShaftInstance(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); - } - - @Override - protected BlockState getRenderedBlockState() { - return shaft(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java deleted file mode 100644 index 9dfd819d0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftInstance.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import java.util.ArrayList; - -import com.jozufozu.flywheel.backend.instancing.InstanceData; -import com.jozufozu.flywheel.backend.instancing.InstanceMaterial; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileInstance; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.util.Direction; - -public class SplitShaftInstance extends KineticTileInstance { - - protected final ArrayList keys; - - public SplitShaftInstance(MaterialManager modelManager, SplitShaftTileEntity tile) { - super(modelManager, tile); - - keys = new ArrayList<>(2); - - float speed = tile.getSpeed(); - - InstanceMaterial rotatingMaterial = getRotatingMaterial(); - - for (Direction dir : Iterate.directionsInAxis(getRotationAxis())) { - - Instancer half = rotatingMaterial.getModel(AllBlockPartials.SHAFT_HALF, blockState, dir); - - float splitSpeed = speed * tile.getRotationSpeedModifier(dir); - - keys.add(setup(half.createInstance(), splitSpeed)); - } - } - - @Override - public void update() { - Block block = blockState.getBlock(); - final Direction.Axis boxAxis = ((IRotate) block).getRotationAxis(blockState); - - Direction[] directions = Iterate.directionsInAxis(boxAxis); - - for (int i : Iterate.zeroAndOne) { - updateRotation(keys.get(i), tile.getSpeed() * tile.getRotationSpeedModifier(directions[i])); - } - } - - @Override - public void updateLight() { - relight(pos, keys.stream()); - } - - @Override - public void remove() { - keys.forEach(InstanceData::delete); - keys.clear(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java deleted file mode 100644 index 03d7026da..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftRenderer.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; - -public class SplitShaftRenderer extends KineticTileEntityRenderer { - - public SplitShaftRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - Block block = te.getBlockState().getBlock(); - final Axis boxAxis = ((IRotate) block).getRotationAxis(te.getBlockState()); - final BlockPos pos = te.getPos(); - float time = AnimationTickHolder.getRenderTime(te.getWorld()); - - for (Direction direction : Iterate.directions) { - Axis axis = direction.getAxis(); - if (boxAxis != axis) - continue; - - float offset = getRotationOffsetForPosition(te, pos, axis); - float angle = (time * te.getSpeed() * 3f / 10) % 360; - float modifier = 1; - - if (te instanceof SplitShaftTileEntity) - modifier = ((SplitShaftTileEntity) te).getRotationSpeedModifier(direction); - - angle *= modifier; - angle += offset; - angle = angle / 180f * (float) Math.PI; - - SuperByteBuffer superByteBuffer = - PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction); - kineticRotationTransform(superByteBuffer, te, axis, angle, light); - superByteBuffer.renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftTileEntity.java deleted file mode 100644 index 4608ada58..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/encased/SplitShaftTileEntity.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.encased; - -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; - -public abstract class SplitShaftTileEntity extends DirectionalShaftHalvesTileEntity { - - public SplitShaftTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - public abstract float getRotationSpeedModifier(Direction face); - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeBlock.java deleted file mode 100644 index 7278da542..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeBlock.java +++ /dev/null @@ -1,204 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gauge; - -import java.util.Random; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.particles.RedstoneParticleData; -import net.minecraft.pathfinding.PathType; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class GaugeBlock extends DirectionalAxisKineticBlock { - - public static final GaugeShaper GAUGE = GaugeShaper.make(); - protected Type type; - - public enum Type implements IStringSerializable { - SPEED, STRESS; - - @Override - public String getString() { - return Lang.asId(name()); - } - } - - public static GaugeBlock speed(Properties properties) { - return new GaugeBlock(properties, Type.SPEED); - } - - public static GaugeBlock stress(Properties properties) { - return new GaugeBlock(properties, Type.STRESS); - } - - protected GaugeBlock(Properties properties, Type type) { - super(properties); - this.type = type; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - switch (type) { - case SPEED: - return AllTileEntities.SPEEDOMETER.create(); - case STRESS: - return AllTileEntities.STRESSOMETER.create(); - default: - return null; - } - } - - /* - * FIXME: Is there a new way of doing this in 1.16? Or cn we just delete it? - * - * @SuppressWarnings("deprecation") - * - * @Override - * public MaterialColor getMaterialColor(BlockState state, IBlockReader worldIn, BlockPos pos) { - * return Blocks.SPRUCE_PLANKS.getMaterialColor(state, worldIn, pos); - * } - */ - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - World world = context.getWorld(); - Direction face = context.getFace(); - BlockPos placedOnPos = context.getPos() - .offset(context.getFace() - .getOpposite()); - BlockState placedOnState = world.getBlockState(placedOnPos); - Block block = placedOnState.getBlock(); - - if (block instanceof IRotate && ((IRotate) block).hasShaftTowards(world, placedOnPos, placedOnState, face)) { - BlockState toPlace = getDefaultState(); - Direction horizontalFacing = context.getPlacementHorizontalFacing(); - Direction nearestLookingDirection = context.getNearestLookingDirection(); - boolean lookPositive = nearestLookingDirection.getAxisDirection() == AxisDirection.POSITIVE; - if (face.getAxis() == Axis.X) { - toPlace = toPlace.with(FACING, lookPositive ? Direction.NORTH : Direction.SOUTH) - .with(AXIS_ALONG_FIRST_COORDINATE, true); - } else if (face.getAxis() == Axis.Y) { - toPlace = toPlace.with(FACING, horizontalFacing.getOpposite()) - .with(AXIS_ALONG_FIRST_COORDINATE, horizontalFacing.getAxis() == Axis.X); - } else { - toPlace = toPlace.with(FACING, lookPositive ? Direction.WEST : Direction.EAST) - .with(AXIS_ALONG_FIRST_COORDINATE, false); - } - - return toPlace; - } - - return super.getStateForPlacement(context); - } - - @Override - protected Direction getFacingForPlacement(BlockItemUseContext context) { - return context.getFace(); - } - - @Override - protected boolean getAxisAlignmentForPlacement(BlockItemUseContext context) { - return context.getPlacementHorizontalFacing() - .getAxis() != Axis.X; - } - - public boolean shouldRenderHeadOnFace(World world, BlockPos pos, BlockState state, Direction face) { - if (face.getAxis() - .isVertical()) - return false; - if (face == state.get(FACING) - .getOpposite()) - return false; - if (face.getAxis() == getRotationAxis(state)) - return false; - if (getRotationAxis(state) == Axis.Y && face != state.get(FACING)) - return false; - if (!Block.shouldSideBeRendered(state, world, pos, face) && !(world instanceof WrappedWorld)) - return false; - return true; - } - - @Override - public void animateTick(BlockState stateIn, World worldIn, BlockPos pos, Random rand) { - TileEntity te = worldIn.getTileEntity(pos); - if (te == null || !(te instanceof GaugeTileEntity)) - return; - GaugeTileEntity gaugeTE = (GaugeTileEntity) te; - if (gaugeTE.dialTarget == 0) - return; - int color = gaugeTE.color; - - for (Direction face : Iterate.directions) { - if (!shouldRenderHeadOnFace(worldIn, pos, stateIn, face)) - continue; - - Vector3d rgb = ColorHelper.getRGB(color); - Vector3d faceVec = Vector3d.of(face.getDirectionVec()); - Direction positiveFacing = Direction.getFacingFromAxis(AxisDirection.POSITIVE, face.getAxis()); - Vector3d positiveFaceVec = Vector3d.of(positiveFacing.getDirectionVec()); - int particleCount = gaugeTE.dialTarget > 1 ? 4 : 1; - - if (particleCount == 1 && rand.nextFloat() > 1 / 4f) - continue; - - for (int i = 0; i < particleCount; i++) { - Vector3d mul = VecHelper.offsetRandomly(Vector3d.ZERO, rand, .25f) - .mul(new Vector3d(1, 1, 1).subtract(positiveFaceVec)) - .normalize() - .scale(.3f); - Vector3d offset = VecHelper.getCenterOf(pos) - .add(faceVec.scale(.55)) - .add(mul); - worldIn.addParticle(new RedstoneParticleData((float) rgb.x, (float) rgb.y, (float) rgb.z, 1), offset.x, - offset.y, offset.z, mul.x, mul.y, mul.z); - } - - } - - } - - @Override - public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) { - return GAUGE.get(state.get(FACING), state.get(AXIS_ALONG_FIRST_COORDINATE)); - } - - @Override - public boolean hasComparatorInputOverride(BlockState state) { - return true; - } - - @Override - public int getComparatorInputOverride(BlockState blockState, World worldIn, BlockPos pos) { - TileEntity te = worldIn.getTileEntity(pos); - if (te instanceof GaugeTileEntity) { - GaugeTileEntity gaugeTileEntity = (GaugeTileEntity) te; - return MathHelper.ceil(MathHelper.clamp(gaugeTileEntity.dialTarget * 14, 0, 15)); - } - return 0; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeGenerator.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeGenerator.java deleted file mode 100644 index def2c0652..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeGenerator.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gauge; - -import com.simibubi.create.foundation.data.DirectionalAxisBlockStateGen; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; - -public class GaugeGenerator extends DirectionalAxisBlockStateGen { - - @Override - public String getModelPrefix(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - return "block/gauge/base"; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java deleted file mode 100644 index de3a27ed8..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeInstance.java +++ /dev/null @@ -1,167 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gauge; - -import java.util.ArrayList; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.core.materials.ModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; - -public abstract class GaugeInstance extends ShaftInstance implements IDynamicInstance { - - protected final ArrayList faces; - - protected MatrixStack ms; - - protected GaugeInstance(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); - - faces = new ArrayList<>(2); - - GaugeTileEntity gaugeTile = (GaugeTileEntity) tile; - GaugeBlock gaugeBlock = (GaugeBlock) blockState.getBlock(); - - Instancer dialModel = getTransformMaterial().getModel(AllBlockPartials.GAUGE_DIAL, blockState); - Instancer headModel = getHeadModel(); - - ms = new MatrixStack(); - MatrixStacker msr = MatrixStacker.of(ms); - msr.translate(getInstancePosition()); - - float progress = MathHelper.lerp(AnimationTickHolder.getPartialTicks(), gaugeTile.prevDialState, gaugeTile.dialState); - - for (Direction facing : Iterate.directions) { - if (!gaugeBlock.shouldRenderHeadOnFace(world, pos, blockState, facing)) - continue; - - DialFace face = makeFace(facing, dialModel, headModel); - - faces.add(face); - - face.setupTransform(msr, progress); - } - } - - private DialFace makeFace(Direction face, Instancer dialModel, Instancer headModel) { - return new DialFace(face, dialModel.createInstance(), headModel.createInstance()); - } - - @Override - public void beginFrame() { - GaugeTileEntity gaugeTile = (GaugeTileEntity) tile; - - if (MathHelper.epsilonEquals(gaugeTile.prevDialState, gaugeTile.dialState)) - return; - - float progress = MathHelper.lerp(AnimationTickHolder.getPartialTicks(), gaugeTile.prevDialState, gaugeTile.dialState); - - MatrixStacker msr = MatrixStacker.of(ms); - - for (DialFace faceEntry : faces) { - faceEntry.updateTransform(msr, progress); - } - } - - @Override - public void updateLight() { - super.updateLight(); - - relight(pos, faces.stream() - .flatMap(Couple::stream)); - } - - @Override - public void remove() { - super.remove(); - - faces.forEach(DialFace::delete); - } - - protected abstract Instancer getHeadModel(); - - private class DialFace extends Couple { - - Direction face; - - public DialFace(Direction face, ModelData first, ModelData second) { - super(first, second); - this.face = face; - } - - private void setupTransform(MatrixStacker msr, float progress) { - float dialPivot = 5.75f / 16; - - ms.push(); - rotateToFace(msr); - - getSecond().setTransform(ms); - - msr.translate(0, dialPivot, dialPivot) - .rotate(Direction.EAST, (float) (Math.PI / 2 * -progress)) - .translate(0, -dialPivot, -dialPivot); - - getFirst().setTransform(ms); - - ms.pop(); - } - - private void updateTransform(MatrixStacker msr, float progress) { - float dialPivot = 5.75f / 16; - - ms.push(); - - rotateToFace(msr) - .translate(0, dialPivot, dialPivot) - .rotate(Direction.EAST, (float) (Math.PI / 2 * -progress)) - .translate(0, -dialPivot, -dialPivot); - - getFirst().setTransform(ms); - - ms.pop(); - } - - protected MatrixStacker rotateToFace(MatrixStacker msr) { - return msr.centre() - .rotate(Direction.UP, (float) ((-face.getHorizontalAngle() - 90) / 180 * Math.PI)) - .unCentre(); - } - - private void delete() { - getFirst().delete(); - getSecond().delete(); - } - } - - public static class Speed extends GaugeInstance { - public Speed(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); - } - - @Override - protected Instancer getHeadModel() { - return getTransformMaterial().getModel(AllBlockPartials.GAUGE_HEAD_SPEED, blockState); - } - } - - public static class Stress extends GaugeInstance { - public Stress(MaterialManager dispatcher, KineticTileEntity tile) { - super(dispatcher, tile); - } - - @Override - protected Instancer getHeadModel() { - return getTransformMaterial().getModel(AllBlockPartials.GAUGE_HEAD_STRESS, blockState); - } - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java deleted file mode 100644 index 442cb9bdf..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeRenderer.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gauge; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock.Type; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.BlockState; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; -import net.minecraft.util.math.MathHelper; - -public class GaugeRenderer extends KineticTileEntityRenderer { - - protected GaugeBlock.Type type; - - public static GaugeRenderer speed(TileEntityRendererDispatcher dispatcher) { - return new GaugeRenderer(dispatcher, Type.SPEED); - } - - public static GaugeRenderer stress(TileEntityRendererDispatcher dispatcher) { - return new GaugeRenderer(dispatcher, Type.STRESS); - } - - protected GaugeRenderer(TileEntityRendererDispatcher dispatcher, GaugeBlock.Type type) { - super(dispatcher); - this.type = type; - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - BlockState gaugeState = te.getBlockState(); - GaugeTileEntity gaugeTE = (GaugeTileEntity) te; - int lightCoords = WorldRenderer.getLightmapCoordinates(te.getWorld(), gaugeState, te.getPos()); - - PartialModel partialModel = (type == Type.SPEED ? AllBlockPartials.GAUGE_HEAD_SPEED : AllBlockPartials.GAUGE_HEAD_STRESS); - SuperByteBuffer headBuffer = - PartialBufferer.get(partialModel, gaugeState); - SuperByteBuffer dialBuffer = PartialBufferer.get(AllBlockPartials.GAUGE_DIAL, gaugeState); - - float dialPivot = 5.75f / 16; - float progress = MathHelper.lerp(partialTicks, gaugeTE.prevDialState, gaugeTE.dialState); - - for (Direction facing : Iterate.directions) { - if (!((GaugeBlock) gaugeState.getBlock()).shouldRenderHeadOnFace(te.getWorld(), te.getPos(), gaugeState, - facing)) - continue; - - IVertexBuilder vb = buffer.getBuffer(RenderType.getSolid()); - rotateBufferTowards(dialBuffer, facing).translate(0, dialPivot, dialPivot) - .rotate(Direction.EAST, (float) (Math.PI / 2 * -progress)) - .translate(0, -dialPivot, -dialPivot) - .light(lightCoords) - .renderInto(ms, vb); - rotateBufferTowards(headBuffer, facing).light(lightCoords) - .renderInto(ms, vb); - } - - } - - @Override - protected BlockState getRenderedBlockState(KineticTileEntity te) { - return shaft(getRotationAxisOf(te)); - } - - protected SuperByteBuffer rotateBufferTowards(SuperByteBuffer buffer, Direction target) { - return buffer.rotateCentered(Direction.UP, (float) ((-target.getHorizontalAngle() - 90) / 180 * Math.PI)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeShaper.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeShaper.java deleted file mode 100644 index b07ded5bb..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeShaper.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gauge; - -import java.util.Arrays; - -import com.simibubi.create.AllShapes; -import com.simibubi.create.foundation.utility.VoxelShaper; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; - -public class GaugeShaper extends VoxelShaper { - - private VoxelShaper axisFalse, axisTrue; - - static GaugeShaper make(){ - GaugeShaper shaper = new GaugeShaper(); - shaper.axisFalse = forDirectional(AllShapes.GAUGE_SHAPE_UP, Direction.UP); - shaper.axisTrue = forDirectional(rotatedCopy(AllShapes.GAUGE_SHAPE_UP, new Vector3d(0, 90, 0)), Direction.UP); - //shapes for X axis need to be swapped - Arrays.asList(Direction.EAST, Direction.WEST).forEach(direction -> { - VoxelShape mem = shaper.axisFalse.get(direction); - shaper.axisFalse.withShape(shaper.axisTrue.get(direction), direction); - shaper.axisTrue.withShape(mem, direction); - }); - return shaper; - } - - public VoxelShape get(Direction direction, boolean axisAlong) { - return (axisAlong ? axisTrue : axisFalse).get(direction); - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java deleted file mode 100644 index 1a1c4a8b2..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/GaugeTileEntity.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gauge; - -import java.util.List; - -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.text.ITextComponent; - -public class GaugeTileEntity extends KineticTileEntity implements IHaveGoggleInformation { - - public float dialTarget; - public float dialState; - public float prevDialState; - public int color; - - public GaugeTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - } - - @Override - public void write(CompoundNBT compound, boolean clientPacket) { - compound.putFloat("Value", dialTarget); - compound.putInt("Color", color); - super.write(compound, clientPacket); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - dialTarget = compound.getFloat("Value"); - color = compound.getInt("Color"); - super.fromTag(state, compound, clientPacket); - } - - @Override - public void tick() { - super.tick(); - prevDialState = dialState; - dialState += (dialTarget - dialState) * .125f; - if (dialState > 1 && world.rand.nextFloat() < 1 / 2f) - dialState -= (dialState - 1) * world.rand.nextFloat(); - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - tooltip.add(componentSpacing.copy().append(Lang.translate("gui.gauge.info_header"))); - - return true; - } - - @Override - public boolean shouldRenderNormally() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java deleted file mode 100644 index 1bdb7b191..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/SpeedGaugeTileEntity.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gauge; - -import java.util.List; - -import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.goggles.GogglesItem; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; - -public class SpeedGaugeTileEntity extends GaugeTileEntity { - - public SpeedGaugeTileEntity(TileEntityType type) { - super(type); - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - float speed = Math.abs(getSpeed()); - - color = speed == 0 ? 0x333333 - : ColorHelper.mixColors(SpeedLevel.of(speed) - .getColor(), 0xffffff, .25f); - if (speed == 69) - AllTriggers.triggerForNearbyPlayers(AllTriggers.SPEED_READ, world, pos, 6, GogglesItem::canSeeParticles); - - dialTarget = getDialTarget(speed); - markDirty(); - } - - public static float getDialTarget(float speed) { - speed = Math.abs(speed); - float medium = AllConfigs.SERVER.kinetics.mediumSpeed.get() - .floatValue(); - float fast = AllConfigs.SERVER.kinetics.fastSpeed.get() - .floatValue(); - float max = AllConfigs.SERVER.kinetics.maxRotationSpeed.get() - .floatValue(); - float target = 0; - if (speed == 0) - target = 0; - else if (speed < medium) - target = MathHelper.lerp(speed / medium, 0, .45f); - else if (speed < fast) - target = MathHelper.lerp((speed - medium) / (fast - medium), .45f, .75f); - else - target = MathHelper.lerp((speed - fast) / (max - fast), .75f, 1.125f); - return target; - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - super.addToGoggleTooltip(tooltip, isPlayerSneaking); - - tooltip.add(componentSpacing.copy().append(Lang.translate("gui.speedometer.title").formatted(TextFormatting.GRAY))); - tooltip.add(componentSpacing.copy().append(SpeedLevel.getFormattedSpeedText(speed, isOverStressed()))); - - return true; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java deleted file mode 100644 index 470522dff..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gauge/StressGaugeTileEntity.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gauge; - -import java.util.List; - -import com.simibubi.create.content.contraptions.base.IRotate.StressImpact; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.foundation.item.ItemDescription; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; - -public class StressGaugeTileEntity extends GaugeTileEntity { - - public StressGaugeTileEntity(TileEntityType type) { - super(type); - } - - @Override - public void updateFromNetwork(float maxStress, float currentStress, int networkSize) { - super.updateFromNetwork(maxStress, currentStress, networkSize); - - if (!StressImpact.isEnabled()) - dialTarget = 0; - else if (isOverStressed()) - dialTarget = 1.125f; - else if (maxStress == 0) - dialTarget = 0; - else - dialTarget = currentStress / maxStress; - - if (dialTarget > 0) { - if (dialTarget < .5f) - color = ColorHelper.mixColors(0x00FF00, 0xFFFF00, dialTarget * 2); - else if (dialTarget < 1) - color = ColorHelper.mixColors(0xFFFF00, 0xFF0000, (dialTarget) * 2 - 1); - else - color = 0xFF0000; - } - - sendData(); - markDirty(); - } - - @Override - public void onSpeedChanged(float prevSpeed) { - super.onSpeedChanged(prevSpeed); - if (getSpeed() == 0) { - dialTarget = 0; - markDirty(); - return; - } - - updateFromNetwork(capacity, stress, getOrCreateNetwork().getSize()); - } - - @Override - public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { - if (!StressImpact.isEnabled()) - return false; - - super.addToGoggleTooltip(tooltip, isPlayerSneaking); - - double capacity = getNetworkCapacity(); - double stressFraction = getNetworkStress() / (capacity == 0 ? 1 : capacity); - - tooltip.add(componentSpacing.copy().append(Lang.translate("gui.stressometer.title").formatted(TextFormatting.GRAY))); - - if (getTheoreticalSpeed() == 0) - tooltip.add(new StringTextComponent(spacing + ItemDescription.makeProgressBar(3, -1)).append(Lang.translate("gui.stressometer.no_rotation")).formatted(TextFormatting.DARK_GRAY)); - // tooltip.add(new StringTextComponent(TextFormatting.DARK_GRAY + ItemDescription.makeProgressBar(3, -1) - // + Lang.translate("gui.stressometer.no_rotation"))); - else { - tooltip.add(componentSpacing.copy().append(StressImpact.getFormattedStressText(stressFraction))); - - tooltip.add(componentSpacing.copy().append(Lang.translate("gui.stressometer.capacity").formatted(TextFormatting.GRAY))); - - double remainingCapacity = capacity - getNetworkStress(); - - ITextComponent su = Lang.translate("generic.unit.stress"); - IFormattableTextComponent stressTooltip = componentSpacing.copy() - .append(new StringTextComponent(" " + IHaveGoggleInformation.format(remainingCapacity)) - .append(su.copy()) - .formatted(StressImpact.of(stressFraction).getRelativeColor())); - if (remainingCapacity != capacity) { - stressTooltip - .append(new StringTextComponent(" / ").formatted(TextFormatting.GRAY)) - .append(new StringTextComponent(IHaveGoggleInformation.format(capacity)) - .append(su.copy()) - .formatted(TextFormatting.DARK_GRAY)); - } - tooltip.add(stressTooltip); - } - - return true; - } - - public float getNetworkStress() { - return stress; - } - - public float getNetworkCapacity() { - return capacity; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxBlock.java deleted file mode 100644 index bb867e1a0..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxBlock.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gearbox; - -import java.util.Arrays; -import java.util.List; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; - -import net.minecraft.block.BlockState; -import net.minecraft.block.material.PushReaction; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.LootContext.Builder; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorldReader; - -public class GearboxBlock extends RotatedPillarKineticBlock { - - public GearboxBlock(Properties properties) { - super(properties); - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.GEARBOX.create(); - } - - @Override - public PushReaction getPushReaction(BlockState state) { - return PushReaction.PUSH_ONLY; - } - - @Override - public void fillItemGroup(ItemGroup group, NonNullList items) { - super.fillItemGroup(group, items); - items.add(AllItems.VERTICAL_GEARBOX.asStack()); - } - - @SuppressWarnings("deprecation") - @Override - public List getDrops(BlockState state, Builder builder) { - if (state.get(AXIS).isVertical()) - return super.getDrops(state, builder); - return Arrays.asList(new ItemStack(AllItems.VERTICAL_GEARBOX.get())); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - if (state.get(AXIS).isVertical()) - return super.getPickBlock(state, target, world, pos, player); - return new ItemStack(AllItems.VERTICAL_GEARBOX.get()); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - return getDefaultState().with(AXIS, Axis.Y); - } - - // IRotate: - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face.getAxis() != state.get(AXIS); - } - - @Override - public Axis getRotationAxis(BlockState state) { - return state.get(AXIS); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java deleted file mode 100644 index fc795f92e..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxInstance.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gearbox; - -import java.util.EnumMap; -import java.util.Map; - -import com.jozufozu.flywheel.backend.instancing.InstanceData; -import com.jozufozu.flywheel.backend.instancing.InstanceMaterial; -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileInstance; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.LightType; - -public class GearboxInstance extends KineticTileInstance { - - protected final EnumMap keys; - protected Direction sourceFacing; - - public GearboxInstance(MaterialManager modelManager, GearboxTileEntity tile) { - super(modelManager, tile); - - keys = new EnumMap<>(Direction.class); - - final Direction.Axis boxAxis = blockState.get(BlockStateProperties.AXIS); - - int blockLight = world.getLightLevel(LightType.BLOCK, pos); - int skyLight = world.getLightLevel(LightType.SKY, pos); - updateSourceFacing(); - - InstanceMaterial rotatingMaterial = getRotatingMaterial(); - - for (Direction direction : Iterate.directions) { - final Direction.Axis axis = direction.getAxis(); - if (boxAxis == axis) - continue; - - Instancer shaft = rotatingMaterial.getModel(AllBlockPartials.SHAFT_HALF, blockState, direction); - - RotatingData key = shaft.createInstance(); - - key.setRotationAxis(Direction.getFacingFromAxis(Direction.AxisDirection.POSITIVE, axis).getUnitVector()) - .setRotationalSpeed(getSpeed(direction)) - .setRotationOffset(getRotationOffset(axis)).setColor(tile) - .setPosition(getInstancePosition()) - .setBlockLight(blockLight) - .setSkyLight(skyLight); - - keys.put(direction, key); - } - } - - private float getSpeed(Direction direction) { - float speed = tile.getSpeed(); - - if (speed != 0 && sourceFacing != null) { - if (sourceFacing.getAxis() == direction.getAxis()) - speed *= sourceFacing == direction ? 1 : -1; - else if (sourceFacing.getAxisDirection() == direction.getAxisDirection()) - speed *= -1; - } - return speed; - } - - protected void updateSourceFacing() { - if (tile.hasSource()) { - BlockPos source = tile.source.subtract(pos); - sourceFacing = Direction.getFacingFromVector(source.getX(), source.getY(), source.getZ()); - } else { - sourceFacing = null; - } - } - - @Override - public void update() { - updateSourceFacing(); - for (Map.Entry key : keys.entrySet()) { - Direction direction = key.getKey(); - Direction.Axis axis = direction.getAxis(); - - updateRotation(key.getValue(), axis, getSpeed(direction)); - } - } - - @Override - public void updateLight() { - relight(pos, keys.values().stream()); - } - - @Override - public void remove() { - keys.values().forEach(InstanceData::delete); - keys.clear(); - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java deleted file mode 100644 index 0c9313b2f..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxRenderer.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gearbox; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; - -public class GearboxRenderer extends KineticTileEntityRenderer { - - public GearboxRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - final Axis boxAxis = te.getBlockState().get(BlockStateProperties.AXIS); - final BlockPos pos = te.getPos(); - float time = AnimationTickHolder.getRenderTime(te.getWorld()); - - for (Direction direction : Iterate.directions) { - final Axis axis = direction.getAxis(); - if (boxAxis == axis) - continue; - - SuperByteBuffer shaft = PartialBufferer.getFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), direction); - float offset = getRotationOffsetForPosition(te, pos, axis); - float angle = (time * te.getSpeed() * 3f / 10) % 360; - - if (te.getSpeed() != 0 && te.hasSource()) { - BlockPos source = te.source.subtract(te.getPos()); - Direction sourceFacing = Direction.getFacingFromVector(source.getX(), source.getY(), source.getZ()); - if (sourceFacing.getAxis() == direction.getAxis()) - angle *= sourceFacing == direction ? 1 : -1; - else if (sourceFacing.getAxisDirection() == direction.getAxisDirection()) - angle *= -1; - } - - angle += offset; - angle = angle / 180f * (float) Math.PI; - - kineticRotationTransform(shaft, te, axis, angle, light); - shaft.renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxTileEntity.java deleted file mode 100644 index add94d709..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearboxTileEntity.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gearbox; - -import com.simibubi.create.content.contraptions.relays.encased.DirectionalShaftHalvesTileEntity; - -import net.minecraft.tileentity.TileEntityType; - -public class GearboxTileEntity extends DirectionalShaftHalvesTileEntity { - - public GearboxTileEntity(TileEntityType type) { - super(type); - } - - @Override - protected boolean isNoisy() { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearshiftTileEntity.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearshiftTileEntity.java deleted file mode 100644 index a819022c1..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/GearshiftTileEntity.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gearbox; - -import com.simibubi.create.content.contraptions.relays.encased.SplitShaftTileEntity; - -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction; - -public class GearshiftTileEntity extends SplitShaftTileEntity { - - public GearshiftTileEntity(TileEntityType type) { - super(type); - } - - @Override - public float getRotationSpeedModifier(Direction face) { - if (hasSource()) { - if (face != getSourceFacing() && getBlockState().get(BlockStateProperties.POWERED)) - return -1; - } - return 1; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/VerticalGearboxItem.java b/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/VerticalGearboxItem.java deleted file mode 100644 index 153b85154..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/gearbox/VerticalGearboxItem.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.content.contraptions.relays.gearbox; - -import java.util.Map; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class VerticalGearboxItem extends BlockItem { - - public VerticalGearboxItem(Properties builder) { - super(AllBlocks.GEARBOX.get(), builder); - } - - @Override - public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { - } - - @Override - public String getTranslationKey() { - return "item.create.vertical_gearbox"; - } - - @Override - public void addToBlockToItemMap(Map p_195946_1_, Item p_195946_2_) { - } - - @Override - protected boolean onBlockPlaced(BlockPos pos, World world, PlayerEntity player, ItemStack stack, BlockState state) { - Axis prefferedAxis = null; - for (Direction side : Iterate.horizontalDirections) { - BlockState blockState = world.getBlockState(pos.offset(side)); - if (blockState.getBlock() instanceof IRotate) { - if (((IRotate) blockState.getBlock()).hasShaftTowards(world, pos.offset(side), blockState, - side.getOpposite())) - if (prefferedAxis != null && prefferedAxis != side.getAxis()) { - prefferedAxis = null; - break; - } else { - prefferedAxis = side.getAxis(); - } - } - } - - Axis axis = prefferedAxis == null ? player.getHorizontalFacing() - .rotateY() - .getAxis() : prefferedAxis == Axis.X ? Axis.Z : Axis.X; - world.setBlockState(pos, state.with(BlockStateProperties.AXIS, axis)); - return super.onBlockPlaced(pos, world, player, stack, state); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java deleted file mode 100644 index 68b5365a5..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchable.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.simibubi.create.content.contraptions.wrench; - -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock; -import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity; -import com.simibubi.create.content.contraptions.base.HorizontalAxisKineticBlock; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatedPillarKineticBlock; -import com.simibubi.create.foundation.utility.DirectionHelper; -import com.simibubi.create.foundation.utility.VoxelShaper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public interface IWrenchable { - - default ActionResultType onWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - BlockState rotated = getRotatedBlockState(state, context.getFace()); - if (!rotated.isValidPosition(world, context.getPos())) - return ActionResultType.PASS; - - KineticTileEntity.switchToBlockState(world, context.getPos(), updateAfterWrenched(rotated, context)); - - TileEntity te = context.getWorld() - .getTileEntity(context.getPos()); - if (te != null) - te.updateContainingBlockInfo(); - if (te instanceof GeneratingKineticTileEntity) { - ((GeneratingKineticTileEntity) te).reActivateSource = true; - } - - if (world.getBlockState(context.getPos()) != state) - playRotateSound(world, context.getPos()); - - return ActionResultType.SUCCESS; - } - - default BlockState updateAfterWrenched(BlockState newState, ItemUseContext context) { -// return newState; - return Block.getValidBlockForPosition(newState, context.getWorld(), context.getPos()); - } - - default ActionResultType onSneakWrenched(BlockState state, ItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - PlayerEntity player = context.getPlayer(); - if (world instanceof ServerWorld) { - if (player != null && !player.isCreative()) - Block.getDrops(state, (ServerWorld) world, pos, world.getTileEntity(pos), player, context.getItem()) - .forEach(itemStack -> { - player.inventory.placeItemBackInInventory(world, itemStack); - }); - state.spawnAdditionalDrops((ServerWorld) world, pos, ItemStack.EMPTY); - world.destroyBlock(pos, false); - playRemoveSound(world, pos); - } - return ActionResultType.SUCCESS; - } - - default void playRemoveSound(World world, BlockPos pos) { - AllSoundEvents.WRENCH_REMOVE.playOnServer(world, pos, 1, Create.RANDOM.nextFloat() * .5f + .5f); - } - - default void playRotateSound(World world, BlockPos pos) { - AllSoundEvents.WRENCH_ROTATE.playOnServer(world, pos, 1, Create.RANDOM.nextFloat() + .5f); - } - - default BlockState getRotatedBlockState(BlockState originalState, Direction targetedFace) { - BlockState newState = originalState; - - if (targetedFace.getAxis() == Direction.Axis.Y) { - if (originalState.contains(HorizontalAxisKineticBlock.HORIZONTAL_AXIS)) - return originalState.with(HorizontalAxisKineticBlock.HORIZONTAL_AXIS, DirectionHelper - .rotateAround(VoxelShaper.axisAsFace(originalState.get(HorizontalAxisKineticBlock.HORIZONTAL_AXIS)), - targetedFace.getAxis()) - .getAxis()); - if (originalState.contains(HorizontalKineticBlock.HORIZONTAL_FACING)) - return originalState.with(HorizontalKineticBlock.HORIZONTAL_FACING, DirectionHelper - .rotateAround(originalState.get(HorizontalKineticBlock.HORIZONTAL_FACING), targetedFace.getAxis())); - } - - if (originalState.contains(RotatedPillarKineticBlock.AXIS)) - return originalState.with(RotatedPillarKineticBlock.AXIS, - DirectionHelper - .rotateAround(VoxelShaper.axisAsFace(originalState.get(RotatedPillarKineticBlock.AXIS)), - targetedFace.getAxis()) - .getAxis()); - - if (!originalState.contains(DirectionalKineticBlock.FACING)) - return originalState; - - Direction stateFacing = originalState.get(DirectionalKineticBlock.FACING); - - if (stateFacing.getAxis() - .equals(targetedFace.getAxis())) { - if (originalState.contains(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE)) - return originalState.cycle(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE); - else - return originalState; - } else { - do { - newState = newState.with(DirectionalKineticBlock.FACING, - DirectionHelper.rotateAround(newState.get(DirectionalKineticBlock.FACING), targetedFace.getAxis())); - if (targetedFace.getAxis() == Direction.Axis.Y - && newState.contains(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE)) - newState = newState.cycle(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE); - } while (newState.get(DirectionalKineticBlock.FACING) - .getAxis() - .equals(targetedFace.getAxis())); - } - return newState; - } -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchableWithBracket.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchableWithBracket.java deleted file mode 100644 index e2c79126c..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/IWrenchableWithBracket.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.content.contraptions.wrench; - -import java.util.Optional; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.fluids.FluidPropagator; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public interface IWrenchableWithBracket extends IWrenchable { - - public Optional removeBracket(IBlockReader world, BlockPos pos, boolean inOnReplacedContext); - - @Override - default ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (tryRemoveBracket(context)) - return ActionResultType.SUCCESS; - return IWrenchable.super.onWrenched(state, context); - } - - default boolean tryRemoveBracket(ItemUseContext context) { - World world = context.getWorld(); - BlockPos pos = context.getPos(); - Optional bracket = removeBracket(world, pos, false); - BlockState blockState = world.getBlockState(pos); - if (bracket.isPresent()) { - PlayerEntity player = context.getPlayer(); - if (!world.isRemote && !player.isCreative()) - player.inventory.placeItemBackInInventory(world, bracket.get()); - if (!world.isRemote && AllBlocks.FLUID_PIPE.has(blockState)) { - Axis preferred = FluidPropagator.getStraightPipeAxis(blockState); - Direction preferredDirection = - preferred == null ? Direction.UP : Direction.getFacingFromAxis(AxisDirection.POSITIVE, preferred); - BlockState updated = AllBlocks.FLUID_PIPE.get() - .updateBlockState(blockState, preferredDirection, null, world, pos); - if (updated != blockState) - world.setBlockState(pos, updated); - } - return true; - } - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java deleted file mode 100644 index 74a3cb2c3..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItem.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simibubi.create.content.contraptions.wrench; - -import javax.annotation.Nonnull; - -import com.simibubi.create.AllItems; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.DamageSource; -import net.minecraftforge.event.entity.player.AttackEntityEvent; - -public class WrenchItem extends Item { - - public WrenchItem(Properties properties) { - super(properties); - } - - @Nonnull - @Override - public ActionResultType onItemUse(ItemUseContext context) { - PlayerEntity player = context.getPlayer(); - if (player == null || !player.isAllowEdit()) - return super.onItemUse(context); - - BlockState state = context.getWorld() - .getBlockState(context.getPos()); - if (!(state.getBlock() instanceof IWrenchable)) - return super.onItemUse(context); - IWrenchable actor = (IWrenchable) state.getBlock(); - - if (player.isSneaking()) - return actor.onSneakWrenched(state, context); - return actor.onWrenched(state, context); - } - - public static void wrenchInstaKillsMinecarts(AttackEntityEvent event) { - Entity target = event.getTarget(); - if (!(target instanceof AbstractMinecartEntity)) - return; - PlayerEntity player = event.getPlayer(); - ItemStack heldItem = player.getHeldItemMainhand(); - if (!AllItems.WRENCH.isIn(heldItem)) - return; - if (player.isCreative()) - return; - AbstractMinecartEntity minecart = (AbstractMinecartEntity) target; - minecart.attackEntityFrom(DamageSource.causePlayerDamage(player), 100); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java deleted file mode 100644 index 7b9e15cda..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.content.contraptions.wrench; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; -import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueHandler; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.vector.Vector3f; - -public class WrenchItemRenderer extends CustomRenderedItemModelRenderer { - - @Override - protected void render(ItemStack stack, WrenchModel model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType, - MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - renderer.render(model.getOriginalModel(), light); - - float xOffset = -1/16f; - ms.translate(-xOffset, 0, 0); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(ScrollValueHandler.getScroll(AnimationTickHolder.getPartialTicks()))); - ms.translate(xOffset, 0, 0); - - renderer.render(model.getPartial("gear"), light); - } - -} diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchModel.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchModel.java deleted file mode 100644 index 7d58c0514..000000000 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchModel.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.contraptions.wrench; - -import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; - -public class WrenchModel extends CustomRenderedItemModel { - - public WrenchModel(IBakedModel template) { - super(template, "wrench"); - addPartials("gear"); - } - - @Override - public ItemStackTileEntityRenderer createRenderer() { - return new WrenchItemRenderer(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/BuildersTeaItem.java b/src/main/java/com/simibubi/create/content/curiosities/BuildersTeaItem.java deleted file mode 100644 index 9872711a8..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/BuildersTeaItem.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.curiosities; - -import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.UseAction; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.Effects; -import net.minecraft.stats.Stats; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.world.World; - -public class BuildersTeaItem extends Item { - - public BuildersTeaItem(Properties p_i48487_1_) { - super(p_i48487_1_); - } - - public ItemStack onItemUseFinish(ItemStack stack, World world, LivingEntity entity) { - PlayerEntity playerentity = entity instanceof PlayerEntity ? (PlayerEntity) entity : null; - if (playerentity instanceof ServerPlayerEntity) - CriteriaTriggers.CONSUME_ITEM.trigger((ServerPlayerEntity) playerentity, stack); - - if (!world.isRemote) - entity.addPotionEffect(new EffectInstance(Effects.HASTE, 3 * 60 * 20, 0, false, false, false)); - - if (playerentity != null) { - playerentity.addStat(Stats.ITEM_USED.get(this)); - playerentity.getFoodStats().addStats(1, .6F); - if (!playerentity.abilities.isCreativeMode) - stack.shrink(1); - } - - if (playerentity == null || !playerentity.abilities.isCreativeMode) { - if (stack.isEmpty()) - return new ItemStack(Items.GLASS_BOTTLE); - if (playerentity != null) - playerentity.inventory.addItemStackToInventory(new ItemStack(Items.GLASS_BOTTLE)); - } - - return stack; - } - - public int getUseDuration(ItemStack p_77626_1_) { - return 42; - } - - public UseAction getUseAction(ItemStack p_77661_1_) { - return UseAction.DRINK; - } - - public ActionResult onItemRightClick(World p_77659_1_, PlayerEntity p_77659_2_, Hand p_77659_3_) { - p_77659_2_.setActiveHand(p_77659_3_); - return ActionResult.success(p_77659_2_.getHeldItem(p_77659_3_)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundColor.java b/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundColor.java deleted file mode 100644 index 60c3e3754..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundColor.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.simibubi.create.content.curiosities; - -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.color.IItemColor; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.MathHelper; - -public class ChromaticCompoundColor implements IItemColor { - - @Override - public int getColor(ItemStack stack, int layer) { - Minecraft mc = Minecraft.getInstance(); - float pt = AnimationTickHolder.getPartialTicks(); - float progress = (float) ((mc.player.getYaw(pt)) / 180 * Math.PI) + (AnimationTickHolder.getRenderTime() / 10f); - if (layer == 0) - return ColorHelper.mixColors(0x6e5773, 0x6B3074, ((float) MathHelper.sin(progress) + 1) / 2); - if (layer == 1) - return ColorHelper.mixColors(0xd45d79, 0x6e5773, - ((float) MathHelper.sin((float) (progress + Math.PI)) + 1) / 2); - if (layer == 2) - return ColorHelper.mixColors(0xea9085, 0xd45d79, - ((float) MathHelper.sin((float) (progress * 1.5f + Math.PI)) + 1) / 2); - return 0; - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java b/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java deleted file mode 100644 index 3b7d0ae2d..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/ChromaticCompoundItem.java +++ /dev/null @@ -1,191 +0,0 @@ -package com.simibubi.create.content.curiosities; - -import java.util.Random; - -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.config.CRecipes; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.BeaconTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraft.world.gen.Heightmap; - -public class ChromaticCompoundItem extends Item { - - public ChromaticCompoundItem(Properties properties) { - super(properties); - } - - @Override - public boolean shouldSyncTag() { - return true; - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) { - int light = stack.getOrCreateTag() - .getInt("CollectingLight"); - return 1 - light / (float) AllConfigs.SERVER.recipes.lightSourceCountForRefinedRadiance.get(); - } - - @Override - public boolean showDurabilityBar(ItemStack stack) { - int light = stack.getOrCreateTag() - .getInt("CollectingLight"); - return light > 0; - } - - @Override - public int getRGBDurabilityForDisplay(ItemStack stack) { - return ColorHelper.mixColors(0x413c69, 0xFFFFFF, (float) (1 - getDurabilityForDisplay(stack))); - } - - @Override - public int getItemStackLimit(ItemStack stack) { - return showDurabilityBar(stack) ? 1 : 16; - } - - @Override - public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { - double y = entity.getY(); - double yMotion = entity.getMotion().y; - World world = entity.world; - CompoundNBT data = entity.getPersistentData(); - CompoundNBT itemData = entity.getItem() - .getOrCreateTag(); - - Vector3d positionVec = entity.getPositionVec(); - CRecipes config = AllConfigs.SERVER.recipes; - if (world.isRemote) { - int light = itemData.getInt("CollectingLight"); - if (random.nextInt(config.lightSourceCountForRefinedRadiance.get() + 20) < light) { - Vector3d start = VecHelper.offsetRandomly(positionVec, random, 3); - Vector3d motion = positionVec.subtract(start) - .normalize() - .scale(.2f); - world.addParticle(ParticleTypes.END_ROD, start.x, start.y, start.z, motion.x, motion.y, motion.z); - } - return false; - } - - // Convert to Shadow steel if in void - if (y < 0 && y - yMotion < -10 && config.enableShadowSteelRecipe.get()) { - ItemStack newStack = AllItems.SHADOW_STEEL.asStack(); - newStack.setCount(stack.getCount()); - data.putBoolean("JustCreated", true); - entity.setItem(newStack); - } - - if (!config.enableRefinedRadianceRecipe.get()) - return false; - - // Convert to Refined Radiance if eaten enough light sources - if (itemData.getInt("CollectingLight") >= config.lightSourceCountForRefinedRadiance.get()) { - ItemStack newStack = AllItems.REFINED_RADIANCE.asStack(); - ItemEntity newEntity = new ItemEntity(world, entity.getX(), entity.getY(), entity.getZ(), newStack); - newEntity.setMotion(entity.getMotion()); - newEntity.getPersistentData() - .putBoolean("JustCreated", true); - itemData.remove("CollectingLight"); - world.addEntity(newEntity); - - stack.split(1); - entity.setItem(stack); - if (stack.isEmpty()) - entity.remove(); - return false; - } - - // Is inside beacon beam? - boolean isOverBeacon = false; - int entityX = MathHelper.floor(entity.getX()); - int entityZ = MathHelper.floor(entity.getZ()); - int localWorldHeight = world.getHeight(Heightmap.Type.WORLD_SURFACE, entityX, entityZ); - - BlockPos.Mutable testPos = - new BlockPos.Mutable(entityX, Math.min(MathHelper.floor(entity.getY()), localWorldHeight), entityZ); - - while (testPos.getY() > 0) { - testPos.move(Direction.DOWN); - BlockState state = world.getBlockState(testPos); - if (state.getOpacity(world, testPos) >= 15 && state.getBlock() != Blocks.BEDROCK) - break; - if (state.getBlock() == Blocks.BEACON) { - TileEntity te = world.getTileEntity(testPos); - - if (!(te instanceof BeaconTileEntity)) - break; - - BeaconTileEntity bte = (BeaconTileEntity) te; - - if (bte.getLevels() != 0 && !bte.beamSegments.isEmpty()) - isOverBeacon = true; - - break; - } - } - - if (isOverBeacon) { - ItemStack newStack = AllItems.REFINED_RADIANCE.asStack(); - newStack.setCount(stack.getCount()); - data.putBoolean("JustCreated", true); - entity.setItem(newStack); - return false; - } - - // Find a light source and eat it. - Random r = world.rand; - int range = 3; - float rate = 1 / 2f; - if (r.nextFloat() > rate) - return false; - - BlockPos randomOffset = new BlockPos(VecHelper.offsetRandomly(positionVec, r, range)); - BlockState state = world.getBlockState(randomOffset); - if (state.getLightValue(world, randomOffset) == 0) - return false; - if (state.getBlockHardness(world, randomOffset) == -1) - return false; - if (state.getBlock() == Blocks.BEACON) - return false; - - RayTraceContext context = new RayTraceContext(positionVec, VecHelper.getCenterOf(randomOffset), - BlockMode.COLLIDER, FluidMode.NONE, entity); - if (!randomOffset.equals(world.rayTraceBlocks(context) - .getPos())) - return false; - - world.destroyBlock(randomOffset, false); - - ItemStack newStack = stack.split(1); - newStack.getOrCreateTag() - .putInt("CollectingLight", itemData.getInt("CollectingLight") + 1); - ItemEntity newEntity = new ItemEntity(world, entity.getX(), entity.getY(), entity.getZ(), newStack); - newEntity.setMotion(entity.getMotion()); - newEntity.setDefaultPickupDelay(); - world.addEntity(newEntity); - entity.lifespan = 6000; - if (stack.isEmpty()) - entity.remove(); - - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/CombustibleItem.java b/src/main/java/com/simibubi/create/content/curiosities/CombustibleItem.java deleted file mode 100644 index a92cb727d..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/CombustibleItem.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.content.curiosities; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; - -public class CombustibleItem extends Item { - private int burnTime = -1; - - public CombustibleItem(Properties properties) { - super(properties); - } - - public void setBurnTime(int burnTime) { - this.burnTime = burnTime; - } - - @Override - public int getBurnTime(ItemStack itemStack) { - return this.burnTime; - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/curiosities/NoGravMagicalDohickyItem.java b/src/main/java/com/simibubi/create/content/curiosities/NoGravMagicalDohickyItem.java deleted file mode 100644 index 2921241d3..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/NoGravMagicalDohickyItem.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.content.curiosities; - -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; - -public class NoGravMagicalDohickyItem extends Item { - - public NoGravMagicalDohickyItem(Properties p_i48487_1_) { - super(p_i48487_1_); - } - - @Override - public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) { - World world = entity.world; - Vector3d pos = entity.getPositionVec(); - CompoundNBT persistentData = entity.getPersistentData(); - - if (world.isRemote) { - if (world.rand.nextFloat() < getIdleParticleChance(entity)) { - Vector3d ppos = VecHelper.offsetRandomly(pos, world.rand, .5f); - world.addParticle(ParticleTypes.END_ROD, ppos.x, pos.y, ppos.z, 0, -.1f, 0); - } - - if (entity.isSilent() && !persistentData.getBoolean("PlayEffects")) { - Vector3d basemotion = new Vector3d(0, 1, 0); - world.addParticle(ParticleTypes.FLASH, pos.x, pos.y, pos.z, 0, 0, 0); - for (int i = 0; i < 20; i++) { - Vector3d motion = VecHelper.offsetRandomly(basemotion, world.rand, 1); - world.addParticle(ParticleTypes.WITCH, pos.x, pos.y, pos.z, motion.x, motion.y, motion.z); - world.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, motion.x, motion.y, motion.z); - } - persistentData.putBoolean("PlayEffects", true); - } - - return false; - } - - entity.setNoGravity(true); - - if (!persistentData.contains("JustCreated")) - return false; - onCreated(entity, persistentData); - return false; - } - - protected float getIdleParticleChance(ItemEntity entity) { - return MathHelper.clamp(entity.getItem() - .getCount() - 10, 5, 100) / 64f; - } - - protected void onCreated(ItemEntity entity, CompoundNBT persistentData) { - entity.lifespan = 6000; - persistentData.remove("JustCreated"); - - // just a flag to tell the client to play an effect - entity.setSilent(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/RefinedRadianceItem.java b/src/main/java/com/simibubi/create/content/curiosities/RefinedRadianceItem.java deleted file mode 100644 index c853d6be7..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/RefinedRadianceItem.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.content.curiosities; - -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; - -public class RefinedRadianceItem extends NoGravMagicalDohickyItem { - - public RefinedRadianceItem(Properties properties) { - super(properties); - } - - @Override - public boolean hasEffect(ItemStack stack) { - return true; - } - - @Override - protected void onCreated(ItemEntity entity, CompoundNBT persistentData) { - super.onCreated(entity, persistentData); - entity.setMotion(entity.getMotion() - .add(0, .15f, 0)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/ShadowSteelItem.java b/src/main/java/com/simibubi/create/content/curiosities/ShadowSteelItem.java deleted file mode 100644 index 007e0f627..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/ShadowSteelItem.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.content.curiosities; - -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.MathHelper; - -public class ShadowSteelItem extends NoGravMagicalDohickyItem { - - public ShadowSteelItem(Properties properties) { - super(properties); - } - - @Override - protected void onCreated(ItemEntity entity, CompoundNBT persistentData) { - super.onCreated(entity, persistentData); - float yMotion = (entity.fallDistance + 3) / 50f; - entity.setMotion(0, yMotion, 0); - } - - @Override - protected float getIdleParticleChance(ItemEntity entity) { - return (float) (MathHelper.clamp(entity.getItem() - .getCount() - 10, MathHelper.clamp(entity.getMotion().y * 20, 5, 20), 100) / 64f); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java b/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java deleted file mode 100644 index 65768046d..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/TreeFertilizerItem.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.simibubi.create.content.curiosities; - -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationServerWorld; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.SaplingBlock; -import net.minecraft.item.BoneMealItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemUseContext; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.server.ServerWorld; - -public class TreeFertilizerItem extends Item { - - public TreeFertilizerItem(Properties properties) { - super(properties); - } - - @Override - public ActionResultType onItemUse(ItemUseContext context) { - BlockState state = context.getWorld() - .getBlockState(context.getPos()); - Block block = state.getBlock(); - if (block instanceof SaplingBlock) { - - if (context.getWorld().isRemote) { - BoneMealItem.spawnBonemealParticles(context.getWorld(), context.getPos(), 100); - return ActionResultType.SUCCESS; - } - - BlockPos saplingPos = context.getPos(); - TreesDreamWorld world = new TreesDreamWorld((ServerWorld) context.getWorld(), saplingPos); - - for (BlockPos pos : BlockPos.getAllInBoxMutable(-1, 0, -1, 1, 0, 1)) { - if (context.getWorld() - .getBlockState(saplingPos.add(pos)) - .getBlock() == block) - world.setBlockState(pos.up(10), state.with(SaplingBlock.STAGE, 1)); - } - - ((SaplingBlock) block).grow(world, world.getRandom(), BlockPos.ZERO.up(10), - state.with(SaplingBlock.STAGE, 1)); - - for (BlockPos pos : world.blocksAdded.keySet()) { - BlockPos actualPos = pos.add(saplingPos).down(10); - BlockState newState = world.blocksAdded.get(pos); - - // Don't replace Bedrock - if (context.getWorld() - .getBlockState(actualPos) - .getBlockHardness(context.getWorld(), actualPos) == -1) - continue; - // Don't replace solid blocks with leaves - if (!newState.isNormalCube(world, pos) - && !context.getWorld() - .getBlockState(actualPos) - .getCollisionShape(context.getWorld(), actualPos) - .isEmpty()) - continue; - - context.getWorld() - .setBlockState(actualPos, newState); - } - - if (context.getPlayer() != null && !context.getPlayer() - .isCreative()) - context.getItem() - .shrink(1); - return ActionResultType.SUCCESS; - - } - - return super.onItemUse(context); - } - - private class TreesDreamWorld extends PlacementSimulationServerWorld { - private final BlockPos saplingPos; - private final BlockState soil; - - protected TreesDreamWorld(ServerWorld wrapped, BlockPos saplingPos) { - super(wrapped); - this.saplingPos = saplingPos; - soil = wrapped.getBlockState(saplingPos.down()); - } - - @Override - public BlockState getBlockState(BlockPos pos) { - if (pos.getY() <= 9) - return soil; - return super.getBlockState(pos); - } - - @Override - public boolean setBlockState(BlockPos pos, BlockState newState, int flags) { - if (newState.getBlock() == Blocks.PODZOL) - return true; - return super.setBlockState(pos, newState, flags); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java b/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java deleted file mode 100644 index 1b0f7f6e1..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/AllArmorMaterials.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import java.util.function.Supplier; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllSoundEvents; - -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.IArmorMaterial; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.LazyValue; -import net.minecraft.util.SoundEvent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public enum AllArmorMaterials implements IArmorMaterial { - - COPPER("copper", 7, new int[] { 1, 3, 4, 2 }, 25, AllSoundEvents.COPPER_ARMOR_EQUIP.getMainEvent(), 0.0F, 0.0F, - () -> Ingredient.fromItems(AllItems.COPPER_INGOT.get())) - - ; - - private static final int[] MAX_DAMAGE_ARRAY = new int[] { 13, 15, 16, 11 }; - private final String name; - private final int maxDamageFactor; - private final int[] damageReductionAmountArray; - private final int enchantability; - private final SoundEvent soundEvent; - private final float toughness; - private final float knockbackResistance; - private final LazyValue repairMaterial; - - private AllArmorMaterials(String p_i231593_3_, int p_i231593_4_, int[] p_i231593_5_, int p_i231593_6_, - SoundEvent p_i231593_7_, float p_i231593_8_, float p_i231593_9_, Supplier p_i231593_10_) { - this.name = p_i231593_3_; - this.maxDamageFactor = p_i231593_4_; - this.damageReductionAmountArray = p_i231593_5_; - this.enchantability = p_i231593_6_; - this.soundEvent = p_i231593_7_; - this.toughness = p_i231593_8_; - this.knockbackResistance = p_i231593_9_; - this.repairMaterial = new LazyValue<>(p_i231593_10_); - } - - public int getDurability(EquipmentSlotType p_200896_1_) { - return MAX_DAMAGE_ARRAY[p_200896_1_.getIndex()] * this.maxDamageFactor; - } - - public int getDamageReductionAmount(EquipmentSlotType p_200902_1_) { - return this.damageReductionAmountArray[p_200902_1_.getIndex()]; - } - - public int getEnchantability() { - return this.enchantability; - } - - public SoundEvent getSoundEvent() { - return this.soundEvent; - } - - public Ingredient getRepairMaterial() { - return this.repairMaterial.getValue(); - } - - @OnlyIn(Dist.CLIENT) - public String getName() { - return this.name; - } - - public float getToughness() { - return this.toughness; - } - - public float getKnockbackResistance() { - return this.knockbackResistance; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java deleted file mode 100644 index 01ccb623e..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.simibubi.create.Create; - -import net.minecraft.entity.Entity; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.ArmorItem; -import net.minecraft.item.ItemStack; - -public class CopperArmorItem extends ArmorItem { - - public CopperArmorItem(EquipmentSlotType p_i48534_2_, Properties p_i48534_3_) { - super(AllArmorMaterials.COPPER, p_i48534_2_, p_i48534_3_); - } - - public boolean isWornBy(Entity entity) { - for (ItemStack itemStack : entity.getArmorInventoryList()) - if (itemStack.getItem() == this) - return true; - return false; - } - - @Override - public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) { - return String.format("%s:textures/models/armor/copper.png", Create.ID); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java deleted file mode 100644 index f5512c873..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.client.renderer.entity.LivingRenderer; -import net.minecraft.client.renderer.entity.layers.LayerRenderer; -import net.minecraft.client.renderer.entity.model.BipedModel; -import net.minecraft.client.renderer.entity.model.EntityModel; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.Pose; -import net.minecraft.tags.FluidTags; -import net.minecraft.util.Direction; -import net.minecraft.util.StringUtils; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class CopperBacktankArmorLayer> extends LayerRenderer { - - private LivingRenderer renderer; - - public CopperBacktankArmorLayer(LivingRenderer renderer) { - super(renderer); - this.renderer = renderer; - renderer.addLayer(this); - } - - @Override - public void render(MatrixStack ms, IRenderTypeBuffer buffer, int light, LivingEntity entity, float yaw, float pitch, - float pt, float p_225628_8_, float p_225628_9_, float p_225628_10_) { - - if (entity.getPose() == Pose.SLEEPING) - return; - if (!AllItems.COPPER_BACKTANK.get() - .isWornBy(entity)) - return; - - M entityModel = renderer.getEntityModel(); - if (!(entityModel instanceof BipedModel)) - return; - - ms.push(); - BipedModel model = (BipedModel) entityModel; - BlockState renderedState = AllBlocks.COPPER_BACKTANK.getDefaultState() - .with(CopperBacktankBlock.HORIZONTAL_FACING, Direction.SOUTH); - RenderType renderType = RenderType.getCutout(); - - SuperByteBuffer backtank = CreateClient.BUFFER_CACHE.renderBlock(renderedState); - SuperByteBuffer cogs = - CreateClient.BUFFER_CACHE.renderPartial(AllBlockPartials.COPPER_BACKTANK_COGS, renderedState); - - model.bipedBody.rotate(ms); - ms.translate(-1 / 2f, 10 / 16f, 1f); - ms.scale(1, -1, -1); - backtank.light(light) - .renderInto(ms, buffer.getBuffer(renderType)); - - cogs.matrixStacker() - .centre() - .rotateY(180) - .unCentre() - .translate(0, 6.5f / 16, 11f / 16) - .rotate(Direction.EAST, AngleHelper.rad(2 * AnimationTickHolder.getRenderTime(entity.world) % 360)) - .translate(0, -6.5f / 16, -11f / 16); - - cogs.light(light) - .renderInto(ms, buffer.getBuffer(renderType)); - - if (buffer instanceof Impl) - ((Impl) buffer).draw(renderType); - ms.pop(); - - } - - public static void register() { - EntityRendererManager renderManager = Minecraft.getInstance() - .getRenderManager(); - registerOn(renderManager.playerRenderer); - for (EntityRenderer renderer : renderManager.renderers.values()) - registerOn(renderer); - } - - private static void registerOn(EntityRenderer entityRenderer) { - if (!(entityRenderer instanceof LivingRenderer)) - return; - new CopperBacktankArmorLayer<>((LivingRenderer) entityRenderer); - } - - public static void renderRemainingAirOverlay(MatrixStack ms, Impl buffers, int light, int overlay, float pt) { - ClientPlayerEntity player = Minecraft.getInstance().player; - if (player == null) - return; - if (player.isSpectator() || player.isCreative()) - return; - if (!player.getPersistentData() - .contains("VisualBacktankAir")) - return; - if (!player.areEyesInFluid(FluidTags.WATER)) - return; - - int timeLeft = player.getPersistentData() - .getInt("VisualBacktankAir"); - - ms.push(); - - MainWindow window = Minecraft.getInstance() - .getWindow(); - ms.translate(window.getScaledWidth() / 2 + 90, window.getScaledHeight() - 53, 0); - - ITextComponent text = new StringTextComponent(StringUtils.ticksToElapsedTime(timeLeft * 20)); - GuiGameElement.of(AllItems.COPPER_BACKTANK.asStack()) - .at(0, 0) - .render(ms); - int color = 0xFF_FFFFFF; - if (timeLeft < 60 && timeLeft % 2 == 0) { - color = ColorHelper.mixColors(0xFF_FF0000, color, Math.max(timeLeft / 60f, .25f)); - } - Minecraft.getInstance().fontRenderer.drawWithShadow(ms, text, 16, 5, color); - buffers.draw(); - - ms.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java deleted file mode 100644 index 53327ec31..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import java.util.Optional; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllShapes; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; -import com.simibubi.create.foundation.block.ITE; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.IWaterLoggable; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.BlockItem; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.pathfinding.PathType; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -import net.minecraftforge.common.util.FakePlayer; - -public class CopperBacktankBlock extends HorizontalKineticBlock - implements ITE, IWaterLoggable { - - public CopperBacktankBlock(Properties properties) { - super(properties); - setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false)); - } - - @Override - public FluidState getFluidState(BlockState state) { - return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false) - : Fluids.EMPTY.getDefaultState(); - } - - @Override - protected void fillStateContainer(Builder builder) { - builder.add(BlockStateProperties.WATERLOGGED); - super.fillStateContainer(builder); - } - - @Override - public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState, - IWorld world, BlockPos pos, BlockPos neighbourPos) { - if (state.get(BlockStateProperties.WATERLOGGED)) { - world.getPendingFluidTicks() - .scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); - } - return state; - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext context) { - FluidState ifluidstate = context.getWorld() - .getFluidState(context.getPos()); - return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED, - Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER)); - } - - @Override - public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { - return face == Direction.UP; - } - - @Override - public Axis getRotationAxis(BlockState state) { - return Axis.Y; - } - - @Override - public void onBlockPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { - super.onBlockPlacedBy(worldIn, pos, state, placer, stack); - if (worldIn.isRemote) - return; - if (stack == null) - return; - withTileEntityDo(worldIn, pos, te -> { - te.setAirLevel(stack.getOrCreateTag() - .getInt("Air")); - if (stack.hasDisplayName()) - te.setCustomName(stack.getDisplayName()); - }); - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand p_225533_5_, - BlockRayTraceResult p_225533_6_) { - if (player == null) - return ActionResultType.PASS; - if (player instanceof FakePlayer) - return ActionResultType.PASS; - if (player.isSneaking()) - return ActionResultType.PASS; - if (player.getHeldItemMainhand() - .getItem() instanceof BlockItem) - return ActionResultType.PASS; - if (!player.getItemStackFromSlot(EquipmentSlotType.CHEST) - .isEmpty()) - return ActionResultType.PASS; - if (!world.isRemote) { - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, .75f, 1); - player.setItemStackToSlot(EquipmentSlotType.CHEST, getItem(world, pos, state)); - world.destroyBlock(pos, false); - } - return ActionResultType.SUCCESS; - } - - @Override - public ItemStack getItem(IBlockReader p_185473_1_, BlockPos p_185473_2_, BlockState p_185473_3_) { - ItemStack item = AllItems.COPPER_BACKTANK.asStack(); - Optional tileEntityOptional = getTileEntityOptional(p_185473_1_, p_185473_2_); - int air = tileEntityOptional.map(CopperBacktankTileEntity::getAirLevel) - .orElse(0); - ITextComponent customName = tileEntityOptional.map(CopperBacktankTileEntity::getCustomName) - .orElse(null); - item.getOrCreateTag() - .putInt("Air", air); - if (customName != null) - item.setDisplayName(customName); - return item; - } - - @Override - public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, - ISelectionContext p_220053_4_) { - return AllShapes.BACKTANK; - } - - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.COPPER_BACKTANK.create(); - } - - @Override - public Class getTileEntityClass() { - return CopperBacktankTileEntity.class; - } - - @Override - public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) { - return false; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java deleted file mode 100644 index dda0ab339..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.jozufozu.flywheel.backend.instancing.Instancer; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; - -public class CopperBacktankInstance extends SingleRotatingInstance { - - public CopperBacktankInstance(MaterialManager modelManager, KineticTileEntity tile) { - super(modelManager, tile); - } - - @Override - protected Instancer getModel() { - return getRotatingMaterial().getModel(AllBlockPartials.COPPER_BACKTANK_SHAFT, blockState); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java deleted file mode 100644 index 571f8097d..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.MathHelper; - -public class CopperBacktankItem extends CopperArmorItem { - - private BlockItem blockItem; - - public CopperBacktankItem(Properties p_i48534_3_, BlockItem blockItem) { - super(EquipmentSlotType.CHEST, p_i48534_3_); - this.blockItem = blockItem; - } - - @Override - public ActionResultType onItemUse(ItemUseContext p_195939_1_) { - return blockItem.onItemUse(p_195939_1_); - } - - @Override - public boolean isDamageable() { - return false; - } - - @Override - public int getRGBDurabilityForDisplay(ItemStack stack) { - return 0xefefef; - } - - @Override - public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { - if (!isInGroup(p_150895_1_)) - return; - - ItemStack stack = new ItemStack(this); - CompoundNBT nbt = new CompoundNBT(); - nbt.putInt("Air", AllConfigs.SERVER.curiosities.maxAirInBacktank.get()); - stack.setTag(nbt); - p_150895_2_.add(stack); - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) { - return 1 - MathHelper - .clamp(getRemainingAir(stack) / ((float) AllConfigs.SERVER.curiosities.maxAirInBacktank.get()), 0, 1); - } - - @Override - public boolean showDurabilityBar(ItemStack stack) { - return true; - } - - public static int getRemainingAir(ItemStack stack) { - CompoundNBT orCreateTag = stack.getOrCreateTag(); - return orCreateTag.getInt("Air"); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java deleted file mode 100644 index 1fe8b76a6..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.util.Direction; - -public class CopperBacktankRenderer extends KineticTileEntityRenderer { - - public CopperBacktankRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - super.renderSafe(te, partialTicks, ms, buffer, light, overlay); - - SuperByteBuffer cogs = - CreateClient.BUFFER_CACHE.renderPartial(AllBlockPartials.COPPER_BACKTANK_COGS, te.getBlockState()); - cogs.matrixStacker() - .centre() - .rotateY(180 + AngleHelper.horizontalAngle(te.getBlockState() - .get(CopperBacktankBlock.HORIZONTAL_FACING))) - .unCentre() - .translate(0, 6.5f / 16, 11f / 16) - .rotate(Direction.EAST, - AngleHelper.rad(te.getSpeed() / 4f * AnimationTickHolder.getRenderTime(te.getWorld()) % 360)) - .translate(0, -6.5f / 16, -11f / 16); - cogs.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - - @Override - protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { - return PartialBufferer.get(AllBlockPartials.COPPER_BACKTANK_SHAFT, te.getBlockState()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java deleted file mode 100644 index 30b63d8c2..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.particle.AirParticleData; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.INameable; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TranslationTextComponent; - -public class CopperBacktankTileEntity extends KineticTileEntity implements INameable { - - public int airLevel; - public int airLevelTimer; - private ITextComponent customName; - - public CopperBacktankTileEntity(TileEntityType typeIn) { - super(typeIn); - } - - @Override - public void tick() { - super.tick(); - if (getSpeed() == 0) - return; - if (airLevelTimer > 0) { - airLevelTimer--; - return; - } - - int max = getMaxAir(); - if (world.isRemote) { - Vector3d centerOf = VecHelper.getCenterOf(pos); - Vector3d v = VecHelper.offsetRandomly(centerOf, Create.RANDOM, .65f); - Vector3d m = centerOf.subtract(v); - if (airLevel != max) - world.addParticle(new AirParticleData(1, .05f), v.x, v.y, v.z, m.x, m.y, m.z); - return; - } - - if (airLevel == max) - return; - - float abs = Math.abs(getSpeed()); - int increment = MathHelper.clamp(((int) abs - 100) / 20, 1, 5); - airLevel = Math.min(max, airLevel + increment); - if (airLevel == max) - sendData(); - airLevelTimer = MathHelper.clamp((int) (128f - abs / 5f) - 108, 0, 20); - } - - protected int getMaxAir() { - return AllConfigs.SERVER.curiosities.maxAirInBacktank.get(); - } - - public int getAirLevel() { - return airLevel; - } - - public void setAirLevel(int airLevel) { - this.airLevel = airLevel; - sendData(); - } - - public void setCustomName(ITextComponent customName) { - this.customName = customName; - } - - public ITextComponent getCustomName() { - return customName; - } - - @Override - protected void write(CompoundNBT compound, boolean clientPacket) { - super.write(compound, clientPacket); - compound.putInt("Air", airLevel); - compound.putInt("Timer", airLevelTimer); - if (this.customName != null) - compound.putString("CustomName", ITextComponent.Serializer.toJson(this.customName)); - } - - @Override - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - super.fromTag(state, compound, clientPacket); - int prev = airLevel; - airLevel = compound.getInt("Air"); - airLevelTimer = compound.getInt("Timer"); - if (compound.contains("CustomName", 8)) - this.customName = ITextComponent.Serializer.fromJson(compound.getString("CustomName")); - if (prev != 0 && prev != airLevel && airLevel == getMaxAir() && clientPacket) - playFilledEffect(); - } - - protected void playFilledEffect() { - AllSoundEvents.CONFIRM.playAt(world, pos, 0.4f, 1, true); - Vector3d baseMotion = new Vector3d(.25, 0.1, 0); - Vector3d baseVec = VecHelper.getCenterOf(pos); - for (int i = 0; i < 360; i += 10) { - Vector3d m = VecHelper.rotate(baseMotion, i, Axis.Y); - Vector3d v = baseVec.add(m.normalize() - .scale(.25f)); - - world.addParticle(ParticleTypes.SPIT, v.x, v.y, v.z, m.x, m.y, m.z); - } - } - - @Override - public ITextComponent getName() { - return this.customName != null ? this.customName - : new TranslationTextComponent(AllItems.COPPER_BACKTANK.get() - .getTranslationKey()); - } - - @Override - public boolean shouldRenderNormally() { - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java deleted file mode 100644 index 9b83bbb72..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.Pose; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; - -@EventBusSubscriber -public class DivingBootsItem extends CopperArmorItem { - - public DivingBootsItem(Properties p_i48534_3_) { - super(EquipmentSlotType.FEET, p_i48534_3_); - } - - @SubscribeEvent - public static void accellerateDescentUnderwater(LivingUpdateEvent event) { - LivingEntity entity = event.getEntityLiving(); - if (!affects(entity)) - return; - - Vector3d motion = entity.getMotion(); - Boolean isJumping = ObfuscationReflectionHelper.getPrivateValue(LivingEntity.class, entity, "field_70703_bu"); - entity.onGround |= entity.collidedVertically; - - if (isJumping && entity.onGround) { - motion = motion.add(0, .5f, 0); - entity.onGround = false; - } else { - motion = motion.add(0, -0.05f, 0); - } - - float multiplier = 1.3f; - if (motion.mul(1, 0, 1) - .length() < 0.145f && (entity.moveForward > 0 || entity.moveStrafing != 0) && !entity.isSneaking()) - motion = motion.mul(multiplier, 1, multiplier); - entity.setMotion(motion); - } - - protected static boolean affects(LivingEntity entity) { - if (!AllItems.DIVING_BOOTS.get() - .isWornBy(entity)) { - entity.getPersistentData() - .remove("HeavyBoots"); - return false; - } - - NBTHelper.putMarker(entity.getPersistentData(), "HeavyBoots"); - if (!entity.isInWater()) - return false; - if (entity.getPose() == Pose.SWIMMING) - return false; - if (entity instanceof PlayerEntity) { - PlayerEntity playerEntity = (PlayerEntity) entity; - if (playerEntity.abilities.isFlying) - return false; - } - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java deleted file mode 100644 index 6562b9416..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.simibubi.create.content.curiosities.armor; - -import com.simibubi.create.AllItems; - -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.Effects; -import net.minecraft.tags.FluidTags; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class DivingHelmetItem extends CopperArmorItem { - - public DivingHelmetItem(Properties p_i48534_3_) { - super(EquipmentSlotType.HEAD, p_i48534_3_); - } - - @SubscribeEvent - public static void breatheUnderwater(LivingUpdateEvent event) { - LivingEntity entity = event.getEntityLiving(); - World world = entity.world; - boolean second = world.getGameTime() % 20 == 0; - boolean drowning = entity.getAir() == 0; - - if (world.isRemote) - entity.getPersistentData() - .remove("VisualBacktankAir"); - - if (!AllItems.DIVING_HELMET.get() - .isWornBy(entity)) - return; - if (!entity.areEyesInFluid(FluidTags.WATER)) - return; - if (entity instanceof PlayerEntity && ((PlayerEntity) entity).isCreative()) - return; - - ItemStack backtank = ItemStack.EMPTY; - for (ItemStack itemStack : entity.getArmorInventoryList()) { - if (AllItems.COPPER_BACKTANK.isIn(itemStack)) { - backtank = itemStack; - break; - } - } - - if (backtank.isEmpty()) - return; - - CompoundNBT tag = backtank.getOrCreateTag(); - int airRemaining = tag.getInt("Air"); - if (airRemaining == 0) - return; - - if (drowning) - entity.setAir(10); - - if (world.isRemote) - entity.getPersistentData() - .putInt("VisualBacktankAir", airRemaining); - - if (!second) - return; - - entity.setAir(Math.min(entity.getMaxAir(), entity.getAir() + 10)); - entity.addPotionEffect(new EffectInstance(Effects.WATER_BREATHING, 30, 0, true, false, true)); - tag.putInt("Air", airRemaining - 1); - backtank.setTag(tag); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorBlock.java b/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorBlock.java deleted file mode 100644 index 28d493cc5..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorBlock.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.simibubi.create.content.curiosities.projector; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.foundation.block.ITE; -import com.simibubi.create.foundation.gui.ScreenOpener; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; - -public class ChromaticProjectorBlock extends Block implements ITE { - public ChromaticProjectorBlock(Properties p_i48440_1_) { - super(p_i48440_1_); - } - - @Override - public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn, - BlockRayTraceResult hit) { - ItemStack held = player.getHeldItemMainhand(); - if (AllItems.WRENCH.isIn(held)) - return ActionResultType.PASS; - - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, - () -> () -> withTileEntityDo(worldIn, pos, te -> this.displayScreen(te, player))); - return ActionResultType.SUCCESS; - } - - @OnlyIn(value = Dist.CLIENT) - protected void displayScreen(ChromaticProjectorTileEntity te, PlayerEntity player) { - if (player instanceof ClientPlayerEntity) - ScreenOpener.open(new ChromaticProjectorScreen(te)); - } - - @Override - public boolean hasTileEntity(BlockState state) { - return true; - } - - @Nullable - @Override - public TileEntity createTileEntity(BlockState state, IBlockReader world) { - return AllTileEntities.CHROMATIC_PROJECTOR.create(); - } - - @Override - public Class getTileEntityClass() { - return ChromaticProjectorTileEntity.class; - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorInstance.java b/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorInstance.java deleted file mode 100644 index 5977a827c..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorInstance.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.simibubi.create.content.curiosities.projector; - -import com.jozufozu.flywheel.backend.instancing.IDynamicInstance; -import com.jozufozu.flywheel.backend.instancing.MaterialManager; -import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance; -import com.simibubi.create.foundation.render.effects.EffectsHandler; - -public class ChromaticProjectorInstance extends TileEntityInstance implements IDynamicInstance { - - public ChromaticProjectorInstance(MaterialManager renderer, ChromaticProjectorTileEntity tile) { - super(renderer, tile); - } - - @Override - public void beginFrame() { - EffectsHandler.getInstance().addSphere(tile.getFilter()); - } - - @Override - public boolean decreaseFramerateWithDistance() { - return false; - } - - @Override - public void remove() { - - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorScreen.java b/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorScreen.java deleted file mode 100644 index 1478f20cd..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorScreen.java +++ /dev/null @@ -1,315 +0,0 @@ -package com.simibubi.create.content.curiosities.projector; - -import java.util.Collections; -import java.util.Vector; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.gui.AbstractSimiScreen; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.widgets.IconButton; -import com.simibubi.create.foundation.gui.widgets.ScrollInput; -import com.simibubi.create.foundation.gui.widgets.SelectionScrollInput; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class ChromaticProjectorScreen extends AbstractSimiScreen { - - private final ItemStack renderedItem = AllBlocks.CHROMATIC_PROJECTOR.asStack(); - private final AllGuiTextures background = AllGuiTextures.PROJECTOR; - private final int guiBottom = guiTop + background.height; - private final int guiRight = guiLeft + background.width; - private IconButton confirmButton; - - private final ITextComponent title = Lang.translate("gui.chromatic_projector.title"); - private final Vector stages; - - private Vector> inputs; - - ChromaticProjectorTileEntity tile; - - private ScrollInput radius; - private ScrollInput density; - private ScrollInput feather; - private ScrollInput fade; - - private IconButton blend; - - private ScrollInput strength; - private IconButton fieldEffect; - - private IconButton rChannel; - private IconButton gChannel; - private IconButton bChannel; - - public ChromaticProjectorScreen(ChromaticProjectorTileEntity te) { - this.tile = te; - this.stages = te.stages; - } - - private static Integer step(ScrollValueBehaviour.StepContext ctx, int base) { - if (ctx.control) return 1; - return base * (ctx.shift ? 5 : 1) - ctx.currentValue % base; - } - - @Override - protected void init() { - setWindowSize(background.width + 50, background.height); - super.init(); - widgets.clear(); - - inputs = new Vector<>(FilterStep.MAX_STEPS); - for (int row = 0; row < inputs.capacity(); row++) - inputs.add(new Vector<>(2)); - - for (int row = 0; row < stages.size(); row++) - initInputsOfRow(row); - - int guiBottom = guiTop + background.height; - int guiRight = guiLeft + background.width; - confirmButton = - new IconButton(guiRight - 33, guiBottom - 26, AllIcons.I_CONFIRM); - widgets.add(confirmButton); - - initEffectSettings(); - initMetaSettings(); - } - - private void initMetaSettings() { - int guiBottom = guiTop + background.height; - int y = guiBottom - 23; - - blend = new IconButton(guiLeft + 16, y, AllIcons.I_FX_BLEND); - blend.setToolTip(Lang.translate("gui.chromatic_projector.blend")); - - int channelX = guiLeft + 39; - rChannel = new IconButton(channelX, y, AllIcons.I_FX_BLEND); - rChannel.setToolTip(new StringTextComponent("R")); - channelX += 18; - gChannel = new IconButton(channelX, y, AllIcons.I_FX_BLEND); - gChannel.setToolTip(new StringTextComponent("G")); - channelX += 18; - bChannel = new IconButton(channelX, y, AllIcons.I_FX_BLEND); - bChannel.setToolTip(new StringTextComponent("B")); - - fieldEffect = new IconButton(guiLeft + 135, y, tile.field ? AllIcons.I_FX_FIELD_ON : AllIcons.I_FX_FIELD_OFF); - fieldEffect.setToolTip(Lang.translate("gui.chromatic_projector.field")); - - strength = new ScrollInput(guiLeft + 159, y, 25, 18) - .titled(Lang.translate("gui.chromatic_projector.strength")) - .withStepFunction(ctx -> step(ctx, 5)) - .calling(tile::setStrength) - .withRange(-100, 101) - .setState((int) (tile.strength * 100)); - - Collections.addAll(widgets, blend, rChannel, gChannel, bChannel, fieldEffect, strength); - } - - private void initEffectSettings() { - int x = guiLeft + 188; - int y = guiTop + 40; - - radius = new ScrollInput(x, y, 28, 18) - .titled(Lang.translate("gui.chromatic_projector.radius")) - .withStepFunction(ctx -> step(ctx, 2)) - .calling(tile::setRadius) - .withRange(0, 201) - .setState((int) (tile.radius * 2)); - y += 22; - feather = new ScrollInput(x, y, 28, 18) - .titled(Lang.translate("gui.chromatic_projector.feather")) - .withStepFunction(ctx -> step(ctx, 5)) - .calling(tile::setFeather) - .withRange(0, 201) - .setState((int) (tile.feather * 10)); - y += 22; - density = new ScrollInput(x, y, 28, 18) - .titled(Lang.translate("gui.chromatic_projector.density")) - .withStepFunction(ctx -> step(ctx, 10)) - .calling(tile::setDensity) - .withRange(0, 401) - .setState((int) (tile.density * 100)); - y += 22; - fade = new ScrollInput(x, y, 28, 18) - .titled(Lang.translate("gui.chromatic_projector.fade")) - .withStepFunction(ctx -> step(ctx, 1)) - .calling(tile::setFade) - .withRange(0, 51) - .setState((int) (tile.fade * 10)); - - Collections.addAll(widgets, radius, density, feather, fade); - } - - public void initInputsOfRow(int row) { - int x = guiLeft + 30; - int y = guiTop + 18; - int rowHeight = 22; - - Vector rowInputs = inputs.get(row); - rowInputs.forEach(widgets::remove); - rowInputs.clear(); - FilterStep filter = stages.get(row); - - ScrollInput type = - new SelectionScrollInput(x, y + rowHeight * row, 86, 18) - .forOptions(ColorEffect.getOptions()) - .calling(state -> stageUpdated(row, state)) - .setState(filter.filter.id) - .titled(Lang.translate("gui.chromatic_projector.filter")); - ScrollInput value = - new ScrollInput(x + 86 + 2, y + rowHeight * row, 28, 18) - .calling(state -> filter.value = state); - - rowInputs.add(type); - rowInputs.add(value); - - widgets.addAll(rowInputs); - updateParamsOfRow(row); - } - - public void updateParamsOfRow(int row) { - FilterStep instruction = stages.get(row); - Vector rowInputs = inputs.get(row); - ColorEffect def = instruction.filter; - boolean hasValue = def.hasParameter; - - ScrollInput value = rowInputs.get(1); - value.active = value.visible = hasValue; - if (hasValue) - value.withRange(def.minValue, def.maxValue + 1) - //.titled(Lang.translate(def.parameterKey)) - .setState(instruction.value) - .onChanged(); - - value.withStepFunction(def.step()); - } - - @Override - protected void renderWindow(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - int hFontColor = 0xD3CBBE; - background.draw(matrixStack, this, guiLeft, guiTop); - - for (int row = 0; row < stages.capacity(); row++) { - AllGuiTextures toDraw = AllGuiTextures.PROJECTOR_EMPTY; - int yOffset = toDraw.height * row; - if (row >= stages.size()) { - toDraw.draw(matrixStack, guiLeft, guiTop + 14 + yOffset); - continue; - } - - FilterStep step = stages.get(row); - ColorEffect def = step.filter; - def.background.draw(matrixStack, guiLeft, guiTop + 14 + yOffset); - - if (def != ColorEffect.END) - label(matrixStack, 36, yOffset - 3, Lang.translate(def.translationKey)); - if (def.hasParameter) { - String text = step.filter.formatValue(step.value); - int stringWidth = textRenderer.getStringWidth(text); - label(matrixStack, 118 + (12 - stringWidth / 2), yOffset - 3, new StringTextComponent(text)); - } - } - - renderScroll(matrixStack, radius, 2f); - renderScroll(matrixStack, density, 100f); - renderScroll(matrixStack, feather, 10f); - renderScroll(matrixStack, fade, 10f); - - renderScroll(matrixStack, strength, 100f); - - textRenderer.drawWithShadow(matrixStack, title, guiLeft - 3 + (background.width - textRenderer.getWidth(title)) / 2, guiTop + 3, - 0xffffff); - - GuiGameElement.of(renderedItem) - .scale(5) - .at(guiLeft + background.width + 10, guiTop + 140, -150) - .render(matrixStack); - } - - private void renderScroll(MatrixStack matrixStack, ScrollInput input, float divisor) { - - String text = String.valueOf(input.getState() / divisor); - - int stringWidth = textRenderer.getStringWidth(text); - textRenderer.drawWithShadow(matrixStack, text, input.x + 2, input.y + 5, 0xFFFFEE); - } - - private void label(MatrixStack matrixStack, int x, int y, ITextComponent text) { - textRenderer.drawWithShadow(matrixStack, text, guiLeft + x, guiTop + 26 + y, 0xFFFFEE); - } - - public void sendPacket() { - AllPackets.channel.sendToServer(new ConfigureProjectorPacket(tile)); - } - - @Override - public void removed() { - sendPacket(); - } - - private void stageUpdated(int index, int state) { - ColorEffect newValue = ColorEffect.all.get(state); - stages.get(index).filter = newValue; - stages.get(index).value = newValue.defaultValue; - updateParamsOfRow(index); - if (newValue == ColorEffect.END) { - for (int i = stages.size() - 1; i > index; i--) { - stages.remove(i); - Vector rowInputs = inputs.get(i); - rowInputs.forEach(widgets::remove); - rowInputs.clear(); - } - } else { - if (index + 1 < stages.capacity() && index + 1 == stages.size()) { - stages.add(new FilterStep(ColorEffect.END)); - initInputsOfRow(index + 1); - } - } - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - if (confirmButton.isHovered()) { - Minecraft.getInstance().player.closeScreen(); - return true; - } - - if (blend.isHovered()) { - tile.blend = !tile.blend; - return true; - } - - if (fieldEffect.isHovered()) { - tile.field = !tile.field; - - fieldEffect.setIcon(tile.field ? AllIcons.I_FX_FIELD_ON : AllIcons.I_FX_FIELD_OFF); - return fieldEffect.mouseClicked(x, y, button); - } - - if (rChannel.isHovered()) { - tile.rMask = !tile.rMask; - return true; - } - - if (gChannel.isHovered()) { - tile.gMask = !tile.gMask; - return true; - } - - if (bChannel.isHovered()) { - tile.bMask = !tile.bMask; - return true; - } - - return super.mouseClicked(x, y, button); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorTileEntity.java deleted file mode 100644 index ad80feb79..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/projector/ChromaticProjectorTileEntity.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.simibubi.create.content.curiosities.projector; - -import java.util.Vector; - -import com.jozufozu.flywheel.backend.instancing.IInstanceRendered; -import com.simibubi.create.foundation.render.effects.FilterSphere; -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.common.util.Constants; - -public class ChromaticProjectorTileEntity extends SyncedTileEntity implements IInstanceRendered { - - Vector stages = FilterStep.createDefault(); - - float radius = 3f; - - float feather = 1; - float density = 1; - float fade = 1; - boolean blend = true; - - public boolean surface = true; - public boolean field = true; - public float strength = 1; - - public boolean rMask = true; - public boolean gMask = true; - public boolean bMask = true; - - public ChromaticProjectorTileEntity(TileEntityType te) { - super(te); - } - - public FilterSphere getFilter() { - - BlockPos pos = getPos(); - FilterSphere sphere = new FilterSphere(); - - sphere.x = (float) (pos.getX() + 0.5); - sphere.y = (float) (pos.getY() + 0.5); - sphere.z = (float) (pos.getZ() + 0.5); - sphere.radius = radius; - - sphere.feather = feather; - sphere.density = density; - sphere.fade = fade; - sphere.blend = blend; - - sphere.surface = surface; - sphere.field = field; - sphere.strength = strength; - - sphere.rMask = rMask; - sphere.gMask = gMask; - sphere.bMask = bMask; - - sphere.filter = FilterStep.fold(stages); - return sphere; - } - - public ChromaticProjectorTileEntity setRadius(int radius) { - this.radius = radius / 2f; - return this; - } - - public ChromaticProjectorTileEntity setDensity(int density) { - this.density = density / 100f; - return this; - } - - public ChromaticProjectorTileEntity setFeather(int feather) { - this.feather = feather / 10f; - return this; - } - - public ChromaticProjectorTileEntity setFade(int fade) { - this.fade = fade / 10f; - return this; - } - - public ChromaticProjectorTileEntity setBlend(boolean blend) { - this.blend = blend; - return this; - } - - public ChromaticProjectorTileEntity setStrength(int strength) { - this.strength = strength / 100f; - return this; - } - - @Override - public CompoundNBT write(CompoundNBT tag) { - super.write(tag); - - tag.put("filters", FilterStep.writeAll(stages)); - - tag.putFloat("radius", radius); - - tag.putFloat("feather", feather); - tag.putFloat("density", density); - tag.putFloat("fade", fade); - tag.putBoolean("blend", blend); - - tag.putBoolean("surface", surface); - tag.putBoolean("field", field); - tag.putFloat("strength", strength); - - tag.putBoolean("rMask", rMask); - tag.putBoolean("gMask", gMask); - tag.putBoolean("bMask", bMask); - - return tag; - } - - @Override - public void fromTag(BlockState state, CompoundNBT tag) { - super.fromTag(state, tag); - - stages = FilterStep.readAll(tag.getList("filters", Constants.NBT.TAG_COMPOUND)); - - radius = tag.getFloat("radius"); - - feather = tag.getFloat("feather"); - density = tag.getFloat("density"); - fade = tag.getFloat("fade"); - blend = tag.getBoolean("blend"); - - surface = tag.getBoolean("surface"); - field = tag.getBoolean("field"); - strength = tag.getFloat("strength"); - - rMask = tag.getBoolean("rMask"); - gMask = tag.getBoolean("gMask"); - bMask = tag.getBoolean("bMask"); - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/projector/ColorEffect.java b/src/main/java/com/simibubi/create/content/curiosities/projector/ColorEffect.java deleted file mode 100644 index d9dd6ca09..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/projector/ColorEffect.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.simibubi.create.content.curiosities.projector; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.function.Function; -import java.util.function.Supplier; - -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.render.effects.ColorMatrices; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.text.ITextComponent; - -public class ColorEffect { - static final ArrayList all = new ArrayList<>(); - static final HashMap lookup = new HashMap<>(); - private static int nextId = 0; - - public static final ColorEffect SEPIA = create("sepia", ColorMatrices::sepia); - public static final ColorEffect GRAYSCALE = create("grayscale", ColorMatrices::grayscale); - public static final ColorEffect DARKEN = create("darken", ColorMatrices::darken).setDefaultValue(20); - public static final ColorEffect CONTRAST = create("contrast", ColorMatrices::contrast).setRange(0, 200).setDefaultValue(100); - public static final ColorEffect SATURATE = create("saturate", ColorMatrices::saturate).setRange(0, 200); - public static final ColorEffect HUE_SHIFT = create("hue_shift", ColorMatrices::hueShift).setRange(0, 360).setDivisor(1f).setDefaultValue(120); - public static final ColorEffect INVERT = create("invert", ColorMatrices::invert); - public static final ColorEffect END = create("end", ColorMatrices::identity).setBackground(AllGuiTextures.PROJECTOR_END); - - boolean hasParameter; - AllGuiTextures background; - - int defaultValue = 100; - int minValue = 0; - int maxValue = 100; - float divisor = 100f; - - final int id; - final FilterFactory filter; - final String name; - final String translationKey; - - public ColorEffect(String name, FilterFactory filter) { - this.filter = filter; - this.name = name; - this.translationKey = "gui.chromatic_projector.filter." + Lang.asId(name); - this.id = nextId++; - - lookup.put(name, this); - all.add(this); - } - - public ColorEffect setHasParameter(boolean hasParameter) { - this.hasParameter = hasParameter; - return setBackground(hasParameter ? AllGuiTextures.PROJECTOR_FILTER_STRENGTH : AllGuiTextures.PROJECTOR_FILTER); - } - - public ColorEffect setBackground(AllGuiTextures background) { - this.background = background; - return this; - } - - public ColorEffect setDefaultValue(int defaultValue) { - this.defaultValue = defaultValue; - return this; - } - - public ColorEffect setRange(int minValue, int maxValue) { - this.minValue = minValue; - this.maxValue = maxValue; - return this; - } - - public ColorEffect setDivisor(float divisor) { - this.divisor = divisor; - return this; - } - - public Function step() { - return c -> { - if (c.control) return 1; - if (c.shift) return 20; - return 5; - }; - } - - String formatValue(int value) { - if (this == HUE_SHIFT) - return value + Lang.translate("generic.unit.degrees").getString(); - return "" + value; - } - - static List getOptions() { - List options = new ArrayList<>(); - for (ColorEffect entry : all) - options.add(Lang.translate(entry.translationKey)); - return options; - } - - @FunctionalInterface - public interface FilterFactory { - Matrix4f create(float param); - } - - public static ColorEffect create(String name, Supplier filter) { - return new ColorEffect(name, $ -> filter.get()).setHasParameter(false); - } - - public static ColorEffect create(String name, FilterFactory filter) { - return new ColorEffect(name, filter).setHasParameter(true); - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/projector/ConfigureProjectorPacket.java b/src/main/java/com/simibubi/create/content/curiosities/projector/ConfigureProjectorPacket.java deleted file mode 100644 index 89eb463b3..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/projector/ConfigureProjectorPacket.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.simibubi.create.content.curiosities.projector; - -import java.util.Vector; -import java.util.stream.Collectors; - -import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.PacketBuffer; - -public class ConfigureProjectorPacket extends TileEntityConfigurationPacket { - - Vector stages; - float radius; - - float feather; - float density; - float fade; - boolean blend; - - public boolean surface; - public boolean field; - public float strength; - - public boolean rMask; - public boolean gMask; - public boolean bMask; - - public ConfigureProjectorPacket(PacketBuffer buffer) { - super(buffer); - } - - public ConfigureProjectorPacket(ChromaticProjectorTileEntity tile) { - super(tile.getPos()); - - stages = tile.stages.stream() - .map(FilterStep::write) - .collect(Collectors.toCollection(Vector::new)); - radius = tile.radius; - - feather = tile.feather; - density = tile.density; - fade = tile.fade; - blend = tile.blend; - - surface = tile.surface; - field = tile.field; - strength = tile.strength; - - rMask = tile.rMask; - gMask = tile.gMask; - bMask = tile.bMask; - } - - @Override - protected void writeSettings(PacketBuffer buffer) { - buffer.writeFloat(radius); - - buffer.writeFloat(feather); - buffer.writeFloat(density); - buffer.writeFloat(fade); - buffer.writeBoolean(blend); - - buffer.writeBoolean(surface); - buffer.writeBoolean(field); - buffer.writeFloat(strength); - - buffer.writeBoolean(rMask); - buffer.writeBoolean(gMask); - buffer.writeBoolean(bMask); - - buffer.writeInt(stages.size()); - for (CompoundNBT stage : stages) { - buffer.writeCompoundTag(stage); - } - } - - @Override - protected void readSettings(PacketBuffer buffer) { - radius = buffer.readFloat(); - - feather = buffer.readFloat(); - density = buffer.readFloat(); - fade = buffer.readFloat(); - blend = buffer.readBoolean(); - - surface = buffer.readBoolean(); - field = buffer.readBoolean(); - strength = buffer.readFloat(); - - rMask = buffer.readBoolean(); - gMask = buffer.readBoolean(); - bMask = buffer.readBoolean(); - - int count = buffer.readInt(); - stages = new Vector<>(FilterStep.MAX_STEPS); - - for (int i = 0; i < count; i++) { - stages.add(buffer.readCompoundTag()); - } - } - - @Override - protected void applySettings(ChromaticProjectorTileEntity tile) { - tile.stages = stages.stream() - .map(FilterStep::new) - .collect(Collectors.toCollection(Vector::new)); - - tile.radius = radius; - - tile.feather = feather; - tile.density = density; - tile.fade = fade; - tile.blend = blend; - - tile.surface = surface; - tile.field = field; - tile.strength = strength; - - tile.rMask = rMask; - tile.gMask = gMask; - tile.bMask = bMask; - - tile.sendData(); - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/projector/FilterStep.java b/src/main/java/com/simibubi/create/content/curiosities/projector/FilterStep.java deleted file mode 100644 index 5e745b8af..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/projector/FilterStep.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.simibubi.create.content.curiosities.projector; - -import java.util.Iterator; -import java.util.Vector; - -import com.simibubi.create.foundation.render.effects.ColorMatrices; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.util.math.vector.Matrix4f; - -public class FilterStep { - - public static final int MAX_STEPS = 6; - ColorEffect filter; - int value; - - public FilterStep(ColorEffect filter) { - this.filter = filter; - } - - public FilterStep(ColorEffect filter, int value) { - this.filter = filter; - this.value = value; - } - - public FilterStep(CompoundNBT nbt) { - this.filter = ColorEffect.lookup.get(nbt.getString("id")); - this.value = nbt.getInt("value"); - } - - public Matrix4f createFilter() { - return filter.filter.create(value / filter.divisor); - } - - public CompoundNBT write() { - CompoundNBT nbt = new CompoundNBT(); - - nbt.putString("id", filter.name); - nbt.putInt("value", value); - - return nbt; - } - - public static Vector readAll(ListNBT list) { - Vector steps = new Vector<>(MAX_STEPS); - - for (int i = 0; i < list.size(); i++) { - steps.add(new FilterStep(list.getCompound(i))); - } - - return steps; - } - - public static ListNBT writeAll(Vector filters) { - ListNBT out = new ListNBT(); - - for (FilterStep filter : filters) { - out.add(filter.write()); - } - - return out; - } - - public static Matrix4f fold(Vector filters) { - Iterator stepIterator = filters.stream().filter(it -> it != null && it.filter != ColorEffect.END).iterator(); - - if (stepIterator.hasNext()) { - Matrix4f accum = stepIterator.next().createFilter(); - - stepIterator.forEachRemaining(filterStep -> accum.multiply(filterStep.createFilter())); - - return accum; - } - - return ColorMatrices.identity(); - } - - public static Vector createDefault() { - Vector instructions = new Vector<>(MAX_STEPS); - instructions.add(new FilterStep(ColorEffect.SEPIA, 100)); - instructions.add(new FilterStep(ColorEffect.END)); - return instructions; - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java deleted file mode 100644 index 5ad5d2c63..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryEffectPacket.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class SymmetryEffectPacket extends SimplePacketBase { - - private BlockPos mirror; - private List positions; - - public SymmetryEffectPacket(BlockPos mirror, List positions) { - this.mirror = mirror; - this.positions = positions; - } - - public SymmetryEffectPacket(PacketBuffer buffer) { - mirror = buffer.readBlockPos(); - int amt = buffer.readInt(); - positions = new ArrayList<>(amt); - for (int i = 0; i < amt; i++) { - positions.add(buffer.readBlockPos()); - } - } - - public void write(PacketBuffer buffer) { - buffer.writeBlockPos(mirror); - buffer.writeInt(positions.size()); - for (BlockPos blockPos : positions) { - buffer.writeBlockPos(blockPos); - } - } - - public void handle(Supplier ctx) { - ctx.get().enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - if (Minecraft.getInstance().player.getPositionVec().distanceTo(Vector3d.of(mirror)) > 100) - return; - for (BlockPos to : positions) - SymmetryHandler.drawEffect(mirror, to); - })); - ctx.get().setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java deleted file mode 100644 index d21926abf..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryHandler.java +++ /dev/null @@ -1,202 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry; - -import java.util.Random; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.curiosities.symmetry.mirror.EmptyMirror; -import com.simibubi.create.content.curiosities.symmetry.mirror.SymmetryMirror; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.particles.RedstoneParticleData; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.RenderWorldLastEvent; -import net.minecraftforge.client.model.data.EmptyModelData; -import net.minecraftforge.event.TickEvent.ClientTickEvent; -import net.minecraftforge.event.TickEvent.Phase; -import net.minecraftforge.event.world.BlockEvent.BreakEvent; -import net.minecraftforge.event.world.BlockEvent.EntityPlaceEvent; -import net.minecraftforge.eventbus.api.EventPriority; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; - -@EventBusSubscriber(bus = Bus.FORGE) -public class SymmetryHandler { - - private static int tickCounter = 0; - - @SubscribeEvent(priority = EventPriority.LOWEST) - public static void onBlockPlaced(EntityPlaceEvent event) { - if (event.getWorld() - .isRemote()) - return; - if (!(event.getEntity() instanceof PlayerEntity)) - return; - - PlayerEntity player = (PlayerEntity) event.getEntity(); - PlayerInventory inv = player.inventory; - for (int i = 0; i < PlayerInventory.getHotbarSize(); i++) { - if (!inv.getStackInSlot(i) - .isEmpty() - && inv.getStackInSlot(i) - .getItem() == AllItems.WAND_OF_SYMMETRY.get()) { - SymmetryWandItem.apply(player.world, inv.getStackInSlot(i), player, event.getPos(), - event.getPlacedBlock()); - } - } - } - - @SubscribeEvent(priority = EventPriority.LOWEST) - public static void onBlockDestroyed(BreakEvent event) { - if (event.getWorld() - .isRemote()) - return; - - PlayerEntity player = event.getPlayer(); - PlayerInventory inv = player.inventory; - for (int i = 0; i < PlayerInventory.getHotbarSize(); i++) { - if (!inv.getStackInSlot(i) - .isEmpty() && AllItems.WAND_OF_SYMMETRY.isIn(inv.getStackInSlot(i))) { - SymmetryWandItem.remove(player.world, inv.getStackInSlot(i), player, event.getPos()); - } - } - } - - @OnlyIn(Dist.CLIENT) - @SubscribeEvent - public static void render(RenderWorldLastEvent event) { - Minecraft mc = Minecraft.getInstance(); - ClientPlayerEntity player = mc.player; - - for (int i = 0; i < PlayerInventory.getHotbarSize(); i++) { - ItemStack stackInSlot = player.inventory.getStackInSlot(i); - if (!AllItems.WAND_OF_SYMMETRY.isIn(stackInSlot)) - continue; - if (!SymmetryWandItem.isEnabled(stackInSlot)) - continue; - SymmetryMirror mirror = SymmetryWandItem.getMirror(stackInSlot); - if (mirror instanceof EmptyMirror) - continue; - - BlockPos pos = new BlockPos(mirror.getPosition()); - - float yShift = 0; - double speed = 1 / 16d; - yShift = MathHelper.sin((float) (AnimationTickHolder.getRenderTime() * speed)) / 5f; - - IRenderTypeBuffer.Impl buffer = Minecraft.getInstance() - .getBufferBuilders() - .getEntityVertexConsumers(); - ActiveRenderInfo info = mc.gameRenderer.getActiveRenderInfo(); - Vector3d view = info.getProjectedView(); - - MatrixStack ms = event.getMatrixStack(); - ms.push(); - ms.translate(-view.getX(), -view.getY(), -view.getZ()); - ms.translate(pos.getX(), pos.getY(), pos.getZ()); - ms.translate(0, yShift + .2f, 0); - mirror.applyModelTransform(ms); - IBakedModel model = mirror.getModel() - .get(); - IVertexBuilder builder = buffer.getBuffer(RenderType.getSolid()); - - mc.getBlockRendererDispatcher() - .getBlockModelRenderer() - .renderModel(player.world, model, Blocks.AIR.getDefaultState(), pos, ms, builder, true, - player.world.getRandom(), MathHelper.getPositionRandom(pos), OverlayTexture.DEFAULT_UV, - EmptyModelData.INSTANCE); - - buffer.draw(); - ms.pop(); - } - } - - @OnlyIn(Dist.CLIENT) - @SubscribeEvent - public static void onClientTick(ClientTickEvent event) { - if (event.phase == Phase.START) - return; - Minecraft mc = Minecraft.getInstance(); - ClientPlayerEntity player = mc.player; - - if (mc.world == null) - return; - if (mc.isGamePaused()) - return; - - tickCounter++; - - if (tickCounter % 10 == 0) { - for (int i = 0; i < PlayerInventory.getHotbarSize(); i++) { - ItemStack stackInSlot = player.inventory.getStackInSlot(i); - - if (stackInSlot != null && AllItems.WAND_OF_SYMMETRY.isIn(stackInSlot) - && SymmetryWandItem.isEnabled(stackInSlot)) { - - SymmetryMirror mirror = SymmetryWandItem.getMirror(stackInSlot); - if (mirror instanceof EmptyMirror) - continue; - - Random r = new Random(); - double offsetX = (r.nextDouble() - 0.5) * 0.3; - double offsetZ = (r.nextDouble() - 0.5) * 0.3; - - Vector3d pos = mirror.getPosition() - .add(0.5 + offsetX, 1 / 4d, 0.5 + offsetZ); - Vector3d speed = new Vector3d(0, r.nextDouble() * 1 / 8f, 0); - mc.world.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, speed.z); - } - } - } - - } - - public static void drawEffect(BlockPos from, BlockPos to) { - double density = 0.8f; - Vector3d start = Vector3d.of(from).add(0.5, 0.5, 0.5); - Vector3d end = Vector3d.of(to).add(0.5, 0.5, 0.5); - Vector3d diff = end.subtract(start); - - Vector3d step = diff.normalize() - .scale(density); - int steps = (int) (diff.length() / step.length()); - - Random r = new Random(); - for (int i = 3; i < steps - 1; i++) { - Vector3d pos = start.add(step.scale(i)); - Vector3d speed = new Vector3d(0, r.nextDouble() * -40f, 0); - - Minecraft.getInstance().world.addParticle(new RedstoneParticleData(1, 1, 1, 1), pos.x, pos.y, pos.z, - speed.x, speed.y, speed.z); - } - - Vector3d speed = new Vector3d(0, r.nextDouble() * 1 / 32f, 0); - Vector3d pos = start.add(step.scale(2)); - Minecraft.getInstance().world.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, - speed.z); - - speed = new Vector3d(0, r.nextDouble() * 1 / 32f, 0); - pos = start.add(step.scale(steps)); - Minecraft.getInstance().world.addParticle(ParticleTypes.END_ROD, pos.x, pos.y, pos.z, speed.x, speed.y, - speed.z); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java deleted file mode 100644 index 9ef60eaa1..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandItem.java +++ /dev/null @@ -1,326 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.Nonnull; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; -import com.simibubi.create.content.curiosities.symmetry.mirror.CrossPlaneMirror; -import com.simibubi.create.content.curiosities.symmetry.mirror.EmptyMirror; -import com.simibubi.create.content.curiosities.symmetry.mirror.PlaneMirror; -import com.simibubi.create.content.curiosities.symmetry.mirror.SymmetryMirror; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.Rarity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.BlockSnapshot; -import net.minecraftforge.common.util.Constants.BlockFlags; -import net.minecraftforge.event.ForgeEventFactory; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.PacketDistributor; - -public class SymmetryWandItem extends Item { - - public static final String SYMMETRY = "symmetry"; - private static final String ENABLE = "enable"; - - public SymmetryWandItem(Properties properties) { - super(properties.maxStackSize(1) - .rarity(Rarity.UNCOMMON)); - } - - @Nonnull - @Override - public ActionResultType onItemUse(ItemUseContext context) { - PlayerEntity player = context.getPlayer(); - BlockPos pos = context.getPos(); - if (player == null) - return ActionResultType.PASS; - player.getCooldownTracker() - .setCooldown(this, 5); - ItemStack wand = player.getHeldItem(context.getHand()); - checkNBT(wand); - - // Shift -> open GUI - if (player.isSneaking()) { - if (player.world.isRemote) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - openWandGUI(wand, context.getHand()); - }); - player.getCooldownTracker() - .setCooldown(this, 5); - } - return ActionResultType.SUCCESS; - } - - if (context.getWorld().isRemote || context.getHand() != Hand.MAIN_HAND) - return ActionResultType.SUCCESS; - - CompoundNBT compound = wand.getTag() - .getCompound(SYMMETRY); - pos = pos.offset(context.getFace()); - SymmetryMirror previousElement = SymmetryMirror.fromNBT(compound); - - // No Shift -> Make / Move Mirror - wand.getTag() - .putBoolean(ENABLE, true); - Vector3d pos3d = new Vector3d(pos.getX(), pos.getY(), pos.getZ()); - SymmetryMirror newElement = new PlaneMirror(pos3d); - - if (previousElement instanceof EmptyMirror) { - newElement.setOrientation( - (player.getHorizontalFacing() == Direction.NORTH || player.getHorizontalFacing() == Direction.SOUTH) - ? PlaneMirror.Align.XY.ordinal() - : PlaneMirror.Align.YZ.ordinal()); - newElement.enable = true; - wand.getTag() - .putBoolean(ENABLE, true); - - } else { - previousElement.setPosition(pos3d); - - if (previousElement instanceof PlaneMirror) { - previousElement.setOrientation( - (player.getHorizontalFacing() == Direction.NORTH || player.getHorizontalFacing() == Direction.SOUTH) - ? PlaneMirror.Align.XY.ordinal() - : PlaneMirror.Align.YZ.ordinal()); - } - - if (previousElement instanceof CrossPlaneMirror) { - float rotation = player.getRotationYawHead(); - float abs = Math.abs(rotation % 90); - boolean diagonal = abs > 22 && abs < 45 + 22; - previousElement - .setOrientation(diagonal ? CrossPlaneMirror.Align.D.ordinal() : CrossPlaneMirror.Align.Y.ordinal()); - } - - newElement = previousElement; - } - - compound = newElement.writeToNbt(); - wand.getTag() - .put(SYMMETRY, compound); - - player.setHeldItem(context.getHand(), wand); - return ActionResultType.SUCCESS; - } - - @Override - public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) { - ItemStack wand = playerIn.getHeldItem(handIn); - checkNBT(wand); - - // Shift -> Open GUI - if (playerIn.isSneaking()) { - if (worldIn.isRemote) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - openWandGUI(playerIn.getHeldItem(handIn), handIn); - }); - playerIn.getCooldownTracker() - .setCooldown(this, 5); - } - return new ActionResult(ActionResultType.SUCCESS, wand); - } - - // No Shift -> Clear Mirror - wand.getTag() - .putBoolean(ENABLE, false); - return new ActionResult(ActionResultType.SUCCESS, wand); - } - - @OnlyIn(Dist.CLIENT) - private void openWandGUI(ItemStack wand, Hand hand) { - ScreenOpener.open(new SymmetryWandScreen(wand, hand)); - } - - private static void checkNBT(ItemStack wand) { - if (!wand.hasTag() || !wand.getTag() - .contains(SYMMETRY)) { - wand.setTag(new CompoundNBT()); - wand.getTag() - .put(SYMMETRY, new EmptyMirror(new Vector3d(0, 0, 0)).writeToNbt()); - wand.getTag() - .putBoolean(ENABLE, false); - } - } - - public static boolean isEnabled(ItemStack stack) { - checkNBT(stack); - CompoundNBT tag = stack.getTag(); - return tag.getBoolean(ENABLE) && !tag.getBoolean("Simulate"); - } - - public static SymmetryMirror getMirror(ItemStack stack) { - checkNBT(stack); - return SymmetryMirror.fromNBT((CompoundNBT) stack.getTag() - .getCompound(SYMMETRY)); - } - - public static void apply(World world, ItemStack wand, PlayerEntity player, BlockPos pos, BlockState block) { - checkNBT(wand); - if (!isEnabled(wand)) - return; - if (!BlockItem.BLOCK_TO_ITEM.containsKey(block.getBlock())) - return; - - Map blockSet = new HashMap<>(); - blockSet.put(pos, block); - SymmetryMirror symmetry = SymmetryMirror.fromNBT((CompoundNBT) wand.getTag() - .getCompound(SYMMETRY)); - - Vector3d mirrorPos = symmetry.getPosition(); - if (mirrorPos.distanceTo(Vector3d.of(pos)) > AllConfigs.SERVER.curiosities.maxSymmetryWandRange.get()) - return; - if (!player.isCreative() && isHoldingBlock(player, block) - && BlockHelper.findAndRemoveInInventory(block, player, 1) == 0) - return; - - symmetry.process(blockSet); - BlockPos to = new BlockPos(mirrorPos); - List targets = new ArrayList<>(); - targets.add(pos); - - for (BlockPos position : blockSet.keySet()) { - if (position.equals(pos)) - continue; - - if (world.canPlace(block, position, ISelectionContext.forEntity(player))) { - BlockState blockState = blockSet.get(position); - for (Direction face : Iterate.directions) - blockState = blockState.updatePostPlacement(face, world.getBlockState(position.offset(face)), world, - position, position.offset(face)); - - if (player.isCreative()) { - world.setBlockState(position, blockState); - targets.add(position); - continue; - } - - BlockState toReplace = world.getBlockState(position); - if (!toReplace.getMaterial() - .isReplaceable()) - continue; - if (toReplace.getBlockHardness(world, position) == -1) - continue; - - if (AllBlocks.CART_ASSEMBLER.has(blockState)) { - BlockState railBlock = CartAssemblerBlock.getRailBlock(blockState); - if (BlockHelper.findAndRemoveInInventory(railBlock, player, 1) == 0) - continue; - if (BlockHelper.findAndRemoveInInventory(blockState, player, 1) == 0) - blockState = railBlock; - } else { - if (BlockHelper.findAndRemoveInInventory(blockState, player, 1) == 0) - continue; - } - - BlockSnapshot blocksnapshot = BlockSnapshot.create(world.getRegistryKey(), world, position); - FluidState ifluidstate = world.getFluidState(position); - world.setBlockState(position, ifluidstate.getBlockState(), BlockFlags.UPDATE_NEIGHBORS); - world.setBlockState(position, blockState); - - CompoundNBT wandNbt = wand.getOrCreateTag(); - wandNbt.putBoolean("Simulate", true); - boolean placeInterrupted = ForgeEventFactory.onBlockPlace(player, blocksnapshot, Direction.UP); - wandNbt.putBoolean("Simulate", false); - - if (placeInterrupted) { - blocksnapshot.restore(true, false); - continue; - } - targets.add(position); - } - } - - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> player), - new SymmetryEffectPacket(to, targets)); - } - - private static boolean isHoldingBlock(PlayerEntity player, BlockState block) { - ItemStack itemBlock = BlockHelper.getRequiredItem(block); - return player.getHeldItemMainhand() - .isItemEqual(itemBlock) - || player.getHeldItemOffhand() - .isItemEqual(itemBlock); - } - - public static void remove(World world, ItemStack wand, PlayerEntity player, BlockPos pos) { - BlockState air = Blocks.AIR.getDefaultState(); - BlockState ogBlock = world.getBlockState(pos); - checkNBT(wand); - if (!isEnabled(wand)) - return; - - Map blockSet = new HashMap<>(); - blockSet.put(pos, air); - SymmetryMirror symmetry = SymmetryMirror.fromNBT((CompoundNBT) wand.getTag() - .getCompound(SYMMETRY)); - - Vector3d mirrorPos = symmetry.getPosition(); - if (mirrorPos.distanceTo(Vector3d.of(pos)) > AllConfigs.SERVER.curiosities.maxSymmetryWandRange.get()) - return; - - symmetry.process(blockSet); - - BlockPos to = new BlockPos(mirrorPos); - List targets = new ArrayList<>(); - - targets.add(pos); - for (BlockPos position : blockSet.keySet()) { - if (!player.isCreative() && ogBlock.getBlock() != world.getBlockState(position) - .getBlock()) - continue; - if (position.equals(pos)) - continue; - - BlockState blockstate = world.getBlockState(position); - if (blockstate.getMaterial() != Material.AIR) { - targets.add(position); - world.playEvent(2001, position, Block.getStateId(blockstate)); - world.setBlockState(position, air, 3); - - if (!player.isCreative()) { - if (!player.getHeldItemMainhand() - .isEmpty()) - player.getHeldItemMainhand() - .onBlockDestroyed(world, blockstate, position, player); - TileEntity tileentity = blockstate.hasTileEntity() ? world.getTileEntity(position) : null; - Block.spawnDrops(blockstate, world, pos, tileentity, player, player.getHeldItemMainhand()); // Add fortune, silk touch and other loot modifiers - } - } - } - - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> player), - new SymmetryEffectPacket(to, targets)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java deleted file mode 100644 index bc2ebd9ef..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/SymmetryWandScreen.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.curiosities.symmetry.mirror.CrossPlaneMirror; -import com.simibubi.create.content.curiosities.symmetry.mirror.EmptyMirror; -import com.simibubi.create.content.curiosities.symmetry.mirror.PlaneMirror; -import com.simibubi.create.content.curiosities.symmetry.mirror.SymmetryMirror; -import com.simibubi.create.content.curiosities.symmetry.mirror.TriplePlaneMirror; -import com.simibubi.create.foundation.gui.AbstractSimiScreen; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.widgets.IconButton; -import com.simibubi.create.foundation.gui.widgets.Label; -import com.simibubi.create.foundation.gui.widgets.ScrollInput; -import com.simibubi.create.foundation.gui.widgets.SelectionScrollInput; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.networking.NbtPacket; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Hand; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.fml.network.PacketDistributor; - -public class SymmetryWandScreen extends AbstractSimiScreen { - - private ScrollInput areaType; - private Label labelType; - private ScrollInput areaAlign; - private Label labelAlign; - private IconButton confirmButton; - - private final ITextComponent mirrorType = Lang.translate("gui.symmetryWand.mirrorType"); - private final ITextComponent orientation = Lang.translate("gui.symmetryWand.orientation"); - - private SymmetryMirror currentElement; - private ItemStack wand; - private Hand hand; - - public SymmetryWandScreen(ItemStack wand, Hand hand) { - super(); - - currentElement = SymmetryWandItem.getMirror(wand); - if (currentElement instanceof EmptyMirror) { - currentElement = new PlaneMirror(Vector3d.ZERO); - } - this.hand = hand; - this.wand = wand; - } - - @Override - public void init() { - super.init(); - AllGuiTextures background = AllGuiTextures.WAND_OF_SYMMETRY; - this.setWindowSize(background.width + 50, background.height + 50); - - labelType = new Label(guiLeft + 49, guiTop + 28, StringTextComponent.EMPTY).colored(0xFFFFFFFF) - .withShadow(); - labelAlign = new Label(guiLeft + 49, guiTop + 50, StringTextComponent.EMPTY).colored(0xFFFFFFFF) - .withShadow(); - - int state = - currentElement instanceof TriplePlaneMirror ? 2 : currentElement instanceof CrossPlaneMirror ? 1 : 0; - areaType = new SelectionScrollInput(guiLeft + 45, guiTop + 21, 109, 18).forOptions(SymmetryMirror.getMirrors()) - .titled(mirrorType.copy()) - .writingTo(labelType) - .setState(state); - - areaType.calling(position -> { - switch (position) { - case 0: - currentElement = new PlaneMirror(currentElement.getPosition()); - break; - case 1: - currentElement = new CrossPlaneMirror(currentElement.getPosition()); - break; - case 2: - currentElement = new TriplePlaneMirror(currentElement.getPosition()); - break; - default: - break; - } - initAlign(currentElement); - }); - - widgets.clear(); - - initAlign(currentElement); - - widgets.add(labelAlign); - widgets.add(areaType); - widgets.add(labelType); - - confirmButton = new IconButton(guiLeft + background.width - 33, guiTop + background.height - 24, AllIcons.I_CONFIRM); - widgets.add(confirmButton); - - } - - private void initAlign(SymmetryMirror element) { - if (areaAlign != null) - widgets.remove(areaAlign); - - areaAlign = new SelectionScrollInput(guiLeft + 45, guiTop + 43, 109, 18).forOptions(element.getAlignToolTips()) - .titled(orientation.copy()) - .writingTo(labelAlign) - .setState(element.getOrientationIndex()) - .calling(element::setOrientation); - - widgets.add(areaAlign); - } - - @Override - protected void renderWindow(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - AllGuiTextures.WAND_OF_SYMMETRY.draw(matrixStack, this, guiLeft, guiTop); - textRenderer.draw(matrixStack, wand.getDisplayName(), guiLeft + 11, guiTop + 4, 0x6B3802); - renderBlock(matrixStack); - GuiGameElement.of(wand) - .scale(4) - .rotate(-70, 20, 20) - .at(guiLeft + 170, guiTop + 490, -150) - .render(matrixStack); - } - - protected void renderBlock(MatrixStack ms) { - ms.push(); - ms.translate(guiLeft + 26f, guiTop + 39, 20); - ms.scale(16, 16, 16); - ms.multiply(new Vector3f(.3f, 1f, 0f).getDegreesQuaternion(-22.5f)); - currentElement.applyModelTransform(ms); - // RenderSystem.multMatrix(ms.peek().getModel()); - GuiGameElement.of(currentElement.getModel()) - .render(ms); - - ms.pop(); - } - - @Override - public void removed() { - ItemStack heldItem = client.player.getHeldItem(hand); - CompoundNBT compound = heldItem.getTag(); - compound.put(SymmetryWandItem.SYMMETRY, currentElement.writeToNbt()); - heldItem.setTag(compound); - AllPackets.channel.send(PacketDistributor.SERVER.noArg(), new NbtPacket(heldItem, hand)); - client.player.setHeldItem(hand, heldItem); - super.removed(); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - if (confirmButton.isHovered()) { - Minecraft.getInstance().player.closeScreen(); - return true; - } - - return super.mouseClicked(x, y, button); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java deleted file mode 100644 index 0c0461daf..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry.client; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; -import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; - -public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer { - - @Override - protected void render(ItemStack stack, SymmetryWandModel model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType, - MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - float worldTime = AnimationTickHolder.getRenderTime() / 20; - int maxLight = 0xF000F0; - - renderer.render(model.getOriginalModel(), light); - renderer.renderSolidGlowing(model.getPartial("core"), maxLight); - renderer.renderGlowing(model.getPartial("core_glow"), maxLight); - - float floating = MathHelper.sin(worldTime) * .05f; - float angle = worldTime * -10 % 360; - - ms.translate(0, floating, 0); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(angle)); - - renderer.renderGlowing(model.getPartial("bits"), maxLight); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandModel.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandModel.java deleted file mode 100644 index f361c3c9f..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandModel.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry.client; - -import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; - -public class SymmetryWandModel extends CustomRenderedItemModel { - - public SymmetryWandModel(IBakedModel template) { - super(template, "wand_of_symmetry"); - addPartials("bits", "core", "core_glow"); - } - - @Override - public ItemStackTileEntityRenderer createRenderer() { - return new SymmetryWandItemRenderer(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java deleted file mode 100644 index 562393881..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/CrossPlaneMirror.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry.mirror; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.common.collect.ImmutableList; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.BlockState; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public class CrossPlaneMirror extends SymmetryMirror { - - public static enum Align implements IStringSerializable { - Y("y"), D("d"); - - private final String name; - - private Align(String name) { - this.name = name; - } - - @Override - public String getString() { - return name; - } - - @Override - public String toString() { - return name; - } - } - - public CrossPlaneMirror(Vector3d pos) { - super(pos); - orientation = Align.Y; - } - - @Override - protected void setOrientation() { - if (orientationIndex < 0) - orientationIndex += Align.values().length; - if (orientationIndex >= Align.values().length) - orientationIndex -= Align.values().length; - orientation = Align.values()[orientationIndex]; - } - - @Override - public void setOrientation(int index) { - this.orientation = Align.values()[index]; - orientationIndex = index; - } - - @Override - public Map process(BlockPos position, BlockState block) { - Map result = new HashMap<>(); - - switch ((Align) orientation) { - case D: - result.put(flipD1(position), flipD1(block)); - result.put(flipD2(position), flipD2(block)); - result.put(flipD1(flipD2(position)), flipD1(flipD2(block))); - break; - case Y: - result.put(flipX(position), flipX(block)); - result.put(flipZ(position), flipZ(block)); - result.put(flipX(flipZ(position)), flipX(flipZ(block))); - break; - default: - break; - } - - return result; - } - - @Override - public String typeName() { - return CROSS_PLANE; - } - - @Override - public PartialModel getModel() { - return AllBlockPartials.SYMMETRY_CROSSPLANE; - } - - @Override - public void applyModelTransform(MatrixStack ms) { - super.applyModelTransform(ms); - MatrixStacker.of(ms) - .centre() - .rotateY(((Align) orientation) == Align.Y ? 0 : 45) - .unCentre(); - } - - @Override - public List getAlignToolTips() { - return ImmutableList.of(Lang.translate("orientation.orthogonal"), Lang.translate("orientation.diagonal")); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/EmptyMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/EmptyMirror.java deleted file mode 100644 index 0fbdba41f..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/EmptyMirror.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry.mirror; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.common.collect.ImmutableList; -import com.jozufozu.flywheel.core.PartialModel; - -import net.minecraft.block.BlockState; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public class EmptyMirror extends SymmetryMirror { - - public static enum Align implements IStringSerializable { - None("none"); - - private final String name; - private Align(String name) { this.name = name; } - @Override public String getString() { return name; } - @Override public String toString() { return name; } - } - - public EmptyMirror(Vector3d pos) { - super(pos); - orientation = Align.None; - } - - @Override - protected void setOrientation() { - } - - @Override - public void setOrientation(int index) { - this.orientation = Align.values()[index]; - orientationIndex = index; - } - - @Override - public Map process(BlockPos position, BlockState block) { - return new HashMap<>(); - } - - @Override - public String typeName() { - return EMPTY; - } - - @Override - public PartialModel getModel() { - return null; - } - - @Override - public List getAlignToolTips() { - return ImmutableList.of(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java deleted file mode 100644 index af20b66ef..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/PlaneMirror.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry.mirror; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.common.collect.ImmutableList; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.BlockState; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public class PlaneMirror extends SymmetryMirror { - - public static enum Align implements IStringSerializable { - XY("xy"), YZ("yz"); - - private final String name; - - private Align(String name) { - this.name = name; - } - - @Override - public String getString() { - return name; - } - - @Override - public String toString() { - return name; - } - } - - public PlaneMirror(Vector3d pos) { - super(pos); - orientation = Align.XY; - } - - @Override - protected void setOrientation() { - if (orientationIndex < 0) - orientationIndex += Align.values().length; - if (orientationIndex >= Align.values().length) - orientationIndex -= Align.values().length; - orientation = Align.values()[orientationIndex]; - } - - @Override - public void setOrientation(int index) { - this.orientation = Align.values()[index]; - orientationIndex = index; - } - - @Override - public Map process(BlockPos position, BlockState block) { - Map result = new HashMap<>(); - switch ((Align) orientation) { - - case XY: - result.put(flipZ(position), flipZ(block)); - break; - case YZ: - result.put(flipX(position), flipX(block)); - break; - default: - break; - - } - return result; - } - - @Override - public String typeName() { - return PLANE; - } - - @Override - public PartialModel getModel() { - return AllBlockPartials.SYMMETRY_PLANE; - } - - @Override - public void applyModelTransform(MatrixStack ms) { - super.applyModelTransform(ms); - MatrixStacker.of(ms) - .centre() - .rotateY(((Align) orientation) == Align.XY ? 0 : 90) - .unCentre(); - } - - @Override - public List getAlignToolTips() { - return ImmutableList.of(Lang.translate("orientation.alongZ"), Lang.translate("orientation.alongX")); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java deleted file mode 100644 index d704c0723..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/SymmetryMirror.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry.mirror; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.common.collect.ImmutableList; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.FloatNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.state.DirectionProperty; -import net.minecraft.state.Property; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.Mirror; -import net.minecraft.util.Rotation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public abstract class SymmetryMirror { - - public static final String EMPTY = "empty"; - public static final String PLANE = "plane"; - public static final String CROSS_PLANE = "cross_plane"; - public static final String TRIPLE_PLANE = "triple_plane"; - - protected Vector3d position; - protected IStringSerializable orientation; - protected int orientationIndex; - public boolean enable; - - public SymmetryMirror(Vector3d pos) { - position = pos; - enable = true; - orientationIndex = 0; - } - - public static List getMirrors() { - return ImmutableList.of(Lang.translate("symmetry.mirror.plane"), Lang.translate("symmetry.mirror.doublePlane"), - Lang.translate("symmetry.mirror.triplePlane")); - } - - public IStringSerializable getOrientation() { - return orientation; - } - - public Vector3d getPosition() { - return position; - } - - public int getOrientationIndex() { - return orientationIndex; - } - - public void rotate(boolean forward) { - orientationIndex += forward ? 1 : -1; - setOrientation(); - } - - public void process(Map blocks) { - Map result = new HashMap<>(); - for (BlockPos pos : blocks.keySet()) { - result.putAll(process(pos, blocks.get(pos))); - } - blocks.putAll(result); - } - - public abstract Map process(BlockPos position, BlockState block); - - protected abstract void setOrientation(); - - public abstract void setOrientation(int index); - - public abstract String typeName(); - - public abstract PartialModel getModel(); - - public void applyModelTransform(MatrixStack ms) {} - - private static final String $ORIENTATION = "direction"; - private static final String $POSITION = "pos"; - private static final String $TYPE = "type"; - private static final String $ENABLE = "enable"; - - public CompoundNBT writeToNbt() { - CompoundNBT nbt = new CompoundNBT(); - nbt.putInt($ORIENTATION, orientationIndex); - - ListNBT floatList = new ListNBT(); - floatList.add(FloatNBT.of((float) position.x)); - floatList.add(FloatNBT.of((float) position.y)); - floatList.add(FloatNBT.of((float) position.z)); - nbt.put($POSITION, floatList); - nbt.putString($TYPE, typeName()); - nbt.putBoolean($ENABLE, enable); - - return nbt; - } - - public static SymmetryMirror fromNBT(CompoundNBT nbt) { - ListNBT floatList = nbt.getList($POSITION, 5); - Vector3d pos = new Vector3d(floatList.getFloat(0), floatList.getFloat(1), floatList.getFloat(2)); - SymmetryMirror element; - - switch (nbt.getString($TYPE)) { - case PLANE: - element = new PlaneMirror(pos); - break; - case CROSS_PLANE: - element = new CrossPlaneMirror(pos); - break; - case TRIPLE_PLANE: - element = new TriplePlaneMirror(pos); - break; - default: - element = new EmptyMirror(pos); - break; - } - - element.setOrientation(nbt.getInt($ORIENTATION)); - element.enable = nbt.getBoolean($ENABLE); - - return element; - } - - protected Vector3d getDiff(BlockPos position) { - return this.position.scale(-1) - .add(position.getX(), position.getY(), position.getZ()); - } - - protected BlockPos getIDiff(BlockPos position) { - Vector3d diff = getDiff(position); - return new BlockPos((int) diff.x, (int) diff.y, (int) diff.z); - } - - protected BlockState flipX(BlockState in) { - return in.mirror(Mirror.FRONT_BACK); - } - - protected BlockState flipY(BlockState in) { - for (Property property : in.getProperties()) { - - if (property == BlockStateProperties.HALF) - return in.cycle(property); - // Directional Blocks - if (property instanceof DirectionProperty) { - if (in.get(property) == Direction.DOWN) { - return in.with((DirectionProperty) property, Direction.UP); - } else if (in.get(property) == Direction.UP) { - return in.with((DirectionProperty) property, Direction.DOWN); - } - } - } - return in; - } - - protected BlockState flipZ(BlockState in) { - return in.mirror(Mirror.LEFT_RIGHT); - } - - protected BlockState flipD1(BlockState in) { - return in.rotate(Rotation.COUNTERCLOCKWISE_90) - .mirror(Mirror.FRONT_BACK); - } - - protected BlockState flipD2(BlockState in) { - return in.rotate(Rotation.COUNTERCLOCKWISE_90) - .mirror(Mirror.LEFT_RIGHT); - } - - protected BlockPos flipX(BlockPos position) { - BlockPos diff = getIDiff(position); - return new BlockPos(position.getX() - 2 * diff.getX(), position.getY(), position.getZ()); - } - - protected BlockPos flipY(BlockPos position) { - BlockPos diff = getIDiff(position); - return new BlockPos(position.getX(), position.getY() - 2 * diff.getY(), position.getZ()); - } - - protected BlockPos flipZ(BlockPos position) { - BlockPos diff = getIDiff(position); - return new BlockPos(position.getX(), position.getY(), position.getZ() - 2 * diff.getZ()); - } - - protected BlockPos flipD2(BlockPos position) { - BlockPos diff = getIDiff(position); - return new BlockPos(position.getX() - diff.getX() + diff.getZ(), position.getY(), - position.getZ() - diff.getZ() + diff.getX()); - } - - protected BlockPos flipD1(BlockPos position) { - BlockPos diff = getIDiff(position); - return new BlockPos(position.getX() - diff.getX() - diff.getZ(), position.getY(), - position.getZ() - diff.getZ() - diff.getX()); - } - - public void setPosition(Vector3d pos3d) { - this.position = pos3d; - } - - public abstract List getAlignToolTips(); - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java deleted file mode 100644 index abf923a58..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/mirror/TriplePlaneMirror.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.simibubi.create.content.curiosities.symmetry.mirror; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.google.common.collect.ImmutableList; -import com.jozufozu.flywheel.core.PartialModel; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.util.IStringSerializable; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public class TriplePlaneMirror extends SymmetryMirror { - - public TriplePlaneMirror(Vector3d pos) { - super(pos); - orientationIndex = 0; - } - - @Override - public Map process(BlockPos position, BlockState block) { - Map result = new HashMap<>(); - - result.put(flipX(position), flipX(block)); - result.put(flipZ(position), flipZ(block)); - result.put(flipX(flipZ(position)), flipX(flipZ(block))); - - result.put(flipD1(position), flipD1(block)); - result.put(flipD1(flipX(position)), flipD1(flipX(block))); - result.put(flipD1(flipZ(position)), flipD1(flipZ(block))); - result.put(flipD1(flipX(flipZ(position))), flipD1(flipX(flipZ(block)))); - - return result; - } - - @Override - public String typeName() { - return TRIPLE_PLANE; - } - - @Override - public PartialModel getModel() { - return AllBlockPartials.SYMMETRY_TRIPLEPLANE; - } - - @Override - protected void setOrientation() { - } - - @Override - public void setOrientation(int index) { - } - - @Override - public IStringSerializable getOrientation() { - return CrossPlaneMirror.Align.Y; - } - - @Override - public List getAlignToolTips() { - return ImmutableList.of(Lang.translate("orientation.horizontal")); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintAssignCompleteRecipePacket.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintAssignCompleteRecipePacket.java deleted file mode 100644 index 2e9a2349a..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintAssignCompleteRecipePacket.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class BlueprintAssignCompleteRecipePacket extends SimplePacketBase { - - private ResourceLocation recipeID; - - public BlueprintAssignCompleteRecipePacket(ResourceLocation recipeID) { - this.recipeID = recipeID; - } - - public BlueprintAssignCompleteRecipePacket(PacketBuffer buffer) { - recipeID = buffer.readResourceLocation(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeResourceLocation(recipeID); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - ServerPlayerEntity player = context.get() - .getSender(); - if (player == null) - return; - if (player.openContainer instanceof BlueprintContainer) { - BlueprintContainer c = (BlueprintContainer) player.openContainer; - player.getServerWorld() - .getRecipeManager() - .getRecipe(recipeID) - .ifPresent(r -> BlueprintItem.assignCompleteRecipe(c.ghostInventory, r)); - } - }); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintContainer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintContainer.java deleted file mode 100644 index 51a894d9f..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintContainer.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.Optional; - -import com.simibubi.create.AllContainerTypes; -import com.simibubi.create.content.curiosities.tools.BlueprintEntity.BlueprintSection; -import com.simibubi.create.foundation.gui.GhostItemContainer; -import com.simibubi.create.foundation.gui.IClearableContainer; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.inventory.container.Container; -import net.minecraft.inventory.container.ContainerType; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.ICraftingRecipe; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.network.PacketBuffer; -import net.minecraft.network.play.server.SSetSlotPacket; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.SlotItemHandler; - -public class BlueprintContainer extends GhostItemContainer implements IClearableContainer { - - public BlueprintContainer(ContainerType type, int id, PlayerInventory inv, PacketBuffer extraData) { - super(type, id, inv, extraData); - } - - public BlueprintContainer(ContainerType type, int id, PlayerInventory inv, BlueprintSection section) { - super(type, id, inv, section); - } - - public static BlueprintContainer create(int id, PlayerInventory inv, BlueprintSection section) { - return new BlueprintContainer(AllContainerTypes.CRAFTING_BLUEPRINT.get(), id, inv, section); - } - - @Override - protected boolean allowRepeats() { - return true; - } - - @Override - protected void addSlots() { - addPlayerSlots(33, 137); - - int x = 29; - int y = 21; - int index = 0; - for (int row = 0; row < 3; ++row) - for (int col = 0; col < 3; ++col) - this.addSlot(new BlueprintCraftSlot(ghostInventory, index++, x + col * 18, y + row * 18)); - - addSlot(new BlueprintCraftSlot(ghostInventory, index++, 123, 40)); - addSlot(new SlotItemHandler(ghostInventory, index++, 135, 57)); - } - - public void onCraftMatrixChanged() { - if (contentHolder.getBlueprintWorld().isRemote) - return; - - ServerPlayerEntity serverplayerentity = (ServerPlayerEntity) player; - CraftingInventory craftingInventory = new BlueprintCraftingInventory(this, ghostInventory); - Optional optional = player.getServer() - .getRecipeManager() - .getRecipe(IRecipeType.CRAFTING, craftingInventory, player.getEntityWorld()); - - if (!optional.isPresent()) { - if (ghostInventory.getStackInSlot(9) - .isEmpty()) - return; - if (!contentHolder.inferredIcon) - return; - - ghostInventory.setStackInSlot(9, ItemStack.EMPTY); - serverplayerentity.connection.sendPacket(new SSetSlotPacket(windowId, 36 + 9, ItemStack.EMPTY)); - contentHolder.inferredIcon = false; - return; - } - - ICraftingRecipe icraftingrecipe = optional.get(); - ItemStack itemstack = icraftingrecipe.getCraftingResult(craftingInventory); - ghostInventory.setStackInSlot(9, itemstack); - contentHolder.inferredIcon = true; - ItemStack toSend = itemstack.copy(); - toSend.getOrCreateTag() - .putBoolean("InferredFromRecipe", true); - serverplayerentity.connection.sendPacket(new SSetSlotPacket(windowId, 36 + 9, toSend)); - } - - @Override - public void putStackInSlot(int p_75141_1_, ItemStack p_75141_2_) { - if (p_75141_1_ == 36 + 9) { - if (p_75141_2_.hasTag()) { - contentHolder.inferredIcon = p_75141_2_.getTag() - .getBoolean("InferredFromRecipe"); - p_75141_2_.getTag() - .remove("InferredFromRecipe"); - } else - contentHolder.inferredIcon = false; - } - super.putStackInSlot(p_75141_1_, p_75141_2_); - } - - @Override - protected ItemStackHandler createGhostInventory() { - return contentHolder.getItems(); - } - - @Override - protected void readData(BlueprintSection contentHolder) { - } - - @Override - protected void saveData(BlueprintSection contentHolder) { - contentHolder.save(ghostInventory); - } - - @Override - @OnlyIn(Dist.CLIENT) - protected BlueprintSection createOnClient(PacketBuffer extraData) { - int entityID = extraData.readVarInt(); - int section = extraData.readVarInt(); - Entity entityByID = Minecraft.getInstance().world.getEntityByID(entityID); - if (!(entityByID instanceof BlueprintEntity)) - return null; - BlueprintEntity blueprintEntity = (BlueprintEntity) entityByID; - BlueprintSection blueprintSection = blueprintEntity.getSection(section); - return blueprintSection; - } - - static class BlueprintCraftingInventory extends CraftingInventory { - - public BlueprintCraftingInventory(Container container, ItemStackHandler items) { - super(container, 3, 3); - for (int y = 0; y < 3; y++) { - for (int x = 0; x < 3; x++) { - ItemStack stack = items.getStackInSlot(y * 3 + x); - setInventorySlotContents(y * 3 + x, stack == null ? ItemStack.EMPTY : stack.copy()); - } - } - } - - } - - class BlueprintCraftSlot extends SlotItemHandler { - - private int index; - - public BlueprintCraftSlot(IItemHandler itemHandler, int index, int xPosition, int yPosition) { - super(itemHandler, index, xPosition, yPosition); - this.index = index; - } - - @Override - public void onSlotChanged() { - super.onSlotChanged(); - if (index == 9 && getHasStack() && !contentHolder.getBlueprintWorld().isRemote) { - contentHolder.inferredIcon = false; - ServerPlayerEntity serverplayerentity = (ServerPlayerEntity) player; - serverplayerentity.connection.sendPacket(new SSetSlotPacket(windowId, 36 + 9, getStack())); - } - if (index < 9) - onCraftMatrixChanged(); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java deleted file mode 100644 index 6a8f863be..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java +++ /dev/null @@ -1,528 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Optional; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.Validate; - -import com.simibubi.create.AllEntityTypes; -import com.simibubi.create.AllItems; -import com.simibubi.create.Create; -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.content.schematics.ISpecialEntityItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.content.schematics.ItemRequirement.ItemUseType; -import com.simibubi.create.foundation.networking.ISyncPersistentData; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.RedstoneDiodeBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntitySize; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.Pose; -import net.minecraft.entity.item.HangingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.inventory.container.Container; -import net.minecraft.inventory.container.INamedContainerProvider; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.ICraftingRecipe; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.IPacket; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Hand; -import net.minecraft.util.NonNullList; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.world.GameRules; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.ForgeHooks; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData; -import net.minecraftforge.fml.hooks.BasicEventHooks; -import net.minecraftforge.fml.network.NetworkHooks; -import net.minecraftforge.items.IItemHandlerModifiable; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.InvWrapper; - -public class BlueprintEntity extends HangingEntity - implements IEntityAdditionalSpawnData, ISpecialEntityItemRequirement, ISyncPersistentData { - - protected int size; - protected Direction verticalOrientation; - - @SuppressWarnings("unchecked") - public BlueprintEntity(EntityType p_i50221_1_, World p_i50221_2_) { - super((EntityType) p_i50221_1_, p_i50221_2_); - size = 1; - } - - public BlueprintEntity(World world, BlockPos pos, Direction facing, Direction verticalOrientation) { - super(AllEntityTypes.CRAFTING_BLUEPRINT.get(), world, pos); - - for (int size = 3; size > 0; size--) { - this.size = size; - this.updateFacingWithBoundingBox(facing, verticalOrientation); - if (this.onValidSurface()) - break; - } - } - - public static EntityType.Builder build(EntityType.Builder builder) { - @SuppressWarnings("unchecked") - EntityType.Builder entityBuilder = (EntityType.Builder) builder; - return entityBuilder; - } - - @Override - public IPacket createSpawnPacket() { - return NetworkHooks.getEntitySpawningPacket(this); - } - - @Override - public void writeAdditional(CompoundNBT p_213281_1_) { - p_213281_1_.putByte("Facing", (byte) this.facingDirection.getIndex()); - p_213281_1_.putByte("Orientation", (byte) this.verticalOrientation.getIndex()); - p_213281_1_.putInt("Size", size); - super.writeAdditional(p_213281_1_); - } - - @Override - public void readAdditional(CompoundNBT p_70037_1_) { - this.facingDirection = Direction.byIndex(p_70037_1_.getByte("Facing")); - this.verticalOrientation = Direction.byIndex(p_70037_1_.getByte("Orientation")); - this.size = p_70037_1_.getInt("Size"); - super.readAdditional(p_70037_1_); - this.updateFacingWithBoundingBox(this.facingDirection, this.verticalOrientation); - } - - protected void updateFacingWithBoundingBox(Direction facing, Direction verticalOrientation) { - Validate.notNull(facing); - this.facingDirection = facing; - this.verticalOrientation = verticalOrientation; - if (facing.getAxis() - .isHorizontal()) { - this.rotationPitch = 0.0F; - this.rotationYaw = (float) (this.facingDirection.getHorizontalIndex() * 90); - } else { - this.rotationPitch = (float) (-90 * facing.getAxisDirection() - .getOffset()); - this.rotationYaw = verticalOrientation.getAxis() - .isHorizontal() ? 180 + verticalOrientation.getHorizontalAngle() : 0; - } - - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.updateBoundingBox(); - } - - @Override - protected float getEyeHeight(Pose p_213316_1_, EntitySize p_213316_2_) { - return 0; - } - - @Override - protected void updateBoundingBox() { - if (this.facingDirection == null) - return; - if (this.verticalOrientation == null) - return; - - Vector3d pos = Vector3d.of(hangingPosition) - .add(.5, .5, .5) - .subtract(Vector3d.of(facingDirection.getDirectionVec()) - .scale(0.46875)); - double d1 = pos.x; - double d2 = pos.y; - double d3 = pos.z; - this.setPos(d1, d2, d3); - - Axis axis = facingDirection.getAxis(); - if (size == 2) - pos = pos.add(Vector3d.of(axis.isHorizontal() ? facingDirection.rotateYCCW() - .getDirectionVec() - : verticalOrientation.rotateY() - .getDirectionVec()) - .scale(0.5)) - .add(Vector3d - .of(axis.isHorizontal() ? Direction.UP.getDirectionVec() - : facingDirection == Direction.UP ? verticalOrientation.getDirectionVec() - : verticalOrientation.getOpposite() - .getDirectionVec()) - .scale(0.5)); - - d1 = pos.x; - d2 = pos.y; - d3 = pos.z; - - double d4 = (double) this.getWidthPixels(); - double d5 = (double) this.getHeightPixels(); - double d6 = (double) this.getWidthPixels(); - Direction.Axis direction$axis = this.facingDirection.getAxis(); - switch (direction$axis) { - case X: - d4 = 1.0D; - break; - case Y: - d5 = 1.0D; - break; - case Z: - d6 = 1.0D; - } - - d4 = d4 / 32.0D; - d5 = d5 / 32.0D; - d6 = d6 / 32.0D; - this.setBoundingBox(new AxisAlignedBB(d1 - d4, d2 - d5, d3 - d6, d1 + d4, d2 + d5, d3 + d6)); - } - - public boolean onValidSurface() { - if (!world.isSpaceEmpty(this)) - return false; - - int i = Math.max(1, this.getWidthPixels() / 16); - int j = Math.max(1, this.getHeightPixels() / 16); - BlockPos blockpos = this.hangingPosition.offset(this.facingDirection.getOpposite()); - Direction upDirection = facingDirection.getAxis() - .isHorizontal() ? Direction.UP - : facingDirection == Direction.UP ? verticalOrientation : verticalOrientation.getOpposite(); - Direction direction = facingDirection.getAxis() - .isVertical() ? verticalOrientation.rotateY() : facingDirection.rotateYCCW(); - BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); - - for (int k = 0; k < i; ++k) { - for (int l = 0; l < j; ++l) { - int i1 = (i - 1) / -2; - int j1 = (j - 1) / -2; - blockpos$mutable.setPos(blockpos) - .move(direction, k + i1) - .move(upDirection, l + j1); - BlockState blockstate = this.world.getBlockState(blockpos$mutable); - if (Block.hasEnoughSolidSide(this.world, blockpos$mutable, this.facingDirection)) - continue; - if (!blockstate.getMaterial() - .isSolid() && !RedstoneDiodeBlock.isDiode(blockstate)) { - return false; - } - } - } - - return this.world.getEntitiesInAABBexcluding(this, this.getBoundingBox(), IS_HANGING_ENTITY) - .isEmpty(); - } - - @Override - public int getWidthPixels() { - return 16 * size; - } - - @Override - public int getHeightPixels() { - return 16 * size; - } - - @Override - public void onBroken(@Nullable Entity p_110128_1_) { - if (!world.getGameRules() - .getBoolean(GameRules.DO_ENTITY_DROPS)) - return; - - playSound(SoundEvents.ENTITY_PAINTING_BREAK, 1.0F, 1.0F); - if (p_110128_1_ instanceof PlayerEntity) { - PlayerEntity playerentity = (PlayerEntity) p_110128_1_; - if (playerentity.abilities.isCreativeMode) { - return; - } - } - - entityDropItem(AllItems.CRAFTING_BLUEPRINT.asStack()); - } - - @Override - public ItemStack getPickedResult(RayTraceResult target) { - return AllItems.CRAFTING_BLUEPRINT.asStack(); - } - - @Override - public ItemRequirement getRequiredItems() { - return new ItemRequirement(ItemUseType.CONSUME, AllItems.CRAFTING_BLUEPRINT.get()); - } - - @Override - public void playPlaceSound() { - this.playSound(SoundEvents.ENTITY_PAINTING_PLACE, 1.0F, 1.0F); - } - - @Override - public void setLocationAndAngles(double p_70012_1_, double p_70012_3_, double p_70012_5_, float p_70012_7_, - float p_70012_8_) { - this.setPosition(p_70012_1_, p_70012_3_, p_70012_5_); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void setPositionAndRotationDirect(double p_180426_1_, double p_180426_3_, double p_180426_5_, - float p_180426_7_, float p_180426_8_, int p_180426_9_, boolean p_180426_10_) { - BlockPos blockpos = - this.hangingPosition.add(p_180426_1_ - this.getX(), p_180426_3_ - this.getY(), p_180426_5_ - this.getZ()); - this.setPosition((double) blockpos.getX(), (double) blockpos.getY(), (double) blockpos.getZ()); - } - - @Override - public void writeSpawnData(PacketBuffer buffer) { - CompoundNBT compound = new CompoundNBT(); - writeAdditional(compound); - buffer.writeCompoundTag(compound); - buffer.writeCompoundTag(getPersistentData()); - } - - @Override - public void readSpawnData(PacketBuffer additionalData) { - readAdditional(additionalData.readCompoundTag()); - getPersistentData().merge(additionalData.readCompoundTag()); - } - - @Override - public ActionResultType applyPlayerInteraction(PlayerEntity player, Vector3d vec, Hand hand) { - if (player instanceof FakePlayer) - return ActionResultType.PASS; - - BlueprintSection section = getSectionAt(vec); - - if (!AllItems.WRENCH.isIn(player.getHeldItem(hand)) && !world.isRemote) { - boolean empty = true; - ItemStackHandler items = section.getItems(); - for (int i = 0; i < 9; i++) { - if (!items.getStackInSlot(i) - .isEmpty()) { - empty = false; - break; - } - } - - if (!empty) { - IItemHandlerModifiable playerInv = new InvWrapper(player.inventory); - boolean firstPass = true; - int amountCrafted = 0; - ForgeHooks.setCraftingPlayer(player); - Optional recipe = Optional.empty(); - - do { - Map stacksTaken = new HashMap<>(); - Map craftingGrid = new HashMap<>(); - boolean success = true; - - Search: - for (int i = 0; i < 9; i++) { - ItemStack requestedItem = items.getStackInSlot(i); - if (requestedItem.isEmpty()) { - craftingGrid.put(i, ItemStack.EMPTY); - continue; - } - - for (int slot = 0; slot < playerInv.getSlots(); slot++) { - if (!FilterItem.test(world, playerInv.getStackInSlot(slot), requestedItem)) - continue; - ItemStack currentItem = playerInv.extractItem(slot, 1, false); - if (stacksTaken.containsKey(slot)) { - stacksTaken.get(slot) - .grow(1); - } else { - stacksTaken.put(slot, currentItem.copy()); - } - craftingGrid.put(i, currentItem); - continue Search; - } - - success = false; - break; - } - - if (success) { - CraftingInventory craftingInventory = new BlueprintCraftingInventory(craftingGrid); - - if (!recipe.isPresent()) - recipe = world.getRecipeManager() - .getRecipe(IRecipeType.CRAFTING, craftingInventory, world); - ItemStack result = recipe.filter(r -> r.matches(craftingInventory, world)) - .map(r -> r.getCraftingResult(craftingInventory)) - .orElse(ItemStack.EMPTY); - - if (result.isEmpty()) { - success = false; - } else if (result.getCount() + amountCrafted > 64) { - success = false; - } else { - amountCrafted += result.getCount(); - result.onCrafting(player.world, player, 1); - BasicEventHooks.firePlayerCraftingEvent(player, result, craftingInventory); - NonNullList nonnulllist = world.getRecipeManager() - .getRecipeNonNull(IRecipeType.CRAFTING, craftingInventory, world); - - if (firstPass) - world.playSound(null, player.getBlockPos(), SoundEvents.ENTITY_ITEM_PICKUP, - SoundCategory.PLAYERS, .2f, 1f + Create.RANDOM.nextFloat()); - player.inventory.placeItemBackInInventory(world, result); - for (ItemStack itemStack : nonnulllist) - player.inventory.placeItemBackInInventory(world, itemStack); - firstPass = false; - } - } - - if (!success) { - for (Entry entry : stacksTaken.entrySet()) - playerInv.insertItem(entry.getKey(), entry.getValue(), false); - break; - } - - } while (player.isSneaking()); - ForgeHooks.setCraftingPlayer(null); - - return ActionResultType.SUCCESS; - } - } - - int i = section.index; - if (!world.isRemote && player instanceof ServerPlayerEntity) { - NetworkHooks.openGui((ServerPlayerEntity) player, section, buf -> { - buf.writeVarInt(getEntityId()); - buf.writeVarInt(i); - }); - } - - return ActionResultType.SUCCESS; - } - - public BlueprintSection getSectionAt(Vector3d vec) { - int index = 0; - if (size > 1) { - vec = VecHelper.rotate(vec, rotationYaw, Axis.Y); - vec = VecHelper.rotate(vec, -rotationPitch, Axis.X); - vec = vec.add(0.5, 0.5, 0); - if (size == 3) - vec = vec.add(1, 1, 0); - int x = MathHelper.clamp(MathHelper.floor(vec.x), 0, size - 1); - int y = MathHelper.clamp(MathHelper.floor(vec.y), 0, size - 1); - index = x + y * size; - } - - BlueprintSection section = getSection(index); - return section; - } - - static class BlueprintCraftingInventory extends CraftingInventory { - - private static Container dummyContainer = new Container(null, -1) { - public boolean canInteractWith(PlayerEntity playerIn) { - return false; - } - }; - - public BlueprintCraftingInventory(Map items) { - super(dummyContainer, 3, 3); - for (int y = 0; y < 3; y++) { - for (int x = 0; x < 3; x++) { - ItemStack stack = items.get(y * 3 + x); - setInventorySlotContents(y * 3 + x, stack == null ? ItemStack.EMPTY : stack.copy()); - } - } - } - - } - - public CompoundNBT getOrCreateRecipeCompound() { - CompoundNBT persistentData = getPersistentData(); - if (!persistentData.contains("Recipes")) - persistentData.put("Recipes", new CompoundNBT()); - return persistentData.getCompound("Recipes"); - } - - private Map sectionCache = new HashMap<>(); - - public BlueprintSection getSection(int index) { - return sectionCache.computeIfAbsent(index, i -> new BlueprintSection(i)); - } - - class BlueprintSection implements INamedContainerProvider { - int index; - Couple cachedDisplayItems; - public boolean inferredIcon = false; - - public BlueprintSection(int index) { - this.index = index; - } - - public Couple getDisplayItems() { - if (cachedDisplayItems != null) - return cachedDisplayItems; - ItemStackHandler items = getItems(); - return cachedDisplayItems = Couple.create(items.getStackInSlot(9), items.getStackInSlot(10)); - } - - public ItemStackHandler getItems() { - ItemStackHandler newInv = new ItemStackHandler(11); - CompoundNBT list = getOrCreateRecipeCompound(); - CompoundNBT invNBT = list.getCompound(index + ""); - inferredIcon = list.getBoolean("InferredIcon"); - if (!invNBT.isEmpty()) - newInv.deserializeNBT(invNBT); - return newInv; - } - - public void save(ItemStackHandler inventory) { - CompoundNBT list = getOrCreateRecipeCompound(); - list.put(index + "", inventory.serializeNBT()); - list.putBoolean("InferredIcon", inferredIcon); - cachedDisplayItems = null; - if (!world.isRemote) - syncPersistentDataWithTracking(BlueprintEntity.this); - } - - public boolean isEntityAlive() { - return isAlive(); - } - - public World getBlueprintWorld() { - return world; - } - - @Override - public Container createMenu(int id, PlayerInventory inv, PlayerEntity player) { - return BlueprintContainer.create(id, inv, this); - } - - @Override - public ITextComponent getDisplayName() { - return new StringTextComponent(""); - } - - } - - @Override - public void onPersistentDataUpdated() { - sectionCache.clear(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintItem.java deleted file mode 100644 index 355df3b30..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintItem.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.Collection; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.logistics.item.filter.AttributeFilterContainer.WhitelistMode; -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.content.logistics.item.filter.ItemAttribute; - -import net.minecraft.entity.EntityType; -import net.minecraft.entity.item.HangingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.item.crafting.Ingredient.IItemList; -import net.minecraft.item.crafting.Ingredient.SingleItemList; -import net.minecraft.item.crafting.Ingredient.TagList; -import net.minecraft.item.crafting.ShapedRecipe; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.JSONUtils; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.crafting.StackList; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; -import net.minecraftforge.items.ItemStackHandler; - -public class BlueprintItem extends Item { - - public BlueprintItem(Properties p_i48487_1_) { - super(p_i48487_1_); - } - - @Override - public ActionResultType onItemUse(ItemUseContext ctx) { - Direction face = ctx.getFace(); - PlayerEntity player = ctx.getPlayer(); - ItemStack stack = ctx.getItem(); - BlockPos pos = ctx.getPos() - .offset(face); - - if (player != null && !player.canPlayerEdit(pos, face, stack)) - return ActionResultType.FAIL; - - World world = ctx.getWorld(); - HangingEntity hangingentity = new BlueprintEntity(world, pos, face, face.getAxis() - .isHorizontal() ? Direction.DOWN : ctx.getPlacementHorizontalFacing()); - CompoundNBT compoundnbt = stack.getTag(); - - if (compoundnbt != null) - EntityType.applyItemNBT(world, player, hangingentity, compoundnbt); - if (!hangingentity.onValidSurface()) - return ActionResultType.CONSUME; - if (!world.isRemote) { - hangingentity.playPlaceSound(); - world.addEntity(hangingentity); - } - - stack.shrink(1); - return ActionResultType.success(world.isRemote); - } - - protected boolean canPlace(PlayerEntity p_200127_1_, Direction p_200127_2_, ItemStack p_200127_3_, - BlockPos p_200127_4_) { - return p_200127_1_.canPlayerEdit(p_200127_4_, p_200127_2_, p_200127_3_); - } - - public static void assignCompleteRecipe(ItemStackHandler inv, IRecipe recipe) { - NonNullList ingredients = recipe.getIngredients(); - - for (int i = 0; i < 9; i++) - inv.setStackInSlot(i, ItemStack.EMPTY); - inv.setStackInSlot(9, recipe.getRecipeOutput()); - - if (recipe instanceof ShapedRecipe) { - ShapedRecipe shapedRecipe = (ShapedRecipe) recipe; - for (int row = 0; row < shapedRecipe.getHeight(); row++) - for (int col = 0; col < shapedRecipe.getWidth(); col++) - inv.setStackInSlot(row * 3 + col, - convertIngredientToFilter(ingredients.get(row * shapedRecipe.getWidth() + col))); - } else { - for (int i = 0; i < ingredients.size(); i++) - inv.setStackInSlot(i, convertIngredientToFilter(ingredients.get(i))); - } - } - - private static ItemStack convertIngredientToFilter(Ingredient ingredient) { - Ingredient.IItemList[] acceptedItems = - ObfuscationReflectionHelper.getPrivateValue(Ingredient.class, ingredient, "field_199807_b"); - if (acceptedItems == null || acceptedItems.length > 18) - return ItemStack.EMPTY; - if (acceptedItems.length == 0) - return ItemStack.EMPTY; - if (acceptedItems.length == 1) - return convertIItemListToFilter(acceptedItems[0]); - - ItemStack result = AllItems.FILTER.asStack(); - ItemStackHandler filterItems = FilterItem.getFilterItems(result); - for (int i = 0; i < acceptedItems.length; i++) - filterItems.setStackInSlot(i, convertIItemListToFilter(acceptedItems[i])); - result.getOrCreateTag() - .put("Items", filterItems.serializeNBT()); - return result; - } - - private static ItemStack convertIItemListToFilter(IItemList itemList) { - Collection stacks = itemList.getStacks(); - if (itemList instanceof SingleItemList) { - for (ItemStack itemStack : stacks) - return itemStack; - } - - if (itemList instanceof TagList) { - ResourceLocation resourcelocation = new ResourceLocation(JSONUtils.getString(itemList.serialize(), "tag")); - ItemStack filterItem = AllItems.ATTRIBUTE_FILTER.asStack(); - filterItem.getOrCreateTag() - .putInt("WhitelistMode", WhitelistMode.WHITELIST_DISJ.ordinal()); - ListNBT attributes = new ListNBT(); - ItemAttribute at = new ItemAttribute.InTag(resourcelocation); - CompoundNBT compoundNBT = new CompoundNBT(); - at.serializeNBT(compoundNBT); - compoundNBT.putBoolean("Inverted", false); - attributes.add(compoundNBT); - filterItem.getOrCreateTag() - .put("MatchedAttributes", attributes); - return filterItem; - } - - if (itemList instanceof StackList) { - ItemStack result = AllItems.FILTER.asStack(); - ItemStackHandler filterItems = FilterItem.getFilterItems(result); - int i = 0; - for (ItemStack itemStack : stacks) { - if (i >= 18) - break; - filterItems.setStackInSlot(i++, itemStack); - } - CompoundNBT tag = result.getOrCreateTag(); - tag.put("Items", filterItems.serializeNBT()); - tag.putBoolean("RespectNBT", true); - return result; - } - - return ItemStack.EMPTY; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java deleted file mode 100644 index 7d6825239..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.content.curiosities.tools.BlueprintEntity.BlueprintCraftingInventory; -import com.simibubi.create.content.curiosities.tools.BlueprintEntity.BlueprintSection; -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.ICraftingRecipe; -import net.minecraft.item.crafting.IRecipeType; -import net.minecraft.util.math.EntityRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.RayTraceResult.Type; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.items.ItemStackHandler; - -public class BlueprintOverlayRenderer { - - static boolean active; - static boolean empty; - static boolean lastSneakState; - static BlueprintSection lastTargetedSection; - - static List> ingredients = new ArrayList<>(); - static ItemStack result = ItemStack.EMPTY; - static boolean resultCraftable = false; - - public static void tick() { - Minecraft mc = Minecraft.getInstance(); - RayTraceResult mouseOver = mc.objectMouseOver; - BlueprintSection last = lastTargetedSection; - boolean sneak = mc.player.isSneaking(); - lastTargetedSection = null; - active = false; - if (mouseOver == null) - return; - if (mouseOver.getType() != Type.ENTITY) - return; - - EntityRayTraceResult entityRay = (EntityRayTraceResult) mouseOver; - if (!(entityRay.getEntity() instanceof BlueprintEntity)) - return; - - BlueprintEntity blueprintEntity = (BlueprintEntity) entityRay.getEntity(); - BlueprintSection sectionAt = blueprintEntity.getSectionAt(entityRay.getHitVec() - .subtract(blueprintEntity.getPositionVec())); - - lastTargetedSection = last; - active = true; - - if (sectionAt != lastTargetedSection || AnimationTickHolder.getTicks() % 10 == 0 || lastSneakState != sneak) - rebuild(sectionAt, sneak); - - lastTargetedSection = sectionAt; - lastSneakState = sneak; - } - - public static void rebuild(BlueprintSection sectionAt, boolean sneak) { - ItemStackHandler items = sectionAt.getItems(); - boolean empty = true; - for (int i = 0; i < 9; i++) { - if (!items.getStackInSlot(i) - .isEmpty()) { - empty = false; - break; - } - } - - BlueprintOverlayRenderer.empty = empty; - BlueprintOverlayRenderer.result = ItemStack.EMPTY; - - if (empty) - return; - - boolean firstPass = true; - boolean success = true; - Minecraft mc = Minecraft.getInstance(); - ItemStackHandler playerInv = new ItemStackHandler(mc.player.inventory.getSizeInventory()); - for (int i = 0; i < playerInv.getSlots(); i++) - playerInv.setStackInSlot(i, mc.player.inventory.getStackInSlot(i) - .copy()); - - int amountCrafted = 0; - Optional recipe = Optional.empty(); - Map craftingGrid = new HashMap<>(); - ingredients.clear(); - ItemStackHandler missingItems = new ItemStackHandler(64); - ItemStackHandler availableItems = new ItemStackHandler(64); - List newlyAdded = new ArrayList<>(); - List newlyMissing = new ArrayList<>(); - boolean invalid = false; - - do { - craftingGrid.clear(); - newlyAdded.clear(); - newlyMissing.clear(); - - Search: - for (int i = 0; i < 9; i++) { - ItemStack requestedItem = items.getStackInSlot(i); - if (requestedItem.isEmpty()) { - craftingGrid.put(i, ItemStack.EMPTY); - continue; - } - - for (int slot = 0; slot < playerInv.getSlots(); slot++) { - if (!FilterItem.test(mc.world, playerInv.getStackInSlot(slot), requestedItem)) - continue; - ItemStack currentItem = playerInv.extractItem(slot, 1, false); - craftingGrid.put(i, currentItem); - newlyAdded.add(currentItem); - continue Search; - } - - success = false; - newlyMissing.add(requestedItem); - } - - if (success) { - CraftingInventory craftingInventory = new BlueprintCraftingInventory(craftingGrid); - if (!recipe.isPresent()) - recipe = mc.world.getRecipeManager() - .getRecipe(IRecipeType.CRAFTING, craftingInventory, mc.world); - ItemStack resultFromRecipe = recipe.filter(r -> r.matches(craftingInventory, mc.world)) - .map(r -> r.getCraftingResult(craftingInventory)) - .orElse(ItemStack.EMPTY); - - if (resultFromRecipe.isEmpty()) { - if (!recipe.isPresent()) - invalid = true; - success = false; - } else if (resultFromRecipe.getCount() + amountCrafted > 64) { - success = false; - } else { - amountCrafted += resultFromRecipe.getCount(); - if (result.isEmpty()) - result = resultFromRecipe.copy(); - else - result.grow(resultFromRecipe.getCount()); - resultCraftable = true; - firstPass = false; - } - } - - if (success || firstPass) { - newlyAdded.forEach(s -> ItemHandlerHelper.insertItemStacked(availableItems, s, false)); - newlyMissing.forEach(s -> ItemHandlerHelper.insertItemStacked(missingItems, s, false)); - } - - if (!success) { - if (firstPass) { - result = invalid ? ItemStack.EMPTY : items.getStackInSlot(9); - resultCraftable = false; - } - break; - } - - if (!sneak) - break; - - } while (success); - - for (int i = 0; i < 9; i++) { - ItemStack available = availableItems.getStackInSlot(i); - if (available.isEmpty()) - continue; - ingredients.add(Pair.of(available, true)); - } - for (int i = 0; i < 9; i++) { - ItemStack missing = missingItems.getStackInSlot(i); - if (missing.isEmpty()) - continue; - ingredients.add(Pair.of(missing, false)); - } - } - - public static void renderOverlay(MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay, - float partialTicks) { - if (!active || empty) - return; - - Minecraft mc = Minecraft.getInstance(); - int w = 30 + 21 * ingredients.size() + 21; - - int x = (mc.getWindow() - .getScaledWidth() - w) / 2; - int y = (int) (mc.getWindow() - .getScaledHeight() / 3f * 2); - - for (Pair pair : ingredients) { - RenderSystem.enableBlend(); - (pair.getSecond() ? AllGuiTextures.HOTSLOT_ACTIVE : AllGuiTextures.HOTSLOT).draw(ms, x, y); - ItemStack itemStack = pair.getFirst(); - GuiGameElement.of(itemStack) - .at(x + 3, y + 3) - .render(ms); - mc.getItemRenderer() - .renderItemOverlayIntoGUI(mc.fontRenderer, itemStack, x + 3, y + 3, - pair.getSecond() || itemStack.getCount() == 1 ? null - : TextFormatting.GOLD.toString() + itemStack.getCount()); - x += 21; - } - - x += 5; - RenderSystem.enableBlend(); - AllGuiTextures.HOTSLOT_ARROW.draw(ms, x, y + 4); - x += 25; - - if (result.isEmpty()) { - AllGuiTextures.HOTSLOT.draw(ms, x, y); - GuiGameElement.of(Items.BARRIER) - .at(x + 3, y + 3) - .render(ms); - } else { - (resultCraftable ? AllGuiTextures.HOTSLOT_SUPER_ACTIVE : AllGuiTextures.HOTSLOT).draw(ms, - resultCraftable ? x - 1 : x, resultCraftable ? y - 1 : y); - GuiGameElement.of(result) - .at(x + 3, y + 3) - .render(ms); - mc.getItemRenderer() - .renderItemOverlayIntoGUI(mc.fontRenderer, result, x + 3, y + 3, null); - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java deleted file mode 100644 index 09007d6bf..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.content.curiosities.tools.BlueprintEntity.BlueprintSection; -import com.simibubi.create.foundation.render.PartialBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.vector.Matrix3f; - -public class BlueprintRenderer extends EntityRenderer { - - public BlueprintRenderer(EntityRendererManager p_i46179_1_) { - super(p_i46179_1_); - } - - @Override - public void render(BlueprintEntity entity, float yaw, float pt, MatrixStack ms, IRenderTypeBuffer buffer, - int overlay) { - PartialModel partialModel = entity.size == 3 ? AllBlockPartials.CRAFTING_BLUEPRINT_3x3 - : entity.size == 2 ? AllBlockPartials.CRAFTING_BLUEPRINT_2x2 : AllBlockPartials.CRAFTING_BLUEPRINT_1x1; - SuperByteBuffer sbb = PartialBufferer.get(partialModel, Blocks.AIR.getDefaultState()); - int light = WorldRenderer.getLightmapCoordinates(entity.world, entity.getBlockPos()); - sbb.matrixStacker() - .rotateY(-yaw) - .rotateX(90.0F + entity.rotationPitch) - .translate(-.5, -1 / 32f, -.5); - if (entity.size == 2) - sbb.translate(.5, 0, -.5); - sbb.light(light) - .renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - super.render(entity, yaw, pt, ms, buffer, light); - - ms.push(); - - MatrixStacker.of(ms) - .rotateY(-yaw) - .rotateX(entity.rotationPitch == -90 ? -45 : entity.rotationPitch == 0 ? -15 : -5); - Matrix3f copy = ms.peek() - .getNormal() - .copy(); - - ms.pop(); - ms.push(); - - MatrixStacker.of(ms) - .rotateY(-yaw) - .rotateX(entity.rotationPitch) - .translate(0, 0, 1 / 32f + .001); - - if (entity.size == 3) - ms.translate(-1, -1, 0); - - for (int x = 0; x < entity.size; x++) { - ms.push(); - for (int y = 0; y < entity.size; y++) { - BlueprintSection section = entity.getSection(x * entity.size + y); - Couple displayItems = section.getDisplayItems(); - ms.push(); - ms.scale(.5f, .5f, 1 / 1024f); - displayItems.forEachWithContext((stack, primary) -> { - if (stack.isEmpty()) - return; - - ms.push(); - if (!primary) { - ms.translate(0.325f, -0.325f, 1); - ms.scale(.625f, .625f, 1); - } - - Matrix3f n = ms.peek() - .getNormal(); - n.a00 = copy.a00; - n.a01 = copy.a01; - n.a02 = copy.a02; - n.a10 = copy.a10; - n.a11 = copy.a11; - n.a12 = copy.a12; - n.a20 = copy.a20; - n.a21 = copy.a21; - n.a22 = copy.a22; - - Minecraft.getInstance() - .getItemRenderer() - .renderItem(stack, TransformType.GUI, light, overlay, ms, buffer); - ms.pop(); - }); - ms.pop(); - ms.translate(1, 0, 0); - } - ms.pop(); - ms.translate(0, 1, 0); - } - - ms.pop(); - } - - @Override - public ResourceLocation getEntityTexture(BlueprintEntity p_110775_1_) { - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java b/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java deleted file mode 100644 index 3ce0d4fdb..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import static com.simibubi.create.foundation.gui.AllGuiTextures.PLAYER_INVENTORY; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.logistics.item.filter.FilterScreenPacket; -import com.simibubi.create.content.logistics.item.filter.FilterScreenPacket.Option; -import com.simibubi.create.foundation.gui.AbstractSimiContainerScreen; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.widgets.IconButton; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.renderer.Rectangle2d; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; - -public class BlueprintScreen extends AbstractSimiContainerScreen { - - protected AllGuiTextures background; - private List extraAreas = Collections.emptyList(); - - private IconButton resetButton; - private IconButton confirmButton; - - public BlueprintScreen(BlueprintContainer container, PlayerInventory inv, ITextComponent title) { - super(container, inv, title); - this.background = AllGuiTextures.BLUEPRINT; - } - - @Override - protected void init() { - setWindowSize(background.width + 50, background.height + PLAYER_INVENTORY.height + 20); - super.init(); - widgets.clear(); - int x = guiLeft; - int offset = guiTop < 30 ? 30 - guiTop : 0; - extraAreas = - ImmutableList.of(new Rectangle2d(x, guiTop + offset, background.width + 70, background.height - offset)); - - resetButton = new IconButton(x + background.width - 62, guiTop + background.height - 24, AllIcons.I_TRASH); - confirmButton = new IconButton(x + background.width - 33, guiTop + background.height - 24, AllIcons.I_CONFIRM); - - widgets.add(resetButton); - widgets.add(confirmButton); - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - int x = guiLeft; - int y = guiTop; - background.draw(ms, this, x, y); - - int invX = guiLeft + 25; - int invY = y + background.height + 10; - PLAYER_INVENTORY.draw(ms, this, invX, invY); - - String localizedName = I18n.format(AllItems.CRAFTING_BLUEPRINT.get() - .getTranslationKey()); - textRenderer.draw(ms, playerInventory.getDisplayName(), invX + 7, invY + 6, 0x666666); - textRenderer.draw(ms, localizedName, x + 15, y + 4, 0xFFFFFF); - - GuiGameElement.of(AllBlockPartials.CRAFTING_BLUEPRINT_1x1).at(x + background.width + 20, guiTop + background.height - 35, 0) - .rotate(45, -45, 22.5f) - .scale(40) - .render(ms); - } - - @Override - protected void drawMouseoverTooltip(MatrixStack ms, int x, int y) { - if (!this.client.player.inventory.getItemStack() - .isEmpty() || this.hoveredSlot == null || this.hoveredSlot.getHasStack() - || hoveredSlot.inventory == container.playerInventory) { - super.drawMouseoverTooltip(ms, x, y); - return; - } - renderWrappedToolTip(ms, addToTooltip(new LinkedList<>(), hoveredSlot.getSlotIndex(), true), x, y, - textRenderer); - } - - @Override - public List getTooltipFromItem(ItemStack stack) { - List list = super.getTooltipFromItem(stack); - if (hoveredSlot.inventory == container.playerInventory) - return list; - return hoveredSlot != null ? addToTooltip(list, hoveredSlot.getSlotIndex(), false) : list; - } - - private List addToTooltip(List list, int slot, boolean isEmptySlot) { - if (slot < 0 || slot > 10) - return list; - - if (slot < 9) { - list.add(Lang.createTranslationTextComponent("crafting_blueprint.crafting_slot") - .formatted(TextFormatting.GOLD)); - if (isEmptySlot) - list.add(Lang.createTranslationTextComponent("crafting_blueprint.filter_items_viable") - .formatted(TextFormatting.GRAY)); - - } else if (slot == 9) { - list.add(Lang.createTranslationTextComponent("crafting_blueprint.display_slot") - .formatted(TextFormatting.GOLD)); - if (!isEmptySlot) - list.add(Lang - .createTranslationTextComponent("crafting_blueprint." - + (container.contentHolder.inferredIcon ? "inferred" : "manually_assigned")) - .formatted(TextFormatting.GRAY)); - - } else if (slot == 10) { - list.add(Lang.createTranslationTextComponent("crafting_blueprint.secondary_display_slot") - .formatted(TextFormatting.GOLD)); - if (isEmptySlot) - list.add(Lang.createTranslationTextComponent("crafting_blueprint.optional") - .formatted(TextFormatting.GRAY)); - } - - return list; - } - - @Override - public void tick() { -// handleTooltips(); - super.tick(); - - if (!container.contentHolder.isEntityAlive()) - client.player.closeScreen(); - } - -// protected void handleTooltips() { -// List tooltipButtons = getTooltipButtons(); -// -// for (IconButton button : tooltipButtons) { -// if (!button.getToolTip() -// .isEmpty()) { -// button.setToolTip(button.getToolTip() -// .get(0)); -// button.getToolTip() -// .add(TooltipHelper.holdShift(Palette.Yellow, hasShiftDown())); -// } -// } -// -// if (hasShiftDown()) { -// List tooltipDescriptions = getTooltipDescriptions(); -// for (int i = 0; i < tooltipButtons.size(); i++) -// fillToolTip(tooltipButtons.get(i), tooltipDescriptions.get(i)); -// } -// } - - @Override - public boolean mouseClicked(double x, double y, int button) { - boolean mouseClicked = super.mouseClicked(x, y, button); - - if (button == 0) { - if (confirmButton.isHovered()) { - client.player.closeScreen(); - return true; - } - if (resetButton.isHovered()) { - container.clearContents(); - contentsCleared(); - container.sendClearPacket(); - return true; - } - } - - return mouseClicked; - } - - protected void contentsCleared() { - } - - protected void sendOptionUpdate(Option option) { - AllPackets.channel.sendToServer(new FilterScreenPacket(option)); - } - - @Override - public List getExtraAreas() { - return extraAreas; - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripInteractionPacket.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripInteractionPacket.java deleted file mode 100644 index a5f854031..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripInteractionPacket.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.Hand; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.common.ForgeMod; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class ExtendoGripInteractionPacket extends SimplePacketBase { - - private Hand interactionHand; - private int target; - private Vector3d specificPoint; - - public ExtendoGripInteractionPacket(Entity target) { - this(target, null); - } - - public ExtendoGripInteractionPacket(Entity target, Hand hand) { - this(target, hand, null); - } - - public ExtendoGripInteractionPacket(Entity target, Hand hand, Vector3d specificPoint) { - interactionHand = hand; - this.specificPoint = specificPoint; - this.target = target.getEntityId(); - } - - public ExtendoGripInteractionPacket(PacketBuffer buffer) { - target = buffer.readInt(); - int handId = buffer.readInt(); - interactionHand = handId == -1 ? null : Hand.values()[handId]; - if (buffer.readBoolean()) - specificPoint = new Vector3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(target); - buffer.writeInt(interactionHand == null ? -1 : interactionHand.ordinal()); - buffer.writeBoolean(specificPoint != null); - if (specificPoint != null) { - buffer.writeDouble(specificPoint.x); - buffer.writeDouble(specificPoint.y); - buffer.writeDouble(specificPoint.z); - } - } - - @Override - public void handle(Supplier context) { - context.get().enqueueWork(() -> { - ServerPlayerEntity sender = context.get().getSender(); - if (sender == null) - return; - Entity entityByID = sender.getServerWorld().getEntityByID(target); - if (entityByID != null && ExtendoGripItem.isHoldingExtendoGrip(sender)) { - double d = sender.getAttribute(ForgeMod.REACH_DISTANCE.get()).getValue(); - if (!sender.canEntityBeSeen(entityByID)) - d -= 3; - d *= d; - if (sender.getDistanceSq(entityByID) > d) { - // TODO log? - return; - } - if (interactionHand == null) - sender.attackTargetEntityWithCurrentItem(entityByID); - else if (specificPoint == null) - sender.interactOn(entityByID, interactionHand); - else - entityByID.applyPlayerInteraction(sender, specificPoint, interactionHand); - } - }); - context.get().setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java deleted file mode 100644 index 3b6a2acc6..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItem.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.UUID; - -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.Multimap; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.advancement.AllTriggers; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.item.ItemFrameEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.entity.projectile.ProjectileHelper; -import net.minecraft.item.Item; -import net.minecraft.item.Rarity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.DamageSource; -import net.minecraft.util.LazyValue; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.EntityRayTraceResult; -import net.minecraft.util.math.RayTraceResult.Type; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.InputEvent.ClickInputEvent; -import net.minecraftforge.common.ForgeMod; -import net.minecraftforge.event.entity.living.LivingAttackEvent; -import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; -import net.minecraftforge.event.entity.living.LivingKnockBackEvent; -import net.minecraftforge.event.entity.player.AttackEntityEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class ExtendoGripItem extends Item { - private static DamageSource lastActiveDamageSource; - - public static final AttributeModifier singleRangeAttributeModifier = new AttributeModifier(UUID.fromString("7f7dbdb2-0d0d-458a-aa40-ac7633691f66"), "Range modifier", 3, AttributeModifier.Operation.ADDITION); - public static final AttributeModifier doubleRangeAttributeModifier = new AttributeModifier(UUID.fromString("8f7dbdb2-0d0d-458a-aa40-ac7633691f66"), "Range modifier", 5, AttributeModifier.Operation.ADDITION); - - static LazyValue> rangeModifier = - new LazyValue<>(() -> - // Holding an ExtendoGrip - ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), singleRangeAttributeModifier) - ); - - static LazyValue> doubleRangeModifier = - new LazyValue<>(() -> - // Holding two ExtendoGrips o.O - ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), doubleRangeAttributeModifier) - ); - - public ExtendoGripItem(Properties properties) { - super(properties.maxStackSize(1) - .rarity(Rarity.UNCOMMON)); - } - - public static final String EXTENDO_MARKER = "createExtendo"; - public static final String DUAL_EXTENDO_MARKER = "createDualExtendo"; - - @SubscribeEvent - public static void holdingExtendoGripIncreasesRange(LivingUpdateEvent event) { - if (!(event.getEntity() instanceof PlayerEntity)) - return; - - PlayerEntity player = (PlayerEntity) event.getEntityLiving(); - - CompoundNBT persistentData = player.getPersistentData(); - boolean inOff = AllItems.EXTENDO_GRIP.isIn(player.getHeldItemOffhand()); - boolean inMain = AllItems.EXTENDO_GRIP.isIn(player.getHeldItemMainhand()); - boolean holdingDualExtendo = inOff && inMain; - boolean holdingExtendo = inOff ^ inMain; - holdingExtendo &= !holdingDualExtendo; - boolean wasHoldingExtendo = persistentData.contains(EXTENDO_MARKER); - boolean wasHoldingDualExtendo = persistentData.contains(DUAL_EXTENDO_MARKER); - - if (holdingExtendo != wasHoldingExtendo) { - if (!holdingExtendo) { - player.getAttributes().removeModifiers(rangeModifier.getValue()); - persistentData.remove(EXTENDO_MARKER); - } else { - if (player instanceof ServerPlayerEntity) - AllTriggers.EXTENDO.trigger((ServerPlayerEntity) player); - player.getAttributes() - .addTemporaryModifiers(rangeModifier.getValue()); - persistentData.putBoolean(EXTENDO_MARKER, true); - } - } - - if (holdingDualExtendo != wasHoldingDualExtendo) { - if (!holdingDualExtendo) { - player.getAttributes() - .removeModifiers(doubleRangeModifier.getValue()); - persistentData.remove(DUAL_EXTENDO_MARKER); - } else { - if (player instanceof ServerPlayerEntity) - AllTriggers.GIGA_EXTENDO.trigger((ServerPlayerEntity) player); - player.getAttributes() - .addTemporaryModifiers(doubleRangeModifier.getValue()); - persistentData.putBoolean(DUAL_EXTENDO_MARKER, true); - } - } - - } - - @SubscribeEvent - public static void addReachToJoiningPlayersHoldingExtendo(PlayerEvent.PlayerLoggedInEvent event) { - PlayerEntity player = event.getPlayer(); - CompoundNBT persistentData = player.getPersistentData(); - - if (persistentData.contains(DUAL_EXTENDO_MARKER)) - player.getAttributes().addTemporaryModifiers(doubleRangeModifier.getValue()); - else if (persistentData.contains(EXTENDO_MARKER)) - player.getAttributes().addTemporaryModifiers(rangeModifier.getValue()); - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void dontMissEntitiesWhenYouHaveHighReachDistance(ClickInputEvent event) { - Minecraft mc = Minecraft.getInstance(); - ClientPlayerEntity player = mc.player; - if (mc.world == null || player == null) - return; - if (!isHoldingExtendoGrip(player)) - return; - if (mc.objectMouseOver instanceof BlockRayTraceResult && mc.objectMouseOver.getType() != Type.MISS) - return; - - // Modified version of GameRenderer#getMouseOver - double d0 = player.getAttribute(ForgeMod.REACH_DISTANCE.get()) - .getValue(); - if (!player.isCreative()) - d0 -= 0.5f; - Vector3d Vector3d = player.getEyePosition(AnimationTickHolder.getPartialTicks()); - Vector3d Vector3d1 = player.getLook(1.0F); - Vector3d Vector3d2 = Vector3d.add(Vector3d1.x * d0, Vector3d1.y * d0, Vector3d1.z * d0); - AxisAlignedBB axisalignedbb = player.getBoundingBox() - .expand(Vector3d1.scale(d0)) - .grow(1.0D, 1.0D, 1.0D); - EntityRayTraceResult entityraytraceresult = - ProjectileHelper.rayTraceEntities(player, Vector3d, Vector3d2, axisalignedbb, (e) -> { - return !e.isSpectator() && e.canBeCollidedWith(); - }, d0 * d0); - if (entityraytraceresult != null) { - Entity entity1 = entityraytraceresult.getEntity(); - Vector3d Vector3d3 = entityraytraceresult.getHitVec(); - double d2 = Vector3d.squareDistanceTo(Vector3d3); - if (d2 < d0 * d0 || mc.objectMouseOver == null || mc.objectMouseOver.getType() == Type.MISS) { - mc.objectMouseOver = entityraytraceresult; - if (entity1 instanceof LivingEntity || entity1 instanceof ItemFrameEntity) - mc.pointedEntity = entity1; - } - } - } - - @SubscribeEvent - public static void bufferLivingAttackEvent(LivingAttackEvent event) { - // Workaround for removed patch to get the attacking entity. Tbf this is a hack and a half, but it should work. - lastActiveDamageSource = event.getSource(); - } - - @SubscribeEvent - public static void attacksByExtendoGripHaveMoreKnockback(LivingKnockBackEvent event) { - if (lastActiveDamageSource == null) - return; - Entity entity = lastActiveDamageSource.getImmediateSource(); - if (!(entity instanceof PlayerEntity)) - return; - PlayerEntity player = (PlayerEntity) entity; - if (!isHoldingExtendoGrip(player)) - return; - event.setStrength(event.getStrength() + 2); - } - - private static boolean isUncaughtClientInteraction(Entity entity, Entity target) { - // Server ignores entity interaction further than 6m - if (entity.getDistanceSq(target) < 36) - return false; - if (!entity.world.isRemote) - return false; - if (!(entity instanceof PlayerEntity)) - return false; - return true; - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void notifyServerOfLongRangeAttacks(AttackEntityEvent event) { - Entity entity = event.getEntity(); - Entity target = event.getTarget(); - if (!isUncaughtClientInteraction(entity, target)) - return; - PlayerEntity player = (PlayerEntity) entity; - if (isHoldingExtendoGrip(player)) - AllPackets.channel.sendToServer(new ExtendoGripInteractionPacket(target)); - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void notifyServerOfLongRangeInteractions(PlayerInteractEvent.EntityInteract event) { - Entity entity = event.getEntity(); - Entity target = event.getTarget(); - if (!isUncaughtClientInteraction(entity, target)) - return; - PlayerEntity player = (PlayerEntity) entity; - if (isHoldingExtendoGrip(player)) - AllPackets.channel.sendToServer(new ExtendoGripInteractionPacket(target, event.getHand())); - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void notifyServerOfLongRangeSpecificInteractions(PlayerInteractEvent.EntityInteractSpecific event) { - Entity entity = event.getEntity(); - Entity target = event.getTarget(); - if (!isUncaughtClientInteraction(entity, target)) - return; - PlayerEntity player = (PlayerEntity) entity; - if (isHoldingExtendoGrip(player)) - AllPackets.channel - .sendToServer(new ExtendoGripInteractionPacket(target, event.getHand(), event.getLocalPos())); - } - - public static boolean isHoldingExtendoGrip(PlayerEntity player) { - boolean inOff = AllItems.EXTENDO_GRIP.isIn(player.getHeldItemOffhand()); - boolean inMain = AllItems.EXTENDO_GRIP.isIn(player.getHeldItemMainhand()); - boolean holdingGrip = inOff || inMain; - return holdingGrip; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java deleted file mode 100644 index c604eeb3a..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripItemRenderer.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; -import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class ExtendoGripItemRenderer extends CustomRenderedItemModelRenderer { - - private static final Vector3d rotationOffset = new Vector3d(0, 1 / 2f, 1 / 2f); - private static final Vector3d cogRotationOffset = new Vector3d(0, 1 / 16f, 0); - - @Override - protected void render(ItemStack stack, ExtendoGripModel model, PartialItemModelRenderer renderer, TransformType transformType, - MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - MatrixStacker stacker = MatrixStacker.of(ms); - float animation = 0.25f; - boolean leftHand = transformType == TransformType.FIRST_PERSON_LEFT_HAND; - boolean rightHand = transformType == TransformType.FIRST_PERSON_RIGHT_HAND; - if (leftHand || rightHand) - animation = MathHelper.lerp(AnimationTickHolder.getPartialTicks(), - ExtendoGripRenderHandler.lastMainHandAnimation, - ExtendoGripRenderHandler.mainHandAnimation); - - animation = animation * animation * animation; - float extensionAngle = MathHelper.lerp(animation, 24f, 156f); - float halfAngle = extensionAngle / 2; - float oppositeAngle = 180 - extensionAngle; - - // grip - renderer.renderSolid(model.getOriginalModel(), light); - - // bits - ms.push(); - ms.translate(0, 1 / 16f, -7 / 16f); - ms.scale(1, 1, 1 + animation); - ms.push(); - stacker.rotateX(-halfAngle) - .translate(rotationOffset); - renderer.renderSolid(model.getPartial("thin_short"), light); - stacker.translateBack(rotationOffset); - - ms.translate(0, 5.5f / 16f, 0); - stacker.rotateX(-oppositeAngle) - .translate(rotationOffset); - renderer.renderSolid(model.getPartial("wide_long"), light); - stacker.translateBack(rotationOffset); - - ms.translate(0, 11 / 16f, 0); - stacker.rotateX(oppositeAngle) - .translate(rotationOffset); - ms.translate(0, 0.5f / 16f, 0); - renderer.renderSolid(model.getPartial("thin_short"), light); - stacker.translateBack(rotationOffset); - - ms.pop(); - ms.push(); - - stacker.rotateX(-180 + halfAngle) - .translate(rotationOffset); - renderer.renderSolid(model.getPartial("wide_short"), light); - stacker.translateBack(rotationOffset); - - ms.translate(0, 5.5f / 16f, 0); - stacker.rotateX(oppositeAngle) - .translate(rotationOffset); - renderer.renderSolid(model.getPartial("thin_long"), light); - stacker.translateBack(rotationOffset); - - ms.translate(0, 11 / 16f, 0); - stacker.rotateX(-oppositeAngle) - .translate(rotationOffset); - ms.translate(0, 0.5f / 16f, 0); - renderer.renderSolid(model.getPartial("wide_short"), light); - stacker.translateBack(rotationOffset); - - // hand - ms.translate(0, 5.5f / 16f, 0); - stacker.rotateX(180 - halfAngle) - .rotateY(180); - ms.translate(0, 0, -4 / 16f); - ms.scale(1, 1, 1 / (1 + animation)); - renderer.renderSolid((leftHand || rightHand) ? ExtendoGripRenderHandler.pose.get() - : AllBlockPartials.DEPLOYER_HAND_POINTING.get(), light); - ms.pop(); - - ms.pop(); - - // cog - ms.push(); - float angle = AnimationTickHolder.getRenderTime() * -2; - if (leftHand || rightHand) - angle += 360 * animation; - angle %= 360; - stacker.translate(cogRotationOffset) - .rotateZ(angle) - .translateBack(cogRotationOffset); - renderer.renderSolid(model.getPartial("cog"), light); - ms.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripModel.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripModel.java deleted file mode 100644 index cd37439f5..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripModel.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; - -public class ExtendoGripModel extends CustomRenderedItemModel { - - public ExtendoGripModel(IBakedModel template) { - super(template, "extendo_grip"); - addPartials("cog", "thin_short", "wide_short", "thin_long", "wide_long"); - } - - @Override - public ItemStackTileEntityRenderer createRenderer() { - return new ExtendoGripItemRenderer(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripRenderHandler.java deleted file mode 100644 index 17fadd6c2..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/ExtendoGripRenderHandler.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlockPartials; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.AbstractClientPlayerEntity; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.renderer.FirstPersonRenderer; -import net.minecraft.client.renderer.entity.PlayerRenderer; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; -import net.minecraft.util.HandSide; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.client.event.RenderHandEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber(value = Dist.CLIENT) -public class ExtendoGripRenderHandler { - - public static float mainHandAnimation; - public static float lastMainHandAnimation; - public static PartialModel pose = AllBlockPartials.DEPLOYER_HAND_PUNCHING; - - public static void tick() { - lastMainHandAnimation = mainHandAnimation; - mainHandAnimation *= MathHelper.clamp(mainHandAnimation, 0.8f, 0.99f); - - pose = AllBlockPartials.DEPLOYER_HAND_PUNCHING; - if (!AllItems.EXTENDO_GRIP.isIn(getRenderedOffHandStack())) - return; - ItemStack main = getRenderedMainHandStack(); - if (main.isEmpty()) - return; - if (!(main.getItem() instanceof BlockItem)) - return; - if (!Minecraft.getInstance() - .getItemRenderer() - .getItemModelWithOverrides(main, null, null) - .isGui3d()) - return; - pose = AllBlockPartials.DEPLOYER_HAND_HOLDING; - } - - @SubscribeEvent - public static void onRenderPlayerHand(RenderHandEvent event) { - ItemStack heldItem = event.getItemStack(); - Minecraft mc = Minecraft.getInstance(); - ClientPlayerEntity player = mc.player; - boolean rightHand = event.getHand() == Hand.MAIN_HAND ^ player.getPrimaryHand() == HandSide.LEFT; - - ItemStack offhandItem = getRenderedOffHandStack(); - boolean notInOffhand = !AllItems.EXTENDO_GRIP.isIn(offhandItem); - if (notInOffhand && !AllItems.EXTENDO_GRIP.isIn(heldItem)) - return; - - MatrixStack ms = event.getMatrixStack(); - MatrixStacker msr = MatrixStacker.of(ms); - AbstractClientPlayerEntity abstractclientplayerentity = mc.player; - mc.getTextureManager() - .bindTexture(abstractclientplayerentity.getLocationSkin()); - - float flip = rightHand ? 1.0F : -1.0F; - float swingProgress = event.getSwingProgress(); - boolean blockItem = heldItem.getItem() instanceof BlockItem; - float equipProgress = blockItem ? 0 : event.getEquipProgress() / 4; - - ms.push(); - if (event.getHand() == Hand.MAIN_HAND) { - - if (1 - swingProgress > mainHandAnimation && swingProgress > 0) - mainHandAnimation = 0.95f; - float animation = MathHelper.lerp(AnimationTickHolder.getPartialTicks(), - ExtendoGripRenderHandler.lastMainHandAnimation, - ExtendoGripRenderHandler.mainHandAnimation); - animation = animation * animation * animation; - - ms.translate(flip * (0.64000005F - .1f), -0.4F + equipProgress * -0.6F, -0.71999997F + .3f); - - ms.push(); - msr.rotateY(flip * 75.0F); - ms.translate(flip * -1.0F, 3.6F, 3.5F); - msr.rotateZ(flip * 120) - .rotateX(200) - .rotateY(flip * -135.0F); - ms.translate(flip * 5.6F, 0.0F, 0.0F); - msr.rotateY(flip * 40.0F); - ms.translate(flip * 0.05f, -0.3f, -0.3f); - - PlayerRenderer playerrenderer = (PlayerRenderer) mc.getRenderManager() - .getRenderer(player); - if (rightHand) - playerrenderer.renderRightArm(event.getMatrixStack(), event.getBuffers(), event.getLight(), player); - else - playerrenderer.renderLeftArm(event.getMatrixStack(), event.getBuffers(), event.getLight(), player); - ms.pop(); - - // Render gun - ms.push(); - ms.translate(flip * -0.1f, 0, -0.3f); - FirstPersonRenderer firstPersonRenderer = mc.getFirstPersonRenderer(); - TransformType transform = - rightHand ? TransformType.FIRST_PERSON_RIGHT_HAND : TransformType.FIRST_PERSON_LEFT_HAND; - firstPersonRenderer.renderItem(mc.player, notInOffhand ? heldItem : offhandItem, transform, !rightHand, - event.getMatrixStack(), event.getBuffers(), event.getLight()); - - if (!notInOffhand) { - ForgeHooksClient.handleCameraTransforms(ms, mc.getItemRenderer() - .getItemModelWithOverrides(offhandItem, null, null), transform, !rightHand); - ms.translate(flip * -.05f, .15f, -1.2f); - ms.translate(0, 0, -animation * 2.25f); - if (blockItem && mc.getItemRenderer() - .getItemModelWithOverrides(heldItem, null, null) - .isGui3d()) { - msr.rotateY(flip * 45); - ms.translate(flip * 0.15f, -0.15f, -.05f); - ms.scale(1.25f, 1.25f, 1.25f); - } - - firstPersonRenderer.renderItem(mc.player, heldItem, transform, !rightHand, event.getMatrixStack(), - event.getBuffers(), event.getLight()); - } - - ms.pop(); - } - ms.pop(); - event.setCanceled(true); - } - - private static ItemStack getRenderedMainHandStack() { - return Minecraft.getInstance().getFirstPersonRenderer().itemStackMainHand; - } - - private static ItemStack getRenderedOffHandStack() { - return Minecraft.getInstance().getFirstPersonRenderer().itemStackOffHand; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java b/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java deleted file mode 100644 index 676b36d80..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItem.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.foundation.utility.VecHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.UseAction; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.common.util.FakePlayer; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class SandPaperItem extends Item { - - public SandPaperItem(Properties properties) { - super(properties.maxDamage(8)); - } - - @Override - public UseAction getUseAction(ItemStack stack) { - return UseAction.EAT; - } - - @Override - public ActionResultType onItemUse(ItemUseContext context) { - return ActionResultType.PASS; - } - - @Override - public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) { - ItemStack itemstack = playerIn.getHeldItem(handIn); - ActionResult FAIL = new ActionResult<>(ActionResultType.FAIL, itemstack); - - if (itemstack.getOrCreateTag() - .contains("Polishing")) { - playerIn.setActiveHand(handIn); - return new ActionResult<>(ActionResultType.PASS, itemstack); - } - - Hand otherHand = handIn == Hand.MAIN_HAND ? Hand.OFF_HAND : Hand.MAIN_HAND; - ItemStack itemInOtherHand = playerIn.getHeldItem(otherHand); - if (SandPaperPolishingRecipe.canPolish(worldIn, itemInOtherHand)) { - ItemStack item = itemInOtherHand.copy(); - ItemStack toPolish = item.split(1); - playerIn.setActiveHand(handIn); - itemstack.getOrCreateTag() - .put("Polishing", toPolish.serializeNBT()); - playerIn.setHeldItem(otherHand, item); - return new ActionResult<>(ActionResultType.SUCCESS, itemstack); - } - - RayTraceResult raytraceresult = rayTrace(worldIn, playerIn, RayTraceContext.FluidMode.NONE); - if (!(raytraceresult instanceof BlockRayTraceResult)) - return FAIL; - BlockRayTraceResult ray = (BlockRayTraceResult) raytraceresult; - Vector3d hitVec = ray.getHitVec(); - - AxisAlignedBB bb = new AxisAlignedBB(hitVec, hitVec).grow(1f); - ItemEntity pickUp = null; - for (ItemEntity itemEntity : worldIn.getEntitiesWithinAABB(ItemEntity.class, bb)) { - if (!itemEntity.isAlive()) - continue; - if (itemEntity.getPositionVec() - .distanceTo(playerIn.getPositionVec()) > 3) - continue; - ItemStack stack = itemEntity.getItem(); - if (!SandPaperPolishingRecipe.canPolish(worldIn, stack)) - continue; - pickUp = itemEntity; - break; - } - - if (pickUp == null) - return FAIL; - - ItemStack item = pickUp.getItem() - .copy(); - ItemStack toPolish = item.split(1); - - playerIn.setActiveHand(handIn); - - if (!worldIn.isRemote) { - itemstack.getOrCreateTag() - .put("Polishing", toPolish.serializeNBT()); - if (item.isEmpty()) - pickUp.remove(); - else - pickUp.setItem(item); - } - - return new ActionResult<>(ActionResultType.SUCCESS, itemstack); - } - - @Override - public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) { - return super.canApplyAtEnchantingTable(stack, enchantment); - } - - @Override - public int getItemEnchantability(ItemStack stack) { - return 1; - } - - @Override - public ItemStack onItemUseFinish(ItemStack stack, World worldIn, LivingEntity entityLiving) { - if (!(entityLiving instanceof PlayerEntity)) - return stack; - PlayerEntity player = (PlayerEntity) entityLiving; - CompoundNBT tag = stack.getOrCreateTag(); - if (tag.contains("Polishing")) { - ItemStack toPolish = ItemStack.read(tag.getCompound("Polishing")); - ItemStack polished = - SandPaperPolishingRecipe.applyPolish(worldIn, entityLiving.getPositionVec(), toPolish, stack); - - if (worldIn.isRemote) { - spawnParticles(entityLiving.getEyePosition(1) - .add(entityLiving.getLookVec() - .scale(.5f)), - toPolish, worldIn); - return stack; - } - - if (!polished.isEmpty()) { - if (player instanceof FakePlayer) { - player.dropItem(polished, false, false); - } else { - player.inventory.placeItemBackInInventory(worldIn, polished); - } - } - tag.remove("Polishing"); - stack.damageItem(1, entityLiving, p -> p.sendBreakAnimation(p.getActiveHand())); - } - - return stack; - } - - public static void spawnParticles(Vector3d location, ItemStack polishedStack, World world) { - for (int i = 0; i < 20; i++) { - Vector3d motion = VecHelper.offsetRandomly(Vector3d.ZERO, world.rand, 1 / 8f); - world.addParticle(new ItemParticleData(ParticleTypes.ITEM, polishedStack), location.x, location.y, - location.z, motion.x, motion.y, motion.z); - } - } - - @Override - public void onPlayerStoppedUsing(ItemStack stack, World worldIn, LivingEntity entityLiving, int timeLeft) { - if (!(entityLiving instanceof PlayerEntity)) - return; - PlayerEntity player = (PlayerEntity) entityLiving; - CompoundNBT tag = stack.getOrCreateTag(); - if (tag.contains("Polishing")) { - ItemStack toPolish = ItemStack.read(tag.getCompound("Polishing")); - player.inventory.placeItemBackInInventory(worldIn, toPolish); - tag.remove("Polishing"); - } - } - - @Override - public int getUseDuration(ItemStack stack) { - return 32; - } - - @Override - public int getItemEnchantability() { - return 5; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItemRenderer.java deleted file mode 100644 index fca6a5c45..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperItemRenderer.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; - -public class SandPaperItemRenderer extends ItemStackTileEntityRenderer { - - @Override - public void render(ItemStack stack, TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); - ClientPlayerEntity player = Minecraft.getInstance().player; - SandPaperModel mainModel = (SandPaperModel) itemRenderer.getItemModelWithOverrides(stack, Minecraft.getInstance().world, null); - float partialTicks = AnimationTickHolder.getPartialTicks(); - - boolean leftHand = transformType == TransformType.FIRST_PERSON_LEFT_HAND; - boolean firstPerson = leftHand || transformType == TransformType.FIRST_PERSON_RIGHT_HAND; - - ms.push(); - ms.translate(.5f, .5f, .5f); - - CompoundNBT tag = stack.getOrCreateTag(); - boolean jeiMode = tag.contains("JEI"); - - if (tag.contains("Polishing")) { - ms.push(); - - if (transformType == TransformType.GUI) { - ms.translate(0.0F, .2f, 1.0F); - ms.scale(.75f, .75f, .75f); - } else { - int modifier = leftHand ? -1 : 1; - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(modifier * 40)); - } - - // Reverse bobbing - float time = (float) (!jeiMode ? player.getItemInUseCount() - : (-AnimationTickHolder.getTicks()) % stack.getUseDuration()) - partialTicks + 1.0F; - if (time / (float) stack.getUseDuration() < 0.8F) { - float bobbing = -MathHelper.abs(MathHelper.cos(time / 4.0F * (float) Math.PI) * 0.1F); - - if (transformType == TransformType.GUI) - ms.translate(bobbing, bobbing, 0.0F); - else - ms.translate(0.0f, bobbing, 0.0F); - } - - ItemStack toPolish = ItemStack.read(tag.getCompound("Polishing")); - itemRenderer.renderItem(toPolish, TransformType.NONE, light, overlay, ms, buffer); - - ms.pop(); - } - - if (firstPerson) { - int itemInUseCount = player.getItemInUseCount(); - if (itemInUseCount > 0) { - int modifier = leftHand ? -1 : 1; - ms.translate(modifier * .5f, 0, -.25f); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(modifier * 40)); - ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(modifier * 10)); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(modifier * 90)); - } - } - - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, light, overlay, mainModel.getOriginalModel()); - - ms.pop(); - } - - public static class SandPaperModel extends CustomRenderedItemModel { - - public SandPaperModel(IBakedModel template) { - super(template, ""); - } - - @Override - public ItemStackTileEntityRenderer createRenderer() { - return new SandPaperItemRenderer(); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperPolishingRecipe.java b/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperPolishingRecipe.java deleted file mode 100644 index b949f1f94..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/SandPaperPolishingRecipe.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.simibubi.create.content.curiosities.tools; - -import java.util.List; - -import javax.annotation.ParametersAreNonnullByDefault; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder.ProcessingRecipeParams; -import com.simibubi.create.content.curiosities.tools.SandPaperPolishingRecipe.SandPaperInv; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -@ParametersAreNonnullByDefault -public class SandPaperPolishingRecipe extends ProcessingRecipe { - - public SandPaperPolishingRecipe(ProcessingRecipeParams params) { - super(AllRecipeTypes.SANDPAPER_POLISHING, params); - } - - @Override - public boolean matches(SandPaperInv inv, World worldIn) { - return ingredients.get(0) - .test(inv.getStackInSlot(0)); - } - - @Override - protected int getMaxInputCount() { - return 1; - } - - @Override - protected int getMaxOutputCount() { - return 1; - } - - public static boolean canPolish(World world, ItemStack stack) { - return !getMatchingRecipes(world, stack).isEmpty(); - } - - public static ItemStack applyPolish(World world, Vector3d position, ItemStack stack, ItemStack sandPaperStack) { - List> matchingRecipes = getMatchingRecipes(world, stack); - if (!matchingRecipes.isEmpty()) - return matchingRecipes.get(0) - .getCraftingResult(new SandPaperInv(stack)) - .copy(); - return stack; - } - - public static List> getMatchingRecipes(World world, ItemStack stack) { - return world.getRecipeManager() - .getRecipes(AllRecipeTypes.SANDPAPER_POLISHING.getType(), new SandPaperInv(stack), world); - } - - public static class SandPaperInv extends RecipeWrapper { - - public SandPaperInv(ItemStack stack) { - super(new ItemStackHandler(1)); - inv.setStackInSlot(0, stack); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/PlacementPatterns.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/PlacementPatterns.java deleted file mode 100644 index 416400af0..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/PlacementPatterns.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper; - -import java.util.List; -import java.util.Random; -import java.util.function.Predicate; - -import com.google.common.base.Predicates; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.BlockPos; - -public enum PlacementPatterns { - - Solid(AllIcons.I_PATTERN_SOLID), - Checkered(AllIcons.I_PATTERN_CHECKERED), - InverseCheckered(AllIcons.I_PATTERN_CHECKERED_INVERSED), - Chance25(AllIcons.I_PATTERN_CHANCE_25), - Chance50(AllIcons.I_PATTERN_CHANCE_50), - Chance75(AllIcons.I_PATTERN_CHANCE_75); - - public String translationKey; - public AllIcons icon; - - private PlacementPatterns(AllIcons icon) { - this.translationKey = Lang.asId(name()); - this.icon = icon; - } - - public static void applyPattern(List blocksIn, ItemStack stack) { - CompoundNBT tag = stack.getTag(); - PlacementPatterns pattern = - !tag.contains("Pattern") ? Solid : valueOf(tag.getString("Pattern")); - Random r = new Random(); - Predicate filter = Predicates.alwaysFalse(); - - switch (pattern) { - case Chance25: - filter = pos -> r.nextBoolean() || r.nextBoolean(); - break; - case Chance50: - filter = pos -> r.nextBoolean(); - break; - case Chance75: - filter = pos -> r.nextBoolean() && r.nextBoolean(); - break; - case Checkered: - filter = pos -> (pos.getX() + pos.getY() + pos.getZ()) % 2 == 0; - break; - case InverseCheckered: - filter = pos -> (pos.getX() + pos.getY() + pos.getZ()) % 2 != 0; - break; - case Solid: - default: - break; - } - - blocksIn.removeIf(filter); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperBeamPacket.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperBeamPacket.java deleted file mode 100644 index a99ebf2cd..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperBeamPacket.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper; - -import java.util.function.Supplier; - -import com.simibubi.create.content.curiosities.zapper.ZapperRenderHandler.LaserBeam; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class ZapperBeamPacket extends SimplePacketBase { - - public Vector3d start; - public Vector3d target; - public Hand hand; - public boolean self; - - public ZapperBeamPacket(Vector3d start, Vector3d target, Hand hand, boolean self) { - this.start = start; - this.target = target; - this.hand = hand; - this.self = self; - } - - public ZapperBeamPacket(PacketBuffer buffer) { - start = new Vector3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()); - target = new Vector3d(buffer.readDouble(), buffer.readDouble(), buffer.readDouble()); - hand = buffer.readBoolean()? Hand.MAIN_HAND : Hand.OFF_HAND; - self = buffer.readBoolean(); - } - - public void write(PacketBuffer buffer) { - buffer.writeDouble(start.x); - buffer.writeDouble(start.y); - buffer.writeDouble(start.z); - buffer.writeDouble(target.x); - buffer.writeDouble(target.y); - buffer.writeDouble(target.z); - - buffer.writeBoolean(hand == Hand.MAIN_HAND); - buffer.writeBoolean(self); - } - - public void handle(Supplier context) { - context.get().enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - if (Minecraft.getInstance().player.getPositionVec().distanceTo(start) > 100) - return; - ZapperRenderHandler.addBeam(new LaserBeam(start, target).followPlayer(self, hand == Hand.MAIN_HAND)); - - if (self) - ZapperRenderHandler.shoot(hand); - else - ZapperRenderHandler.playSound(hand, new BlockPos(start)); - })); - context.get().setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperInteractionHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperInteractionHandler.java deleted file mode 100644 index c56d86a0e..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperInteractionHandler.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper; - -import java.util.Objects; - -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.foundation.utility.BlockHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.StairsShape; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class ZapperInteractionHandler { - - @SubscribeEvent - public static void leftClickingBlocksWithTheZapperSelectsTheBlock(PlayerInteractEvent.LeftClickBlock event) { - if (event.getWorld().isRemote) - return; - ItemStack heldItem = event.getPlayer() - .getHeldItemMainhand(); - if (heldItem.getItem() instanceof ZapperItem && trySelect(heldItem, event.getPlayer())) { - event.setCancellationResult(ActionResultType.FAIL); - event.setCanceled(true); - } - } - - public static boolean trySelect(ItemStack stack, PlayerEntity player) { - if (player.isSneaking()) - return false; - - Vector3d start = player.getPositionVec() - .add(0, player.getEyeHeight(), 0); - Vector3d range = player.getLookVec() - .scale(getRange(stack)); - BlockRayTraceResult raytrace = player.world - .rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.OUTLINE, FluidMode.NONE, player)); - BlockPos pos = raytrace.getPos(); - if (pos == null) - return false; - - player.world.sendBlockBreakProgress(player.getEntityId(), pos, -1); - BlockState newState = player.world.getBlockState(pos); - - if (BlockHelper.getRequiredItem(newState) - .isEmpty()) - return false; - if (newState.hasTileEntity() && !AllBlockTags.SAFE_NBT.matches(newState)) - return false; - if (newState.contains(BlockStateProperties.DOUBLE_BLOCK_HALF)) - return false; - if (newState.contains(BlockStateProperties.ATTACHED)) - return false; - if (newState.contains(BlockStateProperties.HANGING)) - return false; - if (newState.contains(BlockStateProperties.BED_PART)) - return false; - if (newState.contains(BlockStateProperties.STAIRS_SHAPE)) - newState = newState.with(BlockStateProperties.STAIRS_SHAPE, StairsShape.STRAIGHT); - if (newState.contains(BlockStateProperties.PERSISTENT)) - newState = newState.with(BlockStateProperties.PERSISTENT, true); - if (newState.contains(BlockStateProperties.WATERLOGGED)) - newState = newState.with(BlockStateProperties.WATERLOGGED, false); - - CompoundNBT data = null; - TileEntity tile = player.world.getTileEntity(pos); - if (tile != null) { - data = tile.write(new CompoundNBT()); - data.remove("x"); - data.remove("y"); - data.remove("z"); - data.remove("id"); - } - CompoundNBT tag = stack.getOrCreateTag(); - if (tag.contains("BlockUsed") && NBTUtil.readBlockState(stack.getTag() - .getCompound("BlockUsed")) == newState && Objects.equals(data, tag.get("BlockData"))) { - return false; - } - - tag.put("BlockUsed", NBTUtil.writeBlockState(newState)); - if (data == null) - tag.remove("BlockData"); - else - tag.put("BlockData", data); - - AllSoundEvents.CONFIRM.playOnServer(player.world, player.getBlockPos()); - return true; - } - - public static int getRange(ItemStack stack) { - if (stack.getItem() instanceof ZapperItem) - return ((ZapperItem) stack.getItem()).getZappingRange(stack); - return 0; - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java deleted file mode 100644 index f6e573b8e..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItem.java +++ /dev/null @@ -1,257 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper; - -import java.util.List; - -import javax.annotation.Nonnull; - -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.foundation.item.ItemDescription; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.NBTProcessors; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.item.UseAction; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.HandSide; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.PacketDistributor; - -public abstract class ZapperItem extends Item { - - public ZapperItem(Properties properties) { - super(properties.maxStackSize(1)); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - if (stack.hasTag() && stack.getTag() - .contains("BlockUsed")) { - String usedblock = NBTUtil.readBlockState(stack.getTag() - .getCompound("BlockUsed")) - .getBlock() - .getTranslationKey(); - ItemDescription.add(tooltip, - Lang.translate("terrainzapper.usingBlock", - new TranslationTextComponent(usedblock).formatted(TextFormatting.GRAY)) - .formatted(TextFormatting.DARK_GRAY)); - } - } - - @Override - public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) { - boolean differentBlock = false; - if (oldStack.hasTag() && newStack.hasTag() && oldStack.getTag() - .contains("BlockUsed") - && newStack.getTag() - .contains("BlockUsed")) - differentBlock = NBTUtil.readBlockState(oldStack.getTag() - .getCompound("BlockUsed")) != NBTUtil.readBlockState( - newStack.getTag() - .getCompound("BlockUsed")); - return slotChanged || !isZapper(newStack) || differentBlock; - } - - public boolean isZapper(ItemStack newStack) { - return newStack.getItem() instanceof ZapperItem; - } - - @Nonnull - @Override - public ActionResultType onItemUse(ItemUseContext context) { - // Shift -> open GUI - if (context.getPlayer() != null && context.getPlayer() - .isSneaking()) { - if (context.getWorld().isRemote) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - openHandgunGUI(context.getItem(), context.getHand() == Hand.OFF_HAND); - }); - applyCooldown(context.getPlayer(), context.getItem(), false); - } - return ActionResultType.SUCCESS; - } - return super.onItemUse(context); - } - - @Override - public ActionResult onItemRightClick(World world, PlayerEntity player, Hand hand) { - ItemStack item = player.getHeldItem(hand); - CompoundNBT nbt = item.getOrCreateTag(); - - // Shift -> Open GUI - if (player.isSneaking()) { - if (world.isRemote) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - openHandgunGUI(item, hand == Hand.OFF_HAND); - }); - applyCooldown(player, item, false); - } - return new ActionResult<>(ActionResultType.SUCCESS, item); - } - - boolean mainHand = hand == Hand.MAIN_HAND; - boolean isSwap = item.getTag() - .contains("_Swap"); - boolean gunInOtherHand = isZapper(player.getHeldItem(mainHand ? Hand.OFF_HAND : Hand.MAIN_HAND)); - - // Pass To Offhand - if (mainHand && isSwap && gunInOtherHand) - return new ActionResult<>(ActionResultType.FAIL, item); - if (mainHand && !isSwap && gunInOtherHand) - item.getTag() - .putBoolean("_Swap", true); - if (!mainHand && isSwap) - item.getTag() - .remove("_Swap"); - if (!mainHand && gunInOtherHand) - player.getHeldItem(Hand.MAIN_HAND) - .getTag() - .remove("_Swap"); - player.setActiveHand(hand); - - // Check if can be used - ITextComponent msg = validateUsage(item); - if (msg != null) { - AllSoundEvents.DENY.play(world, player, player.getBlockPos()); - player.sendStatusMessage(msg.copy().formatted(TextFormatting.RED), true); - return new ActionResult<>(ActionResultType.FAIL, item); - } - - BlockState stateToUse = Blocks.AIR.getDefaultState(); - if (nbt.contains("BlockUsed")) - stateToUse = NBTUtil.readBlockState(nbt.getCompound("BlockUsed")); - stateToUse = BlockHelper.setZeroAge(stateToUse); - CompoundNBT data = null; - if (AllBlockTags.SAFE_NBT.matches(stateToUse) && nbt.contains("BlockData", NBT.TAG_COMPOUND)) { - data = nbt.getCompound("BlockData"); - } - - // Raytrace - Find the target - Vector3d start = player.getPositionVec() - .add(0, player.getEyeHeight(), 0); - Vector3d range = player.getLookVec() - .scale(getZappingRange(item)); - BlockRayTraceResult raytrace = world - .rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.OUTLINE, FluidMode.NONE, player)); - BlockPos pos = raytrace.getPos(); - BlockState stateReplaced = world.getBlockState(pos); - - // No target - if (pos == null || stateReplaced.getBlock() == Blocks.AIR) { - applyCooldown(player, item, gunInOtherHand); - return new ActionResult<>(ActionResultType.SUCCESS, item); - } - - // Find exact position of gun barrel for VFX - float yaw = (float) ((player.rotationYaw) / -180 * Math.PI); - float pitch = (float) ((player.rotationPitch) / -180 * Math.PI); - Vector3d barrelPosNoTransform = - new Vector3d(mainHand == (player.getPrimaryHand() == HandSide.RIGHT) ? -.35f : .35f, -0.1f, 1); - Vector3d barrelPos = start.add(barrelPosNoTransform.rotatePitch(pitch) - .rotateYaw(yaw)); - - // Client side - if (world.isRemote) { - ZapperRenderHandler.dontAnimateItem(hand); - return new ActionResult<>(ActionResultType.SUCCESS, item); - } - - // Server side - if (activate(world, player, item, stateToUse, raytrace, data)) { - applyCooldown(player, item, gunInOtherHand); - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> player), - new ZapperBeamPacket(barrelPos, raytrace.getHitVec(), hand, false)); - AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) player), - new ZapperBeamPacket(barrelPos, raytrace.getHitVec(), hand, true)); - } - - return new ActionResult<>(ActionResultType.SUCCESS, item); - } - - public ITextComponent validateUsage(ItemStack item) { - CompoundNBT tag = item.getOrCreateTag(); - if (!canActivateWithoutSelectedBlock(item) && !tag.contains("BlockUsed")) - return Lang.createTranslationTextComponent("terrainzapper.leftClickToSet"); - return null; - } - - protected abstract boolean activate(World world, PlayerEntity player, ItemStack item, BlockState stateToUse, - BlockRayTraceResult raytrace, CompoundNBT data); - - @OnlyIn(Dist.CLIENT) - protected abstract void openHandgunGUI(ItemStack item, boolean b); - - protected abstract int getCooldownDelay(ItemStack item); - - protected abstract int getZappingRange(ItemStack stack); - - protected boolean canActivateWithoutSelectedBlock(ItemStack stack) { - return false; - } - - protected void applyCooldown(PlayerEntity playerIn, ItemStack item, boolean dual) { - int delay = getCooldownDelay(item); - playerIn.getCooldownTracker() - .setCooldown(item.getItem(), dual ? delay * 2 / 3 : delay); - } - - @Override - public boolean onEntitySwing(ItemStack stack, LivingEntity entity) { - return true; - } - - @Override - public boolean canPlayerBreakBlockWhileHolding(BlockState state, World worldIn, BlockPos pos, PlayerEntity player) { - return false; - } - - @Override - public UseAction getUseAction(ItemStack stack) { - return UseAction.NONE; - } - - public static void setTileData(World world, BlockPos pos, BlockState state, CompoundNBT data, PlayerEntity player) { - if (data != null && AllBlockTags.SAFE_NBT.matches(state)) { - TileEntity tile = world.getTileEntity(pos); - if (tile != null) { - data = NBTProcessors.process(tile, data, !player.isCreative()); - if (data == null) - return; - data.putInt("x", pos.getX()); - data.putInt("y", pos.getY()); - data.putInt("z", pos.getZ()); - tile.fromTag(state, data); - } - } - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java deleted file mode 100644 index db8beb57b..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; -import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer; -import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; - -import net.minecraft.block.BlockState; -import net.minecraft.block.FourWayBlock; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.util.math.MathHelper; - -public abstract class ZapperItemRenderer extends CustomRenderedItemModelRenderer { - - @Override - protected void render(ItemStack stack, M model, PartialItemModelRenderer renderer, TransformType transformType, - MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - // Block indicator - if (transformType == TransformType.GUI && stack.hasTag() && stack.getTag() - .contains("BlockUsed")) - renderBlockUsed(stack, ms, buffer, light, overlay); - } - - private void renderBlockUsed(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - BlockState state = NBTUtil.readBlockState(stack.getTag() - .getCompound("BlockUsed")); - - ms.push(); - ms.translate(-0.3F, -0.45F, -0.0F); - ms.scale(0.25F, 0.25F, 0.25F); - IBakedModel modelForState = Minecraft.getInstance() - .getBlockRendererDispatcher() - .getModelForState(state); - - if (state.getBlock() instanceof FourWayBlock) - modelForState = Minecraft.getInstance() - .getItemRenderer() - .getItemModelWithOverrides(new ItemStack(state.getBlock()), Minecraft.getInstance().world, null); - - Minecraft.getInstance() - .getItemRenderer() - .renderItem(new ItemStack(state.getBlock()), TransformType.NONE, false, ms, buffer, light, overlay, - modelForState); - ms.pop(); - } - - protected float getAnimationProgress(float pt, boolean leftHanded, boolean mainHand) { - float last = mainHand ^ leftHanded ? ZapperRenderHandler.lastRightHandAnimation - : ZapperRenderHandler.lastLeftHandAnimation; - float current = - mainHand ^ leftHanded ? ZapperRenderHandler.rightHandAnimation : ZapperRenderHandler.leftHandAnimation; - float animation = MathHelper.clamp(MathHelper.lerp(pt, last, current) * 5, 0, 1); - return animation; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperLog.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperLog.java deleted file mode 100644 index 99955c390..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperLog.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper; - -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.template.Template.BlockInfo; - -public class ZapperLog { - - private World activeWorld; - private List> log = new LinkedList<>(); -// private int redoIndex; - - /* - * Undo and redo operations applied by tools what information is necessary? - * - * For survival mode: does undo have the required blocks - * - * For creative mode: what data did removed TEs have - * - * When undo: remove added blocks (added -> air) replace replaced blocks (added - * -> before) add removed blocks (air -> before) - * - */ - - public void record(World world, List positions) { -// if (maxLogLength() == 0) -// return; - if (world != activeWorld) - log.clear(); - activeWorld = world; - - List blocks = positions.stream().map(pos -> { - TileEntity tileEntity = world.getTileEntity(pos); - return new BlockInfo(pos, world.getBlockState(pos), tileEntity == null ? null : tileEntity.serializeNBT()); - }).collect(Collectors.toList()); - - log.add(0, blocks); -// redoIndex = 0; - -// if (maxLogLength() < log.size()) -// log.remove(log.size() - 1); - } - -// protected Integer maxLogLength() { -// return AllConfigs.SERVER.curiosities.zapperUndoLogLength.get(); -// } - - public void undo() { - - } - - public void redo() { - - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java deleted file mode 100644 index 38d37a547..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java +++ /dev/null @@ -1,221 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper; - -import java.util.LinkedList; -import java.util.List; -import java.util.Random; -import java.util.function.Supplier; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.AbstractClientPlayerEntity; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.renderer.FirstPersonRenderer; -import net.minecraft.client.renderer.entity.PlayerRenderer; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.item.ItemStack; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.Hand; -import net.minecraft.util.HandSide; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.RenderHandEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber(value = Dist.CLIENT) -public class ZapperRenderHandler { - - public static List cachedBeams; - public static float leftHandAnimation; - public static float rightHandAnimation; - public static float lastLeftHandAnimation; - public static float lastRightHandAnimation; - - private static boolean dontReequipLeft; - private static boolean dontReequipRight; - - public static class LaserBeam { - float itensity; - Vector3d start; - Vector3d end; - boolean follow; - boolean mainHand; - - public LaserBeam(Vector3d start, Vector3d end) { - this.start = start; - this.end = end; - itensity = 1; - } - - public LaserBeam followPlayer(boolean follow, boolean mainHand) { - this.follow = follow; - this.mainHand = mainHand; - return this; - } - } - - public static Vector3d getExactBarrelPos(boolean mainHand) { - float partialTicks = AnimationTickHolder.getPartialTicks(); - ClientPlayerEntity player = Minecraft.getInstance().player; - float yaw = (float) ((player.getYaw(partialTicks)) / -180 * Math.PI); - float pitch = (float) ((player.getPitch(partialTicks)) / -180 * Math.PI); - boolean rightHand = mainHand == (player.getPrimaryHand() == HandSide.RIGHT); - float zOffset = ((float) Minecraft.getInstance().gameSettings.fov - 70) / -100; - Vector3d barrelPosNoTransform = new Vector3d(rightHand ? -.35f : .35f, -0.115f, .75f + zOffset); - Vector3d barrelPos = player.getEyePosition(partialTicks) - .add(barrelPosNoTransform.rotatePitch(pitch) - .rotateYaw(yaw)); - return barrelPos; - } - - public static void tick() { - lastLeftHandAnimation = leftHandAnimation; - lastRightHandAnimation = rightHandAnimation; - leftHandAnimation *= 0.8f; - rightHandAnimation *= 0.8f; - - if (cachedBeams == null) - cachedBeams = new LinkedList<>(); - - cachedBeams.removeIf(b -> b.itensity < .1f); - if (cachedBeams.isEmpty()) - return; - - cachedBeams.forEach(beam -> { - CreateClient.OUTLINER.endChasingLine(beam, beam.start, beam.end, 1 - beam.itensity) - .disableNormals() - .colored(0xffffff) - .lineWidth(beam.itensity * 1 / 8f); - }); - - cachedBeams.forEach(b -> b.itensity *= .6f); - } - - public static void shoot(Hand hand) { - ClientPlayerEntity player = Minecraft.getInstance().player; - boolean rightHand = hand == Hand.MAIN_HAND ^ player.getPrimaryHand() == HandSide.LEFT; - if (rightHand) { - rightHandAnimation = .2f; - dontReequipRight = false; - } else { - leftHandAnimation = .2f; - dontReequipLeft = false; - } - playSound(hand, player.getBlockPos()); - } - - public static void playSound(Hand hand, BlockPos position) { - float pitch = hand == Hand.MAIN_HAND ? 0.1f : 0.9f; - Minecraft mc = Minecraft.getInstance(); - AllSoundEvents.WORLDSHAPER_PLACE.play(mc.world, mc.player, position, 0.1f, pitch); - } - - public static void addBeam(LaserBeam beam) { - Random r = new Random(); - double x = beam.end.x; - double y = beam.end.y; - double z = beam.end.z; - ClientWorld world = Minecraft.getInstance().world; - Supplier randomSpeed = () -> (r.nextDouble() - .5d) * .2f; - Supplier randomOffset = () -> (r.nextDouble() - .5d) * .2f; - for (int i = 0; i < 10; i++) { - world.addParticle(ParticleTypes.END_ROD, x, y, z, randomSpeed.get(), randomSpeed.get(), randomSpeed.get()); - world.addParticle(ParticleTypes.FIREWORK, x + randomOffset.get(), y + randomOffset.get(), - z + randomOffset.get(), 0, 0, 0); - } - - cachedBeams.add(beam); - } - - @SubscribeEvent - public static void onRenderPlayerHand(RenderHandEvent event) { - ItemStack heldItem = event.getItemStack(); - if (!(heldItem.getItem() instanceof ZapperItem)) - return; - - Minecraft mc = Minecraft.getInstance(); - boolean rightHand = event.getHand() == Hand.MAIN_HAND ^ mc.player.getPrimaryHand() == HandSide.LEFT; - - MatrixStack ms = event.getMatrixStack(); - - ms.push(); - float recoil = rightHand ? MathHelper.lerp(event.getPartialTicks(), lastRightHandAnimation, rightHandAnimation) - : MathHelper.lerp(event.getPartialTicks(), lastLeftHandAnimation, leftHandAnimation); - - float equipProgress = event.getEquipProgress(); - - if (rightHand && (rightHandAnimation > .01f || dontReequipRight)) - equipProgress = 0; - if (!rightHand && (leftHandAnimation > .01f || dontReequipLeft)) - equipProgress = 0; - - // Render arm - float f = rightHand ? 1.0F : -1.0F; - float f1 = MathHelper.sqrt(event.getSwingProgress()); - float f2 = -0.3F * MathHelper.sin(f1 * (float) Math.PI); - float f3 = 0.4F * MathHelper.sin(f1 * ((float) Math.PI * 2F)); - float f4 = -0.4F * MathHelper.sin(event.getSwingProgress() * (float) Math.PI); - float f5 = MathHelper.sin(event.getSwingProgress() * event.getSwingProgress() * (float) Math.PI); - float f6 = MathHelper.sin(f1 * (float) Math.PI); - - ms.translate(f * (f2 + 0.64000005F - .1f), f3 + -0.4F + equipProgress * -0.6F, - f4 + -0.71999997F + .3f + recoil); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(f * 75.0F)); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(f * f6 * 70.0F)); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(f * f5 * -20.0F)); - AbstractClientPlayerEntity abstractclientplayerentity = mc.player; - mc.getTextureManager() - .bindTexture(abstractclientplayerentity.getLocationSkin()); - ms.translate(f * -1.0F, 3.6F, 3.5F); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(f * 120.0F)); - ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(200.0F)); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(f * -135.0F)); - ms.translate(f * 5.6F, 0.0F, 0.0F); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(f * 40.0F)); - - PlayerRenderer playerrenderer = (PlayerRenderer) mc.getRenderManager() - .getRenderer(abstractclientplayerentity); - if (rightHand) { - playerrenderer.renderRightArm(event.getMatrixStack(), event.getBuffers(), event.getLight(), - abstractclientplayerentity); - } else { - playerrenderer.renderLeftArm(event.getMatrixStack(), event.getBuffers(), event.getLight(), - abstractclientplayerentity); - } - ms.pop(); - - // Render gun - ms.push(); - ms.translate(f * (f2 + 0.64000005F - .1f), f3 + -0.4F + equipProgress * -0.6F, - f4 + -0.71999997F - 0.1f + recoil); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(f * f6 * 70.0F)); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(f * f5 * -20.0F)); - - ms.translate(f * -0.1f, 0.1f, -0.4f); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(f * 5.0F)); - - FirstPersonRenderer firstPersonRenderer = mc.getFirstPersonRenderer(); - firstPersonRenderer.renderItem(mc.player, heldItem, - rightHand ? ItemCameraTransforms.TransformType.FIRST_PERSON_RIGHT_HAND - : ItemCameraTransforms.TransformType.FIRST_PERSON_LEFT_HAND, - !rightHand, event.getMatrixStack(), event.getBuffers(), event.getLight()); - ms.pop(); - - event.setCanceled(true); - } - - public static void dontAnimateItem(Hand hand) { - boolean rightHand = hand == Hand.MAIN_HAND ^ Minecraft.getInstance().player.getPrimaryHand() == HandSide.LEFT; - dontReequipRight |= rightHand; - dontReequipLeft |= !rightHand; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java deleted file mode 100644 index b62d2039d..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperScreen.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper; - -import java.util.Vector; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.AbstractSimiScreen; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.widgets.IconButton; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.networking.NbtPacket; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.util.Hand; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class ZapperScreen extends AbstractSimiScreen { - - protected ItemStack zapper; - protected boolean offhand; - protected float animationProgress; - protected AllGuiTextures background; - private IconButton confirmButton; - - protected final ITextComponent patternSection = Lang.translate("gui.terrainzapper.patternSection"); - - protected ITextComponent title; - protected Vector patternButtons; - protected int brightColor; - protected int fontColor; - - public ZapperScreen(AllGuiTextures background, ItemStack zapper, boolean offhand) { - super(); - this.background = background; - this.zapper = zapper; - this.offhand = offhand; - title = StringTextComponent.EMPTY; - brightColor = 0xfefefe; - fontColor = AllGuiTextures.FONT_COLOR; - } - - @Override - protected void init() { - animationProgress = 0; - setWindowSize(background.width, background.height); - super.init(); - widgets.clear(); - - confirmButton = - new IconButton(guiLeft + background.width - 43, guiTop + background.height - 24, AllIcons.I_CONFIRM); - widgets.add(confirmButton); - - int i = guiLeft - 10; - int j = guiTop; - CompoundNBT nbt = zapper.getOrCreateTag(); - - patternButtons = new Vector<>(6); - for (int row = 0; row <= 1; row++) { - for (int col = 0; col <= 2; col++) { - int id = patternButtons.size(); - PlacementPatterns pattern = PlacementPatterns.values()[id]; - patternButtons - .add(new IconButton(i + background.width - 76 + col * 18, j + 21 + row * 18, pattern.icon)); - patternButtons.get(id) - .setToolTip(Lang.translate("gui.terrainzapper.pattern." + pattern.translationKey)); - } - } - - if (nbt.contains("Pattern")) - patternButtons.get(PlacementPatterns.valueOf(nbt.getString("Pattern")) - .ordinal()).active = false; - - widgets.addAll(patternButtons); - } - - @Override - protected void renderWindow(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - int i = guiLeft - 10; - int j = guiTop; - - background.draw(matrixStack, this, i, j); - drawOnBackground(matrixStack, i, j); - - renderBlock(matrixStack); - renderZapper(matrixStack); - } - - protected void drawOnBackground(MatrixStack matrixStack, int i, int j) { - textRenderer.draw(matrixStack, title, i + 11, j + 4, 0x54214F); - } - - @Override - public void tick() { - super.tick(); - animationProgress += 5; - } - - @Override - public void removed() { - CompoundNBT nbt = zapper.getTag(); - writeAdditionalOptions(nbt); - AllPackets.channel.sendToServer(new NbtPacket(zapper, offhand ? Hand.OFF_HAND : Hand.MAIN_HAND)); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - CompoundNBT nbt = zapper.getTag(); - - for (IconButton patternButton : patternButtons) { - if (patternButton.isHovered()) { - patternButtons.forEach(b -> b.active = true); - patternButton.active = false; - patternButton.playDownSound(Minecraft.getInstance() - .getSoundHandler()); - nbt.putString("Pattern", PlacementPatterns.values()[patternButtons.indexOf(patternButton)].name()); - } - } - - if (confirmButton.isHovered()) { - onClose(); - return true; - } - - return super.mouseClicked(x, y, button); - } - - protected void renderZapper(MatrixStack matrixStack) { - GuiGameElement.of(zapper) - .scale(4) - .at((this.width - this.sWidth) / 2 + 220, this.height / 2 - this.sHeight / 4 + 27, -150) - .render(matrixStack); - } - - protected void renderBlock(MatrixStack matrixStack) { - matrixStack.push(); - matrixStack.translate(guiLeft + 22f, guiTop + 42f, 120); - matrixStack.multiply(new Vector3f(1f, 0, 0).getDegreesQuaternion(-25f)); - matrixStack.multiply(new Vector3f(0, 1f, 0).getDegreesQuaternion(-45f)); - matrixStack.scale(20, 20, 20); - - BlockState state = Blocks.AIR.getDefaultState(); - if (zapper.hasTag() && zapper.getTag() - .contains("BlockUsed")) - state = NBTUtil.readBlockState(zapper.getTag() - .getCompound("BlockUsed")); - - GuiGameElement.of(state) - .render(matrixStack); - matrixStack.pop(); - } - - protected void writeAdditionalOptions(CompoundNBT nbt) {} - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/Brush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/Brush.java deleted file mode 100644 index 8ff5ac568..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/Brush.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.Collection; - -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.IWorld; - -public abstract class Brush { - - protected int param0; - protected int param1; - protected int param2; - int amtParams; - - public Brush(int amtParams) { - this.amtParams = amtParams; - } - - public void set(int param0, int param1, int param2) { - this.param0 = param0; - this.param1 = param1; - this.param2 = param2; - } - - public TerrainTools[] getSupportedTools() { - return TerrainTools.values(); - } - - public TerrainTools redirectTool(TerrainTools tool) { - return tool; - } - - public boolean hasPlacementOptions() { - return true; - } - - public boolean hasConnectivityOptions() { - return false; - } - - int getMax(int paramIndex) { - return Integer.MAX_VALUE; - } - - int getMin(int paramIndex) { - return 0; - } - - ITextComponent getParamLabel(int paramIndex) { - return Lang - .translate(paramIndex == 0 ? "generic.width" : paramIndex == 1 ? "generic.height" : "generic.length"); - } - - public int get(int paramIndex) { - return paramIndex == 0 ? param0 : paramIndex == 1 ? param1 : param2; - } - - public BlockPos getOffset(Vector3d ray, Direction face, PlacementOptions option) { - return BlockPos.ZERO; - } - - public abstract Collection addToGlobalPositions(IWorld world, BlockPos targetPos, Direction targetFace, - Collection affectedPositions, TerrainTools usedTool); - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CuboidBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CuboidBrush.java deleted file mode 100644 index af409cc5a..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CuboidBrush.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class CuboidBrush extends ShapedBrush { - - public static final int MAX_SIZE = 32; - private List positions; - - public CuboidBrush() { - super(3); - positions = new ArrayList<>(); - } - - @Override - public void set(int param0, int param1, int param2) { - boolean updateShape = this.param0 != param0 || this.param1 != param1 || this.param2 != param2; - super.set(param0, param1, param2); - if (updateShape) { - BlockPos zero = BlockPos.ZERO; - positions = BlockPos - .getAllInBox(zero.add((param0 - 1) / -2, (param1 - 1) / -2, (param2 - 1) / -2), - zero.add((param0) / 2, (param1) / 2, (param2) / 2)) - .map(BlockPos::new) - .collect(Collectors.toList()); - } - } - - @Override - int getMin(int paramIndex) { - return 1; - } - - @Override - int getMax(int paramIndex) { - return MAX_SIZE; - } - - @Override - public BlockPos getOffset(Vector3d ray, Direction face, PlacementOptions option) { - if (option == PlacementOptions.Merged) - return BlockPos.ZERO; - - int offset = - option == PlacementOptions.Attached ? face.getAxisDirection() == AxisDirection.NEGATIVE ? 2 : 1 : 0; - int x = (param0 + (param0 == 0 ? 0 : offset)) / 2; - int y = (param1 + (param1 == 0 ? 0 : offset)) / 2; - int z = (param2 + (param2 == 0 ? 0 : offset)) / 2; - - return BlockPos.ZERO.offset(face, face.getAxis() - .getCoordinate(x, y, z) * (option == PlacementOptions.Attached ? 1 : -1)); - } - - @Override - List getIncludedPositions() { - return positions; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CylinderBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CylinderBrush.java deleted file mode 100644 index 0ec8b4f99..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/CylinderBrush.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public class CylinderBrush extends ShapedBrush { - - public static final int MAX_RADIUS = 8; - public static final int MAX_HEIGHT = 8; - private Map, List> cachedBrushes; - - public CylinderBrush() { - super(2); - - cachedBrushes = new HashMap<>(); - for (int i = 0; i <= MAX_RADIUS; i++) { - int radius = i; - List positions = - BlockPos.getAllInBox(BlockPos.ZERO.add(-i - 1, 0, -i - 1), BlockPos.ZERO.add(i + 1, 0, i + 1)) - .map(BlockPos::new) - .filter(p -> VecHelper.getCenterOf(p) - .distanceTo(VecHelper.getCenterOf(BlockPos.ZERO)) < radius + .42f) - .collect(Collectors.toList()); - for (int h = 0; h <= MAX_HEIGHT; h++) { - List stackedPositions = new ArrayList<>(); - for (int layer = 0; layer < h; layer++) { - int yOffset = layer - h / 2; - for (BlockPos p : positions) - stackedPositions.add(p.up(yOffset)); - } - cachedBrushes.put(Pair.of(i, h), stackedPositions); - } - } - } - - @Override - public BlockPos getOffset(Vector3d ray, Direction face, PlacementOptions option) { - if (option == PlacementOptions.Merged) - return BlockPos.ZERO; - - int offset = option == PlacementOptions.Attached ? 0 : -1; - boolean negative = face.getAxisDirection() == AxisDirection.NEGATIVE; - int yOffset = option == PlacementOptions.Attached ? negative ? 1 : 2 : negative ? 0 : -1; - int r = (param0 + 1 + offset); - int y = (param1 + (param1 == 0 ? 0 : yOffset)) / 2; - - return BlockPos.ZERO.offset(face, (face.getAxis() - .isVertical() ? y : r) * (option == PlacementOptions.Attached ? 1 : -1)); - } - - @Override - int getMax(int paramIndex) { - return paramIndex == 0 ? MAX_RADIUS : MAX_HEIGHT; - } - - @Override - int getMin(int paramIndex) { - return paramIndex == 0 ? 0 : 1; - } - - @Override - ITextComponent getParamLabel(int paramIndex) { - return paramIndex == 0 ? Lang.translate("generic.radius") : super.getParamLabel(paramIndex); - } - - @Override - public List getIncludedPositions() { - return cachedBrushes.get(Pair.of(Integer.valueOf(param0), Integer.valueOf(param1))); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/DynamicBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/DynamicBrush.java deleted file mode 100644 index 5305a65e5..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/DynamicBrush.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.IWorld; - -public class DynamicBrush extends Brush { - - public static final int MAX_RADIUS = 10; - - private boolean surface; - - public DynamicBrush(boolean surface) { - super(1); - this.surface = surface; - } - - ITextComponent getParamLabel(int paramIndex) { - return Lang.translate("generic.range"); - } - - @Override - public TerrainTools[] getSupportedTools() { - return surface ? new TerrainTools[] { TerrainTools.Overlay, TerrainTools.Replace, TerrainTools.Clear } - : new TerrainTools[] { TerrainTools.Replace, TerrainTools.Clear }; - } - - @Override - public boolean hasPlacementOptions() { - return false; - } - - @Override - public boolean hasConnectivityOptions() { - return true; - } - - @Override - int getMax(int paramIndex) { - return MAX_RADIUS; - } - - @Override - int getMin(int paramIndex) { - return 1; - } - - @Override - public TerrainTools redirectTool(TerrainTools tool) { - if (tool == TerrainTools.Overlay) - return TerrainTools.Place; - return super.redirectTool(tool); - } - - @Override - public Collection addToGlobalPositions(IWorld world, BlockPos targetPos, Direction targetFace, - Collection affectedPositions, TerrainTools usedTool) { - - boolean searchDiagonals = param1 == 0; - boolean fuzzy = param2 == 0; - boolean replace = usedTool != TerrainTools.Overlay; - int searchRange = param0; - - Set visited = new HashSet<>(); - List frontier = new LinkedList<>(); - - BlockState state = world.getBlockState(targetPos); - List offsets = new LinkedList<>(); - - for (int x = -1; x <= 1; x++) - for (int y = -1; y <= 1; y++) - for (int z = -1; z <= 1; z++) - if (Math.abs(x) + Math.abs(y) + Math.abs(z) < 2 || searchDiagonals) - if (targetFace.getAxis() - .getCoordinate(x, y, z) == 0 || !surface) - offsets.add(new BlockPos(x, y, z)); - - BlockPos startPos = replace ? targetPos : targetPos.offset(targetFace); - frontier.add(startPos); - - while (!frontier.isEmpty()) { - BlockPos currentPos = frontier.remove(0); - if (visited.contains(currentPos)) - continue; - visited.add(currentPos); - if (!currentPos.withinDistance(startPos, searchRange)) - continue; - - // Replace Mode - if (replace) { - BlockState stateToReplace = world.getBlockState(currentPos); - BlockState stateAboveStateToReplace = world.getBlockState(currentPos.offset(targetFace)); - - // Criteria - if (stateToReplace.getBlockHardness(world, currentPos) == -1) - continue; - if (stateToReplace.getBlock() != state.getBlock() && !fuzzy) - continue; - if (stateToReplace.getMaterial() - .isReplaceable()) - continue; - if (BlockHelper.hasBlockSolidSide(stateAboveStateToReplace, world, currentPos.offset(targetFace), - targetFace.getOpposite()) && surface) - continue; - affectedPositions.add(currentPos); - - // Search adjacent spaces - for (BlockPos offset : offsets) - frontier.add(currentPos.add(offset)); - continue; - } - - // Place Mode - BlockState stateToPlaceAt = world.getBlockState(currentPos); - BlockState stateToPlaceOn = world.getBlockState(currentPos.offset(targetFace.getOpposite())); - - // Criteria - if (stateToPlaceOn.getMaterial() - .isReplaceable()) - continue; - if (stateToPlaceOn.getBlock() != state.getBlock() && !fuzzy) - continue; - if (!stateToPlaceAt.getMaterial() - .isReplaceable()) - continue; - affectedPositions.add(currentPos); - - // Search adjacent spaces - for (BlockPos offset : offsets) - frontier.add(currentPos.add(offset)); - continue; - } - - return affectedPositions; - } -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/FlattenTool.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/FlattenTool.java deleted file mode 100644 index eb11bd942..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/FlattenTool.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.lang3.tuple.Pair; - -import net.minecraft.block.BlockState; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; - -public class FlattenTool { - - // gaussian with sig=1 - static float[][] kernel = { - - { 0.003765f, 0.015019f, 0.023792f, 0.015019f, 0.003765f }, - { 0.015019f, 0.059912f, 0.094907f, 0.059912f, 0.015019f }, - { 0.023792f, 0.094907f, 0.150342f, 0.094907f, 0.023792f }, - { 0.015019f, 0.059912f, 0.094907f, 0.059912f, 0.015019f }, - { 0.003765f, 0.015019f, 0.023792f, 0.015019f, 0.003765f }, - - }; - - private static int[][] applyKernel(int[][] values) { - int[][] result = new int[values.length][values[0].length]; - for (int i = 0; i < values.length; i++) { - for (int j = 0; j < values[i].length; j++) { - int value = values[i][j]; - float newValue = 0; - for (int iOffset = -2; iOffset <= 2; iOffset++) { - for (int jOffset = -2; jOffset <= 2; jOffset++) { - int iTarget = i + iOffset; - int jTarget = j + jOffset; - int ref = 0; - if (iTarget < 0 || iTarget >= values.length || jTarget < 0 || jTarget >= values[0].length) - ref = value; - else - ref = values[iTarget][jTarget]; - if (ref == Integer.MIN_VALUE) - ref = value; - newValue += kernel[iOffset + 2][jOffset + 2] * ref; - } - } - result[i][j] = MathHelper.floor(newValue + .5f); - } - } - return result; - } - - public static void apply(World world, List targetPositions, Direction facing) { - List surfaces = new ArrayList<>(); - Map, Integer> heightMap = new HashMap<>(); - int offset = facing.getAxisDirection().getOffset(); - - int minEntry = Integer.MAX_VALUE; - int minCoord1 = Integer.MAX_VALUE; - int minCoord2 = Integer.MAX_VALUE; - int maxEntry = Integer.MIN_VALUE; - int maxCoord1 = Integer.MIN_VALUE; - int maxCoord2 = Integer.MIN_VALUE; - - for (BlockPos p : targetPositions) { - Pair coords = getCoords(p, facing); - BlockState belowSurface = world.getBlockState(p); - - minCoord1 = Math.min(minCoord1, coords.getKey()); - minCoord2 = Math.min(minCoord2, coords.getValue()); - maxCoord1 = Math.max(maxCoord1, coords.getKey()); - maxCoord2 = Math.max(maxCoord2, coords.getValue()); - - if (TerrainTools.isReplaceable(belowSurface)) { - if (!heightMap.containsKey(coords)) - heightMap.put(coords, Integer.MIN_VALUE); - continue; - } - - p = p.offset(facing); - BlockState surface = world.getBlockState(p); - - if (!TerrainTools.isReplaceable(surface)) { - if (!heightMap.containsKey(coords) || heightMap.get(coords).equals(Integer.MIN_VALUE)) - heightMap.put(coords, Integer.MAX_VALUE); - continue; - } - - surfaces.add(p); - int coordinate = facing.getAxis().getCoordinate(p.getX(), p.getY(), p.getZ()); - if (!heightMap.containsKey(coords) || heightMap.get(coords).equals(Integer.MAX_VALUE) - || heightMap.get(coords).equals(Integer.MIN_VALUE) - || heightMap.get(coords) * offset < coordinate * offset) { - heightMap.put(coords, coordinate); - maxEntry = Math.max(maxEntry, coordinate); - minEntry = Math.min(minEntry, coordinate); - } - } - - if (surfaces.isEmpty()) - return; - - // fill heightmap - int[][] heightMapArray = new int[maxCoord1 - minCoord1 + 1][maxCoord2 - minCoord2 + 1]; - for (int i = 0; i < heightMapArray.length; i++) { - for (int j = 0; j < heightMapArray[i].length; j++) { - Pair pair = Pair.of(minCoord1 + i, minCoord2 + j); - if (!heightMap.containsKey(pair)) { - heightMapArray[i][j] = Integer.MIN_VALUE; - continue; - } - Integer height = heightMap.get(pair); - if (height.equals(Integer.MAX_VALUE)) { - heightMapArray[i][j] = offset == 1 ? maxEntry + 2 : minEntry - 2; - continue; - } - if (height.equals(Integer.MIN_VALUE)) { - heightMapArray[i][j] = offset == 1 ? minEntry - 2 : maxEntry + 2; - continue; - } - - heightMapArray[i][j] = height; - } - } - - heightMapArray = applyKernel(heightMapArray); - - for (BlockPos p : surfaces) { - Pair coords = getCoords(p, facing); - int surfaceCoord = facing.getAxis().getCoordinate(p.getX(), p.getY(), p.getZ()) * offset; - int targetCoord = heightMapArray[coords.getKey() - minCoord1][coords.getValue() - minCoord2] * offset; - - // Keep surface - if (surfaceCoord == targetCoord) - continue; - - // Lower surface - BlockState blockState = world.getBlockState(p); - int timeOut = 1000; - while (surfaceCoord > targetCoord) { - BlockPos below = p.offset(facing.getOpposite()); - world.setBlockState(below, blockState); - world.setBlockState(p, blockState.getFluidState().getBlockState()); - p = p.offset(facing.getOpposite()); - surfaceCoord--; - if (timeOut-- <= 0) - break; - } - - // Raise surface - while (surfaceCoord < targetCoord) { - BlockPos above = p.offset(facing); - if (!(blockState.getBlock() instanceof FlowingFluidBlock)) - world.setBlockState(above, blockState); - world.setBlockState(p, world.getBlockState(p.offset(facing.getOpposite()))); - p = p.offset(facing); - surfaceCoord++; - if (timeOut-- <= 0) - break; - } - - } - } - - private static Pair getCoords(BlockPos pos, Direction facing) { - switch (facing.getAxis()) { - case X: - return Pair.of(pos.getZ(), pos.getY()); - case Y: - return Pair.of(pos.getX(), pos.getZ()); - case Z: - return Pair.of(pos.getX(), pos.getY()); - } - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/PlacementOptions.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/PlacementOptions.java deleted file mode 100644 index 9861b2505..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/PlacementOptions.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.utility.Lang; - -public enum PlacementOptions { - - Merged(AllIcons.I_CENTERED), - Attached(AllIcons.I_ATTACHED), - Inserted(AllIcons.I_INSERTED); - - public String translationKey; - public AllIcons icon; - - private PlacementOptions(AllIcons icon) { - this.translationKey = Lang.asId(name()); - this.icon = icon; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/ShapedBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/ShapedBrush.java deleted file mode 100644 index f0e67f3c2..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/ShapedBrush.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.Collection; -import java.util.List; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IWorld; - -public abstract class ShapedBrush extends Brush { - - public ShapedBrush(int amtParams) { - super(amtParams); - } - - @Override - public Collection addToGlobalPositions(IWorld world, BlockPos targetPos, Direction targetFace, - Collection affectedPositions, TerrainTools usedTool) { - List includedPositions = getIncludedPositions(); - if (includedPositions == null) - return affectedPositions; - for (BlockPos blockPos : includedPositions) - affectedPositions.add(targetPos.add(blockPos)); - return affectedPositions; - } - - abstract List getIncludedPositions(); - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/SphereBrush.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/SphereBrush.java deleted file mode 100644 index be7657398..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/SphereBrush.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public class SphereBrush extends ShapedBrush { - - public static final int MAX_RADIUS = 10; - private Map> cachedBrushes; - - public SphereBrush() { - super(1); - - cachedBrushes = new HashMap<>(); - for (int i = 0; i <= MAX_RADIUS; i++) { - int radius = i; - List positions = - BlockPos.getAllInBox(BlockPos.ZERO.add(-i - 1, -i - 1, -i - 1), BlockPos.ZERO.add(i + 1, i + 1, i + 1)) - .map(BlockPos::new).filter(p -> VecHelper.getCenterOf(p) - .distanceTo(VecHelper.getCenterOf(BlockPos.ZERO)) < radius + .5f) - .collect(Collectors.toList()); - cachedBrushes.put(i, positions); - } - } - - @Override - public BlockPos getOffset(Vector3d ray, Direction face, PlacementOptions option) { - if (option == PlacementOptions.Merged) - return BlockPos.ZERO; - - int offset = option == PlacementOptions.Attached ? 0 : -1; - int r = (param0 + 1 + offset); - - return BlockPos.ZERO.offset(face, r * (option == PlacementOptions.Attached ? 1 : -1)); - } - - @Override - int getMax(int paramIndex) { - return MAX_RADIUS; - } - - @Override - ITextComponent getParamLabel(int paramIndex) { - return Lang.translate("generic.radius"); - } - - @Override - List getIncludedPositions() { - return cachedBrushes.get(Integer.valueOf(param0)); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainBrushes.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainBrushes.java deleted file mode 100644 index fa11468b6..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainBrushes.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -public enum TerrainBrushes { - - Cuboid(new CuboidBrush()), - Sphere(new SphereBrush()), - Cylinder(new CylinderBrush()), - Surface(new DynamicBrush(true)), - Cluster(new DynamicBrush(false)), - - ; - - private Brush brush; - - private TerrainBrushes(Brush brush) { - this.brush = brush; - } - - public Brush get() { - return brush; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainTools.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainTools.java deleted file mode 100644 index 43ba4e9f5..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/TerrainTools.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.List; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.curiosities.zapper.ZapperItem; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public enum TerrainTools { - - Fill(AllIcons.I_FILL), - Place(AllIcons.I_PLACE), - Replace(AllIcons.I_REPLACE), - Clear(AllIcons.I_CLEAR), - Overlay(AllIcons.I_OVERLAY), - Flatten(AllIcons.I_FLATTEN), - - ; - - public String translationKey; - public AllIcons icon; - - private TerrainTools(AllIcons icon) { - this.translationKey = Lang.asId(name()); - this.icon = icon; - } - - public boolean requiresSelectedBlock() { - return this != Clear && this != Flatten; - } - - public void run(World world, List targetPositions, Direction facing, @Nullable BlockState paintedState, @Nullable CompoundNBT data, PlayerEntity player) { - switch (this) { - case Clear: - targetPositions.forEach(p -> world.setBlockState(p, Blocks.AIR.getDefaultState())); - break; - case Fill: - targetPositions.forEach(p -> { - BlockState toReplace = world.getBlockState(p); - if (!isReplaceable(toReplace)) - return; - world.setBlockState(p, paintedState); - ZapperItem.setTileData(world, p, paintedState, data, player); - }); - break; - case Flatten: - FlattenTool.apply(world, targetPositions, facing); - break; - case Overlay: - targetPositions.forEach(p -> { - BlockState toOverlay = world.getBlockState(p); - if (isReplaceable(toOverlay)) - return; - if (toOverlay == paintedState) - return; - - p = p.up(); - - BlockState toReplace = world.getBlockState(p); - if (!isReplaceable(toReplace)) - return; - world.setBlockState(p, paintedState); - ZapperItem.setTileData(world, p, paintedState, data, player); - }); - break; - case Place: - targetPositions.forEach(p -> { - world.setBlockState(p, paintedState); - ZapperItem.setTileData(world, p, paintedState, data, player); - }); - break; - case Replace: - targetPositions.forEach(p -> { - BlockState toReplace = world.getBlockState(p); - if (isReplaceable(toReplace)) - return; - world.setBlockState(p, paintedState); - ZapperItem.setTileData(world, p, paintedState, data, player); - }); - break; - } - } - - public static boolean isReplaceable(BlockState toReplace) { - return toReplace.getMaterial().isReplaceable(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java deleted file mode 100644 index 86d74a5c6..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItem.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.content.curiosities.zapper.PlacementPatterns; -import com.simibubi.create.content.curiosities.zapper.ZapperItem; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class WorldshaperItem extends ZapperItem { - - public WorldshaperItem(Properties properties) { - super(properties); - } - - @Override - @OnlyIn(value = Dist.CLIENT) - protected void openHandgunGUI(ItemStack item, boolean b) { - ScreenOpener.open(new WorldshaperScreen(item, b)); - } - - @Override - protected int getZappingRange(ItemStack stack) { - return 128; - } - - @Override - protected int getCooldownDelay(ItemStack item) { - return 2; - } - - @Override - public ITextComponent validateUsage(ItemStack item) { - if (!item.getOrCreateTag() - .contains("BrushParams")) - return Lang.createTranslationTextComponent("terrainzapper.shiftRightClickToSet"); - return super.validateUsage(item); - } - - @Override - protected boolean canActivateWithoutSelectedBlock(ItemStack stack) { - CompoundNBT tag = stack.getOrCreateTag(); - TerrainTools tool = NBTHelper.readEnum(tag, "Tool", TerrainTools.class); - return !tool.requiresSelectedBlock(); - } - - @Override - protected boolean activate(World world, PlayerEntity player, ItemStack stack, BlockState stateToUse, - BlockRayTraceResult raytrace, CompoundNBT data) { - - BlockPos targetPos = raytrace.getPos(); - List affectedPositions = new ArrayList<>(); - - CompoundNBT tag = stack.getOrCreateTag(); - Brush brush = NBTHelper.readEnum(tag, "Brush", TerrainBrushes.class) - .get(); - BlockPos params = NBTUtil.readBlockPos(tag.getCompound("BrushParams")); - PlacementOptions option = NBTHelper.readEnum(tag, "Placement", PlacementOptions.class); - TerrainTools tool = NBTHelper.readEnum(tag, "Tool", TerrainTools.class); - - brush.set(params.getX(), params.getY(), params.getZ()); - targetPos = targetPos.add(brush.getOffset(player.getLookVec(), raytrace.getFace(), option)); - brush.addToGlobalPositions(world, targetPos, raytrace.getFace(), affectedPositions, tool); - PlacementPatterns.applyPattern(affectedPositions, stack); - brush.redirectTool(tool) - .run(world, affectedPositions, raytrace.getFace(), stateToUse, data, player); - - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java deleted file mode 100644 index 3b5886bab..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import static java.lang.Math.max; -import static net.minecraft.util.math.MathHelper.clamp; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.curiosities.zapper.ZapperItemRenderer; -import com.simibubi.create.foundation.item.render.PartialItemModelRenderer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.item.ItemStack; -import net.minecraft.util.HandSide; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3f; - -public class WorldshaperItemRenderer extends ZapperItemRenderer { - - @Override - protected void render(ItemStack stack, WorldshaperModel model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType, - MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - super.render(stack, model, renderer, transformType, ms, buffer, light, overlay); - - float pt = AnimationTickHolder.getPartialTicks(); - float worldTime = AnimationTickHolder.getRenderTime() / 20; - - renderer.renderSolid(model.getOriginalModel(), light); - - ClientPlayerEntity player = Minecraft.getInstance().player; - boolean leftHanded = player.getPrimaryHand() == HandSide.LEFT; - boolean mainHand = player.getHeldItemMainhand() == stack; - boolean offHand = player.getHeldItemOffhand() == stack; - float animation = getAnimationProgress(pt, leftHanded, mainHand); - - // Core glows - float multiplier = MathHelper.sin(worldTime * 5); - if (mainHand || offHand) - multiplier = animation; - - int lightItensity = (int) (15 * clamp(multiplier, 0, 1)); - int glowLight = LightTexture.pack(lightItensity, max(lightItensity, 4)); - renderer.renderSolidGlowing(model.getPartial("core"), glowLight); - renderer.renderGlowing(model.getPartial("core_glow"), glowLight); - - // Accelerator spins - float angle = worldTime * -25; - if (mainHand || offHand) - angle += 360 * animation; - - angle %= 360; - float offset = -.155f; - ms.translate(0, offset, 0); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle)); - ms.translate(0, -offset, 0); - renderer.render(model.getPartial("accelerator"), light); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperModel.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperModel.java deleted file mode 100644 index c27b76932..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperModel.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; - -public class WorldshaperModel extends CustomRenderedItemModel { - - public WorldshaperModel(IBakedModel template) { - super(template, "handheld_worldshaper"); - addPartials("core", "core_glow", "accelerator"); - } - - @Override - public ItemStackTileEntityRenderer createRenderer() { - return new WorldshaperItemRenderer(); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java deleted file mode 100644 index 872bc9de7..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.function.Supplier; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.RayTraceResult.Type; -import net.minecraft.util.math.vector.Vector3d; - -public class WorldshaperRenderHandler { - - private static Supplier> renderedPositions; - - public static void tick() { - gatherSelectedBlocks(); - if (renderedPositions == null) - return; - - CreateClient.OUTLINER.showCluster("terrainZapper", renderedPositions.get()) - .colored(0xbfbfbf) - .disableNormals() - .lineWidth(1 / 32f) - .withFaceTexture(AllSpecialTextures.CHECKERED); - } - - protected static void gatherSelectedBlocks() { - ClientPlayerEntity player = Minecraft.getInstance().player; - ItemStack heldMain = player.getHeldItemMainhand(); - ItemStack heldOff = player.getHeldItemOffhand(); - boolean zapperInMain = AllItems.WORLDSHAPER.isIn(heldMain); - boolean zapperInOff = AllItems.WORLDSHAPER.isIn(heldOff); - - if (zapperInMain) { - CompoundNBT tag = heldMain.getOrCreateTag(); - if (!tag.contains("_Swap") || !zapperInOff) { - createBrushOutline(tag, player, heldMain); - return; - } - } - - if (zapperInOff) { - CompoundNBT tag = heldOff.getOrCreateTag(); - createBrushOutline(tag, player, heldOff); - return; - } - - renderedPositions = null; - } - - public static void createBrushOutline(CompoundNBT tag, ClientPlayerEntity player, ItemStack zapper) { - if (!tag.contains("BrushParams")) { - renderedPositions = null; - return; - } - - Brush brush = NBTHelper.readEnum(tag, "Brush", TerrainBrushes.class) - .get(); - PlacementOptions placement = NBTHelper.readEnum(tag, "Placement", PlacementOptions.class); - TerrainTools tool = NBTHelper.readEnum(tag, "Tool", TerrainTools.class); - BlockPos params = NBTUtil.readBlockPos(tag.getCompound("BrushParams")); - brush.set(params.getX(), params.getY(), params.getZ()); - - Vector3d start = player.getPositionVec() - .add(0, player.getEyeHeight(), 0); - Vector3d range = player.getLookVec() - .scale(128); - BlockRayTraceResult raytrace = player.world - .rayTraceBlocks(new RayTraceContext(start, start.add(range), BlockMode.OUTLINE, FluidMode.NONE, player)); - if (raytrace == null || raytrace.getType() == Type.MISS) { - renderedPositions = null; - return; - } - - BlockPos pos = raytrace.getPos() - .add(brush.getOffset(player.getLookVec(), raytrace.getFace(), placement)); - renderedPositions = - () -> brush.addToGlobalPositions(player.world, pos, raytrace.getFace(), new ArrayList<>(), tool); - } - -} diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java deleted file mode 100644 index 6937f719d..000000000 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperScreen.java +++ /dev/null @@ -1,283 +0,0 @@ -package com.simibubi.create.content.curiosities.zapper.terrainzapper; - -import java.util.List; -import java.util.Vector; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.curiosities.zapper.ZapperScreen; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.widgets.IconButton; -import com.simibubi.create.foundation.gui.widgets.Indicator; -import com.simibubi.create.foundation.gui.widgets.Indicator.State; -import com.simibubi.create.foundation.gui.widgets.Label; -import com.simibubi.create.foundation.gui.widgets.ScrollInput; -import com.simibubi.create.foundation.gui.widgets.SelectionScrollInput; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class WorldshaperScreen extends ZapperScreen { - - protected final ITextComponent placementSection = Lang.translate("gui.terrainzapper.placement"); - protected final ITextComponent toolSection = Lang.translate("gui.terrainzapper.tool"); - protected final List brushOptions = - Lang.translatedOptions("gui.terrainzapper.brush", "cuboid", "sphere", "cylinder", "surface", "cluster"); - - protected Vector toolButtons; - protected Vector placementButtons; - - protected ScrollInput brushInput; - protected Label brushLabel; - protected Vector brushParams; - protected Vector

- * Returns a literal node that redirects its execution to - * the given destination node. - * - * @param alias the command alias - * @param destination the destination node - * - * @return the built node - */ - public static LiteralCommandNode buildRedirect(final String alias, final LiteralCommandNode destination) { - // Redirects only work for nodes with children, but break the top argument-less command. - // Manually adding the root command after setting the redirect doesn't fix it. - // See https://github.com/Mojang/brigadier/issues/46). Manually clone the node instead. - LiteralArgumentBuilder builder = LiteralArgumentBuilder - .literal(alias) - .requires(destination.getRequirement()) - .forward(destination.getRedirect(), destination.getRedirectModifier(), destination.isFork()) - .executes(destination.getCommand()); - for (CommandNode child : destination.getChildren()) { - builder.then(child); - } - return builder.build(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ChunkUtil.java b/src/main/java/com/simibubi/create/foundation/command/ChunkUtil.java deleted file mode 100644 index df7abeb39..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ChunkUtil.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.simibubi.create.foundation.command; - -import java.util.EnumSet; -import java.util.LinkedList; -import java.util.List; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import net.minecraft.util.math.ChunkPos; -import net.minecraft.world.chunk.ChunkStatus; -import net.minecraft.world.gen.Heightmap; -import net.minecraft.world.server.ChunkHolder; -import net.minecraft.world.server.ServerChunkProvider; -import net.minecraftforge.event.world.ChunkEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; - -public class ChunkUtil { - private static final Logger LOGGER = LogManager.getLogger("Create/ChunkUtil"); - final EnumSet POST_FEATURES = EnumSet.of(Heightmap.Type.OCEAN_FLOOR, Heightmap.Type.WORLD_SURFACE, - Heightmap.Type.MOTION_BLOCKING, Heightmap.Type.MOTION_BLOCKING_NO_LEAVES); - - private final List markedChunks; - private final List interestingChunks; - - public ChunkUtil() { - LOGGER.debug("Chunk Util constructed"); - markedChunks = new LinkedList<>(); - interestingChunks = new LinkedList<>(); - } - - public void init() { - ChunkStatus.FULL = - new ChunkStatus("full", ChunkStatus.HEIGHTMAPS, 0, POST_FEATURES, ChunkStatus.Type.LEVELCHUNK, - (_0, _1, _2, _3, _4, future, _6, chunk) -> future.apply(chunk), (_0, _1, _2, _3, future, chunk) -> { - if (markedChunks.contains(chunk.getPos() - .asLong())) { - LOGGER.debug("trying to load unforced chunk " + chunk.getPos() - .toString() + ", returning chunk loading error"); - // this.reloadChunk(world.getChunkProvider(), chunk.getPos()); - return ChunkHolder.MISSING_CHUNK_FUTURE; - } else { - // LOGGER.debug("regular, chunkStatus: " + chunk.getStatus().toString()); - return future.apply(chunk); - } - }); - - } - - public boolean reloadChunk(ServerChunkProvider provider, ChunkPos pos) { - ChunkHolder holder = provider.chunkManager.loadedChunks.remove(pos.asLong()); - provider.chunkManager.immutableLoadedChunksDirty = true; - if (holder != null) { - provider.chunkManager.chunksToUnload.put(pos.asLong(), holder); - provider.chunkManager.scheduleSave(pos.asLong(), holder); - return true; - } else { - return false; - } - } - - public boolean unloadChunk(ServerChunkProvider provider, ChunkPos pos) { - this.interestingChunks.add(pos.asLong()); - this.markedChunks.add(pos.asLong()); - - return this.reloadChunk(provider, pos); - } - - public int clear(ServerChunkProvider provider) { - LinkedList copy = new LinkedList<>(this.markedChunks); - - int size = this.markedChunks.size(); - this.markedChunks.clear(); - - copy.forEach(l -> reForce(provider, new ChunkPos(l))); - - return size; - } - - public void reForce(ServerChunkProvider provider, ChunkPos pos) { - provider.forceChunk(pos, true); - provider.forceChunk(pos, false); - } - - @SubscribeEvent - public void chunkUnload(ChunkEvent.Unload event) { - // LOGGER.debug("Chunk Unload: " + event.getChunk().getPos().toString()); - if (interestingChunks.contains(event.getChunk() - .getPos() - .asLong())) { - LOGGER.info("Interesting Chunk Unload: " + event.getChunk() - .getPos() - .toString()); - } - } - - @SubscribeEvent - public void chunkLoad(ChunkEvent.Load event) { - // LOGGER.debug("Chunk Load: " + event.getChunk().getPos().toString()); - - ChunkPos pos = event.getChunk() - .getPos(); - if (interestingChunks.contains(pos.asLong())) { - LOGGER.info("Interesting Chunk Load: " + pos.toString()); - if (!markedChunks.contains(pos.asLong())) - interestingChunks.remove(pos.asLong()); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ChunkUtilCommand.java b/src/main/java/com/simibubi/create/foundation/command/ChunkUtilCommand.java deleted file mode 100644 index e999333ca..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ChunkUtilCommand.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.Create; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.arguments.ColumnPosArgument; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.math.ColumnPos; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.world.server.ServerChunkProvider; - -public class ChunkUtilCommand { - - public static ArgumentBuilder register() { - return Commands.literal("chunk") - .requires(cs -> cs.hasPermissionLevel(2)) - .then(Commands.literal("reload") - .then(Commands.argument("pos", ColumnPosArgument.columnPos()) - .executes(ctx -> { - // chunk reload - ColumnPos columnPos = ColumnPosArgument.fromBlockPos(ctx, "pos"); - ChunkPos chunkPos = new ChunkPos(columnPos.x >> 4, columnPos.z >> 4); - ServerChunkProvider chunkProvider = ctx.getSource() - .getWorld() - .getChunkProvider(); - - boolean success = Create.CHUNK_UTIL.reloadChunk(chunkProvider, chunkPos); - - if (success) { - ctx.getSource() - .sendFeedback(new StringTextComponent("scheduled unload for chunk " - + chunkPos.toString() + ", might need to repeat command"), true); - return 1; - } else { - ctx.getSource() - .sendFeedback( - new StringTextComponent( - "unable to schedule unload, is chunk " + chunkPos.toString() + " loaded?"), - true); - return 0; - } - }))) - .then(Commands.literal("unload") - .then(Commands.argument("pos", ColumnPosArgument.columnPos()) - .executes(ctx -> { - // chunk unload - ColumnPos columnPos = ColumnPosArgument.fromBlockPos(ctx, "pos"); - ChunkPos chunkPos = new ChunkPos(columnPos.x >> 4, columnPos.z >> 4); - ServerChunkProvider chunkProvider = ctx.getSource() - .getWorld() - .getChunkProvider(); - - boolean success = Create.CHUNK_UTIL.unloadChunk(chunkProvider, chunkPos); - ctx.getSource() - .sendFeedback( - new StringTextComponent("added chunk " + chunkPos.toString() + " to unload list"), - true); - - if (success) { - ctx.getSource() - .sendFeedback(new StringTextComponent("scheduled unload for chunk " - + chunkPos.toString() + ", might need to repeat command"), true); - return 1; - } else { - ctx.getSource() - .sendFeedback( - new StringTextComponent( - "unable to schedule unload, is chunk " + chunkPos.toString() + " loaded?"), - true); - return 0; - } - }))) - .then(Commands.literal("clear") - .executes(ctx -> { - // chunk clear - int count = Create.CHUNK_UTIL.clear(ctx.getSource() - .getWorld() - .getChunkProvider()); - ctx.getSource() - .sendFeedback(new StringTextComponent("removed " + count + " entries from unload list"), false); - - return 1; - })); - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java b/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java deleted file mode 100644 index 3cc35646e..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ClearBufferCacheCommand.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.CreateClient; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; - -public class ClearBufferCacheCommand { - - static ArgumentBuilder register() { - return Commands.literal("clearRenderBuffers") - .requires(cs -> cs.hasPermissionLevel(0)) - .executes(ctx -> { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> ClearBufferCacheCommand::execute); - ctx.getSource() - .sendFeedback(new StringTextComponent("Cleared rendering buffers."), true); - return 1; - }); - } - - @OnlyIn(Dist.CLIENT) - private static void execute() { - CreateClient.invalidateRenderers(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java b/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java deleted file mode 100644 index 5147a4bae..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/CloneCommand.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.simibubi.create.foundation.command; - -import java.util.List; - -import com.google.common.collect.Lists; -import com.mojang.brigadier.Command; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.brigadier.exceptions.Dynamic2CommandExceptionType; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.arguments.BlockPosArgument; -import net.minecraft.inventory.IClearable; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.CachedBlockInfo; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.world.gen.feature.template.Template; -import net.minecraft.world.server.ServerWorld; - -public class CloneCommand { - - private static final Dynamic2CommandExceptionType CLONE_TOO_BIG_EXCEPTION = new Dynamic2CommandExceptionType( - (arg1, arg2) -> new TranslationTextComponent("commands.clone.toobig", arg1, arg2)); - - public static ArgumentBuilder register() { - return Commands.literal("clone") - .requires(cs -> cs.hasPermissionLevel(2)) - .then(Commands.argument("begin", BlockPosArgument.blockPos()) - .then(Commands.argument("end", BlockPosArgument.blockPos()) - .then(Commands.argument("destination", BlockPosArgument.blockPos()) - .then(Commands.literal("skipBlocks") - .executes(ctx -> doClone(ctx.getSource(), BlockPosArgument.getLoadedBlockPos(ctx, "begin"), - BlockPosArgument.getLoadedBlockPos(ctx, "end"), - BlockPosArgument.getLoadedBlockPos(ctx, "destination"), false))) - .executes(ctx -> doClone(ctx.getSource(), BlockPosArgument.getLoadedBlockPos(ctx, "begin"), - BlockPosArgument.getLoadedBlockPos(ctx, "end"), - BlockPosArgument.getLoadedBlockPos(ctx, "destination"), true))))) - .executes(ctx -> { - ctx.getSource() - .sendFeedback(new StringTextComponent( - "Clones all blocks as well as super glue from the specified area to the target destination"), - true); - - return Command.SINGLE_SUCCESS; - }); - - } - - private static int doClone(CommandSource source, BlockPos begin, BlockPos end, BlockPos destination, - boolean cloneBlocks) throws CommandSyntaxException { - MutableBoundingBox sourceArea = new MutableBoundingBox(begin, end); - BlockPos destinationEnd = destination.add(sourceArea.getLength()); - MutableBoundingBox destinationArea = new MutableBoundingBox(destination, destinationEnd); - - int i = sourceArea.getXSize() * sourceArea.getYSize() * sourceArea.getZSize(); - if (i > 32768) - throw CLONE_TOO_BIG_EXCEPTION.create(32768, i); - - ServerWorld world = source.getWorld(); - - if (!world.isAreaLoaded(begin, end) || !world.isAreaLoaded(destination, destinationEnd)) - throw BlockPosArgument.POS_UNLOADED.create(); - - BlockPos diffToTarget = new BlockPos(destinationArea.minX - sourceArea.minX, - destinationArea.minY - sourceArea.minY, destinationArea.minZ - sourceArea.minZ); - - int blockPastes = cloneBlocks ? cloneBlocks(sourceArea, world, diffToTarget) : 0; - int gluePastes = cloneGlue(sourceArea, world, diffToTarget); - - if (cloneBlocks) - source.sendFeedback(new StringTextComponent("Successfully cloned " + blockPastes + " Blocks"), true); - - source.sendFeedback(new StringTextComponent("Successfully applied glue " + gluePastes + " times"), true); - return blockPastes + gluePastes; - - } - - private static int cloneGlue(MutableBoundingBox sourceArea, ServerWorld world, BlockPos diffToTarget) { - int gluePastes = 0; - - List glue = - world.getEntitiesWithinAABB(SuperGlueEntity.class, AxisAlignedBB.func_216363_a(sourceArea)); - List> newGlue = Lists.newArrayList(); - - for (SuperGlueEntity g : glue) { - BlockPos pos = g.getHangingPosition(); - Direction direction = g.getFacingDirection(); - newGlue.add(Pair.of(pos.add(diffToTarget), direction)); - } - - for (Pair p : newGlue) { - SuperGlueEntity g = new SuperGlueEntity(world, p.getFirst(), p.getSecond()); - if (g.onValidSurface()) { - world.addEntity(g); - gluePastes++; - } - } - return gluePastes; - } - - private static int cloneBlocks(MutableBoundingBox sourceArea, ServerWorld world, BlockPos diffToTarget) { - int blockPastes = 0; - - List blocks = Lists.newArrayList(); - List tileBlocks = Lists.newArrayList(); - - for (int z = sourceArea.minZ; z <= sourceArea.maxZ; ++z) { - for (int y = sourceArea.minY; y <= sourceArea.maxY; ++y) { - for (int x = sourceArea.minX; x <= sourceArea.maxX; ++x) { - BlockPos currentPos = new BlockPos(x, y, z); - BlockPos newPos = currentPos.add(diffToTarget); - CachedBlockInfo cached = new CachedBlockInfo(world, currentPos, false); - BlockState state = cached.getBlockState(); - TileEntity te = world.getTileEntity(currentPos); - if (te != null) { - CompoundNBT nbt = te.write(new CompoundNBT()); - tileBlocks.add(new Template.BlockInfo(newPos, state, nbt)); - } else { - blocks.add(new Template.BlockInfo(newPos, state, null)); - } - } - } - } - - List allBlocks = Lists.newArrayList(); - allBlocks.addAll(blocks); - allBlocks.addAll(tileBlocks); - - List reverse = Lists.reverse(allBlocks); - - for (Template.BlockInfo info : reverse) { - TileEntity te = world.getTileEntity(info.pos); - IClearable.clearObj(te); - world.setBlockState(info.pos, Blocks.BARRIER.getDefaultState(), 2); - } - - for (Template.BlockInfo info : allBlocks) { - if (world.setBlockState(info.pos, info.state, 2)) - blockPastes++; - } - - for (Template.BlockInfo info : tileBlocks) { - TileEntity te = world.getTileEntity(info.pos); - if (te != null && info.nbt != null) { - info.nbt.putInt("x", info.pos.getX()); - info.nbt.putInt("y", info.pos.getY()); - info.nbt.putInt("z", info.pos.getZ()); - te.fromTag(info.state, info.nbt); - te.markDirty(); - } - - // idk why the state is set twice for a te, but its done like this in the original clone command - world.setBlockState(info.pos, info.state, 2); - } - - for (Template.BlockInfo info : reverse) { - world.updateNeighbors(info.pos, info.state.getBlock()); - } - - world.getPendingBlockTicks() - .copyTicks(sourceArea, diffToTarget); - - return blockPastes; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java deleted file mode 100644 index 5115d9d6f..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ConfigCommand.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.Command; -import com.mojang.brigadier.arguments.StringArgumentType; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.config.ui.ConfigHelper; -import com.simibubi.create.foundation.networking.AllPackets; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.network.PacketDistributor; - -/** - * Examples: - * /create config client - to open Create's ConfigGui with the client config already selected - * /create config "botania:common" - to open Create's ConfigGui with Botania's common config already selected - * /create config "create:client.client.rainbowDebug" set false - to disable Create's rainbow debug for the sender - */ -public class ConfigCommand { - - public static ArgumentBuilder register() { - return Commands.literal("config") - .executes(ctx -> { - ServerPlayerEntity player = ctx.getSource().asPlayer(); - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> player), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.configScreen.name(), "") - ); - - return Command.SINGLE_SUCCESS; - }) - .then(Commands.argument("path", StringArgumentType.string()) - .executes(ctx -> { - ServerPlayerEntity player = ctx.getSource().asPlayer(); - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> player), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.configScreen.name(), StringArgumentType.getString(ctx, "path")) - ); - - return Command.SINGLE_SUCCESS; - }) - .then(Commands.literal("set") - .requires(cs -> cs.hasPermissionLevel(2)) - .then(Commands.argument("value", StringArgumentType.string()) - .executes(ctx -> { - String path = StringArgumentType.getString(ctx, "path"); - String value = StringArgumentType.getString(ctx, "value"); - - - ConfigHelper.ConfigPath configPath; - try { - configPath = ConfigHelper.ConfigPath.parse(path); - } catch (IllegalArgumentException e) { - ctx.getSource().sendErrorMessage(new StringTextComponent(e.getMessage())); - return 0; - } - - if (configPath.getType() == ModConfig.Type.CLIENT) { - ServerPlayerEntity player = ctx.getSource().asPlayer(); - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> player), - new SConfigureConfigPacket("SET" + path, value) - ); - - return Command.SINGLE_SUCCESS; - } - - try { - ConfigHelper.setConfigValue(configPath, value); - ctx.getSource().sendFeedback(new StringTextComponent("Great Success!"), false); - return Command.SINGLE_SUCCESS; - } catch (ConfigHelper.InvalidValueException e) { - ctx.getSource().sendErrorMessage(new StringTextComponent("Config could not be set the the specified value!")); - return 0; - } catch (Exception e) { - ctx.getSource().sendErrorMessage(new StringTextComponent("Something went wrong while trying to set config value. Check the server logs for more information")); - Create.LOGGER.warn("Exception during server-side config value set:", e); - return 0; - } - }) - ) - ) - ); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigCommand.java deleted file mode 100644 index bcb8206d6..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ConfigureConfigCommand.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.Command; -import com.mojang.brigadier.builder.ArgumentBuilder; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.entity.player.ServerPlayerEntity; - -public abstract class ConfigureConfigCommand { - - protected final String commandLiteral; - - ConfigureConfigCommand(String commandLiteral) { - this.commandLiteral = commandLiteral; - } - - ArgumentBuilder register() { - return Commands.literal(this.commandLiteral) - .requires(cs -> cs.hasPermissionLevel(0)) - .then(Commands.literal("on") - .executes(ctx -> { - ServerPlayerEntity player = ctx.getSource() - .asPlayer(); - sendPacket(player, String.valueOf(true)); - - return Command.SINGLE_SUCCESS; - })) - .then(Commands.literal("off") - .executes(ctx -> { - ServerPlayerEntity player = ctx.getSource() - .asPlayer(); - sendPacket(player, String.valueOf(false)); - - return Command.SINGLE_SUCCESS; - })) - .executes(ctx -> { - ServerPlayerEntity player = ctx.getSource() - .asPlayer(); - sendPacket(player, "info"); - - return Command.SINGLE_SUCCESS; - }); - } - - protected abstract void sendPacket(ServerPlayerEntity player, String option); -} diff --git a/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java b/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java deleted file mode 100644 index 4cec64866..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/CouplingCommand.java +++ /dev/null @@ -1,181 +0,0 @@ -package com.simibubi.create.foundation.command; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.UUID; - -import com.google.common.collect.Lists; -import com.mojang.brigadier.Command; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; -import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; -import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingHandler; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartController; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.arguments.EntityArgument; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.common.util.LazyOptional; - -public class CouplingCommand { - - public static final SimpleCommandExceptionType ONLY_MINECARTS_ALLOWED = - new SimpleCommandExceptionType(new StringTextComponent("Only Minecarts can be coupled")); - public static final SimpleCommandExceptionType SAME_DIMENSION = - new SimpleCommandExceptionType(new StringTextComponent("Minecarts have to be in the same Dimension")); - public static final DynamicCommandExceptionType TWO_CARTS = - new DynamicCommandExceptionType(a -> new StringTextComponent( - "Your selector targeted " + a + " entities. You can only couple 2 Minecarts at a time.")); - - public static ArgumentBuilder register() { - - return Commands.literal("coupling") - .requires(cs -> cs.hasPermissionLevel(2)) - .then(Commands.literal("add") - .then(Commands.argument("cart1", EntityArgument.entity()) - .then(Commands.argument("cart2", EntityArgument.entity()) - .executes(ctx -> { - Entity cart1 = EntityArgument.getEntity(ctx, "cart1"); - if (!(cart1 instanceof AbstractMinecartEntity)) - throw ONLY_MINECARTS_ALLOWED.create(); - - Entity cart2 = EntityArgument.getEntity(ctx, "cart2"); - if (!(cart2 instanceof AbstractMinecartEntity)) - throw ONLY_MINECARTS_ALLOWED.create(); - - if (!cart1.getEntityWorld() - .equals(cart2.getEntityWorld())) - throw SAME_DIMENSION.create(); - - Entity source = ctx.getSource() - .getEntity(); - - CouplingHandler.tryToCoupleCarts( - source instanceof PlayerEntity ? (PlayerEntity) source : null, cart1.getEntityWorld(), - cart1.getEntityId(), cart2.getEntityId()); - - return Command.SINGLE_SUCCESS; - }))) - .then(Commands.argument("carts", EntityArgument.entities()) - .executes(ctx -> { - Collection entities = EntityArgument.getEntities(ctx, "carts"); - if (entities.size() != 2) - throw TWO_CARTS.create(entities.size()); - - ArrayList eList = Lists.newArrayList(entities); - Entity cart1 = eList.get(0); - if (!(cart1 instanceof AbstractMinecartEntity)) - throw ONLY_MINECARTS_ALLOWED.create(); - - Entity cart2 = eList.get(1); - if (!(cart2 instanceof AbstractMinecartEntity)) - throw ONLY_MINECARTS_ALLOWED.create(); - - if (!cart1.getEntityWorld() - .equals(cart2.getEntityWorld())) - throw SAME_DIMENSION.create(); - - Entity source = ctx.getSource() - .getEntity(); - - CouplingHandler.tryToCoupleCarts(source instanceof PlayerEntity ? (PlayerEntity) source : null, - cart1.getEntityWorld(), cart1.getEntityId(), cart2.getEntityId()); - - return Command.SINGLE_SUCCESS; - }))) - .then(Commands.literal("remove") - .then(Commands.argument("cart1", EntityArgument.entity()) - .then(Commands.argument("cart2", EntityArgument.entity()) - .executes(ctx -> { - Entity cart1 = EntityArgument.getEntity(ctx, "cart1"); - if (!(cart1 instanceof AbstractMinecartEntity)) - throw ONLY_MINECARTS_ALLOWED.create(); - - Entity cart2 = EntityArgument.getEntity(ctx, "cart2"); - if (!(cart2 instanceof AbstractMinecartEntity)) - throw ONLY_MINECARTS_ALLOWED.create(); - - LazyOptional cart1Capability = - cart1.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); - if (!cart1Capability.isPresent()) { - ctx.getSource() - .sendFeedback(new StringTextComponent("Minecart has no Couplings Attached"), true); - return 0; - } - - MinecartController cart1Controller = cart1Capability.orElse(null); - - int cart1Couplings = (cart1Controller.isConnectedToCoupling() ? 1 : 0) - + (cart1Controller.isLeadingCoupling() ? 1 : 0); - if (cart1Couplings == 0) { - ctx.getSource() - .sendFeedback(new StringTextComponent("Minecart has no Couplings Attached"), true); - return 0; - } - - for (boolean bool : Iterate.trueAndFalse) { - UUID coupledCart = cart1Controller.getCoupledCart(bool); - if (coupledCart == null) - continue; - - if (coupledCart != cart2.getUniqueID()) - continue; - - MinecartController cart2Controller = - CapabilityMinecartController.getIfPresent(cart1.getEntityWorld(), coupledCart); - if (cart2Controller == null) - return 0; - - cart1Controller.removeConnection(bool); - cart2Controller.removeConnection(!bool); - return Command.SINGLE_SUCCESS; - } - - ctx.getSource() - .sendFeedback(new StringTextComponent("The specified Carts are not coupled"), true); - - return 0; - })))) - .then(Commands.literal("removeAll") - .then(Commands.argument("cart", EntityArgument.entity()) - .executes(ctx -> { - Entity cart = EntityArgument.getEntity(ctx, "cart"); - if (!(cart instanceof AbstractMinecartEntity)) - throw ONLY_MINECARTS_ALLOWED.create(); - - LazyOptional capability = - cart.getCapability(CapabilityMinecartController.MINECART_CONTROLLER_CAPABILITY); - if (!capability.isPresent()) { - ctx.getSource() - .sendFeedback(new StringTextComponent("Minecart has no Couplings Attached"), true); - return 0; - } - - MinecartController controller = capability.orElse(null); - - int couplings = - (controller.isConnectedToCoupling() ? 1 : 0) + (controller.isLeadingCoupling() ? 1 : 0); - if (couplings == 0) { - ctx.getSource() - .sendFeedback(new StringTextComponent("Minecart has no Couplings Attached"), true); - return 0; - } - - controller.decouple(); - - ctx.getSource() - .sendFeedback( - new StringTextComponent("Removed " + couplings + " couplings from the Minecart"), true); - - return couplings; - }))); - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/command/FabulousWarningCommand.java b/src/main/java/com/simibubi/create/foundation/command/FabulousWarningCommand.java deleted file mode 100644 index 2c03d40b0..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/FabulousWarningCommand.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.Command; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.foundation.networking.AllPackets; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraftforge.fml.network.PacketDistributor; - -public class FabulousWarningCommand { - - public static ArgumentBuilder register() { - return Commands.literal("dismissFabulousWarning") - .requires(AllCommands.sourceIsPlayer) - .executes(ctx -> { - ServerPlayerEntity player = ctx.getSource() - .asPlayer(); - - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> player), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.fabulousWarning.name(), "") - ); - - return Command.SINGLE_SUCCESS; - }); - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java b/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java deleted file mode 100644 index 4557c07ad..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/FixLightingCommand.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.foundation.networking.AllPackets; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.fml.network.PacketDistributor; - -public class FixLightingCommand { - - static ArgumentBuilder register() { - return Commands.literal("fixLighting") - .requires(cs -> cs.hasPermissionLevel(0)) - .executes(ctx -> { - AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource() - .getEntity()), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.fixLighting.name(), String.valueOf(true))); - - ctx.getSource() - .sendFeedback( - new StringTextComponent("Forge's experimental block rendering pipeline is now enabled."), true); - - return 1; - }); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java b/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java deleted file mode 100644 index 2a8a1c189..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/FlySpeedCommand.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.Command; -import com.mojang.brigadier.arguments.FloatArgumentType; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.mojang.brigadier.context.CommandContext; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.arguments.EntityArgument; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.play.server.SPlayerAbilitiesPacket; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; - -public class FlySpeedCommand { - - public static ArgumentBuilder register() { - return Commands.literal("flySpeed") - .requires(cs -> cs.hasPermissionLevel(2)) - .then(Commands.argument("speed", FloatArgumentType.floatArg(0)) - .then(Commands.argument("target", EntityArgument.player()) - .executes(ctx -> sendFlySpeedUpdate(ctx, EntityArgument.getPlayer(ctx, "target"), - FloatArgumentType.getFloat(ctx, "speed")))) - .executes(ctx -> sendFlySpeedUpdate(ctx, ctx.getSource() - .asPlayer(), FloatArgumentType.getFloat(ctx, "speed")))) - .then(Commands.literal("reset") - .then(Commands.argument("target", EntityArgument.player()) - .executes(ctx -> sendFlySpeedUpdate(ctx, EntityArgument.getPlayer(ctx, "target"), 0.05f))) - .executes(ctx -> sendFlySpeedUpdate(ctx, ctx.getSource() - .asPlayer(), 0.05f)) - - ); - } - - private static int sendFlySpeedUpdate(CommandContext ctx, ServerPlayerEntity player, float speed) { - SPlayerAbilitiesPacket packet = new SPlayerAbilitiesPacket(player.abilities); - // packet.setFlySpeed(speed); - ObfuscationReflectionHelper.setPrivateValue(SPlayerAbilitiesPacket.class, packet, speed, "field_149116_e"); - player.connection.sendPacket(packet); - - ctx.getSource() - .sendFeedback(new StringTextComponent("Temporarily set " + player.getName() - .getString() + "'s Flying Speed to: " + speed), true); - - return Command.SINGLE_SUCCESS; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/command/GlueCommand.java b/src/main/java/com/simibubi/create/foundation/command/GlueCommand.java deleted file mode 100644 index 269d52023..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/GlueCommand.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.arguments.BlockPosArgument; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.server.ServerWorld; - -public class GlueCommand { - public static ArgumentBuilder register() { - return Commands.literal("glue") - .requires(cs -> cs.hasPermissionLevel(0)) - .then(Commands.argument("pos", BlockPosArgument.blockPos()) - //.then(Commands.argument("direction", EnumArgument.enumArgument(Direction.class)) - .executes(ctx -> { - BlockPos pos = BlockPosArgument.getBlockPos(ctx, "pos"); - - ServerWorld world = ctx.getSource().getWorld(); - SuperGlueEntity entity = new SuperGlueEntity(world, pos, Direction.UP); - - entity.playPlaceSound(); - world.addEntity(entity); - - return 1; - })); - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java b/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java deleted file mode 100644 index 2d242ee4f..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/HighlightCommand.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.simibubi.create.foundation.command; - -import java.util.Collection; - -import com.mojang.brigadier.Command; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.content.contraptions.components.structureMovement.AssemblyException; -import com.simibubi.create.content.contraptions.components.structureMovement.IDisplayAssemblyExceptions; -import com.simibubi.create.foundation.networking.AllPackets; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.arguments.BlockPosArgument; -import net.minecraft.command.arguments.EntityArgument; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeMod; -import net.minecraftforge.fml.network.PacketDistributor; - -public class HighlightCommand { - - public static ArgumentBuilder register() { - return Commands.literal("highlight") - .requires(cs -> cs.hasPermissionLevel(0)) - .then(Commands.argument("pos", BlockPosArgument.blockPos()) - .then(Commands.argument("players", EntityArgument.players()) - .executes(ctx -> { - Collection players = EntityArgument.getPlayers(ctx, "players"); - BlockPos pos = BlockPosArgument.getBlockPos(ctx, "pos"); - - for (ServerPlayerEntity p : players) { - AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> p), new HighlightPacket(pos)); - } - - return players.size(); - })) - // .requires(AllCommands.sourceIsPlayer) - .executes(ctx -> { - BlockPos pos = BlockPosArgument.getLoadedBlockPos(ctx, "pos"); - - AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource() - .getEntity()), new HighlightPacket(pos)); - - return Command.SINGLE_SUCCESS; - })) - // .requires(AllCommands.sourceIsPlayer) - .executes(ctx -> { - ServerPlayerEntity player = ctx.getSource() - .asPlayer(); - return highlightAssemblyExceptionFor(player, ctx.getSource()); - }); - - } - - private static void sendMissMessage(CommandSource source) { - source.sendFeedback( - new StringTextComponent("Try looking at a Block that has failed to assemble a Contraption and try again."), - true); - } - - private static int highlightAssemblyExceptionFor(ServerPlayerEntity player, CommandSource source) { - double distance = player.getAttribute(ForgeMod.REACH_DISTANCE.get()) - .getValue(); - Vector3d start = player.getEyePosition(1); - Vector3d look = player.getLook(1); - Vector3d end = start.add(look.x * distance, look.y * distance, look.z * distance); - World world = player.world; - - BlockRayTraceResult ray = world.rayTraceBlocks( - new RayTraceContext(start, end, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, player)); - if (ray.getType() == RayTraceResult.Type.MISS) { - sendMissMessage(source); - return 0; - } - - BlockPos pos = ray.getPos(); - TileEntity te = world.getTileEntity(pos); - if (!(te instanceof IDisplayAssemblyExceptions)) { - sendMissMessage(source); - return 0; - } - - IDisplayAssemblyExceptions display = (IDisplayAssemblyExceptions) te; - AssemblyException exception = display.getLastAssemblyException(); - if (exception == null) { - sendMissMessage(source); - return 0; - } - - if (!exception.hasPosition()) { - source.sendFeedback(new StringTextComponent("Can't highlight a specific position for this issue"), true); - return Command.SINGLE_SUCCESS; - } - - BlockPos p = exception.getPosition(); - String command = "/create highlight " + p.getX() + " " + p.getY() + " " + p.getZ(); - return player.server.getCommandManager() - .handleCommand(source, command); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/HighlightPacket.java b/src/main/java/com/simibubi/create/foundation/command/HighlightPacket.java deleted file mode 100644 index 900e250fe..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/HighlightPacket.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.simibubi.create.foundation.command; - -import java.util.function.Supplier; - -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.NetworkEvent; - -public class HighlightPacket extends SimplePacketBase { - - private final BlockPos pos; - - public HighlightPacket(BlockPos pos) { - this.pos = pos; - } - - public HighlightPacket(PacketBuffer buffer) { - this.pos = BlockPos.fromLong(buffer.readLong()); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeLong(pos.toLong()); - } - - @Override - public void handle(Supplier ctx) { - ctx.get() - .enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - performHighlight(pos); - })); - - ctx.get() - .setPacketHandled(true); - } - - @OnlyIn(Dist.CLIENT) - public static void performHighlight(BlockPos pos) { - if (Minecraft.getInstance().world == null || !Minecraft.getInstance().world.isBlockPresent(pos)) - return; - - CreateClient.OUTLINER.showAABB("highlightCommand", VoxelShapes.fullCube() - .getBoundingBox() - .offset(pos), 200) - .lineWidth(1 / 32f) - .colored(0xEeEeEe) - // .colored(0x243B50) - .withFaceTexture(AllSpecialTextures.SELECTION); - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java b/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java deleted file mode 100644 index 46e18f681..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/KillTPSCommand.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.arguments.IntegerArgumentType; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; - -public class KillTPSCommand { - - public static ArgumentBuilder register() { - return Commands.literal("killtps") - .requires(cs -> cs.hasPermissionLevel(2)) - .executes(ctx -> { - // killtps no arguments - ctx.getSource() - .sendFeedback(Lang.createTranslationTextComponent("command.killTPSCommand.status.slowed_by.0", - Create.LAGGER.isLagging() ? Create.LAGGER.getTickTime() : 0), true); - if (Create.LAGGER.isLagging()) - ctx.getSource() - .sendFeedback(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.0"), - true); - else - ctx.getSource() - .sendFeedback(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.1"), - true); - - return 1; - }) - .then(Commands.literal("start") - .executes(ctx -> { - // killtps start no time - int tickTime = Create.LAGGER.getTickTime(); - if (tickTime > 0) { - Create.LAGGER.setLagging(true); - ctx.getSource() - .sendFeedback((Lang - .createTranslationTextComponent("command.killTPSCommand.status.slowed_by.1", tickTime)), - true); - ctx.getSource() - .sendFeedback(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.0"), - true); - } else { - ctx.getSource() - .sendFeedback(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.1"), - true); - } - - return 1; - }) - .then(Commands.argument(Lang.translate("command.killTPSCommand.argument.tickTime") - .getUnformattedComponentText(), IntegerArgumentType.integer(1)) - .executes(ctx -> { - // killtps start tickTime - int tickTime = IntegerArgumentType.getInteger(ctx, - Lang.translate("command.killTPSCommand.argument.tickTime") - .getUnformattedComponentText()); - Create.LAGGER.setTickTime(tickTime); - Create.LAGGER.setLagging(true); - ctx.getSource() - .sendFeedback((Lang - .createTranslationTextComponent("command.killTPSCommand.status.slowed_by.1", tickTime)), - true); - ctx.getSource() - .sendFeedback(Lang.createTranslationTextComponent("command.killTPSCommand.status.usage.0"), - true); - - return 1; - }))) - .then(Commands.literal("stop") - .executes(ctx -> { - // killtps stop - Create.LAGGER.setLagging(false); - ctx.getSource() - .sendFeedback(Lang.createTranslationTextComponent("command.killTPSCommand.status.slowed_by.2"), - false); - - return 1; - })); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java b/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java deleted file mode 100644 index 034746d58..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/OverlayConfigCommand.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.simibubi.create.foundation.networking.AllPackets; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.network.PacketDistributor; - -public class OverlayConfigCommand { - - public static ArgumentBuilder register() { - return Commands.literal("overlay") - .requires(cs -> cs.hasPermissionLevel(0)) - .then(Commands.literal("reset") - .executes(ctx -> { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> SConfigureConfigPacket.Actions.overlayReset.performAction("")); - - DistExecutor.unsafeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource().getEntity()), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.overlayReset.name(), ""))); - - ctx.getSource() - .sendFeedback(new StringTextComponent("reset overlay offset"), true); - - return 1; - }) - ) - .executes(ctx -> { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> SConfigureConfigPacket.Actions.overlayScreen.performAction("")); - - DistExecutor.unsafeRunWhenOn(Dist.DEDICATED_SERVER, () -> () -> - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) ctx.getSource().getEntity()), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.overlayScreen.name(), ""))); - - ctx.getSource() - .sendFeedback(new StringTextComponent("window opened"), true); - - return 1; - }); - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/PonderCommand.java b/src/main/java/com/simibubi/create/foundation/command/PonderCommand.java deleted file mode 100644 index 70d353a64..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/PonderCommand.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simibubi.create.foundation.command; - -import java.util.Collection; - -import com.google.common.collect.ImmutableList; -import com.mojang.brigadier.Command; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.mojang.brigadier.suggestion.SuggestionProvider; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.ponder.PonderRegistry; - -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.ISuggestionProvider; -import net.minecraft.command.arguments.EntityArgument; -import net.minecraft.command.arguments.ResourceLocationArgument; -import net.minecraft.command.arguments.SuggestionProviders; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.fml.network.PacketDistributor; - -public class PonderCommand { - public static final SuggestionProvider ITEM_PONDERS = SuggestionProviders.register(new ResourceLocation("all_ponders"), (iSuggestionProviderCommandContext, builder) -> ISuggestionProvider.func_212476_a(PonderRegistry.all.keySet().stream(), builder)); - - static ArgumentBuilder register() { - return Commands.literal("ponder") - .requires(cs -> cs.hasPermissionLevel(0)) - .executes(ctx -> openScene("index", ctx.getSource().asPlayer())) - .then(Commands.argument("scene", ResourceLocationArgument.resourceLocation()) - .suggests(ITEM_PONDERS) - .executes(ctx -> openScene(ResourceLocationArgument.getResourceLocation(ctx, "scene").toString(), ctx.getSource().asPlayer())) - .then(Commands.argument("targets", EntityArgument.players()) - .requires(cs -> cs.hasPermissionLevel(2)) - .executes(ctx -> openScene(ResourceLocationArgument.getResourceLocation(ctx, "scene").toString(), EntityArgument.getPlayers(ctx, "targets"))) - ) - ); - - } - - private static int openScene(String sceneId, ServerPlayerEntity player) { - return openScene(sceneId, ImmutableList.of(player)); - } - - private static int openScene(String sceneId, Collection players) { - for (ServerPlayerEntity player : players) { - if (player instanceof FakePlayer) - continue; - - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> player), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.openPonder.name(), sceneId)); - } - return Command.SINGLE_SUCCESS; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java b/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java deleted file mode 100644 index 7a7e136e6..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ReplaceInCommandBlocksCommand.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.simibubi.create.foundation.command; - -import org.apache.commons.lang3.mutable.MutableInt; - -import com.mojang.brigadier.arguments.StringArgumentType; -import com.mojang.brigadier.builder.ArgumentBuilder; - -import net.minecraft.block.BlockState; -import net.minecraft.block.CommandBlockBlock; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.command.arguments.BlockPosArgument; -import net.minecraft.tileentity.CommandBlockLogic; -import net.minecraft.tileentity.CommandBlockTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.world.server.ServerWorld; - -public class ReplaceInCommandBlocksCommand { - - public static ArgumentBuilder register() { - return Commands.literal("replaceInCommandBlocks") - .requires(cs -> cs.hasPermissionLevel(0)) - .then(Commands.argument("begin", BlockPosArgument.blockPos()) - .then(Commands.argument("end", BlockPosArgument.blockPos()) - .then(Commands.argument("toReplace", StringArgumentType.string()) - .then(Commands.argument("replaceWith", StringArgumentType.string()) - .executes(ctx -> { - doReplace(ctx.getSource(), BlockPosArgument.getLoadedBlockPos(ctx, "begin"), - BlockPosArgument.getLoadedBlockPos(ctx, "end"), - StringArgumentType.getString(ctx, "toReplace"), - StringArgumentType.getString(ctx, "replaceWith")); - return 1; - }))))); - - } - - private static void doReplace(CommandSource source, BlockPos from, BlockPos to, String toReplace, - String replaceWith) { - ServerWorld world = source.getWorld(); - MutableInt blocks = new MutableInt(0); - BlockPos.getAllInBox(from, to) - .forEach(pos -> { - BlockState blockState = world.getBlockState(pos); - if (!(blockState.getBlock() instanceof CommandBlockBlock)) - return; - TileEntity tileEntity = world.getTileEntity(pos); - if (!(tileEntity instanceof CommandBlockTileEntity)) - return; - CommandBlockTileEntity cb = (CommandBlockTileEntity) tileEntity; - CommandBlockLogic commandBlockLogic = cb.getCommandBlockLogic(); - String command = commandBlockLogic.getCommand(); - if (command.indexOf(toReplace) != -1) - blocks.increment(); - commandBlockLogic.setCommand(command.replaceAll(toReplace, replaceWith)); - cb.markDirty(); - world.notifyBlockUpdate(pos, blockState, blockState, 2); - }); - int intValue = blocks.intValue(); - if (intValue == 0) { - source.sendFeedback(new StringTextComponent("Couldn't find \"" + toReplace + "\" anywhere."), true); - return; - } - source.sendFeedback(new StringTextComponent("Replaced occurrences in " + intValue + " blocks."), true); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java b/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java deleted file mode 100644 index bf91f337c..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/SConfigureConfigPacket.java +++ /dev/null @@ -1,250 +0,0 @@ -package com.simibubi.create.foundation.command; - -import java.util.function.Consumer; -import java.util.function.Supplier; - -import org.apache.logging.log4j.LogManager; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.OptifineHandler; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.goggles.GoggleConfigScreen; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.config.ui.BaseConfigScreen; -import com.simibubi.create.foundation.config.ui.ConfigHelper; -import com.simibubi.create.foundation.config.ui.SubMenuConfigScreen; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.networking.SimplePacketBase; -import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.content.PonderIndexScreen; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.ChatType; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.ForgeConfig; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.network.NetworkEvent; - -public class SConfigureConfigPacket extends SimplePacketBase { - - private final String option; - private final String value; - - public SConfigureConfigPacket(String option, String value) { - this.option = option; - this.value = value; - } - - public SConfigureConfigPacket(PacketBuffer buffer) { - this.option = buffer.readString(32767); - this.value = buffer.readString(32767); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeString(option); - buffer.writeString(value); - } - - @Override - public void handle(Supplier ctx) { - ctx.get() - .enqueueWork(() -> DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { - if (option.startsWith("SET")) { - trySetConfig(option.substring(3), value); - return; - } - - try { - Actions.valueOf(option) - .performAction(value); - } catch (IllegalArgumentException e) { - LogManager.getLogger() - .warn("Received ConfigureConfigPacket with invalid Option: " + option); - } - })); - - ctx.get() - .setPacketHandled(true); - } - - private static void trySetConfig(String option, String value) { - ClientPlayerEntity player = Minecraft.getInstance().player; - if (player == null) - return; - - ConfigHelper.ConfigPath configPath; - try { - configPath = ConfigHelper.ConfigPath.parse(option); - } catch (IllegalArgumentException e) { - player.sendStatusMessage(new StringTextComponent(e.getMessage()), false); - return; - } - - if (configPath.getType() != ModConfig.Type.CLIENT) { - Create.LOGGER.warn("Received type-mismatched config packet on client"); - return; - } - - try { - ConfigHelper.setConfigValue(configPath, value); - player.sendStatusMessage(new StringTextComponent("Great Success!"), false); - } catch (ConfigHelper.InvalidValueException e) { - player.sendStatusMessage(new StringTextComponent("Config could not be set the the specified value!"), false); - } catch (Exception e) { - player.sendStatusMessage(new StringTextComponent("Something went wrong while trying to set config value. Check the client logs for more information"), false); - Create.LOGGER.warn("Exception during client-side config value set:", e); - } - - } - - public enum Actions { - configScreen(() -> Actions::configScreen), - rainbowDebug(() -> Actions::rainbowDebug), - overlayScreen(() -> Actions::overlayScreen), - fixLighting(() -> Actions::experimentalLighting), - overlayReset(() -> Actions::overlayReset), - experimentalRendering(() -> Actions::experimentalRendering), - openPonder(() -> Actions::openPonder), - fabulousWarning(() -> Actions::fabulousWarning) - - ; - - private final Supplier> consumer; - - Actions(Supplier> action) { - this.consumer = action; - } - - void performAction(String value) { - consumer.get() - .accept(value); - } - - @OnlyIn(Dist.CLIENT) - private static void configScreen(String value) { - if (value.equals("")) { - ScreenOpener.open(BaseConfigScreen.forCreate(null)); - return; - } - - ClientPlayerEntity player = Minecraft.getInstance().player; - ConfigHelper.ConfigPath configPath; - try { - configPath = ConfigHelper.ConfigPath.parse(value); - } catch (IllegalArgumentException e) { - player.sendStatusMessage(new StringTextComponent(e.getMessage()), false); - return; - } - - try { - ScreenOpener.open(SubMenuConfigScreen.find(configPath)); - } catch (Exception e) { - player.sendStatusMessage(new StringTextComponent("Unable to find the specified config"), false); - } - } - - @OnlyIn(Dist.CLIENT) - private static void rainbowDebug(String value) { - ClientPlayerEntity player = Minecraft.getInstance().player; - if (player == null || "".equals(value)) - return; - - if (value.equals("info")) { - ITextComponent text = new StringTextComponent("Rainbow Debug Utility is currently: ") - .append(boolToText(AllConfigs.CLIENT.rainbowDebug.get())); - player.sendStatusMessage(text, false); - return; - } - - AllConfigs.CLIENT.rainbowDebug.set(Boolean.parseBoolean(value)); - ITextComponent text = boolToText(AllConfigs.CLIENT.rainbowDebug.get()) - .append(new StringTextComponent(" Rainbow Debug Utility").formatted(TextFormatting.WHITE)); - player.sendStatusMessage(text, false); - } - - @OnlyIn(Dist.CLIENT) - private static void experimentalRendering(String value) { - ClientPlayerEntity player = Minecraft.getInstance().player; - if (player == null || "".equals(value)) - return; - - if (value.equals("info")) { - ITextComponent text = new StringTextComponent("Experimental Rendering is currently: ") - .append(boolToText(AllConfigs.CLIENT.experimentalRendering.get())); - player.sendStatusMessage(text, false); - return; - } - - boolean parsedBoolean = Boolean.parseBoolean(value); - boolean cannotUseER = OptifineHandler.usingShaders() && parsedBoolean; - - AllConfigs.CLIENT.experimentalRendering.set(parsedBoolean); - - ITextComponent text = boolToText(AllConfigs.CLIENT.experimentalRendering.get()) - .append(new StringTextComponent(" Experimental Rendering").formatted(TextFormatting.WHITE)); - ITextComponent error = new StringTextComponent("Experimental Rendering does not support Optifine Shaders") - .formatted(TextFormatting.RED); - - player.sendStatusMessage(cannotUseER ? error : text, false); - Backend.reloadWorldRenderers(); - } - - @OnlyIn(Dist.CLIENT) - private static void overlayReset(String value) { - AllConfigs.CLIENT.overlayOffsetX.set(0); - AllConfigs.CLIENT.overlayOffsetY.set(0); - } - - @OnlyIn(Dist.CLIENT) - private static void overlayScreen(String value) { - ScreenOpener.open(new GoggleConfigScreen()); - } - - @OnlyIn(Dist.CLIENT) - private static void experimentalLighting(String value) { - ForgeConfig.CLIENT.experimentalForgeLightPipelineEnabled.set(true); - Minecraft.getInstance().worldRenderer.loadRenderers(); - } - - @OnlyIn(Dist.CLIENT) - private static void openPonder(String value) { - if (value.equals("index")) { - ScreenOpener.transitionTo(new PonderIndexScreen()); - return; - } - - ResourceLocation id = new ResourceLocation(value); - if (!PonderRegistry.all.containsKey(id)) { - Create.LOGGER.error("Could not find ponder scenes for item: " + id); - return; - } - - ScreenOpener.transitionTo(PonderUI.of(id)); - - } - - @OnlyIn(Dist.CLIENT) - private static void fabulousWarning(String value) { - AllConfigs.CLIENT.ignoreFabulousWarning.set(true); - Minecraft.getInstance().ingameGUI.addChatMessage(ChatType.CHAT, - new StringTextComponent("Disabled Fabulous graphics warning"), - Minecraft.getInstance().player.getUniqueID()); - } - - private static IFormattableTextComponent boolToText(boolean b) { - return b ? new StringTextComponent("enabled").formatted(TextFormatting.DARK_GREEN) - : new StringTextComponent("disabled").formatted(TextFormatting.RED); - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ServerLagger.java b/src/main/java/com/simibubi/create/foundation/command/ServerLagger.java deleted file mode 100644 index 5ab858221..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ServerLagger.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.foundation.command; - -public class ServerLagger { - - private int tickTime; - private boolean isLagging = false; - - public void tick() { - if (!isLagging || tickTime <= 0) - return; - - try { - Thread.sleep(tickTime); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - public void setTickTime(int tickTime) { - this.tickTime = Math.max(tickTime, 0); - } - - public void setLagging(boolean lagging) { - this.isLagging = lagging; - } - - public int getTickTime() { - return tickTime; - } - - public boolean isLagging() { - return isLagging; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java b/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java deleted file mode 100644 index f5b73ecbb..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ToggleDebugCommand.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.simibubi.create.foundation.networking.AllPackets; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraftforge.fml.network.PacketDistributor; - -public class ToggleDebugCommand extends ConfigureConfigCommand { - - public ToggleDebugCommand() { - super("rainbowDebug"); - } - - @Override - protected void sendPacket(ServerPlayerEntity player, String option) { - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> player), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.rainbowDebug.name(), option) - ); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/command/ToggleExperimentalRenderingCommand.java b/src/main/java/com/simibubi/create/foundation/command/ToggleExperimentalRenderingCommand.java deleted file mode 100644 index 19c761f74..000000000 --- a/src/main/java/com/simibubi/create/foundation/command/ToggleExperimentalRenderingCommand.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.foundation.command; - -import com.simibubi.create.foundation.networking.AllPackets; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraftforge.fml.network.PacketDistributor; - -public class ToggleExperimentalRenderingCommand extends ConfigureConfigCommand { - - public ToggleExperimentalRenderingCommand() { - super("experimentalRendering"); - } - - @Override - protected void sendPacket(ServerPlayerEntity player, String option) { - AllPackets.channel.send( - PacketDistributor.PLAYER.with(() -> player), - new SConfigureConfigPacket(SConfigureConfigPacket.Actions.experimentalRendering.name(), option) - ); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/AllConfigs.java b/src/main/java/com/simibubi/create/foundation/config/AllConfigs.java deleted file mode 100644 index 996d9242b..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/AllConfigs.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.simibubi.create.foundation.config; - -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; - -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.config.ModConfig.Type; - -public class AllConfigs { - - static Map configs = new HashMap<>(); - - public static CClient CLIENT; - public static CCommon COMMON; - public static CServer SERVER; - - private static T register(Supplier factory, ModConfig.Type side) { - Pair specPair = new ForgeConfigSpec.Builder().configure(builder -> { - T config = factory.get(); - config.registerAll(builder); - return config; - }); - - T config = specPair.getLeft(); - config.specification = specPair.getRight(); - configs.put(config, side); - return config; - } - - public static void register() { - CLIENT = register(CClient::new, ModConfig.Type.CLIENT); - COMMON = register(CCommon::new, ModConfig.Type.COMMON); - SERVER = register(CServer::new, ModConfig.Type.SERVER); - - for (Entry pair : configs.entrySet()) - ModLoadingContext.get() - .registerConfig(pair.getValue(), pair.getKey().specification); - } - - public static void onLoad(ModConfig.Loading event) { - for (Entry pair : configs.entrySet()) - if (pair.getKey().specification == event.getConfig() - .getSpec()) - pair.getKey() - .onLoad(); - } - - public static void onReload(ModConfig.Reloading event) { - for (Entry pair : configs.entrySet()) - if (pair.getKey().specification == event.getConfig() - .getSpec()) - pair.getKey() - .onReload(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CClient.java b/src/main/java/com/simibubi/create/foundation/config/CClient.java deleted file mode 100644 index ebe8f1e31..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CClient.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CClient extends ConfigBase { - - public ConfigGroup client = group(0, "client", - "Client-only settings - If you're looking for general settings, look inside your worlds serverconfig folder!"); - public ConfigBool tooltips = b(true, "enableTooltips", "Show item descriptions on Shift and controls on Ctrl."); - public ConfigBool enableOverstressedTooltip = - b(true, "enableOverstressedTooltip", "Display a tooltip when looking at overstressed components."); - public ConfigBool explainRenderErrors = - b(false, "explainRenderErrors", "Log a stack-trace when rendering issues happen within a moving contraption."); - public ConfigFloat fanParticleDensity = f(.5f, 0, 1, "fanParticleDensity"); - public ConfigBool rainbowDebug = - b(true, "enableRainbowDebug", "Show colourful debug information while the F3-Menu is open."); - public ConfigBool experimentalRendering = - b(true, "experimentalRendering", "Use modern OpenGL features to drastically increase performance."); - public ConfigInt overlayOffsetX = i(20, Integer.MIN_VALUE, Integer.MAX_VALUE, "overlayOffsetX", - "Offset the overlay from goggle- and hover- information by this many pixels on the X axis; Use /create overlay"); - public ConfigInt overlayOffsetY = i(0, Integer.MIN_VALUE, Integer.MAX_VALUE, "overlayOffsetY", - "Offset the overlay from goggle- and hover- information by this many pixels on the Y axis; Use /create overlay"); - - public ConfigInt mainMenuConfigButtonRow = i(2, 0, 4, "mainMenuConfigButtonRow", - "Choose the menu row that the Create config button appears on in the main menu", - "Set to 0 to disable the button altogether"); - public ConfigInt mainMenuConfigButtonOffsetX = i(-4, Integer.MIN_VALUE, Integer.MAX_VALUE, "mainMenuConfigButtonOffsetX", - "Offset the Create config button in the main menu by this many pixels on the X axis", - "The sign (+/-) of this value determines what side of the row the button appears on (right/left)"); - - public ConfigInt ingameMenuConfigButtonRow = i(3, 0, 5, "ingameMenuConfigButtonRow", - "Choose the menu row that the Create config button appears on in the in-game menu", - "Set to 0 to disable the button altogether"); - public ConfigInt ingameMenuConfigButtonOffsetX = i(-4, Integer.MIN_VALUE, Integer.MAX_VALUE, "ingameMenuConfigButtonOffsetX", - "Offset the Create config button in the in-game menu by this many pixels on the X axis", - "The sign (+/-) of this value determines what side of the row the button appears on (right/left)"); - - public ConfigBool ignoreFabulousWarning = b(false, "ignoreFabulousWarning", - "Setting this to true will prevent Create from sending you a warning when playing with Fabulous graphics enabled"); - - public ConfigGroup placementAssist = group(1, "placementAssist", "Settings for the Placement Assist"); - public ConfigEnum placementIndicator = e(PlacementIndicatorSetting.TEXTURE, - "indicatorType", - "What indicator should be used when showing where the assisted placement ends up relative to your crosshair", - "Choose 'NONE' to disable the Indicator altogether"); - public ConfigFloat indicatorScale = - f(1.0f, 0f, "indicatorScale", "Change the size of the Indicator by this multiplier"); - - public ConfigGroup ponder = group(1, "ponder", "Ponder settings"); - public ConfigBool comfyReading = - b(false, "comfyReading", "Slow down a ponder scene whenever there is text on screen."); - - @Override - public String getName() { - return "client"; - } - - public enum PlacementIndicatorSetting { - TEXTURE, TRIANGLE, NONE - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CCommon.java b/src/main/java/com/simibubi/create/foundation/config/CCommon.java deleted file mode 100644 index beeb7f897..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CCommon.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CCommon extends ConfigBase { - - public CWorldGen worldGen = nested(0, CWorldGen::new, Comments.worldGen); - - @Override - public String getName() { - return "common"; - } - - private static class Comments { - static String worldGen = "Modify Create's impact on your terrain"; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java b/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java deleted file mode 100644 index 2ca4dafa1..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CCuriosities extends ConfigBase { - - public ConfigInt maxSymmetryWandRange = i(50, 10, "maxSymmetryWandRange", Comments.symmetryRange); - public ConfigInt placementAssistRange = i(12, 3, "placementAssistRange", Comments.placementRange); - public ConfigInt maxAirInBacktank = i(900, 1, "maxAirInBacktank", Comments.maxAirInBacktank); -// public ConfigInt zapperUndoLogLength = i(10, 0, "zapperUndoLogLength", Comments.zapperUndoLogLength); NYI - - @Override - public String getName() { - return "curiosities"; - } - - private static class Comments { - static String symmetryRange = "The Maximum Distance to an active mirror for the symmetry wand to trigger."; - static String maxAirInBacktank = - "The Maximum volume of Air that can be stored in a backtank = Seconds of underwater breathing"; - static String placementRange = - "The Maximum Distance a Block placed by Create's placement assist will have to its interaction point."; -// static String zapperUndoLogLength = "The maximum amount of operations, a blockzapper can remember for undoing. (0 to disable undo)"; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CFluids.java b/src/main/java/com/simibubi/create/foundation/config/CFluids.java deleted file mode 100644 index ad8684da1..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CFluids.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CFluids extends ConfigBase { - - public ConfigInt fluidTankCapacity = i(8, 1, "fluidTankCapacity", Comments.buckets, Comments.fluidTankCapacity); - public ConfigInt fluidTankMaxHeight = i(32, 1, "fluidTankMaxHeight", Comments.blocks, Comments.fluidTankMaxHeight); - public ConfigInt mechanicalPumpRange = - i(16, 1, "mechanicalPumpRange", Comments.blocks, Comments.mechanicalPumpRange); - - public ConfigInt hosePulleyBlockThreshold = i(10000, -1, "hosePulleyBlockThreshold", Comments.blocks, - Comments.toDisable, Comments.hosePulleyBlockThreshold); - public ConfigInt hosePulleyRange = i(128, 1, "hosePulleyRange", Comments.blocks, Comments.hosePulleyRange); - - @Override - public String getName() { - return "fluids"; - } - - private static class Comments { - static String blocks = "[in Blocks]"; - static String buckets = "[in Buckets]"; - static String fluidTankCapacity = "The amount of liquid a tank can hold per block."; - static String fluidTankMaxHeight = "The maximum height a fluid tank can reach."; - static String mechanicalPumpRange = - "The maximum distance a mechanical pump can push or pull liquids on either side."; - - static String hosePulleyRange = "The maximum distance a hose pulley can draw fluid blocks from."; - static String toDisable = "[-1 to disable this behaviour]"; - static String hosePulleyBlockThreshold = - "The minimum amount of fluid blocks the hose pulley needs to find before deeming it an infinite source."; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CKinetics.java b/src/main/java/com/simibubi/create/foundation/config/CKinetics.java deleted file mode 100644 index ec9218eb1..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CKinetics.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CKinetics extends ConfigBase { - - public ConfigBool disableStress = b(false, "disableStress", Comments.disableStress); - public ConfigInt maxBeltLength = i(20, 5, "maxBeltLength", Comments.maxBeltLength); - public ConfigInt crushingDamage = i(4, 0, "crushingDamage", Comments.crushingDamage); - public ConfigInt maxMotorSpeed = i(256, 64, "maxMotorSpeed", Comments.rpm, Comments.maxMotorSpeed); - public ConfigInt waterWheelBaseSpeed = i(4, 1, "waterWheelBaseSpeed", Comments.rpm, Comments.waterWheelBaseSpeed); - public ConfigInt waterWheelFlowSpeed = i(4, 1, "waterWheelFlowSpeed", Comments.rpm, Comments.waterWheelFlowSpeed); - public ConfigInt furnaceEngineSpeed = i(16, 1, "furnaceEngineSpeed", Comments.rpm, Comments.furnaceEngineSpeed); - public ConfigInt maxRotationSpeed = i(256, 64, "maxRotationSpeed", Comments.rpm, Comments.maxRotationSpeed); - public ConfigEnum ignoreDeployerAttacks = - e(DeployerAggroSetting.CREEPERS, "ignoreDeployerAttacks", Comments.ignoreDeployerAttacks); - public ConfigInt kineticValidationFrequency = - i(60, 5, "kineticValidationFrequency", Comments.kineticValidationFrequency); - public ConfigFloat crankHungerMultiplier = f(.01f, 0, 1, "crankHungerMultiplier", Comments.crankHungerMultiplier); - public ConfigInt minimumWindmillSails = i(8, 0, "minimumWindmillSails", Comments.minimumWindmillSails); - public ConfigInt maxEjectorDistance = i(32, 0, "maxEjectorDistance", Comments.maxEjectorDistance); - public ConfigInt ejectorScanInterval = i(120, 10, "ejectorScanInterval", Comments.ejectorScanInterval); - - public ConfigGroup fan = group(1, "encasedFan", "Encased Fan"); - public ConfigInt fanPushDistance = i(20, 5, "fanPushDistance", Comments.fanPushDistance); - public ConfigInt fanPullDistance = i(20, 5, "fanPullDistance", Comments.fanPullDistance); - public ConfigInt fanBlockCheckRate = i(30, 10, "fanBlockCheckRate", Comments.fanBlockCheckRate); - public ConfigInt fanRotationArgmax = i(256, 64, "fanRotationArgmax", Comments.rpm, Comments.fanRotationArgmax); - public ConfigInt generatingFanSpeed = i(4, 0, "generatingFanSpeed", Comments.rpm, Comments.generatingFanSpeed); - public ConfigInt inWorldProcessingTime = i(150, 0, "inWorldProcessingTime", Comments.inWorldProcessingTime); - - public ConfigGroup contraptions = group(1, "contraptions", "Moving Contraptions"); - public ConfigInt maxBlocksMoved = i(2048, 1, "maxBlocksMoved", Comments.maxBlocksMoved); - public ConfigInt maxChassisRange = i(16, 1, "maxChassisRange", Comments.maxChassisRange); - public ConfigInt maxPistonPoles = i(64, 1, "maxPistonPoles", Comments.maxPistonPoles); - public ConfigInt maxRopeLength = i(128, 1, "maxRopeLength", Comments.maxRopeLength); - public ConfigInt maxCartCouplingLength = i(32, 1, "maxCartCouplingLength", Comments.maxCartCouplingLength); - - public CStress stressValues = nested(1, CStress::new, Comments.stress); - - public ConfigGroup state = group(1, "stats", Comments.stats); - public ConfigFloat mediumSpeed = f(30, 0, 4096, "mediumSpeed", Comments.rpm, Comments.mediumSpeed); - public ConfigFloat fastSpeed = f(100, 0, 65535, "fastSpeed", Comments.rpm, Comments.fastSpeed); - public ConfigFloat mediumStressImpact = - f(4, 0, 4096, "mediumStressImpact", Comments.su, Comments.mediumStressImpact); - public ConfigFloat highStressImpact = f(8, 0, 65535, "highStressImpact", Comments.su, Comments.highStressImpact); - public ConfigFloat mediumCapacity = f(128, 0, 4096, "mediumCapacity", Comments.su, Comments.mediumCapacity); - public ConfigFloat highCapacity = f(512, 0, 65535, "highCapacity", Comments.su, Comments.highCapacity); - - @Override - public String getName() { - return "kinetics"; - } - - private static class Comments { - static String maxBeltLength = "Maximum length in blocks of mechanical belts."; - static String crushingDamage = "Damage dealt by active Crushing Wheels."; - static String maxMotorSpeed = "Maximum allowed speed of a configurable motor."; - static String maxRotationSpeed = "Maximum allowed rotation speed for any Kinetic Tile."; - static String fanPushDistance = "Maximum distance in blocks Fans can push entities."; - static String fanPullDistance = "Maximum distance in blocks from where Fans can pull entities."; - static String fanBlockCheckRate = "Game ticks between Fans checking for anything blocking their air flow."; - static String fanRotationArgmax = "Rotation speed at which the maximum stats of fans are reached."; - static String generatingFanSpeed = "Rotation speed generated by a vertical fan above fire."; - static String inWorldProcessingTime = "Game ticks required for a Fan-based processing recipe to take effect."; - static String crankHungerMultiplier = - "multiplier used for calculating exhaustion from speed when a crank is turned."; - static String maxBlocksMoved = - "Maximum amount of blocks in a structure movable by Pistons, Bearings or other means."; - static String maxChassisRange = "Maximum value of a chassis attachment range."; - static String maxPistonPoles = "Maximum amount of extension poles behind a Mechanical Piston."; - static String maxRopeLength = "Max length of rope available off a Rope Pulley."; - static String maxCartCouplingLength = "Maximum allowed distance of two coupled minecarts."; - static String stats = "Configure speed/capacity levels for requirements and indicators."; - static String rpm = "[in Revolutions per Minute]"; - static String su = "[in Stress Units]"; - static String mediumSpeed = "Minimum speed of rotation to be considered 'medium'"; - static String fastSpeed = "Minimum speed of rotation to be considered 'fast'"; - static String mediumStressImpact = "Minimum stress impact to be considered 'medium'"; - static String highStressImpact = "Minimum stress impact to be considered 'high'"; - static String mediumCapacity = "Minimum added Capacity by sources to be considered 'medium'"; - static String highCapacity = "Minimum added Capacity by sources to be considered 'high'"; - static String stress = "Fine tune the kinetic stats of individual components"; - static String ignoreDeployerAttacks = "Select what mobs should ignore Deployers when attacked by them."; - static String waterWheelBaseSpeed = "Added rotation speed by a water wheel when at least one flow is present."; - static String waterWheelFlowSpeed = - "Rotation speed gained by a water wheel for each side with running fluids. (halved if not against blades)"; - static String furnaceEngineSpeed = "Base rotation speed for the furnace engine generator"; - static String disableStress = "Disable the Stress mechanic altogether."; - static String kineticValidationFrequency = - "Game ticks between Kinetic Blocks checking whether their source is still valid."; - static String minimumWindmillSails = - "Amount of sail-type blocks required for a windmill to assemble successfully."; - static String maxEjectorDistance = "Max Distance in blocks a Weighted Ejector can throw"; - static String ejectorScanInterval = - "Time in ticks until the next item launched by an ejector scans blocks for potential collisions"; - } - - public static enum DeployerAggroSetting { - ALL, CREEPERS, NONE - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CLogistics.java b/src/main/java/com/simibubi/create/foundation/config/CLogistics.java deleted file mode 100644 index 33e4333cb..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CLogistics.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CLogistics extends ConfigBase { - - public ConfigInt defaultExtractionLimit = i(64, 1, 64, "defaultExtractionLimit", Comments.defaultExtractionLimit); - public ConfigInt defaultExtractionTimer = i(8, 1, "defaultExtractionTimer", Comments.defaultExtractionTimer); - public ConfigInt psiTimeout = i(20, 1, "psiTimeout", Comments.psiTimeout); - public ConfigInt mechanicalArmRange = i(5, 1, "mechanicalArmRange", Comments.mechanicalArmRange); - public ConfigInt linkRange = i(128, 1, "linkRange", Comments.linkRange); - - @Override - public String getName() { - return "logistics"; - } - - private static class Comments { - static String defaultExtractionLimit = - "The maximum amount of items a funnel pulls at a time without an applied filter."; - static String defaultExtractionTimer = - "The amount of ticks a funnel waits between item transferrals, when it is not re-activated by redstone."; - static String linkRange = "Maximum possible range in blocks of redstone link connections."; - static String psiTimeout = - "The amount of ticks a portable storage interface waits for transfers until letting contraptions move along."; - static String mechanicalArmRange = "Maximum distance in blocks a Mechanical Arm can reach across."; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CRecipes.java b/src/main/java/com/simibubi/create/foundation/config/CRecipes.java deleted file mode 100644 index eec2389e7..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CRecipes.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CRecipes extends ConfigBase { - - public ConfigBool bulkPressing = b(false, "bulkPressing", Comments.bulkPressing); - public ConfigBool allowShapelessInMixer = b(true, "allowShapelessInMixer", Comments.allowShapelessInMixer); - public ConfigBool allowShapedSquareInPress = b(true, "allowShapedSquareInPress", Comments.allowShapedSquareInPress); - public ConfigBool allowRegularCraftingInCrafter = - b(true, "allowRegularCraftingInCrafter", Comments.allowRegularCraftingInCrafter); - public ConfigBool allowStonecuttingOnSaw = b(true, "allowStonecuttingOnSaw", Comments.allowStonecuttingOnSaw); - public ConfigBool allowWoodcuttingOnSaw = b(true, "allowWoodcuttingOnSaw", Comments.allowWoodcuttingOnSaw); - public ConfigInt lightSourceCountForRefinedRadiance = - i(10, 1, "lightSourceCountForRefinedRadiance", Comments.refinedRadiance); - public ConfigBool enableRefinedRadianceRecipe = - b(true, "enableRefinedRadianceRecipe", Comments.refinedRadianceRecipe); - public ConfigBool enableShadowSteelRecipe = b(true, "enableShadowSteelRecipe", Comments.shadowSteelRecipe); - - @Override - public String getName() { - return "recipes"; - } - - private static class Comments { - static String bulkPressing = "When true, allows the Mechanical Press to process entire stacks at a time."; - static String allowShapelessInMixer = - "When true, allows any shapeless crafting recipes to be processed by a Mechanical Mixer + Basin."; - static String allowShapedSquareInPress = - "When true, allows any single-ingredient 2x2 or 3x3 crafting recipes to be processed by a Mechanical Press + Basin."; - static String allowRegularCraftingInCrafter = - "When true, allows any standard crafting recipes to be processed by Mechanical Crafters."; - static String allowStonecuttingOnSaw = - "When true, allows any stonecutting recipes to be processed by a Mechanical Saw."; - static String allowWoodcuttingOnSaw = - "When true, allows any Druidcraft woodcutter recipes to be processed by a Mechanical Saw."; - static String refinedRadiance = - "The amount of Light sources destroyed before Chromatic Compound turns into Refined Radiance."; - static String refinedRadianceRecipe = "Allow the standard in-world Refined Radiance recipes."; - static String shadowSteelRecipe = "Allow the standard in-world Shadow Steel recipe."; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CSchematics.java b/src/main/java/com/simibubi/create/foundation/config/CSchematics.java deleted file mode 100644 index 21a38ef34..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CSchematics.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CSchematics extends ConfigBase { - - public ConfigInt maxSchematics = i(10, 1, "maxSchematics", Comments.maxSchematics); - public ConfigInt maxTotalSchematicSize = i(256, 16, "maxSchematics", Comments.kb, Comments.maxSize); - public ConfigInt maxSchematicPacketSize = - i(1024, 256, 32767, "maxSchematicPacketSize", Comments.b, Comments.maxPacketSize); - public ConfigInt schematicIdleTimeout = i(600, 100, "schematicIdleTimeout", Comments.idleTimeout); - - public ConfigGroup schematicannon = group(0, "schematicannon", "Schematicannon"); - public ConfigInt schematicannonDelay = i(10, 1, "schematicannonDelay", Comments.delay); - public ConfigInt schematicannonSkips = i(10, 1, "schematicannonSkips", Comments.skips); - public ConfigFloat schematicannonGunpowderWorth = - f(20, 0, 100, "schematicannonGunpowderWorth", Comments.gunpowderWorth); - public ConfigFloat schematicannonFuelUsage = f(0.05f, 0, 100, "schematicannonFuelUsage", Comments.fuelUsage); - - @Override - public String getName() { - return "schematics"; - } - - private static class Comments { - static String kb = "[in KiloBytes]"; - static String b = "[in Bytes]"; - static String maxSchematics = - "The amount of Schematics a player can upload until previous ones are overwritten."; - static String maxSize = "The maximum allowed file size of uploaded Schematics."; - static String maxPacketSize = "The maximum packet size uploaded Schematics are split into."; - static String idleTimeout = - "Amount of game ticks without new packets arriving until an active schematic upload process is discarded."; - static String delay = "Amount of game ticks between shots of the cannon. Higher => Slower"; - static String skips = "Amount of block positions per tick scanned by a running cannon. Higher => Faster"; - static String gunpowderWorth = "% of Schematicannon's Fuel filled by 1 Gunpowder."; - static String fuelUsage = "% of Schematicannon's Fuel used for each fired block."; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CServer.java b/src/main/java/com/simibubi/create/foundation/config/CServer.java deleted file mode 100644 index e5cf81cfd..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CServer.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.foundation.config; - -public class CServer extends ConfigBase { - - public ConfigGroup infrastructure = group(0, "infrastructure", Comments.infrastructure); - public ConfigInt tickrateSyncTimer = - i(20, 5, "tickrateSyncTimer", "[in Ticks]", Comments.tickrateSyncTimer, Comments.tickrateSyncTimer2); - - public CRecipes recipes = nested(0, CRecipes::new, Comments.recipes); - public CKinetics kinetics = nested(0, CKinetics::new, Comments.kinetics); - public CFluids fluids = nested(0, CFluids::new, Comments.fluids); - public CLogistics logistics = nested(0, CLogistics::new, Comments.logistics); - public CSchematics schematics = nested(0, CSchematics::new, Comments.schematics); - public CCuriosities curiosities = nested(0, CCuriosities::new, Comments.curiosities); - - @Override - public String getName() { - return "server"; - } - - private static class Comments { - static String recipes = "Packmakers' control panel for internal recipe compat"; - static String schematics = "Everything related to Schematic tools"; - static String kinetics = "Parameters and abilities of Create's kinetic mechanisms"; - static String fluids = "Create's liquid manipulation tools"; - static String logistics = "Tweaks for logistical components"; - static String curiosities = "Gadgets and other Shenanigans added by Create"; - static String infrastructure = "The Backbone of Create"; - static String tickrateSyncTimer = - "The amount of time a server waits before sending out tickrate synchronization packets."; - static String tickrateSyncTimer2 = "These packets help animations to be more accurate when tps is below 20."; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CStress.java b/src/main/java/com/simibubi/create/foundation/config/CStress.java deleted file mode 100644 index 8f1450fa9..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CStress.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.foundation.config; - -import java.util.HashMap; -import java.util.Map; - -import net.minecraft.block.Block; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.ForgeConfigSpec.Builder; -import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; - -public class CStress extends ConfigBase { - - private Map> capacities = new HashMap<>(); - private Map> impacts = new HashMap<>(); - - @Override - protected void registerAll(Builder builder) { - builder.comment("", Comments.su, Comments.impact) - .push("impact"); - StressConfigDefaults.registeredDefaultImpacts - .forEach((r, i) -> getImpacts().put(r, builder.define(r.getPath(), i))); - builder.pop(); - - builder.comment("", Comments.su, Comments.capacity) - .push("capacity"); - StressConfigDefaults.registeredDefaultCapacities - .forEach((r, i) -> getCapacities().put(r, builder.define(r.getPath(), i))); - builder.pop(); - } - - public double getImpactOf(Block block) { - ResourceLocation key = block.getRegistryName(); - return getImpacts().containsKey(key) ? getImpacts().get(key) - .get() : 0; - } - - public double getCapacityOf(Block block) { - ResourceLocation key = block.getRegistryName(); - return getCapacities().containsKey(key) ? getCapacities().get(key) - .get() : 0; - } - - @Override - public String getName() { - return "stressValues.v" + StressConfigDefaults.forcedUpdateVersion; - } - - public Map> getImpacts() { - return impacts; - } - - public Map> getCapacities() { - return capacities; - } - - private static class Comments { - static String su = "[in Stress Units]"; - static String impact = - "Configure the individual stress impact of mechanical blocks. Note that this cost is doubled for every speed increase it receives."; - static String capacity = "Configure how much stress a source can accommodate for."; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/CWorldGen.java b/src/main/java/com/simibubi/create/foundation/config/CWorldGen.java deleted file mode 100644 index f90afb0a0..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/CWorldGen.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.foundation.config; - -import com.simibubi.create.foundation.worldgen.AllWorldFeatures; - -import net.minecraftforge.common.ForgeConfigSpec.Builder; - -public class CWorldGen extends ConfigBase { - - public ConfigBool disable = b(false, "disableWorldGen", Comments.disable); - - @Override - protected void registerAll(Builder builder) { - super.registerAll(builder); - AllWorldFeatures.fillConfig(builder); - } - - @Override - public String getName() { - return "worldgen.v" + AllWorldFeatures.forcedUpdateVersion; - } - - private static class Comments { - static String disable = "Prevents all worldgen added by Create from taking effect"; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java b/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java deleted file mode 100644 index 0dadcfc41..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ConfigBase.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.simibubi.create.foundation.config; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Function; -import java.util.function.Supplier; - -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.common.ForgeConfigSpec.BooleanValue; -import net.minecraftforge.common.ForgeConfigSpec.Builder; -import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; -import net.minecraftforge.common.ForgeConfigSpec.DoubleValue; -import net.minecraftforge.common.ForgeConfigSpec.EnumValue; -import net.minecraftforge.common.ForgeConfigSpec.IntValue; - -public abstract class ConfigBase { - - public ForgeConfigSpec specification; - - protected int depth; - protected List> allValues; - protected List children; - - protected void registerAll(final ForgeConfigSpec.Builder builder) { - for (CValue cValue : allValues) - cValue.register(builder); - } - - public void onLoad() { - if (children != null) - children.forEach(ConfigBase::onLoad); - } - - public void onReload() { - if (children != null) - children.forEach(ConfigBase::onReload); - } - - public abstract String getName(); - - @FunctionalInterface - protected static interface IValueProvider> - extends Function { - } - - protected ConfigBool b(boolean current, String name, String... comment) { - return new ConfigBool(name, current, comment); - } - - protected ConfigFloat f(float current, float min, float max, String name, String... comment) { - return new ConfigFloat(name, current, min, max, comment); - } - - protected ConfigFloat f(float current, float min, String name, String... comment) { - return f(current, min, Float.MAX_VALUE, name, comment); - } - - protected ConfigInt i(int current, int min, int max, String name, String... comment) { - return new ConfigInt(name, current, min, max, comment); - } - - protected ConfigInt i(int current, int min, String name, String... comment) { - return i(current, min, Integer.MAX_VALUE, name, comment); - } - - protected > ConfigEnum e(T defaultValue, String name, String... comment) { - return new ConfigEnum<>(name, defaultValue, comment); - } - - protected ConfigGroup group(int depth, String name, String... comment) { - return new ConfigGroup(name, depth, comment); - } - - protected T nested(int depth, Supplier constructor, String... comment) { - T config = constructor.get(); - new ConfigGroup(config.getName(), depth, comment); - new CValue(config.getName(), builder -> { - config.depth = depth; - config.registerAll(builder); - if (config.depth > depth) - builder.pop(config.depth - depth); - return null; - }); - if (children == null) - children = new ArrayList<>(); - children.add(config); - return config; - } - - public class CValue> { - protected ConfigValue value; - protected String name; - private IValueProvider provider; - - public CValue(String name, IValueProvider provider, String... comment) { - this.name = name; - this.provider = builder -> { - addComments(builder, comment); - return provider.apply(builder); - }; - if (allValues == null) - allValues = new ArrayList<>(); - allValues.add(this); - } - - public void addComments(Builder builder, String... comment) { - if (comment.length > 0) { - String[] comments = new String[comment.length + 1]; - comments[0] = ""; - System.arraycopy(comment, 0, comments, 1, comment.length); - builder.comment(comments); - } else - builder.comment(""); - } - - public void register(ForgeConfigSpec.Builder builder) { - value = provider.apply(builder); - } - - public V get() { - return value.get(); - } - - public void set(V value) { - this.value.set(value); - } - - public String getName() { - return name; - } - } - - /** - * Marker for config subgroups - */ - public class ConfigGroup extends CValue { - - private int groupDepth; - private String[] comment; - - public ConfigGroup(String name, int depth, String... comment) { - super(name, builder -> null, comment); - groupDepth = depth; - this.comment = comment; - } - - @Override - public void register(Builder builder) { - if (depth > groupDepth) - builder.pop(depth - groupDepth); - depth = groupDepth; - addComments(builder, comment); - builder.push(getName()); - depth++; - } - - } - - public class ConfigBool extends CValue { - - public ConfigBool(String name, boolean def, String... comment) { - super(name, builder -> builder.define(name, def), comment); - } - } - - public class ConfigEnum> extends CValue> { - - public ConfigEnum(String name, T defaultValue, String[] comment) { - super(name, builder -> builder.defineEnum(name, defaultValue), comment); - } - - } - - public class ConfigFloat extends CValue { - - public ConfigFloat(String name, float current, float min, float max, String... comment) { - super(name, builder -> builder.defineInRange(name, current, min, max), comment); - } - - public float getF() { - return get().floatValue(); - } - } - - public class ConfigInt extends CValue { - - public ConfigInt(String name, int current, int min, int max, String... comment) { - super(name, builder -> builder.defineInRange(name, current, min, max), comment); - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/StressConfigDefaults.java b/src/main/java/com/simibubi/create/foundation/config/StressConfigDefaults.java deleted file mode 100644 index 682fc14cc..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/StressConfigDefaults.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.foundation.config; - -import java.util.HashMap; -import java.util.Map; - -import com.simibubi.create.Create; -import com.tterrag.registrate.builders.BlockBuilder; -import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; - -import net.minecraft.block.Block; -import net.minecraft.util.ResourceLocation; - -public class StressConfigDefaults { - - /** - * Increment this number if all stress entries should be forced to update in the next release. - * Worlds from the previous version will overwrite potentially changed values - * with the new defaults. - */ - public static final int forcedUpdateVersion = 1; - - static Map registeredDefaultImpacts = new HashMap<>(); - static Map registeredDefaultCapacities = new HashMap<>(); - - public static NonNullUnaryOperator> setNoImpact() { - return setImpact(0); - } - - public static NonNullUnaryOperator> setImpact(double impact) { - return b -> { - registeredDefaultImpacts.put(Create.asResource(b.getName()), impact); - return b; - }; - } - - public static NonNullUnaryOperator> setCapacity(double capacity) { - return b -> { - registeredDefaultCapacities.put(Create.asResource(b.getName()), capacity); - return b; - }; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java deleted file mode 100644 index 01119459e..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/BaseConfigScreen.java +++ /dev/null @@ -1,182 +0,0 @@ -package com.simibubi.create.foundation.config.ui; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.simibubi.create.Create; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.DelegatedStencilElement; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.gui.TextStencilElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.gui.widgets.BoxWidget; -import com.simibubi.create.foundation.item.TooltipHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.config.ModConfig; - -public class BaseConfigScreen extends ConfigScreen { - - private static final DelegatedStencilElement.ElementRenderer DISABLED_RENDERER = (ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.i(Theme.Key.BUTTON_DISABLE, true), Theme.i(Theme.Key.BUTTON_DISABLE, false) | 0x40_000000); - - public static BaseConfigScreen forCreate(Screen parent) { - return new BaseConfigScreen(parent) - .withTitles("Client Settings", "World Generation Settings", "Gameplay Settings") - .withSpecs(AllConfigs.CLIENT.specification, AllConfigs.COMMON.specification, AllConfigs.SERVER.specification); - } - - BoxWidget clientConfigWidget; - BoxWidget commonConfigWidget; - BoxWidget serverConfigWidget; - BoxWidget goBack; - - ForgeConfigSpec clientSpec; - ForgeConfigSpec commonSpec; - ForgeConfigSpec serverSpec; - String clientTile = "CLIENT CONFIG"; - String commonTile = "COMMON CONFIG"; - String serverTile = "SERVER CONFIG"; - String modID = Create.ID; - protected boolean returnOnClose; - - /** - * If you are a Create Addon dev and want to make use of the same GUI - * for your mod's config, use this Constructor to create a entry point - * - * @param parent the previously opened screen - * @param modID the modID of your addon/mod - */ - public BaseConfigScreen(Screen parent, @Nonnull String modID) { - this(parent); - this.modID = modID; - } - - private BaseConfigScreen(Screen parent) { - super(parent); - } - - /** - * If you have static references to your Configs or ConfigSpecs (like Create does in {@link AllConfigs}), - * please use {@link #withSpecs(ForgeConfigSpec, ForgeConfigSpec, ForgeConfigSpec)} instead - */ - public BaseConfigScreen searchForSpecsInModContainer() { - try { - clientSpec = ConfigHelper.findConfigSpecFor(ModConfig.Type.CLIENT, this.modID); - } catch (Exception e) { - Create.LOGGER.warn("Unable to find ClientConfigSpec for mod: " + this.modID); - } - - try { - commonSpec = ConfigHelper.findConfigSpecFor(ModConfig.Type.COMMON, this.modID); - } catch (Exception e) { - Create.LOGGER.warn("Unable to find CommonConfigSpec for mod: " + this.modID, e); - } - - try { - serverSpec = ConfigHelper.findConfigSpecFor(ModConfig.Type.SERVER, this.modID); - } catch (Exception e) { - Create.LOGGER.warn("Unable to find ServerConfigSpec for mod: " + this.modID, e); - } - - return this; - } - - public BaseConfigScreen withSpecs(@Nullable ForgeConfigSpec client, @Nullable ForgeConfigSpec common, @Nullable ForgeConfigSpec server) { - clientSpec = client; - commonSpec = common; - serverSpec = server; - return this; - } - - public BaseConfigScreen withTitles(@Nullable String client, @Nullable String common, @Nullable String server) { - if (client != null) - clientTile = client; - - if (common != null) - commonTile = common; - - if (server != null) - serverTile = server; - - return this; - } - - @Override - protected void init() { - widgets.clear(); - super.init(); - returnOnClose = true; - - TextStencilElement clientText = new TextStencilElement(client.fontRenderer, new StringTextComponent(clientTile)).centered(true, true); - widgets.add(clientConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15 - 30, 200, 16).showingElement(clientText)); - - if (clientSpec != null) { - clientConfigWidget.withCallback(() -> linkTo(new SubMenuConfigScreen(this, ModConfig.Type.CLIENT, clientSpec))); - clientText.withElementRenderer(BoxWidget.gradientFactory.apply(clientConfigWidget)); - } else { - clientConfigWidget.active = false; - clientConfigWidget.updateColorsFromState(); - clientText.withElementRenderer(DISABLED_RENDERER); - } - - TextStencilElement commonText = new TextStencilElement(client.fontRenderer, new StringTextComponent(commonTile)).centered(true, true); - widgets.add(commonConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15, 200, 16).showingElement(commonText)); - - if (commonSpec != null) { - commonConfigWidget.withCallback(() -> linkTo(new SubMenuConfigScreen(this, ModConfig.Type.COMMON, commonSpec))); - commonText.withElementRenderer(BoxWidget.gradientFactory.apply(commonConfigWidget)); - } else { - commonConfigWidget.active = false; - commonConfigWidget.updateColorsFromState(); - commonText.withElementRenderer(DISABLED_RENDERER); - } - - TextStencilElement serverText = new TextStencilElement(client.fontRenderer, new StringTextComponent(serverTile)).centered(true, true); - widgets.add(serverConfigWidget = new BoxWidget(width / 2 - 100, height / 2 - 15 + 30, 200, 16).showingElement(serverText)); - - if (serverSpec != null && Minecraft.getInstance().world != null) { - serverConfigWidget.withCallback(() -> linkTo(new SubMenuConfigScreen(this, ModConfig.Type.SERVER, serverSpec))); - serverText.withElementRenderer(BoxWidget.gradientFactory.apply(serverConfigWidget)); - } else { - serverConfigWidget.active = false; - serverConfigWidget.updateColorsFromState(); - serverText.withElementRenderer(DISABLED_RENDERER); - serverConfigWidget.active = true; - serverConfigWidget.getToolTip() - .add(new StringTextComponent("Stored individually per World")); - serverConfigWidget.getToolTip() - .addAll(TooltipHelper.cutTextComponent( - new StringTextComponent( - "Gameplay settings can only be accessed from the in-game menu after joining a World or Server."), - TextFormatting.GRAY, TextFormatting.GRAY)); - } - - ConfigScreen.modID = this.modID; - - goBack = new BoxWidget(width / 2 - 134, height / 2, 20, 20).withPadding(2, 2) - .withCallback(this::onClose); - goBack.showingElement(AllIcons.I_CONFIG_BACK.asStencil() - .withElementRenderer(BoxWidget.gradientFactory.apply(goBack))); - goBack.getToolTip() - .add(new StringTextComponent("Go Back")); - widgets.add(goBack); - } - - private void linkTo(Screen screen) { - returnOnClose = false; - ScreenOpener.open(screen); - } - - @Override - public void onClose() { - super.onClose(); - ScreenOpener.open(parent); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/CConfigureConfigPacket.java b/src/main/java/com/simibubi/create/foundation/config/ui/CConfigureConfigPacket.java deleted file mode 100644 index b472b0a70..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/CConfigureConfigPacket.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.simibubi.create.foundation.config.ui; - -import java.util.Objects; -import java.util.function.Supplier; - -import com.simibubi.create.Create; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.config.ModConfig; -import net.minecraftforge.fml.network.NetworkEvent; - -public class CConfigureConfigPacket extends SimplePacketBase { - - private String modID; - private String path; - private String value; - - public CConfigureConfigPacket(String modID, String path, T value) { - this.modID = Objects.requireNonNull(modID); - this.path = path; - this.value = serialize(value); - } - - public CConfigureConfigPacket(PacketBuffer buffer) { - this.modID = buffer.readString(32767); - this.path = buffer.readString(32767); - this.value = buffer.readString(32767); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeString(modID); - buffer.writeString(path); - buffer.writeString(value); - } - - @Override - public void handle(Supplier context) { - context.get().enqueueWork(() -> { - try { - ServerPlayerEntity sender = context.get().getSender(); - if (sender == null || !sender.hasPermissionLevel(2)) - return; - - ForgeConfigSpec spec = ConfigHelper.findConfigSpecFor(ModConfig.Type.SERVER, modID); - ForgeConfigSpec.ValueSpec valueSpec = spec.getRaw(path); - ForgeConfigSpec.ConfigValue configValue = spec.getValues().get(path); - - T v = (T) deserialize(configValue.get(), value); - if (!valueSpec.test(v)) - return; - - configValue.set(v); - } catch (Exception e) { - Create.LOGGER.warn("Unable to handle ConfigureConfig Packet. ", e); - } - }); - - context.get().setPacketHandled(true); - } - - public String serialize(T value) { - if (value instanceof Boolean) - return Boolean.toString((Boolean) value); - if (value instanceof Enum) - return ((Enum) value).name(); - if (value instanceof Integer) - return Integer.toString((Integer) value); - if (value instanceof Float) - return Float.toString((Float) value); - if (value instanceof Double) - return Double.toString((Double) value); - - throw new IllegalArgumentException("unknown type " + value + ": " + value.getClass().getSimpleName()); - } - - public static Object deserialize(Object type, String sValue) { - if (type instanceof Boolean) - return Boolean.parseBoolean(sValue); - if (type instanceof Enum) - return Enum.valueOf(((Enum) type).getClass(), sValue); - if (type instanceof Integer) - return Integer.parseInt(sValue); - if (type instanceof Float) - return Float.parseFloat(sValue); - if (type instanceof Double) - return Double.parseDouble(sValue); - - throw new IllegalArgumentException("unknown type " + type + ": " + type.getClass().getSimpleName()); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigHelper.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigHelper.java deleted file mode 100644 index 57a52417f..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigHelper.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.simibubi.create.foundation.config.ui; - -import java.util.Arrays; -import java.util.EnumMap; -import java.util.List; -import java.util.Locale; -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -import javax.annotation.Nonnull; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.ModContainer; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; -import net.minecraftforge.fml.config.ModConfig; - -public class ConfigHelper { - - private static final LoadingCache> configCache = CacheBuilder.newBuilder().expireAfterAccess(15, TimeUnit.SECONDS).build( - new CacheLoader>() { - @Override - public EnumMap load(@Nonnull String key) { - return findModConfigsUncached(key); - } - } - ); - - private static EnumMap findModConfigsUncached(String modID) { - ModContainer modContainer = ModList.get().getModContainerById(modID).orElseThrow(() -> new IllegalArgumentException("Unable to find ModContainer for id: " + modID)); - EnumMap configs = ObfuscationReflectionHelper.getPrivateValue(ModContainer.class, modContainer, "configs"); - return Objects.requireNonNull(configs); - } - - public static ForgeConfigSpec findConfigSpecFor(ModConfig.Type type, String modID) { - if (!modID.equals(Create.ID)) - return configCache.getUnchecked(modID).get(type).getSpec(); - - switch (type) { - case COMMON: - return AllConfigs.COMMON.specification; - case CLIENT: - return AllConfigs.CLIENT.specification; - case SERVER: - return AllConfigs.SERVER.specification; - } - - return null; - } - - //Directly set a value - public static void setConfigValue(ConfigPath path, String value) throws InvalidValueException { - ForgeConfigSpec spec = findConfigSpecFor(path.getType(), path.getModID()); - List pathList = Arrays.asList(path.getPath()); - ForgeConfigSpec.ValueSpec valueSpec = spec.getRaw(pathList); - ForgeConfigSpec.ConfigValue configValue = spec.getValues().get(pathList); - T v = (T) CConfigureConfigPacket.deserialize(configValue.get(), value); - if (!valueSpec.test(v)) - throw new InvalidValueException(); - - configValue.set(v); - } - - //Add a value to the current UI's changes list - public static void setValue(String path, ForgeConfigSpec.ConfigValue configValue, T value) { - if (value.equals(configValue.get())) { - ConfigScreen.changes.remove(path); - } else { - ConfigScreen.changes.put(path, value); - } - } - - //Get a value from the current UI's changes list or the config value, if its unchanged - public static T getValue(String path, ForgeConfigSpec.ConfigValue configValue) { - //noinspection unchecked - return (T) ConfigScreen.changes.getOrDefault(path, configValue.get()); - } - - public static class ConfigPath { - private String modID = Create.ID; - private ModConfig.Type type = ModConfig.Type.CLIENT; - private String[] path; - - public static ConfigPath parse(String string) { - ConfigPath cp = new ConfigPath(); - String p = string; - int index = string.indexOf(":"); - if (index >= 0) { - p = string.substring(index + 1); - if (index >= 1) { - cp.modID = string.substring(0, index); - } - } - String[] split = p.split("\\."); - try { - cp.type = ModConfig.Type.valueOf(split[0].toUpperCase(Locale.ROOT)); - } catch (Exception e) { - throw new IllegalArgumentException("path must start with either 'client.', 'common.' or 'server.'"); - } - - cp.path = new String[split.length - 1]; - System.arraycopy(split, 1, cp.path, 0, cp.path.length); - - return cp; - } - - public ConfigPath setID(String modID) { - this.modID = modID; - return this; - } - - public ConfigPath setType(ModConfig.Type type) { - this.type = type; - return this; - } - - public ConfigPath setPath(String[] path) { - this.path = path; - return this; - } - - public String getModID() { - return modID; - } - - public ModConfig.Type getType() { - return type; - } - - public String[] getPath() { - return path; - } - } - - public static class InvalidValueException extends Exception {} -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreen.java deleted file mode 100644 index 6bcbc4880..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreen.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.simibubi.create.foundation.config.ui; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Collectors; - -import javax.annotation.Nonnull; - -import org.apache.commons.lang3.StringUtils; -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL20; -import org.lwjgl.opengl.GL30; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.gl.versioned.GlCompat; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; -import com.simibubi.create.foundation.gui.AbstractSimiScreen; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.StencilElement; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.utility.animation.Force; -import com.simibubi.create.foundation.utility.animation.PhysicalFloat; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.shader.Framebuffer; -import net.minecraft.client.shader.FramebufferConstants; -import net.minecraft.util.Direction; - -public abstract class ConfigScreen extends AbstractSimiScreen { - - /* - * - * zelo's list for configUI - * - * reduce number of packets sent to the server when saving a bunch of values - * maybe replace java's awt color with something mutable - * find out why framebuffer blending is incorrect - * - * FIXME - * - * tooltips are hidden underneath the scrollbar, if the bar is near the middle - * - * */ - - public static final PhysicalFloat cogSpin = PhysicalFloat.create().withDrag(0.3).addForce(new Force.Static(.2f)); - public static final BlockState cogwheelState = AllBlocks.LARGE_COGWHEEL.getDefaultState().with(CogWheelBlock.AXIS, Direction.Axis.Y); - public static final Map changes = new HashMap<>(); - public static String modID = null; - protected final Screen parent; - - public ConfigScreen(Screen parent) { - this.parent = parent; - } - - @Override - public void tick() { - super.tick(); - cogSpin.tick(); - } - - @Override - public void renderBackground(@Nonnull MatrixStack ms) { - net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.client.event.GuiScreenEvent.BackgroundDrawnEvent(this, ms)); - } - - @Override - protected void renderWindowBackground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (this.client != null && this.client.world != null) { - fill(ms, 0, 0, this.width, this.height, 0xb0_282c34); - } else { - fill(ms, 0, 0, this.width, this.height, 0xff_282c34); - } - - new StencilElement() { - @Override - protected void renderStencil(MatrixStack ms) { - renderCog(ms, partialTicks); - } - - @Override - protected void renderElement(MatrixStack ms) { - fill(ms, -200, -200, 200, 200, 0x60_000000); - } - }.at(width * 0.5f, height * 0.5f, 0).render(ms); - - super.renderWindowBackground(ms, mouseX, mouseY, partialTicks); - - } - - @Override - protected void prepareFrame() { - Framebuffer thisBuffer = UIRenderHelper.framebuffer; - Framebuffer mainBuffer = Minecraft.getInstance().getFramebuffer(); - - GlCompat functions = Backend.getInstance().compat; - functions.fbo.bindFramebuffer(GL30.GL_READ_FRAMEBUFFER, mainBuffer.framebufferObject); - functions.fbo.bindFramebuffer(GL30.GL_DRAW_FRAMEBUFFER, thisBuffer.framebufferObject); - functions.blit.blitFramebuffer(0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, 0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, GL30.GL_COLOR_BUFFER_BIT, GL20.GL_LINEAR); - - functions.fbo.bindFramebuffer(FramebufferConstants.FRAME_BUFFER, thisBuffer.framebufferObject); - GL11.glClear(GL30.GL_STENCIL_BUFFER_BIT | GL30.GL_DEPTH_BUFFER_BIT); - - } - - @Override - protected void endFrame() { - - Framebuffer thisBuffer = UIRenderHelper.framebuffer; - Framebuffer mainBuffer = Minecraft.getInstance().getFramebuffer(); - - GlCompat functions = Backend.getInstance().compat; - functions.fbo.bindFramebuffer(GL30.GL_READ_FRAMEBUFFER, thisBuffer.framebufferObject); - functions.fbo.bindFramebuffer(GL30.GL_DRAW_FRAMEBUFFER, mainBuffer.framebufferObject); - functions.blit.blitFramebuffer(0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, 0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, GL30.GL_COLOR_BUFFER_BIT, GL20.GL_LINEAR); - - functions.fbo.bindFramebuffer(FramebufferConstants.FRAME_BUFFER, mainBuffer.framebufferObject); - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double delta) { - cogSpin.bump(3, -delta * 5); - - return super.mouseScrolled(mouseX, mouseY, delta); - } - - public static String toHumanReadable(String key) { - String s = key.replaceAll("_", " "); - s = Arrays.stream(StringUtils.splitByCharacterTypeCamelCase(s)).map(StringUtils::capitalize).collect(Collectors.joining(" ")); - s = s.replaceAll("\\s\\s+", " "); - return s; - } - - protected void renderCog(MatrixStack ms, float partialTicks) { - ms.push(); - - ms.translate(-100, 100, -100); - ms.scale(200, 200, 1); - GuiGameElement.of(cogwheelState) - .rotateBlock(22.5, cogSpin.getValue(partialTicks), 22.5) - .render(ms); - - ms.pop(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java deleted file mode 100644 index 2b01b9647..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigScreenList.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.simibubi.create.foundation.config.ui; - -import java.util.ArrayList; -import java.util.List; - -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.config.ui.entries.NumberEntry; -import com.simibubi.create.foundation.gui.TextStencilElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; - -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.IGuiEventListener; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.client.gui.widget.list.ExtendedList; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.fml.client.gui.GuiUtils; - -public class ConfigScreenList extends ExtendedList { - - public static TextFieldWidget currentText; - - public boolean isForServer = false; - - public ConfigScreenList(Minecraft client, int width, int height, int top, int bottom, int elementHeight) { - super(client, width, height, top, bottom, elementHeight); - func_244605_b(false); - func_244606_c(false); - setRenderSelection(false); - currentText = null; - headerHeight = 3; - } - - @Override - public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - UIRenderHelper.angledGradient(ms, 90, left + width / 2, top, width, 5, 0x60_000000, 0x0); - UIRenderHelper.angledGradient(ms, -90, left + width / 2, bottom, width, 5, 0x60_000000, 0x0); - UIRenderHelper.angledGradient(ms, 0, left, top + height / 2, height, 5, 0x60_000000, 0x0); - UIRenderHelper.angledGradient(ms, 180, right, top + height / 2, height, 5, 0x60_000000, 0x0); - - super.render(ms, mouseX, mouseY, partialTicks); - } - - @Override - protected void renderList(MatrixStack p_238478_1_, int p_238478_2_, int p_238478_3_, int p_238478_4_, int p_238478_5_, float p_238478_6_) { - MainWindow window = Minecraft.getInstance().getWindow(); - double d0 = window.getGuiScaleFactor(); - RenderSystem.enableScissor((int) (this.left * d0), (int) (window.getFramebufferHeight() - (this.bottom * d0)), (int) (this.width * d0), (int) (this.height * d0)); - super.renderList(p_238478_1_, p_238478_2_, p_238478_3_, p_238478_4_, p_238478_5_, p_238478_6_); - RenderSystem.disableScissor(); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - children().stream().filter(e -> e instanceof NumberEntry).forEach(e -> e.mouseClicked(x, y, button)); - - return super.mouseClicked(x, y, button); - } - - @Override - public int getRowWidth() { - return width - 16; - } - - @Override - protected int getScrollbarPositionX() { - return left + this.width - 6; - } - - public void tick() { - for(int i = 0; i < getItemCount(); ++i) { - int top = this.getRowTop(i); - int bot = top + itemHeight; - if (bot >= this.top && top <= this.bottom) - this.getEntry(i).tick(); - } - - } - - public void bumpCog(float force) { - ConfigScreen.cogSpin.bump(3, force); - } - - public static abstract class Entry extends ExtendedList.AbstractListEntry { - protected List listeners; - - protected Entry() { - listeners = new ArrayList<>(); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - return getGuiListeners().stream().anyMatch(l -> l.mouseClicked(x, y, button)); - } - - @Override - public boolean keyPressed(int code, int keyPressed_2_, int keyPressed_3_) { - return getGuiListeners().stream().anyMatch(l -> l.keyPressed(code, keyPressed_2_, keyPressed_3_)); - } - - @Override - public boolean charTyped(char ch, int code) { - return getGuiListeners().stream().anyMatch(l -> l.charTyped(ch, code)); - } - - public void tick() {} - - public List getGuiListeners() { - return listeners; - } - - protected void setEditable(boolean b) {} - } - - public static class LabeledEntry extends Entry { - - protected static final float labelWidthMult = 0.4f; - - protected TextStencilElement label; - protected List labelTooltip; - protected String unit = null; - - public LabeledEntry(String label) { - this.label = new TextStencilElement(Minecraft.getInstance().fontRenderer, label); - this.label.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.p(Theme.Key.TEXT_ACCENT_STRONG))); - labelTooltip = new ArrayList<>(); - } - - @Override - public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { - UIRenderHelper.streak(ms, 0, x - 10, y + height / 2, height - 6, width / 8 * 7, 0xdd_000000); - UIRenderHelper.streak(ms, 180, x + (int) (width * 1.35f) + 10, y + height / 2, height - 6, width / 8 * 7, 0xdd_000000); - IFormattableTextComponent component = label.getComponent(); - FontRenderer font = Minecraft.getInstance().fontRenderer; - if (font.getWidth(component) > getLabelWidth(width) - 10) { - label.withText(font.trimToWidth(component, getLabelWidth(width) - 15).getString() + "..."); - } - if (unit != null) { - int unitWidth = font.getStringWidth(unit); - font.draw(ms, unit, x + getLabelWidth(width) - unitWidth - 5, y + height / 2 + 2, Theme.i(Theme.Key.TEXT_DARKER)); - label.at(x + 10, y + height / 2 - 10, 0).render(ms); - } else { - label.at(x + 10, y + height / 2 - 4, 0).render(ms); - } - - - if (mouseX > x && mouseX < x + getLabelWidth(width) && mouseY > y + 5 && mouseY < y + height - 5) { - List tooltip = getLabelTooltip(); - if (tooltip.isEmpty()) - return; - - GL11.glDisable(GL11.GL_SCISSOR_TEST); - Screen screen = Minecraft.getInstance().currentScreen; - ms.push(); - ms.translate(0, 0, 400); - GuiUtils.drawHoveringText(ms, tooltip, mouseX, mouseY, screen.width, screen.height, 300, font); - ms.pop(); - GL11.glEnable(GL11.GL_SCISSOR_TEST); - } - } - - public List getLabelTooltip() { - return labelTooltip; - } - - protected int getLabelWidth(int totalWidth) { - return totalWidth; - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java b/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java deleted file mode 100644 index efa5d886d..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/ConfigTextField.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.foundation.config.ui; - -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.util.text.StringTextComponent; - -public class ConfigTextField extends TextFieldWidget { - - protected FontRenderer font; - protected String unit; - - public ConfigTextField(FontRenderer font, int x, int y, int width, int height, String unit) { - super(font, x, y, width, height, StringTextComponent.EMPTY); - this.font = font; - this.unit = unit; - } - - @Override - public void setFocused2(boolean focus) { - super.setFocused2(focus); - - if (!focus) { - if (ConfigScreenList.currentText == this) - ConfigScreenList.currentText = null; - - return; - } - - if (ConfigScreenList.currentText != null && ConfigScreenList.currentText != this) - ConfigScreenList.currentText.setFocused2(false); - - ConfigScreenList.currentText = this; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/OpenCreateMenuButton.java b/src/main/java/com/simibubi/create/foundation/config/ui/OpenCreateMenuButton.java deleted file mode 100644 index 6d12dc3f8..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/OpenCreateMenuButton.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.simibubi.create.foundation.config.ui; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.gui.mainMenu.CreateMainMenuScreen; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.IngameMenuScreen; -import net.minecraft.client.gui.screen.MainMenuScreen; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.button.Button; -import net.minecraft.client.resources.I18n; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.GuiScreenEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -public class OpenCreateMenuButton extends Button { - - public static ItemStack icon = AllItems.GOGGLES.asStack(); - - public OpenCreateMenuButton(int x, int y) { - super(x, y, 20, 20, StringTextComponent.EMPTY, OpenCreateMenuButton::click); - } - - @Override - public void render(MatrixStack mstack, int mouseX, int mouseY, float pticks) { - super.render(mstack, mouseX, mouseY, pticks); - Minecraft.getInstance().getItemRenderer().renderItemIntoGUI(icon, x + 2, y + 2); - } - - public static void click(Button b) { - ScreenOpener.open(new CreateMainMenuScreen(Minecraft.getInstance().currentScreen)); - } - - public static class SingleMenuRow { - public final String left, right; - public SingleMenuRow(String left, String right) { - this.left = I18n.format(left); - this.right = I18n.format(right); - } - public SingleMenuRow(String center) { - this(center, center); - } - } - - public static class MenuRows { - public static final MenuRows MAIN_MENU = new MenuRows(Arrays.asList( - new SingleMenuRow("menu.singleplayer"), - new SingleMenuRow("menu.multiplayer"), - new SingleMenuRow("fml.menu.mods", "menu.online"), - new SingleMenuRow("narrator.button.language", "narrator.button.accessibility") - )); - - public static final MenuRows INGAME_MENU = new MenuRows(Arrays.asList( - new SingleMenuRow("menu.returnToGame"), - new SingleMenuRow("gui.advancements", "gui.stats"), - new SingleMenuRow("menu.sendFeedback", "menu.reportBugs"), - new SingleMenuRow("menu.options", "menu.shareToLan"), - new SingleMenuRow("menu.returnToMenu") - )); - - protected final List leftButtons, rightButtons; - - public MenuRows(List variants) { - leftButtons = variants.stream().map(r -> r.left).collect(Collectors.toList()); - rightButtons = variants.stream().map(r -> r.right).collect(Collectors.toList()); - } - } - - @EventBusSubscriber(value = Dist.CLIENT) - public static class OpenConfigButtonHandler { - - @SubscribeEvent - public static void onGuiInit(GuiScreenEvent.InitGuiEvent event) { - Screen gui = event.getGui(); - - MenuRows menu = null; - int rowIdx = 0, offsetX = 0; - if (gui instanceof MainMenuScreen) { - menu = MenuRows.MAIN_MENU; - rowIdx = AllConfigs.CLIENT.mainMenuConfigButtonRow.get(); - offsetX = AllConfigs.CLIENT.mainMenuConfigButtonOffsetX.get(); - } else if (gui instanceof IngameMenuScreen) { - menu = MenuRows.INGAME_MENU; - rowIdx = AllConfigs.CLIENT.ingameMenuConfigButtonRow.get(); - offsetX = AllConfigs.CLIENT.ingameMenuConfigButtonOffsetX.get(); - } - - if (rowIdx != 0 && menu != null) { - boolean onLeft = offsetX < 0; - String target = (onLeft ? menu.leftButtons : menu.rightButtons).get(rowIdx - 1); - - int offsetX_ = offsetX; - event.getWidgetList().stream() - .filter(w -> w.getMessage().getString().equals(target)) - .findFirst() - .ifPresent(w -> event.addWidget( - new OpenCreateMenuButton(w.x + offsetX_ + (onLeft ? -20 : w.getWidth()), w.y) - )); - } - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java b/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java deleted file mode 100644 index 34d68af65..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/SubMenuConfigScreen.java +++ /dev/null @@ -1,411 +0,0 @@ -package com.simibubi.create.foundation.config.ui; - -import java.awt.*; -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.function.Consumer; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import org.lwjgl.glfw.GLFW; - -import com.electronwill.nightconfig.core.AbstractConfig; -import com.electronwill.nightconfig.core.UnmodifiableConfig; -import com.google.common.collect.Lists; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.config.ui.ConfigScreenList.LabeledEntry; -import com.simibubi.create.foundation.config.ui.entries.BooleanEntry; -import com.simibubi.create.foundation.config.ui.entries.EnumEntry; -import com.simibubi.create.foundation.config.ui.entries.NumberEntry; -import com.simibubi.create.foundation.config.ui.entries.SubMenuEntry; -import com.simibubi.create.foundation.config.ui.entries.ValueEntry; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.ConfirmationScreen; -import com.simibubi.create.foundation.gui.ConfirmationScreen.Response; -import com.simibubi.create.foundation.gui.DelegatedStencilElement; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.gui.widgets.BoxWidget; -import com.simibubi.create.foundation.item.TooltipHelper; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.utility.Couple; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.IGuiEventListener; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.util.text.ITextProperties; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.fml.config.ModConfig; - -public class SubMenuConfigScreen extends ConfigScreen { - - public final ModConfig.Type type; - protected ForgeConfigSpec spec; - protected UnmodifiableConfig configGroup; - protected ConfigScreenList list; - - protected BoxWidget resetAll; - protected BoxWidget saveChanges; - protected BoxWidget discardChanges; - protected BoxWidget goBack; - protected BoxWidget serverLocked; - protected int listWidth; - protected String title; - - public static SubMenuConfigScreen find(ConfigHelper.ConfigPath path) { - ForgeConfigSpec spec = ConfigHelper.findConfigSpecFor(path.getType(), path.getModID()); - UnmodifiableConfig values = spec.getValues(); - BaseConfigScreen base = new BaseConfigScreen(null, path.getModID()).searchForSpecsInModContainer(); - SubMenuConfigScreen screen = new SubMenuConfigScreen(base, "root", path.getType(), spec, values); - List remainingPath = Lists.newArrayList(path.getPath()); - - path: while (!remainingPath.isEmpty()) { - String next = remainingPath.remove(0); - for (Map.Entry entry : values.valueMap().entrySet()) { - String key = entry.getKey(); - Object obj = entry.getValue(); - if (!key.equalsIgnoreCase(next)) - continue; - - if (!(obj instanceof AbstractConfig)) { - //highlight entry - continue; - } - - values = (UnmodifiableConfig) obj; - screen = new SubMenuConfigScreen(screen, toHumanReadable(key), path.getType(), spec, values); - continue path; - } - - break; - } - - ConfigScreen.modID = path.getModID(); - return screen; - } - - public SubMenuConfigScreen(Screen parent, String title, ModConfig.Type type, ForgeConfigSpec configSpec, UnmodifiableConfig configGroup) { - super(parent); - this.type = type; - this.spec = configSpec; - this.title = title; - this.configGroup = configGroup; - } - - public SubMenuConfigScreen(Screen parent, ModConfig.Type type, ForgeConfigSpec configSpec) { - super(parent); - this.type = type; - this.spec = configSpec; - this.title = "root"; - this.configGroup = configSpec.getValues(); - } - - protected void clearChanges() { - changes.clear(); - list.children() - .stream() - .filter(e -> e instanceof ValueEntry) - .forEach(e -> ((ValueEntry) e).onValueChange()); - } - - protected void saveChanges() { - UnmodifiableConfig values = spec.getValues(); - changes.forEach((path, value) -> { - ForgeConfigSpec.ConfigValue configValue = values.get(path); - configValue.set(value); - if (type == ModConfig.Type.SERVER) { - AllPackets.channel.sendToServer(new CConfigureConfigPacket<>(ConfigScreen.modID, path, value)); - } - }); - clearChanges(); - } - - protected void resetConfig(UnmodifiableConfig values) { - values.valueMap().forEach((key, obj) -> { - if (obj instanceof AbstractConfig) { - resetConfig((UnmodifiableConfig) obj); - } else if (obj instanceof ForgeConfigSpec.ConfigValue) { - ForgeConfigSpec.ConfigValue configValue = (ForgeConfigSpec.ConfigValue) obj; - ForgeConfigSpec.ValueSpec valueSpec = spec.getRaw((List) configValue.getPath()); - - ConfigHelper.setValue(String.join(".", configValue.getPath()), configValue, valueSpec.getDefault()); - } - }); - - list.children() - .stream() - .filter(e -> e instanceof ValueEntry) - .forEach(e -> ((ValueEntry) e).onValueChange()); - } - - @Override - public void tick() { - super.tick(); - list.tick(); - } - - @Override - protected void init() { - widgets.clear(); - super.init(); - - listWidth = Math.min(width - 80, 300); - - int yCenter = height / 2; - int listL = this.width / 2 - listWidth / 2; - int listR = this.width / 2 + listWidth / 2; - - resetAll = new BoxWidget(listR + 10, yCenter - 25, 20, 20) - .withPadding(2, 2) - .withCallback((x, y) -> - new ConfirmationScreen() - .centered() - .withText(ITextProperties.plain("Resetting all settings of the " + type.toString() + " config. Are you sure?")) - .withAction(success -> { - if (success) - resetConfig(spec.getValues()); - }) - .open(this) - ); - - resetAll.showingElement(AllIcons.I_CONFIG_RESET.asStencil().withElementRenderer(BoxWidget.gradientFactory.apply(resetAll))); - resetAll.getToolTip().add(new StringTextComponent("Reset All")); - resetAll.getToolTip().addAll(TooltipHelper.cutStringTextComponent("Click here to reset all settings to their default value.", TextFormatting.GRAY, TextFormatting.GRAY)); - - saveChanges = new BoxWidget(listL - 30, yCenter - 25, 20, 20) - .withPadding(2, 2) - .withCallback((x, y) -> { - if (changes.isEmpty()) - return; - - new ConfirmationScreen() - .centered() - .withText(ITextProperties.plain("Saving " + changes.size() + " changed value" + (changes.size() != 1 ? "s" : "") + "")) - .withAction(success -> { - if (success) - saveChanges(); - }) - .open(this); - }); - saveChanges.showingElement(AllIcons.I_CONFIG_SAVE.asStencil().withElementRenderer(BoxWidget.gradientFactory.apply(saveChanges))); - saveChanges.getToolTip().add(new StringTextComponent("Save Changes")); - saveChanges.getToolTip().addAll(TooltipHelper.cutStringTextComponent("Click here to save your current changes.", TextFormatting.GRAY, TextFormatting.GRAY)); - - discardChanges = new BoxWidget(listL - 30, yCenter + 5, 20, 20) - .withPadding(2, 2) - .withCallback((x, y) -> { - if (changes.isEmpty()) - return; - - new ConfirmationScreen() - .centered() - .withText(ITextProperties.plain("Discarding " + changes.size() + " unsaved change" + (changes.size() != 1 ? "s" : "") + "")) - .withAction(success -> { - if (success) - clearChanges(); - }) - .open(this); - }); - discardChanges.showingElement(AllIcons.I_CONFIG_DISCARD.asStencil().withElementRenderer(BoxWidget.gradientFactory.apply(discardChanges))); - discardChanges.getToolTip().add(new StringTextComponent("Discard Changes")); - discardChanges.getToolTip().addAll(TooltipHelper.cutStringTextComponent("Click here to discard all the changes you made.", TextFormatting.GRAY, TextFormatting.GRAY)); - - goBack = new BoxWidget(listL - 30, yCenter + 65, 20, 20) - .withPadding(2, 2) - .withCallback(this::attemptBackstep); - goBack.showingElement(AllIcons.I_CONFIG_BACK.asStencil().withElementRenderer(BoxWidget.gradientFactory.apply(goBack))); - goBack.getToolTip().add(new StringTextComponent("Go Back")); - - widgets.add(resetAll); - widgets.add(saveChanges); - widgets.add(discardChanges); - widgets.add(goBack); - - list = new ConfigScreenList(client, listWidth, height - 60, 45, height - 15, 40); - list.setLeftPos(this.width / 2 - list.getWidth() / 2); - - children.add(list); - - configGroup.valueMap().forEach((key, obj) -> { - String humanKey = toHumanReadable(key); - - if (obj instanceof AbstractConfig) { - SubMenuEntry entry = new SubMenuEntry(this, humanKey, spec, (UnmodifiableConfig) obj); - list.children().add(entry); - if (configGroup.valueMap() - .size() == 1) - ScreenOpener.open( - new SubMenuConfigScreen(parent, humanKey, type, spec, (UnmodifiableConfig) obj)); - - } else if (obj instanceof ForgeConfigSpec.ConfigValue) { - ForgeConfigSpec.ConfigValue configValue = (ForgeConfigSpec.ConfigValue) obj; - ForgeConfigSpec.ValueSpec valueSpec = spec.getRaw(configValue.getPath()); - Object value = configValue.get(); - - if (value instanceof Boolean) { - BooleanEntry entry = new BooleanEntry(humanKey, (ForgeConfigSpec.ConfigValue) configValue, valueSpec); - list.children().add(entry); - } else if (value instanceof Enum) { - EnumEntry entry = new EnumEntry(humanKey, (ForgeConfigSpec.ConfigValue>) configValue, valueSpec); - list.children().add(entry); - } else if (value instanceof Number) { - NumberEntry entry = NumberEntry.create(value, humanKey, configValue, valueSpec); - if (entry != null) { - list.children().add(entry); - } else { - list.children().add(new ConfigScreenList.LabeledEntry("n-" + obj.getClass().getSimpleName() + " " + humanKey + " : " + value)); - } - } else { - list.children().add(new ConfigScreenList.LabeledEntry(humanKey + " : " + value)); - } - } - }); - - Collections.sort(list.children(), - (e, e2) -> { - int group = (e2 instanceof SubMenuEntry ? 1 : 0) - (e instanceof SubMenuEntry ? 1 : 0); - if (group == 0 && e instanceof LabeledEntry && e2 instanceof LabeledEntry) { - LabeledEntry le = (LabeledEntry) e; - LabeledEntry le2 = (LabeledEntry) e2; - return le.label.getComponent() - .getString() - .compareTo(le2.label.getComponent() - .getString()); - } - return group; - }); - - //extras for server configs - if (type != ModConfig.Type.SERVER) - return; - if (client.isSingleplayer()) - return; - - list.isForServer = true; - boolean canEdit = client != null && client.player != null && client.player.hasPermissionLevel(2); - - Couple red = Theme.p(Theme.Key.BUTTON_FAIL); - Couple green = Theme.p(Theme.Key.BUTTON_SUCCESS); - - DelegatedStencilElement stencil = new DelegatedStencilElement(); - - serverLocked = new BoxWidget(listR + 10, yCenter + 5, 20, 20) - .withPadding(2, 2) - .showingElement(stencil); - - - if (!canEdit) { - list.children().forEach(e -> e.setEditable(false)); - resetAll.active = false; - stencil.withStencilRenderer((ms, w, h, alpha) -> AllIcons.I_CONFIG_LOCKED.draw(ms, 0, 0)); - stencil.withElementRenderer((ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, 8, 0, 16, 16, red)); - serverLocked.withBorderColors(red); - serverLocked.getToolTip().add(new StringTextComponent("Locked").formatted(TextFormatting.BOLD)); - serverLocked.getToolTip().addAll(TooltipHelper.cutStringTextComponent("You do not have enough permissions to edit the server config. You can still look at the current values here though.", TextFormatting.GRAY, TextFormatting.GRAY)); - } else { - stencil.withStencilRenderer((ms, w, h, alpha) -> AllIcons.I_CONFIG_UNLOCKED.draw(ms, 0, 0)); - stencil.withElementRenderer((ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, 8, 0, 16, 16, green)); - serverLocked.withBorderColors(green); - serverLocked.getToolTip().add(new StringTextComponent("Unlocked").formatted(TextFormatting.BOLD)); - serverLocked.getToolTip().addAll(TooltipHelper.cutStringTextComponent("You have enough permissions to edit the server config. Changes you make here will be synced with the server when you save them.", TextFormatting.GRAY, TextFormatting.GRAY)); - } - - widgets.add(serverLocked); - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - super.renderWindow(ms, mouseX, mouseY, partialTicks); - - int x = width / 2; - drawCenteredString(ms, client.fontRenderer, ConfigScreen.modID + " > " + type.toString().toLowerCase(Locale.ROOT) + " > " + title, x, 15, Theme.i(Theme.Key.TEXT)); - - list.render(ms, mouseX, mouseY, partialTicks); - } - - @Override - protected void renderWindowForeground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - super.renderWindowForeground(ms, mouseX, mouseY, partialTicks); - } - - @Override - public void resize(@Nonnull Minecraft client, int width, int height) { - double scroll = list.getScrollAmount(); - init(client, width, height); - list.setScrollAmount(scroll); - } - - @Nullable - @Override - public IGuiEventListener getFocused() { - if (ConfigScreenList.currentText != null) - return ConfigScreenList.currentText; - - return super.getFocused(); - } - - @Override - public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { - if (super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_)) - return true; - - if (code == GLFW.GLFW_KEY_BACKSPACE) { - attemptBackstep(); - } - - return false; - } - - private void attemptBackstep() { - if (changes.isEmpty() || !(parent instanceof BaseConfigScreen)) { - ScreenOpener.open(parent); - return; - } - - Consumer action = success -> { - if (success == Response.Cancel) - return; - if (success == Response.Confirm) - saveChanges(); - changes.clear(); - ScreenOpener.open(parent); - }; - - showLeavingPrompt(action); - } - - @Override - public void onClose() { - if (changes.isEmpty()) { - super.onClose(); - ScreenOpener.open(parent); - return; - } - - Consumer action = success -> { - if (success == Response.Cancel) - return; - if (success == Response.Confirm) - saveChanges(); - changes.clear(); - super.onClose(); - }; - - showLeavingPrompt(action); - } - - public void showLeavingPrompt(Consumer action) { - new ConfirmationScreen().centered() - .addText(ITextProperties.plain("Leaving with " + changes.size() + " unsaved change" - + (changes.size() != 1 ? "s" : "") + " for this config")) - .withThreeActions(action) - .open(this); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/BooleanEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/BooleanEntry.java deleted file mode 100644 index 8cab0fe64..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/BooleanEntry.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.foundation.config.ui.entries; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.RenderElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.gui.widgets.BoxWidget; - -import net.minecraftforge.common.ForgeConfigSpec; - -public class BooleanEntry extends ValueEntry { - - RenderElement enabled; - RenderElement disabled; - BoxWidget button; - - public BooleanEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { - super(label, value, spec); - - enabled = AllIcons.I_CONFIRM.asStencil() - .withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.p(Theme.Key.BUTTON_SUCCESS))) - .at(10, 0); - - disabled = AllIcons.I_DISABLE.asStencil() - .withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.p(Theme.Key.BUTTON_FAIL))) - .at(10, 0); - - button = new BoxWidget().showingElement(enabled) - .withCallback(() -> setValue(!getValue())); - - listeners.add(button); - onReset(); - } - - @Override - protected void setEditable(boolean b) { - super.setEditable(b); - button.active = b; - } - - @Override - public void tick() { - super.tick(); - button.tick(); - } - - @Override - public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, - boolean p_230432_9_, float partialTicks) { - super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); - - button.x = x + width - 80 - resetWidth; - button.y = y + 10; - button.setWidth(35); - button.setHeight(height - 20); - button.render(ms, mouseX, mouseY, partialTicks); - } - - @Override - public void onValueChange(Boolean newValue) { - super.onValueChange(newValue); - button.showingElement(newValue ? enabled : disabled); - bumpCog(newValue ? 15f : -16f); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/EnumEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/EnumEntry.java deleted file mode 100644 index 3d7590762..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/EnumEntry.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.simibubi.create.foundation.config.ui.entries; - -import java.util.Locale; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.BoxElement; -import com.simibubi.create.foundation.gui.DelegatedStencilElement; -import com.simibubi.create.foundation.gui.TextStencilElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.gui.widgets.BoxWidget; - -import net.minecraft.client.Minecraft; -import net.minecraftforge.common.ForgeConfigSpec; - -public class EnumEntry extends ValueEntry> { - - protected static final int cycleWidth = 34; - - protected TextStencilElement valueText; - protected BoxWidget cycleLeft; - protected BoxWidget cycleRight; - - public EnumEntry(String label, ForgeConfigSpec.ConfigValue> value, ForgeConfigSpec.ValueSpec spec) { - super(label, value, spec); - - valueText = new TextStencilElement(Minecraft.getInstance().fontRenderer, "YEP").centered(true, true); - valueText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, - height, width, Theme.p(Theme.Key.TEXT))); - - DelegatedStencilElement l = AllIcons.I_CONFIG_PREV.asStencil(); - cycleLeft = new BoxWidget(0, 0, cycleWidth + 8, 16).showingElement(l) - .withCallback(() -> cycleValue(-1)); - l.withElementRenderer(BoxWidget.gradientFactory.apply(cycleLeft)); - - DelegatedStencilElement r = AllIcons.I_CONFIG_NEXT.asStencil(); - cycleRight = new BoxWidget(0, 0, cycleWidth + 8, 16).showingElement(r) - .withCallback(() -> cycleValue(1)); - r.at(cycleWidth - 8, 0); - r.withElementRenderer(BoxWidget.gradientFactory.apply(cycleRight)); - - listeners.add(cycleLeft); - listeners.add(cycleRight); - - onReset(); - } - - protected void cycleValue(int direction) { - Enum e = getValue(); - Enum[] options = e.getDeclaringClass() - .getEnumConstants(); - e = options[Math.floorMod(e.ordinal() + direction, options.length)]; - setValue(e); - bumpCog(direction * 15f); - } - - @Override - protected void setEditable(boolean b) { - super.setEditable(b); - cycleLeft.active = b; - cycleLeft.animateGradientFromState(); - cycleRight.active = b; - cycleRight.animateGradientFromState(); - } - - @Override - public void tick() { - super.tick(); - cycleLeft.tick(); - cycleRight.tick(); - } - - @Override - public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, - boolean p_230432_9_, float partialTicks) { - super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); - - cycleLeft.x = x + getLabelWidth(width) + 4; - cycleLeft.y = y + 10; - cycleLeft.render(ms, mouseX, mouseY, partialTicks); - - valueText.at(cycleLeft.x + cycleWidth - 8, y + 10, 200) - .withBounds(width - getLabelWidth(width) - 2 * cycleWidth - resetWidth - 4, 16) - .render(ms); - - cycleRight.x = x + width - cycleWidth * 2 - resetWidth + 10; - cycleRight.y = y + 10; - cycleRight.render(ms, mouseX, mouseY, partialTicks); - - new BoxElement() - .withBackground(0) - .flatBorder(0) - .withBounds(10, 10) - .at(cycleLeft.x + cycleWidth + 4, cycleLeft.y + 3) - .render(ms); - } - - @Override - public void onValueChange(Enum newValue) { - super.onValueChange(newValue); - valueText.withText(newValue.name() - .substring(0, 1) - + newValue.name() - .substring(1) - .toLowerCase(Locale.ROOT)); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java deleted file mode 100644 index 315d147df..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/NumberEntry.java +++ /dev/null @@ -1,211 +0,0 @@ -package com.simibubi.create.foundation.config.ui.entries; - -import java.lang.reflect.Field; -import java.util.function.Function; - -import javax.annotation.Nullable; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.config.ui.ConfigTextField; -import com.simibubi.create.foundation.gui.TextStencilElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.widget.TextFieldWidget; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.common.ForgeConfigSpec; - -public abstract class NumberEntry extends ValueEntry { - - protected int minOffset = 0, maxOffset = 0; - protected TextStencilElement minText = null, maxText = null; - protected TextFieldWidget textField; - - @Nullable - public static NumberEntry create(Object type, String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { - if (type instanceof Integer) { - return new IntegerEntry(label, (ForgeConfigSpec.ConfigValue) value, spec); - } else if (type instanceof Float) { - return new FloatEntry(label, (ForgeConfigSpec.ConfigValue) value, spec); - } else if (type instanceof Double) { - return new DoubleEntry(label, (ForgeConfigSpec.ConfigValue) value, spec); - } - - return null; - } - - public NumberEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { - super(label, value, spec); - textField = new ConfigTextField(Minecraft.getInstance().fontRenderer, 0, 0, 200, 20, unit); - textField.setText(String.valueOf(getValue())); - textField.setTextColor(Theme.i(Theme.Key.TEXT)); - - Object range = spec.getRange(); - try { - Field minField = range.getClass().getDeclaredField("min"); - Field maxField = range.getClass().getDeclaredField("max"); - minField.setAccessible(true); - maxField.setAccessible(true); - T min = (T) minField.get(range); - T max = (T) maxField.get(range); - - FontRenderer font = Minecraft.getInstance().fontRenderer; - if (min.doubleValue() > getTypeMin().doubleValue()) { - StringTextComponent t = new StringTextComponent(formatBound(min) + " < "); - minText = new TextStencilElement(font, t).centered(true, false); - minText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0 ,0, height/2, height, width, Theme.p(Theme.Key.TEXT_DARKER))); - minOffset = font.getWidth(t); - } - if (max.doubleValue() < getTypeMax().doubleValue()) { - StringTextComponent t = new StringTextComponent(" < " + formatBound(max)); - maxText = new TextStencilElement(font, t).centered(true, false); - maxText.withElementRenderer((ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0 ,0, height/2, height, width, Theme.p(Theme.Key.TEXT_DARKER))); - maxOffset = font.getWidth(t); - } - } catch (NoSuchFieldException | IllegalAccessException | ClassCastException | NullPointerException ignored) { - - } - - textField.setResponder(s -> { - try { - T number = getParser().apply(s); - if (!spec.test(number)) - throw new IllegalArgumentException(); - - textField.setTextColor(Theme.i(Theme.Key.TEXT)); - setValue(number); - - } catch (IllegalArgumentException ignored) { - textField.setTextColor(Theme.i(Theme.Key.BUTTON_FAIL)); - } - }); - - listeners.add(textField); - onReset(); - } - - protected String formatBound(T bound) { - String sci = String.format("%.2E", bound.doubleValue()); - String str = String.valueOf(bound); - return sci.length() < str.length() ? sci : str; - } - - protected abstract T getTypeMin(); - - protected abstract T getTypeMax(); - - protected abstract Function getParser(); - - @Override - protected void setEditable(boolean b) { - super.setEditable(b); - textField.setEnabled(b); - } - - @Override - public void onValueChange(T newValue) { - super.onValueChange(newValue); - String newText = String.valueOf(newValue); - if (textField.getText().equals(newText)) - return; - - textField.setText(newText); - } - - @Override - public void tick() { - super.tick(); - textField.tick(); - } - - @Override - public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { - super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); - - textField.x = x + width - 82 - resetWidth; - textField.y = y + 8; - textField.setWidth(Math.min(width - getLabelWidth(width) - resetWidth - minOffset - maxOffset, 40)); - textField.setHeight(20); - textField.render(ms, mouseX, mouseY, partialTicks); - - if (minText != null) - minText - .at(textField.x - minOffset, textField.y, 0) - .withBounds(minOffset, textField.unusedGetHeight()) - .render(ms); - - if (maxText != null) - maxText - .at(textField.x + textField.getWidth(), textField.y, 0) - .withBounds(maxOffset, textField.unusedGetHeight()) - .render(ms); - } - - public static class IntegerEntry extends NumberEntry { - - public IntegerEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { - super(label, value, spec); - } - - @Override - protected Integer getTypeMin() { - return Integer.MIN_VALUE; - } - - @Override - protected Integer getTypeMax() { - return Integer.MAX_VALUE; - } - - @Override - protected Function getParser() { - return Integer::parseInt; - } - } - - public static class FloatEntry extends NumberEntry { - - public FloatEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { - super(label, value, spec); - } - - @Override - protected Float getTypeMin() { - return -Float.MAX_VALUE; - } - - @Override - protected Float getTypeMax() { - return Float.MAX_VALUE; - } - - @Override - protected Function getParser() { - return Float::parseFloat; - } - } - - public static class DoubleEntry extends NumberEntry { - - public DoubleEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { - super(label, value, spec); - } - - @Override - protected Double getTypeMin() { - return (double) -Float.MAX_VALUE; - } - - @Override - protected Double getTypeMax() { - return (double) Float.MAX_VALUE; - } - - @Override - protected Function getParser() { - return Double::parseDouble; - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/SubMenuEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/SubMenuEntry.java deleted file mode 100644 index d2812f463..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/SubMenuEntry.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.foundation.config.ui.entries; - -import com.electronwill.nightconfig.core.UnmodifiableConfig; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.config.ui.ConfigScreenList; -import com.simibubi.create.foundation.config.ui.SubMenuConfigScreen; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.DelegatedStencilElement; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.gui.widgets.BoxWidget; - -import net.minecraftforge.common.ForgeConfigSpec; - -public class SubMenuEntry extends ConfigScreenList.LabeledEntry { - - protected BoxWidget button; - - public SubMenuEntry(SubMenuConfigScreen parent, String label, ForgeConfigSpec spec, UnmodifiableConfig config) { - super(label); - - button = new BoxWidget(0, 0, 35, 16) - .showingElement(AllIcons.I_CONFIG_OPEN.asStencil().at(10, 0)) - .withCallback(() -> ScreenOpener.open(new SubMenuConfigScreen(parent, label, parent.type, spec, config))); - button.modifyElement(e -> ((DelegatedStencilElement) e).withElementRenderer(BoxWidget.gradientFactory.apply(button))); - - listeners.add(button); - } - - @Override - public void tick() { - super.tick(); - button.tick(); - } - - @Override - public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { - super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); - - button.x = x + width - 108; - button.y = y + 10; - button.setHeight(height - 20); - button.render(ms, mouseX, mouseY, partialTicks); - } - - @Override - protected int getLabelWidth(int totalWidth) { - return (int) (totalWidth * labelWidthMult) + 30; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java b/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java deleted file mode 100644 index 52a0d3fa1..000000000 --- a/src/main/java/com/simibubi/create/foundation/config/ui/entries/ValueEntry.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.simibubi.create.foundation.config.ui.entries; - -import java.util.Arrays; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - -import javax.annotation.Nonnull; - -import org.apache.commons.lang3.ArrayUtils; - -import com.google.common.base.Predicates; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.config.ui.ConfigHelper; -import com.simibubi.create.foundation.config.ui.ConfigScreen; -import com.simibubi.create.foundation.config.ui.ConfigScreenList; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.DelegatedStencilElement; -import com.simibubi.create.foundation.gui.widgets.BoxWidget; -import com.simibubi.create.foundation.item.TooltipHelper; - -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.common.ForgeConfigSpec; - -public class ValueEntry extends ConfigScreenList.LabeledEntry { - - protected static final IFormattableTextComponent modComponent = new StringTextComponent("* ").formatted(TextFormatting.BOLD, TextFormatting.DARK_BLUE).append(StringTextComponent.EMPTY.copy().formatted(TextFormatting.RESET)); - protected static final int resetWidth = 28;//including 6px offset on either side - public static final Pattern unitPattern = Pattern.compile("\\[(in .*)]"); - - protected ForgeConfigSpec.ConfigValue value; - protected ForgeConfigSpec.ValueSpec spec; - protected BoxWidget resetButton; - protected boolean editable = true; - protected String path; - - public ValueEntry(String label, ForgeConfigSpec.ConfigValue value, ForgeConfigSpec.ValueSpec spec) { - super(label); - this.value = value; - this.spec = spec; - this.path = String.join(".", value.getPath()); - - resetButton = new BoxWidget(0, 0, resetWidth - 12, 16) - .showingElement(AllIcons.I_CONFIG_RESET.asStencil()) - .withCallback(() -> { - setValue((T) spec.getDefault()); - this.onReset(); - }); - resetButton.modifyElement(e -> ((DelegatedStencilElement) e).withElementRenderer(BoxWidget.gradientFactory.apply(resetButton))); - - listeners.add(resetButton); - - List path = value.getPath(); - labelTooltip.add(new StringTextComponent(label).formatted(TextFormatting.WHITE)); - String comment = spec.getComment(); - if (comment == null || comment.isEmpty()) - return; - String[] commentLines = comment.split("\n"); - //find unit in the comment - for (int i = 0; i < commentLines.length; i++) { - if (commentLines[i].isEmpty()) { - commentLines = ArrayUtils.remove(commentLines, i); - i--; - continue; - } - - Matcher matcher = unitPattern.matcher(commentLines[i]); - if (!matcher.matches()) - continue; - - String u = matcher.group(1); - if (u.equals("in Revolutions per Minute")) - u = "in RPM"; - if (u.equals("in Stress Units")) - u = "in SU"; - unit = u; - } - // add comment to tooltip - labelTooltip.addAll(Arrays.stream(commentLines) - .filter(Predicates.not(s -> s.startsWith("Range"))) - .map(StringTextComponent::new) - .flatMap(stc -> TooltipHelper.cutTextComponent(stc, TextFormatting.GRAY, TextFormatting.GRAY) - .stream()) - .collect(Collectors.toList())); - labelTooltip.add(new StringTextComponent(ConfigScreen.modID + ":" + path.get(path.size() - 1)).formatted(TextFormatting.DARK_GRAY)); - } - - @Override - protected void setEditable(boolean b) { - editable = b; - resetButton.active = editable && !isCurrentValueDefault(); - resetButton.animateGradientFromState(); - } - - @Override - public void tick() { - super.tick(); - resetButton.tick(); - } - - @Override - public void render(MatrixStack ms, int index, int y, int x, int width, int height, int mouseX, int mouseY, boolean p_230432_9_, float partialTicks) { - if (isCurrentValueChanged()) { - IFormattableTextComponent original = label.getComponent(); - IFormattableTextComponent changed = modComponent.copy().append(original); - label.withText(changed); - super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); - label.withText(original); - } else { - super.render(ms, index, y, x, width, height, mouseX, mouseY, p_230432_9_, partialTicks); - } - - resetButton.x = x + width - resetWidth + 6; - resetButton.y = y + 10; - resetButton.render(ms, mouseX, mouseY, partialTicks); - } - - @Override - protected int getLabelWidth(int totalWidth) { - return (int) (totalWidth * labelWidthMult) + 30; - } - - public void setValue(@Nonnull T value) { - ConfigHelper.setValue(path, this.value, value); - onValueChange(value); - } - - @Nonnull - public T getValue() { - return ConfigHelper.getValue(path, this.value); - } - - protected boolean isCurrentValueChanged() { - return ConfigScreen.changes.containsKey(path); - } - - protected boolean isCurrentValueDefault() { - return spec.getDefault().equals(getValue()); - } - - public void onReset() { - onValueChange(getValue()); - } - - public void onValueChange() { - onValueChange(getValue()); - } - public void onValueChange(T newValue) { - resetButton.active = editable && !isCurrentValueDefault(); - resetButton.animateGradientFromState(); - } - - protected void bumpCog() {bumpCog(10f);} - protected void bumpCog(float force) { - if (list != null && list instanceof ConfigScreenList) - ((ConfigScreenList) list).bumpCog(force); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java b/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java deleted file mode 100644 index 9904c53b4..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.simibubi.create.foundation.data; - -import com.google.common.base.Supplier; -import com.google.gson.JsonElement; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.utility.FilesHelper; -import com.simibubi.create.foundation.utility.Lang; - -public enum AllLangPartials { - - ADVANCEMENTS("Advancements"), - MESSAGES("UI & Messages"), - SUBTITLES("Subtitles", AllSoundEvents::provideLangEntries), - TOOLTIPS("Item Descriptions"), - PONDER("Ponder Content", PonderRegistry::provideLangEntries), - - ; - - private String display; - private Supplier provider; - - private AllLangPartials(String display) { - this.display = display; - this.provider = this::fromResource; - } - - private AllLangPartials(String display, Supplier customProvider) { - this.display = display; - this.provider = customProvider; - } - - public String getDisplay() { - return display; - } - - public JsonElement provide() { - return provider.get(); - } - - private JsonElement fromResource() { - String fileName = Lang.asId(name()); - String filepath = "assets/" + Create.ID + "/lang/default/" + fileName + ".json"; - JsonElement element = FilesHelper.loadJsonResource(filepath); - if (element == null) - throw new IllegalStateException(String.format("Could not find default lang file: %s", filepath)); - return element; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java b/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java deleted file mode 100644 index f677efa7c..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.simibubi.create.foundation.data; - -import java.util.function.Function; - -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.providers.RegistrateItemModelProvider; -import com.tterrag.registrate.util.nullness.NonNullBiConsumer; - -import net.minecraft.block.BlockState; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.generators.ItemModelBuilder; -import net.minecraftforge.client.model.generators.ModelFile; - -public class AssetLookup { - - /** - * Custom block models packaged with other partials. Example: - * models/block/schematicannon/block.json
- *
- * Adding "powered", "vertical" will look for /block_powered_vertical.json - */ - public static ModelFile partialBaseModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - String... suffix) { - String string = "/block"; - for (String suf : suffix) - string += "_" + suf; - final String location = "block/" + ctx.getName() + string; - return prov.models() - .getExistingFile(prov.modLoc(location)); - } - - /** - * Custom block model from models/block/x.json - */ - public static ModelFile standardModel(DataGenContext ctx, RegistrateBlockstateProvider prov) { - return prov.models() - .getExistingFile(prov.modLoc("block/" + ctx.getName())); - } - - /** - * Generate item model inheriting from a seperate model in - * models/block/x/item.json - */ - public static ItemModelBuilder customItemModel(DataGenContext ctx, - RegistrateItemModelProvider prov) { - return prov.blockItem(() -> ctx.getEntry() - .getBlock(), "/item"); - } - - /** - * Generate item model inheriting from a seperate model in - * models/block/folders[0]/folders[1]/.../item.json "_" will be replaced by the - * item name - */ - public static NonNullBiConsumer, RegistrateItemModelProvider> customBlockItemModel( - String... folders) { - return (c, p) -> { - String path = "block"; - for (String string : folders) - path += "/" + ("_".equals(string) ? c.getName() : string); - p.withExistingParent(c.getName(), p.modLoc(path)); - }; - } - - public static NonNullBiConsumer, RegistrateItemModelProvider> customGenericItemModel( - String... folders) { - return (c, p) -> { - String path = "block"; - for (String string : folders) - path += "/" + ("_".equals(string) ? c.getName() : string); - p.withExistingParent(c.getName(), p.modLoc(path)); - }; - } - - public static Function forPowered(DataGenContext ctx, - RegistrateBlockstateProvider prov) { - return state -> state.get(BlockStateProperties.POWERED) ? partialBaseModel(ctx, prov, "powered") - : partialBaseModel(ctx, prov); - } - - public static Function forPowered(DataGenContext ctx, - RegistrateBlockstateProvider prov, String path) { - return state -> prov.models() - .getExistingFile( - prov.modLoc("block/" + path + (state.get(BlockStateProperties.POWERED) ? "_powered" : ""))); - } - - public static Function withIndicator(DataGenContext ctx, - RegistrateBlockstateProvider prov, Function baseModelFunc, IntegerProperty property) { - return state -> { - ResourceLocation baseModel = baseModelFunc.apply(state) - .getLocation(); - Integer integer = state.get(property); - return prov.models() - .withExistingParent(ctx.getName() + "_" + integer, baseModel) - .texture("indicator", "block/indicator/" + integer); - }; - } - - public static String getOxidizedModel(String name, int level) { - return "block/oxidized/" + name + "_" + level; - } - - public static NonNullBiConsumer, RegistrateItemModelProvider> existingItemModel() { - return (c, p) -> p.getExistingFile(p.modLoc("item/" + c.getName())); - } - - public static NonNullBiConsumer, RegistrateItemModelProvider> itemModelWithPartials() { - return (c, p) -> p.withExistingParent("item/" + c.getName(), p.modLoc("item/" + c.getName() + "/item")); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java deleted file mode 100644 index 455bbe2be..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/BlockStateGen.java +++ /dev/null @@ -1,478 +0,0 @@ - -package com.simibubi.create.foundation.data; - -import java.util.HashMap; -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; -import java.util.Vector; -import java.util.function.BiFunction; -import java.util.function.Function; - -import org.apache.commons.lang3.tuple.Pair; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssembleRailType; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; -import com.simibubi.create.content.contraptions.components.tracks.ReinforcedRailBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.EncasedPipeBlock; -import com.simibubi.create.content.contraptions.fluids.pipes.FluidPipeBlock; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; -import com.simibubi.create.content.palettes.PavedBlock; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pointing; -import com.simibubi.create.foundation.worldgen.OxidizingBlock; -import com.tterrag.registrate.builders.BlockBuilder; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.state.BooleanProperty; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.RailShape; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.generators.ConfiguredModel; -import net.minecraftforge.client.model.generators.ModelFile; -import net.minecraftforge.client.model.generators.MultiPartBlockStateBuilder; - -public class BlockStateGen { - - // Functions - - public static NonNullBiConsumer, RegistrateBlockstateProvider> axisBlockProvider( - boolean customItem) { - return (c, p) -> axisBlock(c, p, getBlockModel(customItem, c, p)); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> directionalBlockProvider( - boolean customItem) { - return (c, p) -> p.directionalBlock(c.get(), getBlockModel(customItem, c, p)); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> directionalBlockProviderIgnoresWaterlogged( - boolean customItem) { - return (c, p) -> directionalBlockIgnoresWaterlogged(c, p, getBlockModel(customItem, c, p)); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> horizontalBlockProvider( - boolean customItem) { - return (c, p) -> p.horizontalBlock(c.get(), getBlockModel(customItem, c, p)); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> horizontalAxisBlockProvider( - boolean customItem) { - return (c, p) -> horizontalAxisBlock(c, p, getBlockModel(customItem, c, p)); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> directionalAxisBlockProvider() { - return (c, p) -> directionalAxisBlock(c, p, ($, vertical) -> p.models() - .getExistingFile(p.modLoc("block/" + c.getName() + "/" + (vertical ? "vertical" : "horizontal")))); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> horizontalWheelProvider( - boolean customItem) { - return (c, p) -> horizontalWheel(c, p, getBlockModel(customItem, c, p)); - } - - public static

NonNullUnaryOperator> oxidizedBlockstate() { - return b -> b.blockstate((ctx, prov) -> prov.getVariantBuilder(ctx.getEntry()) - .forAllStates(state -> { - String name = AssetLookup.getOxidizedModel(ctx.getName(), state.get(OxidizingBlock.OXIDIZATION)); - return ConfiguredModel.builder() - .modelFile(prov.models() - .cubeAll(name, prov.modLoc(name))) - .build(); - })); - } - - // Utility - - private static Function getBlockModel(boolean customItem, - DataGenContext c, RegistrateBlockstateProvider p) { - return $ -> customItem ? AssetLookup.partialBaseModel(c, p) : AssetLookup.standardModel(c, p); - } - - // Generators - - public static void directionalBlockIgnoresWaterlogged(DataGenContext ctx, - RegistrateBlockstateProvider prov, Function modelFunc) { - prov.getVariantBuilder(ctx.getEntry()) - .forAllStatesExcept(state -> { - Direction dir = state.get(BlockStateProperties.FACING); - return ConfiguredModel.builder() - .modelFile(modelFunc.apply(state)) - .rotationX(dir == Direction.DOWN ? 180 - : dir.getAxis() - .isHorizontal() ? 90 : 0) - .rotationY(dir.getAxis() - .isVertical() ? 0 : (((int) dir.getHorizontalAngle()) + 180) % 360) - .build(); - }, BlockStateProperties.WATERLOGGED); - } - - public static void axisBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, - Function modelFunc) { - axisBlock(ctx, prov, modelFunc, false); - } - - public static void axisBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, - Function modelFunc, boolean uvLock) { - prov.getVariantBuilder(ctx.getEntry()) - .forAllStatesExcept(state -> { - Axis axis = state.get(BlockStateProperties.AXIS); - return ConfiguredModel.builder() - .modelFile(modelFunc.apply(state)) - .uvLock(uvLock) - .rotationX(axis == Axis.Y ? 0 : 90) - .rotationY(axis == Axis.X ? 90 : axis == Axis.Z ? 180 : 0) - .build(); - }, BlockStateProperties.WATERLOGGED); - } - - public static void simpleBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, - Function modelFunc) { - prov.getVariantBuilder(ctx.getEntry()) - .forAllStatesExcept(state -> { - return ConfiguredModel.builder() - .modelFile(modelFunc.apply(state)) - .build(); - }, BlockStateProperties.WATERLOGGED); - } - - public static void horizontalAxisBlock(DataGenContext ctx, - RegistrateBlockstateProvider prov, Function modelFunc) { - prov.getVariantBuilder(ctx.getEntry()) - .forAllStates(state -> { - Axis axis = state.get(BlockStateProperties.HORIZONTAL_AXIS); - return ConfiguredModel.builder() - .modelFile(modelFunc.apply(state)) - .rotationY(axis == Axis.X ? 90 : 0) - .build(); - }); - } - - public static void directionalAxisBlock(DataGenContext ctx, - RegistrateBlockstateProvider prov, BiFunction modelFunc) { - prov.getVariantBuilder(ctx.getEntry()) - .forAllStates(state -> { - - boolean alongFirst = state.get(DirectionalAxisKineticBlock.AXIS_ALONG_FIRST_COORDINATE); - Direction direction = state.get(DirectionalAxisKineticBlock.FACING); - boolean vertical = direction.getAxis() - .isHorizontal() && (direction.getAxis() == Axis.X) == alongFirst; - int xRot = direction == Direction.DOWN ? 270 : direction == Direction.UP ? 90 : 0; - int yRot = direction.getAxis() - .isVertical() ? alongFirst ? 0 : 90 : (int) direction.getHorizontalAngle(); - - return ConfiguredModel.builder() - .modelFile(modelFunc.apply(state, vertical)) - .rotationX(xRot) - .rotationY(yRot) - .build(); - }); - } - - public static void horizontalWheel(DataGenContext ctx, - RegistrateBlockstateProvider prov, Function modelFunc) { - prov.getVariantBuilder(ctx.get()) - .forAllStates(state -> ConfiguredModel.builder() - .modelFile(modelFunc.apply(state)) - .rotationX(90) - .rotationY(((int) state.get(BlockStateProperties.HORIZONTAL_FACING) - .getHorizontalAngle() + 180) % 360) - .build()); - } - - public static void cubeAll(DataGenContext ctx, RegistrateBlockstateProvider prov, - String textureSubDir) { - cubeAll(ctx, prov, textureSubDir, ctx.getName()); - } - - public static void cubeAll(DataGenContext ctx, RegistrateBlockstateProvider prov, - String textureSubDir, String name) { - String texturePath = "block/" + textureSubDir + name; - prov.simpleBlock(ctx.get(), prov.models() - .cubeAll(ctx.getName(), prov.modLoc(texturePath))); - } - - public static void pavedBlock(DataGenContext ctx, RegistrateBlockstateProvider prov, - ModelFile top, ModelFile covered) { - prov.getVariantBuilder(ctx.getEntry()) - .forAllStates(state -> ConfiguredModel.builder() - .modelFile(state.get(PavedBlock.COVERED) ? covered : top) - .build()); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> cartAssembler() { - return (c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(state -> { - CartAssembleRailType type = state.get(CartAssemblerBlock.RAIL_TYPE); - Boolean powered = state.get(CartAssemblerBlock.POWERED); - RailShape shape = state.get(CartAssemblerBlock.RAIL_SHAPE); - int yRotation = shape == RailShape.EAST_WEST ? 270 : 0; - if (type == CartAssembleRailType.CONTROLLER_RAIL_BACKWARDS) { - yRotation += 180; - type = CartAssembleRailType.CONTROLLER_RAIL; - } - - return ConfiguredModel.builder() - .modelFile(p.models() - .getExistingFile(p.modLoc( - "block/" + c.getName() + "/block_" + type.getString() + (powered ? "_powered" : "")))) - .rotationY(yRotation % 360) - .build(); - }); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> blazeHeater() { - return (c, p) -> ConfiguredModel.builder() - .modelFile(p.models() - .getExistingFile(p.modLoc("block/" + c.getName() + "/block"))) - .build(); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> reinforcedRail() { - return (c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(state -> { - return ConfiguredModel.builder() - .modelFile(p.models() - .getExistingFile(p.modLoc( - "block/" + c.getName() + "/block" + (state.get(ReinforcedRailBlock.CONNECTS_S) ? "_s" : "") - + (state.get(ReinforcedRailBlock.CONNECTS_N) ? "_n" : "")))) - .rotationY(state.get(ReinforcedRailBlock.RAIL_SHAPE) == RailShape.EAST_WEST ? 90 : 0) - .build(); - }); - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> linearChassis() { - return (c, p) -> { - ResourceLocation side = p.modLoc("block/" + c.getName() + "_side"); - ResourceLocation top = p.modLoc("block/linear_chassis_end"); - ResourceLocation top_sticky = p.modLoc("block/linear_chassis_end_sticky"); - - Vector models = new Vector<>(4); - for (boolean isTopSticky : Iterate.trueAndFalse) - for (boolean isBottomSticky : Iterate.trueAndFalse) - models.add(p.models() - .withExistingParent( - c.getName() + (isTopSticky ? "_top" : "") + (isBottomSticky ? "_bottom" : ""), - "block/cube_bottom_top") - .texture("side", side) - .texture("bottom", isBottomSticky ? top_sticky : top) - .texture("top", isTopSticky ? top_sticky : top)); - BiFunction modelFunc = (t, b) -> models.get((t ? 0 : 2) + (b ? 0 : 1)); - - axisBlock(c, p, state -> modelFunc.apply(state.get(LinearChassisBlock.STICKY_TOP), - state.get(LinearChassisBlock.STICKY_BOTTOM))); - }; - } - - public static NonNullBiConsumer, RegistrateBlockstateProvider> radialChassis() { - return (c, p) -> { - String path = "block/" + c.getName(); - ResourceLocation side = p.modLoc(path + "_side"); - ResourceLocation side_sticky = p.modLoc(path + "_side_sticky"); - - String templateModelPath = "block/radial_chassis"; - ModelFile base = p.models() - .getExistingFile(p.modLoc(templateModelPath + "/base")); - Vector faces = new Vector<>(3); - Vector stickyFaces = new Vector<>(3); - - for (Axis axis : Iterate.axes) { - String suffix = "side_" + axis.getString(); - faces.add(p.models() - .withExistingParent("block/" + c.getName() + "_" + suffix, - p.modLoc(templateModelPath + "/" + suffix)) - .texture("side", side)); - } - for (Axis axis : Iterate.axes) { - String suffix = "side_" + axis.getString(); - stickyFaces.add(p.models() - .withExistingParent("block/" + c.getName() + "_" + suffix + "_sticky", - p.modLoc(templateModelPath + "/" + suffix)) - .texture("side", side_sticky)); - } - - MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get()); - BlockState propertyGetter = c.get() - .getDefaultState() - .with(RadialChassisBlock.AXIS, Axis.Y); - - for (Axis axis : Iterate.axes) - builder.part() - .modelFile(base) - .rotationX(axis != Axis.Y ? 90 : 0) - .rotationY(axis != Axis.X ? 0 : 90) - .addModel() - .condition(RadialChassisBlock.AXIS, axis) - .end(); - - for (Direction face : Iterate.horizontalDirections) { - for (boolean sticky : Iterate.trueAndFalse) { - for (Axis axis : Iterate.axes) { - int horizontalAngle = (int) (face.getHorizontalAngle()); - int index = axis.ordinal(); - int xRot = 0; - int yRot = 0; - - if (axis == Axis.X) - xRot = -horizontalAngle + 180; - if (axis == Axis.Y) - yRot = horizontalAngle; - if (axis == Axis.Z) { - yRot = -horizontalAngle + 270; - - // blockstates can't have zRot, so here we are - if (face.getAxis() == Axis.Z) { - index = 0; - xRot = horizontalAngle + 180; - yRot = 90; - } - } - - builder.part() - .modelFile((sticky ? stickyFaces : faces).get(index)) - .rotationX((xRot + 360) % 360) - .rotationY((yRot + 360) % 360) - .addModel() - .condition(RadialChassisBlock.AXIS, axis) - .condition(c.get() - .getGlueableSide(propertyGetter, face), sticky) - .end(); - } - } - } - }; - } - - public static

NonNullBiConsumer, RegistrateBlockstateProvider> encasedPipe() { - return (c, p) -> { - ModelFile open = AssetLookup.partialBaseModel(c, p, "open"); - ModelFile flat = AssetLookup.partialBaseModel(c, p, "flat"); - MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get()); - for (boolean flatPass : Iterate.trueAndFalse) - for (Direction d : Iterate.directions) { - int verticalAngle = d == Direction.UP ? 90 : d == Direction.DOWN ? -90 : 0; - builder.part() - .modelFile(flatPass ? flat : open) - .rotationX(verticalAngle) - .rotationY((int) (d.getHorizontalAngle() + (d.getAxis() - .isVertical() ? 90 : 0)) % 360) - .addModel() - .condition(EncasedPipeBlock.FACING_TO_PROPERTY_MAP.get(d), !flatPass) - .end(); - } - }; - } - - public static

NonNullBiConsumer, RegistrateBlockstateProvider> pipe() { - return (c, p) -> { - String path = "block/" + c.getName(); - - String LU = "lu"; - String RU = "ru"; - String LD = "ld"; - String RD = "rd"; - String LR = "lr"; - String UD = "ud"; - String NONE = "none"; - - List orientations = ImmutableList.of(LU, RU, LD, RD, LR, UD, NONE); - Map> uvs = ImmutableMap.>builder() - .put(LU, Pair.of(8, 12)) - .put(RU, Pair.of(0, 12)) - .put(LD, Pair.of(12, 8)) - .put(RD, Pair.of(8, 8)) - .put(LR, Pair.of(4, 12)) - .put(UD, Pair.of(0, 8)) - .put(NONE, Pair.of(12, 12)) - .build(); - - Map coreTemplates = new IdentityHashMap<>(); - Map, ModelFile> coreModels = new HashMap<>(); - - for (Axis axis : Iterate.axes) - coreTemplates.put(axis, p.modLoc(path + "/core_" + axis.getString())); - ModelFile end = AssetLookup.partialBaseModel(c, p, "end"); - - for (Axis axis : Iterate.axes) { - ResourceLocation parent = coreTemplates.get(axis); - for (String s : orientations) { - Pair key = Pair.of(s, axis); - String modelName = path + "/" + s + "_" + axis.getString(); - coreModels.put(key, p.models() - .withExistingParent(modelName, parent) - .element() - .from(4, 4, 4) - .to(12, 12, 12) - .face(Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis)) - .end() - .face(Direction.getFacingFromAxis(AxisDirection.NEGATIVE, axis)) - .end() - .faces((d, builder) -> { - Pair pair = uvs.get(s); - float u = pair.getKey(); - float v = pair.getValue(); - if (d == Direction.UP) - builder.uvs(u, v + 4, u + 4, v); - else if (d.getAxisDirection() == AxisDirection.POSITIVE) - builder.uvs(u + 4, v, u, v + 4); - else - builder.uvs(u, v, u + 4, v + 4); - builder.texture("#0"); - }) - .end()); - } - } - - MultiPartBlockStateBuilder builder = p.getMultipartBuilder(c.get()); - for (Direction d : Iterate.directions) - builder.part() - .modelFile(end) - .rotationX(d == Direction.UP ? 0 : d == Direction.DOWN ? 180 : 90) - .rotationY((int) (d.getHorizontalAngle() + 180) % 360) - .addModel() - .condition(FluidPipeBlock.FACING_TO_PROPERTY_MAP.get(d), true) - .end(); - - for (Axis axis : Iterate.axes) { - putPart(coreModels, builder, axis, LU, true, false, true, false); - putPart(coreModels, builder, axis, RU, true, false, false, true); - putPart(coreModels, builder, axis, LD, false, true, true, false); - putPart(coreModels, builder, axis, RD, false, true, false, true); - putPart(coreModels, builder, axis, UD, true, true, false, false); - putPart(coreModels, builder, axis, UD, true, false, false, false); - putPart(coreModels, builder, axis, UD, false, true, false, false); - putPart(coreModels, builder, axis, LR, false, false, true, true); - putPart(coreModels, builder, axis, LR, false, false, true, false); - putPart(coreModels, builder, axis, LR, false, false, false, true); - putPart(coreModels, builder, axis, NONE, false, false, false, false); - } - }; - } - - private static void putPart(Map, ModelFile> coreModels, MultiPartBlockStateBuilder builder, - Axis axis, String s, boolean up, boolean down, boolean left, boolean right) { - Direction positiveAxis = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - Map propertyMap = FluidPipeBlock.FACING_TO_PROPERTY_MAP; - builder.part() - .modelFile(coreModels.get(Pair.of(s, axis))) - .addModel() - .condition(propertyMap.get(Pointing.UP.getCombinedDirection(positiveAxis)), up) - .condition(propertyMap.get(Pointing.LEFT.getCombinedDirection(positiveAxis)), left) - .condition(propertyMap.get(Pointing.RIGHT.getCombinedDirection(positiveAxis)), right) - .condition(propertyMap.get(Pointing.DOWN.getCombinedDirection(positiveAxis)), down) - .end(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java deleted file mode 100644 index 5a110f8b7..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ /dev/null @@ -1,219 +0,0 @@ -package com.simibubi.create.foundation.data; - -import static com.simibubi.create.foundation.data.BlockStateGen.axisBlock; -import static com.simibubi.create.foundation.data.CreateRegistrate.casingConnectivity; -import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; - -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllTags.AllBlockTags; -import com.simibubi.create.AllTags.AllItemTags; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.base.CasingBlock; -import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonGenerator; -import com.simibubi.create.content.contraptions.relays.encased.EncasedCTBehaviour; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock.Shape; -import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelItem; -import com.simibubi.create.content.logistics.block.inventories.CrateBlock; -import com.simibubi.create.foundation.block.ItemUseOverrides; -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.config.StressConfigDefaults; -import com.tterrag.registrate.builders.BlockBuilder; -import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; - -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.item.DyeColor; -import net.minecraft.item.Rarity; -import net.minecraft.state.properties.PistonType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.generators.ConfiguredModel; -import net.minecraftforge.client.model.generators.ModelFile; - -public class BuilderTransformers { - - public static NonNullUnaryOperator> cuckooClock() { - return b -> b.initialProperties(SharedProperties::wooden) - .blockstate((c, p) -> p.horizontalBlock(c.get(), p.models() - .getExistingFile(p.modLoc("block/cuckoo_clock/block")))) - .addLayer(() -> RenderType::getCutoutMipped) - .transform(StressConfigDefaults.setImpact(1.0)) - .item() - .transform(ModelGen.customItemModel("cuckoo_clock", "item")); - } - - public static NonNullUnaryOperator> encasedShaft(String casing, - CTSpriteShiftEntry casingShift) { - return builder -> builder.initialProperties(SharedProperties::stone) - .properties(Block.Properties::nonOpaque) - .onRegister(CreateRegistrate.connectedTextures(new EncasedCTBehaviour(casingShift))) - .onRegister(CreateRegistrate.casingConnectivity( - (block, cc) -> cc.make(block, casingShift, (s, f) -> f.getAxis() != s.get(EncasedShaftBlock.AXIS)))) - .blockstate((c, p) -> axisBlock(c, p, blockState -> p.models() - .getExistingFile(p.modLoc("block/encased_shaft/block_" + casing)), true)) - .transform(StressConfigDefaults.setNoImpact()) - .loot((p, b) -> p.registerDropping(b, AllBlocks.SHAFT.get())) - .item() - .model(AssetLookup.customBlockItemModel("encased_shaft", "item_" + casing)) - .build(); - } - - public static NonNullUnaryOperator> valveHandle( - @Nullable DyeColor color) { - return b -> b.initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> { - String variant = color == null ? "copper" : color.getString(); - p.directionalBlock(c.get(), p.models() - .withExistingParent(variant + "_valve_handle", p.modLoc("block/valve_handle")) - .texture("3", p.modLoc("block/valve_handle/valve_handle_" + variant))); - }) - .tag(AllBlockTags.BRITTLE.tag, AllBlockTags.VALVE_HANDLES.tag) - .onRegister(ItemUseOverrides::addBlock) - .item() - .tag(AllItemTags.VALVE_HANDLES.tag) - .build(); - } - - public static NonNullUnaryOperator> casing( - CTSpriteShiftEntry ct) { - return b -> b.initialProperties(SharedProperties::stone) - .blockstate((c, p) -> p.simpleBlock(c.get())) - .onRegister(connectedTextures(new EncasedCTBehaviour(ct))) - .onRegister(casingConnectivity((block, cc) -> cc.makeCasing(block, ct))) - .simpleItem(); - } - - public static NonNullUnaryOperator> beltTunnel( - String type, ResourceLocation particleTexture) { - return b -> b.initialProperties(SharedProperties::stone) - .addLayer(() -> RenderType::getCutoutMipped) - .properties(Block.Properties::nonOpaque) - .blockstate((c, p) -> p.getVariantBuilder(c.get()) - .forAllStates(state -> { - String id = "block/" + type + "_tunnel"; - Shape shape = state.get(BeltTunnelBlock.SHAPE); - if (shape == BeltTunnelBlock.Shape.CLOSED) - shape = BeltTunnelBlock.Shape.STRAIGHT; - String shapeName = shape.getString(); - return ConfiguredModel.builder() - .modelFile(p.models() - .withExistingParent(id + "/" + shapeName, p.modLoc("block/belt_tunnel/" + shapeName)) - .texture("1", p.modLoc(id + "_top")) - .texture("2", p.modLoc(id)) - .texture("3", p.modLoc(id + "_top_window")) - .texture("particle", particleTexture)) - .rotationY(state.get(BeltTunnelBlock.HORIZONTAL_AXIS) == Axis.X ? 0 : 90) - .build(); - })) - .item(BeltTunnelItem::new) - .model((c, p) -> { - String id = type + "_tunnel"; - p.withExistingParent("item/" + id, p.modLoc("block/belt_tunnel/item")) - .texture("1", p.modLoc("block/" + id + "_top")) - .texture("2", p.modLoc("block/" + id)) - .texture("particle", particleTexture); - }) - .build(); - } - - public static NonNullUnaryOperator> mechanicalPiston(PistonType type) { - return b -> b.initialProperties(SharedProperties::stone) - .properties(p -> p.nonOpaque()) - .blockstate(new MechanicalPistonGenerator(type)::generate) - .addLayer(() -> RenderType::getCutoutMipped) - .transform(StressConfigDefaults.setImpact(4.0)) - .item() - .transform(ModelGen.customItemModel("mechanical_piston", type.getString(), "item")); - } - - public static NonNullUnaryOperator> bearing(String prefix, - String backTexture, boolean woodenTop) { - ResourceLocation baseBlockModelLocation = Create.asResource("block/bearing/block"); - ResourceLocation baseItemModelLocation = Create.asResource("block/bearing/item"); - ResourceLocation topTextureLocation = Create.asResource("block/bearing_top" + (woodenTop ? "_wooden" : "")); - ResourceLocation nookTextureLocation = - Create.asResource("block/" + (woodenTop ? "andesite" : "brass") + "_casing"); - ResourceLocation sideTextureLocation = Create.asResource("block/" + prefix + "_bearing_side"); - ResourceLocation backTextureLocation = Create.asResource("block/" + backTexture); - return b -> b.initialProperties(SharedProperties::stone) - .properties(p -> p.nonOpaque()) - .blockstate((c, p) -> p.directionalBlock(c.get(), p.models() - .withExistingParent(c.getName(), baseBlockModelLocation) - .texture("side", sideTextureLocation) - .texture("nook", nookTextureLocation) - .texture("back", backTextureLocation))) - .item() - .model((c, p) -> p.withExistingParent(c.getName(), baseItemModelLocation) - .texture("top", topTextureLocation) - .texture("side", sideTextureLocation) - .texture("back", backTextureLocation)) - .build(); - } - - public static NonNullUnaryOperator> crate(String type) { - return b -> b.initialProperties(SharedProperties::stone) - .blockstate((c, p) -> { - String[] variants = { "single", "top", "bottom", "left", "right" }; - Map models = new HashMap<>(); - - ResourceLocation crate = p.modLoc("block/crate_" + type); - ResourceLocation side = p.modLoc("block/crate_" + type + "_side"); - ResourceLocation casing = p.modLoc("block/" + type + "_casing"); - - for (String variant : variants) - models.put(variant, p.models() - .withExistingParent("block/crate/" + type + "/" + variant, p.modLoc("block/crate/" + variant)) - .texture("crate", crate) - .texture("side", side) - .texture("casing", casing)); - - p.getVariantBuilder(c.get()) - .forAllStates(state -> { - String variant = "single"; - int yRot = 0; - - if (state.get(CrateBlock.DOUBLE)) { - Direction direction = state.get(CrateBlock.FACING); - if (direction.getAxis() == Axis.X) - yRot = 90; - - switch (direction) { - case DOWN: - variant = "top"; - break; - case NORTH: - case EAST: - variant = "right"; - break; - case UP: - variant = "bottom"; - break; - case SOUTH: - case WEST: - default: - variant = "left"; - - } - } - - return ConfiguredModel.builder() - .modelFile(models.get(variant)) - .rotationY(yRot) - .build(); - }); - }) - .item() - .properties(p -> type.equals("creative") ? p.rarity(Rarity.EPIC) : p) - .transform(ModelGen.customItemModel("crate", type, "single")); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java b/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java deleted file mode 100644 index 5123d9a79..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/CreateRegistrate.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.simibubi.create.foundation.data; - -import java.util.Collection; -import java.util.IdentityHashMap; -import java.util.Map; -import java.util.Map.Entry; -import java.util.function.BiConsumer; -import java.util.function.BiFunction; -import java.util.function.Supplier; -import java.util.stream.Collectors; - -import com.simibubi.create.Create; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.AllSections; -import com.simibubi.create.content.contraptions.fluids.VirtualFluid; -import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; -import com.simibubi.create.foundation.block.connected.CTModel; -import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; -import com.simibubi.create.foundation.block.render.ColoredVertexModel; -import com.simibubi.create.foundation.block.render.IBlockVertexColor; -import com.simibubi.create.foundation.item.render.CustomRenderedItemModel; -import com.tterrag.registrate.AbstractRegistrate; -import com.tterrag.registrate.builders.BlockBuilder; -import com.tterrag.registrate.builders.Builder; -import com.tterrag.registrate.builders.FluidBuilder; -import com.tterrag.registrate.builders.ItemBuilder; -import com.tterrag.registrate.util.NonNullLazyValue; -import com.tterrag.registrate.util.entry.RegistryEntry; -import com.tterrag.registrate.util.nullness.NonNullBiFunction; -import com.tterrag.registrate.util.nullness.NonNullConsumer; -import com.tterrag.registrate.util.nullness.NonNullFunction; -import com.tterrag.registrate.util.nullness.NonNullSupplier; -import com.tterrag.registrate.util.nullness.NonNullUnaryOperator; - -import net.minecraft.block.AbstractBlock.Properties; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.Item; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.FluidAttributes; -import net.minecraftforge.fluids.ForgeFlowingFluid; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.RegistryObject; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import net.minecraftforge.registries.IForgeRegistryEntry; - -public class CreateRegistrate extends AbstractRegistrate { - - protected CreateRegistrate(String modid) { - super(modid); - } - - public static NonNullLazyValue lazy(String modid) { - return new NonNullLazyValue<>( - () -> new CreateRegistrate(modid).registerEventListeners(FMLJavaModLoadingContext.get() - .getModEventBus())); - } - - /* Section Tracking */ - - private static Map, AllSections> sectionLookup = new IdentityHashMap<>(); - private AllSections section; - - public CreateRegistrate startSection(AllSections section) { - this.section = section; - return this; - } - - public AllSections currentSection() { - return section; - } - - @Override - protected , T extends R> RegistryEntry accept(String name, - Class type, Builder builder, NonNullSupplier creator, - NonNullFunction, ? extends RegistryEntry> entryFactory) { - RegistryEntry ret = super.accept(name, type, builder, creator, entryFactory); - sectionLookup.put(ret, currentSection()); - return ret; - } - - public void addToSection(RegistryEntry entry, AllSections section) { - sectionLookup.put(entry, section); - } - - public AllSections getSection(RegistryEntry entry) { - return sectionLookup.getOrDefault(entry, AllSections.UNASSIGNED); - } - - public AllSections getSection(IForgeRegistryEntry entry) { - return sectionLookup.entrySet() - .stream() - .filter(e -> e.getKey() - .get() == entry) - .map(Entry::getValue) - .findFirst() - .orElse(AllSections.UNASSIGNED); - } - - public > Collection> getAll(AllSections section, - Class registryType) { - return this.getAll(registryType) - .stream() - .filter(e -> getSection(e) == section) - .collect(Collectors.toList()); - } - - public CreateTileEntityBuilder tileEntity(String name, - NonNullFunction, ? extends T> factory) { - return this.tileEntity(this.self(), name, factory); - } - - @Override - public CreateTileEntityBuilder tileEntity(P parent, String name, - NonNullFunction, ? extends T> factory) { - return (CreateTileEntityBuilder) this.entry(name, (callback) -> { - return CreateTileEntityBuilder.create(this, parent, name, callback, factory); - }); - } - - /* Palettes */ - - public BlockBuilder baseBlock(String name, - NonNullFunction factory, NonNullSupplier propertiesFrom, boolean TFworldGen) { - return super.block(name, factory).initialProperties(propertiesFrom) - .blockstate((c, p) -> { - final String location = "block/palettes/" + c.getName() + "/plain"; - p.simpleBlock(c.get(), p.models() - .cubeAll(c.getName(), p.modLoc(location))); - // TODO tag with forge:stone; if TFWorldGen == true tag with forge:wg_stone - // aswell - }) - .simpleItem(); - } - - /* Fluids */ - - public FluidBuilder virtualFluid(String name, - BiFunction attributesFactory, - NonNullFunction factory) { - return entry(name, - c -> new VirtualFluidBuilder<>(self(), self(), name, c, Create.asResource("fluid/" + name + "_still"), - Create.asResource("fluid/" + name + "_flow"), attributesFactory, factory)); - } - - public FluidBuilder virtualFluid(String name) { - return entry(name, - c -> new VirtualFluidBuilder<>(self(), self(), name, c, Create.asResource("fluid/" + name + "_still"), - Create.asResource("fluid/" + name + "_flow"), null, VirtualFluid::new)); - } - - public FluidBuilder standardFluid(String name) { - return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow")); - } - - public FluidBuilder standardFluid(String name, - NonNullBiFunction attributesFactory) { - return fluid(name, Create.asResource("fluid/" + name + "_still"), Create.asResource("fluid/" + name + "_flow"), - attributesFactory); - } - - /* Util */ - - public static NonNullConsumer connectedTextures(ConnectedTextureBehaviour behavior) { - return entry -> onClient(() -> () -> registerCTBehviour(entry, behavior)); - } - - public static NonNullConsumer casingConnectivity( - BiConsumer consumer) { - return entry -> onClient(() -> () -> registerCasingConnectivity(entry, consumer)); - } - - public static NonNullConsumer blockVertexColors(IBlockVertexColor colorFunc) { - return entry -> onClient(() -> () -> registerBlockVertexColor(entry, colorFunc)); - } - - public static NonNullConsumer blockModel( - Supplier> func) { - return entry -> onClient(() -> () -> registerBlockModel(entry, func)); - } - - public static NonNullConsumer itemModel( - Supplier> func) { - return entry -> onClient(() -> () -> registerItemModel(entry, func)); - } - - public static NonNullUnaryOperator> customRenderedItem( - Supplier> func) { - return b -> b.properties(p -> p.setISTER(() -> () -> func.get() - .apply(null) - .createRenderer())) - .onRegister(entry -> onClient(() -> () -> registerCustomRenderedItem(entry, func))); - } - - protected static void onClient(Supplier toRun) { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, toRun); - } - - @OnlyIn(Dist.CLIENT) - private static void registerCTBehviour(Block entry, ConnectedTextureBehaviour behavior) { - CreateClient.getCustomBlockModels() - .register(entry.delegate, model -> new CTModel(model, behavior)); - } - - @OnlyIn(Dist.CLIENT) - private static void registerCasingConnectivity(T entry, - BiConsumer consumer) { - consumer.accept(entry, CreateClient.getCasingConnectivity()); - } - - @OnlyIn(Dist.CLIENT) - private static void registerBlockVertexColor(Block entry, IBlockVertexColor colorFunc) { - CreateClient.getCustomBlockModels() - .register(entry.delegate, model -> new ColoredVertexModel(model, colorFunc)); - } - - @OnlyIn(Dist.CLIENT) - private static void registerBlockModel(Block entry, - Supplier> func) { - CreateClient.getCustomBlockModels() - .register(entry.delegate, func.get()); - } - - @OnlyIn(Dist.CLIENT) - private static void registerItemModel(Item entry, - Supplier> func) { - CreateClient.getCustomItemModels() - .register(entry.delegate, func.get()); - } - - @OnlyIn(Dist.CLIENT) - private static void registerCustomRenderedItem(Item entry, - Supplier> func) { - CreateClient.getCustomRenderedItems() - .register(entry.delegate, func.get()); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java b/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java deleted file mode 100644 index f507fc5aa..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/CreateTileEntityBuilder.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.foundation.data; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry; -import com.jozufozu.flywheel.backend.instancing.tile.ITileInstanceFactory; -import com.tterrag.registrate.AbstractRegistrate; -import com.tterrag.registrate.builders.BuilderCallback; -import com.tterrag.registrate.builders.TileEntityBuilder; -import com.tterrag.registrate.util.OneTimeEventReceiver; -import com.tterrag.registrate.util.nullness.NonNullFunction; -import com.tterrag.registrate.util.nullness.NonNullSupplier; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.fml.DistExecutor; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; - -public class CreateTileEntityBuilder extends TileEntityBuilder { - - @Nullable - private NonNullSupplier> instanceFactory; - - public static TileEntityBuilder create(AbstractRegistrate owner, P parent, - String name, BuilderCallback callback, NonNullFunction, ? extends T> factory) { - return new CreateTileEntityBuilder<>(owner, parent, name, callback, factory); - } - - protected CreateTileEntityBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, - NonNullFunction, ? extends T> factory) { - super(owner, parent, name, callback, factory); - } - - public CreateTileEntityBuilder instance(NonNullSupplier> instanceFactory) { - if (this.instanceFactory == null) { - DistExecutor.runWhenOn(Dist.CLIENT, () -> this::registerInstance); - } - - this.instanceFactory = instanceFactory; - - return this; - } - - protected void registerInstance() { - OneTimeEventReceiver.addModListener(FMLClientSetupEvent.class, ($) -> { - NonNullSupplier> instanceFactory = this.instanceFactory; - if (instanceFactory != null) { - InstancedRenderRegistry.getInstance().register(getEntry(), instanceFactory.get()); - } - - }); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/data/DirectionalAxisBlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/DirectionalAxisBlockStateGen.java deleted file mode 100644 index 64512db71..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/DirectionalAxisBlockStateGen.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simibubi.create.foundation.data; - -import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraftforge.client.model.generators.ModelFile; - -public abstract class DirectionalAxisBlockStateGen extends SpecialBlockStateGen { - - @Override - protected int getXRotation(BlockState state) { - Direction direction = state.get(GaugeBlock.FACING); - boolean alongFirst = state.get(GaugeBlock.AXIS_ALONG_FIRST_COORDINATE); - - if (direction == Direction.DOWN) - return 180; - if (direction == Direction.UP) - return 0; - if ((direction.getAxis() == Axis.X) == alongFirst) - return 90; - - return 0; - } - - @Override - protected int getYRotation(BlockState state) { - Direction direction = state.get(GaugeBlock.FACING); - boolean alongFirst = state.get(GaugeBlock.AXIS_ALONG_FIRST_COORDINATE); - - if (direction.getAxis() - .isVertical()) - return alongFirst ? 90 : 0; - - return horizontalAngle(direction) + 90; - } - - public abstract String getModelPrefix(DataGenContext ctx, - RegistrateBlockstateProvider prov, BlockState state); - - @Override - public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, - BlockState state) { - boolean vertical = state.get(GaugeBlock.FACING) - .getAxis() - .isVertical(); - String partial = vertical ? "" : "_wall"; - return prov.models() - .getExistingFile(prov.modLoc(getModelPrefix(ctx, prov, state) + partial)); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/LangMerger.java b/src/main/java/com/simibubi/create/foundation/data/LangMerger.java deleted file mode 100644 index b1f717bfa..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/LangMerger.java +++ /dev/null @@ -1,293 +0,0 @@ -package com.simibubi.create.foundation.data; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Objects; - -import org.apache.commons.lang3.mutable.MutableInt; -import org.apache.commons.lang3.mutable.MutableObject; -import org.apache.commons.lang3.tuple.Pair; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.utility.FilesHelper; - -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DirectoryCache; -import net.minecraft.data.IDataProvider; -import net.minecraft.util.JSONUtils; - -public class LangMerger implements IDataProvider { - - private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting() - .disableHtmlEscaping() - .create(); - static final String CATEGORY_HEADER = "\t\"_\": \"->------------------------] %s [------------------------<-\","; - - private DataGenerator gen; - - private List mergedLangData; - private Map> populatedLangData; - private Map> allLocalizedEntries; - private Map missingTranslationTally; - - private List langIgnore; - - public LangMerger(DataGenerator gen) { - this.gen = gen; - this.mergedLangData = new ArrayList<>(); - this.langIgnore = new ArrayList<>(); - this.allLocalizedEntries = new HashMap<>(); - this.populatedLangData = new HashMap<>(); - this.missingTranslationTally = new HashMap<>(); - populateLangIgnore(); - } - - private void populateLangIgnore() { - // Key prefixes added here will NOT be transferred to lang templates - langIgnore.add("create.ponder.debug_"); // Ponder debug scene text - } - - private boolean shouldIgnore(String key) { - for (String string : langIgnore) - if (key.startsWith(string)) - return true; - return false; - } - - @Override - public String getName() { - return "Lang merger"; - } - - @Override - public void act(DirectoryCache cache) throws IOException { - Path path = this.gen.getOutputFolder() - .resolve("assets/" + Create.ID + "/lang/" + "en_us.json"); - - for (Pair pair : getAllLocalizationFiles()) { - if (!pair.getRight() - .isJsonObject()) - continue; - Map localizedEntries = new HashMap<>(); - JsonObject jsonobject = pair.getRight() - .getAsJsonObject(); - jsonobject.entrySet() - .stream() - .forEachOrdered(entry -> { - String key = entry.getKey(); - if (key.startsWith("_")) - return; - String value = entry.getValue() - .getAsString(); - localizedEntries.put(key, value); - }); - String key = pair.getKey(); - allLocalizedEntries.put(key, localizedEntries); - populatedLangData.put(key, new ArrayList<>()); - missingTranslationTally.put(key, new MutableInt(0)); - } - - collectExistingEntries(path); - collectEntries(); - if (mergedLangData.isEmpty()) - return; - - save(cache, mergedLangData, -1, path, "Merging en_us.json with hand-written lang entries..."); - for (Entry> localization : populatedLangData.entrySet()) { - String key = localization.getKey(); - Path populatedLangPath = this.gen.getOutputFolder() - .resolve("assets/" + Create.ID + "/lang/unfinished/" + key); - save(cache, localization.getValue(), missingTranslationTally.get(key) - .intValue(), populatedLangPath, "Populating " + key + " with missing entries..."); - } - } - - private void collectExistingEntries(Path path) throws IOException { - if (!Files.exists(path)) { - Create.LOGGER.warn("Nothing to merge! It appears no lang was generated before me."); - return; - } - - try (BufferedReader reader = Files.newBufferedReader(path)) { - JsonObject jsonobject = JSONUtils.fromJson(GSON, reader, JsonObject.class); - addAll("Game Elements", jsonobject); - reader.close(); - } - } - - protected void addAll(String header, JsonObject jsonobject) { - if (jsonobject == null) - return; - header = String.format(CATEGORY_HEADER, header); - - writeData("\n"); - writeData(header); - writeData("\n\n"); - - MutableObject previousKey = new MutableObject<>(""); - jsonobject.entrySet() - .stream() - .forEachOrdered(entry -> { - String key = entry.getKey(); - if (shouldIgnore(key)) - return; - String value = entry.getValue() - .getAsString(); - if (!previousKey.getValue() - .isEmpty() && shouldAddLineBreak(key, previousKey.getValue())) - writeData("\n"); - writeEntry(key, value); - previousKey.setValue(key); - }); - - writeData("\n"); - } - - private void writeData(String data) { - mergedLangData.add(data); - populatedLangData.values() - .forEach(l -> l.add(data)); - } - - private void writeEntry(String key, String value) { - mergedLangData.add(new LangEntry(key, value)); - populatedLangData.forEach((k, l) -> { - ForeignLangEntry entry = new ForeignLangEntry(key, value, allLocalizedEntries.get(k)); - if (entry.isMissing()) - missingTranslationTally.get(k) - .increment(); - l.add(entry); - }); - } - - protected boolean shouldAddLineBreak(String key, String previousKey) { - // Always put tooltips and ponder scenes in their own paragraphs - if (key.endsWith(".tooltip")) - return true; - if (key.startsWith("create.ponder") && key.endsWith(PonderScene.TITLE_KEY)) - return true; - - key = key.replaceFirst("\\.", ""); - previousKey = previousKey.replaceFirst("\\.", ""); - - String[] split = key.split("\\."); - String[] split2 = previousKey.split("\\."); - if (split.length == 0 || split2.length == 0) - return false; - - // Start new paragraph if keys before second point do not match - return !split[0].equals(split2[0]); - } - - private List> getAllLocalizationFiles() { - ArrayList> list = new ArrayList<>(); - - String filepath = "assets/" + Create.ID + "/lang/"; - try { - InputStream resourceAsStream = Create.class.getClassLoader() - .getResourceAsStream(filepath); - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(resourceAsStream)); - while (true) { - String readLine = bufferedReader.readLine(); - if (readLine == null) - break; - if (!readLine.endsWith(".json")) - continue; - if (readLine.startsWith("en_us") || readLine.startsWith("en_ud")) - continue; - list.add(Pair.of(readLine, FilesHelper.loadJsonResource(filepath + "/" + readLine))); - } - resourceAsStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - return list; - } - - private void collectEntries() { - for (AllLangPartials partial : AllLangPartials.values()) - addAll(partial.getDisplay(), partial.provide() - .getAsJsonObject()); - } - - private void save(DirectoryCache cache, List dataIn, int missingKeys, Path target, String message) - throws IOException { - String data = createString(dataIn, missingKeys); -// data = JavaUnicodeEscaper.outsideOf(0, 0x7f) -// .translate(data); - String hash = IDataProvider.HASH_FUNCTION.hashUnencodedChars(data) - .toString(); - if (!Objects.equals(cache.getPreviousHash(target), hash) || !Files.exists(target)) { - Files.createDirectories(target.getParent()); - - try (BufferedWriter bufferedwriter = Files.newBufferedWriter(target)) { - Create.LOGGER.info(message); - bufferedwriter.write(data); - bufferedwriter.close(); - } - } - - cache.recordHash(target, hash); - } - - protected String createString(List data, int missingKeys) { - StringBuilder builder = new StringBuilder(); - builder.append("{\n"); - if (missingKeys != -1) - builder.append("\t\"_\": \"Missing Localizations: " + missingKeys + "\",\n"); - data.forEach(builder::append); - builder.append("\t\"_\": \"Thank you for translating Create!\"\n\n"); - builder.append("}"); - return builder.toString(); - } - - private class LangEntry { - static final String ENTRY_FORMAT = "\t\"%s\": %s,\n"; - - private String key; - private String value; - - LangEntry(String key, String value) { - this.key = key; - this.value = value; - } - - @Override - public String toString() { - return String.format(ENTRY_FORMAT, key, GSON.toJson(value, String.class)); - } - - } - - private class ForeignLangEntry extends LangEntry { - - private boolean missing; - - ForeignLangEntry(String key, String value, Map localizationMap) { - super(key, localizationMap.getOrDefault(key, "UNLOCALIZED: " + value)); - missing = !localizationMap.containsKey(key); - } - - public boolean isMissing() { - return missing; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/ModelGen.java b/src/main/java/com/simibubi/create/foundation/data/ModelGen.java deleted file mode 100644 index ff8cf6679..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/ModelGen.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.foundation.data; - -import com.simibubi.create.Create; -import com.tterrag.registrate.builders.ItemBuilder; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.util.nullness.NonNullFunction; - -import net.minecraft.block.Block; -import net.minecraft.item.BlockItem; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.generators.BlockStateProvider; -import net.minecraftforge.client.model.generators.ModelFile; - -public class ModelGen { - - public static ModelFile createOvergrown(DataGenContext ctx, BlockStateProvider prov, - ResourceLocation block, ResourceLocation overlay) { - return createOvergrown(ctx, prov, block, block, block, overlay); - } - - public static ModelFile createOvergrown(DataGenContext ctx, BlockStateProvider prov, - ResourceLocation side, ResourceLocation top, ResourceLocation bottom, ResourceLocation overlay) { - return prov.models() - .withExistingParent(ctx.getName(), new ResourceLocation(Create.ID, "block/overgrown")) - .texture("particle", side) - .texture("side", side) - .texture("top", top) - .texture("bottom", bottom) - .texture("overlay", overlay); - } - - public static NonNullFunction, P> oxidizedItemModel() { - return b -> b - .model((ctx, prov) -> prov.withExistingParent(ctx.getName(), - prov.modLoc(AssetLookup.getOxidizedModel(ctx.getName(), 0)))) - .build(); - } - - public static NonNullFunction, P> customItemModel() { - return b -> b.model(AssetLookup::customItemModel) - .build(); - } - - public static NonNullFunction, P> customItemModel(String... path) { - return b -> b.model(AssetLookup.customBlockItemModel(path)) - .build(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/NamedTag.java b/src/main/java/com/simibubi/create/foundation/data/NamedTag.java deleted file mode 100644 index 066552663..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/NamedTag.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.foundation.data; - -import java.util.Collections; -import java.util.List; - -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.tags.ITag; -import net.minecraft.util.ResourceLocation; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class NamedTag implements ITag.INamedTag { - private final ResourceLocation id; - private final ITag tag; - - public NamedTag(@Nullable ITag tag, ResourceLocation id) { - this.tag = tag; - this.id = id; - } - - @Override - public ResourceLocation getId() { - return id; - } - - @Override - public boolean contains(T p_230235_1_) { - if (tag == null) - return false; - return tag.contains(p_230235_1_); - } - - @Override - public List values() { - if (tag == null) - return Collections.emptyList(); - return tag.values(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java b/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java deleted file mode 100644 index f685c4368..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/SharedProperties.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.foundation.data; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.block.material.Material; -import net.minecraft.block.material.MaterialColor; -import net.minecraft.block.material.PushReaction; - -@MethodsReturnNonnullByDefault -public class SharedProperties { - public static Material beltMaterial = - new Material(MaterialColor.GRAY, false, true, true, true, false, false, PushReaction.NORMAL); - - public static Block stone() { - return Blocks.ANDESITE; - } - - public static Block softMetal() { - return Blocks.GOLD_BLOCK; - } - - public static Block wooden() { - return Blocks.STRIPPED_SPRUCE_WOOD; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java b/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java deleted file mode 100644 index 98aea3c9c..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/SpecialBlockStateGen.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.simibubi.create.foundation.data; - -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.state.Property; -import net.minecraft.util.Direction; -import net.minecraftforge.client.model.generators.ConfiguredModel; -import net.minecraftforge.client.model.generators.ModelFile; - -public abstract class SpecialBlockStateGen { - - protected Property[] getIgnoredProperties() { - return new Property[0]; - } - - public final void generate(DataGenContext ctx, RegistrateBlockstateProvider prov) { - prov.getVariantBuilder(ctx.getEntry()) - .forAllStatesExcept(state -> { - return ConfiguredModel.builder() - .modelFile(getModel(ctx, prov, state)) - .rotationX((getXRotation(state) + 360) % 360) - .rotationY((getYRotation(state) + 360) % 360) - .build(); - }, getIgnoredProperties()); - } - - protected int horizontalAngle(Direction direction) { - if (direction.getAxis() - .isVertical()) - return 0; - return (int) direction.getHorizontalAngle(); - } - - protected abstract int getXRotation(BlockState state); - - protected abstract int getYRotation(BlockState state); - - public abstract ModelFile getModel(DataGenContext ctx, - RegistrateBlockstateProvider prov, BlockState state); - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/VirtualFluidBuilder.java b/src/main/java/com/simibubi/create/foundation/data/VirtualFluidBuilder.java deleted file mode 100644 index 916f3eeb9..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/VirtualFluidBuilder.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.foundation.data; - -import java.util.function.BiFunction; - -import com.tterrag.registrate.AbstractRegistrate; -import com.tterrag.registrate.builders.BuilderCallback; -import com.tterrag.registrate.builders.FluidBuilder; -import com.tterrag.registrate.util.nullness.NonNullFunction; -import com.tterrag.registrate.util.nullness.NonNullSupplier; - -import net.minecraft.fluid.Fluid; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidAttributes; -import net.minecraftforge.fluids.ForgeFlowingFluid; -import net.minecraftforge.fluids.ForgeFlowingFluid.Properties; - -/** - * For registering fluids with no buckets/blocks - */ -public class VirtualFluidBuilder extends FluidBuilder { - - public VirtualFluidBuilder(AbstractRegistrate owner, P parent, String name, BuilderCallback callback, - ResourceLocation stillTexture, ResourceLocation flowingTexture, - BiFunction attributesFactory, - NonNullFunction factory) { - super(owner, parent, name, callback, stillTexture, flowingTexture, attributesFactory, factory); - source(factory); - } - - @Override - public NonNullSupplier asSupplier() { - return this::getEntry; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/WindowGen.java b/src/main/java/com/simibubi/create/foundation/data/WindowGen.java deleted file mode 100644 index 3aabbe3d3..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/WindowGen.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.simibubi.create.foundation.data; - -import static com.simibubi.create.foundation.data.CreateRegistrate.connectedTextures; - -import java.util.function.Function; -import java.util.function.Supplier; - -import com.simibubi.create.AllSpriteShifts; -import com.simibubi.create.Create; -import com.simibubi.create.content.palettes.ConnectedGlassBlock; -import com.simibubi.create.content.palettes.ConnectedGlassPaneBlock; -import com.simibubi.create.content.palettes.GlassPaneBlock; -import com.simibubi.create.content.palettes.WindowBlock; -import com.simibubi.create.foundation.block.connected.CTSpriteShiftEntry; -import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour; -import com.simibubi.create.foundation.block.connected.GlassPaneCTBehaviour; -import com.simibubi.create.foundation.block.connected.HorizontalCTBehaviour; -import com.tterrag.registrate.providers.DataGenContext; -import com.tterrag.registrate.providers.RegistrateBlockstateProvider; -import com.tterrag.registrate.util.DataIngredient; -import com.tterrag.registrate.util.entry.BlockEntry; -import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import com.tterrag.registrate.util.nullness.NonNullConsumer; -import com.tterrag.registrate.util.nullness.NonNullFunction; - -import net.minecraft.block.AbstractBlock.Properties; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.WoodType; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.data.ShapedRecipeBuilder; -import net.minecraft.entity.EntityType; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraftforge.client.model.generators.ModelFile; -import net.minecraftforge.common.Tags; - -public class WindowGen { - - private static final CreateRegistrate REGISTRATE = Create.registrate(); - - private static Properties glassProperties(Properties p) { - return p.allowsSpawning(WindowGen::never) - .solidBlock(WindowGen::never) - .suffocates(WindowGen::never) - .blockVision(WindowGen::never); - } - - private static boolean never(BlockState p_235436_0_, IBlockReader p_235436_1_, BlockPos p_235436_2_) { - return false; - } - - private static Boolean never(BlockState p_235427_0_, IBlockReader p_235427_1_, BlockPos p_235427_2_, - EntityType p_235427_3_) { - return false; - } - - public static BlockEntry woodenWindowBlock(WoodType woodType, Block planksBlock) { - return woodenWindowBlock(woodType, planksBlock, () -> RenderType::getCutoutMipped); - } - - public static BlockEntry customWindowBlock(String name, Supplier ingredient, - CTSpriteShiftEntry ct, Supplier> renderType) { - NonNullFunction end_texture = n -> Create.asResource(palettesDir() + name + "_end"); - NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); - return windowBlock(name, ingredient, ct, renderType, end_texture, side_texture); - } - - public static BlockEntry woodenWindowBlock(WoodType woodType, Block planksBlock, - Supplier> renderType) { - String woodName = woodType.getName(); - String name = woodName + "_window"; - NonNullFunction end_texture = - $ -> new ResourceLocation("block/" + woodName + "_planks"); - NonNullFunction side_texture = n -> Create.asResource(palettesDir() + n); - return windowBlock(name, () -> planksBlock, AllSpriteShifts.getWoodenWindow(woodType), renderType, end_texture, - side_texture); - } - - public static BlockEntry windowBlock(String name, Supplier ingredient, - CTSpriteShiftEntry ct, Supplier> renderType, - NonNullFunction endTexture, NonNullFunction sideTexture) { - return REGISTRATE.block(name, WindowBlock::new) - .onRegister(connectedTextures(new HorizontalCTBehaviour(ct))) - .addLayer(renderType) - .recipe((c, p) -> ShapedRecipeBuilder.shapedRecipe(c.get(), 2) - .patternLine(" # ") - .patternLine("#X#") - .key('#', ingredient.get()) - .key('X', DataIngredient.tag(Tags.Items.GLASS_COLORLESS)) - .addCriterion("has_ingredient", p.hasItem(ingredient.get())) - .build(p::accept)) - .initialProperties(() -> Blocks.GLASS) - .properties(WindowGen::glassProperties) - .loot((t, g) -> t.registerSilkTouch(g)) - .blockstate((c, p) -> p.simpleBlock(c.get(), p.models() - .cubeColumn(c.getName(), sideTexture.apply(c.getName()), endTexture.apply(c.getName())))) - .tag(BlockTags.IMPERMEABLE) - .simpleItem() - .register(); - } - - public static BlockEntry framedGlass(String name, ConnectedTextureBehaviour behaviour) { - return REGISTRATE.block(name, ConnectedGlassBlock::new) - .onRegister(connectedTextures(behaviour)) - .addLayer(() -> RenderType::getTranslucent) - .initialProperties(() -> Blocks.GLASS) - .properties(WindowGen::glassProperties) - .loot((t, g) -> t.registerSilkTouch(g)) - .recipe((c, p) -> p.stonecutting(DataIngredient.tag(Tags.Items.GLASS_COLORLESS), c::get)) - .blockstate((c, p) -> BlockStateGen.cubeAll(c, p, "palettes/", "framed_glass")) - .tag(Tags.Blocks.GLASS_COLORLESS, BlockTags.IMPERMEABLE) - .item() - .tag(Tags.Items.GLASS_COLORLESS) - .model((c, p) -> p.cubeColumn(c.getName(), p.modLoc(palettesDir() + c.getName()), - p.modLoc("block/palettes/framed_glass"))) - .build() - .register(); - } - - public static BlockEntry framedGlassPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift) { - ResourceLocation sideTexture = Create.asResource(palettesDir() + "framed_glass"); - ResourceLocation itemSideTexture = Create.asResource(palettesDir() + name); - ResourceLocation topTexture = Create.asResource(palettesDir() + "framed_glass_pane_top"); - Supplier> renderType = () -> RenderType::getTranslucent; - return connectedGlassPane(name, parent, ctshift, sideTexture, itemSideTexture, topTexture, renderType); - } - - public static BlockEntry customWindowPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift, Supplier> renderType) { - ResourceLocation topTexture = Create.asResource(palettesDir() + name + "_pane_top"); - ResourceLocation sideTexture = Create.asResource(palettesDir() + name); - return connectedGlassPane(name, parent, ctshift, sideTexture, sideTexture, topTexture, renderType); - } - - public static BlockEntry woodenWindowPane(WoodType woodType, - Supplier parent) { - return woodenWindowPane(woodType, parent, () -> RenderType::getCutoutMipped); - } - - public static BlockEntry woodenWindowPane(WoodType woodType, - Supplier parent, Supplier> renderType) { - String woodName = woodType.getName(); - String name = woodName + "_window"; - ResourceLocation topTexture = new ResourceLocation("block/" + woodName + "_planks"); - ResourceLocation sideTexture = Create.asResource(palettesDir() + name); - return connectedGlassPane(name, parent, AllSpriteShifts.getWoodenWindow(woodType), sideTexture, sideTexture, - topTexture, renderType); - } - - public static BlockEntry standardGlassPane(String name, Supplier parent, - ResourceLocation sideTexture, ResourceLocation topTexture, Supplier> renderType) { - NonNullBiConsumer, RegistrateBlockstateProvider> stateProvider = - (c, p) -> p.paneBlock(c.get(), sideTexture, topTexture); - return glassPane(name, parent, sideTexture, topTexture, GlassPaneBlock::new, renderType, $ -> { - }, stateProvider); - } - - private static BlockEntry connectedGlassPane(String name, Supplier parent, - CTSpriteShiftEntry ctshift, ResourceLocation sideTexture, ResourceLocation itemSideTexture, - ResourceLocation topTexture, Supplier> renderType) { - NonNullConsumer connectedTextures = - connectedTextures(new GlassPaneCTBehaviour(ctshift)); - String CGPparents = "block/connected_glass_pane/"; - String prefix = name + "_pane_"; - - Function post = - getPaneModelProvider(CGPparents, prefix, "post", sideTexture, topTexture), - side = getPaneModelProvider(CGPparents, prefix, "side", sideTexture, topTexture), - sideAlt = getPaneModelProvider(CGPparents, prefix, "side_alt", sideTexture, topTexture), - noSide = getPaneModelProvider(CGPparents, prefix, "noside", sideTexture, topTexture), - noSideAlt = getPaneModelProvider(CGPparents, prefix, "noside_alt", sideTexture, topTexture); - - NonNullBiConsumer, RegistrateBlockstateProvider> stateProvider = - (c, p) -> p.paneBlock(c.get(), post.apply(p), side.apply(p), sideAlt.apply(p), noSide.apply(p), - noSideAlt.apply(p)); - - return glassPane(name, parent, itemSideTexture, topTexture, ConnectedGlassPaneBlock::new, renderType, - connectedTextures, stateProvider); - } - - private static Function getPaneModelProvider(String CGPparents, - String prefix, String partial, ResourceLocation sideTexture, ResourceLocation topTexture) { - return p -> p.models() - .withExistingParent(prefix + partial, Create.asResource(CGPparents + partial)) - .texture("pane", sideTexture) - .texture("edge", topTexture); - } - - private static BlockEntry glassPane(String name, Supplier parent, - ResourceLocation sideTexture, ResourceLocation topTexture, NonNullFunction factory, - Supplier> renderType, NonNullConsumer connectedTextures, - NonNullBiConsumer, RegistrateBlockstateProvider> stateProvider) { - name += "_pane"; - - return REGISTRATE.block(name, factory) - .onRegister(connectedTextures) - .addLayer(renderType) - .initialProperties(() -> Blocks.GLASS_PANE) - .blockstate(stateProvider) - .recipe((c, p) -> ShapedRecipeBuilder.shapedRecipe(c.get(), 16) - .patternLine("###") - .patternLine("###") - .key('#', parent.get()) - .addCriterion("has_ingredient", p.hasItem(parent.get())) - .build(p::accept)) - .tag(Tags.Blocks.GLASS_PANES) - .loot((t, g) -> t.registerSilkTouch(g)) - .item() - .tag(Tags.Items.GLASS_PANES) - .model((c, p) -> p.withExistingParent(c.getName(), new ResourceLocation(Create.ID, "item/pane")) - .texture("pane", sideTexture) - .texture("edge", topTexture)) - .build() - .register(); - } - - private static String palettesDir() { - return "block/palettes/"; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java deleted file mode 100644 index d71049704..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CompactingRecipeGen.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllFluids; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.palettes.AllPaletteBlocks; - -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.Items; -import net.minecraftforge.common.Tags; - -public class CompactingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - GRANITE = create("granite_from_flint", b -> b.require(Items.FLINT) - .require(Items.FLINT) - .require(Fluids.LAVA, 100) - .require(Items.RED_SAND) - .output(Blocks.GRANITE, 1)), - - CHOCOLATE = create("chocolate", b -> b.require(AllFluids.CHOCOLATE.get(), 250) - .output(AllItems.BAR_OF_CHOCOLATE.get(), 1)), - - DIORITE = create("diorite_from_flint", b -> b.require(Items.FLINT) - .require(Items.FLINT) - .require(Fluids.LAVA, 100) - .require(AllPaletteBlocks.LIMESAND.get()) - .output(Blocks.DIORITE, 1)), - - ANDESITE = create("andesite_from_flint", b -> b.require(Items.FLINT) - .require(Items.FLINT) - .require(Fluids.LAVA, 100) - .require(Items.GRAVEL) - .output(Blocks.ANDESITE, 1)), - - BLAZE_CAKE = create("blaze_cake", b -> b.require(Tags.Items.EGGS) - .require(Items.SUGAR) - .require(AllItems.CINDER_FLOUR.get()) - .output(AllItems.BLAZE_CAKE_BASE.get(), 1)) - - ; - - public CompactingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.COMPACTING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java deleted file mode 100644 index 3f5f87671..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CreateRecipeProvider.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTags; -import com.simibubi.create.Create; - -import net.minecraft.data.DataGenerator; -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.data.RecipeProvider; -import net.minecraft.item.Item; -import net.minecraft.tags.ITag; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.IItemProvider; -import net.minecraftforge.common.Tags; - -public abstract class CreateRecipeProvider extends RecipeProvider { - - final List all = new ArrayList<>(); - - public CreateRecipeProvider(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected void registerRecipes(Consumer p_200404_1_) { - all.forEach(c -> c.register(p_200404_1_)); - Create.LOGGER.info(getName() + " registered " + all.size() + " recipe" + (all.size() == 1 ? "" : "s")); - } - - @FunctionalInterface - interface GeneratedRecipe { - void register(Consumer consumer); - } - - protected GeneratedRecipe register(GeneratedRecipe recipe) { - all.add(recipe); - return recipe; - } - - protected static class Marker { - } - - protected static class I { - - static ITag.INamedTag redstone() { - return Tags.Items.DUSTS_REDSTONE; - } - - static ITag.INamedTag planks() { - return ItemTags.PLANKS; - } - - static ITag.INamedTag gold() { - return AllTags.forgeItemTag("ingots/gold"); - } - - static ITag.INamedTag goldSheet() { - return AllTags.forgeItemTag("plates/gold"); - } - - static ITag.INamedTag stone() { - return Tags.Items.STONE; - } - - static IItemProvider andesite() { - return AllItems.ANDESITE_ALLOY.get(); - } - - static IItemProvider shaft() { - return AllBlocks.SHAFT.get(); - } - - static IItemProvider cog() { - return AllBlocks.COGWHEEL.get(); - } - - static IItemProvider andesiteCasing() { - return AllBlocks.ANDESITE_CASING.get(); - } - - static ITag.INamedTag brass() { - return AllTags.forgeItemTag("ingots/brass"); - } - - static ITag.INamedTag brassSheet() { - return AllTags.forgeItemTag("plates/brass"); - } - - static ITag.INamedTag iron() { - return Tags.Items.INGOTS_IRON; - } - - static ITag.INamedTag zinc() { - return AllTags.forgeItemTag("ingots/zinc"); - } - - static ITag.INamedTag ironSheet() { - return AllTags.forgeItemTag("plates/iron"); - } - - static IItemProvider brassCasing() { - return AllBlocks.BRASS_CASING.get(); - } - - static IItemProvider electronTube() { - return AllItems.ELECTRON_TUBE.get(); - } - - static IItemProvider circuit() { - return AllItems.INTEGRATED_CIRCUIT.get(); - } - - static ITag.INamedTag copperBlock() { - return AllTags.forgeItemTag("storage_blocks/copper"); - } - - static ITag.INamedTag brassBlock() { - return AllTags.forgeItemTag("storage_blocks/brass"); - } - - static ITag.INamedTag zincBlock() { - return AllTags.forgeItemTag("storage_blocks/zinc"); - } - - static ITag.INamedTag copper() { - return AllTags.forgeItemTag("ingots/copper"); - } - - static ITag.INamedTag copperSheet() { - return AllTags.forgeItemTag("plates/copper"); - } - - static ITag.INamedTag copperNugget() { - return AllTags.forgeItemTag("nuggets/copper"); - } - - static ITag.INamedTag brassNugget() { - return AllTags.forgeItemTag("nuggets/brass"); - } - - static ITag.INamedTag zincNugget() { - return AllTags.forgeItemTag("nuggets/zinc"); - } - - static IItemProvider copperCasing() { - return AllBlocks.COPPER_CASING.get(); - } - - static IItemProvider refinedRadiance() { - return AllItems.REFINED_RADIANCE.get(); - } - - static IItemProvider shadowSteel() { - return AllItems.SHADOW_STEEL.get(); - } - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java deleted file mode 100644 index 4262c8bcc..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CrushingRecipeGen.java +++ /dev/null @@ -1,161 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.AllTags; -import com.simibubi.create.content.palettes.AllPaletteBlocks; -import com.tterrag.registrate.util.entry.ItemEntry; - -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.tags.ItemTags; -import net.minecraftforge.common.crafting.conditions.NotCondition; -import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; - -public class CrushingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - BLAZE_ROD = create(() -> Items.BLAZE_ROD, b -> b.duration(100) - .output(Items.BLAZE_POWDER, 3) - .output(.25f, Items.BLAZE_POWDER, 3)), - - PRISMARINE_CRYSTALS = create(() -> Items.PRISMARINE_CRYSTALS, b -> b.duration(150) - .output(1f, Items.QUARTZ, 1) - .output(.5f, Items.QUARTZ, 2) - .output(.1f, Items.GLOWSTONE_DUST, 2)), - - OBSIDIAN = create(() -> Blocks.OBSIDIAN, b -> b.duration(500) - .output(AllItems.POWDERED_OBSIDIAN.get()) - .output(.75f, Blocks.OBSIDIAN)), - - WOOL = create("wool", b -> b.duration(100) - .require(ItemTags.WOOL) - .output(Items.STRING, 2) - .output(.5f, Items.STRING)), - - COPPER_BLOCK = create("copper_block", b -> b.duration(400) - .require(I.copperBlock()) - .output(AllItems.CRUSHED_COPPER.get(), 5)), - - ZINC_BLOCK = create("zinc_block", b -> b.duration(400) - .require(I.zincBlock()) - .output(AllItems.CRUSHED_ZINC.get(), 5)), - - BRASS_BLOCK = create("brass_block", b -> b.duration(400) - .require(I.brassBlock()) - .output(AllItems.CRUSHED_BRASS.get(), 5)), - - COPPER_ORE = metalOre("copper", AllItems.CRUSHED_COPPER, 350), - ZINC_ORE = metalOre("zinc", AllItems.CRUSHED_ZINC, 350), - IRON_ORE = metalOre("iron", AllItems.CRUSHED_IRON, 400), - GOLD_ORE = metalOre("gold", AllItems.CRUSHED_GOLD, 300), - - OSMIUM_ORE = metalOre("osmium", AllItems.CRUSHED_OSMIUM, 400), - PLATINUM_ORE = metalOre("platinum", AllItems.CRUSHED_PLATINUM, 300), - SILVER_ORE = metalOre("silver", AllItems.CRUSHED_SILVER, 300), - TIN_ORE = metalOre("tin", AllItems.CRUSHED_TIN, 350), - QUICKSILVER_ORE = metalOre("quicksilver", AllItems.CRUSHED_QUICKSILVER, 300), - LEAD_ORE = metalOre("lead", AllItems.CRUSHED_LEAD, 400), - ALUMINUM_ORE = metalOre("aluminum", AllItems.CRUSHED_BAUXITE, 300), - URANIUM_ORE = metalOre("uranium", AllItems.CRUSHED_URANIUM, 400), - NICKEL_ORE = metalOre("nickel", AllItems.CRUSHED_NICKEL, 350), - - NETHER_QUARTZ_ORE = create(() -> Blocks.NETHER_QUARTZ_ORE, b -> b.duration(350) - .output(Items.QUARTZ, 2) - .output(.5f, Items.QUARTZ, 4) - .output(.125f, Blocks.NETHERRACK)), - - REDSTONE_ORE = create(() -> Blocks.REDSTONE_ORE, b -> b.duration(300) - .output(Items.REDSTONE, 8) - .output(.25f, Items.REDSTONE, 6) - .output(.125f, Blocks.COBBLESTONE)), - - LAPIS_ORE = create(() -> Blocks.LAPIS_ORE, b -> b.duration(300) - .output(Items.LAPIS_LAZULI, 12) - .output(.25f, Items.LAPIS_LAZULI, 8) - .output(.125f, Blocks.COBBLESTONE)), - - COAL_ORE = create(() -> Blocks.COAL_ORE, b -> b.duration(300) - .output(Items.COAL, 2) - .output(.5f, Items.COAL, 2) - .output(.125f, Blocks.COBBLESTONE)), - - EMERALD_ORE = create(() -> Blocks.EMERALD_ORE, b -> b.duration(500) - .output(Items.EMERALD, 2) - .output(.25f, Items.EMERALD, 1) - .output(.125f, Blocks.COBBLESTONE)), - - DIAMOND_ORE = create(() -> Blocks.DIAMOND_ORE, b -> b.duration(500) - .output(Items.DIAMOND, 2) - .output(.25f, Items.DIAMOND, 1) - .output(.125f, Blocks.COBBLESTONE)), - - NETHER_WART = create("nether_wart_block", b -> b.duration(150) - .require(Blocks.NETHER_WART_BLOCK) - .output(.25f, Items.NETHER_WART, 1)), - - GLOWSTONE = create(() -> Blocks.GLOWSTONE, b -> b.duration(150) - .output(Items.GLOWSTONE_DUST, 3) - .output(.5f, Items.GLOWSTONE_DUST)), - - LEATHER_HORSE_ARMOR = create(() -> Items.LEATHER_HORSE_ARMOR, b -> b.duration(200) - .output(Items.LEATHER, 2) - .output(.5f, Items.LEATHER, 2)), - - IRON_HORSE_ARMOR = create(() -> Items.IRON_HORSE_ARMOR, b -> b.duration(200) - .output(Items.IRON_INGOT, 2) - .output(.5f, Items.LEATHER, 1) - .output(.5f, Items.IRON_INGOT, 1) - .output(.25f, Items.STRING, 2) - .output(.25f, Items.IRON_NUGGET, 4)), - - GOLDEN_HORSE_ARMOR = create(() -> Items.GOLDEN_HORSE_ARMOR, b -> b.duration(200) - .output(Items.GOLD_INGOT, 2) - .output(.5f, Items.LEATHER, 2) - .output(.5f, Items.GOLD_INGOT, 2) - .output(.25f, Items.STRING, 2) - .output(.25f, Items.GOLD_NUGGET, 8)), - - DIAMOND_HORSE_ARMOR = create(() -> Items.DIAMOND_HORSE_ARMOR, b -> b.duration(200) - .output(Items.DIAMOND, 1) - .output(.5f, Items.LEATHER, 2) - .output(.1f, Items.DIAMOND, 3) - .output(.25f, Items.STRING, 2)), - - GRAVEL = create(() -> Blocks.GRAVEL, b -> b.duration(250) - .output(Blocks.SAND) - .output(.1f, Items.FLINT) - .output(.05f, Items.CLAY_BALL)), - - SAND = create(() -> Blocks.SAND, b -> b.duration(150) - .output(AllPaletteBlocks.LIMESAND.get()) - .output(.1f, Items.BONE_MEAL)), - - NETHERRACK = create(() -> Blocks.NETHERRACK, b -> b.duration(250) - .output(AllItems.CINDER_FLOUR.get()) - .output(.5f, AllItems.CINDER_FLOUR.get())) - - ; - - protected GeneratedRecipe metalOre(String name, ItemEntry crushed, int duration) { - return create(name + "_ore", b -> b.duration(duration) - .withCondition(new NotCondition(new TagEmptyCondition("forge", "ores/" + name))) - .require(AllTags.forgeItemTag("ores/" + name)) - .output(crushed.get()) - .output(.3f, crushed.get(), 2) - .output(.125f, Blocks.COBBLESTONE)); - } - - public CrushingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.CRUSHING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/CuttingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/CuttingRecipeGen.java deleted file mode 100644 index 8955e0531..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/CuttingRecipeGen.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllRecipeTypes; - -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; - -public class CuttingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - ANDESITE_ALLOY = create(I::andesite, b -> b.duration(200) - .output(AllBlocks.SHAFT.get(), 6)), - - OAK_WOOD = stripAndMakePlanks(Blocks.OAK_WOOD, Blocks.STRIPPED_OAK_WOOD, Blocks.OAK_PLANKS), - SPRUCE_WOOD = stripAndMakePlanks(Blocks.SPRUCE_WOOD, Blocks.STRIPPED_SPRUCE_WOOD, Blocks.SPRUCE_PLANKS), - BIRCH_WOOD = stripAndMakePlanks(Blocks.BIRCH_WOOD, Blocks.STRIPPED_BIRCH_WOOD, Blocks.BIRCH_PLANKS), - JUNGLE_WOOD = stripAndMakePlanks(Blocks.JUNGLE_WOOD, Blocks.STRIPPED_JUNGLE_WOOD, Blocks.JUNGLE_PLANKS), - ACACIA_WOOD = stripAndMakePlanks(Blocks.ACACIA_WOOD, Blocks.STRIPPED_ACACIA_WOOD, Blocks.ACACIA_PLANKS), - DARK_OAK_WOOD = stripAndMakePlanks(Blocks.DARK_OAK_WOOD, Blocks.STRIPPED_DARK_OAK_WOOD, Blocks.DARK_OAK_PLANKS), - CRIMSON_WOOD = stripAndMakePlanks(Blocks.CRIMSON_HYPHAE, Blocks.STRIPPED_CRIMSON_HYPHAE, Blocks.CRIMSON_PLANKS), - WARPED_WOOD = stripAndMakePlanks(Blocks.WARPED_HYPHAE, Blocks.STRIPPED_WARPED_HYPHAE, Blocks.WARPED_PLANKS), - - OAK_LOG = stripAndMakePlanks(Blocks.OAK_LOG, Blocks.STRIPPED_OAK_LOG, Blocks.OAK_PLANKS), - SPRUCE_LOG = stripAndMakePlanks(Blocks.SPRUCE_LOG, Blocks.STRIPPED_SPRUCE_LOG, Blocks.SPRUCE_PLANKS), - BIRCH_LOG = stripAndMakePlanks(Blocks.BIRCH_LOG, Blocks.STRIPPED_BIRCH_LOG, Blocks.BIRCH_PLANKS), - JUNGLE_LOG = stripAndMakePlanks(Blocks.JUNGLE_LOG, Blocks.STRIPPED_JUNGLE_LOG, Blocks.JUNGLE_PLANKS), - ACACIA_LOG = stripAndMakePlanks(Blocks.ACACIA_LOG, Blocks.STRIPPED_ACACIA_LOG, Blocks.ACACIA_PLANKS), - DARK_OAK_LOG = stripAndMakePlanks(Blocks.DARK_OAK_LOG, Blocks.STRIPPED_DARK_OAK_LOG, Blocks.DARK_OAK_PLANKS), - CRIMSON_LOG = stripAndMakePlanks(Blocks.CRIMSON_STEM, Blocks.STRIPPED_CRIMSON_STEM, Blocks.CRIMSON_PLANKS), - WARPED_LOG = stripAndMakePlanks(Blocks.WARPED_STEM, Blocks.STRIPPED_WARPED_STEM, Blocks.WARPED_PLANKS) - - ; - - GeneratedRecipe stripAndMakePlanks(Block wood, Block stripped, Block planks) { - create(() -> wood, b -> b.duration(50) - .output(stripped)); - return create(() -> stripped, b -> b.duration(100) - .output(planks, 5)); - } - - public CuttingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.CUTTING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/DeployingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/DeployingRecipeGen.java deleted file mode 100644 index 4da7b3529..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/DeployingRecipeGen.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllRecipeTypes; - -import net.minecraft.data.DataGenerator; - -public class DeployingRecipeGen extends ProcessingRecipeGen { - -// GeneratedRecipe -// TEST = create("test", b -> b.require(AllItems.ANDESITE_ALLOY.get()) -// .require(AllItems.BAR_OF_CHOCOLATE.get()) -// .output(AllItems.BRASS_NUGGET.get())), -// ; - - public DeployingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.DEPLOYING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java deleted file mode 100644 index 36baa02ff..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/EmptyingRecipeGen.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllFluids; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; - -import net.minecraft.data.DataGenerator; -import net.minecraft.item.Items; - -public class EmptyingRecipeGen extends ProcessingRecipeGen { - - /* - * potion/water bottles are handled internally - */ - - GeneratedRecipe - - HONEY_BOTTLE = create("honey_bottle", b -> b - .require(Items.HONEY_BOTTLE) - .output(AllFluids.HONEY.get(), 250) - .output(Items.GLASS_BOTTLE)), - - BUILDERS_TEA = create("builders_tea", b -> b - .require(AllItems.BUILDERS_TEA.get()) - .output(AllFluids.TEA.get(), 250) - .output(Items.GLASS_BOTTLE)), - - MILK_BUCKET = create("milk_bucket", b -> b - .require(Items.MILK_BUCKET) - .output(AllFluids.MILK.get(), 1000) - .output(Items.BUCKET)) - - ; - - public EmptyingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.EMPTYING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java deleted file mode 100644 index b677d9fa7..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/FillingRecipeGen.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllFluids; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.AllTags; -import com.simibubi.create.content.contraptions.fluids.potion.PotionFluidHandler; - -import net.minecraft.data.DataGenerator; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.Items; -import net.minecraft.potion.Potions; - -public class FillingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - HONEY_BOTTLE = create("honey_bottle", b -> b.require(AllTags.forgeFluidTag("honey"), 250) - .require(Items.GLASS_BOTTLE) - .output(Items.HONEY_BOTTLE)), - - BUILDERS_TEA = create("builders_tea", b -> b.require(AllFluids.TEA.get(), 250) - .require(Items.GLASS_BOTTLE) - .output(AllItems.BUILDERS_TEA.get())), - - BLAZE_CAKE = create("blaze_cake", b -> b.require(Fluids.LAVA, 250) - .require(AllItems.BLAZE_CAKE_BASE.get()) - .output(AllItems.BLAZE_CAKE.get())), - - HONEYED_APPLE = create("honeyed_apple", b -> b.require(AllTags.forgeFluidTag("honey"), 250) - .require(Items.APPLE) - .output(AllItems.HONEYED_APPLE.get())), - - SWEET_ROLL = create("sweet_roll", b -> b.require(AllTags.forgeFluidTag("milk"), 250) - .require(Items.BREAD) - .output(AllItems.SWEET_ROLL.get())), - - CHOCOLATE_BERRIES = create("chocolate_glazed_berries", b -> b.require(AllFluids.CHOCOLATE.get(), 250) - .require(Items.SWEET_BERRIES) - .output(AllItems.CHOCOLATE_BERRIES.get())), - - GRASS_BLOCK = create("grass_block", b -> b.require(Fluids.WATER, 500) - .require(Items.DIRT) - .output(Items.GRASS_BLOCK)), - - GUNPOWDER = create("gunpowder", b -> b.require(PotionFluidHandler.potionIngredient(Potions.HARMING, 25)) - .require(AllItems.CINDER_FLOUR.get()) - .output(Items.GUNPOWDER)), - - REDSTONE = create("redstone", b -> b.require(PotionFluidHandler.potionIngredient(Potions.STRENGTH, 25)) - .require(AllItems.CINDER_FLOUR.get()) - .output(Items.REDSTONE)), - - GLOWSTONE = create("glowstone", b -> b.require(PotionFluidHandler.potionIngredient(Potions.NIGHT_VISION, 25)) - .require(AllItems.CINDER_FLOUR.get()) - .output(Items.GLOWSTONE_DUST)), - - MILK_BUCKET = create("milk_bucket", b -> b.require(AllTags.forgeFluidTag("milk"), 1000) - .require(Items.BUCKET) - .output(Items.MILK_BUCKET)) - - ; - - public FillingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.FILLING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java deleted file mode 100644 index 1bc1314c7..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeBuilder.java +++ /dev/null @@ -1,204 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.function.Consumer; - -import javax.annotation.Nullable; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.simibubi.create.AllRecipeTypes; - -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.item.Item; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.tags.Tag; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.registries.ForgeRegistries; - -public class MechanicalCraftingRecipeBuilder { - - private final Item result; - private final int count; - private final List pattern = Lists.newArrayList(); - private final Map key = Maps.newLinkedHashMap(); - - public MechanicalCraftingRecipeBuilder(IItemProvider p_i48261_1_, int p_i48261_2_) { - result = p_i48261_1_.asItem(); - count = p_i48261_2_; - } - - /** - * Creates a new builder for a shaped recipe. - */ - public static MechanicalCraftingRecipeBuilder shapedRecipe(IItemProvider p_200470_0_) { - return shapedRecipe(p_200470_0_, 1); - } - - /** - * Creates a new builder for a shaped recipe. - */ - public static MechanicalCraftingRecipeBuilder shapedRecipe(IItemProvider p_200468_0_, int p_200468_1_) { - return new MechanicalCraftingRecipeBuilder(p_200468_0_, p_200468_1_); - } - - /** - * Adds a key to the recipe pattern. - */ - public MechanicalCraftingRecipeBuilder key(Character p_200469_1_, Tag p_200469_2_) { - return this.key(p_200469_1_, Ingredient.fromTag(p_200469_2_)); - } - - /** - * Adds a key to the recipe pattern. - */ - public MechanicalCraftingRecipeBuilder key(Character p_200462_1_, IItemProvider p_200462_2_) { - return this.key(p_200462_1_, Ingredient.fromItems(p_200462_2_)); - } - - /** - * Adds a key to the recipe pattern. - */ - public MechanicalCraftingRecipeBuilder key(Character p_200471_1_, Ingredient p_200471_2_) { - if (this.key.containsKey(p_200471_1_)) { - throw new IllegalArgumentException("Symbol '" + p_200471_1_ + "' is already defined!"); - } else if (p_200471_1_ == ' ') { - throw new IllegalArgumentException("Symbol ' ' (whitespace) is reserved and cannot be defined"); - } else { - this.key.put(p_200471_1_, p_200471_2_); - return this; - } - } - - /** - * Adds a new entry to the patterns for this recipe. - */ - public MechanicalCraftingRecipeBuilder patternLine(String p_200472_1_) { - if (!this.pattern.isEmpty() && p_200472_1_.length() != this.pattern.get(0) - .length()) { - throw new IllegalArgumentException("Pattern must be the same width on every line!"); - } else { - this.pattern.add(p_200472_1_); - return this; - } - } - - /** - * Builds this recipe into an {@link IFinishedRecipe}. - */ - public void build(Consumer p_200464_1_) { - this.build(p_200464_1_, ForgeRegistries.ITEMS.getKey(this.result)); - } - - /** - * Builds this recipe into an {@link IFinishedRecipe}. Use - * {@link #build(Consumer)} if save is the same as the ID for the result. - */ - public void build(Consumer p_200466_1_, String p_200466_2_) { - ResourceLocation resourcelocation = ForgeRegistries.ITEMS.getKey(this.result); - if ((new ResourceLocation(p_200466_2_)).equals(resourcelocation)) { - throw new IllegalStateException("Shaped Recipe " + p_200466_2_ + " should remove its 'save' argument"); - } else { - this.build(p_200466_1_, new ResourceLocation(p_200466_2_)); - } - } - - /** - * Builds this recipe into an {@link IFinishedRecipe}. - */ - public void build(Consumer p_200467_1_, ResourceLocation p_200467_2_) { - validate(p_200467_2_); - p_200467_1_.accept(new MechanicalCraftingRecipeBuilder.Result(p_200467_2_, result, count, pattern, key)); - } - - /** - * Makes sure that this recipe is valid. - */ - private void validate(ResourceLocation p_200463_1_) { - if (pattern.isEmpty()) { - throw new IllegalStateException("No pattern is defined for shaped recipe " + p_200463_1_ + "!"); - } else { - Set set = Sets.newHashSet(key.keySet()); - set.remove(' '); - - for (String s : pattern) { - for (int i = 0; i < s.length(); ++i) { - char c0 = s.charAt(i); - if (!key.containsKey(c0) && c0 != ' ') - throw new IllegalStateException( - "Pattern in recipe " + p_200463_1_ + " uses undefined symbol '" + c0 + "'"); - set.remove(c0); - } - } - - if (!set.isEmpty()) - throw new IllegalStateException( - "Ingredients are defined but not used in pattern for recipe " + p_200463_1_); - } - } - - public class Result implements IFinishedRecipe { - private final ResourceLocation id; - private final Item result; - private final int count; - private final List pattern; - private final Map key; - - public Result(ResourceLocation p_i48271_2_, Item p_i48271_3_, int p_i48271_4_, List p_i48271_6_, - Map p_i48271_7_) { - this.id = p_i48271_2_; - this.result = p_i48271_3_; - this.count = p_i48271_4_; - this.pattern = p_i48271_6_; - this.key = p_i48271_7_; - } - - public void serialize(JsonObject p_218610_1_) { - JsonArray jsonarray = new JsonArray(); - for (String s : this.pattern) - jsonarray.add(s); - - p_218610_1_.add("pattern", jsonarray); - JsonObject jsonobject = new JsonObject(); - for (Entry entry : this.key.entrySet()) - jsonobject.add(String.valueOf(entry.getKey()), entry.getValue() - .serialize()); - - p_218610_1_.add("key", jsonobject); - JsonObject jsonobject1 = new JsonObject(); - jsonobject1.addProperty("item", ForgeRegistries.ITEMS.getKey(this.result) - .toString()); - if (this.count > 1) - jsonobject1.addProperty("count", this.count); - - p_218610_1_.add("result", jsonobject1); - } - - public IRecipeSerializer getSerializer() { - return AllRecipeTypes.MECHANICAL_CRAFTING.serializer; - } - - public ResourceLocation getID() { - return this.id; - } - - @Nullable - public JsonObject getAdvancementJson() { - return null; - } - - @Nullable - public ResourceLocation getAdvancementID() { - return null; - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java deleted file mode 100644 index 7a7956291..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MechanicalCraftingRecipeGen.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import java.util.function.UnaryOperator; - -import com.google.common.base.Supplier; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.Create; - -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.Tags; - -public class MechanicalCraftingRecipeGen extends CreateRecipeProvider { - - GeneratedRecipe - - CRUSHING_WHEEL = create(AllBlocks.CRUSHING_WHEEL::get).returns(2) - .recipe(b -> b.key('P', Ingredient.fromTag(ItemTags.PLANKS)) - .key('S', Ingredient.fromTag(I.stone())) - .key('A', I.andesite()) - .patternLine(" AAA ") - .patternLine("AAPAA") - .patternLine("APSPA") - .patternLine("AAPAA") - .patternLine(" AAA ")), - - INTEGRATED_CIRCUIT = create(AllItems.INTEGRATED_CIRCUIT::get).returns(1) - .recipe(b -> b.key('L', AllItems.LAPIS_SHEET.get()) - .key('R', Ingredient.fromTag(I.redstone())) - .key('Q', AllItems.POLISHED_ROSE_QUARTZ.get()) - .key('C', Ingredient.fromTag(Tags.Items.NUGGETS_GOLD)) - .patternLine(" L ") - .patternLine("RRQRR") - .patternLine(" CCC ")), - - EXTENDO_GRIP = create(AllItems.EXTENDO_GRIP::get).returns(1) - .recipe(b -> b.key('L', Ingredient.fromTag(I.brass())) - .key('R', I.cog()) - .key('H', AllItems.BRASS_HAND.get()) - .key('S', Ingredient.fromTag(Tags.Items.RODS_WOODEN)) - .patternLine(" L ") - .patternLine(" R ") - .patternLine("SSS") - .patternLine("SSS") - .patternLine(" H ")), - - FURNACE_ENGINE = create(AllBlocks.FURNACE_ENGINE::get).returns(1) - .recipe(b -> b.key('P', Ingredient.fromTag(I.brassSheet())) - .key('B', Ingredient.fromTag(I.brass())) - .key('I', Ingredient.fromItems(Blocks.PISTON, Blocks.STICKY_PISTON)) - .key('C', I.brassCasing()) - .patternLine("PPB") - .patternLine("PCI") - .patternLine("PPB")), - - FLYWHEEL = create(AllBlocks.FLYWHEEL::get).returns(1) - .recipe(b -> b.key('B', Ingredient.fromTag(I.brass())) - .key('C', I.brassCasing()) - .patternLine(" BBB") - .patternLine("CB B") - .patternLine(" BBB")) - - ; - - public MechanicalCraftingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - GeneratedRecipeBuilder create(Supplier result) { - return new GeneratedRecipeBuilder(result); - } - - class GeneratedRecipeBuilder { - - private String suffix; - private Supplier result; - private int amount; - - public GeneratedRecipeBuilder(Supplier result) { - this.suffix = ""; - this.result = result; - this.amount = 1; - } - - GeneratedRecipeBuilder returns(int amount) { - this.amount = amount; - return this; - } - - GeneratedRecipeBuilder withSuffix(String suffix) { - this.suffix = suffix; - return this; - } - - GeneratedRecipe recipe(UnaryOperator builder) { - return register(consumer -> { - MechanicalCraftingRecipeBuilder b = - builder.apply(MechanicalCraftingRecipeBuilder.shapedRecipe(result.get(), amount)); - ResourceLocation location = Create.asResource("mechanical_crafting/" + result.get() - .asItem() - .getRegistryName() - .getPath() + suffix); - b.build(consumer, location); - }); - } - } - - @Override - public String getName() { - return "Create's Mechanical Crafting Recipes"; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java deleted file mode 100644 index 92480a848..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MillingRecipeGen.java +++ /dev/null @@ -1,215 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.AllTags; -import com.simibubi.create.content.palettes.AllPaletteBlocks; -import com.tterrag.registrate.util.entry.ItemEntry; - -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.tags.ItemTags; -import net.minecraftforge.common.crafting.conditions.NotCondition; -import net.minecraftforge.common.crafting.conditions.TagEmptyCondition; - -public class MillingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - GRANITE = create(() -> Blocks.GRANITE, b -> b.duration(200) - .output(Blocks.RED_SAND)), - - WOOL = create("wool", b -> b.duration(100) - .require(ItemTags.WOOL) - .output(Items.STRING)), - - CLAY = create(() -> Blocks.CLAY, b -> b.duration(50) - .output(Items.CLAY_BALL, 3) - .output(.5f, Items.CLAY_BALL)), - - TERRACOTTA = create(() -> Blocks.TERRACOTTA, b -> b.duration(200) - .output(Blocks.RED_SAND)), - ANDESITE = create(() -> Blocks.ANDESITE, b -> b.duration(200) - .output(Blocks.COBBLESTONE)), - COBBLESTONE = create(() -> Blocks.COBBLESTONE, b -> b.duration(250) - .output(Blocks.GRAVEL)), - GRAVEL = create(() -> Blocks.GRAVEL, b -> b.duration(250) - .output(Items.FLINT)), - SAND = create(() -> Blocks.SAND, b -> b.duration(150) - .output(AllPaletteBlocks.LIMESAND.get())), - SANDSTONE = create(() -> Blocks.SANDSTONE, b -> b.duration(150) - .output(Blocks.SAND)), - DIORITE = create(() -> Blocks.DIORITE, b -> b.duration(200) - .output(AllPaletteBlocks.LIMESAND.get())), - - COPPER_ORE = metalOre("copper", AllItems.CRUSHED_COPPER, 350), - ZINC_ORE = metalOre("zinc", AllItems.CRUSHED_ZINC, 350), - IRON_ORE = metalOre("iron", AllItems.CRUSHED_IRON, 400), - GOLD_ORE = metalOre("gold", AllItems.CRUSHED_GOLD, 300), - - OSMIUM_ORE = metalOre("osmium", AllItems.CRUSHED_OSMIUM, 400), - PLATINUM_ORE = metalOre("platinum", AllItems.CRUSHED_PLATINUM, 300), - SILVER_ORE = metalOre("silver", AllItems.CRUSHED_SILVER, 300), - TIN_ORE = metalOre("tin", AllItems.CRUSHED_TIN, 350), - QUICKSILVER_ORE = metalOre("quicksilver", AllItems.CRUSHED_QUICKSILVER, 300), - LEAD_ORE = metalOre("lead", AllItems.CRUSHED_LEAD, 400), - ALUMINUM_ORE = metalOre("aluminum", AllItems.CRUSHED_BAUXITE, 300), - URANIUM_ORE = metalOre("uranium", AllItems.CRUSHED_URANIUM, 400), - NICKEL_ORE = metalOre("nickel", AllItems.CRUSHED_NICKEL, 350), - - WHEAT = create(() -> Items.WHEAT, b -> b.duration(150) - .output(AllItems.WHEAT_FLOUR.get()) - .output(.25f, AllItems.WHEAT_FLOUR.get(), 2) - .output(.25f, Items.WHEAT_SEEDS)), - - BONE = create(() -> Items.BONE, b -> b.duration(100) - .output(Items.BONE_MEAL, 3) - .output(.25f, Items.WHITE_DYE, 1) - .output(.25f, Items.BONE_MEAL, 3)), - - CACTUS = create(() -> Blocks.CACTUS, b -> b.duration(50) - .output(Items.GREEN_DYE, 2) - .output(.1f, Items.GREEN_DYE, 1) - .whenModMissing("quark")), - - BONE_MEAL = create(() -> Items.BONE_MEAL, b -> b.duration(70) - .output(Items.WHITE_DYE, 2) - .output(.1f, Items.LIGHT_GRAY_DYE, 1)), - - COCOA_BEANS = create(() -> Items.COCOA_BEANS, b -> b.duration(70) - .output(Items.BROWN_DYE, 2) - .output(.1f, Items.BROWN_DYE, 1)), - - SADDLE = create(() -> Items.SADDLE, b -> b.duration(200) - .output(Items.LEATHER, 2) - .output(.5f, Items.LEATHER, 2)), - - SUGAR_CANE = create(() -> Items.SUGAR_CANE, b -> b.duration(50) - .output(Items.SUGAR, 2) - .output(.1f, Items.SUGAR)), - - INK_SAC = create(() -> Items.INK_SAC, b -> b.duration(100) - .output(Items.BLACK_DYE, 2) - .output(.1f, Items.GRAY_DYE)), - - CHARCOAL = create(() -> Items.CHARCOAL, b -> b.duration(100) - .output(Items.BLACK_DYE, 1) - .output(.1f, Items.GRAY_DYE, 2)), - - COAL = create(() -> Items.COAL, b -> b.duration(100) - .output(Items.BLACK_DYE, 2) - .output(.1f, Items.GRAY_DYE, 1)), - - LAPIS_LAZULI = create(() -> Items.LAPIS_LAZULI, b -> b.duration(100) - .output(Items.BLUE_DYE, 2) - .output(.1f, Items.BLUE_DYE)), - - AZURE_BLUET = create(() -> Blocks.AZURE_BLUET, b -> b.duration(50) - .output(Items.LIGHT_GRAY_DYE, 2) - .output(.1f, Items.WHITE_DYE, 2)), - - BLUE_ORCHID = create(() -> Blocks.BLUE_ORCHID, b -> b.duration(50) - .output(Items.LIGHT_BLUE_DYE, 2) - .output(.05f, Items.LIGHT_GRAY_DYE, 1)), - - FERN = create(() -> Blocks.FERN, b -> b.duration(50) - .output(Items.GREEN_DYE) - .output(.1f, Items.WHEAT_SEEDS)), - - LARGE_FERN = create(() -> Blocks.LARGE_FERN, b -> b.duration(50) - .output(Items.GREEN_DYE, 2) - .output(.5f, Items.GREEN_DYE) - .output(.1f, Items.WHEAT_SEEDS)), - - LILAC = create(() -> Blocks.LILAC, b -> b.duration(100) - .output(Items.MAGENTA_DYE, 3) - .output(.25f, Items.MAGENTA_DYE) - .output(.25f, Items.PURPLE_DYE)), - - PEONY = create(() -> Blocks.PEONY, b -> b.duration(100) - .output(Items.PINK_DYE, 3) - .output(.25f, Items.MAGENTA_DYE) - .output(.25f, Items.PINK_DYE)), - - ALLIUM = create(() -> Blocks.ALLIUM, b -> b.duration(50) - .output(Items.MAGENTA_DYE, 2) - .output(.1f, Items.PURPLE_DYE, 2) - .output(.1f, Items.PINK_DYE)), - - LILY_OF_THE_VALLEY = create(() -> Blocks.LILY_OF_THE_VALLEY, b -> b.duration(50) - .output(Items.WHITE_DYE, 2) - .output(.1f, Items.LIME_DYE) - .output(.1f, Items.WHITE_DYE)), - - ROSE_BUSH = create(() -> Blocks.ROSE_BUSH, b -> b.duration(50) - .output(Items.RED_DYE, 3) - .output(.05f, Items.GREEN_DYE, 2) - .output(.25f, Items.RED_DYE, 2)), - - SUNFLOWER = create(() -> Blocks.SUNFLOWER, b -> b.duration(100) - .output(Items.YELLOW_DYE, 3) - .output(.25f, Items.ORANGE_DYE) - .output(.25f, Items.YELLOW_DYE)), - - OXEYE_DAISY = create(() -> Blocks.OXEYE_DAISY, b -> b.duration(50) - .output(Items.LIGHT_GRAY_DYE, 2) - .output(.2f, Items.WHITE_DYE) - .output(.05f, Items.YELLOW_DYE)), - - POPPY = create(() -> Blocks.POPPY, b -> b.duration(50) - .output(Items.RED_DYE, 2) - .output(.05f, Items.GREEN_DYE)), - - DANDELION = create(() -> Blocks.DANDELION, b -> b.duration(50) - .output(Items.YELLOW_DYE, 2) - .output(.05f, Items.YELLOW_DYE)), - - CORNFLOWER = create(() -> Blocks.CORNFLOWER, b -> b.duration(50) - .output(Items.BLUE_DYE, 2)), - - WITHER_ROSE = create(() -> Blocks.WITHER_ROSE, b -> b.duration(50) - .output(Items.BLACK_DYE, 2) - .output(.1f, Items.BLACK_DYE)), - - ORANGE_TULIP = create(() -> Blocks.ORANGE_TULIP, b -> b.duration(50) - .output(Items.ORANGE_DYE, 2) - .output(.1f, Items.LIME_DYE)), - - RED_TULIP = create(() -> Blocks.RED_TULIP, b -> b.duration(50) - .output(Items.RED_DYE, 2) - .output(.1f, Items.LIME_DYE)), - - WHITE_TULIP = create(() -> Blocks.WHITE_TULIP, b -> b.duration(50) - .output(Items.WHITE_DYE, 2) - .output(.1f, Items.LIME_DYE)), - - PINK_TULIP = create(() -> Blocks.PINK_TULIP, b -> b.duration(50) - .output(Items.PINK_DYE, 2) - .output(.1f, Items.LIME_DYE)), - - TALL_GRASS = create(() -> Blocks.TALL_GRASS, b -> b.duration(100) - .output(.5f, Items.WHEAT_SEEDS)), - GRASS = create(() -> Blocks.GRASS, b -> b.duration(50) - .output(.25f, Items.WHEAT_SEEDS)) - - ; - - protected GeneratedRecipe metalOre(String name, ItemEntry crushed, int duration) { - return create(name + "_ore", b -> b.duration(duration) - .withCondition(new NotCondition(new TagEmptyCondition("forge", "ores/" + name))) - .require(AllTags.forgeItemTag("ores/" + name)) - .output(crushed.get())); - } - - public MillingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.MILLING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java deleted file mode 100644 index 87ac41546..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/MixingRecipeGen.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllFluids; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.AllTags; -import com.simibubi.create.content.contraptions.processing.HeatCondition; - -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.Items; -import net.minecraft.tags.ItemTags; -import net.minecraftforge.common.Tags; - -public class MixingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - TEMP_LAVA = create("lava_from_cobble", b -> b.require(Tags.Items.COBBLESTONE) - .output(Fluids.LAVA, 50) - .requiresHeat(HeatCondition.SUPERHEATED)), - - TEA = create("tea", b -> b.require(Fluids.WATER, 250) - .require(AllTags.forgeFluidTag("milk"), 250) - .require(ItemTags.LEAVES) - .output(AllFluids.TEA.get(), 500) - .requiresHeat(HeatCondition.HEATED)), - - CHOCOLATE = create("chocolate", b -> b.require(AllTags.forgeFluidTag("milk"), 250) - .require(Items.SUGAR) - .require(Items.COCOA_BEANS) - .output(AllFluids.CHOCOLATE.get(), 250) - .requiresHeat(HeatCondition.HEATED)), - - BRASS_INGOT = create("brass_ingot", b -> b.require(I.copper()) - .require(I.zinc()) - .output(AllItems.BRASS_INGOT.get(), 2) - .requiresHeat(HeatCondition.HEATED)), - - CRUSHED_BRASS = create("crushed_brass", b -> b.require(AllItems.CRUSHED_COPPER.get()) - .require(AllItems.CRUSHED_ZINC.get()) - .output(AllItems.CRUSHED_BRASS.get(), 2) - .requiresHeat(HeatCondition.HEATED)), - - CHROMATIC_COMPOUND = create("chromatic_compound", b -> b.require(Tags.Items.DUSTS_GLOWSTONE) - .require(Tags.Items.DUSTS_GLOWSTONE) - .require(Tags.Items.DUSTS_GLOWSTONE) - .require(AllItems.POWDERED_OBSIDIAN.get()) - .require(AllItems.POWDERED_OBSIDIAN.get()) - .require(AllItems.POWDERED_OBSIDIAN.get()) - .require(AllItems.POLISHED_ROSE_QUARTZ.get()) - .output(AllItems.CHROMATIC_COMPOUND.get(), 1) - .requiresHeat(HeatCondition.SUPERHEATED)), - - ANDESITE_ALLOY = create("andesite_alloy", b -> b.require(Blocks.ANDESITE) - .require(AllTags.forgeItemTag("nuggets/iron")) - .output(I.andesite(), 1)), - - ANDESITE_ALLOY_FROM_ZINC = create("andesite_alloy_from_zinc", b -> b.require(Blocks.ANDESITE) - .require(I.zincNugget()) - .output(I.andesite(), 1)) - - ; - - public MixingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.MIXING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/Mods.java b/src/main/java/com/simibubi/create/foundation/data/recipe/Mods.java deleted file mode 100644 index da9d26c03..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/Mods.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import net.minecraft.util.ResourceLocation; - -public enum Mods { - - MEK("mekanism", true), - TH("thermal", false), - MW("mysticalworld", false), - SM("silents_mechanisms", false), - IE("immersiveengineering", true), - EID("eidolon", false), - INF("iceandfire", false) - - ; - - private String id; - private boolean reversedPrefix; - - private Mods(String id, boolean reversedPrefix) { - this.id = id; - this.reversedPrefix = reversedPrefix;} - - public ResourceLocation ingotOf(String type) { - return new ResourceLocation(id, reversedPrefix ? "ingot_" + type : type + "_ingot"); - } - - public ResourceLocation nuggetOf(String type) { - return new ResourceLocation(id, reversedPrefix ? "nugget_" + type : type + "_nugget"); - } - - public String getId() { - return id; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/PolishingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/PolishingRecipeGen.java deleted file mode 100644 index 8f1ea96aa..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/PolishingRecipeGen.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; - -import net.minecraft.data.DataGenerator; - -public class PolishingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - ROSE_QUARTZ = create(AllItems.ROSE_QUARTZ::get, b -> b.output(AllItems.POLISHED_ROSE_QUARTZ.get())) - - ; - - public PolishingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.SANDPAPER_POLISHING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/PressingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/PressingRecipeGen.java deleted file mode 100644 index ca9740ab9..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/PressingRecipeGen.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; - -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.Ingredient; - -public class PressingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - SUGAR_CANE = create(() -> Items.SUGAR_CANE, b -> b.output(Items.PAPER)), - - PATH = create("path", b -> b.require(Ingredient.fromItems(Items.GRASS_BLOCK, Items.DIRT, Items.PODZOL)) - .output(Items.GRASS_PATH)), - - IRON = create("iron_ingot", b -> b.require(I.iron()) - .output(AllItems.IRON_SHEET.get())), - GOLD = create("gold_ingot", b -> b.require(I.gold()) - .output(AllItems.GOLDEN_SHEET.get())), - COPPER = create("copper_ingot", b -> b.require(I.copper()) - .output(AllItems.COPPER_SHEET.get())), - LAPIS = create("lapis_block", b -> b.require(Blocks.LAPIS_BLOCK) - .output(AllItems.LAPIS_SHEET.get())), - BRASS = create("brass_ingot", b -> b.require(I.brass()) - .output(AllItems.BRASS_SHEET.get())) - - ; - - public PressingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.PRESSING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java deleted file mode 100644 index 920d5ef13..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/ProcessingRecipeGen.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.function.Supplier; -import java.util.function.UnaryOperator; - -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipe; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeBuilder; -import com.simibubi.create.content.contraptions.processing.ProcessingRecipeSerializer; - -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DirectoryCache; -import net.minecraft.data.IDataProvider; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.IItemProvider; -import net.minecraftforge.fluids.FluidAttributes; - -public abstract class ProcessingRecipeGen extends CreateRecipeProvider { - - protected static List generators = new ArrayList<>(); - protected static final int BUCKET = FluidAttributes.BUCKET_VOLUME; - protected static final int BOTTLE = 250; - - public static void registerAll(DataGenerator gen) { - generators.add(new CrushingRecipeGen(gen)); - generators.add(new MillingRecipeGen(gen)); - generators.add(new CuttingRecipeGen(gen)); - generators.add(new WashingRecipeGen(gen)); - generators.add(new PolishingRecipeGen(gen)); - generators.add(new DeployingRecipeGen(gen)); - generators.add(new MixingRecipeGen(gen)); - generators.add(new CompactingRecipeGen(gen)); - generators.add(new PressingRecipeGen(gen)); - generators.add(new FillingRecipeGen(gen)); - generators.add(new EmptyingRecipeGen(gen)); - - gen.addProvider(new IDataProvider() { - - @Override - public String getName() { - return "Create's Processing Recipes"; - } - - @Override - public void act(DirectoryCache dc) throws IOException { - generators.forEach(g -> { - try { - g.act(dc); - } catch (IOException e) { - e.printStackTrace(); - } - }); - } - }); - } - - public ProcessingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - /** - * Create a processing recipe with a single itemstack ingredient, using its id - * as the name of the recipe - */ - protected > GeneratedRecipe create(Supplier singleIngredient, - UnaryOperator> transform) { - ProcessingRecipeSerializer serializer = getSerializer(); - GeneratedRecipe generatedRecipe = c -> { - IItemProvider iItemProvider = singleIngredient.get(); - transform - .apply(new ProcessingRecipeBuilder<>(serializer.getFactory(), Create.asResource(iItemProvider.asItem() - .getRegistryName() - .getPath())).withItemIngredients(Ingredient.fromItems(iItemProvider))) - .build(c); - }; - all.add(generatedRecipe); - return generatedRecipe; - } - - /** - * Create a new processing recipe, with recipe definitions provided by the - * function - */ - protected > GeneratedRecipe create(String name, - UnaryOperator> transform) { - ProcessingRecipeSerializer serializer = getSerializer(); - GeneratedRecipe generatedRecipe = - c -> transform.apply(new ProcessingRecipeBuilder<>(serializer.getFactory(), Create.asResource(name))) - .build(c); - all.add(generatedRecipe); - return generatedRecipe; - } - - @SuppressWarnings("unchecked") - private > ProcessingRecipeSerializer getSerializer() { - ProcessingRecipeSerializer serializer = (ProcessingRecipeSerializer) getRecipeType().serializer; - return serializer; - } - - @Override - public final String getName() { - return "Create's Processing Recipes: " + getRecipeType(); - } - - protected abstract AllRecipeTypes getRecipeType(); - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java deleted file mode 100644 index 4f6998cc9..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/StandardRecipeGen.java +++ /dev/null @@ -1,1378 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import static com.simibubi.create.foundation.data.recipe.Mods.EID; -import static com.simibubi.create.foundation.data.recipe.Mods.IE; -import static com.simibubi.create.foundation.data.recipe.Mods.INF; -import static com.simibubi.create.foundation.data.recipe.Mods.MEK; -import static com.simibubi.create.foundation.data.recipe.Mods.MW; -import static com.simibubi.create.foundation.data.recipe.Mods.SM; -import static com.simibubi.create.foundation.data.recipe.Mods.TH; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.UnaryOperator; - -import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableList; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllTags; -import com.simibubi.create.AllTags.AllItemTags; -import com.simibubi.create.Create; -import com.simibubi.create.content.AllSections; -import com.simibubi.create.content.palettes.AllPaletteBlocks; -import com.simibubi.create.foundation.utility.Lang; -import com.tterrag.registrate.util.entry.BlockEntry; -import com.tterrag.registrate.util.entry.ItemEntry; -import com.tterrag.registrate.util.entry.ItemProviderEntry; - -import net.minecraft.advancements.criterion.ItemPredicate; -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.data.CookingRecipeBuilder; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.IFinishedRecipe; -import net.minecraft.data.ShapedRecipeBuilder; -import net.minecraft.data.ShapelessRecipeBuilder; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.CookingRecipeSerializer; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.tags.ITag; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.Tags; -import net.minecraftforge.common.crafting.CraftingHelper; -import net.minecraftforge.common.crafting.conditions.ICondition; -import net.minecraftforge.common.crafting.conditions.ModLoadedCondition; -import net.minecraftforge.common.crafting.conditions.NotCondition; - -@SuppressWarnings("unused") -public class StandardRecipeGen extends CreateRecipeProvider { - - /* - * Recipes are added through fields, so one can navigate to the right one easily - * - * (Ctrl-o) in Eclipse - */ - - private Marker MATERIALS = enterSection(AllSections.MATERIALS); - - GeneratedRecipe - - COPPER_COMPACTING = - metalCompacting(ImmutableList.of(AllItems.COPPER_NUGGET, AllItems.COPPER_INGOT, AllBlocks.COPPER_BLOCK), - ImmutableList.of(I::copperNugget, I::copper, I::copperBlock)), - - BRASS_COMPACTING = - metalCompacting(ImmutableList.of(AllItems.BRASS_NUGGET, AllItems.BRASS_INGOT, AllBlocks.BRASS_BLOCK), - ImmutableList.of(I::brassNugget, I::brass, I::brassBlock)), - - ZINC_COMPACTING = - metalCompacting(ImmutableList.of(AllItems.ZINC_NUGGET, AllItems.ZINC_INGOT, AllBlocks.ZINC_BLOCK), - ImmutableList.of(I::zincNugget, I::zinc, I::zincBlock)), - - ANDESITE_ALLOY = create(AllItems.ANDESITE_ALLOY).unlockedByTag(I::iron) - .viaShaped(b -> b.key('A', Blocks.ANDESITE) - .key('B', Tags.Items.NUGGETS_IRON) - .patternLine("BA") - .patternLine("AB")), - - ANDESITE_ALLOY_FROM_ZINC = create(AllItems.ANDESITE_ALLOY).withSuffix("_from_zinc") - .unlockedByTag(I::zinc) - .viaShaped(b -> b.key('A', Blocks.ANDESITE) - .key('B', I.zincNugget()) - .patternLine("BA") - .patternLine("AB")), - - ANDESITE_CASING = create(AllBlocks.ANDESITE_CASING).returns(4) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', ItemTags.PLANKS) - .key('C', I.andesite()) - .key('S', ItemTags.LOGS) - .patternLine("AAA") - .patternLine("CSC") - .patternLine("AAA")), - - BRASS_CASING = create(AllBlocks.BRASS_CASING).returns(4) - .unlockedByTag(I::brass) - .viaShaped(b -> b.key('A', ItemTags.PLANKS) - .key('C', I.brassSheet()) - .key('S', ItemTags.LOGS) - .patternLine("AAA") - .patternLine("CSC") - .patternLine("AAA")), - - COPPER_CASING = create(AllBlocks.COPPER_CASING).returns(4) - .unlockedByTag(I::copper) - .viaShaped(b -> b.key('A', ItemTags.PLANKS) - .key('C', I.copperSheet()) - .key('S', ItemTags.LOGS) - .patternLine("AAA") - .patternLine("CSC") - .patternLine("AAA")), - - RADIANT_CASING = create(AllBlocks.REFINED_RADIANCE_CASING).returns(4) - .unlockedBy(I::refinedRadiance) - .viaShaped(b -> b.key('A', ItemTags.PLANKS) - .key('C', I.refinedRadiance()) - .key('S', Tags.Items.GLASS_COLORLESS) - .patternLine("AAA") - .patternLine("CSC") - .patternLine("AAA")), - - SHADOW_CASING = create(AllBlocks.SHADOW_STEEL_CASING).returns(4) - .unlockedBy(I::shadowSteel) - .viaShaped(b -> b.key('A', ItemTags.PLANKS) - .key('C', I.shadowSteel()) - .key('S', Tags.Items.OBSIDIAN) - .patternLine("AAA") - .patternLine("CSC") - .patternLine("AAA")), - - ELECTRON_TUBE = create(AllItems.ELECTRON_TUBE).unlockedBy(AllItems.ROSE_QUARTZ::get) - .viaShaped(b -> b.key('L', AllItems.POLISHED_ROSE_QUARTZ.get()) - .key('R', Items.REDSTONE_TORCH) - .key('N', Tags.Items.NUGGETS_IRON) - .patternLine("L") - .patternLine("R") - .patternLine("N")), - - ROSE_QUARTZ = create(AllItems.ROSE_QUARTZ).unlockedBy(() -> Items.REDSTONE) - .viaShapeless(b -> b.addIngredient(Tags.Items.GEMS_QUARTZ) - .addIngredient(Ingredient.fromTag(I.redstone()), 8)), - - SAND_PAPER = create(AllItems.SAND_PAPER).unlockedBy(() -> Items.PAPER) - .viaShapeless(b -> b.addIngredient(Items.PAPER) - .addIngredient(Tags.Items.SAND_COLORLESS)), - - RED_SAND_PAPER = create(AllItems.RED_SAND_PAPER).unlockedBy(() -> Items.PAPER) - .viaShapeless(b -> b.addIngredient(Items.PAPER) - .addIngredient(Tags.Items.SAND_RED)) - - ; - - private Marker CURIOSITIES = enterSection(AllSections.CURIOSITIES); - - GeneratedRecipe WAND_OF_SYMMETRY = create(AllItems.WAND_OF_SYMMETRY).unlockedBy(I::refinedRadiance) - .viaShaped(b -> b.key('E', I.refinedRadiance()) - .key('G', Tags.Items.GLASS_PANES_WHITE) - .key('O', Tags.Items.OBSIDIAN) - .key('L', I.brass()) - .patternLine(" GE") - .patternLine("LEG") - .patternLine("OL ")), - - MINECART_COUPLING = create(AllItems.MINECART_COUPLING).unlockedBy(I::andesite) - .viaShaped(b -> b.key('E', I.andesite()) - .key('O', I.ironSheet()) - .patternLine(" E") - .patternLine(" O ") - .patternLine("E ")) - - ; - - private Marker KINETICS = enterSection(AllSections.KINETICS); - - GeneratedRecipe BASIN = create(AllBlocks.BASIN).unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', I.andesite()) - .patternLine("A A") - .patternLine("AAA")), - - GOGGLES = create(AllItems.GOGGLES).unlockedBy(I::andesite) - .viaShaped(b -> b.key('G', Tags.Items.GLASS) - .key('P', I.goldSheet()) - .key('S', Tags.Items.STRING) - .patternLine(" S ") - .patternLine("GPG")), - - WRENCH = create(AllItems.WRENCH).unlockedBy(I::andesite) - .viaShaped(b -> b.key('G', I.goldSheet()) - .key('P', I.cog()) - .key('S', Tags.Items.RODS_WOODEN) - .patternLine("GG") - .patternLine("GP") - .patternLine(" S")), - - FILTER = create(AllItems.FILTER).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', ItemTags.WOOL) - .key('A', Tags.Items.NUGGETS_IRON) - .patternLine("ASA")), - - ATTRIBUTE_FILTER = create(AllItems.ATTRIBUTE_FILTER).unlockedByTag(I::brass) - .viaShaped(b -> b.key('S', ItemTags.WOOL) - .key('A', I.brassNugget()) - .patternLine("ASA")), - - BRASS_HAND = create(AllItems.BRASS_HAND).unlockedByTag(I::brass) - .viaShaped(b -> b.key('A', I.andesite()) - .key('B', I.brassSheet()) - .patternLine(" A ") - .patternLine("BBB") - .patternLine(" B ")), - - SUPER_GLUE = create(AllItems.SUPER_GLUE).unlockedByTag(I::ironSheet) - .viaShaped(b -> b.key('A', Tags.Items.SLIMEBALLS) - .key('S', I.ironSheet()) - .key('N', Tags.Items.NUGGETS_IRON) - .patternLine("AS") - .patternLine("NA")), - - CRAFTER_SLOT_COVER = create(AllItems.CRAFTER_SLOT_COVER).unlockedBy(AllBlocks.MECHANICAL_CRAFTER::get) - .viaShaped(b -> b.key('A', I.brassNugget()) - .patternLine("AAA")), - - COGWHEEL = create(AllBlocks.COGWHEEL).returns(8) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', ItemTags.WOODEN_BUTTONS) - .key('C', I.andesite()) - .patternLine("SSS") - .patternLine("SCS") - .patternLine("SSS")), - - LARGE_COGWHEEL = create(AllBlocks.LARGE_COGWHEEL).returns(2) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', ItemTags.WOODEN_BUTTONS) - .key('C', I.andesite()) - .key('D', ItemTags.PLANKS) - .patternLine("SDS") - .patternLine("DCD") - .patternLine("SDS")), - - WATER_WHEEL = create(AllBlocks.WATER_WHEEL).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', ItemTags.WOODEN_SLABS) - .key('C', AllBlocks.LARGE_COGWHEEL.get()) - .patternLine("SSS") - .patternLine("SCS") - .patternLine("SSS")), - - SHAFT = create(AllBlocks.SHAFT).returns(8) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', I.andesite()) - .patternLine("A") - .patternLine("A")), - - MECHANICAL_PRESS = create(AllBlocks.MECHANICAL_PRESS).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('B', I.andesite()) - .key('S', I.cog()) - .key('C', I.andesiteCasing()) - .key('I', AllTags.forgeItemTag("storage_blocks/iron")) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")), - - MILLSTONE = create(AllBlocks.MILLSTONE).unlockedBy(I::andesite) - .viaShaped(b -> b.key('B', ItemTags.PLANKS) - .key('S', I.andesite()) - .key('C', I.cog()) - .key('I', I.stone()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")), - - MECHANICAL_PISTON = create(AllBlocks.MECHANICAL_PISTON).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('B', ItemTags.PLANKS) - .key('S', I.cog()) - .key('C', I.andesiteCasing()) - .key('I', AllBlocks.PISTON_EXTENSION_POLE.get()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")), - - STICKY_MECHANICAL_PISTON = create(AllBlocks.STICKY_MECHANICAL_PISTON).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', Tags.Items.SLIMEBALLS) - .key('P', AllBlocks.MECHANICAL_PISTON.get()) - .patternLine("S") - .patternLine("P")), - - TURNTABLE = create(AllBlocks.TURNTABLE).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', I.shaft()) - .key('P', ItemTags.WOODEN_SLABS) - .patternLine("P") - .patternLine("S")), - - PISTON_EXTENSION_POLE = create(AllBlocks.PISTON_EXTENSION_POLE).returns(8) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', I.andesite()) - .key('P', ItemTags.PLANKS) - .patternLine("P") - .patternLine("A") - .patternLine("P")), - - GANTRY_PINION = create(AllBlocks.GANTRY_CARRIAGE).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('B', ItemTags.PLANKS) - .key('S', I.cog()) - .key('C', I.andesiteCasing()) - .key('I', I.shaft()) - .patternLine(" B ") - .patternLine("ICI") - .patternLine(" S ")), - - GANTRY_SHAFT = create(AllBlocks.GANTRY_SHAFT).returns(8) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', I.andesite()) - .key('R', I.redstone()) - .patternLine("A") - .patternLine("R") - .patternLine("A")), - - ANALOG_LEVER = create(AllBlocks.ANALOG_LEVER).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', I.andesiteCasing()) - .key('P', Tags.Items.RODS_WOODEN) - .patternLine("P") - .patternLine("S")), - - BELT_CONNECTOR = create(AllItems.BELT_CONNECTOR).unlockedBy(I::andesite) - .viaShaped(b -> b.key('D', Items.DRIED_KELP) - .patternLine("DDD") - .patternLine("DDD")), - - ADJUSTABLE_PULLEY = create(AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT).unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('A', I.electronTube()) - .key('B', AllBlocks.ENCASED_CHAIN_DRIVE.get()) - .key('C', AllBlocks.LARGE_COGWHEEL.get()) - .patternLine("A") - .patternLine("B") - .patternLine("C")), - - CART_ASSEMBLER = create(AllBlocks.CART_ASSEMBLER).unlockedBy(I::andesite) - .viaShaped(b -> b.key('L', ItemTags.LOGS) - .key('R', I.redstone()) - .key('C', I.andesite()) - .patternLine(" L ") - .patternLine("CRC") - .patternLine("L L")), - - CONTROLLER_RAIL = create(AllBlocks.CONTROLLER_RAIL).returns(6) - .unlockedBy(() -> Items.POWERED_RAIL) - .viaShaped(b -> b.key('A', I.gold()) - .key('E', I.electronTube()) - .key('S', Tags.Items.RODS_WOODEN) - .patternLine("A A") - .patternLine("ASA") - .patternLine("AEA")), - - HAND_CRANK = create(AllBlocks.HAND_CRANK).unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', I.andesite()) - .key('C', ItemTags.PLANKS) - .key('S', I.shaft()) - .patternLine(" S ") - .patternLine("CCC") - .patternLine(" A")), - - COPPER_VALVE_HANDLE = create(AllBlocks.COPPER_VALVE_HANDLE).unlockedByTag(I::copper) - .viaShaped(b -> b.key('S', I.andesite()) - .key('C', I.copperSheet()) - .patternLine("CCC") - .patternLine(" S ")), - - COPPER_VALVE_HANDLE_FROM_OTHER_HANDLES = create(AllBlocks.COPPER_VALVE_HANDLE).withSuffix("_from_others") - .unlockedByTag(I::copper) - .viaShapeless(b -> b.addIngredient(AllItemTags.VALVE_HANDLES.tag)), - - NOZZLE = create(AllBlocks.NOZZLE).unlockedBy(AllBlocks.ENCASED_FAN::get) - .viaShaped(b -> b.key('S', I.andesite()) - .key('C', ItemTags.WOOL) - .patternLine(" S ") - .patternLine(" C ") - .patternLine("SSS")), - - PROPELLER = create(AllItems.PROPELLER).unlockedByTag(I::ironSheet) - .viaShaped(b -> b.key('S', I.ironSheet()) - .key('C', I.andesite()) - .patternLine(" S ") - .patternLine("SCS") - .patternLine(" S ")), - - WHISK = create(AllItems.WHISK).unlockedByTag(I::ironSheet) - .viaShaped(b -> b.key('S', I.ironSheet()) - .key('C', I.andesite()) - .patternLine(" C ") - .patternLine("SCS") - .patternLine("SSS")), - - ENCASED_FAN = create(AllBlocks.ENCASED_FAN).unlockedByTag(I::ironSheet) - .viaShaped(b -> b.key('S', I.shaft()) - .key('A', I.andesiteCasing()) - .key('R', I.cog()) - .key('P', AllItems.PROPELLER.get()) - .patternLine(" S ") - .patternLine("RAR") - .patternLine(" P ")), - - CUCKOO_CLOCK = create(AllBlocks.CUCKOO_CLOCK).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', ItemTags.PLANKS) - .key('A', Items.CLOCK) - .key('B', ItemTags.LOGS) - .key('P', I.cog()) - .patternLine(" S ") - .patternLine("SAS") - .patternLine("BPB")), - - MECHANICAL_CRAFTER = create(AllBlocks.MECHANICAL_CRAFTER).returns(3) - .unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('B', I.electronTube()) - .key('R', Blocks.CRAFTING_TABLE) - .key('C', I.brassCasing()) - .key('S', I.cog()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" R ")), - - WINDMILL_BEARING = create(AllBlocks.WINDMILL_BEARING).unlockedBy(I::andesite) - .viaShaped(b -> b.key('I', I.shaft()) - .key('B', AllBlocks.TURNTABLE.get()) - .key('C', I.stone()) - .patternLine(" B ") - .patternLine(" C ") - .patternLine(" I ")), - - MECHANICAL_BEARING = create(AllBlocks.MECHANICAL_BEARING).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('I', I.shaft()) - .key('S', I.andesite()) - .key('B', AllBlocks.TURNTABLE.get()) - .key('C', I.andesiteCasing()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")), - - CLOCKWORK_BEARING = create(AllBlocks.CLOCKWORK_BEARING).unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('I', I.shaft()) - .key('S', I.electronTube()) - .key('B', AllBlocks.TURNTABLE.get()) - .key('C', I.brassCasing()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")), - - WOODEN_BRACKET = create(AllBlocks.WOODEN_BRACKET).returns(4) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', Tags.Items.RODS_WOODEN) - .key('P', I.planks()) - .key('C', I.andesite()) - .patternLine("SSS") - .patternLine("PCP")), - - METAL_BRACKET = create(AllBlocks.METAL_BRACKET).returns(4) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', Tags.Items.NUGGETS_IRON) - .key('P', I.iron()) - .key('C', I.andesite()) - .patternLine("SSS") - .patternLine("PCP")), - - FLUID_PIPE = create(AllBlocks.FLUID_PIPE).returns(8) - .unlockedByTag(I::copper) - .viaShaped(b -> b.key('S', I.copperSheet()) - .key('C', I.copper()) - .patternLine("SCS")), - - MECHANICAL_PUMP = create(AllBlocks.MECHANICAL_PUMP).unlockedByTag(I::copper) - .viaShaped(b -> b.key('P', I.cog()) - .key('S', AllBlocks.FLUID_PIPE.get()) - .patternLine("P") - .patternLine("S")), - - SMART_FLUID_PIPE = create(AllBlocks.SMART_FLUID_PIPE).unlockedByTag(I::copper) - .viaShaped(b -> b.key('P', I.electronTube()) - .key('S', AllBlocks.FLUID_PIPE.get()) - .key('I', I.brassSheet()) - .patternLine("I") - .patternLine("S") - .patternLine("P")), - - FLUID_VALVE = create(AllBlocks.FLUID_VALVE).unlockedByTag(I::copper) - .viaShaped(b -> b.key('P', I.shaft()) - .key('S', AllBlocks.FLUID_PIPE.get()) - .key('I', I.ironSheet()) - .patternLine("I") - .patternLine("S") - .patternLine("P")), - - SPOUT = create(AllBlocks.SPOUT).unlockedBy(I::copperCasing) - .viaShaped(b -> b.key('T', AllBlocks.FLUID_TANK.get()) - .key('P', Items.DRIED_KELP) - .key('S', I.copperNugget()) - .patternLine("T") - .patternLine("P") - .patternLine("S")), - - ITEM_DRAIN = create(AllBlocks.ITEM_DRAIN).unlockedBy(I::copperCasing) - .viaShaped(b -> b.key('P', Blocks.IRON_BARS) - .key('S', I.copperCasing()) - .patternLine("P") - .patternLine("S")), - - FLUID_TANK = create(AllBlocks.FLUID_TANK).returns(2) - .unlockedBy(I::copperCasing) - .viaShaped(b -> b.key('B', I.copperCasing()) - .key('S', I.copperNugget()) - .key('C', Tags.Items.GLASS) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" B ")), - - DEPLOYER = create(AllBlocks.DEPLOYER).unlockedBy(I::electronTube) - .viaShaped(b -> b.key('I', AllItems.BRASS_HAND.get()) - .key('B', I.electronTube()) - .key('S', I.cog()) - .key('C', I.andesiteCasing()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")), - - PORTABLE_STORAGE_INTERFACE = create(AllBlocks.PORTABLE_STORAGE_INTERFACE).unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('I', I.brassCasing()) - .key('B', AllBlocks.ANDESITE_FUNNEL.get()) - .patternLine(" B ") - .patternLine(" I ")), - - PORTABLE_FLUID_INTERFACE = create(AllBlocks.PORTABLE_FLUID_INTERFACE).unlockedBy(I::copperCasing) - .viaShaped(b -> b.key('I', I.copperCasing()) - .key('B', AllBlocks.ANDESITE_FUNNEL.get()) - .patternLine(" B ") - .patternLine(" I ")), - - ROPE_PULLEY = create(AllBlocks.ROPE_PULLEY).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', I.shaft()) - .key('B', I.andesiteCasing()) - .key('C', ItemTags.WOOL) - .key('I', I.ironSheet()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")), - - HOSE_PULLEY = create(AllBlocks.HOSE_PULLEY).unlockedByTag(I::copper) - .viaShaped(b -> b.key('S', I.shaft()) - .key('P', AllBlocks.FLUID_PIPE.get()) - .key('B', I.copperCasing()) - .key('C', Items.DRIED_KELP) - .key('I', I.copperSheet()) - .patternLine(" B ") - .patternLine("SCP") - .patternLine(" I ")), - - EMPTY_BLAZE_BURNER = create(AllItems.EMPTY_BLAZE_BURNER).unlockedByTag(I::iron) - .viaShaped(b -> b.key('A', Blocks.IRON_BARS) - .key('I', I.ironSheet()) - .patternLine("II") - .patternLine("AA")), - - CHUTE = create(AllBlocks.CHUTE).unlockedBy(I::andesite) - .returns(4) - .viaShaped(b -> b.key('A', I.ironSheet()) - .key('I', I.andesite()) - .patternLine("II") - .patternLine("AA")), - - SMART_CHUTE = create(AllBlocks.SMART_CHUTE).unlockedBy(AllBlocks.CHUTE::get) - .viaShaped(b -> b.key('P', I.electronTube()) - .key('S', AllBlocks.CHUTE.get()) - .key('I', I.brassSheet()) - .patternLine("I") - .patternLine("S") - .patternLine("P")), - - DEPOT = create(AllBlocks.DEPOT).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('A', I.andesite()) - .key('I', I.andesiteCasing()) - .patternLine("A") - .patternLine("I")), - - WEIGHTED_EJECTOR = create(AllBlocks.WEIGHTED_EJECTOR).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('A', I.goldSheet()) - .key('D', AllBlocks.DEPOT.get()) - .key('I', I.cog()) - .patternLine("A") - .patternLine("D") - .patternLine("I")), - - MECHANICAL_ARM = create(AllBlocks.MECHANICAL_ARM::get).unlockedBy(I::brassCasing) - .returns(1) - .viaShaped(b -> b.key('L', I.brassSheet()) - .key('R', I.cog()) - .key('I', I.electronTube()) - .key('A', I.andesite()) - .key('C', I.brassCasing()) - .patternLine("LLA") - .patternLine("LR ") - .patternLine("ICI")), - - MECHANICAL_MIXER = create(AllBlocks.MECHANICAL_MIXER).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', I.cog()) - .key('B', I.andesite()) - .key('C', I.andesiteCasing()) - .key('I', AllItems.WHISK.get()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")), - - CLUTCH = create(AllBlocks.CLUTCH).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', I.shaft()) - .key('B', I.redstone()) - .key('C', I.andesiteCasing()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" B ")), - - GEARSHIFT = create(AllBlocks.GEARSHIFT).unlockedBy(I::andesite) - .viaShaped(b -> b.key('S', I.cog()) - .key('B', I.redstone()) - .key('C', I.andesiteCasing()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" B ")), - - SAIL_FRAME = create(AllBlocks.SAIL_FRAME).returns(8) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', I.andesite()) - .key('S', Tags.Items.RODS_WOODEN) - .patternLine("SSS") - .patternLine("SAS") - .patternLine("SSS")), - - SAIL = create(AllBlocks.SAIL).returns(8) - .unlockedBy(AllBlocks.SAIL_FRAME::get) - .viaShaped(b -> b.key('F', AllBlocks.SAIL_FRAME.get()) - .key('W', ItemTags.WOOL) - .patternLine("FFF") - .patternLine("FWF") - .patternLine("FFF")), - - RADIAL_CHASIS = create(AllBlocks.RADIAL_CHASSIS).returns(3) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('P', I.andesite()) - .key('L', ItemTags.LOGS) - .patternLine(" L ") - .patternLine("PLP") - .patternLine(" L ")), - - LINEAR_CHASIS = create(AllBlocks.LINEAR_CHASSIS).returns(3) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('P', I.andesite()) - .key('L', ItemTags.LOGS) - .patternLine(" P ") - .patternLine("LLL") - .patternLine(" P ")), - - LINEAR_CHASSIS_CYCLE = - conversionCycle(ImmutableList.of(AllBlocks.LINEAR_CHASSIS, AllBlocks.SECONDARY_LINEAR_CHASSIS)), - - STICKER = create(AllBlocks.STICKER).returns(1) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('I', I.andesite()) - .key('C', Tags.Items.COBBLESTONE) - .key('R', I.redstone()) - .key('S', Tags.Items.SLIMEBALLS) - .patternLine("ISI") - .patternLine("CRC")), - - MINECART = create(() -> Items.MINECART).withSuffix("_from_contraption_cart") - .unlockedBy(AllBlocks.CART_ASSEMBLER::get) - .viaShapeless(b -> b.addIngredient(AllItems.MINECART_CONTRAPTION.get())), - - FURNACE_MINECART = create(() -> Items.FURNACE_MINECART).withSuffix("_from_contraption_cart") - .unlockedBy(AllBlocks.CART_ASSEMBLER::get) - .viaShapeless(b -> b.addIngredient(AllItems.FURNACE_MINECART_CONTRAPTION.get())), - - GEARBOX = create(AllBlocks.GEARBOX).unlockedBy(I::cog) - .viaShaped(b -> b.key('C', I.cog()) - .key('B', I.andesiteCasing()) - .patternLine(" C ") - .patternLine("CBC") - .patternLine(" C ")), - - GEARBOX_CYCLE = conversionCycle(ImmutableList.of(AllBlocks.GEARBOX, AllItems.VERTICAL_GEARBOX)), - - MYSTERIOUS_CUCKOO_CLOCK = create(AllBlocks.MYSTERIOUS_CUCKOO_CLOCK).unlockedBy(AllBlocks.CUCKOO_CLOCK::get) - .viaShaped(b -> b.key('C', Tags.Items.GUNPOWDER) - .key('B', AllBlocks.CUCKOO_CLOCK.get()) - .patternLine(" C ") - .patternLine("CBC") - .patternLine(" C ")), - - ENCASED_CHAIN_DRIVE = create(AllBlocks.ENCASED_CHAIN_DRIVE).returns(2) - .unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('S', I.shaft()) - .key('B', Tags.Items.NUGGETS_IRON) - .key('C', I.andesiteCasing()) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" B ")), - - SPEEDOMETER = create(AllBlocks.SPEEDOMETER).unlockedBy(I::andesite) - .viaShaped(b -> b.key('C', Items.COMPASS) - .key('A', I.andesiteCasing()) - .key('S', I.shaft()) - .patternLine(" C ") - .patternLine("SAS")), - - GAUGE_CYCLE = conversionCycle(ImmutableList.of(AllBlocks.SPEEDOMETER, AllBlocks.STRESSOMETER)), - - ROTATION_SPEED_CONTROLLER = create(AllBlocks.ROTATION_SPEED_CONTROLLER).unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('B', I.circuit()) - .key('C', I.brassCasing()) - .key('S', I.shaft()) - .patternLine(" B ") - .patternLine("SCS")), - - NIXIE_TUBE = create(AllBlocks.NIXIE_TUBE).unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('E', I.electronTube()) - .key('B', I.brassCasing()) - .patternLine("EBE")), - - MECHANICAL_SAW = create(AllBlocks.MECHANICAL_SAW).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('C', I.andesiteCasing()) - .key('A', I.ironSheet()) - .key('I', I.iron()) - .patternLine(" A ") - .patternLine("AIA") - .patternLine(" C ")), - - MECHANICAL_HARVESTER = create(AllBlocks.MECHANICAL_HARVESTER).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('C', I.andesiteCasing()) - .key('A', I.andesite()) - .key('I', I.ironSheet()) - .patternLine("AIA") - .patternLine("AIA") - .patternLine(" C ")), - - MECHANICAL_PLOUGH = create(AllBlocks.MECHANICAL_PLOUGH).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('C', I.andesiteCasing()) - .key('A', I.andesite()) - .key('I', I.ironSheet()) - .patternLine("III") - .patternLine("AAA") - .patternLine(" C ")), - - MECHANICAL_DRILL = create(AllBlocks.MECHANICAL_DRILL).unlockedBy(I::andesiteCasing) - .viaShaped(b -> b.key('C', I.andesiteCasing()) - .key('A', I.andesite()) - .key('I', I.iron()) - .patternLine(" A ") - .patternLine("AIA") - .patternLine(" C ")), - - SEQUENCED_GEARSHIFT = create(AllBlocks.SEQUENCED_GEARSHIFT).unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('B', I.electronTube()) - .key('S', I.cog()) - .key('C', I.brassCasing()) - .key('I', Items.CLOCK) - .patternLine(" B ") - .patternLine("SCS") - .patternLine(" I ")) - - ; - - private Marker LOGISTICS = enterSection(AllSections.LOGISTICS); - - GeneratedRecipe - - REDSTONE_CONTACT = create(AllBlocks.REDSTONE_CONTACT).returns(2) - .unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('W', I.redstone()) - .key('C', Blocks.COBBLESTONE) - .key('S', I.ironSheet()) - .patternLine(" S ") - .patternLine("CWC") - .patternLine("CCC")), - - ANDESITE_FUNNEL = create(AllBlocks.ANDESITE_FUNNEL).returns(2) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', I.andesite()) - .key('K', Items.DRIED_KELP) - .patternLine("AKA") - .patternLine(" K ")), - - BRASS_FUNNEL = create(AllBlocks.BRASS_FUNNEL).returns(2) - .unlockedByTag(I::brass) - .viaShaped(b -> b.key('A', I.brass()) - .key('K', Items.DRIED_KELP) - .key('E', I.electronTube()) - .patternLine("AEA") - .patternLine(" K ")), - - ANDESITE_TUNNEL = create(AllBlocks.ANDESITE_TUNNEL).returns(2) - .unlockedBy(I::andesite) - .viaShaped(b -> b.key('A', I.andesite()) - .key('K', Items.DRIED_KELP) - .patternLine("AA") - .patternLine("KK")), - - BRASS_TUNNEL = create(AllBlocks.BRASS_TUNNEL).returns(2) - .unlockedByTag(I::brass) - .viaShaped(b -> b.key('A', I.brass()) - .key('K', Items.DRIED_KELP) - .key('E', I.electronTube()) - .patternLine("E ") - .patternLine("AA") - .patternLine("KK")), - - ADJUSTABLE_CRATE = create(AllBlocks.ADJUSTABLE_CRATE).returns(4) - .unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('B', I.brassCasing()) - .patternLine("BBB") - .patternLine("B B") - .patternLine("BBB")), - - BELT_OBSERVER = create(AllBlocks.CONTENT_OBSERVER).unlockedBy(AllItems.BELT_CONNECTOR::get) - .viaShaped(b -> b.key('B', I.brassCasing()) - .key('R', I.redstone()) - .key('I', I.iron()) - .key('C', Blocks.OBSERVER) - .patternLine("RCI") - .patternLine(" B ")), - - STOCKPILE_SWITCH = create(AllBlocks.STOCKPILE_SWITCH).unlockedBy(I::brassCasing) - .viaShaped(b -> b.key('B', I.brassCasing()) - .key('R', I.redstone()) - .key('I', I.iron()) - .key('C', Blocks.COMPARATOR) - .patternLine("RCI") - .patternLine(" B ")), - - ADJUSTABLE_REPEATER = create(AllBlocks.ADJUSTABLE_REPEATER).unlockedByTag(I::redstone) - .viaShaped(b -> b.key('T', Blocks.REDSTONE_TORCH) - .key('C', Items.CLOCK) - .key('R', I.redstone()) - .key('S', I.stone()) - .patternLine("RCT") - .patternLine("SSS")), - - ADJUSTABLE_PULSE_REPEATER = create(AllBlocks.ADJUSTABLE_PULSE_REPEATER).unlockedByTag(I::redstone) - .viaShaped(b -> b.key('S', AllBlocks.PULSE_REPEATER.get()) - .key('P', AllBlocks.ADJUSTABLE_REPEATER.get()) - .patternLine("SP")), - - PULSE_REPEATER = create(AllBlocks.PULSE_REPEATER).unlockedByTag(I::redstone) - .viaShaped(b -> b.key('T', Blocks.REDSTONE_TORCH) - .key('R', I.redstone()) - .key('S', I.stone()) - .patternLine("RRT") - .patternLine("SSS")), - - POWERED_TOGGLE_LATCH = create(AllBlocks.POWERED_TOGGLE_LATCH).unlockedByTag(I::redstone) - .viaShaped(b -> b.key('T', Blocks.REDSTONE_TORCH) - .key('C', Blocks.LEVER) - .key('S', I.stone()) - .patternLine(" T ") - .patternLine(" C ") - .patternLine("SSS")), - - POWERED_LATCH = create(AllBlocks.POWERED_LATCH).unlockedByTag(I::redstone) - .viaShaped(b -> b.key('T', Blocks.REDSTONE_TORCH) - .key('C', Blocks.LEVER) - .key('R', I.redstone()) - .key('S', I.stone()) - .patternLine(" T ") - .patternLine("RCR") - .patternLine("SSS")), - - REDSTONE_LINK = create(AllBlocks.REDSTONE_LINK).returns(2) - .unlockedByTag(I::brass) - .viaShaped(b -> b.key('C', Blocks.REDSTONE_TORCH) - .key('S', I.brassSheet()) - .key('I', ItemTags.PLANKS) - .patternLine(" C") - .patternLine("SIS")) - - ; - - private Marker SCHEMATICS = enterSection(AllSections.SCHEMATICS); - - GeneratedRecipe - - SCHEMATIC_TABLE = create(AllBlocks.SCHEMATIC_TABLE).unlockedBy(AllItems.EMPTY_SCHEMATIC::get) - .viaShaped(b -> b.key('W', ItemTags.WOODEN_SLABS) - .key('S', Blocks.SMOOTH_STONE) - .patternLine("WWW") - .patternLine(" S ") - .patternLine(" S ")), - - SCHEMATICANNON = create(AllBlocks.SCHEMATICANNON).unlockedBy(AllItems.EMPTY_SCHEMATIC::get) - .viaShaped(b -> b.key('L', ItemTags.LOGS) - .key('D', Blocks.DISPENSER) - .key('C', Blocks.CAULDRON) - .key('S', Blocks.SMOOTH_STONE) - .key('I', Blocks.IRON_BLOCK) - .patternLine(" C ") - .patternLine("LDL") - .patternLine("SIS")), - - EMPTY_SCHEMATIC = create(AllItems.EMPTY_SCHEMATIC).unlockedBy(() -> Items.PAPER) - .viaShapeless(b -> b.addIngredient(Items.PAPER) - .addIngredient(Tags.Items.DYES_LIGHT_BLUE)), - - SCHEMATIC_AND_QUILL = create(AllItems.SCHEMATIC_AND_QUILL).unlockedBy(() -> Items.PAPER) - .viaShapeless(b -> b.addIngredient(AllItems.EMPTY_SCHEMATIC.get()) - .addIngredient(Tags.Items.FEATHERS)) - - ; - - private Marker PALETTES = enterSection(AllSections.PALETTES); - - GeneratedRecipe - - DARK_SCORIA = create(AllPaletteBlocks.DARK_SCORIA).returns(8) - .unlockedBy(() -> AllPaletteBlocks.SCORIA.get()) - .viaShaped(b -> b.key('#', AllPaletteBlocks.SCORIA.get()) - .key('D', Tags.Items.DYES_BLACK) - .patternLine("###") - .patternLine("#D#") - .patternLine("###")), - - COPPER_SHINGLES = create(AllBlocks.COPPER_SHINGLES).returns(16) - .unlockedByTag(I::copperSheet) - .viaShaped(b -> b.key('#', I.copperSheet()) - .patternLine("##") - .patternLine("##")), - - COPPER_SHINGLES_FROM_TILES = create(AllBlocks.COPPER_SHINGLES).withSuffix("_from_tiles") - .unlockedByTag(I::copperSheet) - .viaShapeless(b -> b.addIngredient(AllBlocks.COPPER_TILES.get())), - - COPPER_TILES = create(AllBlocks.COPPER_TILES).unlockedByTag(I::copperSheet) - .viaShapeless(b -> b.addIngredient(AllBlocks.COPPER_SHINGLES.get())) - - ; - - private Marker APPLIANCES = enterFolder("appliances"); - - GeneratedRecipe - - DOUGH = create(AllItems.DOUGH).unlockedBy(AllItems.WHEAT_FLOUR::get) - .viaShapeless(b -> b.addIngredient(AllItems.WHEAT_FLOUR.get()) - .addIngredient(Items.WATER_BUCKET)), - - DIVING_HELMET = create(AllItems.DIVING_HELMET).unlockedByTag(I::copper) - .viaShaped(b -> b.key('G', Tags.Items.GLASS) - .key('P', I.copper()) - .patternLine("PPP") - .patternLine("PGP")), - - COPPER_BACKTANK = create(AllItems.COPPER_BACKTANK).unlockedByTag(I::copper) - .viaShaped(b -> b.key('G', I.shaft()) - .key('A', I.andesite()) - .key('P', I.copper()) - .patternLine("AGA") - .patternLine("PPP") - .patternLine(" P ")), - - DIVING_BOOTS = create(AllItems.DIVING_BOOTS).unlockedByTag(I::copper) - .viaShaped(b -> b.key('G', I.andesite()) - .key('P', I.copper()) - .patternLine("P P") - .patternLine("P P") - .patternLine("G G")), - - SLIME_BALL = create(() -> Items.SLIME_BALL).unlockedBy(AllItems.DOUGH::get) - .viaShapeless(b -> b.addIngredient(AllItems.DOUGH.get()) - .addIngredient(Tags.Items.DYES_LIME)), - - TREE_FERTILIZER = create(AllItems.TREE_FERTILIZER).returns(2) - .unlockedBy(() -> Items.BONE_MEAL) - .viaShapeless(b -> b.addIngredient(Ingredient.fromTag(ItemTags.SMALL_FLOWERS), 2) - .addIngredient(Ingredient.fromItems(Items.HORN_CORAL, Items.BRAIN_CORAL, Items.TUBE_CORAL, - Items.BUBBLE_CORAL, Items.FIRE_CORAL)) - .addIngredient(Items.BONE_MEAL)) - - ; - - private Marker COOKING = enterFolder("/"); - - GeneratedRecipe - - DOUGH_TO_BREAD = create(() -> Items.BREAD).viaCooking(AllItems.DOUGH::get) - .inSmoker(), - - LIMESAND = create(AllPaletteBlocks.LIMESTONE::get).viaCooking(AllPaletteBlocks.LIMESAND::get) - .inFurnace(), - SOUL_SAND = create(AllPaletteBlocks.SCORIA::get).viaCooking(() -> Blocks.SOUL_SAND) - .inFurnace(), - DIORITE = create(AllPaletteBlocks.DOLOMITE::get).viaCooking(() -> Blocks.DIORITE) - .inFurnace(), - GRANITE = create(AllPaletteBlocks.GABBRO::get).viaCooking(() -> Blocks.GRANITE) - .inFurnace(), - NAT_SCORIA = create(AllPaletteBlocks.SCORIA::get).withSuffix("_from_natural") - .viaCooking(AllPaletteBlocks.NATURAL_SCORIA::get) - .inFurnace(), - - FRAMED_GLASS = recycleGlass(AllPaletteBlocks.FRAMED_GLASS), - TILED_GLASS = recycleGlass(AllPaletteBlocks.TILED_GLASS), - VERTICAL_FRAMED_GLASS = recycleGlass(AllPaletteBlocks.VERTICAL_FRAMED_GLASS), - HORIZONTAL_FRAMED_GLASS = recycleGlass(AllPaletteBlocks.HORIZONTAL_FRAMED_GLASS), - FRAMED_GLASS_PANE = recycleGlassPane(AllPaletteBlocks.FRAMED_GLASS_PANE), - TILED_GLASS_PANE = recycleGlassPane(AllPaletteBlocks.TILED_GLASS_PANE), - VERTICAL_FRAMED_GLASS_PANE = recycleGlassPane(AllPaletteBlocks.VERTICAL_FRAMED_GLASS_PANE), - HORIZONTAL_FRAMED_GLASS_PANE = recycleGlassPane(AllPaletteBlocks.HORIZONTAL_FRAMED_GLASS_PANE), - - COPPER_ORE = blastMetalOre(AllItems.COPPER_INGOT::get, AllTags.forgeItemTag("ores/copper")), - ZINC_ORE = blastMetalOre(AllItems.ZINC_INGOT::get, AllTags.forgeItemTag("ores/zinc")), - CRUSHED_IRON = blastCrushedMetal(() -> Items.IRON_INGOT, AllItems.CRUSHED_IRON::get), - CRUSHED_GOLD = blastCrushedMetal(() -> Items.GOLD_INGOT, AllItems.CRUSHED_GOLD::get), - CRUSHED_COPPER = blastCrushedMetal(AllItems.COPPER_INGOT::get, AllItems.CRUSHED_COPPER::get), - CRUSHED_ZINC = blastCrushedMetal(AllItems.ZINC_INGOT::get, AllItems.CRUSHED_ZINC::get), - CRUSHED_BRASS = blastCrushedMetal(AllItems.BRASS_INGOT::get, AllItems.CRUSHED_BRASS::get), - - CRUSHED_OSMIUM = blastModdedCrushedMetal(AllItems.CRUSHED_OSMIUM, "osmium", MEK), - CRUSHED_PLATINUM = blastModdedCrushedMetal(AllItems.CRUSHED_PLATINUM, "platinum", SM), - CRUSHED_SILVER = blastModdedCrushedMetal(AllItems.CRUSHED_SILVER, "silver", MW, TH, IE, SM, INF), - CRUSHED_TIN = blastModdedCrushedMetal(AllItems.CRUSHED_TIN, "tin", MEK, TH, MW, SM), - CRUSHED_LEAD = blastModdedCrushedMetal(AllItems.CRUSHED_LEAD, "lead", MEK, MW, TH, IE, SM, EID), - CRUSHED_QUICKSILVER = blastModdedCrushedMetal(AllItems.CRUSHED_QUICKSILVER, "quicksilver", MW), - CRUSHED_BAUXITE = blastModdedCrushedMetal(AllItems.CRUSHED_BAUXITE, "aluminum", IE, SM), - CRUSHED_URANIUM = blastModdedCrushedMetal(AllItems.CRUSHED_URANIUM, "uranium", MEK, IE, SM), - CRUSHED_NICKEL = blastModdedCrushedMetal(AllItems.CRUSHED_NICKEL, "nickel", TH, IE, SM) - - ; - - /* - * End of recipe list - */ - - String currentFolder = ""; - - Marker enterSection(AllSections section) { - currentFolder = Lang.asId(section.name()); - return new Marker(); - } - - Marker enterFolder(String folder) { - currentFolder = folder; - return new Marker(); - } - - GeneratedRecipeBuilder create(Supplier result) { - return new GeneratedRecipeBuilder(currentFolder, result); - } - - GeneratedRecipeBuilder create(ResourceLocation result) { - return new GeneratedRecipeBuilder(currentFolder, result); - } - - GeneratedRecipeBuilder create(ItemProviderEntry result) { - return create(result::get); - } - - GeneratedRecipe blastCrushedMetal(Supplier result, - Supplier ingredient) { - return create(result::get).withSuffix("_from_crushed") - .viaCooking(ingredient::get) - .rewardXP(.1f) - .inBlastFurnace(); - } - - GeneratedRecipe blastModdedCrushedMetal(ItemEntry ingredient, String metalName, Mods... mods) { - for (Mods mod : mods) { - ResourceLocation ingot = mod.ingotOf(metalName); - String modId = mod.getId(); - create(ingot).withSuffix("_compat_" + modId) - .whenModLoaded(modId) - .viaCooking(ingredient::get) - .rewardXP(.1f) - .inBlastFurnace(); - } - return null; - } - - GeneratedRecipe blastMetalOre(Supplier result, ITag.INamedTag ore) { - return create(result::get).withSuffix("_from_ore") - .viaCookingTag(() -> ore) - .rewardXP(.1f) - .inBlastFurnace(); - } - - GeneratedRecipe recycleGlass(BlockEntry ingredient) { - return create(() -> Blocks.GLASS).withSuffix("_from_" + ingredient.getId() - .getPath()) - .viaCooking(ingredient::get) - .forDuration(50) - .inFurnace(); - } - - GeneratedRecipe recycleGlassPane(BlockEntry ingredient) { - return create(() -> Blocks.GLASS_PANE).withSuffix("_from_" + ingredient.getId() - .getPath()) - .viaCooking(ingredient::get) - .forDuration(50) - .inFurnace(); - } - - GeneratedRecipe metalCompacting(List> variants, - List>> ingredients) { - GeneratedRecipe result = null; - for (int i = 0; i + 1 < variants.size(); i++) { - ItemProviderEntry currentEntry = variants.get(i); - ItemProviderEntry nextEntry = variants.get(i + 1); - Supplier> currentIngredient = ingredients.get(i); - Supplier> nextIngredient = ingredients.get(i + 1); - - result = create(nextEntry).withSuffix("_from_compacting") - .unlockedBy(currentEntry::get) - .viaShaped(b -> b.patternLine("###") - .patternLine("###") - .patternLine("###") - .key('#', currentIngredient.get())); - - result = create(currentEntry).returns(9) - .withSuffix("_from_decompacting") - .unlockedBy(nextEntry::get) - .viaShapeless(b -> b.addIngredient(nextIngredient.get())); - } - return result; - } - - GeneratedRecipe conversionCycle(List> cycle) { - GeneratedRecipe result = null; - for (int i = 0; i < cycle.size(); i++) { - ItemProviderEntry currentEntry = cycle.get(i); - ItemProviderEntry nextEntry = cycle.get((i + 1) % cycle.size()); - result = create(nextEntry).withSuffix("from_conversion") - .unlockedBy(currentEntry::get) - .viaShapeless(b -> b.addIngredient(currentEntry.get())); - } - return result; - } - - class GeneratedRecipeBuilder { - - private String path; - private String suffix; - private Supplier result; - private ResourceLocation compatDatagenOutput; - List recipeConditions; - - private Supplier unlockedBy; - private int amount; - - private GeneratedRecipeBuilder(String path) { - this.path = path; - this.recipeConditions = new ArrayList<>(); - this.suffix = ""; - this.amount = 1; - } - - public GeneratedRecipeBuilder(String path, Supplier result) { - this(path); - this.result = result; - } - - public GeneratedRecipeBuilder(String path, ResourceLocation result) { - this(path); - this.compatDatagenOutput = result; - } - - GeneratedRecipeBuilder returns(int amount) { - this.amount = amount; - return this; - } - - GeneratedRecipeBuilder unlockedBy(Supplier item) { - this.unlockedBy = () -> ItemPredicate.Builder.create() - .item(item.get()) - .build(); - return this; - } - - GeneratedRecipeBuilder unlockedByTag(Supplier> tag) { - this.unlockedBy = () -> ItemPredicate.Builder.create() - .tag(tag.get()) - .build(); - return this; - } - - GeneratedRecipeBuilder whenModLoaded(String modid) { - return withCondition(new ModLoadedCondition(modid)); - } - - GeneratedRecipeBuilder whenModMissing(String modid) { - return withCondition(new NotCondition(new ModLoadedCondition(modid))); - } - - GeneratedRecipeBuilder withCondition(ICondition condition) { - recipeConditions.add(condition); - return this; - } - - GeneratedRecipeBuilder withSuffix(String suffix) { - this.suffix = suffix; - return this; - } - - GeneratedRecipe viaShaped(UnaryOperator builder) { - return register(consumer -> { - ShapedRecipeBuilder b = builder.apply(ShapedRecipeBuilder.shapedRecipe(result.get(), amount)); - if (unlockedBy != null) - b.addCriterion("has_item", hasItem(unlockedBy.get())); - b.build(consumer, createLocation("crafting")); - }); - } - - GeneratedRecipe viaShapeless(UnaryOperator builder) { - return register(consumer -> { - ShapelessRecipeBuilder b = builder.apply(ShapelessRecipeBuilder.shapelessRecipe(result.get(), amount)); - if (unlockedBy != null) - b.addCriterion("has_item", hasItem(unlockedBy.get())); - b.build(consumer, createLocation("crafting")); - }); - } - - private ResourceLocation createSimpleLocation(String recipeType) { - return Create.asResource(recipeType + "/" + getRegistryName().getPath() + suffix); - } - - private ResourceLocation createLocation(String recipeType) { - return Create.asResource(recipeType + "/" + path + "/" + getRegistryName().getPath() + suffix); - } - - private ResourceLocation getRegistryName() { - return compatDatagenOutput == null ? result.get() - .asItem() - .getRegistryName() : compatDatagenOutput; - } - - GeneratedCookingRecipeBuilder viaCooking(Supplier item) { - return unlockedBy(item).viaCookingIngredient(() -> Ingredient.fromItems(item.get())); - } - - GeneratedCookingRecipeBuilder viaCookingTag(Supplier> tag) { - return unlockedByTag(tag).viaCookingIngredient(() -> Ingredient.fromTag(tag.get())); - } - - GeneratedCookingRecipeBuilder viaCookingIngredient(Supplier ingredient) { - return new GeneratedCookingRecipeBuilder(ingredient); - } - - class GeneratedCookingRecipeBuilder { - - private Supplier ingredient; - private float exp; - private int cookingTime; - - private final CookingRecipeSerializer FURNACE = IRecipeSerializer.SMELTING, - SMOKER = IRecipeSerializer.SMOKING, BLAST = IRecipeSerializer.BLASTING, - CAMPFIRE = IRecipeSerializer.CAMPFIRE_COOKING; - - GeneratedCookingRecipeBuilder(Supplier ingredient) { - this.ingredient = ingredient; - cookingTime = 200; - exp = 0; - } - - GeneratedCookingRecipeBuilder forDuration(int duration) { - cookingTime = duration; - return this; - } - - GeneratedCookingRecipeBuilder rewardXP(float xp) { - exp = xp; - return this; - } - - GeneratedRecipe inFurnace() { - return inFurnace(b -> b); - } - - GeneratedRecipe inFurnace(UnaryOperator builder) { - return create(FURNACE, builder, 1); - } - - GeneratedRecipe inSmoker() { - return inSmoker(b -> b); - } - - GeneratedRecipe inSmoker(UnaryOperator builder) { - create(FURNACE, builder, 1); - create(CAMPFIRE, builder, 3); - return create(SMOKER, builder, .5f); - } - - GeneratedRecipe inBlastFurnace() { - return inBlastFurnace(b -> b); - } - - GeneratedRecipe inBlastFurnace(UnaryOperator builder) { - create(FURNACE, builder, 1); - return create(BLAST, builder, .5f); - } - - private GeneratedRecipe create(CookingRecipeSerializer serializer, - UnaryOperator builder, float cookingTimeModifier) { - return register(consumer -> { - boolean isOtherMod = compatDatagenOutput != null; - - CookingRecipeBuilder b = builder.apply( - CookingRecipeBuilder.cookingRecipe(ingredient.get(), isOtherMod ? Items.DIRT : result.get(), - exp, (int) (cookingTime * cookingTimeModifier), serializer)); - if (unlockedBy != null) - b.addCriterion("has_item", hasItem(unlockedBy.get())); - b.build(result -> { - consumer.accept( - isOtherMod ? new ModdedCookingRecipeResult(result, compatDatagenOutput, recipeConditions) - : result); - }, createSimpleLocation(serializer.getRegistryName() - .getPath())); - }); - } - } - } - - @Override - public String getName() { - return "Create's Standard Recipes"; - } - - public StandardRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - private static class ModdedCookingRecipeResult implements IFinishedRecipe { - - private IFinishedRecipe wrapped; - private ResourceLocation outputOverride; - private List conditions; - - public ModdedCookingRecipeResult(IFinishedRecipe wrapped, ResourceLocation outputOverride, - List conditions) { - this.wrapped = wrapped; - this.outputOverride = outputOverride; - this.conditions = conditions; - } - - @Override - public ResourceLocation getID() { - return wrapped.getID(); - } - - @Override - public IRecipeSerializer getSerializer() { - return wrapped.getSerializer(); - } - - @Override - public JsonObject getAdvancementJson() { - return wrapped.getAdvancementJson(); - } - - @Override - public ResourceLocation getAdvancementID() { - return wrapped.getAdvancementID(); - } - - @Override - public void serialize(JsonObject object) { - wrapped.serialize(object); - object.addProperty("result", outputOverride.toString()); - - JsonArray conds = new JsonArray(); - conditions.forEach(c -> conds.add(CraftingHelper.serialize(c))); - object.add("conditions", conds); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java b/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java deleted file mode 100644 index 8f8bb2a0b..000000000 --- a/src/main/java/com/simibubi/create/foundation/data/recipe/WashingRecipeGen.java +++ /dev/null @@ -1,120 +0,0 @@ -package com.simibubi.create.foundation.data.recipe; - -import static com.simibubi.create.foundation.data.recipe.Mods.EID; -import static com.simibubi.create.foundation.data.recipe.Mods.IE; -import static com.simibubi.create.foundation.data.recipe.Mods.INF; -import static com.simibubi.create.foundation.data.recipe.Mods.MEK; -import static com.simibubi.create.foundation.data.recipe.Mods.MW; -import static com.simibubi.create.foundation.data.recipe.Mods.SM; -import static com.simibubi.create.foundation.data.recipe.Mods.TH; - -import java.util.function.Supplier; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllRecipeTypes; -import com.simibubi.create.content.palettes.AllPaletteBlocks; -import com.tterrag.registrate.util.entry.ItemEntry; - -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.Tags; - -public class WashingRecipeGen extends ProcessingRecipeGen { - - GeneratedRecipe - - WOOL = create("wool", b -> b.require(ItemTags.WOOL) - .output(Items.WHITE_WOOL)), - - STAINED_GLASS = create("stained_glass", b -> b.require(Tags.Items.STAINED_GLASS) - .output(Items.GLASS)), - STAINED_GLASS_PANE = create("stained_glass_pane", b -> b.require(Tags.Items.STAINED_GLASS_PANES) - .output(Items.GLASS_PANE)), - - GRAVEL = create(() -> Blocks.GRAVEL, b -> b.output(.25f, Items.FLINT) - .output(.125f, Items.IRON_NUGGET)), - SOUL_SAND = create(() -> Blocks.SOUL_SAND, b -> b.output(.125f, Items.QUARTZ, 4) - .output(.02f, Items.GOLD_NUGGET)), - RED_SAND = create(() -> Blocks.RED_SAND, b -> b.output(.125f, Items.GOLD_NUGGET, 3) - .output(.05f, Items.DEAD_BUSH)), - SAND = create(() -> Blocks.SAND, b -> b.output(.25f, Items.CLAY_BALL)), - - CRUSHED_COPPER = crushedOre(AllItems.CRUSHED_COPPER, AllItems.COPPER_NUGGET::get), - CRUSHED_ZINC = crushedOre(AllItems.CRUSHED_ZINC, AllItems.ZINC_NUGGET::get), - CRUSHED_BRASS = crushedOre(AllItems.CRUSHED_BRASS, AllItems.BRASS_NUGGET::get), - CRUSHED_GOLD = crushedOre(AllItems.CRUSHED_GOLD, () -> Items.GOLD_NUGGET), - CRUSHED_IRON = crushedOre(AllItems.CRUSHED_IRON, () -> Items.IRON_NUGGET), - - CRUSHED_OSMIUM = moddedCrushedOre(AllItems.CRUSHED_OSMIUM, "osmium", MEK), - CRUSHED_PLATINUM = moddedCrushedOre(AllItems.CRUSHED_PLATINUM, "platinum", SM), - CRUSHED_SILVER = moddedCrushedOre(AllItems.CRUSHED_SILVER, "silver", TH, MW, IE, SM, INF), - CRUSHED_TIN = moddedCrushedOre(AllItems.CRUSHED_TIN, "tin", TH, MEK, MW, SM), - CRUSHED_LEAD = moddedCrushedOre(AllItems.CRUSHED_LEAD, "lead", MEK, TH, MW, IE, SM, EID), - CRUSHED_QUICKSILVER = moddedCrushedOre(AllItems.CRUSHED_QUICKSILVER, "quicksilver", MW), - CRUSHED_BAUXITE = moddedCrushedOre(AllItems.CRUSHED_BAUXITE, "aluminum", IE, SM), - CRUSHED_URANIUM = moddedCrushedOre(AllItems.CRUSHED_URANIUM, "uranium", MEK, IE, SM), - CRUSHED_NICKEL = moddedCrushedOre(AllItems.CRUSHED_NICKEL, "nickel", TH, IE, SM), - - ICE = convert(Blocks.ICE, Blocks.PACKED_ICE), MAGMA_BLOCK = convert(Blocks.MAGMA_BLOCK, Blocks.OBSIDIAN), - - WHITE_CONCRETE = convert(Blocks.WHITE_CONCRETE_POWDER, Blocks.WHITE_CONCRETE), - ORANGE_CONCRETE = convert(Blocks.ORANGE_CONCRETE_POWDER, Blocks.ORANGE_CONCRETE), - MAGENTA_CONCRETE = convert(Blocks.MAGENTA_CONCRETE_POWDER, Blocks.MAGENTA_CONCRETE), - LIGHT_BLUE_CONCRETE = convert(Blocks.LIGHT_BLUE_CONCRETE_POWDER, Blocks.LIGHT_BLUE_CONCRETE), - LIME_CONCRETE = convert(Blocks.LIME_CONCRETE_POWDER, Blocks.LIME_CONCRETE), - YELLOW_CONCRETE = convert(Blocks.YELLOW_CONCRETE_POWDER, Blocks.YELLOW_CONCRETE), - PINK_CONCRETE = convert(Blocks.PINK_CONCRETE_POWDER, Blocks.PINK_CONCRETE), - LIGHT_GRAY_CONCRETE = convert(Blocks.LIGHT_GRAY_CONCRETE_POWDER, Blocks.LIGHT_GRAY_CONCRETE), - GRAY_CONCRETE = convert(Blocks.GRAY_CONCRETE_POWDER, Blocks.GRAY_CONCRETE), - PURPLE_CONCRETE = convert(Blocks.PURPLE_CONCRETE_POWDER, Blocks.PURPLE_CONCRETE), - GREEN_CONCRETE = convert(Blocks.GREEN_CONCRETE_POWDER, Blocks.GREEN_CONCRETE), - BROWN_CONCRETE = convert(Blocks.BROWN_CONCRETE_POWDER, Blocks.BROWN_CONCRETE), - RED_CONCRETE = convert(Blocks.RED_CONCRETE_POWDER, Blocks.RED_CONCRETE), - BLUE_CONCRETE = convert(Blocks.BLUE_CONCRETE_POWDER, Blocks.BLUE_CONCRETE), - CYAN_CONCRETE = convert(Blocks.CYAN_CONCRETE_POWDER, Blocks.CYAN_CONCRETE), - BLACK_CONCRETE = convert(Blocks.BLACK_CONCRETE_POWDER, Blocks.BLACK_CONCRETE), - - LIMESTONE = create(AllPaletteBlocks.LIMESTONE::get, b -> b.output(AllPaletteBlocks.WEATHERED_LIMESTONE.get())), - FLOUR = create(AllItems.WHEAT_FLOUR::get, b -> b.output(AllItems.DOUGH.get())) - - ; - - public GeneratedRecipe convert(Block block, Block result) { - return create(() -> block, b -> b.output(result)); - } - - public GeneratedRecipe crushedOre(ItemEntry crushed, Supplier nugget) { - return create(crushed::get, b -> b.output(nugget.get(), 10) - .output(.5f, nugget.get(), 5)); - } - - public GeneratedRecipe moddedCrushedOre(ItemEntry crushed, String metalName, Mods... mods) { - for (Mods mod : mods) { - ResourceLocation nugget = mod.nuggetOf(metalName); - create(mod.getId() + "/" + crushed.getId() - .getPath(), - b -> b.withItemIngredients(Ingredient.fromItems(crushed::get)) - .output(1, nugget, 10) - .output(.5f, nugget, 5) - .whenModLoaded(mod.getId())); - } - return null; - } - - public WashingRecipeGen(DataGenerator p_i48262_1_) { - super(p_i48262_1_); - } - - @Override - protected AllRecipeTypes getRecipeType() { - return AllRecipeTypes.SPLASHING; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/CombinedTankWrapper.java b/src/main/java/com/simibubi/create/foundation/fluid/CombinedTankWrapper.java deleted file mode 100644 index 8a25aa0fe..000000000 --- a/src/main/java/com/simibubi/create/foundation/fluid/CombinedTankWrapper.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.simibubi.create.foundation.fluid; - -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.items.wrapper.EmptyHandler; - -/** - * Combines multiple IFluidHandlers into one interface (See CombinedInvWrapper - * for items) - */ -public class CombinedTankWrapper implements IFluidHandler { - - protected final IFluidHandler[] itemHandler; - protected final int[] baseIndex; - protected final int tankCount; - protected boolean enforceVariety; - - public CombinedTankWrapper(IFluidHandler... fluidHandlers) { - this.itemHandler = fluidHandlers; - this.baseIndex = new int[fluidHandlers.length]; - int index = 0; - for (int i = 0; i < fluidHandlers.length; i++) { - index += fluidHandlers[i].getTanks(); - baseIndex[i] = index; - } - this.tankCount = index; - } - - public CombinedTankWrapper enforceVariety() { - enforceVariety = true; - return this; - } - - @Override - public int getTanks() { - return tankCount; - } - - @Override - public FluidStack getFluidInTank(int tank) { - int index = getIndexForSlot(tank); - IFluidHandler handler = getHandlerFromIndex(index); - tank = getSlotFromIndex(tank, index); - return handler.getFluidInTank(tank); - } - - @Override - public int getTankCapacity(int tank) { - int index = getIndexForSlot(tank); - IFluidHandler handler = getHandlerFromIndex(index); - int localSlot = getSlotFromIndex(tank, index); - return handler.getTankCapacity(localSlot); - } - - @Override - public boolean isFluidValid(int tank, FluidStack stack) { - int index = getIndexForSlot(tank); - IFluidHandler handler = getHandlerFromIndex(index); - int localSlot = getSlotFromIndex(tank, index); - return handler.isFluidValid(localSlot, stack); - } - - @Override - public int fill(FluidStack resource, FluidAction action) { - if (resource.isEmpty()) - return 0; - - int filled = 0; - resource = resource.copy(); - - boolean fittingHandlerFound = false; - Outer: for (boolean searchPass : Iterate.trueAndFalse) { - for (IFluidHandler iFluidHandler : itemHandler) { - - for (int i = 0; i < iFluidHandler.getTanks(); i++) - if (searchPass && iFluidHandler.getFluidInTank(i) - .isFluidEqual(resource)) - fittingHandlerFound = true; - - if (searchPass && !fittingHandlerFound) - continue; - - int filledIntoCurrent = iFluidHandler.fill(resource, action); - resource.shrink(filledIntoCurrent); - filled += filledIntoCurrent; - - if (resource.isEmpty() || fittingHandlerFound || enforceVariety && filledIntoCurrent != 0) - break Outer; - } - } - - return filled; - } - - @Override - public FluidStack drain(FluidStack resource, FluidAction action) { - if (resource.isEmpty()) - return resource; - - FluidStack drained = FluidStack.EMPTY; - resource = resource.copy(); - - for (IFluidHandler iFluidHandler : itemHandler) { - FluidStack drainedFromCurrent = iFluidHandler.drain(resource, action); - int amount = drainedFromCurrent.getAmount(); - resource.shrink(amount); - - if (!drainedFromCurrent.isEmpty() && (drained.isEmpty() || drainedFromCurrent.isFluidEqual(drained))) - drained = new FluidStack(drainedFromCurrent.getFluid(), amount + drained.getAmount(), - drainedFromCurrent.getTag()); - if (resource.isEmpty()) - break; - } - - return drained; - } - - @Override - public FluidStack drain(int maxDrain, FluidAction action) { - FluidStack drained = FluidStack.EMPTY; - - for (IFluidHandler iFluidHandler : itemHandler) { - FluidStack drainedFromCurrent = iFluidHandler.drain(maxDrain, action); - int amount = drainedFromCurrent.getAmount(); - maxDrain -= amount; - - if (!drainedFromCurrent.isEmpty() && (drained.isEmpty() || drainedFromCurrent.isFluidEqual(drained))) - drained = new FluidStack(drainedFromCurrent.getFluid(), amount + drained.getAmount(), - drainedFromCurrent.getTag()); - if (maxDrain == 0) - break; - } - - return drained; - } - - protected int getIndexForSlot(int slot) { - if (slot < 0) - return -1; - for (int i = 0; i < baseIndex.length; i++) - if (slot - baseIndex[i] < 0) - return i; - return -1; - } - - protected IFluidHandler getHandlerFromIndex(int index) { - if (index < 0 || index >= itemHandler.length) - return (IFluidHandler) EmptyHandler.INSTANCE; - return itemHandler[index]; - } - - protected int getSlotFromIndex(int slot, int index) { - if (index <= 0 || index >= baseIndex.length) - return slot; - return slot - baseIndex[index - 1]; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java deleted file mode 100644 index 96d61a412..000000000 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidHelper.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.simibubi.create.foundation.fluid; - -import javax.annotation.Nullable; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonSyntaxException; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.fluids.actors.GenericItemFilling; -import com.simibubi.create.content.contraptions.processing.EmptyingByBasin; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.JsonToNBT; -import net.minecraft.util.Hand; -import net.minecraft.util.JSONUtils; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.ForgeFlowingFluid; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler.FluidAction; -import net.minecraftforge.fluids.capability.IFluidHandlerItem; -import net.minecraftforge.registries.ForgeRegistries; - -public class FluidHelper { - - public static enum FluidExchange { - ITEM_TO_TANK, TANK_TO_ITEM; - } - - public static boolean isWater(Fluid fluid) { - return convertToStill(fluid) == Fluids.WATER; - } - - public static boolean isLava(Fluid fluid) { - return convertToStill(fluid) == Fluids.LAVA; - } - - public static boolean hasBlockState(Fluid fluid) { - BlockState blockState = fluid.getDefaultState() - .getBlockState(); - return blockState != null && blockState != Blocks.AIR.getDefaultState(); - } - - public static FluidStack copyStackWithAmount(FluidStack fs, int amount) { - if (fs.isEmpty()) - return FluidStack.EMPTY; - FluidStack copy = fs.copy(); - copy.setAmount(amount); - return copy; - } - - public static Fluid convertToFlowing(Fluid fluid) { - if (fluid == Fluids.WATER) - return Fluids.FLOWING_WATER; - if (fluid == Fluids.LAVA) - return Fluids.FLOWING_LAVA; - if (fluid instanceof ForgeFlowingFluid) - return ((ForgeFlowingFluid) fluid).getFlowingFluid(); - return fluid; - } - - public static Fluid convertToStill(Fluid fluid) { - if (fluid == Fluids.FLOWING_WATER) - return Fluids.WATER; - if (fluid == Fluids.FLOWING_LAVA) - return Fluids.LAVA; - if (fluid instanceof ForgeFlowingFluid) - return ((ForgeFlowingFluid) fluid).getStillFluid(); - return fluid; - } - - public static JsonElement serializeFluidStack(FluidStack stack) { - JsonObject json = new JsonObject(); - json.addProperty("fluid", stack.getFluid() - .getRegistryName() - .toString()); - json.addProperty("amount", stack.getAmount()); - if (stack.hasTag()) - json.addProperty("nbt", stack.getTag() - .toString()); - return json; - } - - public static FluidStack deserializeFluidStack(JsonObject json) { - ResourceLocation id = new ResourceLocation(JSONUtils.getString(json, "fluid")); - Fluid fluid = ForgeRegistries.FLUIDS.getValue(id); - if (fluid == null) - throw new JsonSyntaxException("Unknown fluid '" + id + "'"); - int amount = JSONUtils.getInt(json, "amount"); - FluidStack stack = new FluidStack(fluid, amount); - - if (!json.has("nbt")) - return stack; - - try { - JsonElement element = json.get("nbt"); - stack.setTag(JsonToNBT.getTagFromJson( - element.isJsonObject() ? Create.GSON.toJson(element) : JSONUtils.getString(element, "nbt"))); - - } catch (CommandSyntaxException e) { - e.printStackTrace(); - } - - return stack; - } - - public static boolean tryEmptyItemIntoTE(World worldIn, PlayerEntity player, Hand handIn, ItemStack heldItem, - SmartTileEntity te) { - if (!EmptyingByBasin.canItemBeEmptied(worldIn, heldItem)) - return false; - - Pair emptyingResult = EmptyingByBasin.emptyItem(worldIn, heldItem, true); - LazyOptional capability = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY); - IFluidHandler tank = capability.orElse(null); - FluidStack fluidStack = emptyingResult.getFirst(); - - if (tank == null || fluidStack.getAmount() != tank.fill(fluidStack, FluidAction.SIMULATE)) - return false; - if (worldIn.isRemote) - return true; - - ItemStack copyOfHeld = heldItem.copy(); - emptyingResult = EmptyingByBasin.emptyItem(worldIn, copyOfHeld, false); - tank.fill(fluidStack, FluidAction.EXECUTE); - - if (!player.isCreative()) { - if (copyOfHeld.isEmpty()) - player.setHeldItem(handIn, emptyingResult.getSecond()); - else { - player.setHeldItem(handIn, copyOfHeld); - player.inventory.placeItemBackInInventory(worldIn, emptyingResult.getSecond()); - } - } - return true; - } - - public static boolean tryFillItemFromTE(World world, PlayerEntity player, Hand handIn, ItemStack heldItem, - SmartTileEntity te) { - if (!GenericItemFilling.canItemBeFilled(world, heldItem)) - return false; - - LazyOptional capability = te.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY); - IFluidHandler tank = capability.orElse(null); - - if (tank == null) - return false; - - for (int i = 0; i < tank.getTanks(); i++) { - FluidStack fluid = tank.getFluidInTank(i); - if (fluid.isEmpty()) - continue; - int requiredAmountForItem = GenericItemFilling.getRequiredAmountForItem(world, heldItem, fluid.copy()); - if (requiredAmountForItem == -1) - continue; - if (requiredAmountForItem > fluid.getAmount()) - continue; - - if (world.isRemote) - return true; - - if (player.isCreative()) - heldItem = heldItem.copy(); - ItemStack out = GenericItemFilling.fillItem(world, requiredAmountForItem, heldItem, fluid.copy()); - - FluidStack copy = fluid.copy(); - copy.setAmount(requiredAmountForItem); - tank.drain(copy, FluidAction.EXECUTE); - - if (!player.isCreative()) - player.inventory.placeItemBackInInventory(world, out); - te.notifyUpdate(); - return true; - } - - return false; - } - - @Nullable - public static FluidExchange exchange(IFluidHandler fluidTank, IFluidHandlerItem fluidItem, FluidExchange preferred, - int maxAmount) { - return exchange(fluidTank, fluidItem, preferred, true, maxAmount); - } - - @Nullable - public static FluidExchange exchangeAll(IFluidHandler fluidTank, IFluidHandlerItem fluidItem, - FluidExchange preferred) { - return exchange(fluidTank, fluidItem, preferred, false, Integer.MAX_VALUE); - } - - @Nullable - private static FluidExchange exchange(IFluidHandler fluidTank, IFluidHandlerItem fluidItem, FluidExchange preferred, - boolean singleOp, int maxTransferAmountPerTank) { - - // Locks in the transfer direction of this operation - FluidExchange lockedExchange = null; - - for (int tankSlot = 0; tankSlot < fluidTank.getTanks(); tankSlot++) { - for (int slot = 0; slot < fluidItem.getTanks(); slot++) { - - FluidStack fluidInTank = fluidTank.getFluidInTank(tankSlot); - int tankCapacity = fluidTank.getTankCapacity(tankSlot) - fluidInTank.getAmount(); - boolean tankEmpty = fluidInTank.isEmpty(); - - FluidStack fluidInItem = fluidItem.getFluidInTank(tankSlot); - int itemCapacity = fluidItem.getTankCapacity(tankSlot) - fluidInItem.getAmount(); - boolean itemEmpty = fluidInItem.isEmpty(); - - boolean undecided = lockedExchange == null; - boolean canMoveToTank = (undecided || lockedExchange == FluidExchange.ITEM_TO_TANK) && tankCapacity > 0; - boolean canMoveToItem = (undecided || lockedExchange == FluidExchange.TANK_TO_ITEM) && itemCapacity > 0; - - // Incompatible Liquids - if (!tankEmpty && !itemEmpty && !fluidInItem.isFluidEqual(fluidInTank)) - continue; - - // Transfer liquid to tank - if (((tankEmpty || itemCapacity <= 0) && canMoveToTank) - || undecided && preferred == FluidExchange.ITEM_TO_TANK) { - - int amount = fluidTank.fill( - fluidItem.drain(Math.min(maxTransferAmountPerTank, tankCapacity), FluidAction.EXECUTE), - FluidAction.EXECUTE); - if (amount > 0) { - lockedExchange = FluidExchange.ITEM_TO_TANK; - if (singleOp) - return lockedExchange; - continue; - } - } - - // Transfer liquid from tank - if (((itemEmpty || tankCapacity <= 0) && canMoveToItem) - || undecided && preferred == FluidExchange.TANK_TO_ITEM) { - - int amount = fluidItem.fill( - fluidTank.drain(Math.min(maxTransferAmountPerTank, itemCapacity), FluidAction.EXECUTE), - FluidAction.EXECUTE); - if (amount > 0) { - lockedExchange = FluidExchange.TANK_TO_ITEM; - if (singleOp) - return lockedExchange; - continue; - } - - } - - } - } - - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java deleted file mode 100644 index 1082cb755..000000000 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidIngredient.java +++ /dev/null @@ -1,266 +0,0 @@ -package com.simibubi.create.foundation.fluid; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import javax.annotation.Nullable; - -import com.google.common.collect.ImmutableList; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.google.gson.JsonSyntaxException; - -import net.minecraft.fluid.FlowingFluid; -import net.minecraft.fluid.Fluid; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraft.tags.FluidTags; -import net.minecraft.tags.ITag; -import net.minecraft.util.JSONUtils; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fluids.FluidStack; - -public abstract class FluidIngredient implements Predicate { - - public static final FluidIngredient EMPTY = new FluidStackIngredient(); - - public List matchingFluidStacks; - - public static FluidIngredient fromTag(ITag.INamedTag tag, int amount) { - FluidTagIngredient ingredient = new FluidTagIngredient(); - ingredient.tag = tag; - ingredient.amountRequired = amount; - return ingredient; - } - - public static FluidIngredient fromFluid(Fluid fluid, int amount) { - FluidStackIngredient ingredient = new FluidStackIngredient(); - ingredient.fluid = fluid; - ingredient.amountRequired = amount; - ingredient.fixFlowing(); - return ingredient; - } - - public static FluidIngredient fromFluidStack(FluidStack fluidStack) { - FluidStackIngredient ingredient = new FluidStackIngredient(); - ingredient.fluid = fluidStack.getFluid(); - ingredient.amountRequired = fluidStack.getAmount(); - ingredient.fixFlowing(); - if (fluidStack.hasTag()) - ingredient.tagToMatch = fluidStack.getTag(); - return ingredient; - } - - protected int amountRequired; - - protected abstract boolean testInternal(FluidStack t); - - protected abstract void readInternal(PacketBuffer buffer); - - protected abstract void writeInternal(PacketBuffer buffer); - - protected abstract void readInternal(JsonObject json); - - protected abstract void writeInternal(JsonObject json); - - protected abstract List determineMatchingFluidStacks(); - - public int getRequiredAmount() { - return amountRequired; - } - - public List getMatchingFluidStacks() { - if (matchingFluidStacks != null) - return matchingFluidStacks; - return matchingFluidStacks = determineMatchingFluidStacks(); - } - - @Override - public boolean test(FluidStack t) { - if (t == null) - throw new IllegalArgumentException("FluidStack cannot be null"); - return testInternal(t); - } - - public void write(PacketBuffer buffer) { - buffer.writeBoolean(this instanceof FluidTagIngredient); - buffer.writeVarInt(amountRequired); - writeInternal(buffer); - } - - public static FluidIngredient read(PacketBuffer buffer) { - boolean isTagIngredient = buffer.readBoolean(); - FluidIngredient ingredient = isTagIngredient ? new FluidTagIngredient() : new FluidStackIngredient(); - ingredient.amountRequired = buffer.readVarInt(); - ingredient.readInternal(buffer); - return ingredient; - } - - public JsonObject serialize() { - JsonObject json = new JsonObject(); - writeInternal(json); - json.addProperty("amount", amountRequired); - return json; - } - - public static boolean isFluidIngredient(@Nullable JsonElement je) { - if (je == null || je.isJsonNull()) - return false; - if (!je.isJsonObject()) - return false; - JsonObject json = je.getAsJsonObject(); - if (json.has("fluidTag")) - return true; - else if (json.has("fluid")) - return true; - return false; - } - - public static FluidIngredient deserialize(@Nullable JsonElement je) { - if (!isFluidIngredient(je)) - throw new JsonSyntaxException("Invalid fluid ingredient: " + Objects.toString(je)); - - JsonObject json = je.getAsJsonObject(); - FluidIngredient ingredient = json.has("fluidTag") ? new FluidTagIngredient() : new FluidStackIngredient(); - ingredient.readInternal(json); - - if (!json.has("amount")) - throw new JsonSyntaxException("Fluid ingredient has to define an amount"); - ingredient.amountRequired = JSONUtils.getInt(json, "amount"); - return ingredient; - } - - public static class FluidStackIngredient extends FluidIngredient { - - protected Fluid fluid; - protected CompoundNBT tagToMatch; - - public FluidStackIngredient() { - tagToMatch = new CompoundNBT(); - } - - void fixFlowing() { - if (fluid instanceof FlowingFluid) - fluid = ((FlowingFluid) fluid).getStillFluid(); - } - - @Override - protected boolean testInternal(FluidStack t) { - if (!t.getFluid() - .isEquivalentTo(fluid)) - return false; - if (tagToMatch.isEmpty()) - return true; - CompoundNBT tag = t.getOrCreateTag(); - return tag.copy() - .merge(tagToMatch) - .equals(tag); - } - - @Override - protected void readInternal(PacketBuffer buffer) { - fluid = buffer.readRegistryId(); - tagToMatch = buffer.readCompoundTag(); - } - - @Override - protected void writeInternal(PacketBuffer buffer) { - buffer.writeRegistryId(fluid); - buffer.writeCompoundTag(tagToMatch); - } - - @Override - protected void readInternal(JsonObject json) { - FluidStack stack = FluidHelper.deserializeFluidStack(json); - fluid = stack.getFluid(); - tagToMatch = stack.getOrCreateTag(); - } - - @Override - protected void writeInternal(JsonObject json) { - json.addProperty("fluid", fluid.getRegistryName() - .toString()); - json.add("nbt", new JsonParser().parse(tagToMatch.toString())); - } - - @Override - protected List determineMatchingFluidStacks() { - return ImmutableList.of(tagToMatch.isEmpty() ? new FluidStack(fluid, amountRequired) - : new FluidStack(fluid, amountRequired, tagToMatch)); - } - - } - - public static class FluidTagIngredient extends FluidIngredient { - - protected ITag.INamedTag tag; - - @Override - protected boolean testInternal(FluidStack t) { - if (tag == null) - for (FluidStack accepted : getMatchingFluidStacks()) - if (accepted.getFluid() - .isEquivalentTo(t.getFluid())) - return true; - return t.getFluid() - .isIn(tag); - } - - @Override - protected void readInternal(PacketBuffer buffer) { - int size = buffer.readVarInt(); - matchingFluidStacks = new ArrayList<>(size); - for (int i = 0; i < size; i++) - matchingFluidStacks.add(buffer.readFluidStack()); - } - - @Override - protected void writeInternal(PacketBuffer buffer) { - // Tag has to be resolved on the server before sending - List matchingFluidStacks = getMatchingFluidStacks(); - buffer.writeVarInt(matchingFluidStacks.size()); - matchingFluidStacks.stream() - .forEach(buffer::writeFluidStack); - } - - @Override - protected void readInternal(JsonObject json) { - ResourceLocation id = new ResourceLocation(JSONUtils.getString(json, "fluidTag")); - Optional> optionalINamedTag = FluidTags.getRequiredTags() - .stream() - .filter(fluidINamedTag -> fluidINamedTag.getId() - .equals(id)) - .findFirst(); // fixme - if (!optionalINamedTag.isPresent()) - throw new JsonSyntaxException("Unknown fluid tag '" + id + "'"); - tag = optionalINamedTag.get(); - } - - @Override - protected void writeInternal(JsonObject json) { - json.addProperty("fluidTag", tag.getId() - .toString()); - } - - @Override - protected List determineMatchingFluidStacks() { - return tag.values() - .stream() - .map(f -> { - if (f instanceof FlowingFluid) - return ((FlowingFluid) f).getStillFluid(); - return f; - }) - .distinct() - .map(f -> new FluidStack(f, amountRequired)) - .collect(Collectors.toList()); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java b/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java deleted file mode 100644 index 9785d19d8..000000000 --- a/src/main/java/com/simibubi/create/foundation/fluid/FluidRenderer.java +++ /dev/null @@ -1,244 +0,0 @@ -package com.simibubi.create.foundation.fluid; - -import java.util.function.Function; - -import com.jozufozu.flywheel.event.RenderLayerEvent; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.matrix.MatrixStack.Entry; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.fluid.Fluid; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fluids.FluidAttributes; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber -public class FluidRenderer { - - // If we draw to BufferBuilder that minecraft provides for RenderType.getTranslucent(), minecraft draws the contents - // to the wrong framebuffer. If we tried to inject a custom RenderType into RenderTypeBuffers, we'd have the same - // issue. This is because minecraft calls IRenderTypeBuffer.Impl::draw just before clearing the transparency - // framebuffer, so anything we put into the normal RenderTypeBuffers will never be seen. By using our own - // BufferBuilder, we can avoid getting our contents wiped. Then, using Flywheel's renderLayer hook, we can draw our - // buffer at the same time the transparent world layer is drawn. - private static final BufferBuilder _builder = new BufferBuilder(RenderType.getTranslucent().getExpectedBufferSize()); - - private static BufferBuilder getBuilder() { - if (!_builder.isBuilding()) { - RenderType type = RenderType.getTranslucent(); - - _builder.begin(type.getDrawMode(), type.getVertexFormat()); - } - - return _builder; - } - - @SubscribeEvent - public static void renderLayer(RenderLayerEvent event) { - if (event.type == RenderType.getTranslucent()) { - event.type.draw(_builder, 0, 0, 0); - } - } - - public static void renderFluidStream(FluidStack fluidStack, Direction direction, float radius, float progress, - boolean inbound, IRenderTypeBuffer buffer, MatrixStack ms, int light) { - Fluid fluid = fluidStack.getFluid(); - FluidAttributes fluidAttributes = fluid.getAttributes(); - Function spriteAtlas = Minecraft.getInstance() - .getSpriteAtlas(PlayerContainer.BLOCK_ATLAS_TEXTURE); - TextureAtlasSprite flowTexture = spriteAtlas.apply(fluidAttributes.getFlowingTexture(fluidStack)); - TextureAtlasSprite stillTexture = spriteAtlas.apply(fluidAttributes.getStillTexture(fluidStack)); - - int color = fluidAttributes.getColor(fluidStack); - IVertexBuilder builder = getBuilder(); - MatrixStacker msr = MatrixStacker.of(ms); - int blockLightIn = (light >> 4) & 0xf; - int luminosity = Math.max(blockLightIn, fluidAttributes.getLuminosity(fluidStack)); - light = (light & 0xf00000) | luminosity << 4; - - if (inbound) - direction = direction.getOpposite(); - - ms.push(); - msr.centre() - .rotateY(AngleHelper.horizontalAngle(direction)) - .rotateX(direction == Direction.UP ? 0 : direction == Direction.DOWN ? 180 : 90) - .unCentre(); - ms.translate(.5, 0, .5); - - float h = (float) (radius); - float hMin = (float) (-radius); - float hMax = (float) (radius); - float y = inbound ? 0 : .5f; - float yMin = y; - float yMax = y + MathHelper.clamp(progress * .5f - 1e-6f, 0, 1); - - for (int i = 0; i < 4; i++) { - ms.push(); - renderTiledHorizontalFace(h, Direction.SOUTH, hMin, yMin, hMax, yMax, builder, ms, light, color, - flowTexture); - ms.pop(); - msr.rotateY(90); - } - - if (progress != 1) - renderTiledVerticalFace(yMax, Direction.UP, hMin, hMin, hMax, hMax, builder, ms, light, color, - stillTexture); - - ms.pop(); - - } - - public static void renderTiledFluidBB(FluidStack fluidStack, float xMin, float yMin, float zMin, float xMax, - float yMax, float zMax, IRenderTypeBuffer buffer, MatrixStack ms, int light, boolean renderBottom) { - Fluid fluid = fluidStack.getFluid(); - FluidAttributes fluidAttributes = fluid.getAttributes(); - TextureAtlasSprite fluidTexture = Minecraft.getInstance() - .getSpriteAtlas(PlayerContainer.BLOCK_ATLAS_TEXTURE) - .apply(fluidAttributes.getStillTexture(fluidStack)); - - int color = fluidAttributes.getColor(fluidStack); - IVertexBuilder builder = getBuilder(); - MatrixStacker msr = MatrixStacker.of(ms); - Vector3d center = new Vector3d(xMin + (xMax - xMin) / 2, yMin + (yMax - yMin) / 2, zMin + (zMax - zMin) / 2); - - int blockLightIn = (light >> 4) & 0xf; - int luminosity = Math.max(blockLightIn, fluidAttributes.getLuminosity(fluidStack)); - light = (light & 0xf00000) | luminosity << 4; - - ms.push(); - if (fluidStack.getFluid() - .getAttributes() - .isLighterThanAir()) - MatrixStacker.of(ms) - .translate(center) - .rotateX(180) - .translateBack(center); - - for (Direction side : Iterate.directions) { - if (side == Direction.DOWN && !renderBottom) - continue; - - if (side.getAxis() - .isHorizontal()) { - ms.push(); - - if (side.getAxisDirection() == AxisDirection.NEGATIVE) - msr.translate(center) - .rotateY(180) - .translateBack(center); - - boolean X = side.getAxis() == Axis.X; - int darkColor = ColorHelper.mixColors(color, 0xff000011, 1 / 4f); - renderTiledHorizontalFace(X ? xMax : zMax, side, X ? zMin : xMin, yMin, X ? zMax : xMax, yMax, _builder, - ms, light, darkColor, fluidTexture); - - ms.pop(); - continue; - } - - renderTiledVerticalFace(side == Direction.UP ? yMax : yMin, side, xMin, zMin, xMax, zMax, _builder, ms, - light, color, fluidTexture); - } - - ms.pop(); - - } - - private static void renderTiledVerticalFace(float y, Direction face, float xMin, float zMin, float xMax, float zMax, - IVertexBuilder builder, MatrixStack ms, int light, int color, TextureAtlasSprite texture) { - float x2 = 0; - float z2 = 0; - for (float x1 = xMin; x1 < xMax; x1 = x2) { - x2 = Math.min((int) (x1 + 1), xMax); - for (float z1 = zMin; z1 < zMax; z1 = z2) { - z2 = Math.min((int) (z1 + 1), zMax); - - float u1 = texture.getInterpolatedU(local(x1) * 16); - float v1 = texture.getInterpolatedV(local(z1) * 16); - float u2 = texture.getInterpolatedU(x2 == xMax ? local(x2) * 16 : 16); - float v2 = texture.getInterpolatedV(z2 == zMax ? local(z2) * 16 : 16); - - putVertex(builder, ms, x1, y, z2, color, u1, v2, face, light); - putVertex(builder, ms, x2, y, z2, color, u2, v2, face, light); - putVertex(builder, ms, x2, y, z1, color, u2, v1, face, light); - putVertex(builder, ms, x1, y, z1, color, u1, v1, face, light); - } - } - } - - private static void renderTiledHorizontalFace(float h, Direction face, float hMin, float yMin, float hMax, - float yMax, IVertexBuilder builder, MatrixStack ms, int light, int color, TextureAtlasSprite texture) { - boolean X = face.getAxis() == Axis.X; - - float h2 = 0; - float y2 = 0; - - for (float h1 = hMin; h1 < hMax; h1 = h2) { - h2 = Math.min((int) (h1 + 1), hMax); - for (float y1 = yMin; y1 < yMax; y1 = y2) { - y2 = Math.min((int) (y1 + 1), yMax); - - int multiplier = texture.getWidth() == 32 ? 8 : 16; - float u1 = texture.getInterpolatedU(local(h1) * multiplier); - float v1 = texture.getInterpolatedV(local(y1) * multiplier); - float u2 = texture.getInterpolatedU(h2 == hMax ? local(h2) * multiplier : multiplier); - float v2 = texture.getInterpolatedV(y2 == yMax ? local(y2) * multiplier : multiplier); - - float x1 = X ? h : h1; - float x2 = X ? h : h2; - float z1 = X ? h1 : h; - float z2 = X ? h2 : h; - - putVertex(builder, ms, x2, y2, z1, color, u1, v2, face, light); - putVertex(builder, ms, x1, y2, z2, color, u2, v2, face, light); - putVertex(builder, ms, x1, y1, z2, color, u2, v1, face, light); - putVertex(builder, ms, x2, y1, z1, color, u1, v1, face, light); - } - } - } - - private static float local(float f) { - if (f < 0) - f += 10; - return f - ((int) f); - } - - private static void putVertex(IVertexBuilder builder, MatrixStack ms, float x, float y, float z, int color, float u, - float v, Direction face, int light) { - - Vector3i n = face.getDirectionVec(); - Entry peek = ms.peek(); - int ff = 0xff; - int a = color >> 24 & ff; - int r = color >> 16 & ff; - int g = color >> 8 & ff; - int b = color & ff; - - builder.vertex(peek.getModel(), x, y, z) - .color(r, g, b, a) - .texture(u, v) - .light(light) - .normal(n.getX(), n.getY(), n.getZ()) - .endVertex(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/fluid/SmartFluidTank.java b/src/main/java/com/simibubi/create/foundation/fluid/SmartFluidTank.java deleted file mode 100644 index db37ecc02..000000000 --- a/src/main/java/com/simibubi/create/foundation/fluid/SmartFluidTank.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.foundation.fluid; - -import java.util.function.Consumer; - -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.templates.FluidTank; - -public class SmartFluidTank extends FluidTank { - - private Consumer updateCallback; - - public SmartFluidTank(int capacity, Consumer updateCallback) { - super(capacity); - this.updateCallback = updateCallback; - } - - @Override - protected void onContentsChanged() { - super.onContentsChanged(); - updateCallback.accept(getFluid()); - } - - @Override - public void setFluid(FluidStack stack) { - super.setFluid(stack); - updateCallback.accept(stack); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java deleted file mode 100644 index d76463414..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiContainerScreen.java +++ /dev/null @@ -1,266 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.screen.inventory.ContainerScreen; -import net.minecraft.client.gui.widget.Widget; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Rectangle2d; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.client.util.InputMappings; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.container.Container; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -@ParametersAreNonnullByDefault -public abstract class AbstractSimiContainerScreen extends ContainerScreen { - - protected List widgets; - - public AbstractSimiContainerScreen(T container, PlayerInventory inv, ITextComponent title) { - super(container, inv, title); - widgets = new ArrayList<>(); - } - - protected void setWindowSize(int width, int height) { - this.xSize = width; - this.ySize = height; - } - - @Override - protected void drawForeground(MatrixStack p_230451_1_, int p_230451_2_, int p_230451_3_) { - // no-op to prevent screen- and inventory-title from being rendered at incorrect location - // could also set this.titleX/Y and this.playerInventoryTitleX/Y to the proper values instead - } - - @Override - public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - partialTicks = Minecraft.getInstance() - .getRenderPartialTicks(); - renderBackground(matrixStack); - renderWindow(matrixStack, mouseX, mouseY, partialTicks); - - for (Widget widget : widgets) - widget.render(matrixStack, mouseX, mouseY, partialTicks); - - super.render(matrixStack, mouseX, mouseY, partialTicks); - - RenderSystem.enableAlphaTest(); - RenderSystem.enableBlend(); - RenderSystem.disableRescaleNormal(); - RenderHelper.disableStandardItemLighting(); - RenderSystem.disableLighting(); - RenderSystem.disableDepthTest(); - renderWindowForeground(matrixStack, mouseX, mouseY, partialTicks); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - boolean result = false; - for (Widget widget : widgets) { - if (widget.mouseClicked(x, y, button)) - result = true; - } - return result || super.mouseClicked(x, y, button); - } - - @Override - public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { - for (Widget widget : widgets) { - if (widget.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_)) - return true; - } - - if (super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_)) - return true; - - InputMappings.Input mouseKey = InputMappings.getInputByCode(code, p_keyPressed_2_); - if (this.client.gameSettings.keyBindInventory.isActiveAndMatches(mouseKey)) { - this.onClose(); - return true; - } - return false; - } - - @Override - public boolean charTyped(char character, int code) { - for (Widget widget : widgets) { - if (widget.charTyped(character, code)) - return true; - } - return super.charTyped(character, code); - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double delta) { - for (Widget widget : widgets) { - if (widget.mouseScrolled(mouseX, mouseY, delta)) - return true; - } - return super.mouseScrolled(mouseX, mouseY, delta); - } - - @Override - public boolean mouseReleased(double x, double y, int button) { - boolean result = false; - for (Widget widget : widgets) { - if (widget.mouseReleased(x, y, button)) - result = true; - } - return result | super.mouseReleased(x, y, button); - } - - @Override - public boolean shouldCloseOnEsc() { - return true; - } - - @Override - public boolean isPauseScreen() { - return false; - } - - protected abstract void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks); - - @Override - protected void drawBackground(MatrixStack p_230450_1_, float p_230450_2_, int p_230450_3_, int p_230450_4_) { - - } - - protected void renderWindowForeground(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - drawMouseoverTooltip(matrixStack, mouseX, mouseY); - for (Widget widget : widgets) { - if (!widget.isHovered()) - continue; - - if (widget instanceof AbstractSimiWidget) { - if (!((AbstractSimiWidget) widget).getToolTip().isEmpty()) - renderTooltip(matrixStack, ((AbstractSimiWidget) widget).getToolTip(), mouseX, mouseY); - - } else { - widget.renderToolTip(matrixStack, mouseX, mouseY); - } - } - } - - protected void renderItemOverlayIntoGUI(MatrixStack matrixStack, FontRenderer fr, ItemStack stack, int xPosition, - int yPosition, @Nullable String text, int textColor) { - if (!stack.isEmpty()) { - if (stack.getItem() - .showDurabilityBar(stack)) { - RenderSystem.disableLighting(); - RenderSystem.disableDepthTest(); - RenderSystem.disableTexture(); - RenderSystem.disableAlphaTest(); - RenderSystem.disableBlend(); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder bufferbuilder = tessellator.getBuffer(); - double health = stack.getItem() - .getDurabilityForDisplay(stack); - int i = Math.round(13.0F - (float) health * 13.0F); - int j = stack.getItem() - .getRGBDurabilityForDisplay(stack); - this.draw(bufferbuilder, xPosition + 2, yPosition + 13, 13, 2, 0, 0, 0, 255); - this.draw(bufferbuilder, xPosition + 2, yPosition + 13, i, 1, j >> 16 & 255, j >> 8 & 255, j & 255, - 255); - RenderSystem.enableBlend(); - RenderSystem.enableAlphaTest(); - RenderSystem.enableTexture(); - RenderSystem.enableLighting(); - RenderSystem.enableDepthTest(); - } - - if (stack.getCount() != 1 || text != null) { - String s = text == null ? String.valueOf(stack.getCount()) : text; - RenderSystem.disableLighting(); - RenderSystem.disableDepthTest(); - RenderSystem.disableBlend(); - matrixStack.push(); - - int guiScaleFactor = (int) client.getWindow() - .getGuiScaleFactor(); - matrixStack.translate(xPosition + 16.5f, yPosition + 16.5f, 0); - double scale = getItemCountTextScale(); - - matrixStack.scale((float) scale, (float) scale, 0); - matrixStack.translate(-fr.getStringWidth(s) - (guiScaleFactor > 1 ? 0 : -.5f), - -textRenderer.FONT_HEIGHT + (guiScaleFactor > 1 ? 1 : 1.75f), 0); - fr.drawWithShadow(matrixStack, s, 0, 0, textColor); - - matrixStack.pop(); - RenderSystem.enableBlend(); - RenderSystem.enableLighting(); - RenderSystem.enableDepthTest(); - RenderSystem.enableBlend(); - } - } - } - - public double getItemCountTextScale() { - int guiScaleFactor = (int) client.getWindow() - .getGuiScaleFactor(); - double scale = 1; - switch (guiScaleFactor) { - case 1: - scale = 2060 / 2048d; - break; - case 2: - scale = .5; - break; - case 3: - scale = .675; - break; - case 4: - scale = .75; - break; - default: - scale = ((float) guiScaleFactor - 1) / guiScaleFactor; - } - return scale; - } - - private void draw(BufferBuilder renderer, int x, int y, int width, int height, int red, int green, int blue, - int alpha) { - renderer.begin(7, DefaultVertexFormats.POSITION_COLOR); - renderer.vertex((double) (x + 0), (double) (y + 0), 0.0D) - .color(red, green, blue, alpha) - .endVertex(); - renderer.vertex((double) (x + 0), (double) (y + height), 0.0D) - .color(red, green, blue, alpha) - .endVertex(); - renderer.vertex((double) (x + width), (double) (y + height), 0.0D) - .color(red, green, blue, alpha) - .endVertex(); - renderer.vertex((double) (x + width), (double) (y + 0), 0.0D) - .color(red, green, blue, alpha) - .endVertex(); - Tessellator.getInstance() - .draw(); - } - - /** - * Used for moving JEI out of the way of extra things like Flexcrate renders - * - * @return the space that the gui takes up besides the normal rectangle defined by {@link ContainerScreen}. - */ - public List getExtraAreas() { - return Collections.emptyList(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java b/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java deleted file mode 100644 index 4a78dc36e..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/AbstractSimiScreen.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.util.ArrayList; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.Widget; -import net.minecraft.client.util.InputMappings; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -public abstract class AbstractSimiScreen extends Screen { - - protected int sWidth, sHeight; - protected int guiLeft, guiTop; - protected List widgets; - - protected AbstractSimiScreen() { - super(new StringTextComponent("")); - widgets = new ArrayList<>(); - } - - protected void setWindowSize(int width, int height) { - sWidth = width; - sHeight = height; - guiLeft = (this.width - sWidth) / 2; - guiTop = (this.height - sHeight) / 2; - } - - @Override - public void tick() { - super.tick(); - - widgets.stream().filter(w -> w instanceof AbstractSimiWidget).forEach(w -> ((AbstractSimiWidget) w).tick()); - } - - @Override - public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - partialTicks = partialTicks == 10 ? 0 - : Minecraft.getInstance() - .getRenderPartialTicks(); - - ms.push(); - - prepareFrame(); - - renderWindowBackground(ms, mouseX, mouseY, partialTicks); - renderWindow(ms, mouseX, mouseY, partialTicks); - for (Widget widget : widgets) - widget.render(ms, mouseX, mouseY, partialTicks); - renderWindowForeground(ms, mouseX, mouseY, partialTicks); - - endFrame(); - - ms.pop(); - } - - protected void prepareFrame() { - } - - protected void endFrame() { - } - - protected void renderWindowBackground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - renderBackground(ms); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - boolean result = false; - for (Widget widget : widgets) - if (widget.mouseClicked(x, y, button)) - result = true; - - if (!result) { - result = super.mouseClicked(x, y, button); - } - return result; - } - - @Override - public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { - for (Widget widget : widgets) - if (widget.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_)) - return true; - - if (super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_)) - return true; - - InputMappings.Input mouseKey = InputMappings.getInputByCode(code, p_keyPressed_2_); - if (this.client.gameSettings.keyBindInventory.isActiveAndMatches(mouseKey)) { - this.onClose(); - return true; - } - return false; - } - - @Override - public boolean charTyped(char character, int code) { - for (Widget widget : widgets) { - if (widget.charTyped(character, code)) - return true; - } - return super.charTyped(character, code); - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double delta) { - for (Widget widget : widgets) { - if (widget.mouseScrolled(mouseX, mouseY, delta)) - return true; - } - return super.mouseScrolled(mouseX, mouseY, delta); - } - - @Override - public boolean mouseReleased(double x, double y, int button) { - boolean result = false; - for (Widget widget : widgets) { - if (widget.mouseReleased(x, y, button)) - result = true; - } - return result | super.mouseReleased(x, y, button); - } - - @Override - public boolean shouldCloseOnEsc() { - return true; - } - - @Override - public boolean isPauseScreen() { - return false; - } - - protected abstract void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks); - - protected void renderWindowForeground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - for (Widget widget : widgets) { - if (!widget.isHovered()) - continue; - - if (widget instanceof AbstractSimiWidget) { - if (!((AbstractSimiWidget) widget).getToolTip().isEmpty()) - renderTooltip(ms, ((AbstractSimiWidget) widget).getToolTip(), mouseX, mouseY); - - } else { - widget.renderToolTip(ms, mouseX, mouseY); - } - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java b/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java deleted file mode 100644 index 6fc08ceae..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.awt.*; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.Create; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.AbstractGui; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public enum AllGuiTextures implements IScreenRenderable { - - // Inventories - PLAYER_INVENTORY("player_inventory.png", 176, 108), - WAND_OF_SYMMETRY("curiosities.png", 0, 131, 188, 101), - BLOCKZAPPER("curiosities.png", 0, 99, 214, 97), - TERRAINZAPPER("curiosities.png", 234, 103), - TERRAINZAPPER_INACTIVE_PARAM("curiosities.png", 238, 0, 18, 18), - - LOGO("logo.png", 256, 256), - - SCHEMATIC("schematics.png", 192, 121), - SCHEMATIC_SLOT("widgets.png", 54, 0, 16, 16), - SCHEMATIC_PROMPT("schematics_2.png", 213, 77), - HUD_BACKGROUND("overlay.png", 0, 0, 16, 16), - - SCHEMATIC_TABLE("schematics.png", 0, 121, 214, 83), - SCHEMATIC_TABLE_PROGRESS("schematics.png", 0, 204, 84, 16), - - SCHEMATICANNON_TOP("schematics_2.png", 0, 77, 213, 42), - SCHEMATICANNON_BOTTOM("schematics_2.png", 0, 119, 213, 99), - SCHEMATICANNON_PROGRESS("schematics_2.png", 76, 239, 114, 16), - SCHEMATICANNON_CHECKLIST_PROGRESS("schematics_2.png", 191, 240, 16, 14), - SCHEMATICANNON_HIGHLIGHT("schematics_2.png", 1, 229, 26, 26), - SCHEMATICANNON_FUEL("schematics_2.png", 28, 222, 47, 16), - SCHEMATICANNON_FUEL_CREATIVE("schematics_2.png", 28, 239, 47, 16), - - STOCKSWITCH("logistics.png", 182, 93), - STOCKSWITCH_ARROW_UP("logistics.png", 191, 0, 7, 24), - STOCKSWITCH_ARROW_DOWN("logistics.png", 198, 0, 7, 24), - STOCKSWITCH_CURSOR("logistics.png", 206, 0, 7, 16), - STOCKSWITCH_INTERVAL("logistics.png", 0, 93, 100, 18), - STOCKSWITCH_UNPOWERED_LANE("logistics.png", 36, 18, 102, 18), - STOCKSWITCH_POWERED_LANE("logistics.png", 36, 40, 102, 18), - - ADJUSTABLE_CRATE("logistics_2.png", 124, 127), - ADJUSTABLE_DOUBLE_CRATE("logistics_2.png", 0, 127, 196, 127), - ADJUSTABLE_CRATE_LOCKED_SLOT("logistics_2.png", 125, 109, 18, 18), - - FILTER("filters.png", 214, 97), - ATTRIBUTE_FILTER("filters.png", 0, 97, 241, 83), - - SEQUENCER("sequencer.png", 173, 159), - SEQUENCER_INSTRUCTION("sequencer.png", 0, 14, 162, 22), - SEQUENCER_DELAY("sequencer.png", 0, 58, 162, 22), - SEQUENCER_END("sequencer.png", 0, 80, 162, 22), - SEQUENCER_EMPTY("sequencer.png", 0, 102, 162, 22), - SEQUENCER_AWAIT("sequencer.png", 0, 160, 162, 22), - - LINKED_CONTROLLER("curiosities2.png", 180, 109), - BLUEPRINT("curiosities2.png", 0, 109, 179, 109), - - PROJECTOR("projector.png", 235, 185), - PROJECTOR_FILTER_STRENGTH("projector.png", 0, 14, 162, 22), - PROJECTOR_FILTER("projector.png", 0, 36, 162, 22), - PROJECTOR_END("projector.png", 0, 58, 162, 22), - PROJECTOR_EMPTY("projector.png", 0, 80, 162, 22), - - // JEI - JEI_SLOT("jei/widgets.png", 18, 18), - JEI_CHANCE_SLOT("jei/widgets.png", 20, 156, 18, 18), - JEI_CATALYST_SLOT("jei/widgets.png", 0, 156, 18, 18), - JEI_ARROW("jei/widgets.png", 19, 10, 42, 10), - JEI_LONG_ARROW("jei/widgets.png", 19, 0, 71, 10), - JEI_DOWN_ARROW("jei/widgets.png", 0, 21, 18, 14), - JEI_LIGHT("jei/widgets.png", 0, 42, 52, 11), - JEI_QUESTION_MARK("jei/widgets.png", 0, 178, 12, 16), - JEI_SHADOW("jei/widgets.png", 0, 56, 52, 11), - BLOCKZAPPER_UPGRADE_RECIPE("jei/widgets.png", 0, 75, 144, 66), - JEI_HEAT_BAR("jei/widgets.png", 0, 201, 169, 19), - JEI_NO_HEAT_BAR("jei/widgets.png", 0, 221, 169, 19), - - // Widgets - BUTTON("widgets.png", 18, 18), - BUTTON_HOVER("widgets.png", 18, 0, 18, 18), - BUTTON_DOWN("widgets.png", 36, 0, 18, 18), - INDICATOR("widgets.png", 0, 18, 18, 6), - INDICATOR_WHITE("widgets.png", 18, 18, 18, 6), - INDICATOR_GREEN("widgets.png", 36, 18, 18, 6), - INDICATOR_YELLOW("widgets.png", 54, 18, 18, 6), - INDICATOR_RED("widgets.png", 72, 18, 18, 6), - - HOTSLOT_ARROW("widgets.png", 24, 51, 20, 12), - HOTSLOT("widgets.png", 0, 68, 22, 22), - HOTSLOT_ACTIVE("widgets.png", 0, 46, 22, 22), - HOTSLOT_SUPER_ACTIVE("widgets.png", 27, 67, 24, 24), - - SPEECH_TOOLTIP_BACKGROUND("widgets.png", 0, 24, 8, 8), - SPEECH_TOOLTIP_COLOR("widgets.png", 8, 24, 8, 8), - - // PlacementIndicator - PLACEMENT_INDICATOR_SHEET("placement_indicator.png", 0, 0, 16, 256);; - - public static final int FONT_COLOR = 0x575F7A; - - public final ResourceLocation location; - public int width, height; - public int startX, startY; - - private AllGuiTextures(String location, int width, int height) { - this(location, 0, 0, width, height); - } - - private AllGuiTextures(int startX, int startY) { - this("icons.png", startX * 16, startY * 16, 16, 16); - } - - private AllGuiTextures(String location, int startX, int startY, int width, int height) { - this.location = new ResourceLocation(Create.ID, "textures/gui/" + location); - this.width = width; - this.height = height; - this.startX = startX; - this.startY = startY; - } - - @OnlyIn(Dist.CLIENT) - public void bind() { - Minecraft.getInstance() - .getTextureManager() - .bindTexture(location); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void draw(MatrixStack ms, AbstractGui screen, int x, int y) { - bind(); - screen.drawTexture(ms, x, y, startX, startY, width, height); - } - - public void draw(MatrixStack ms, int x, int y, Color c) { - bind(); - UIRenderHelper.drawColoredTexture(ms, c, x, y, startX, startY, width, height); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java b/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java deleted file mode 100644 index 3351867e7..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/AllIcons.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.matrix.MatrixStack.Entry; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.utility.ColorHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.AbstractGui; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class AllIcons implements IScreenRenderable { - - public static final ResourceLocation ICON_ATLAS = Create.asResource("textures/gui/icons.png"); - private static int x = 0, y = -1; - private int iconX; - private int iconY; - - public static final AllIcons - I_ADD = newRow(), - I_TRASH = next(), - I_3x3 = next(), - I_TARGET = next(), - I_PRIORITY_VERY_LOW = next(), - I_PRIORITY_LOW = next(), - I_PRIORITY_HIGH = next(), - I_PRIORITY_VERY_HIGH = next(), - I_BLACKLIST = next(), - I_WHITELIST = next(), - I_WHITELIST_OR = next(), - I_WHITELIST_AND = next(), - I_WHITELIST_NOT = next(), - I_RESPECT_NBT = next(), - I_IGNORE_NBT = next(); - - public static final AllIcons - I_CONFIRM = newRow(), - I_NONE = next(), - I_OPEN_FOLDER = next(), - I_REFRESH = next(), - I_ACTIVE = next(), - I_PASSIVE = next(), - I_ROTATE_PLACE = next(), - I_ROTATE_PLACE_RETURNED = next(), - I_ROTATE_NEVER_PLACE = next(), - I_MOVE_PLACE = next(), - I_MOVE_PLACE_RETURNED = next(), - I_MOVE_NEVER_PLACE = next(), - I_CART_ROTATE = next(), - I_CART_ROTATE_PAUSED = next(), - I_CART_ROTATE_LOCKED = next(); - - public static final AllIcons - I_DONT_REPLACE = newRow(), - I_REPLACE_SOLID = next(), - I_REPLACE_ANY = next(), - I_REPLACE_EMPTY = next(), - I_CENTERED = next(), - I_ATTACHED = next(), - I_INSERTED = next(), - I_FILL = next(), - I_PLACE = next(), - I_REPLACE = next(), - I_CLEAR = next(), - I_OVERLAY = next(), - I_FLATTEN = next(), - I_LMB = next(), - I_SCROLL = next(), - I_RMB = next(); - - public static final AllIcons - I_TOOL_DEPLOY = newRow(), - I_SKIP_MISSING = next(), - I_SKIP_TILES = next(), - I_DICE = next(), - I_TUNNEL_SPLIT = next(), - I_TUNNEL_FORCED_SPLIT = next(), - I_TUNNEL_ROUND_ROBIN = next(), - I_TUNNEL_FORCED_ROUND_ROBIN = next(), - I_TUNNEL_PREFER_NEAREST = next(), - I_TUNNEL_RANDOMIZE = next(), - I_TUNNEL_SYNCHRONIZE = next(), - - I_TOOL_MOVE_XZ = newRow(), - I_TOOL_MOVE_Y = next(), - I_TOOL_ROTATE = next(), - I_TOOL_MIRROR = next(), - I_ARM_ROUND_ROBIN = next(), - I_ARM_FORCED_ROUND_ROBIN = next(), - I_ARM_PREFER_FIRST = next(), - - I_ADD_INVERTED_ATTRIBUTE = next(), - I_FLIP = next(), - - I_PLAY = newRow(), - I_PAUSE = next(), - I_STOP = next(), - I_PLACEMENT_SETTINGS = next(), - I_ROTATE_CCW = next(), - I_HOUR_HAND_FIRST = next(), - I_MINUTE_HAND_FIRST = next(), - I_HOUR_HAND_FIRST_24 = next(), - - I_PATTERN_SOLID = newRow(), - I_PATTERN_CHECKERED = next(), - I_PATTERN_CHECKERED_INVERSED = next(), - I_PATTERN_CHANCE_25 = next(), - - I_PATTERN_CHANCE_50 = newRow(), - I_PATTERN_CHANCE_75 = next(), - I_FOLLOW_DIAGONAL = next(), - I_FOLLOW_MATERIAL = next(), - - I_SCHEMATIC = newRow(), - - I_MTD_LEFT = newRow(), - I_MTD_CLOSE = next(), - I_MTD_RIGHT = next(), - I_MTD_SCAN = next(), - I_MTD_REPLAY = next(), - I_MTD_USER_MODE = next(), - I_MTD_SLOW_MODE = next(), - - I_CONFIG_UNLOCKED = newRow(), - I_CONFIG_LOCKED = next(), - I_CONFIG_DISCARD = next(), - I_CONFIG_SAVE = next(), - I_CONFIG_RESET = next(), - I_CONFIG_BACK = next(), - I_CONFIG_PREV = next(), - I_CONFIG_NEXT = next(), - I_DISABLE = next(), - I_CONFIG_OPEN = next(), - - I_FX_SURFACE_OFF = newRow(), - I_FX_SURFACE_ON = next(), - I_FX_FIELD_OFF = next(), - I_FX_FIELD_ON = next(), - I_FX_BLEND = next(), - I_FX_BLEND_OFF = next(); - ; - - public AllIcons(int x, int y) { - iconX = x * 16; - iconY = y * 16; - } - - private static AllIcons next() { - return new AllIcons(++x, y); - } - - private static AllIcons newRow() { - return new AllIcons(x = 0, ++y); - } - - @OnlyIn(Dist.CLIENT) - public void bind() { - Minecraft.getInstance() - .getTextureManager() - .bindTexture(ICON_ATLAS); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void draw(MatrixStack matrixStack, AbstractGui screen, int x, int y) { - bind(); - screen.drawTexture(matrixStack, x, y, iconX, iconY, 16, 16); - } - - @OnlyIn(Dist.CLIENT) - public void draw(MatrixStack ms, IRenderTypeBuffer buffer, int color) { - IVertexBuilder builder = buffer.getBuffer(RenderType.getTextSeeThrough(ICON_ATLAS)); - float sheetSize = 256; - int i = 15 << 20 | 15 << 4; - int j = i >> 16 & '\uffff'; - int k = i & '\uffff'; - Entry peek = ms.peek(); - Vector3d rgb = ColorHelper.getRGB(color); - - Vector3d vec4 = new Vector3d(1, 1, 0); - Vector3d vec3 = new Vector3d(0, 1, 0); - Vector3d vec2 = new Vector3d(0, 0, 0); - Vector3d vec1 = new Vector3d(1, 0, 0); - - float u1 = (iconX + 16) / sheetSize; - float u2 = iconX / sheetSize; - float v1 = iconY / sheetSize; - float v2 = (iconY + 16) / sheetSize; - - vertex(peek, builder, j, k, rgb, vec1, u1, v1); - vertex(peek, builder, j, k, rgb, vec2, u2, v1); - vertex(peek, builder, j, k, rgb, vec3, u2, v2); - vertex(peek, builder, j, k, rgb, vec4, u1, v2); - } - - @OnlyIn(Dist.CLIENT) - public DelegatedStencilElement asStencil() { - return new DelegatedStencilElement().withStencilRenderer((ms, w, h, alpha) -> this.draw(ms, 0, 0)).withBounds(16, 16); - } - - @OnlyIn(Dist.CLIENT) - private void vertex(Entry peek, IVertexBuilder builder, int j, int k, Vector3d rgb, Vector3d vec, float u, float v) { - builder.vertex(peek.getModel(), (float) vec.x, (float) vec.y, (float) vec.z) - .color((float) rgb.x, (float) rgb.y, (float) rgb.z, 1) - .texture(u, v) - .light(j, k) - .endVertex(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/BoxElement.java b/src/main/java/com/simibubi/create/foundation/gui/BoxElement.java deleted file mode 100644 index 673b057b6..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/BoxElement.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.awt.Color; - -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Couple; - -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.util.math.vector.Matrix4f; - -public class BoxElement extends RenderElement { - - protected Color background = new Color(0xff000000, true); - protected Color borderTop = new Color(0x40ffeedd, true); - protected Color borderBot = new Color(0x20ffeedd, true); - protected int borderOffset = 2; - - public T withBackground(Color color) { - this.background = color; - //noinspection unchecked - return (T) this; - } - - public T withBackground(int color) { - return withBackground(new Color(color, true)); - } - - public T flatBorder(Color color) { - this.borderTop = color; - this.borderBot = color; - //noinspection unchecked - return (T) this; - } - - public T flatBorder(int color) { - return flatBorder(new Color(color, true)); - } - - public T gradientBorder(Couple colors) { - this.borderTop = colors.getFirst(); - this.borderBot = colors.getSecond(); - //noinspection unchecked - return (T) this; - } - - public T gradientBorder(Color top, Color bot) { - this.borderTop = top; - this.borderBot = bot; - //noinspection unchecked - return (T) this; - } - - public T gradientBorder(int top, int bot) { - return gradientBorder(new Color(top, true), new Color(bot, true)); - } - - public T withBorderOffset(int offset) { - this.borderOffset = offset; - //noinspection unchecked - return (T) this; - } - - @Override - public void render(MatrixStack ms) { - renderBox(ms); - } - - //total box width = 1 * 2 (outer border) + 1 * 2 (inner color border) + 2 * borderOffset + width - //defaults to 2 + 2 + 4 + 16 = 24px - //batch everything together to save a bunch of gl calls over GuiUtils - protected void renderBox(MatrixStack ms) { - /* - * _____________ - * _|_____________|_ - * | | ___________ | | - * | | | | | | | - * | | | | | | | - * | | |--* | | | | - * | | | h | | | - * | | | --w-+ | | | - * | | | | | | - * | | |_________| | | - * |_|_____________|_| - * |_____________| - * - * */ - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.shadeModel(GL11.GL_SMOOTH); - - int f = borderOffset; - Color c1 = ColorHelper.applyAlpha(background, alpha); - Color c2 = ColorHelper.applyAlpha(borderTop, alpha); - Color c3 = ColorHelper.applyAlpha(borderBot, alpha); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder b = tessellator.getBuffer(); - Matrix4f model = ms.peek().getModel(); - b.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); - //outer top - b.vertex(model, x - f - 1 , y - f - 2 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x - f - 1 , y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y - f - 2 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - //outer left - b.vertex(model, x - f - 2 , y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x - f - 2 , y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x - f - 1 , y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x - f - 1 , y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - //outer bottom - b.vertex(model, x - f - 1 , y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x - f - 1 , y + f + 2 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y + f + 2 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - //outer right - b.vertex(model, x + f + 1 + width, y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 2 + width, y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 2 + width, y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - //inner background - also render behind the inner edges - b.vertex(model, x - f - 1 , y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x - f - 1 , y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y + f + 1 + height, z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y - f - 1 , z).color(c1.getRed(), c1.getGreen(), c1.getBlue(), c1.getAlpha()).endVertex(); - tessellator.draw(); - b.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); - //inner top - includes corners - b.vertex(model, x - f - 1 , y - f - 1 , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); - b.vertex(model, x - f - 1 , y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y - f - 1 , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); - //inner left - excludes corners - b.vertex(model, x - f - 1 , y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); - b.vertex(model, x - f - 1 , y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); - b.vertex(model, x - f , y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); - b.vertex(model, x - f , y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); - //inner bottom - includes corners - b.vertex(model, x - f - 1 , y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); - b.vertex(model, x - f - 1 , y + f + 1 + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y + f + 1 + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); - //inner right - excludes corners - b.vertex(model, x + f + width, y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); - b.vertex(model, x + f + width, y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y + f + height, z).color(c3.getRed(), c3.getGreen(), c3.getBlue(), c3.getAlpha()).endVertex(); - b.vertex(model, x + f + 1 + width, y - f , z).color(c2.getRed(), c2.getGreen(), c2.getBlue(), c2.getAlpha()).endVertex(); - - tessellator.draw(); - - RenderSystem.shadeModel(GL11.GL_FLAT); - RenderSystem.disableBlend(); - RenderSystem.enableTexture(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/ClearContainerPacket.java b/src/main/java/com/simibubi/create/foundation/gui/ClearContainerPacket.java deleted file mode 100644 index 4714c273c..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/ClearContainerPacket.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class ClearContainerPacket extends SimplePacketBase { - - public ClearContainerPacket() {} - - public ClearContainerPacket(PacketBuffer buffer) {} - - @Override - public void write(PacketBuffer buffer) {} - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - ServerPlayerEntity player = context.get() - .getSender(); - if (player == null) - return; - if (!(player.openContainer instanceof IClearableContainer)) - return; - ((IClearableContainer) player.openContainer).clearContents(); - }); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/CombinedStencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/CombinedStencilElement.java deleted file mode 100644 index 374479c69..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/CombinedStencilElement.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; - -public class CombinedStencilElement extends StencilElement { - - private StencilElement element1; - private StencilElement element2; - private ElementMode mode; - - private CombinedStencilElement() {} - - public static CombinedStencilElement of(@Nonnull StencilElement element1, @Nonnull StencilElement element2) { - return of(element1, element2, ElementMode.FIRST); - } - - public static CombinedStencilElement of(@Nonnull StencilElement element1, @Nonnull StencilElement element2, ElementMode mode) { - CombinedStencilElement e = new CombinedStencilElement(); - e.element1 = element1; - e.element2 = element2; - e.mode = mode; - return e; - } - - public T withFirst(StencilElement element) { - this.element1 = element; - //noinspection unchecked - return (T) this; - } - - public T withSecond(StencilElement element) { - this.element2 = element; - //noinspection unchecked - return (T) this; - } - - public T withMode(ElementMode mode) { - this.mode = mode; - //noinspection unchecked - return (T) this; - } - - @Override - protected void renderStencil(MatrixStack ms) { - ms.push(); - element1.transform(ms); - element1.withBounds(width, height); - element1.renderStencil(ms); - ms.pop(); - ms.push(); - element2.transform(ms); - element2.withBounds(width, height); - element2.renderStencil(ms); - ms.pop(); - } - - @Override - protected void renderElement(MatrixStack ms) { - if (mode.rendersFirst()) - element1.withBounds(width, height).renderElement(ms); - - if (mode.rendersSecond()) - element2.withBounds(width, height).renderElement(ms); - } - - public enum ElementMode { - FIRST, SECOND, BOTH; - - boolean rendersFirst() { - return this == FIRST || this == BOTH; - } - - boolean rendersSecond() { - return this == SECOND || this == BOTH; - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/ConfirmationScreen.java b/src/main/java/com/simibubi/create/foundation/gui/ConfirmationScreen.java deleted file mode 100644 index f0de70016..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/ConfirmationScreen.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -import javax.annotation.Nonnull; - -import org.lwjgl.opengl.GL30; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.widgets.BoxWidget; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.shader.Framebuffer; -import net.minecraft.util.text.ITextProperties; -import net.minecraft.util.text.Style; - -public class ConfirmationScreen extends AbstractSimiScreen { - - private Screen source; - private Consumer action = _success -> { - }; - private List text = new ArrayList<>(); - private boolean centered = false; - private int x; - private int y; - private int textWidth; - private int textHeight; - private boolean tristate; - - private BoxWidget confirm; - private BoxWidget confirmDontSave; - private BoxWidget cancel; - private BoxElement textBackground; - - public enum Response { - Confirm, ConfirmDontSave, Cancel - } - - /* - * Removes text lines from the back of the list - * */ - public ConfirmationScreen removeTextLines(int amount) { - if (amount > text.size()) - return clearText(); - - text.subList(text.size() - amount, text.size()).clear(); - return this; - } - - public ConfirmationScreen clearText() { - this.text.clear(); - return this; - } - - public ConfirmationScreen addText(ITextProperties text) { - this.text.add(text); - return this; - } - - public ConfirmationScreen withText(ITextProperties text) { - return clearText().addText(text); - } - - public ConfirmationScreen at(int x, int y) { - this.x = Math.max(x, 0); - this.y = Math.max(y, 0); - this.centered = false; - return this; - } - - public ConfirmationScreen centered() { - this.centered = true; - return this; - } - - public ConfirmationScreen withAction(Consumer action) { - this.action = r -> action.accept(r == Response.Confirm); - return this; - } - - public ConfirmationScreen withThreeActions(Consumer action) { - this.action = action; - this.tristate = true; - return this; - } - - public void open(@Nonnull Screen source) { - this.source = source; - Minecraft client = source.getMinecraft(); - this.init(client, client.getWindow().getScaledWidth(), client.getWindow().getScaledHeight()); - this.client.currentScreen = this; - } - - @Override - public void tick() { - super.tick(); - confirm.tick(); - cancel.tick(); - } - - @Override - protected void init() { - widgets.clear(); - - ArrayList copy = new ArrayList<>(text); - text.clear(); - copy.forEach(t -> text.addAll(client.fontRenderer.getTextHandler().wrapLines(t, 300, Style.EMPTY))); - - textHeight = text.size() * (client.fontRenderer.FONT_HEIGHT + 1) + 4; - textWidth = 300; - - if (centered) { - x = width/2 - textWidth/2 - 2; - y = height/2 - textHeight/2 - 16; - } else { - x = Math.max(0, x - textWidth / 2); - y = Math.max(0, y -= textHeight); - } - - if (x + textWidth > width) { - x = width - textWidth; - } - - if (y + textHeight + 30 > height) { - y = height - textHeight - 30; - } - - int buttonX = x + textWidth / 2 - 6 - (int) (70 * (tristate ? 1.5f : 1)); - - TextStencilElement confirmText = - new TextStencilElement(client.fontRenderer, tristate ? "Save" : "Confirm").centered(true, true); - confirm = new BoxWidget(buttonX, y + textHeight + 6, 70, 16).withCallback(() -> accept(Response.Confirm)); - confirm.showingElement(confirmText.withElementRenderer(BoxWidget.gradientFactory.apply(confirm))); - widgets.add(confirm); - - buttonX += 12 + 70; - - if (tristate) { - TextStencilElement confirmDontSaveText = - new TextStencilElement(client.fontRenderer, "Don't Save").centered(true, true); - confirmDontSave = - new BoxWidget(buttonX, y + textHeight + 6, 70, 16).withCallback(() -> accept(Response.ConfirmDontSave)); - confirmDontSave.showingElement( - confirmDontSaveText.withElementRenderer(BoxWidget.gradientFactory.apply(confirmDontSave))); - widgets.add(confirmDontSave); - buttonX += 12 + 70; - } - - TextStencilElement cancelText = new TextStencilElement(client.fontRenderer, "Cancel").centered(true, true); - cancel = new BoxWidget(buttonX, y + textHeight + 6, 70, 16) - .withCallback(() -> accept(Response.Cancel)); - cancel.showingElement(cancelText.withElementRenderer(BoxWidget.gradientFactory.apply(cancel))); - widgets.add(cancel); - - textBackground = new BoxElement() - .gradientBorder(Theme.p(Theme.Key.BUTTON_DISABLE)) - .withBounds(width + 10, textHeight + 35) - .at(-5, y - 5); - - } - - @Override - public void onClose() { - accept(Response.Cancel); - } - - private void accept(Response success) { - client.currentScreen = source; - action.accept(success); - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - - textBackground.render(ms); - int offset = client.fontRenderer.FONT_HEIGHT + 1; - int lineY = y - offset; - - ms.push(); - ms.translate(0, 0, 200); - - for (ITextProperties line : text) { - lineY = lineY + offset; - if (line == null) - continue; - int textX = x; - if (text.size() == 1) - x = (width - client.fontRenderer.getWidth(line)) / 2; - client.fontRenderer.draw(ms, line.getString(), textX, lineY, 0xeaeaea); - } - - ms.pop(); - - } - - @Override - protected void renderWindowBackground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - - UIRenderHelper.framebuffer.framebufferClear(Minecraft.IS_RUNNING_ON_MAC); - - ms.push(); - UIRenderHelper.framebuffer.bindFramebuffer(true); - source.render(ms, 0, 0, 10); // zero mouse coords to prevent further tooltips - UIRenderHelper.framebuffer.unbindFramebuffer(); - Framebuffer mainBuffer = Minecraft.getInstance().getFramebuffer(); - ms.pop(); - - //fixme replace with glVersioned-backend calls once they are merged from jozu's branch - GL30.glBindFramebuffer(GL30.GL_READ_FRAMEBUFFER, UIRenderHelper.framebuffer.framebufferObject); - GL30.glBindFramebuffer(GL30.GL_DRAW_FRAMEBUFFER, mainBuffer.framebufferObject); - GL30.glBlitFramebuffer(0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, 0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, GL30.GL_COLOR_BUFFER_BIT, GL30.GL_LINEAR); - mainBuffer.bindFramebuffer(true); - - this.fillGradient(ms, 0, 0, this.width, this.height, 0x70101010, 0x80101010); - } - - @Override - public void resize(@Nonnull Minecraft client, int width, int height) { - super.resize(client, width, height); - source.resize(client, width, height); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/DelegatedStencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/DelegatedStencilElement.java deleted file mode 100644 index 4b45ace4f..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/DelegatedStencilElement.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.utility.ColorHelper; - -public class DelegatedStencilElement extends StencilElement { - - protected static final ElementRenderer EMPTY_RENDERER = (ms, width, height, alpha) -> {}; - protected static final ElementRenderer DEFAULT_ELEMENT = (ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, -3, 5, height+4, width+6, ColorHelper.applyAlpha(0xff_10dd10, alpha), ColorHelper.applyAlpha(0xff_1010dd, alpha)); - - protected ElementRenderer stencil; - protected ElementRenderer element; - - public DelegatedStencilElement() { - stencil = EMPTY_RENDERER; - element = DEFAULT_ELEMENT; - } - - public DelegatedStencilElement(ElementRenderer stencil, ElementRenderer element) { - this.stencil = stencil; - this.element = element; - } - - public T withStencilRenderer(ElementRenderer renderer) { - stencil = renderer; - //noinspection unchecked - return (T) this; - } - - public T withElementRenderer(ElementRenderer renderer) { - element = renderer; - //noinspection unchecked - return (T) this; - } - - @Override - protected void renderStencil(MatrixStack ms) { - stencil.render(ms, width, height, 1); - } - - @Override - protected void renderElement(MatrixStack ms) { - element.render(ms, width, height, alpha); - } - - @FunctionalInterface - public interface ElementRenderer { - void render(MatrixStack ms, int width, int height, float alpha); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/GhostItemContainer.java b/src/main/java/com/simibubi/create/foundation/gui/GhostItemContainer.java deleted file mode 100644 index 34b710559..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/GhostItemContainer.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.container.ClickType; -import net.minecraft.inventory.container.Container; -import net.minecraft.inventory.container.ContainerType; -import net.minecraft.inventory.container.Slot; -import net.minecraft.item.ItemStack; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.ItemHandlerHelper; -import net.minecraftforge.items.ItemStackHandler; - -public abstract class GhostItemContainer extends Container implements IClearableContainer { - - public PlayerEntity player; - public PlayerInventory playerInventory; - public ItemStackHandler ghostInventory; - public T contentHolder; - - protected GhostItemContainer(ContainerType type, int id, PlayerInventory inv, PacketBuffer extraData) { - super(type, id); - init(inv, createOnClient(extraData)); - } - - protected GhostItemContainer(ContainerType type, int id, PlayerInventory inv, T contentHolder) { - super(type, id); - init(inv, contentHolder); - } - - @OnlyIn(Dist.CLIENT) - protected abstract T createOnClient(PacketBuffer extraData); - - protected abstract void addSlots(); - - protected abstract ItemStackHandler createGhostInventory(); - - protected abstract void readData(T contentHolder); - - protected abstract void saveData(T contentHolder); - - protected abstract boolean allowRepeats(); - - protected void init(PlayerInventory inv, T contentHolder) { - player = inv.player; - playerInventory = inv; - this.contentHolder = contentHolder; - ghostInventory = createGhostInventory(); - readData(contentHolder); - addSlots(); - detectAndSendChanges(); - } - - @Override - public void clearContents() { - for (int i = 0; i < ghostInventory.getSlots(); i++) - ghostInventory.setStackInSlot(i, ItemStack.EMPTY); - } - - protected void addPlayerSlots(int x, int y) { - for (int hotbarSlot = 0; hotbarSlot < 9; ++hotbarSlot) - this.addSlot(new Slot(playerInventory, hotbarSlot, x + hotbarSlot * 18, y + 58)); - for (int row = 0; row < 3; ++row) - for (int col = 0; col < 9; ++col) - this.addSlot(new Slot(playerInventory, col + row * 9 + 9, x + col * 18, y + row * 18)); - } - - @Override - public boolean canMergeSlot(ItemStack stack, Slot slotIn) { - return slotIn.inventory == playerInventory; - } - - @Override - public boolean canDragIntoSlot(Slot slotIn) { - if (allowRepeats()) - return true; - return slotIn.inventory == playerInventory; - } - - @Override - public boolean canInteractWith(PlayerEntity playerIn) { - return true; - } - - @Override - public ItemStack slotClick(int slotId, int dragType, ClickType clickTypeIn, PlayerEntity player) { - ItemStack held = playerInventory.getItemStack(); - if (slotId < 36) - return super.slotClick(slotId, dragType, clickTypeIn, player); - if (clickTypeIn == ClickType.THROW) - return ItemStack.EMPTY; - - int slot = slotId - 36; - if (clickTypeIn == ClickType.CLONE) { - if (player.isCreative() && held.isEmpty()) { - ItemStack stackInSlot = ghostInventory.getStackInSlot(slot) - .copy(); - stackInSlot.setCount(stackInSlot.getMaxStackSize()); - playerInventory.setItemStack(stackInSlot); - return ItemStack.EMPTY; - } - return ItemStack.EMPTY; - } - - if (held.isEmpty()) { - ghostInventory.setStackInSlot(slot, ItemStack.EMPTY); - getSlot(slotId).onSlotChanged(); - return ItemStack.EMPTY; - } - - ItemStack insert = held.copy(); - insert.setCount(1); - ghostInventory.setStackInSlot(slot, insert); - getSlot(slotId).onSlotChanged(); - return held; - } - - @Override - public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) { - if (index < 36) { - ItemStack stackToInsert = playerInventory.getStackInSlot(index); - for (int i = 0; i < ghostInventory.getSlots(); i++) { - ItemStack stack = ghostInventory.getStackInSlot(i); - if (!allowRepeats() && ItemHandlerHelper.canItemStacksStack(stack, stackToInsert)) - break; - if (stack.isEmpty()) { - ItemStack copy = stackToInsert.copy(); - copy.setCount(1); - ghostInventory.insertItem(i, copy, false); - getSlot(i + 36).onSlotChanged(); - break; - } - } - } else { - ghostInventory.extractItem(index - 36, 1, false); - getSlot(index).onSlotChanged(); - } - return ItemStack.EMPTY; - } - - @Override - public void onContainerClosed(PlayerEntity playerIn) { - super.onContainerClosed(playerIn); - saveData(contentHolder); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/GhostItemSubmitPacket.java b/src/main/java/com/simibubi/create/foundation/gui/GhostItemSubmitPacket.java deleted file mode 100644 index 54df945ac..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/GhostItemSubmitPacket.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class GhostItemSubmitPacket extends SimplePacketBase { - - private final ItemStack item; - private final int slot; - - public GhostItemSubmitPacket(ItemStack item, int slot) { - this.item = item; - this.slot = slot; - } - - public GhostItemSubmitPacket(PacketBuffer buffer) { - item = buffer.readItemStack(); - slot = buffer.readInt(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeItemStack(item); - buffer.writeInt(slot); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - ServerPlayerEntity player = context.get() - .getSender(); - if (player == null) - return; - - if (player.openContainer instanceof GhostItemContainer) { - GhostItemContainer c = (GhostItemContainer) player.openContainer; - c.ghostInventory.setStackInSlot(slot, item); - c.getSlot(36 + slot).onSlotChanged(); - } - - }); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/GuiGameElement.java b/src/main/java/com/simibubi/create/foundation/gui/GuiGameElement.java deleted file mode 100644 index 720b3e87c..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/GuiGameElement.java +++ /dev/null @@ -1,324 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import javax.annotation.Nullable; - -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.VirtualEmptyModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.platform.GlStateManager.DestFactor; -import com.mojang.blaze3d.platform.GlStateManager.SourceFactor; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.foundation.fluid.FluidRenderer; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.FireBlock; -import net.minecraft.block.FlowingFluidBlock; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.Atlases; -import net.minecraft.client.renderer.BlockRendererDispatcher; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.client.renderer.texture.AtlasTexture; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.fluid.Fluid; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector2f; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraftforge.fluids.FluidStack; - -public class GuiGameElement { - - public static Vector2f defaultBlockLighting = new Vector2f(30.0f, 7.5f); - - public static GuiRenderBuilder of(ItemStack stack) { - return new GuiItemRenderBuilder(stack); - } - - public static GuiRenderBuilder of(IItemProvider itemProvider) { - return new GuiItemRenderBuilder(itemProvider); - } - - public static GuiRenderBuilder of(BlockState state) { - return new GuiBlockStateRenderBuilder(state); - } - - public static GuiRenderBuilder of(PartialModel partial) { - return new GuiBlockPartialRenderBuilder(partial); - } - - public static GuiRenderBuilder of(Fluid fluid) { - return new GuiBlockStateRenderBuilder(fluid.getDefaultState() - .getBlockState() - .with(FlowingFluidBlock.LEVEL, 0)); - } - - public static abstract class GuiRenderBuilder extends RenderElement { - protected double xLocal, yLocal, zLocal; - protected double xRot, yRot, zRot; - protected double scale = 1; - protected int color = 0xFFFFFF; - protected Vector3d rotationOffset = Vector3d.ZERO; - protected boolean hasCustomLighting = false; - protected float lightingXRot, lightingYRot; - - public GuiRenderBuilder atLocal(double x, double y, double z) { - this.xLocal = x; - this.yLocal = y; - this.zLocal = z; - return this; - } - - public GuiRenderBuilder rotate(double xRot, double yRot, double zRot) { - this.xRot = xRot; - this.yRot = yRot; - this.zRot = zRot; - return this; - } - - public GuiRenderBuilder rotateBlock(double xRot, double yRot, double zRot) { - return this.rotate(xRot, yRot, zRot) - .withRotationOffset(VecHelper.getCenterOf(BlockPos.ZERO)); - } - - public GuiRenderBuilder scale(double scale) { - this.scale = scale; - return this; - } - - public GuiRenderBuilder color(int color) { - this.color = color; - return this; - } - - public GuiRenderBuilder withRotationOffset(Vector3d offset) { - this.rotationOffset = offset; - return this; - } - - public GuiRenderBuilder lighting(float xRot, float yRot) { - hasCustomLighting = true; - lightingXRot = xRot; - lightingYRot = yRot; - return this; - } - - public abstract void render(MatrixStack matrixStack); - - protected void prepareMatrix(MatrixStack matrixStack) { - matrixStack.push(); - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.alphaFunc(516, 0.1F); - RenderSystem.enableAlphaTest(); - RenderSystem.blendFunc(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.enableBlend(); - RenderSystem.enableDepthTest(); - RenderSystem.enableRescaleNormal(); - prepareLighting(matrixStack); - } - - protected void transformMatrix(MatrixStack matrixStack) { - matrixStack.translate(x, y, z); - matrixStack.scale((float) scale, (float) scale, (float) scale); - matrixStack.translate(xLocal, yLocal, zLocal); - matrixStack.scale(1, -1, 1); - matrixStack.translate(rotationOffset.x, rotationOffset.y, rotationOffset.z); - matrixStack.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion((float) zRot)); - matrixStack.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion((float) xRot)); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion((float) yRot)); - matrixStack.translate(-rotationOffset.x, -rotationOffset.y, -rotationOffset.z); - } - - protected void cleanUpMatrix(MatrixStack matrixStack) { - matrixStack.pop(); - RenderSystem.disableRescaleNormal(); - RenderSystem.disableAlphaTest(); - cleanUpLighting(matrixStack); - } - - protected void prepareLighting(MatrixStack matrixStack) { - RenderHelper.enableGuiDepthLighting(); - } - - protected void cleanUpLighting(MatrixStack matrixStack) { - } - } - - private static class GuiBlockModelRenderBuilder extends GuiRenderBuilder { - - protected IBakedModel blockmodel; - protected BlockState blockState; - - public GuiBlockModelRenderBuilder(IBakedModel blockmodel, @Nullable BlockState blockState) { - this.blockState = blockState == null ? Blocks.AIR.getDefaultState() : blockState; - this.blockmodel = blockmodel; - } - - @Override - public void render(MatrixStack matrixStack) { - prepareMatrix(matrixStack); - - Minecraft mc = Minecraft.getInstance(); - BlockRendererDispatcher blockRenderer = mc.getBlockRendererDispatcher(); - IRenderTypeBuffer.Impl buffer = mc.getBufferBuilders() - .getEntityVertexConsumers(); - RenderType renderType = blockState.getBlock() == Blocks.AIR ? Atlases.getEntityTranslucentCull() - : RenderTypeLookup.getEntityBlockLayer(blockState, true); - IVertexBuilder vb = buffer.getBuffer(renderType); - - transformMatrix(matrixStack); - - mc.getTextureManager() - .bindTexture(PlayerContainer.BLOCK_ATLAS_TEXTURE); - renderModel(blockRenderer, buffer, renderType, vb, matrixStack); - - cleanUpMatrix(matrixStack); - } - - protected void renderModel(BlockRendererDispatcher blockRenderer, IRenderTypeBuffer.Impl buffer, - RenderType renderType, IVertexBuilder vb, MatrixStack ms) { - int color = Minecraft.getInstance() - .getBlockColors() - .getColor(blockState, null, null, 0); - Vector3d rgb = ColorHelper.getRGB(color == -1 ? this.color : color); - blockRenderer.getBlockModelRenderer() - .renderModel(ms.peek(), vb, blockState, blockmodel, (float) rgb.x, (float) rgb.y, (float) rgb.z, - 0xF000F0, OverlayTexture.DEFAULT_UV, VirtualEmptyModelData.INSTANCE); - buffer.draw(); - } - - @Override - protected void prepareLighting(MatrixStack matrixStack) { - if (hasCustomLighting) { - UIRenderHelper.setupSimpleCustomLighting(lightingXRot, lightingYRot); - } else { - UIRenderHelper.setupSimpleCustomLighting(defaultBlockLighting.x, defaultBlockLighting.y); - } - } - - @Override - protected void cleanUpLighting(MatrixStack matrixStack) { - RenderHelper.enableGuiDepthLighting(); - } - } - - public static class GuiBlockStateRenderBuilder extends GuiBlockModelRenderBuilder { - - public GuiBlockStateRenderBuilder(BlockState blockstate) { - super(Minecraft.getInstance() - .getBlockRendererDispatcher() - .getModelForState(blockstate), blockstate); - } - - @Override - protected void renderModel(BlockRendererDispatcher blockRenderer, IRenderTypeBuffer.Impl buffer, - RenderType renderType, IVertexBuilder vb, MatrixStack ms) { - if (blockState.getBlock() instanceof FireBlock) { - RenderHelper.disableGuiDepthLighting(); - blockRenderer.renderBlock(blockState, ms, buffer, 0xF000F0, OverlayTexture.DEFAULT_UV, - VirtualEmptyModelData.INSTANCE); - buffer.draw(); - RenderHelper.enableGuiDepthLighting(); - return; - } - - super.renderModel(blockRenderer, buffer, renderType, vb, ms); - - if (blockState.getFluidState() - .isEmpty()) - return; - - ms.push(); - RenderHelper.disableStandardItemLighting(); - FluidRenderer.renderTiledFluidBB(new FluidStack(blockState.getFluidState() - .getFluid(), 1000), 0, 0, 0, 1.0001f, 1.0001f, 1.0001f, buffer, ms, 0xf000f0, true); - buffer.draw(RenderType.getTranslucent()); - RenderHelper.enable(); - ms.pop(); - } - } - - public static class GuiBlockPartialRenderBuilder extends GuiBlockModelRenderBuilder { - - public GuiBlockPartialRenderBuilder(PartialModel partial) { - super(partial.get(), null); - } - - } - - public static class GuiItemRenderBuilder extends GuiRenderBuilder { - - private final ItemStack stack; - - public GuiItemRenderBuilder(ItemStack stack) { - this.stack = stack; - } - - public GuiItemRenderBuilder(IItemProvider provider) { - this(new ItemStack(provider)); - } - - @Override - public void render(MatrixStack matrixStack) { - prepareMatrix(matrixStack); - transformMatrix(matrixStack); - renderItemIntoGUI(matrixStack, stack); - cleanUpMatrix(matrixStack); - } - - public static void renderItemIntoGUI(MatrixStack matrixStack, ItemStack stack) { - ItemRenderer renderer = Minecraft.getInstance() - .getItemRenderer(); - IBakedModel bakedModel = renderer.getItemModelWithOverrides(stack, null, null); - matrixStack.push(); - renderer.textureManager.bindTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE); - renderer.textureManager.getTexture(AtlasTexture.LOCATION_BLOCKS_TEXTURE) - .setBlurMipmapDirect(false, false); - RenderSystem.enableRescaleNormal(); - RenderSystem.enableAlphaTest(); - RenderSystem.defaultAlphaFunc(); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, - GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - matrixStack.translate((float) 0, (float) 0, 100.0F + renderer.zLevel); - matrixStack.translate(8.0F, -8.0F, 0.0F); - matrixStack.scale(16.0F, 16.0F, 16.0F); - IRenderTypeBuffer.Impl buffer = Minecraft.getInstance() - .getBufferBuilders() - .getEntityVertexConsumers(); - boolean flatLighting = !bakedModel.isSideLit(); - if (flatLighting) { - RenderHelper.disableGuiDepthLighting(); - } - - renderer.renderItem(stack, ItemCameraTransforms.TransformType.GUI, false, matrixStack, - buffer, 0xF000F0, OverlayTexture.DEFAULT_UV, bakedModel); - buffer.draw(); - RenderSystem.enableDepthTest(); - if (flatLighting) { - RenderHelper.enableGuiDepthLighting(); - } - - RenderSystem.disableAlphaTest(); - RenderSystem.disableRescaleNormal(); - RenderSystem.enableCull(); - matrixStack.pop(); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/IClearableContainer.java b/src/main/java/com/simibubi/create/foundation/gui/IClearableContainer.java deleted file mode 100644 index eea746881..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/IClearableContainer.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import com.simibubi.create.foundation.networking.AllPackets; - -public interface IClearableContainer { - - default void sendClearPacket() { - AllPackets.channel.sendToServer(new ClearContainerPacket()); - } - - public void clearContents(); - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/IScreenRenderable.java b/src/main/java/com/simibubi/create/foundation/gui/IScreenRenderable.java deleted file mode 100644 index 161bb01e2..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/IScreenRenderable.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.client.gui.AbstractGui; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.util.text.StringTextComponent; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public interface IScreenRenderable { - - @OnlyIn(Dist.CLIENT) - void draw(MatrixStack ms, AbstractGui screen, int x, int y); - - @OnlyIn(Dist.CLIENT) - default void draw(MatrixStack ms, int x, int y) { - draw(ms, new Screen(new StringTextComponent("")) { - }, x, y); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/RenderElement.java b/src/main/java/com/simibubi/create/foundation/gui/RenderElement.java deleted file mode 100644 index dcc6a3a0d..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/RenderElement.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.client.gui.AbstractGui; - -public abstract class RenderElement implements IScreenRenderable { - - public static RenderElement EMPTY = new RenderElement() {@Override public void render(MatrixStack ms) {}}; - - public static RenderElement of(IScreenRenderable renderable) { - return new SimpleRenderElement(renderable); - } - - protected int width = 16, height = 16; - protected float x = 0, y = 0, z = 0; - protected float alpha = 1f; - - public T at(float x, float y) { - this.x = x; - this.y = y; - //noinspection unchecked - return (T) this; - } - - public T at(float x, float y, float z) { - this.x = x; - this.y = y; - this.z = z; - //noinspection unchecked - return (T) this; - } - - public T withBounds(int width, int height) { - this.width = width; - this.height = height; - //noinspection unchecked - return (T) this; - } - - public T withAlpha(float alpha) { - this.alpha = alpha; - //noinspection unchecked - return (T) this; - } - - public int getWidth() { - return width; - } - - public int getHeight() { - return height; - } - - public float getX() { - return x; - } - - public float getY() { - return y; - } - - public float getZ() { - return z; - } - - public abstract void render(MatrixStack ms); - - @Override - public void draw(MatrixStack ms, AbstractGui screen, int x, int y) { - this.at(x, y).render(ms); - } - - @Override - public void draw(MatrixStack ms, int x, int y) { - this.at(x, y).render(ms); - } - - public static class SimpleRenderElement extends RenderElement { - - private IScreenRenderable renderable; - - public SimpleRenderElement(IScreenRenderable renderable) { - this.renderable = renderable; - } - - @Override - public void render(MatrixStack ms) { - renderable.draw(ms, (int) x, (int) y); - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java b/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java deleted file mode 100644 index cfe1aa1d1..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/ScreenOpener.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.util.ArrayDeque; -import java.util.ArrayList; -import java.util.Deque; -import java.util.List; -import java.util.Optional; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; - -public class ScreenOpener { - - private static final Deque backStack = new ArrayDeque<>(); - private static Screen backSteppedFrom = null; - - public static void open(Screen screen) { - open(Minecraft.getInstance().currentScreen, screen); - } - - public static void open(@Nullable Screen current, Screen toOpen) { - backSteppedFrom = null; - if (current != null) { - if (backStack.size() >= 15) // don't go deeper than 15 steps - backStack.pollLast(); - - backStack.push(current); - } else - backStack.clear(); - - openScreen(toOpen); - } - - public static void openPreviousScreen(Screen current, Optional screenWithContext) { - if (backStack.isEmpty()) - return; - backSteppedFrom = current; - Screen previousScreen = backStack.pop(); - if (previousScreen instanceof NavigatableSimiScreen) { - NavigatableSimiScreen previousAbstractSimiScreen = (NavigatableSimiScreen) previousScreen; - screenWithContext.ifPresent(s -> s.shareContextWith(previousAbstractSimiScreen)); - previousAbstractSimiScreen.transition.startWithValue(-0.1) - .chase(-1, .4f, LerpedFloat.Chaser.EXP); - } - openScreen(previousScreen); - } - - // transitions are only supported in simiScreens atm. they take care of all the - // rendering for it - public static void transitionTo(NavigatableSimiScreen screen) { - if (tryBackTracking(screen)) - return; - screen.transition.startWithValue(0.1) - .chase(1, .4f, LerpedFloat.Chaser.EXP); - open(screen); - } - - private static boolean tryBackTracking(NavigatableSimiScreen screen) { - List screenHistory = getScreenHistory(); - if (screenHistory.isEmpty()) - return false; - Screen previouslyRenderedScreen = screenHistory.get(0); - if (!(previouslyRenderedScreen instanceof NavigatableSimiScreen)) - return false; - if (!screen.isEquivalentTo((NavigatableSimiScreen) previouslyRenderedScreen)) - return false; - - openPreviousScreen(Minecraft.getInstance().currentScreen, Optional.of(screen)); - return true; - } - - public static void clearStack() { - backStack.clear(); - } - - public static List getScreenHistory() { - return new ArrayList<>(backStack); - } - - @Nullable - public static Screen getPreviouslyRenderedScreen() { - return backSteppedFrom != null ? backSteppedFrom : backStack.peek(); - } - - private static void openScreen(Screen screen) { - Minecraft.getInstance() - .enqueue(() -> { - Minecraft.getInstance() - .displayGuiScreen(screen); - Screen previouslyRenderedScreen = getPreviouslyRenderedScreen(); - if (previouslyRenderedScreen != null && screen instanceof NavigatableSimiScreen) - previouslyRenderedScreen.init(Minecraft.getInstance(), screen.width, screen.height); - }); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/StencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/StencilElement.java deleted file mode 100644 index 22c70b75f..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/StencilElement.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.client.Minecraft; - -public abstract class StencilElement extends RenderElement { - - @Override - public void render(MatrixStack ms) { - ms.push(); - transform(ms); - prepareStencil(ms); - renderStencil(ms); - prepareElement(ms); - renderElement(ms); - cleanUp(ms); - ms.pop(); - } - - protected abstract void renderStencil(MatrixStack ms); - - protected abstract void renderElement(MatrixStack ms); - - protected void transform(MatrixStack ms) { - ms.translate(x, y, z); - } - - protected void prepareStencil(MatrixStack ms) { - GL11.glDisable(GL11.GL_STENCIL_TEST); - RenderSystem.stencilMask(~0); - RenderSystem.clear(GL11.GL_STENCIL_BUFFER_BIT, Minecraft.IS_RUNNING_ON_MAC); - GL11.glEnable(GL11.GL_STENCIL_TEST); - RenderSystem.stencilOp(GL11.GL_REPLACE, GL11.GL_KEEP, GL11.GL_KEEP); - RenderSystem.stencilMask(0xFF); - RenderSystem.stencilFunc(GL11.GL_NEVER, 1, 0xFF); - } - - protected void prepareElement(MatrixStack ms) { - GL11.glEnable(GL11.GL_STENCIL_TEST); - RenderSystem.stencilOp(GL11.GL_KEEP, GL11.GL_KEEP, GL11.GL_KEEP); - RenderSystem.stencilFunc(GL11.GL_EQUAL, 1, 0xFF); - } - - protected void cleanUp(MatrixStack ms) { - GL11.glDisable(GL11.GL_STENCIL_TEST); - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/TextStencilElement.java b/src/main/java/com/simibubi/create/foundation/gui/TextStencilElement.java deleted file mode 100644 index cdea4f887..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/TextStencilElement.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class TextStencilElement extends DelegatedStencilElement { - - protected FontRenderer font; - protected IFormattableTextComponent component; - protected boolean centerVertically = false; - protected boolean centerHorizontally = false; - - public TextStencilElement(FontRenderer font) { - super(); - this.font = font; - height = 10; - } - - public TextStencilElement(FontRenderer font, String text) { - this(font); - component = new StringTextComponent(text); - } - - public TextStencilElement(FontRenderer font, IFormattableTextComponent component) { - this(font); - this.component = component; - } - - public TextStencilElement withText(String text) { - component = new StringTextComponent(text); - return this; - } - - public TextStencilElement withText(IFormattableTextComponent component) { - this.component = component; - return this; - } - - public TextStencilElement centered(boolean vertical, boolean horizontal) { - this.centerVertically = vertical; - this.centerHorizontally = horizontal; - return this; - } - - @Override - protected void renderStencil(MatrixStack ms) { - - float x = 0, y = 0; - if (centerHorizontally) - x = width / 2f - font.getWidth(component) / 2f; - - if (centerVertically) - y = height / 2f - (font.FONT_HEIGHT - 1) / 2f; - - font.draw(ms, component, x, y, 0xff_000000); - } - - @Override - protected void renderElement(MatrixStack ms) { - float x = 0, y = 0; - if (centerHorizontally) - x = width / 2f - font.getWidth(component) / 2f; - - if (centerVertically) - y = height / 2f - (font.FONT_HEIGHT - 1) / 2f; - - ms.push(); - ms.translate(x, y, 0); - element.render(ms, font.getWidth(component), font.FONT_HEIGHT + 2, alpha); - ms.pop(); - } - - public IFormattableTextComponent getComponent() { - return component; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/Theme.java b/src/main/java/com/simibubi/create/foundation/gui/Theme.java deleted file mode 100644 index 57b2b6412..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/Theme.java +++ /dev/null @@ -1,192 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.awt.*; -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.utility.Couple; - -public class Theme { - - private static final Theme base = new Theme(); - private static Theme custom = null; - - public static void setTheme(@Nullable Theme theme) { - custom = theme; - } - - public static void reload() { - base.init(); - if (custom != null) - custom.init(); - } - - private static ColorHolder resolve(String key) { - ColorHolder h = null; - - if (custom != null) - h = custom.get(key); - - if (h == null) - h = base.get(key); - - if (h == null) - h = ColorHolder.missing; - - return h; - } - - @Nonnull public static Couple p(@Nonnull Key key) {return p(key.get());} - @Nonnull public static Couple p(String key) {return resolve(key).asPair();} - - @Nonnull public static Color c(@Nonnull Key key, boolean first) {return c(key.get(), first);} - @Nonnull public static Color c(String key, boolean first) {return p(key).get(first);} - - public static int i(@Nonnull Key key, boolean first) {return i(key.get(), first);} - public static int i(String key, boolean first) {return p(key).get(first).getRGB();} - - @Nonnull public static Color c(@Nonnull Key key) {return c(key.get());} - @Nonnull public static Color c(String key) {return resolve(key).get();} - - public static int i(@Nonnull Key key) {return i(key.get());} - public static int i(String key) {return resolve(key).get().getRGB();} - - //-----------// - - protected final Map colors; - - protected Theme() { - colors = new HashMap<>(); - init(); - } - - protected void init() { - put(Key.BUTTON_IDLE, new Color(0xdd_8ab6d6, true), new Color(0x90_8ab6d6, true)); - put(Key.BUTTON_HOVER, new Color(0xff_9ABBD3, true), new Color(0xd0_9ABBD3, true)); - put(Key.BUTTON_CLICK, new Color(0xff_ffffff), new Color(0xee_ffffff)); - put(Key.BUTTON_DISABLE, new Color(0x80_909090, true), new Color(0x60_909090, true)); - put(Key.BUTTON_SUCCESS, new Color(0xcc_88f788, true), new Color(0xcc_20cc20, true)); - put(Key.BUTTON_FAIL, new Color(0xcc_f78888, true), new Color(0xcc_cc2020, true)); - put(Key.TEXT, new Color(0xff_eeeeee), new Color(0xff_a3a3a3)); - put(Key.TEXT_DARKER, new Color(0xff_a3a3a3), new Color(0xff_808080)); - put(Key.TEXT_ACCENT_STRONG, new Color(0xff_8ab6d6), new Color(0xff_8ab6d6)); - put(Key.TEXT_ACCENT_SLIGHT, new Color(0xff_ddeeff), new Color(0xff_a0b0c0)); - put(Key.STREAK, new Color(0x101010, false)); - - put(Key.PONDER_BUTTON_IDLE, new Color(0x60_c0c0ff, true), new Color(0x30_c0c0ff, true)); - put(Key.PONDER_BUTTON_HOVER, new Color(0xf0_c0c0ff, true), new Color(0xa0_c0c0ff, true)); - put(Key.PONDER_BUTTON_CLICK, new Color(0xff_ffffff), new Color(0xdd_ffffff)); - put(Key.PONDER_BUTTON_DISABLE, new Color(0x80_909090, true), new Color(0x20_909090, true)); - put(Key.PONDER_BACKGROUND_TRANSPARENT, new Color(0xdd_000000, true)); - put(Key.PONDER_BACKGROUND_FLAT, new Color(0xff_000000, false)); - put(Key.PONDER_IDLE, new Color(0x40ffeedd, true), new Color(0x20ffeedd, true)); - put(Key.PONDER_HOVER, new Color(0x70ffffff, true), new Color(0x30ffffff, true)); - put(Key.PONDER_HIGHLIGHT, new Color(0xf0ffeedd, true), new Color(0x60ffeedd, true)); - put(Key.TEXT_WINDOW_BORDER, new Color(0x607a6000, true), new Color(0x207a6000, true)); - put(Key.PONDER_BACK_ARROW, new Color(0xf0aa9999, true), new Color(0x30aa9999, true)); - put(Key.PONDER_PROGRESSBAR, new Color(0x80ffeedd, true), new Color(0x50ffeedd, true)); - put(Key.PONDER_MISSING_CREATE, new Color(0x70_984500, true), new Color(0x70_692400, true)); - put(Key.PONDER_MISSING_VANILLA, new Color(0x50_5000ff, true), new Color(0x50_300077, true)); - //put(Key., new Color(0x, true), new Color(0x, true)); - } - - protected void put(String key, Color c) { - colors.put(key, ColorHolder.single(c)); - } - - protected void put(Key key, Color c) { - put(key.get(), c); - } - - protected void put(String key, Color c1, Color c2) { - colors.put(key, ColorHolder.pair(c1, c2)); - } - - protected void put(Key key, Color c1, Color c2) { - put(key.get(), c1 , c2); - } - - @Nullable protected ColorHolder get(String key) { - return colors.get(key); - } - - public static class Key { - - public static Key BUTTON_IDLE = new Key(); - public static Key BUTTON_HOVER = new Key(); - public static Key BUTTON_CLICK = new Key(); - public static Key BUTTON_DISABLE = new Key(); - public static Key BUTTON_SUCCESS = new Key(); - public static Key BUTTON_FAIL = new Key(); - - public static Key TEXT = new Key(); - public static Key TEXT_DARKER = new Key(); - public static Key TEXT_ACCENT_STRONG = new Key(); - public static Key TEXT_ACCENT_SLIGHT = new Key(); - - public static Key STREAK = new Key(); - - public static Key PONDER_BACKGROUND_TRANSPARENT = new Key(); - public static Key PONDER_BACKGROUND_FLAT = new Key(); - public static Key PONDER_IDLE = new Key(); - public static Key PONDER_HOVER = new Key(); - public static Key PONDER_HIGHLIGHT = new Key(); - public static Key TEXT_WINDOW_BORDER = new Key(); - public static Key PONDER_BACK_ARROW = new Key(); - public static Key PONDER_PROGRESSBAR = new Key(); - public static Key PONDER_MISSING_CREATE = new Key(); - public static Key PONDER_MISSING_VANILLA = new Key(); - - public static Key PONDER_BUTTON_IDLE = new Key(); - public static Key PONDER_BUTTON_HOVER = new Key(); - public static Key PONDER_BUTTON_CLICK = new Key(); - public static Key PONDER_BUTTON_DISABLE = new Key(); - - private static int index = 0; - - private final String s; - - protected Key() { - this.s = "_" + index++; - } - - protected Key(String s) { - this.s = s; - } - - public String get() { - return s; - } - } - - private static class ColorHolder { - - private static final ColorHolder missing = ColorHolder.single(Color.BLACK); - - private Couple colors; - - private static ColorHolder single(Color c) { - ColorHolder h = new ColorHolder(); - h.colors = Couple.create(c, c); - return h; - } - - private static ColorHolder pair(Color first, Color second) { - ColorHolder h = new ColorHolder(); - h.colors = Couple.create(first, second); - return h; - } - - private Color get() { - return colors.getFirst(); - } - - private Couple asPair() { - return colors; - } - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/ToolSelectionScreen.java b/src/main/java/com/simibubi/create/foundation/gui/ToolSelectionScreen.java deleted file mode 100644 index 5efe5c936..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/ToolSelectionScreen.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.util.List; -import java.util.function.Consumer; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.AllKeys; -import com.simibubi.create.content.schematics.client.tools.Tools; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class ToolSelectionScreen extends Screen { - - public final String scrollToCycle = Lang.translate("gui.toolmenu.cycle") - .getString(); - public final String holdToFocus = "gui.toolmenu.focusKey"; - - protected List tools; - protected Consumer callback; - public boolean focused; - private float yOffset; - protected int selection; - private boolean initialized; - - protected int w; - protected int h; - - public ToolSelectionScreen(List tools, Consumer callback) { - super(new StringTextComponent("Tool Selection")); - this.client = Minecraft.getInstance(); - this.tools = tools; - this.callback = callback; - focused = false; - yOffset = 0; - selection = 0; - initialized = false; - - callback.accept(tools.get(selection)); - - w = Math.max(tools.size() * 50 + 30, 220); - h = 30; - } - - public void setSelectedElement(Tools tool) { - if (!tools.contains(tool)) - return; - selection = tools.indexOf(tool); - } - - public void cycle(int direction) { - selection += (direction < 0) ? 1 : -1; - selection = (selection + tools.size()) % tools.size(); - } - - private void draw(MatrixStack matrixStack, float partialTicks) { - Minecraft mc = Minecraft.getInstance(); - MainWindow mainWindow = mc.getWindow(); - if (!initialized) - init(mc, mainWindow.getScaledWidth(), mainWindow.getScaledHeight()); - - int x = (mainWindow.getScaledWidth() - w) / 2 + 15; - int y = mainWindow.getScaledHeight() - h - 75; - - matrixStack.push(); - matrixStack.translate(0, -yOffset, focused ? 100 : 0); - - AllGuiTextures gray = AllGuiTextures.HUD_BACKGROUND; - RenderSystem.enableBlend(); - RenderSystem.color4f(1, 1, 1, focused ? 7 / 8f : 1 / 2f); - - Minecraft.getInstance() - .getTextureManager() - .bindTexture(gray.location); - drawTexture(matrixStack, x - 15, y, gray.startX, gray.startY, w, h, gray.width, gray.height); - - float toolTipAlpha = yOffset / 10; - List toolTip = tools.get(selection) - .getDescription(); - int stringAlphaComponent = ((int) (toolTipAlpha * 0xFF)) << 24; - - if (toolTipAlpha > 0.25f) { - RenderSystem.color4f(.7f, .7f, .8f, toolTipAlpha); - drawTexture(matrixStack, x - 15, y + 33, gray.startX, gray.startY, w, h + 22, gray.width, gray.height); - RenderSystem.color4f(1, 1, 1, 1); - - if (toolTip.size() > 0) - textRenderer.draw(matrixStack, toolTip.get(0), x - 10, y + 38, 0xEEEEEE + stringAlphaComponent); - if (toolTip.size() > 1) - textRenderer.draw(matrixStack, toolTip.get(1), x - 10, y + 50, 0xCCDDFF + stringAlphaComponent); - if (toolTip.size() > 2) - textRenderer.draw(matrixStack, toolTip.get(2), x - 10, y + 60, 0xCCDDFF + stringAlphaComponent); - if (toolTip.size() > 3) - textRenderer.draw(matrixStack, toolTip.get(3), x - 10, y + 72, 0xCCCCDD + stringAlphaComponent); - } - - RenderSystem.color4f(1, 1, 1, 1); - if (tools.size() > 1) { - String keyName = AllKeys.TOOL_MENU.getBoundKey(); - int width = client.getWindow() - .getScaledWidth(); - if (!focused) - drawCenteredText(matrixStack, client.fontRenderer, Lang.translate(holdToFocus, keyName), width / 2, - y - 10, 0xCCDDFF); - else - drawCenteredString(matrixStack, client.fontRenderer, scrollToCycle, width / 2, y - 10, 0xCCDDFF); - } else { - x += 65; - } - - for (int i = 0; i < tools.size(); i++) { - matrixStack.push(); - - float alpha = focused ? 1 : .2f; - if (i == selection) { - matrixStack.translate(0, -10, 0); - drawCenteredString(matrixStack, client.fontRenderer, tools.get(i) - .getDisplayName() - .getString(), x + i * 50 + 24, y + 28, 0xCCDDFF); - alpha = 1; - } - RenderSystem.color4f(0, 0, 0, alpha); - tools.get(i) - .getIcon() - .draw(matrixStack, this, x + i * 50 + 16, y + 12); - RenderSystem.color4f(1, 1, 1, alpha); - tools.get(i) - .getIcon() - .draw(matrixStack, this, x + i * 50 + 16, y + 11); - - matrixStack.pop(); - } - - matrixStack.pop(); - } - - public void update() { - if (focused) - yOffset += (10 - yOffset) * .1f; - else - yOffset *= .9f; - } - - public void renderPassive(MatrixStack matrixStack, float partialTicks) { - draw(matrixStack, partialTicks); - } - - @Override - public void onClose() { - callback.accept(tools.get(selection)); - } - - @Override - protected void init() { - super.init(); - initialized = true; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/UIRenderHelper.java b/src/main/java/com/simibubi/create/foundation/gui/UIRenderHelper.java deleted file mode 100644 index 23adb2cc2..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/UIRenderHelper.java +++ /dev/null @@ -1,281 +0,0 @@ -package com.simibubi.create.foundation.gui; - -import java.awt.*; - -import javax.annotation.Nonnull; - -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.WorldVertexBufferUploader; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.client.shader.Framebuffer; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraftforge.fml.client.gui.GuiUtils; - -public class UIRenderHelper { - - /** - * An FBO that has a stencil buffer for use wherever stencil are necessary. Forcing the main FBO to have a stencil - * buffer will cause GL error spam when using fabulous graphics. - */ - public static Framebuffer framebuffer; - - public static void updateWindowSize(MainWindow mainWindow) { - if (framebuffer != null) - framebuffer.func_216491_a(mainWindow.getFramebufferWidth(), mainWindow.getFramebufferHeight(), Minecraft.IS_RUNNING_ON_MAC); - } - - public static void init() { - RenderSystem.recordRenderCall(() -> { - MainWindow mainWindow = Minecraft.getInstance() - .getWindow(); - framebuffer = createFramebuffer(mainWindow); - }); - } - - private static Framebuffer createFramebuffer(MainWindow mainWindow) { - Framebuffer framebuffer = new Framebuffer(mainWindow.getFramebufferWidth(), mainWindow.getFramebufferHeight(), true, - Minecraft.IS_RUNNING_ON_MAC); - framebuffer.setFramebufferColor(0, 0, 0, 0); - framebuffer.enableStencil(); - return framebuffer; - } - - public static void drawFramebuffer(float alpha) { - MainWindow window = Minecraft.getInstance() - .getWindow(); - - float vx = (float) window.getScaledWidth(); - float vy = (float) window.getScaledHeight(); - float tx = (float) framebuffer.framebufferWidth / (float) framebuffer.framebufferTextureWidth; - float ty = (float) framebuffer.framebufferHeight / (float) framebuffer.framebufferTextureHeight; - - RenderSystem.enableTexture(); - RenderSystem.enableDepthTest(); - - framebuffer.bindFramebufferTexture(); - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder bufferbuilder = tessellator.getBuffer(); - bufferbuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR_TEXTURE); - - bufferbuilder.vertex(0, vy, 0).color(1, 1, 1, alpha).texture(0, 0).endVertex(); - bufferbuilder.vertex(vx, vy, 0).color(1, 1, 1, alpha).texture(tx, 0).endVertex(); - bufferbuilder.vertex(vx, 0, 0).color(1, 1, 1, alpha).texture(tx, ty).endVertex(); - bufferbuilder.vertex(0, 0, 0).color(1, 1, 1, alpha).texture(0, ty).endVertex(); - - tessellator.draw(); - framebuffer.unbindFramebufferTexture(); - } - - public static void streak(MatrixStack ms, float angle, int x, int y, int breadth, int length) {streak(ms, angle, x, y, breadth, length, Theme.i(Theme.Key.STREAK));} - // angle in degrees; 0° -> fading to the right - // x and y specify the middle point of the starting edge - // breadth is the total width of the streak - - public static void streak(MatrixStack ms, float angle, int x, int y, int breadth, int length, int color) { - int a1 = 0xa0 << 24; - int a2 = 0x80 << 24; - int a3 = 0x10 << 24; - int a4 = 0x00 << 24; - - color = color & 0x00FFFFFF; - int c1 = a1 | color; - int c2 = a2 | color; - int c3 = a3 | color; - int c4 = a4 | color; - - ms.push(); - ms.translate(x, y, 0); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle - 90)); - - streak(ms, breadth / 2, length, c1, c2, c3, c4); - - ms.pop(); - } - - private static void streak(MatrixStack ms, int width, int height, int c1, int c2, int c3, int c4) { - double split1 = .5; - double split2 = .75; - Matrix4f model = ms.peek().getModel(); - RenderSystem.disableAlphaTest(); - GuiUtils.drawGradientRect(model, 0, -width, 0, width, (int) (split1 * height), c1, c2); - GuiUtils.drawGradientRect(model, 0, -width, (int) (split1 * height), width, (int) (split2 * height), c2, c3); - GuiUtils.drawGradientRect(model, 0, -width, (int) (split2 * height), width, height, c3, c4); - RenderSystem.enableAlphaTest(); - } - - /** - * @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int) - */ - public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int breadth, int length, Couple c) { - angledGradient(ms, angle, x, y, 0, breadth, length, c); - } - - /** - * @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int) - */ - public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int z, int breadth, int length, Couple c) { - angledGradient(ms, angle, x, y, z, breadth, length, c.getFirst().getRGB(), c.getSecond().getRGB()); - } - - /** - * @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int) - */ - public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int breadth, int length, int color1, int color2) { - angledGradient(ms, angle, x, y, 0, breadth, length, color1, color2); - } - - /** - * x and y specify the middle point of the starting edge - * - * @param angle the angle of the gradient in degrees; 0° means from left to right - * @param color1 the color at the starting edge - * @param color2 the color at the ending edge - * @param breadth the total width of the gradient - */ - public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int z, int breadth, int length, int color1, int color2) { - ms.push(); - ms.translate(x, y, z); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle - 90)); - - Matrix4f model = ms.peek().getModel(); - int w = breadth / 2; - GuiUtils.drawGradientRect(model, 0, -w, 0, w, length, color1, color2); - - ms.pop(); - } - - public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, Couple colors) {breadcrumbArrow(matrixStack, x, y, z, width, height, indent, colors.getFirst().getRGB(), colors.getSecond().getRGB());} - - // draws a wide chevron-style breadcrumb arrow pointing left - public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, int startColor, int endColor) { - matrixStack.push(); - matrixStack.translate(x - indent, y, z); - - breadcrumbArrow(matrixStack, width, height, indent, startColor, endColor); - - matrixStack.pop(); - } - - private static void breadcrumbArrow(MatrixStack ms, int width, int height, int indent, int c1, int c2) { - - /* - * 0,0 x1,y1 ********************* x4,y4 ***** x7,y7 - * **** **** - * **** **** - * x0,y0 x2,y2 x5,y5 - * **** **** - * **** **** - * x3,y3 ********************* x6,y6 ***** x8,y8 - * - */ - - float x0 = 0, y0 = height / 2f; - float x1 = indent, y1 = 0; - float x2 = indent, y2 = height / 2f; - float x3 = indent, y3 = height; - float x4 = width, y4 = 0; - float x5 = width, y5 = height / 2f; - float x6 = width, y6 = height; - float x7 = indent + width, y7 = 0; - float x8 = indent + width, y8 = height; - - indent = Math.abs(indent); - width = Math.abs(width); - int fc1 = ColorHelper.mixAlphaColors(c1, c2, 0); - int fc2 = ColorHelper.mixAlphaColors(c1, c2, (indent) / (width + 2f * indent)); - int fc3 = ColorHelper.mixAlphaColors(c1, c2, (indent + width) / (width + 2f * indent)); - int fc4 = ColorHelper.mixAlphaColors(c1, c2, 1); - - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.disableCull(); - RenderSystem.disableAlphaTest(); - RenderSystem.defaultBlendFunc(); - RenderSystem.shadeModel(GL11.GL_SMOOTH); - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder bufferbuilder = tessellator.getBuffer(); - Matrix4f model = ms.peek().getModel(); - bufferbuilder.begin(GL11.GL_TRIANGLES, DefaultVertexFormats.POSITION_COLOR); - - bufferbuilder.vertex(model, x0, y0, 0).color(fc1 >> 16 & 0xFF, fc1 >> 8 & 0xFF, fc1 & 0xFF, fc1 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x1, y1, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x2, y2, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - - bufferbuilder.vertex(model, x0, y0, 0).color(fc1 >> 16 & 0xFF, fc1 >> 8 & 0xFF, fc1 & 0xFF, fc1 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x2, y2, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - - bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x1, y1, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - - bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x6, y6, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - - bufferbuilder.vertex(model, x5, y5, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x7, y7, 0).color(fc4 >> 16 & 0xFF, fc4 >> 8 & 0xFF, fc4 & 0xFF, fc4 >> 24 & 0xFF).endVertex(); - - bufferbuilder.vertex(model, x6, y6, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x5, y5, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex(); - bufferbuilder.vertex(model, x8, y8, 0).color(fc4 >> 16 & 0xFF, fc4 >> 8 & 0xFF, fc4 & 0xFF, fc4 >> 24 & 0xFF).endVertex(); - - tessellator.draw(); - RenderSystem.shadeModel(GL11.GL_FLAT); - RenderSystem.disableBlend(); - RenderSystem.enableCull(); - RenderSystem.enableAlphaTest(); - RenderSystem.enableTexture(); - } - - //just like AbstractGui#drawTexture, but with a color at every vertex - public static void drawColoredTexture(MatrixStack ms, Color c, int x, int y, int tex_left, int tex_top, int width, int height) { - drawColoredTexture(ms, c, x, y, 0, (float) tex_left, (float) tex_top, width, height, 256, 256); - } - - public static void drawColoredTexture(MatrixStack ms, Color c, int x, int y, int z, float tex_left, float tex_top, int width, int height, int sheet_width, int sheet_height) { - drawColoredTexture(ms, c, x, x + width, y, y + height, z, width, height, tex_left, tex_top, sheet_width, sheet_height); - } - - private static void drawColoredTexture(MatrixStack ms, Color c, int left, int right, int top, int bot, int z, int tex_width, int tex_height, float tex_left, float tex_top, int sheet_width, int sheet_height) { - drawTexturedQuad(ms.peek().getModel(), c, left, right, top, bot, z, (tex_left + 0.0F) / (float) sheet_width, (tex_left + (float) tex_width) / (float) sheet_width, (tex_top + 0.0F) / (float) sheet_height, (tex_top + (float) tex_height) / (float) sheet_height); - } - - private static void drawTexturedQuad(Matrix4f m, Color c, int left, int right, int top, int bot, int z, float u1, float u2, float v1, float v2) { - RenderSystem.enableBlend(); - BufferBuilder bufferbuilder = Tessellator.getInstance().getBuffer(); - bufferbuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR_TEXTURE); - bufferbuilder.vertex(m, (float) left , (float) bot, (float) z).color(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()).texture(u1, v2).endVertex(); - bufferbuilder.vertex(m, (float) right, (float) bot, (float) z).color(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()).texture(u2, v2).endVertex(); - bufferbuilder.vertex(m, (float) right, (float) top, (float) z).color(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()).texture(u2, v1).endVertex(); - bufferbuilder.vertex(m, (float) left , (float) top, (float) z).color(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha()).texture(u1, v1).endVertex(); - bufferbuilder.finishDrawing(); - RenderSystem.enableAlphaTest(); - WorldVertexBufferUploader.draw(bufferbuilder); - } - - public static void setupSimpleCustomLighting(float xRot, float yRot) { - Matrix4f lightingMatrix = new Matrix4f(); - lightingMatrix.loadIdentity(); - lightingMatrix.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(yRot)); - lightingMatrix.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(xRot)); - lightingMatrix.multiply(Matrix4f.translate(0, 0, 1)); - RenderSystem.setupLevelDiffuseLighting(VecHelper.ZERO_3F, VecHelper.ZERO_3F, lightingMatrix); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/mainMenu/CreateMainMenuScreen.java b/src/main/java/com/simibubi/create/foundation/gui/mainMenu/CreateMainMenuScreen.java deleted file mode 100644 index c1e6a95a2..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/mainMenu/CreateMainMenuScreen.java +++ /dev/null @@ -1,190 +0,0 @@ -package com.simibubi.create.foundation.gui.mainMenu; - -import java.awt.*; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.platform.GlStateManager; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.config.ui.BaseConfigScreen; -import com.simibubi.create.foundation.gui.AbstractSimiScreen; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.BoxElement; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.client.gui.screen.ConfirmOpenLinkScreen; -import net.minecraft.client.gui.screen.MainMenuScreen; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.button.Button; -import net.minecraft.client.renderer.RenderSkybox; -import net.minecraft.client.renderer.RenderSkyboxCube; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.Util; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; - -public class CreateMainMenuScreen extends AbstractSimiScreen { - - protected final Screen parent; - protected boolean returnOnClose; - - private static final RenderSkyboxCube PANORAMA_RESOURCES = - new RenderSkyboxCube(Create.asResource("textures/gui/title/background/panorama")); - private static final ResourceLocation PANORAMA_OVERLAY_TEXTURES = - new ResourceLocation("textures/gui/title/background/panorama_overlay.png"); - private RenderSkybox vanillaPanorama = new RenderSkybox(MainMenuScreen.PANORAMA_RESOURCES); - private RenderSkybox panorama = new RenderSkybox(PANORAMA_RESOURCES); - private long firstRenderTime; - - public CreateMainMenuScreen(Screen parent) { - this.parent = parent; - returnOnClose = true; - if (parent instanceof MainMenuScreen) - vanillaPanorama = ObfuscationReflectionHelper.getPrivateValue(MainMenuScreen.class, (MainMenuScreen) parent, - "field_209101_K"); - } - - @Override - public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (firstRenderTime == 0L) - this.firstRenderTime = Util.milliTime(); - super.render(ms, mouseX, mouseY, partialTicks); - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - float f = (float) (Util.milliTime() - this.firstRenderTime) / 1000.0F; - float alpha = MathHelper.clamp(f, 0.0F, 1.0F); - - if (parent instanceof MainMenuScreen) { - if (alpha < 1) - vanillaPanorama.render(partialTicks, 1); - panorama.render(partialTicks, alpha); - - client.getTextureManager() - .bindTexture(PANORAMA_OVERLAY_TEXTURES); - RenderSystem.enableBlend(); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, - GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - drawTexture(ms, 0, 0, this.width, this.height, 0.0F, 0.0F, 16, 128, 16, 128); - } - - RenderSystem.enableDepthTest(); - - for (int side : Iterate.positiveAndNegative) { - ms.push(); - ms.translate(width / 2, 60, -800); - ms.scale(24 * side, 24 * side, 32); - ms.translate(-1.75 * ((alpha * alpha) / 2f + .5f), .25f, 0); - MatrixStacker.of(ms) - .rotateX(45); - GuiGameElement.of(AllBlocks.LARGE_COGWHEEL.getDefaultState()) - .rotateBlock(0, Util.milliTime() / 32f * side, 0) - .render(ms); - ms.translate(-1, 0, -1); - GuiGameElement.of(AllBlocks.COGWHEEL.getDefaultState()) - .rotateBlock(0, Util.milliTime() / -16f * side + 22.5f, 0) - .render(ms); - ms.pop(); - } - - ms.push(); - ms.translate(width / 2 - 32, 32, -10); - ms.push(); - ms.scale(0.25f, 0.25f, 0.25f); - AllGuiTextures.LOGO.draw(ms, 0, 0); - ms.pop(); - new BoxElement().withBackground(0x88_000000) - .flatBorder(new Color(0x01_000000, true)) - .at(-32, 56, 100) - .withBounds(128, 11) - .render(ms); - ms.pop(); - - ms.push(); - ms.translate(0, 0, 200); - drawCenteredText(ms, textRenderer, new StringTextComponent(Create.NAME).formatted(TextFormatting.BOLD) - .append(new StringTextComponent(" v" + Create.VERSION).formatted(TextFormatting.BOLD, TextFormatting.WHITE)), - width / 2, 89, 0xff_E4BB67); - ms.pop(); - - RenderSystem.disableDepthTest(); - } - - protected void init() { - super.init(); - returnOnClose = true; - this.addButtons(); - } - - private void addButtons() { - buttons.clear(); - - int yStart = height / 4 + (parent instanceof MainMenuScreen ? 40 : 40); - int center = width / 2; - int bHeight = 20; - int bShortWidth = 98; - int bLongWidth = 200; - - addButton(new Button(center - 100, yStart + 24 + -16, bLongWidth, bHeight, Lang.translate("menu.return"), - $ -> onClose())); - addButton(new Button(center - 100, yStart + 48 + -16, bShortWidth, bHeight, Lang.translate("menu.configure"), - $ -> linkTo(BaseConfigScreen.forCreate(this)))); - - Button gettingStarted = new Button(center + 2, yStart + 48 + -16, bShortWidth, bHeight, - Lang.translate("menu.getting_started"), $ -> { - }); - gettingStarted.active = false; - addButton(gettingStarted); - - String projectLink = "https://www.curseforge.com/minecraft/mc-mods/create"; - String issueTrackerLink = "https://github.com/Creators-of-Create/Create/issues"; - String supportLink = "https://github.com/Creators-of-Create/Create/wiki/Supporting-the-Project"; - - addButton(new Button(center - 100, yStart + 68, bShortWidth, bHeight, Lang.translate("menu.project_page"), - $ -> linkTo(projectLink))); - addButton(new Button(center + 2, yStart + 68, bShortWidth, bHeight, Lang.translate("menu.report_bugs"), - $ -> linkTo(issueTrackerLink))); - addButton(new Button(center - 100, yStart + 92, bLongWidth, bHeight, Lang.translate("menu.support"), - $ -> linkTo(supportLink))); - } - - @Override - protected void renderWindowForeground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - super.renderWindowForeground(ms, mouseX, mouseY, partialTicks); - buttons.forEach(w -> w.render(ms, mouseX, mouseY, partialTicks)); - } - - public void tick() { - super.tick(); - } - - private void linkTo(Screen screen) { - returnOnClose = false; - ScreenOpener.open(screen); - } - - private void linkTo(String url) { - returnOnClose = false; - ScreenOpener.open(new ConfirmOpenLinkScreen((p_213069_2_) -> { - if (p_213069_2_) - Util.getOSType() - .openURI(url); - this.client.displayGuiScreen(this); - }, url, true)); - } - - @Override - public void onClose() { - super.onClose(); - ScreenOpener.open(parent); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/AbstractSimiWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/AbstractSimiWidget.java deleted file mode 100644 index f8539a3d3..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/AbstractSimiWidget.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import java.util.LinkedList; -import java.util.List; -import java.util.function.BiConsumer; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.client.gui.widget.Widget; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public abstract class AbstractSimiWidget extends Widget { - - protected float z; - protected boolean wasHovered = false; - protected List toolTip = new LinkedList<>(); - protected BiConsumer onClick = (_$, _$$) -> {}; - - protected AbstractSimiWidget() { - this(0, 0); - } - - protected AbstractSimiWidget(int x, int y) { - this(x, y, 16, 16); - } - - protected AbstractSimiWidget(int x, int y, int width, int height) { - super(x, y, width, height, StringTextComponent.EMPTY); - } - - public T withCallback(BiConsumer cb) { - this.onClick = cb; - //noinspection unchecked - return (T) this; - } - - public T withCallback(Runnable cb) { - return withCallback((_$, _$$) -> cb.run()); - } - - public T atZLevel(float z) { - this.z = z; - //noinspection unchecked - return (T) this; - } - - public List getToolTip() { - return toolTip; - } - - public void tick() {} - - @Override - public void render(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (visible) { - hovered = isMouseOver(mouseX, mouseY); - beforeRender(ms, mouseX, mouseY, partialTicks); - renderButton(ms, mouseX, mouseY, partialTicks); - afterRender(ms, mouseX, mouseY, partialTicks); - wasHovered = isHovered(); - } - } - - @Override - public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) {} - - @Override - protected boolean clicked(double mouseX, double mouseY) { - return active && visible && isMouseOver(mouseX, mouseY); - } - - protected void beforeRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - ms.push(); - } - - protected void afterRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - ms.pop(); - } - - public void runCallback(double mouseX, double mouseY) { - onClick.accept((int) mouseX, (int) mouseY); - } - - @Override - public void onClick(double mouseX, double mouseY) { - runCallback(mouseX, mouseY); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/BoxWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/BoxWidget.java deleted file mode 100644 index 0623d96f9..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/BoxWidget.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import java.awt.*; -import java.util.function.Function; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.BoxElement; -import com.simibubi.create.foundation.gui.DelegatedStencilElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.Theme.Key; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -public class BoxWidget extends ElementWidget { - - public static final Function gradientFactory = (box) -> (ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, w/2, -2, w + 4, h + 4, box.gradientColor1.getRGB(), box.gradientColor2.getRGB()); - - protected BoxElement box; - - protected Color customBorderTop; - protected Color customBorderBot; - protected boolean animateColors = true; - protected LerpedFloat colorAnimation = LerpedFloat.linear(); - - protected Color gradientColor1, gradientColor2; - private Color previousColor1, previousColor2; - private Color colorTarget1 = Theme.c(getIdleTheme(), true); - private Color colorTarget2 = Theme.c(getIdleTheme(), false); - - public BoxWidget() { - this(0, 0); - } - - public BoxWidget(int x, int y) { - this(x, y, 16, 16); - } - - public BoxWidget(int x, int y, int width, int height) { - super(x, y, width, height); - box = new BoxElement() - .at(x, y) - .withBounds(width, height); - gradientColor1 = colorTarget1; - gradientColor2 = colorTarget2; - } - - public T withBounds(int width, int height) { - this.width = width; - this.height = height; - //noinspection unchecked - return (T) this; - } - - public T withBorderColors(Couple colors) { - this.customBorderTop = colors.getFirst(); - this.customBorderBot = colors.getSecond(); - updateColorsFromState(); - //noinspection unchecked - return (T) this; - } - - public T withBorderColors(Color top, Color bot) { - this.customBorderTop = top; - this.customBorderBot = bot; - updateColorsFromState(); - //noinspection unchecked - return (T) this; - } - - public T animateColors(boolean b) { - this.animateColors = b; - //noinspection unchecked - return (T) this; - } - - @Override - public void tick() { - super.tick(); - colorAnimation.tickChaser(); - } - - @Override - public void onClick(double x, double y) { - super.onClick(x, y); - - gradientColor1 = Theme.c(getClickTheme(), true); - gradientColor2 = Theme.c(getClickTheme(), false); - startGradientAnimation(getColorForState(true), getColorForState(false), true, 0.15); - } - - @Override - protected void beforeRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - super.beforeRender(ms, mouseX, mouseY, partialTicks); - - if (hovered != wasHovered) { - startGradientAnimation( - getColorForState(true), - getColorForState(false), - hovered - ); - } - - if (colorAnimation.settled()) { - gradientColor1 = colorTarget1; - gradientColor2 = colorTarget2; - } else { - float animationValue = 1 - Math.abs(colorAnimation.getValue(partialTicks)); - gradientColor1 = ColorHelper.mixColors(previousColor1, colorTarget1, animationValue); - gradientColor2 = ColorHelper.mixColors(previousColor2, colorTarget2, animationValue); - } - - } - - @Override - public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - float fadeValue = fade.getValue(partialTicks); - if (fadeValue < .1f) - return; - - box.withAlpha(fadeValue); - box.withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_TRANSPARENT)) - .gradientBorder(gradientColor1, gradientColor2) - .at(x, y, z) - .withBounds(width, height) - .render(ms); - - super.renderButton(ms, mouseX, mouseY, partialTicks); - - wasHovered = hovered; - } - - @Override - public boolean isMouseOver(double mX, double mY) { - if (!active || !visible) - return false; - - return - x - 4 <= mX && - y - 4 <= mY && - mX <= x + 4 + width && - mY <= y + 4 + height; - } - - public BoxElement getBox() { - return box; - } - - public void updateColorsFromState() { - colorTarget1 = getColorForState(true); - colorTarget2 = getColorForState(false); - } - - public void animateGradientFromState() { - startGradientAnimation( - getColorForState(true), - getColorForState(false), - true - ); - } - - private void startGradientAnimation(Color c1, Color c2, boolean positive, double expSpeed) { - if (!animateColors) - return; - - colorAnimation.startWithValue(positive ? 1 : -1); - colorAnimation.chase(0, expSpeed, LerpedFloat.Chaser.EXP); - colorAnimation.tickChaser(); - - previousColor1 = gradientColor1; - previousColor2 = gradientColor2; - - colorTarget1 = c1; - colorTarget2 = c2; - } - - private void startGradientAnimation(Color c1, Color c2, boolean positive) { - startGradientAnimation(c1, c2, positive, 0.6); - } - - private Color getColorForState(boolean first) { - if (!active) - return Theme.p(getDisabledTheme()).get(first); - - if (hovered) { - if (first) - return customBorderTop != null ? customBorderTop.darker() : Theme.c(getHoverTheme(), true); - else - return customBorderBot != null ? customBorderBot.darker() : Theme.c(getHoverTheme(), false); - } - - if (first) - return customBorderTop != null ? customBorderTop : Theme.c(getIdleTheme(), true); - else - return customBorderBot != null ? customBorderBot : Theme.c(getIdleTheme(), false); - } - - public Key getDisabledTheme() { - return Theme.Key.BUTTON_DISABLE; - } - - public Key getIdleTheme() { - return Theme.Key.BUTTON_IDLE; - } - - public Key getHoverTheme() { - return Theme.Key.BUTTON_HOVER; - } - - public Key getClickTheme() { - return Theme.Key.BUTTON_CLICK; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/ElementWidget.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/ElementWidget.java deleted file mode 100644 index 499e81587..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/ElementWidget.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import java.util.function.Consumer; -import java.util.function.UnaryOperator; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.IScreenRenderable; -import com.simibubi.create.foundation.gui.RenderElement; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -public class ElementWidget extends AbstractSimiWidget { - - protected RenderElement element = RenderElement.EMPTY; - - protected boolean usesFade = false; - protected int fadeModX; - protected int fadeModY; - protected LerpedFloat fade = LerpedFloat.linear().startWithValue(1); - - protected boolean rescaleElement = false; - protected float rescaleSizeX; - protected float rescaleSizeY; - - protected float paddingX = 0; - protected float paddingY = 0; - - public ElementWidget(int x, int y) { - super(x, y); - } - - public ElementWidget(int x, int y, int width, int height) { - super(x, y, width, height); - } - - public T showingElement(RenderElement element) { - this.element = element; - //noinspection unchecked - return (T) this; - } - - public T showing(IScreenRenderable renderable) { - return this.showingElement(RenderElement.of(renderable)); - } - - public T modifyElement(Consumer consumer) { - if (element != null) - consumer.accept(element); - //noinspection unchecked - return (T) this; - } - - public T mapElement(UnaryOperator function) { - if (element != null) - element = function.apply(element); - //noinspection unchecked - return (T) this; - } - - public T withPadding(float paddingX, float paddingY) { - this.paddingX = paddingX; - this.paddingY = paddingY; - //noinspection unchecked - return (T) this; - } - - public T enableFade(int fadeModifierX, int fadeModifierY) { - this.fade.startWithValue(0); - this.usesFade = true; - this.fadeModX = fadeModifierX; - this.fadeModY = fadeModifierY; - //noinspection unchecked - return (T) this; - } - - public T disableFade() { - this.fade.startWithValue(1); - this.usesFade = false; - //noinspection unchecked - return (T) this; - } - - public LerpedFloat fade() { - return fade; - } - - public T fade(float target) { - fade.chase(target, 0.1, LerpedFloat.Chaser.EXP); - //noinspection unchecked - return (T) this; - } - - public T rescaleElement(float rescaleSizeX, float rescaleSizeY) { - this.rescaleElement = true; - this.rescaleSizeX = rescaleSizeX; - this.rescaleSizeY = rescaleSizeY; - //noinspection unchecked - return (T) this; - } - - public T disableRescale() { - this.rescaleElement = false; - //noinspection unchecked - return (T) this; - } - - @Override - public void tick() { - super.tick(); - fade.tickChaser(); - } - - @Override - protected void beforeRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - super.beforeRender(ms, mouseX, mouseY, partialTicks); - - float fadeValue = fade.getValue(partialTicks); - element.withAlpha(fadeValue); - if (fadeValue < 1) { - ms.translate((1 - fadeValue) * fadeModX, (1 - fadeValue) * fadeModY, 0); - } - } - - @Override - public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - ms.push(); - ms.translate(x + paddingX, y + paddingY, z); - float innerWidth = width - 2 * paddingX; - float innerHeight = height - 2 * paddingY; - if (rescaleElement) { - float xScale = innerWidth / rescaleSizeX; - float yScale = innerHeight / rescaleSizeY; - ms.scale(xScale, yScale, 1); - element.at(element.getX() / xScale, element.getY() / yScale); - } - element.withBounds((int) innerWidth, (int) innerHeight).render(ms); - ms.pop(); - } - - public RenderElement getRenderElement() { - return element; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/IconButton.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/IconButton.java deleted file mode 100644 index 3b553b729..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/IconButton.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; - -import net.minecraft.util.text.ITextComponent; - -import javax.annotation.Nonnull; - -public class IconButton extends AbstractSimiWidget { - - private AllIcons icon; - protected boolean pressed; - - public IconButton(int x, int y, AllIcons icon) { - super(x, y, 18, 18); - this.icon = icon; - } - - @Override - public void renderButton(@Nonnull MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - if (this.visible) { - this.hovered = - mouseX >= this.x && mouseY >= this.y && mouseX < this.x + this.width && mouseY < this.y + this.height; - - AllGuiTextures button = (pressed || !active) ? button = AllGuiTextures.BUTTON_DOWN - : (hovered) ? AllGuiTextures.BUTTON_HOVER : AllGuiTextures.BUTTON; - - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - AllGuiTextures.BUTTON.bind(); - drawTexture(matrixStack, x, y, button.startX, button.startY, button.width, button.height); - icon.draw(matrixStack, this, x + 1, y + 1); - } - } - - @Override - public void onClick(double p_onClick_1_, double p_onClick_3_) { - super.onClick(p_onClick_1_, p_onClick_3_); - this.pressed = true; - } - - @Override - public void onRelease(double p_onRelease_1_, double p_onRelease_3_) { - super.onRelease(p_onRelease_1_, p_onRelease_3_); - this.pressed = false; - } - - public void setToolTip(ITextComponent text) { - toolTip.clear(); - toolTip.add(text); - } - - public void setIcon(AllIcons icon) { - this.icon = icon; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/Indicator.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/Indicator.java deleted file mode 100644 index 627d6b017..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/Indicator.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import javax.annotation.Nonnull; - -import com.google.common.collect.ImmutableList; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.AllGuiTextures; - -import net.minecraft.util.text.ITextComponent; - -public class Indicator extends AbstractSimiWidget { - - public enum State { - OFF, ON, - RED, YELLOW, GREEN; - } - - public State state; - - public Indicator(int x, int y, ITextComponent tooltip) { - super(x, y, AllGuiTextures.INDICATOR.width, AllGuiTextures.INDICATOR.height); - this.toolTip = ImmutableList.of(tooltip); - this.state = State.OFF; - } - - @Override - public void render(@Nonnull MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks ) { - AllGuiTextures toDraw; - switch(state) { - case ON: toDraw = AllGuiTextures.INDICATOR_WHITE; break; - case OFF: toDraw = AllGuiTextures.INDICATOR; break; - case RED: toDraw = AllGuiTextures.INDICATOR_RED; break; - case YELLOW: toDraw = AllGuiTextures.INDICATOR_YELLOW; break; - case GREEN: toDraw = AllGuiTextures.INDICATOR_GREEN; break; - default: toDraw = AllGuiTextures.INDICATOR; break; - } - toDraw.draw(matrixStack, this, x, y); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedAngle.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedAngle.java deleted file mode 100644 index d8dd660e8..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedAngle.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import com.simibubi.create.foundation.utility.AngleHelper; - -public class InterpolatedAngle extends InterpolatedValue { - - public float get(float partialTicks) { - return AngleHelper.angleLerp(partialTicks, lastValue, value); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingAngle.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingAngle.java deleted file mode 100644 index b9f4f1cc2..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingAngle.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import com.simibubi.create.foundation.utility.AngleHelper; - -public class InterpolatedChasingAngle extends InterpolatedChasingValue { - - public float get(float partialTicks) { - return AngleHelper.angleLerp(partialTicks, lastValue, value); - } - - @Override - protected float getCurrentDiff() { - return AngleHelper.getShortestAngleDiff(value, getTarget()); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingValue.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingValue.java deleted file mode 100644 index 92a3efe88..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedChasingValue.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -public class InterpolatedChasingValue extends InterpolatedValue { - - float speed = 0.5f; - float target = 0; - float eps = 1 / 4096f; - - public void tick() { - float diff = getCurrentDiff(); - if (Math.abs(diff) < eps) - return; - set(value + (diff) * speed); - } - - protected float getCurrentDiff() { - return getTarget() - value; - } - - public InterpolatedChasingValue withSpeed(float speed) { - this.speed = speed; - return this; - } - - public InterpolatedChasingValue target(float target) { - this.target = target; - return this; - } - - public InterpolatedChasingValue start(float value) { - lastValue = this.value = value; - target(value); - return this; - } - - public float getTarget() { - return target; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedValue.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedValue.java deleted file mode 100644 index 65f459580..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/InterpolatedValue.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import net.minecraft.util.math.MathHelper; - -public class InterpolatedValue { - - public float value = 0; - public float lastValue = 0; - - public InterpolatedValue set(float value) { - lastValue = this.value; - this.value = value; - return this; - } - - public InterpolatedValue init(float value) { - this.lastValue = this.value = value; - return this; - } - - public float get(float partialTicks) { - return MathHelper.lerp(partialTicks, lastValue, value); - } - - public boolean settled() { - return Math.abs(value - lastValue) < 1e-3; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/Label.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/Label.java deleted file mode 100644 index 3c7d904ca..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/Label.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class Label extends AbstractSimiWidget { - - public ITextComponent text; - public String suffix; - protected boolean hasShadow; - protected int color; - protected FontRenderer font; - - public Label(int x, int y, ITextComponent text) { - super(x, y, Minecraft.getInstance().fontRenderer.getWidth(text), 10); - font = Minecraft.getInstance().fontRenderer; - this.text = new StringTextComponent("Label"); - color = 0xFFFFFF; - hasShadow = false; - suffix = ""; - } - - public Label colored(int color) { - this.color = color; - return this; - } - - public Label withShadow() { - this.hasShadow = true; - return this; - } - - public Label withSuffix(String s) { - suffix = s; - return this; - } - - public void setTextAndTrim(ITextComponent newText, boolean trimFront, int maxWidthPx) { - FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; - - if (fontRenderer.getWidth(newText) <= maxWidthPx) { - text = newText; - return; - } - - String trim = "..."; - int trimWidth = fontRenderer.getStringWidth(trim); - - String raw = newText.getString(); - StringBuilder builder = new StringBuilder(raw); - int startIndex = trimFront ? 0 : raw.length() - 1; - int endIndex = !trimFront ? 0 : raw.length() - 1; - int step = (int) Math.signum(endIndex - startIndex); - - for (int i = startIndex; i != endIndex; i += step) { - String sub = builder.substring(trimFront ? i : startIndex, trimFront ? endIndex + 1 : i + 1); - if (fontRenderer.getWidth(new StringTextComponent(sub).setStyle(newText.getStyle())) + trimWidth <= maxWidthPx) { - text = new StringTextComponent(trimFront ? trim + sub : sub + trim).setStyle(newText.getStyle()); - return; - } - } - - } - - @Override - public void render(@Nonnull MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) { - if (!visible) - return; - if (text == null || text.getString().isEmpty()) - return; - - RenderSystem.color4f(1, 1, 1, 1); - IFormattableTextComponent copy = text.copy(); - if (suffix != null && !suffix.isEmpty()) - copy.append(suffix); - - if (hasShadow) - font.drawWithShadow(matrixStack, copy, x, y, color); - else - font.draw(matrixStack, copy, x, y, color); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/ScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/ScrollInput.java deleted file mode 100644 index 146874bbf..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/ScrollInput.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import java.util.function.Consumer; -import java.util.function.Function; - -import com.simibubi.create.AllKeys; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour.StepContext; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; - -public class ScrollInput extends AbstractSimiWidget { - - protected Consumer onScroll; - protected int state; - protected ITextComponent title = Lang.translate("gui.scrollInput.defaultTitle"); - protected final ITextComponent scrollToModify = Lang.translate("gui.scrollInput.scrollToModify"); - protected final ITextComponent shiftScrollsFaster = Lang.translate("gui.scrollInput.shiftScrollsFaster"); - protected Label displayLabel; - - protected int min, max; - protected int shiftStep; - Function step; - - public ScrollInput(int xIn, int yIn, int widthIn, int heightIn) { - super(xIn, yIn, widthIn, heightIn); - state = 0; - min = 0; - max = 1; - shiftStep = 5; - step = standardStep(); - } - - public Function standardStep() { - return c -> c.shift ? shiftStep : 1; - } - - public ScrollInput withRange(int min, int max) { - this.min = min; - this.max = max; - return this; - } - - public ScrollInput calling(Consumer onScroll) { - this.onScroll = onScroll; - return this; - } - - public ScrollInput removeCallback() { - this.onScroll = null; - return this; - } - - public ScrollInput titled(IFormattableTextComponent title) { - this.title = title; - updateTooltip(); - return this; - } - - public ScrollInput withStepFunction(Function step) { - this.step = step; - return this; - } - - public ScrollInput writingTo(Label label) { - this.displayLabel = label; - writeToLabel(); - return this; - } - - public int getState() { - return state; - } - - public ScrollInput setState(int state) { - this.state = state; - clampState(); - updateTooltip(); - if (displayLabel != null) - writeToLabel(); - return this; - } - - public ScrollInput withShiftStep(int step) { - shiftStep = step; - return this; - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double delta) { - if (!hovered) - return false; - - StepContext context = new StepContext(); - context.control = AllKeys.ctrlDown(); - context.shift = AllKeys.shiftDown(); - context.currentValue = state; - context.forward = delta > 0; - - int priorState = state; - boolean shifted = AllKeys.shiftDown(); - int step = (int) Math.signum(delta) * this.step.apply(context); - - state += step; - if (shifted) - state -= state % shiftStep; - - clampState(); - - if (priorState != state) - onChanged(); - - return priorState != state; - } - - protected void clampState() { - if (state >= max) - state = max - 1; - if (state < min) - state = min; - } - - public void onChanged() { - if (displayLabel != null) - writeToLabel(); - if (onScroll != null) - onScroll.accept(state); - updateTooltip(); - } - - protected void writeToLabel() { - displayLabel.text = new StringTextComponent(String.valueOf(state)); - } - - protected void updateTooltip() { - toolTip.clear(); - toolTip.add(title.copy().formatted(TextFormatting.BLUE)); - toolTip.add(scrollToModify.copy().formatted(TextFormatting.ITALIC, TextFormatting.DARK_GRAY)); - toolTip.add(shiftScrollsFaster.copy().formatted(TextFormatting.ITALIC, TextFormatting.DARK_GRAY)); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/gui/widgets/SelectionScrollInput.java b/src/main/java/com/simibubi/create/foundation/gui/widgets/SelectionScrollInput.java deleted file mode 100644 index c056984fe..000000000 --- a/src/main/java/com/simibubi/create/foundation/gui/widgets/SelectionScrollInput.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.foundation.gui.widgets; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; - -public class SelectionScrollInput extends ScrollInput { - - private final IFormattableTextComponent scrollToSelect = Lang.translate("gui.scrollInput.scrollToSelect"); - protected List options; - - public SelectionScrollInput(int xIn, int yIn, int widthIn, int heightIn) { - super(xIn, yIn, widthIn, heightIn); - options = new ArrayList<>(); - } - - public ScrollInput forOptions(List options) { - this.options = options; - this.max = options.size(); - updateTooltip(); - return this; - } - - @Override - protected void writeToLabel() { - displayLabel.text = options.get(state); - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double delta) { - return super.mouseScrolled(mouseX, mouseY, -delta); - } - - @Override - protected void updateTooltip() { - toolTip.clear(); - toolTip.add(title.copy().formatted(TextFormatting.BLUE)); - int min = Math.min(this.max - 16, state - 7); - int max = Math.max(this.min + 16, state + 8); - min = Math.max(min, this.min); - max = Math.min(max, this.max); - if (this.min + 1 == min) - min--; - if (min > this.min) - toolTip.add(new StringTextComponent("> ...").formatted(TextFormatting.GRAY)); - if (this.max - 1 == max) - max++; - for (int i = min; i < max; i++) { - if (i == state) - toolTip.add(StringTextComponent.EMPTY.copy().append("-> ").append(options.get(i)).formatted(TextFormatting.WHITE)); - else - toolTip.add(StringTextComponent.EMPTY.copy().append("> ").append(options.get(i)).formatted(TextFormatting.GRAY)); - } - if (max < this.max) - toolTip.add(new StringTextComponent("> ...").formatted(TextFormatting.GRAY)); - - toolTip.add(scrollToSelect.copy().formatted(TextFormatting.DARK_GRAY, TextFormatting.ITALIC)); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java b/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java deleted file mode 100644 index 379c84c76..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.simibubi.create.foundation.item; - -import java.util.Collection; -import java.util.EnumSet; -import java.util.stream.Collectors; - -import com.simibubi.create.Create; -import com.simibubi.create.content.AllSections; -import com.tterrag.registrate.util.entry.RegistryEntry; - -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.NonNullList; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public abstract class CreateItemGroupBase extends ItemGroup { - - public CreateItemGroupBase(String id) { - super(getGroupCountSafe(), Create.ID + "." + id); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void fill(NonNullList items) { - addItems(items, true); - addBlocks(items); - addItems(items, false); - } - - @OnlyIn(Dist.CLIENT) - public void addBlocks(NonNullList items) { - for (RegistryEntry entry : getBlocks()) { - Block def = entry.get(); - Item item = def.asItem(); - if (item != Items.AIR) - def.fillItemGroup(this, items); - } - } - - @OnlyIn(Dist.CLIENT) - public void addItems(NonNullList items, boolean specialItems) { - Minecraft mc = Minecraft.getInstance(); - ItemRenderer itemRenderer = mc.getItemRenderer(); - ClientWorld world = mc.world; - - for (RegistryEntry entry : getItems()) { - Item item = entry.get(); - if (item instanceof BlockItem) - continue; - ItemStack stack = new ItemStack(item); - IBakedModel model = itemRenderer.getItemModelWithOverrides(stack, world, null); - if (AllSections.of(stack) != AllSections.KINETICS) { - if (specialItems) - continue; - } else if (model.isGui3d() != specialItems) - continue; - item.fillItemGroup(this, items); - } - } - - protected Collection> getBlocks() { - return getSections().stream() - .flatMap(s -> Create.registrate() - .getAll(s, Block.class) - .stream()) - .collect(Collectors.toList()); - } - - protected Collection> getItems() { - return getSections().stream() - .flatMap(s -> Create.registrate() - .getAll(s, Item.class) - .stream()) - .collect(Collectors.toList()); - } - - protected EnumSet getSections() { - return EnumSet.allOf(AllSections.class); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/item/HiddenIngredientItem.java b/src/main/java/com/simibubi/create/foundation/item/HiddenIngredientItem.java deleted file mode 100644 index c565d81e9..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/HiddenIngredientItem.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.foundation.item; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; - -public class HiddenIngredientItem extends Item { - - public HiddenIngredientItem(Properties p_i48487_1_) { - super(p_i48487_1_); - } - - @Override - public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { - if (p_150895_1_ != ItemGroup.SEARCH) - return; - super.fillItemGroup(p_150895_1_, p_150895_2_); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/IItemHandlerModifiableIntermediate.java b/src/main/java/com/simibubi/create/foundation/item/IItemHandlerModifiableIntermediate.java deleted file mode 100644 index e45744b0d..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/IItemHandlerModifiableIntermediate.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.simibubi.create.foundation.item; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.items.IItemHandlerModifiable; - -interface IItemHandlerModifiableIntermediate extends IItemHandlerModifiable { - - @Override - public default ItemStack getStackInSlot(int slot) { - return getStackInSlotIntermediate(slot); - } - - public ItemStack getStackInSlotIntermediate(int slot); - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java b/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java deleted file mode 100644 index 6c8a9afd0..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/ItemDescription.java +++ /dev/null @@ -1,330 +0,0 @@ -package com.simibubi.create.foundation.item; - -import static com.simibubi.create.foundation.item.TooltipHelper.cutStringTextComponent; -import static com.simibubi.create.foundation.item.TooltipHelper.cutTextComponent; -import static net.minecraft.util.text.TextFormatting.AQUA; -import static net.minecraft.util.text.TextFormatting.BLUE; -import static net.minecraft.util.text.TextFormatting.DARK_GRAY; -import static net.minecraft.util.text.TextFormatting.DARK_GREEN; -import static net.minecraft.util.text.TextFormatting.DARK_PURPLE; -import static net.minecraft.util.text.TextFormatting.DARK_RED; -import static net.minecraft.util.text.TextFormatting.GOLD; -import static net.minecraft.util.text.TextFormatting.GRAY; -import static net.minecraft.util.text.TextFormatting.GREEN; -import static net.minecraft.util.text.TextFormatting.LIGHT_PURPLE; -import static net.minecraft.util.text.TextFormatting.RED; -import static net.minecraft.util.text.TextFormatting.STRIKETHROUGH; -import static net.minecraft.util.text.TextFormatting.WHITE; -import static net.minecraft.util.text.TextFormatting.YELLOW; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.base.IRotate; -import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.base.IRotate.StressImpact; -import com.simibubi.create.content.contraptions.components.fan.EncasedFanBlock; -import com.simibubi.create.content.contraptions.components.flywheel.engine.EngineBlock; -import com.simibubi.create.content.contraptions.components.flywheel.engine.FurnaceEngineBlock; -import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.config.CKinetics; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.Block; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; - -public class ItemDescription { - - public static final ItemDescription MISSING = new ItemDescription(null); - public static ITextComponent trim = - new StringTextComponent(" ").formatted(WHITE, STRIKETHROUGH); - - public enum Palette { - - Blue(BLUE, AQUA), - Green(DARK_GREEN, GREEN), - Yellow(GOLD, YELLOW), - Red(DARK_RED, RED), - Purple(DARK_PURPLE, LIGHT_PURPLE), - Gray(DARK_GRAY, GRAY), - - ; - - private Palette(TextFormatting primary, TextFormatting highlight) { - color = primary; - hColor = highlight; - } - - public TextFormatting color; - public TextFormatting hColor; - } - - private List lines; - private List linesOnShift; - private List linesOnCtrl; - private Palette palette; - - public ItemDescription(Palette palette) { - this.palette = palette; - lines = new ArrayList<>(); - linesOnShift = new ArrayList<>(); - linesOnCtrl = new ArrayList<>(); - } - - public ItemDescription withSummary(ITextComponent summary) { - addStrings(linesOnShift, cutTextComponent(summary, palette.color, palette.hColor)); - return this; - } - - public static List getKineticStats(Block block) { - List list = new ArrayList<>(); - - boolean isEngine = block instanceof EngineBlock; - CKinetics config = AllConfigs.SERVER.kinetics; - SpeedLevel minimumRequiredSpeedLevel = - isEngine ? SpeedLevel.NONE : ((IRotate) block).getMinimumRequiredSpeedLevel(); - boolean hasSpeedRequirement = minimumRequiredSpeedLevel != SpeedLevel.NONE; - ResourceLocation id = block.getRegistryName(); - Map> impacts = config.stressValues.getImpacts(); - Map> capacities = config.stressValues.getCapacities(); - boolean hasStressImpact = impacts.containsKey(id) && impacts.get(id) - .get() > 0 && StressImpact.isEnabled(); - boolean hasStressCapacity = capacities.containsKey(id) && StressImpact.isEnabled(); - boolean hasGlasses = - AllItems.GOGGLES.get() == Minecraft.getInstance().player.getItemStackFromSlot(EquipmentSlotType.HEAD) - .getItem(); - - ITextComponent rpmUnit = Lang.translate("generic.unit.rpm"); - if (hasSpeedRequirement) { - List speedLevels = - Lang.translatedOptions("tooltip.speedRequirement", "none", "medium", "high"); - int index = minimumRequiredSpeedLevel.ordinal(); - IFormattableTextComponent level = - new StringTextComponent(makeProgressBar(3, index)).formatted(minimumRequiredSpeedLevel.getTextColor()); - - if (hasGlasses) - level.append(String.valueOf(minimumRequiredSpeedLevel.getSpeedValue())) - .append(rpmUnit) - .append("+"); - else - level.append(speedLevels.get(index)); - - list.add(Lang.translate("tooltip.speedRequirement") - .formatted(GRAY)); - list.add(level); - } - - if (hasStressImpact && !(!isEngine && ((IRotate) block).hideStressImpact())) { - List stressLevels = Lang.translatedOptions("tooltip.stressImpact", "low", "medium", "high"); - double impact = impacts.get(id) - .get(); - StressImpact impactId = impact >= config.highStressImpact.get() ? StressImpact.HIGH - : (impact >= config.mediumStressImpact.get() ? StressImpact.MEDIUM : StressImpact.LOW); - int index = impactId.ordinal(); - IFormattableTextComponent level = - new StringTextComponent(makeProgressBar(3, index)).formatted(impactId.getAbsoluteColor()); - - if (hasGlasses) - level.append(impacts.get(id) - .get() + "x ") - .append(rpmUnit); - else - level.append(stressLevels.get(index)); - - list.add(Lang.translate("tooltip.stressImpact") - .formatted(GRAY)); - list.add(level); - } - - if (hasStressCapacity) { - List stressCapacityLevels = - Lang.translatedOptions("tooltip.capacityProvided", "low", "medium", "high"); - double capacity = capacities.get(id) - .get(); - StressImpact impactId = capacity >= config.highCapacity.get() ? StressImpact.LOW - : (capacity >= config.mediumCapacity.get() ? StressImpact.MEDIUM : StressImpact.HIGH); - int index = StressImpact.values().length - 2 - impactId.ordinal(); - IFormattableTextComponent level = - new StringTextComponent(makeProgressBar(3, index)).formatted(impactId.getAbsoluteColor()); - - if (hasGlasses) - level.append(capacity + "x ") - .append(rpmUnit); - else - level.append(stressCapacityLevels.get(index)); - -// if (!isEngine && ((IRotate) block).showCapacityWithAnnotation()) -// level += -// " " + DARK_GRAY + TextFormatting.ITALIC + Lang.translate("tooltip.capacityProvided.asGenerator"); - - list.add(Lang.translate("tooltip.capacityProvided") - .formatted(GRAY)); - list.add(level); - - IFormattableTextComponent genSpeed = generatorSpeed(block, rpmUnit); - if (!genSpeed.getString() - .isEmpty()) - list.add(new StringTextComponent(" ").append(genSpeed) - .formatted(DARK_GRAY)); - } - - // if (hasSpeedRequirement || hasStressImpact || hasStressCapacity) - // add(linesOnShift, ""); - return list; - } - - public static String makeProgressBar(int length, int filledLength) { - String bar = " "; - int emptySpaces = length - 1 - filledLength; - for (int i = 0; i <= filledLength; i++) - bar += "\u2588"; - for (int i = 0; i < emptySpaces; i++) - bar += "\u2592"; - return bar + " "; - } - - public ItemDescription withBehaviour(String condition, String behaviour) { - add(linesOnShift, new StringTextComponent(condition).formatted(GRAY)); - addStrings(linesOnShift, cutStringTextComponent(behaviour, palette.color, palette.hColor, 1)); - return this; - } - - public ItemDescription withControl(String condition, String action) { - add(linesOnCtrl, new StringTextComponent(condition).formatted(GRAY)); - addStrings(linesOnCtrl, cutStringTextComponent(action, palette.color, palette.hColor, 1)); - return this; - } - - public ItemDescription createTabs() { - boolean hasDescription = !linesOnShift.isEmpty(); - boolean hasControls = !linesOnCtrl.isEmpty(); - - if (hasDescription || hasControls) { - String[] holdDesc = TooltipHelper.getUnformattedDeepText(Lang.translate("tooltip.holdForDescription", "$")) - .split("\\$"); - String[] holdCtrl = TooltipHelper.getUnformattedDeepText(Lang.translate("tooltip.holdForControls", "$")) - .split("\\$"); - IFormattableTextComponent keyShift = Lang.translate("tooltip.keyShift"); - IFormattableTextComponent keyCtrl = Lang.translate("tooltip.keyCtrl"); - for (List list : Arrays.asList(lines, linesOnShift, linesOnCtrl)) { - boolean shift = list == linesOnShift; - boolean ctrl = list == linesOnCtrl; - - if (holdDesc.length != 2 || holdCtrl.length != 2) { - list.add(0, new StringTextComponent("Invalid lang formatting!")); - continue; - } - - if (hasControls) { - IFormattableTextComponent tabBuilder = new StringTextComponent(""); - tabBuilder.append(new StringTextComponent(holdCtrl[0]).formatted(DARK_GRAY)); - tabBuilder.append(keyCtrl.copy() - .formatted(ctrl ? WHITE : GRAY)); - tabBuilder.append(new StringTextComponent(holdCtrl[1]).formatted(DARK_GRAY)); - list.add(0, tabBuilder); - } - - if (hasDescription) { - IFormattableTextComponent tabBuilder = new StringTextComponent(""); - tabBuilder.append(new StringTextComponent(holdDesc[0]).formatted(DARK_GRAY)); - tabBuilder.append(keyShift.copy() - .formatted(shift ? WHITE : GRAY)); - tabBuilder.append(new StringTextComponent(holdDesc[1]).formatted(DARK_GRAY)); - list.add(0, tabBuilder); - } - - if (shift || ctrl) - list.add(hasDescription && hasControls ? 2 : 1, new StringTextComponent("")); - } - } - - if (!hasDescription) - linesOnShift = lines; - if (!hasControls) - linesOnCtrl = lines; - - return this; - } - - public static String hightlight(String s, Palette palette) { - return palette.hColor + s + palette.color; - } - - public static void addStrings(List infoList, List textLines) { - textLines.forEach(s -> add(infoList, s)); - } - - public static void add(List infoList, List textLines) { - infoList.addAll(textLines); - } - - public static void add(List infoList, ITextComponent line) { - infoList.add(line); - } - - public Palette getPalette() { - return palette; - } - - public List addInformation(List tooltip) { - if (Screen.hasShiftDown()) { - tooltip.addAll(linesOnShift); - return tooltip; - } - - if (Screen.hasControlDown()) { - tooltip.addAll(linesOnCtrl); - return tooltip; - } - - tooltip.addAll(lines); - return tooltip; - } - - public List getLines() { - return lines; - } - - public List getLinesOnCtrl() { - return linesOnCtrl; - } - - public List getLinesOnShift() { - return linesOnShift; - } - - private static IFormattableTextComponent generatorSpeed(Block block, ITextComponent unitRPM) { - String value = ""; - - if (block instanceof WaterWheelBlock) { - int baseSpeed = AllConfigs.SERVER.kinetics.waterWheelBaseSpeed.get(); - int speedmod = AllConfigs.SERVER.kinetics.waterWheelFlowSpeed.get(); - value = (speedmod + baseSpeed) + "-" + (baseSpeed + (speedmod * 3)); - } - - else if (block instanceof EncasedFanBlock) - value = AllConfigs.SERVER.kinetics.generatingFanSpeed.get() - .toString(); - - else if (block instanceof FurnaceEngineBlock) { - int baseSpeed = AllConfigs.SERVER.kinetics.furnaceEngineSpeed.get(); - value = baseSpeed + "-" + (baseSpeed * 2); - } - - return !value.equals("") ? Lang.translate("tooltip.generationSpeed", value, unitRPM) - : StringTextComponent.EMPTY.copy(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemHandlerWrapper.java b/src/main/java/com/simibubi/create/foundation/item/ItemHandlerWrapper.java deleted file mode 100644 index 2b2c6b4a0..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/ItemHandlerWrapper.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.foundation.item; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.items.IItemHandlerModifiable; - -public class ItemHandlerWrapper implements IItemHandlerModifiable { - - private IItemHandlerModifiable wrapped; - - public ItemHandlerWrapper(IItemHandlerModifiable wrapped) { - this.wrapped = wrapped; - } - - @Override - public int getSlots() { - return wrapped.getSlots(); - } - - @Override - public ItemStack getStackInSlot(int slot) { - return wrapped.getStackInSlot(slot); - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - return wrapped.insertItem(slot, stack, simulate); - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - return wrapped.extractItem(slot, amount, simulate); - } - - @Override - public int getSlotLimit(int slot) { - return wrapped.getSlotLimit(slot); - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - return wrapped.isItemValid(slot, stack); - } - - @Override - public void setStackInSlot(int slot, ItemStack stack) { - wrapped.setStackInSlot(slot, stack); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java b/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java deleted file mode 100644 index 155f4758c..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/ItemHelper.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.simibubi.create.foundation.item; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Function; -import java.util.function.Predicate; - -import javax.annotation.Nullable; - -import org.apache.commons.lang3.mutable.MutableInt; - -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.inventory.InventoryHelper; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.NonNullList; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemHandlerHelper; - -public class ItemHelper { - - public static void dropContents(World world, BlockPos pos, IItemHandler inv) { - for (int slot = 0; slot < inv.getSlots(); slot++) - InventoryHelper.spawnItemStack(world, pos.getX(), pos.getY(), pos.getZ(), inv.getStackInSlot(slot)); - } - - public static List multipliedOutput(ItemStack in, ItemStack out) { - List stacks = new ArrayList<>(); - ItemStack result = out.copy(); - result.setCount(in.getCount() * out.getCount()); - - while (result.getCount() > result.getMaxStackSize()) { - stacks.add(result.split(result.getMaxStackSize())); - } - - stacks.add(result); - return stacks; - } - - public static void addToList(ItemStack stack, List stacks) { - for (ItemStack s : stacks) { - if (!ItemHandlerHelper.canItemStacksStack(stack, s)) - continue; - int transferred = Math.min(s.getMaxStackSize() - s.getCount(), stack.getCount()); - s.grow(transferred); - stack.shrink(transferred); - } - if (stack.getCount() > 0) - stacks.add(stack); - } - - public static boolean isSameInventory(IItemHandler h1, IItemHandler h2) { - if (h1 == null || h2 == null) - return false; - if (h1.getSlots() != h2.getSlots()) - return false; - for (int slot = 0; slot < h1.getSlots(); slot++) { - if (h1.getStackInSlot(slot) != h2.getStackInSlot(slot)) - return false; - } - return true; - } - - public static int calcRedstoneFromInventory(@Nullable IItemHandler inv) { - if (inv == null) - return 0; - int i = 0; - float f = 0.0F; - int totalSlots = inv.getSlots(); - - for (int j = 0; j < inv.getSlots(); ++j) { - int slotLimit = inv.getSlotLimit(j); - if (slotLimit == 0) { - totalSlots--; - continue; - } - ItemStack itemstack = inv.getStackInSlot(j); - if (!itemstack.isEmpty()) { - f += (float) itemstack.getCount() / (float) Math.min(slotLimit, itemstack.getMaxStackSize()); - ++i; - } - } - - if (totalSlots == 0) - return 0; - - f = f / totalSlots; - return MathHelper.floor(f * 14.0F) + (i > 0 ? 1 : 0); - } - - public static List> condenseIngredients(NonNullList recipeIngredients) { - List> actualIngredients = new ArrayList<>(); - Ingredients: for (Ingredient igd : recipeIngredients) { - for (Pair pair : actualIngredients) { - ItemStack[] stacks1 = pair.getFirst() - .getMatchingStacks(); - ItemStack[] stacks2 = igd.getMatchingStacks(); - if (stacks1.length != stacks2.length) - continue; - for (int i = 0; i <= stacks1.length; i++) { - if (i == stacks1.length) { - pair.getSecond() - .increment(); - continue Ingredients; - } - if (!ItemStack.areItemStacksEqual(stacks1[i], stacks2[i])) - break; - } - } - actualIngredients.add(Pair.of(igd, new MutableInt(1))); - } - return actualIngredients; - } - - public static boolean matchIngredients(Ingredient i1, Ingredient i2) { - ItemStack[] stacks1 = i1.getMatchingStacks(); - ItemStack[] stacks2 = i2.getMatchingStacks(); - if (stacks1.length == stacks2.length) { - for (int i = 0; i < stacks1.length; i++) - if (!ItemStack.areItemsEqual(stacks1[i], stacks2[i])) - return false; - return true; - } - return false; - } - - public static enum ExtractionCountMode { - EXACTLY, UPTO - } - - public static ItemStack extract(IItemHandler inv, Predicate test, boolean simulate) { - return extract(inv, test, ExtractionCountMode.UPTO, AllConfigs.SERVER.logistics.defaultExtractionLimit.get(), - simulate); - } - - public static ItemStack extract(IItemHandler inv, Predicate test, int exactAmount, boolean simulate) { - return extract(inv, test, ExtractionCountMode.EXACTLY, exactAmount, simulate); - } - - public static ItemStack extract(IItemHandler inv, Predicate test, ExtractionCountMode mode, int amount, - boolean simulate) { - ItemStack extracting = ItemStack.EMPTY; - boolean amountRequired = mode == ExtractionCountMode.EXACTLY; - boolean checkHasEnoughItems = amountRequired; - boolean hasEnoughItems = !checkHasEnoughItems; - boolean potentialOtherMatch = false; - int maxExtractionCount = amount; - - Extraction: do { - extracting = ItemStack.EMPTY; - - for (int slot = 0; slot < inv.getSlots(); slot++) { - ItemStack stack = inv.extractItem(slot, maxExtractionCount - extracting.getCount(), true); - - if (stack.isEmpty()) - continue; - if (!test.test(stack)) - continue; - if (!extracting.isEmpty() && !canItemStackAmountsStack(stack, extracting)) { - potentialOtherMatch = true; - continue; - } - - if (extracting.isEmpty()) - extracting = stack.copy(); - else - extracting.grow(stack.getCount()); - - if (!simulate && hasEnoughItems) - inv.extractItem(slot, stack.getCount(), false); - - if (extracting.getCount() >= maxExtractionCount) { - if (checkHasEnoughItems) { - hasEnoughItems = true; - checkHasEnoughItems = false; - continue Extraction; - } else { - break Extraction; - } - } - } - - if (!extracting.isEmpty() && !hasEnoughItems && potentialOtherMatch) { - ItemStack blackListed = extracting.copy(); - test = test.and(i -> !ItemHandlerHelper.canItemStacksStack(i, blackListed)); - continue; - } - - if (checkHasEnoughItems) - checkHasEnoughItems = false; - else - break Extraction; - - } while (true); - - if (amountRequired && extracting.getCount() < amount) - return ItemStack.EMPTY; - - return extracting; - } - - public static ItemStack extract(IItemHandler inv, Predicate test, - Function amountFunction, boolean simulate) { - ItemStack extracting = ItemStack.EMPTY; - int maxExtractionCount = AllConfigs.SERVER.logistics.defaultExtractionLimit.get(); - - for (int slot = 0; slot < inv.getSlots(); slot++) { - if (extracting.isEmpty()) { - ItemStack stackInSlot = inv.getStackInSlot(slot); - if (stackInSlot.isEmpty()) - continue; - int maxExtractionCountForItem = amountFunction.apply(stackInSlot); - if (maxExtractionCountForItem == 0) - continue; - maxExtractionCount = Math.min(maxExtractionCount, maxExtractionCountForItem); - } - - ItemStack stack = inv.extractItem(slot, maxExtractionCount - extracting.getCount(), true); - - if (!test.test(stack)) - continue; - if (!extracting.isEmpty() && !canItemStackAmountsStack(stack, extracting)) - continue; - - if (extracting.isEmpty()) - extracting = stack.copy(); - else - extracting.grow(stack.getCount()); - - if (!simulate) - inv.extractItem(slot, stack.getCount(), false); - if (extracting.getCount() >= maxExtractionCount) - break; - } - - return extracting; - } - - public static boolean canItemStackAmountsStack(ItemStack a, ItemStack b) { - return ItemHandlerHelper.canItemStacksStack(a, b) && a.getCount() + b.getCount() <= a.getMaxStackSize(); - } - - public static ItemStack findFirstMatch(IItemHandler inv, Predicate test) { - int slot = findFirstMatchingSlotIndex(inv, test); - if (slot == -1) - return ItemStack.EMPTY; - else - return inv.getStackInSlot(slot); - } - - public static int findFirstMatchingSlotIndex(IItemHandler inv, Predicate test) { - for (int slot = 0; slot < inv.getSlots(); slot++) { - ItemStack toTest = inv.getStackInSlot(slot); - if (test.test(toTest)) - return slot; - } - return -1; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java b/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java deleted file mode 100644 index 7be383918..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/SmartInventory.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.simibubi.create.foundation.item; - -import java.util.function.Consumer; - -import javax.annotation.Nonnull; - -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.items.ItemStackHandler; -import net.minecraftforge.items.wrapper.RecipeWrapper; - -public class SmartInventory extends RecipeWrapper - implements IItemHandlerModifiableIntermediate, INBTSerializable { - - protected boolean extractionAllowed; - protected boolean insertionAllowed; - protected boolean stackNonStackables; - protected SyncedStackHandler wrapped; - protected int stackSize; - - public SmartInventory(int slots, SyncedTileEntity te) { - this(slots, te, 64, false); - } - - public SmartInventory(int slots, SyncedTileEntity te, int stackSize, boolean stackNonStackables) { - super(new SyncedStackHandler(slots, te, stackNonStackables, stackSize)); - this.stackNonStackables = stackNonStackables; - insertionAllowed = true; - extractionAllowed = true; - this.stackSize = stackSize; - wrapped = (SyncedStackHandler) inv; - } - - public SmartInventory withMaxStackSize(int maxStackSize) { - stackSize = maxStackSize; - wrapped.stackSize = maxStackSize; - return this; - } - - public SmartInventory whenContentsChanged(Consumer updateCallback) { - ((SyncedStackHandler) inv).whenContentsChange(updateCallback); - return this; - } - - public SmartInventory allowInsertion() { - insertionAllowed = true; - return this; - } - - public SmartInventory allowExtraction() { - extractionAllowed = true; - return this; - } - - public SmartInventory forbidInsertion() { - insertionAllowed = false; - return this; - } - - public SmartInventory forbidExtraction() { - extractionAllowed = false; - return this; - } - - @Override - public int getSlots() { - return inv.getSlots(); - } - - @Override - public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { - if (!insertionAllowed) - return stack; - return inv.insertItem(slot, stack, simulate); - } - - @Override - public ItemStack extractItem(int slot, int amount, boolean simulate) { - if (!extractionAllowed) - return ItemStack.EMPTY; - if (stackNonStackables) { - ItemStack extractItem = inv.extractItem(slot, amount, true); - if (!extractItem.isEmpty() && extractItem.getMaxStackSize() < extractItem.getCount()) - amount = extractItem.getMaxStackSize(); - } - return inv.extractItem(slot, amount, simulate); - } - - @Override - public int getSlotLimit(int slot) { - return Math.min(inv.getSlotLimit(slot), stackSize); - } - - @Override - public boolean isItemValid(int slot, ItemStack stack) { - return inv.isItemValid(slot, stack); - } - - @Override - public void setStackInSlot(int slot, ItemStack stack) { - inv.setStackInSlot(slot, stack); - } - - @Override - public ItemStack getStackInSlot(int slot) { - return super.getStackInSlot(slot); - } - - public int getStackLimit(int slot, @Nonnull ItemStack stack) { - return Math.min(getSlotLimit(slot), stack.getMaxStackSize()); - } - - @Override - public CompoundNBT serializeNBT() { - return getInv().serializeNBT(); - } - - @Override - public void deserializeNBT(CompoundNBT nbt) { - getInv().deserializeNBT(nbt); - } - - private SyncedStackHandler getInv() { - return (SyncedStackHandler) inv; - } - - private static class SyncedStackHandler extends ItemStackHandler { - - private SyncedTileEntity te; - private boolean stackNonStackables; - private int stackSize; - private Consumer updateCallback; - - public SyncedStackHandler(int slots, SyncedTileEntity te, boolean stackNonStackables, int stackSize) { - super(slots); - this.te = te; - this.stackNonStackables = stackNonStackables; - this.stackSize = stackSize; - } - - @Override - protected void onContentsChanged(int slot) { - super.onContentsChanged(slot); - if (updateCallback != null) - updateCallback.accept(slot); - te.notifyUpdate(); - } - - @Override - public int getSlotLimit(int slot) { - return Math.min(stackNonStackables ? 64 : super.getSlotLimit(slot), stackSize); - } - - public void whenContentsChange(Consumer updateCallback) { - this.updateCallback = updateCallback; - } - - } - - @Override - public ItemStack getStackInSlotIntermediate(int slot) { - return getStackInSlot(slot); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/TagDependentIngredientItem.java b/src/main/java/com/simibubi/create/foundation/item/TagDependentIngredientItem.java deleted file mode 100644 index 55e6f5d8f..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/TagDependentIngredientItem.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.simibubi.create.foundation.item; - -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.tags.ITag; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; - -public class TagDependentIngredientItem extends Item { - - private ResourceLocation tag; - - public TagDependentIngredientItem(Properties p_i48487_1_, ResourceLocation tag) { - super(p_i48487_1_); - this.tag = tag; - } - - @Override - public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { - if (!shouldHide()) - super.fillItemGroup(p_150895_1_, p_150895_2_); - } - - public boolean shouldHide() { - ITag tag = ItemTags.getCollection() - .get(this.tag); - return tag == null || tag.values() - .isEmpty(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java b/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java deleted file mode 100644 index 452af3c6c..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/TooltipHelper.java +++ /dev/null @@ -1,348 +0,0 @@ -package com.simibubi.create.foundation.item; - -import static net.minecraft.util.text.TextFormatting.GOLD; -import static net.minecraft.util.text.TextFormatting.GRAY; - -import java.text.BreakIterator; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.function.Supplier; - -import com.google.common.base.Strings; -import com.mojang.bridge.game.Language; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.AllSections; -import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation; -import com.simibubi.create.foundation.item.ItemDescription.Palette; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.FontHelper; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.Style; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TextProcessing; -import net.minecraftforge.client.MinecraftForgeClient; - -public class TooltipHelper { - - public static final int maxWidthPerLine = 200; - public static final Map cachedTooltips = new HashMap<>(); - public static Language cachedLanguage; - private static boolean gogglesMode; - private static final Map> tooltipReferrals = new HashMap<>(); - - public static IFormattableTextComponent holdShift(Palette color, boolean highlighted) { - return Lang.translate("tooltip.holdForDescription", Lang.translate("tooltip.keyShift") - .formatted(TextFormatting.GRAY)) - .formatted(TextFormatting.DARK_GRAY); - } - - public static void addHint(List tooltip, String hintKey, Object... messageParams) { - ITextComponent spacing = IHaveGoggleInformation.componentSpacing; - tooltip.add(spacing.copy() - .append(Lang.translate(hintKey + ".title")) - .formatted(GOLD)); - ITextComponent hint = Lang.translate(hintKey); - List cutComponent = TooltipHelper.cutTextComponent(hint, GRAY, TextFormatting.WHITE); - for (ITextComponent component : cutComponent) - tooltip.add(spacing.copy() - .append(component)); - } - - public static void referTo(IItemProvider item, Supplier itemWithTooltip) { - tooltipReferrals.put(item.asItem(), () -> itemWithTooltip.get() - .asItem() - .getTranslationKey()); - } - - public static void referTo(IItemProvider item, String string) { - tooltipReferrals.put(item.asItem(), () -> string); - } - - @Deprecated - public static List cutString(ITextComponent s, TextFormatting defaultColor, TextFormatting highlightColor) { - return cutString(s.getUnformattedComponentText(), defaultColor, highlightColor, 0); - } - - @Deprecated - public static List cutString(String s, TextFormatting defaultColor, TextFormatting highlightColor, - int indent) { - // Apply markup - String markedUp = s.replaceAll("_([^_]+)_", highlightColor + "$1" + defaultColor); - - // Split words - List words = new LinkedList<>(); - BreakIterator iterator = BreakIterator.getLineInstance(MinecraftForgeClient.getLocale()); - iterator.setText(markedUp); - int start = iterator.first(); - for (int end = iterator.next(); end != BreakIterator.DONE; start = end, end = iterator.next()) { - String word = markedUp.substring(start, end); - words.add(word); - } - - FontRenderer font = Minecraft.getInstance().fontRenderer; - List lines = FontHelper.cutString(font, markedUp, maxWidthPerLine); - - // Format - String lineStart = Strings.repeat(" ", indent); - List formattedLines = new ArrayList<>(lines.size()); - String format = defaultColor.toString(); - for (String line : lines) { - String formattedLine = format + lineStart + line; - formattedLines.add(formattedLine); -// format = TextFormatting.getFormatString(formattedLine); - } - return formattedLines; - } - - public static List cutStringTextComponent(String c, TextFormatting defaultColor, - TextFormatting highlightColor) { - return cutTextComponent(new StringTextComponent(c), defaultColor, highlightColor, 0); - } - - public static List cutTextComponent(ITextComponent c, TextFormatting defaultColor, - TextFormatting highlightColor) { - return cutTextComponent(c, defaultColor, highlightColor, 0); - } - - public static List cutStringTextComponent(String c, TextFormatting defaultColor, - TextFormatting highlightColor, int indent) { - return cutTextComponent(new StringTextComponent(c), defaultColor, highlightColor, indent); - } - - public static List cutTextComponent(ITextComponent c, TextFormatting defaultColor, - TextFormatting highlightColor, int indent) { - String s = getUnformattedDeepText(c); - - // Apply markup - String markedUp = s;// .replaceAll("_([^_]+)_", highlightColor + "$1" + defaultColor); - - // Split words - List words = new LinkedList<>(); - BreakIterator iterator = BreakIterator.getLineInstance(MinecraftForgeClient.getLocale()); - iterator.setText(markedUp); - int start = iterator.first(); - for (int end = iterator.next(); end != BreakIterator.DONE; start = end, end = iterator.next()) { - String word = markedUp.substring(start, end); - words.add(word); - } - - // Apply hard wrap - FontRenderer font = Minecraft.getInstance().fontRenderer; - List lines = new LinkedList<>(); - StringBuilder currentLine = new StringBuilder(); - int width = 0; - for (String word : words) { - int newWidth = font.getStringWidth(word.replaceAll("_", "")); - if (width + newWidth > maxWidthPerLine) { - if (width > 0) { - String line = currentLine.toString(); - lines.add(line); - currentLine = new StringBuilder(); - width = 0; - } else { - lines.add(word); - continue; - } - } - currentLine.append(word); - width += newWidth; - } - if (width > 0) { - lines.add(currentLine.toString()); - } - - // Format - IFormattableTextComponent lineStart = new StringTextComponent(Strings.repeat(" ", indent)); - lineStart.formatted(defaultColor); - List formattedLines = new ArrayList<>(lines.size()); - Couple f = Couple.create(highlightColor, defaultColor); - - boolean currentlyHighlighted = false; - for (String string : lines) { - IFormattableTextComponent currentComponent = lineStart.copy(); - String[] split = string.split("_"); - for (String part : split) { - currentComponent.append(new StringTextComponent(part).formatted(f.get(currentlyHighlighted))); - currentlyHighlighted = !currentlyHighlighted; - } - - formattedLines.add(currentComponent); - currentlyHighlighted = !currentlyHighlighted; - } - - return formattedLines; - } - -// public static List cutTextComponentOld(ITextComponent c, TextFormatting defaultColor, -// TextFormatting highlightColor, int indent) { -// IFormattableTextComponent lineStart = StringTextComponent.EMPTY.copy(); -// for (int i = 0; i < indent; i++) -// lineStart.append(" "); -// lineStart.formatted(defaultColor); -// -// List lines = new ArrayList<>(); -// String rawText = getUnformattedDeepText(c); -// String[] words = rawText.split(" "); -// String word; -// IFormattableTextComponent currentLine = lineStart.copy(); -// -// boolean firstWord = true; -// boolean lastWord; -// -// // Apply hard wrap -// for (int i = 0; i < words.length; i++) { -// word = words[i]; -// lastWord = i == words.length - 1; -// -// if (!lastWord && !firstWord && getComponentLength(currentLine) + word.length() > maxCharsPerLine) { -// lines.add(currentLine); -// currentLine = lineStart.copy(); -// firstWord = true; -// } -// -// currentLine.append(new StringTextComponent((firstWord ? "" : " ") + word.replace("_", "")) -// .formatted(word.matches("_([^_]+)_") ? highlightColor : defaultColor)); -// firstWord = false; -// } -// -// if (!firstWord) { -// lines.add(currentLine); -// } -// -// return lines; -// } - - private static void checkLocale() { - Language currentLanguage = Minecraft.getInstance() - .getLanguageManager() - .getCurrentLanguage(); - if (cachedLanguage != currentLanguage) { - cachedTooltips.clear(); - cachedLanguage = currentLanguage; - } - } - - public static boolean hasTooltip(ItemStack stack, PlayerEntity player) { - checkLocale(); - - boolean hasGlasses = AllItems.GOGGLES.isIn(player.getItemStackFromSlot(EquipmentSlotType.HEAD)); - - if (hasGlasses != gogglesMode) { - gogglesMode = hasGlasses; - cachedTooltips.clear(); - } - - String key = getTooltipTranslationKey(stack); - if (cachedTooltips.containsKey(key)) - return cachedTooltips.get(key) != ItemDescription.MISSING; - return findTooltip(stack); - } - - public static ItemDescription getTooltip(ItemStack stack) { - checkLocale(); - String key = getTooltipTranslationKey(stack); - if (cachedTooltips.containsKey(key)) { - ItemDescription itemDescription = cachedTooltips.get(key); - if (itemDescription != ItemDescription.MISSING) - return itemDescription; - } - return null; - } - - private static boolean findTooltip(ItemStack stack) { - String key = getTooltipTranslationKey(stack); - if (I18n.hasKey(key)) { - cachedTooltips.put(key, buildToolTip(key, stack)); - return true; - } - cachedTooltips.put(key, ItemDescription.MISSING); - return false; - } - - private static ItemDescription buildToolTip(String translationKey, ItemStack stack) { - AllSections module = AllSections.of(stack); - if (I18n.format(translationKey) - .equals("WIP")) - return new WipScription(module.getTooltipPalette()); - - ItemDescription tooltip = new ItemDescription(module.getTooltipPalette()); - String summaryKey = translationKey + ".summary"; - - // Summary - if (I18n.hasKey(summaryKey)) - tooltip = tooltip.withSummary(new StringTextComponent(I18n.format(summaryKey))); - - // Requirements -// if (stack.getItem() instanceof BlockItem) { -// BlockItem item = (BlockItem) stack.getItem(); -// if (item.getBlock() instanceof IRotate || item.getBlock() instanceof EngineBlock) { -// tooltip = tooltip.withKineticStats(item.getBlock()); -// } -// } - - // Behaviours - for (int i = 1; i < 100; i++) { - String conditionKey = translationKey + ".condition" + i; - String behaviourKey = translationKey + ".behaviour" + i; - if (!I18n.hasKey(conditionKey)) - break; - if (i == 1) - tooltip.getLinesOnShift() - .add(new StringTextComponent("")); - tooltip.withBehaviour(I18n.format(conditionKey), I18n.format(behaviourKey)); - } - - // Controls - for (int i = 1; i < 100; i++) { - String controlKey = translationKey + ".control" + i; - String actionKey = translationKey + ".action" + i; - if (!I18n.hasKey(controlKey)) - break; - tooltip.withControl(I18n.format(controlKey), I18n.format(actionKey)); - } - - return tooltip.createTabs(); - } - - public static String getTooltipTranslationKey(ItemStack stack) { - Item item = stack.getItem(); - if (tooltipReferrals.containsKey(item)) - return tooltipReferrals.get(item) - .get() + ".tooltip"; - return item.getTranslationKey(stack) + ".tooltip"; - } - - private static int getComponentLength(ITextComponent component) { - AtomicInteger l = new AtomicInteger(); - TextProcessing.visitFormatted(component, Style.EMPTY, (s, style, charConsumer) -> { - l.getAndIncrement(); - return true; - }); - return l.get(); - } - - public static String getUnformattedDeepText(ITextComponent component) { - StringBuilder b = new StringBuilder(); - b.append(component.getString()); - component.getSiblings() - .forEach(c -> b.append(getUnformattedDeepText(c))); - return b.toString(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/WipScription.java b/src/main/java/com/simibubi/create/foundation/item/WipScription.java deleted file mode 100644 index d16d0b914..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/WipScription.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.simibubi.create.foundation.item; - -import java.util.List; -import java.util.Random; - -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.resources.I18n; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; - -public class WipScription extends ItemDescription { - - public WipScription(Palette palette) { - super(palette); - add(getLines(), Lang.translate("tooltip.workInProgress") - .formatted(TextFormatting.RED)); - - int descriptions = 0; - while (I18n.hasKey("create.tooltip.randomWipDescription" + descriptions++)) - ; - - if (--descriptions > 0) { - int index = new Random().nextInt(descriptions); - ITextComponent translate = Lang.translate("tooltip.randomWipDescription" + index); - List lines = getLines(); - lines.addAll(TooltipHelper.cutTextComponent(translate, TextFormatting.DARK_RED, TextFormatting.DARK_RED)); - } - } - - @Override - public List addInformation(List tooltip) { - tooltip.set(0, decorateName(tooltip.get(0))); - tooltip.addAll(getLines()); - return tooltip; - } - - public static ITextComponent decorateName(ITextComponent name) { - return StringTextComponent.EMPTY.copy() - .append(name.copy() - .formatted(TextFormatting.GRAY, TextFormatting.STRIKETHROUGH)) - .append(" ") - .append(Lang.translate("tooltip.wip") - .formatted(TextFormatting.GOLD)); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java deleted file mode 100644 index 8f7ed04f6..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomItemModels.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.simibubi.create.foundation.item.render; - -import java.util.ArrayList; -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; - -import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import com.tterrag.registrate.util.nullness.NonNullFunction; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.item.Item; - -public class CustomItemModels { - - private List, NonNullFunction>> registered; - private Map> customModels; - - public CustomItemModels() { - registered = new ArrayList<>(); - customModels = new IdentityHashMap<>(); - } - - public void register(Supplier entry, - NonNullFunction behaviour) { - registered.add(Pair.of(entry, behaviour)); - } - - public void foreach(NonNullBiConsumer> consumer) { - loadEntriesIfMissing(); - customModels.forEach(consumer); - } - - private void loadEntriesIfMissing() { - if (customModels.isEmpty()) - loadEntries(); - } - - private void loadEntries() { - customModels.clear(); - registered.forEach(p -> customModels.put(p.getKey() - .get(), p.getValue())); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModel.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModel.java deleted file mode 100644 index 6ef18e8cd..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModel.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.simibubi.create.foundation.item.render; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.Create; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.client.renderer.model.ModelRotation; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.ModelBakeEvent; -import net.minecraftforge.client.model.BakedModelWrapper; - -public abstract class CustomRenderedItemModel extends BakedModelWrapper { - - protected String basePath; - protected Map partials = new HashMap<>(); - protected ItemStackTileEntityRenderer renderer; - - public CustomRenderedItemModel(IBakedModel template, String basePath) { - super(template); - this.basePath = basePath; - this.renderer = createRenderer(); - } - - @Override - public boolean isBuiltInRenderer() { - return true; - } - - @Override - public IBakedModel handlePerspective(ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat) { - // Super call returns originalModel, but we want to return this, else ISTER won't be used. - super.handlePerspective(cameraTransformType, mat); - return this; - } - - public final IBakedModel getOriginalModel() { - return originalModel; - } - - public ItemStackTileEntityRenderer getRenderer() { - return renderer; - } - - public abstract ItemStackTileEntityRenderer createRenderer(); - - public final List getModelLocations() { - return partials.keySet().stream().map(this::getPartialModelLocation).collect(Collectors.toList()); - } - - protected void addPartials(String... partials) { - this.partials.clear(); - for (String name : partials) - this.partials.put(name, null); - } - - public CustomRenderedItemModel loadPartials(ModelBakeEvent event) { - for (String name : partials.keySet()) - partials.put(name, loadModel(event, name)); - return this; - } - - @SuppressWarnings("deprecation") - private IBakedModel loadModel(ModelBakeEvent event, String name) { - return event.getModelLoader().func_217845_a(getPartialModelLocation(name), ModelRotation.X0_Y0); - } - - private ResourceLocation getPartialModelLocation(String name) { - return new ResourceLocation(Create.ID, "item/" + basePath + "/" + name); - } - - public IBakedModel getPartial(String name) { - return partials.get(name); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java deleted file mode 100644 index f6d2f6b8a..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItemModelRenderer.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.foundation.item.render; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; -import net.minecraft.item.ItemStack; - -public abstract class CustomRenderedItemModelRenderer extends ItemStackTileEntityRenderer { - - @Override - @SuppressWarnings("unchecked") - public void render(ItemStack stack, ItemCameraTransforms.TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - M mainModel = ((M) Minecraft.getInstance() - .getItemRenderer() - .getItemModelWithOverrides(stack, null, null)); - PartialItemModelRenderer renderer = PartialItemModelRenderer.of(stack, transformType, ms, buffer, overlay); - - ms.push(); - ms.translate(0.5F, 0.5F, 0.5F); - render(stack, mainModel, renderer, transformType, ms, buffer, light, overlay); - ms.pop(); - } - - protected abstract void render(ItemStack stack, M model, PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType, - MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay); - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java b/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java deleted file mode 100644 index 7d2726389..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/render/CustomRenderedItems.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.foundation.item.render; - -import java.util.ArrayList; -import java.util.IdentityHashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; - -import com.tterrag.registrate.util.nullness.NonNullBiConsumer; -import com.tterrag.registrate.util.nullness.NonNullFunction; - -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.item.Item; - -public class CustomRenderedItems { - - private List, NonNullFunction>> registered; - private Map> customModels; - - public CustomRenderedItems() { - registered = new ArrayList<>(); - customModels = new IdentityHashMap<>(); - } - - public void register(Supplier entry, - NonNullFunction behaviour) { - registered.add(Pair.of(entry, behaviour)); - } - - public void foreach( - NonNullBiConsumer> consumer) { - loadEntriesIfMissing(); - customModels.forEach(consumer); - } - - private void loadEntriesIfMissing() { - if (customModels.isEmpty()) - loadEntries(); - } - - private void loadEntries() { - customModels.clear(); - registered.forEach(p -> customModels.put(p.getKey() - .get(), p.getValue())); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/item/render/PartialItemModelRenderer.java b/src/main/java/com/simibubi/create/foundation/item/render/PartialItemModelRenderer.java deleted file mode 100644 index 898727b8d..000000000 --- a/src/main/java/com/simibubi/create/foundation/item/render/PartialItemModelRenderer.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.simibubi.create.foundation.item.render; - -import java.util.Random; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.foundation.renderState.RenderTypes; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraftforge.client.model.data.EmptyModelData; -import net.minecraftforge.client.model.data.IModelData; - -public class PartialItemModelRenderer { - - static PartialItemModelRenderer instance; - - ItemStack stack; - int overlay; - MatrixStack ms; - ItemCameraTransforms.TransformType transformType; - IRenderTypeBuffer buffer; - - static PartialItemModelRenderer get() { - if (instance == null) - instance = new PartialItemModelRenderer(); - return instance; - } - - public static PartialItemModelRenderer of(ItemStack stack, ItemCameraTransforms.TransformType transformType, - MatrixStack ms, IRenderTypeBuffer buffer, int overlay) { - PartialItemModelRenderer instance = get(); - instance.stack = stack; - instance.buffer = buffer; - instance.ms = ms; - instance.transformType = transformType; - instance.overlay = overlay; - return instance; - } - - public void render(IBakedModel model, int light) { - render(model, RenderTypes.getItemPartialTranslucent(), light); - } - - public void renderSolid(IBakedModel model, int light) { - render(model, RenderTypes.getItemPartialSolid(), light); - } - - public void renderSolidGlowing(IBakedModel model, int light) { - render(model, RenderTypes.getGlowingSolid(), light); - } - - public void renderGlowing(IBakedModel model, int light) { - render(model, RenderTypes.getGlowingTranslucent(), light); - } - - public void render(IBakedModel model, RenderType type, int light) { - if (stack.isEmpty()) - return; - - ms.push(); - ms.translate(-0.5D, -0.5D, -0.5D); - - if (!model.isBuiltInRenderer()) - renderBakedItemModel(model, light, ms, - ItemRenderer.getArmorVertexConsumer(buffer, type, true, stack.hasEffect())); - else - stack.getItem() - .getItemStackTileEntityRenderer() - .render(stack, transformType, ms, buffer, light, overlay); - - ms.pop(); - } - - private void renderBakedItemModel(IBakedModel model, int light, MatrixStack ms, IVertexBuilder p_229114_6_) { - ItemRenderer ir = Minecraft.getInstance() - .getItemRenderer(); - Random random = new Random(); - IModelData data = EmptyModelData.INSTANCE; - - for (Direction direction : Iterate.directions) { - random.setSeed(42L); - ir.renderBakedItemQuads(ms, p_229114_6_, model.getQuads(null, direction, random, data), stack, light, - overlay); - } - - random.setSeed(42L); - ir.renderBakedItemQuads(ms, p_229114_6_, model.getQuads(null, null, random, data), stack, light, overlay); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/BreakProgressMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/BreakProgressMixin.java deleted file mode 100644 index 10165a4ea..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/BreakProgressMixin.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.simibubi.create.foundation.BreakProgressHook; - -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.math.BlockPos; - -@Mixin(ClientWorld.class) -public class BreakProgressMixin { - @Shadow - @Final - private WorldRenderer worldRenderer; - private final ClientWorld self = (ClientWorld) (Object) this; - - @Inject(at = @At("HEAD"), method = "sendBlockBreakProgress") - private void onBreakProgress(int playerEntityId, BlockPos pos, int progress, CallbackInfo ci) { - BreakProgressHook.whenBreaking(self, this.worldRenderer, playerEntityId, pos, progress); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/ChromaticProjectorHooksMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/ChromaticProjectorHooksMixin.java deleted file mode 100644 index 0d9669855..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/ChromaticProjectorHooksMixin.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.platform.GlStateManager; -import com.simibubi.create.foundation.render.effects.EffectsHandler; - -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -@Mixin(WorldRenderer.class) -public class ChromaticProjectorHooksMixin { - - @Inject(method = "render", at = @At(value = "INVOKE", ordinal = 1, target = "Lnet/minecraft/client/shader/ShaderGroup;render(F)V")) - private void disableTransparencyShaderDepth(MatrixStack p_228426_1_, float p_228426_2_, long p_228426_3_, boolean p_228426_5_, ActiveRenderInfo p_228426_6_, GameRenderer p_228426_7_, LightTexture p_228426_8_, Matrix4f p_228426_9_, CallbackInfo ci) { - GlStateManager.depthMask(false); - } - - @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldRenderer;renderChunkDebugInfo(Lnet/minecraft/client/renderer/ActiveRenderInfo;)V")) - private void applyFilters(MatrixStack stack, float p_228426_2_, long p_228426_3_, boolean p_228426_5_, ActiveRenderInfo p_228426_6_, GameRenderer p_228426_7_, LightTexture p_228426_8_, Matrix4f p_228426_9_, CallbackInfo ci) { - EffectsHandler instance = EffectsHandler.getInstance(); - if (instance != null) - instance.render(stack.peek().getModel()); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java deleted file mode 100644 index 76122d409..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import java.lang.ref.Reference; -import java.util.Random; -import java.util.Set; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.stream.Collectors; - -import org.apache.logging.log4j.util.TriConsumer; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionHandler; - -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.MoverType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.gen.feature.template.Template; -import net.minecraftforge.common.capabilities.CapabilityProvider; - -@Mixin(Entity.class) -public abstract class EntityContraptionInteractionMixin extends CapabilityProvider { - private EntityContraptionInteractionMixin(Class baseClass) { - super(baseClass); - } - - private final Entity self = (Entity) (Object) this; - - private AbstractContraptionEntity contraption; - - @Final - @Shadow - protected Random rand; - - @Shadow - private float nextStepDistance; - - @Shadow - protected abstract float determineNextStepDistance(); - - @Shadow - protected abstract void playStepSound(BlockPos p_180429_1_, BlockState p_180429_2_); - - private Set getIntersectingContraptions() { - Set contraptions = ContraptionHandler.loadedContraptions.get(self.world) - .values() - .stream() - .map(Reference::get) - .filter(cEntity -> cEntity != null && cEntity.collidingEntities.containsKey(self)) - .collect(Collectors.toSet()); - - contraptions.addAll(self.world.getEntitiesWithinAABB(AbstractContraptionEntity.class, self.getBoundingBox() - .grow(1f))); - return contraptions; - } - - private void forCollision(Vector3d anchorPos, TriConsumer action) { - getIntersectingContraptions().forEach(cEntity -> { - Vector3d localPos = ContraptionCollider.getWorldToLocalTranslation(anchorPos, cEntity); - - localPos = anchorPos.add(localPos); - - BlockPos blockPos = new BlockPos(localPos); - Contraption contraption = cEntity.getContraption(); - Template.BlockInfo info = contraption.getBlocks() - .get(blockPos); - - if (info != null) { - BlockState blockstate = info.state; - action.accept(contraption, blockstate, blockPos); - } - }); - } - - @Inject(at = @At(value = "JUMP", opcode = 154, // IFNE line 587 injecting before `!blockstate.isAir(this.world, blockpos)` - ordinal = 4), method = "move") - private void movementMixin(MoverType mover, Vector3d movement, CallbackInfo ci) { - Vector3d worldPos = self.getPositionVec() - .add(0, -0.2, 0); - AtomicBoolean stepped = new AtomicBoolean(false); - - forCollision(worldPos, (contraption, blockstate, blockPos) -> { - bindContraption(contraption); - playStepSound(blockPos, blockstate); - unbindContraption(); - stepped.set(true); - }); - - if (stepped.get()) - this.nextStepDistance = this.determineNextStepDistance(); - } - - @Inject(method = { "spawnSprintingParticles" }, at = @At(value = "TAIL")) - private void createRunningParticlesMixin(CallbackInfo ci) { - Vector3d worldPos = self.getPositionVec() - .add(0, -0.2, 0); - BlockPos pos = new BlockPos(worldPos); // pos where particles are spawned - - forCollision(worldPos, (contraption, blockstate, blockpos) -> { - if (!blockstate.addRunningEffects(self.world, blockpos, self) - && blockstate.getRenderType() != BlockRenderType.INVISIBLE) { - Vector3d vec3d = self.getMotion(); - self.world.addParticle(new BlockParticleData(ParticleTypes.BLOCK, blockstate).setPos(pos), - self.getX() + ((double) rand.nextFloat() - 0.5D) * (double) self.getWidth(), self.getY() + 0.1D, - self.getZ() + ((double) rand.nextFloat() - 0.5D) * (double) self.getWidth(), vec3d.x * -4.0D, 1.5D, - vec3d.z * -4.0D); - } - }); - } - - @Inject(method = "playSound", at = @At("HEAD"), cancellable = true) - private void playSoundShifted(SoundEvent event, float pitch, float volume, CallbackInfo ci) { - if (this.contraption != null && (!self.isSilent() || self instanceof PlayerEntity)) { - double x = self.getX(); - double y = self.getY(); - double z = self.getZ(); - Vector3d worldPos = ContraptionCollider.getWorldToLocalTranslation(new Vector3d(x, y, z), this.contraption); - - worldPos = worldPos.add(x, y, z); - - self.world.playSound(null, worldPos.x + x, worldPos.y + y, worldPos.z + z, event, self.getSoundCategory(), - pitch, volume); - - ci.cancel(); - } - } - - private void bindContraption(Contraption contraption) { - bindContraption(contraption.entity); - } - - private void bindContraption(AbstractContraptionEntity contraption) { - this.contraption = contraption; - } - - private void unbindContraption() { - this.contraption = null; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java deleted file mode 100644 index 46b35d6e3..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.At.Shift; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.mojang.blaze3d.matrix.MatrixStack; - -@Mixin(MatrixStack.class) -public class FixNormalScalingMixin { - /** - * Minecraft negates the normal matrix if all scales are equal and negative, but - * does not return afterward. This allows the rest of the method's logic to be - * applied, which negates the matrix again, resulting in the matrix being the - * same as in the beginning. - */ - @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/vector/Matrix3f;multiply(F)V", shift = Shift.AFTER), method = "scale(FFF)V", cancellable = true) - private void returnAfterNegate(float x, float y, float z, CallbackInfo ci) { - ci.cancel(); - } - - /** - * Minecraft takes the inverse cube root of the product of all scales to provide a - * rough estimate for normalization so that it does not need to be done later. It - * does not make sense for this "normalization factor" to be negative though, as - * that would invert all normals. Additionally, Minecraft's fastInverseCbrt method - * does not work for negative numbers. - */ - @ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/MathHelper;fastInverseCbrt(F)F"), method = "scale(FFF)V") - private float absInvCbrtInput(float input) { - return Math.abs(input); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java deleted file mode 100644 index d295d6fa4..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraftforge.common.capabilities.CapabilityProvider; - -@Mixin(Entity.class) -public abstract class HeavyBootsOnEntityMixin extends CapabilityProvider { - - protected HeavyBootsOnEntityMixin(Class baseClass) { - super(baseClass); - } - - @Shadow - public abstract CompoundNBT getPersistentData(); - - @Inject(at = @At("HEAD"), method = "canSwim", cancellable = true) - public void noSwimmingWithHeavyBootsOn(CallbackInfoReturnable cir) { - CompoundNBT persistentData = getPersistentData(); - if (persistentData.contains("HeavyBoots")) - cir.setReturnValue(false); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java deleted file mode 100644 index 3ab84bb01..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.mojang.authlib.GameProfile; - -import net.minecraft.client.entity.player.AbstractClientPlayerEntity; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.nbt.CompoundNBT; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -@Mixin(ClientPlayerEntity.class) -public abstract class HeavyBootsOnPlayerMixin extends AbstractClientPlayerEntity { - - public HeavyBootsOnPlayerMixin(ClientWorld p_i50991_1_, GameProfile p_i50991_2_) { - super(p_i50991_1_, p_i50991_2_); - } - - @Inject(at = @At("HEAD"), method = "canSwim", cancellable = true) - public void noSwimmingWithHeavyBootsOn(CallbackInfoReturnable cir) { - CompoundNBT persistentData = getPersistentData(); - if (persistentData.contains("HeavyBoots")) - cir.setReturnValue(false); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java deleted file mode 100644 index 151a0a7c6..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import com.simibubi.create.content.schematics.SchematicWorld; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.client.model.ModelDataManager; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import net.minecraft.client.Minecraft; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -@Mixin(ModelDataManager.class) -public class ModelDataRefreshMixin { - - /** - * Normally ModelDataManager will throw an exception if a tile entity tries - * to refresh its model data from a world the client isn't currently in, - * but we need that to not happen for tile entities in fake schematic - * worlds, so in those cases just do nothing instead. - */ - @Inject(at = @At("HEAD"), method = "requestModelDataRefresh", cancellable = true, remap = false) - private static void requestModelDataRefresh(TileEntity te, CallbackInfo ci) { - if (te != null) { - World world = te.getWorld(); - if (world != Minecraft.getInstance().world && world instanceof SchematicWorld) - ci.cancel(); - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java deleted file mode 100644 index 21ed291ff..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.simibubi.create.foundation.gui.UIRenderHelper; - -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -@Mixin(Minecraft.class) -public class WindowResizeMixin { - - @Shadow @Final private MainWindow mainWindow; - - @Inject(at = @At("TAIL"), method = "updateWindowSize") - private void updateWindowSize(CallbackInfo ci) { - UIRenderHelper.updateWindowSize(mainWindow); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java deleted file mode 100644 index 3bd14eedd..000000000 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.simibubi.create.foundation.networking; - -import static net.minecraftforge.fml.network.NetworkDirection.PLAY_TO_CLIENT; -import static net.minecraftforge.fml.network.NetworkDirection.PLAY_TO_SERVER; - -import java.util.function.BiConsumer; -import java.util.function.Function; -import java.util.function.Supplier; - -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionDisassemblyPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionStallPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.gantry.GantryContraptionUpdatePacket; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.GlueEffectPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.sync.ClientMotionPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionFluidPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionInteractionPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.sync.ContraptionSeatMappingPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.sync.LimbSwingUpdatePacket; -import com.simibubi.create.content.contraptions.components.structureMovement.train.CouplingCreationPacket; -import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.MinecartControllerUpdatePacket; -import com.simibubi.create.content.contraptions.fluids.actors.FluidSplashPacket; -import com.simibubi.create.content.contraptions.relays.advanced.sequencer.ConfigureSequencedGearshiftPacket; -import com.simibubi.create.content.curiosities.projector.ConfigureProjectorPacket; -import com.simibubi.create.content.curiosities.symmetry.SymmetryEffectPacket; -import com.simibubi.create.content.curiosities.tools.BlueprintAssignCompleteRecipePacket; -import com.simibubi.create.content.curiosities.tools.ExtendoGripInteractionPacket; -import com.simibubi.create.content.curiosities.zapper.ZapperBeamPacket; -import com.simibubi.create.content.logistics.block.depot.EjectorElytraPacket; -import com.simibubi.create.content.logistics.block.depot.EjectorPlacementPacket; -import com.simibubi.create.content.logistics.block.depot.EjectorTriggerPacket; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmPlacementPacket; -import com.simibubi.create.content.logistics.item.LinkedControllerBindPacket; -import com.simibubi.create.content.logistics.item.LinkedControllerInputPacket; -import com.simibubi.create.content.logistics.item.filter.FilterScreenPacket; -import com.simibubi.create.content.logistics.packet.ConfigureFlexcratePacket; -import com.simibubi.create.content.logistics.packet.ConfigureStockswitchPacket; -import com.simibubi.create.content.logistics.packet.FunnelFlapPacket; -import com.simibubi.create.content.logistics.packet.TunnelFlapPacket; -import com.simibubi.create.content.schematics.packet.ConfigureSchematicannonPacket; -import com.simibubi.create.content.schematics.packet.InstantSchematicPacket; -import com.simibubi.create.content.schematics.packet.SchematicPlacePacket; -import com.simibubi.create.content.schematics.packet.SchematicSyncPacket; -import com.simibubi.create.content.schematics.packet.SchematicUploadPacket; -import com.simibubi.create.foundation.command.HighlightPacket; -import com.simibubi.create.foundation.command.SConfigureConfigPacket; -import com.simibubi.create.foundation.config.ui.CConfigureConfigPacket; -import com.simibubi.create.foundation.gui.ClearContainerPacket; -import com.simibubi.create.foundation.gui.GhostItemSubmitPacket; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringCountUpdatePacket; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueUpdatePacket; -import com.simibubi.create.foundation.utility.ServerSpeedProvider; - -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.network.NetworkDirection; -import net.minecraftforge.fml.network.NetworkEvent.Context; -import net.minecraftforge.fml.network.NetworkRegistry; -import net.minecraftforge.fml.network.PacketDistributor; -import net.minecraftforge.fml.network.PacketDistributor.TargetPoint; -import net.minecraftforge.fml.network.simple.SimpleChannel; - -public enum AllPackets { - - // Client to Server - NBT(NbtPacket.class, NbtPacket::new, PLAY_TO_SERVER), - CONFIGURE_SCHEMATICANNON(ConfigureSchematicannonPacket.class, ConfigureSchematicannonPacket::new, PLAY_TO_SERVER), - CONFIGURE_FLEXCRATE(ConfigureFlexcratePacket.class, ConfigureFlexcratePacket::new, PLAY_TO_SERVER), - CONFIGURE_STOCKSWITCH(ConfigureStockswitchPacket.class, ConfigureStockswitchPacket::new, PLAY_TO_SERVER), - CONFIGURE_SEQUENCER(ConfigureSequencedGearshiftPacket.class, ConfigureSequencedGearshiftPacket::new, - PLAY_TO_SERVER), - CONFIGURE_PROJECTOR(ConfigureProjectorPacket.class, ConfigureProjectorPacket::new, PLAY_TO_SERVER), - PLACE_SCHEMATIC(SchematicPlacePacket.class, SchematicPlacePacket::new, PLAY_TO_SERVER), - UPLOAD_SCHEMATIC(SchematicUploadPacket.class, SchematicUploadPacket::new, PLAY_TO_SERVER), - CLEAR_CONTAINER(ClearContainerPacket.class, ClearContainerPacket::new, PLAY_TO_SERVER), - CONFIGURE_FILTER(FilterScreenPacket.class, FilterScreenPacket::new, PLAY_TO_SERVER), - CONFIGURE_FILTERING_AMOUNT(FilteringCountUpdatePacket.class, FilteringCountUpdatePacket::new, PLAY_TO_SERVER), - CONFIGURE_SCROLLABLE(ScrollValueUpdatePacket.class, ScrollValueUpdatePacket::new, PLAY_TO_SERVER), - EXTENDO_INTERACT(ExtendoGripInteractionPacket.class, ExtendoGripInteractionPacket::new, PLAY_TO_SERVER), - CONTRAPTION_INTERACT(ContraptionInteractionPacket.class, ContraptionInteractionPacket::new, PLAY_TO_SERVER), - CLIENT_MOTION(ClientMotionPacket.class, ClientMotionPacket::new, PLAY_TO_SERVER), - PLACE_ARM(ArmPlacementPacket.class, ArmPlacementPacket::new, PLAY_TO_SERVER), - MINECART_COUPLING_CREATION(CouplingCreationPacket.class, CouplingCreationPacket::new, PLAY_TO_SERVER), - INSTANT_SCHEMATIC(InstantSchematicPacket.class, InstantSchematicPacket::new, PLAY_TO_SERVER), - SYNC_SCHEMATIC(SchematicSyncPacket.class, SchematicSyncPacket::new, PLAY_TO_SERVER), - LEFT_CLICK(LeftClickPacket.class, LeftClickPacket::new, PLAY_TO_SERVER), - PLACE_EJECTOR(EjectorPlacementPacket.class, EjectorPlacementPacket::new, PLAY_TO_SERVER), - TRIGGER_EJECTOR(EjectorTriggerPacket.class, EjectorTriggerPacket::new, PLAY_TO_SERVER), - EJECTOR_ELYTRA(EjectorElytraPacket.class, EjectorElytraPacket::new, PLAY_TO_SERVER), - LINKED_CONTROLLER_INPUT(LinkedControllerInputPacket.class, LinkedControllerInputPacket::new, PLAY_TO_SERVER), - LINKED_CONTROLLER_BIND(LinkedControllerBindPacket.class, LinkedControllerBindPacket::new, PLAY_TO_SERVER), - C_CONFIGURE_CONFIG(CConfigureConfigPacket.class, CConfigureConfigPacket::new, PLAY_TO_SERVER), - SUBMIT_GHOST_ITEM(GhostItemSubmitPacket.class, GhostItemSubmitPacket::new, PLAY_TO_SERVER), - BLUEPRINT_COMPLETE_RECIPE(BlueprintAssignCompleteRecipePacket.class, BlueprintAssignCompleteRecipePacket::new, PLAY_TO_SERVER), - - // Server to Client - SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new, PLAY_TO_CLIENT), - SERVER_SPEED(ServerSpeedProvider.Packet.class, ServerSpeedProvider.Packet::new, PLAY_TO_CLIENT), - BEAM_EFFECT(ZapperBeamPacket.class, ZapperBeamPacket::new, PLAY_TO_CLIENT), - S_CONFIGURE_CONFIG(SConfigureConfigPacket.class, SConfigureConfigPacket::new, PLAY_TO_CLIENT), - CONTRAPTION_STALL(ContraptionStallPacket.class, ContraptionStallPacket::new, PLAY_TO_CLIENT), - CONTRAPTION_DISASSEMBLE(ContraptionDisassemblyPacket.class, ContraptionDisassemblyPacket::new, PLAY_TO_CLIENT), - GLUE_EFFECT(GlueEffectPacket.class, GlueEffectPacket::new, PLAY_TO_CLIENT), - CONTRAPTION_SEAT_MAPPING(ContraptionSeatMappingPacket.class, ContraptionSeatMappingPacket::new, PLAY_TO_CLIENT), - LIMBSWING_UPDATE(LimbSwingUpdatePacket.class, LimbSwingUpdatePacket::new, PLAY_TO_CLIENT), - MINECART_CONTROLLER(MinecartControllerUpdatePacket.class, MinecartControllerUpdatePacket::new, PLAY_TO_CLIENT), - FLUID_SPLASH(FluidSplashPacket.class, FluidSplashPacket::new, PLAY_TO_CLIENT), - CONTRAPTION_FLUID(ContraptionFluidPacket.class, ContraptionFluidPacket::new, PLAY_TO_CLIENT), - GANTRY_UPDATE(GantryContraptionUpdatePacket.class, GantryContraptionUpdatePacket::new, PLAY_TO_CLIENT), - BLOCK_HIGHLIGHT(HighlightPacket.class, HighlightPacket::new, PLAY_TO_CLIENT), - TUNNEL_FLAP(TunnelFlapPacket.class, TunnelFlapPacket::new, PLAY_TO_CLIENT), - FUNNEL_FLAP(FunnelFlapPacket.class, FunnelFlapPacket::new, PLAY_TO_CLIENT), - PERSISTENT_DATA(ISyncPersistentData.Packet.class, ISyncPersistentData.Packet::new, PLAY_TO_CLIENT), - - ; - - public static final ResourceLocation CHANNEL_NAME = new ResourceLocation(Create.ID, "network"); - public static final String NETWORK_VERSION = new ResourceLocation(Create.ID, "1").toString(); - public static SimpleChannel channel; - - private LoadedPacket packet; - - private AllPackets(Class type, Function factory, - NetworkDirection direction) { - packet = new LoadedPacket<>(type, factory, direction); - } - - public static void registerPackets() { - channel = NetworkRegistry.ChannelBuilder.named(CHANNEL_NAME) - .serverAcceptedVersions(NETWORK_VERSION::equals) - .clientAcceptedVersions(NETWORK_VERSION::equals) - .networkProtocolVersion(() -> NETWORK_VERSION) - .simpleChannel(); - for (AllPackets packet : values()) - packet.packet.register(); - } - - public static void sendToNear(World world, BlockPos pos, int range, Object message) { - channel.send(PacketDistributor.NEAR - .with(TargetPoint.p(pos.getX(), pos.getY(), pos.getZ(), range, world.getRegistryKey())), message); - } - - private static class LoadedPacket { - private static int index = 0; - BiConsumer encoder; - Function decoder; - BiConsumer> handler; - Class type; - NetworkDirection direction; - - private LoadedPacket(Class type, Function factory, NetworkDirection direction) { - encoder = T::write; - decoder = factory; - handler = T::handle; - this.type = type; - this.direction = direction; - } - - private void register() { - channel.messageBuilder(type, index++, direction) - .encoder(encoder) - .decoder(decoder) - .consumer(handler) - .add(); - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java b/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java deleted file mode 100644 index f8d30dd44..000000000 --- a/src/main/java/com/simibubi/create/foundation/networking/ISyncPersistentData.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.simibubi.create.foundation.networking; - -import java.util.Iterator; -import java.util.function.Supplier; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkEvent.Context; -import net.minecraftforge.fml.network.PacketDistributor; - -public interface ISyncPersistentData { - - void onPersistentDataUpdated(); - - default void syncPersistentDataWithTracking(Entity self) { - AllPackets.channel.send(PacketDistributor.TRACKING_ENTITY.with(() -> self), new Packet(self)); - } - - public static class Packet extends SimplePacketBase { - - private int entityId; - private Entity entity; - private CompoundNBT readData; - - public Packet(Entity entity) { - this.entity = entity; - this.entityId = entity.getEntityId(); - } - - public Packet(PacketBuffer buffer) { - entityId = buffer.readInt(); - readData = buffer.readCompoundTag(); - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeInt(entityId); - buffer.writeCompoundTag(entity.getPersistentData()); - } - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - Entity entityByID = Minecraft.getInstance().world.getEntityByID(entityId); - if (!(entityByID instanceof ISyncPersistentData)) - return; - CompoundNBT data = entityByID.getPersistentData(); - for (Iterator iterator = data.keySet() - .iterator(); iterator.hasNext(); ) { - data.remove(iterator.next()); - } - data.merge(readData); - ((ISyncPersistentData) entityByID).onPersistentDataUpdated(); - }); - context.get() - .setPacketHandled(true); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/networking/LeftClickPacket.java b/src/main/java/com/simibubi/create/foundation/networking/LeftClickPacket.java deleted file mode 100644 index 57597dbb7..000000000 --- a/src/main/java/com/simibubi/create/foundation/networking/LeftClickPacket.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.foundation.networking; - -import java.util.function.Supplier; - -import com.simibubi.create.events.CommonEvents; - -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkDirection; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public class LeftClickPacket extends SimplePacketBase { - - public LeftClickPacket() {} - - LeftClickPacket(PacketBuffer buffer) {} - - @Override - public void write(PacketBuffer buffer) {} - - @Override - public void handle(Supplier context) { - Context ctx = context.get(); - if (ctx.getDirection() != NetworkDirection.PLAY_TO_SERVER) - return; - ctx.enqueueWork(() -> CommonEvents.leftClickEmpty(ctx.getSender())); - ctx.setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/networking/NbtPacket.java b/src/main/java/com/simibubi/create/foundation/networking/NbtPacket.java deleted file mode 100644 index b42262760..000000000 --- a/src/main/java/com/simibubi/create/foundation/networking/NbtPacket.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.simibubi.create.foundation.networking; - -import java.util.function.Supplier; - -import com.simibubi.create.content.curiosities.symmetry.SymmetryWandItem; -import com.simibubi.create.content.curiosities.zapper.ZapperItem; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.Hand; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -@Deprecated -public class NbtPacket extends SimplePacketBase { - - public ItemStack stack; - public int slot; - public Hand hand; - - public NbtPacket(ItemStack stack, Hand hand) { - this(stack, -1); - this.hand = hand; - } - - public NbtPacket(ItemStack stack, int slot) { - this.stack = stack; - this.slot = slot; - this.hand = Hand.MAIN_HAND; - } - - public NbtPacket(PacketBuffer buffer) { - stack = buffer.readItemStack(); - slot = buffer.readInt(); - hand = Hand.values()[buffer.readInt()]; - } - - public void write(PacketBuffer buffer) { - buffer.writeItemStack(stack); - buffer.writeInt(slot); - buffer.writeInt(hand.ordinal()); - } - - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - ServerPlayerEntity player = context.get() - .getSender(); - if (player == null) - return; - if (!(stack.getItem() instanceof SymmetryWandItem || stack.getItem() instanceof ZapperItem)) { - return; - } - stack.removeChildTag("AttributeModifiers"); - if (slot == -1) { - ItemStack heldItem = player.getHeldItem(hand); - if (heldItem.getItem() == stack.getItem()) { - heldItem.setTag(stack.getTag()); - } - return; - } - - ItemStack heldInSlot = player.inventory.getStackInSlot(slot); - if (heldInSlot.getItem() == stack.getItem()) { - heldInSlot.setTag(stack.getTag()); - } - - }); - context.get() - .setPacketHandled(true); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/networking/SimplePacketBase.java b/src/main/java/com/simibubi/create/foundation/networking/SimplePacketBase.java deleted file mode 100644 index 6285599fd..000000000 --- a/src/main/java/com/simibubi/create/foundation/networking/SimplePacketBase.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simibubi.create.foundation.networking; - -import java.util.function.Supplier; - -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public abstract class SimplePacketBase { - - public abstract void write(PacketBuffer buffer); - - public abstract void handle(Supplier context); - -} diff --git a/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java b/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java deleted file mode 100644 index 4bb198dcc..000000000 --- a/src/main/java/com/simibubi/create/foundation/networking/TileEntityConfigurationPacket.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.simibubi.create.foundation.networking; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; - -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.network.NetworkEvent.Context; - -public abstract class TileEntityConfigurationPacket extends SimplePacketBase { - - protected BlockPos pos; - - public TileEntityConfigurationPacket(PacketBuffer buffer) { - pos = buffer.readBlockPos(); - readSettings(buffer); - } - - public TileEntityConfigurationPacket(BlockPos pos) { - this.pos = pos; - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeBlockPos(pos); - writeSettings(buffer); - } - - @SuppressWarnings("unchecked") - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - ServerPlayerEntity player = context.get() - .getSender(); - if (player == null) - return; - World world = player.world; - - if (world == null || !world.isBlockPresent(pos)) - return; - TileEntity tileEntity = world.getTileEntity(pos); - if (tileEntity instanceof SyncedTileEntity) { - applySettings((TE) tileEntity); - ((SyncedTileEntity) tileEntity).sendData(); - tileEntity.markDirty(); - } - }); - context.get() - .setPacketHandled(true); - - } - - protected abstract void writeSettings(PacketBuffer buffer); - - protected abstract void readSettings(PacketBuffer buffer); - - protected abstract void applySettings(TE te); - -} diff --git a/src/main/java/com/simibubi/create/foundation/networking/TileEntityDataPacket.java b/src/main/java/com/simibubi/create/foundation/networking/TileEntityDataPacket.java deleted file mode 100644 index 0be7edd6d..000000000 --- a/src/main/java/com/simibubi/create/foundation/networking/TileEntityDataPacket.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.foundation.networking; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.network.PacketBuffer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.fml.network.NetworkEvent; - -/** - * A server to client version of {@link TileEntityConfigurationPacket} - * - * @param - */ -public abstract class TileEntityDataPacket extends SimplePacketBase { - - protected BlockPos tilePos; - - public TileEntityDataPacket(PacketBuffer buffer) { - tilePos = buffer.readBlockPos(); - } - - public TileEntityDataPacket(BlockPos pos) { - this.tilePos = pos; - } - - @Override - public void write(PacketBuffer buffer) { - buffer.writeBlockPos(tilePos); - writeData(buffer); - } - - @Override - public void handle(Supplier context) { - NetworkEvent.Context ctx = context.get(); - ctx.enqueueWork(() -> { - ClientWorld world = Minecraft.getInstance().world; - - if (world == null) - return; - - TileEntity tile = world.getTileEntity(tilePos); - - if (tile instanceof SyncedTileEntity) { - handlePacket((TE) tile); - } - }); - ctx.setPacketHandled(true); - } - - protected abstract void writeData(PacketBuffer buffer); - - protected abstract void handlePacket(TE tile); -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ElementLink.java b/src/main/java/com/simibubi/create/foundation/ponder/ElementLink.java deleted file mode 100644 index 92853a2d5..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/ElementLink.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.UUID; - -public class ElementLink { - - private Class elementClass; - private UUID id; - - public ElementLink(Class elementClass) { - this(elementClass, UUID.randomUUID()); - } - - public ElementLink(Class elementClass, UUID id) { - this.elementClass = elementClass; - this.id = id; - } - - public UUID getId() { - return id; - } - - public T cast(PonderElement e) { - return elementClass.cast(e); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java deleted file mode 100644 index 59d350155..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/NavigatableSimiScreen.java +++ /dev/null @@ -1,253 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.apache.commons.lang3.mutable.MutableBoolean; -import org.apache.commons.lang3.mutable.MutableInt; -import org.lwjgl.glfw.GLFW; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.gui.AbstractSimiScreen; -import com.simibubi.create.foundation.gui.IScreenRenderable; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.ponder.content.PonderTagScreen; -import com.simibubi.create.foundation.ponder.ui.PonderButton; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.MathHelper; - -public abstract class NavigatableSimiScreen extends AbstractSimiScreen { - - public static final String THINK_BACK = PonderLocalization.LANG_PREFIX + "think_back"; - - protected int depthPointX, depthPointY; - public final LerpedFloat transition = LerpedFloat.linear() - .startWithValue(0) - .chase(0, .1f, LerpedFloat.Chaser.LINEAR); - protected final LerpedFloat arrowAnimation = LerpedFloat.linear() - .startWithValue(0) - .chase(0, 0.075f, LerpedFloat.Chaser.LINEAR); - protected PonderButton backTrack; - - public NavigatableSimiScreen() { - MainWindow window = Minecraft.getInstance() - .getWindow(); - depthPointX = window.getScaledWidth() / 2; - depthPointY = window.getScaledHeight() / 2; - } - - @Override - public void onClose() { - ScreenOpener.clearStack(); - super.onClose(); - } - - @Override - public void tick() { - super.tick(); - transition.tickChaser(); - arrowAnimation.tickChaser(); - } - - @Override - protected void init() { - super.init(); - backTrack = null; - List screenHistory = ScreenOpener.getScreenHistory(); - if (screenHistory.isEmpty()) - return; - if (!(screenHistory.get(0) instanceof NavigatableSimiScreen)) - return; - - Screen screen = screenHistory.get(0); - IScreenRenderable icon = null; - ItemStack altIcon = null; - - if (screen instanceof PonderUI) - altIcon = ((PonderUI) screen).stack; - if (screen instanceof PonderTagScreen) - icon = ((PonderTagScreen) screen).getTag(); - - widgets.add(backTrack = new PonderButton(31, height - 31 - 20) - .enableFade(0, 5) - .withCallback(() -> ScreenOpener.openPreviousScreen(this, Optional.empty()))); - backTrack.fade(1); - - if (icon != null) - backTrack.showing(icon); - if (altIcon != null) - backTrack.showing(altIcon); - } - - @Override - public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - super.render(ms, mouseX, mouseY, partialTicks); -// renderZeloBreadcrumbs(ms, mouseX, mouseY, partialTicks); - if (backTrack == null) - return; - - ms.push(); - ms.translate(0, 0, 500); - if (backTrack.isHovered()) { - textRenderer.draw(ms, Lang.translate(THINK_BACK), 15, height - 16, Theme.i(Theme.Key.TEXT_DARKER)); - if (MathHelper.epsilonEquals(arrowAnimation.getValue(), arrowAnimation.getChaseTarget())) { - arrowAnimation.setValue(1); - arrowAnimation.setValue(1);// called twice to also set the previous value to 1 - } - } - ms.pop(); - } - - @Override - protected void renderWindowBackground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (backTrack != null) { - int x = (int) MathHelper.lerp(arrowAnimation.getValue(partialTicks), -9, 21); - int maxX = backTrack.x + backTrack.getWidth(); - - if (x + 30 < backTrack.x) - UIRenderHelper.breadcrumbArrow(ms, x + 30, height - 51, 0, maxX - (x + 30), 20, 5, Theme.p(Theme.Key.PONDER_BACK_ARROW)); - - UIRenderHelper.breadcrumbArrow(ms, x, height - 51, 0, 30, 20, 5, Theme.p(Theme.Key.PONDER_BACK_ARROW)); - UIRenderHelper.breadcrumbArrow(ms, x - 30, height - 51, 0, 30, 20, 5, Theme.p(Theme.Key.PONDER_BACK_ARROW)); - } - - if (transition.getChaseTarget() == 0 || transition.settled()) { - renderBackground(ms); - return; - } - - renderBackground(ms); - - Screen lastScreen = ScreenOpener.getPreviouslyRenderedScreen(); - float transitionValue = transition.getValue(partialTicks); - float scale = 1 + 0.5f * transitionValue; - - // draw last screen into buffer - if (lastScreen != null && lastScreen != this && !transition.settled()) { - ms.push(); - UIRenderHelper.framebuffer.framebufferClear(Minecraft.IS_RUNNING_ON_MAC); - ms.translate(0, 0, -1000); - UIRenderHelper.framebuffer.bindFramebuffer(true); - lastScreen.render(ms, mouseX, mouseY, partialTicks); - - ms.pop(); - ms.push(); - - // use the buffer texture - Minecraft.getInstance() - .getFramebuffer() - .bindFramebuffer(true); - - MainWindow window = Minecraft.getInstance() - .getWindow(); - int dpx = window.getScaledWidth() / 2; - int dpy = window.getScaledHeight() / 2; - if (lastScreen instanceof AbstractSimiScreen) { - dpx = ((NavigatableSimiScreen) lastScreen).depthPointX; - dpy = ((NavigatableSimiScreen) lastScreen).depthPointY; - } - - ms.translate(dpx, dpy, 0); - ms.scale(scale, scale, 1); - ms.translate(-dpx, -dpy, 0); - RenderSystem.enableBlend(); - RenderSystem.defaultBlendFunc(); - RenderSystem.disableAlphaTest(); - UIRenderHelper.drawFramebuffer(1f - Math.abs(transitionValue)); - RenderSystem.disableBlend(); - RenderSystem.enableAlphaTest(); - ms.pop(); - } - - // modify current screen as well - scale = transitionValue > 0 ? 1 - 0.5f * (1 - transitionValue) : 1 + .5f * (1 + transitionValue); - ms.translate(depthPointX, depthPointY, 0); - ms.scale(scale, scale, 1); - ms.translate(-depthPointX, -depthPointY, 0); - } - - @Override - public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { - if (code == GLFW.GLFW_KEY_BACKSPACE) { - ScreenOpener.openPreviousScreen(this, Optional.empty()); - return true; - } - return super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_); - } - - public void centerScalingOn(int x, int y) { - depthPointX = x; - depthPointY = y; - } - - public void centerScalingOnMouse() { - MainWindow w = client.getWindow(); - double mouseX = client.mouseHelper.getMouseX() * w.getScaledWidth() / w.getWidth(); - double mouseY = client.mouseHelper.getMouseY() * w.getScaledHeight() / w.getHeight(); - centerScalingOn((int) mouseX, (int) mouseY); - } - - public boolean isEquivalentTo(NavigatableSimiScreen other) { - return false; - } - - public void shareContextWith(NavigatableSimiScreen other) {} - - protected void renderZeloBreadcrumbs(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - List history = ScreenOpener.getScreenHistory(); - if (history.isEmpty()) - return; - - history.add(0, Minecraft.getInstance().currentScreen); - int spacing = 20; - - List names = history.stream() - .map(NavigatableSimiScreen::screenTitle) - .collect(Collectors.toList()); - - int bWidth = names.stream() - .mapToInt(s -> textRenderer.getStringWidth(s) + spacing) - .sum(); - - MutableInt x = new MutableInt(width - bWidth); - MutableInt y = new MutableInt(height - 18); - MutableBoolean first = new MutableBoolean(true); - - if (x.getValue() < 25) - x.setValue(25); - - ms.push(); - ms.translate(0, 0, 600); - names.forEach(s -> { - int sWidth = textRenderer.getStringWidth(s); - UIRenderHelper.breadcrumbArrow(ms, x.getValue(), y.getValue(), 0, sWidth + spacing, 14, spacing / 2, - 0xdd101010, 0x44101010); - textRenderer.draw(ms, s, x.getValue() + 5, y.getValue() + 3, first.getValue() ? 0xffeeffee : 0xffddeeff); - first.setFalse(); - - x.add(sWidth + spacing); - }); - ms.pop(); - } - - private static String screenTitle(Screen screen) { - if (screen instanceof NavigatableSimiScreen) - return ((NavigatableSimiScreen) screen).getBreadcrumbTitle(); - return "<"; - } - - protected String getBreadcrumbTitle() { - return this.getClass() - .getSimpleName(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderElement.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderElement.java deleted file mode 100644 index 5b7df27ac..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderElement.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -public class PonderElement { - - boolean visible = true; - - public void whileSkipping(PonderScene scene) {} - - public void tick(PonderScene scene) {} - - public void reset(PonderScene scene) {} - - public boolean isVisible() { - return visible; - } - - public void setVisible(boolean visible) { - this.visible = visible; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderInstruction.java deleted file mode 100644 index 1309d33f0..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderInstruction.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.function.Consumer; - -public abstract class PonderInstruction { - - public boolean isBlocking() { - return false; - } - - public void reset(PonderScene scene) {} - - public abstract boolean isComplete(); - - public void onScheduled(PonderScene scene) {} - - public abstract void tick(PonderScene scene); - - public static PonderInstruction simple(Consumer callback) { - return new Simple(callback); - } - - private static class Simple extends PonderInstruction { - - private Consumer callback; - - public Simple(Consumer callback) { - this.callback = callback; - } - - @Override - public boolean isComplete() { - return true; - } - - @Override - public void tick(PonderScene scene) { - callback.accept(scene); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderLocalization.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderLocalization.java deleted file mode 100644 index 64d61230b..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderLocalization.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.HashMap; -import java.util.Map; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.content.PonderTagScreen; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Lang; - -public class PonderLocalization { - - static Map shared = new HashMap<>(); - static Map> tag = new HashMap<>(); - static Map> specific = new HashMap<>(); - - // - - public static void registerTag(String key, String enUS, String description) { - tag.put(key, Couple.create(enUS, description)); - } - - public static void registerShared(String key, String enUS) { - shared.put(key, enUS); - } - - public static void registerSpecific(String sceneId, String key, String enUS) { - specific.computeIfAbsent(sceneId, $ -> new HashMap<>()) - .put(key, enUS); - } - - // - - public static String getShared(String key) { - if (PonderIndex.EDITOR_MODE) - return shared.containsKey(key) ? shared.get(key) : ("unregistered shared entry:" + key); - return Lang.translate(langKeyForShared(key)) - .getString(); - } - - public static String getSpecific(String sceneId, String k) { - if (PonderIndex.EDITOR_MODE) - return specific.get(sceneId) - .get(k); - return Lang.translate(langKeyForSpecific(sceneId, k)) - .getString(); - } - - public static String getTag(String key) { - if (PonderIndex.EDITOR_MODE) - return tag.containsKey(key) ? tag.get(key) - .getFirst() : ("unregistered tag entry:" + key); - return Lang.translate(langKeyForTag(key)) - .getString(); - } - - public static String getTagDescription(String key) { - if (PonderIndex.EDITOR_MODE) - return tag.containsKey(key) ? tag.get(key) - .getSecond() : ("unregistered tag entry:" + key); - return Lang.translate(langKeyForTagDescription(key)) - .getString(); - } - - // - - public static final String LANG_PREFIX = "ponder."; - - public static JsonElement record() { - JsonObject object = new JsonObject(); - - addGeneral(object, PonderTooltipHandler.HOLD_TO_PONDER, "Hold [%1$s] to Ponder"); - addGeneral(object, PonderTooltipHandler.SUBJECT, "Subject of this scene"); - addGeneral(object, PonderUI.PONDERING, "Pondering about..."); - addGeneral(object, PonderUI.IDENTIFY_MODE, "Identify mode active.\nUnpause with [%1$s]"); - addGeneral(object, PonderTagScreen.ASSOCIATED, "Associated Entries"); - - addGeneral(object, PonderUI.CLOSE, "Close"); - addGeneral(object, PonderUI.IDENTIFY, "Identify"); - addGeneral(object, PonderUI.NEXT, "Next Scene"); - addGeneral(object, PonderUI.PREVIOUS, "Previous Scene"); - addGeneral(object, PonderUI.REPLAY, "Replay"); - addGeneral(object, PonderUI.THINK_BACK, "Think Back"); - addGeneral(object, PonderUI.SLOW_TEXT, "Comfy Reading"); - - shared.forEach((k, v) -> object.addProperty(Create.ID + "." + langKeyForShared(k), v)); - tag.forEach((k, v) -> { - object.addProperty(Create.ID + "." + langKeyForTag(k), v.getFirst()); - object.addProperty(Create.ID + "." + langKeyForTagDescription(k), v.getSecond()); - }); - - specific.entrySet() - .stream() - .sorted(Map.Entry.comparingByKey()) - .forEach(entry -> { - entry.getValue() - .entrySet() - .stream() - .sorted(Map.Entry.comparingByKey()) - .forEach(subEntry -> object.addProperty( - Create.ID + "." + langKeyForSpecific(entry.getKey(), subEntry.getKey()), subEntry.getValue())); - }); - return object; - } - - private static void addGeneral(JsonObject json, String key, String enUS) { - json.addProperty(Create.ID + "." + key, enUS); - } - - protected static String langKeyForSpecific(String sceneId, String k) { - return LANG_PREFIX + sceneId + "." + k; - } - - protected static String langKeyForShared(String k) { - return LANG_PREFIX + "shared." + k; - } - - protected static String langKeyForTag(String k) { - return LANG_PREFIX + "tag." + k; - } - - protected static String langKeyForTagDescription(String k) { - return LANG_PREFIX + "tag." + k + ".description"; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java deleted file mode 100644 index d2c25f25f..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderProgressBar.java +++ /dev/null @@ -1,181 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.BoxElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import it.unimi.dsi.fastutil.ints.IntList; -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.SoundHandler; -import net.minecraft.client.gui.FontRenderer; -import net.minecraftforge.fml.client.gui.GuiUtils; - -public class PonderProgressBar extends AbstractSimiWidget { - - LerpedFloat progress; - - PonderUI ponder; - - public PonderProgressBar(PonderUI ponder, int xIn, int yIn, int widthIn, int heightIn) { - super(xIn, yIn, widthIn, heightIn); - - this.ponder = ponder; - progress = LerpedFloat.linear() - .startWithValue(0); - } - - public void tick() { - progress.chase(ponder.getActiveScene() - .getSceneProgress(), .5f, LerpedFloat.Chaser.EXP); - progress.tickChaser(); - } - - @Override - protected boolean clicked(double mouseX, double mouseY) { - return this.active && this.visible && !ponder.getActiveScene().keyframeTimes.isEmpty() - && mouseX >= (double) this.x && mouseX < (double) (this.x + this.width + 4) && mouseY >= (double) this.y - 3 - && mouseY < (double) (this.y + this.height + 20); - } - - @Override - public void onClick(double mouseX, double mouseY) { - PonderScene activeScene = ponder.getActiveScene(); - IntList keyframeTimes = activeScene.keyframeTimes; - - int keyframeIndex = getHoveredKeyframeIndex(activeScene, mouseX); - - if (keyframeIndex == -1) - ponder.seekToTime(0); - else if (keyframeIndex == keyframeTimes.size()) - ponder.seekToTime(activeScene.totalTime); - else - ponder.seekToTime(keyframeTimes.getInt(keyframeIndex)); - } - - public int getHoveredKeyframeIndex(PonderScene activeScene, double mouseX) { - IntList keyframeTimes = activeScene.keyframeTimes; - - int totalTime = activeScene.totalTime; - int clickedAtTime = (int) ((mouseX - x) / ((double) width + 4) * totalTime); - - { - int lastKeyframeTime = keyframeTimes.getInt(keyframeTimes.size() - 1); - - int diffToEnd = totalTime - clickedAtTime; - int diffToLast = clickedAtTime - lastKeyframeTime; - - if (diffToEnd > 0 && diffToEnd < diffToLast / 2) { - return keyframeTimes.size(); - } - } - - int index = -1; - - for (int i = 0; i < keyframeTimes.size(); i++) { - int keyframeTime = keyframeTimes.getInt(i); - - if (keyframeTime > clickedAtTime) - break; - - index = i; - } - - return index; - } - - @Override - public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - - hovered = clicked(mouseX, mouseY); - - new BoxElement() - .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) - .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) - .at(x, y, 250) - .withBounds(width, height) - .render(ms); - - ms.push(); - ms.translate(x - 2, y - 2, 150); - - ms.push(); - ms.scale((width + 4) * progress.getValue(partialTicks), 1, 1); - int c1 = Theme.i(Theme.Key.PONDER_PROGRESSBAR, true); - int c2 = Theme.i(Theme.Key.PONDER_PROGRESSBAR, false); - GuiUtils.drawGradientRect(ms.peek().getModel(), 110, 0, 3, 1, 4, c1, c1); - GuiUtils.drawGradientRect(ms.peek().getModel(), 110, 0, 4, 1, 5, c2, c2); - ms.pop(); - - renderKeyframes(ms, mouseX, partialTicks); - - ms.pop(); - } - - private void renderKeyframes(MatrixStack ms, int mouseX, float partialTicks) { - PonderScene activeScene = ponder.getActiveScene(); - - int hoverStartColor = Theme.i(Theme.Key.PONDER_HOVER, true) | 0xa0_000000; - int hoverEndColor = Theme.i(Theme.Key.PONDER_HOVER, false) | 0xa0_000000; - int idleStartColor = Theme.i(Theme.Key.PONDER_IDLE, true) | 0x40_000000; - int idleEndColor = Theme.i(Theme.Key.PONDER_IDLE, false) | 0x40_000000; - int hoverIndex; - - if (hovered) { - hoverIndex = getHoveredKeyframeIndex(activeScene, mouseX); - } else { - hoverIndex = -2; - } - IntList keyframeTimes = activeScene.keyframeTimes; - - if (hoverIndex == -1) - drawKeyframe(ms, activeScene, true, 0, 0, hoverStartColor, hoverEndColor, 8); - else if (hoverIndex == keyframeTimes.size()) - drawKeyframe(ms, activeScene, true, activeScene.totalTime, width + 4, hoverStartColor, hoverEndColor, 8); - - for (int i = 0; i < keyframeTimes.size(); i++) { - int keyframeTime = keyframeTimes.getInt(i); - int keyframePos = (int) (((float) keyframeTime) / ((float) activeScene.totalTime) * (width + 4)); - - boolean selected = i == hoverIndex; - int startColor = selected ? hoverStartColor : idleStartColor; - int endColor = selected ? hoverEndColor : idleEndColor; - int height = selected ? 8 : 4; - - drawKeyframe(ms, activeScene, selected, keyframeTime, keyframePos, startColor, endColor, height); - - } - } - - private void drawKeyframe(MatrixStack ms, PonderScene activeScene, boolean selected, int keyframeTime, int keyframePos, int startColor, int endColor, int height) { - if (selected) { - FontRenderer font = Minecraft.getInstance().fontRenderer; - GuiUtils.drawGradientRect(ms.peek() - .getModel(), 100, keyframePos, 10, keyframePos + 1, 10 + height, endColor, startColor); - ms.push(); - ms.translate(0, 0, 100); - String text; - int offset; - if (activeScene.currentTime < keyframeTime) { - text = ">"; - offset = -1 - font.getStringWidth(text); - } else { - text = "<"; - offset = 3; - } - font.draw(ms, text, keyframePos + offset, 10, endColor); - ms.pop(); - } - - GuiUtils.drawGradientRect(ms.peek() - .getModel(), 500, keyframePos, -1, keyframePos + 1, 2 + height, startColor, endColor); - } - - @Override - public void playDownSound(SoundHandler handler) { - - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistry.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistry.java deleted file mode 100644 index 06348383c..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderRegistry.java +++ /dev/null @@ -1,197 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.io.BufferedInputStream; -import java.io.DataInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; -import java.util.zip.GZIPInputStream; - -import com.google.gson.JsonElement; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.ponder.PonderStoryBoardEntry.PonderStoryBoard; -import com.simibubi.create.foundation.ponder.content.PonderChapter; -import com.simibubi.create.foundation.ponder.content.PonderChapterRegistry; -import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.content.PonderTag; -import com.simibubi.create.foundation.ponder.content.PonderTagRegistry; -import com.simibubi.create.foundation.ponder.content.SharedText; -import com.tterrag.registrate.util.entry.ItemProviderEntry; - -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.CompressedStreamTools; -import net.minecraft.nbt.NBTSizeTracker; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.gen.feature.template.PlacementSettings; -import net.minecraft.world.gen.feature.template.Template; - -public class PonderRegistry { - - public static final PonderTagRegistry tags = new PonderTagRegistry(); - public static final PonderChapterRegistry chapters = new PonderChapterRegistry(); - public static Map> all = new HashMap<>(); - - public static PonderSceneBuilder addStoryBoard(ItemProviderEntry component, String schematic, - PonderStoryBoard storyBoard, PonderTag... tags) { - ResourceLocation id = component.getId(); - PonderStoryBoardEntry entry = new PonderStoryBoardEntry(storyBoard, schematic, id); - PonderSceneBuilder builder = new PonderSceneBuilder(entry); - if (tags.length > 0) - builder.highlightTags(tags); - all.computeIfAbsent(id, _$ -> new ArrayList<>()) - .add(entry); - return builder; - } - - public static PonderSceneBuilder addStoryBoard(PonderChapter chapter, ResourceLocation component, String schematic, - PonderStoryBoard storyBoard) { - if (component == null) - component = new ResourceLocation("minecraft", "stick"); - - PonderStoryBoardEntry entry = new PonderStoryBoardEntry(storyBoard, schematic, component); - PonderSceneBuilder builder = new PonderSceneBuilder(entry); - chapters.addStoriesToChapter(chapter, entry); - return builder; - } - - public static MultiSceneBuilder forComponents(ItemProviderEntry... components) { - return new MultiSceneBuilder(Arrays.asList(components)); - } - - public static MultiSceneBuilder forComponents(Iterable> components) { - return new MultiSceneBuilder(components); - } - - public static List compile(ResourceLocation id) { - return compile(all.get(id)); - } - - public static List compile(PonderChapter chapter) { - return compile(chapters.getStories(chapter)); - } - - public static List compile(List entries) { - if (PonderIndex.EDITOR_MODE) { - PonderLocalization.shared.clear(); - SharedText.gatherText(); - } - - List scenes = new ArrayList<>(); - - for (int i = 0; i < entries.size(); i++) { - PonderStoryBoardEntry sb = entries.get(i); - Template activeTemplate = loadSchematic(sb.getSchematicName()); - PonderWorld world = new PonderWorld(BlockPos.ZERO, Minecraft.getInstance().world); - activeTemplate.placeAndNotifyListeners(world, BlockPos.ZERO, new PlacementSettings(), world.rand); - world.createBackup(); - PonderScene scene = compileScene(i, sb, world); - scene.begin(); - scenes.add(scene); - } - - return scenes; - } - - public static PonderScene compileScene(int i, PonderStoryBoardEntry sb, PonderWorld world) { - PonderScene scene = new PonderScene(world, sb.getComponent(), sb.getTags()); - SceneBuilder builder = scene.builder(); - sb.getBoard() - .program(builder, scene.getSceneBuildingUtil()); - return scene; - } - - public static Template loadSchematic(String path) { - Template t = new Template(); - String filepath = "ponder/" + path + ".nbt"; - InputStream resourceAsStream = Create.class.getClassLoader() - .getResourceAsStream(filepath); - if (resourceAsStream == null) { - Create.LOGGER.error("Ponder schematic missing: " + path); - return t; - } - try (DataInputStream stream = - new DataInputStream(new BufferedInputStream(new GZIPInputStream(resourceAsStream)))) { - CompoundNBT nbt = CompressedStreamTools.read(stream, new NBTSizeTracker(0x20000000L)); - t.read(nbt); - } catch (IOException e) { - Create.LOGGER.warn("Failed to read ponder schematic", e); - } - return t; - } - - public static JsonElement provideLangEntries() { - PonderIndex.register(); - PonderTag.register(); - SharedText.gatherText(); - all.forEach((id, list) -> { - for (int i = 0; i < list.size(); i++) - compileScene(i, list.get(i), null); - }); - return PonderLocalization.record(); - } - - public static class MultiSceneBuilder { - - private final Iterable> components; - - MultiSceneBuilder(Iterable> components) { - this.components = components; - } - - public MultiSceneBuilder addStoryBoard(String schematicPath, PonderStoryBoard storyBoard) { - return addStoryBoard(schematicPath, storyBoard, $ -> { - }); - } - - public MultiSceneBuilder addStoryBoard(String schematicPath, PonderStoryBoard storyBoard, PonderTag... tags) { - return addStoryBoard(schematicPath, storyBoard, sb -> sb.highlightTags(tags)); - } - - public MultiSceneBuilder addStoryBoard(String schematicPath, PonderStoryBoard storyBoard, - Consumer extras) { - components.forEach(c -> extras.accept(PonderRegistry.addStoryBoard(c, schematicPath, storyBoard))); - return this; - } - - } - - public static class PonderSceneBuilder { - - private final PonderStoryBoardEntry entry; - - PonderSceneBuilder(PonderStoryBoardEntry entry) { - this.entry = entry; - } - - public PonderSceneBuilder highlightAllTags() { - entry.getTags() - .add(PonderTag.Highlight.ALL); - return this; - } - - public PonderSceneBuilder highlightTags(PonderTag... tags) { - entry.getTags() - .addAll(Arrays.asList(tags)); - return this; - } - - public PonderSceneBuilder chapter(PonderChapter chapter) { - PonderRegistry.chapters.addStoriesToChapter(chapter, entry); - return this; - } - - public PonderSceneBuilder chapters(PonderChapter... chapters) { - for (PonderChapter c : chapters) - chapter(c); - return this; - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java deleted file mode 100644 index 5706e685e..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderScene.java +++ /dev/null @@ -1,527 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; - -import org.apache.commons.lang3.mutable.MutableDouble; -import org.apache.commons.lang3.mutable.MutableObject; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.content.PonderTag; -import com.simibubi.create.foundation.ponder.elements.PonderOverlayElement; -import com.simibubi.create.foundation.ponder.elements.PonderSceneElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.HideAllInstruction; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.Pair; -import com.simibubi.create.foundation.utility.VecHelper; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import com.simibubi.create.foundation.utility.outliner.Outliner; - -import it.unimi.dsi.fastutil.ints.IntArrayList; -import it.unimi.dsi.fastutil.ints.IntList; -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ArmorStandEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector2f; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.util.math.vector.Vector4f; - -public class PonderScene { - - public static final String TITLE_KEY = "header"; - - boolean finished; - int sceneIndex; - int textIndex; - String sceneId; - - IntList keyframeTimes; - - List schedule, activeSchedule; - Map linkedElements; - Set elements; - List tags; - - PonderWorld world; - ResourceLocation component; - SceneTransform transform; - SceneRenderInfo info; - Outliner outliner; - String defaultTitle; - - Vector3d pointOfInterest; - Vector3d chasingPointOfInterest; - WorldSectionElement baseWorldSection; - Entity renderViewEntity; - - int basePlateOffsetX; - int basePlateOffsetZ; - int basePlateSize; - float scaleFactor; - float yOffset; - - boolean stoppedCounting; - int totalTime; - int currentTime; - - public PonderScene(PonderWorld world, ResourceLocation component, Collection tags) { - if (world != null) - world.scene = this; - - pointOfInterest = Vector3d.ZERO; - textIndex = 1; - - this.world = world; - this.component = component; - - outliner = new Outliner(); - elements = new HashSet<>(); - linkedElements = new HashMap<>(); - this.tags = new ArrayList<>(tags); - schedule = new ArrayList<>(); - activeSchedule = new ArrayList<>(); - transform = new SceneTransform(); - basePlateSize = getBounds().getXSize(); - info = new SceneRenderInfo(); - baseWorldSection = new WorldSectionElement(); - renderViewEntity = new ArmorStandEntity(world, 0, 0, 0); - keyframeTimes = new IntArrayList(4); - scaleFactor = 1; - yOffset = 0; - - setPointOfInterest(new Vector3d(0, 4, 0)); - } - - public void deselect() { - forEach(WorldSectionElement.class, WorldSectionElement::resetSelectedBlock); - } - - public Pair rayTraceScene(Vector3d from, Vector3d to) { - MutableObject> nearestHit = new MutableObject<>(); - MutableDouble bestDistance = new MutableDouble(0); - - forEach(WorldSectionElement.class, wse -> { - wse.resetSelectedBlock(); - if (!wse.isVisible()) - return; - Pair rayTrace = wse.rayTrace(world, from, to); - if (rayTrace == null) - return; - double distanceTo = rayTrace.getFirst() - .distanceTo(from); - if (nearestHit.getValue() != null && distanceTo >= bestDistance.getValue()) - return; - - nearestHit.setValue(Pair.of(wse, rayTrace.getSecond())); - bestDistance.setValue(distanceTo); - }); - - if (nearestHit.getValue() == null) - return Pair.of(ItemStack.EMPTY, null); - - BlockPos selectedPos = nearestHit.getValue() - .getSecond(); - - BlockPos origin = new BlockPos(basePlateOffsetX, 0, basePlateOffsetZ); - if (!world.getBounds() - .isVecInside(selectedPos)) - return Pair.of(ItemStack.EMPTY, null); - if (new MutableBoundingBox(origin, origin.add(new Vector3i(basePlateSize - 1, 0, basePlateSize - 1))) - .isVecInside(selectedPos)) { - if (PonderIndex.EDITOR_MODE) - nearestHit.getValue() - .getFirst() - .selectBlock(selectedPos); - return Pair.of(ItemStack.EMPTY, selectedPos); - } - - nearestHit.getValue() - .getFirst() - .selectBlock(selectedPos); - BlockState blockState = world.getBlockState(selectedPos); - ItemStack pickBlock = blockState.getPickBlock( - new BlockRayTraceResult(VecHelper.getCenterOf(selectedPos), Direction.UP, selectedPos, true), world, - selectedPos, Minecraft.getInstance().player); - - return Pair.of(pickBlock, selectedPos); - } - - public String getTitle() { - return getString(TITLE_KEY); - } - - public String getString(String key) { - return PonderLocalization.getSpecific(sceneId, key); - } - - public void reset() { - currentTime = 0; - activeSchedule.clear(); - schedule.forEach(mdi -> mdi.reset(this)); - } - - public void begin() { - reset(); - forEach(pe -> pe.reset(this)); - - world.restore(); - elements.clear(); - linkedElements.clear(); - keyframeTimes.clear(); - - transform = new SceneTransform(); - finished = false; - setPointOfInterest(new Vector3d(0, 4, 0)); - - baseWorldSection.setEmpty(); - baseWorldSection.forceApplyFade(1); - elements.add(baseWorldSection); - - totalTime = 0; - stoppedCounting = false; - activeSchedule.addAll(schedule); - activeSchedule.forEach(i -> i.onScheduled(this)); - } - - public WorldSectionElement getBaseWorldSection() { - return baseWorldSection; - } - - public float getSceneProgress() { - return totalTime == 0 ? 0 : currentTime / (float) totalTime; - } - - public void fadeOut() { - reset(); - activeSchedule.add(new HideAllInstruction(10, null)); - } - - public void renderScene(SuperRenderTypeBuffer buffer, MatrixStack ms, float pt) { - ms.push(); - Minecraft mc = Minecraft.getInstance(); - Entity prevRVE = mc.renderViewEntity; - - mc.renderViewEntity = this.renderViewEntity; - forEachVisible(PonderSceneElement.class, e -> e.renderFirst(world, buffer, ms, pt)); - mc.renderViewEntity = prevRVE; - - for (RenderType type : RenderType.getBlockLayers()) - forEachVisible(PonderSceneElement.class, e -> e.renderLayer(world, buffer, type, ms, pt)); - forEachVisible(PonderSceneElement.class, e -> e.renderLast(world, buffer, ms, pt)); - info.set(transform.xRotation.getValue(pt), transform.yRotation.getValue(pt)); - world.renderEntities(ms, buffer, info, pt); - world.renderParticles(ms, buffer, info, pt); - outliner.renderOutlines(ms, buffer, pt); - - ms.pop(); - } - - public void renderOverlay(PonderUI screen, MatrixStack ms, float partialTicks) { - ms.push(); - forEachVisible(PonderOverlayElement.class, e -> e.render(this, screen, ms, partialTicks)); - ms.pop(); - } - - public void setPointOfInterest(Vector3d poi) { - if (chasingPointOfInterest == null) - pointOfInterest = poi; - chasingPointOfInterest = poi; - } - - public Vector3d getPointOfInterest() { - return pointOfInterest; - } - - public void tick() { - if (chasingPointOfInterest != null) - pointOfInterest = VecHelper.lerp(.25f, pointOfInterest, chasingPointOfInterest); - - outliner.tickOutlines(); - world.tick(); - transform.tick(); - forEach(e -> e.tick(this)); - - if (currentTime < totalTime) - currentTime++; - - for (Iterator iterator = activeSchedule.iterator(); iterator.hasNext();) { - PonderInstruction instruction = iterator.next(); - instruction.tick(this); - if (instruction.isComplete()) { - iterator.remove(); - if (instruction.isBlocking()) - break; - continue; - } - if (instruction.isBlocking()) - break; - } - - if (activeSchedule.isEmpty()) - finished = true; - } - - public void seekToTime(int time) { - if (time < currentTime) - throw new IllegalStateException("Cannot seek backwards. Rewind first."); - - while (currentTime < time && !finished) { - forEach(e -> e.whileSkipping(this)); - tick(); - } - - forEach(WorldSectionElement.class, WorldSectionElement::queueRedraw); - } - - public void addToSceneTime(int time) { - if (!stoppedCounting) - totalTime += time; - } - - public void stopCounting() { - stoppedCounting = true; - } - - public void markKeyframe(int offset) { - if (!stoppedCounting) - keyframeTimes.add(totalTime + offset); - } - - public void addElement(PonderElement e) { - elements.add(e); - } - - public void linkElement(E e, ElementLink link) { - linkedElements.put(link.getId(), e); - } - - public E resolve(ElementLink link) { - return link.cast(linkedElements.get(link.getId())); - } - - public void runWith(ElementLink link, Consumer callback) { - callback.accept(resolve(link)); - } - - public F applyTo(ElementLink link, Function function) { - return function.apply(resolve(link)); - } - - public PonderWorld getWorld() { - return world; - } - - public Set getElements() { - return elements; - } - - public void forEach(Consumer function) { - for (PonderElement elemtent : elements) - function.accept(elemtent); - } - - public void forEachWorldEntity(Class type, Consumer function) { - world.getEntities() - .filter(type::isInstance) - .map(type::cast) - .forEach(function); - /* - * for (Entity element : world.getEntities()) { - * if (type.isInstance(element)) - * function.accept(type.cast(element)); - * } - */ - } - - public void forEach(Class type, Consumer function) { - for (PonderElement element : elements) - if (type.isInstance(element)) - function.accept(type.cast(element)); - } - - public void forEachVisible(Class type, Consumer function) { - for (PonderElement element : elements) - if (type.isInstance(element) && element.isVisible()) - function.accept(type.cast(element)); - } - - public MutableBoundingBox getBounds() { - return world == null ? new MutableBoundingBox() : world.getBounds(); - } - - public Supplier registerText(String defaultText) { - final String key = "text_" + textIndex; - PonderLocalization.registerSpecific(sceneId, key, defaultText); - Supplier supplier = () -> PonderLocalization.getSpecific(sceneId, key); - textIndex++; - return supplier; - } - - public SceneBuilder builder() { - return new SceneBuilder(this); - } - - public SceneBuildingUtil getSceneBuildingUtil() { - return new SceneBuildingUtil(getBounds()); - } - - public SceneTransform getTransform() { - return transform; - } - - public class SceneTransform { - - public LerpedFloat xRotation, yRotation; - - // Screen params - int width, height; - double offset; - Matrix4f cachedMat; - - public SceneTransform() { - xRotation = LerpedFloat.angular() - .startWithValue(-35); - yRotation = LerpedFloat.angular() - .startWithValue(55 + 90); - } - - public void tick() { - xRotation.tickChaser(); - yRotation.tickChaser(); - } - - public void updateScreenParams(int width, int height, double offset) { - this.width = width; - this.height = height; - this.offset = offset; - cachedMat = null; - } - - public MatrixStack apply(MatrixStack ms) { - return apply(ms, AnimationTickHolder.getPartialTicks(world), false); - } - - public MatrixStack apply(MatrixStack ms, float pt, boolean overlayCompatible) { - ms.translate(width / 2, height / 2, 200 + offset); - - MatrixStacker.of(ms) - .rotateX(-35) - .rotateY(55); - ms.translate(offset, 0, 0); - MatrixStacker.of(ms) - .rotateY(-55) - .rotateX(35); - MatrixStacker.of(ms) - .rotateX(xRotation.getValue(pt)) - .rotateY(yRotation.getValue(pt)); - - float f = 30 * scaleFactor; - - if (!overlayCompatible) { - ms.scale(f, -f, f); - ms.translate((basePlateSize + basePlateOffsetX) / -2f, -1f + yOffset, - (basePlateSize + basePlateOffsetZ) / -2f); - } else { - // For block breaking overlay; Don't ask - ms.scale(f, f, f); - if (f == 30) - ms.translate(0.525, .2975, .9); - ms.translate((basePlateSize + basePlateOffsetX) / -2f, -yOffset, - (basePlateSize + basePlateOffsetZ) / -2f); - float y = (float) (0.5065 * Math.pow(2.2975, Math.log(1 / scaleFactor) / Math.log(2))) / 30; - ms.scale(y, -y, -y); - } - - return ms; - } - - public void updateSceneRVE(float pt) { - Vector3d v = screenToScene(width / 2, height / 2, 500, pt); - renderViewEntity.setPosition(v.x, v.y, v.z); - } - - public Vector3d screenToScene(double x, double y, int depth, float pt) { - refreshMatrix(pt); - Vector3d vec = new Vector3d(x, y, depth); - - vec = vec.subtract(width / 2, height / 2, 200 + offset); - vec = VecHelper.rotate(vec, 35, Axis.X); - vec = VecHelper.rotate(vec, -55, Axis.Y); - vec = vec.subtract(offset, 0, 0); - vec = VecHelper.rotate(vec, 55, Axis.Y); - vec = VecHelper.rotate(vec, -35, Axis.X); - vec = VecHelper.rotate(vec, -xRotation.getValue(pt), Axis.X); - vec = VecHelper.rotate(vec, -yRotation.getValue(pt), Axis.Y); - - float f = 1f / (30 * scaleFactor); - - vec = vec.mul(f, -f, f); - vec = vec.subtract((basePlateSize + basePlateOffsetX) / -2f, -1f + yOffset, - (basePlateSize + basePlateOffsetZ) / -2f); - - return vec; - } - - public Vector2f sceneToScreen(Vector3d vec, float pt) { - refreshMatrix(pt); - Vector4f vec4 = new Vector4f((float) vec.x, (float) vec.y, (float) vec.z, 1); - vec4.transform(cachedMat); - return new Vector2f(vec4.getX(), vec4.getY()); - } - - protected void refreshMatrix(float pt) { - if (cachedMat != null) - return; - cachedMat = apply(new MatrixStack(), pt, false).peek() - .getModel(); - } - - } - - public class SceneRenderInfo extends ActiveRenderInfo { - - public void set(float xRotation, float yRotation) { - setDirection(yRotation, xRotation); - } - - } - - public Outliner getOutliner() { - return outliner; - } - - public boolean isFinished() { - return finished; - } - - public void setFinished(boolean finished) { - this.finished = finished; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderStoryBoardEntry.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderStoryBoardEntry.java deleted file mode 100644 index 6d6ab1c98..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderStoryBoardEntry.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.foundation.ponder.content.PonderTag; - -import net.minecraft.util.ResourceLocation; - -public class PonderStoryBoardEntry { - - private final String schematicName; - private final PonderStoryBoard board; - private final List tags; - private final ResourceLocation component; - - public PonderStoryBoardEntry(PonderStoryBoard board, String schematicName, ResourceLocation component) { - this.board = board; - this.schematicName = schematicName; - this.tags = new ArrayList<>(); - this.component = component; - } - - public interface PonderStoryBoard { - void program(SceneBuilder scene, SceneBuildingUtil util); - } - - public String getSchematicName() { - return schematicName; - } - - public PonderStoryBoard getBoard() { - return board; - } - - public List getTags() { - return tags; - } - - public ResourceLocation getComponent() { - return component; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java deleted file mode 100644 index 0cb380252..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderTooltipHandler.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.List; - -import com.google.common.base.Strings; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.client.util.InputMappings; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.client.event.RenderTooltipEvent; - -public class PonderTooltipHandler { - - static LerpedFloat holdWProgress = LerpedFloat.linear() - .startWithValue(0); - static ItemStack hoveredStack = ItemStack.EMPTY; - static ItemStack trackingStack = ItemStack.EMPTY; - static boolean subject = false; - static boolean deferTick = false; - - public static final String HOLD_TO_PONDER = PonderLocalization.LANG_PREFIX + "hold_to_ponder"; - public static final String SUBJECT = PonderLocalization.LANG_PREFIX + "subject"; - - public static void tick() { - deferTick = true; - } - - public static void deferredTick() { - deferTick = false; - if (hoveredStack.isEmpty() || trackingStack.isEmpty()) { - trackingStack = ItemStack.EMPTY; - holdWProgress.startWithValue(0); - return; - } - - Minecraft instance = Minecraft.getInstance(); - Screen currentScreen = instance.currentScreen; - float value = holdWProgress.getValue(); - int keyCode = ponderKeybind().getKey() - .getKeyCode(); - long window = instance.getWindow() - .getHandle(); - - if (!subject && InputMappings.isKeyDown(window, keyCode)) { - if (value >= 1) { - if (currentScreen instanceof NavigatableSimiScreen) - ((NavigatableSimiScreen) currentScreen).centerScalingOnMouse(); - ScreenOpener.transitionTo(PonderUI.of(trackingStack)); - holdWProgress.startWithValue(0); - return; - } - holdWProgress.setValue(Math.min(1, value + Math.max(.25f, value) * .25f)); - } else - holdWProgress.setValue(Math.max(0, value - .05f)); - - hoveredStack = ItemStack.EMPTY; - } - - public static void addToTooltip(List toolTip, ItemStack stack) { - updateHovered(stack); - - if (deferTick) - deferredTick(); - - if (trackingStack != stack) - return; - - float renderPartialTicks = Minecraft.getInstance() - .getRenderPartialTicks(); - ITextComponent component = subject ? Lang.createTranslationTextComponent(SUBJECT) - .formatted(TextFormatting.GREEN) - : makeProgressBar(Math.min(1, holdWProgress.getValue(renderPartialTicks) * 8 / 7f)); - if (toolTip.size() < 2) - toolTip.add(component); - else - toolTip.add(1, component); - } - - protected static void updateHovered(ItemStack stack) { - Minecraft instance = Minecraft.getInstance(); - Screen currentScreen = instance.currentScreen; - ItemStack prevStack = trackingStack; - hoveredStack = ItemStack.EMPTY; - subject = false; - - if (currentScreen instanceof PonderUI) { - PonderUI ponderUI = (PonderUI) currentScreen; - if (stack.isItemEqual(ponderUI.getSubject())) - subject = true; - } - - if (stack.isEmpty()) - return; - if (!PonderRegistry.all.containsKey(stack.getItem() - .getRegistryName())) - return; - - if (prevStack.isEmpty() || !prevStack.isItemEqual(stack)) - holdWProgress.startWithValue(0); - - hoveredStack = stack; - trackingStack = stack; - } - - public static void handleTooltipColor(RenderTooltipEvent.Color event) { - if (trackingStack != event.getStack()) - return; - if (holdWProgress.getValue() == 0) - return; - float renderPartialTicks = Minecraft.getInstance() - .getRenderPartialTicks(); - int start = event.getOriginalBorderStart(); - int end = event.getOriginalBorderEnd(); - float progress = Math.min(1, holdWProgress.getValue(renderPartialTicks) * 8 / 7f); - - start = getSmoothColorForProgress(progress); - end = getSmoothColorForProgress((progress)); - - event.setBorderStart(start | 0xa0000000); - event.setBorderEnd(end | 0xa0000000); - } - - private static int getSmoothColorForProgress(float progress) { - if (progress < .5f) - return ColorHelper.mixColors(0x5000FF, 5592575, progress * 2); - return ColorHelper.mixColors(5592575, 0xffffff, (progress - .5f) * 2); - } - - private static ITextComponent makeProgressBar(float progress) { - IFormattableTextComponent holdW = Lang - .translate(HOLD_TO_PONDER, - ((IFormattableTextComponent) ponderKeybind().getBoundKeyLocalizedText()).formatted(TextFormatting.GRAY)) - .formatted(TextFormatting.DARK_GRAY); - - FontRenderer fontRenderer = Minecraft.getInstance().fontRenderer; - float charWidth = fontRenderer.getStringWidth("|"); - float tipWidth = fontRenderer.getWidth(holdW); - - int total = (int) (tipWidth / charWidth); - int current = (int) (progress * total); - - if (progress > 0) { - String bars = ""; - bars += TextFormatting.GRAY + Strings.repeat("|", current); - if (progress < 1) - bars += TextFormatting.DARK_GRAY + Strings.repeat("|", total - current); - return new StringTextComponent(bars); - } - - return holdW; - } - - protected static KeyBinding ponderKeybind() { - return Minecraft.getInstance().gameSettings.keyBindForward; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java deleted file mode 100644 index 1fe81d97f..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderUI.java +++ /dev/null @@ -1,977 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import static com.simibubi.create.foundation.ponder.PonderLocalization.LANG_PREFIX; - -import java.awt.*; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Random; -import java.util.stream.IntStream; - -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.BoxElement; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.ponder.PonderScene.SceneTransform; -import com.simibubi.create.foundation.ponder.content.DebugScenes; -import com.simibubi.create.foundation.ponder.content.PonderChapter; -import com.simibubi.create.foundation.ponder.content.PonderIndex; -import com.simibubi.create.foundation.ponder.content.PonderTag; -import com.simibubi.create.foundation.ponder.content.PonderTagScreen; -import com.simibubi.create.foundation.ponder.elements.TextWindowElement; -import com.simibubi.create.foundation.ponder.ui.PonderButton; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.FontHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.Pair; -import com.simibubi.create.foundation.utility.Pointing; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; - -import net.minecraft.client.ClipboardHelper; -import net.minecraft.client.GameSettings; -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.widget.Widget; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.Style; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.gen.feature.template.PlacementSettings; -import net.minecraft.world.gen.feature.template.Template; -import net.minecraftforge.fml.client.gui.GuiUtils; -import net.minecraftforge.registries.ForgeRegistries; - -public class PonderUI extends NavigatableSimiScreen { - - public static int ponderTicks; - public static float ponderPartialTicksPaused; - - public static final String PONDERING = LANG_PREFIX + "pondering"; - public static final String IDENTIFY_MODE = LANG_PREFIX + "identify_mode"; - public static final String IN_CHAPTER = LANG_PREFIX + "in_chapter"; - public static final String IDENTIFY = LANG_PREFIX + "identify"; - public static final String PREVIOUS = LANG_PREFIX + "previous"; - public static final String CLOSE = LANG_PREFIX + "close"; - public static final String NEXT = LANG_PREFIX + "next"; - public static final String REPLAY = LANG_PREFIX + "replay"; - public static final String SLOW_TEXT = LANG_PREFIX + "slow_text"; - - private List scenes; - private List tags; - private List tagButtons; - private List tagFades; - private LerpedFloat fadeIn; - ItemStack stack; - PonderChapter chapter = null; - - private boolean userViewMode; - private boolean identifyMode; - private ItemStack hoveredTooltipItem; - private BlockPos hoveredBlockPos; - - private ClipboardHelper clipboardHelper; - private BlockPos copiedBlockPos; - - private LerpedFloat finishingFlash; - private int finishingFlashWarmup = 0; - - private LerpedFloat lazyIndex; - private int index = 0; - private PonderTag referredToByTag; - - private PonderButton left, right, scan, chap, userMode, close, replay, slowMode; - private PonderProgressBar progressBar; - private int skipCooling = 0; - - private int extendedTickLength = 0; - private int extendedTickTimer = 0; - - public static PonderUI of(ResourceLocation id) { - return new PonderUI(PonderRegistry.compile(id)); - } - - public static PonderUI of(ItemStack item) { - return new PonderUI(PonderRegistry.compile(item.getItem() - .getRegistryName())); - } - - public static PonderUI of(ItemStack item, PonderTag tag) { - PonderUI ponderUI = new PonderUI(PonderRegistry.compile(item.getItem() - .getRegistryName())); - ponderUI.referredToByTag = tag; - return ponderUI; - } - - public static PonderUI of(PonderChapter chapter) { - PonderUI ui = new PonderUI(PonderRegistry.compile(chapter)); - ui.chapter = chapter; - return ui; - } - - PonderUI(List scenes) { - ResourceLocation component = scenes.get(0).component; - if (ForgeRegistries.ITEMS.containsKey(component)) - stack = new ItemStack(ForgeRegistries.ITEMS.getValue(component)); - else - stack = new ItemStack(ForgeRegistries.BLOCKS.getValue(component)); - - tags = new ArrayList<>(PonderRegistry.tags.getTags(component)); - this.scenes = scenes; - if (scenes.isEmpty()) { - List l = Collections.singletonList(new PonderStoryBoardEntry(DebugScenes::empty, - "debug/scene_1", new ResourceLocation("minecraft", "stick"))); - scenes.addAll(PonderRegistry.compile(l)); - } - lazyIndex = LerpedFloat.linear() - .startWithValue(index); - fadeIn = LerpedFloat.linear() - .startWithValue(0) - .chase(1, .1f, Chaser.EXP); - clipboardHelper = new ClipboardHelper(); - finishingFlash = LerpedFloat.linear() - .startWithValue(0) - .chase(0, .1f, Chaser.EXP); - } - - @Override - protected void init() { - widgets.clear(); - super.init(); - - tagButtons = new ArrayList<>(); - tagFades = new ArrayList<>(); - - tags.forEach(t -> { - int i = tagButtons.size(); - int x = 31; - int y = 81 + i * 30; - - PonderButton b2 = new PonderButton(x, y) - .showing(t) - .withCallback((mX, mY) -> { - centerScalingOn(mX, mY); - ScreenOpener.transitionTo(new PonderTagScreen(t)); - }); - - widgets.add(b2); - tagButtons.add(b2); - - LerpedFloat chase = LerpedFloat.linear() - .startWithValue(0) - .chase(0, .05f, Chaser.exp(.1)); - tagFades.add(chase); - - }); - - /*if (chapter != null) { - widgets.add(chap = new PonderButton(width - 31 - 24, 31, () -> { - }).showing(chapter)); - }*/ - - GameSettings bindings = client.gameSettings; - int spacing = 8; - int bX = (width - 20) / 2 - (70 + 2 * spacing); - int bY = height - 20 - 31; - - { - int pX = (width / 2) - 110; - int pY = bY + 20 + 4; - int pW = width - 2 * pX; - widgets.add(progressBar = new PonderProgressBar(this, pX, pY, pW, 1)); - } - - widgets.add(scan = new PonderButton(bX, bY) - .withShortcut(bindings.keyBindDrop) - .showing(AllIcons.I_MTD_SCAN) - .enableFade(0, 5) - .withCallback(() -> { - identifyMode = !identifyMode; - if (!identifyMode) - scenes.get(index) - .deselect(); - else - ponderPartialTicksPaused = client.getRenderPartialTicks(); - })); - - widgets.add(slowMode = new PonderButton(width - 20 - 31, bY) - .showing(AllIcons.I_MTD_SLOW_MODE) - .enableFade(0, 5) - .withCallback(() -> setComfyReadingEnabled(!isComfyReadingEnabled()))); - - if (PonderIndex.EDITOR_MODE) { - widgets.add(userMode = new PonderButton(width - 50 - 31, bY) - .showing(AllIcons.I_MTD_USER_MODE) - .enableFade(0, 5) - .withCallback(() -> userViewMode = !userViewMode)); - } - - bX += 50 + spacing; - widgets.add(left = new PonderButton(bX, bY) - .withShortcut(bindings.keyBindLeft) - .showing(AllIcons.I_MTD_LEFT) - .enableFade(0, 5) - .withCallback(() -> this.scroll(false))); - - bX += 20 + spacing; - widgets.add(close = new PonderButton(bX, bY) - .withShortcut(bindings.keyBindInventory) - .showing(AllIcons.I_MTD_CLOSE) - .enableFade(0, 5) - .withCallback(this::onClose)); - - bX += 20 + spacing; - widgets.add(right = new PonderButton(bX, bY) - .withShortcut(bindings.keyBindRight) - .showing(AllIcons.I_MTD_RIGHT) - .enableFade(0, 5) - .withCallback(() -> this.scroll(true))); - - bX += 50 + spacing; - widgets.add(replay = new PonderButton(bX, bY) - .withShortcut(bindings.keyBindBack) - .showing(AllIcons.I_MTD_REPLAY) - .enableFade(0, 5) - .withCallback(this::replay)); - } - - @Override - public void tick() { - super.tick(); - - if (skipCooling > 0) - skipCooling--; - - if (referredToByTag != null) { - for (int i = 0; i < scenes.size(); i++) { - PonderScene ponderScene = scenes.get(i); - if (!ponderScene.tags.contains(referredToByTag)) - continue; - if (i == index) - break; - scenes.get(index) - .fadeOut(); - index = i; - scenes.get(index) - .begin(); - lazyIndex.chase(index, 1 / 4f, Chaser.EXP); - identifyMode = false; - break; - } - referredToByTag = null; - } - - lazyIndex.tickChaser(); - fadeIn.tickChaser(); - finishingFlash.tickChaser(); - PonderScene activeScene = scenes.get(index); - - extendedTickLength = 0; - if (isComfyReadingEnabled()) - activeScene.forEachVisible(TextWindowElement.class, twe -> extendedTickLength = 2); - - if (extendedTickTimer == 0) { - if (!identifyMode) { - ponderTicks++; - if (skipCooling == 0) - activeScene.tick(); - } - - if (!identifyMode) { - float lazyIndexValue = lazyIndex.getValue(); - if (Math.abs(lazyIndexValue - index) > 1 / 512f) - scenes.get(lazyIndexValue < index ? index - 1 : index + 1) - .tick(); - } - extendedTickTimer = extendedTickLength; - } else - extendedTickTimer--; - - progressBar.tick(); - - if (activeScene.currentTime == activeScene.totalTime - 1) - finishingFlashWarmup = 30; - if (finishingFlashWarmup > 0) { - finishingFlashWarmup--; - if (finishingFlashWarmup == 0) { - finishingFlash.setValue(1); - finishingFlash.setValue(1); - } - } - - updateIdentifiedItem(activeScene); - } - - public PonderScene getActiveScene() { - return scenes.get(index); - } - - public void seekToTime(int time) { - if (getActiveScene().currentTime > time) - replay(); - - getActiveScene().seekToTime(time); - if (time != 0) - coolDownAfterSkip(); - } - - public void updateIdentifiedItem(PonderScene activeScene) { - hoveredTooltipItem = ItemStack.EMPTY; - hoveredBlockPos = null; - if (!identifyMode) - return; - - MainWindow w = client.getWindow(); - double mouseX = client.mouseHelper.getMouseX() * w.getScaledWidth() / w.getWidth(); - double mouseY = client.mouseHelper.getMouseY() * w.getScaledHeight() / w.getHeight(); - SceneTransform t = activeScene.getTransform(); - Vector3d vec1 = t.screenToScene(mouseX, mouseY, 1000, 0); - Vector3d vec2 = t.screenToScene(mouseX, mouseY, -100, 0); - Pair pair = activeScene.rayTraceScene(vec1, vec2); - hoveredTooltipItem = pair.getFirst(); - hoveredBlockPos = pair.getSecond(); - } - - @Override - public boolean mouseScrolled(double mouseX, double mouseY, double delta) { - if (scroll(delta > 0)) - return true; - return super.mouseScrolled(mouseX, mouseY, delta); - } - - protected void replay() { - identifyMode = false; - PonderScene scene = scenes.get(index); - - if (hasShiftDown()) { - List list = PonderRegistry.all.get(scene.component); - PonderStoryBoardEntry sb = list.get(index); - Template activeTemplate = PonderRegistry.loadSchematic(sb.getSchematicName()); - PonderWorld world = new PonderWorld(BlockPos.ZERO, Minecraft.getInstance().world); - activeTemplate.placeAndNotifyListeners(world, BlockPos.ZERO, new PlacementSettings(), new Random()); - world.createBackup(); - scene = PonderRegistry.compileScene(index, sb, world); - scene.begin(); - scenes.set(index, scene); - } - - scene.begin(); - } - - protected boolean scroll(boolean forward) { - int prevIndex = index; - index = forward ? index + 1 : index - 1; - index = MathHelper.clamp(index, 0, scenes.size() - 1); - if (prevIndex != index) {// && Math.abs(index - lazyIndex.getValue()) < 1.5f) { - scenes.get(prevIndex) - .fadeOut(); - scenes.get(index) - .begin(); - lazyIndex.chase(index, 1 / 4f, Chaser.EXP); - identifyMode = false; - return true; - } else - index = prevIndex; - return false; - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - partialTicks = getPartialTicks(); - RenderSystem.enableBlend(); - renderVisibleScenes(ms, mouseX, mouseY, - skipCooling > 0 ? 0 : identifyMode ? ponderPartialTicksPaused : partialTicks); - renderWidgets(ms, mouseX, mouseY, identifyMode ? ponderPartialTicksPaused : partialTicks); - } - - @Override - public void renderBackground(MatrixStack ms) { - super.renderBackground(ms); - } - - protected void renderVisibleScenes(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - renderScene(ms, mouseX, mouseY, index, partialTicks); - float lazyIndexValue = lazyIndex.getValue(partialTicks); - if (Math.abs(lazyIndexValue - index) > 1 / 512f) - renderScene(ms, mouseX, mouseY, lazyIndexValue < index ? index - 1 : index + 1, partialTicks); - } - - protected void renderScene(MatrixStack ms, int mouseX, int mouseY, int i, float partialTicks) { - SuperRenderTypeBuffer buffer = SuperRenderTypeBuffer.getInstance(); - PonderScene story = scenes.get(i); - double value = lazyIndex.getValue(client.getRenderPartialTicks()); - double diff = i - value; - double slide = MathHelper.lerp(diff * diff, 200, 600) * diff; - - RenderSystem.enableAlphaTest(); - RenderSystem.enableBlend(); - RenderSystem.enableDepthTest(); - - RenderSystem.pushMatrix(); - - // has to be outside of MS transforms, important for vertex sorting - RenderSystem.translated(0, 0, 800); - - ms.push(); - ms.translate(0, 0, -800); - story.transform.updateScreenParams(width, height, slide); - story.transform.apply(ms, partialTicks, false); - story.transform.updateSceneRVE(partialTicks); - story.renderScene(buffer, ms, partialTicks); - buffer.draw(); - - MutableBoundingBox bounds = story.getBounds(); - ms.push(); - - // kool shadow fx - { - RenderSystem.enableCull(); - RenderSystem.enableDepthTest(); - ms.push(); - ms.translate(story.basePlateOffsetX, 0, story.basePlateOffsetZ); - ms.scale(1, -1, 1); - - float flash = finishingFlash.getValue(partialTicks) * .9f; - float alpha = flash; - flash *= flash; - flash = ((flash * 2) - 1); - flash *= flash; - flash = 1 - flash; - - for (int f = 0; f < 4; f++) { - ms.translate(story.basePlateSize, 0, 0); - ms.push(); - ms.translate(0, 0, -1 / 1024f); - if (flash > 0) { - ms.push(); - ms.scale(1, .5f + flash * .75f, 1); - GuiUtils.drawGradientRect(ms.peek() - .getModel(), 0, 0, -1, -story.basePlateSize, 0, 0x00_c6ffc9, - ColorHelper.applyAlpha(0xaa_c6ffc9, alpha)); - ms.pop(); - } - ms.translate(0, 0, 2 / 1024f); - GuiUtils.drawGradientRect(ms.peek() - .getModel(), 0, 0, 0, -story.basePlateSize, 4, 0x66_000000, 0x00_000000); - ms.pop(); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-90)); - } - ms.pop(); - RenderSystem.disableCull(); - RenderSystem.disableDepthTest(); - } - - // coords for debug - if (PonderIndex.EDITOR_MODE && !userViewMode) { - - ms.scale(-1, -1, 1); - ms.scale(1 / 16f, 1 / 16f, 1 / 16f); - ms.translate(1, -8, -1 / 64f); - - // X AXIS - ms.push(); - ms.translate(4, -3, 0); - ms.translate(0, 0, -2 / 1024f); - for (int x = 0; x <= bounds.getXSize(); x++) { - ms.translate(-16, 0, 0); - textRenderer.draw(ms, x == bounds.getXSize() ? "x" : "" + x, 0, 0, 0xFFFFFFFF); - } - ms.pop(); - - // Z AXIS - ms.push(); - ms.scale(-1, 1, 1); - ms.translate(0, -3, -4); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-90)); - ms.translate(-8, -2, 2 / 64f); - for (int z = 0; z <= bounds.getZSize(); z++) { - ms.translate(16, 0, 0); - textRenderer.draw(ms, z == bounds.getZSize() ? "z" : "" + z, 0, 0, 0xFFFFFFFF); - } - ms.pop(); - - // DIRECTIONS - ms.push(); - ms.translate(bounds.getXSize() * -8, 0, bounds.getZSize() * 8); - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(-90)); - for (Direction d : Iterate.horizontalDirections) { - ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(90)); - ms.push(); - ms.translate(0, 0, bounds.getZSize() * 16); - ms.multiply(Vector3f.POSITIVE_X.getDegreesQuaternion(-90)); - textRenderer.draw(ms, d.name() - .substring(0, 1), 0, 0, 0x66FFFFFF); - textRenderer.draw(ms, "|", 2, 10, 0x44FFFFFF); - textRenderer.draw(ms, ".", 2, 14, 0x22FFFFFF); - ms.pop(); - } - ms.pop(); - buffer.draw(); - } - - ms.pop(); - ms.pop(); - RenderSystem.popMatrix(); - } - - protected void renderWidgets(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - float fade = fadeIn.getValue(partialTicks); - float lazyIndexValue = lazyIndex.getValue(partialTicks); - float indexDiff = Math.abs(lazyIndexValue - index); - PonderScene activeScene = scenes.get(index); - - boolean noWidgetsHovered = true; - for (Widget widget : widgets) - noWidgetsHovered &= !widget.isMouseOver(mouseX, mouseY); - - int tooltipColor = Theme.i(Theme.Key.TEXT_DARKER); - { - // Chapter title - ms.push(); - ms.translate(0, 0, 100); - int x = 31 + 20 + 8; - int y = 31; - - String title = activeScene.getTitle(); - int wordWrappedHeight = textRenderer.getWordWrappedHeight(title, left.x - 51); - - int streakHeight = 35 - 9 + wordWrappedHeight; - UIRenderHelper.streak(ms, 0, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (150 * fade)); - UIRenderHelper.streak(ms, 180, x - 4, y - 12 + streakHeight / 2, streakHeight, (int) (30 * fade)); - new BoxElement() - .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) - .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) - .at(21, 21, 100) - .withBounds(30, 30) - .render(ms); - - - GuiGameElement.of(stack) - .scale(2) - .at(x - 39, y - 11) - .render(ms); - - textRenderer.draw(ms, Lang.translate(PONDERING), x, y - 6, tooltipColor); - y += 8; - x += 0; - ms.translate(x, y, 0); - ms.multiply(Vector3f.NEGATIVE_X.getDegreesQuaternion(indexDiff * -75)); - ms.translate(0, 0, 5); - FontHelper.drawSplitString(ms, textRenderer, title, 0, 0, left.x - 51, - ColorHelper.applyAlpha(Theme.i(Theme.Key.TEXT), 1 - indexDiff)); - ms.pop(); - - if (chapter != null) { - ms.push(); - - ms.translate(chap.x - 4 - 4, chap.y, 0); - UIRenderHelper.streak(ms, 180, 4, 10, 26, (int) (150 * fade)); - - drawRightAlignedString(textRenderer, ms, Lang.translate(IN_CHAPTER).getString(), 0, 0, tooltipColor); - drawRightAlignedString(textRenderer, ms, - Lang.translate(LANG_PREFIX + "chapter." + chapter.getId()).getString(), 0, 12, Theme.i(Theme.Key.TEXT)); - - ms.pop(); - } - - UIRenderHelper.breadcrumbArrow(ms, width / 2 - 20, height - 51, 0, 20, 20, 5, 0x40aa9999, 0x20aa9999); - UIRenderHelper.breadcrumbArrow(ms, width / 2 + 20, height - 51, 0, -20, 20, -5, 0x40aa9999, 0x20aa9999); - UIRenderHelper.breadcrumbArrow(ms, width / 2 - 90, height - 51, 0, 70, 20, 5, 0x40aa9999, 0x10aa9999); - UIRenderHelper.breadcrumbArrow(ms, width / 2 + 90, height - 51, 0, -70, 20, -5, 0x40aa9999, 0x10aa9999); - } - - if (identifyMode) { - if (noWidgetsHovered && mouseY < height - 80) { - ms.push(); - ms.translate(mouseX, mouseY, 100); - if (hoveredTooltipItem.isEmpty()) { - IFormattableTextComponent text = Lang.translate( - IDENTIFY_MODE, - ((IFormattableTextComponent) client.gameSettings.keyBindDrop.getBoundKeyLocalizedText()).formatted(TextFormatting.WHITE) - ).formatted(TextFormatting.GRAY); - - //renderOrderedTooltip(ms, textRenderer.wrapLines(text, width / 3), 0, 0); - renderWrappedToolTip(ms, textRenderer.getTextHandler().wrapLines(text, width / 3, Style.EMPTY), 0, 0, textRenderer); - /*String tooltip = Lang - .createTranslationTextComponent(IDENTIFY_MODE, client.gameSettings.keyBindDrop.getBoundKeyLocalizedText().applyTextStyle(TextFormatting.WHITE)) - .applyTextStyle(TextFormatting.GRAY) - .getFormattedText(); - renderTooltip(font.listFormattedStringToWidth(tooltip, width / 3), 0, 0);*/ - } else - renderTooltip(ms, hoveredTooltipItem, 0, 0); - if (hoveredBlockPos != null && PonderIndex.EDITOR_MODE && !userViewMode) { - ms.translate(0, -15, 0); - boolean copied = copiedBlockPos != null && hoveredBlockPos.equals(copiedBlockPos); - IFormattableTextComponent coords = new StringTextComponent(hoveredBlockPos.getX() + ", " + hoveredBlockPos.getY() + ", " + hoveredBlockPos.getZ()) - .formatted(copied ? TextFormatting.GREEN : TextFormatting.GOLD); - renderTooltip(ms, coords, 0, 0); - } - ms.pop(); - } - scan.flash(); - } else { - scan.dim(); - } - - if (PonderIndex.EDITOR_MODE) { - if (userViewMode) - userMode.flash(); - else - userMode.dim(); - } - - if (isComfyReadingEnabled()) - slowMode.flash(); - else - slowMode.dim(); - - { - // Scene overlay - float scenePT = skipCooling > 0 ? 0 : partialTicks; - ms.push(); - ms.translate(0, 0, 100); - renderOverlay(ms, index, scenePT); - if (indexDiff > 1 / 512f) - renderOverlay(ms, lazyIndexValue < index ? index - 1 : index + 1, scenePT); - ms.pop(); - } - - // Widgets - widgets.forEach(w -> { - if (w instanceof PonderButton) { - ((PonderButton) w).fade().startWithValue(fade); - } - }); - - if (index == 0 || index == 1 && lazyIndexValue < index) - left.fade().startWithValue(lazyIndexValue); - if (index == scenes.size() - 1 || index == scenes.size() - 2 && lazyIndexValue > index) - right.fade().startWithValue(scenes.size() - lazyIndexValue - 1); - - boolean finished = activeScene.isFinished(); - if (finished) - right.flash(); - else - right.dim(); - - // Tags - List sceneTags = activeScene.tags; - boolean highlightAll = sceneTags.contains(PonderTag.Highlight.ALL); - double s = Minecraft.getInstance() - .getWindow() - .getGuiScaleFactor(); - IntStream.range(0, tagButtons.size()) - .forEach(i -> { - ms.push(); - LerpedFloat chase = tagFades.get(i); - PonderButton button = tagButtons.get(i); - if (button.isMouseOver(mouseX, mouseY)) { - chase.updateChaseTarget(1); - } else - chase.updateChaseTarget(0); - - chase.tickChaser(); - - if (highlightAll) - button.flash(); - else - button.dim(); - - int x = button.x + button.getWidth() + 4; - int y = button.y - 2; - ms.translate(x, y + 5 * (1 - fade), 800); - - float fadedWidth = 200 * chase.getValue(partialTicks); - UIRenderHelper.streak(ms, 0, 0, 12, 26, (int) fadedWidth); - - GL11.glScissor((int) (x * s), 0, (int) (fadedWidth * s), (int) (height * s)); - GL11.glEnable(GL11.GL_SCISSOR_TEST); - - String tagName = this.tags.get(i) - .getTitle(); - textRenderer.draw(ms, tagName, 3, 8, Theme.i(Theme.Key.TEXT_ACCENT_SLIGHT)); - - GL11.glDisable(GL11.GL_SCISSOR_TEST); - - ms.pop(); - }); - - ms.push(); - ms.translate(0, 0, 500); - int tooltipY = height - 16; - if (scan.isHovered()) - drawCenteredText(ms, textRenderer, Lang.translate(IDENTIFY), scan.x + 10, tooltipY, tooltipColor); - if (index != 0 && left.isHovered()) - drawCenteredText(ms, textRenderer, Lang.translate(PREVIOUS), left.x + 10, tooltipY, tooltipColor); - if (close.isHovered()) - drawCenteredText(ms, textRenderer, Lang.translate(CLOSE), close.x + 10, tooltipY, tooltipColor); - if (index != scenes.size() - 1 && right.isHovered()) - drawCenteredText(ms, textRenderer, Lang.translate(NEXT), right.x + 10, tooltipY, tooltipColor); - if (replay.isHovered()) - drawCenteredText(ms, textRenderer, Lang.translate(REPLAY), replay.x + 10, tooltipY, tooltipColor); - if (slowMode.isHovered()) - drawCenteredText(ms, textRenderer, Lang.translate(SLOW_TEXT), slowMode.x + 5, tooltipY, tooltipColor); - if (PonderIndex.EDITOR_MODE && userMode.isHovered()) - drawCenteredString(ms, textRenderer, "Editor View", userMode.x + 10, tooltipY, tooltipColor); - ms.pop(); - } - - private void renderOverlay(MatrixStack ms, int i, float partialTicks) { - if (identifyMode) - return; - ms.push(); - PonderScene story = scenes.get(i); - story.renderOverlay(this, ms, skipCooling > 0 ? 0 : identifyMode ? ponderPartialTicksPaused : partialTicks); - ms.pop(); - } - - @Override - public boolean mouseClicked(double x, double y, int button) { - if (identifyMode && hoveredBlockPos != null && PonderIndex.EDITOR_MODE) { - long handle = client.getWindow() - .getHandle(); - if (copiedBlockPos != null && button == 1) { - clipboardHelper.setClipboardString(handle, - "util.select.fromTo(" + copiedBlockPos.getX() + ", " + copiedBlockPos.getY() + ", " - + copiedBlockPos.getZ() + ", " + hoveredBlockPos.getX() + ", " + hoveredBlockPos.getY() + ", " - + hoveredBlockPos.getZ() + ")"); - copiedBlockPos = hoveredBlockPos; - return true; - } - - if (hasShiftDown()) - clipboardHelper.setClipboardString(handle, "util.select.position(" + hoveredBlockPos.getX() + ", " - + hoveredBlockPos.getY() + ", " + hoveredBlockPos.getZ() + ")"); - else - clipboardHelper.setClipboardString(handle, "util.grid.at(" + hoveredBlockPos.getX() + ", " - + hoveredBlockPos.getY() + ", " + hoveredBlockPos.getZ() + ")"); - copiedBlockPos = hoveredBlockPos; - return true; - } - - return super.mouseClicked(x, y, button); - } - - @Override - public boolean keyPressed(int code, int p_keyPressed_2_, int p_keyPressed_3_) { - GameSettings settings = Minecraft.getInstance().gameSettings; - int sCode = settings.keyBindBack.getKey() - .getKeyCode(); - int aCode = settings.keyBindLeft.getKey() - .getKeyCode(); - int dCode = settings.keyBindRight.getKey() - .getKeyCode(); - int qCode = settings.keyBindDrop.getKey() - .getKeyCode(); - - if (code == sCode) { - replay(); - return true; - } - - if (code == aCode) { - scroll(false); - return true; - } - - if (code == dCode) { - scroll(true); - return true; - } - - if (code == qCode) { - identifyMode = !identifyMode; - if (!identifyMode) - scenes.get(index) - .deselect(); - return true; - } - - return super.keyPressed(code, p_keyPressed_2_, p_keyPressed_3_); - } - - @Override - protected String getBreadcrumbTitle() { - if (chapter != null) - return Lang.translate(LANG_PREFIX + "chapter." + chapter.getId()) - .getString(); - - return stack.getItem() - .getName() - .getString(); - } - - public FontRenderer getFontRenderer() { - return textRenderer; - } - - protected boolean isMouseOver(double mouseX, double mouseY, int x, int y, int w, int h) { - boolean hovered = !(mouseX < x || mouseX > x + w); - hovered &= !(mouseY < y || mouseY > y + h); - return hovered; - } - - public static void renderSpeechBox(MatrixStack ms, int x, int y, int w, int h, boolean highlighted, Pointing pointing, - boolean returnWithLocalTransform) { - if (!returnWithLocalTransform) - ms.push(); - - int boxX = x; - int boxY = y; - int divotX = x; - int divotY = y; - int divotRotation = 0; - int divotSize = 8; - int distance = 1; - int divotRadius = divotSize / 2; - Couple borderColors = Theme.p(highlighted ? Theme.Key.PONDER_HIGHLIGHT : Theme.Key.PONDER_IDLE); - Color c; - - switch (pointing) { - default: - case DOWN: - divotRotation = 0; - boxX -= w / 2; - boxY -= h + divotSize + 1 + distance; - divotX -= divotRadius; - divotY -= divotSize + distance; - c = borderColors.getSecond(); - break; - case LEFT: - divotRotation = 90; - boxX += divotSize + 1 + distance; - boxY -= h / 2; - divotX += distance; - divotY -= divotRadius; - c = ColorHelper.mixColors(borderColors, 0.5f); - break; - case RIGHT: - divotRotation = 270; - boxX -= w + divotSize + 1 + distance; - boxY -= h / 2; - divotX -= divotSize + distance; - divotY -= divotRadius; - c = ColorHelper.mixColors(borderColors, 0.5f); - break; - case UP: - divotRotation = 180; - boxX -= w / 2; - boxY += divotSize + 1 + distance; - divotX -= divotRadius; - divotY += distance; - c = borderColors.getFirst(); - break; - } - - new BoxElement() - .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) - .gradientBorder(borderColors) - .at(boxX, boxY, 100) - .withBounds(w, h) - .render(ms); - - ms.push(); - ms.translate(divotX + divotRadius, divotY + divotRadius, 10); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(divotRotation)); - ms.translate(-divotRadius, -divotRadius, 0); - AllGuiTextures.SPEECH_TOOLTIP_BACKGROUND.draw(ms, 0, 0); - AllGuiTextures.SPEECH_TOOLTIP_COLOR.draw(ms, 0, 0, c); - ms.pop(); - - if (returnWithLocalTransform) { - ms.translate(boxX, boxY, 0); - return; - } - - ms.pop(); - - } - - public ItemStack getHoveredTooltipItem() { - return hoveredTooltipItem; - } - - public ItemStack getSubject() { - return stack; - } - - @Override - public boolean isEquivalentTo(NavigatableSimiScreen other) { - if (other instanceof PonderUI) - return stack.isItemEqual(((PonderUI) other).stack); - return super.isEquivalentTo(other); - } - - @Override - public void shareContextWith(NavigatableSimiScreen other) { - if (other instanceof PonderUI) { - PonderUI ponderUI = (PonderUI) other; - ponderUI.referredToByTag = referredToByTag; - } - } - - public static float getPartialTicks() { - float renderPartialTicks = Minecraft.getInstance() - .getRenderPartialTicks(); - - if (Minecraft.getInstance().currentScreen instanceof PonderUI) { - PonderUI ui = (PonderUI) Minecraft.getInstance().currentScreen; - if (ui.identifyMode) - return ponderPartialTicksPaused; - - return (renderPartialTicks + (ui.extendedTickLength - ui.extendedTickTimer)) / (ui.extendedTickLength + 1); - } - - return renderPartialTicks; - } - - @Override - public boolean isPauseScreen() { - return true; - } - - public void coolDownAfterSkip() { - skipCooling = 15; - } - - @Override - public void removed() { - super.removed(); - hoveredTooltipItem = ItemStack.EMPTY; - } - - public void drawRightAlignedString(FontRenderer fontRenderer, MatrixStack ms, String string, int x, int y, - int color) { - fontRenderer.draw(ms, string, (float) (x - fontRenderer.getStringWidth(string)), (float) y, color); - } - - public boolean isComfyReadingEnabled() { - return AllConfigs.CLIENT.comfyReading.get(); - } - - public void setComfyReadingEnabled(boolean slowTextMode) { - AllConfigs.CLIENT.comfyReading.set(slowTextMode); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java deleted file mode 100644 index b6f5b5f84..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorld.java +++ /dev/null @@ -1,320 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.annotation.Nullable; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.schematics.SchematicWorld; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.IParticleFactory; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.IParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.LazyValue; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.LightType; -import net.minecraft.world.World; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; -import net.minecraftforge.registries.ForgeRegistries; - -public class PonderWorld extends SchematicWorld { - - public PonderScene scene; - - protected Map originalBlocks; - protected Map originalTileEntities; - protected Map blockBreakingProgressions; - protected List originalEntities; - private LazyValue asClientWorld = new LazyValue<>(() -> WrappedClientWorld.of(this)); - - protected PonderWorldParticles particles; - private final Map> particleFactories; - - int overrideLight; - Selection mask; - - public PonderWorld(BlockPos anchor, World original) { - super(anchor, original); - originalBlocks = new HashMap<>(); - originalTileEntities = new HashMap<>(); - blockBreakingProgressions = new HashMap<>(); - originalEntities = new ArrayList<>(); - particles = new PonderWorldParticles(this); - - // ParticleManager.factories - ATs don't seem to like this one - particleFactories = ObfuscationReflectionHelper.getPrivateValue(ParticleManager.class, - Minecraft.getInstance().particles, "field_178932_g"); - } - - public void createBackup() { - originalBlocks.clear(); - originalTileEntities.clear(); - blocks.forEach((k, v) -> originalBlocks.put(k, v)); - tileEntities.forEach( - (k, v) -> originalTileEntities.put(k, TileEntity.createFromTag(blocks.get(k), v.write(new CompoundNBT())))); - entities.forEach(e -> EntityType.loadEntityUnchecked(e.serializeNBT(), this) - .ifPresent(originalEntities::add)); - } - - public void restore() { - entities.clear(); - blocks.clear(); - tileEntities.clear(); - blockBreakingProgressions.clear(); - renderedTileEntities.clear(); - originalBlocks.forEach((k, v) -> blocks.put(k, v)); - originalTileEntities.forEach((k, v) -> { - TileEntity te = TileEntity.createFromTag(originalBlocks.get(k), v.write(new CompoundNBT())); - onTEadded(te, te.getPos()); - tileEntities.put(k, te); - renderedTileEntities.add(te); - }); - originalEntities.forEach(e -> EntityType.loadEntityUnchecked(e.serializeNBT(), this) - .ifPresent(entities::add)); - particles.clearEffects(); - fixBeltTileEntities(); - } - - public void restoreBlocks(Selection selection) { - selection.forEach(p -> { - if (originalBlocks.containsKey(p)) - blocks.put(p, originalBlocks.get(p)); - }); - scene.forEach(WorldSectionElement.class, WorldSectionElement::queueRedraw); - } - - public void pushFakeLight(int light) { - this.overrideLight = light; - } - - public void popLight() { - this.overrideLight = -1; - } - - @Override - public int getLightLevel(LightType p_226658_1_, BlockPos p_226658_2_) { - return overrideLight == -1 ? 15 : overrideLight; - } - - public void setMask(Selection mask) { - this.mask = mask; - } - - public void clearMask() { - this.mask = null; - } - - @Override - public BlockState getBlockState(BlockPos globalPos) { - if (mask != null && !mask.test(globalPos.subtract(anchor))) - return Blocks.AIR.getDefaultState(); - return super.getBlockState(globalPos); - } - - @Override // For particle collision - public IBlockReader getExistingChunk(int p_225522_1_, int p_225522_2_) { - return this; - } - - public void renderEntities(MatrixStack ms, SuperRenderTypeBuffer buffer, ActiveRenderInfo ari, float pt) { - Vector3d Vector3d = ari.getProjectedView(); - double d0 = Vector3d.getX(); - double d1 = Vector3d.getY(); - double d2 = Vector3d.getZ(); - - for (Entity entity : entities) { - if (entity.ticksExisted == 0) { - entity.lastTickPosX = entity.getX(); - entity.lastTickPosY = entity.getY(); - entity.lastTickPosZ = entity.getZ(); - } - renderEntity(entity, d0, d1, d2, pt, ms, buffer); - } - - buffer.draw(RenderType.getEntitySolid(PlayerContainer.BLOCK_ATLAS_TEXTURE)); - buffer.draw(RenderType.getEntityCutout(PlayerContainer.BLOCK_ATLAS_TEXTURE)); - buffer.draw(RenderType.getEntityCutoutNoCull(PlayerContainer.BLOCK_ATLAS_TEXTURE)); - buffer.draw(RenderType.getEntitySmoothCutout(PlayerContainer.BLOCK_ATLAS_TEXTURE)); - } - - private void renderEntity(Entity entity, double x, double y, double z, float pt, MatrixStack ms, - IRenderTypeBuffer buffer) { - double d0 = MathHelper.lerp((double) pt, entity.lastTickPosX, entity.getX()); - double d1 = MathHelper.lerp((double) pt, entity.lastTickPosY, entity.getY()); - double d2 = MathHelper.lerp((double) pt, entity.lastTickPosZ, entity.getZ()); - float f = MathHelper.lerp(pt, entity.prevRotationYaw, entity.rotationYaw); - EntityRendererManager renderManager = Minecraft.getInstance() - .getRenderManager(); - int light = renderManager.getRenderer(entity) - .getLight(entity, pt); - renderManager.render(entity, d0 - x, d1 - y, d2 - z, f, pt, ms, buffer, light); - } - - public void renderParticles(MatrixStack ms, IRenderTypeBuffer buffer, ActiveRenderInfo ari, float pt) { - particles.renderParticles(ms, buffer, ari, pt); - } - - public void tick() { - particles.tick(); - - for (Iterator iterator = entities.iterator(); iterator.hasNext();) { - Entity entity = iterator.next(); - - entity.ticksExisted++; - entity.lastTickPosX = entity.getX(); - entity.lastTickPosY = entity.getY(); - entity.lastTickPosZ = entity.getZ(); - entity.tick(); - - if (entity.getY() <= -.5f) - entity.remove(); - - if (!entity.isAlive()) - iterator.remove(); - } - } - - @Override - public void addParticle(IParticleData data, double x, double y, double z, double mx, double my, double mz) { - addParticle(makeParticle(data, x, y, z, mx, my, mz)); - } - - @Override - public void addOptionalParticle(IParticleData data, double x, double y, double z, double mx, double my, double mz) { - addParticle(data, x, y, z, mx, my, mz); - } - - @Nullable - @SuppressWarnings("unchecked") - private Particle makeParticle(T data, double x, double y, double z, double mx, double my, - double mz) { - ResourceLocation key = ForgeRegistries.PARTICLE_TYPES.getKey(data.getType()); - IParticleFactory iparticlefactory = (IParticleFactory) particleFactories.get(key); - return iparticlefactory == null ? null - : iparticlefactory.makeParticle(data, asClientWorld.getValue(), x, y, z, mx, my, mz); - } - - public void addParticle(Particle p) { - if (p != null) - particles.addParticle(p); - } - - @Override - protected void onTEadded(TileEntity tileEntity, BlockPos pos) { - super.onTEadded(tileEntity, pos); - if (!(tileEntity instanceof SmartTileEntity)) - return; - SmartTileEntity smartTileEntity = (SmartTileEntity) tileEntity; - smartTileEntity.markVirtual(); - } - - public void fixBeltTileEntities() { - for (TileEntity tileEntity : tileEntities.values()) { - if (!(tileEntity instanceof BeltTileEntity)) - continue; - BeltTileEntity beltTileEntity = (BeltTileEntity) tileEntity; - if (!beltTileEntity.isController()) - continue; - BlockPos controllerPos = tileEntity.getPos(); - for (BlockPos blockPos : BeltBlock.getBeltChain(this, controllerPos)) { - TileEntity tileEntity2 = getTileEntity(blockPos); - if (!(tileEntity2 instanceof BeltTileEntity)) - continue; - BeltTileEntity belt2 = (BeltTileEntity) tileEntity2; - belt2.setController(controllerPos); - } - } - } - - public void setBlockBreakingProgress(BlockPos pos, int damage) { - if (damage == 0) - blockBreakingProgressions.remove(pos); - else - blockBreakingProgressions.put(pos, damage - 1); - } - - public Map getBlockBreakingProgressions() { - return blockBreakingProgressions; - } - - public void addBlockDestroyEffects(BlockPos pos, BlockState state) { - VoxelShape voxelshape = state.getShape(this, pos); - if (voxelshape.isEmpty()) - return; - - AxisAlignedBB bb = voxelshape.getBoundingBox(); - double d1 = Math.min(1.0D, bb.maxX - bb.minX); - double d2 = Math.min(1.0D, bb.maxY - bb.minY); - double d3 = Math.min(1.0D, bb.maxZ - bb.minZ); - int i = Math.max(2, MathHelper.ceil(d1 / 0.25D)); - int j = Math.max(2, MathHelper.ceil(d2 / 0.25D)); - int k = Math.max(2, MathHelper.ceil(d3 / 0.25D)); - - for (int l = 0; l < i; ++l) { - for (int i1 = 0; i1 < j; ++i1) { - for (int j1 = 0; j1 < k; ++j1) { - double d4 = (l + 0.5D) / i; - double d5 = (i1 + 0.5D) / j; - double d6 = (j1 + 0.5D) / k; - double d7 = d4 * d1 + bb.minX; - double d8 = d5 * d2 + bb.minY; - double d9 = d6 * d3 + bb.minZ; - addParticle(new BlockParticleData(ParticleTypes.BLOCK, state), pos.getX() + d7, pos.getY() + d8, - pos.getZ() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D); - } - } - } - } - - @Override - protected BlockState processBlockStateForPrinting(BlockState state) { - return state; - } - - @Override - public boolean chunkExists(int x, int y) { - return true; // fix particle lighting - } - - @Override - public boolean isBlockPresent(BlockPos pos) { - return true; // fix particle lighting - } - - @Override - public boolean isPlayerWithin(double p_217358_1_, double p_217358_3_, double p_217358_5_, double p_217358_7_) { - return true; // always enable spawner animations - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorldParticles.java b/src/main/java/com/simibubi/create/foundation/ponder/PonderWorldParticles.java deleted file mode 100644 index 3ff9774bb..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/PonderWorldParticles.java +++ /dev/null @@ -1,109 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; -import java.util.Queue; - -import com.google.common.collect.EvictingQueue; -import com.google.common.collect.Maps; -import com.google.common.collect.Queues; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.IParticleRenderType; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.Tessellator; - -public class PonderWorldParticles { - - private final Map> byType = Maps.newIdentityHashMap(); - private final Queue queue = Queues.newArrayDeque(); - - PonderWorld world; - - public PonderWorldParticles(PonderWorld world) { - this.world = world; - } - - public void addParticle(Particle p) { - this.queue.add(p); - } - - public void tick() { - this.byType.forEach((p_228347_1_, p_228347_2_) -> this.tickParticleList(p_228347_2_)); - - Particle particle; - if (queue.isEmpty()) - return; - while ((particle = this.queue.poll()) != null) - this.byType.computeIfAbsent(particle.getRenderType(), $ -> EvictingQueue.create(16384)) - .add(particle); - } - - private void tickParticleList(Collection p_187240_1_) { - if (p_187240_1_.isEmpty()) - return; - - Iterator iterator = p_187240_1_.iterator(); - while (iterator.hasNext()) { - Particle particle = iterator.next(); - particle.tick(); - if (!particle.isAlive()) - iterator.remove(); - } - } - - public void renderParticles(MatrixStack ms, IRenderTypeBuffer buffer, ActiveRenderInfo renderInfo, float pt) { - Minecraft mc = Minecraft.getInstance(); - LightTexture lightTexture = mc.gameRenderer.getLightmapTextureManager(); - - lightTexture.enableLightmap(); - Runnable enable = () -> { - RenderSystem.enableAlphaTest(); - RenderSystem.defaultAlphaFunc(); - RenderSystem.enableDepthTest(); - RenderSystem.enableFog(); - }; - RenderSystem.pushMatrix(); - RenderSystem.multMatrix(ms.peek() - .getModel()); - // check ParticleManager#renderParticles for a replacement if RenderSystem#multMatrix gets removed - - for (IParticleRenderType iparticlerendertype : this.byType.keySet()) { // Forge: allow custom - // IParticleRenderType's - if (iparticlerendertype == IParticleRenderType.NO_RENDER) - continue; - enable.run(); // Forge: MC-168672 Make sure all render types have the correct GL state. - Iterable iterable = this.byType.get(iparticlerendertype); - if (iterable != null) { - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder bufferbuilder = tessellator.getBuffer(); - iparticlerendertype.beginRender(bufferbuilder, mc.textureManager); - - for (Particle particle : iterable) - particle.buildGeometry(bufferbuilder, renderInfo, pt); - - iparticlerendertype.finishRender(tessellator); - } - } - - RenderSystem.popMatrix(); - RenderSystem.depthMask(true); - RenderSystem.disableBlend(); - RenderSystem.defaultAlphaFunc(); - lightTexture.disableLightmap(); - RenderSystem.disableFog(); - } - - public void clearEffects() { - this.byType.clear(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java b/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java deleted file mode 100644 index 2767b1b02..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuilder.java +++ /dev/null @@ -1,821 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.Optional; -import java.util.UUID; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; -import java.util.function.UnaryOperator; - -import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.base.KineticBlock; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.crafter.ConnectedInputHandler; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem; -import com.simibubi.create.content.contraptions.particle.RotationIndicatorParticleData; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.relays.gauge.SpeedGaugeTileEntity; -import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.MinecartElement; -import com.simibubi.create.foundation.ponder.elements.MinecartElement.MinecartConstructor; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.ParrotPose; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.SpinOnComponentPose; -import com.simibubi.create.foundation.ponder.elements.TextWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.AnimateMinecartInstruction; -import com.simibubi.create.foundation.ponder.instructions.AnimateParrotInstruction; -import com.simibubi.create.foundation.ponder.instructions.AnimateTileEntityInstruction; -import com.simibubi.create.foundation.ponder.instructions.AnimateWorldSectionInstruction; -import com.simibubi.create.foundation.ponder.instructions.ChaseAABBInstruction; -import com.simibubi.create.foundation.ponder.instructions.CreateMinecartInstruction; -import com.simibubi.create.foundation.ponder.instructions.CreateParrotInstruction; -import com.simibubi.create.foundation.ponder.instructions.DelayInstruction; -import com.simibubi.create.foundation.ponder.instructions.DisplayWorldSectionInstruction; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; -import com.simibubi.create.foundation.ponder.instructions.FadeOutOfSceneInstruction; -import com.simibubi.create.foundation.ponder.instructions.HighlightValueBoxInstruction; -import com.simibubi.create.foundation.ponder.instructions.KeyframeInstruction; -import com.simibubi.create.foundation.ponder.instructions.LineInstruction; -import com.simibubi.create.foundation.ponder.instructions.MarkAsFinishedInstruction; -import com.simibubi.create.foundation.ponder.instructions.MovePoiInstruction; -import com.simibubi.create.foundation.ponder.instructions.OutlineSelectionInstruction; -import com.simibubi.create.foundation.ponder.instructions.ReplaceBlocksInstruction; -import com.simibubi.create.foundation.ponder.instructions.RotateSceneInstruction; -import com.simibubi.create.foundation.ponder.instructions.ShowInputInstruction; -import com.simibubi.create.foundation.ponder.instructions.TextInstruction; -import com.simibubi.create.foundation.ponder.instructions.TileEntityDataInstruction; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.RedstoneTorchBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.RedstoneParticleData; -import net.minecraft.state.Property; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.World; - -/** - * Enqueue instructions to the schedule via this object's methods. - */ -public class SceneBuilder { - - /** - * Ponder's toolkit for showing information on top of the scene world, such as - * highlighted bounding boxes, texts, icons and keybindings. - */ - public final OverlayInstructions overlay; - - /** - * Instructions for manipulating the schematic and its currently visible areas. - * Allows to show, hide and modify blocks as the scene plays out. - */ - public final WorldInstructions world; - - /** - * Additional tools for debugging ponder and bypassing the facade - */ - public final DebugInstructions debug; - - /** - * Special effects to embellish and communicate with - */ - public final EffectInstructions effects; - - /** - * Random other instructions that might come in handy - */ - public final SpecialInstructions special; - - private final PonderScene scene; - - public SceneBuilder(PonderScene ponderScene) { - scene = ponderScene; - overlay = new OverlayInstructions(); - special = new SpecialInstructions(); - world = new WorldInstructions(); - debug = new DebugInstructions(); - effects = new EffectInstructions(); - } - - // General - - /** - * Assign a unique translation key, as well as the standard english translation - * for this scene's title using this method, anywhere inside the program - * function. - * - * @param sceneId - * @param title - */ - public void title(String sceneId, String title) { - scene.sceneId = sceneId; - PonderLocalization.registerSpecific(sceneId, PonderScene.TITLE_KEY, title); - } - - /** - * Communicates to the ponder UI which parts of the schematic make up the base - * horizontally. Use of this is encouraged whenever there are components outside - * the the base plate.
- * As a result, showBasePlate() will only show the configured size, and the - * scene's scaling inside the UI will be consistent with its base size. - * - * @param xOffset Block spaces between the base plate and the schematic - * boundary on the Western side. - * @param zOffset Block spaces between the base plate and the schematic - * boundary on the Northern side. - * @param basePlateSize Length in blocks of the base plate itself. Ponder - * assumes it to be square - */ - public void configureBasePlate(int xOffset, int zOffset, int basePlateSize) { - scene.basePlateOffsetX = xOffset; - scene.basePlateOffsetZ = zOffset; - scene.basePlateSize = basePlateSize; - } - - /** - * Use this in case you are not happy with the scale of the scene relative to - * the overlay - * - * @param factor >1 will make the scene appear larger, smaller otherwise - */ - public void scaleSceneView(float factor) { - scene.scaleFactor = factor; - } - - /** - * Use this in case you are not happy with the vertical alignment of the scene - * relative to the overlay - * - * @param yOffset >0 moves the scene up, down otherwise - */ - public void setSceneOffsetY(float yOffset) { - scene.yOffset = yOffset; - } - - /** - * Fade the layer of blocks into the scene ponder assumes to be the base plate - * of the schematic's structure. Makes for a nice opener - */ - public void showBasePlate() { - world.showSection( - scene.getSceneBuildingUtil().select.cuboid(new BlockPos(scene.basePlateOffsetX, 0, scene.basePlateOffsetZ), - new Vector3i(scene.basePlateSize - 1, 0, scene.basePlateSize - 1)), - Direction.UP); - } - - /** - * Before running the upcoming instructions, wait for a duration to let previous - * actions play out.
- * Idle does not stall any animations, only schedules a time gap between - * instructions. - * - * @param ticks Duration to wait for - */ - public void idle(int ticks) { - addInstruction(new DelayInstruction(ticks)); - } - - /** - * Before running the upcoming instructions, wait for a duration to let previous - * actions play out.
- * Idle does not stall any animations, only schedules a time gap between - * instructions. - * - * @param seconds Duration to wait for - */ - public void idleSeconds(int seconds) { - idle(seconds * 20); - } - - /** - * Once the scene reaches this instruction in the timeline, mark it as - * "finished". This happens automatically when the end of a storyboard is - * reached, but can be desirable to do earlier, in order to bypass the wait for - * any residual text windows to time out.
- * So far this event only affects the "next scene" button in the UI to flash. - */ - public void markAsFinished() { - addInstruction(new MarkAsFinishedInstruction()); - } - - /** - * Pans the scene's camera view around the vertical axis by the given amount - * - * @param degrees - */ - public void rotateCameraY(float degrees) { - addInstruction(new RotateSceneInstruction(0, degrees, true)); - } - - /** - * Adds a Key Frame at the end of the last delay() instruction for the users to - * skip to - */ - public void addKeyframe() { - addInstruction(KeyframeInstruction.IMMEDIATE); - } - - /** - * Adds a Key Frame a couple ticks after the last delay() instruction for the - * users to skip to - */ - public void addLazyKeyframe() { - addInstruction(KeyframeInstruction.DELAYED); - } - - public class EffectInstructions { - - public void emitParticles(Vector3d location, Emitter emitter, float amountPerCycle, int cycles) { - addInstruction(new EmitParticlesInstruction(location, emitter, amountPerCycle, cycles)); - } - - public void superGlue(BlockPos pos, Direction side, boolean fullBlock) { - addInstruction(scene -> SuperGlueItem.spawnParticles(scene.world, pos, side, fullBlock)); - } - - private void rotationIndicator(BlockPos pos, boolean direction) { - addInstruction(scene -> { - BlockState blockState = scene.world.getBlockState(pos); - TileEntity tileEntity = scene.world.getTileEntity(pos); - - if (!(blockState.getBlock() instanceof KineticBlock)) - return; - if (!(tileEntity instanceof KineticTileEntity)) - return; - - KineticTileEntity kte = (KineticTileEntity) tileEntity; - KineticBlock kb = (KineticBlock) blockState.getBlock(); - Axis rotationAxis = kb.getRotationAxis(blockState); - - float speed = kte.getTheoreticalSpeed(); - SpeedLevel speedLevel = SpeedLevel.of(speed); - int color = direction ? speed > 0 ? 0xeb5e0b : 0x1687a7 : speedLevel.getColor(); - int particleSpeed = speedLevel.getParticleSpeed(); - particleSpeed *= Math.signum(speed); - - Vector3d location = VecHelper.getCenterOf(pos); - RotationIndicatorParticleData particleData = new RotationIndicatorParticleData(color, particleSpeed, - kb.getParticleInitialRadius(), kb.getParticleTargetRadius(), 20, rotationAxis.name() - .charAt(0)); - - for (int i = 0; i < 20; i++) - scene.world.addParticle(particleData, location.x, location.y, location.z, 0, 0, 0); - }); - } - - public void rotationSpeedIndicator(BlockPos pos) { - rotationIndicator(pos, false); - } - - public void rotationDirectionIndicator(BlockPos pos) { - rotationIndicator(pos, true); - } - - public void indicateRedstone(BlockPos pos) { - createRedstoneParticles(pos, 0xFF0000, 10); - } - - public void indicateSuccess(BlockPos pos) { - createRedstoneParticles(pos, 0x80FFaa, 10); - } - - public void createRedstoneParticles(BlockPos pos, int color, int amount) { - Vector3d rgb = ColorHelper.getRGB(color); - addInstruction(new EmitParticlesInstruction(VecHelper.getCenterOf(pos), Emitter.withinBlockSpace( - new RedstoneParticleData((float) rgb.x, (float) rgb.y, (float) rgb.z, 1), Vector3d.ZERO), amount, 2)); - } - - } - - public class OverlayInstructions { - - public TextWindowElement.Builder showText(int duration) { - TextWindowElement textWindowElement = new TextWindowElement(); - addInstruction(new TextInstruction(textWindowElement, duration)); - return textWindowElement.new Builder(scene); - } - - public TextWindowElement.Builder showSelectionWithText(Selection selection, int duration) { - TextWindowElement textWindowElement = new TextWindowElement(); - addInstruction(new TextInstruction(textWindowElement, duration, selection)); - return textWindowElement.new Builder(scene).pointAt(selection.getCenter()); - } - - public void showControls(InputWindowElement element, int duration) { - addInstruction(new ShowInputInstruction(element.clone(), duration)); - } - - public void chaseBoundingBoxOutline(PonderPalette color, Object slot, AxisAlignedBB boundingBox, int duration) { - addInstruction(new ChaseAABBInstruction(color, slot, boundingBox, duration)); - } - - public void showCenteredScrollInput(BlockPos pos, Direction side, int duration) { - showScrollInput(scene.getSceneBuildingUtil().vector.blockSurface(pos, side), side, duration); - } - - public void showScrollInput(Vector3d location, Direction side, int duration) { - Axis axis = side.getAxis(); - float s = 1 / 16f; - float q = 1 / 4f; - Vector3d expands = new Vector3d(axis == Axis.X ? s : q, axis == Axis.Y ? s : q, axis == Axis.Z ? s : q); - addInstruction(new HighlightValueBoxInstruction(location, expands, duration)); - } - - public void showRepeaterScrollInput(BlockPos pos, int duration) { - float s = 1 / 16f; - float q = 1 / 6f; - Vector3d expands = new Vector3d(q, s, q); - addInstruction( - new HighlightValueBoxInstruction(scene.getSceneBuildingUtil().vector.blockSurface(pos, Direction.DOWN) - .add(0, 3 / 16f, 0), expands, duration)); - } - - public void showFilterSlotInput(Vector3d location, int duration) { - float s = .1f; - Vector3d expands = new Vector3d(s, s, s); - addInstruction(new HighlightValueBoxInstruction(location, expands, duration)); - } - - public void showLine(PonderPalette color, Vector3d start, Vector3d end, int duration) { - addInstruction(new LineInstruction(color, start, end, duration)); - } - - public void showOutline(PonderPalette color, Object slot, Selection selection, int duration) { - addInstruction(new OutlineSelectionInstruction(color, slot, selection, duration)); - } - - } - - public class SpecialInstructions { - - public ElementLink birbOnTurntable(BlockPos pos) { - return createBirb(VecHelper.getCenterOf(pos), () -> new SpinOnComponentPose(pos)); - } - - public ElementLink birbOnSpinnyShaft(BlockPos pos) { - return createBirb(VecHelper.getCenterOf(pos) - .add(0, 0.5, 0), () -> new SpinOnComponentPose(pos)); - } - - public ElementLink createBirb(Vector3d location, Supplier pose) { - ElementLink link = new ElementLink<>(ParrotElement.class); - ParrotElement parrot = ParrotElement.create(location, pose); - addInstruction(new CreateParrotInstruction(10, Direction.DOWN, parrot)); - addInstruction(scene -> scene.linkElement(parrot, link)); - return link; - } - - public void changeBirbPose(ElementLink birb, Supplier pose) { - addInstruction(scene -> scene.resolve(birb) - .setPose(pose.get())); - } - - public void movePointOfInterest(Vector3d location) { - addInstruction(new MovePoiInstruction(location)); - } - - public void movePointOfInterest(BlockPos location) { - movePointOfInterest(VecHelper.getCenterOf(location)); - } - - public void rotateParrot(ElementLink link, double xRotation, double yRotation, double zRotation, - int duration) { - addInstruction( - AnimateParrotInstruction.rotate(link, new Vector3d(xRotation, yRotation, zRotation), duration)); - } - - public void moveParrot(ElementLink link, Vector3d offset, int duration) { - addInstruction(AnimateParrotInstruction.move(link, offset, duration)); - } - - public ElementLink createCart(Vector3d location, float angle, MinecartConstructor type) { - ElementLink link = new ElementLink<>(MinecartElement.class); - MinecartElement cart = new MinecartElement(location, angle, type); - addInstruction(new CreateMinecartInstruction(10, Direction.DOWN, cart)); - addInstruction(scene -> scene.linkElement(cart, link)); - return link; - } - - public void rotateCart(ElementLink link, float yRotation, int duration) { - addInstruction(AnimateMinecartInstruction.rotate(link, yRotation, duration)); - } - - public void moveCart(ElementLink link, Vector3d offset, int duration) { - addInstruction(AnimateMinecartInstruction.move(link, offset, duration)); - } - - public void hideElement(ElementLink link, Direction direction) { - addInstruction(new FadeOutOfSceneInstruction<>(15, direction, link)); - } - - } - - public class WorldInstructions { - - public void incrementBlockBreakingProgress(BlockPos pos) { - addInstruction(scene -> { - PonderWorld world = scene.getWorld(); - int progress = world.getBlockBreakingProgressions() - .getOrDefault(pos, -1) + 1; - if (progress == 9) { - world.addBlockDestroyEffects(pos, world.getBlockState(pos)); - world.destroyBlock(pos, false); - world.setBlockBreakingProgress(pos, 0); - scene.forEach(WorldSectionElement.class, WorldSectionElement::queueRedraw); - } else - world.setBlockBreakingProgress(pos, progress + 1); - }); - } - - public void showSection(Selection selection, Direction fadeInDirection) { - addInstruction(new DisplayWorldSectionInstruction(15, fadeInDirection, selection, - Optional.of(scene::getBaseWorldSection))); - } - - public void showSectionAndMerge(Selection selection, Direction fadeInDirection, - ElementLink link) { - addInstruction(new DisplayWorldSectionInstruction(15, fadeInDirection, selection, - Optional.of(() -> scene.resolve(link)))); - } - - public void glueBlockOnto(BlockPos position, Direction fadeInDirection, ElementLink link) { - addInstruction(new DisplayWorldSectionInstruction(15, fadeInDirection, - scene.getSceneBuildingUtil().select.position(position), Optional.of(() -> scene.resolve(link)), - position)); - } - - public ElementLink showIndependentSection(Selection selection, Direction fadeInDirection) { - DisplayWorldSectionInstruction instruction = - new DisplayWorldSectionInstruction(15, fadeInDirection, selection, Optional.empty()); - addInstruction(instruction); - return instruction.createLink(scene); - } - - public ElementLink showIndependentSectionImmediately(Selection selection) { - DisplayWorldSectionInstruction instruction = - new DisplayWorldSectionInstruction(0, Direction.DOWN, selection, Optional.empty()); - addInstruction(instruction); - return instruction.createLink(scene); - } - - public void hideSection(Selection selection, Direction fadeOutDirection) { - WorldSectionElement worldSectionElement = new WorldSectionElement(selection); - ElementLink elementLink = new ElementLink<>(WorldSectionElement.class); - - addInstruction(scene -> { - scene.getBaseWorldSection() - .erase(selection); - scene.linkElement(worldSectionElement, elementLink); - scene.addElement(worldSectionElement); - worldSectionElement.queueRedraw(); - }); - - hideIndependentSection(elementLink, fadeOutDirection); - } - - public void hideIndependentSection(ElementLink link, Direction fadeOutDirection) { - addInstruction(new FadeOutOfSceneInstruction<>(15, fadeOutDirection, link)); - } - - public void restoreBlocks(Selection selection) { - addInstruction(scene -> scene.world.restoreBlocks(selection)); - } - - public ElementLink makeSectionIndependent(Selection selection) { - WorldSectionElement worldSectionElement = new WorldSectionElement(selection); - ElementLink elementLink = new ElementLink<>(WorldSectionElement.class); - - addInstruction(scene -> { - scene.getBaseWorldSection() - .erase(selection); - scene.linkElement(worldSectionElement, elementLink); - scene.addElement(worldSectionElement); - worldSectionElement.queueRedraw(); - worldSectionElement.resetAnimatedTransform(); - worldSectionElement.setVisible(true); - worldSectionElement.forceApplyFade(1); - }); - - return elementLink; - } - - public void rotateSection(ElementLink link, double xRotation, double yRotation, - double zRotation, int duration) { - addInstruction( - AnimateWorldSectionInstruction.rotate(link, new Vector3d(xRotation, yRotation, zRotation), duration)); - } - - public void configureCenterOfRotation(ElementLink link, Vector3d anchor) { - addInstruction(scene -> scene.resolve(link) - .setCenterOfRotation(anchor)); - } - - public void configureStabilization(ElementLink link, Vector3d anchor) { - addInstruction(scene -> scene.resolve(link) - .stabilizeRotation(anchor)); - } - - public void moveSection(ElementLink link, Vector3d offset, int duration) { - addInstruction(AnimateWorldSectionInstruction.move(link, offset, duration)); - } - - public void rotateBearing(BlockPos pos, float angle, int duration) { - addInstruction(AnimateTileEntityInstruction.bearing(pos, angle, duration)); - } - - public void movePulley(BlockPos pos, float distance, int duration) { - addInstruction(AnimateTileEntityInstruction.pulley(pos, distance, duration)); - } - - public void moveDeployer(BlockPos pos, float distance, int duration) { - addInstruction(AnimateTileEntityInstruction.deployer(pos, distance, duration)); - } - - public void setBlocks(Selection selection, BlockState state, boolean spawnParticles) { - addInstruction(new ReplaceBlocksInstruction(selection, $ -> state, true, spawnParticles)); - } - - public void destroyBlock(BlockPos pos) { - setBlock(pos, Blocks.AIR.getDefaultState(), true); - } - - public void setBlock(BlockPos pos, BlockState state, boolean spawnParticles) { - setBlocks(scene.getSceneBuildingUtil().select.position(pos), state, spawnParticles); - } - - public void replaceBlocks(Selection selection, BlockState state, boolean spawnParticles) { - modifyBlocks(selection, $ -> state, spawnParticles); - } - - public void modifyBlock(BlockPos pos, UnaryOperator stateFunc, boolean spawnParticles) { - modifyBlocks(scene.getSceneBuildingUtil().select.position(pos), stateFunc, spawnParticles); - } - - public void cycleBlockProperty(BlockPos pos, Property property) { - modifyBlocks(scene.getSceneBuildingUtil().select.position(pos), - s -> s.contains(property) ? s.cycle(property) : s, false); - } - - public void modifyBlocks(Selection selection, UnaryOperator stateFunc, boolean spawnParticles) { - addInstruction(new ReplaceBlocksInstruction(selection, stateFunc, false, spawnParticles)); - } - - public void toggleRedstonePower(Selection selection) { - modifyBlocks(selection, s -> { - if (s.contains(BlockStateProperties.POWER_0_15)) - s = s.with(BlockStateProperties.POWER_0_15, s.get(BlockStateProperties.POWER_0_15) == 0 ? 15 : 0); - if (s.contains(BlockStateProperties.POWERED)) - s = s.cycle(BlockStateProperties.POWERED); - if (s.contains(RedstoneTorchBlock.LIT)) - s = s.cycle(RedstoneTorchBlock.LIT); - return s; - }, false); - } - - public void modifyEntities(Class entityClass, Consumer entityCallBack) { - addInstruction(scene -> scene.forEachWorldEntity(entityClass, entityCallBack)); - } - - public void modifyEntitiesInside(Class entityClass, Selection area, - Consumer entityCallBack) { - addInstruction(scene -> scene.forEachWorldEntity(entityClass, e -> { - if (area.test(e.getBlockPos())) - entityCallBack.accept(e); - })); - } - - public void modifyEntity(ElementLink link, Consumer entityCallBack) { - addInstruction(scene -> { - EntityElement resolve = scene.resolve(link); - if (resolve != null) - resolve.ifPresent(entityCallBack::accept); - }); - } - - public ElementLink createEntity(Function factory) { - ElementLink link = new ElementLink<>(EntityElement.class, UUID.randomUUID()); - addInstruction(scene -> { - PonderWorld world = scene.getWorld(); - Entity entity = factory.apply(world); - EntityElement handle = new EntityElement(entity); - scene.addElement(handle); - scene.linkElement(handle, link); - world.addEntity(entity); - }); - return link; - } - - public ElementLink createItemEntity(Vector3d location, Vector3d motion, ItemStack stack) { - return createEntity(world -> { - ItemEntity itemEntity = new ItemEntity(world, location.x, location.y, location.z, stack); - itemEntity.setMotion(motion); - return itemEntity; - }); - } - - public ElementLink createGlueEntity(BlockPos pos, Direction face) { - effects.superGlue(pos, face, false); - return createEntity(world -> new SuperGlueEntity(world, pos, face.getOpposite())); - } - - public void createItemOnBeltLike(BlockPos location, Direction insertionSide, ItemStack stack) { - addInstruction(scene -> { - PonderWorld world = scene.getWorld(); - TileEntity tileEntity = world.getTileEntity(location); - if (!(tileEntity instanceof SmartTileEntity)) - return; - SmartTileEntity beltTileEntity = (SmartTileEntity) tileEntity; - DirectBeltInputBehaviour behaviour = beltTileEntity.getBehaviour(DirectBeltInputBehaviour.TYPE); - if (behaviour == null) - return; - behaviour.handleInsertion(stack, insertionSide.getOpposite(), false); - }); - flapFunnel(location.up(), true); - } - - public ElementLink createItemOnBelt(BlockPos beltLocation, Direction insertionSide, - ItemStack stack) { - ElementLink link = new ElementLink<>(BeltItemElement.class); - addInstruction(scene -> { - PonderWorld world = scene.getWorld(); - TileEntity tileEntity = world.getTileEntity(beltLocation); - if (!(tileEntity instanceof BeltTileEntity)) - return; - - BeltTileEntity beltTileEntity = (BeltTileEntity) tileEntity; - DirectBeltInputBehaviour behaviour = beltTileEntity.getBehaviour(DirectBeltInputBehaviour.TYPE); - behaviour.handleInsertion(stack, insertionSide.getOpposite(), false); - - BeltTileEntity controllerTE = beltTileEntity.getControllerTE(); - if (controllerTE != null) - controllerTE.tick(); - - TransportedItemStackHandlerBehaviour transporter = - beltTileEntity.getBehaviour(TransportedItemStackHandlerBehaviour.TYPE); - transporter.handleProcessingOnAllItems(tis -> { - BeltItemElement tracker = new BeltItemElement(tis); - scene.addElement(tracker); - scene.linkElement(tracker, link); - return TransportedResult.doNothing(); - }); - }); - flapFunnel(beltLocation.up(), true); - return link; - } - - public void removeItemsFromBelt(BlockPos beltLocation) { - addInstruction(scene -> { - PonderWorld world = scene.getWorld(); - TileEntity tileEntity = world.getTileEntity(beltLocation); - if (!(tileEntity instanceof SmartTileEntity)) - return; - SmartTileEntity beltTileEntity = (SmartTileEntity) tileEntity; - TransportedItemStackHandlerBehaviour transporter = - beltTileEntity.getBehaviour(TransportedItemStackHandlerBehaviour.TYPE); - if (transporter == null) - return; - transporter.handleCenteredProcessingOnAllItems(.52f, tis -> TransportedResult.removeItem()); - }); - } - - public void stallBeltItem(ElementLink link, boolean stalled) { - addInstruction(scene -> { - BeltItemElement resolve = scene.resolve(link); - if (resolve != null) - resolve.ifPresent(tis -> tis.locked = stalled); - }); - } - - public void changeBeltItemTo(ElementLink link, ItemStack newStack) { - addInstruction(scene -> { - BeltItemElement resolve = scene.resolve(link); - if (resolve != null) - resolve.ifPresent(tis -> tis.stack = newStack); - }); - } - - public void setKineticSpeed(Selection selection, float speed) { - modifyKineticSpeed(selection, f -> speed); - } - - public void multiplyKineticSpeed(Selection selection, float modifier) { - modifyKineticSpeed(selection, f -> f * modifier); - } - - public void modifyKineticSpeed(Selection selection, UnaryOperator speedFunc) { - modifyTileNBT(selection, SpeedGaugeTileEntity.class, nbt -> { - float newSpeed = speedFunc.apply(nbt.getFloat("Speed")); - nbt.putFloat("Value", SpeedGaugeTileEntity.getDialTarget(newSpeed)); - }); - modifyTileNBT(selection, KineticTileEntity.class, nbt -> { - nbt.putFloat("Speed", speedFunc.apply(nbt.getFloat("Speed"))); - }); - } - - public void setFilterData(Selection selection, Class teType, ItemStack filter) { - modifyTileNBT(selection, teType, nbt -> { - nbt.put("Filter", filter.serializeNBT()); - }); - } - - public void modifyTileNBT(Selection selection, Class teType, - Consumer consumer) { - modifyTileNBT(selection, teType, consumer, false); - } - - public void modifyTileEntity(BlockPos position, Class teType, Consumer consumer) { - addInstruction(scene -> { - TileEntity tileEntity = scene.world.getTileEntity(position); - if (teType.isInstance(tileEntity)) - consumer.accept(teType.cast(tileEntity)); - }); - } - - public void modifyTileNBT(Selection selection, Class teType, - Consumer consumer, boolean reDrawBlocks) { - addInstruction(new TileEntityDataInstruction(selection, teType, nbt -> { - consumer.accept(nbt); - return nbt; - }, reDrawBlocks)); - } - - public void instructArm(BlockPos armLocation, ArmTileEntity.Phase phase, ItemStack heldItem, - int targetedPoint) { - modifyTileNBT(scene.getSceneBuildingUtil().select.position(armLocation), ArmTileEntity.class, compound -> { - NBTHelper.writeEnum(compound, "Phase", phase); - compound.put("HeldItem", heldItem.serializeNBT()); - compound.putInt("TargetPointIndex", targetedPoint); - compound.putFloat("MovementProgress", 0); - }); - } - - public void flapFunnel(BlockPos position, boolean outward) { - modifyTileEntity(position, FunnelTileEntity.class, funnel -> funnel.flap(!outward)); - } - - public void setCraftingResult(BlockPos crafter, ItemStack output) { - modifyTileEntity(crafter, MechanicalCrafterTileEntity.class, mct -> mct.setScriptedResult(output)); - } - - public void connectCrafterInvs(BlockPos position1, BlockPos position2) { - addInstruction(s -> { - ConnectedInputHandler.toggleConnection(s.getWorld(), position1, position2); - s.forEach(WorldSectionElement.class, WorldSectionElement::queueRedraw); - }); - } - - } - - public class DebugInstructions { - - public void debugSchematic() { - addInstruction( - scene -> scene.addElement(new WorldSectionElement(scene.getSceneBuildingUtil().select.everywhere()))); - } - - public void addInstructionInstance(PonderInstruction instruction) { - addInstruction(instruction); - } - - public void enqueueCallback(Consumer callback) { - addInstruction(callback); - } - - } - - private void addInstruction(PonderInstruction instruction) { - scene.schedule.add(instruction); - } - - private void addInstruction(Consumer callback) { - scene.schedule.add(PonderInstruction.simple(callback)); - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuildingUtil.java b/src/main/java/com/simibubi/create/foundation/ponder/SceneBuildingUtil.java deleted file mode 100644 index a7eed2600..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/SceneBuildingUtil.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; - -/** - * Helpful shortcuts for marking boundaries, points or sections inside the scene - */ -public class SceneBuildingUtil { - - public final SelectionUtil select; - public final VectorUtil vector; - public final PositionUtil grid; - - private final MutableBoundingBox sceneBounds; - - SceneBuildingUtil(MutableBoundingBox sceneBounds) { - this.sceneBounds = sceneBounds; - this.select = new SelectionUtil(); - this.vector = new VectorUtil(); - this.grid = new PositionUtil(); - } - - public class PositionUtil { - - public BlockPos at(int x, int y, int z) { - return new BlockPos(x, y, z); - } - - public BlockPos zero() { - return at(0, 0, 0); - } - - } - - public class VectorUtil { - - public Vector3d centerOf(int x, int y, int z) { - return centerOf(grid.at(x, y, z)); - } - - public Vector3d centerOf(BlockPos pos) { - return VecHelper.getCenterOf(pos); - } - - public Vector3d topOf(int x, int y, int z) { - return blockSurface(grid.at(x, y, z), Direction.UP); - } - - public Vector3d topOf(BlockPos pos) { - return blockSurface(pos, Direction.UP); - } - - public Vector3d blockSurface(BlockPos pos, Direction face) { - return blockSurface(pos, face, 0); - } - - public Vector3d blockSurface(BlockPos pos, Direction face, float margin) { - return centerOf(pos).add(Vector3d.of(face.getDirectionVec()) - .scale(.5f + margin)); - } - - public Vector3d of(double x, double y, double z) { - return new Vector3d(x, y, z); - } - - } - - public class SelectionUtil { - - public Selection everywhere() { - return Selection.of(sceneBounds); - } - - public Selection position(int x, int y, int z) { - return position(grid.at(x, y, z)); - } - - public Selection position(BlockPos pos) { - return cuboid(pos, BlockPos.ZERO); - } - - public Selection fromTo(int x, int y, int z, int x2, int y2, int z2) { - return fromTo(new BlockPos(x, y, z), new BlockPos(x2, y2, z2)); - } - - public Selection fromTo(BlockPos pos1, BlockPos pos2) { - return cuboid(pos1, pos2.subtract(pos1)); - } - - public Selection column(int x, int z) { - return cuboid(new BlockPos(x, 1, z), new Vector3i(0, sceneBounds.getYSize(), 0)); - } - - public Selection layer(int y) { - return layers(y, 1); - } - - public Selection layersFrom(int y) { - return layers(y, sceneBounds.getYSize() - y); - } - - public Selection layers(int y, int height) { - return cuboid(new BlockPos(0, y, 0), new Vector3i(sceneBounds.getXSize() - 1, - Math.min(sceneBounds.getYSize() - y, height) - 1, sceneBounds.getZSize() - 1)); - } - - public Selection cuboid(BlockPos origin, Vector3i size) { - return Selection.of(new MutableBoundingBox(origin, origin.add(size))); - } - - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/foundation/ponder/Selection.java b/src/main/java/com/simibubi/create/foundation/ponder/Selection.java deleted file mode 100644 index 4541f1cbe..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/Selection.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.simibubi.create.foundation.ponder; - -import java.util.HashSet; -import java.util.Set; -import java.util.function.Consumer; -import java.util.function.Predicate; - -import com.simibubi.create.foundation.utility.outliner.Outline.OutlineParams; -import com.simibubi.create.foundation.utility.outliner.Outliner; - -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MutableBoundingBox; -import net.minecraft.util.math.vector.Vector3d; - -public abstract class Selection implements Predicate { - - public static Selection of(MutableBoundingBox bb) { - return new Simple(bb); - } - - public abstract Selection add(Selection other); - - public abstract Selection substract(Selection other); - - public abstract Selection copy(); - - public abstract Vector3d getCenter(); - - public abstract void forEach(Consumer callback); - - public abstract OutlineParams makeOutline(Outliner outliner, Object slot); - - public OutlineParams makeOutline(Outliner outliner) { - return makeOutline(outliner, this); - } - - private static class Compound extends Selection { - - Set posSet; - Vector3d center; - - public Compound(Simple initial) { - posSet = new HashSet<>(); - add(initial); - } - - private Compound(Set template) { - posSet = new HashSet<>(template); - } - - @Override - public boolean test(BlockPos t) { - return posSet.contains(t); - } - - @Override - public Selection add(Selection other) { - other.forEach(p -> posSet.add(p.toImmutable())); - center = null; - return this; - } - - @Override - public Selection substract(Selection other) { - other.forEach(p -> posSet.remove(p.toImmutable())); - center = null; - return this; - } - - @Override - public void forEach(Consumer callback) { - posSet.forEach(callback); - } - - @Override - public OutlineParams makeOutline(Outliner outliner, Object slot) { - return outliner.showCluster(slot, posSet); - } - - @Override - public Vector3d getCenter() { - return center == null ? center = evalCenter() : center; - } - - private Vector3d evalCenter() { - Vector3d center = Vector3d.ZERO; - if (posSet.isEmpty()) - return center; - for (BlockPos blockPos : posSet) - center = center.add(Vector3d.of(blockPos)); - center = center.scale(1f / posSet.size()); - return center.add(new Vector3d(.5, .5, .5)); - } - - @Override - public Selection copy() { - return new Compound(posSet); - } - - } - - private static class Simple extends Selection { - - private MutableBoundingBox bb; - private AxisAlignedBB aabb; - - public Simple(MutableBoundingBox bb) { - this.bb = bb; - this.aabb = getAABB(); - } - - @Override - public boolean test(BlockPos t) { - return bb.isVecInside(t); - } - - @Override - public Selection add(Selection other) { - return new Compound(this).add(other); - } - - @Override - public Selection substract(Selection other) { - return new Compound(this).substract(other); - } - - @Override - public void forEach(Consumer callback) { - BlockPos.stream(bb) - .forEach(callback); - } - - @Override - public Vector3d getCenter() { - return aabb.getCenter(); - } - - @Override - public OutlineParams makeOutline(Outliner outliner, Object slot) { - return outliner.showAABB(slot, aabb); - } - - private AxisAlignedBB getAABB() { - return new AxisAlignedBB(bb.minX, bb.minY, bb.minZ, bb.maxX + 1, bb.maxY + 1, bb.maxZ + 1); - } - - @Override - public Selection copy() { - return new Simple(new MutableBoundingBox(bb)); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ArmScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ArmScenes.java deleted file mode 100644 index af26370f7..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ArmScenes.java +++ /dev/null @@ -1,611 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllShapes; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; -import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class ArmScenes { - - public static void setup(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_arm", "Setting up Mechanical Arms"); - scene.configureBasePlate(0, 0, 5); - scene.showBasePlate(); - - ItemStack armItem = AllBlocks.MECHANICAL_ARM.asStack(); - BlockPos armPos = util.grid.at(2, 1, 2); - Selection armSel = util.select.position(armPos); - BlockPos inputDepot = util.grid.at(4, 2, 1); - Vector3d depotSurface = util.vector.blockSurface(inputDepot, Direction.NORTH); - Vector3d armSurface = util.vector.blockSurface(armPos, Direction.WEST); - - scene.idle(20); - - scene.world.setKineticSpeed(armSel, 0); - scene.world.showSection(armSel, Direction.DOWN); - scene.idle(10); - scene.effects.indicateRedstone(armPos); - scene.overlay.showSelectionWithText(armSel, 70) - .attachKeyFrame() - .colored(PonderPalette.RED) - .text("Mechanical Arms have to be assigned their in- and outputs before they are placed") - .pointAt(armSurface) - .placeNearTarget(); - scene.idle(80); - scene.world.showSection(util.select.fromTo(4, 1, 1, 4, 2, 1), Direction.DOWN); - scene.world.showSection(util.select.fromTo(0, 1, 1, 0, 2, 1), Direction.DOWN); - scene.world.hideSection(armSel, Direction.UP); - scene.idle(20); - scene.overlay.showControls(new InputWindowElement(depotSurface, Pointing.RIGHT).rightClick() - .withItem(armItem), 50); - scene.idle(7); - AxisAlignedBB depotBounds = AllShapes.DEPOT.getBoundingBox(); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.INPUT, new Object(), depotBounds.offset(4, 2, 1), 400); - - scene.overlay.showText(70) - .attachKeyFrame() - .colored(PonderPalette.INPUT) - .text("Right-Click inventories while holding the Arm to assign them as Targets") - .pointAt(util.vector.blockSurface(inputDepot, Direction.WEST)) - .placeNearTarget(); - scene.idle(80); - - BlockPos outputDepot = util.grid.at(0, 2, 1); - InputWindowElement input = - new InputWindowElement(util.vector.blockSurface(outputDepot, Direction.NORTH), Pointing.RIGHT).rightClick() - .withItem(armItem); - scene.overlay.showControls(input, 20); - scene.idle(7); - Object second = new Object(); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.INPUT, second, depotBounds.offset(0, 2, 1), 100); - scene.idle(25); - scene.overlay.showControls(input, 30); - scene.idle(7); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, second, depotBounds.offset(0, 2, 1), 280); - scene.overlay.showText(70) - .colored(PonderPalette.OUTPUT) - .text("Right-Click again to toggle between Input (Blue) and Output (Orange)") - .pointAt(util.vector.blockSurface(outputDepot, Direction.WEST)) - .placeNearTarget(); - - scene.idle(80); - scene.world.showSection(util.select.position(1, 1, 0), Direction.DOWN); - scene.idle(15); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.INPUT, new Object(), depotBounds.offset(1, 1, 0), 43); - - scene.overlay.showText(50) - .colored(PonderPalette.WHITE) - .text("Left-Click components to remove their Selection") - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 0), Direction.WEST)) - .placeNearTarget(); - - scene.idle(35); - scene.overlay - .showControls(new InputWindowElement(util.vector.topOf(util.grid.at(1, 1, 0)), Pointing.DOWN).leftClick() - .withItem(armItem), 30); - scene.idle(50); - - scene.world.showSection(armSel, Direction.DOWN); - scene.idle(10); - Vector3d armTop = armSurface.add(0.5, 1.5, 0); - scene.overlay.showText(70) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .text("Once placed, the Mechanical Arm will target the blocks selected previously") - .pointAt(armTop) - .placeNearTarget(); - scene.idle(80); - - scene.effects.indicateSuccess(armPos); - scene.world.showSection(util.select.fromTo(2, 1, 5, 2, 1, 3) - .add(util.select.position(2, 0, 5)), Direction.DOWN); - ItemStack copper = AllItems.COPPER_INGOT.asStack(); - scene.world.createItemOnBeltLike(inputDepot, Direction.SOUTH, copper); - scene.idle(10); - - scene.world.setKineticSpeed(armSel, -48); - scene.idle(20); - scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 0); - scene.idle(24); - scene.world.removeItemsFromBelt(inputDepot); - scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, copper, -1); - scene.idle(20); - scene.world.instructArm(armPos, Phase.MOVE_TO_OUTPUT, copper, 0); - scene.idle(24); - scene.world.createItemOnBeltLike(outputDepot, Direction.UP, copper); - scene.world.instructArm(armPos, Phase.SEARCH_INPUTS, ItemStack.EMPTY, -1); - scene.idle(44); - - scene.world.showSection(util.select.fromTo(1, 1, 4, 1, 3, 4), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(4, 1, 2), Direction.DOWN); - scene.idle(5); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, new Object(), depotBounds.offset(0, 2, 1), 60); - scene.idle(5); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.INPUT, new Object(), depotBounds.offset(4, 2, 1), 60); - scene.idle(5); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, new Object(), depotBounds.offset(1, 1, 0), 60); - scene.idle(5); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.INPUT, new Object(), depotBounds.offset(1, 3, 4), 60); - scene.idle(5); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.INPUT, new Object(), depotBounds.offset(4, 1, 2), 60); - scene.idle(5); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("They can have any amount of in- and outputs within their range") - .pointAt(util.vector.blockSurface(util.grid.at(1, 3, 4), Direction.WEST)) - .placeNearTarget(); - - inputDepot = util.grid.at(1, 3, 4); - outputDepot = util.grid.at(1, 1, 0); - copper = AllBlocks.COPPER_BLOCK.asStack(); - scene.world.createItemOnBeltLike(inputDepot, Direction.SOUTH, copper); - scene.idle(20); - scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 2); - scene.idle(24); - scene.world.removeItemsFromBelt(inputDepot); - scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, copper, -1); - scene.idle(20); - scene.world.instructArm(armPos, Phase.MOVE_TO_OUTPUT, copper, 2); - scene.idle(24); - scene.world.createItemOnBeltLike(outputDepot, Direction.UP, copper); - scene.world.instructArm(armPos, Phase.SEARCH_INPUTS, ItemStack.EMPTY, -1); - - scene.world.hideSection(util.select.fromTo(4, 2, 1, 4, 1, 1), Direction.UP); - scene.idle(2); - scene.world.hideSection(util.select.fromTo(1, 1, 4, 1, 3, 4), Direction.UP); - scene.idle(5); - scene.world.hideSection(util.select.fromTo(0, 1, 1, 0, 2, 1), Direction.UP); - scene.idle(2); - scene.world.hideSection(util.select.position(1, 1, 0), Direction.UP); - scene.idle(5); - scene.world.hideSection(util.select.position(4, 1, 2), Direction.UP); - scene.idle(15); - - scene.world.showSection(util.select.fromTo(4, 1, 3, 4, 2, 3), Direction.NORTH); - scene.idle(5); - scene.world.showSection(util.select.fromTo(0, 1, 3, 0, 2, 3), Direction.NORTH); - scene.idle(15); - - Object in = new Object(); - Object out = new Object(); - AxisAlignedBB chestBounds = new AxisAlignedBB(1 / 16f, 0, 1 / 16f, 15 / 16f, 14 / 16f, 15 / 16f); - AxisAlignedBB funnelBounds = new AxisAlignedBB(0, 0, 8 / 16f, 16 / 16f, 16 / 16f, 16 / 16f); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, in, chestBounds.offset(4, 2, 3), 120); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, out, chestBounds.offset(0, 2, 3), 120); - scene.overlay.showText(80) - .attachKeyFrame() - .text("However, not every type of Inventory can be interacted with directly") - .colored(PonderPalette.RED) - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(0, 2, 3), Direction.WEST)); - scene.idle(90); - - scene.world.showSection(util.select.fromTo(4, 1, 2, 4, 2, 2), Direction.SOUTH); - scene.idle(5); - scene.world.showSection(util.select.position(0, 2, 2), Direction.SOUTH); - scene.idle(10); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.INPUT, in, depotBounds.offset(4, 1, 2), 80); - scene.idle(5); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, out, funnelBounds.offset(0, 2, 2), 80); - scene.idle(5); - - scene.overlay.showText(60) - .text("Funnels and Depots can help to Bridge that gap") - .colored(PonderPalette.OUTPUT) - .placeNearTarget() - .pointAt(util.vector.topOf(util.grid.at(0, 2, 2)) - .add(0, 0, 0.25)); - scene.idle(70); - ItemStack sword = new ItemStack(Items.GOLDEN_SWORD); - inputDepot = util.grid.at(4, 1, 2); - scene.overlay - .showControls(new InputWindowElement(util.vector.topOf(inputDepot), Pointing.RIGHT).withItem(sword), 30); - scene.world.createItemOnBeltLike(inputDepot, Direction.SOUTH, sword); - - scene.idle(20); - scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 1); - scene.idle(24); - scene.world.removeItemsFromBelt(inputDepot); - scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, sword, -1); - scene.idle(20); - scene.world.instructArm(armPos, Phase.MOVE_TO_OUTPUT, sword, 1); - scene.idle(24); - scene.world.flapFunnel(util.grid.at(0, 2, 2), false); - scene.world.instructArm(armPos, Phase.SEARCH_INPUTS, ItemStack.EMPTY, -1); - scene.idle(5); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(0, 2, 3), Direction.WEST), Pointing.LEFT) - .withItem(sword), - 30); - - } - - public static void filtering(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_arm_filtering", "Filtering Outputs of the Mechanical Arm"); - scene.configureBasePlate(0, 0, 6); - scene.scaleSceneView(0.9f); - scene.world.setKineticSpeed(util.select.fromTo(4, 1, 4, 6, 0, 5), 0); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.fromTo(4, 1, 4, 5, 1, 5), Direction.DOWN); - scene.idle(10); - - for (int x = 0; x < 2; x++) { - scene.idle(3); - scene.world.showSection(util.select.position(x + 1, 1, 4), Direction.DOWN); - } - - for (int y = 0; y < 3; y++) { - for (int x = 0; x < 3; x++) { - scene.world.showSection(util.select.position(y == 1 ? x + 3 : 5 - x, y + 1, 1), Direction.DOWN); - scene.idle(2); - } - } - scene.world.showSection(util.select.position(2, 1, 1), Direction.EAST); - - ItemStack sand = new ItemStack(Items.SAND, 64); - ItemStack sulphur = new ItemStack(Items.GUNPOWDER, 64); - scene.world.createItemOnBeltLike(util.grid.at(2, 1, 4), Direction.SOUTH, sand); - scene.world.createItemOnBeltLike(util.grid.at(1, 1, 4), Direction.SOUTH, sulphur); - - scene.overlay.showSelectionWithText(util.select.fromTo(2, 1, 4, 1, 1, 4), 60) - .text("Inputs") - .placeNearTarget() - .colored(PonderPalette.INPUT); - scene.idle(50); - scene.overlay.showSelectionWithText(util.select.fromTo(5, 3, 1, 3, 1, 1), 40) - .text("Outputs") - .placeNearTarget() - .colored(PonderPalette.OUTPUT); - scene.idle(50); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("Sometimes it is desirable to restrict targets of the Arm by matching a filter") - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(3, 3, 1), Direction.WEST)); - - scene.idle(90); - scene.rotateCameraY(-90 - 30); - scene.idle(20); - - scene.overlay.showSelectionWithText(util.select.position(4, 1, 4), 80) - .colored(PonderPalette.RED) - .text("Mechanical Arms by themselves do not provide any options for filtering") - .placeNearTarget(); - scene.idle(90); - - for (int y = 0; y < 3; y++) { - scene.world.showSection(util.select.fromTo(5, y + 1, 2, 3, y + 1, 2), Direction.NORTH); - scene.idle(2); - } - - Vector3d filterSlot = util.vector.of(3.5, 3.75, 2.6); - scene.overlay.showFilterSlotInput(filterSlot, 80); - scene.idle(10); - scene.overlay.showText(80) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .pointAt(filterSlot) - .text("Brass Funnels as Targets do however communicate their own filter to the Arm") - .placeNearTarget(); - scene.idle(90); - - for (int y = 0; y < 3; y++) { - for (int x = 0; x < 3; x++) { - ItemStack item = (x + y) % 2 == 0 ? sulphur : sand; - scene.overlay - .showControls(new InputWindowElement(filterSlot.add(2 - x, -y, 0), Pointing.LEFT).rightClick() - .withItem(item), 5); - scene.idle(7); - scene.world.setFilterData(util.select.position(5 - x, 3 - y, 2), FunnelTileEntity.class, item); - scene.idle(4); - } - } - - scene.world.setKineticSpeed(util.select.fromTo(4, 1, 4, 6, 0, 5), 24); - scene.world.multiplyKineticSpeed(util.select.position(5, 1, 5), -1); - scene.world.multiplyKineticSpeed(util.select.position(4, 1, 4), 2); - scene.idle(10); - - BlockPos armPos = util.grid.at(4, 1, 4); - scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 1); - scene.idle(24); - scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, sand, -1); - scene.idle(20); - - scene.overlay.showText(80) - .attachKeyFrame() - .pointAt(util.vector.topOf(2, 1, 4)) - .text("The Arm is smart enough not to pick up items it couldn't distribute") - .placeNearTarget(); - scene.idle(90); - - for (int i = 0; i < 4; i++) { - int index = i * 2 + 1; - scene.world.instructArm(armPos, Phase.MOVE_TO_OUTPUT, sand, index); - scene.idle(24); - BlockPos funnelPos = util.grid.at(5 - index % 3, 1 + index / 3, 2); - scene.world.flapFunnel(funnelPos, false); - scene.world.instructArm(armPos, Phase.SEARCH_INPUTS, i == 3 ? ItemStack.EMPTY : sand, -1); - scene.world.modifyTileEntity(funnelPos.north(), MechanicalCrafterTileEntity.class, mct -> mct.getInventory() - .insertItem(0, sand.copy(), false)); - scene.idle(10); - } - - scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 0); - scene.idle(24); - scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, sulphur, -1); - scene.idle(20); - - scene.rotateCameraY(120); - scene.world.setCraftingResult(util.grid.at(3, 1, 1), new ItemStack(Blocks.TNT)); - - for (int i = 0; i < 5; i++) { - int index = i * 2; - scene.world.instructArm(armPos, Phase.MOVE_TO_OUTPUT, sulphur, index); - scene.idle(24); - BlockPos funnelPos = util.grid.at(3 + index % 3, 1 + index / 3, 2); - scene.world.flapFunnel(funnelPos, false); - scene.world.instructArm(armPos, Phase.SEARCH_INPUTS, i == 4 ? ItemStack.EMPTY : sulphur, -1); - scene.world.modifyTileEntity(funnelPos.north(), MechanicalCrafterTileEntity.class, mct -> mct.getInventory() - .insertItem(0, sulphur.copy(), false)); - scene.idle(10); - } - - scene.idle(120); - } - - public static void modes(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_arm_modes", "Distribution modes of the Mechanical Arm"); - scene.configureBasePlate(0, 1, 5); - scene.world.setBlock(util.grid.at(3, 1, 0), Blocks.BARRIER.getDefaultState(), false); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 4, 4, 1, 5), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 1, 4, 1, 2, 5), Direction.NORTH); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 1, 1, 5, 1, 2), Direction.SOUTH); - scene.idle(10); - - AxisAlignedBB depotBox = AllShapes.DEPOT.getBoundingBox(); - AxisAlignedBB beltBox = depotBox.contract(0, -3 / 16f, 0) - .grow(1, 0, 0); - BlockPos depotPos = util.grid.at(1, 1, 4); - BlockPos armPos = util.grid.at(3, 1, 4); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.INPUT, depotBox, depotBox.offset(1, 1, 4), 60); - scene.overlay.showText(30) - .text("Input") - .pointAt(util.vector.blockSurface(depotPos, Direction.WEST)) - .placeNearTarget() - .colored(PonderPalette.INPUT); - scene.idle(40); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, depotBox, beltBox.offset(2, 1, 2), 40); - scene.overlay.showText(40) - .text("Outputs") - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.WEST)) - .placeNearTarget() - .colored(PonderPalette.OUTPUT); - scene.idle(50); - - ItemStack item = new ItemStack(Items.SNOWBALL); - - scene.world.createItemOnBeltLike(depotPos, Direction.SOUTH, item); - scene.overlay.showText(60) - .attachKeyFrame() - .text("Whenever an Arm has to choose between multiple valid outputs...") - .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 2), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.OUTPUT); - scene.idle(70); - - Vector3d scrollSlot = util.vector.of(3.5, 1.25, 4); - scene.overlay.showFilterSlotInput(scrollSlot, 120); - scene.overlay.showText(50) - .text("...it will act according to its setting") - .pointAt(scrollSlot) - .placeNearTarget(); - scene.idle(60); - - scene.overlay.showControls(new InputWindowElement(scrollSlot, Pointing.RIGHT).scroll() - .withWrench(), 40); - scene.idle(10); - scene.overlay.showText(50) - .text("Scrolling with a Wrench will allow you to configure it") - .pointAt(scrollSlot) - .placeNearTarget(); - scene.idle(60); - - ElementLink blockage = - scene.world.showIndependentSection(util.select.position(4, 1, 0), Direction.UP); - scene.world.moveSection(blockage, util.vector.of(-1, 0, 0), 0); - - for (int i = 0; i < 20; i++) { - - if (i == 2) { - scene.overlay.showText(60) - .attachKeyFrame() - .text("Round Robin mode simply cycles through all outputs that are available") - .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 2), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.OUTPUT); - } - if (i == 6) - continue; - if (i == 7) { - scene.overlay.showText(60) - .attachKeyFrame() - .text("If an output is unable to take more items, it will be skipped") - .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 2), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.GREEN); - } - - if (i == 12) { - scene.world.moveSection(blockage, util.vector.of(-1, 0, 0), 10); - scene.world.setBlock(util.grid.at(3, 1, 0), Blocks.BARRIER.getDefaultState(), false); - } - - int index = i % 3; - - if (i == 13) { - scene.world.setBlock(util.grid.at(2, 1, 0), Blocks.BARRIER.getDefaultState(), false); - ElementLink blockage2 = - scene.world.showIndependentSection(util.select.position(4, 1, 0), Direction.UP); - scene.world.moveSection(blockage2, util.vector.of(-2, 0, 0), 0); - scene.overlay.showText(60) - .attachKeyFrame() - .text("Prefer First prioritizes the outputs selected earliest when configuring this Arm") - .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 2), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.GREEN); - index = 0; - } - - if (i == 14) - index = 1; - if (i == 15) - index = 1; - if (i >= 16) - index = 2; - - scene.idle(5); - scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 0); - scene.idle(12); - scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, item, -1); - scene.world.removeItemsFromBelt(depotPos); - scene.idle(5); - - if (i == 9) { - scene.overlay.showText(80) - .attachKeyFrame() - .text("Forced Round Robin mode will never skip outputs, and instead wait until they are free") - .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 2), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.RED); - scene.idle(40); - scene.world.moveSection(blockage, util.vector.of(1, 0, 0), 10); - scene.world.setBlock(util.grid.at(3, 1, 0), Blocks.AIR.getDefaultState(), false); - scene.idle(50); - scene.world.multiplyKineticSpeed(util.select.fromTo(1, 1, 1, 5, 0, 3), 2); - } - - scene.world.instructArm(armPos, Phase.MOVE_TO_OUTPUT, item, index); - scene.world.createItemOnBeltLike(depotPos, Direction.SOUTH, item); - scene.idle(12); - scene.world.instructArm(armPos, Phase.SEARCH_INPUTS, ItemStack.EMPTY, -1); - scene.world.createItemOnBelt(util.grid.at(3 - index, 1, 2), Direction.UP, item); - } - - } - - public static void redstone(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_arm_redstone", "Controlling Mechanical Arms with Redstone"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 1, 3, 2, 1, 4), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 5, 4, 1, 3), Direction.WEST); - scene.idle(5); - scene.world.showSection(util.select.position(4, 1, 2), Direction.SOUTH); - scene.idle(5); - scene.world.showSection(util.select.fromTo(2, 1, 1, 4, 1, 1), Direction.EAST); - scene.idle(10); - Selection redstone = util.select.fromTo(1, 1, 0, 1, 1, 2); - scene.world.showSection(redstone, Direction.SOUTH); - - BlockPos armPos = util.grid.at(1, 1, 3); - BlockPos leverPos = util.grid.at(1, 1, 0); - ItemStack item = new ItemStack(Items.REDSTONE_ORE); - - scene.world.createItemOnBeltLike(util.grid.at(4, 1, 1), Direction.SOUTH, item); - - for (int i = 0; i < 3; i++) { - scene.idle(12); - - if (i == 1) { - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(leverPos); - scene.idle(10); - - scene.overlay.showText(60) - .colored(PonderPalette.RED) - .attachKeyFrame() - .pointAt(util.vector.topOf(armPos.up())) - .placeNearTarget() - .text("When powered by Redstone, Mechanical Arms will not activate"); - scene.idle(70); - scene.world.toggleRedstonePower(redstone); - } - - if (i == 2) { - scene.idle(60); - scene.world.toggleRedstonePower(redstone); - scene.idle(3); - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(leverPos); - } - - scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 0); - scene.idle(18); - scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, item, -1); - scene.world.removeItemsFromBelt(util.grid.at(3, 1, 1)); - scene.idle(5); - - if (i == 1) { - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(leverPos); - scene.overlay.showText(60) - .pointAt(util.vector.topOf(armPos.up())) - .placeNearTarget() - .text("Before stopping, it will finish any started cycles"); - } - - scene.idle(10); - - if (i == 2) { - scene.overlay.showText(100) - .colored(PonderPalette.GREEN) - .attachKeyFrame() - .pointAt(util.vector.topOf(armPos.up())) - .placeNearTarget() - .text("Thus, a negative pulse can be used to trigger exactly one activation cycle"); - } - - scene.world.instructArm(armPos, Phase.MOVE_TO_OUTPUT, item, 0); - scene.world.createItemOnBeltLike(util.grid.at(4, 1, 1), Direction.SOUTH, item); - scene.idle(18); - scene.world.instructArm(armPos, Phase.SEARCH_INPUTS, ItemStack.EMPTY, -1); - scene.world.createItemOnBelt(util.grid.at(3, 1, 3), Direction.UP, item); - } - - scene.idle(5); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java deleted file mode 100644 index 8152befd9..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/BearingScenes.java +++ /dev/null @@ -1,684 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.SailBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.entity.Entity; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class BearingScenes { - - public static void windmillsAsSource(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("windmill_source", "Generating Rotational Force using Windmill Bearings"); - scene.configureBasePlate(1, 1, 5); - scene.setSceneOffsetY(-1); - - scene.world.showSection(util.select.fromTo(1, 0, 1, 5, 0, 5), Direction.UP); - scene.world.setBlock(util.grid.at(2, -1, 0), AllBlocks.SAIL.getDefaultState() - .with(SailBlock.FACING, Direction.NORTH), false); - scene.idle(5); - Selection kinetics = util.select.fromTo(3, 1, 1, 4, 1, 4); - Selection largeCog = util.select.position(3, 2, 2); - BlockPos windmill = util.grid.at(3, 2, 1); - scene.world.showSection(kinetics.add(largeCog), Direction.DOWN); - scene.idle(10); - - scene.world.showSection(util.select.position(windmill), Direction.DOWN); - scene.idle(10); - - BlockPos anchorPos = windmill.north(); - scene.overlay.showSelectionWithText(util.select.position(anchorPos), 60) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(windmill, Direction.WEST)) - .placeNearTarget() - .text("Windmill Bearings attach to the block in front of them"); - scene.idle(50); - - ElementLink structure = - scene.world.showIndependentSection(util.select.position(anchorPos), Direction.SOUTH); - scene.idle(10); - for (Direction d : Iterate.directions) - if (d.getAxis() != Axis.Z) - scene.world.showSectionAndMerge(util.select.fromTo(anchorPos.offset(d, 1), anchorPos.offset(d, 2)), - d.getOpposite(), structure); - scene.idle(10); - - scene.world.showSectionAndMerge(util.select.fromTo(anchorPos.up() - .east(), - anchorPos.up(3) - .east()), - Direction.WEST, structure); - scene.world.showSectionAndMerge(util.select.fromTo(anchorPos.down() - .west(), - anchorPos.down(3) - .west()), - Direction.EAST, structure); - scene.world.showSectionAndMerge(util.select.fromTo(anchorPos.east() - .down(), - anchorPos.east(3) - .down()), - Direction.UP, structure); - scene.world.showSectionAndMerge(util.select.fromTo(anchorPos.west() - .up(), - anchorPos.west(3) - .up()), - Direction.DOWN, structure); - - scene.idle(5); - for (Direction d : Iterate.directions) - if (d.getAxis() != Axis.Z) - scene.effects.superGlue(anchorPos.offset(d, 1), d.getOpposite(), false); - scene.idle(10); - - scene.overlay.showText(60) - .pointAt(util.vector.blockSurface(anchorPos, Direction.NORTH)) - .placeNearTarget() - .text("If enough Sail-like blocks are attached to the block, it can act as a Windmill"); - scene.idle(70); - - scene.rotateCameraY(-90); - scene.idle(20); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(windmill), Pointing.DOWN).rightClick(), 60); - scene.idle(7); - scene.world.rotateBearing(windmill, 360, 200); - scene.world.rotateSection(structure, 0, 0, 360, 200); - scene.world.setKineticSpeed(largeCog, 4); - scene.world.setKineticSpeed(kinetics, -8); - scene.effects.rotationDirectionIndicator(windmill.south()); - BlockPos gaugePos = util.grid.at(4, 1, 4); - scene.effects.indicateSuccess(gaugePos); - scene.idle(10); - - scene.overlay.showText(60) - .pointAt(util.vector.topOf(windmill)) - .placeNearTarget() - .text("Activated with Right-Click, the Windmill Bearing will start providing Rotational Force"); - scene.idle(70); - - scene.overlay.showText(60) - .pointAt(util.vector.blockSurface(gaugePos, Direction.WEST)) - .colored(PonderPalette.SLOW) - .placeNearTarget() - .text("The Amount of Sail Blocks determine its Rotation Speed"); - scene.idle(90); - - Vector3d surface = util.vector.blockSurface(windmill, Direction.WEST); - scene.overlay.showControls(new InputWindowElement(surface, Pointing.DOWN).scroll() - .withWrench(), 60); - scene.overlay.showCenteredScrollInput(windmill, Direction.WEST, 50); - scene.overlay.showText(60) - .pointAt(surface) - .placeNearTarget() - .text("Use a Wrench to configure its rotation direction"); - scene.idle(36); - - scene.world.rotateBearing(windmill, -90 - 45, 75); - scene.world.rotateSection(structure, 0, 0, -90 - 45, 75); - scene.world.modifyKineticSpeed(largeCog, f -> -f); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(windmill.south()); - scene.idle(69); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(windmill), Pointing.DOWN).rightClick(), 60); - scene.idle(7); - scene.world.rotateBearing(windmill, -45, 0); - scene.world.rotateSection(structure, 0, 0, -45, 0); - scene.world.setKineticSpeed(largeCog, 0); - scene.world.setKineticSpeed(kinetics, 0); - scene.idle(10); - scene.overlay.showText(60) - .pointAt(util.vector.topOf(windmill)) - .placeNearTarget() - .text("Right-click the Bearing anytime to stop and edit the Structure again"); - - } - - public static void windmillsAnyStructure(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("windmill_structure", "Windmill Contraptions"); - scene.configureBasePlate(1, 1, 5); - scene.setSceneOffsetY(-1); - scene.world.modifyEntities(SuperGlueEntity.class, Entity::remove); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos bearingPos = util.grid.at(3, 1, 3); - scene.world.showSection(util.select.position(bearingPos), Direction.DOWN); - scene.idle(10); - ElementLink contraption = - scene.world.showIndependentSection(util.select.position(bearingPos.up()), Direction.DOWN); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.fromTo(3, 2, 2, 3, 3, 1), Direction.SOUTH, contraption); - scene.world.showSectionAndMerge(util.select.fromTo(3, 2, 4, 3, 3, 5), Direction.NORTH, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(3, 1, 5), Direction.NORTH, contraption); - scene.world.showSectionAndMerge(util.select.position(3, 4, 2), Direction.DOWN, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(2, 1, 5), Direction.EAST, contraption); - scene.world.showSectionAndMerge(util.select.position(3, 3, 3), Direction.DOWN, contraption); - scene.idle(5); - scene.effects.superGlue(bearingPos.up(), Direction.SOUTH, true); - scene.effects.superGlue(bearingPos.up(), Direction.NORTH, true); - scene.idle(5); - scene.effects.superGlue(util.grid.at(3, 1, 5), Direction.UP, true); - scene.idle(5); - scene.effects.superGlue(util.grid.at(3, 3, 3), Direction.DOWN, true); - scene.idle(10); - - scene.overlay.showOutline(PonderPalette.BLUE, bearingPos, util.select.fromTo(3, 2, 1, 3, 3, 2), 80); - scene.overlay.showSelectionWithText(util.select.fromTo(3, 2, 4, 3, 3, 5), 80) - .colored(PonderPalette.BLUE) - .text("Any Structure can count as a valid Windmill, as long as it contains at least 8 sail-like Blocks."); - - scene.idle(90); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(bearingPos, Direction.WEST), Pointing.LEFT).rightClick(), - 40); - scene.idle(7); - scene.markAsFinished(); - scene.world.rotateBearing(bearingPos, -720, 400); - scene.world.rotateSection(contraption, 0, -720, 0, 400); - scene.world.modifyTileEntity(util.grid.at(2, 1, 5), HarvesterTileEntity.class, - hte -> hte.setAnimatedSpeed(-150)); - scene.idle(400); - scene.world.modifyTileEntity(util.grid.at(2, 1, 5), HarvesterTileEntity.class, hte -> hte.setAnimatedSpeed(0)); - } - - public static void mechanicalBearing(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_bearing", "Movings Structures using the Mechanical Bearing"); - scene.configureBasePlate(1, 1, 5); - scene.setSceneOffsetY(-1); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.layer(2), Direction.DOWN); - scene.idle(10); - - Selection cog1 = util.select.position(6, 0, 4); - Selection cog2 = util.select.position(5, 1, 4); - Selection cog3 = util.select.position(4, 1, 3); - Selection cog4 = util.select.position(3, 1, 3); - Selection all = cog1.copy() - .add(cog2) - .add(cog3) - .add(cog4); - - BlockPos bearingPos = util.grid.at(3, 2, 3); - scene.overlay.showSelectionWithText(util.select.position(bearingPos.up()), 60) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) - .placeNearTarget() - .text("Mechanical Bearings attach to the block in front of them"); - scene.idle(50); - - ElementLink plank = scene.world.showIndependentSection(util.select.position(bearingPos.up() - .east() - .north()), Direction.DOWN); - scene.world.moveSection(plank, util.vector.of(-1, 0, 1), 0); - scene.idle(20); - - scene.world.setKineticSpeed(cog1, -8); - scene.world.setKineticSpeed(cog2, 8); - scene.world.setKineticSpeed(cog3, -16); - scene.world.setKineticSpeed(cog4, 16); - scene.effects.rotationSpeedIndicator(bearingPos.down()); - scene.world.rotateBearing(bearingPos, 360, 37 * 2); - scene.world.rotateSection(plank, 0, 360, 0, 37 * 2); - - scene.overlay.showText(80) - .pointAt(util.vector.topOf(bearingPos.up())) - .placeNearTarget() - .text("Upon receiving Rotational Force, it will assemble it into a Rotating Contraption"); - scene.idle(37 * 2); - scene.world.setKineticSpeed(all, 0); - scene.idle(20); - - scene.world.hideIndependentSection(plank, Direction.UP); - scene.idle(15); - Selection plank2 = util.select.position(4, 3, 2); - ElementLink contraption = scene.world.showIndependentSection(util.select.layersFrom(3) - .substract(plank2), Direction.DOWN); - scene.idle(10); - scene.world.showSectionAndMerge(plank2, Direction.SOUTH, contraption); - scene.idle(15); - scene.effects.superGlue(util.grid.at(4, 3, 2), Direction.SOUTH, true); - scene.idle(5); - - scene.world.configureCenterOfRotation(contraption, util.vector.topOf(bearingPos)); - scene.world.setKineticSpeed(cog1, -8); - scene.world.setKineticSpeed(cog2, 8); - scene.world.setKineticSpeed(cog3, -16); - scene.world.setKineticSpeed(cog4, 16); - scene.effects.rotationSpeedIndicator(bearingPos.down()); - scene.world.rotateBearing(bearingPos, 360 * 2, 37 * 4); - scene.world.rotateSection(contraption, 0, 360 * 2, 0, 37 * 4); - - scene.overlay.showText(120) - .pointAt(util.vector.topOf(bearingPos.up())) - .placeNearTarget() - .sharedText("movement_anchors"); - - scene.idle(37 * 4); - scene.world.setKineticSpeed(all, 0); - } - - public static void bearingModes(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("bearing_modes", "Movement Modes of the Mechanical Bearing"); - scene.configureBasePlate(1, 1, 6); - scene.setSceneOffsetY(-1); - - Selection sideCog = util.select.position(util.grid.at(7, 0, 3)); - Selection cogColumn = util.select.fromTo(6, 1, 3, 6, 4, 3); - Selection cogAndClutch = util.select.fromTo(5, 3, 1, 5, 4, 2); - BlockPos leverPos = util.grid.at(5, 3, 1); - - scene.world.setKineticSpeed(sideCog, 4); - scene.world.setKineticSpeed(cogColumn, -4); - scene.world.setKineticSpeed(cogAndClutch, 8); - scene.world.toggleRedstonePower(cogAndClutch); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(cogColumn, Direction.DOWN); - scene.idle(5); - scene.world.showSection(cogAndClutch, Direction.DOWN); - scene.idle(10); - - BlockPos bearingPos = util.grid.at(5, 2, 2); - scene.world.showSection(util.select.position(bearingPos), Direction.UP); - scene.idle(10); - - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(5, 1, 2, 2, 1, 2), Direction.EAST); - scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(bearingPos)); - scene.idle(20); - - scene.world.toggleRedstonePower(cogAndClutch); - scene.effects.indicateRedstone(leverPos); - scene.world.rotateSection(contraption, 0, 55, 0, 23); - scene.world.rotateBearing(bearingPos, 55, 23); - scene.idle(24); - - scene.world.toggleRedstonePower(cogAndClutch); - scene.effects.indicateRedstone(leverPos); - scene.world.rotateSection(contraption, 0, 35, 0, 0); - scene.world.rotateBearing(bearingPos, 35, 0); - - Vector3d target = util.vector.topOf(bearingPos.down()); - scene.overlay.showLine(PonderPalette.RED, target.add(-2.5, 0, 3.5), target, 50); - scene.overlay.showLine(PonderPalette.GREEN, target.add(0, 0, 4.5), target, 50); - - scene.idle(50); - - scene.overlay.showText(100) - .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) - .placeNearTarget() - .colored(PonderPalette.RED) - .text("When Stopped, the Bearing will place the structure at the nearest grid-aligned Angle"); - scene.idle(110); - - scene.overlay.showCenteredScrollInput(bearingPos, Direction.NORTH, 60); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(bearingPos, Direction.NORTH), Pointing.DOWN).scroll() - .withWrench(), - 60); - scene.idle(10); - scene.overlay.showText(60) - .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) - .placeNearTarget() - .sharedText("behaviour_modify_wrench"); - scene.idle(70); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.toggleRedstonePower(cogAndClutch); - scene.effects.indicateRedstone(leverPos); - scene.world.rotateSection(contraption, 0, -55, 0, 23); - scene.world.rotateBearing(bearingPos, -55, 23); - scene.idle(24); - - scene.world.toggleRedstonePower(cogAndClutch); - scene.effects.indicateRedstone(leverPos); - scene.idle(40); - - scene.overlay.showText(120) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 3), Direction.UP)) - .text("It can be configured never to revert to solid blocks, or only near the angle it started at"); - - } - - public static void stabilizedBearings(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("stabilized_bearings", "Stabilized Contraptions"); - scene.configureBasePlate(1, 1, 5); - scene.setSceneOffsetY(-1); - - Selection beltAndBearing = util.select.fromTo(3, 3, 4, 3, 1, 6); - Selection largeCog = util.select.position(2, 0, 6); - BlockPos parentBearingPos = util.grid.at(3, 3, 4); - BlockPos bearingPos = util.grid.at(3, 4, 2); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(beltAndBearing, Direction.DOWN); - scene.idle(10); - - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(3, 3, 3, 3, 4, 3), Direction.SOUTH); - scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(parentBearingPos)); - scene.idle(20); - scene.world.glueBlockOnto(bearingPos, Direction.SOUTH, contraption); - - scene.idle(15); - - scene.overlay.showSelectionWithText(util.select.position(bearingPos), 60) - .text("Whenever Mechanical Bearings are themselves part of a moving Structure..") - .placeNearTarget(); - scene.idle(70); - - scene.world.setKineticSpeed(largeCog, -8); - scene.world.setKineticSpeed(beltAndBearing, 16); - scene.world.rotateBearing(parentBearingPos, 360, 74); - scene.world.rotateSection(contraption, 0, 0, 360, 74); - scene.world.rotateBearing(bearingPos, -360, 74); - scene.idle(74); - - scene.world.setKineticSpeed(largeCog, 0); - scene.world.setKineticSpeed(beltAndBearing, 0); - scene.overlay.showText(60) - .text("..they will attempt to keep themselves upright") - .pointAt(util.vector.blockSurface(bearingPos, Direction.NORTH)) - .placeNearTarget(); - scene.idle(70); - - scene.overlay.showSelectionWithText(util.select.position(bearingPos.north()), 60) - .colored(PonderPalette.GREEN) - .text("Once again, the bearing will attach to the block in front of it") - .placeNearTarget(); - scene.idle(70); - - ElementLink subContraption = - scene.world.showIndependentSection(util.select.fromTo(4, 4, 1, 2, 4, 1), Direction.SOUTH); - scene.world.configureCenterOfRotation(subContraption, util.vector.centerOf(parentBearingPos)); - scene.world.configureStabilization(subContraption, util.vector.centerOf(bearingPos)); - scene.idle(20); - - scene.overlay.showText(80) - .text("As a result, the entire sub-Contraption will stay upright"); - - scene.world.setKineticSpeed(largeCog, -8); - scene.world.setKineticSpeed(beltAndBearing, 16); - scene.world.rotateBearing(parentBearingPos, 360 * 2, 74 * 2); - scene.world.rotateSection(contraption, 0, 0, 360 * 2, 74 * 2); - scene.world.rotateBearing(bearingPos, -360 * 2, 74 * 2); - scene.world.rotateSection(subContraption, 0, 0, 360 * 2, 74 * 2); - - scene.markAsFinished(); - scene.idle(74 * 2); - scene.world.setKineticSpeed(largeCog, 0); - scene.world.setKineticSpeed(beltAndBearing, 0); - } - - public static void clockwork(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("clockwork_bearing", "Animating Structures using Clockwork Bearings"); - scene.configureBasePlate(1, 1, 5); - scene.setSceneOffsetY(-1); - - Selection kinetics = util.select.fromTo(3, 3, 4, 3, 1, 6); - Selection largeCog = util.select.position(2, 0, 6); - BlockPos bearingPos = util.grid.at(3, 3, 3); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(kinetics, Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(bearingPos), Direction.DOWN); - scene.idle(10); - - scene.overlay.showSelectionWithText(util.select.position(bearingPos.north()), 60) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) - .placeNearTarget() - .text("Clockwork Bearings attach to blocks in front of them"); - scene.idle(50); - - ElementLink plank = - scene.world.showIndependentSection(util.select.position(2, 3, 2), Direction.SOUTH); - scene.world.moveSection(plank, util.vector.of(1, 0, 0), 0); - scene.idle(20); - - scene.world.rotateSection(plank, 0, 0, 60, 25); - scene.world.rotateBearing(bearingPos, 60, 25); - scene.world.setKineticSpeed(kinetics, 8); - scene.world.setKineticSpeed(largeCog, -4); - - scene.idle(25); - scene.overlay.showText(80) - .pointAt(util.vector.blockSurface(bearingPos.north(), Direction.NORTH)) - .placeNearTarget() - .text("Upon receiving Rotational Force, the structure will be rotated according to the hour of the day"); - scene.idle(90); - - scene.overlay.showText(30) - .pointAt(util.vector.blockSurface(bearingPos.north(), Direction.NORTH)) - .placeNearTarget() - .text("3:00"); - scene.world.rotateSection(plank, 0, 0, 30, 12); - scene.world.rotateBearing(bearingPos, 30, 12); - scene.idle(42); - scene.overlay.showText(30) - .pointAt(util.vector.blockSurface(bearingPos.north(), Direction.NORTH)) - .placeNearTarget() - .text("4:00"); - scene.world.rotateSection(plank, 0, 0, 30, 12); - scene.world.rotateBearing(bearingPos, 30, 12); - scene.idle(42); - - InputWindowElement clickTheBearing = new InputWindowElement(util.vector.topOf(bearingPos), Pointing.DOWN); - InputWindowElement clickTheBearingSide = - new InputWindowElement(util.vector.blockSurface(bearingPos, Direction.WEST), Pointing.LEFT); - - scene.overlay.showControls(clickTheBearing.rightClick(), 60); - scene.idle(7); - scene.world.rotateSection(plank, 0, 0, -120, 0); - scene.world.rotateBearing(bearingPos, -120, 0); - scene.overlay.showText(60) - .pointAt(util.vector.blockSurface(bearingPos, Direction.WEST)) - .placeNearTarget() - .text("Right-Click the bearing to start or stop animating the structure"); - scene.idle(70); - - scene.world.hideIndependentSection(plank, Direction.NORTH); - scene.idle(15); - - ElementLink hourHand = - scene.world.showIndependentSection(util.select.fromTo(3, 3, 1, 3, 5, 2), Direction.SOUTH); - scene.world.configureCenterOfRotation(hourHand, util.vector.centerOf(bearingPos)); - scene.idle(15); - scene.overlay.showSelectionWithText(util.select.fromTo(3, 3, 1, 3, 4, 2), 80) - .placeNearTarget() - .sharedText("movement_anchors"); - scene.idle(90); - - scene.overlay.showControls(clickTheBearingSide.rightClick(), 20); - scene.idle(7); - scene.world.rotateSection(hourHand, 0, 0, 120, 50); - scene.world.rotateBearing(bearingPos, 120, 50); - scene.idle(60); - - scene.overlay.showSelectionWithText(util.select.position(bearingPos.north(3)), 80) - .placeNearTarget() - .colored(PonderPalette.BLUE) - .text("In front of the Hour Hand, a second structure can be added"); - scene.idle(90); - scene.overlay.showControls(clickTheBearingSide.rightClick(), 20); - scene.idle(7); - scene.world.rotateSection(hourHand, 0, 0, -120, 0); - scene.world.rotateBearing(bearingPos, -120, 0); - scene.idle(10); - - ElementLink minuteHand = - scene.world.showIndependentSection(util.select.fromTo(3, 3, 0, 3, 6, 0), Direction.SOUTH); - scene.world.configureCenterOfRotation(minuteHand, util.vector.centerOf(bearingPos)); - scene.idle(30); - - scene.overlay.showOutline(PonderPalette.BLUE, minuteHand, util.select.fromTo(3, 3, 0, 3, 6, 0), 85); - scene.overlay.showSelectionWithText(util.select.fromTo(3, 3, 1, 3, 4, 2), 80) - .placeNearTarget() - .colored(PonderPalette.GREEN) - .text("Ensure the two Structures are not attached to each other through super glue or similar"); - scene.idle(90); - - scene.overlay.showControls(clickTheBearingSide.rightClick(), 20); - scene.idle(7); - - scene.world.rotateSection(hourHand, 0, 0, 120, 50); - scene.world.rotateSection(minuteHand, 0, 0, 180, 75); - scene.world.rotateBearing(bearingPos, 120, 50); - scene.idle(90); - scene.world.rotateSection(minuteHand, 0, 0, 6, 3); - - scene.overlay.showText(80) - .placeNearTarget() - .pointAt(util.vector.blockSurface(bearingPos.north(3), Direction.NORTH)) - .colored(PonderPalette.GREEN) - .text("The Second Structure will now rotate as the Minute Hand"); - scene.markAsFinished(); - - for (int i = 0; i < 40; i++) { - scene.idle(23); - scene.world.rotateSection(minuteHand, 0, 0, 6, 3); - if (i == 29) - scene.world.rotateSection(hourHand, 0, 0, 30, 20); - } - } - - public static void sail(SceneBuilder scene, SceneBuildingUtil util) { - sails(scene, util, false); - } - - public static void sailFrame(SceneBuilder scene, SceneBuildingUtil util) { - sails(scene, util, true); - } - - private static void sails(SceneBuilder scene, SceneBuildingUtil util, boolean frame) { - String plural = frame ? "Sail Frames" : "Sails"; - scene.title(frame ? "sail_frame" : "sail", "Assembling Windmills using " + plural); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(0.9f); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos bearingPos = util.grid.at(2, 1, 2); - scene.world.showSection(util.select.position(bearingPos), Direction.DOWN); - scene.idle(5); - ElementLink plank = - scene.world.showIndependentSection(util.select.position(bearingPos.up()), Direction.DOWN); - scene.idle(10); - - for (int i = 0; i < 3; i++) { - for (Direction d : Iterate.horizontalDirections) { - BlockPos location = bearingPos.up(i + 1) - .offset(d); - if (frame) - scene.world.modifyBlock(location, s -> AllBlocks.SAIL_FRAME.getDefaultState() - .with(SailBlock.FACING, s.get(SailBlock.FACING)), false); - scene.world.showSectionAndMerge(util.select.position(location), d.getOpposite(), plank); - scene.idle(2); - } - } - - scene.overlay.showText(70) - .text(plural + " are handy blocks to create Windmills with") - .pointAt(util.vector.blockSurface(util.grid.at(1, 3, 2), Direction.WEST)) - .placeNearTarget() - .attachKeyFrame(); - scene.idle(80); - - scene.overlay.showSelectionWithText(util.select.position(bearingPos.up()), 80) - .colored(PonderPalette.GREEN) - .text("They will attach to blocks and each other without the need of Super Glue or Chassis Blocks") - .attachKeyFrame() - .placeNearTarget(); - scene.idle(40); - scene.world.configureCenterOfRotation(plank, util.vector.centerOf(bearingPos)); - - if (!frame) { - scene.world.rotateBearing(bearingPos, 180, 75); - scene.world.rotateSection(plank, 0, 180, 0, 75); - scene.idle(76); - scene.world.rotateBearing(bearingPos, 180, 0); - scene.world.rotateSection(plank, 0, 180, 0, 0); - scene.rotateCameraY(-30); - scene.idle(10); - InputWindowElement input = - new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 3, 1), Direction.NORTH), Pointing.RIGHT) - .withItem(new ItemStack(Items.BLUE_DYE)); - scene.overlay.showControls(input, 30); - scene.idle(7); - scene.world.setBlock(util.grid.at(2, 3, 1), AllBlocks.DYED_SAILS.get(DyeColor.BLUE).getDefaultState() - .with(SailBlock.FACING, Direction.WEST), false); - scene.idle(10); - scene.overlay.showText(40) - .colored(PonderPalette.BLUE) - .text("Right-Click with Dye to paint them") - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(2, 3, 1), Direction.WEST)) - .placeNearTarget(); - scene.idle(20); - scene.overlay.showControls(input, 30); - scene.idle(7); - scene.world.replaceBlocks(util.select.fromTo(2, 2, 1, 2, 4, 1), - AllBlocks.DYED_SAILS.get(DyeColor.BLUE).getDefaultState() - .with(SailBlock.FACING, Direction.WEST), - false); - - scene.idle(20); - scene.world.rotateBearing(bearingPos, 90, 33); - scene.world.rotateSection(plank, 0, 90, 0, 33); - scene.idle(40); - - input = - new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 3, 1), Direction.NORTH), Pointing.RIGHT) - .withItem(new ItemStack(Items.SHEARS)); - - scene.overlay.showControls(input, 30); - scene.idle(7); - scene.world.setBlock(util.grid.at(3, 3, 2), AllBlocks.SAIL_FRAME.getDefaultState() - .with(SailBlock.FACING, Direction.NORTH), false); - scene.idle(10); - scene.overlay.showText(40) - .text("Right-Click with Shears to turn them back into frames") - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(2, 3, 1), Direction.WEST)) - .placeNearTarget(); - scene.idle(20); - scene.overlay.showControls(input, 30); - scene.idle(7); - scene.world.replaceBlocks(util.select.fromTo(3, 2, 2, 3, 4, 2), AllBlocks.SAIL_FRAME.getDefaultState() - .with(SailBlock.FACING, Direction.NORTH), false); - scene.idle(20); - } - - scene.world.rotateBearing(bearingPos, 720, 300); - scene.world.rotateSection(plank, 0, 720, 0, 300); - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java deleted file mode 100644 index dbaeb1718..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/BeltScenes.java +++ /dev/null @@ -1,578 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity.Mode; -import com.simibubi.create.content.contraptions.fluids.actors.SpoutTileEntity; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltPart; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.Phase; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FaceCursorPose; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FacePointOfInterestPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class BeltScenes { - - public static void beltConnector(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("belt_connector", "Using Mechanical Belts"); - scene.configureBasePlate(0, 0, 5); - scene.showBasePlate(); - scene.world.showSection(util.select.position(3, 0, 5), Direction.UP); - scene.idle(5); - - scene.world.showSection(util.select.fromTo(4, 1, 3, 4, 1, 5), Direction.DOWN); - ElementLink shafts = - scene.world.showIndependentSection(util.select.fromTo(0, 1, 3, 4, 1, 3), Direction.DOWN); - scene.world.moveSection(shafts, util.vector.of(0, 0, -1), 0); - scene.world.setKineticSpeed(util.select.position(0, 1, 3), 0); - scene.idle(20); - - BlockPos backEnd = util.grid.at(4, 1, 2); - BlockPos frontEnd = util.grid.at(0, 1, 2); - ItemStack beltItem = AllItems.BELT_CONNECTOR.asStack(); - Vector3d backEndCenter = util.vector.centerOf(backEnd); - AxisAlignedBB connectBB = new AxisAlignedBB(backEndCenter, backEndCenter); - AxisAlignedBB shaftBB = AllBlocks.SHAFT.getDefaultState() - .with(ShaftBlock.AXIS, Axis.Z) - .getShape(null, null) - .getBoundingBox(); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(backEnd), Pointing.DOWN).rightClick() - .withItem(beltItem), 57); - scene.idle(7); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, backEnd, shaftBB.offset(backEnd), 42); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.BLACK, backEndCenter, connectBB, 50); - scene.idle(20); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(frontEnd), Pointing.DOWN).rightClick() - .withItem(beltItem), 37); - scene.idle(7); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, frontEnd, shaftBB.offset(frontEnd), 17); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.BLACK, backEndCenter, connectBB.expand(-4, 0, 0), 20); - scene.idle(20); - - scene.world.moveSection(shafts, util.vector.of(0, -2, 0), 0); - scene.world.showSection(util.select.fromTo(0, 1, 2, 4, 1, 2), Direction.SOUTH); - scene.idle(20); - - scene.overlay.showText(80) - .text("Right-Clicking two shafts with a belt item will connect them together") - .placeNearTarget() - .pointAt(util.vector.topOf(2, 1, 2)); - scene.idle(90); - - Vector3d falseSelection = util.vector.topOf(backEnd.south(1)); - scene.overlay.showControls(new InputWindowElement(falseSelection, Pointing.DOWN).rightClick() - .withItem(beltItem), 37); - scene.idle(7); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, backEnd, shaftBB.offset(backEnd.south(1)), 50); - - scene.overlay.showText(80) - .colored(PonderPalette.RED) - .text("Accidental selections can be canceled with Right-Click while Sneaking") - .placeNearTarget() - .pointAt(util.vector.centerOf(backEnd.south(1))); - scene.idle(43); - - scene.overlay.showControls(new InputWindowElement(falseSelection, Pointing.DOWN).rightClick() - .withItem(beltItem) - .whileSneaking(), 20); - scene.idle(60); - - BlockPos shaftLocation = frontEnd.east(); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(shaftLocation), Pointing.DOWN).rightClick() - .withItem(AllBlocks.SHAFT.asStack()), 50); - scene.idle(7); - scene.world.modifyBlock(shaftLocation, s -> s.with(BeltBlock.PART, BeltPart.PULLEY), true); - scene.idle(10); - - scene.overlay.showText(43) - .text("Additional Shafts can be added throughout the Belt") - .placeNearTarget() - .pointAt(util.vector.blockSurface(shaftLocation, Direction.NORTH)); - scene.idle(50); - - Selection attachedShafts = util.select.fromTo(0, 1, 1, 1, 1, 1); - scene.world.showSection(attachedShafts, Direction.SOUTH); - scene.world.setKineticSpeed(attachedShafts, 32); - scene.idle(10); - scene.effects.rotationDirectionIndicator(util.grid.at(0, 1, 1)); - scene.effects.rotationDirectionIndicator(util.grid.at(1, 1, 1)); - scene.idle(20); - - scene.overlay.showText(50) - .text("Shafts connected via Belts will rotate with Identical Speed and Direction") - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(0, 1, 1), Direction.NORTH)); - scene.idle(60); - - scene.world.hideSection(attachedShafts, Direction.NORTH); - scene.idle(20); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(shaftLocation), Pointing.DOWN).rightClick() - .withWrench(), 50); - scene.idle(7); - scene.world.modifyBlock(shaftLocation, s -> s.with(BeltBlock.PART, BeltPart.MIDDLE), true); - scene.idle(10); - scene.overlay.showText(50) - .text("Added shafts can be removed using the wrench") - .placeNearTarget() - .pointAt(util.vector.blockSurface(shaftLocation, Direction.NORTH)); - scene.idle(70); - - scene.overlay - .showControls(new InputWindowElement(util.vector.topOf(shaftLocation.east()), Pointing.DOWN).rightClick() - .withItem(new ItemStack(Items.BLUE_DYE)), 50); - scene.idle(7); - scene.world.modifyTileNBT(util.select.fromTo(0, 1, 2, 4, 1, 2), BeltTileEntity.class, - nbt -> NBTHelper.writeEnum(nbt, "Dye", DyeColor.BLUE)); - scene.idle(20); - scene.overlay.showText(80) - .colored(PonderPalette.BLUE) - .text("Mechanical Belts can be dyed for aesthetic purposes") - .placeNearTarget() - .pointAt(util.vector.topOf(shaftLocation.east())); - } - - public static void directions(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("belt_directions", "Valid Orientations for Mechanical Belts"); - scene.configureBasePlate(0, 0, 5); - scene.setSceneOffsetY(-1); - scene.showBasePlate(); - scene.idle(5); - - ElementLink leftShaft = - scene.world.showIndependentSection(util.select.position(4, 1, 0), Direction.DOWN); - ElementLink rightShaft = - scene.world.showIndependentSection(util.select.position(0, 1, 0), Direction.DOWN); - - scene.world.moveSection(leftShaft, util.vector.of(0, 0, 2), 0); - scene.world.moveSection(rightShaft, util.vector.of(0, 0, 2), 0); - scene.idle(1); - scene.world.moveSection(leftShaft, util.vector.of(-1, 0, 0), 10); - scene.world.moveSection(rightShaft, util.vector.of(1, 1, 0), 10); - - scene.idle(20); - - Vector3d from = util.vector.centerOf(3, 1, 2); - Vector3d to = util.vector.centerOf(1, 2, 2); - - scene.overlay.showLine(PonderPalette.RED, from, to, 70); - scene.idle(10); - scene.overlay.showLine(PonderPalette.GREEN, to.add(-1, -1, 0), from, 60); - scene.overlay.showLine(PonderPalette.GREEN, from.add(0, 3, 0), from, 60); - - scene.idle(20); - scene.overlay.showText(60) - .colored(PonderPalette.RED) - .placeNearTarget() - .pointAt(to) - .text("Belts cannot connect in arbitrary directions"); - scene.idle(70); - - from = util.vector.centerOf(4, 1, 2); - to = util.vector.centerOf(0, 1, 2); - - scene.world.moveSection(leftShaft, util.vector.of(1, 0, 0), 10); - scene.world.moveSection(rightShaft, util.vector.of(-1, -1, 0), 10); - scene.idle(10); - scene.overlay.showLine(PonderPalette.GREEN, from, to, 40); - scene.idle(10); - scene.overlay.showText(40) - .colored(PonderPalette.GREEN) - .placeNearTarget() - .pointAt(to) - .text("1. They can connect horizontally"); - - scene.idle(20); - Selection firstBelt = util.select.fromTo(4, 1, 1, 0, 1, 1); - ElementLink belt = scene.world.showIndependentSection(firstBelt, Direction.SOUTH); - scene.world.moveSection(belt, util.vector.of(0, 0, 1), 0); - scene.idle(20); - scene.world.hideIndependentSection(belt, Direction.SOUTH); - scene.idle(15); - - from = util.vector.centerOf(3, 3, 2); - to = util.vector.centerOf(1, 1, 2); - - scene.world.moveSection(leftShaft, util.vector.of(-1, 2, 0), 10); - scene.world.moveSection(rightShaft, util.vector.of(1, 0, 0), 10); - scene.idle(10); - scene.world.rotateSection(leftShaft, 0, 0, 25, 5); - scene.world.rotateSection(rightShaft, 0, 0, 25, 5); - scene.overlay.showLine(PonderPalette.GREEN, from, to, 40); - scene.idle(10); - scene.overlay.showText(40) - .colored(PonderPalette.GREEN) - .placeNearTarget() - .pointAt(to) - .text("2. They can connect diagonally"); - - scene.idle(20); - Selection secondBelt = util.select.fromTo(3, 3, 2, 1, 1, 2); - belt = scene.world.showIndependentSection(secondBelt, Direction.SOUTH); - scene.idle(20); - scene.world.hideIndependentSection(belt, Direction.SOUTH); - scene.idle(15); - - from = util.vector.centerOf(2, 4, 2); - to = util.vector.centerOf(2, 1, 2); - - scene.world.moveSection(leftShaft, util.vector.of(-1, 1, 0), 10); - scene.world.moveSection(rightShaft, util.vector.of(1, 0, 0), 10); - scene.idle(10); - scene.world.rotateSection(rightShaft, 0, 0, -25, 5); - scene.overlay.showLine(PonderPalette.GREEN, from, to, 40); - scene.idle(10); - scene.overlay.showText(40) - .colored(PonderPalette.GREEN) - .placeNearTarget() - .pointAt(to) - .text("3. They can connect vertically"); - - scene.idle(20); - Selection thirdBelt = util.select.fromTo(2, 1, 3, 2, 4, 3); - belt = scene.world.showIndependentSection(thirdBelt, Direction.SOUTH); - scene.world.moveSection(belt, util.vector.of(0, 0, -1), 0); - scene.idle(20); - scene.world.hideIndependentSection(belt, Direction.SOUTH); - scene.idle(15); - - from = util.vector.centerOf(4, 1, 2); - to = util.vector.centerOf(0, 1, 2); - - scene.world.moveSection(leftShaft, util.vector.of(2, -3, 0), 10); - scene.world.moveSection(rightShaft, util.vector.of(-2, 0, 0), 10); - scene.idle(10); - scene.world.rotateSection(rightShaft, 90, 0, -25, 5); - scene.world.rotateSection(leftShaft, 90, 0, -50, 5); - scene.overlay.showLine(PonderPalette.GREEN, from, to, 60); - scene.idle(10); - scene.overlay.showText(60) - .colored(PonderPalette.GREEN) - .placeNearTarget() - .pointAt(to) - .text("4. And they can connect vertical shafts horizontally"); - - scene.idle(20); - Selection fourthBelt = util.select.fromTo(4, 1, 4, 0, 1, 4); - belt = scene.world.showIndependentSection(fourthBelt, Direction.DOWN); - scene.world.moveSection(belt, util.vector.of(0, 1 / 512f, -2), 0); - scene.idle(40); - scene.world.hideIndependentSection(belt, Direction.UP); - scene.idle(15); - scene.world.hideIndependentSection(leftShaft, Direction.UP); - scene.world.hideIndependentSection(rightShaft, Direction.UP); - scene.idle(15); - - scene.world.showSection(firstBelt, Direction.DOWN); - scene.idle(5); - scene.world.showSection(secondBelt, Direction.DOWN); - scene.idle(5); - scene.world.showSection(thirdBelt, Direction.DOWN); - scene.idle(5); - scene.world.showSection(fourthBelt, Direction.DOWN); - scene.idle(10); - - scene.overlay.showText(160) - .text("These are all possible directions. Belts can span any Length between 2 and 20 blocks"); - scene.markAsFinished(); - } - - public static void transport(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("belt_transport", "Using Mechanical Belts for Logistics"); - scene.configureBasePlate(0, 0, 5); - scene.setSceneOffsetY(-1); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -.6f * f); - scene.showBasePlate(); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 1, 3, 2, 1, 5), Direction.DOWN); - scene.idle(20); - scene.world.showSection(util.select.fromTo(2, 1, 2, 4, 3, 2), Direction.SOUTH); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 1, 2, 0, 1, 2), Direction.SOUTH); - scene.idle(10); - scene.special.movePointOfInterest(util.grid.at(2, 2, 0)); - - ItemStack stack = AllBlocks.COPPER_BLOCK.asStack(); - ElementLink item = - scene.world.createItemEntity(util.vector.centerOf(0, 4, 2), util.vector.of(0, 0, 0), stack); - scene.idle(13); - scene.world.modifyEntity(item, Entity::remove); - BlockPos beltEnd = util.grid.at(0, 1, 2); - scene.world.createItemOnBelt(beltEnd, Direction.DOWN, stack); - - scene.idle(20); - - ElementLink parrot = scene.special.createBirb(util.vector.topOf(0, 1, 2) - .add(0, -3 / 16f, 0), FacePointOfInterestPose::new); - scene.special.moveParrot(parrot, util.vector.of(1.78, 0, 0), 40); - scene.special.movePointOfInterest(util.grid.at(1, 1, 3)); - - scene.overlay.showText(60) - .placeNearTarget() - .pointAt(util.vector.topOf(beltEnd)) - .text("Moving belts will transport Items and other Entities"); - - scene.idle(20); - item = scene.world.createItemEntity(util.vector.centerOf(0, 4, 2), util.vector.of(0, 0, 0), stack); - scene.special.movePointOfInterest(util.grid.at(0, 3, 2)); - scene.idle(10); - scene.special.movePointOfInterest(beltEnd); - scene.idle(3); - scene.world.modifyEntity(item, Entity::remove); - scene.world.createItemOnBelt(beltEnd, Direction.DOWN, stack); - scene.idle(8); - - scene.special.movePointOfInterest(util.grid.at(3, 2, 1)); - scene.special.moveParrot(parrot, util.vector.of(2.1, 2.1, 0), 60); - scene.idle(20); - scene.special.movePointOfInterest(util.grid.at(5, 5, 2)); - scene.idle(30); - scene.special.movePointOfInterest(util.grid.at(2, 1, 5)); - scene.idle(10); - scene.special.moveParrot(parrot, util.vector.of(.23, 0, 0), 5); - scene.idle(5); - scene.world.setKineticSpeed(util.select.everywhere(), 0f); - scene.idle(10); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.special.movePointOfInterest(util.grid.at(2, 5, 4)); - - Vector3d topOf = util.vector.topOf(util.grid.at(3, 2, 2)) - .add(-0.1, 0.3, 0); - scene.overlay.showControls(new InputWindowElement(topOf, Pointing.DOWN).rightClick(), 60); - scene.idle(10); - scene.overlay.showText(60) - .placeNearTarget() - .pointAt(topOf.subtract(0, 0.1, 0)) - .text("Right-Click with an empty hand to take items off a belt"); - scene.idle(20); - scene.world.removeItemsFromBelt(util.grid.at(3, 2, 2)); - scene.effects.indicateSuccess(util.grid.at(3, 2, 2)); - scene.idle(20); - - scene.special.changeBirbPose(parrot, FaceCursorPose::new); - } - - public static void beltsCanBeEncased(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("belt_casing", "Encasing Belts"); - scene.configureBasePlate(0, 0, 5); - scene.setSceneOffsetY(-1); - scene.showBasePlate(); - scene.idle(5); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - scene.idle(20); - - ItemStack brassCasingItem = AllBlocks.BRASS_CASING.asStack(); - ItemStack andesiteCasingItem = AllBlocks.ANDESITE_CASING.asStack(); - - BlockPos beltPos = util.grid.at(3, 1, 0); - BlockPos beltPos2 = util.grid.at(0, 2, 3); - BlockPos beltPos3 = util.grid.at(1, 4, 4); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(beltPos), Pointing.DOWN).rightClick() - .withItem(brassCasingItem), 20); - scene.idle(7); - scene.world.modifyBlock(beltPos, s -> s.with(BeltBlock.CASING, true), true); - scene.idle(20); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(beltPos2), Pointing.DOWN).rightClick() - .withItem(andesiteCasingItem), 20); - scene.idle(7); - scene.world.modifyBlock(beltPos2, s -> s.with(BeltBlock.CASING, true), true); - scene.world.modifyTileNBT(util.select.position(beltPos2), BeltTileEntity.class, nbt -> { - NBTHelper.writeEnum(nbt, "Casing", BeltTileEntity.CasingType.ANDESITE); - }); - scene.idle(20); - - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(beltPos3, Direction.EAST), Pointing.RIGHT).rightClick() - .withItem(brassCasingItem), - 20); - scene.idle(7); - scene.world.modifyBlock(beltPos3, s -> s.with(BeltBlock.CASING, true), true); - scene.idle(20); - - scene.overlay.showText(80) - .text("Brass or Andesite Casing can be used to decorate Mechanical Belts") - .pointAt(util.vector.centerOf(beltPos2)); - - scene.idle(40); - - List brassBelts = new ArrayList<>(); - List andesiteBelts = new ArrayList<>(); - - for (int z = 1; z <= 3; z++) - brassBelts.add(beltPos.south(z)); - for (int x = 1; x <= 3; x++) - brassBelts.add(beltPos3.east(x) - .down(x)); - for (int x = 1; x <= 3; x++) - andesiteBelts.add(beltPos2.east(x)); - - Collections.shuffle(andesiteBelts); - Collections.shuffle(brassBelts); - - for (BlockPos pos : andesiteBelts) { - scene.idle(4); - scene.world.modifyBlock(pos, s -> s.with(BeltBlock.CASING, true), true); - scene.world.modifyTileNBT(util.select.position(pos), BeltTileEntity.class, nbt -> { - NBTHelper.writeEnum(nbt, "Casing", BeltTileEntity.CasingType.ANDESITE); - }); - } - for (BlockPos pos : brassBelts) { - scene.idle(4); - scene.world.modifyBlock(pos, s -> s.with(BeltBlock.CASING, true), true); - } - scene.idle(30); - - scene.overlay - .showControls(new InputWindowElement(util.vector.topOf(beltPos.south()), Pointing.DOWN).rightClick() - .withWrench(), 40); - scene.idle(7); - scene.world.modifyBlock(beltPos.south(), s -> s.with(BeltBlock.CASING, false), true); - scene.overlay.showText(80) - .text("A wrench can be used to remove the casing") - .placeNearTarget() - .pointAt(util.vector.blockSurface(beltPos.south(), Direction.WEST)); - } - - public static void depot(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("depot", "Using Depots"); - scene.configureBasePlate(0, 0, 5); - scene.showBasePlate(); - scene.idle(5); - scene.world.setBlock(util.grid.at(3, 2, 2), Blocks.WATER.getDefaultState(), false); - - BlockPos depotPos = util.grid.at(2, 1, 2); - scene.world.showSection(util.select.position(2, 1, 2), Direction.DOWN); - Vector3d topOf = util.vector.topOf(depotPos); - scene.overlay.showText(60) - .attachKeyFrame() - .text("Depots can serve as 'stationary' belt elements") - .placeNearTarget() - .pointAt(topOf); - scene.idle(70); - - scene.overlay.showControls(new InputWindowElement(topOf, Pointing.DOWN).rightClick() - .withItem(AllBlocks.COPPER_BLOCK.asStack()), 20); - scene.idle(7); - scene.world.createItemOnBeltLike(depotPos, Direction.NORTH, AllBlocks.COPPER_BLOCK.asStack()); - scene.idle(10); - scene.overlay.showText(70) - .attachKeyFrame() - .text("Right-Click to manually place or remove Items from it") - .placeNearTarget() - .pointAt(topOf); - scene.idle(80); - - scene.overlay.showControls(new InputWindowElement(topOf, Pointing.DOWN).rightClick(), 20); - scene.idle(7); - scene.world.removeItemsFromBelt(depotPos); - scene.effects.indicateSuccess(depotPos); - scene.idle(20); - - scene.world.showSection(util.select.position(depotPos.up(2)), Direction.SOUTH); - scene.overlay.showText(70) - .attachKeyFrame() - .text("Just like Mechanical Belts, it can provide items to processing") - .placeNearTarget() - .pointAt(util.vector.blockSurface(depotPos.up(2), Direction.WEST)); - ItemStack bottle = new ItemStack(Items.BUCKET); - scene.world.createItemOnBeltLike(depotPos, Direction.NORTH, bottle); - scene.idle(20); - scene.world.modifyTileNBT(util.select.position(depotPos.up(2)), SpoutTileEntity.class, - nbt -> nbt.putInt("ProcessingTicks", 20)); - scene.idle(20); - scene.world.removeItemsFromBelt(depotPos); - scene.world.createItemOnBeltLike(depotPos, Direction.UP, new ItemStack(Items.WATER_BUCKET)); - scene.world.modifyTileNBT(util.select.position(depotPos.up(2)), SpoutTileEntity.class, - nbt -> nbt.putBoolean("Splash", true)); - scene.idle(30); - scene.world.removeItemsFromBelt(depotPos); - scene.world.hideSection(util.select.position(depotPos.up(2)), Direction.SOUTH); - scene.idle(20); - ElementLink spout = scene.world.showIndependentSection(util.select.position(depotPos.up(2) - .west()), Direction.SOUTH); - scene.world.moveSection(spout, util.vector.of(1, 0, 0), 0); - - BlockPos pressPos = depotPos.up(2) - .west(); - ItemStack copper = AllItems.COPPER_INGOT.asStack(); - scene.world.createItemOnBeltLike(depotPos, Direction.NORTH, copper); - Vector3d depotCenter = util.vector.centerOf(depotPos); - scene.idle(10); - - Class type = MechanicalPressTileEntity.class; - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BELT)); - scene.idle(15); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makePressingParticleEffect(depotCenter.add(0, 8 / 16f, 0), copper)); - scene.world.removeItemsFromBelt(depotPos); - ItemStack sheet = AllItems.COPPER_SHEET.asStack(); - scene.world.createItemOnBeltLike(depotPos, Direction.UP, sheet); - - scene.idle(20); - scene.world.hideIndependentSection(spout, Direction.SOUTH); - scene.idle(10); - - Selection fanSelect = util.select.fromTo(4, 1, 3, 5, 2, 2) - .add(util.select.position(3, 1, 2)) - .add(util.select.position(5, 0, 2)); - scene.world.showSection(fanSelect, Direction.SOUTH); - ElementLink water = - scene.world.showIndependentSection(util.select.position(3, 1, 0), Direction.SOUTH); - scene.world.moveSection(water, util.vector.of(0, 1, 2), 0); - scene.idle(30); - - scene.world.hideSection(fanSelect, Direction.SOUTH); - scene.world.hideIndependentSection(water, Direction.SOUTH); - scene.idle(30); - - scene.world.showSection(util.select.fromTo(2, 1, 4, 2, 1, 5) - .add(util.select.position(2, 0, 5)), Direction.DOWN); - BlockPos armPos = util.grid.at(2, 1, 4); - scene.overlay.showText(70) - .attachKeyFrame() - .text("...as well as provide Items to Mechanical Arms") - .placeNearTarget() - .pointAt(util.vector.blockSurface(armPos, Direction.WEST)); - scene.idle(20); - - scene.world.instructArm(armPos, Phase.MOVE_TO_INPUT, ItemStack.EMPTY, 0); - scene.idle(37); - scene.world.removeItemsFromBelt(depotPos); - scene.world.instructArm(armPos, Phase.SEARCH_OUTPUTS, sheet, -1); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/CartAssemblerScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/CartAssemblerScenes.java deleted file mode 100644 index 51616a4bf..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/CartAssemblerScenes.java +++ /dev/null @@ -1,534 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssembleRailType; -import com.simibubi.create.content.contraptions.components.structureMovement.mounted.CartAssemblerBlock; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.MinecartElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.minecart.ChestMinecartEntity; -import net.minecraft.entity.item.minecart.FurnaceMinecartEntity; -import net.minecraft.entity.item.minecart.MinecartEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.state.properties.RailShape; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class CartAssemblerScenes { - - public static void anchor(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("cart_assembler", "Moving Structures using Cart Assemblers"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(.9f); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos assemblerPos = util.grid.at(2, 1, 2); - scene.world.setBlock(assemblerPos, Blocks.RAIL.getDefaultState(), false); - for (int z = 0; z < 5; z++) { - scene.world.showSection(util.select.position(2, 1, z), Direction.DOWN); - scene.idle(2); - } - - BlockPos leverPos = util.grid.at(0, 1, 2); - Selection toggle = util.select.fromTo(assemblerPos, leverPos); - - scene.idle(10); - - scene.overlay - .showControls(new InputWindowElement(util.vector.centerOf(assemblerPos), Pointing.DOWN).rightClick() - .withItem(AllBlocks.CART_ASSEMBLER.asStack()), 30); - scene.idle(7); - scene.world.setBlock(assemblerPos, AllBlocks.CART_ASSEMBLER.getDefaultState() - .with(CartAssemblerBlock.RAIL_SHAPE, RailShape.NORTH_SOUTH) - .with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.REGULAR), true); - scene.idle(20); - scene.world.showSection(util.select.fromTo(0, 1, 2, 1, 1, 2), Direction.EAST); - scene.idle(20); - scene.world.toggleRedstonePower(toggle); - scene.effects.indicateRedstone(leverPos); - scene.idle(10); - - scene.overlay.showText(70) - .text("Powered Cart Assemblers mount attached structures to passing Minecarts") - .attachKeyFrame() - .pointAt(util.vector.topOf(assemblerPos)) - .placeNearTarget(); - scene.idle(80); - - ElementLink cart = - scene.special.createCart(util.vector.topOf(2, 0, 4), 90, MinecartEntity::new); - scene.world.showSection(util.select.position(assemblerPos.up()), Direction.DOWN); - scene.idle(10); - scene.special.moveCart(cart, util.vector.of(0, 0, -2), 20); - scene.idle(20); - ElementLink plank = - scene.world.makeSectionIndependent(util.select.position(assemblerPos.up())); - ElementLink anchor = - scene.world.showIndependentSectionImmediately(util.select.position(assemblerPos.east())); - scene.world.moveSection(anchor, util.vector.of(-1, 0, 0), 0); - scene.effects.indicateSuccess(assemblerPos); - scene.idle(1); - scene.world.moveSection(anchor, util.vector.of(0, 0, -2), 20); - scene.world.moveSection(plank, util.vector.of(0, 0, -2), 20); - scene.special.moveCart(cart, util.vector.of(0, 0, -2), 20); - scene.idle(20); - - scene.world.toggleRedstonePower(toggle); - scene.idle(10); - - scene.overlay.showText(70) - .text("Without a redstone signal, it disassembles passing cart contraptions back into blocks") - .colored(PonderPalette.RED) - .attachKeyFrame() - .pointAt(util.vector.topOf(assemblerPos)) - .placeNearTarget(); - scene.idle(80); - - scene.world.rotateSection(anchor, 0, 180, 0, 6); - scene.world.rotateSection(plank, 0, 180, 0, 6); - scene.idle(3); - - scene.world.moveSection(anchor, util.vector.of(0, 0, 2), 20); - scene.world.moveSection(plank, util.vector.of(0, 0, 2), 20); - scene.special.moveCart(cart, util.vector.of(0, 0, 2), 20); - scene.idle(21); - scene.world.moveSection(anchor, util.vector.of(0, -2, 0), 0); - scene.special.moveCart(cart, util.vector.of(0, 0, 2), 20); - scene.idle(30); - - scene.world.destroyBlock(assemblerPos.up()); - scene.idle(5); - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(1, 4, 2, 3, 3, 2), Direction.DOWN); - scene.world.moveSection(contraption, util.vector.of(0, -1, 0), 0); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.position(3, 3, 1), Direction.SOUTH, contraption); - scene.idle(15); - scene.effects.superGlue(util.grid.at(3, 2, 1), Direction.SOUTH, true); - scene.overlay.showText(80) - .attachKeyFrame() - .sharedText("movement_anchors") - .pointAt(util.vector.blockSurface(util.grid.at(1, 3, 2), Direction.NORTH)) - .placeNearTarget(); - scene.idle(80); - scene.world.toggleRedstonePower(toggle); - scene.effects.indicateRedstone(leverPos); - - scene.special.moveCart(cart, util.vector.of(0, 0, -2), 20); - scene.idle(20); - scene.world.moveSection(anchor, util.vector.of(0, 2, 0), 0); - scene.idle(1); - scene.world.moveSection(anchor, util.vector.of(0, 0, -2), 20); - scene.world.moveSection(contraption, util.vector.of(0, 0, -2), 20); - scene.special.moveCart(cart, util.vector.of(0, 0, -2), 20); - scene.idle(25); - - Vector3d cartCenter = util.vector.centerOf(assemblerPos.north(2)); - scene.overlay.showControls(new InputWindowElement(cartCenter, Pointing.LEFT).rightClick() - .withWrench(), 40); - scene.idle(7); - scene.special.moveCart(cart, util.vector.of(0, -100, 4), 0); - scene.world.moveSection(anchor, util.vector.of(0, -100, 4), 0); - scene.world.moveSection(contraption, util.vector.of(0, -100, 4), 0); - ItemStack asStack = AllItems.MINECART_CONTRAPTION.asStack(); - ElementLink itemEntity = - scene.world.createItemEntity(cartCenter, util.vector.of(0, .1, 0), asStack); - scene.idle(40); - scene.overlay.showText(80) - .attachKeyFrame() - .text("Using a Wrench on the Minecart will let you carry the Contraption elsewhere") - .pointAt(cartCenter) - .placeNearTarget(); - scene.idle(80); - scene.world.modifyEntity(itemEntity, Entity::remove); - - scene.overlay.showControls(new InputWindowElement(cartCenter.add(0, 0, 4), Pointing.DOWN).rightClick() - .withItem(asStack), 20); - scene.idle(20); - scene.special.moveCart(cart, util.vector.of(0, 100.5, 0), 0); - scene.world.moveSection(anchor, util.vector.of(0, 100.5, 0), 0); - scene.world.moveSection(contraption, util.vector.of(0, 100.5, 0), 0); - scene.idle(1); - scene.special.moveCart(cart, util.vector.of(0, -.5, 0), 5); - scene.world.moveSection(anchor, util.vector.of(0, -.5, 0), 5); - scene.world.moveSection(contraption, util.vector.of(0, -.5, 0), 5); - } - - public static void modes(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("cart_assembler_modes", "Orientation Settings for Minecart Contraptions"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - for (int z = 0; z < 4; z++) { - scene.world.showSection(util.select.position(1, 1, z), Direction.DOWN); - scene.idle(2); - } - for (int x = 2; x < 5; x++) { - scene.world.showSection(util.select.position(x, 1, 3), Direction.DOWN); - scene.idle(2); - } - - BlockPos assemblerPos = util.grid.at(3, 1, 3); - scene.idle(5); - scene.world.setBlock(assemblerPos, AllBlocks.CART_ASSEMBLER.getDefaultState() - .with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST) - .with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.REGULAR), true); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 1, 3, 1, 2), Direction.SOUTH); - ElementLink contraption = - scene.world.showIndependentSection(util.select.position(3, 2, 3), Direction.DOWN); - scene.idle(10); - scene.world.glueBlockOnto(util.grid.at(2, 2, 3), Direction.EAST, contraption); - scene.world.toggleRedstonePower(util.select.fromTo(3, 1, 1, 3, 1, 3)); - scene.effects.indicateRedstone(util.grid.at(3, 1, 1)); - scene.idle(10); - - ElementLink cart = - scene.special.createCart(util.vector.topOf(util.grid.at(4, 0, 3)), 0, MinecartEntity::new); - scene.idle(20); - scene.special.moveCart(cart, util.vector.of(-1, 0, 0), 10); - scene.idle(10); - ElementLink anchor = - scene.world.showIndependentSectionImmediately(util.select.position(assemblerPos.south())); - scene.world.moveSection(anchor, util.vector.of(0, 0, -1), 0); - scene.idle(1); - - scene.world.setKineticSpeed(util.select.position(2, 2, 3), 32); - scene.special.moveCart(cart, util.vector.of(-1.5, 0, 0), 15); - scene.world.moveSection(anchor, util.vector.of(-1.5, 0, 0), 15); - scene.world.moveSection(contraption, util.vector.of(-1.5, 0, 0), 15); - scene.idle(16); - scene.special.rotateCart(cart, -45, 2); - scene.special.moveCart(cart, util.vector.of(-.5, 0, -.5), 8); - scene.world.moveSection(anchor, util.vector.of(-.5, 0, -.5), 8); - scene.world.moveSection(contraption, util.vector.of(-.5, 0, -.5), 8); - scene.world.rotateSection(anchor, 0, -90, 0, 12); - scene.world.rotateSection(contraption, 0, -90, 0, 12); - scene.idle(9); - scene.special.rotateCart(cart, -45, 2); - scene.special.moveCart(cart, util.vector.of(0, 0, -1.5), 15); - scene.world.moveSection(anchor, util.vector.of(0, 0, -1.5), 15); - scene.world.moveSection(contraption, util.vector.of(0, 0, -1.5), 15); - scene.idle(15); - scene.world.setKineticSpeed(util.select.position(2, 2, 3), 0); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("Cart Contraptions will rotate to face towards their carts' motion") - .pointAt(util.vector.of(1.5, 2.5, 0)) - .placeNearTarget(); - scene.idle(90); - - scene.world.hideIndependentSection(contraption, Direction.UP); - scene.world.hideIndependentSection(anchor, Direction.UP); - scene.special.hideElement(cart, Direction.UP); - scene.idle(25); - - Vector3d blockSurface = util.vector.blockSurface(assemblerPos, Direction.NORTH) - .add(0, 0, -2 / 16f); - scene.overlay.showScrollInput(blockSurface, Direction.NORTH, 60); - scene.overlay.showControls(new InputWindowElement(blockSurface, Pointing.DOWN).scroll() - .withWrench(), 60); - scene.idle(10); - scene.overlay.showText(60) - .pointAt(util.vector.of(3, 1.5, 3)) - .placeNearTarget() - .sharedText("behaviour_modify_wrench"); - scene.idle(70); - - contraption = scene.world.showIndependentSection(util.select.fromTo(3, 2, 3, 2, 2, 3), Direction.DOWN); - cart = scene.special.createCart(util.vector.topOf(util.grid.at(4, 0, 3)), 0, MinecartEntity::new); - scene.idle(10); - scene.special.moveCart(cart, util.vector.of(-1, 0, 0), 10); - scene.idle(10); - anchor = scene.world.showIndependentSectionImmediately(util.select.position(assemblerPos.south())); - scene.world.moveSection(anchor, util.vector.of(0, 0, -1), 0); - scene.idle(1); - - scene.world.setKineticSpeed(util.select.position(2, 2, 3), 32); - scene.special.moveCart(cart, util.vector.of(-1.5, 0, 0), 15); - scene.world.moveSection(anchor, util.vector.of(-1.5, 0, 0), 15); - scene.world.moveSection(contraption, util.vector.of(-1.5, 0, 0), 15); - scene.idle(16); - scene.special.rotateCart(cart, -45, 2); - scene.special.moveCart(cart, util.vector.of(-.5, 0, -.5), 8); - scene.world.moveSection(anchor, util.vector.of(-.5, 0, -.5), 8); - scene.world.moveSection(contraption, util.vector.of(-.5, 0, -.5), 8); - scene.idle(9); - scene.special.rotateCart(cart, -45, 2); - scene.special.moveCart(cart, util.vector.of(0, 0, -1.5), 15); - scene.world.moveSection(anchor, util.vector.of(0, 0, -1.5), 15); - scene.world.moveSection(contraption, util.vector.of(0, 0, -1.5), 15); - scene.idle(15); - scene.world.setKineticSpeed(util.select.position(2, 2, 3), 0); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("If the Assembler is set to Lock Rotation, the contraptions' orientation will never change") - .pointAt(util.vector.of(0, 2.5, 1.5)) - .placeNearTarget(); - scene.idle(90); - } - - public static void dual(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("cart_assembler_dual", "Assembling Carriage Contraptions"); - scene.configureBasePlate(0, 0, 6); - scene.scaleSceneView(.9f); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - for (int z = 0; z < 5; z++) { - scene.world.showSection(util.select.position(1, 1, z), Direction.DOWN); - scene.idle(2); - } - for (int x = 2; x < 6; x++) { - scene.world.showSection(util.select.position(x, 1, 4), Direction.DOWN); - scene.idle(2); - } - - BlockPos assembler1 = util.grid.at(2, 1, 4); - BlockPos assembler2 = util.grid.at(5, 1, 4); - Selection chassis = util.select.fromTo(5, 2, 4, 2, 2, 4); - - scene.idle(5); - scene.world.showSection(util.select.fromTo(2, 1, 3, 2, 1, 2), Direction.SOUTH); - scene.idle(5); - ElementLink cart = - scene.special.createCart(util.vector.topOf(assembler1.down()), 0, MinecartEntity::new); - ElementLink cart2 = - scene.special.createCart(util.vector.topOf(assembler2.down()), 0, ChestMinecartEntity::new); - scene.idle(15); - scene.world.setBlock(assembler1, AllBlocks.CART_ASSEMBLER.getDefaultState() - .with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST) - .with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.CONTROLLER_RAIL), true); - scene.idle(5); - scene.world.setBlock(assembler2, AllBlocks.CART_ASSEMBLER.getDefaultState() - .with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST) - .with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.REGULAR), true); - scene.idle(5); - - ElementLink contraption = scene.world.showIndependentSection(chassis, Direction.DOWN); - scene.idle(15); - scene.overlay.showOutline(PonderPalette.GREEN, new Object(), util.select.position(assembler2), 60); - scene.overlay.showSelectionWithText(util.select.position(assembler1), 60) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(util.grid.at(2, 2, 4), Direction.NORTH)) - .placeNearTarget() - .text("Whenever two Cart Assembers share an attached structure...") - .attachKeyFrame(); - scene.idle(70); - - scene.overlay.showText(60) - .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 4), Direction.NORTH)) - .placeNearTarget() - .text("Powering either of them will create a Carriage Contraption"); - scene.idle(70); - - scene.effects.indicateRedstone(util.grid.at(2, 1, 2)); - scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 2, 2, 1, 4)); - ElementLink anchors = - scene.world.showIndependentSectionImmediately(util.select.fromTo(assembler1.south(), assembler2.south())); - scene.world.moveSection(anchors, util.vector.of(0, 0, -1), 0); - scene.world.configureCenterOfRotation(anchors, util.vector.centerOf(util.grid.at(2, 2, 5))); - scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(util.grid.at(2, 2, 4))); - scene.idle(5); - - Vector3d m = util.vector.of(-0.5, 0, 0); - scene.special.moveCart(cart, m, 5); - scene.special.moveCart(cart2, m, 5); - scene.world.moveSection(contraption, m, 5); - scene.world.moveSection(anchors, m, 5); - scene.idle(5); - scene.special.rotateCart(cart, -45, 2); - scene.special.moveCart(cart2, util.vector.of(-.3, 0, 0), 8); - m = util.vector.of(-.5, 0, -.5); - scene.special.moveCart(cart, m, 8); - scene.world.moveSection(anchors, m, 8); - scene.world.moveSection(contraption, m, 8); - scene.world.rotateSection(anchors, 0, -10, 0, 8); - scene.world.rotateSection(contraption, 0, -10, 0, 8); - scene.idle(8); - scene.special.rotateCart(cart, -45, 2); - scene.special.moveCart(cart2, util.vector.of(-.4, 0, 0), 5); - m = util.vector.of(0, 0, -3.5); - scene.special.moveCart(cart, m, 25); - scene.world.moveSection(anchors, m, 25); - scene.world.moveSection(contraption, m, 25); - scene.world.rotateSection(anchors, 0, -33, 0, 10); - scene.world.rotateSection(contraption, 0, -33, 0, 10); - scene.idle(5); - scene.special.moveCart(cart2, util.vector.of(-0.8, 0, 0), 5); - scene.idle(5); - scene.special.moveCart(cart2, util.vector.of(-1.5, 0, 0), 9); - scene.world.rotateSection(anchors, 0, -42, 0, 9); - scene.world.rotateSection(contraption, 0, -42, 0, 9); - scene.idle(9); - m = util.vector.of(-.5, 0, -.5); - scene.special.moveCart(cart2, m, 2); - scene.special.rotateCart(cart2, -45, 2); - scene.world.rotateSection(anchors, 0, -5, 0, 5); - scene.world.rotateSection(contraption, 0, -5, 0, 5); - scene.idle(2); - scene.special.moveCart(cart2, util.vector.of(0, 0, -.5), 5); - scene.special.rotateCart(cart2, -45, 2); - scene.idle(10); - - scene.overlay.showText(70) - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 3), Direction.WEST)) - .placeNearTarget() - .text("The carts will behave like those connected via Minecart Coupling"); - scene.idle(80); - - } - - public static void rails(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("cart_assembler_rails", "Other types of Minecarts and Rails"); - scene.configureBasePlate(0, 0, 6); - scene.scaleSceneView(.9f); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - for (int x = 0; x < 6; x++) { - scene.world.showSection(util.select.position(x, 1, 3), Direction.DOWN); - scene.idle(2); - } - - BlockPos assembler = util.grid.at(3, 1, 3); - - Selection chassis = util.select.fromTo(4, 2, 3, 2, 2, 3); - - scene.idle(5); - scene.overlay.showText(70) - .attachKeyFrame() - .pointAt(util.vector.blockSurface(assembler, Direction.DOWN)) - .placeNearTarget() - .text("Cart Assemblers on Regular Tracks will not affect the passing carts' motion"); - scene.idle(10); - scene.world.setBlock(assembler, AllBlocks.CART_ASSEMBLER.getDefaultState() - .with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST) - .with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.REGULAR), true); - scene.idle(70); - - ElementLink cart = scene.special.createCart(util.vector.topOf(assembler.east(2) - .down()), 0, MinecartEntity::new); - ElementLink anchor = - scene.world.showIndependentSection(util.select.position(assembler.south()), Direction.DOWN); - ElementLink contraption = - scene.world.showIndependentSection(util.select.position(assembler.south() - .up()), Direction.DOWN); - scene.world.moveSection(contraption, util.vector.of(2, 0, -1), 0); - scene.world.moveSection(anchor, util.vector.of(2, 0, -1), 0); - scene.idle(10); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 10); - scene.world.moveSection(anchor, util.vector.of(-2, 0, 0), 10); - scene.special.moveCart(cart, util.vector.of(-5, 0, 0), 25); - scene.idle(30); - scene.special.hideElement(cart, Direction.UP); - scene.world.hideIndependentSection(contraption, Direction.UP); - scene.world.moveSection(anchor, util.vector.of(0, -3, 0), 0); - scene.idle(30); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(assembler), Pointing.DOWN) - .withItem(new ItemStack(Items.POWERED_RAIL)), 50); - scene.idle(7); - scene.world.setBlock(assembler, AllBlocks.CART_ASSEMBLER.getDefaultState() - .with(CartAssemblerBlock.RAIL_SHAPE, RailShape.EAST_WEST) - .with(CartAssemblerBlock.RAIL_TYPE, CartAssembleRailType.POWERED_RAIL), true); - scene.overlay.showText(100) - .attachKeyFrame() - .pointAt(util.vector.topOf(assembler)) - .placeNearTarget() - .text("When on Powered or Controller Rail, the carts will be held in place until it's Powered"); - scene.idle(110); - - scene.world.hideIndependentSection(anchor, Direction.DOWN); - cart = scene.special.createCart(util.vector.topOf(assembler.east(2) - .down()), 0, MinecartEntity::new); - anchor = scene.world.showIndependentSection(util.select.position(assembler.south()), Direction.DOWN); - contraption = scene.world.showIndependentSection(util.select.position(assembler.south() - .up()), Direction.DOWN); - scene.world.moveSection(contraption, util.vector.of(2, 0, -1), 0); - scene.world.moveSection(anchor, util.vector.of(2, 0, -1), 0); - scene.idle(10); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 10); - scene.world.moveSection(anchor, util.vector.of(-2, 0, 0), 10); - scene.special.moveCart(cart, util.vector.of(-2, 0, 0), 10); - scene.world.showSection(util.select.fromTo(3, 1, 1, 3, 1, 2), Direction.SOUTH); - scene.idle(30); - - scene.world.toggleRedstonePower(util.select.fromTo(3, 1, 1, 3, 1, 3)); - scene.effects.indicateRedstone(util.grid.at(3, 1, 1)); - scene.idle(5); - - scene.world.moveSection(contraption, util.vector.of(-3, 0, 0), 15); - scene.world.moveSection(anchor, util.vector.of(-3, 0, 0), 15); - scene.special.moveCart(cart, util.vector.of(-3, 0, 0), 15); - - scene.idle(30); - scene.special.hideElement(cart, Direction.UP); - scene.world.hideIndependentSection(anchor, Direction.UP); - scene.world.hideIndependentSection(contraption, Direction.UP); - scene.idle(20); - - cart = scene.special.createCart(util.vector.topOf(assembler.east(2) - .down()), 0, FurnaceMinecartEntity::new); - scene.idle(10); - scene.overlay.showText(50) - .attachKeyFrame() - .pointAt(util.vector.topOf(assembler.east(2))) - .placeNearTarget() - .text("Other types of Minecarts can be used as the anchor"); - scene.idle(50); - contraption = scene.world.showIndependentSection(chassis, Direction.DOWN); - scene.idle(5); - scene.world.glueBlockOnto(assembler.up(2), Direction.DOWN, contraption); - scene.idle(15); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(assembler.up()), Pointing.UP) - .withItem(new ItemStack(Items.CHARCOAL)), 40); - scene.idle(7); - scene.overlay.showText(80) - .pointAt(util.vector.blockSurface(assembler.up(2), Direction.WEST)) - .placeNearTarget() - .text("Furnace Carts will keep themselves powered, pulling fuel from any attached inventories"); - scene.idle(85); - - Emitter smoke = Emitter.simple(ParticleTypes.LARGE_SMOKE, util.vector.of(0, 0, 0)); - - scene.special.moveCart(cart, util.vector.of(-5, 0, 0), 50); - scene.idle(20); - anchor = scene.world.showIndependentSectionImmediately(util.select.position(assembler.south())); - scene.world.moveSection(anchor, util.vector.of(0, 0, -1), 0); - scene.idle(1); - scene.world.setKineticSpeed(util.select.position(2, 2, 3), 32); - scene.world.moveSection(contraption, util.vector.of(-3, 0, 0), 30); - scene.world.moveSection(anchor, util.vector.of(-3, 0, 0), 30); - - Vector3d vec = util.vector.centerOf(assembler) - .add(.25, .25, -0.5); - for (int i = 0; i < 7; i++) { - scene.effects.emitParticles(vec = vec.add(-.5, 0, 0), smoke, 2, 1); - scene.idle(5); - } - - scene.world.setKineticSpeed(util.select.position(2, 2, 3), 0); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java deleted file mode 100644 index 43d12f44f..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java +++ /dev/null @@ -1,260 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.content.contraptions.relays.encased.EncasedBeltBlock; -import com.simibubi.create.content.logistics.block.redstone.AnalogLeverTileEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.TextWindowElement.Builder; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.RedstoneWireBlock; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; - -public class ChainDriveScenes { - - public static void chainDriveAsRelay(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("chain_drive", "Relaying rotational force with Chain Drives"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - BlockPos gaugePos = util.grid.at(0, 1, 3); - Selection gauge = util.select.position(gaugePos); - scene.world.showSection(gauge, Direction.UP); - scene.world.setKineticSpeed(gauge, 0); - - scene.idle(5); - scene.world.showSection(util.select.fromTo(5, 1, 2, 4, 1, 2), Direction.DOWN); - scene.idle(10); - - for (int i = 0; i < 3; i++) { - scene.idle(5); - scene.world.showSection(util.select.position(3, 1, 2 - i), Direction.DOWN); - if (i != 0) - scene.world.showSection(util.select.position(3, 1, 2 + i), Direction.DOWN); - } - - scene.idle(10); - scene.world.showSection(util.select.position(gaugePos.east(2)), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(gaugePos.east()), Direction.DOWN); - scene.idle(5); - - scene.world.setKineticSpeed(gauge, 64); - scene.effects.indicateSuccess(gaugePos); - scene.idle(20); - scene.overlay.showText(60) - .text("Chain Drives relay rotation to each other in a row") - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 4), Direction.WEST)); - scene.idle(60); - - Selection shafts = util.select.fromTo(2, 1, 0, 2, 1, 1); - BlockPos rotatedECD = util.grid.at(3, 1, 0); - Selection verticalShaft = util.select.fromTo(rotatedECD.up(), rotatedECD.up(2)); - - scene.world.showSection(shafts, Direction.EAST); - scene.idle(10); - scene.effects.rotationDirectionIndicator(util.grid.at(2, 1, 0)); - scene.effects.rotationDirectionIndicator(util.grid.at(2, 1, 1)); - scene.idle(20); - scene.overlay.showText(60) - .text("All shafts connected like this will rotate in the same direction") - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 1), Direction.WEST)); - scene.idle(50); - scene.world.hideSection(shafts, Direction.WEST); - scene.idle(25); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(rotatedECD), Pointing.DOWN).rightClick() - .withWrench(), 30); - scene.idle(7); - scene.world.modifyBlock(rotatedECD, s -> s.with(EncasedBeltBlock.AXIS, Axis.Y), true); - scene.idle(40); - - scene.world.showSection(verticalShaft, Direction.DOWN); - scene.idle(10); - - scene.effects.rotationDirectionIndicator(util.grid.at(3, 3, 0)); - scene.idle(10); - scene.overlay.showText(60) - .text("Any part of the row can be rotated by 90 degrees") - .placeNearTarget() - .pointAt(util.vector.centerOf(3, 2, 0)); - - scene.markAsFinished(); - } - - public static void adjustableChainGearshift(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("chain_gearshift", "Controlling rotational speed with Chain Gearshifts"); - scene.configureBasePlate(0, 0, 5); - scene.setSceneOffsetY(-1); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos leverPos = util.grid.at(3, 1, 0); - BlockPos eastDrive = util.grid.at(3, 1, 2); - - BlockPos eastGauge = eastDrive.up(3); - BlockPos middleGauge = eastGauge.west() - .down(); - BlockPos westGauge = eastGauge.west(2) - .down(2); - - ElementLink lever = - scene.world.showIndependentSection(util.select.fromTo(leverPos, leverPos.south()), Direction.UP); - - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 3, 4, 2, 3), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.fromTo(eastDrive, eastDrive.west(2)) - .add(util.select.position(eastDrive.up())), Direction.DOWN); - scene.idle(10); - - scene.overlay.showText(60) - .text("Unpowered Chain Gearshifts behave exactly like Chain Drives") - .placeNearTarget() - .pointAt(util.vector.blockSurface(eastDrive, Direction.NORTH)); - scene.idle(60); - - scene.world.showSection(util.select.fromTo(eastGauge, eastGauge.down()), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.fromTo(middleGauge, middleGauge.down()), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(westGauge), Direction.DOWN); - scene.idle(5); - - for (BlockPos gauge : new BlockPos[] { eastGauge, middleGauge, westGauge }) { - scene.idle(5); - scene.overlay.showText(50) - .sharedText(gauge == eastGauge ? "rpm16_source" : "rpm16") - .colored(PonderPalette.MEDIUM) - .placeNearTarget() - .pointAt(util.vector.blockSurface(gauge, Direction.NORTH)); - } - - scene.idle(60); - - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.south(2))); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(util.select.fromTo(westGauge.down(), middleGauge), f -> 2 * f); - - scene.idle(10); - - AxisAlignedBB bb = new AxisAlignedBB(eastDrive); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.MEDIUM, eastDrive, bb, 160); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.FAST, eastDrive.west(), bb.offset(-2, 0, 0) - .expand(15 / 16f, 0, 0), 160); - scene.idle(20); - - scene.overlay.showText(80) - .text("When Powered, the speed transmitted to other Chain Drives in the row is doubled") - .placeNearTarget() - .colored(PonderPalette.FAST) - .pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST)); - scene.idle(80); - - for (BlockPos gauge : new BlockPos[] { eastGauge, middleGauge, westGauge }) { - scene.idle(5); - scene.overlay.showText(70) - .sharedText(gauge == eastGauge ? "rpm16_source" : "rpm32") - .colored(gauge == eastGauge ? PonderPalette.MEDIUM : PonderPalette.FAST) - .placeNearTarget() - .pointAt(util.vector.blockSurface(gauge, Direction.NORTH)); - } - - scene.idle(80); - - scene.world.hideSection(util.select.fromTo(eastDrive, eastDrive.west(2)), Direction.SOUTH); - scene.idle(15); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.south(2))); - Selection newDriveSelect = util.select.fromTo(eastDrive.south(2), eastDrive.south(2) - .west(2)); - ElementLink drives = scene.world.showIndependentSection(newDriveSelect, Direction.NORTH); - scene.world.modifyKineticSpeed(util.select.fromTo(westGauge.down(), middleGauge), f -> .5f * f); - scene.world.setKineticSpeed(newDriveSelect, -32); - scene.world.moveSection(drives, util.vector.of(0, 0, -2), 0); - scene.world.moveSection(lever, util.vector.of(-2, 0, 0), 10); - - scene.idle(40); - - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.south(1))); - scene.world.toggleRedstonePower(util.select.position(1, 1, 4)); - BlockPos analogPos = leverPos.west(2); - scene.effects.indicateRedstone(analogPos); - scene.world.modifyKineticSpeed(util.select.position(westGauge), f -> .5f * f); - - scene.idle(10); - - bb = new AxisAlignedBB(eastDrive); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.MEDIUM, eastDrive, bb.expand(-15 / 16f, 0, 0), 160); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.SLOW, eastDrive.west(), bb.offset(-2, 0, 0), 160); - scene.idle(20); - - scene.overlay.showText(80) - .text("Whenever the Powered Gearshift is not at the source, its speed will be halved instead") - .placeNearTarget() - .colored(PonderPalette.SLOW) - .pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST)); - scene.idle(80); - - for (BlockPos gauge : new BlockPos[] { eastGauge, middleGauge, westGauge }) { - scene.idle(5); - scene.overlay.showText(180) - .sharedText(gauge == westGauge ? "rpm8" : gauge == eastGauge ? "rpm16_source" : "rpm16") - .colored(gauge == westGauge ? PonderPalette.SLOW : PonderPalette.MEDIUM) - .placeNearTarget() - .pointAt(util.vector.blockSurface(gauge, Direction.NORTH)); - } - - scene.idle(80); - - scene.overlay.showText(100) - .text("In both cases, Chain Drives in the row always run at 2x the speed of the Powered Gearshift") - .placeNearTarget() - .pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST)); - scene.idle(100); - - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.south(2))); - scene.world.toggleRedstonePower(util.select.position(1, 1, 4)); - scene.world.modifyKineticSpeed(util.select.position(westGauge), f -> 2f * f); - scene.world.hideIndependentSection(lever, Direction.UP); - scene.idle(15); - - scene.world.showSection(util.select.fromTo(analogPos, analogPos.south()), Direction.DOWN); - - scene.idle(15); - scene.world.modifyTileNBT(util.select.position(analogPos), AnalogLeverTileEntity.class, nbt -> { - nbt.putInt("State", 8); - }); - scene.world.modifyBlock(analogPos.south(), s -> s.with(RedstoneWireBlock.POWER, 8), false); - scene.world.toggleRedstonePower(util.select.position(1, 1, 4)); - scene.world.modifyKineticSpeed(util.select.position(westGauge), f -> .75f * f); - scene.effects.indicateRedstone(analogPos); - - scene.idle(20); - - scene.overlay.showText(100) - .text("Using analog signals, the ratio can be adjusted more precisely between 1 and 2") - .placeNearTarget() - .pointAt(util.vector.blockSurface(eastDrive.west(2), Direction.WEST)); - scene.idle(40); - - for (BlockPos gauge : new BlockPos[] { eastGauge, middleGauge, westGauge }) { - scene.idle(5); - Builder builder = scene.overlay.showText(180) - .colored(gauge == westGauge ? PonderPalette.SLOW : PonderPalette.MEDIUM) - .placeNearTarget() - .pointAt(util.vector.blockSurface(gauge, Direction.NORTH)); - if (gauge == westGauge) - builder.text("12 RPM"); - else - builder.sharedText(gauge == eastGauge ? "rpm16_source" : "rpm16"); - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ChassisScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ChassisScenes.java deleted file mode 100644 index 24c7a768f..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ChassisScenes.java +++ /dev/null @@ -1,570 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import org.apache.commons.lang3.mutable.MutableObject; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.RadialChassisBlock; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class ChassisScenes { - - public static void linearGroup(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("linear_chassis_group", "Moving Linear Chassis in groups"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(10); - - BlockPos centralChassis = util.grid.at(2, 2, 2); - ElementLink chassis = - scene.world.showIndependentSection(util.select.position(centralChassis), Direction.DOWN); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.position(centralChassis.west()), Direction.EAST, chassis); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(centralChassis.east()), Direction.WEST, chassis); - scene.idle(4); - scene.world.showSectionAndMerge(util.select.position(centralChassis.east() - .north()), Direction.SOUTH, chassis); - scene.idle(3); - scene.world.showSectionAndMerge(util.select.position(centralChassis.up()), Direction.DOWN, chassis); - scene.idle(2); - scene.world.showSectionAndMerge(util.select.position(centralChassis.up() - .east()), Direction.DOWN, chassis); - scene.idle(10); - - scene.overlay.showText(80) - .attachKeyFrame() - .placeNearTarget() - .text("Linear Chassis connect to identical Chassis blocks next to them") - .pointAt(util.vector.topOf(util.grid.at(2, 3, 2))); - scene.idle(90); - - BlockPos bearingPos = util.grid.at(2, 1, 2); - scene.world.moveSection(chassis, util.vector.of(0, -1 / 1024f, 0), 0); - scene.world.configureCenterOfRotation(chassis, util.vector.centerOf(bearingPos)); - scene.world.rotateBearing(bearingPos, 360, 80); - scene.world.rotateSection(chassis, 0, 360, 0, 80); - - scene.idle(20); - scene.overlay.showText(80) - .placeNearTarget() - .text("When one is moved by a Contraption, the others are dragged with it") - .pointAt(util.vector.topOf(util.grid.at(2, 3, 2))); - scene.idle(90); - - Selection wrong1 = util.select.position(2, 4, 2); - Selection wrong2 = util.select.position(0, 2, 2); - - scene.addKeyframe(); - scene.world.showSection(wrong2, Direction.EAST); - scene.idle(10); - scene.world.showSection(wrong1, Direction.DOWN); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.RED, wrong2, wrong2, 80); - scene.overlay.showSelectionWithText(wrong1, 80) - .colored(PonderPalette.RED) - .placeNearTarget() - .text("Chassis of a different type or facing another direction will not attach"); - scene.idle(40); - - scene.world.rotateBearing(bearingPos, 360, 80); - scene.world.rotateSection(chassis, 0, 360, 0, 80); - } - - public static void linearAttachement(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("linear_chassis_attachment", "Attaching blocks using Linear Chassis"); - scene.configureBasePlate(0, 0, 5); - scene.setSceneOffsetY(-1); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos chassisPos = util.grid.at(2, 2, 2); - Selection chassis = util.select.position(chassisPos); - - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.world.showSection(chassis, Direction.DOWN); - scene.idle(10); - - InputWindowElement input = - new InputWindowElement(util.vector.blockSurface(chassisPos, Direction.WEST), Pointing.LEFT).rightClick() - .withItem(new ItemStack(Items.SLIME_BALL)); - scene.overlay.showControls(input, 30); - scene.idle(7); - scene.world.modifyBlock(chassisPos, s -> s.with(LinearChassisBlock.STICKY_BOTTOM, true), false); - scene.effects.superGlue(chassisPos, Direction.WEST, false); - scene.idle(30); - - scene.overlay.showText(60) - .text("The open faces of a Linear Chassis can be made Sticky") - .placeNearTarget() - .pointAt(util.vector.blockSurface(chassisPos, Direction.WEST)); - scene.idle(70); - - scene.overlay.showControls(input, 15); - scene.idle(7); - scene.world.modifyBlock(chassisPos, s -> s.with(LinearChassisBlock.STICKY_TOP, true), false); - scene.effects.superGlue(chassisPos, Direction.EAST, false); - scene.idle(15); - - scene.overlay.showText(60) - .text("Click again to make the opposite side sticky") - .placeNearTarget() - .pointAt(util.vector.topOf(chassisPos)); - scene.idle(10); - scene.rotateCameraY(60); - scene.idle(35); - scene.rotateCameraY(-60); - scene.idle(25); - - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(chassisPos, Direction.WEST), Pointing.LEFT).rightClick() - .whileSneaking(), - 30); - scene.idle(7); - scene.world.modifyBlock(chassisPos, s -> s.with(LinearChassisBlock.STICKY_BOTTOM, false), false); - scene.effects.superGlue(chassisPos, Direction.WEST, false); - scene.idle(30); - - scene.overlay.showText(60) - .text("Sneak and Right-Click with an empty hand to remove the slime") - .placeNearTarget() - .pointAt(util.vector.blockSurface(chassisPos, Direction.WEST)); - scene.idle(70); - - scene.world.hideSection(chassis, Direction.UP); - - scene.idle(20); - ElementLink glassSection = - scene.world.showIndependentSection(util.select.position(chassisPos.up()), Direction.DOWN); - scene.world.moveSection(glassSection, util.vector.of(0, -1, 0), 0); - scene.idle(25); - scene.addKeyframe(); - scene.world.showSectionAndMerge(util.select.fromTo(2, 4, 2, 2, 5, 2), Direction.DOWN, glassSection); - ElementLink topGlassSection = - scene.world.showIndependentSection(util.select.position(2, 6, 2), Direction.DOWN); - scene.world.moveSection(topGlassSection, util.vector.of(0, -1, 0), 0); - scene.idle(30); - - Selection column1 = util.select.fromTo(2, 3, 2, 2, 3, 2); - Selection column2 = util.select.fromTo(2, 3, 2, 2, 4, 2); - Selection column3 = util.select.fromTo(2, 3, 2, 2, 5, 2); - - scene.overlay.showSelectionWithText(column3, 80) - .colored(PonderPalette.GREEN) - .text("Stickied faces of the Linear Chassis will attach a line of blocks in front of it") - .placeNearTarget(); - scene.idle(90); - - BlockPos bearingPos = util.grid.at(2, 1, 2); - scene.world.configureCenterOfRotation(glassSection, util.vector.centerOf(bearingPos)); - scene.world.rotateBearing(bearingPos, 180, 40); - scene.world.rotateSection(glassSection, 0, 180, 0, 40); - scene.world.rotateSection(topGlassSection, 0, 180, 0, 40); - scene.idle(50); - - Vector3d blockSurface = util.vector.blockSurface(chassisPos, Direction.NORTH); - scene.overlay.showCenteredScrollInput(chassisPos, Direction.NORTH, 50); - scene.overlay.showControls(new InputWindowElement(blockSurface, Pointing.UP).scroll() - .withWrench(), 50); - - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, column3, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, column2, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, column1, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, column2, 15); - scene.idle(10); - - scene.overlay.showText(60) - .pointAt(blockSurface) - .text("Using a Wrench, a precise Range can be specified for this chassis") - .placeNearTarget(); - scene.idle(70); - - scene.world.rotateBearing(bearingPos, 180, 40); - scene.world.rotateSection(glassSection, 0, 180, 0, 40); - scene.idle(50); - - scene.world.rotateSection(topGlassSection, 0, 180, 0, 0); - scene.world.showSectionAndMerge(util.select.position(1, 3, 2), Direction.UP, glassSection); - scene.world.showSectionAndMerge(util.select.position(3, 3, 2), Direction.UP, glassSection); - scene.world.showSectionAndMerge(util.select.fromTo(1, 4, 2, 1, 6, 2), Direction.DOWN, glassSection); - scene.world.showSectionAndMerge(util.select.fromTo(3, 4, 2, 3, 6, 2), Direction.DOWN, glassSection); - scene.addKeyframe(); - scene.idle(20); - - scene.overlay.showCenteredScrollInput(chassisPos, Direction.NORTH, 50); - scene.overlay.showControls(new InputWindowElement(blockSurface, Pointing.UP).whileCTRL() - .scroll() - .withWrench(), 50); - - column1 = util.select.fromTo(1, 3, 2, 3, 3, 2); - column2 = util.select.fromTo(1, 3, 2, 3, 4, 2); - column3 = util.select.fromTo(1, 3, 2, 3, 5, 2); - - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, column2, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, column1, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, column2, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, column3, 15); - scene.idle(10); - - scene.overlay.showText(80) - .pointAt(blockSurface) - .text("Holding CTRL and scrolling adjusts the range of all attached Chassis Blocks") - .placeNearTarget(); - scene.idle(90); - - scene.world.rotateBearing(bearingPos, 180, 40); - scene.world.rotateSection(glassSection, 0, 180, 0, 40); - scene.world.rotateSection(topGlassSection, 0, 180, 0, 40); - scene.idle(50); - - Vector3d glueSurface = util.vector.blockSurface(chassisPos.west(), Direction.NORTH); - scene.overlay.showText(80) - .attachKeyFrame() - .pointAt(glueSurface) - .text("Attaching blocks to any other side requires the use of Super Glue") - .placeNearTarget(); - scene.idle(90); - scene.overlay.showControls(new InputWindowElement(glueSurface, Pointing.DOWN).rightClick() - .withItem(AllItems.SUPER_GLUE.asStack()), 30); - scene.idle(7); - ElementLink glueEntity = scene.world.createGlueEntity(chassisPos.west(), Direction.NORTH); - scene.idle(20); - ElementLink gluedPlank = - scene.world.showIndependentSection(util.select.position(3, 3, 1), Direction.SOUTH); - scene.world.moveSection(gluedPlank, util.vector.of(-2, -1, 0), 0); - scene.idle(15); - scene.effects.superGlue(chassisPos.west(), Direction.NORTH, true); - scene.idle(20); - - scene.world.modifyEntity(glueEntity, Entity::remove); - scene.world.hideIndependentSection(glassSection, Direction.UP); - scene.world.hideIndependentSection(gluedPlank, Direction.UP); - scene.world.hideIndependentSection(topGlassSection, Direction.UP); - scene.idle(15); - - scene.addKeyframe(); - ElementLink chain = - scene.world.showIndependentSection(util.select.position(2, 7, 2), Direction.DOWN); - scene.world.configureCenterOfRotation(chain, util.vector.centerOf(bearingPos)); - scene.world.moveSection(chain, util.vector.of(0, -5, 0), 0); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.fromTo(2, 8, 2, 3, 9, 2), Direction.DOWN, chain); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.fromTo(3, 9, 1, 3, 9, 0), Direction.SOUTH, chain); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.fromTo(2, 9, 0, 1, 9, 0), Direction.EAST, chain); - scene.idle(20); - - scene.overlay.showText(80) - .pointAt(util.vector.topOf(chassisPos.up(2))) - .text("Using these mechanics, structures of any shape can move as a Contraption") - .placeNearTarget(); - scene.idle(30); - - scene.world.rotateBearing(bearingPos, 720, 160); - scene.world.rotateSection(chain, 0, 720, 0, 160); - } - - public static void radial(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("radial_chassis", "Attaching blocks using Radial Chassis"); - scene.configureBasePlate(0, 0, 5); - scene.setSceneOffsetY(-1); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - util.select.position(2, 4, 2); - - BlockPos chassisPos = util.grid.at(2, 2, 2); - Selection chassis = util.select.position(chassisPos); - - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(10); - ElementLink contraption = scene.world.showIndependentSection(chassis, Direction.DOWN); - scene.idle(5); - ElementLink top = - scene.world.showIndependentSection(util.select.position(chassisPos.up()), Direction.DOWN); - scene.idle(10); - - scene.overlay.showText(50) - .attachKeyFrame() - .placeNearTarget() - .text("Radial Chassis connect to identical Chassis blocks in a row") - .pointAt(util.vector.topOf(chassisPos.up())); - scene.idle(60); - - BlockPos bearingPos = util.grid.at(2, 1, 2); - scene.world.moveSection(contraption, util.vector.of(0, -1 / 1024f, 0), 0); - scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(bearingPos)); - scene.world.rotateBearing(bearingPos, 360, 80); - scene.world.rotateSection(contraption, 0, 360, 0, 80); - scene.world.rotateSection(top, 0, 360, 0, 80); - - scene.idle(20); - scene.overlay.showText(70) - .placeNearTarget() - .text("When one is moved by a Contraption, the others are dragged with it") - .pointAt(util.vector.topOf(util.grid.at(2, 3, 2))); - scene.idle(80); - - scene.world.hideIndependentSection(top, Direction.UP); - scene.idle(15); - - scene.addKeyframe(); - InputWindowElement input = - new InputWindowElement(util.vector.blockSurface(chassisPos, Direction.WEST), Pointing.LEFT).rightClick() - .withItem(new ItemStack(Items.SLIME_BALL)); - scene.overlay.showControls(input, 30); - scene.idle(7); - scene.world.modifyBlock(chassisPos, s -> s.with(RadialChassisBlock.STICKY_WEST, true), false); - scene.effects.superGlue(chassisPos, Direction.WEST, false); - scene.idle(30); - - scene.overlay.showText(60) - .text("The side faces of a Radial Chassis can be made Sticky") - .placeNearTarget() - .pointAt(util.vector.blockSurface(chassisPos, Direction.WEST)); - scene.idle(70); - - scene.overlay.showControls(input, 15); - scene.idle(7); - scene.world.modifyBlock(chassisPos, s -> s.with(RadialChassisBlock.STICKY_EAST, true) - .with(RadialChassisBlock.STICKY_NORTH, true) - .with(RadialChassisBlock.STICKY_SOUTH, true), false); - scene.effects.superGlue(chassisPos, Direction.EAST, false); - scene.effects.superGlue(chassisPos, Direction.SOUTH, false); - scene.effects.superGlue(chassisPos, Direction.NORTH, false); - scene.idle(15); - - scene.overlay.showText(60) - .text("Click again to make all other sides sticky") - .placeNearTarget() - .pointAt(util.vector.topOf(chassisPos)); - scene.idle(10); - scene.rotateCameraY(60); - scene.idle(35); - scene.rotateCameraY(-60); - scene.idle(25); - - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(chassisPos, Direction.WEST), Pointing.LEFT).rightClick() - .whileSneaking(), - 30); - scene.idle(7); - scene.world.modifyBlock(chassisPos, s -> s.with(RadialChassisBlock.STICKY_WEST, false), false); - scene.effects.superGlue(chassisPos, Direction.WEST, false); - scene.idle(30); - - scene.overlay.showText(60) - .text("Sneak and Right-Click with an empty hand to remove the slime") - .placeNearTarget() - .pointAt(util.vector.blockSurface(chassisPos, Direction.WEST)); - scene.idle(70); - - Selection s = util.select.position(chassisPos.north()); - Selection growing = s.copy(); - Selection r1 = util.select.fromTo(1, 2, 1, 3, 2, 3) - .substract(chassis); - Selection r2 = r1.copy() - .add(util.select.fromTo(0, 2, 1, 0, 2, 3)) - .add(util.select.fromTo(1, 2, 0, 3, 2, 0)) - .add(util.select.fromTo(1, 2, 4, 3, 2, 4)) - .add(util.select.fromTo(4, 2, 1, 4, 2, 3)); - Selection r3 = util.select.layer(2) - .add(util.select.fromTo(-1, 2, 1, 5, 2, 3)) - .add(util.select.fromTo(1, 2, -1, 3, 2, 5)) - .substract(chassis); - - scene.addKeyframe(); - scene.world.showSectionAndMerge(r1, Direction.DOWN, contraption); - ElementLink outer = scene.world.showIndependentSection(util.select.layer(2) - .substract(chassis) - .substract(r1), Direction.DOWN); - scene.world.showSection(util.select.fromTo(0, 3, 3, 1, 3, 4), Direction.DOWN); - scene.idle(10); - Vector3d blockSurface = util.vector.blockSurface(chassisPos, Direction.NORTH); - AxisAlignedBB bb = new AxisAlignedBB(blockSurface, blockSurface).grow(.501, .501, 0); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, bb, 60); - scene.overlay.showOutline(PonderPalette.WHITE, s, s, 80); - scene.overlay.showText(40) - .text("Whenever a Block is next to a sticky face...") - .placeNearTarget() - .pointAt(blockSurface.add(0, .5, 0)); - scene.idle(60); - - MutableObject obj = new MutableObject<>(growing); - r2.forEach(pos -> { - scene.idle(1); - Selection add = obj.getValue() - .copy() - .add(util.select.position(pos)); - scene.overlay.showOutline(PonderPalette.WHITE, s, add, 3); - obj.setValue(add); - }); - - scene.overlay.showSelectionWithText(obj.getValue(), 60) - .colored(PonderPalette.GREEN) - .text("...it will attach all reachable blocks within a radius on that layer"); - scene.idle(70); - - scene.world.configureCenterOfRotation(outer, util.vector.centerOf(bearingPos)); - scene.world.rotateBearing(bearingPos, 360, 80); - scene.world.rotateSection(contraption, 0, 360, 0, 80); - scene.world.rotateSection(outer, 0, 360, 0, 80); - scene.idle(90); - - scene.addKeyframe(); - blockSurface = util.vector.topOf(chassisPos); - scene.overlay.showCenteredScrollInput(chassisPos, Direction.UP, 50); - scene.overlay.showControls(new InputWindowElement(blockSurface, Pointing.DOWN).scroll() - .withWrench(), 50); - - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, r2, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, r3, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, r2, 20); - scene.idle(10); - scene.overlay.showOutline(PonderPalette.WHITE, chassis, r1, 15); - scene.idle(10); - - scene.overlay.showText(60) - .pointAt(blockSurface) - .text("Using a Wrench, a precise Radius can be specified for this chassis") - .placeNearTarget(); - scene.idle(70); - - scene.world.rotateBearing(bearingPos, 360, 80); - scene.world.rotateSection(contraption, 0, 360, 0, 80); - scene.idle(90); - - scene.world.destroyBlock(util.grid.at(1, 2, 0)); - scene.idle(1); - scene.world.destroyBlock(util.grid.at(1, 2, 1)); - scene.idle(1); - scene.world.destroyBlock(util.grid.at(1, 2, 3)); - scene.idle(1); - scene.world.destroyBlock(util.grid.at(1, 2, 4)); - scene.idle(10); - - Selection ignored = util.select.fromTo(0, 2, 1, 0, 2, 3) - .add(util.select.position(1, 2, 2)); - scene.overlay.showOutline(PonderPalette.GREEN, r2, r2.copy() - .substract(util.select.fromTo(0, 2, 0, 1, 2, 4)), 80); - scene.markAsFinished(); - scene.overlay.showSelectionWithText(ignored, 80) - .colored(PonderPalette.RED) - .text("Blocks not reachable by any sticky face will not attach"); - } - - public static void superGlue(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("super_glue", "Attaching blocks using Super Glue"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(10); - - BlockPos central = util.grid.at(2, 2, 2); - ElementLink plank = - scene.world.showIndependentSection(util.select.position(central), Direction.DOWN); - scene.idle(15); - Vector3d blockSurface = util.vector.blockSurface(central, Direction.NORTH); - scene.overlay.showControls(new InputWindowElement(blockSurface, Pointing.DOWN).rightClick() - .withItem(AllItems.SUPER_GLUE.asStack()), 40); - scene.idle(7); - ElementLink glueEntity = scene.world.createGlueEntity(central, Direction.NORTH); - scene.idle(10); - scene.overlay.showText(60) - .pointAt(blockSurface) - .placeNearTarget() - .text("Super Glue can be used between any two blocks") - .colored(PonderPalette.GREEN); - scene.idle(50); - - scene.world.glueBlockOnto(central.north(), Direction.SOUTH, plank); - scene.idle(20); - scene.world.modifyEntity(glueEntity, Entity::remove); - - BlockPos bearingPos = util.grid.at(2, 1, 2); - scene.world.configureCenterOfRotation(plank, util.vector.centerOf(bearingPos)); - scene.world.rotateBearing(bearingPos, 360, 80); - scene.world.rotateSection(plank, 0, 360, 0, 80); - scene.idle(30); - scene.overlay.showText(80) - .attachKeyFrame() - .pointAt(util.vector.topOf(central)) - .placeNearTarget() - .text("The attached blocks will move together when assembled into a Contraption"); - scene.idle(90); - - scene.overlay.showText(50) - .attachKeyFrame() - .pointAt(util.vector.topOf(central)) - .placeNearTarget() - .text("Whenever Super Glue is held in the off-hand..."); - scene.idle(60); - - scene.world.glueBlockOnto(central.south(), Direction.NORTH, plank); - scene.idle(5); - scene.world.glueBlockOnto(central.north() - .east(), Direction.WEST, plank); - scene.idle(5); - scene.world.glueBlockOnto(central.up(), Direction.DOWN, plank); - scene.idle(5); - scene.world.glueBlockOnto(central.south() - .west(), Direction.EAST, plank); - scene.idle(10); - - scene.overlay.showText(80) - .pointAt(util.vector.topOf(central) - .subtract(.5, 0, 0)) - .placeNearTarget() - .text("...added blocks will be glued to the face they were placed on automatically"); - scene.idle(90); - - scene.world.rotateBearing(bearingPos, 360, 80); - scene.world.rotateSection(plank, 0, 360, 0, 80); - scene.idle(90); - - glueEntity = scene.world.createGlueEntity(central, Direction.UP); - scene.world.destroyBlock(central.up()); - scene.idle(20); - scene.addKeyframe(); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(central), Pointing.DOWN).leftClick(), 40); - scene.idle(7); - scene.world.modifyEntity(glueEntity, Entity::remove); - scene.effects.superGlue(central, Direction.UP, false); - scene.idle(10); - scene.overlay.showText(60) - .pointAt(util.vector.topOf(central)) - .placeNearTarget() - .text("Super Glue can be removed with Left-Click"); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ChuteScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ChuteScenes.java deleted file mode 100644 index 0c168ee13..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ChuteScenes.java +++ /dev/null @@ -1,265 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import static com.simibubi.create.content.logistics.block.chute.ChuteBlock.SHAPE; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.logistics.block.chute.ChuteBlock; -import com.simibubi.create.content.logistics.block.chute.ChuteBlock.Shape; -import com.simibubi.create.content.logistics.block.chute.SmartChuteTileEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class ChuteScenes { - - public static void downward(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("chute", "Transporting Items downward via Chutes"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(.9f); - scene.world.showSection(util.select.layer(0), Direction.UP); - - ElementLink top = - scene.world.showIndependentSection(util.select.fromTo(3, 3, 3, 3, 4, 3), Direction.DOWN); - ElementLink bottom = - scene.world.showIndependentSection(util.select.fromTo(3, 2, 3, 3, 1, 3), Direction.DOWN); - scene.world.moveSection(bottom, util.vector.of(-2, 0, -1), 0); - scene.world.moveSection(top, util.vector.of(0, 0, -1), 0); - scene.idle(20); - - ItemStack stack = AllBlocks.COPPER_BLOCK.asStack(); - scene.world.createItemEntity(util.vector.centerOf(util.grid.at(3, 3, 2)), util.vector.of(0, -0.1, 0), stack); - scene.idle(20); - ElementLink remove = - scene.world.createItemEntity(util.vector.centerOf(util.grid.at(1, 5, 2)), util.vector.of(0, 0.1, 0), stack); - scene.idle(15); - scene.world.modifyEntity(remove, Entity::remove); - - scene.overlay.showText(60) - .attachKeyFrame() - .pointAt(util.vector.topOf(util.grid.at(1, 2, 2))) - .placeNearTarget() - .text("Chutes can transport items vertically from and to inventories"); - scene.idle(70); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.moveSection(bottom, util.vector.of(1, 0, 0), 10); - scene.world.moveSection(top, util.vector.of(-1, 0, 0), 10); - scene.idle(20); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.NORTH), Pointing.RIGHT) - .rightClick() - .withWrench(), - 40); - scene.idle(7); - scene.world.modifyBlock(util.grid.at(3, 3, 3), s -> s.with(ChuteBlock.SHAPE, ChuteBlock.Shape.WINDOW), false); - scene.overlay.showText(50) - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.WEST)) - .placeNearTarget() - .text("Using the Wrench, a window can be created"); - - scene.idle(10); - scene.world.modifyBlock(util.grid.at(3, 2, 3), s -> s.with(SHAPE, Shape.WINDOW), false); - - for (int i = 0; i < 8; i++) { - scene.idle(10); - scene.world.createItemOnBeltLike(util.grid.at(3, 3, 3), Direction.UP, stack); - } - scene.idle(20); - scene.world.hideIndependentSection(bottom, Direction.EAST); - scene.world.hideIndependentSection(top, Direction.EAST); - scene.idle(15); - - scene.rotateCameraY(-90); - scene.world.modifyBlock(util.grid.at(2, 2, 1), s -> s.with(SHAPE, Shape.NORMAL), false); - scene.world.showSection(util.select.fromTo(2, 1, 1, 2, 2, 1), Direction.DOWN); - scene.idle(30); - ItemStack chuteItem = AllBlocks.CHUTE.asStack(); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 2, 1), Direction.SOUTH), Pointing.LEFT) - .rightClick() - .withItem(chuteItem), - 30); - scene.idle(7); - scene.world.showSection(util.select.position(2, 3, 2), Direction.NORTH); - scene.world.restoreBlocks(util.select.position(2, 2, 1)); - scene.idle(35); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.SOUTH), Pointing.LEFT) - .rightClick() - .withItem(chuteItem), - 30); - scene.idle(7); - scene.world.showSection(util.select.position(2, 4, 3), Direction.NORTH); - scene.idle(35); - - scene.overlay.showText(70) - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(2, 4, 3), Direction.WEST)) - .placeNearTarget() - .text("Placing chutes targeting the side faces of another will make it diagonal"); - scene.idle(15); - scene.rotateCameraY(90); - - scene.idle(35); - - Direction offset = Direction.NORTH; - for (int i = 0; i < 3; i++) { - remove = scene.world.createItemEntity(util.vector.centerOf(util.grid.at(2, 6, 3) - .offset(offset)), util.vector.of(0, 0.1, 0) - .add(Vector3d.of(offset.getDirectionVec()).scale(-.1)), - stack); - scene.idle(12); - scene.world.createItemOnBeltLike(util.grid.at(2, 4, 3), Direction.UP, stack); - scene.world.modifyEntity(remove, Entity::remove); - scene.idle(3); - offset = offset.rotateY(); - } - - scene.idle(10); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 1, 1), Direction.NORTH), Pointing.RIGHT) - .withItem(stack), - 50); - } - - public static void upward(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("chute_upward", "Transporting Items upward via Chutes"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(.9f); - scene.showBasePlate(); - Selection chute = util.select.fromTo(1, 2, 2, 1, 4, 2); - scene.world.setBlocks(chute, Blocks.AIR.getDefaultState(), false); - scene.world.showSection(util.select.position(1, 1, 2), Direction.UP); - scene.idle(20); - - scene.world.restoreBlocks(chute); - scene.world.showSection(chute, Direction.DOWN); - scene.idle(20); - scene.world.setKineticSpeed(util.select.position(1, 1, 2), 0); - Vector3d surface = util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.WEST); - scene.overlay.showText(70) - .text("Using Encased Fans at the top or bottom, a Chute can move items upward") - .attachKeyFrame() - .pointAt(surface) - .placeNearTarget(); - scene.idle(80); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.NORTH), Pointing.RIGHT) - .withItem(AllItems.GOGGLES.asStack()), - 50); - scene.overlay.showText(70) - .text("Inspecting chutes with Engineers' Goggles reveals information about the movement direction") - .attachKeyFrame() - .pointAt(surface) - .placeNearTarget(); - scene.idle(80); - - scene.world.showSection(util.select.fromTo(2, 2, 2, 4, 1, 5) - .add(util.select.position(3, 0, 5)), Direction.DOWN); - ItemStack stack = AllBlocks.COPPER_BLOCK.asStack(); - scene.world.createItemOnBelt(util.grid.at(4, 1, 2), Direction.EAST, stack); - scene.idle(10); - scene.rotateCameraY(60); - scene.overlay.showText(70) - .text("On the 'blocked' end, items will have to be inserted/taken from the sides") - .attachKeyFrame() - .pointAt(util.vector.centerOf(util.grid.at(3, 1, 2)) - .add(0, 3 / 16f, 0)) - .placeNearTarget(); - scene.idle(32); - scene.world.flapFunnel(util.grid.at(2, 2, 2), false); - scene.world.removeItemsFromBelt(util.grid.at(2, 1, 2)); - scene.world.createItemOnBeltLike(util.grid.at(1, 2, 2), Direction.EAST, stack); - } - - public static void smart(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("smart_chute", "Filtering Items using Smart Chutes"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(.9f); - - Selection lever = util.select.fromTo(0, 1, 2, 1, 3, 2); - BlockPos smarty = util.grid.at(2, 3, 2); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(2, 1, 2, 2, 2, 2), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(2, 3, 2), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(2, 4, 2), Direction.DOWN); - - scene.overlay.showText(60) - .text("Smart Chutes are vertical chutes with additional control") - .attachKeyFrame() - .pointAt(util.vector.blockSurface(smarty, Direction.WEST)) - .placeNearTarget(); - scene.idle(70); - - Vector3d filter = util.vector.blockSurface(smarty, Direction.NORTH) - .add(0, 0.25, 0); - scene.overlay.showFilterSlotInput(filter, 60); - ItemStack copper = new ItemStack(Items.IRON_INGOT); - scene.overlay.showControls(new InputWindowElement(filter, Pointing.DOWN).rightClick() - .withItem(copper), 40); - scene.idle(7); - scene.world.setFilterData(util.select.position(smarty), SmartChuteTileEntity.class, copper); - scene.idle(10); - scene.rotateCameraY(20); - scene.overlay.showText(60) - .text("Items in the filter slot specify what exactly they can extract and transfer") - .attachKeyFrame() - .pointAt(filter) - .placeNearTarget(); - scene.idle(10); - - for (int i = 0; i < 18; i++) { - scene.idle(10); - scene.world.createItemOnBeltLike(util.grid.at(2, 2, 2), Direction.UP, copper); - if (i == 8) { - scene.rotateCameraY(-20); - scene.overlay.showControls(new InputWindowElement(filter, Pointing.DOWN).scroll(), 40); - scene.overlay.showText(50) - .text("Use the Mouse Wheel to specify the extracted stack size") - .attachKeyFrame() - .pointAt(filter) - .placeNearTarget(); - } - if (i == 13) - scene.world.showSection(lever, Direction.NORTH); - } - - scene.world.toggleRedstonePower(lever.add(util.select.position(smarty))); - scene.effects.indicateRedstone(util.grid.at(0, 3, 2)); - scene.overlay.showText(50) - .text("Redstone power will prevent Smart Chutes from acting.") - .attachKeyFrame() - .colored(PonderPalette.RED) - .pointAt(util.vector.blockSurface(util.grid.at(0, 2, 2), Direction.UP)) - .placeNearTarget(); - scene.idle(70); - - scene.world.toggleRedstonePower(lever.add(util.select.position(smarty))); - scene.markAsFinished(); - for (int i = 0; i < 8; i++) { - scene.idle(10); - scene.world.createItemOnBeltLike(util.grid.at(2, 2, 2), Direction.UP, copper); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/CrafterScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/CrafterScenes.java deleted file mode 100644 index a4da5da9f..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/CrafterScenes.java +++ /dev/null @@ -1,453 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import java.util.Collection; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterBlock; -import com.simibubi.create.content.contraptions.components.crafter.MechanicalCrafterTileEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.items.ItemHandlerHelper; - -public class CrafterScenes { - - public static void setup(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_crafter", "Setting up Mechanical Crafters"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> 1.5f * f); - - Selection redstone = util.select.fromTo(3, 1, 0, 3, 1, 1); - Selection kinetics = util.select.fromTo(4, 1, 2, 4, 1, 5); - BlockPos depotPos = util.grid.at(0, 1, 2); - Selection crafters = util.select.fromTo(1, 1, 2, 3, 3, 2); - - scene.world.modifyBlocks(crafters, s -> s.with(MechanicalCrafterBlock.POINTING, Pointing.DOWN), false); - scene.world.setKineticSpeed(crafters, 0); - - for (int y = 0; y < 3; y++) { - for (int x = 0; x < 3; x++) { - scene.world.showSection(util.select.position(y == 1 ? x + 1 : 3 - x, y + 1, 2), Direction.DOWN); - scene.idle(2); - } - } - - scene.overlay.showText(70) - .text("An array of Mechanical Crafters can be used to automate any Crafting Recipe") - .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.WEST)) - .attachKeyFrame() - .placeNearTarget(); - scene.idle(80); - - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.NORTH), Pointing.RIGHT) - .rightClick() - .withWrench(), - 40); - scene.idle(7); - scene.world.cycleBlockProperty(util.grid.at(2, 3, 2), MechanicalCrafterBlock.POINTING); - scene.idle(10); - scene.overlay.showText(50) - .text("Using a Wrench, the Crafters' paths can be arranged") - .pointAt(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.NORTH)) - .attachKeyFrame() - .placeNearTarget(); - scene.idle(60); - - BlockPos[] positions = new BlockPos[] { util.grid.at(3, 1, 2), util.grid.at(2, 1, 2), util.grid.at(1, 1, 2) }; - - for (BlockPos pos : positions) { - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(pos, Direction.NORTH), Pointing.RIGHT).rightClick() - .withWrench(), - 10); - scene.idle(7); - scene.world.cycleBlockProperty(pos, MechanicalCrafterBlock.POINTING); - scene.idle(15); - } - - scene.overlay.showText(100) - .text("For a valid setup, all paths have to converge into one exit at any side") - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.WEST) - .add(0, 0, -.5f)) - .colored(PonderPalette.GREEN) - .attachKeyFrame() - .placeNearTarget(); - scene.idle(60); - - Collection> couples = - ImmutableList.of(Couple.create(util.grid.at(3, 3, 2), util.grid.at(3, 2, 2)), - Couple.create(util.grid.at(3, 2, 2), util.grid.at(3, 1, 2)), - Couple.create(util.grid.at(2, 3, 2), util.grid.at(1, 3, 2)), - Couple.create(util.grid.at(3, 1, 2), util.grid.at(2, 1, 2)), - Couple.create(util.grid.at(1, 3, 2), util.grid.at(1, 2, 2)), - Couple.create(util.grid.at(2, 2, 2), util.grid.at(2, 1, 2)), - Couple.create(util.grid.at(1, 2, 2), util.grid.at(1, 1, 2)), - Couple.create(util.grid.at(2, 1, 2), util.grid.at(1, 1, 2)), - Couple.create(util.grid.at(1, 1, 2), util.grid.at(0, 1, 2))); - - for (Couple c : couples) { - scene.idle(5); - Vector3d p1 = util.vector.blockSurface(c.getFirst(), Direction.NORTH) - .add(0, 0, -0.125); - Vector3d p2 = util.vector.blockSurface(c.getSecond(), Direction.NORTH) - .add(0, 0, -0.125); - AxisAlignedBB point = new AxisAlignedBB(p1, p1); - AxisAlignedBB line = new AxisAlignedBB(p1, p2); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, p1, point, 2); - scene.idle(1); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, p1, line, 30); - } - - scene.world.showSection(util.select.position(depotPos), Direction.EAST); - scene.idle(20); - scene.overlay.showText(60) - .text("The outputs will be placed into the inventory at the exit") - .pointAt(util.vector.blockSurface(util.grid.at(0, 1, 2), Direction.NORTH)) - .placeNearTarget(); - scene.idle(70); - - scene.rotateCameraY(60); - scene.idle(20); - scene.world.showSection(kinetics, Direction.NORTH); - scene.overlay.showText(60) - .text("Mechanical Crafters require Rotational Force to operate") - .pointAt(util.vector.blockSurface(util.grid.at(4, 1, 2), Direction.NORTH)) - .attachKeyFrame() - .placeNearTarget(); - scene.idle(8); - scene.world.setKineticSpeed(crafters, -48); - scene.world.multiplyKineticSpeed(util.select.position(3, 2, 2) - .add(util.select.position(2, 3, 2)) - .add(util.select.position(1, 2, 2)) - .add(util.select.position(2, 1, 2)), -1); - scene.idle(55); - scene.rotateCameraY(-60); - - scene.idle(40); - ItemStack planks = new ItemStack(Items.OAK_PLANKS); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(1, 3, 2), Direction.NORTH), Pointing.RIGHT) - .rightClick() - .withItem(planks), - 40); - scene.idle(7); - Class type = MechanicalCrafterTileEntity.class; - scene.world.modifyTileEntity(util.grid.at(1, 3, 2), type, mct -> mct.getInventory() - .insertItem(0, planks.copy(), false)); - - scene.idle(10); - scene.overlay.showText(50) - .text("Right-Click the front to insert Items manually") - .pointAt(util.vector.blockSurface(util.grid.at(1, 3, 2), Direction.NORTH)) - .attachKeyFrame() - .placeNearTarget(); - scene.idle(60); - - ItemStack alloy = AllItems.ANDESITE_ALLOY.asStack(); - ItemStack log = new ItemStack(Items.OAK_LOG); - - scene.world.setCraftingResult(util.grid.at(1, 1, 2), AllBlocks.ANDESITE_CASING.asStack(4)); - - scene.world.modifyTileEntity(util.grid.at(2, 3, 2), type, mct -> mct.getInventory() - .insertItem(0, planks.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(3, 3, 2), type, mct -> mct.getInventory() - .insertItem(0, planks.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(3, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, alloy.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(2, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, log.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(1, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, alloy.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(1, 1, 2), type, mct -> mct.getInventory() - .insertItem(0, planks.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(2, 1, 2), type, mct -> mct.getInventory() - .insertItem(0, planks.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(3, 1, 2), type, mct -> mct.getInventory() - .insertItem(0, planks.copy(), false)); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("Once every slot of a path contains an Item, the crafting process will begin") - .pointAt(util.vector.blockSurface(util.grid.at(1, 3, 2), Direction.WEST)) - .placeNearTarget(); - scene.idle(180); - - scene.world.removeItemsFromBelt(depotPos); - - ItemStack stick = new ItemStack(Items.STICK); - ItemStack iron = new ItemStack(Items.IRON_INGOT); - - scene.world.setCraftingResult(util.grid.at(1, 1, 2), new ItemStack(Items.IRON_PICKAXE)); - - scene.world.modifyTileEntity(util.grid.at(1, 3, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - scene.idle(2); - scene.world.modifyTileEntity(util.grid.at(2, 3, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - scene.idle(2); - scene.world.modifyTileEntity(util.grid.at(3, 3, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - scene.idle(2); - scene.world.modifyTileEntity(util.grid.at(2, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, stick.copy(), false)); - scene.idle(2); - scene.world.modifyTileEntity(util.grid.at(2, 1, 2), type, mct -> mct.getInventory() - .insertItem(0, stick.copy(), false)); - scene.world.showSection(redstone, Direction.SOUTH); - scene.idle(10); - - scene.overlay.showText(90) - .attachKeyFrame() - .colored(PonderPalette.RED) - .text("For recipes not fully occupying the crafter setup, the start can be forced using a Redstone Pulse") - .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.NORTH)) - .placeNearTarget(); - scene.idle(100); - scene.effects.indicateRedstone(util.grid.at(3, 1, 0)); - scene.world.toggleRedstonePower(redstone); - scene.idle(20); - scene.world.toggleRedstonePower(redstone); - } - - public static void connect(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_crafter_connect", "Connecting Inventories of Crafters"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - for (int y = 0; y < 3; y++) { - for (int x = 0; x < 2; x++) { - scene.world.showSection(util.select.position(y == 1 ? x + 1 : 2 - x, y + 1, 2), Direction.DOWN); - scene.idle(2); - } - } - - Class type = MechanicalCrafterTileEntity.class; - BlockPos depotPos = util.grid.at(0, 1, 2); - Selection funnel = util.select.fromTo(4, 1, 5, 4, 1, 2) - .add(util.select.fromTo(3, 2, 2, 3, 1, 2)); - Selection kinetics = util.select.position(3, 3, 2) - .add(util.select.fromTo(3, 3, 3, 3, 1, 3)); - scene.idle(5); - - scene.world.showSection(kinetics, Direction.NORTH); - scene.idle(5); - scene.world.showSection(util.select.position(depotPos), Direction.EAST); - scene.idle(10); - scene.world.showSection(funnel, Direction.WEST); - scene.rotateCameraY(60); - ItemStack planks = new ItemStack(Items.OAK_PLANKS); - scene.world.createItemOnBelt(util.grid.at(4, 1, 2), Direction.EAST, planks.copy()); - scene.idle(22); - - scene.world.modifyTileEntity(util.grid.at(2, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, planks.copy(), false)); - scene.world.removeItemsFromBelt(util.grid.at(3, 1, 2)); - scene.world.flapFunnel(util.grid.at(3, 2, 2), false); - - scene.overlay.showSelectionWithText(util.select.position(2, 2, 2), 70) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(2, 2, 2), Direction.NORTH)) - .text("Items can be inserted to Crafters automatically"); - scene.idle(80); - - scene.rotateCameraY(-60 - 90 - 30); - scene.idle(40); - - Vector3d v = util.vector.blockSurface(util.grid.at(2, 2, 2), Direction.WEST); - AxisAlignedBB bb = new AxisAlignedBB(v, v).grow(.125f, .5, .5); - v = v.add(0, 0, .5); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.WHITE, new Object(), bb, 45); - scene.overlay.showControls(new InputWindowElement(v, Pointing.LEFT).rightClick() - .withWrench(), 40); - scene.idle(7); - scene.world.connectCrafterInvs(util.grid.at(2, 2, 2), util.grid.at(1, 2, 2)); - scene.idle(40); - scene.overlay.showSelectionWithText(util.select.fromTo(2, 2, 2, 1, 2, 2), 70) - .attachKeyFrame() - .placeNearTarget() - .pointAt(v) - .text("Using the Wrench at their backs, Mechanical Crafter inputs can be combined"); - scene.idle(80); - scene.overlay.showControls(new InputWindowElement(v.add(0, 1, 0), Pointing.LEFT).rightClick() - .withWrench(), 20); - scene.idle(7); - scene.world.connectCrafterInvs(util.grid.at(2, 3, 2), util.grid.at(1, 3, 2)); - scene.idle(20); - scene.overlay.showControls(new InputWindowElement(v.add(0, -1, 0), Pointing.LEFT).rightClick() - .withWrench(), 20); - scene.idle(7); - scene.world.connectCrafterInvs(util.grid.at(2, 1, 2), util.grid.at(1, 1, 2)); - scene.idle(20); - scene.overlay.showControls(new InputWindowElement(v.add(.5, -.5, 0), Pointing.LEFT).rightClick() - .withWrench(), 20); - scene.idle(7); - scene.world.connectCrafterInvs(util.grid.at(2, 1, 2), util.grid.at(2, 2, 2)); - scene.idle(10); - scene.overlay.showControls(new InputWindowElement(v.add(.5, .5, 0), Pointing.LEFT).rightClick() - .withWrench(), 20); - scene.idle(7); - scene.world.connectCrafterInvs(util.grid.at(2, 2, 2), util.grid.at(2, 3, 2)); - scene.idle(20); - - scene.rotateCameraY(90 + 30); - scene.idle(40); - scene.overlay.showSelectionWithText(util.select.fromTo(1, 1, 2, 2, 3, 2), 70) - .attachKeyFrame() - .placeNearTarget() - .text("All connected Crafters can now be accessed by the same input location"); - scene.idle(60); - scene.overlay.showControls( - new InputWindowElement(util.vector.centerOf(util.grid.at(4, 2, 2)), Pointing.DOWN).withItem(planks), 40); - scene.idle(7); - scene.world.createItemOnBelt(util.grid.at(4, 1, 2), Direction.EAST, - ItemHandlerHelper.copyStackWithSize(planks, 16)); - scene.idle(22); - - scene.world.removeItemsFromBelt(util.grid.at(3, 1, 2)); - BlockPos[] positions = new BlockPos[] { util.grid.at(2, 3, 2), util.grid.at(1, 3, 2), util.grid.at(1, 2, 2), - util.grid.at(2, 1, 2), util.grid.at(1, 1, 2) }; - - scene.world.setCraftingResult(util.grid.at(1, 1, 2), new ItemStack(Items.OAK_DOOR, 3)); - for (BlockPos pos : positions) { - scene.world.modifyTileEntity(pos, type, mct -> mct.getInventory() - .insertItem(0, planks.copy(), false)); - scene.idle(1); - } - - } - - public static void covers(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_crafter_covers", "Covering slots of Mechanical Crafters"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - scene.world.setBlock(util.grid.at(2, 2, 2), Blocks.AIR.getDefaultState(), false); - - Selection kinetics = util.select.fromTo(3, 1, 2, 3, 1, 5); - scene.world.setKineticSpeed(util.select.fromTo(1, 2, 2, 3, 1, 2), 0); - - scene.world.showSection(util.select.position(3, 2, 2), Direction.EAST); - scene.idle(5); - scene.world.showSection(util.select.position(2, 1, 2), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(1, 2, 2), Direction.WEST); - scene.idle(5); - - ItemStack iron = new ItemStack(Items.IRON_INGOT); - - Class type = MechanicalCrafterTileEntity.class; - scene.world.modifyTileEntity(util.grid.at(3, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(2, 1, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - scene.idle(5); - scene.world.modifyTileEntity(util.grid.at(1, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - scene.idle(5); - - Selection emptyCrafter = util.select.position(2, 2, 2); - scene.overlay.showSelectionWithText(emptyCrafter, 90) - .attachKeyFrame() - .colored(PonderPalette.RED) - .text("Some recipes will require additional Crafters to bridge gaps in the path") - .placeNearTarget(); - scene.idle(70); - scene.world.restoreBlocks(emptyCrafter); - scene.world.setCraftingResult(util.grid.at(2, 2, 2), new ItemStack(Items.BUCKET)); - scene.world.showSection(emptyCrafter, Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(2, 3, 2), Direction.DOWN); - scene.world.showSection(kinetics, Direction.NORTH); - scene.idle(5); - scene.world.setKineticSpeed(util.select.fromTo(3, 1, 2, 1, 2, 2), -32); - scene.world.setKineticSpeed(util.select.position(3, 1, 2) - .add(emptyCrafter), 32); - - scene.idle(20); - - scene.overlay.showText(90) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(util.grid.at(2, 2, 2), Direction.NORTH)) - .text("Using Slot Covers, Crafters can be set to act as an Empty Slot in the arrangement") - .placeNearTarget(); - scene.idle(100); - scene.overlay - .showControls(new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 2, 2), Direction.NORTH) - .add(0.5, 0, 0), Pointing.RIGHT).withItem(AllItems.CRAFTER_SLOT_COVER.asStack()) - .rightClick(), - 50); - scene.idle(7); - scene.world.modifyTileNBT(emptyCrafter, type, compound -> compound.putBoolean("Cover", true)); - scene.idle(130); - - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(util.grid.at(2, 3, 2), Direction.WEST), Pointing.LEFT) - .withItem(new ItemStack(Items.BUCKET)), - 40); - scene.idle(50); - scene.world.showSection(util.select.position(4, 2, 2), Direction.DOWN); - - scene.world.connectCrafterInvs(util.grid.at(3, 2, 2), util.grid.at(2, 2, 2)); - scene.idle(5); - scene.world.connectCrafterInvs(util.grid.at(2, 1, 2), util.grid.at(2, 2, 2)); - scene.idle(5); - scene.world.connectCrafterInvs(util.grid.at(1, 2, 2), util.grid.at(2, 2, 2)); - scene.idle(10); - - scene.overlay.showSelectionWithText(util.select.fromTo(3, 2, 2, 1, 2, 2) - .add(util.select.position(2, 1, 2)), 80) - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(2, 2, 2), Direction.NORTH)) - .text("Shared Inputs created with the Wrench at the back can also reach across covered Crafters") - .placeNearTarget(); - scene.idle(60); - - ElementLink ingot = - scene.world.createItemEntity(util.vector.centerOf(4, 4, 2), util.vector.of(0, 0.2, 0), iron); - scene.idle(17); - scene.world.modifyEntity(ingot, Entity::remove); - scene.world.modifyTileEntity(util.grid.at(3, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - ingot = scene.world.createItemEntity(util.vector.centerOf(4, 4, 2), util.vector.of(0, 0.2, 0), iron); - scene.idle(17); - scene.world.modifyEntity(ingot, Entity::remove); - scene.world.modifyTileEntity(util.grid.at(2, 1, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - ingot = scene.world.createItemEntity(util.vector.centerOf(4, 4, 2), util.vector.of(0, 0.2, 0), iron); - scene.idle(17); - scene.world.modifyEntity(ingot, Entity::remove); - scene.world.modifyTileEntity(util.grid.at(1, 2, 2), type, mct -> mct.getInventory() - .insertItem(0, iron.copy(), false)); - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/DebugScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/DebugScenes.java deleted file mode 100644 index 30199ef5c..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/DebugScenes.java +++ /dev/null @@ -1,437 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel; -import com.simibubi.create.content.contraptions.particle.RotationIndicatorParticleData; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderStoryBoardEntry.PonderStoryBoard; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.DancePose; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FacePointOfInterestPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; -import com.simibubi.create.foundation.utility.Pointing; -import com.tterrag.registrate.util.entry.ItemEntry; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class DebugScenes { - - private static int index; - - public static void registerAll() { - index = 1; - add(DebugScenes::coordinateScene); - add(DebugScenes::blocksScene); - add(DebugScenes::fluidsScene); - add(DebugScenes::offScreenScene); - add(DebugScenes::particleScene); - add(DebugScenes::controlsScene); - add(DebugScenes::birbScene); - add(DebugScenes::sectionsScene); - add(DebugScenes::itemScene); - } - - private static void add(PonderStoryBoard sb) { - ItemEntry item = AllItems.BRASS_HAND; - String schematicPath = "debug/scene_" + index; - PonderRegistry.addStoryBoard(item, schematicPath, sb) - .highlightAllTags() - .chapter(PonderChapter.of("debug")); - index++; - } - - public static void empty(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_empty", "Missing Content"); - scene.showBasePlate(); - scene.idle(5); - } - - public static void coordinateScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_coords", "Coordinate Space"); - scene.showBasePlate(); - scene.idle(10); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - - Selection xAxis = util.select.fromTo(2, 1, 1, 4, 1, 1); - Selection yAxis = util.select.fromTo(1, 2, 1, 1, 4, 1); - Selection zAxis = util.select.fromTo(1, 1, 2, 1, 1, 4); - - scene.idle(10); - scene.overlay.showSelectionWithText(xAxis, 20) - .colored(PonderPalette.RED) - .text("Das X axis"); - scene.idle(20); - scene.overlay.showSelectionWithText(yAxis, 20) - .colored(PonderPalette.GREEN) - .text("Das Y axis"); - scene.idle(20); - scene.overlay.showSelectionWithText(zAxis, 20) - .colored(PonderPalette.BLUE) - .text("Das Z axis"); - } - - public static void blocksScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_blocks", "Changing Blocks"); - scene.showBasePlate(); - scene.idle(10); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - scene.idle(10); - scene.overlay.showText(1000) - .independent(10) - .text("Blocks can be modified"); - scene.idle(20); - scene.world.replaceBlocks(util.select.fromTo(1, 1, 3, 2, 2, 4), - AllBlocks.REFINED_RADIANCE_CASING.getDefaultState(), true); - scene.idle(10); - scene.world.replaceBlocks(util.select.position(3, 1, 1), Blocks.GOLD_BLOCK.getDefaultState(), true); - scene.rotateCameraY(180); - scene.markAsFinished(); - } - - public static void fluidsScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_fluids", "Showing Fluids"); - scene.showBasePlate(); - scene.idle(10); - Vector3d parrotPos = util.vector.topOf(1, 0, 1); - scene.special.createBirb(parrotPos, FacePointOfInterestPose::new); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - scene.overlay.showText(1000) - .text("Fluid rendering test.") - .pointAt(new Vector3d(1, 2.5, 4.5)); - scene.markAsFinished(); - - Object outlineSlot = new Object(); - - Vector3d vec1 = util.vector.topOf(1, 0, 0); - Vector3d vec2 = util.vector.topOf(0, 0, 1); - AxisAlignedBB boundingBox1 = new AxisAlignedBB(vec1, vec1).expand(0, 2.5, 0) - .grow(.15, 0, .15); - AxisAlignedBB boundingBox2 = new AxisAlignedBB(vec2, vec2).expand(0, .125, 0) - .grow(.45, 0, .45); - Vector3d poi1 = boundingBox1.getCenter(); - Vector3d poi2 = boundingBox2.getCenter(); - - for (int i = 0; i < 10; i++) { - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, outlineSlot, - i % 2 == 0 ? boundingBox1 : boundingBox2, 15); - scene.idle(3); - scene.special.movePointOfInterest(i % 2 == 0 ? poi1 : poi2); - scene.idle(12); - } - - scene.idle(12); - scene.special.movePointOfInterest(util.grid.at(-4, 5, 4)); - scene.overlay.showText(40) - .colored(PonderPalette.RED) - .text("wut?") - .pointAt(parrotPos.add(-.25f, 0.25f, .25f)); - - } - - public static void offScreenScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_baseplate", "Out of bounds / configureBasePlate"); - scene.configureBasePlate(1, 0, 6); - scene.showBasePlate(); - - Selection out1 = util.select.fromTo(7, 0, 0, 8, 0, 5); - Selection out2 = util.select.fromTo(0, 0, 0, 0, 0, 5); - Selection blocksExceptBasePlate = util.select.layersFrom(1) - .add(out1) - .add(out2); - - scene.idle(10); - scene.world.showSection(blocksExceptBasePlate, Direction.DOWN); - scene.idle(10); - - scene.overlay.showSelectionWithText(out1, 100) - .colored(PonderPalette.BLACK) - .text("Blocks outside of the base plate do not affect scaling"); - scene.overlay.showSelectionWithText(out2, 100) - .colored(PonderPalette.BLACK) - .text("configureBasePlate() makes sure of that."); - scene.markAsFinished(); - } - - public static void particleScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_particles", "Emitting particles"); - scene.showBasePlate(); - scene.idle(10); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - scene.idle(10); - - Vector3d emitterPos = util.vector.of(2.5, 2.25, 2.5); - Emitter emitter = Emitter.simple(ParticleTypes.LAVA, util.vector.of(0, .1, 0)); - Emitter rotation = - Emitter.simple(new RotationIndicatorParticleData(SpeedLevel.MEDIUM.getColor(), 12, 1, 1, 20, 'Y'), - util.vector.of(0, .1, 0)); - - scene.overlay.showText(20) - .text("Incoming...") - .pointAt(emitterPos); - scene.idle(30); - scene.effects.emitParticles(emitterPos, emitter, 1, 60); - scene.effects.emitParticles(emitterPos, rotation, 20, 1); - scene.idle(30); - scene.rotateCameraY(180); - } - - public static void controlsScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_controls", "Basic player interaction"); - scene.showBasePlate(); - scene.idle(10); - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(4); - scene.world.showSection(util.select.layer(2), Direction.DOWN); - scene.idle(4); - scene.world.showSection(util.select.layer(3), Direction.DOWN); - scene.idle(10); - - BlockPos shaftPos = util.grid.at(3, 1, 1); - Selection shaftSelection = util.select.position(shaftPos); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(shaftPos), Pointing.DOWN).rightClick() - .whileSneaking() - .withWrench(), 40); - scene.idle(20); - scene.world.replaceBlocks(shaftSelection, AllBlocks.SHAFT.getDefaultState(), true); - - scene.idle(20); - scene.world.hideSection(shaftSelection, Direction.UP); - - scene.idle(20); - - scene.overlay.showControls(new InputWindowElement(util.vector.of(1, 4.5, 3.5), Pointing.LEFT).rightClick() - .withItem(new ItemStack(Blocks.POLISHED_ANDESITE)), 20); - scene.world.showSection(util.select.layer(4), Direction.DOWN); - - scene.idle(40); - - BlockPos chassis = util.grid.at(1, 1, 3); - Vector3d chassisSurface = util.vector.blockSurface(chassis, Direction.NORTH); - - Object chassisValueBoxHighlight = new Object(); - Object chassisEffectHighlight = new Object(); - - AxisAlignedBB point = new AxisAlignedBB(chassisSurface, chassisSurface); - AxisAlignedBB expanded = point.grow(1 / 4f, 1 / 4f, 1 / 16f); - - Selection singleBlock = util.select.position(1, 2, 3); - Selection twoBlocks = util.select.fromTo(1, 2, 3, 1, 3, 3); - Selection threeBlocks = util.select.fromTo(1, 2, 3, 1, 4, 3); - - Selection singleRow = util.select.fromTo(1, 2, 3, 3, 2, 3); - Selection twoRows = util.select.fromTo(1, 2, 3, 3, 3, 3); - Selection threeRows = twoRows.copy() - .add(threeBlocks); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, chassisValueBoxHighlight, point, 1); - scene.idle(1); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, chassisValueBoxHighlight, expanded, 120); - scene.overlay.showControls(new InputWindowElement(chassisSurface, Pointing.UP).scroll() - .withWrench(), 40); - - PonderPalette white = PonderPalette.WHITE; - scene.overlay.showOutline(white, chassisEffectHighlight, singleBlock, 10); - scene.idle(10); - scene.overlay.showOutline(white, chassisEffectHighlight, twoBlocks, 10); - scene.idle(10); - scene.overlay.showOutline(white, chassisEffectHighlight, threeBlocks, 10); - scene.idle(10); - scene.overlay.showOutline(white, chassisEffectHighlight, twoBlocks, 10); - scene.idle(10); - scene.overlay.showOutline(white, chassisEffectHighlight, singleBlock, 10); - scene.idle(10); - - scene.idle(30); - scene.overlay.showControls(new InputWindowElement(chassisSurface, Pointing.UP).whileCTRL() - .scroll() - .withWrench(), 40); - - scene.overlay.showOutline(white, chassisEffectHighlight, singleRow, 10); - scene.idle(10); - scene.overlay.showOutline(white, chassisEffectHighlight, twoRows, 10); - scene.idle(10); - scene.overlay.showOutline(white, chassisEffectHighlight, threeRows, 10); - scene.idle(10); - scene.overlay.showOutline(white, chassisEffectHighlight, twoRows, 10); - scene.idle(10); - scene.overlay.showOutline(white, chassisEffectHighlight, singleRow, 10); - scene.idle(10); - - scene.markAsFinished(); - } - - public static void birbScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_birbs", "Birbs"); - scene.showBasePlate(); - scene.idle(10); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - scene.idle(10); - - BlockPos pos = new BlockPos(1, 2, 3); - scene.special.birbOnSpinnyShaft(pos); - scene.overlay.showText(100) - .colored(PonderPalette.GREEN) - .text("More birbs = More interesting") - .pointAt(util.vector.topOf(pos)); - - scene.idle(10); - scene.special.createBirb(util.vector.topOf(0, 1, 2), DancePose::new); - scene.idle(10); - - scene.special.createBirb(util.vector.centerOf(3, 1, 3) - .add(0, 0.25f, 0), FacePointOfInterestPose::new); - scene.idle(20); - - BlockPos poi1 = util.grid.at(4, 1, 0); - BlockPos poi2 = util.grid.at(0, 1, 4); - - scene.world.setBlock(poi1, Blocks.GOLD_BLOCK.getDefaultState(), true); - scene.special.movePointOfInterest(poi1); - scene.idle(20); - - scene.world.setBlock(poi2, Blocks.GOLD_BLOCK.getDefaultState(), true); - scene.special.movePointOfInterest(poi2); - scene.overlay.showText(20) - .text("Point of Interest") - .pointAt(util.vector.centerOf(poi2)); - scene.idle(20); - - scene.world.destroyBlock(poi1); - scene.special.movePointOfInterest(poi1); - scene.idle(20); - - scene.world.destroyBlock(poi2); - scene.special.movePointOfInterest(poi2); - } - - public static void sectionsScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_sections", "Sections"); - scene.showBasePlate(); - scene.idle(10); - scene.rotateCameraY(95); - - BlockPos mergePos = util.grid.at(1, 1, 1); - BlockPos independentPos = util.grid.at(3, 1, 1); - Selection toMerge = util.select.position(mergePos); - Selection independent = util.select.position(independentPos); - Selection start = util.select.layersFrom(1) - .substract(toMerge) - .substract(independent); - - scene.world.showSection(start, Direction.DOWN); - scene.idle(20); - - scene.world.showSection(toMerge, Direction.DOWN); - ElementLink link = scene.world.showIndependentSection(independent, Direction.DOWN); - - scene.idle(20); - - scene.overlay.showText(40) - .colored(PonderPalette.GREEN) - .text("This Section got merged to base.") - .pointAt(util.vector.topOf(mergePos)); - scene.idle(10); - scene.overlay.showText(40) - .colored(PonderPalette.RED) - .text("This Section renders independently.") - .pointAt(util.vector.topOf(independentPos)); - - scene.idle(40); - - scene.world.hideIndependentSection(link, Direction.DOWN); - scene.world.hideSection(util.select.fromTo(mergePos, util.grid.at(1, 1, 4)), Direction.DOWN); - - scene.idle(20); - - Selection hiddenReplaceArea = util.select.fromTo(2, 1, 2, 4, 1, 4) - .substract(util.select.position(4, 1, 3)) - .substract(util.select.position(2, 1, 3)); - - scene.world.hideSection(hiddenReplaceArea, Direction.UP); - scene.idle(20); - scene.world.setBlocks(hiddenReplaceArea, AllBlocks.REFINED_RADIANCE_CASING.getDefaultState(), false); - scene.world.showSection(hiddenReplaceArea, Direction.DOWN); - scene.idle(20); - scene.overlay.showSelectionWithText(hiddenReplaceArea, 30) - .colored(PonderPalette.BLUE) - .text("Seamless substitution of blocks"); - - scene.idle(40); - - ElementLink helicopter = scene.world.makeSectionIndependent(hiddenReplaceArea); - scene.world.rotateSection(helicopter, 50, 5 * 360, 0, 60); - scene.world.moveSection(helicopter, util.vector.of(0, 4, 5), 50); - scene.overlay.showText(30) - .colored(PonderPalette.BLUE) - .text("Up, up and away.") - .independent(30); - - scene.idle(40); - scene.world.hideIndependentSection(helicopter, Direction.UP); - - } - - public static void itemScene(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("debug_items", "Manipulating Items"); - scene.configureBasePlate(0, 0, 6); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - - ItemStack brassItem = AllItems.BRASS_INGOT.asStack(); - ItemStack copperItem = AllItems.COPPER_INGOT.asStack(); - - for (int z = 4; z >= 2; z--) { - scene.world.createItemEntity(util.vector.centerOf(0, 4, z), Vector3d.ZERO, brassItem.copy()); - scene.idle(10); - } - - BlockPos beltPos = util.grid.at(2, 1, 3); - ElementLink itemOnBelt = - scene.world.createItemOnBelt(beltPos, Direction.EAST, copperItem.copy()); - - scene.idle(10); - scene.world.stallBeltItem(itemOnBelt, true); - scene.idle(5); - scene.overlay.showText(40) - .colored(PonderPalette.FAST) - .text("Belt Items can only be force-stalled on the belt they were created on.") - .pointAt(util.vector.topOf(2, 1, 2)); - scene.idle(45); - scene.world.stallBeltItem(itemOnBelt, false); - scene.idle(20); - - scene.world.modifyEntities(ItemEntity.class, entity -> { - if (copperItem.isItemEqual(entity.getItem())) - entity.setNoGravity(true); - }); - - scene.idle(20); - - scene.world.modifyEntities(ItemEntity.class, entity -> { - if (brassItem.isItemEqual(entity.getItem())) - entity.setMotion(util.vector.of(-.15f, .5f, 0)); - }); - - scene.idle(27); - - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java deleted file mode 100644 index 49af64c7c..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/DeployerScenes.java +++ /dev/null @@ -1,460 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.passive.SheepEntity; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.particles.BlockParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class DeployerScenes { - - public static void filter(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("deployer", "Using the Deployer"); - scene.configureBasePlate(0, 0, 5); - - BlockPos potPosition = util.grid.at(1, 1, 2); - BlockPos deployerPos = util.grid.at(3, 1, 2); - Selection deployerSelection = util.select.position(deployerPos); - - scene.world.setBlock(potPosition, Blocks.AIR.getDefaultState(), false); - scene.world.showSection(util.select.layer(0) - .add(util.select.position(1, 1, 2)), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 3, 3, 1, 5), Direction.DOWN); - scene.idle(10); - - scene.world.showSection(deployerSelection, Direction.SOUTH); - scene.idle(10); - - scene.overlay.showText(60) - .placeNearTarget() - .pointAt(util.vector.topOf(deployerPos)) - .text("Given Rotational Force, a Deployer can imitate player interactions"); - scene.world.moveDeployer(deployerPos, 1, 25); - scene.idle(26); - scene.world.moveDeployer(deployerPos, -1, 25); - scene.idle(44); - - scene.overlay.showSelectionWithText(util.select.position(deployerPos.west(2)), 60) - .text("It will always interact with the position 2 blocks in front of itself") - .attachKeyFrame() - .placeNearTarget() - .colored(PonderPalette.GREEN) - .attachKeyFrame(); - scene.world.moveDeployer(deployerPos, 1, 25); - scene.idle(26); - scene.world.moveDeployer(deployerPos, -1, 25); - scene.idle(20); - scene.world.showSection(util.select.fromTo(2, 1, 3, 2, 1, 1), Direction.DOWN); - scene.idle(24); - - scene.overlay.showText(50) - .pointAt(util.vector.topOf(deployerPos.west())) - .text("Blocks directly in front will not obstruct it") - .placeNearTarget(); - scene.world.moveDeployer(deployerPos, 1, 25); - scene.idle(26); - scene.world.moveDeployer(deployerPos, -1, 25); - scene.idle(34); - scene.world.hideSection(util.select.fromTo(2, 1, 3, 2, 1, 1), Direction.UP); - scene.idle(20); - - String[] actions = - new String[] { "Place Blocks,", "Use Items,", "Activate Blocks,", "Harvest blocks", "and Attack Mobs" }; - - scene.overlay.showText(80) - .attachKeyFrame() - .independent(40) - .placeNearTarget() - .text("Deployers can:"); - - int y = 60; - for (String s : actions) { - scene.idle(15); - scene.overlay.showText(50) - .colored(PonderPalette.MEDIUM) - .placeNearTarget() - .independent(y) - .text(s); - y += 16; - } - scene.idle(50); - - ItemStack pot = new ItemStack(Items.FLOWER_POT); - Vector3d frontVec = util.vector.blockSurface(deployerPos, Direction.WEST) - .add(-.125, 0, 0); - - scene.overlay.showControls(new InputWindowElement(frontVec, Pointing.DOWN).rightClick() - .withItem(pot), 40); - scene.idle(7); - Class teType = DeployerTileEntity.class; - scene.world.modifyTileNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", pot.serializeNBT())); - scene.idle(10); - - scene.overlay.showText(40) - .attachKeyFrame() - .placeNearTarget() - .pointAt(frontVec) - .text("Right-click the front to give it an Item to use"); - scene.idle(40); - scene.world.moveDeployer(deployerPos, 1, 25); - scene.idle(26); - scene.world.restoreBlocks(util.select.position(potPosition)); - scene.world.modifyTileNBT(deployerSelection, teType, - nbt -> nbt.put("HeldItem", ItemStack.EMPTY.serializeNBT())); - scene.world.moveDeployer(deployerPos, -1, 25); - scene.idle(20); - - scene.world.showSection(util.select.position(deployerPos.up()), Direction.DOWN); - - ItemStack tulip = new ItemStack(Items.RED_TULIP); - Vector3d entitySpawn = util.vector.topOf(deployerPos.up(3)); - - ElementLink entity1 = - scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), tulip); - scene.idle(17); - scene.world.modifyEntity(entity1, Entity::remove); - scene.world.modifyTileNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", tulip.serializeNBT())); - scene.idle(10); - scene.overlay.showText(40) - .placeNearTarget() - .pointAt(util.vector.of(3, 2.5, 3)) - .text("Items can also be inserted automatically"); - scene.idle(30); - scene.world.moveDeployer(deployerPos, 1, 25); - scene.idle(26); - scene.world.setBlock(potPosition, Blocks.POTTED_RED_TULIP.getDefaultState(), false); - scene.world.modifyTileNBT(deployerSelection, teType, - nbt -> nbt.put("HeldItem", ItemStack.EMPTY.serializeNBT())); - scene.world.moveDeployer(deployerPos, -1, 25); - scene.idle(25); - scene.world.hideSection(util.select.position(potPosition), Direction.UP); - scene.world.hideSection(util.select.position(deployerPos.up()), Direction.EAST); - scene.idle(20); - - Vector3d filterSlot = frontVec.add(0.375, 0.25, 0); - scene.overlay.showFilterSlotInput(filterSlot, 80); - scene.overlay.showText(40) - .attachKeyFrame() - .placeNearTarget() - .pointAt(filterSlot) - .text("Deployers carry a filter slot"); - scene.idle(50); - - ItemStack shears = new ItemStack(Items.SHEARS); - - scene.overlay.showControls(new InputWindowElement(filterSlot, Pointing.DOWN).rightClick() - .withItem(shears), 40); - scene.idle(7); - scene.world.setFilterData(deployerSelection, teType, shears); - scene.overlay.showText(60) - .placeNearTarget() - .pointAt(filterSlot) - .text("When a filter is set, it activates only while holding a matching item"); - scene.idle(70); - - ElementLink sheep = scene.world.createEntity(w -> { - SheepEntity entity = EntityType.SHEEP.create(w); - entity.setFleeceColor(DyeColor.PINK); - Vector3d p = util.vector.topOf(util.grid.at(1, 0, 2)); - entity.setPosition(p.x, p.y, p.z); - entity.prevPosX = p.x; - entity.prevPosY = p.y; - entity.prevPosZ = p.z; - entity.limbSwing = 0; - entity.prevRotationYaw = 210; - entity.rotationYaw = 210; - entity.prevRotationYawHead = 210; - entity.rotationYawHead = 210; - return entity; - }); - scene.idle(20); - scene.world.showSection(util.select.position(deployerPos.up()), Direction.WEST); - entity1 = scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), shears); - scene.idle(17); - scene.world.modifyEntity(entity1, Entity::remove); - scene.world.modifyTileNBT(deployerSelection, teType, nbt -> nbt.put("HeldItem", shears.serializeNBT())); - scene.idle(10); - - scene.overlay.showText(60) - .placeNearTarget() - .pointAt(util.vector.of(3, 2.5, 3)) - .text("Only items matching the filter can now be inserted..."); - - scene.idle(70); - scene.world.moveDeployer(deployerPos, 1, 25); - scene.idle(26); - scene.world.modifyEntity(sheep, e -> ((SheepEntity) e).setSheared(true)); - scene.effects.emitParticles(util.vector.topOf(deployerPos.west(2)) - .add(0, -.25, 0), - Emitter.withinBlockSpace(new BlockParticleData(ParticleTypes.BLOCK, Blocks.PINK_WOOL.getDefaultState()), - util.vector.of(0, 0, 0)), - 25, 1); - scene.world.moveDeployer(deployerPos, -1, 25); - scene.world.showSection(util.select.position(deployerPos.north()), Direction.SOUTH); - scene.idle(25); - - scene.overlay.showText(80) - .placeNearTarget() - .pointAt(util.vector.of(3.5, 1.25, 1.25)) - .text("...and only non-matching items will be extracted"); - scene.world.flapFunnel(deployerPos.north(), true); - scene.world.createItemEntity(util.vector.centerOf(deployerPos.north()) - .subtract(0, .45, 0), util.vector.of(0, 0, -0.1), new ItemStack(Items.PINK_WOOL)); - - scene.markAsFinished(); - for (int i = 0; i < 10; i++) { - scene.idle(26); - scene.world.moveDeployer(deployerPos, 1, 25); - scene.idle(26); - scene.world.moveDeployer(deployerPos, -1, 25); - scene.idle(26); - } - } - - public static void modes(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("deployer_modes", "Modes of the Deployer"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 3, 3, 1, 5), Direction.DOWN); - scene.idle(10); - - BlockPos deployerPos = util.grid.at(3, 1, 2); - Vector3d frontVec = util.vector.blockSurface(deployerPos, Direction.WEST) - .add(-.125, 0, 0); - Selection grassBlock = util.select.position(1, 1, 2); - - Selection deployerSelection = util.select.position(deployerPos); - scene.world.showSection(deployerSelection, Direction.DOWN); - scene.idle(10); - scene.world.showSection(grassBlock, Direction.DOWN); - scene.idle(10); - - ItemStack tool = new ItemStack(Items.GOLDEN_HOE); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(deployerPos), Pointing.DOWN).withItem(tool), - 30); - scene.idle(7); - scene.world.modifyTileNBT(deployerSelection, DeployerTileEntity.class, - nbt -> nbt.put("HeldItem", tool.serializeNBT())); - scene.idle(45); - - scene.world.setKineticSpeed(util.select.position(2, 0, 5), 16); - scene.world.setKineticSpeed(util.select.layer(1), -32); - scene.world.moveDeployer(deployerPos, 1, 25); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.topOf(1, 1, 2)) - .text("By default, a Deployer imitates a Right-click interaction"); - - scene.idle(26); - scene.world.replaceBlocks(grassBlock, Blocks.FARMLAND.getDefaultState(), false); - scene.world.moveDeployer(deployerPos, -1, 25); - scene.idle(46); - - scene.overlay.showControls(new InputWindowElement(frontVec, Pointing.LEFT).rightClick() - .withWrench(), 40); - scene.idle(7); - scene.world.modifyTileNBT(deployerSelection, DeployerTileEntity.class, nbt -> nbt.putString("Mode", "PUNCH")); - scene.idle(45); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.topOf(1, 1, 2)) - .text("Using a Wrench, it can be set to imitate a Left-click instead"); - - BlockPos breakingPos = deployerPos.west(2); - for (int i = 0; i < 4; i++) { - scene.idle(26); - scene.world.moveDeployer(deployerPos, 1, 25); - scene.idle(26); - scene.world.incrementBlockBreakingProgress(breakingPos); - scene.world.incrementBlockBreakingProgress(breakingPos); - scene.world.incrementBlockBreakingProgress(breakingPos); - scene.world.moveDeployer(deployerPos, -1, 25); - if (i == 3) - scene.world.createItemEntity(util.vector.centerOf(breakingPos), util.vector.of(0, 0, 0), - new ItemStack(Blocks.DIRT)); - scene.idle(26); - - if (i == 0) - scene.markAsFinished(); - } - } - - public static void redstone(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("deployer_redstone", "Controlling Deployers with Redstone"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 5, 3, 1, 3), Direction.DOWN); - - BlockPos deployerPos = util.grid.at(3, 1, 3); - Selection redstone = util.select.fromTo(3, 1, 1, 3, 1, 2); - BlockPos leverPos = util.grid.at(3, 1, 1); - - scene.world.toggleRedstonePower(redstone); - - scene.idle(26); - scene.world.moveDeployer(deployerPos, 1, 30); - scene.idle(31); - scene.world.moveDeployer(deployerPos, -1, 30); - scene.world.showSection(redstone, Direction.SOUTH); - scene.idle(31); - - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(leverPos); - scene.idle(10); - - scene.overlay.showText(60) - .colored(PonderPalette.RED) - .attachKeyFrame() - .pointAt(util.vector.topOf(deployerPos)) - .placeNearTarget() - .text("When powered by Redstone, Deployers will not activate"); - scene.idle(70); - - scene.world.toggleRedstonePower(redstone); - scene.idle(10); - scene.world.moveDeployer(deployerPos, 1f, 30); - scene.idle(10); - - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(leverPos); - scene.idle(21); - - scene.overlay.showText(60) - .pointAt(util.vector.topOf(deployerPos)) - .placeNearTarget() - .text("Before stopping, the Deployer will finish any started cycles"); - - scene.world.moveDeployer(deployerPos, -1f, 30); - scene.idle(70); - - scene.world.toggleRedstonePower(redstone); - scene.idle(3); - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(leverPos); - scene.world.moveDeployer(deployerPos, 1, 30); - scene.overlay.showText(100) - .colored(PonderPalette.GREEN) - .attachKeyFrame() - .pointAt(util.vector.topOf(deployerPos)) - .placeNearTarget() - .text("Thus, a negative pulse can be used to trigger exactly one activation cycle"); - scene.idle(31); - scene.world.moveDeployer(deployerPos, -1, 30); - - } - - public static void contraption(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("deployer_contraption", "Using Deployers on Contraptions"); - scene.configureBasePlate(0, 0, 6); - scene.scaleSceneView(.9f); - Selection flowers = util.select.fromTo(4, 1, 1, 1, 1, 1); - scene.world.replaceBlocks(flowers, Blocks.AIR.getDefaultState(), false); - - Selection kinetics = util.select.fromTo(5, 1, 6, 5, 1, 3); - BlockPos deployerPos = util.grid.at(4, 1, 3); - Selection deployerSelection = util.select.position(deployerPos); - - scene.world.showSection(util.select.layer(0) - .add(flowers), Direction.UP); - scene.idle(5); - - ElementLink pistonHead = - scene.world.showIndependentSection(util.select.fromTo(5, 1, 2, 8, 1, 2), Direction.DOWN); - scene.world.moveSection(pistonHead, util.vector.of(0, 0, 1), 0); - scene.world.showSection(kinetics, Direction.DOWN); - scene.idle(5); - - ElementLink contraption = - scene.world.showIndependentSection(deployerSelection, Direction.DOWN); - scene.idle(5); - scene.world.glueBlockOnto(util.grid.at(4, 2, 3), Direction.DOWN, contraption); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(deployerPos, Direction.WEST)) - .text("Whenever Deployers are moved as part of an animated Contraption..."); - scene.idle(70); - - scene.world.setKineticSpeed(util.select.position(4, 0, 6), -8); - scene.world.setKineticSpeed(kinetics, 16); - scene.world.moveSection(pistonHead, util.vector.of(-3, 0, 0), 100); - scene.world.moveSection(contraption, util.vector.of(-3, 0, 0), 100); - - for (int x = 0; x < 4; x++) { - scene.world.moveDeployer(deployerPos, 1, 9); - scene.idle(10); - scene.world.moveDeployer(deployerPos, -1, 9); - scene.world.restoreBlocks(util.select.position(4 - x, 1, 1)); - scene.idle(18); - } - - scene.overlay.showSelectionWithText(flowers, 90) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .text("They activate at each visited location, using items from inventories anywhere on the contraption"); - scene.idle(100); - - scene.world.hideSection(flowers, Direction.UP); - scene.idle(15); - scene.world.replaceBlocks(flowers, Blocks.AIR.getDefaultState(), false); - scene.world.showSection(flowers, Direction.UP); - - Vector3d frontVec = util.vector.blockSurface(deployerPos.west(3), Direction.NORTH) - .add(0, 0, -.125); - Vector3d filterSlot = frontVec.add(0, 0.25, 0.375); - scene.overlay.showFilterSlotInput(filterSlot, 80); - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(filterSlot) - .text("The Filter slot can be used to specify which items to pull"); - scene.idle(70); - - ItemStack poppy = new ItemStack(Items.POPPY); - scene.overlay.showControls(new InputWindowElement(filterSlot, Pointing.DOWN).withItem(poppy), 30); - scene.idle(7); - scene.world.setFilterData(deployerSelection, DeployerTileEntity.class, poppy); - scene.idle(25); - - scene.world.setKineticSpeed(util.select.position(4, 0, 6), 8); - scene.world.setKineticSpeed(kinetics, -16); - scene.world.moveSection(pistonHead, util.vector.of(3, 0, 0), 100); - scene.world.moveSection(contraption, util.vector.of(3, 0, 0), 100); - - for (int x = 0; x < 4; x++) { - scene.world.moveDeployer(deployerPos, 1, 9); - scene.idle(10); - scene.world.moveDeployer(deployerPos, -1, 9); - scene.world.setBlock(util.grid.at(1 + x, 1, 1), Blocks.POPPY.getDefaultState(), false); - scene.idle(18); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/EjectorScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/EjectorScenes.java deleted file mode 100644 index 4b31f95fb..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/EjectorScenes.java +++ /dev/null @@ -1,373 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.logistics.block.depot.EjectorTileEntity; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.items.ItemHandlerHelper; - -public class EjectorScenes { - - public static void ejector(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("weighted_ejector", "Using Weighted Ejectors"); - scene.configureBasePlate(0, 0, 5); - scene.showBasePlate(); - - BlockPos ejectorPos = util.grid.at(4, 1, 2); - Selection ejectorS = util.select.position(ejectorPos); - BlockPos targetPos = util.grid.at(0, 1, 2); - Selection targetS = util.select.position(targetPos); - - scene.world.setBlock(targetPos, AllBlocks.ANDESITE_CASING.getDefaultState(), false); - scene.idle(5); - scene.world.showSection(targetS, Direction.DOWN); - - scene.idle(10); - ItemStack asStack = AllBlocks.WEIGHTED_EJECTOR.asStack(); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(targetPos), Pointing.DOWN).rightClick() - .whileSneaking() - .withItem(asStack), 50); - scene.idle(7); - Object slot = new Object(); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, slot, new AxisAlignedBB(targetPos), 160); - - scene.overlay.showText(70) - .attachKeyFrame() - .colored(PonderPalette.OUTPUT) - .text("Sneak and Right-Click holding an Ejector to select its target location") - .pointAt(util.vector.blockSurface(targetPos, Direction.WEST)) - .placeNearTarget(); - scene.idle(80); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(ejectorPos), Pointing.DOWN).rightClick() - .withItem(asStack), 50); - scene.idle(7); - scene.world.setKineticSpeed(ejectorS, 0); - scene.world.modifyTileNBT(ejectorS, EjectorTileEntity.class, nbt -> { - NBTHelper.writeEnum(nbt, "State", EjectorTileEntity.State.RETRACTING); - nbt.putFloat("ForceAngle", 1); - }); - scene.world.showSection(ejectorS, Direction.DOWN); - scene.idle(10); - - scene.overlay.showText(60) - .colored(PonderPalette.OUTPUT) - .text("The placed ejector will now launch objects to the marked location") - .pointAt(util.vector.blockSurface(ejectorPos, Direction.WEST)) - .placeNearTarget(); - scene.idle(70); - - slot = new Object(); - AxisAlignedBB bb = new AxisAlignedBB(ejectorPos.west()); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.OUTPUT, slot, bb, 20); - scene.idle(10); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, slot, bb.expand(-15, 15, 0), 100); - scene.idle(10); - - scene.overlay.showText(60) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .text("A valid target can be at any height or distance within range") - .pointAt(util.vector.blockSurface(targetPos, Direction.WEST)) - .placeNearTarget(); - scene.idle(70); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, new Object(), bb.offset(-2, 0, -1), 60); - scene.idle(10); - scene.overlay.showText(50) - .colored(PonderPalette.RED) - .text("They cannot however be off to a side") - .pointAt(util.vector.blockSurface(targetPos.north() - .east(), Direction.WEST)) - .placeNearTarget(); - scene.idle(70); - scene.overlay.showSelectionWithText(util.select.position(ejectorPos.west()), 70) - .colored(PonderPalette.OUTPUT) - .text("If no valid Target was selected, it will simply target the block directly in front") - .placeNearTarget(); - scene.idle(80); - - scene.world.showSection(util.select.position(3, 0, 5), Direction.UP); - scene.world.showSection(util.select.fromTo(4, 1, 5, 4, 1, 3), Direction.DOWN); - scene.idle(12); - scene.world.setKineticSpeed(ejectorS, 32); - scene.idle(10); - scene.overlay.showText(50) - .attachKeyFrame() - .text("Supply Rotational Force in order to charge it up") - .pointAt(util.vector.topOf(4, 1, 3)) - .placeNearTarget(); - scene.idle(60); - - ItemStack copperBlock = AllBlocks.COPPER_BLOCK.asStack(); - ItemStack copperIngot = AllItems.COPPER_INGOT.asStack(); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(ejectorPos) - .add(0.5, 0, 0), Pointing.RIGHT).withItem(copperBlock), 30); - scene.idle(7); - scene.world.createItemOnBeltLike(ejectorPos, Direction.NORTH, copperBlock); - scene.idle(20); - scene.overlay.showText(50) - .text("Items placed on the ejector cause it to trigger") - .pointAt(util.vector.topOf(ejectorPos)) - .placeNearTarget(); - scene.idle(60); - - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.hideSection(targetS, Direction.SOUTH); - scene.idle(15); - scene.world.restoreBlocks(targetS); - scene.world.showSection(targetS, Direction.SOUTH); - scene.idle(10); - scene.world.createItemOnBeltLike(targetPos, Direction.SOUTH, copperIngot); - scene.idle(20); - scene.world.createItemOnBeltLike(ejectorPos, Direction.SOUTH, copperBlock); - scene.overlay.showText(60) - .attachKeyFrame() - .text("If Inventories are targeted, the ejector will wait until there is space") - .pointAt(util.vector.topOf(targetPos)) - .placeNearTarget(); - scene.idle(70); - scene.effects.indicateSuccess(targetPos); - scene.world.removeItemsFromBelt(targetPos); - scene.idle(40); - scene.world.hideSection(targetS, Direction.NORTH); - scene.idle(15); - scene.world.setBlock(targetPos, AllBlocks.ANDESITE_CASING.getDefaultState(), false); - scene.world.showSection(targetS, Direction.NORTH); - - Vector3d input = util.vector.of(4.8, 1 + 12 / 16f, 2.5); - Vector3d topOfSlot = input.add(0, 2 / 16f, 0); - scene.overlay.showControls(new InputWindowElement(topOfSlot, Pointing.DOWN).scroll() - .withWrench(), 60); - scene.overlay.showFilterSlotInput(input, 80); - scene.idle(10); - scene.overlay.showText(80) - .attachKeyFrame() - .text("Using the Wrench, a required Stack Size can be configured") - .pointAt(topOfSlot) - .placeNearTarget(); - scene.world.modifyTileNBT(ejectorS, EjectorTileEntity.class, nbt -> { - nbt.putInt("ScrollValue", 10); - }); - scene.idle(90); - - scene.world.showSection(util.select.fromTo(5, 1, 0, 4, 1, 1), Direction.DOWN); - scene.world.showSection(util.select.position(5, 0, 1), Direction.UP); - scene.idle(15); - - BlockPos beltPos = util.grid.at(4, 1, 0); - scene.world.createItemOnBeltLike(beltPos, Direction.UP, copperBlock); - scene.overlay.showText(100) - .text("It is now limited to this stack size, and only activates when its held stack reaches this amount") - .pointAt(util.vector.topOf(ejectorPos)) - .placeNearTarget(); - for (int i = 0; i < 4; i++) { - scene.idle(20); - scene.world.createItemOnBeltLike(beltPos, Direction.UP, copperBlock); - } - scene.idle(20); - scene.world.createItemOnBeltLike(beltPos, Direction.UP, ItemHandlerHelper.copyStackWithSize(copperBlock, 15)); - scene.idle(80); - - scene.world.hideSection(util.select.fromTo(5, 1, 0, 4, 1, 1), Direction.UP); - scene.world.hideSection(util.select.position(5, 0, 1), Direction.DOWN); - scene.idle(30); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - - scene.addKeyframe(); - ElementLink birb = scene.special.createBirb(util.vector.topOf(ejectorPos) - .add(0, -3 / 16f, 0), ParrotElement.FlappyPose::new); - scene.idle(15); - scene.world.modifyTileEntity(ejectorPos, EjectorTileEntity.class, ejector -> ejector.activateDeferred()); - scene.special.moveParrot(birb, util.vector.of(-2, 3, 0), 5); - scene.special.rotateParrot(birb, 0, 360 * 2, 0, 21); - scene.idle(5); - scene.special.moveParrot(birb, util.vector.of(-1, 0, 0), 3); - scene.idle(3); - scene.special.moveParrot(birb, util.vector.of(-0.75, -1, 0), 6); - scene.idle(6); - scene.special.moveParrot(birb, util.vector.of(-0.25, -2 + 3 / 16f, 0), 12); - scene.idle(15); - scene.special.changeBirbPose(birb, ParrotElement.FaceCursorPose::new); - scene.overlay.showText(80) - .text("Other Entities will always trigger an Ejector when stepping on it") - .pointAt(util.vector.topOf(targetPos)) - .placeNearTarget(); - - } - - public static void splitY(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("weighted_ejector_tunnel", "Splitting item stacks using Weighted Ejectors"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 5, 0, 1, 3), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(2, 2, 3), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(2, 1, 2), Direction.SOUTH); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 2, 3, 1, 1), Direction.SOUTH); - scene.world.showSection(util.select.fromTo(2, 1, 1, 2, 1, 0), Direction.SOUTH); - scene.idle(10); - - BlockPos ejectorPos = util.grid.at(2, 1, 2); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("Combined with Brass Tunnels, Ejectors can split item stacks by specific amounts") - .pointAt(util.vector.topOf(ejectorPos)) - .placeNearTarget(); - scene.idle(90); - - BlockPos tunnel = util.grid.at(2, 2, 3); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(tunnel), Pointing.DOWN).scroll() - .withWrench(), 70); - scene.idle(10); - scene.overlay.showControls( - new InputWindowElement(util.vector.topOf(tunnel), Pointing.UP).showing(AllIcons.I_TUNNEL_PREFER_NEAREST), - 60); - scene.overlay.showCenteredScrollInput(tunnel, Direction.UP, 100); - scene.idle(10); - scene.overlay.showText(100) - .attachKeyFrame() - .colored(PonderPalette.BLUE) - .text("First, configure the Brass Tunnel to 'Prefer Nearest', in order to prioritize its side output") - .pointAt(util.vector.topOf(tunnel)) - .placeNearTarget(); - scene.idle(110); - - Vector3d input = util.vector.of(2.5, 1 + 12 / 16f, 2.8); - Vector3d topOfSlot = input.add(0, 2 / 16f, 0); - scene.overlay.showControls(new InputWindowElement(topOfSlot, Pointing.DOWN).scroll() - .withWrench(), 60); - scene.overlay.showFilterSlotInput(input, 80); - scene.idle(10); - scene.overlay.showText(80) - .attachKeyFrame() - .text("The Stack Size set on the Ejector now determines the amount to be split off") - .pointAt(topOfSlot) - .placeNearTarget(); - scene.world.modifyTileNBT(util.select.position(2, 1, 2), EjectorTileEntity.class, nbt -> { - nbt.putInt("ScrollValue", 10); - }); - scene.idle(90); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(util.grid.at(4, 1, 3)), Pointing.DOWN) - .withItem(AllItems.COPPER_INGOT.asStack()), 20); - scene.idle(7); - scene.world.createItemOnBelt(util.grid.at(4, 1, 3), Direction.UP, AllItems.COPPER_INGOT.asStack(64)); - scene.idle(40); - scene.world.multiplyKineticSpeed(util.select.everywhere(), 1 / 16f); - scene.overlay.showText(80) - .attachKeyFrame() - .text("While a new stack of the configured size exits the side output...") - .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 1), Direction.WEST)) - .placeNearTarget(); - scene.idle(90); - scene.overlay.showText(80) - .text("...the remainder will continue on its path") - .pointAt(util.vector.blockSurface(util.grid.at(0, 1, 3), Direction.UP)) - .placeNearTarget(); - scene.idle(90); - scene.world.multiplyKineticSpeed(util.select.everywhere(), 16f); - } - - public static void redstone(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("weighted_ejector_redstone", "Controlling Weighted Ejectors with Redstone"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 3, 4, 1, 5), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.fromTo(0, 1, 2, 0, 2, 2), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(4, 1, 2), Direction.SOUTH); - scene.idle(5); - Selection redstone = util.select.fromTo(3, 1, 2, 2, 1, 2); - scene.world.showSection(redstone, Direction.EAST); - - BlockPos ejectorPos = util.grid.at(4, 1, 2); - Vector3d topOf = util.vector.topOf(ejectorPos.up(2)); - ItemStack copper = AllItems.COPPER_INGOT.asStack(); - - for (int i = 0; i < 3; i++) { - scene.world.createItemEntity(topOf, util.vector.of(0, 0.1, 0), copper); - scene.idle(12); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.createItemOnBeltLike(ejectorPos, Direction.UP, copper); - scene.idle(20); - if (i == 1) { - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(util.grid.at(2, 1, 2)); - scene.world.modifyTileNBT(util.select.position(4, 1, 2), EjectorTileEntity.class, - nbt -> nbt.putBoolean("Powered", true)); - } - } - - scene.idle(10); - scene.overlay.showText(60) - .colored(PonderPalette.RED) - .attachKeyFrame() - .pointAt(util.vector.topOf(ejectorPos)) - .placeNearTarget() - .text("When powered by Redstone, Ejectors will not activate"); - scene.idle(70); - - scene.world.toggleRedstonePower(redstone); - scene.idle(2); - scene.world.modifyTileNBT(util.select.position(4, 1, 2), EjectorTileEntity.class, - nbt -> nbt.putBoolean("Powered", false)); - scene.idle(5); - scene.world.hideSection(redstone, Direction.WEST); - scene.idle(10); - ElementLink observer = - scene.world.showIndependentSection(util.select.position(4, 1, 1), Direction.SOUTH); - scene.world.moveSection(observer, util.vector.of(0.5, 1.5, -0.5), 0); - scene.world.rotateSection(observer, 0, 30 - 180, 0, 0); - scene.idle(20); - scene.world.moveSection(observer, util.vector.of(-0.5, -1.5, 0.5), 10); - scene.world.rotateSection(observer, 0, -30 + 180, 0, 10); - scene.world.showSection(util.select.position(4, 1, 0), Direction.SOUTH); - - Selection observerRedstone = util.select.fromTo(4, 1, 1, 4, 1, 0); - for (int i = 0; i < 6; i++) { - scene.world.createItemEntity(topOf, util.vector.of(0, 0.1, 0), copper); - scene.idle(12); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.createItemOnBeltLike(ejectorPos, Direction.UP, copper); - scene.idle(1); - scene.world.toggleRedstonePower(observerRedstone); - scene.effects.indicateRedstone(util.grid.at(4, 1, 1)); - scene.idle(3); - scene.world.toggleRedstonePower(observerRedstone); - scene.idle(16); - if (i == 3) - scene.markAsFinished(); - if (i == 1) { - scene.overlay.showText(60) - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(4, 1, 1), Direction.NORTH)) - .placeNearTarget() - .text("Furthermore, Observers can detect when Ejectors activate"); - } - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java deleted file mode 100644 index 6a22d56ed..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/FanScenes.java +++ /dev/null @@ -1,297 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.content.logistics.block.depot.DepotTileEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FlappyPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class FanScenes { - - public static void direction(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("fan_direction", "Air flow of Encased Fans"); - scene.configureBasePlate(0, 1, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 0, 3, 1, 5) - .add(util.select.position(3, 2, 4)), Direction.DOWN); - scene.world.showSection(util.select.fromTo(2, 1, 5, 1, 1, 5), Direction.DOWN); - scene.idle(10); - - BlockPos fanPos = util.grid.at(1, 1, 4); - scene.world.showSection(util.select.position(fanPos), Direction.SOUTH); - - scene.idle(40); - scene.effects.rotationDirectionIndicator(fanPos.south()); - - ElementLink flappyBirb = scene.special.createBirb(util.vector.topOf(1, 0, 3), FlappyPose::new); - scene.idle(2); - scene.special.rotateParrot(flappyBirb, 0, 235, 0, 30); - scene.special.moveParrot(flappyBirb, util.vector.of(0, 0, -2.5), 30); - scene.idle(20); - - scene.overlay.showText(80) - .text("Encased Fans use Rotational Force to create an Air Current") - .placeNearTarget() - .pointAt(util.vector.topOf(fanPos)); - scene.idle(90); - - BlockPos leverPos = util.grid.at(3, 2, 4); - Selection reverse = util.select.fromTo(3, 1, 5, 1, 1, 4); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reverse, f -> -f); - scene.effects.rotationDirectionIndicator(fanPos.south()); - scene.special.rotateParrot(flappyBirb, 0, 215 * 2, 0, 30); - scene.special.moveParrot(flappyBirb, util.vector.of(0, 0, 2.5), 30); - scene.idle(31); - - scene.overlay.showText(60) - .text("Strength and Direction of Flow depends on the Rotational Input") - .placeNearTarget() - .pointAt(util.vector.topOf(fanPos)); - scene.markAsFinished(); - scene.idle(70); - - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reverse, f -> -f); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> 4 * f); - scene.effects.rotationSpeedIndicator(fanPos.south()); - scene.special.rotateParrot(flappyBirb, 0, 245 * 4, 0, 30); - scene.special.moveParrot(flappyBirb, util.vector.of(0, 0, -20), 30); - - } - - public static void processing(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("fan_processing", "Processing Items using Encased Fans"); - scene.configureBasePlate(1, 0, 5); - scene.world.showSection(util.select.layer(0) - .substract(util.select.position(0, 0, 4)), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(6, 1, 2, 5, 1, 2) - .add(util.select.position(1, 1, 2)), Direction.DOWN); - scene.idle(25); - - BlockPos blockPos = util.grid.at(4, 1, 2); - - // blasting start - - ElementLink blockInFront = - scene.world.showIndependentSection(util.select.position(3, 1, 0), Direction.SOUTH); - scene.world.moveSection(blockInFront, util.vector.of(1, 0, 2), 0); - scene.world.setBlock(blockPos, Blocks.LAVA.getDefaultState(), false); - scene.idle(10); - - scene.overlay.showSelectionWithText(util.select.fromTo(blockPos, blockPos.west(2)), 80) - .colored(PonderPalette.RED) - .text("When passing through lava, the Air Flow becomes Heated"); - scene.idle(80); - - ItemStack stack = new ItemStack(Items.GOLD_ORE); - ItemStack smelted = new ItemStack(Items.GOLD_INGOT); - - ElementLink entityLink = scene.world.createItemEntity(util.vector.centerOf(blockPos.west(2) - .up(2)), util.vector.of(0, 0.1, 0), stack); - scene.idle(15); - scene.world.modifyEntity(entityLink, e -> e.setMotion(-0.2f, 0, 0)); - Vector3d itemVec = util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.EAST) - .add(0.1, 0, 0); - scene.overlay.showControls(new InputWindowElement(itemVec, Pointing.DOWN).withItem(stack), 20); - scene.idle(20); - scene.effects.emitParticles(itemVec.add(0, 0.2f, 0), Emitter.simple(ParticleTypes.LARGE_SMOKE, Vector3d.ZERO), 1, - 60); - - scene.overlay.showText(80) - .colored(PonderPalette.WHITE) - .pointAt(itemVec) - .placeNearTarget() - .text("Items caught in the area will be smelted"); - - scene.idle(60); - scene.world.modifyEntities(ItemEntity.class, ie -> ie.setItem(smelted)); - scene.idle(40); - scene.overlay.showControls(new InputWindowElement(itemVec, Pointing.DOWN).withItem(smelted), 20); - scene.idle(20); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.idle(20); - - scene.overlay.showText(80) - .colored(PonderPalette.RED) - .pointAt(itemVec) - .placeNearTarget() - .text("Food items thrown here would be incinerated"); - scene.idle(40); - - // smoking start - - BlockState campfire = Blocks.FIRE.getDefaultState(); - scene.world.hideIndependentSection(blockInFront, Direction.NORTH); - scene.idle(15); - scene.world.setBlock(util.grid.at(3, 1, 0), campfire, false); - scene.world.setBlock(blockPos, campfire, true); - blockInFront = scene.world.showIndependentSection(util.select.position(3, 1, 0), Direction.NORTH); - scene.world.moveSection(blockInFront, util.vector.of(1, 0, 2), 0); - scene.idle(50); - - scene.overlay.showSelectionWithText(util.select.fromTo(blockPos, blockPos.west(2)), 60) - .colored(PonderPalette.BLACK) - .text("Instead, a setup for Smoking using Fire should be used for them"); - scene.idle(80); - - // washing start - - BlockState water = Blocks.WATER.getDefaultState(); - scene.world.hideIndependentSection(blockInFront, Direction.NORTH); - scene.idle(15); - scene.world.setBlock(util.grid.at(3, 1, 0), water, false); - scene.world.setBlock(blockPos, water, true); - blockInFront = scene.world.showIndependentSection(util.select.position(3, 1, 0), Direction.NORTH); - scene.world.moveSection(blockInFront, util.vector.of(1, 0, 2), 0); - scene.idle(20); - - scene.overlay.showSelectionWithText(util.select.fromTo(blockPos, blockPos.west(2)), 60) - .colored(PonderPalette.MEDIUM) - .text("Air Flows passing through water create a Washing Setup"); - scene.idle(70); - - stack = AllItems.CRUSHED_GOLD.asStack(); - ItemStack washed = new ItemStack(Items.GOLD_NUGGET, 16); - - entityLink = scene.world.createItemEntity(util.vector.centerOf(blockPos.west(2) - .up(2)), util.vector.of(0, 0.1, 0), stack); - scene.idle(15); - scene.world.modifyEntity(entityLink, e -> e.setMotion(-0.2f, 0, 0)); - scene.overlay.showControls(new InputWindowElement(itemVec, Pointing.DOWN).withItem(stack), 20); - scene.idle(20); - scene.effects.emitParticles(itemVec.add(0, 0.2f, 0), Emitter.simple(ParticleTypes.SPIT, Vector3d.ZERO), 1, 60); - - scene.overlay.showText(50) - .colored(PonderPalette.WHITE) - .pointAt(itemVec) - .placeNearTarget() - .text("Some interesting new processing can be done with it"); - - scene.idle(60); - scene.world.modifyEntities(ItemEntity.class, ie -> ie.setItem(washed)); - scene.overlay.showControls(new InputWindowElement(itemVec, Pointing.DOWN).withItem(washed), 20); - scene.idle(20); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.idle(20); - - scene.overlay.showText(100) - .colored(PonderPalette.RED) - .pointAt(util.vector.topOf(blockPos.east())) - .placeNearTarget() - .text("The Speed of the Fan does NOT affect the processing speed, only its range"); - scene.world.destroyBlock(util.grid.at(1, 1, 2)); - scene.idle(110); - - ElementLink cogs = scene.world.makeSectionIndependent(util.select.fromTo(6, 1, 2, 6, 0, 3) - .add(util.select.fromTo(4, 0, 2, 5, 0, 2))); - scene.world.modifyKineticSpeed(util.select.position(5, 2, 2), f -> f / 3f); - scene.world.moveSection(cogs, util.vector.of(0, 1, 0), 15); - scene.world.moveSection(blockInFront, util.vector.of(0, 1, 0), 15); - scene.world.destroyBlock(blockPos.east()); - scene.world.showSection(util.select.position(blockPos.east() - .up()), Direction.DOWN); - scene.world.setBlock(blockPos.up(), Blocks.WATER.getDefaultState(), false); - - ItemStack sand = new ItemStack(Items.SAND); - ItemStack clay = new ItemStack(Items.CLAY_BALL); - - scene.idle(20); - BlockPos depos = util.grid.at(3, 4, 2); - ElementLink depot = - scene.world.showIndependentSection(util.select.position(depos), Direction.DOWN); - scene.world.moveSection(depot, util.vector.of(-1, -3, 0), 0); - scene.world.createItemOnBeltLike(depos, Direction.NORTH, sand); - scene.idle(10); - Vector3d depotTop = util.vector.topOf(2, 1, 2) - .add(0, 0.25, 0); - scene.effects.emitParticles(depotTop, Emitter.simple(ParticleTypes.SPIT, Vector3d.ZERO), .5f, 30); - scene.idle(30); - scene.world.modifyTileNBT(util.select.position(depos), DepotTileEntity.class, - nbt -> nbt.put("HeldItem", new TransportedItemStack(clay).serializeNBT())); - scene.effects.emitParticles(depotTop, Emitter.simple(ParticleTypes.SPIT, Vector3d.ZERO), .5f, 30); - scene.overlay.showText(90) - .pointAt(depotTop) - .text("Fan Processing can also be applied to Items on Depots and Belts"); - - scene.idle(100); - scene.world.moveSection(depot, util.vector.of(-1, 0, 0), 15); - scene.idle(15); - ElementLink largeCog = - scene.world.showIndependentSection(util.select.position(1, 2, 4), Direction.UP); - ElementLink belt = - scene.world.showIndependentSection(util.select.fromTo(3, 3, 1, 1, 3, 3), Direction.DOWN); - scene.world.moveSection(largeCog, util.vector.of(-1, -2, 0), 0); - scene.world.moveSection(belt, util.vector.of(-1, -2, 0), 0); - ElementLink transported = - scene.world.createItemOnBelt(util.grid.at(3, 3, 3), Direction.SOUTH, sand); - scene.idle(60); - scene.effects.emitParticles(depotTop, Emitter.simple(ParticleTypes.SPIT, Vector3d.ZERO), .5f, 25); - scene.idle(25); - scene.world.changeBeltItemTo(transported, new ItemStack(Items.CLAY_BALL)); - scene.effects.emitParticles(depotTop, Emitter.simple(ParticleTypes.SPIT, Vector3d.ZERO), .5f, 25); - scene.idle(60); - - scene.world.setKineticSpeed(util.select.position(1, 2, 4) - .add(util.select.fromTo(3, 3, 1, 1, 3, 3)), 0); - - } - - public static void source(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("fan_source", "Generating Rotational Force using Encased Fans"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.layersFrom(2), Direction.DOWN); - scene.idle(10); - BlockPos rightFan = util.grid.at(1, 2, 2); - scene.overlay.showText(80) - .text("Fans facing down into a source of heat can provide Rotational Force") - .placeNearTarget() - .pointAt(util.vector.blockSurface(rightFan, Direction.WEST)); - scene.idle(80); - - for (BlockPos pos : new BlockPos[] { rightFan, util.grid.at(3, 2, 2) }) { - scene.idle(10); - scene.world.toggleRedstonePower(util.select.position(pos.north())); - scene.effects.indicateRedstone(pos.north()); - scene.world.setKineticSpeed(util.select.fromTo(pos, pos.up()), 4); - scene.effects.rotationSpeedIndicator(pos.up()); - } - - scene.overlay.showText(90) - .text("When given a Redstone Signal, the Fans will start providing power") - .colored(PonderPalette.RED) - .placeNearTarget() - .pointAt(util.vector.blockSurface(rightFan, Direction.WEST)); - scene.markAsFinished(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java deleted file mode 100644 index 030f0ce6e..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/FunnelScenes.java +++ /dev/null @@ -1,508 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.block.LeverBlock; -import net.minecraft.block.RedstoneWireBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.items.ItemHandlerHelper; - -public class FunnelScenes { - - public static void intro(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("funnel_intro", "Using funnels"); - scene.configureBasePlate(0, 1, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> f / 2f); - - scene.idle(10); - - Selection verticalFunnel = util.select.fromTo(2, -1, 4, 2, 4, 4) - .add(util.select.fromTo(1, 1, 4, 1, 4, 4)); - Selection beltFunnels = util.select.fromTo(1, 2, 2, 3, 2, 2); - Selection beltFunnelEnv = util.select.fromTo(0, 1, 0, 5, 2, 2) - .substract(beltFunnels); - - scene.world.showSection(beltFunnelEnv, Direction.DOWN); - - scene.idle(20); - scene.world.showSection(beltFunnels, Direction.DOWN); - - BlockPos entryBeltPos = util.grid.at(3, 1, 2); - BlockPos exitBeltPos = util.grid.at(1, 1, 2); - ItemStack itemStack = AllBlocks.BRASS_BLOCK.asStack(); - - for (int i = 0; i < 8; i++) { - scene.idle(8); - scene.world.removeItemsFromBelt(exitBeltPos); - scene.world.flapFunnel(exitBeltPos.up(), false); - if (i == 2) - scene.rotateCameraY(70); - if (i < 6) - scene.world.createItemOnBelt(entryBeltPos, Direction.EAST, itemStack); - } - - scene.rotateCameraY(-70); - scene.idle(10); - - Selection outputFunnel = util.select.position(1, 2, 4); - scene.world.setBlocks(outputFunnel, Blocks.AIR.getDefaultState(), false); - scene.world.setBlocks(util.select.fromTo(2, -1, 4, 2, 0, 4), AllBlocks.ANDESITE_CASING.getDefaultState(), true); - ElementLink independentSection = - scene.world.showIndependentSection(verticalFunnel, Direction.UP); - - Vector3d topItemSpawn = util.vector.centerOf(2, 6, 4); - Vector3d sideItemSpawn = util.vector.centerOf(1, 3, 4) - .add(0.15f, -0.45f, 0); - ElementLink lastItemEntity = null; - - for (int i = 0; i < 4; i++) { - if (lastItemEntity != null) - scene.world.modifyEntity(lastItemEntity, Entity::remove); - if (i < 3) - lastItemEntity = scene.world.createItemEntity(topItemSpawn, util.vector.of(0, -0.4, 0), itemStack); - scene.idle(8); - } - - scene.world.moveSection(independentSection, util.vector.of(0, 1, 0), 15); - scene.idle(10); - scene.world.setBlocks(outputFunnel, AllBlocks.ANDESITE_FUNNEL.getDefaultState() - .with(FunnelBlock.FACING, Direction.WEST) - .with(FunnelBlock.EXTRACTING, true), false); - - for (int i = 0; i < 3; i++) { - scene.idle(8); - scene.world.flapFunnel(util.grid.at(1, 2, 4), false); - scene.world.createItemEntity(sideItemSpawn, util.vector.of(-.05, 0, 0), itemStack); - } - - scene.idle(8); - scene.overlay.showText(360) - .text("Funnels are ideal for transferring items from and to inventories.") - .independent(); - scene.markAsFinished(); - } - - public static void directionality(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("funnel_direction", "Direction of Transfer"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> f / 2f); - scene.world.setBlocks(util.select.position(3, 1, 1), AllBlocks.ANDESITE_CASING.getDefaultState(), false); - - BlockPos topFunnel = util.grid.at(3, 3, 2); - Selection topFunnelSelection = util.select.position(topFunnel); - Selection firstShow = util.select.fromTo(3, 1, 2, 3, 2, 2); - scene.idle(5); - - scene.world.showSection(firstShow, Direction.DOWN); - scene.idle(15); - - ItemStack itemStack = AllBlocks.BRASS_BLOCK.asStack(); - Vector3d topCenter = util.vector.centerOf(topFunnel); - Vector3d topSide = util.vector.blockSurface(topFunnel, Direction.EAST); - - InputWindowElement controlsSneak = new InputWindowElement(topCenter, Pointing.DOWN).rightClick() - .whileSneaking(); - - // Placing funnels without sneak - scene.world.showSection(topFunnelSelection, Direction.DOWN); - scene.overlay.showText(80) - .text("Placed normally, it pulls items from the inventory.") - .pointAt(topCenter) - .placeNearTarget(); - scene.idle(45); - - ElementLink itemLink = - scene.world.createItemEntity(topCenter, util.vector.of(0, 4 / 16f, 0), itemStack); - scene.idle(40); - - scene.world.modifyEntity(itemLink, Entity::remove); - scene.world.hideSection(topFunnelSelection, Direction.UP); - scene.idle(20); - - // Placing funnels with sneak - scene.world.modifyBlock(topFunnel, s -> s.with(FunnelBlock.EXTRACTING, false), false); - scene.idle(5); - - scene.world.showSection(topFunnelSelection, Direction.DOWN); - scene.overlay.showControls(controlsSneak, 35); - scene.overlay.showText(80) - .text("Placed while sneaking, it puts items into the inventory.") - .pointAt(topCenter) - .placeNearTarget(); - scene.idle(45); - - itemLink = scene.world.createItemEntity(topCenter.add(0, 3, 0), util.vector.of(0, -0.2, 0), itemStack); - scene.idle(10); - - scene.world.modifyEntity(itemLink, Entity::remove); - scene.idle(45); - - // Wrench interaction - InputWindowElement wrenchControls = new InputWindowElement(topSide, Pointing.RIGHT).rightClick() - .withWrench(); - scene.overlay.showControls(wrenchControls, 40); - scene.idle(10); - scene.world.modifyBlock(topFunnel, s -> s.cycle(FunnelBlock.EXTRACTING), true); - scene.idle(10); - scene.overlay.showText(80) - .text("Using a wrench, the funnel can be flipped after placement.") - .pointAt(topCenter) - .placeNearTarget(); - - itemLink = scene.world.createItemEntity(topCenter, util.vector.of(0, 4 / 16f, 0), itemStack); - scene.idle(30); - - scene.overlay.showControls(wrenchControls, 40); - scene.idle(10); - scene.world.modifyBlock(topFunnel, s -> s.cycle(FunnelBlock.EXTRACTING), true); - scene.idle(10); - scene.world.modifyEntity(itemLink, Entity::remove); - - scene.idle(20); - - // Side funnel - BlockPos sideFunnel = util.grid.at(3, 2, 1); - Selection sideFunnelSelection = util.select.fromTo(sideFunnel.down(), sideFunnel); - Vector3d sideCenter = util.vector.centerOf(sideFunnel); - - scene.world.modifyBlock(sideFunnel, s -> s.cycle(FunnelBlock.EXTRACTING), false); - scene.world.showSection(sideFunnelSelection, Direction.DOWN); - scene.overlay.showText(70) - .text("Same rules will apply for most orientations.") - .pointAt(sideCenter) - .placeNearTarget(); - - scene.idle(20); - - scene.world.flapFunnel(sideFunnel, true); - itemLink = scene.world.createItemEntity(sideCenter.subtract(0, .45, 0), util.vector.of(0, 0, -0.1), itemStack); - scene.idle(60); - scene.world.hideSection(sideFunnelSelection, Direction.UP); - scene.world.hideSection(topFunnelSelection, Direction.UP); - scene.world.modifyEntity(itemLink, Entity::remove); - scene.idle(20); - - // Belt funnel - Selection beltFunnelSetup = util.select.fromTo(0, 1, 0, 2, 2, 5); - Selection gearshiftAndLever = util.select.fromTo(1, 1, 4, 1, 2, 4); - Selection gearshiftedKinetics = util.select.fromTo(1, 1, 2, 2, 1, 4); - Vector3d topOfBeltFunnel = util.vector.topOf(2, 2, 2); - BlockPos beltPos = util.grid.at(2, 1, 2); - BlockPos cogPos = util.grid.at(1, 1, 3); - - scene.world.showSection(beltFunnelSetup, Direction.DOWN); - scene.overlay.showText(140) - .text("Funnels on belts will extract/insert depending on its movement direction.") - .pointAt(topOfBeltFunnel); - - scene.idle(15); - - for (int i = 0; i < 2; i++) { - scene.world.createItemOnBelt(beltPos, Direction.EAST, itemStack); - scene.effects.rotationDirectionIndicator(cogPos); - scene.idle(50); - - scene.world.modifyBlocks(gearshiftAndLever, s -> s.cycle(BlockStateProperties.POWERED), false); - scene.world.modifyKineticSpeed(gearshiftedKinetics, f -> -f); - scene.effects.indicateRedstone(util.grid.at(1, 2, 4)); - scene.effects.rotationDirectionIndicator(cogPos); - scene.idle(35); - - scene.world.removeItemsFromBelt(beltPos); - scene.world.flapFunnel(util.grid.at(2, 2, 2), false); - - if (i == 0) { - scene.idle(50); - scene.world.modifyBlocks(gearshiftAndLever, s -> s.cycle(BlockStateProperties.POWERED), false); - scene.world.modifyKineticSpeed(gearshiftedKinetics, f -> -f); - scene.effects.indicateRedstone(util.grid.at(1, 2, 4)); - } - } - } - - public static void compat(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("funnel_compat", "Funnel compatibility"); - scene.configureBasePlate(0, 0, 5); - - BlockPos sawFunnel = util.grid.at(4, 2, 1); - BlockPos depotFunnel = util.grid.at(2, 2, 2); - BlockPos drainFunnel = util.grid.at(0, 2, 3); - - scene.world.showSection(util.select.layer(0), Direction.UP); - Selection firstShow = util.select.layer(1) - .add(util.select.position(sawFunnel.south())) - .add(util.select.position(depotFunnel.south())) - .add(util.select.position(drainFunnel.south())); - scene.idle(5); - - scene.world.showSection(firstShow, Direction.DOWN); - - scene.idle(8); - scene.overlay.showText(360) - .text("Funnels should also interact nicely with a handful of other components.") - .independent(0); - scene.idle(40); - - scene.world.showSection(util.select.position(sawFunnel), Direction.DOWN); - scene.overlay.showText(40) - .text("Vertical Saws") - .colored(PonderPalette.BLUE) - .placeNearTarget() - .pointAt(util.vector.centerOf(sawFunnel.down())); - scene.idle(8); - scene.world.createItemOnBeltLike(sawFunnel.down(), Direction.SOUTH, new ItemStack(Blocks.OAK_LOG)); - scene.idle(40); - - scene.world.showSection(util.select.position(depotFunnel), Direction.DOWN); - scene.overlay.showText(40) - .text("Depots") - .colored(PonderPalette.BLUE) - .placeNearTarget() - .pointAt(util.vector.centerOf(depotFunnel.down())); - scene.idle(8); - scene.world.createItemOnBeltLike(depotFunnel.down(), Direction.SOUTH, new ItemStack(Items.GOLDEN_PICKAXE)); - scene.idle(40); - - scene.world.showSection(util.select.position(drainFunnel), Direction.DOWN); - scene.overlay.showText(40) - .text("Item Drains") - .colored(PonderPalette.BLUE) - .placeNearTarget() - .pointAt(util.vector.centerOf(drainFunnel.down())); - scene.idle(8); - scene.world.createItemOnBeltLike(drainFunnel.down(), Direction.SOUTH, new ItemStack(Items.WATER_BUCKET)); - scene.idle(40); - - scene.markAsFinished(); - } - - public static void redstone(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("funnel_redstone", "Redstone control"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - - ItemStack itemStack = AllBlocks.BRASS_BLOCK.asStack(); - Vector3d topItemSpawn = util.vector.centerOf(3, 6, 2); - ElementLink lastItemEntity = null; - - BlockPos lever = util.grid.at(1, 2, 2); - BlockPos redstone = util.grid.at(2, 2, 2); - BlockPos funnel = util.grid.at(3, 2, 2); - - AxisAlignedBB redstoneBB = new AxisAlignedBB(funnel).grow(-1 / 16f, -6 / 16f, -1 / 16f) - .offset(0, -5 / 16f, 0); - - for (int i = 0; i < 4; i++) { - if (lastItemEntity != null) - scene.world.modifyEntity(lastItemEntity, Entity::remove); - lastItemEntity = scene.world.createItemEntity(topItemSpawn, util.vector.of(0, -0.2, 0), itemStack); - scene.idle(8); - - if (i == 3) { - scene.world.modifyBlock(lever, s -> s.cycle(LeverBlock.POWERED), false); - scene.world.modifyBlock(redstone, s -> s.with(RedstoneWireBlock.POWER, 15), false); - scene.world.modifyBlock(funnel, s -> s.cycle(FunnelBlock.POWERED), false); - scene.effects.indicateRedstone(lever); - scene.idle(4); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, funnel, redstoneBB, 80); - scene.overlay.showText(80) - .colored(PonderPalette.RED) - .text("Redstone power will prevent any funnel from acting") - .pointAt(util.vector.blockSurface(funnel, Direction.DOWN)); - } else { - scene.idle(4); - } - } - - } - - public static void brass(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("brass_funnel", "The Brass Funnel"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos firstDepot = util.grid.at(3, 1, 1); - BlockPos secondDepot = util.grid.at(1, 1, 1); - Selection depots = util.select.fromTo(firstDepot, secondDepot); - Selection beltAndStuff = util.select.fromTo(0, 1, 2, 4, 1, 2) - .add(util.select.fromTo(0, 1, 3, 0, 2, 5)); - Selection withoutBelt = util.select.layersFrom(1) - .substract(beltAndStuff) - .substract(depots); - - scene.world.showSection(withoutBelt, Direction.DOWN); - ElementLink independentSection = - scene.world.showIndependentSection(depots, Direction.DOWN); - scene.world.moveSection(independentSection, util.vector.of(0, 0, 1), 0); - - BlockPos andesiteFunnel = util.grid.at(3, 2, 2); - BlockPos brassFunnel = util.grid.at(1, 2, 2); - ItemStack itemStack = AllItems.BRASS_INGOT.asStack(); - scene.idle(10); - - scene.overlay.showText(60) - .text("Andesite Funnels can only ever extract single items.") - .pointAt(util.vector.topOf(andesiteFunnel)) - .placeNearTarget(); - scene.idle(10); - scene.world.createItemOnBeltLike(andesiteFunnel.down() - .north(), Direction.SOUTH, itemStack); - scene.world.flapFunnel(andesiteFunnel, true); - scene.idle(60); - - scene.overlay.showText(60) - .text("Brass Funnels can extract up to a full stack.") - .pointAt(util.vector.topOf(brassFunnel)) - .placeNearTarget(); - scene.idle(10); - scene.world.createItemOnBeltLike(brassFunnel.down() - .north(), Direction.SOUTH, ItemHandlerHelper.copyStackWithSize(itemStack, 64)); - scene.world.flapFunnel(brassFunnel, true); - scene.idle(60); - - AxisAlignedBB filterSlot = new AxisAlignedBB(brassFunnel).grow(-.35, -.35, -.35) - .offset(0, 0.2, 0); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.WHITE, filterSlot, filterSlot, 80); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(brassFunnel), Pointing.DOWN).scroll(), 60); - scene.idle(10); - scene.overlay.showText(80) - .text("Scrolling on the filter slot allows for precise control over the extracted stack size.") - .pointAt(filterSlot.getCenter()) - .placeNearTarget(); - scene.idle(90); - - // belt - scene.world.hideIndependentSection(independentSection, Direction.NORTH); - scene.world.hideSection(util.select.position(brassFunnel), Direction.UP); - scene.idle(20); - - scene.world.modifyBlock(brassFunnel, s -> s.cycle(BeltFunnelBlock.SHAPE), false); - scene.world.showSection(util.select.position(brassFunnel), Direction.DOWN); - scene.world.showSection(beltAndStuff, Direction.SOUTH); - scene.idle(10); - - ItemStack dirt = new ItemStack(Items.DIRT); - ItemStack gravel = new ItemStack(Items.GRAVEL); - ItemStack emerald = new ItemStack(Items.EMERALD); - - for (int i = 0; i < 14; i++) { - - if (i < 12) - scene.world.createItemOnBelt(andesiteFunnel.down(), Direction.SOUTH, - i % 3 == 0 ? dirt : i % 3 == 1 ? gravel : emerald); - scene.idle(10); - - if (i > 0 && (i < 3 || i % 3 == 0)) { - scene.world.removeItemsFromBelt(brassFunnel.down()); - scene.world.flapFunnel(brassFunnel, false); - } - - scene.world.modifyEntities(ItemEntity.class, e -> { - if (e.getY() < 1) - e.remove(); - }); - - if (i == 2) { - scene.overlay.chaseBoundingBoxOutline(PonderPalette.WHITE, filterSlot, filterSlot, 80); - scene.overlay - .showControls(new InputWindowElement(util.vector.topOf(brassFunnel), Pointing.DOWN).rightClick() - .withItem(emerald), 60); - scene.idle(10); - scene.overlay.showText(80) - .text("Using items on the filter slot will restrict the funnel to only transfer matching stacks.") - .pointAt(filterSlot.getCenter()) - .placeNearTarget(); - scene.world.setFilterData(util.select.position(brassFunnel), FunnelTileEntity.class, emerald); - } else - scene.idle(10); - - if (i == 8) - scene.markAsFinished(); - } - } - - public static void transposer(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("funnel_transfer", "Direct transfer"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos funnelPos = util.grid.at(2, 2, 2); - Selection funnelSelect = util.select.position(funnelPos); - - ElementLink rightChest = - scene.world.showIndependentSection(util.select.position(0, 2, 2), Direction.DOWN); - ElementLink leftChest = - scene.world.showIndependentSection(util.select.position(4, 2, 2), Direction.DOWN); - scene.world.moveSection(rightChest, util.vector.of(2, 1, 0), 0); - scene.world.moveSection(leftChest, util.vector.of(-2, -1, 0), 0); - scene.idle(5); - - scene.world.showSection(funnelSelect, Direction.DOWN); - scene.idle(20); - - scene.overlay.showSelectionWithText(funnelSelect, 40) - .colored(PonderPalette.RED) - .text("Funnels cannot ever transfer between closed inventories directly.") - .placeNearTarget(); - scene.idle(50); - - scene.world.hideSection(funnelSelect, Direction.SOUTH); - scene.idle(20); - - scene.world.setBlocks(funnelSelect, AllBlocks.CHUTE.getDefaultState(), false); - scene.world.showSection(funnelSelect, Direction.NORTH); - scene.idle(10); - - scene.overlay.showText(40) - .colored(PonderPalette.GREEN) - .text("Chutes or Smart chutes might be more suitable for such purposes.") - .pointAt(util.vector.centerOf(funnelPos)) - .placeNearTarget(); - scene.idle(50); - - scene.world.hideSection(funnelSelect, Direction.UP); - scene.world.hideIndependentSection(leftChest, Direction.UP); - scene.world.hideIndependentSection(rightChest, Direction.UP); - scene.idle(20); - - Selection belt = util.select.layer(1); - scene.world.setBlocks(funnelSelect, Blocks.AIR.getDefaultState(), false); - scene.world.showSection(belt, Direction.DOWN); - scene.world.showSection(util.select.fromTo(0, 2, 2, 4, 2, 2), Direction.DOWN); - scene.overlay.showText(120) - .colored(PonderPalette.GREEN) - .text("Same applies for horizontal movement. A mechanical belt should help here.") - .pointAt(util.vector.topOf(1, 2, 2)) - .placeNearTarget(); - - scene.markAsFinished(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/GantryScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/GantryScenes.java deleted file mode 100644 index d1642ccfd..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/GantryScenes.java +++ /dev/null @@ -1,305 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.RedstoneWireBlock; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class GantryScenes { - - public static void introForPinion(SceneBuilder scene, SceneBuildingUtil util) { - intro(scene, util, true); - } - - public static void introForShaft(SceneBuilder scene, SceneBuildingUtil util) { - intro(scene, util, false); - } - - private static void intro(SceneBuilder scene, SceneBuildingUtil util, boolean pinion) { - String id = "gantry_" + (pinion ? "carriage" : "shaft"); - String title = "Using Gantry " + (pinion ? "Carriages" : "Shafts"); - scene.title(id, title); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -2 * f); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(10); - ElementLink gantry = - scene.world.showIndependentSection(util.select.layer(2), Direction.DOWN); - scene.idle(10); - - BlockPos centralShaft = util.grid.at(2, 1, 2); - - scene.world.moveSection(gantry, util.vector.of(-4, 0, 0), 60); - - String text = pinion ? "Gantry Carriages can mount to and slide along a Gantry Shaft." - : "Gantry Shafts form the basis of a gantry setup. Attached Carriages will move along them."; - - scene.overlay.showText(80) - .attachKeyFrame() - .text(text) - .pointAt(util.vector.centerOf(centralShaft)); - scene.idle(80); - - scene.world.hideIndependentSection(gantry, Direction.UP); - scene.idle(10); - gantry = scene.world.showIndependentSection(util.select.layer(2), Direction.DOWN); - Vector3d gantryTop = util.vector.topOf(4, 2, 2); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> 0f); - scene.overlay.showText(40) - .attachKeyFrame() - .text("Gantry setups can move attached Blocks.") - .pointAt(gantryTop) - .placeNearTarget(); - scene.idle(30); - - Selection planks = util.select.position(5, 3, 1); - - scene.world.showSectionAndMerge(util.select.layersFrom(3) - .substract(planks), Direction.DOWN, gantry); - scene.idle(10); - scene.world.showSectionAndMerge(planks, Direction.SOUTH, gantry); - scene.idle(10); - scene.effects.superGlue(util.grid.at(5, 3, 1), Direction.SOUTH, true); - - scene.idle(20); - scene.overlay.showText(80) - .attachKeyFrame() - .sharedText("movement_anchors") - .pointAt(gantryTop) - .placeNearTarget(); - scene.idle(80); - - scene.world.modifyKineticSpeed(util.select.layer(0), f -> 32f); - scene.world.modifyKineticSpeed(util.select.layer(1), f -> -64f); - - scene.world.moveSection(gantry, util.vector.of(-4, 0, 0), 60); - scene.idle(20); - scene.markAsFinished(); - } - - public static void redstone(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("gantry_redstone", "Gantry Power Propagation"); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - - Selection leverRedstone = util.select.fromTo(3, 1, 0, 3, 1, 1); - Selection shaft = util.select.fromTo(0, 1, 2, 4, 1, 2); - Selection shaftAndCog = util.select.fromTo(0, 1, 2, 5, 1, 2); - - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0) - .add(leverRedstone), Direction.UP); - - scene.idle(10); - scene.world.showSection(shaftAndCog, Direction.DOWN); - scene.idle(10); - - BlockPos gantryPos = util.grid.at(4, 2, 2); - ElementLink gantry = - scene.world.showIndependentSection(util.select.position(gantryPos), Direction.DOWN); - scene.idle(15); - scene.world.moveSection(gantry, util.vector.of(-3, 0, 0), 40); - scene.idle(40); - - scene.world.toggleRedstonePower(shaft); - scene.world.toggleRedstonePower(util.select.position(3, 1, 0)); - scene.world.toggleRedstonePower(util.select.position(3, 1, 1)); - scene.effects.indicateRedstone(util.grid.at(3, 1, 0)); - scene.world.modifyKineticSpeed(util.select.position(gantryPos), f -> 32f); - scene.idle(40); - - BlockPos cogPos = util.grid.at(1, 2, 1); - scene.overlay.showText(60) - .attachKeyFrame() - .colored(PonderPalette.RED) - .pointAt(util.vector.centerOf(cogPos.down() - .south())) - .text("Redstone-powered gantry shafts stop moving their carriages") - .placeNearTarget(); - scene.idle(70); - - Selection cogSelection = util.select.position(cogPos); - scene.world.showSection(cogSelection, Direction.SOUTH); - scene.world.modifyKineticSpeed(cogSelection, f -> 32f); - scene.overlay.showText(180) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(cogPos, Direction.NORTH)) - .text("Instead, its rotational force is relayed to the carriages' output shaft") - .placeNearTarget(); - scene.idle(10); - - scene.effects.rotationSpeedIndicator(cogPos); - scene.markAsFinished(); - } - - public static void direction(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("gantry_direction", "Gantry Movement Direction"); - scene.configureBasePlate(0, 0, 5); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(10); - - Selection shaftAndGearshiftAndLever = util.select.fromTo(0, 1, 2, 5, 2, 2); - Selection shafts = util.select.fromTo(0, 1, 2, 3, 1, 2); - - scene.world.showSection(shaftAndGearshiftAndLever, Direction.DOWN); - scene.overlay.showText(60) - .text("Gantry Shafts can have opposite orientations") - .pointAt(util.vector.of(2, 1.5, 2.5)) - .placeNearTarget(); - scene.idle(60); - - ElementLink gantry1 = - scene.world.showIndependentSection(util.select.position(0, 1, 3), Direction.NORTH); - ElementLink gantry2 = - scene.world.showIndependentSection(util.select.position(3, 1, 3), Direction.NORTH); - scene.idle(10); - - scene.world.moveSection(gantry1, util.vector.of(1, 0, 0), 20); - scene.world.moveSection(gantry2, util.vector.of(-1, 0, 0), 20); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("The movement direction of carriages depend on their shafts' orientation") - .pointAt(util.vector.topOf(1, 1, 3)) - .placeNearTarget(); - scene.idle(80); - - BlockPos lastShaft = util.grid.at(0, 1, 2); - boolean flip = true; - - for (int i = 0; i < 3; i++) { - scene.world.modifyBlocks(util.select.fromTo(4, 1, 2, 4, 2, 2), s -> s.cycle(BlockStateProperties.POWERED), - false); - scene.effects.indicateRedstone(util.grid.at(4, 2, 2)); - scene.world.moveSection(gantry1, util.vector.of(flip ? -1 : 1, 0, 0), 20); - scene.world.moveSection(gantry2, util.vector.of(flip ? 1 : -1, 0, 0), 20); - scene.world.modifyKineticSpeed(shafts, f -> -f); - scene.effects.rotationDirectionIndicator(lastShaft.east(flip ? 1 : 0)); - scene.idle(20); - - if (i == 0) { - scene.overlay.showText(80) - .attachKeyFrame() - .text("...as well as the rotation direction of the shaft") - .pointAt(util.vector.blockSurface(lastShaft, Direction.WEST)) - .placeNearTarget(); - } - - scene.idle(30); - flip = !flip; - } - - Selection kinetics = util.select.fromTo(0, 2, 3, 3, 3, 3); - Selection gears1 = util.select.fromTo(0, 1, 3, 0, 3, 3); - Selection gears2 = util.select.fromTo(3, 1, 3, 3, 3, 3); - - scene.world.showSection(kinetics, Direction.DOWN); - scene.world.showSection(util.select.fromTo(0, 1, 0, 4, 1, 1), Direction.SOUTH); - scene.idle(20); - - BlockPos leverPos = util.grid.at(4, 1, 0); - scene.world.modifyBlocks(util.select.fromTo(1, 1, 0, 3, 1, 1), - s -> s.contains(RedstoneWireBlock.POWER) ? s.with(RedstoneWireBlock.POWER, 15) : s, false); - scene.world.toggleRedstonePower(util.select.position(leverPos)); - scene.world.toggleRedstonePower(shafts); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(gears1, f -> -32f); - scene.world.modifyKineticSpeed(gears2, f -> 32f); - - scene.idle(20); - scene.overlay.showText(120) - .attachKeyFrame() - .text("Same rules apply for the propagated rotation") - .pointAt(util.vector.topOf(0, 3, 3)) - .placeNearTarget(); - scene.idle(20); - - for (boolean flip2 : Iterate.trueAndFalse) { - scene.effects.rotationDirectionIndicator(util.grid.at(0, 3, 3)); - scene.effects.rotationDirectionIndicator(util.grid.at(3, 3, 3)); - - scene.idle(60); - scene.world.modifyBlocks(util.select.fromTo(4, 1, 2, 4, 2, 2), s -> s.cycle(BlockStateProperties.POWERED), - false); - scene.effects.indicateRedstone(util.grid.at(4, 2, 2)); - scene.world.modifyKineticSpeed(gears1, f -> -f); - scene.world.modifyKineticSpeed(gears2, f -> -f); - - if (!flip2) { - scene.effects.rotationDirectionIndicator(util.grid.at(0, 3, 3)); - scene.effects.rotationDirectionIndicator(util.grid.at(3, 3, 3)); - scene.markAsFinished(); - } - } - - } - - public static void subgantry(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("gantry_cascaded", "Cascaded Gantries"); - scene.configureBasePlate(0, 0, 5); - scene.setSceneOffsetY(-1); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -2 * f); - scene.world.showSection(util.select.layer(0) - .add(util.select.column(5, 3)) - .add(util.select.fromTo(2, 1, 3, 4, 1, 3)), Direction.UP); - scene.idle(10); - - BlockPos gantryPos = util.grid.at(5, 1, 2); - BlockPos gantryPos2 = util.grid.at(3, 2, 2); - ElementLink gantry = - scene.world.showIndependentSection(util.select.position(gantryPos), Direction.SOUTH); - scene.idle(5); - - scene.world.showSectionAndMerge(util.select.fromTo(0, 1, 2, 4, 1, 2), Direction.EAST, gantry); - scene.idle(15); - - scene.world.moveSection(gantry, util.vector.of(0, 2, 0), 40); - scene.overlay.showText(60) - .attachKeyFrame() - .text("Gantry shafts attach to a carriage without the need of super glue") - .independent(20); - scene.idle(40); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.moveSection(gantry, util.vector.of(0, -2, 0), 40); - scene.idle(40); - - ElementLink secondGantry = - scene.world.showIndependentSection(util.select.position(gantryPos2), Direction.DOWN); - scene.idle(15); - scene.overlay.showText(60) - .attachKeyFrame() - .text("Same applies for carriages on moved Gantry Shafts") - .independent(20); - scene.idle(15); - - scene.world.moveSection(gantry, util.vector.of(0, 2, 0), 40); - scene.world.moveSection(secondGantry, util.vector.of(0, 2, 0), 40); - - scene.idle(40); - BlockPos leverPos = util.grid.at(2, 1, 3); - scene.world.toggleRedstonePower(util.select.position(leverPos)); - scene.world.toggleRedstonePower(util.select.fromTo(3, 1, 3, 4, 1, 3)); - scene.world.toggleRedstonePower(util.select.fromTo(5, 1, 3, 5, 4, 3)); - scene.world.modifyKineticSpeed(util.select.fromTo(0, 1, 2, 5, 1, 2), f -> -32f); - scene.effects.indicateRedstone(leverPos); - scene.world.moveSection(secondGantry, util.vector.of(-3, 0, 0), 60); - - scene.idle(20); - scene.overlay.showText(120) - .text("Thus, a gantry system can be cascaded to cover multiple axes of movement") - .independent(20); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java deleted file mode 100644 index 5a59ff35f..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/KineticsScenes.java +++ /dev/null @@ -1,1112 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; -import com.simibubi.create.content.contraptions.components.crusher.CrushingWheelBlock; -import com.simibubi.create.content.contraptions.components.waterwheel.WaterWheelBlock; -import com.simibubi.create.content.contraptions.relays.advanced.sequencer.SequencedGearshiftBlock; -import com.simibubi.create.content.contraptions.relays.elementary.CogWheelBlock; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.content.contraptions.relays.encased.EncasedShaftBlock; -import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; -import com.simibubi.create.content.contraptions.relays.gauge.StressGaugeTileEntity; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; -import com.simibubi.create.foundation.utility.Pointing; -import com.tterrag.registrate.util.entry.BlockEntry; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.FurnaceBlock; -import net.minecraft.block.RedstoneWireBlock; -import net.minecraft.item.DyeColor; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; - -public class KineticsScenes { - - public static void shaftAsRelay(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("shaft", "Relaying rotational force using Shafts"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos gaugePos = util.grid.at(0, 1, 2); - Selection gauge = util.select.position(gaugePos); - scene.world.showSection(gauge, Direction.UP); - scene.world.setKineticSpeed(gauge, 0); - - scene.idle(5); - scene.world.showSection(util.select.position(5, 1, 2), Direction.DOWN); - scene.idle(10); - - for (int i = 4; i >= 1; i--) { - if (i == 2) - scene.rotateCameraY(70); - scene.idle(5); - scene.world.showSection(util.select.position(i, 1, 2), Direction.DOWN); - } - - scene.world.setKineticSpeed(gauge, 64); - scene.effects.indicateSuccess(gaugePos); - scene.idle(10); - scene.overlay.showText(1000) - .text("Shafts will relay rotation in a straight line.") - .pointAt(util.vector.of(3, 1.5, 2.5)); - - scene.idle(20); - scene.markAsFinished(); - } - - public static void shaftsCanBeEncased(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("shaft_casing", "Encasing Shafts"); - scene.configureBasePlate(0, 0, 5); - scene.showBasePlate(); - - Selection shaft = util.select.cuboid(new BlockPos(0, 1, 2), new Vector3i(5, 0, 2)); - Selection andesite = util.select.position(3, 1, 2); - Selection brass = util.select.position(1, 1, 2); - - scene.world.showSection(shaft, Direction.DOWN); - scene.idle(20); - - BlockEntry andesiteEncased = AllBlocks.ANDESITE_ENCASED_SHAFT; - ItemStack andesiteCasingItem = AllBlocks.ANDESITE_CASING.asStack(); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(3, 1, 2), Pointing.DOWN).rightClick() - .withItem(andesiteCasingItem), 60); - scene.idle(7); - scene.world.setBlocks(andesite, andesiteEncased.getDefaultState() - .with(EncasedShaftBlock.AXIS, Axis.X), true); - scene.world.setKineticSpeed(shaft, 32); - scene.idle(10); - - BlockEntry brassEncased = AllBlocks.BRASS_ENCASED_SHAFT; - ItemStack brassCasingItem = AllBlocks.BRASS_CASING.asStack(); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(1, 0, 2), Pointing.UP).rightClick() - .withItem(brassCasingItem), 60); - scene.idle(7); - scene.world.setBlocks(brass, brassEncased.getDefaultState() - .with(EncasedShaftBlock.AXIS, Axis.X), true); - scene.world.setKineticSpeed(shaft, 32); - - scene.idle(10); - scene.overlay.showText(1000) - .placeNearTarget() - .text("Brass or Andesite Casing can be used to decorate Shafts") - .pointAt(util.vector.topOf(1, 1, 2)); - } - - public static void cogAsRelay(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("cogwheel", "Relaying rotational force using Cogwheels"); - scene.configureBasePlate(0, 0, 5); - BlockPos gauge = util.grid.at(4, 1, 1); - Selection gaugeSelect = util.select.position(gauge); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.world.showSection(gaugeSelect, Direction.UP); - scene.world.setKineticSpeed(gaugeSelect, 0); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 1, 3, 1, 1, 5), Direction.DOWN); - scene.idle(10); - - for (int i = 1; i <= 4; i++) { - scene.idle(5); - if (i == 2) - scene.world.showSection(util.select.position(0, 1, 2), Direction.DOWN); - scene.world.showSection(util.select.position(i, 1, 2), Direction.DOWN); - } - - scene.world.setKineticSpeed(gaugeSelect, 64); - scene.effects.indicateSuccess(gauge); - scene.idle(10); - scene.overlay.showText(60) - .text("Cogwheels will relay rotation to other adjacent cogwheels") - .pointAt(util.vector.blockSurface(util.grid.at(0, 1, 2), Direction.EAST)); - - scene.idle(60); - scene.world.showSection(util.select.fromTo(1, 1, 1, 2, 1, 1), Direction.SOUTH); - scene.idle(10); - scene.effects.rotationDirectionIndicator(util.grid.at(1, 1, 1)); - scene.effects.rotationDirectionIndicator(util.grid.at(2, 1, 1)); - scene.idle(20); - scene.overlay.showText(100) - .text("Neighbouring shafts connected like this will rotate in opposite directions") - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.NORTH)); - - } - - public static void largeCogAsRelay(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("large_cogwheel", "Relaying rotational force using Large Cogwheels"); - scene.configureBasePlate(1, 1, 5); - scene.world.setBlock(util.grid.at(4, 2, 3), AllBlocks.LARGE_COGWHEEL.getDefaultState() - .with(CogWheelBlock.AXIS, Axis.X), false); - - scene.showBasePlate(); - scene.idle(5); - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(3, 2, 4), Direction.NORTH); - - for (int i = 3; i >= 1; i--) { - scene.idle(5); - if (i == 3) - scene.world.showSection(util.select.position(3, 2, 5), Direction.DOWN); - scene.world.showSection(util.select.position(3, 2, i), Direction.DOWN); - } - - scene.overlay.showText(70) - .text("Large cogwheels can connect to each other at right angles") - .placeNearTarget() - .pointAt(util.vector.centerOf(3, 1, 4)); - scene.idle(70); - scene.world.hideSection(util.select.fromTo(3, 2, 1, 3, 2, 5), Direction.SOUTH); - - scene.idle(15); - scene.world.modifyBlock(util.grid.at(3, 2, 3), s -> s.with(ShaftBlock.AXIS, Axis.X), false); - scene.world.setKineticSpeed(util.select.fromTo(1, 2, 3, 5, 2, 3), 16); - scene.world.showSection(util.select.position(4, 2, 3), Direction.WEST); - - for (int i = 3; i >= 1; i--) { - scene.idle(5); - if (i == 3) - scene.world.showSection(util.select.position(5, 2, 3), Direction.DOWN); - scene.world.showSection(util.select.position(i, 2, 3), Direction.DOWN); - } - - scene.idle(5); - scene.overlay.showText(90) - .text("It will help relaying conveyed speed to other axes of rotation") - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 3), Direction.WEST)); - scene.effects.rotationSpeedIndicator(util.grid.at(3, 1, 3)); - scene.effects.rotationSpeedIndicator(util.grid.at(4, 2, 3)); - - } - - public static void cogsSpeedUp(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("cog_speedup", "Gearshifting with Cogs"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(5, 1, 2, 4, 1, 2), Direction.DOWN); - scene.idle(10); - - BlockPos lowerCog = util.grid.at(3, 1, 2); - BlockPos upperCog = util.grid.at(3, 2, 3); - BlockState largeCogState = AllBlocks.LARGE_COGWHEEL.getDefaultState() - .with(CogWheelBlock.AXIS, Axis.X); - BlockState smallCogState = AllBlocks.COGWHEEL.getDefaultState() - .with(CogWheelBlock.AXIS, Axis.X); - - scene.world.setBlock(lowerCog, largeCogState, false); - scene.world.setBlock(upperCog, smallCogState, false); - BlockPos upperShaftEnd = upperCog.west(3); - BlockPos lowerShaftEnd = lowerCog.west(3); - - scene.world.setKineticSpeed(util.select.fromTo(upperCog, upperShaftEnd), -64); - scene.world.showSection(util.select.fromTo(lowerCog, upperCog), Direction.EAST); - scene.overlay.showText(60) - .text("Large and Small cogs can be connected diagonally") - .placeNearTarget() - .pointAt(util.vector.blockSurface(upperCog, Direction.WEST)); - scene.idle(80); - - Selection gaugesSelect = util.select.fromTo(0, 1, 2, 2, 2, 3); - scene.world.showSection(gaugesSelect, Direction.DOWN); - scene.overlay.showText(60) - .text("Shifting from large to small cogs, the conveyed speed will be doubled") - .colored(PonderPalette.GREEN) - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 3), Direction.NORTH)); - scene.idle(10); - scene.effects.rotationSpeedIndicator(upperCog); - scene.idle(60); - - scene.overlay.showText(30) - .sharedText("rpm32") - .colored(PonderPalette.FAST) - .placeNearTarget() - .pointAt(util.vector.blockSurface(upperShaftEnd, Direction.WEST)); - scene.idle(5); - scene.overlay.showText(30) - .sharedText("rpm16") - .colored(PonderPalette.MEDIUM) - .placeNearTarget() - .pointAt(util.vector.blockSurface(lowerShaftEnd, Direction.WEST)); - scene.idle(45); - - scene.world.setKineticSpeed(util.select.fromTo(lowerCog, upperShaftEnd), 0); - ElementLink cogs = - scene.world.makeSectionIndependent(util.select.fromTo(lowerCog, upperCog)); - scene.world.moveSection(cogs, util.vector.of(0, 1, 0), 5); - scene.idle(5); - scene.world.rotateSection(cogs, 180, 0, 0, 10); - scene.idle(10); - scene.world.setBlock(lowerCog, smallCogState, false); - scene.world.setBlock(upperCog, largeCogState, false); - scene.world.rotateSection(cogs, 180, 0, 0, 0); - scene.world.moveSection(cogs, util.vector.of(0, -1, 0), 5); - scene.idle(5); - - scene.world.setKineticSpeed(util.select.fromTo(lowerCog, lowerShaftEnd), 32); - scene.world.setKineticSpeed(util.select.fromTo(upperCog, upperShaftEnd), -16); - - scene.overlay.showText(80) - .text("Shifting the opposite way, the conveyed speed will be halved") - .colored(PonderPalette.RED) - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 3), Direction.NORTH)); - scene.idle(10); - scene.effects.rotationSpeedIndicator(upperCog); - scene.idle(80); - - scene.overlay.showText(60) - .sharedText("rpm8") - .colored(PonderPalette.SLOW) - .placeNearTarget() - .pointAt(util.vector.blockSurface(upperShaftEnd, Direction.WEST)); - scene.idle(5); - scene.overlay.showText(60) - .sharedText("rpm16") - .colored(PonderPalette.MEDIUM) - .placeNearTarget() - .pointAt(util.vector.blockSurface(lowerShaftEnd, Direction.WEST)); - scene.idle(40); - } - - public static void gearbox(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("gearbox", "Relaying rotational force using Gearboxes"); - scene.configureBasePlate(1, 1, 5); - scene.setSceneOffsetY(-1); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.world.showSection(util.select.fromTo(4, 1, 6, 3, 2, 5), Direction.UP); - scene.idle(10); - - BlockPos largeCogBack = util.grid.at(3, 2, 4); - BlockPos largeCogLeft = util.grid.at(4, 2, 3); - BlockPos largeCogFront = util.grid.at(3, 2, 2); - BlockPos largeCogRight = util.grid.at(2, 2, 3); - - scene.world.showSection(util.select.position(largeCogBack), Direction.SOUTH); - scene.idle(5); - scene.world.showSection(util.select.position(largeCogLeft), Direction.WEST); - scene.world.showSection(util.select.position(largeCogLeft.east()), Direction.WEST); - scene.world.showSection(util.select.position(largeCogRight), Direction.EAST); - scene.world.showSection(util.select.position(largeCogRight.west()), Direction.EAST); - scene.idle(5); - scene.world.showSection(util.select.position(largeCogFront), Direction.SOUTH); - scene.world.showSection(util.select.position(largeCogFront.north()), Direction.SOUTH); - - scene.idle(10); - - scene.overlay.showText(80) - .colored(PonderPalette.RED) - .pointAt(util.vector.blockSurface(largeCogRight.west(), Direction.WEST)) - .placeNearTarget() - .text("Jumping between axes of rotation can get bulky quickly"); - scene.idle(80); - Selection gearbox = util.select.position(3, 2, 3); - scene.world.hideSection(util.select.fromTo(4, 2, 2, 2, 2, 4) - .substract(gearbox), Direction.UP); - scene.idle(20); - - BlockState defaultState = AllBlocks.SHAFT.getDefaultState(); - BlockState cogState = AllBlocks.COGWHEEL.getDefaultState(); - scene.world.setBlock(largeCogBack, defaultState.with(CogWheelBlock.AXIS, Axis.Z), false); - scene.world.setBlock(largeCogFront, defaultState.with(CogWheelBlock.AXIS, Axis.Z), false); - scene.world.setBlock(largeCogRight, defaultState.with(CogWheelBlock.AXIS, Axis.X), false); - scene.world.setBlock(largeCogLeft, defaultState.with(CogWheelBlock.AXIS, Axis.X), false); - scene.world.showSection(util.select.fromTo(4, 2, 2, 2, 2, 4), Direction.DOWN); - - scene.idle(20); - scene.overlay.showText(80) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.topOf(3, 2, 3)) - .placeNearTarget() - .text("A gearbox is the more compact equivalent of this setup"); - - scene.idle(90); - scene.world.setBlock(largeCogFront.north(), cogState.with(CogWheelBlock.AXIS, Axis.Z), true); - scene.world.setBlock(largeCogRight.west(), cogState.with(CogWheelBlock.AXIS, Axis.X), true); - scene.idle(10); - scene.effects.rotationDirectionIndicator(largeCogFront.north()); - scene.effects.rotationDirectionIndicator(largeCogRight.west()); - scene.idle(15); - scene.overlay.showText(60) - .pointAt(util.vector.of(3, 2.5, 3)) - .placeNearTarget() - .text("Shafts around corners rotate in mirrored directions"); - - scene.idle(70); - - scene.world.hideSection(util.select.fromTo(1, 2, 3, 2, 2, 3), Direction.WEST); - scene.world.hideSection(util.select.fromTo(4, 2, 3, 5, 2, 3), Direction.EAST); - scene.world.setBlock(largeCogBack.south(), cogState.with(CogWheelBlock.AXIS, Axis.Z), true); - scene.idle(10); - - scene.effects.rotationDirectionIndicator(largeCogFront.north()); - scene.effects.rotationDirectionIndicator(largeCogBack.south()); - scene.idle(15); - scene.overlay.showText(60) - .pointAt(util.vector.centerOf(3, 2, 5)) - .placeNearTarget() - .text("Straight connections will be reversed"); - - } - - public static void clutch(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("clutch", "Controlling rotational force using a Clutch"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - BlockPos leverPos = util.grid.at(3, 1, 0); - scene.world.showSection(util.select.fromTo(leverPos, leverPos.south()), Direction.UP); - - BlockPos gaugePos = util.grid.at(0, 1, 2); - Selection gauge = util.select.position(gaugePos); - scene.world.showSection(gauge, Direction.UP); - scene.world.setKineticSpeed(gauge, 0); - - scene.idle(5); - scene.world.showSection(util.select.position(5, 1, 2), Direction.DOWN); - scene.idle(10); - - for (int i = 4; i >= 1; i--) { - scene.idle(5); - scene.world.showSection(util.select.position(i, 1, 2), Direction.DOWN); - } - - BlockPos clutch = util.grid.at(3, 1, 2); - - scene.world.setKineticSpeed(gauge, 32); - scene.effects.indicateSuccess(gaugePos); - scene.idle(10); - scene.overlay.showText(50) - .text("Clutches will relay rotation in a straight line") - .placeNearTarget() - .pointAt(util.vector.topOf(clutch)); - - scene.idle(60); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.south(2))); - scene.effects.indicateRedstone(leverPos); - scene.world.setKineticSpeed(util.select.fromTo(0, 1, 2, 2, 1, 2), 0); - scene.idle(10); - - scene.idle(10); - scene.overlay.showText(50) - .colored(PonderPalette.RED) - .text("When powered by Redstone, it breaks the connection") - .placeNearTarget() - .pointAt(util.vector.topOf(clutch)); - - scene.idle(70); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.south(2))); - scene.effects.indicateRedstone(leverPos); - scene.world.setKineticSpeed(util.select.fromTo(0, 1, 2, 2, 1, 2), 32); - scene.effects.indicateSuccess(gaugePos); - } - - public static void gearshift(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("gearshift", "Controlling rotational force using a Gearshift"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - BlockPos leverPos = util.grid.at(3, 1, 0); - scene.world.showSection(util.select.fromTo(leverPos, leverPos.south()), Direction.UP); - - scene.idle(5); - scene.world.showSection(util.select.position(5, 1, 2), Direction.DOWN); - scene.idle(10); - - for (int i = 4; i >= 1; i--) { - scene.idle(5); - scene.world.showSection(util.select.position(i, 1, 2), Direction.DOWN); - } - - BlockPos gearshift = util.grid.at(3, 1, 2); - scene.idle(10); - scene.overlay.showText(50) - .placeNearTarget() - .text("Gearshifts will relay rotation in a straight line") - .pointAt(util.vector.topOf(gearshift)); - - scene.idle(60); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.south(2))); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(util.select.fromTo(0, 1, 2, 2, 2, 2), f -> -f); - scene.effects.rotationDirectionIndicator(gearshift.east(2)); - scene.effects.rotationDirectionIndicator(gearshift.west(2)); - scene.idle(30); - - scene.overlay.showText(50) - .colored(PonderPalette.RED) - .placeNearTarget() - .text("When powered by Redstone, it reverses the transmission") - .pointAt(util.vector.topOf(gearshift)); - - for (int i = 0; i < 3; i++) { - scene.idle(60); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.south(2))); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(util.select.fromTo(0, 1, 2, 2, 2, 2), f -> -f); - scene.effects.rotationDirectionIndicator(gearshift.east(2)); - scene.effects.rotationDirectionIndicator(gearshift.west(2)); - } - } - - public static void creativeMotor(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("creative_motor", "Generating Rotational Force using Creative Motors"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos motor = util.grid.at(3, 1, 2); - - for (int i = 0; i < 3; i++) { - scene.idle(5); - scene.world.showSection(util.select.position(1 + i, 1, 2), Direction.DOWN); - } - - scene.idle(10); - scene.effects.rotationSpeedIndicator(motor); - scene.overlay.showText(50) - .text("Creative motors are a compact and configurable source of Rotational Force") - .placeNearTarget() - .pointAt(util.vector.topOf(motor)); - scene.idle(50); - - scene.rotateCameraY(90); - scene.idle(20); - - Vector3d blockSurface = util.vector.blockSurface(motor, Direction.EAST); - AxisAlignedBB point = new AxisAlignedBB(blockSurface, blockSurface); - AxisAlignedBB expanded = point.grow(1 / 16f, 1 / 5f, 1 / 5f); - - scene.overlay.chaseBoundingBoxOutline(PonderPalette.WHITE, blockSurface, point, 1); - scene.idle(1); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.WHITE, blockSurface, expanded, 60); - scene.overlay.showControls(new InputWindowElement(blockSurface, Pointing.DOWN).scroll(), 60); - scene.idle(20); - - scene.overlay.showText(50) - .text("Scrolling on the back panel changes the RPM of the motors' rotational output") - .placeNearTarget() - .pointAt(blockSurface); - scene.idle(10); - scene.world.modifyKineticSpeed(util.select.fromTo(1, 1, 2, 3, 1, 2), f -> 4 * f); - scene.idle(50); - - scene.effects.rotationSpeedIndicator(motor); - scene.rotateCameraY(-90); - } - - public static void waterWheel(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("water_wheel", "Generating Rotational Force using Water Wheels"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 1, 4, 3, 3) - .add(util.select.fromTo(3, 1, 3, 3, 2, 3)), Direction.DOWN); - scene.world.setKineticSpeed(util.select.everywhere(), 0); - - BlockPos gaugePos = util.grid.at(0, 2, 2); - - for (int i = 0; i < 4; i++) { - scene.idle(5); - scene.world.showSection(util.select.fromTo(gaugePos.east(i) - .down(), gaugePos.east(i)), Direction.DOWN); - } - - scene.idle(10); - - for (int i = 0; i < 3; i++) { - scene.idle(5); - scene.world.showSection(util.select.position(3, 3, 3 - i), Direction.DOWN); - } - scene.world.setKineticSpeed(util.select.everywhere(), -12); - scene.effects.indicateSuccess(gaugePos); - for (int i = 0; i < 2; i++) { - scene.idle(5); - scene.world.showSection(util.select.position(3, 2 - i, 1), Direction.DOWN); - } - - BlockPos wheel = util.grid.at(3, 2, 2); - scene.effects.rotationSpeedIndicator(wheel); - scene.overlay.showText(50) - .text("Water Wheels draw force from adjacent Water Currents") - .placeNearTarget() - .pointAt(util.vector.topOf(wheel)); - scene.idle(50); - - AxisAlignedBB bb = new AxisAlignedBB(wheel).grow(.125f, 0, 0); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.MEDIUM, new Object(), bb.offset(0, 1.2, 0) - .contract(0, .75, 0), 80); - scene.idle(5); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.MEDIUM, new Object(), bb.offset(0, 0, 1.2) - .contract(0, 0, .75), 80); - scene.idle(5); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.MEDIUM, new Object(), bb.offset(0, -1.2, 0) - .contract(0, -.75, 0), 80); - scene.idle(5); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.MEDIUM, new Object(), bb.offset(0, 0, -1.2) - .contract(0, 0, -.75), 80); - scene.idle(5); - scene.overlay.showText(50) - .text("The more faces are powered, the faster the Water Wheel will rotate") - .colored(PonderPalette.MEDIUM) - .placeNearTarget() - .pointAt(util.vector.topOf(wheel)); - - scene.idle(80); - scene.rotateCameraY(-30); - scene.overlay.showText(70) - .text("The Wheels' blades should be oriented against the flow") - .placeNearTarget() - .pointAt(util.vector.topOf(wheel)); - scene.idle(80); - - ElementLink water = scene.world.makeSectionIndependent(util.select.fromTo(3, 1, 1, 3, 3, 1) - .add(util.select.fromTo(3, 3, 2, 3, 3, 3))); - ElementLink wheelElement = scene.world.makeSectionIndependent(util.select.position(wheel)); - - scene.world.setKineticSpeed(util.select.everywhere(), 0); - scene.world.moveSection(water, util.vector.of(0, 2, -2), 10); - scene.world.moveSection(wheelElement, util.vector.of(0, 1, -1), 10); - scene.idle(10); - scene.world.rotateSection(wheelElement, 0, 180, 0, 5); - scene.idle(10); - scene.world.modifyBlock(wheel, s -> s.with(WaterWheelBlock.HORIZONTAL_FACING, Direction.WEST), false); - scene.world.rotateSection(wheelElement, 0, -180, 0, 0); - scene.idle(1); - scene.world.moveSection(water, util.vector.of(0, -2, 2), 10); - scene.world.moveSection(wheelElement, util.vector.of(0, -1, 1), 10); - scene.idle(10); - scene.world.setKineticSpeed(util.select.everywhere(), -8); - - scene.overlay.showText(70) - .colored(PonderPalette.RED) - .text("Facing the opposite way, they will not be as effective") - .placeNearTarget() - .pointAt(util.vector.topOf(wheel)); - scene.idle(80); - - scene.world.setKineticSpeed(util.select.everywhere(), 0); - scene.world.moveSection(water, util.vector.of(0, 2, -2), 10); - scene.world.moveSection(wheelElement, util.vector.of(0, 1, -1), 10); - scene.idle(10); - scene.rotateCameraY(30); - scene.world.rotateSection(wheelElement, 0, 180, 0, 5); - scene.idle(10); - scene.world.modifyBlock(wheel, s -> s.with(WaterWheelBlock.HORIZONTAL_FACING, Direction.EAST), false); - scene.world.rotateSection(wheelElement, 0, -180, 0, 0); - scene.idle(1); - scene.world.moveSection(water, util.vector.of(0, -2, 2), 10); - scene.world.moveSection(wheelElement, util.vector.of(0, -1, 1), 10); - scene.idle(10); - scene.world.setKineticSpeed(util.select.everywhere(), -12); - scene.effects.indicateSuccess(gaugePos); - } - - public static void handCrank(SceneBuilder scene, SceneBuildingUtil util) { - manualSource(scene, util, true); - } - - public static void valveHandle(SceneBuilder scene, SceneBuildingUtil util) { - manualSource(scene, util, false); - scene.world.setKineticSpeed(util.select.everywhere(), 0); - scene.idle(20); - Vector3d centerOf = util.vector.centerOf(2, 2, 2); - scene.overlay.showControls(new InputWindowElement(centerOf, Pointing.DOWN).rightClick() - .withItem(new ItemStack(Items.BLUE_DYE)), 40); - scene.idle(7); - scene.world.modifyBlock(util.grid.at(2, 2, 2), s -> AllBlocks.DYED_VALVE_HANDLES.get(DyeColor.BLUE).getDefaultState() - .with(ValveHandleBlock.FACING, Direction.UP), true); - scene.idle(10); - scene.overlay.showText(70) - .text("Valve handles can be dyed for aesthetic purposes") - .placeNearTarget() - .pointAt(centerOf); - } - - private static void manualSource(SceneBuilder scene, SceneBuildingUtil util, boolean handCrank) { - String name = handCrank ? "Hand Cranks" : "Valve Handles"; - scene.title(handCrank ? "hand_crank" : "valve_handle", "Generating Rotational Force using " + name); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos gaugePos = util.grid.at(1, 3, 3); - BlockPos handlePos = util.grid.at(2, 2, 2); - Selection handleSelect = util.select.position(handlePos); - - scene.world.showSection(util.select.layersFrom(1) - .substract(handleSelect), Direction.DOWN); - scene.idle(10); - scene.world.showSection(handleSelect, Direction.DOWN); - scene.idle(20); - - Vector3d centerOf = util.vector.centerOf(handlePos); - scene.overlay.showText(70) - .text(name + " can be used by players to apply rotational force manually") - .placeNearTarget() - .pointAt(centerOf); - scene.idle(80); - - scene.overlay.showControls(new InputWindowElement(centerOf, Pointing.DOWN).rightClick(), 40); - scene.idle(7); - scene.world.setKineticSpeed(util.select.everywhere(), handCrank ? 32 : 16); - scene.world.modifyKineticSpeed(util.select.column(1, 3), f -> f * -2); - scene.effects.rotationDirectionIndicator(handlePos); - scene.effects.indicateSuccess(gaugePos); - scene.idle(10); - scene.overlay.showText(50) - .text("Hold Right-Click to rotate it Counter-Clockwise") - .placeNearTarget() - .pointAt(centerOf); - scene.idle(70); - scene.overlay.showText(50) - .colored(handCrank ? PonderPalette.MEDIUM : PonderPalette.SLOW) - .text("Its conveyed speed is " + (handCrank ? "relatively high" : "slow and precise")) - .placeNearTarget() - .pointAt(centerOf); - scene.idle(70); - - scene.world.setKineticSpeed(util.select.everywhere(), 0); - scene.idle(10); - - scene.overlay.showControls(new InputWindowElement(centerOf, Pointing.DOWN).rightClick() - .whileSneaking(), 40); - scene.idle(7); - scene.world.setKineticSpeed(util.select.everywhere(), handCrank ? -32 : -16); - scene.world.modifyKineticSpeed(util.select.column(1, 3), f -> f * -2); - scene.effects.rotationDirectionIndicator(handlePos); - scene.effects.indicateSuccess(gaugePos); - scene.idle(10); - scene.overlay.showText(90) - .text("Sneak and Hold Right-Click to rotate it Clockwise") - .placeNearTarget() - .pointAt(centerOf); - scene.idle(90); - } - - public static void sequencedGearshift(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("sequenced_gearshift", "Controlling Rotational Speed using Sequenced Gearshifts"); - scene.configureBasePlate(1, 0, 5); - scene.showBasePlate(); - - Selection redstone = util.select.fromTo(3, 1, 0, 3, 1, 1); - - scene.world.showSection(util.select.position(6, 0, 3) - .add(redstone), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(6, 1, 2, 4, 1, 2), Direction.DOWN); - - BlockPos gearshiftPos = util.grid.at(3, 1, 2); - Selection gearshiftSelection = util.select.position(gearshiftPos); - BlockPos bearingPos = util.grid.at(1, 1, 2); - BlockPos buttonPos = util.grid.at(3, 1, 0); - Selection outputKinetics = util.select.fromTo(3, 1, 2, 1, 1, 2); - - scene.world.setKineticSpeed(gearshiftSelection, 0); - scene.idle(10); - - scene.world.showSection(gearshiftSelection, Direction.DOWN); - scene.idle(10); - - scene.world.showSection(util.select.fromTo(2, 1, 2, 1, 1, 2), Direction.EAST); - scene.idle(10); - - Vector3d top = util.vector.topOf(gearshiftPos); - scene.overlay.showText(60) - .text("Seq. Gearshifts relay rotation by following a timed list of instructions") - .attachKeyFrame() - .pointAt(top) - .placeNearTarget(); - scene.idle(80); - - scene.overlay.showControls(new InputWindowElement(top, Pointing.DOWN).rightClick(), 40); - scene.idle(7); - scene.overlay.showSelectionWithText(gearshiftSelection, 50) - .colored(PonderPalette.BLUE) - .text("Right-click it to open the Configuration UI") - .pointAt(top) - .placeNearTarget(); - scene.idle(60); - - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(0, 3, 2, 0, 0, 2), Direction.EAST); - scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(bearingPos)); - - scene.idle(20); - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(buttonPos); - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, 16); - scene.world.rotateBearing(bearingPos, 90, 40); - scene.world.rotateSection(contraption, 90, 0, 0, 40); - scene.effects.rotationDirectionIndicator(gearshiftPos.west()); - scene.idle(20); - scene.world.toggleRedstonePower(redstone); - scene.idle(20); - - scene.overlay.showText(80) - .text("Upon receiving a Redstone Signal, it will start running its configured sequence") - .attachKeyFrame() - .pointAt(top); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, -32); - scene.world.rotateBearing(bearingPos, -180, 40); - scene.world.rotateSection(contraption, -180, 0, 0, 40); - scene.effects.rotationDirectionIndicator(gearshiftPos.west()); - scene.idle(40); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, 0); - scene.idle(20); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, 16); - scene.world.rotateBearing(bearingPos, 90, 40); - scene.world.rotateSection(contraption, 90, 0, 0, 40); - scene.effects.rotationDirectionIndicator(gearshiftPos.west()); - scene.idle(40); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, 0); - - scene.idle(20); - scene.overlay.showText(70) - .text("Once finished, it waits for the next Redstone Signal and starts over") - .pointAt(util.vector.topOf(util.grid.at(3, 0, 1))); - scene.idle(80); - - scene.idle(20); - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(buttonPos); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, 16); - scene.world.rotateBearing(bearingPos, 90, 40); - scene.world.rotateSection(contraption, 90, 0, 0, 40); - scene.effects.rotationDirectionIndicator(gearshiftPos.west()); - scene.idle(20); - - scene.overlay.showText(60) - .text("A redstone comparator can be used to read the current progress") - .attachKeyFrame() - .pointAt(util.vector.topOf(util.grid.at(3, 0, 1))); - - scene.world.hideSection(redstone, Direction.NORTH); - scene.idle(15); - - BlockPos wire = util.grid.at(5, 1, 0); - Selection nixie = util.select.position(4, 1, 0); - ElementLink comparator = - scene.world.showIndependentSection(util.select.fromTo(5, 1, 1, 4, 1, 0), Direction.SOUTH); - scene.world.moveSection(comparator, util.vector.of(-2, 0, 0), 0); - scene.world.toggleRedstonePower(util.select.position(5, 1, 1)); - scene.world.cycleBlockProperty(wire, RedstoneWireBlock.POWER); - scene.world.modifyTileNBT(nixie, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 1)); - - scene.idle(5); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, -32); - scene.world.rotateBearing(bearingPos, -180, 40); - scene.world.rotateSection(contraption, -180, 0, 0, 40); - scene.effects.rotationDirectionIndicator(gearshiftPos.west()); - scene.world.cycleBlockProperty(wire, RedstoneWireBlock.POWER); - scene.world.modifyTileNBT(nixie, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 2)); - scene.idle(40); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, 0); - scene.world.cycleBlockProperty(wire, RedstoneWireBlock.POWER); - scene.world.modifyTileNBT(nixie, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 3)); - scene.idle(20); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.setKineticSpeed(outputKinetics, 16); - scene.world.rotateBearing(bearingPos, 90, 40); - scene.world.rotateSection(contraption, 90, 0, 0, 40); - scene.effects.rotationDirectionIndicator(gearshiftPos.west()); - scene.world.cycleBlockProperty(wire, RedstoneWireBlock.POWER); - scene.world.modifyTileNBT(nixie, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 4)); - scene.idle(40); - - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.cycleBlockProperty(gearshiftPos, SequencedGearshiftBlock.STATE); - scene.world.modifyBlock(wire, s -> s.with(RedstoneWireBlock.POWER, 0), false); - scene.world.toggleRedstonePower(util.select.position(5, 1, 1)); - scene.world.modifyTileNBT(nixie, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 0)); - scene.world.setKineticSpeed(outputKinetics, 0); - } - - public static void furnaceEngine(SceneBuilder scene, SceneBuildingUtil util) { - furnaceEngine(scene, util, false); - } - - public static void flywheel(SceneBuilder scene, SceneBuildingUtil util) { - furnaceEngine(scene, util, true); - } - - private static void furnaceEngine(SceneBuilder scene, SceneBuildingUtil util, boolean flywheel) { - scene.title(flywheel ? "flywheel" : "furnace_engine", - "Generating Rotational Force using the " + (flywheel ? "Flywheel" : "Furnace Engine")); - scene.configureBasePlate(0, 0, 6); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos furnacePos = util.grid.at(4, 1, 3); - BlockPos cogPos = util.grid.at(1, 1, 2); - BlockPos gaugePos = util.grid.at(1, 1, 1); - - scene.idle(5); - Selection furnaceSelect = util.select.position(furnacePos); - scene.world.showSection(furnaceSelect, Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(furnacePos.west()), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(furnacePos.west(3)), Direction.EAST); - scene.idle(10); - - String text = flywheel ? "Flywheels are required for generating rotational force with the Furnace Engine" - : "Furnace Engines generate Rotational Force while their attached Furnace is running"; - scene.overlay.showText(80) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.topOf(furnacePos.west(flywheel ? 3 : 1))) - .text(text); - scene.idle(90); - - scene.overlay.showControls( - new InputWindowElement(util.vector.topOf(furnacePos), Pointing.DOWN).withItem(new ItemStack(Items.OAK_LOG)), - 30); - scene.idle(5); - scene.overlay - .showControls(new InputWindowElement(util.vector.blockSurface(furnacePos, Direction.NORTH), Pointing.RIGHT) - .withItem(new ItemStack(Items.COAL)), 30); - scene.idle(7); - scene.world.cycleBlockProperty(furnacePos, FurnaceBlock.LIT); - scene.effects.emitParticles(util.vector.of(4.5, 1.2, 2.9), Emitter.simple(ParticleTypes.LAVA, Vector3d.ZERO), 4, - 1); - scene.world.setKineticSpeed(util.select.fromTo(1, 1, 3, 1, 1, 1), 16); - scene.idle(40); - - scene.world.showSection(util.select.position(cogPos), Direction.SOUTH); - scene.idle(15); - scene.effects.rotationSpeedIndicator(cogPos); - scene.world.showSection(util.select.position(gaugePos), Direction.SOUTH); - scene.idle(15); - - scene.overlay.showText(80) - .attachKeyFrame() - .placeNearTarget() - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(gaugePos, Direction.WEST)) - .text("The provided Rotational Force has a very large stress capacity"); - scene.idle(90); - - ElementLink engine = - scene.world.makeSectionIndependent(util.select.fromTo(3, 1, 3, 1, 1, 1)); - scene.world.moveSection(engine, util.vector.of(0, 1, 0), 15); - scene.idle(10); - scene.world.hideSection(furnaceSelect, Direction.NORTH); - scene.idle(15); - scene.world.setBlock(furnacePos, Blocks.BLAST_FURNACE.getDefaultState() - .with(FurnaceBlock.FACING, Direction.NORTH) - .with(FurnaceBlock.LIT, true), false); - scene.world.showSection(furnaceSelect, Direction.NORTH); - scene.idle(10); - scene.world.moveSection(engine, util.vector.of(0, -1, 0), 15); - scene.idle(10); - scene.world.setKineticSpeed(util.select.fromTo(1, 1, 3, 1, 1, 1), 32); - scene.idle(5); - scene.effects.rotationSpeedIndicator(cogPos); - - scene.overlay.showText(80) - .placeNearTarget() - .colored(PonderPalette.MEDIUM) - .pointAt(util.vector.topOf(furnacePos.west())) - .text("Using a Blast Furnace will double the efficiency of the Engine"); - - } - - public static void speedController(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("rotation_speed_controller", "Using the Rotational Speed Controller"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos cogPos = util.grid.at(1, 2, 1); - Selection gaugeSelect = util.select.position(1, 2, 3); - - scene.world.multiplyKineticSpeed(util.select.everywhere(), 0.5f); - scene.world.setKineticSpeed(gaugeSelect, 0); - scene.world.showSection(util.select.fromTo(5, 1, 1, 2, 1, 1), Direction.DOWN); - scene.world.showSection(util.select.fromTo(1, 1, 3, 1, 2, 3), Direction.DOWN); - scene.idle(10); - ElementLink rsc = - scene.world.showIndependentSection(util.select.position(0, 1, 1), Direction.DOWN); - scene.world.moveSection(rsc, util.vector.of(1, 0, 0), 0); - ElementLink rsc2 = - scene.world.showIndependentSection(util.select.position(1, 1, 1), Direction.DOWN); - scene.world.moveSection(rsc2, util.vector.of(0, -100, 0), 0); - scene.idle(10); - scene.world.showSection(util.select.position(1, 2, 1), Direction.DOWN); - scene.idle(15); - scene.effects.indicateSuccess(cogPos); - scene.world.moveSection(rsc2, util.vector.of(0, 100, 0), 0); - scene.world.moveSection(rsc, util.vector.of(0, -100, 0), 0); - scene.idle(5); - scene.world.showSection(util.select.position(1, 2, 2), Direction.DOWN); - scene.idle(10); - scene.world.setKineticSpeed(gaugeSelect, 8); - scene.effects.indicateSuccess(util.grid.at(1, 2, 3)); - - scene.overlay.showText(90) - .placeNearTarget() - .attachKeyFrame() - .pointAt(util.vector.blockSurface(cogPos, Direction.NORTH)) - .text("Rot. Speed Controllers relay rotation from their axis to a Large Cogwheel above them"); - scene.idle(100); - - Vector3d inputVec = util.vector.of(1.5, 1.75, 1); - scene.overlay.showFilterSlotInput(inputVec, 60); - - scene.overlay.showText(70) - .placeNearTarget() - .attachKeyFrame() - .pointAt(inputVec) - .text("Using the scroll input on its side, the conveyed speed can be configured"); - scene.idle(80); - - InputWindowElement input = new InputWindowElement(inputVec, Pointing.UP).scroll(); - scene.overlay.showControls(input, 40); - scene.idle(15); - scene.world.multiplyKineticSpeed(util.select.fromTo(1, 2, 1, 1, 2, 3), 4); - scene.effects.rotationSpeedIndicator(cogPos); - scene.idle(55); - scene.markAsFinished(); - - scene.overlay.showControls(input, 30); - scene.idle(15); - scene.world.multiplyKineticSpeed(util.select.fromTo(1, 2, 1, 1, 2, 3), 4); - scene.effects.rotationSpeedIndicator(cogPos); - scene.idle(55); - - scene.overlay.showControls(input, 30); - scene.idle(15); - scene.world.multiplyKineticSpeed(util.select.fromTo(1, 2, 1, 1, 2, 3), -.05f); - scene.effects.rotationSpeedIndicator(cogPos); - scene.idle(35); - } - - public static void speedometer(SceneBuilder scene, SceneBuildingUtil util) { - gauge(scene, util, true); - } - - public static void stressometer(SceneBuilder scene, SceneBuildingUtil util) { - gauge(scene, util, false); - } - - private static void gauge(SceneBuilder scene, SceneBuildingUtil util, boolean speed) { - String component = speed ? "Speedometer" : "Stressometer"; - String title = "Monitoring Kinetic information using the " + component; - scene.title(speed ? "speedometer" : "stressometer", title); - scene.configureBasePlate(1, 0, 5); - - BlockPos gaugePos = util.grid.at(2, 1, 3); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - for (int x = 6; x >= 0; x--) { - scene.idle(2); - scene.world.showSection(util.select.position(x, 1, 3), Direction.DOWN); - } - scene.idle(10); - - scene.world.setBlock(gaugePos, (speed ? AllBlocks.SPEEDOMETER : AllBlocks.STRESSOMETER).getDefaultState() - .with(GaugeBlock.FACING, Direction.UP), true); - scene.world.setKineticSpeed(util.select.position(gaugePos), 32); - scene.idle(10); - - scene.overlay.showText(80) - .text("The " + component + " displays the current " + (speed ? "Speed" : "Stress Capacity") - + " of the attached " + (speed ? "components" : "kinetic network")) - .attachKeyFrame() - .pointAt(util.vector.topOf(gaugePos)) - .placeNearTarget(); - scene.idle(90); - - if (speed) { - scene.world.multiplyKineticSpeed(util.select.everywhere(), 4); - scene.effects.rotationSpeedIndicator(util.grid.at(6, 1, 3)); - scene.idle(5); - scene.effects.indicateSuccess(gaugePos); - - } else { - BlockState state = AllBlocks.CRUSHING_WHEEL.getDefaultState() - .with(CrushingWheelBlock.AXIS, Axis.X); - scene.world.setBlock(util.grid.at(5, 1, 3), state, true); - scene.world.setKineticSpeed(util.select.position(5, 1, 3), 32); - scene.world.modifyTileNBT(util.select.position(gaugePos), StressGaugeTileEntity.class, - nbt -> nbt.putFloat("Value", .5f)); - scene.effects.indicateRedstone(gaugePos); - scene.idle(20); - scene.world.setBlock(util.grid.at(4, 1, 3), state, true); - scene.world.setKineticSpeed(util.select.position(4, 1, 3), 32); - scene.world.modifyTileNBT(util.select.position(gaugePos), StressGaugeTileEntity.class, - nbt -> nbt.putFloat("Value", .9f)); - scene.effects.indicateRedstone(gaugePos); - scene.idle(10); - } - - scene.idle(30); - - Vector3d blockSurface = util.vector.blockSurface(gaugePos, Direction.NORTH); - scene.overlay.showControls( - new InputWindowElement(blockSurface, Pointing.RIGHT).withItem(AllItems.GOGGLES.asStack()), 40); - scene.idle(7); - scene.overlay.showText(80) - .text("When wearing Engineers' Goggles, the player can get more detailed information from the Gauge") - .attachKeyFrame() - .colored(PonderPalette.MEDIUM) - .pointAt(blockSurface) - .placeNearTarget(); - scene.idle(100); - - Selection comparator = util.select.fromTo(2, 1, 1, 2, 1, 2); - scene.world.showSection(comparator, Direction.SOUTH); - scene.idle(10); - scene.world.toggleRedstonePower(comparator); - scene.effects.indicateRedstone(util.grid.at(2, 1, 2)); - scene.idle(20); - - scene.overlay.showText(120) - .text("Comparators can emit analog Restone Signals relative to the " + component + "'s measurements") - .attachKeyFrame() - .colored(PonderPalette.RED) - .pointAt(util.vector.centerOf(2, 1, 2) - .add(0, -0.35, 0)) - .placeNearTarget(); - scene.idle(130); - scene.markAsFinished(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalDrillScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalDrillScenes.java deleted file mode 100644 index ea3e48654..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalDrillScenes.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class MechanicalDrillScenes { - - public static void breaker(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_drill", "Breaking Blocks with the Mechanical Drill"); - scene.configureBasePlate(0, 0, 5); - - scene.world.setKineticSpeed(util.select.layer(0), -8); - scene.world.setKineticSpeed(util.select.layer(1), 16); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 2, 5, 1, 2), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(3, 1, 2), Direction.EAST); - scene.idle(20); - - BlockPos breakingPos = util.grid.at(2, 1, 2); - - scene.world.showSection(util.select.position(2, 1, 2), Direction.DOWN); - scene.idle(5); - for (int i = 0; i < 10; i++) { - scene.idle(10); - scene.world.incrementBlockBreakingProgress(breakingPos); - if (i == 1) { - scene.overlay.showText(80) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.topOf(breakingPos)) - .text("When given Rotational Force, a Mechanical Drill will break blocks directly in front of it"); - } - } - - scene.world.hideSection(util.select.position(breakingPos), Direction.UP); - ElementLink plankEntity = scene.world.createItemEntity(util.vector.centerOf(breakingPos), - util.vector.of(0, .1f, 0), new ItemStack(Items.OAK_PLANKS)); - scene.idle(20); - scene.idle(15); - - scene.world.modifyEntity(plankEntity, Entity::remove); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> 4 * f); - scene.effects.rotationSpeedIndicator(breakingPos.east(3)); - scene.idle(5); - scene.world.setBlock(breakingPos, Blocks.OAK_PLANKS.getDefaultState(), false); - scene.world.showSection(util.select.position(breakingPos), Direction.DOWN); - - scene.idle(5); - for (int i = 0; i < 10; i++) { - scene.idle(3); - scene.world.incrementBlockBreakingProgress(breakingPos); - if (i == 2) { - scene.overlay.showText(80) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.topOf(breakingPos.east())) - .text("Its mining speed depends on the Rotational Input"); - } - } - - scene.world.createItemEntity(util.vector.centerOf(breakingPos), util.vector.of(0, .1f, 0), - new ItemStack(Items.OAK_PLANKS)); - } - - public static void contraption(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_drill_contraption", "Using Mechanical Drills on Contraptions"); - scene.configureBasePlate(0, 0, 6); - scene.world.showSection(util.select.layer(0), Direction.UP); - - Selection kinetics = util.select.fromTo(5, 1, 2, 5, 1, 6); - - scene.idle(5); - ElementLink pistonHead = - scene.world.showIndependentSection(util.select.fromTo(5, 1, 1, 7, 1, 1), Direction.DOWN); - scene.world.moveSection(pistonHead, util.vector.of(0, 0, 1), 0); - scene.world.showSection(kinetics, Direction.DOWN); - scene.idle(5); - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(4, 2, 3, 4, 1, 2), Direction.DOWN); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(3, 1, 3), Direction.EAST, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(3, 1, 2), Direction.EAST, contraption); - scene.world.showSectionAndMerge(util.select.position(3, 2, 3), Direction.EAST, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(3, 2, 2), Direction.EAST, contraption); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.topOf(util.grid.at(3, 2, 3))) - .text("Whenever Drills are moved as part of an animated Contraption..."); - scene.idle(70); - - Selection drills = util.select.fromTo(3, 1, 2, 3, 2, 3); - - Selection planks = util.select.fromTo(1, 1, 2, 1, 2, 3); - scene.world.showSection(planks, Direction.DOWN); - scene.world.setKineticSpeed(util.select.position(4, 0, 6), -8); - scene.world.setKineticSpeed(kinetics, 16); - scene.world.setKineticSpeed(drills, 16); - scene.world.moveSection(pistonHead, util.vector.of(-1, 0, 0), 20); - scene.world.moveSection(contraption, util.vector.of(-1, 0, 0), 20); - scene.idle(20); - scene.world.setKineticSpeed(drills, 64); - - BlockPos p1 = util.grid.at(1, 1, 2); - BlockPos p2 = util.grid.at(1, 1, 3); - BlockPos p3 = util.grid.at(1, 2, 2); - BlockPos p4 = util.grid.at(1, 2, 3); - - for (int i = 0; i < 10; i++) { - scene.idle(3); - scene.world.incrementBlockBreakingProgress(p1); - scene.world.incrementBlockBreakingProgress(p2); - scene.world.incrementBlockBreakingProgress(p3); - scene.world.incrementBlockBreakingProgress(p4); - if (i == 2) { - scene.overlay.showText(80) - .placeNearTarget() - .pointAt(util.vector.topOf(p3)) - .text("...they will break blocks the contraption runs them into"); - } - } - - Vector3d m = util.vector.of(-.1, 0, 0); - ItemStack item = new ItemStack(Items.OAK_PLANKS); - scene.world.createItemEntity(util.vector.centerOf(p1), m, item); - scene.world.createItemEntity(util.vector.centerOf(p2), m, item); - scene.world.createItemEntity(util.vector.centerOf(p3), m, item); - scene.world.createItemEntity(util.vector.centerOf(p4), m, item); - - scene.world.setKineticSpeed(drills, 16); - scene.world.moveSection(pistonHead, util.vector.of(-1, 0, 0), 20); - scene.world.moveSection(contraption, util.vector.of(-1, 0, 0), 20); - scene.idle(20); - scene.world.setKineticSpeed(drills, 0); - scene.idle(20); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.moveSection(pistonHead, util.vector.of(2, 0, 0), 40); - scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40); - scene.world.hideSection(planks, Direction.UP); - scene.idle(40); - - scene.world.setBlocks(planks, Blocks.OAK_PLANKS.getDefaultState(), false); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.glueBlockOnto(util.grid.at(4, 3, 2), Direction.DOWN, contraption); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(4, 3, 2), Direction.WEST)) - .sharedText("storage_on_contraption"); - scene.idle(70); - - scene.world.showSection(planks, Direction.DOWN); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.setKineticSpeed(drills, 16); - scene.world.moveSection(pistonHead, util.vector.of(-1, 0, 0), 20); - scene.world.moveSection(contraption, util.vector.of(-1, 0, 0), 20); - - scene.idle(20); - scene.world.setKineticSpeed(drills, 64); - - for (int i = 0; i < 10; i++) { - scene.idle(3); - scene.world.incrementBlockBreakingProgress(p1); - scene.world.incrementBlockBreakingProgress(p2); - scene.world.incrementBlockBreakingProgress(p3); - scene.world.incrementBlockBreakingProgress(p4); - } - - scene.world.setKineticSpeed(drills, 16); - scene.world.moveSection(pistonHead, util.vector.of(-1, 0, 0), 20); - scene.world.moveSection(contraption, util.vector.of(-1, 0, 0), 20); - scene.idle(20); - scene.world.setKineticSpeed(drills, 0); - scene.idle(10); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(2, 3, 2), Pointing.DOWN) - .withItem(new ItemStack(Blocks.OAK_PLANKS)), 60); - scene.idle(20); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalSawScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalSawScenes.java deleted file mode 100644 index 136722b35..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/MechanicalSawScenes.java +++ /dev/null @@ -1,396 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.saw.SawTileEntity; -import com.simibubi.create.content.contraptions.relays.elementary.ShaftBlock; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class MechanicalSawScenes { - - public static void processing(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_saw_processing", "Processing Items on the Mechanical Saw"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos shaftPos = util.grid.at(2, 1, 3); - scene.world.setBlock(shaftPos, AllBlocks.SHAFT.getDefaultState() - .with(ShaftBlock.AXIS, Axis.Z), false); - - BlockPos sawPos = util.grid.at(2, 1, 2); - Selection sawSelect = util.select.position(sawPos); - scene.world.modifyTileNBT(sawSelect, SawTileEntity.class, nbt -> nbt.putInt("RecipeIndex", 0)); - - scene.idle(5); - scene.world.showSection(util.select.fromTo(2, 1, 3, 2, 1, 5), Direction.DOWN); - scene.idle(10); - scene.effects.rotationDirectionIndicator(shaftPos); - scene.world.showSection(sawSelect, Direction.DOWN); - scene.idle(10); - scene.overlay.showText(50) - .attachKeyFrame() - .text("Upward facing Mechanical Saws can process a variety of items") - .pointAt(util.vector.blockSurface(sawPos, Direction.WEST)) - .placeNearTarget(); - scene.idle(45); - - ItemStack log = new ItemStack(Items.OAK_LOG); - ItemStack strippedLog = new ItemStack(Items.STRIPPED_OAK_LOG); - ItemStack planks = new ItemStack(Items.OAK_PLANKS); - - Vector3d itemSpawn = util.vector.centerOf(sawPos.up() - .west()); - ElementLink logItem = scene.world.createItemEntity(itemSpawn, util.vector.of(0, 0, 0), log); - scene.idle(12); - - scene.overlay.showControls(new InputWindowElement(itemSpawn, Pointing.DOWN).withItem(log), 20); - scene.idle(10); - - scene.world.modifyEntity(logItem, e -> e.setMotion(util.vector.of(0.05, 0.2, 0))); - scene.idle(12); - - scene.world.modifyEntity(logItem, Entity::remove); - scene.world.createItemOnBeltLike(sawPos, Direction.WEST, log); - scene.idle(30); - - logItem = scene.world.createItemEntity(util.vector.topOf(sawPos) - .add(0.5, -.1, 0), util.vector.of(0.05, 0.18, 0), strippedLog); - scene.idle(12); - scene.overlay.showControls(new InputWindowElement(itemSpawn.add(2, 0, 0), Pointing.DOWN).withItem(strippedLog), - 20); - scene.idle(30); - - scene.overlay.showText(60) - .attachKeyFrame() - .text("The processed item always moves against the rotational input to the saw") - .pointAt(util.vector.blockSurface(sawPos, Direction.UP)) - .placeNearTarget(); - scene.idle(70); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -2 * f); - scene.effects.rotationDirectionIndicator(shaftPos); - scene.world.modifyEntity(logItem, e -> e.setMotion(util.vector.of(-0.05, 0.2, 0))); - scene.idle(12); - - scene.world.modifyEntity(logItem, Entity::remove); - scene.world.createItemOnBeltLike(sawPos, Direction.EAST, strippedLog); - scene.idle(40); - - logItem = scene.world.createItemEntity(util.vector.topOf(sawPos) - .add(-0.5, -.1, 0), util.vector.of(-0.05, 0.18, 0), planks); - scene.idle(22); - - Selection otherBelt = util.select.fromTo(3, 1, 3, 4, 1, 2); - Selection belt = util.select.fromTo(0, 1, 2, 1, 1, 3); - - scene.world.setKineticSpeed(otherBelt, 0); - scene.world.setKineticSpeed(belt, 0); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.modifyEntity(logItem, Entity::remove); - scene.world.setBlock(shaftPos, AllBlocks.COGWHEEL.getDefaultState() - .with(ShaftBlock.AXIS, Axis.Z), true); - scene.idle(3); - scene.addKeyframe(); - - ElementLink beltSection = scene.world.showIndependentSection(belt, Direction.EAST); - scene.world.moveSection(beltSection, util.vector.of(0, 100, 0), 0); - scene.idle(1); - scene.world.removeItemsFromBelt(util.grid.at(1, 1, 2)); - scene.idle(1); - scene.world.setKineticSpeed(belt, -64); - scene.idle(1); - scene.world.moveSection(beltSection, util.vector.of(0, -100, 0), 0); - scene.idle(3); - - ElementLink otherBeltSection = - scene.world.showIndependentSection(otherBelt, Direction.WEST); - scene.world.moveSection(otherBeltSection, util.vector.of(0, 100, 0), 0); - scene.idle(1); - scene.world.removeItemsFromBelt(util.grid.at(3, 1, 2)); - scene.idle(1); - scene.world.setKineticSpeed(otherBelt, -64); - scene.idle(1); - scene.world.moveSection(otherBeltSection, util.vector.of(0, -100, 0), 0); - scene.idle(3); - - ItemStack stone = new ItemStack(Blocks.STONE); - BlockPos firstBelt = util.grid.at(0, 1, 2); - scene.world.createItemOnBelt(firstBelt, Direction.WEST, stone); - scene.overlay.showText(60) - .text("Saws can work in-line with Mechanical Belts") - .pointAt(util.vector.blockSurface(firstBelt, Direction.WEST)) - .placeNearTarget(); - scene.idle(60); - scene.rotateCameraY(-90); - scene.idle(20); - - Vector3d filter = util.vector.of(2.5, 1 + 13 / 16f, 2.75); - scene.overlay.showFilterSlotInput(filter, 80); - ItemStack bricks = new ItemStack(Blocks.STONE_BRICKS); - scene.overlay.showControls(new InputWindowElement(filter, Pointing.DOWN).withItem(bricks), 80); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.idle(7); - scene.world.setFilterData(util.select.position(sawPos), SawTileEntity.class, bricks); - scene.idle(10); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("When an ingredient has multiple possible outcomes, the filter slot can specify it") - .pointAt(filter) - .placeNearTarget(); - scene.idle(90); - - scene.rotateCameraY(90); - scene.world.createItemOnBelt(firstBelt, Direction.WEST, stone); - scene.idle(20); - - scene.markAsFinished(); - scene.overlay.showText(100) - .text("Without filter, the Saw would cycle through all outcomes instead") - .colored(PonderPalette.RED) - .pointAt(filter) - .placeNearTarget(); - scene.idle(65); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - } - - public static void treeCutting(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_saw_breaker", "Cutting Trees with the Mechanical Saw"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(.9f); - scene.world.setBlock(util.grid.at(2, 0, 2), Blocks.GRASS_BLOCK.getDefaultState(), false); - scene.world.showSection(util.select.layer(0) - .add(util.select.position(3, 1, 1)) - .add(util.select.position(1, 1, 2)), Direction.UP); - - scene.world.setKineticSpeed(util.select.position(5, 0, 1), -8); - scene.world.setKineticSpeed(util.select.fromTo(3, 1, 2, 5, 1, 2), 16); - - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 2, 5, 1, 2), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(3, 1, 2), Direction.DOWN); - - scene.idle(20); - scene.world.showSection(util.select.fromTo(2, 1, 2, 2, 3, 2), Direction.UP); - scene.world.showSection(util.select.layersFrom(4), Direction.UP); - - BlockPos breakingPos = util.grid.at(2, 1, 2); - scene.idle(5); - for (int i = 0; i < 10; i++) { - scene.idle(10); - scene.world.incrementBlockBreakingProgress(breakingPos); - if (i == 1) { - scene.overlay.showText(80) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(breakingPos, Direction.WEST)) - .text("When given Rotational Force, a Mechanical Saw will cut trees directly in front of it"); - } - } - - scene.world.replaceBlocks(util.select.fromTo(2, 2, 2, 2, 6, 2), Blocks.AIR.getDefaultState(), true); - - scene.world.destroyBlock(util.grid.at(3, 5, 0)); - scene.world.destroyBlock(util.grid.at(0, 4, 1)); - scene.world.destroyBlock(util.grid.at(2, 6, 1)); - scene.world.destroyBlock(util.grid.at(1, 4, 0)); - scene.world.destroyBlock(util.grid.at(1, 6, 2)); - scene.world.destroyBlock(util.grid.at(1, 5, 3)); - scene.world.destroyBlock(util.grid.at(0, 4, 3)); - - scene.world.replaceBlocks(util.select.layersFrom(4), Blocks.AIR.getDefaultState(), false); - - for (int i = 0; i < 5; i++) { - Vector3d dropPos = util.vector.centerOf(breakingPos.up(i)); - float distance = (float) dropPos.distanceTo(util.vector.centerOf(breakingPos)); - scene.world.createItemEntity(dropPos, util.vector.of(-distance / 20, 0, 0), new ItemStack(Items.OAK_LOG)); - } - - scene.idle(35); - scene.world.destroyBlock(util.grid.at(1, 1, 2)); - scene.world.hideSection(util.select.layersFrom(2) - .add(util.select.fromTo(2, 1, 2, 1, 1, 3)), Direction.UP); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.idle(15); - scene.world.setBlocks(util.select.fromTo(2, 1, 2, 1, 20, 3), Blocks.JUNGLE_LOG.getDefaultState(), false); - scene.world.showSection(util.select.layersFrom(2) - .add(util.select.fromTo(2, 1, 2, 1, 1, 3)), Direction.UP); - scene.idle(15); - - scene.world.hideSection(util.select.fromTo(2, 1, 2, 1, 1, 3) - .substract(util.select.position(breakingPos)), Direction.WEST); - scene.idle(10); - scene.overlay.showSelectionWithText(util.select.position(breakingPos), 90) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .placeNearTarget() - .text("In order to cut the tree fully, the Saw has to break the last block connecting it to the ground"); - - scene.idle(25); - for (int i = 0; i < 10; i++) { - scene.idle(10); - scene.world.incrementBlockBreakingProgress(breakingPos); - } - - for (int i = 0; i < 30; i++) { - scene.world.replaceBlocks(util.select.fromTo(2, i + 1, 2, 1, i + 1, 3), Blocks.AIR.getDefaultState(), true); - for (int x = 1; x <= 2; x++) { - for (int z = 2; z <= 3; z++) { - Vector3d dropPos = util.vector.centerOf(x, i + 1, z); - float distance = (float) dropPos.distanceTo(util.vector.centerOf(breakingPos)); - scene.world.createItemEntity(dropPos, util.vector.of(-distance / 20, 0, 0), - new ItemStack(Items.JUNGLE_LOG)); - } - } - scene.idle(1); - } - } - - public static void contraption(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_saw_contraption", "Using Mechanical Saws on Contraptions"); - scene.configureBasePlate(1, 0, 6); - scene.scaleSceneView(.9f); - scene.world.setBlock(util.grid.at(2, 0, 3), Blocks.GRASS_BLOCK.getDefaultState(), false); - scene.world.showSection(util.select.layer(0) - .add(util.select.position(3, 1, 1)) - .add(util.select.position(1, 1, 2)) - .add(util.select.position(2, 1, 4)), Direction.UP); - - Selection kinetics = util.select.fromTo(6, 1, 2, 6, 1, 6); - - scene.idle(5); - ElementLink pistonHead = - scene.world.showIndependentSection(util.select.fromTo(6, 1, 1, 8, 1, 1), Direction.DOWN); - scene.world.moveSection(pistonHead, util.vector.of(0, 0, 1), 0); - scene.world.showSection(kinetics, Direction.DOWN); - scene.idle(5); - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(5, 1, 3, 5, 1, 2), Direction.DOWN); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(4, 1, 3), Direction.EAST, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(4, 1, 2), Direction.EAST, contraption); - scene.idle(5); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.topOf(util.grid.at(4, 1, 3))) - .text("Whenever Saws are moved as part of an animated Contraption..."); - scene.idle(70); - - Selection saws = util.select.fromTo(4, 1, 2, 4, 1, 3); - - Selection tree = util.select.fromTo(2, 1, 3, 2, 7, 3) - .add(util.select.layersFrom(3)); - scene.world.showSection(tree, Direction.UP); - scene.world.setKineticSpeed(util.select.position(5, 0, 6), -8); - scene.world.setKineticSpeed(kinetics, 16); - scene.world.setKineticSpeed(saws, 16); - scene.world.moveSection(pistonHead, util.vector.of(-1, 0, 0), 20); - scene.world.moveSection(contraption, util.vector.of(-1, 0, 0), 20); - scene.idle(20); - - BlockPos breakingPos = util.grid.at(2, 1, 3); - - for (int i = 0; i < 10; i++) { - scene.idle(3); - scene.world.incrementBlockBreakingProgress(breakingPos); - if (i == 2) { - scene.overlay.showText(80) - .placeNearTarget() - .pointAt(util.vector.blockSurface(breakingPos, Direction.WEST)) - .text("...they will cut any trees the contraption runs them into"); - } - } - - scene.world.replaceBlocks(util.select.fromTo(2, 2, 3, 2, 6, 3), Blocks.AIR.getDefaultState(), true); - scene.world.destroyBlock(util.grid.at(4, 5, 1)); - scene.world.destroyBlock(util.grid.at(1, 4, 2)); - scene.world.destroyBlock(util.grid.at(3, 6, 2)); - scene.world.destroyBlock(util.grid.at(2, 4, 1)); - scene.world.destroyBlock(util.grid.at(2, 6, 3)); - scene.world.destroyBlock(util.grid.at(2, 5, 2)); - scene.world.destroyBlock(util.grid.at(1, 4, 2)); - scene.world.replaceBlocks(util.select.layersFrom(4), Blocks.AIR.getDefaultState(), false); - - for (int i = 0; i < 5; i++) { - Vector3d dropPos = util.vector.centerOf(breakingPos.up(i)); - float distance = (float) dropPos.distanceTo(util.vector.centerOf(breakingPos)); - scene.world.createItemEntity(dropPos, util.vector.of(-distance / 20, 0, 0), new ItemStack(Items.OAK_LOG)); - } - - scene.world.moveSection(pistonHead, util.vector.of(-1, 0, 0), 20); - scene.world.moveSection(contraption, util.vector.of(-1, 0, 0), 20); - scene.idle(20); - scene.world.setKineticSpeed(saws, 0); - scene.idle(20); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.moveSection(pistonHead, util.vector.of(2, 0, 0), 40); - scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40); - scene.world.hideSection(tree, Direction.UP); - scene.idle(40); - - scene.world.restoreBlocks(tree); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.glueBlockOnto(util.grid.at(5, 2, 2), Direction.DOWN, contraption); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(5, 2, 2), Direction.WEST)) - .sharedText("storage_on_contraption"); - scene.idle(70); - - scene.world.showSection(tree, Direction.DOWN); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.setKineticSpeed(saws, 16); - scene.world.moveSection(pistonHead, util.vector.of(-1, 0, 0), 20); - scene.world.moveSection(contraption, util.vector.of(-1, 0, 0), 20); - scene.idle(20); - - for (int i = 0; i < 10; i++) { - scene.idle(3); - scene.world.incrementBlockBreakingProgress(breakingPos); - } - - scene.world.replaceBlocks(util.select.fromTo(2, 2, 3, 2, 6, 3), Blocks.AIR.getDefaultState(), true); - scene.world.destroyBlock(util.grid.at(4, 5, 1)); - scene.world.destroyBlock(util.grid.at(1, 4, 2)); - scene.world.destroyBlock(util.grid.at(3, 6, 2)); - scene.world.destroyBlock(util.grid.at(2, 4, 1)); - scene.world.destroyBlock(util.grid.at(2, 6, 3)); - scene.world.destroyBlock(util.grid.at(2, 5, 2)); - scene.world.destroyBlock(util.grid.at(1, 4, 2)); - scene.world.replaceBlocks(util.select.layersFrom(4), Blocks.AIR.getDefaultState(), false); - - scene.world.moveSection(pistonHead, util.vector.of(-1, 0, 0), 20); - scene.world.moveSection(contraption, util.vector.of(-1, 0, 0), 20); - scene.idle(20); - scene.world.setKineticSpeed(saws, 0); - scene.idle(10); - scene.overlay.showControls( - new InputWindowElement(util.vector.topOf(3, 2, 2), Pointing.DOWN).withItem(new ItemStack(Blocks.OAK_LOG)), - 60); - scene.idle(20); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java deleted file mode 100644 index cecbcfeef..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/MovementActorScenes.java +++ /dev/null @@ -1,509 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.actors.HarvesterTileEntity; -import com.simibubi.create.content.contraptions.components.actors.PortableItemInterfaceTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.LinearChassisBlock; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FlappyPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.CropsBlock; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class MovementActorScenes { - - public static void psiTransfer(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("portable_storage_interface", "Contraption Storage Exchange"); - scene.configureBasePlate(0, 0, 6); - scene.scaleSceneView(0.95f); - scene.setSceneOffsetY(-1); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - BlockPos bearing = util.grid.at(5, 1, 2); - scene.world.showSection(util.select.position(bearing), Direction.DOWN); - scene.idle(5); - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(5, 2, 2, 6, 3, 2), Direction.DOWN); - scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(bearing)); - scene.idle(10); - scene.world.rotateBearing(bearing, 360, 70); - scene.world.rotateSection(contraption, 0, 360, 0, 70); - scene.overlay.showText(60) - .pointAt(util.vector.topOf(bearing.up(2))) - .colored(PonderPalette.RED) - .placeNearTarget() - .text("Inventories on moving contraptions cannot be accessed by players."); - - scene.idle(70); - BlockPos psi = util.grid.at(4, 2, 2); - scene.world.showSectionAndMerge(util.select.position(psi), Direction.EAST, contraption); - scene.idle(13); - scene.effects.superGlue(psi, Direction.EAST, true); - - scene.overlay.showText(80) - .pointAt(util.vector.topOf(psi)) - .colored(PonderPalette.GREEN) - .placeNearTarget() - .text("This component can interact with storage without the need to stop the contraption."); - scene.idle(90); - - BlockPos psi2 = psi.west(2); - scene.world.showSection(util.select.position(psi2), Direction.DOWN); - scene.overlay.showSelectionWithText(util.select.position(psi.west()), 50) - .colored(PonderPalette.RED) - .placeNearTarget() - .text("Place a second one with a gap of 1 or 2 blocks inbetween"); - scene.idle(55); - - scene.world.rotateBearing(bearing, 360, 60); - scene.world.rotateSection(contraption, 0, 360, 0, 60); - scene.idle(20); - - scene.overlay.showText(40) - .placeNearTarget() - .pointAt(util.vector.of(3, 3, 2.5)) - .text("Whenever they pass by each other, they will engage in a connection"); - scene.idle(35); - - Selection both = util.select.fromTo(2, 2, 2, 4, 2, 2); - Class psiClass = PortableItemInterfaceTileEntity.class; - - scene.world.modifyTileNBT(both, psiClass, nbt -> { - nbt.putFloat("Distance", 1); - nbt.putFloat("Timer", 40); - }); - - scene.idle(20); - scene.overlay.showOutline(PonderPalette.GREEN, psi, util.select.fromTo(5, 3, 2, 6, 3, 2), 80); - scene.idle(10); - - scene.overlay.showSelectionWithText(util.select.position(psi2), 70) - .placeNearTarget() - .colored(PonderPalette.GREEN) - .text("While engaged, the stationary interface will represent ALL inventories on the contraption"); - - scene.idle(80); - - BlockPos hopper = util.grid.at(2, 3, 2); - scene.world.showSection(util.select.position(hopper), Direction.DOWN); - scene.overlay.showText(70) - .placeNearTarget() - .pointAt(util.vector.topOf(hopper)) - .text("Items can now be inserted..."); - - ItemStack itemStack = AllItems.COPPER_INGOT.asStack(); - Vector3d entitySpawn = util.vector.topOf(hopper.up(3)); - - ElementLink entity1 = - scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), itemStack); - scene.idle(10); - ElementLink entity2 = - scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), itemStack); - scene.idle(10); - scene.world.modifyEntity(entity1, Entity::remove); - scene.idle(10); - scene.world.modifyEntity(entity2, Entity::remove); - - scene.overlay - .showControls(new InputWindowElement(util.vector.topOf(5, 3, 2), Pointing.DOWN).withItem(itemStack), 40); - - scene.idle(30); - scene.world.hideSection(util.select.position(hopper), Direction.UP); - scene.idle(15); - - BlockPos beltPos = util.grid.at(1, 1, 2); - scene.world.showSection(util.select.fromTo(0, 1, 0, 1, 2, 6), Direction.DOWN); - scene.idle(10); - scene.world.createItemOnBelt(beltPos, Direction.EAST, itemStack.copy()); - scene.overlay.showText(40) - .placeNearTarget() - .pointAt(util.vector.topOf(beltPos.up())) - .text("...or extracted from the contraption"); - scene.idle(15); - scene.world.createItemOnBelt(beltPos, Direction.EAST, itemStack); - - scene.idle(20); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.idle(15); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - - scene.overlay.showText(120) - .placeNearTarget() - .pointAt(util.vector.topOf(psi2)) - .text("After no items have been exchanged for a while, the contraption will continue on its way"); - scene.world.modifyTileNBT(both, psiClass, nbt -> nbt.putFloat("Timer", 9)); - - scene.idle(15); - scene.markAsFinished(); - scene.world.rotateBearing(bearing, 270, 120); - scene.world.rotateSection(contraption, 0, 270, 0, 120); - } - - public static void psiRedstone(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("portable_storage_interface_redstone", "Redstone Control"); - scene.configureBasePlate(0, 0, 5); - scene.setSceneOffsetY(-1); - - Class psiClass = PortableItemInterfaceTileEntity.class; - Selection psis = util.select.fromTo(1, 1, 3, 1, 3, 3); - scene.world.modifyTileNBT(psis, psiClass, nbt -> { - nbt.putFloat("Distance", 1); - nbt.putFloat("Timer", 40); - }); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.layer(1), Direction.DOWN); - scene.idle(5); - - ElementLink contraption = - scene.world.showIndependentSection(util.select.layersFrom(2), Direction.DOWN); - BlockPos bearing = util.grid.at(3, 1, 3); - scene.world.configureCenterOfRotation(contraption, util.vector.topOf(bearing)); - scene.idle(20); - scene.world.modifyTileNBT(psis, psiClass, nbt -> nbt.putFloat("Timer", 9)); - scene.idle(20); - scene.world.rotateBearing(bearing, 360 * 3 + 270, 240 + 60); - scene.world.rotateSection(contraption, 0, 360 * 3 + 270, 0, 240 + 60); - scene.idle(20); - - scene.world.toggleRedstonePower(util.select.fromTo(1, 1, 1, 1, 1, 2)); - scene.effects.indicateRedstone(util.grid.at(1, 1, 1)); - - scene.idle(10); - - scene.overlay.showSelectionWithText(util.select.position(1, 1, 3), 120) - .colored(PonderPalette.RED) - .text("Redstone power will prevent the stationary interface from engaging"); - - scene.idle(20); - scene.markAsFinished(); - } - - public static void harvester(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_harvester", "Using Mechanical Harvesters on Contraptions"); - scene.configureBasePlate(0, 0, 6); - scene.scaleSceneView(0.9f); - - Selection crops = util.select.fromTo(4, 1, 2, 3, 1, 2) - .add(util.select.fromTo(3, 1, 1, 2, 1, 1) - .add(util.select.position(2, 1, 3)) - .add(util.select.position(1, 1, 2))); - - scene.world.setBlocks(crops, Blocks.WHEAT.getDefaultState() - .with(CropsBlock.AGE, 7), false); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos bearingPos = util.grid.at(4, 1, 4); - - scene.idle(5); - scene.world.showSection(crops, Direction.UP); - scene.world.showSection(util.select.position(bearingPos), Direction.DOWN); - scene.idle(5); - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(4, 2, 4, 2, 2, 5) - .add(util.select.fromTo(2, 1, 5, 0, 1, 5)), Direction.DOWN); - scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(bearingPos)); - scene.idle(10); - - for (int i = 0; i < 3; i++) { - scene.world.showSectionAndMerge(util.select.position(i, 1, 4), Direction.SOUTH, contraption); - scene.idle(5); - } - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 4), Direction.SOUTH)) - .text("Whenever Harvesters are moved as part of an animated Contraption..."); - scene.idle(70); - - for (int i = 0; i < 3; i++) - scene.world.modifyTileEntity(util.grid.at(i, 1, 4), HarvesterTileEntity.class, - hte -> hte.setAnimatedSpeed(-150)); - scene.world.rotateBearing(bearingPos, -360, 140); - scene.world.rotateSection(contraption, 0, -360, 0, 140); - - BlockState harvested = Blocks.WHEAT.getDefaultState(); - ItemStack wheatItem = new ItemStack(Items.WHEAT); - - scene.idle(5); - BlockPos current = util.grid.at(2, 1, 3); - scene.world.setBlock(current, harvested, true); - scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(0, 0.3, -.2), wheatItem); - scene.idle(5); - current = util.grid.at(1, 1, 2); - scene.world.setBlock(current, harvested, true); - scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(0, 0.3, -.2), wheatItem); - scene.idle(5); - current = util.grid.at(3, 1, 2); - scene.world.setBlock(current, harvested, true); - scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(.1, 0.3, -.1), wheatItem); - current = util.grid.at(2, 1, 1); - scene.world.setBlock(current, harvested, true); - scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(.1, 0.3, -.1), wheatItem); - scene.idle(5); - current = util.grid.at(3, 1, 1); - scene.world.setBlock(current, harvested, true); - scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(.1, 0.3, -.1), wheatItem); - scene.idle(5); - current = util.grid.at(4, 1, 2); - scene.world.setBlock(current, harvested, true); - scene.world.createItemEntity(util.vector.centerOf(current), util.vector.of(.2, 0.3, 0), wheatItem); - - scene.overlay.showText(80) - .pointAt(util.vector.topOf(1, 0, 2)) - .text("They will harvest and reset any mature crops on their way") - .placeNearTarget(); - - scene.idle(101); - scene.world.hideSection(crops, Direction.DOWN); - scene.idle(15); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.setBlocks(crops, Blocks.WHEAT.getDefaultState() - .with(CropsBlock.AGE, 7), false); - scene.world.showSection(crops, Direction.UP); - - for (int i = 0; i < 3; i++) - scene.world.modifyTileEntity(util.grid.at(i, 1, 4), HarvesterTileEntity.class, - hte -> hte.setAnimatedSpeed(0)); - scene.idle(10); - - scene.world.cycleBlockProperty(util.grid.at(1, 1, 5), LinearChassisBlock.STICKY_TOP); - scene.world.glueBlockOnto(util.grid.at(1, 2, 5), Direction.DOWN, contraption); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 5), Direction.WEST)) - .sharedText("storage_on_contraption"); - scene.idle(70); - - for (int i = 0; i < 3; i++) - scene.world.modifyTileEntity(util.grid.at(i, 1, 4), HarvesterTileEntity.class, - hte -> hte.setAnimatedSpeed(-150)); - scene.world.rotateBearing(bearingPos, -360, 140); - scene.world.rotateSection(contraption, 0, -360, 0, 140); - - scene.idle(5); - current = util.grid.at(2, 1, 3); - scene.world.setBlock(current, harvested, true); - scene.idle(5); - current = util.grid.at(1, 1, 2); - scene.world.setBlock(current, harvested, true); - scene.idle(5); - current = util.grid.at(3, 1, 2); - scene.world.setBlock(current, harvested, true); - current = util.grid.at(2, 1, 1); - scene.world.setBlock(current, harvested, true); - scene.idle(5); - current = util.grid.at(3, 1, 1); - scene.world.setBlock(current, harvested, true); - scene.idle(5); - current = util.grid.at(4, 1, 2); - scene.world.setBlock(current, harvested, true); - - scene.idle(116); - scene.overlay - .showControls(new InputWindowElement(util.vector.topOf(1, 2, 5), Pointing.DOWN).withItem(wheatItem), 50); - for (int i = 0; i < 3; i++) - scene.world.modifyTileEntity(util.grid.at(i, 1, 4), HarvesterTileEntity.class, - hte -> hte.setAnimatedSpeed(0)); - } - - public static void plough(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_plough", "Using Mechanical Ploughs on Contraptions"); - scene.configureBasePlate(0, 0, 6); - scene.scaleSceneView(0.9f); - - Selection garbage = util.select.fromTo(2, 1, 3, 1, 1, 2); - Selection kinetics = util.select.fromTo(5, 1, 6, 5, 1, 2); - Selection dynamic = util.select.fromTo(4, 0, 6, 5, 1, 6); - - scene.showBasePlate(); - ElementLink cogs = - scene.world.showIndependentSection(util.select.fromTo(4, 0, 6, 5, 1, 6), Direction.UP); - scene.idle(5); - scene.world.showSection(kinetics.substract(dynamic), Direction.DOWN); - ElementLink pistonHead = - scene.world.showIndependentSection(util.select.fromTo(5, 1, 1, 7, 1, 1), Direction.DOWN); - scene.world.moveSection(pistonHead, util.vector.of(0, 0, 1), 0); - scene.idle(5); - ElementLink contraption = - scene.world.showIndependentSection(util.select.fromTo(4, 1, 3, 4, 1, 2), Direction.DOWN); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.position(3, 1, 3), Direction.EAST, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(3, 1, 2), Direction.EAST, contraption); - scene.idle(20); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 3), Direction.EAST)) - .text("Whenever Ploughs are moved as part of an animated Contraption..."); - scene.idle(50); - scene.world.showSection(garbage, Direction.EAST); - scene.idle(20); - - scene.world.setKineticSpeed(util.select.position(4, 0, 6), -8); - scene.world.setKineticSpeed(kinetics, 16); - scene.world.moveSection(pistonHead, util.vector.of(-2, 0, 0), 60); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 60); - scene.idle(15); - - Vector3d m = util.vector.of(-0.1, .2, 0); - scene.world.destroyBlock(util.grid.at(2, 1, 3)); - scene.world.createItemEntity(util.vector.centerOf(2, 1, 3), m, new ItemStack(Items.LEVER)); - scene.world.destroyBlock(util.grid.at(2, 1, 2)); - scene.world.createItemEntity(util.vector.centerOf(2, 1, 2), m, new ItemStack(Items.TORCH)); - - scene.idle(30); - - scene.world.destroyBlock(util.grid.at(1, 1, 3)); - scene.world.createItemEntity(util.vector.centerOf(1, 1, 3), m, new ItemStack(Items.RAIL)); - scene.world.destroyBlock(util.grid.at(1, 1, 2)); - scene.world.createItemEntity(util.vector.centerOf(1, 1, 2), m, new ItemStack(Items.REDSTONE)); - - scene.overlay.showText(60) - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 3), Direction.EAST)) - .text("...they will break blocks without a solid collision hitbox"); - scene.idle(50); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.moveSection(pistonHead, util.vector.of(2, 0, 0), 40); - scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40); - scene.world.hideSection(garbage, Direction.UP); - scene.idle(40); - scene.world.setBlocks(garbage, Blocks.SNOW.getDefaultState(), false); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - ElementLink chest = - scene.world.showIndependentSection(util.select.position(4, 2, 2), Direction.DOWN); - - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(4, 2, 2), Direction.WEST)) - .sharedText("storage_on_contraption"); - scene.idle(15); - scene.effects.superGlue(util.grid.at(4, 2, 2), Direction.DOWN, true); - scene.idle(45); - scene.world.showSection(garbage, Direction.EAST); - scene.idle(20); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.moveSection(pistonHead, util.vector.of(-2, 0, 0), 60); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 60); - scene.world.moveSection(chest, util.vector.of(-2, 0, 0), 60); - scene.idle(15); - scene.world.destroyBlock(util.grid.at(2, 1, 3)); - scene.world.destroyBlock(util.grid.at(2, 1, 2)); - scene.idle(30); - scene.world.destroyBlock(util.grid.at(1, 1, 3)); - scene.world.destroyBlock(util.grid.at(1, 1, 2)); - scene.idle(15); - - scene.overlay.showControls( - new InputWindowElement(util.vector.topOf(2, 2, 2), Pointing.DOWN).withItem(new ItemStack(Items.SNOWBALL)), - 40); - scene.idle(40); - scene.world.hideIndependentSection(chest, Direction.UP); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.moveSection(pistonHead, util.vector.of(2, 0, 0), 40); - scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40); - scene.idle(40); - - Selection dirt = util.select.fromTo(2, 0, 3, 1, 0, 2); - scene.world.hideSection(dirt, Direction.DOWN); - scene.idle(15); - scene.world.setBlocks(dirt, Blocks.GRASS_BLOCK.getDefaultState(), false); - scene.world.showSection(dirt, Direction.UP); - scene.overlay.showText(60) - .placeNearTarget() - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(3, 1, 3), Direction.EAST)) - .text("Additionally, ploughs can create farmland"); - scene.idle(30); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.moveSection(pistonHead, util.vector.of(-2, 0, 0), 60); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 60); - scene.world.moveSection(chest, util.vector.of(-2, 0, 0), 60); - scene.idle(15); - scene.world.setBlocks(util.select.fromTo(2, 0, 2, 2, 0, 3), Blocks.FARMLAND.getDefaultState(), true); - scene.idle(30); - scene.world.setBlocks(util.select.fromTo(1, 0, 2, 1, 0, 3), Blocks.FARMLAND.getDefaultState(), true); - scene.idle(20); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - scene.world.moveSection(pistonHead, util.vector.of(2, 0, 0), 40); - scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40); - - scene.idle(50); - scene.world.setKineticSpeed(util.select.everywhere(), 0); - scene.world.hideSection(kinetics.substract(dynamic), Direction.EAST); - scene.world.hideSection(dirt, Direction.DOWN); - scene.world.hideIndependentSection(pistonHead, Direction.EAST); - scene.world.moveSection(cogs, util.vector.of(-1, 0, 0), 15); - scene.idle(15); - scene.world.restoreBlocks(dirt); - scene.world.showSection(dirt, Direction.UP); - scene.world.showSection(util.select.fromTo(4, 1, 6, 4, 3, 4), Direction.NORTH); - scene.idle(15); - scene.world.showSectionAndMerge(util.select.fromTo(4, 3, 3, 4, 2, 3), Direction.DOWN, contraption); - scene.idle(15); - - BlockPos bearingPos = util.grid.at(4, 3, 4); - scene.addKeyframe(); - - scene.world.setKineticSpeed(util.select.position(4, 0, 6), 8); - scene.world.setKineticSpeed(util.select.position(5, 1, 6), -16); - scene.world.setKineticSpeed(util.select.position(4, 3, 5), -16); - scene.world.setKineticSpeed(util.select.position(4, 1, 5), -16); - scene.world.setKineticSpeed(util.select.position(4, 2, 5), 16); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -2 * f); - scene.world.configureCenterOfRotation(contraption, util.vector.centerOf(bearingPos)); - scene.world.rotateSection(contraption, 0, 0, 90, 20); - scene.world.rotateBearing(bearingPos, 90, 20); - - scene.idle(10); - ElementLink birb = scene.special.createBirb(util.vector.topOf(3, 0, 2) - .add(0, 0, 0.5), FlappyPose::new); - scene.idle(11); - - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -2 * f); - scene.world.rotateSection(contraption, 0, 0, -135, 10); - scene.world.rotateBearing(bearingPos, -135, 10); - scene.idle(7); - scene.special.moveParrot(birb, util.vector.of(-20, 15, 0), 20); - scene.special.rotateParrot(birb, 0, 360, 0, 20); - scene.idle(3); - scene.world.setKineticSpeed(util.select.everywhere(), 0); - scene.idle(20); - - scene.overlay.showText(60) - .placeNearTarget() - .pointAt(util.vector.centerOf(util.grid.at(1, 3, 2))) - .text("...they can also launch entities without hurting them"); - scene.idle(30); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java deleted file mode 100644 index 28706d1fa..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PistonScenes.java +++ /dev/null @@ -1,279 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonHeadBlock; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement.FaceCursorPose; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.block.DoublePlantBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.state.properties.DoubleBlockHalf; -import net.minecraft.state.properties.PistonType; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class PistonScenes { - - public static void movement(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_piston", "Moving Structures using Mechanical Pistons"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0) - .add(util.select.position(0, 1, 2)), Direction.UP); - - Selection kinetics = util.select.fromTo(3, 1, 3, 3, 1, 2); - BlockPos piston = util.grid.at(3, 1, 2); - BlockPos leverPos = util.grid.at(3, 2, 4); - BlockPos shaft = util.grid.at(3, 1, 3); - - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 3, 3, 2, 5), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(piston), Direction.DOWN); - ElementLink contraption = - scene.world.showIndependentSection(util.select.position(3, 1, 1), Direction.DOWN); - scene.world.moveSection(contraption, util.vector.of(0, 0, 1), 0); - scene.idle(20); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .east()), Direction.DOWN, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .east(2)), Direction.DOWN, contraption); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .west()), Direction.DOWN, contraption); - scene.idle(15); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(shaft); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 40); - scene.overlay.showText(55) - .pointAt(util.vector.topOf(piston)) - .placeNearTarget() - .text("Mechanical Pistons can move blocks in front of them"); - scene.idle(65); - - scene.overlay.showText(45) - .pointAt(util.vector.blockSurface(shaft, Direction.SOUTH)) - .placeNearTarget() - .text("Speed and direction of movement depend on the Rotational Input"); - scene.world.setBlock(util.grid.at(2, 1, 1), Blocks.AIR.getDefaultState(), false); - scene.world.setBlock(util.grid.at(0, 1, 2), Blocks.OAK_PLANKS.getDefaultState(), false); - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(shaft); - scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40); - scene.idle(60); - - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(piston, Direction.WEST), Pointing.DOWN).rightClick() - .withItem(new ItemStack(Items.SLIME_BALL)), - 30); - scene.idle(7); - scene.world.modifyBlock(piston.north(), s -> s.with(MechanicalPistonHeadBlock.TYPE, PistonType.STICKY), false); - scene.effects.superGlue(piston, Direction.WEST, true); - - scene.idle(33); - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(shaft); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 40); - - scene.idle(25); - scene.overlay.showText(60) - .pointAt(util.vector.topOf(piston)) - .placeNearTarget() - .text("Sticky Mechanical Pistons can pull the attached blocks back"); - scene.idle(20); - scene.world.setBlock(util.grid.at(2, 1, 1), Blocks.OAK_PLANKS.getDefaultState(), false); - scene.world.setBlock(util.grid.at(0, 1, 2), Blocks.AIR.getDefaultState(), false); - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(shaft); - scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40); - - scene.idle(50); - scene.world.setBlock(util.grid.at(2, 1, 1), Blocks.AIR.getDefaultState(), false); - ElementLink chassis = - scene.world.showIndependentSection(util.select.fromTo(2, 2, 0, 2, 3, 2), Direction.DOWN); - scene.world.moveSection(chassis, util.vector.of(0, -1, 1), 0); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(1, 2, 0), Direction.EAST, chassis); - scene.idle(15); - scene.effects.superGlue(piston.west() - .north(), Direction.WEST, true); - scene.overlay.showText(80) - .pointAt(util.vector.topOf(piston.west())) - .placeNearTarget() - .sharedText("movement_anchors"); - - scene.idle(90); - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(shaft); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 40); - scene.world.moveSection(chassis, util.vector.of(-2, 0, 0), 40); - } - - public static void poles(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("piston_pole", "Piston Extension Poles"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.world.modifyKineticSpeed(util.select.everywhere(), f -> -f); - - Selection kinetics = util.select.fromTo(3, 1, 3, 3, 1, 2); - BlockPos piston = util.grid.at(3, 1, 2); - - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 3, 3, 2, 5), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(piston), Direction.DOWN); - ElementLink contraption = - scene.world.showIndependentSection(util.select.position(3, 1, 1), Direction.DOWN); - scene.world.moveSection(contraption, util.vector.of(0, 0, 1), 0); - scene.idle(20); - - BlockPos leverPos = util.grid.at(3, 2, 4); - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.setKineticSpeed(kinetics, 16); - scene.idle(10); - - scene.overlay.showSelectionWithText(util.select.position(piston), 50) - .colored(PonderPalette.RED) - .placeNearTarget() - .text("Without attached Poles, a Mechanical Piston cannot move"); - scene.idle(60); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.setKineticSpeed(kinetics, 0); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .east()), Direction.DOWN, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .east(2)), Direction.DOWN, contraption); - scene.idle(10); - - scene.overlay.showOutline(PonderPalette.RED, new Object(), util.select.fromTo(piston.east(), piston.east(2)), - 100); - scene.overlay.showSelectionWithText(util.select.fromTo(piston.west(), piston.west(2)), 100) - .text("The Length of pole added at its back determines the Extension Range") - .placeNearTarget() - .colored(PonderPalette.GREEN); - scene.idle(110); - - scene.world.showSectionAndMerge(util.select.position(piston.north() - .west()), Direction.EAST, contraption); - scene.idle(10); - ElementLink birb = - scene.special.createBirb(util.vector.topOf(piston.west()), FaceCursorPose::new); - scene.idle(15); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.setKineticSpeed(kinetics, 16); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 40); - scene.special.moveParrot(birb, util.vector.of(-2, 0, 0), 40); - - } - - public static void movementModes(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_piston_modes", "Movement Modes of the Mechanical Piston"); - scene.configureBasePlate(0, 0, 5); - Selection rose = util.select.fromTo(0, 2, 2, 0, 1, 2); - scene.world.showSection(util.select.layer(0) - .add(rose), Direction.UP); - - Selection kinetics = util.select.fromTo(3, 1, 3, 3, 1, 2); - BlockPos piston = util.grid.at(3, 1, 2); - BlockPos leverPos = util.grid.at(3, 2, 4); - BlockPos shaft = util.grid.at(3, 1, 3); - - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 3, 3, 2, 5), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(piston), Direction.DOWN); - ElementLink contraption = - scene.world.showIndependentSection(util.select.position(3, 1, 1), Direction.DOWN); - scene.world.moveSection(contraption, util.vector.of(0, 0, 1), 0); - scene.idle(20); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .east()), Direction.DOWN, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .east(2)), Direction.DOWN, contraption); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .west()), Direction.DOWN, contraption); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(piston.north() - .west() - .up()), Direction.DOWN, contraption); - scene.idle(15); - scene.effects.superGlue(piston.west(), Direction.UP, true); - scene.idle(10); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(shaft); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 40); - scene.idle(40); - - scene.world.destroyBlock(util.grid.at(0, 1, 2)); - scene.world.destroyBlock(util.grid.at(0, 2, 2)); - scene.idle(10); - scene.overlay.showSelectionWithText(rose, 70) - .text("Whenever Pistons stop moving, the moved structure reverts to blocks") - .colored(PonderPalette.RED); - scene.idle(80); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(shaft); - scene.world.moveSection(contraption, util.vector.of(2, 0, 0), 40); - scene.world.hideSection(rose, Direction.UP); - scene.idle(50); - - scene.world.setBlock(util.grid.at(0, 1, 2), Blocks.ROSE_BUSH.getDefaultState(), false); - scene.world.setBlock(util.grid.at(0, 2, 2), Blocks.ROSE_BUSH.getDefaultState() - .with(DoublePlantBlock.HALF, DoubleBlockHalf.UPPER), false); - scene.world.showIndependentSection(rose, Direction.DOWN); - scene.overlay.showCenteredScrollInput(piston, Direction.UP, 60); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(piston), Pointing.DOWN).scroll() - .withWrench(), 60); - scene.overlay.showText(70) - .pointAt(util.vector.topOf(piston)) - .placeNearTarget() - .sharedText("behaviour_modify_wrench"); - scene.idle(80); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(leverPos, leverPos.down())); - scene.world.modifyKineticSpeed(kinetics, f -> -f); - scene.effects.rotationDirectionIndicator(shaft); - scene.world.moveSection(contraption, util.vector.of(-2, 0, 0), 40); - scene.idle(50); - scene.overlay.showText(120) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(util.grid.at(0, 1, 2), Direction.WEST)) - .placeNearTarget() - .text("It can be configured never to revert to solid blocks, or only at the location it started at"); - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapter.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapter.java deleted file mode 100644 index 616708342..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapter.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.gui.IScreenRenderable; -import com.simibubi.create.foundation.ponder.PonderRegistry; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.AbstractGui; -import net.minecraft.util.ResourceLocation; - -public class PonderChapter implements IScreenRenderable { - - private final String id; - private final ResourceLocation icon; - - private PonderChapter(String id) { - this.id = id; - icon = new ResourceLocation(Create.ID, "textures/ponder/chapter/" + id + ".png"); - } - - @Override - public void draw(MatrixStack ms, AbstractGui screen, int x, int y) { - ms.push(); - Minecraft.getInstance().getTextureManager().bindTexture(icon); - ms.scale(0.25f, 0.25f, 1); - //x and y offset, blit z offset, tex x and y, tex width and height, entire tex sheet width and height - AbstractGui.drawTexture(ms, x, y, 0, 0, 0, 64, 64, 64, 64); - ms.pop(); - } - - @Nonnull - public static PonderChapter of(String id) { - PonderChapter chapter = PonderRegistry.chapters.getChapter(id); - if (chapter == null) { - chapter = PonderRegistry.chapters.addChapter(new PonderChapter(id)); - } - - return chapter; - } - - public PonderChapter addTagsToChapter(PonderTag... tags) { - for (PonderTag t : tags) - PonderRegistry.tags.add(t, this); - return this; - } - - public String getId() { - return id; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapterRegistry.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapterRegistry.java deleted file mode 100644 index ec861ed1a..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderChapterRegistry.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.ponder.PonderStoryBoardEntry; -import com.simibubi.create.foundation.utility.Pair; - -public class PonderChapterRegistry { - - private final Map>> chapters; - - public PonderChapterRegistry() { - chapters = new HashMap<>(); - } - - public void addStoriesToChapter(@Nonnull PonderChapter chapter, PonderStoryBoardEntry... entries) { - chapters.get(chapter.getId()).getSecond().addAll(Arrays.asList(entries)); - } - - PonderChapter addChapter(@Nonnull PonderChapter chapter) { - chapters.put(chapter.getId(), Pair.of(chapter, new ArrayList<>())); - return chapter; - } - - @Nullable - PonderChapter getChapter(String id) { - Pair> pair = chapters.get(id); - if (pair == null) - return null; - - return pair.getFirst(); - } - - public List getAllChapters() { - return chapters - .values() - .stream() - .map(Pair::getFirst) - .collect(Collectors.toList()); - } - - public List getStories(PonderChapter chapter) { - return chapters.get(chapter.getId()).getSecond(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java deleted file mode 100644 index 838a518ab..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndex.java +++ /dev/null @@ -1,420 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.ponder.PonderRegistry; - -import net.minecraft.block.Blocks; -import net.minecraft.item.DyeColor; - -public class PonderIndex { - - public static final boolean EDITOR_MODE = false; - - public static void register() { - // Register storyboards here - // (!) Added entries require re-launch - // (!) Modifications inside storyboard methods only require re-opening the ui - - PonderRegistry.forComponents(AllBlocks.SHAFT) - .addStoryBoard("shaft/relay", KineticsScenes::shaftAsRelay, PonderTag.KINETIC_RELAYS); - PonderRegistry.forComponents(AllBlocks.SHAFT, AllBlocks.ANDESITE_ENCASED_SHAFT, AllBlocks.BRASS_ENCASED_SHAFT) - .addStoryBoard("shaft/encasing", KineticsScenes::shaftsCanBeEncased); - - PonderRegistry.forComponents(AllBlocks.COGWHEEL) - .addStoryBoard("cog/small", KineticsScenes::cogAsRelay, PonderTag.KINETIC_RELAYS) - .addStoryBoard("cog/speedup", KineticsScenes::cogsSpeedUp); - - PonderRegistry.forComponents(AllBlocks.LARGE_COGWHEEL) - .addStoryBoard("cog/speedup", KineticsScenes::cogsSpeedUp) - .addStoryBoard("cog/large", KineticsScenes::largeCogAsRelay, PonderTag.KINETIC_RELAYS); - - PonderRegistry.forComponents(AllItems.BELT_CONNECTOR) - .addStoryBoard("belt/connect", BeltScenes::beltConnector, PonderTag.KINETIC_RELAYS) - .addStoryBoard("belt/directions", BeltScenes::directions) - .addStoryBoard("belt/transport", BeltScenes::transport, PonderTag.LOGISTICS) - .addStoryBoard("belt/encasing", BeltScenes::beltsCanBeEncased); - - PonderRegistry.forComponents(AllBlocks.ANDESITE_CASING, AllBlocks.BRASS_CASING) - .addStoryBoard("shaft/encasing", KineticsScenes::shaftsCanBeEncased) - .addStoryBoard("belt/encasing", BeltScenes::beltsCanBeEncased); - - PonderRegistry.forComponents(AllBlocks.GEARBOX, AllItems.VERTICAL_GEARBOX) - .addStoryBoard("gearbox", KineticsScenes::gearbox, PonderTag.KINETIC_RELAYS); - - PonderRegistry.addStoryBoard(AllBlocks.CLUTCH, "clutch", KineticsScenes::clutch, PonderTag.KINETIC_RELAYS); - PonderRegistry.addStoryBoard(AllBlocks.GEARSHIFT, "gearshift", KineticsScenes::gearshift, - PonderTag.KINETIC_RELAYS); - - PonderRegistry.forComponents(AllBlocks.SEQUENCED_GEARSHIFT) - .addStoryBoard("sequenced_gearshift", KineticsScenes::sequencedGearshift); - - PonderRegistry.forComponents(AllBlocks.ENCASED_FAN) - .addStoryBoard("fan/direction", FanScenes::direction, PonderTag.KINETIC_APPLIANCES) - .addStoryBoard("fan/processing", FanScenes::processing) - .addStoryBoard("fan/source", FanScenes::source, PonderTag.KINETIC_SOURCES); - - PonderRegistry.addStoryBoard(AllBlocks.CREATIVE_MOTOR, "creative_motor", KineticsScenes::creativeMotor, - PonderTag.KINETIC_SOURCES); - PonderRegistry.addStoryBoard(AllBlocks.WATER_WHEEL, "water_wheel", KineticsScenes::waterWheel, - PonderTag.KINETIC_SOURCES); - PonderRegistry.addStoryBoard(AllBlocks.HAND_CRANK, "hand_crank", KineticsScenes::handCrank, - PonderTag.KINETIC_SOURCES); - - PonderRegistry.addStoryBoard(AllBlocks.COPPER_VALVE_HANDLE, "valve_handle", KineticsScenes::valveHandle, - PonderTag.KINETIC_SOURCES); - PonderRegistry.forComponents(AllBlocks.DYED_VALVE_HANDLES.toArray()) - .addStoryBoard("valve_handle", KineticsScenes::valveHandle); - - PonderRegistry.addStoryBoard(AllBlocks.ENCASED_CHAIN_DRIVE, "chain_drive/relay", - ChainDriveScenes::chainDriveAsRelay, PonderTag.KINETIC_RELAYS); - PonderRegistry.forComponents(AllBlocks.ENCASED_CHAIN_DRIVE, AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT) - .addStoryBoard("chain_drive/gearshift", ChainDriveScenes::adjustableChainGearshift); - - PonderRegistry.forComponents(AllBlocks.FURNACE_ENGINE) - .addStoryBoard("furnace_engine", KineticsScenes::furnaceEngine); - PonderRegistry.forComponents(AllBlocks.FLYWHEEL) - .addStoryBoard("furnace_engine", KineticsScenes::flywheel); - PonderRegistry.forComponents(AllBlocks.ROTATION_SPEED_CONTROLLER) - .addStoryBoard("speed_controller", KineticsScenes::speedController); - - // Gauges - PonderRegistry.addStoryBoard(AllBlocks.SPEEDOMETER, "gauges", KineticsScenes::speedometer); - PonderRegistry.addStoryBoard(AllBlocks.STRESSOMETER, "gauges", KineticsScenes::stressometer); - - // Item Processing - PonderRegistry.addStoryBoard(AllBlocks.MILLSTONE, "millstone", ProcessingScenes::millstone); - PonderRegistry.addStoryBoard(AllBlocks.CRUSHING_WHEEL, "crushing_wheel", ProcessingScenes::crushingWheels); - PonderRegistry.addStoryBoard(AllBlocks.MECHANICAL_MIXER, "mechanical_mixer/mixing", ProcessingScenes::mixing); - PonderRegistry.forComponents(AllBlocks.MECHANICAL_PRESS) - .addStoryBoard("mechanical_press/pressing", ProcessingScenes::pressing) - .addStoryBoard("mechanical_press/compacting", ProcessingScenes::compacting); - PonderRegistry.forComponents(AllBlocks.BASIN) - .addStoryBoard("basin", ProcessingScenes::basin) - .addStoryBoard("mechanical_mixer/mixing", ProcessingScenes::mixing) - .addStoryBoard("mechanical_press/compacting", ProcessingScenes::compacting); - PonderRegistry.addStoryBoard(AllItems.EMPTY_BLAZE_BURNER, "empty_blaze_burner", - ProcessingScenes::emptyBlazeBurner); - PonderRegistry.addStoryBoard(AllBlocks.BLAZE_BURNER, "blaze_burner", ProcessingScenes::blazeBurner); - PonderRegistry.addStoryBoard(AllBlocks.DEPOT, "depot", BeltScenes::depot); - PonderRegistry.forComponents(AllBlocks.WEIGHTED_EJECTOR) - .addStoryBoard("weighted_ejector/eject", EjectorScenes::ejector) - .addStoryBoard("weighted_ejector/split", EjectorScenes::splitY) - .addStoryBoard("weighted_ejector/redstone", EjectorScenes::redstone); - - // Crafters - PonderRegistry.forComponents(AllBlocks.MECHANICAL_CRAFTER) - .addStoryBoard("mechanical_crafter/setup", CrafterScenes::setup) - .addStoryBoard("mechanical_crafter/connect", CrafterScenes::connect); - PonderRegistry.forComponents(AllBlocks.MECHANICAL_CRAFTER, AllItems.CRAFTER_SLOT_COVER) - .addStoryBoard("mechanical_crafter/covers", CrafterScenes::covers); - - // Chutes - PonderRegistry.forComponents(AllBlocks.CHUTE) - .addStoryBoard("chute/downward", ChuteScenes::downward, PonderTag.LOGISTICS) - .addStoryBoard("chute/upward", ChuteScenes::upward); - PonderRegistry.forComponents(AllBlocks.CHUTE, AllBlocks.SMART_CHUTE) - .addStoryBoard("chute/smart", ChuteScenes::smart); - - // Funnels - PonderRegistry.addStoryBoard(AllBlocks.BRASS_FUNNEL, "funnels/brass", FunnelScenes::brass); - PonderRegistry.forComponents(AllBlocks.ANDESITE_FUNNEL, AllBlocks.BRASS_FUNNEL) - .addStoryBoard("funnels/intro", FunnelScenes::intro, PonderTag.LOGISTICS) - .addStoryBoard("funnels/direction", FunnelScenes::directionality) - .addStoryBoard("funnels/compat", FunnelScenes::compat) - .addStoryBoard("funnels/redstone", FunnelScenes::redstone) - .addStoryBoard("funnels/transposer", FunnelScenes::transposer); - PonderRegistry.addStoryBoard(AllBlocks.ANDESITE_FUNNEL, "funnels/brass", FunnelScenes::brass); - - // Tunnels - PonderRegistry.addStoryBoard(AllBlocks.ANDESITE_TUNNEL, "tunnels/andesite", TunnelScenes::andesite); - PonderRegistry.forComponents(AllBlocks.BRASS_TUNNEL) - .addStoryBoard("tunnels/brass", TunnelScenes::brass) - .addStoryBoard("tunnels/brass_modes", TunnelScenes::brassModes); - - // Chassis & Super Glue - PonderRegistry.forComponents(AllBlocks.LINEAR_CHASSIS, AllBlocks.SECONDARY_LINEAR_CHASSIS) - .addStoryBoard("chassis/linear_group", ChassisScenes::linearGroup, PonderTag.CONTRAPTION_ASSEMBLY) - .addStoryBoard("chassis/linear_attachment", ChassisScenes::linearAttachement); - PonderRegistry.forComponents(AllBlocks.RADIAL_CHASSIS) - .addStoryBoard("chassis/radial", ChassisScenes::radial, PonderTag.CONTRAPTION_ASSEMBLY); - PonderRegistry.forComponents(AllItems.SUPER_GLUE) - .addStoryBoard("super_glue", ChassisScenes::superGlue, PonderTag.CONTRAPTION_ASSEMBLY); - PonderRegistry.forComponents(AllBlocks.STICKER) - .addStoryBoard("sticker", RedstoneScenes::sticker, PonderTag.CONTRAPTION_ASSEMBLY); - - // Mechanical Arm - PonderRegistry.forComponents(AllBlocks.MECHANICAL_ARM) - .addStoryBoard("mechanical_arm/setup", ArmScenes::setup, PonderTag.ARM_TARGETS) - .addStoryBoard("mechanical_arm/filter", ArmScenes::filtering) - .addStoryBoard("mechanical_arm/modes", ArmScenes::modes) - .addStoryBoard("mechanical_arm/redstone", ArmScenes::redstone); - - // Mechanical Piston - PonderRegistry.forComponents(AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON) - .addStoryBoard("mechanical_piston/anchor", PistonScenes::movement, PonderTag.KINETIC_APPLIANCES, - PonderTag.MOVEMENT_ANCHOR); - PonderRegistry - .forComponents(AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON, - AllBlocks.PISTON_EXTENSION_POLE) - .addStoryBoard("mechanical_piston/piston_pole", PistonScenes::poles); - PonderRegistry.forComponents(AllBlocks.MECHANICAL_PISTON, AllBlocks.STICKY_MECHANICAL_PISTON) - .addStoryBoard("mechanical_piston/modes", PistonScenes::movementModes); - - // Windmill Bearing - PonderRegistry.forComponents(AllBlocks.ROPE_PULLEY) - .addStoryBoard("rope_pulley/anchor", PulleyScenes::movement, PonderTag.KINETIC_APPLIANCES, - PonderTag.MOVEMENT_ANCHOR) - .addStoryBoard("rope_pulley/modes", PulleyScenes::movementModes) - .addStoryBoard("rope_pulley/attachment", PulleyScenes::attachment); - - // Windmill Bearing - PonderRegistry.forComponents(AllBlocks.WINDMILL_BEARING) - .addStoryBoard("windmill_bearing/source", BearingScenes::windmillsAsSource, PonderTag.KINETIC_SOURCES) - .addStoryBoard("windmill_bearing/structure", BearingScenes::windmillsAnyStructure, - PonderTag.MOVEMENT_ANCHOR); - PonderRegistry.forComponents(AllBlocks.SAIL) - .addStoryBoard("sail", BearingScenes::sail); - PonderRegistry.forComponents(AllBlocks.SAIL_FRAME) - .addStoryBoard("sail", BearingScenes::sailFrame); - - // Mechanical Bearing - PonderRegistry.forComponents(AllBlocks.MECHANICAL_BEARING) - .addStoryBoard("mechanical_bearing/anchor", BearingScenes::mechanicalBearing, PonderTag.KINETIC_APPLIANCES, - PonderTag.MOVEMENT_ANCHOR) - .addStoryBoard("mechanical_bearing/modes", BearingScenes::bearingModes) - .addStoryBoard("mechanical_bearing/stabilized", BearingScenes::stabilizedBearings, - PonderTag.CONTRAPTION_ACTOR); - - // Clockwork Bearing - PonderRegistry.addStoryBoard(AllBlocks.CLOCKWORK_BEARING, "clockwork_bearing", BearingScenes::clockwork, - PonderTag.KINETIC_APPLIANCES, PonderTag.MOVEMENT_ANCHOR); - - // Gantries - PonderRegistry.addStoryBoard(AllBlocks.GANTRY_SHAFT, "gantry/intro", GantryScenes::introForShaft, - PonderTag.KINETIC_APPLIANCES, PonderTag.MOVEMENT_ANCHOR); - PonderRegistry.addStoryBoard(AllBlocks.GANTRY_CARRIAGE, "gantry/intro", GantryScenes::introForPinion, - PonderTag.KINETIC_APPLIANCES, PonderTag.MOVEMENT_ANCHOR); - PonderRegistry.forComponents(AllBlocks.GANTRY_SHAFT, AllBlocks.GANTRY_CARRIAGE) - .addStoryBoard("gantry/redstone", GantryScenes::redstone) - .addStoryBoard("gantry/direction", GantryScenes::direction) - .addStoryBoard("gantry/subgantry", GantryScenes::subgantry); - - // Cart Assembler - PonderRegistry.forComponents(AllBlocks.CART_ASSEMBLER) - .addStoryBoard("cart_assembler/anchor", CartAssemblerScenes::anchor, PonderTag.MOVEMENT_ANCHOR) - .addStoryBoard("cart_assembler/modes", CartAssemblerScenes::modes) - .addStoryBoard("cart_assembler/dual", CartAssemblerScenes::dual) - .addStoryBoard("cart_assembler/rails", CartAssemblerScenes::rails); - - // Movement Actors - PonderRegistry.forComponents(AllBlocks.PORTABLE_STORAGE_INTERFACE) - .addStoryBoard("portable_interface/transfer", MovementActorScenes::psiTransfer, PonderTag.CONTRAPTION_ACTOR) - .addStoryBoard("portable_interface/redstone", MovementActorScenes::psiRedstone); - PonderRegistry.forComponents(AllBlocks.REDSTONE_CONTACT) - .addStoryBoard("redstone_contact", RedstoneScenes::contact); - PonderRegistry.forComponents(AllBlocks.MECHANICAL_SAW) - .addStoryBoard("mechanical_saw/processing", MechanicalSawScenes::processing, PonderTag.KINETIC_APPLIANCES) - .addStoryBoard("mechanical_saw/breaker", MechanicalSawScenes::treeCutting) - .addStoryBoard("mechanical_saw/contraption", MechanicalSawScenes::contraption, PonderTag.CONTRAPTION_ACTOR); - PonderRegistry.forComponents(AllBlocks.MECHANICAL_DRILL) - .addStoryBoard("mechanical_drill/breaker", MechanicalDrillScenes::breaker, PonderTag.KINETIC_APPLIANCES) - .addStoryBoard("mechanical_drill/contraption", MechanicalDrillScenes::contraption, - PonderTag.CONTRAPTION_ACTOR); - PonderRegistry.forComponents(AllBlocks.DEPLOYER) - .addStoryBoard("deployer/filter", DeployerScenes::filter, PonderTag.KINETIC_APPLIANCES) - .addStoryBoard("deployer/modes", DeployerScenes::modes) - .addStoryBoard("deployer/redstone", DeployerScenes::redstone) - .addStoryBoard("deployer/contraption", DeployerScenes::contraption, PonderTag.CONTRAPTION_ACTOR); - PonderRegistry.forComponents(AllBlocks.MECHANICAL_HARVESTER) - .addStoryBoard("harvester", MovementActorScenes::harvester); - PonderRegistry.forComponents(AllBlocks.MECHANICAL_PLOUGH) - .addStoryBoard("plough", MovementActorScenes::plough); - - // Redstone - PonderRegistry.forComponents(AllBlocks.PULSE_REPEATER) - .addStoryBoard("pulse_repeater", RedstoneScenes::pulseRepeater); - PonderRegistry.forComponents(AllBlocks.ADJUSTABLE_REPEATER) - .addStoryBoard("adjustable_repeater", RedstoneScenes::adjustableRepeater); - PonderRegistry.forComponents(AllBlocks.ADJUSTABLE_PULSE_REPEATER) - .addStoryBoard("adjustable_pulse_repeater", RedstoneScenes::adjustablePulseRepeater); - PonderRegistry.forComponents(AllBlocks.POWERED_LATCH) - .addStoryBoard("powered_latch", RedstoneScenes::poweredLatch); - PonderRegistry.forComponents(AllBlocks.POWERED_TOGGLE_LATCH) - .addStoryBoard("powered_toggle_latch", RedstoneScenes::poweredToggleLatch); - PonderRegistry.forComponents(AllBlocks.ANALOG_LEVER) - .addStoryBoard("analog_lever", RedstoneScenes::analogLever); - PonderRegistry.forComponents(AllBlocks.NIXIE_TUBE) - .addStoryBoard("nixie_tube", RedstoneScenes::nixieTube); - PonderRegistry.forComponents(AllBlocks.REDSTONE_LINK) - .addStoryBoard("redstone_link", RedstoneScenes::redstoneLink); - - // Debug scenes, can be found in game via the Brass Hand - if (EDITOR_MODE) - DebugScenes.registerAll(); - } - - public static void registerTags() { - // Add items to tags here - - PonderRegistry.tags.forTag(PonderTag.KINETIC_RELAYS) - .add(AllBlocks.SHAFT) - .add(AllBlocks.COGWHEEL) - .add(AllBlocks.LARGE_COGWHEEL) - .add(AllItems.BELT_CONNECTOR) - .add(AllBlocks.GEARBOX) - .add(AllBlocks.CLUTCH) - .add(AllBlocks.GEARSHIFT) - .add(AllBlocks.ENCASED_CHAIN_DRIVE) - .add(AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT) - .add(AllBlocks.SEQUENCED_GEARSHIFT) - .add(AllBlocks.ROTATION_SPEED_CONTROLLER); - - PonderRegistry.tags.forTag(PonderTag.KINETIC_SOURCES) - .add(AllBlocks.HAND_CRANK) - .add(AllBlocks.COPPER_VALVE_HANDLE) - .add(AllBlocks.WATER_WHEEL) - .add(AllBlocks.ENCASED_FAN) - .add(AllBlocks.WINDMILL_BEARING) - .add(AllBlocks.FURNACE_ENGINE) - .add(AllBlocks.FLYWHEEL) - .add(AllBlocks.CREATIVE_MOTOR); - - PonderRegistry.tags.forTag(PonderTag.KINETIC_APPLIANCES) - .add(AllBlocks.MILLSTONE) - .add(AllBlocks.TURNTABLE) - .add(AllBlocks.ENCASED_FAN) - .add(AllBlocks.CUCKOO_CLOCK) - .add(AllBlocks.MECHANICAL_PRESS) - .add(AllBlocks.MECHANICAL_MIXER) - .add(AllBlocks.MECHANICAL_CRAFTER) - .add(AllBlocks.MECHANICAL_DRILL) - .add(AllBlocks.MECHANICAL_SAW) - .add(AllBlocks.DEPLOYER) - .add(AllBlocks.MECHANICAL_PUMP) - .add(AllBlocks.MECHANICAL_ARM) - .add(AllBlocks.MECHANICAL_PISTON) - .add(AllBlocks.ROPE_PULLEY) - .add(AllBlocks.MECHANICAL_BEARING) - .add(AllBlocks.GANTRY_SHAFT) - .add(AllBlocks.GANTRY_CARRIAGE) - .add(AllBlocks.CLOCKWORK_BEARING) - .add(AllBlocks.CRUSHING_WHEEL); - - PonderRegistry.tags.forTag(PonderTag.FLUIDS) - .add(AllBlocks.FLUID_PIPE) - .add(AllBlocks.MECHANICAL_PUMP) - .add(AllBlocks.FLUID_VALVE) - .add(AllBlocks.SMART_FLUID_PIPE) - .add(AllBlocks.HOSE_PULLEY) - .add(AllBlocks.ITEM_DRAIN) - .add(AllBlocks.SPOUT) - .add(AllBlocks.PORTABLE_FLUID_INTERFACE) - .add(AllBlocks.FLUID_TANK) - .add(AllBlocks.CREATIVE_FLUID_TANK); - - PonderRegistry.tags.forTag(PonderTag.ARM_TARGETS) - .add(AllBlocks.MECHANICAL_ARM) - .add(AllItems.BELT_CONNECTOR) - .add(AllBlocks.CHUTE) - .add(AllBlocks.DEPOT) - .add(AllBlocks.WEIGHTED_EJECTOR) - .add(AllBlocks.BASIN) - .add(AllBlocks.ANDESITE_FUNNEL) - .add(AllBlocks.BRASS_FUNNEL) - .add(AllBlocks.MECHANICAL_CRAFTER) - .add(AllBlocks.MILLSTONE) - .add(AllBlocks.DEPLOYER) - .add(AllBlocks.MECHANICAL_SAW) - .add(AllBlocks.BLAZE_BURNER) - .add(AllBlocks.CRUSHING_WHEEL) - .add(Blocks.COMPOSTER) - .add(Blocks.JUKEBOX); - - PonderRegistry.tags.forTag(PonderTag.LOGISTICS) - .add(AllItems.BELT_CONNECTOR) - .add(AllItems.FILTER) - .add(AllItems.ATTRIBUTE_FILTER) - .add(AllBlocks.CHUTE) - .add(AllBlocks.SMART_CHUTE) - .add(AllBlocks.DEPOT) - .add(AllBlocks.WEIGHTED_EJECTOR) - .add(AllBlocks.MECHANICAL_ARM) - .add(AllBlocks.ANDESITE_FUNNEL) - .add(AllBlocks.BRASS_FUNNEL) - .add(AllBlocks.ANDESITE_TUNNEL) - .add(AllBlocks.BRASS_TUNNEL) - .add(AllBlocks.CONTENT_OBSERVER) - .add(AllBlocks.STOCKPILE_SWITCH) - .add(AllBlocks.ADJUSTABLE_CRATE) - .add(AllBlocks.CREATIVE_CRATE) - .add(AllBlocks.PORTABLE_STORAGE_INTERFACE); - - PonderRegistry.tags.forTag(PonderTag.DECORATION) - .add(AllBlocks.NIXIE_TUBE) - .add(AllBlocks.CUCKOO_CLOCK) - .add(AllBlocks.WOODEN_BRACKET) - .add(AllBlocks.METAL_BRACKET) - .add(AllBlocks.ANDESITE_CASING) - .add(AllBlocks.BRASS_CASING) - .add(AllBlocks.COPPER_CASING); - - PonderRegistry.tags.forTag(PonderTag.CREATIVE) - .add(AllBlocks.CREATIVE_CRATE) - .add(AllBlocks.CREATIVE_FLUID_TANK) - .add(AllBlocks.CREATIVE_MOTOR); - - PonderRegistry.tags.forTag(PonderTag.SAILS) - .add(AllBlocks.SAIL) - .add(AllBlocks.SAIL_FRAME) - .add(Blocks.WHITE_WOOL); - - PonderRegistry.tags.forTag(PonderTag.REDSTONE) - .add(AllBlocks.NIXIE_TUBE) - .add(AllBlocks.REDSTONE_CONTACT) - .add(AllBlocks.ANALOG_LEVER) - .add(AllBlocks.REDSTONE_LINK) - .add(AllBlocks.ADJUSTABLE_REPEATER) - .add(AllBlocks.PULSE_REPEATER) - .add(AllBlocks.ADJUSTABLE_PULSE_REPEATER) - .add(AllBlocks.POWERED_LATCH) - .add(AllBlocks.POWERED_TOGGLE_LATCH); - - PonderRegistry.tags.forTag(PonderTag.MOVEMENT_ANCHOR) - .add(AllBlocks.MECHANICAL_PISTON) - .add(AllBlocks.WINDMILL_BEARING) - .add(AllBlocks.MECHANICAL_BEARING) - .add(AllBlocks.CLOCKWORK_BEARING) - .add(AllBlocks.ROPE_PULLEY) - .add(AllBlocks.GANTRY_CARRIAGE) - .add(AllBlocks.CART_ASSEMBLER); - - PonderRegistry.tags.forTag(PonderTag.CONTRAPTION_ASSEMBLY) - .add(AllBlocks.LINEAR_CHASSIS) - .add(AllBlocks.SECONDARY_LINEAR_CHASSIS) - .add(AllBlocks.RADIAL_CHASSIS) - .add(AllItems.SUPER_GLUE) - .add(AllBlocks.STICKER) - .add(Blocks.SLIME_BLOCK) - .add(Blocks.HONEY_BLOCK); - - PonderRegistry.tags.forTag(PonderTag.CONTRAPTION_ACTOR) - .add(AllBlocks.MECHANICAL_HARVESTER) - .add(AllBlocks.MECHANICAL_PLOUGH) - .add(AllBlocks.MECHANICAL_DRILL) - .add(AllBlocks.MECHANICAL_SAW) - .add(AllBlocks.DEPLOYER) - .add(AllBlocks.PORTABLE_STORAGE_INTERFACE) - .add(AllBlocks.PORTABLE_FLUID_INTERFACE) - .add(AllBlocks.MECHANICAL_BEARING) - .add(AllBlocks.ANDESITE_FUNNEL) - .add(AllBlocks.BRASS_FUNNEL) - .add(AllBlocks.SEATS.get(DyeColor.WHITE)) - .add(AllBlocks.REDSTONE_CONTACT) - .add(Blocks.BELL) - .add(Blocks.DISPENSER) - .add(Blocks.DROPPER); - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java deleted file mode 100644 index e9a0a8097..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderIndexScreen.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import org.apache.commons.lang3.mutable.MutableBoolean; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.components.crank.ValveHandleBlock; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; -import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.ui.ChapterLabel; -import com.simibubi.create.foundation.ponder.ui.LayoutHelper; -import com.simibubi.create.foundation.ponder.ui.PonderButton; - -import net.minecraft.block.Block; -import net.minecraft.client.MainWindow; -import net.minecraft.client.gui.widget.Widget; -import net.minecraft.client.renderer.Rectangle2d; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.registries.ForgeRegistries; - -public class PonderIndexScreen extends NavigatableSimiScreen { - - protected final List chapters; - private final double chapterXmult = 0.5; - private final double chapterYmult = 0.3; - protected Rectangle2d chapterArea; - - protected final List items; - private final double itemXmult = 0.5; - private double itemYmult = 0.75; - protected Rectangle2d itemArea; - - private ItemStack hoveredItem = ItemStack.EMPTY; - - public PonderIndexScreen() { - chapters = new ArrayList<>(); - items = new ArrayList<>(); - } - - @Override - protected void init() { - widgets.clear(); - super.init(); - - chapters.clear(); - // chapters.addAll(PonderRegistry.chapters.getAllChapters()); - - items.clear(); - PonderRegistry.all.keySet() - .stream() - .map(key -> { - Item item = ForgeRegistries.ITEMS.getValue(key); - if (item == null) { - Block b = ForgeRegistries.BLOCKS.getValue(key); - if (b != null) - item = b.asItem(); - } - return item; - }) - .filter(Objects::nonNull) - .filter(PonderIndexScreen::exclusions) - .forEach(items::add); - - boolean hasChapters = !chapters.isEmpty(); - - // setup chapters - LayoutHelper layout = LayoutHelper.centeredHorizontal(chapters.size(), - MathHelper.clamp((int) Math.ceil(chapters.size() / 4f), 1, 4), 200, 38, 16); - chapterArea = layout.getArea(); - int chapterCenterX = (int) (width * chapterXmult); - int chapterCenterY = (int) (height * chapterYmult); - - // todo at some point pagination or horizontal scrolling may be needed for - // chapters/items - for (PonderChapter chapter : chapters) { - ChapterLabel label = new ChapterLabel(chapter, chapterCenterX + layout.getX(), - chapterCenterY + layout.getY(), (mouseX, mouseY) -> { - centerScalingOn(mouseX, mouseY); - ScreenOpener.transitionTo(PonderUI.of(chapter)); - }); - - widgets.add(label); - layout.next(); - } - - // setup items - if (!hasChapters) { - itemYmult = 0.5; - } - - int maxItemRows = hasChapters ? 4 : 7; - layout = LayoutHelper.centeredHorizontal(items.size(), - MathHelper.clamp((int) Math.ceil(items.size() / 11f), 1, maxItemRows), 28, 28, 8); - itemArea = layout.getArea(); - int itemCenterX = (int) (width * itemXmult); - int itemCenterY = (int) (height * itemYmult); - - for (Item item : items) { - PonderButton b = new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4) - .showing(new ItemStack(item)) - .withCallback((x, y) -> { - if (!PonderRegistry.all.containsKey(item.getRegistryName())) - return; - - centerScalingOn(x, y); - ScreenOpener.transitionTo(PonderUI.of(new ItemStack(item))); - }); - - widgets.add(b); - layout.next(); - } - - } - - private static boolean exclusions(Item item) { - if (item instanceof BlockItem) { - Block block = ((BlockItem) item).getBlock(); - if (block instanceof ValveHandleBlock && !AllBlocks.COPPER_VALVE_HANDLE.is(item)) - return false; - } - - return true; - } - - @Override - public void tick() { - super.tick(); - PonderUI.ponderTicks++; - - hoveredItem = ItemStack.EMPTY; - MainWindow w = client.getWindow(); - double mouseX = client.mouseHelper.getMouseX() * w.getScaledWidth() / w.getWidth(); - double mouseY = client.mouseHelper.getMouseY() * w.getScaledHeight() / w.getHeight(); - for (Widget widget : widgets) { - if (widget instanceof PonderButton) - if (widget.isMouseOver(mouseX, mouseY)) { - hoveredItem = ((PonderButton) widget).getItem(); - } - } - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - int x = (int) (width * chapterXmult); - int y = (int) (height * chapterYmult); - - if (!chapters.isEmpty()) { - ms.push(); - ms.translate(x, y, 0); - - UIRenderHelper.streak(ms, 0, chapterArea.getX() - 10, chapterArea.getY() - 20, 20, 220); - textRenderer.draw(ms, "Topics to Ponder about", chapterArea.getX() - 5, chapterArea.getY() - 25, Theme.i(Theme.Key.TEXT)); - - ms.pop(); - } - - x = (int) (width * itemXmult); - y = (int) (height * itemYmult); - - ms.push(); - ms.translate(x, y, 0); - - UIRenderHelper.streak(ms, 0, itemArea.getX() - 10, itemArea.getY() - 20, 20, 220); - textRenderer.draw(ms, "Items to inspect", itemArea.getX() - 5, itemArea.getY() - 25, Theme.i(Theme.Key.TEXT)); - - ms.pop(); - } - - @Override - protected void renderWindowForeground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (hoveredItem.isEmpty()) - return; - - ms.push(); - ms.translate(0, 0, 200); - - renderTooltip(ms, hoveredItem, mouseX, mouseY); - - ms.pop(); - } - - /*@Override - public boolean mouseClicked(double x, double y, int button) { - MutableBoolean handled = new MutableBoolean(false); - widgets.forEach(w -> { - if (handled.booleanValue()) - return; - if (!w.isMouseOver(x, y)) - return; - if (w instanceof PonderButton) { - PonderButton btn = (PonderButton) w; - btn.runCallback(x, y); - handled.setTrue(); - } - }); - - if (handled.booleanValue()) - return true; - return super.mouseClicked(x, y, button); - }*/ - - @Override - public boolean isEquivalentTo(NavigatableSimiScreen other) { - return other instanceof PonderIndexScreen; - } - - public ItemStack getHoveredTooltipItem() { - return hoveredItem; - } - - @Override - public boolean isPauseScreen() { - return true; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderPalette.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderPalette.java deleted file mode 100644 index 5e5fbae39..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderPalette.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -public enum PonderPalette { - - WHITE(0xFF_eeeeee), - BLACK(0xFF_221111), - - RED(0xFF_ff5d6c), - GREEN(0xFF_8cba51), - BLUE(0xFF_5f6caf), - - SLOW(0xFF_22ff22), - MEDIUM(0xFF_0084ff), - FAST(0xFF_ff55ff), - - INPUT(0xFF_4f8a8b), - OUTPUT(0xFF_ffcb74), - - ; - - private int color; - - private PonderPalette(int color) { - this.color = color; - } - - public int getColor() { - return color; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTag.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTag.java deleted file mode 100644 index ab9a6b172..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTag.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.IScreenRenderable; -import com.simibubi.create.foundation.ponder.PonderLocalization; - -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.AbstractGui; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class PonderTag implements IScreenRenderable { - - // - - public static final PonderTag - - KINETIC_RELAYS = new PonderTag("kinetic_relays").item(AllBlocks.COGWHEEL.get(), true, false) - .defaultLang("Kinetic Blocks", "Components which help relaying Rotational Force elsewhere"), - - KINETIC_SOURCES = new PonderTag("kinetic_sources").item(AllBlocks.WATER_WHEEL.get(), true, false) - .defaultLang("Kinetic Sources", "Components which generate Rotational Force"), - - KINETIC_APPLIANCES = new PonderTag("kinetic_appliances").item(AllBlocks.MECHANICAL_PRESS.get(), true, false) - .defaultLang("Kinetic Appliances", "Components which make use of Rotational Force"), - - FLUIDS = new PonderTag("fluids").item(AllBlocks.FLUID_PIPE.get(), true, false) - .defaultLang("Fluid Manipulators", "Components which help relaying and making use of Fluids"), - - LOGISTICS = new PonderTag("logistics").item(Blocks.CHEST, true, false) - .defaultLang("Item Transportation", "Components which help moving items around"), - - REDSTONE = new PonderTag("redstone").item(Items.REDSTONE, true, false) - .defaultLang("Logic Components", "Components which help with redstone engineering"), - - DECORATION = new PonderTag("decoration").item(Items.ROSE_BUSH, true, false) - .defaultLang("Aesthetics", "Components used mostly for decorative purposes"), - - CREATIVE = new PonderTag("creative").item(AllBlocks.CREATIVE_CRATE.get(), true, false) - .defaultLang("Creative Mode", "Components not usually available for Survival Mode"), - - MOVEMENT_ANCHOR = new PonderTag("movement_anchor").item(AllBlocks.MECHANICAL_PISTON.get(), true, false) - .defaultLang("Movement Anchors", - "Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways"), - - CONTRAPTION_ACTOR = new PonderTag("contraption_actor").item(AllBlocks.MECHANICAL_HARVESTER.get(), true, false) - .defaultLang("Contraption Actors", - "Components which expose special behaviour when attached to a moving contraption"), - - CONTRAPTION_ASSEMBLY = new PonderTag("contraption_assembly").item(AllItems.SUPER_GLUE.get(), true, false) - .defaultLang("Block Attachment Utility", - "Tools and Components used to assemble structures moved as an animated Contraption"), - - SAILS = new PonderTag("windmill_sails").item(AllBlocks.WINDMILL_BEARING.get(), true, true) - .defaultLang("Sails for Windmill Bearings", - "Blocks that count towards the strength of a Windmill Contraption when assembled. Each of these have equal efficiency in doing so."), - -// FLUID_TRANSFER = new PonderTag("fluid_transfer").idAsIcon(), -// -// OPEN_INVENTORY = new PonderTag("open_inventory").item(AllBlocks.BASIN.get() -// .asItem()), -// -// REDSTONE_CONTROL = new PonderTag("redstone_control").item(Items.REDSTONE, true, false), -// -// ITEM_TRANSFER = new PonderTag("item_transfer").idAsIcon(), - - ARM_TARGETS = new PonderTag("arm_targets").item(AllBlocks.MECHANICAL_ARM.get()) - .defaultLang("Targets for Mechanical Arms", - "Components which can be selected as inputs or outputs to the Mechanical Arm"); - - public static class Highlight { - public static final PonderTag ALL = new PonderTag("_all"); - } - - // - - private final String id; - private ResourceLocation icon; - private ItemStack itemIcon = ItemStack.EMPTY; - private ItemStack mainItem = ItemStack.EMPTY; - - public String getTitle() { - return PonderLocalization.getTag(id); - } - - public String getDescription() { - return PonderLocalization.getTagDescription(id); - } - - // Builder - - public PonderTag(String id) { - this.id = id; - } - - public String getId() { - return id; - } - - public PonderTag defaultLang(String title, String description) { - PonderLocalization.registerTag(id, title, description); - return this; - } - - public ItemStack getMainItem() { - return mainItem; - } - - public PonderTag idAsIcon() { - return icon(id); - } - - public PonderTag icon(String location) { - this.icon = new ResourceLocation(com.simibubi.create.Create.ID, "textures/ponder/tag/" + location + ".png"); - return this; - } - - public PonderTag item(IItemProvider item) { - return this.item(item, true, true); - } - - public PonderTag item(IItemProvider item, boolean useAsIcon, boolean useAsMainItem) { - if (useAsIcon) - this.itemIcon = new ItemStack(item); - if (useAsMainItem) - this.mainItem = new ItemStack(item); - return this; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void draw(MatrixStack ms, AbstractGui screen, int x, int y) { - ms.push(); - ms.translate(x, y, 0); - if (icon != null) { - Minecraft.getInstance() - .getTextureManager() - .bindTexture(icon); - ms.scale(0.25f, 0.25f, 1); - // x and y offset, blit z offset, tex x and y, tex width and height, entire tex sheet width and height - AbstractGui.drawTexture(ms, 0, 0, 0, 0, 0, 64, 64, 64, 64); - } else if (!itemIcon.isEmpty()) { - ms.translate(-4, -4, 0); - ms.scale(1.5f, 1.5f, 1.5f); - GuiGameElement.of(itemIcon) - .render(ms); - } - ms.pop(); - } - - // Load class - public static void register() {} - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagRegistry.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagRegistry.java deleted file mode 100644 index 9ff0a6763..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagRegistry.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Map; -import java.util.Set; - -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; -import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.tterrag.registrate.util.entry.ItemProviderEntry; - -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; - -public class PonderTagRegistry { - - private final Multimap tags; - private final Multimap chapterTags; - - public PonderTagRegistry() { - tags = LinkedHashMultimap.create(); - chapterTags = LinkedHashMultimap.create(); - } - - public Set getTags(ResourceLocation item) { - return ImmutableSet.copyOf(tags.get(item)); - } - - public Set getTags(PonderChapter chapter) { - return ImmutableSet.copyOf(chapterTags.get(chapter)); - } - - public Set getItems(PonderTag tag) { - return tags.entries() - .stream() - .filter(e -> e.getValue() == tag) - .map(Map.Entry::getKey) - .collect(ImmutableSet.toImmutableSet()); - } - - public Set getChapters(PonderTag tag) { - return chapterTags.entries() - .stream() - .filter(e -> e.getValue() == tag) - .map(Map.Entry::getKey) - .collect(ImmutableSet.toImmutableSet()); - } - - public void add(PonderTag tag, ResourceLocation item) { - tags.put(item, tag); - } - - public void add(PonderTag tag, PonderChapter chapter) { - chapterTags.put(chapter, tag); - } - - public ItemBuilder forItems(ResourceLocation... items) { - return new ItemBuilder(items); - } - - public TagBuilder forTag(PonderTag tag) { - return new TagBuilder(tag); - } - - public static class ItemBuilder { - - private final Collection items; - - private ItemBuilder(ResourceLocation... items) { - this.items = Arrays.asList(items); - } - - public ItemBuilder add(PonderTag tag) { - items.forEach(i -> PonderRegistry.tags.add(tag, i)); - return this; - } - - } - - public static class TagBuilder { - - private final PonderTag tag; - - private TagBuilder(PonderTag tag) { - this.tag = tag; - } - - public TagBuilder add(ResourceLocation item) { - PonderRegistry.tags.add(tag, item); - return this; - } - - public TagBuilder add(IItemProvider item) { - return add(item.asItem() - .getRegistryName()); - } - - public TagBuilder add(ItemProviderEntry entry) { - return add(entry.get()); - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java deleted file mode 100644 index 1e430d63f..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PonderTagScreen.java +++ /dev/null @@ -1,364 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -import org.apache.commons.lang3.mutable.MutableBoolean; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.gui.BoxElement; -import com.simibubi.create.foundation.gui.ScreenOpener; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.ponder.NavigatableSimiScreen; -import com.simibubi.create.foundation.ponder.PonderLocalization; -import com.simibubi.create.foundation.ponder.PonderRegistry; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.ui.ChapterLabel; -import com.simibubi.create.foundation.ponder.ui.LayoutHelper; -import com.simibubi.create.foundation.ponder.ui.PonderButton; -import com.simibubi.create.foundation.utility.FontHelper; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.block.Block; -import net.minecraft.client.MainWindow; -import net.minecraft.client.gui.widget.Widget; -import net.minecraft.client.renderer.Rectangle2d; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.registries.ForgeRegistries; - -public class PonderTagScreen extends NavigatableSimiScreen { - - public static final String ASSOCIATED = PonderLocalization.LANG_PREFIX + "associated"; - - private final PonderTag tag; - protected final List items; - private final double itemXmult = 0.5; - protected Rectangle2d itemArea; - protected final List chapters; - private final double chapterXmult = 0.5; - private final double chapterYmult = 0.75; - protected Rectangle2d chapterArea; - private final double mainYmult = 0.15; - - private ItemStack hoveredItem = ItemStack.EMPTY; - - public PonderTagScreen(PonderTag tag) { - this.tag = tag; - items = new ArrayList<>(); - chapters = new ArrayList<>(); - } - - @Override - protected void init() { - widgets.clear(); - super.init(); - - // items - items.clear(); - PonderRegistry.tags.getItems(tag) - .stream() - .map(key -> { - Item item = ForgeRegistries.ITEMS.getValue(key); - if (item == null) { - Block b = ForgeRegistries.BLOCKS.getValue(key); - if (b != null) - item = b.asItem(); - } - return item; - }) - .filter(Objects::nonNull) - .forEach(items::add); - - if (!tag.getMainItem().isEmpty()) - items.remove(tag.getMainItem().getItem()); - - int rowCount = MathHelper.clamp((int) Math.ceil(items.size() / 11d), 1, 3); - LayoutHelper layout = LayoutHelper.centeredHorizontal(items.size(), rowCount, 28, 28, 8); - itemArea = layout.getArea(); - int itemCenterX = (int) (width * itemXmult); - int itemCenterY = getItemsY(); - - for (Item i : items) { - PonderButton b = new PonderButton(itemCenterX + layout.getX() + 4, itemCenterY + layout.getY() + 4) - .showing(new ItemStack(i)); - - if (PonderRegistry.all.containsKey(i.getRegistryName())) { - b.withCallback((mouseX, mouseY) -> { - centerScalingOn(mouseX, mouseY); - ScreenOpener.transitionTo(PonderUI.of(new ItemStack(i), tag)); - }); - } else { - if (i.getRegistryName() - .getNamespace() - .equals(Create.ID)) - b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_CREATE)) - .animateColors(false); - else - b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_VANILLA)) - .animateColors(false); - } - - widgets.add(b); - layout.next(); - } - - if (!tag.getMainItem().isEmpty()) { - ResourceLocation registryName = tag.getMainItem() - .getItem() - .getRegistryName(); - - PonderButton b = new PonderButton(itemCenterX - layout.getTotalWidth() / 2 - 42, itemCenterY - 10) - .showing(tag.getMainItem()); - - if (PonderRegistry.all.containsKey(registryName)) { - b.withCallback((mouseX, mouseY) -> { - centerScalingOn(mouseX, mouseY); - ScreenOpener.transitionTo(PonderUI.of(tag.getMainItem(), tag)); - }); - } else { - if (registryName.getNamespace() - .equals(Create.ID)) - b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_CREATE)) - .animateColors(false); - else - b.withBorderColors(Theme.p(Theme.Key.PONDER_MISSING_VANILLA)) - .animateColors(false); - } - - widgets.add(b); - } - - // chapters - chapters.clear(); - chapters.addAll(PonderRegistry.tags.getChapters(tag)); - - rowCount = MathHelper.clamp((int) Math.ceil(chapters.size() / 3f), 1, 3); - layout = LayoutHelper.centeredHorizontal(chapters.size(), rowCount, 200, 38, 16); - chapterArea = layout.getArea(); - int chapterCenterX = (int) (width * chapterXmult); - int chapterCenterY = (int) (height * chapterYmult); - - for (PonderChapter chapter : chapters) { - ChapterLabel label = new ChapterLabel(chapter, chapterCenterX + layout.getX(), - chapterCenterY + layout.getY(), (mouseX, mouseY) -> { - centerScalingOn(mouseX, mouseY); - ScreenOpener.transitionTo(PonderUI.of(chapter)); - }); - - widgets.add(label); - layout.next(); - } - - } - - @Override - public void tick() { - super.tick(); - PonderUI.ponderTicks++; - - hoveredItem = ItemStack.EMPTY; - MainWindow w = client.getWindow(); - double mouseX = client.mouseHelper.getMouseX() * w.getScaledWidth() / w.getWidth(); - double mouseY = client.mouseHelper.getMouseY() * w.getScaledHeight() / w.getHeight(); - for (Widget widget : widgets) { - if (widget == backTrack) - continue; - if (widget instanceof PonderButton) - if (widget.isMouseOver(mouseX, mouseY)) { - hoveredItem = ((PonderButton) widget).getItem(); - } - } - } - - @Override - protected void renderWindow(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - renderItems(ms, mouseX, mouseY, partialTicks); - - renderChapters(ms, mouseX, mouseY, partialTicks); - - ms.push(); - ms.translate(width / 2 - 120, height * mainYmult - 40, 0); - - ms.push(); - //ms.translate(0, 0, 800); - int x = 31 + 20 + 8; - int y = 31; - - String title = tag.getTitle(); - - int streakHeight = 35; - UIRenderHelper.streak(ms, 0, x - 4, y - 12 + streakHeight / 2, streakHeight, 240); - //PonderUI.renderBox(ms, 21, 21, 30, 30, false); - new BoxElement() - .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) - .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) - .at(21, 21, 100) - .withBounds(30, 30) - .render(ms); - - textRenderer.draw(ms, Lang.translate(PonderUI.PONDERING), x, y - 6, Theme.i(Theme.Key.TEXT_DARKER)); - y += 8; - x += 0; - ms.translate(x, y, 0); - ms.translate(0, 0, 5); - textRenderer.draw(ms, title, 0, 0, Theme.i(Theme.Key.TEXT)); - ms.pop(); - - ms.push(); - ms.translate(23, 23, 10); - ms.scale(1.66f, 1.66f, 1.66f); - tag.draw(ms, this, 0, 0); - ms.pop(); - ms.pop(); - - ms.push(); - int w = (int) (width * .45); - x = (width - w) / 2; - y = getItemsY() - 10 + Math.max(itemArea.getHeight(), 48); - - String desc = tag.getDescription(); - int h = textRenderer.getWordWrappedHeight(desc, w); - - - //PonderUI.renderBox(ms, x - 3, y - 3, w + 6, h + 6, false); - new BoxElement() - .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) - .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) - .at(x - 3, y - 3, 90) - .withBounds(w + 6, h + 6) - .render(ms); - - ms.translate(0, 0, 100); - FontHelper.drawSplitString(ms, textRenderer, desc, x, y, w, Theme.i(Theme.Key.TEXT)); - ms.pop(); - } - - protected void renderItems(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (items.isEmpty()) - return; - - int x = (int) (width * itemXmult); - int y = getItemsY(); - - String relatedTitle = Lang.translate(ASSOCIATED).getString(); - int stringWidth = textRenderer.getStringWidth(relatedTitle); - - ms.push(); - ms.translate(x, y, 0); - //PonderUI.renderBox(ms, (sWidth - stringWidth) / 2 - 5, itemArea.getY() - 21, stringWidth + 10, 10, false); - new BoxElement() - .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) - .gradientBorder(Theme.p(Theme.Key.PONDER_IDLE)) - .at((sWidth - stringWidth) / 2f - 5, itemArea.getY() - 21, 100) - .withBounds(stringWidth + 10, 10) - .render(ms); - - ms.translate(0, 0, 200); - -// UIRenderHelper.streak(0, itemArea.getX() - 10, itemArea.getY() - 20, 20, 180, 0x101010); - drawCenteredString(ms, textRenderer, relatedTitle, sWidth / 2, itemArea.getY() - 20, Theme.i(Theme.Key.TEXT)); - - ms.translate(0,0, -200); - - UIRenderHelper.streak(ms, 0, 0, 0, itemArea.getHeight() + 10, itemArea.getWidth() / 2 + 75); - UIRenderHelper.streak(ms, 180, 0, 0, itemArea.getHeight() + 10, itemArea.getWidth() / 2 + 75); - - ms.pop(); - - } - - public int getItemsY() { - return (int) (mainYmult * height + 85); - } - - protected void renderChapters(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - if (chapters.isEmpty()) - return; - - int chapterX = (int) (width * chapterXmult); - int chapterY = (int) (height * chapterYmult); - - ms.push(); - ms.translate(chapterX, chapterY, 0); - - UIRenderHelper.streak(ms, 0, chapterArea.getX() - 10, chapterArea.getY() - 20, 20, 220); - textRenderer.draw(ms, "More Topics to Ponder about", chapterArea.getX() - 5, chapterArea.getY() - 25, Theme.i(Theme.Key.TEXT_ACCENT_SLIGHT)); - - ms.pop(); - } - - @Override - protected void renderWindowForeground(MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - ms.push(); - RenderSystem.disableRescaleNormal(); - RenderSystem.disableDepthTest(); - - ms.translate(0, 0, 200); - if (!hoveredItem.isEmpty()) { - renderTooltip(ms, hoveredItem, mouseX, mouseY); - } - RenderSystem.enableDepthTest(); - RenderSystem.enableRescaleNormal(); - ms.pop(); - } - - @Override - protected String getBreadcrumbTitle() { - return tag.getTitle(); - } - - public ItemStack getHoveredTooltipItem() { - return hoveredItem; - } - - /*@Override - public boolean mouseClicked(double x, double y, int button) { - MutableBoolean handled = new MutableBoolean(false); - widgets.forEach(w -> { - if (handled.booleanValue()) - return; - if (!w.isMouseOver(x, y)) - return; - if (w instanceof PonderButton) { - PonderButton mtdButton = (PonderButton) w; - mtdButton.runCallback(x, y); - handled.setTrue(); - return; - } - }); - - if (handled.booleanValue()) - return true; - return super.mouseClicked(x, y, button); - }*/ - - @Override - public boolean isEquivalentTo(NavigatableSimiScreen other) { - if (other instanceof PonderTagScreen) - return tag == ((PonderTagScreen) other).tag; - return super.isEquivalentTo(other); - } - - @Override - public boolean isPauseScreen() { - return true; - } - - public PonderTag getTag() { - return tag; - } - - @Override - public void removed() { - super.removed(); - hoveredItem = ItemStack.EMPTY; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java deleted file mode 100644 index d852322d9..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/ProcessingScenes.java +++ /dev/null @@ -1,895 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity; -import com.simibubi.create.content.contraptions.components.millstone.MillstoneTileEntity; -import com.simibubi.create.content.contraptions.components.mixer.MechanicalMixerTileEntity; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity; -import com.simibubi.create.content.contraptions.components.press.MechanicalPressTileEntity.Mode; -import com.simibubi.create.content.contraptions.processing.BasinBlock; -import com.simibubi.create.content.contraptions.processing.BasinTileEntity; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock; -import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock.HeatLevel; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.BeltItemElement; -import com.simibubi.create.foundation.ponder.elements.EntityElement; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.ponder.instructions.EmitParticlesInstruction.Emitter; -import com.simibubi.create.foundation.utility.IntAttached; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.monster.BlazeEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.particles.ItemParticleData; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class ProcessingScenes { - - public static void millstone(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("millstone", "Processing Items in the Millstone"); - scene.configureBasePlate(0, 0, 5); - - Selection belt = util.select.fromTo(1, 1, 5, 0, 1, 2) - .add(util.select.position(1, 2, 2)); - Selection beltCog = util.select.position(2, 0, 5); - - scene.world.showSection(util.select.layer(0) - .substract(beltCog), Direction.UP); - - BlockPos millstone = util.grid.at(2, 2, 2); - Selection millstoneSelect = util.select.position(2, 2, 2); - Selection cogs = util.select.fromTo(3, 1, 2, 3, 2, 2); - scene.world.setKineticSpeed(millstoneSelect, 0); - - scene.idle(5); - scene.world.showSection(util.select.position(4, 1, 3), Direction.DOWN); - scene.world.showSection(util.select.position(2, 1, 2), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(millstone), Direction.DOWN); - scene.idle(10); - Vector3d millstoneTop = util.vector.topOf(millstone); - scene.overlay.showText(60) - .attachKeyFrame() - .text("Millstones process items by grinding them") - .pointAt(millstoneTop) - .placeNearTarget(); - scene.idle(70); - - scene.world.showSection(cogs, Direction.DOWN); - scene.idle(10); - scene.world.setKineticSpeed(millstoneSelect, 32); - scene.effects.indicateSuccess(millstone); - scene.idle(10); - - scene.overlay.showText(60) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .text("They can be powered from the side using cogwheels") - .pointAt(util.vector.topOf(millstone.east())) - .placeNearTarget(); - scene.idle(70); - - ItemStack itemStack = new ItemStack(Items.WHEAT); - Vector3d entitySpawn = util.vector.topOf(millstone.up(3)); - - ElementLink entity1 = - scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), itemStack); - scene.idle(18); - scene.world.modifyEntity(entity1, Entity::remove); - scene.world.modifyTileEntity(millstone, MillstoneTileEntity.class, - ms -> ms.inputInv.setStackInSlot(0, itemStack)); - scene.idle(10); - scene.overlay.showControls(new InputWindowElement(millstoneTop, Pointing.DOWN).withItem(itemStack), 30); - scene.idle(7); - - scene.overlay.showText(40) - .attachKeyFrame() - .text("Throw or Insert items at the top") - .pointAt(millstoneTop) - .placeNearTarget(); - scene.idle(60); - - scene.world.modifyTileEntity(millstone, MillstoneTileEntity.class, - ms -> ms.inputInv.setStackInSlot(0, ItemStack.EMPTY)); - - scene.overlay.showText(50) - .text("After some time, the result can be obtained via Right-click") - .pointAt(util.vector.blockSurface(millstone, Direction.WEST)) - .placeNearTarget(); - scene.idle(60); - - ItemStack flour = AllItems.WHEAT_FLOUR.asStack(); - scene.overlay.showControls( - new InputWindowElement(util.vector.blockSurface(millstone, Direction.NORTH), Pointing.RIGHT).rightClick() - .withItem(flour), - 40); - scene.idle(50); - - scene.addKeyframe(); - scene.world.showSection(beltCog, Direction.UP); - scene.world.showSection(belt, Direction.EAST); - scene.idle(15); - - BlockPos beltPos = util.grid.at(1, 1, 2); - scene.world.createItemOnBelt(beltPos, Direction.EAST, flour); - scene.idle(15); - scene.world.createItemOnBelt(beltPos, Direction.EAST, new ItemStack(Items.WHEAT_SEEDS)); - scene.idle(20); - - scene.overlay.showText(50) - .text("The outputs can also be extracted by automation") - .pointAt(util.vector.blockSurface(millstone, Direction.WEST) - .add(-.5, .4, 0)) - .placeNearTarget(); - scene.idle(60); - } - - public static void crushingWheels(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("crushing_wheels", "Processing Items with Crushing Wheels"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(.9f); - - Selection wheels = util.select.fromTo(3, 2, 2, 1, 2, 2); - Selection kinetics = util.select.fromTo(0, 1, 5, 4, 1, 3); - Selection kinetics2 = util.select.fromTo(0, 2, 5, 4, 2, 3); - Selection beltCog = util.select.position(5, 0, 1); - scene.world.setKineticSpeed(wheels, 0); - scene.world.setBlock(util.grid.at(2, 3, 2), Blocks.AIR.getDefaultState(), false); - - scene.world.showSection(util.select.layer(0) - .substract(beltCog), Direction.UP); - scene.idle(5); - - Selection belt = util.select.fromTo(4, 1, 2, 4, 4, 2) - .add(util.select.fromTo(4, 3, 3, 4, 4, 3)) - .add(util.select.position(3, 3, 2)) - .add(util.select.position(2, 3, 2)); - Selection bottomBelt = util.select.fromTo(5, 1, 0, 2, 1, 0) - .add(util.select.fromTo(2, 1, 2, 2, 1, 1)); - - BlockPos center = util.grid.at(2, 2, 2); - Selection wWheel = util.select.position(center.west()); - Selection eWheel = util.select.position(center.east()); - - scene.world.showSection(wWheel, Direction.SOUTH); - scene.idle(3); - scene.world.showSection(eWheel, Direction.SOUTH); - scene.idle(10); - - Vector3d centerTop = util.vector.topOf(center); - scene.overlay.showText(60) - .attachKeyFrame() - .text("A pair of Crushing Wheels can grind items very effectively") - .pointAt(centerTop) - .placeNearTarget(); - scene.idle(70); - - scene.world.showSection(kinetics, Direction.DOWN); - scene.idle(3); - scene.world.showSection(kinetics2, Direction.DOWN); - scene.world.setKineticSpeed(wWheel, -16); - scene.world.setKineticSpeed(eWheel, 16); - scene.idle(5); - scene.effects.rotationDirectionIndicator(center.west()); - scene.effects.rotationDirectionIndicator(center.east()); - scene.idle(10); - - scene.overlay.showText(60) - .attachKeyFrame() - .text("Their Rotational Input has to make them spin into each other") - .pointAt(util.vector.blockSurface(center.west(), Direction.NORTH)) - .placeNearTarget(); - scene.idle(40); - scene.effects.rotationDirectionIndicator(center.west()); - scene.effects.rotationDirectionIndicator(center.east()); - scene.idle(30); - - ItemStack input = new ItemStack(Items.GOLD_ORE); - ItemStack output = AllItems.CRUSHED_GOLD.asStack(); - Vector3d entitySpawn = util.vector.topOf(center.up(2)); - - ElementLink entity1 = - scene.world.createItemEntity(entitySpawn, util.vector.of(0, 0.2, 0), input); - scene.idle(18); - scene.world.modifyEntity(entity1, Entity::remove); - Emitter blockSpace = - Emitter.withinBlockSpace(new ItemParticleData(ParticleTypes.ITEM, input), util.vector.of(0, 0, 0)); - scene.effects.emitParticles(util.vector.centerOf(center) - .add(0, -0.2, 0), blockSpace, 3, 40); - scene.idle(10); - scene.overlay.showControls(new InputWindowElement(centerTop, Pointing.DOWN).withItem(input), 30); - scene.idle(7); - - scene.overlay.showText(50) - .attachKeyFrame() - .text("Items thrown or inserted into the top will get processed") - .pointAt(centerTop) - .placeNearTarget(); - scene.idle(60); - - scene.world.createItemEntity(centerTop.add(0, -1.4, 0), util.vector.of(0, 0, 0), output); - scene.idle(10); - scene.world.createItemEntity(centerTop.add(0, -1.4, 0), util.vector.of(0, 0, 0), output); - scene.overlay.showControls(new InputWindowElement(centerTop.add(0, -2, 0), Pointing.UP).withItem(output), 30); - scene.idle(40); - - scene.world.restoreBlocks(util.select.position(2, 3, 2)); - scene.world.showSection(belt, Direction.DOWN); - scene.idle(5); - scene.world.showSection(beltCog, Direction.UP); - scene.idle(5); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.showSection(bottomBelt, Direction.SOUTH); - scene.idle(5); - - scene.overlay.showText(50) - .attachKeyFrame() - .text("Items can be inserted and picked up through automated means as well") - .pointAt(centerTop.add(0, .5, 0)) - .placeNearTarget(); - scene.idle(40); - - for (int i = 0; i < 5; i++) { - if (i < 4) - scene.world.createItemOnBelt(util.grid.at(4, 4, 2), Direction.EAST, input); - scene.idle(15); - if (i < 3) - scene.world.createItemOnBelt(util.grid.at(4, 4, 2), Direction.EAST, input); - scene.idle(15); - if (i > 0) { - scene.world.createItemOnBelt(center.down(), Direction.UP, output); - scene.idle(15); - scene.world.createItemOnBelt(center.down(), Direction.UP, output); - } - scene.world.removeItemsFromBelt(util.grid.at(3, 3, 2)); - if (i < 4) - scene.effects.emitParticles(util.vector.centerOf(center) - .add(0, -0.2, 0), blockSpace, 3, 28); - if (i == 0) - scene.markAsFinished(); - } - } - - public static void pressing(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_press", "Processing Items with the Mechanical Press"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - ElementLink depot = - scene.world.showIndependentSection(util.select.position(2, 1, 1), Direction.DOWN); - scene.world.moveSection(depot, util.vector.of(0, 0, 1), 0); - scene.idle(10); - - Selection pressS = util.select.position(2, 3, 2); - BlockPos pressPos = util.grid.at(2, 3, 2); - BlockPos depotPos = util.grid.at(2, 1, 1); - scene.world.setKineticSpeed(pressS, 0); - scene.world.showSection(pressS, Direction.DOWN); - scene.idle(10); - - scene.world.showSection(util.select.fromTo(2, 1, 3, 2, 1, 5), Direction.NORTH); - scene.idle(3); - scene.world.showSection(util.select.position(2, 2, 3), Direction.SOUTH); - scene.idle(3); - scene.world.showSection(util.select.position(2, 3, 3), Direction.NORTH); - scene.world.setKineticSpeed(pressS, -32); - scene.effects.indicateSuccess(pressPos); - scene.idle(10); - - Vector3d pressSide = util.vector.blockSurface(pressPos, Direction.WEST); - scene.overlay.showText(60) - .pointAt(pressSide) - .placeNearTarget() - .attachKeyFrame() - .text("The Mechanical Press can process items provided beneath it"); - scene.idle(70); - scene.overlay.showText(60) - .pointAt(pressSide.subtract(0, 2, 0)) - .placeNearTarget() - .text("The Input items can be dropped or placed on a Depot under the Press"); - scene.idle(50); - ItemStack copper = AllItems.COPPER_INGOT.asStack(); - scene.world.createItemOnBeltLike(depotPos, Direction.NORTH, copper); - Vector3d depotCenter = util.vector.centerOf(depotPos.south()); - scene.overlay.showControls(new InputWindowElement(depotCenter, Pointing.UP).withItem(copper), 30); - scene.idle(10); - - Class type = MechanicalPressTileEntity.class; - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BELT)); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makePressingParticleEffect(depotCenter.add(0, 8 / 16f, 0), copper)); - scene.world.removeItemsFromBelt(depotPos); - ItemStack sheet = AllItems.COPPER_SHEET.asStack(); - scene.world.createItemOnBeltLike(depotPos, Direction.UP, sheet); - scene.idle(10); - scene.overlay.showControls(new InputWindowElement(depotCenter, Pointing.UP).withItem(sheet), 50); - scene.idle(60); - - scene.world.hideIndependentSection(depot, Direction.NORTH); - scene.idle(5); - scene.world.showSection(util.select.fromTo(0, 1, 3, 0, 2, 3), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.fromTo(4, 1, 2, 0, 2, 2), Direction.SOUTH); - scene.idle(20); - BlockPos beltPos = util.grid.at(0, 1, 2); - scene.overlay.showText(40) - .pointAt(util.vector.blockSurface(beltPos, Direction.WEST)) - .placeNearTarget() - .attachKeyFrame() - .text("When items are provided on a belt..."); - scene.idle(30); - - ElementLink ingot = scene.world.createItemOnBelt(beltPos, Direction.SOUTH, copper); - scene.idle(15); - ElementLink ingot2 = scene.world.createItemOnBelt(beltPos, Direction.SOUTH, copper); - scene.idle(15); - scene.world.stallBeltItem(ingot, true); - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BELT)); - - scene.overlay.showText(50) - .pointAt(pressSide) - .placeNearTarget() - .attachKeyFrame() - .text("The Press will hold and process them automatically"); - - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makePressingParticleEffect(depotCenter.add(0, 8 / 16f, 0), copper)); - scene.world.removeItemsFromBelt(pressPos.down(2)); - ingot = scene.world.createItemOnBelt(pressPos.down(2), Direction.UP, sheet); - scene.world.stallBeltItem(ingot, true); - scene.idle(15); - scene.world.stallBeltItem(ingot, false); - scene.idle(15); - scene.world.stallBeltItem(ingot2, true); - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BELT)); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makePressingParticleEffect(depotCenter.add(0, 8 / 16f, 0), copper)); - scene.world.removeItemsFromBelt(pressPos.down(2)); - ingot2 = scene.world.createItemOnBelt(pressPos.down(2), Direction.UP, sheet); - scene.world.stallBeltItem(ingot2, true); - scene.idle(15); - scene.world.stallBeltItem(ingot2, false); - - } - - public static void mixing(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_mixer", "Processing Items with the Mechanical Mixer"); - scene.configureBasePlate(0, 0, 5); - scene.world.setBlock(util.grid.at(1, 1, 2), AllBlocks.ANDESITE_CASING.getDefaultState(), false); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 4, 3, 1, 1, 5), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(1, 1, 2), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(1, 2, 2), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(1, 4, 2), Direction.SOUTH); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 1, 1, 1, 1), Direction.SOUTH); - scene.world.showSection(util.select.fromTo(3, 1, 5, 3, 1, 2), Direction.SOUTH); - scene.idle(20); - - BlockPos basin = util.grid.at(1, 2, 2); - BlockPos pressPos = util.grid.at(1, 4, 2); - Vector3d basinSide = util.vector.blockSurface(basin, Direction.WEST); - - ItemStack blue = new ItemStack(Items.BLUE_DYE); - ItemStack red = new ItemStack(Items.RED_DYE); - ItemStack purple = new ItemStack(Items.PURPLE_DYE); - - scene.overlay.showText(60) - .pointAt(basinSide) - .placeNearTarget() - .attachKeyFrame() - .text("With a Mixer and Basin, some Crafting Recipes can be automated"); - scene.idle(40); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basin), Pointing.LEFT).withItem(blue), 30); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basin), Pointing.RIGHT).withItem(red), 30); - scene.idle(30); - Class type = MechanicalMixerTileEntity.class; - scene.world.modifyTileEntity(pressPos, type, pte -> pte.startProcessingBasin()); - scene.world.createItemOnBeltLike(basin, Direction.UP, red); - scene.world.createItemOnBeltLike(basin, Direction.UP, blue); - scene.idle(80); - scene.world.modifyTileNBT(util.select.position(basin), BasinTileEntity.class, nbt -> { - nbt.put("VisualizedItems", - NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, purple)), ia -> ia.getValue() - .serializeNBT())); - }); - scene.idle(4); - scene.world.createItemOnBelt(util.grid.at(1, 1, 1), Direction.UP, purple); - scene.idle(30); - - scene.overlay.showText(80) - .pointAt(basinSide) - .placeNearTarget() - .attachKeyFrame() - .text("Available recipes include any Shapeless Crafting Recipe, plus a couple extra ones"); - scene.idle(80); - - scene.rotateCameraY(-30); - scene.idle(10); - scene.world.setBlock(util.grid.at(1, 1, 2), AllBlocks.BLAZE_BURNER.getDefaultState() - .with(BlazeBurnerBlock.HEAT_LEVEL, HeatLevel.KINDLED), true); - scene.idle(10); - - scene.overlay.showText(80) - .pointAt(basinSide.subtract(0, 1, 0)) - .placeNearTarget() - .text("Some of those recipes may require the heat of a Blaze Burner"); - scene.idle(40); - - scene.rotateCameraY(30); - - scene.idle(60); - Vector3d filterPos = util.vector.of(1, 2.75f, 2.5f); - scene.overlay.showFilterSlotInput(filterPos, 100); - scene.overlay.showText(120) - .pointAt(filterPos) - .placeNearTarget() - .attachKeyFrame() - .text("The filter slot can be used in case two recipes are conflicting."); - scene.idle(60); - } - - public static void compacting(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("mechanical_press_compacting", "Compacting items with the Mechanical Press"); - scene.configureBasePlate(0, 0, 5); - scene.world.setBlock(util.grid.at(1, 1, 2), AllBlocks.ANDESITE_CASING.getDefaultState(), false); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 4, 3, 1, 1, 5), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(1, 1, 2), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(1, 2, 2), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.position(1, 4, 2), Direction.SOUTH); - scene.idle(5); - scene.world.showSection(util.select.fromTo(3, 1, 1, 1, 1, 1), Direction.SOUTH); - scene.world.showSection(util.select.fromTo(3, 1, 5, 3, 1, 2), Direction.SOUTH); - scene.idle(20); - - BlockPos basin = util.grid.at(1, 2, 2); - BlockPos pressPos = util.grid.at(1, 4, 2); - Vector3d basinSide = util.vector.blockSurface(basin, Direction.WEST); - - ItemStack copper = AllItems.COPPER_INGOT.asStack(); - ItemStack copperBlock = AllBlocks.COPPER_BLOCK.asStack(); - - scene.overlay.showText(60) - .pointAt(basinSide) - .placeNearTarget() - .attachKeyFrame() - .text("Pressing items held in a Basin will cause them to be Compacted"); - scene.idle(40); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basin), Pointing.DOWN).withItem(copper), - 30); - scene.idle(30); - Class type = MechanicalPressTileEntity.class; - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BASIN)); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makeCompactingParticleEffect(util.vector.centerOf(basin), copper)); - scene.world.modifyTileNBT(util.select.position(basin), BasinTileEntity.class, nbt -> { - nbt.put("VisualizedItems", - NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, copperBlock)), ia -> ia.getValue() - .serializeNBT())); - }); - scene.idle(4); - scene.world.createItemOnBelt(util.grid.at(1, 1, 1), Direction.UP, copperBlock); - scene.idle(30); - - scene.overlay.showText(80) - .pointAt(basinSide) - .placeNearTarget() - .attachKeyFrame() - .text("Compacting includes any filled 2x2 or 3x3 Crafting Recipe, plus a couple extra ones"); - - scene.idle(30); - ItemStack log = new ItemStack(Items.OAK_LOG); - ItemStack bark = new ItemStack(Items.OAK_WOOD); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basin), Pointing.DOWN).withItem(log), 30); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BASIN)); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makeCompactingParticleEffect(util.vector.centerOf(basin), log)); - scene.world.modifyTileNBT(util.select.position(basin), BasinTileEntity.class, nbt -> { - nbt.put("VisualizedItems", - NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, bark)), ia -> ia.getValue() - .serializeNBT())); - }); - scene.idle(4); - scene.world.createItemOnBelt(util.grid.at(1, 1, 1), Direction.UP, bark); - scene.idle(30); - - scene.rotateCameraY(-30); - scene.idle(10); - scene.world.setBlock(util.grid.at(1, 1, 2), AllBlocks.BLAZE_BURNER.getDefaultState() - .with(BlazeBurnerBlock.HEAT_LEVEL, HeatLevel.KINDLED), true); - scene.idle(10); - - scene.overlay.showText(80) - .pointAt(basinSide.subtract(0, 1, 0)) - .placeNearTarget() - .text("Some of those recipes may require the heat of a Blaze Burner"); - scene.idle(40); - - scene.rotateCameraY(30); - - scene.idle(60); - Vector3d filterPos = util.vector.of(1, 2.75f, 2.5f); - scene.overlay.showFilterSlotInput(filterPos, 100); - scene.overlay.showText(120) - .pointAt(filterPos) - .placeNearTarget() - .attachKeyFrame() - .text("The filter slot can be used in case two recipes are conflicting."); - scene.idle(60); - } - - public static void emptyBlazeBurner(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("empty_blaze_burner", "Using Empty Blaze Burners"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(10); - BlockPos center = util.grid.at(2, 0, 2); - - scene.world.createEntity(w -> { - BlazeEntity blazeEntity = EntityType.BLAZE.create(w); - Vector3d v = util.vector.topOf(center); - blazeEntity.setPos(v.x, v.y, v.z); - blazeEntity.prevRotationYaw = blazeEntity.rotationYaw = 180; - return blazeEntity; - }); - - scene.idle(20); - scene.overlay - .showControls(new InputWindowElement(util.vector.centerOf(center.up(2)), Pointing.DOWN).rightClick() - .withItem(AllItems.EMPTY_BLAZE_BURNER.asStack()), 40); - scene.idle(10); - scene.overlay.showText(60) - .text("Right-click a Blaze with the empty burner to capture it") - .attachKeyFrame() - .pointAt(util.vector.blockSurface(center.up(2), Direction.WEST)) - .placeNearTarget(); - scene.idle(50); - - scene.world.modifyEntities(BlazeEntity.class, Entity::remove); - scene.idle(20); - - scene.world.showSection(util.select.position(2, 1, 2), Direction.DOWN); - scene.idle(20); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(center.up()), Pointing.DOWN).rightClick() - .withItem(AllItems.EMPTY_BLAZE_BURNER.asStack()), 40); - scene.idle(10); - scene.overlay.showText(60) - .text("Alternatively, Blazes can be collected from their Spawners directly") - .attachKeyFrame() - .pointAt(util.vector.blockSurface(center.up(), Direction.WEST)) - .placeNearTarget(); - scene.idle(50); - scene.world.hideSection(util.select.position(2, 1, 2), Direction.UP); - scene.idle(20); - scene.world.showSection(util.select.position(1, 1, 2), Direction.DOWN); - scene.idle(20); - - scene.world.modifyBlock(util.grid.at(1, 1, 2), s -> s.with(BlazeBurnerBlock.HEAT_LEVEL, HeatLevel.KINDLED), - false); - scene.overlay.showText(70) - .text("You now have an ideal heat source for various machines") - .attachKeyFrame() - .pointAt(util.vector.blockSurface(center.west() - .up(), Direction.WEST)) - .placeNearTarget(); - scene.idle(80); - - scene.world.showSection(util.select.position(3, 1, 2), Direction.DOWN); - scene.idle(20); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(center.east() - .up()), Pointing.DOWN).rightClick() - .withItem(new ItemStack(Items.FLINT_AND_STEEL)), - 40); - scene.idle(7); - scene.world.setBlock(util.grid.at(3, 1, 2), AllBlocks.LIT_BLAZE_BURNER.getDefaultState(), true); - scene.idle(10); - scene.overlay.showText(70) - .text("For Aesthetic purposes, Empty Blaze Burners can also be lit using Flint and Steel") - .attachKeyFrame() - .pointAt(util.vector.blockSurface(center.east() - .up(), Direction.UP)) - .placeNearTarget(); - scene.idle(80); - scene.overlay.showText(60) - .colored(PonderPalette.RED) - .text("However, these are not suitable for industrial heating") - .pointAt(util.vector.blockSurface(center.east() - .up(), Direction.UP)) - .placeNearTarget(); - scene.idle(70); - } - - public static void blazeBurner(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("blaze_burner", "Feeding Blaze Burners"); - scene.configureBasePlate(0, 0, 5); - scene.showBasePlate(); - scene.idle(10); - - BlockPos burner = util.grid.at(2, 1, 2); - scene.world.showSection(util.select.position(burner), Direction.DOWN); - scene.idle(10); - scene.world.showSection(util.select.position(burner.up()), Direction.DOWN); - scene.idle(10); - - scene.overlay.showText(70) - .attachKeyFrame() - .text("Blaze Burners can provide Heat to Items processed in a Basin") - .pointAt(util.vector.blockSurface(burner, Direction.WEST)) - .placeNearTarget(); - scene.idle(80); - - scene.world.hideSection(util.select.position(burner.up()), Direction.UP); - scene.idle(20); - scene.world.setBlock(burner.up(), Blocks.AIR.getDefaultState(), false); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(burner), Pointing.DOWN).rightClick() - .withItem(new ItemStack(Items.OAK_PLANKS)), 15); - scene.idle(7); - scene.world.modifyBlock(burner, s -> s.with(BlazeBurnerBlock.HEAT_LEVEL, HeatLevel.FADING), false); - scene.idle(15); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(burner), Pointing.DOWN).rightClick() - .withItem(new ItemStack(Items.OAK_PLANKS)), 15); - scene.idle(7); - scene.world.modifyBlock(burner, s -> s.with(BlazeBurnerBlock.HEAT_LEVEL, HeatLevel.KINDLED), false); - scene.idle(20); - - scene.overlay.showText(70) - .attachKeyFrame() - .text("For this, the Blaze has to be fed with flammable items") - .pointAt(util.vector.blockSurface(burner, Direction.WEST)) - .placeNearTarget(); - scene.idle(80); - - scene.idle(20); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(burner), Pointing.DOWN).rightClick() - .withItem(AllItems.BLAZE_CAKE.asStack()), 30); - scene.idle(7); - scene.world.modifyBlock(burner, s -> s.with(BlazeBurnerBlock.HEAT_LEVEL, HeatLevel.SEETHING), false); - scene.idle(20); - - scene.overlay.showText(80) - .attachKeyFrame() - .colored(PonderPalette.MEDIUM) - .text("With a Blaze Cake, the Burner can reach an even stronger level of heat") - .pointAt(util.vector.blockSurface(burner, Direction.WEST)) - .placeNearTarget(); - scene.idle(90); - - Class teType = DeployerTileEntity.class; - scene.world.modifyTileNBT(util.select.position(4, 1, 2), teType, - nbt -> nbt.put("HeldItem", AllItems.BLAZE_CAKE.asStack() - .serializeNBT())); - - scene.world.showSection(util.select.fromTo(3, 0, 5, 2, 0, 5), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 2, 4, 1, 5), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.fromTo(2, 1, 4, 2, 1, 5), Direction.DOWN); - scene.idle(10); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("The feeding process can be automated using Deployers or Mechanical Arms") - .pointAt(util.vector.blockSurface(burner.east(2), Direction.UP)); - scene.idle(90); - } - - public static void basin(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("basin", "Processing Items in the Basin"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - scene.world.showSection(util.select.position(1, 1, 2), Direction.DOWN); - scene.idle(10); - BlockPos basinPos = util.grid.at(1, 2, 2); - scene.world.modifyBlock(basinPos, s -> s.with(BasinBlock.FACING, Direction.DOWN), false); - scene.world.showSection(util.select.position(basinPos), Direction.DOWN); - scene.idle(10); - Vector3d basinSide = util.vector.blockSurface(basinPos, Direction.WEST); - scene.overlay.showText(80) - .attachKeyFrame() - .text("A Basin can hold Items and Fluids for Processing") - .pointAt(basinSide) - .placeNearTarget(); - scene.idle(10); - - ItemStack stack = new ItemStack(Items.BRICK); - for (int i = 0; i < 4; i++) { - scene.world.createItemEntity(util.vector.centerOf(basinPos.up(3)), util.vector.of(0, 0, 0), stack); - scene.idle(10); - } - scene.idle(10); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basinPos), Pointing.DOWN).withItem(stack), - 30); - scene.idle(30); - - for (Direction d : Iterate.horizontalDirections) { - scene.overlay.showOutline(PonderPalette.GREEN, new Object(), util.select.position(basinPos.down() - .offset(d)), 60); - scene.idle(4); - } - - scene.overlay.showText(80) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .text("After a processing step, basins try to output below to the side of them") - .pointAt(basinSide) - .placeNearTarget(); - scene.idle(90); - - ElementLink depot = - scene.world.showIndependentSection(util.select.position(3, 1, 1), Direction.EAST); - scene.world.moveSection(depot, util.vector.of(-2, 0, 0), 0); - scene.idle(10); - scene.world.modifyBlock(basinPos, s -> s.with(BasinBlock.FACING, Direction.NORTH), false); - scene.idle(10); - - scene.overlay.showText(80) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .text("When a valid component is present, the Basin will show an output faucet") - .pointAt(basinSide.add(0.15, 0, -0.5)) - .placeNearTarget(); - scene.idle(90); - - scene.world.hideIndependentSection(depot, Direction.EAST); - scene.idle(15); - depot = scene.world.showIndependentSection(util.select.position(0, 1, 1), Direction.EAST); - scene.world.moveSection(depot, util.vector.of(1, 0, 0), 0); - scene.idle(20); - scene.world.hideIndependentSection(depot, Direction.EAST); - - scene.overlay.showText(80) - .text("A number of options are applicable here") - .pointAt(util.vector.centerOf(util.grid.at(1, 1, 1))) - .placeNearTarget(); - - scene.idle(15); - depot = scene.world.showIndependentSection(util.select.position(1, 1, 0), Direction.EAST); - scene.world.moveSection(depot, util.vector.of(0, 0, 1), 0); - scene.idle(20); - scene.world.hideIndependentSection(depot, Direction.EAST); - scene.idle(15); - depot = scene.world.showIndependentSection(util.select.position(1, 1, 1), Direction.EAST); - scene.idle(20); - scene.world.hideIndependentSection(depot, Direction.EAST); - scene.idle(15); - depot = scene.world.showIndependentSection(util.select.fromTo(3, 1, 0, 2, 1, 0), Direction.EAST); - scene.world.moveSection(depot, util.vector.of(-2, 0, 1), 0); - scene.idle(20); - scene.world.hideIndependentSection(depot, Direction.EAST); - scene.idle(15); - depot = scene.world.showIndependentSection(util.select.position(2, 1, 1), Direction.EAST); - scene.world.moveSection(depot, util.vector.of(-1, 0, 0), 0); - - scene.idle(25); - - BlockPos pressPos = util.grid.at(1, 4, 2); - scene.world.showSection(util.select.position(pressPos), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 4, 3, 1, 1, 5), Direction.NORTH); - scene.idle(10); - - Class type = MechanicalPressTileEntity.class; - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BASIN)); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makeCompactingParticleEffect(util.vector.centerOf(basinPos), stack)); - scene.world.modifyTileNBT(util.select.position(basinPos), BasinTileEntity.class, nbt -> { - nbt.put("VisualizedItems", - NBTHelper.writeCompoundList(ImmutableList.of(IntAttached.with(1, new ItemStack(Blocks.BRICKS))), - ia -> ia.getValue() - .serializeNBT())); - }); - scene.idle(4); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basinPos.down() - .north()), Pointing.RIGHT).withItem(new ItemStack(Items.BRICKS)), 30); - - scene.overlay.showText(60) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .text("Outputs will be caught by the inventory below") - .pointAt(basinSide.add(0, -1, -1)) - .placeNearTarget(); - scene.idle(70); - - scene.world.hideIndependentSection(depot, Direction.NORTH); - scene.idle(10); - scene.world.modifyBlock(basinPos, s -> s.with(BasinBlock.FACING, Direction.DOWN), false); - scene.idle(20); - - scene.overlay.showText(80) - .attachKeyFrame() - .text("Without output faucet, the Basin will retain items created in its processing") - .pointAt(basinSide) - .placeNearTarget(); - scene.idle(50); - - ItemStack nugget = AllItems.COPPER_NUGGET.asStack(); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basinPos), Pointing.RIGHT).withItem(nugget), - 30); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BASIN)); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makeCompactingParticleEffect(util.vector.centerOf(basinPos), nugget)); - - ItemStack ingot = AllItems.COPPER_INGOT.asStack(); - scene.idle(30); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basinPos), Pointing.RIGHT).withItem(ingot), - 30); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, pte -> pte.start(Mode.BASIN)); - scene.idle(30); - scene.world.modifyTileEntity(pressPos, type, - pte -> pte.makeCompactingParticleEffect(util.vector.centerOf(basinPos), ingot)); - - ItemStack block = AllBlocks.COPPER_BLOCK.asStack(); - scene.idle(30); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(basinPos), Pointing.RIGHT).withItem(block), - 30); - scene.overlay.showText(70) - .attachKeyFrame() - .colored(PonderPalette.GREEN) - .text("This can be useful if outputs should be re-used as ingredients") - .pointAt(basinSide) - .placeNearTarget(); - scene.idle(80); - - scene.world.showSection(util.select.fromTo(2, 2, 5, 4, 1, 2), Direction.DOWN); - scene.rotateCameraY(70); - scene.world.createItemOnBelt(util.grid.at(2, 1, 2), Direction.WEST, block); - scene.idle(40); - scene.overlay.showText(70) - .text("Desired outputs will then have to be extracted from the basin") - .pointAt(util.vector.topOf(util.grid.at(3, 1, 2)) - .subtract(0, 3 / 16f, 0)) - .placeNearTarget(); - scene.idle(80); - - Vector3d filter = util.vector.of(2.5, 2.85, 2.5); - scene.overlay.showFilterSlotInput(filter, 80); - scene.overlay.showText(70) - .text("A Filter might be necessary to avoid pulling out un-processed items") - .pointAt(filter) - .placeNearTarget(); - scene.idle(40); - scene.markAsFinished(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java deleted file mode 100644 index 8b11d693e..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/PulleyScenes.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.Blocks; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class PulleyScenes { - - public static void movement(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("rope_pulley", "Moving Structures using Rope Pulleys"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(0.95f); - scene.setSceneOffsetY(-1); - - Selection reversable = util.select.fromTo(2, 3, 4, 2, 4, 2); - BlockPos leverPos = util.grid.at(1, 2, 4); - BlockPos pulleyPos = util.grid.at(2, 4, 2); - Selection redstoneStuff = util.select.fromTo(leverPos, leverPos.east()); - - scene.world.showSection(util.select.layer(0), Direction.UP); - ElementLink plank = - scene.world.showIndependentSection(util.select.position(2, 1, 2), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 4, 3, 2, 1, 4), Direction.DOWN); - scene.idle(10); - - scene.world.showSection(util.select.position(pulleyPos), Direction.SOUTH); - scene.idle(20); - - scene.world.toggleRedstonePower(redstoneStuff); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reversable, f -> -f); - scene.effects.rotationDirectionIndicator(pulleyPos.south()); - scene.world.movePulley(pulleyPos, 2, 40); - - scene.idle(45); - scene.overlay.showText(60) - .pointAt(util.vector.blockSurface(pulleyPos, Direction.WEST)) - .text("Rope Pulleys can move blocks vertically when given Rotational Force") - .placeNearTarget(); - scene.idle(70); - - scene.world.toggleRedstonePower(redstoneStuff); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reversable, f -> -f); - scene.effects.rotationDirectionIndicator(pulleyPos.south()); - scene.world.movePulley(pulleyPos, -2, 40); - scene.world.moveSection(plank, util.vector.of(0, 2, 0), 40); - scene.idle(60); - - scene.overlay.showText(60) - .pointAt(util.vector.blockSurface(pulleyPos, Direction.SOUTH)) - .text("Direction and Speed of movement depend on the Rotational Input") - .placeNearTarget(); - - scene.world.toggleRedstonePower(redstoneStuff); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reversable, f -> -f); - scene.effects.rotationDirectionIndicator(pulleyPos.south()); - scene.world.movePulley(pulleyPos, 2, 40); - scene.world.moveSection(plank, util.vector.of(0, -2, 0), 40); - scene.idle(50); - - scene.world.hideIndependentSection(plank, Direction.NORTH); - scene.idle(15); - ElementLink chassis = - scene.world.showIndependentSection(util.select.fromTo(2, 1, 1, 0, 2, 1), Direction.SOUTH); - scene.world.moveSection(chassis, util.vector.of(1, 0, 1), 0); - scene.idle(5); - scene.world.showSectionAndMerge(util.select.position(2, 1, 0), Direction.SOUTH, chassis); - scene.idle(15); - scene.effects.superGlue(util.grid.at(3, 1, 1), Direction.SOUTH, true); - scene.overlay.showText(80) - .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 2), Direction.NORTH)) - .placeNearTarget() - .sharedText("movement_anchors"); - scene.idle(90); - - scene.world.toggleRedstonePower(redstoneStuff); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reversable, f -> -f); - scene.effects.rotationDirectionIndicator(pulleyPos.south()); - scene.world.movePulley(pulleyPos, -2, 40); - scene.world.moveSection(chassis, util.vector.of(0, 2, 0), 40); - scene.idle(50); - - scene.world.toggleRedstonePower(redstoneStuff); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reversable, f -> -f); - scene.effects.rotationDirectionIndicator(pulleyPos.south()); - scene.world.movePulley(pulleyPos, 2, 40); - scene.world.moveSection(chassis, util.vector.of(0, -2, 0), 40); - scene.idle(50); - } - - public static void movementModes(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("rope_pulley_modes", "Movement Modes of the Rope Pulley"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(0.95f); - scene.setSceneOffsetY(-1); - - Selection reversable = util.select.fromTo(2, 3, 4, 2, 4, 2); - BlockPos leverPos = util.grid.at(1, 2, 4); - BlockPos pulleyPos = util.grid.at(2, 4, 2); - Selection redstoneStuff = util.select.fromTo(leverPos, leverPos.east()); - BlockPos flowerPos = util.grid.at(2, 1, 2); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.world.showSection(util.select.position(flowerPos), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 4, 3, 2, 1, 4), Direction.DOWN); - scene.idle(10); - - scene.world.showSection(util.select.position(pulleyPos), Direction.SOUTH); - ElementLink glass = - scene.world.showIndependentSection(util.select.position(pulleyPos.down()), Direction.UP); - scene.idle(20); - - scene.world.toggleRedstonePower(redstoneStuff); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reversable, f -> -f); - scene.effects.rotationDirectionIndicator(pulleyPos.south()); - scene.world.movePulley(pulleyPos, 2, 40); - scene.world.moveSection(glass, util.vector.of(0, -2, 0), 40); - scene.idle(40); - - scene.world.destroyBlock(flowerPos); - scene.idle(10); - scene.overlay.showSelectionWithText(util.select.position(flowerPos), 70) - .text("Whenever Pulleys stop moving, the moved structure reverts to blocks") - .placeNearTarget() - .colored(PonderPalette.RED); - scene.idle(80); - - scene.world.toggleRedstonePower(redstoneStuff); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reversable, f -> -f); - scene.effects.rotationDirectionIndicator(pulleyPos.south()); - scene.world.movePulley(pulleyPos, -2, 40); - scene.world.moveSection(glass, util.vector.of(0, 2, 0), 40); - scene.world.hideSection(util.select.position(flowerPos), Direction.DOWN); - scene.idle(40); - - scene.world.setBlock(flowerPos, Blocks.BLUE_ORCHID.getDefaultState(), false); - scene.world.showSection(util.select.position(flowerPos), Direction.DOWN); - scene.overlay.showCenteredScrollInput(pulleyPos, Direction.UP, 60); - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(pulleyPos), Pointing.DOWN).scroll() - .withWrench(), 60); - scene.overlay.showText(70) - .pointAt(util.vector.topOf(pulleyPos)) - .placeNearTarget() - .sharedText("behaviour_modify_wrench"); - scene.idle(80); - - scene.world.toggleRedstonePower(redstoneStuff); - scene.effects.indicateRedstone(leverPos); - scene.world.modifyKineticSpeed(reversable, f -> -f); - scene.effects.rotationDirectionIndicator(pulleyPos.south()); - scene.world.movePulley(pulleyPos, 2, 40); - scene.world.moveSection(glass, util.vector.of(0, -2, 0), 40); - scene.idle(50); - scene.overlay.showText(120) - .colored(PonderPalette.GREEN) - .pointAt(util.vector.blockSurface(flowerPos, Direction.WEST)) - .placeNearTarget() - .text("It can be configured never to revert to solid blocks, or only at the location it started at"); - } - - public static void attachment(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("rope_pulley_attachment", "Moving Pulleys as part of a Contraption"); - scene.configureBasePlate(0, 0, 5); - scene.scaleSceneView(0.95f); - scene.setSceneOffsetY(-1); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - - Selection kinetics = util.select.fromTo(4, 3, 2, 4, 1, 5); - Selection largeCog = util.select.position(3, 0, 5); - - scene.world.showSection(kinetics, Direction.DOWN); - ElementLink poles = - scene.world.showIndependentSection(util.select.fromTo(4, 4, 2, 6, 4, 2), Direction.DOWN); - scene.world.moveSection(poles, util.vector.of(0, -1, 0), 0); - scene.idle(10); - - BlockPos pulleyPos = util.grid.at(3, 3, 2); - ElementLink pulley = - scene.world.showIndependentSection(util.select.position(pulleyPos), Direction.EAST); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.fromTo(3, 1, 1, 3, 1, 2) - .add(util.select.position(3, 2, 1)), Direction.SOUTH, pulley); - - scene.idle(10); - scene.overlay.showText(50) - .pointAt(util.vector.blockSurface(pulleyPos, Direction.WEST)) - .placeNearTarget() - .text("Whenever Pulleys are themselves being moved by a Contraption..."); - scene.idle(60); - - scene.world.setKineticSpeed(largeCog, -16); - scene.world.setKineticSpeed(kinetics, 32); - scene.effects.rotationDirectionIndicator(util.grid.at(4, 1, 5)); - scene.world.moveSection(poles, util.vector.of(-2, 0, 0), 40); - scene.world.moveSection(pulley, util.vector.of(-2, 0, 0), 40); - scene.idle(40); - - scene.overlay.showSelectionWithText(util.select.fromTo(1, 1, 1, 1, 1, 2), 50) - .colored(PonderPalette.GREEN) - .placeNearTarget() - .text("...its attached structure will be dragged with it"); - scene.idle(60); - scene.overlay.showText(80) - .colored(PonderPalette.RED) - .pointAt(util.vector.topOf(pulleyPos.west(2))) - .placeNearTarget() - .text("Mind that pulleys are only movable while stopped"); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java deleted file mode 100644 index ef4a004be..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/RedstoneScenes.java +++ /dev/null @@ -1,830 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerBlock; -import com.simibubi.create.content.contraptions.components.structureMovement.chassis.StickerTileEntity; -import com.simibubi.create.content.logistics.block.diodes.AdjustablePulseRepeaterTileEntity; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock; -import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterTileEntity; -import com.simibubi.create.content.logistics.block.diodes.PoweredLatchBlock; -import com.simibubi.create.content.logistics.block.diodes.PulseRepeaterBlock; -import com.simibubi.create.content.logistics.block.diodes.ToggleLatchBlock; -import com.simibubi.create.content.logistics.block.redstone.AnalogLeverTileEntity; -import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity; -import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock; -import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkTileEntity; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.block.RedstoneWireBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.state.IntegerProperty; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class RedstoneScenes { - - public static void sticker(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("sticker", "Attaching blocks using the Sticker"); - scene.configureBasePlate(0, 0, 5); - scene.showBasePlate(); - scene.idle(5); - - Selection redstone = util.select.fromTo(0, 2, 2, 2, 2, 2); - BlockPos stickerPos = util.grid.at(2, 2, 2); - Selection stickerSelect = util.select.position(stickerPos); - BlockPos buttonPos = util.grid.at(0, 2, 2); - BlockPos bearingPos = util.grid.at(2, 1, 2); - - scene.world.showSection(util.select.fromTo(2, 1, 2, 0, 2, 2) - .substract(stickerSelect), Direction.DOWN); - scene.idle(10); - ElementLink sticker = scene.world.showIndependentSection(stickerSelect, Direction.DOWN); - scene.idle(10); - ElementLink plank = - scene.world.showIndependentSection(util.select.position(2, 2, 1), Direction.SOUTH); - scene.world.configureCenterOfRotation(sticker, util.vector.centerOf(stickerPos)); - scene.world.configureCenterOfRotation(plank, util.vector.centerOf(stickerPos)); - scene.overlay.showText(60) - .text("Stickers are ideal for Redstone-controlled block attachment") - .attachKeyFrame() - .pointAt(util.vector.blockSurface(stickerPos, Direction.WEST)) - .placeNearTarget(); - scene.idle(70); - - scene.world.toggleRedstonePower(redstone); - scene.world.modifyBlock(stickerPos, s -> s.with(StickerBlock.EXTENDED, true), false); - scene.effects.indicateRedstone(buttonPos); - scene.world.modifyTileNBT(stickerSelect, StickerTileEntity.class, nbt -> { - }); - scene.idle(20); - - scene.world.toggleRedstonePower(redstone); - scene.idle(20); - - scene.overlay.showText(60) - .text("Upon receiving a signal, it will toggle its state") - .pointAt(util.vector.blockSurface(stickerPos, Direction.WEST)) - .placeNearTarget(); - scene.idle(70); - - scene.world.rotateBearing(bearingPos, 180 * 3, 80); - scene.world.rotateSection(sticker, 0, 180 * 3, 0, 80); - scene.world.rotateSection(plank, 0, 180 * 3, 0, 80); - scene.overlay.showText(70) - .text("If it is now moved in a contraption, the block will move with it") - .pointAt(util.vector.topOf(stickerPos)) - .placeNearTarget(); - scene.idle(90); - scene.addKeyframe(); - - scene.world.toggleRedstonePower(redstone); - scene.world.modifyBlock(stickerPos, s -> s.with(StickerBlock.EXTENDED, false), false); - scene.effects.indicateRedstone(buttonPos); - scene.world.modifyTileNBT(stickerSelect, StickerTileEntity.class, nbt -> { - }); - scene.idle(20); - - scene.world.toggleRedstonePower(redstone); - scene.idle(20); - - scene.overlay.showText(60) - .text("Toggled once again, the block is no longer attached") - .pointAt(util.vector.blockSurface(stickerPos, Direction.WEST)) - .placeNearTarget(); - scene.idle(70); - - scene.world.rotateBearing(bearingPos, 180 * 3, 80); - scene.world.rotateSection(sticker, 0, 180 * 3, 0, 80); - } - - public static void contact(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("redstone_contact", "Redstone Contacts"); - scene.configureBasePlate(0, 0, 5); - scene.showBasePlate(); - scene.idle(5); - Selection contactAndRedstone = util.select.fromTo(1, 1, 0, 1, 1, 2); - Selection topContact = util.select.position(1, 2, 2); - - scene.world.toggleRedstonePower(contactAndRedstone); - scene.world.toggleRedstonePower(topContact); - scene.world.showSection(contactAndRedstone, Direction.DOWN); - - BlockPos bearingPos = util.grid.at(3, 1, 2); - scene.idle(25); - - ElementLink contact = scene.world.showIndependentSection(topContact, Direction.DOWN); - scene.idle(10); - scene.world.toggleRedstonePower(topContact); - scene.world.toggleRedstonePower(contactAndRedstone); - scene.effects.indicateRedstone(util.grid.at(1, 1, 2)); - scene.idle(10); - scene.overlay.showText(60) - .attachKeyFrame() - .placeNearTarget() - .pointAt(util.vector.of(1, 2, 2.5)) - .text("Redstone Contacts facing each other will emit a redstone signal"); - scene.idle(70); - - scene.world.showSection(util.select.position(bearingPos), Direction.DOWN); - scene.idle(10); - scene.world.showSectionAndMerge(util.select.fromTo(2, 2, 2, 4, 2, 2), Direction.DOWN, contact); - scene.idle(10); - scene.effects.superGlue(util.grid.at(1, 2, 2), Direction.EAST, true); - scene.world.configureCenterOfRotation(contact, util.vector.centerOf(bearingPos)); - - int speed = 2; - - scene.idle(10); - scene.world.rotateBearing(bearingPos, 10, speed); - scene.world.rotateSection(contact, 0, 10, 0, speed); - scene.idle(speed); - - scene.world.toggleRedstonePower(topContact); - scene.world.toggleRedstonePower(contactAndRedstone); - scene.effects.indicateRedstone(util.grid.at(1, 1, 2)); - scene.world.rotateBearing(bearingPos, 340, 34 * speed); - scene.world.rotateSection(contact, 0, 340, 0, 34 * speed); - scene.addKeyframe(); - scene.idle(34 * speed); - - scene.overlay.showText(100) - .placeNearTarget() - .pointAt(util.vector.of(1, 1.5, 2.5)) - .text("This still applies when one of them is part of a moving Contraption"); - - for (int i = 0; i < 5; i++) { - scene.world.toggleRedstonePower(topContact); - scene.world.toggleRedstonePower(contactAndRedstone); - scene.effects.indicateRedstone(util.grid.at(1, 1, 2)); - scene.world.rotateBearing(bearingPos, 20, 2 * speed); - scene.world.rotateSection(contact, 0, 20, 0, 2 * speed); - scene.idle(2 * speed); - - scene.world.toggleRedstonePower(topContact); - scene.world.toggleRedstonePower(contactAndRedstone); - scene.world.rotateBearing(bearingPos, 340, 34 * speed); - scene.world.rotateSection(contact, 0, 340, 0, 34 * speed); - scene.idle(34 * speed); - - if (i == 0) - scene.markAsFinished(); - } - - scene.world.toggleRedstonePower(topContact); - scene.world.toggleRedstonePower(contactAndRedstone); - scene.world.rotateBearing(bearingPos, 10, speed); - scene.world.rotateSection(contact, 0, 10, 0, speed); - } - - public static void pulseRepeater(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("pulse_repeater", "Controlling signals using Pulse Repeaters"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos circuitPos = util.grid.at(2, 1, 2); - BlockPos leverPos = util.grid.at(4, 1, 2); - - scene.world.showSection(util.select.layersFrom(1) - .substract(util.select.position(circuitPos)), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.position(circuitPos), Direction.DOWN); - scene.idle(20); - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, PulseRepeaterBlock.PULSING); - scene.idle(3); - scene.world.cycleBlockProperty(circuitPos, PulseRepeaterBlock.PULSING); - scene.world.toggleRedstonePower(util.select.position(1, 1, 2)); - scene.idle(2); - scene.world.toggleRedstonePower(util.select.position(0, 1, 2)); - - scene.idle(15); - scene.overlay.showText(70) - .text("Pulse Repeaters will shorten any redstone signal to a single pulse") - .placeNearTarget() - .attachKeyFrame() - .pointAt(util.vector.topOf(util.grid.at(0, 1, 2))); - scene.idle(60); - - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 2, 1, 2)); - scene.idle(20); - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, PulseRepeaterBlock.PULSING); - scene.idle(3); - scene.world.cycleBlockProperty(circuitPos, PulseRepeaterBlock.PULSING); - scene.world.toggleRedstonePower(util.select.position(1, 1, 2)); - scene.idle(2); - scene.world.toggleRedstonePower(util.select.position(0, 1, 2)); - } - - public static void adjustableRepeater(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("adjustable_repeater", "Controlling signals using Adjustable Repeaters"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos circuitPos = util.grid.at(2, 1, 2); - BlockPos leverPos = util.grid.at(4, 1, 2); - - scene.world.modifyTileNBT(util.select.position(circuitPos), AdjustableRepeaterTileEntity.class, - nbt -> nbt.putInt("ScrollValue", 30)); - scene.world.showSection(util.select.layersFrom(1) - .substract(util.select.position(circuitPos)), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.position(circuitPos), Direction.DOWN); - scene.idle(20); - - Vector3d circuitTop = util.vector.blockSurface(circuitPos, Direction.DOWN) - .add(0, 3 / 16f, 0); - scene.overlay.showText(70) - .text("Adjustable Repeaters behave similarly to regular Repeaters") - .attachKeyFrame() - .placeNearTarget() - .pointAt(circuitTop); - scene.idle(60); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 2, 1, 2)); - scene.idle(30); - scene.world.cycleBlockProperty(circuitPos, AdjustableRepeaterBlock.POWERING); - scene.world.toggleRedstonePower(util.select.fromTo(1, 1, 2, 0, 1, 2)); - scene.idle(15); - - scene.overlay.showText(40) - .text("They charge up for a set time...") - .placeNearTarget() - .pointAt(util.vector.topOf(util.grid.at(0, 1, 2))); - scene.idle(50); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 2, 1, 2)); - scene.idle(30); - scene.world.cycleBlockProperty(circuitPos, AdjustableRepeaterBlock.POWERING); - scene.world.toggleRedstonePower(util.select.fromTo(1, 1, 2, 0, 1, 2)); - scene.idle(15); - - scene.overlay.showText(40) - .text("...and cool down for the same duration") - .placeNearTarget() - .pointAt(util.vector.topOf(util.grid.at(0, 1, 2))); - scene.idle(50); - - scene.overlay.showRepeaterScrollInput(circuitPos, 60); - scene.overlay.showControls(new InputWindowElement(circuitTop, Pointing.DOWN).scroll(), 60); - scene.idle(10); - scene.overlay.showText(60) - .text("Using the mouse wheel, the charge time can be configured") - .attachKeyFrame() - .placeNearTarget() - .pointAt(circuitTop); - scene.world.modifyTileNBT(util.select.position(circuitPos), AdjustableRepeaterTileEntity.class, - nbt -> nbt.putInt("ScrollValue", 120)); - scene.idle(70); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 2, 1, 2)); - scene.idle(60); - scene.overlay.showText(50) - .text("Configured delays can range up to 30 minutes") - .placeNearTarget() - .pointAt(circuitTop); - scene.idle(60); - scene.world.cycleBlockProperty(circuitPos, AdjustableRepeaterBlock.POWERING); - scene.world.toggleRedstonePower(util.select.fromTo(1, 1, 2, 0, 1, 2)); - scene.idle(15); - - } - - public static void adjustablePulseRepeater(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("adjustable_pulse_repeater", "Controlling signals using Adjustable Pulse Repeaters"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos circuitPos = util.grid.at(2, 1, 2); - BlockPos leverPos = util.grid.at(4, 1, 2); - - scene.world.modifyTileNBT(util.select.position(circuitPos), AdjustablePulseRepeaterTileEntity.class, - nbt -> nbt.putInt("ScrollValue", 30)); - scene.world.showSection(util.select.layersFrom(1) - .substract(util.select.position(circuitPos)), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.position(circuitPos), Direction.DOWN); - scene.idle(20); - - Vector3d circuitTop = util.vector.blockSurface(circuitPos, Direction.DOWN) - .add(0, 3 / 16f, 0); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 2, 1, 2)); - scene.idle(30); - scene.world.cycleBlockProperty(circuitPos, AdjustableRepeaterBlock.POWERING); - scene.world.toggleRedstonePower(util.select.fromTo(1, 1, 2, 0, 1, 2)); - scene.idle(3); - scene.world.toggleRedstonePower(util.select.fromTo(1, 1, 2, 0, 1, 2)); - scene.idle(15); - - scene.overlay.showText(60) - .text("Adjustable Pulse Repeaters emit a short pulse at a delay") - .attachKeyFrame() - .placeNearTarget() - .pointAt(circuitTop); - - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 2, 1, 2)); - scene.idle(70); - - scene.overlay.showRepeaterScrollInput(circuitPos, 60); - scene.overlay.showControls(new InputWindowElement(circuitTop, Pointing.DOWN).scroll(), 60); - scene.idle(10); - scene.overlay.showText(60) - .text("Using the mouse wheel, the charge time can be configured") - .attachKeyFrame() - .placeNearTarget() - .pointAt(circuitTop); - scene.world.modifyTileNBT(util.select.position(circuitPos), AdjustablePulseRepeaterTileEntity.class, - nbt -> nbt.putInt("ScrollValue", 120)); - scene.idle(70); - - scene.effects.indicateRedstone(leverPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 2, 1, 2)); - scene.idle(60); - scene.overlay.showText(50) - .text("Configured delays can range up to 30 minutes") - .placeNearTarget() - .pointAt(circuitTop); - scene.idle(60); - scene.world.cycleBlockProperty(circuitPos, AdjustableRepeaterBlock.POWERING); - scene.world.toggleRedstonePower(util.select.fromTo(1, 1, 2, 0, 1, 2)); - scene.idle(3); - scene.world.toggleRedstonePower(util.select.fromTo(1, 1, 2, 0, 1, 2)); - } - - public static void poweredLatch(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("powered_latch", "Controlling signals using the Powered Latch"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos circuitPos = util.grid.at(2, 1, 2); - BlockPos buttonPos = util.grid.at(4, 1, 2); - Vector3d circuitTop = util.vector.blockSurface(circuitPos, Direction.DOWN) - .add(0, 3 / 16f, 0); - - scene.world.showSection(util.select.layersFrom(1) - .substract(util.select.position(circuitPos)), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.position(circuitPos), Direction.DOWN); - scene.idle(20); - - scene.overlay.showText(40) - .attachKeyFrame() - .text("Powered Latches are redstone controllable Levers") - .placeNearTarget() - .pointAt(circuitTop); - scene.idle(50); - - scene.effects.indicateRedstone(buttonPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, PoweredLatchBlock.POWERING); - scene.idle(30); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 3, 1, 2)); - - AxisAlignedBB bb = new AxisAlignedBB(circuitPos).grow(-.48f, -.45f, -.05f) - .offset(.575, -.45, 0); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, bb, 40); - scene.overlay.showText(40) - .colored(PonderPalette.GREEN) - .text("Signals at the back switch it on") - .placeNearTarget() - .pointAt(bb.getCenter()); - scene.idle(60); - - scene.effects.indicateRedstone(util.grid.at(2, 1, 0)); - scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 0, 2, 1, 1)); - scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, PoweredLatchBlock.POWERING); - scene.idle(30); - scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 0, 2, 1, 1)); - - bb = new AxisAlignedBB(circuitPos).grow(-.05f, -.45f, -.48f) - .offset(0, -.45, .575); - AxisAlignedBB bb2 = new AxisAlignedBB(circuitPos).grow(-.05f, -.45f, -.48f) - .offset(0, -.45, -.575); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb, bb, 40); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb2, bb2, 40); - scene.overlay.showText(40) - .colored(PonderPalette.RED) - .text("Signals from the side switch it back off") - .placeNearTarget() - .pointAt(bb2.getCenter()); - scene.idle(50); - - scene.addKeyframe(); - scene.idle(10); - scene.overlay.showControls(new InputWindowElement(circuitTop, Pointing.DOWN).rightClick(), 40); - scene.idle(7); - scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, PoweredLatchBlock.POWERING); - scene.idle(10); - - scene.overlay.showText(50) - .text("Powered latches can also be toggled manually") - .placeNearTarget() - .pointAt(circuitTop); - scene.idle(60); - - scene.overlay.showControls(new InputWindowElement(circuitTop, Pointing.DOWN).rightClick(), 40); - scene.idle(7); - scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, PoweredLatchBlock.POWERING); - scene.idle(10); - } - - public static void poweredToggleLatch(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("powered_toggle_latch", "Controlling signals using the Powered Toggle Latch"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - - BlockPos circuitPos = util.grid.at(2, 1, 2); - BlockPos buttonPos = util.grid.at(4, 1, 2); - Vector3d circuitTop = util.vector.blockSurface(circuitPos, Direction.DOWN) - .add(0, 3 / 16f, 0); - - scene.world.showSection(util.select.layersFrom(1) - .substract(util.select.position(circuitPos)), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.position(circuitPos), Direction.DOWN); - scene.idle(20); - - scene.overlay.showText(40) - .attachKeyFrame() - .text("Powered Toggle Latches are redstone controllable Levers") - .placeNearTarget() - .pointAt(circuitTop); - scene.idle(50); - - scene.effects.indicateRedstone(buttonPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, ToggleLatchBlock.POWERING); - scene.idle(30); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 3, 1, 2)); - - AxisAlignedBB bb = new AxisAlignedBB(circuitPos).grow(-.48f, -.45f, -.05f) - .offset(.575, -.45, 0); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.GREEN, bb, bb, 40); - scene.overlay.showText(40) - .colored(PonderPalette.GREEN) - .text("Signals at the back will toggle its state") - .placeNearTarget() - .pointAt(bb.getCenter()); - scene.idle(60); - - scene.effects.indicateRedstone(buttonPos); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, ToggleLatchBlock.POWERING); - scene.idle(30); - scene.world.toggleRedstonePower(util.select.fromTo(4, 1, 2, 3, 1, 2)); - scene.overlay.chaseBoundingBoxOutline(PonderPalette.RED, bb, bb, 40); - scene.overlay.showText(30) - .colored(PonderPalette.RED) - .text("...on and back off") - .placeNearTarget() - .pointAt(bb.getCenter()); - scene.idle(50); - - scene.addKeyframe(); - scene.idle(10); - scene.overlay.showControls(new InputWindowElement(circuitTop, Pointing.DOWN).rightClick(), 40); - scene.idle(7); - scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, ToggleLatchBlock.POWERING); - scene.idle(10); - - scene.overlay.showText(50) - .text("Powered toggle latches can also be toggled manually") - .placeNearTarget() - .pointAt(circuitTop); - scene.idle(60); - - scene.overlay.showControls(new InputWindowElement(circuitTop, Pointing.DOWN).rightClick(), 40); - scene.idle(7); - scene.world.toggleRedstonePower(util.select.fromTo(2, 1, 2, 0, 1, 2)); - scene.world.cycleBlockProperty(circuitPos, ToggleLatchBlock.POWERING); - scene.idle(10); - } - - public static void analogLever(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("analog_lever", "Controlling signals using the Analog Lever"); - scene.configureBasePlate(0, 0, 5); - - BlockPos[] wireLocations = new BlockPos[] { util.grid.at(2, 1, 1), util.grid.at(2, 1, 0), util.grid.at(1, 1, 0), - util.grid.at(0, 1, 0), util.grid.at(0, 1, 1), util.grid.at(0, 1, 2), util.grid.at(0, 1, 3), - util.grid.at(0, 1, 4), util.grid.at(1, 1, 4), util.grid.at(2, 1, 4), util.grid.at(3, 1, 4), - util.grid.at(4, 1, 4), util.grid.at(4, 1, 3), util.grid.at(4, 1, 2), util.grid.at(4, 1, 1) }; - - Selection leverSelection = util.select.fromTo(2, 1, 2, 2, 2, 2); - Selection lamp = util.select.position(4, 1, 0); - BlockPos leverPos = util.grid.at(2, 2, 2); - Vector3d leverVec = util.vector.centerOf(leverPos) - .add(0, -.25, 0); - - scene.world.showSection(util.select.layersFrom(0) - .substract(lamp) - .substract(leverSelection), Direction.UP); - scene.idle(5); - scene.world.showSection(lamp, Direction.DOWN); - scene.idle(10); - - scene.world.showSection(leverSelection, Direction.DOWN); - scene.idle(20); - - scene.overlay.showText(60) - .text("Analog Levers make for a compact and precise source of redstone power") - .placeNearTarget() - .attachKeyFrame() - .pointAt(leverVec); - scene.idle(70); - - IntegerProperty power = RedstoneWireBlock.POWER; - scene.overlay.showControls(new InputWindowElement(leverVec, Pointing.DOWN).rightClick(), 40); - scene.idle(7); - for (int i = 0; i < 7; i++) { - scene.idle(2); - final int state = i + 1; - scene.world.modifyTileNBT(leverSelection, AnalogLeverTileEntity.class, nbt -> nbt.putInt("State", state)); - scene.world.modifyBlock(wireLocations[i], s -> s.with(power, 7 - state), false); - scene.effects.indicateRedstone(wireLocations[i]); - } - scene.idle(20); - - scene.overlay.showText(60) - .attachKeyFrame() - .text("Right-click to increase its analog power output") - .placeNearTarget() - .pointAt(leverVec); - scene.idle(70); - - scene.overlay.showControls(new InputWindowElement(leverVec, Pointing.DOWN).rightClick() - .whileSneaking(), 40); - scene.idle(7); - for (int i = 7; i > 0; i--) { - scene.idle(2); - final int state = i - 1; - if (i > 3) { - scene.world.modifyTileNBT(leverSelection, AnalogLeverTileEntity.class, - nbt -> nbt.putInt("State", state)); - scene.effects.indicateRedstone(wireLocations[i]); - } - scene.world.modifyBlock(wireLocations[i], s -> s.with(power, state > 2 ? 0 : 3 - state), false); - } - scene.world.modifyBlock(wireLocations[0], s -> s.with(power, 3), false); - scene.idle(20); - - scene.overlay.showText(60) - .attachKeyFrame() - .text("Right-click while Sneaking to decrease the power output again") - .placeNearTarget() - .pointAt(leverVec); - scene.idle(70); - - scene.overlay.showControls(new InputWindowElement(leverVec, Pointing.DOWN).rightClick(), 40); - scene.idle(7); - for (int i = 0; i < 15; i++) { - scene.idle(2); - final int state = i + 1; - if (i >= 4) { - scene.world.modifyTileNBT(leverSelection, AnalogLeverTileEntity.class, - nbt -> nbt.putInt("State", state)); - scene.effects.indicateRedstone(wireLocations[i]); - } - scene.world.modifyBlock(wireLocations[i], s -> s.with(power, 15 - state), false); - } - - scene.world.toggleRedstonePower(lamp); - scene.effects.indicateRedstone(leverPos); - scene.effects.indicateRedstone(util.grid.at(4, 1, 1)); - scene.idle(20); - } - - public static void nixieTube(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("nixie_tube", "Using Nixie Tubes"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0) - .add(util.select.fromTo(2, 1, 1, 2, 1, 2)), Direction.UP); - scene.idle(10); - scene.world.showSection(util.select.position(2, 1, 3), Direction.DOWN); - scene.idle(20); - - Selection tubes = util.select.fromTo(3, 1, 3, 1, 1, 3); - - scene.effects.indicateRedstone(util.grid.at(2, 1, 1)); - scene.world.modifyTileNBT(util.select.position(2, 1, 1), AnalogLeverTileEntity.class, - nbt -> nbt.putInt("State", 11)); - scene.world.modifyBlock(util.grid.at(2, 1, 2), s -> s.with(RedstoneWireBlock.POWER, 11), false); - scene.world.modifyTileNBT(tubes, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 11)); - scene.idle(20); - - Vector3d centerTube = util.vector.centerOf(2, 1, 3); - - scene.overlay.showText(60) - .attachKeyFrame() - .text("When powered by Redstone, Nixie Tubes will display the redstone signals' strength") - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 3), Direction.WEST)); - scene.idle(70); - - scene.world.hideSection(util.select.position(2, 1, 3), Direction.UP); - scene.idle(5); - scene.world.hideSection(util.select.fromTo(2, 1, 1, 2, 1, 2), Direction.NORTH); - scene.idle(10); - scene.world.modifyTileNBT(tubes, NixieTubeTileEntity.class, nbt -> nbt.putInt("RedstoneStrength", 0)); - scene.world.showSection(tubes, Direction.DOWN); - scene.idle(20); - - scene.overlay.showControls(new InputWindowElement(centerTube.add(1, .35, 0), Pointing.DOWN).rightClick() - .withItem(new ItemStack(Items.NAME_TAG)), 40); - scene.idle(7); - - ITextComponent component = new StringTextComponent("CREATE"); - for (int i = 0; i < 3; i++) { - final int index = i; - scene.world.modifyTileNBT(util.select.position(3 - i, 1, 3), NixieTubeTileEntity.class, nbt -> { - nbt.putString("RawCustomText", component.getString()); - nbt.putString("CustomText", ITextComponent.Serializer.toJson(component)); - nbt.putInt("CustomTextIndex", index); - }); - } - - scene.idle(10); - scene.world.showSection(util.select.position(4, 1, 3), Direction.DOWN); - scene.idle(10); - scene.special.createBirb(util.vector.topOf(util.grid.at(0, 0, 3)), ParrotElement.DancePose::new); - - scene.idle(20); - scene.overlay.showText(80) - .attachKeyFrame() - .placeNearTarget() - .text("Using name tags edited with an anvil, custom text can be displayed") - .pointAt(util.vector.topOf(util.grid.at(3, 1, 3)) - .add(.25, -.05f, 0)); - scene.idle(70); - } - - public static void redstoneLink(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("redstone_link", "Using Redstone Links"); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0) - .add(util.select.fromTo(3, 1, 1, 2, 1, 1)), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 3, 0, 2, 3), Direction.DOWN); - scene.idle(10); - - Selection redstone = util.select.fromTo(3, 1, 1, 1, 1, 1); - BlockPos leverPos = util.grid.at(3, 1, 1); - BlockPos link1Pos = util.grid.at(1, 1, 1); - BlockPos link2Pos = util.grid.at(1, 2, 2); - BlockPos link3Pos = util.grid.at(3, 2, 2); - Selection link1Select = util.select.position(link1Pos); - Selection link2Select = util.select.position(link2Pos); - Selection link3Select = util.select.position(link3Pos); - Vector3d link1Vec = util.vector.blockSurface(link1Pos, Direction.DOWN) - .add(0, 3 / 16f, 0); - Vector3d link2Vec = util.vector.blockSurface(link2Pos, Direction.SOUTH) - .add(0, 0, -3 / 16f); - Vector3d link3Vec = util.vector.blockSurface(link3Pos, Direction.SOUTH) - .add(0, 0, -3 / 16f); - - scene.world.showSection(link1Select, Direction.DOWN); - scene.idle(5); - scene.world.showSection(link2Select, Direction.DOWN); - scene.idle(5); - scene.world.showSection(link3Select, Direction.DOWN); - scene.idle(10); - - scene.overlay.showText(50) - .attachKeyFrame() - .text("Redstone Links can transmit redstone signals wirelessly") - .placeNearTarget() - .pointAt(link1Vec); - scene.idle(60); - - scene.overlay.showControls(new InputWindowElement(link2Vec, Pointing.UP).rightClick() - .whileSneaking(), 40); - scene.idle(7); - scene.world.modifyBlock(link2Pos, s -> s.cycle(RedstoneLinkBlock.RECEIVER), true); - scene.idle(10); - scene.overlay.showText(50) - .text("Right-click while Sneaking to toggle receive mode") - .placeNearTarget() - .pointAt(link2Vec); - scene.idle(60); - - scene.overlay.showControls(new InputWindowElement(link3Vec, Pointing.UP).rightClick() - .withWrench(), 40); - scene.idle(7); - scene.world.modifyBlock(link3Pos, s -> s.cycle(RedstoneLinkBlock.RECEIVER), true); - scene.idle(10); - scene.overlay.showText(50) - .text("A simple Right-click with a Wrench can do the same") - .placeNearTarget() - .pointAt(link3Vec); - scene.idle(70); - - scene.addKeyframe(); - scene.idle(10); - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(leverPos); - scene.idle(5); - scene.world.toggleRedstonePower(util.select.fromTo(3, 2, 3, 1, 2, 2)); - scene.effects.indicateRedstone(link2Pos); - scene.effects.indicateRedstone(link3Pos); - - scene.idle(10); - scene.overlay.showText(70) - .colored(PonderPalette.GREEN) - .text("Receivers emit the redstone power of transmitters within 128 blocks") - .placeNearTarget() - .pointAt(link2Vec); - scene.idle(80); - scene.world.toggleRedstonePower(redstone); - scene.idle(5); - scene.world.toggleRedstonePower(util.select.fromTo(3, 2, 3, 1, 2, 2)); - scene.idle(20); - - Vector3d frontSlot = link1Vec.add(.18, -.05, -.15); - Vector3d backSlot = link1Vec.add(.18, -.05, .15); - Vector3d top2Slot = link2Vec.add(-.09, .15, 0); - Vector3d bottom2Slot = link2Vec.add(-.09, -.2, 0); - Vector3d top3Slot = link3Vec.add(-.09, .15, 0); - Vector3d bottom3Slot = link3Vec.add(-.09, -.2, 0); - - scene.addKeyframe(); - scene.idle(10); - scene.overlay.showFilterSlotInput(frontSlot, 100); - scene.overlay.showFilterSlotInput(backSlot, 100); - scene.idle(10); - - scene.overlay.showText(50) - .text("Placing items in the two slots can specify a Frequency") - .placeNearTarget() - .pointAt(backSlot); - scene.idle(60); - - ItemStack iron = new ItemStack(Items.IRON_INGOT); - ItemStack gold = new ItemStack(Items.GOLD_INGOT); - ItemStack sapling = new ItemStack(Items.OAK_SAPLING); - - scene.overlay.showControls(new InputWindowElement(backSlot, Pointing.DOWN).withItem(iron), 40); - scene.idle(7); - scene.overlay.showControls(new InputWindowElement(frontSlot, Pointing.UP).withItem(sapling), 40); - scene.world.modifyTileNBT(link1Select, RedstoneLinkTileEntity.class, - nbt -> nbt.put("FrequencyLast", iron.write(new CompoundNBT()))); - scene.idle(7); - scene.world.modifyTileNBT(link1Select, RedstoneLinkTileEntity.class, - nbt -> nbt.put("FrequencyFirst", sapling.write(new CompoundNBT()))); - scene.idle(20); - - scene.overlay.showControls(new InputWindowElement(top2Slot, Pointing.DOWN).withItem(iron), 40); - scene.idle(7); - scene.overlay.showControls(new InputWindowElement(bottom2Slot, Pointing.UP).withItem(sapling), 40); - scene.world.modifyTileNBT(link2Select, RedstoneLinkTileEntity.class, - nbt -> nbt.put("FrequencyLast", iron.write(new CompoundNBT()))); - scene.idle(7); - scene.world.modifyTileNBT(link2Select, RedstoneLinkTileEntity.class, - nbt -> nbt.put("FrequencyFirst", sapling.write(new CompoundNBT()))); - scene.idle(20); - - scene.overlay.showControls(new InputWindowElement(top3Slot, Pointing.DOWN).withItem(gold), 40); - scene.idle(7); - scene.overlay.showControls(new InputWindowElement(bottom3Slot, Pointing.UP).withItem(sapling), 40); - scene.world.modifyTileNBT(link3Select, RedstoneLinkTileEntity.class, - nbt -> nbt.put("FrequencyLast", gold.write(new CompoundNBT()))); - scene.idle(7); - scene.world.modifyTileNBT(link3Select, RedstoneLinkTileEntity.class, - nbt -> nbt.put("FrequencyFirst", sapling.write(new CompoundNBT()))); - scene.idle(20); - - scene.world.toggleRedstonePower(redstone); - scene.effects.indicateRedstone(leverPos); - scene.idle(5); - scene.world.toggleRedstonePower(util.select.fromTo(1, 2, 2, 1, 2, 3)); - scene.effects.indicateRedstone(link2Pos); - scene.overlay.showText(90) - .attachKeyFrame() - .text("Only the links with matching Frequencies will communicate") - .placeNearTarget() - .pointAt(link2Vec); - scene.idle(100); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/SharedText.java b/src/main/java/com/simibubi/create/foundation/ponder/content/SharedText.java deleted file mode 100644 index bd83c5bd6..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/SharedText.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.foundation.ponder.PonderLocalization; - -public class SharedText { - - public static void gatherText() { - // Add entries used across several ponder scenes (Safe for hotswap) - - add("sneak_and", "Sneak +"); - add("ctrl_and", "Ctrl +"); - - add("rpm8", "8 RPM"); - add("rpm16", "16 RPM"); - add("rpm16_source", "Source: 16 RPM"); - add("rpm32", "32 RPM"); - - add("movement_anchors", "With the help of Chassis or Super Glue, larger structures can be moved."); - add("behaviour_modify_wrench", "This behaviour can be modified using a Wrench"); - add("storage_on_contraption", "Inventories attached to the Contraption will pick up their drops automatically"); - - } - - public static String get(String key) { - return PonderLocalization.getShared(key); - } - - private static void add(String k, String v) { - PonderLocalization.registerShared(k, v); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/TemplateScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/TemplateScenes.java deleted file mode 100644 index 72fc1b7e5..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/TemplateScenes.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; - -import net.minecraft.util.Direction; - -public class TemplateScenes { - - public static void templateMethod(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("", ""); - scene.configureBasePlate(0, 0, 5); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.layersFrom(1), Direction.DOWN); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/content/TunnelScenes.java b/src/main/java/com/simibubi/create/foundation/ponder/content/TunnelScenes.java deleted file mode 100644 index 6c80f52b5..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/content/TunnelScenes.java +++ /dev/null @@ -1,564 +0,0 @@ -package com.simibubi.create.foundation.ponder.content; - -import java.util.Vector; - -import com.simibubi.create.AllItems; -import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; -import com.simibubi.create.content.contraptions.relays.belt.BeltTileEntity; -import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelTileEntity; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.SceneBuilder; -import com.simibubi.create.foundation.ponder.SceneBuildingUtil; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.SidedFilteringBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollOptionBehaviour; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.Pointing; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class TunnelScenes { - - public static void andesite(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("andesite_tunnel", "Using Andesite Tunnels"); - scene.configureBasePlate(0, 0, 5); - - scene.world.cycleBlockProperty(util.grid.at(2, 1, 2), BeltBlock.CASING); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 5, 4, 1, 3), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.fromTo(4, 1, 2, 0, 1, 2), Direction.SOUTH); - scene.idle(10); - - Vector> tunnels = new Vector<>(3); - for (int i = 0; i < 3; i++) { - tunnels.add(scene.world.showIndependentSection(util.select.position(1 + i, 2, 4), Direction.DOWN)); - scene.world.moveSection(tunnels.get(i), util.vector.of(0, 0, -2), 0); - scene.idle(4); - } - - for (int i = 0; i < 3; i++) { - scene.world.cycleBlockProperty(util.grid.at(1 + i, 1, 2), BeltBlock.CASING); - scene.world.modifyTileNBT(util.select.position(1 + i, 1, 2), BeltTileEntity.class, - nbt -> NBTHelper.writeEnum(nbt, "Casing", BeltTileEntity.CasingType.ANDESITE), true); - scene.idle(4); - } - - scene.overlay.showText(60) - .attachKeyFrame() - .pointAt(util.vector.topOf(util.grid.at(1, 2, 2))) - .placeNearTarget() - .text("Andesite Tunnels can be used to cover up your belts"); - scene.idle(70); - - for (int i = 0; i < 3; i++) { - scene.world.cycleBlockProperty(util.grid.at(1 + i, 1, 2), BeltBlock.CASING); - scene.world.hideIndependentSection(tunnels.get(i), Direction.UP); - scene.idle(4); - } - scene.idle(10); - scene.world.showSection(util.select.fromTo(2, 1, 0, 0, 1, 1), Direction.SOUTH); - scene.idle(10); - scene.world.showSection(util.select.position(2, 2, 2), Direction.DOWN); - scene.idle(10); - scene.world.cycleBlockProperty(util.grid.at(2, 1, 2), BeltBlock.CASING); - - scene.overlay.showText(60) - .attachKeyFrame() - .pointAt(util.vector.blockSurface(util.grid.at(2, 2, 2), Direction.NORTH)) - .placeNearTarget() - .text("Whenever an Andesite Tunnel has connections to the sides..."); - scene.idle(70); - - scene.overlay.showControls(new InputWindowElement(util.vector.topOf(util.grid.at(4, 1, 2)), Pointing.DOWN) - .withItem(AllItems.COPPER_INGOT.asStack()), 20); - scene.idle(7); - scene.world.createItemOnBelt(util.grid.at(4, 1, 2), Direction.UP, AllItems.COPPER_INGOT.asStack(64)); - scene.idle(40); - scene.world.multiplyKineticSpeed(util.select.everywhere(), 1 / 16f); - scene.overlay.showText(80) - .attachKeyFrame() - .text("...they will split exactly one item off of any passing stacks") - .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 0), Direction.WEST)) - .placeNearTarget(); - scene.idle(90); - scene.overlay.showText(80) - .text("The remainder will continue on its path") - .pointAt(util.vector.blockSurface(util.grid.at(0, 1, 2), Direction.UP)) - .placeNearTarget(); - scene.idle(90); - scene.world.multiplyKineticSpeed(util.select.everywhere(), 16f); - } - - public static void brass(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("brass_tunnel", "Using Brass Tunnels"); - scene.configureBasePlate(1, 0, 5); - scene.world.cycleBlockProperty(util.grid.at(3, 1, 2), BeltBlock.CASING); - - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(5, 1, 5, 5, 1, 3), Direction.DOWN); - scene.idle(5); - scene.world.showSection(util.select.fromTo(5, 1, 2, 1, 1, 2), Direction.SOUTH); - scene.idle(10); - - Vector> tunnels = new Vector<>(3); - for (int i = 0; i < 3; i++) { - tunnels.add(scene.world.showIndependentSection(util.select.position(2 + i, 2, 4), Direction.DOWN)); - scene.world.moveSection(tunnels.get(i), util.vector.of(0, 0, -2), 0); - scene.idle(4); - } - - for (int i = 0; i < 3; i++) { - scene.world.cycleBlockProperty(util.grid.at(2 + i, 1, 2), BeltBlock.CASING); - scene.world.modifyTileNBT(util.select.position(2 + i, 1, 2), BeltTileEntity.class, - nbt -> NBTHelper.writeEnum(nbt, "Casing", BeltTileEntity.CasingType.BRASS), true); - scene.idle(4); - } - - scene.overlay.showText(60) - .attachKeyFrame() - .pointAt(util.vector.topOf(util.grid.at(2, 2, 2))) - .placeNearTarget() - .text("Brass Tunnels can be used to cover up your belts"); - scene.idle(70); - - for (int i = 0; i < 3; i++) { - scene.world.cycleBlockProperty(util.grid.at(2 + i, 1, 2), BeltBlock.CASING); - scene.world.hideIndependentSection(tunnels.get(i), Direction.UP); - scene.idle(4); - } - scene.idle(10); - scene.world.showSection(util.select.fromTo(3, 1, 0, 1, 1, 1), Direction.SOUTH); - scene.idle(10); - scene.world.showSection(util.select.position(3, 2, 2), Direction.DOWN); - scene.idle(10); - scene.world.cycleBlockProperty(util.grid.at(3, 1, 2), BeltBlock.CASING); - scene.idle(10); - - BlockPos tunnelPos = util.grid.at(3, 2, 2); - for (Direction d : Iterate.horizontalDirections) { - if (d == Direction.SOUTH) - continue; - Vector3d filter = getTunnelFilterVec(tunnelPos, d); - scene.overlay.showFilterSlotInput(filter, 40); - scene.idle(3); - } - - scene.overlay.showText(60) - .attachKeyFrame() - .pointAt(getTunnelFilterVec(tunnelPos, Direction.WEST)) - .placeNearTarget() - .text("Brass Tunnels have filter slots on each open side"); - scene.idle(70); - - scene.rotateCameraY(70); - - scene.idle(20); - Vector3d tunnelFilterVec = getTunnelFilterVec(tunnelPos, Direction.EAST); - scene.overlay.showFilterSlotInput(tunnelFilterVec, 40); - scene.overlay.showText(60) - .attachKeyFrame() - .pointAt(tunnelFilterVec) - .placeNearTarget() - .text("Filters on inbound connections simply block non-matching items"); - ItemStack copper = AllItems.COPPER_INGOT.asStack(); - Class tunnelClass = BrassTunnelTileEntity.class; - scene.world.modifyTileEntity(tunnelPos, tunnelClass, te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.EAST, copper)); - scene.overlay.showControls(new InputWindowElement(tunnelFilterVec, Pointing.DOWN).withItem(copper), 30); - ItemStack zinc = AllItems.ZINC_INGOT.asStack(); - scene.world.createItemOnBelt(util.grid.at(5, 1, 2), Direction.EAST, zinc); - scene.idle(70); - scene.world.multiplyKineticSpeed(util.select.everywhere(), -2); - scene.idle(20); - scene.rotateCameraY(-70); - scene.world.multiplyKineticSpeed(util.select.everywhere(), -.5f); - scene.idle(20); - scene.world.modifyTileEntity(tunnelPos, tunnelClass, te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.EAST, ItemStack.EMPTY)); - - tunnelFilterVec = getTunnelFilterVec(tunnelPos, Direction.NORTH); - scene.overlay.showFilterSlotInput(tunnelFilterVec, 40); - tunnelFilterVec = getTunnelFilterVec(tunnelPos, Direction.WEST); - scene.overlay.showFilterSlotInput(tunnelFilterVec, 40); - scene.overlay.showText(60) - .attachKeyFrame() - .pointAt(tunnelFilterVec) - .placeNearTarget() - .text("Filters on outbound connections can be used to sort items by type"); - scene.idle(70); - - scene.overlay.showControls(new InputWindowElement(tunnelFilterVec, Pointing.LEFT).withItem(copper), 30); - scene.world.modifyTileEntity(tunnelPos, tunnelClass, te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.WEST, copper)); - scene.idle(4); - tunnelFilterVec = getTunnelFilterVec(tunnelPos, Direction.NORTH); - scene.overlay.showControls(new InputWindowElement(tunnelFilterVec, Pointing.RIGHT).withItem(zinc), 30); - scene.world.modifyTileEntity(tunnelPos, tunnelClass, te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.NORTH, zinc)); - - scene.world.multiplyKineticSpeed(util.select.everywhere(), 1.5f); - for (int i = 0; i < 6; i++) { - scene.world.createItemOnBelt(util.grid.at(5, 1, 2), Direction.EAST, i % 2 == 0 ? zinc : copper); - scene.idle(12); - } - - scene.idle(30); - scene.world.modifyTileEntity(tunnelPos, tunnelClass, te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.NORTH, ItemStack.EMPTY)); - scene.world.modifyTileEntity(tunnelPos, tunnelClass, te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.WEST, ItemStack.EMPTY)); - scene.idle(10); - - Vector3d tunnelTop = util.vector.topOf(tunnelPos); - scene.overlay.showControls(new InputWindowElement(tunnelTop, Pointing.DOWN).scroll() - .withWrench(), 80); - scene.idle(7); - scene.overlay.showCenteredScrollInput(tunnelPos, Direction.UP, 120); - scene.overlay.showText(120) - .attachKeyFrame() - .pointAt(tunnelTop) - .placeNearTarget() - .text( - "Whenever a passing item has multiple valid exits, the distribution mode will decide how to handle it"); - for (int i = 0; i < 3; i++) { - scene.idle(40); - scene.world.createItemOnBelt(util.grid.at(5, 1, 2), Direction.EAST, AllItems.BRASS_INGOT.asStack(63)); - } - scene.idle(30); - - scene.world.hideSection(util.select.position(3, 2, 2), Direction.UP); - scene.idle(5); - scene.world.hideSection(util.select.fromTo(5, 1, 2, 1, 1, 0), Direction.UP); - scene.idle(15); - - ElementLink newBelt = - scene.world.showIndependentSection(util.select.fromTo(3, 3, 2, 0, 3, 4) - .add(util.select.fromTo(5, 3, 3, 4, 3, 3)), Direction.DOWN); - scene.world.moveSection(newBelt, util.vector.of(0, -2, -1), 0); - scene.idle(15); - for (int i = 0; i < 3; i++) { - scene.idle(4); - scene.world.showSectionAndMerge(util.select.position(3, 4, 2 + i), Direction.DOWN, newBelt); - } - - scene.overlay.showSelectionWithText(util.select.fromTo(3, 1, 1, 3, 2, 3), 80) - .attachKeyFrame() - .placeNearTarget() - .text("Brass Tunnels on parallel belts will form a group"); - scene.idle(90); - - ItemStack item1 = new ItemStack(Items.CARROT); - ItemStack item2 = new ItemStack(Items.HONEY_BOTTLE); - ItemStack item3 = new ItemStack(Items.SWEET_BERRIES); - - tunnelFilterVec = getTunnelFilterVec(tunnelPos, Direction.WEST); - BlockPos newTunnelPos = tunnelPos.up(2) - .south(); - scene.overlay - .showControls(new InputWindowElement(tunnelFilterVec.add(0, 0, -1), Pointing.RIGHT).withItem(item1), 20); - scene.world.modifyTileEntity(newTunnelPos.north(), tunnelClass, - te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.WEST, item1)); - scene.idle(4); - scene.overlay.showControls(new InputWindowElement(tunnelFilterVec, Pointing.DOWN).withItem(item2), 20); - scene.world.modifyTileEntity(newTunnelPos, tunnelClass, te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.WEST, item2)); - scene.idle(4); - scene.overlay.showControls(new InputWindowElement(tunnelFilterVec.add(0, 0, 1), Pointing.LEFT).withItem(item3), - 20); - scene.world.modifyTileEntity(newTunnelPos.south(), tunnelClass, - te -> te.getBehaviour(SidedFilteringBehaviour.TYPE) - .setFilter(Direction.WEST, item3)); - scene.idle(30); - - scene.overlay.showText(80) - .pointAt(tunnelTop) - .placeNearTarget() - .text("Incoming Items will now be distributed across all connected exits"); - scene.idle(90); - - BlockPos beltPos = util.grid.at(5, 3, 3); - Vector3d m = util.vector.of(0, 0.1, 0); - Vector3d spawn = util.vector.centerOf(util.grid.at(5, 3, 2)); - scene.world.createItemEntity(spawn, m, item1); - scene.idle(12); - scene.world.createItemOnBelt(beltPos, Direction.UP, item1); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.createItemEntity(spawn, m, item2); - scene.idle(12); - scene.world.createItemOnBelt(beltPos, Direction.UP, item2); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.createItemEntity(spawn, m, item3); - scene.idle(12); - scene.world.createItemOnBelt(beltPos, Direction.UP, item3); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.idle(50); - - scene.world.showSectionAndMerge(util.select.position(3, 5, 2), Direction.DOWN, newBelt); - - scene.overlay.showText(80) - .pointAt(util.vector.blockSurface(tunnelPos.up() - .north(), Direction.WEST)) - .placeNearTarget() - .text("For this, items can also be inserted into the Tunnel block directly"); - scene.idle(20); - - beltPos = util.grid.at(3, 3, 3); - spawn = util.vector.centerOf(util.grid.at(3, 5, 1)); - scene.world.createItemEntity(spawn, m, item1); - scene.idle(12); - scene.world.createItemOnBelt(beltPos, Direction.EAST, item1); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.createItemEntity(spawn, m, item2); - scene.idle(12); - scene.world.createItemOnBelt(beltPos, Direction.EAST, item2); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.world.createItemEntity(spawn, m, item3); - scene.idle(12); - scene.world.createItemOnBelt(beltPos, Direction.EAST, item3); - scene.world.modifyEntities(ItemEntity.class, Entity::remove); - scene.idle(30); - - } - - protected static Vector3d getTunnelFilterVec(BlockPos pos, Direction d) { - return VecHelper.getCenterOf(pos) - .add(Vector3d.of(d.getDirectionVec()).scale(.5)) - .add(0, 0.3, 0); - } - - public static void brassModes(SceneBuilder scene, SceneBuildingUtil util) { - scene.title("brass_tunnel_modes", "Distribution Modes of the Brass Tunnel"); - scene.configureBasePlate(0, 1, 5); - BlockState barrier = Blocks.BARRIER.getDefaultState(); - scene.world.setBlock(util.grid.at(1, 1, 0), barrier, false); - scene.world.showSection(util.select.layer(0), Direction.UP); - scene.idle(5); - scene.world.showSection(util.select.fromTo(1, 1, 1, 5, 1, 5) - .add(util.select.fromTo(3, 2, 5, 1, 2, 5)), Direction.DOWN); - scene.idle(10); - for (int i = 0; i < 3; i++) { - scene.world.showSection(util.select.position(3 - i, 2, 3), Direction.DOWN); - scene.idle(4); - } - - Vector3d tunnelTop = util.vector.topOf(util.grid.at(2, 2, 3)); - scene.overlay.showControls(new InputWindowElement(tunnelTop, Pointing.DOWN).scroll() - .withWrench(), 80); - scene.idle(7); - scene.overlay.showCenteredScrollInput(util.grid.at(2, 2, 3), Direction.UP, 120); - scene.overlay.showText(120) - .attachKeyFrame() - .pointAt(tunnelTop) - .placeNearTarget() - .text("Using a Wrench, the distribution behaviour of Brass Tunnels can be configured"); - scene.idle(130); - - Class tunnelClass = BrassTunnelTileEntity.class; - ElementLink blockage = - scene.world.showIndependentSection(util.select.position(4, 1, 0), Direction.UP); - scene.world.moveSection(blockage, util.vector.of(-3, 0, 0), 0); - - Vector3d modeVec = util.vector.of(4, 2.5, 3); - scene.overlay.showControls(new InputWindowElement(modeVec, Pointing.RIGHT).showing(AllIcons.I_TUNNEL_SPLIT), - 140); - - ElementLink blockage2 = null; - - for (int i = 0; i < 32; i++) { - if (i < 30) - scene.world.createItemOnBelt(util.grid.at(1, 1, 5), Direction.EAST, new ItemStack(Items.SNOWBALL, 12)); - scene.idle(i > 8 ? 30 : 40); - - if (i == 0) { - scene.overlay.showText(80) - .attachKeyFrame() - .pointAt(tunnelTop) - .placeNearTarget() - .text("'Split' will attempt to distribute the stack evenly between available outputs"); - } - - if (i == 2) { - scene.overlay.showText(60) - .text("If an output is unable to take more items, it will be skipped") - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.GREEN); - } - - if (i == 4) { - scene.overlay.showControls( - new InputWindowElement(modeVec, Pointing.RIGHT).showing(AllIcons.I_TUNNEL_FORCED_SPLIT), 140); - scene.world.modifyTileEntity(util.grid.at(1, 2, 3), tunnelClass, - te -> te.getBehaviour(ScrollOptionBehaviour.TYPE) - .setValue(BrassTunnelTileEntity.SelectionMode.FORCED_SPLIT.ordinal())); - } - - if (i == 5) { - scene.overlay.showText(80) - .attachKeyFrame() - .text("'Forced Split' will never skip outputs, and instead wait until they are free") - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.RED); - scene.idle(60); - scene.world.moveSection(blockage, util.vector.of(-1, 0, 0), 10); - scene.world.setBlock(util.grid.at(1, 1, 0), Blocks.AIR.getDefaultState(), false); - scene.world.multiplyKineticSpeed(util.select.everywhere(), 1.5f); - } - - if (i == 7) { - scene.world.modifyTileEntity(util.grid.at(1, 2, 3), tunnelClass, - te -> te.getBehaviour(ScrollOptionBehaviour.TYPE) - .setValue(BrassTunnelTileEntity.SelectionMode.ROUND_ROBIN.ordinal())); - scene.overlay.showControls( - new InputWindowElement(modeVec, Pointing.RIGHT).showing(AllIcons.I_TUNNEL_ROUND_ROBIN), 140); - scene.overlay.showText(80) - .attachKeyFrame() - .pointAt(tunnelTop) - .placeNearTarget() - .text("'Round Robin' keeps stacks whole, and cycles through outputs iteratively"); - } - - if (i == 7) { - scene.world.moveSection(blockage, util.vector.of(1, 0, 0), 10); - scene.world.setBlock(util.grid.at(1, 1, 0), barrier, false); - } - - if (i == 13) { - scene.overlay.showText(60) - .text("Once Again, if an output is unable to take more items, it will be skipped") - .placeNearTarget() - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.UP)) - .colored(PonderPalette.GREEN); - } - - if (i == 15) { - scene.overlay.showControls( - new InputWindowElement(modeVec, Pointing.RIGHT).showing(AllIcons.I_TUNNEL_FORCED_ROUND_ROBIN), 140); - scene.world.modifyTileEntity(util.grid.at(1, 2, 3), tunnelClass, - te -> te.getBehaviour(ScrollOptionBehaviour.TYPE) - .setValue(BrassTunnelTileEntity.SelectionMode.FORCED_ROUND_ROBIN.ordinal())); - } - - if (i == 16) { - scene.overlay.showText(50) - .attachKeyFrame() - .placeNearTarget() - .text("'Forced Round Robin' never skips outputs") - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.UP)) - .colored(PonderPalette.RED); - scene.idle(30); - scene.world.moveSection(blockage, util.vector.of(-1, 0, 0), 10); - scene.world.setBlock(util.grid.at(1, 1, 0), Blocks.AIR.getDefaultState(), false); - } - - if (i == 19) { - scene.overlay.showControls( - new InputWindowElement(modeVec, Pointing.RIGHT).showing(AllIcons.I_TUNNEL_PREFER_NEAREST), 140); - scene.world.modifyTileEntity(util.grid.at(1, 2, 3), tunnelClass, - te -> te.getBehaviour(ScrollOptionBehaviour.TYPE) - .setValue(BrassTunnelTileEntity.SelectionMode.PREFER_NEAREST.ordinal())); - scene.world.moveSection(blockage, util.vector.of(1, 0, 0), 10); - scene.world.setBlock(util.grid.at(1, 1, 0), barrier, false); - scene.overlay.showText(70) - .attachKeyFrame() - .text("'Prefer Nearest' prioritizes the outputs closest to the items' input location") - .pointAt(util.vector.blockSurface(util.grid.at(1, 1, 2), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.GREEN); - } - - if (i == 21) { - scene.world.setBlock(util.grid.at(2, 1, 0), Blocks.BARRIER.getDefaultState(), false); - blockage2 = scene.world.showIndependentSection(util.select.position(4, 1, 0), Direction.UP); - scene.world.moveSection(blockage2, util.vector.of(-2, 0, 0), 0); - } - - if (i == 25) { - scene.world.hideIndependentSection(blockage, Direction.DOWN); - scene.world.setBlock(util.grid.at(1, 1, 0), Blocks.AIR.getDefaultState(), false); - scene.world.hideIndependentSection(blockage2, Direction.DOWN); - scene.world.setBlock(util.grid.at(2, 1, 0), Blocks.AIR.getDefaultState(), false); - } - - if (i == 26) { - scene.overlay.showControls( - new InputWindowElement(modeVec, Pointing.RIGHT).showing(AllIcons.I_TUNNEL_RANDOMIZE), 140); - scene.world.modifyTileEntity(util.grid.at(1, 2, 3), tunnelClass, - te -> te.getBehaviour(ScrollOptionBehaviour.TYPE) - .setValue(BrassTunnelTileEntity.SelectionMode.RANDOMIZE.ordinal())); - } - - if (i == 27) { - scene.overlay.showText(70) - .attachKeyFrame() - .text("'Randomize' will distribute whole stacks to randomly picked outputs") - .pointAt(tunnelTop) - .placeNearTarget(); - } - } - - scene.world.hideSection(util.select.fromTo(3, 2, 5, 1, 2, 5), Direction.UP); - scene.idle(10); - scene.overlay - .showControls(new InputWindowElement(modeVec, Pointing.RIGHT).showing(AllIcons.I_TUNNEL_SYNCHRONIZE), 140); - scene.world.modifyTileEntity(util.grid.at(1, 2, 3), tunnelClass, - te -> te.getBehaviour(ScrollOptionBehaviour.TYPE) - .setValue(BrassTunnelTileEntity.SelectionMode.SYNCHRONIZE.ordinal())); - scene.idle(30); - scene.overlay.showText(70) - .attachKeyFrame() - .text("'Synchronize Inputs' is a unique setting for Brass Tunnels") - .pointAt(tunnelTop) - .placeNearTarget(); - - ItemStack item1 = new ItemStack(Items.CARROT); - ItemStack item2 = new ItemStack(Items.HONEY_BOTTLE); - ItemStack item3 = AllItems.POLISHED_ROSE_QUARTZ.asStack(); - - scene.world.createItemOnBelt(util.grid.at(3, 1, 4), Direction.UP, item1); - scene.world.createItemOnBelt(util.grid.at(2, 1, 4), Direction.UP, item2); - scene.world.createItemOnBelt(util.grid.at(3, 1, 5), Direction.SOUTH, item1); - scene.world.createItemOnBelt(util.grid.at(2, 1, 5), Direction.SOUTH, item2); - - scene.idle(80); - scene.world.createItemOnBelt(util.grid.at(2, 1, 5), Direction.SOUTH, item2); - scene.rotateCameraY(-90); - scene.idle(20); - scene.world.multiplyKineticSpeed(util.select.everywhere(), .5f); - - scene.overlay.showText(70) - .text("Items are only allowed past if every tunnel in the group has one waiting") - .pointAt(util.vector.blockSurface(util.grid.at(2, 1, 4), Direction.UP)) - .placeNearTarget() - .colored(PonderPalette.OUTPUT); - scene.idle(60); - scene.world.createItemOnBelt(util.grid.at(1, 1, 5), Direction.SOUTH, item3); - scene.idle(90); - scene.rotateCameraY(90); - - scene.overlay.showText(100) - .text("This ensures that all affected belts supply items at the same rate") - .pointAt(util.vector.blockSurface(util.grid.at(1, 2, 3), Direction.WEST)) - .placeNearTarget() - .colored(PonderPalette.GREEN); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedOverlayElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedOverlayElement.java deleted file mode 100644 index 8f2fc1375..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedOverlayElement.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -public abstract class AnimatedOverlayElement extends PonderOverlayElement { - - protected LerpedFloat fade; - - public AnimatedOverlayElement() { - fade = LerpedFloat.linear() - .startWithValue(0); - } - - public void setFade(float fade) { - this.fade.setValue(fade); - } - - @Override - public final void render(PonderScene scene, PonderUI screen, MatrixStack ms, float partialTicks) { - float currentFade = fade.getValue(partialTicks); - render(scene, screen, ms, partialTicks, currentFade); - } - - protected abstract void render(PonderScene scene, PonderUI screen, MatrixStack ms, float partialTicks, float fade); - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java deleted file mode 100644 index d4c619e61..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/AnimatedSceneElement.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.ponder.PonderWorld; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public abstract class AnimatedSceneElement extends PonderSceneElement { - - protected Vector3d fadeVec; - protected LerpedFloat fade; - - public AnimatedSceneElement() { - fade = LerpedFloat.linear() - .startWithValue(0); - } - - public void forceApplyFade(float fade) { - this.fade.startWithValue(fade); - } - - public void setFade(float fade) { - this.fade.setValue(fade); - } - - public void setFadeVec(Vector3d fadeVec) { - this.fadeVec = fadeVec; - } - - @Override - public final void renderFirst(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float pt) { - ms.push(); - float currentFade = applyFade(ms, pt); - renderFirst(world, buffer, ms, currentFade, pt); - ms.pop(); - } - - @Override - public final void renderLayer(PonderWorld world, IRenderTypeBuffer buffer, RenderType type, MatrixStack ms, - float pt) { - ms.push(); - float currentFade = applyFade(ms, pt); - renderLayer(world, buffer, type, ms, currentFade, pt); - ms.pop(); - } - - @Override - public final void renderLast(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float pt) { - ms.push(); - float currentFade = applyFade(ms, pt); - renderLast(world, buffer, ms, currentFade, pt); - ms.pop(); - } - - protected float applyFade(MatrixStack ms, float pt) { - float currentFade = fade.getValue(pt); - if (fadeVec != null) - MatrixStacker.of(ms) - .translate(fadeVec.scale(-1 + currentFade)); - return currentFade; - } - - protected void renderLayer(PonderWorld world, IRenderTypeBuffer buffer, RenderType type, MatrixStack ms, float fade, - float pt) {} - - protected void renderFirst(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float fade, float pt) {} - - protected void renderLast(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float fade, float pt) {} - - protected int lightCoordsFromFade(float fade) { - int light = 0xF000F0; - if (fade != 1) { - light = (int) (MathHelper.lerp(fade, 5, 0xF)); - light = light << 4 | light << 20; - } - return light; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/BeltItemElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/BeltItemElement.java deleted file mode 100644 index 4935b3da4..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/BeltItemElement.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; - -public class BeltItemElement extends TrackedElement { - - public BeltItemElement(TransportedItemStack wrapped) { - super(wrapped); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/EntityElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/EntityElement.java deleted file mode 100644 index 556d300a4..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/EntityElement.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import net.minecraft.entity.Entity; - -public class EntityElement extends TrackedElement { - - public EntityElement(Entity wrapped) { - super(wrapped); - } - - @Override - protected boolean isStillValid(Entity element) { - return element.isAlive(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java deleted file mode 100644 index f87c70c28..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/InputWindowElement.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.ponder.PonderLocalization; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Pointing; - -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.vector.Vector2f; -import net.minecraft.util.math.vector.Vector3d; - -public class InputWindowElement extends AnimatedOverlayElement { - - private Pointing direction; - String key; - AllIcons icon; - ItemStack item = ItemStack.EMPTY; - private Vector3d sceneSpace; - - public InputWindowElement clone() { - InputWindowElement inputWindowElement = new InputWindowElement(sceneSpace, direction); - inputWindowElement.key = key; - inputWindowElement.icon = icon; - inputWindowElement.item = item.copy(); - return inputWindowElement; - } - - public InputWindowElement(Vector3d sceneSpace, Pointing direction) { - this.sceneSpace = sceneSpace; - this.direction = direction; - } - - public InputWindowElement withItem(ItemStack stack) { - item = stack; - return this; - } - - public InputWindowElement withWrench() { - item = AllItems.WRENCH.asStack(); - return this; - } - - public InputWindowElement scroll() { - icon = AllIcons.I_SCROLL; - return this; - } - - public InputWindowElement rightClick() { - icon = AllIcons.I_RMB; - return this; - } - - public InputWindowElement showing(AllIcons icon) { - this.icon = icon; - return this; - } - - public InputWindowElement leftClick() { - icon = AllIcons.I_LMB; - return this; - } - - public InputWindowElement whileSneaking() { - key = "sneak_and"; - return this; - } - - public InputWindowElement whileCTRL() { - key = "ctrl_and"; - return this; - } - - @Override - protected void render(PonderScene scene, PonderUI screen, MatrixStack ms, float partialTicks, float fade) { - FontRenderer font = screen.getFontRenderer(); - int width = 0; - int height = 0; - - float xFade = direction == Pointing.RIGHT ? -1 : direction == Pointing.LEFT ? 1 : 0; - float yFade = direction == Pointing.DOWN ? -1 : direction == Pointing.UP ? 1 : 0; - xFade *= 10 * (1 - fade); - yFade *= 10 * (1 - fade); - - boolean hasItem = !item.isEmpty(); - boolean hasText = key != null; - boolean hasIcon = icon != null; - int keyWidth = 0; - String text = hasText ? PonderLocalization.getShared(key) : ""; - - if (fade < 1 / 16f) - return; - Vector2f sceneToScreen = scene.getTransform() - .sceneToScreen(sceneSpace, partialTicks); - - if (hasIcon) { - width += 24; - height = 24; - } - - if (hasText) { - keyWidth = font.getStringWidth(text); - width += keyWidth; - } - - if (hasItem) { - width += 24; - height = 24; - } - - ms.push(); - ms.translate(sceneToScreen.x + xFade, sceneToScreen.y + yFade, 400); - - PonderUI.renderSpeechBox(ms, 0, 0, width, height, false, direction, true); - - ms.translate(0, 0, 100); - - if (hasText) - font.draw(ms, text, 2, (height - font.FONT_HEIGHT) / 2f + 2, - ColorHelper.applyAlpha(PonderPalette.WHITE.getColor(), fade)); - - if (hasIcon) { - ms.push(); - ms.translate(keyWidth, 0, 0); - ms.scale(1.5f, 1.5f, 1.5f); - icon.draw(ms, screen, 0, 0); - ms.pop(); - } - - if (hasItem) { - GuiGameElement.of(item) - .at(keyWidth + (hasIcon ? 24 : 0), 0) - .scale(1.5) - .render(ms); - RenderSystem.disableDepthTest(); - } - - ms.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java deleted file mode 100644 index 93c0be467..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/MinecartElement.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderWorld; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.entity.item.minecart.AbstractMinecartEntity; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; - -public class MinecartElement extends AnimatedSceneElement { - - private Vector3d location; - private LerpedFloat rotation; - private AbstractMinecartEntity entity; - private MinecartConstructor constructor; - private float initialRotation; - - public interface MinecartConstructor { - AbstractMinecartEntity create(World w, double x, double y, double z); - } - - public MinecartElement(Vector3d location, float rotation, MinecartConstructor constructor) { - initialRotation = rotation; - this.location = location.add(0, 1 / 16f, 0); - this.constructor = constructor; - this.rotation = LerpedFloat.angular() - .startWithValue(rotation); - } - - @Override - public void reset(PonderScene scene) { - super.reset(scene); - entity.setPos(0, 0, 0); - entity.prevPosX = 0; - entity.prevPosY = 0; - entity.prevPosZ = 0; - entity.lastTickPosX = 0; - entity.lastTickPosY = 0; - entity.lastTickPosZ = 0; - rotation.startWithValue(initialRotation); - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - if (entity == null) - entity = constructor.create(scene.getWorld(), 0, 0, 0); - - entity.ticksExisted++; - entity.onGround = true; - entity.prevPosX = entity.getX(); - entity.prevPosY = entity.getY(); - entity.prevPosZ = entity.getZ(); - entity.lastTickPosX = entity.getX(); - entity.lastTickPosY = entity.getY(); - entity.lastTickPosZ = entity.getZ(); - } - - public void setPositionOffset(Vector3d position, boolean immediate) { - if (entity == null) - return; - entity.setPosition(position.x, position.y, position.z); - if (!immediate) - return; - entity.prevPosX = position.x; - entity.prevPosY = position.y; - entity.prevPosZ = position.z; - } - - public void setRotation(float angle, boolean immediate) { - if (entity == null) - return; - rotation.setValue(angle); - if (!immediate) - return; - rotation.startWithValue(angle); - } - - public Vector3d getPositionOffset() { - return entity != null ? entity.getPositionVec() : Vector3d.ZERO; - } - - public Vector3d getRotation() { - return new Vector3d(0, rotation.getValue(), 0); - } - - @Override - protected void renderLast(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float fade, float pt) { - EntityRendererManager entityrenderermanager = Minecraft.getInstance() - .getRenderManager(); - if (entity == null) - entity = constructor.create(world, 0, 0, 0); - - ms.push(); - ms.translate(location.x, location.y, location.z); - ms.translate(MathHelper.lerp(pt, entity.prevPosX, entity.getX()), - MathHelper.lerp(pt, entity.prevPosY, entity.getY()), MathHelper.lerp(pt, entity.prevPosZ, entity.getZ())); - - MatrixStacker.of(ms) - .rotateY(rotation.getValue(pt)); - - entityrenderermanager.render(entity, 0, 0, 0, 0, pt, ms, buffer, lightCoordsFromFade(fade)); - ms.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/OutlinerElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/OutlinerElement.java deleted file mode 100644 index 44773221a..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/OutlinerElement.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import java.util.function.Function; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.utility.outliner.Outline.OutlineParams; -import com.simibubi.create.foundation.utility.outliner.Outliner; - -public class OutlinerElement extends AnimatedSceneElement { - - private Function outlinerCall; - private int overrideColor; - - public OutlinerElement(Function outlinerCall) { - this.outlinerCall = outlinerCall; - this.overrideColor = -1; - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - if (fade.getValue() < 1/16f) - return; - if (fade.getValue(0) > fade.getValue(1)) - return; - OutlineParams params = outlinerCall.apply(scene.getOutliner()); - if (overrideColor != -1) - params.colored(overrideColor); - } - - public void setColor(int overrideColor) { - this.overrideColor = overrideColor; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java deleted file mode 100644 index b43efb782..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/ParrotElement.java +++ /dev/null @@ -1,254 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import java.util.function.Supplier; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.PonderWorld; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.entity.EntityRendererManager; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.passive.ParrotEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class ParrotElement extends AnimatedSceneElement { - - private Vector3d location; - private ParrotEntity entity; - private ParrotPose pose; - private Supplier initialPose; - - public static ParrotElement create(Vector3d location, Supplier pose) { - return new ParrotElement(location, pose); - } - - protected ParrotElement(Vector3d location, Supplier pose) { - this.location = location; - initialPose = pose; - setPose(initialPose.get()); - } - - @Override - public void reset(PonderScene scene) { - super.reset(scene); - setPose(initialPose.get()); - entity.setPos(0, 0, 0); - entity.prevPosX = 0; - entity.prevPosY = 0; - entity.prevPosZ = 0; - entity.lastTickPosX = 0; - entity.lastTickPosY = 0; - entity.lastTickPosZ = 0; - entity.prevRotationPitch = entity.rotationPitch = 0; - entity.prevRotationYaw = entity.rotationYaw = 180; - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - if (entity == null) { - entity = pose.create(scene.getWorld()); - entity.prevRotationYaw = entity.rotationYaw = 180; - } - - entity.ticksExisted++; - entity.prevRotationYawHead = entity.rotationYawHead; - entity.oFlapSpeed = entity.flapSpeed; - entity.oFlap = entity.flap; - entity.onGround = true; - - entity.prevPosX = entity.getX(); - entity.prevPosY = entity.getY(); - entity.prevPosZ = entity.getZ(); - entity.prevRotationYaw = entity.rotationYaw; - entity.prevRotationPitch = entity.rotationPitch; - - pose.tick(scene, entity, location); - - entity.lastTickPosX = entity.getX(); - entity.lastTickPosY = entity.getY(); - entity.lastTickPosZ = entity.getZ(); - } - - public void setPositionOffset(Vector3d position, boolean immediate) { - if (entity == null) - return; - entity.setPosition(position.x, position.y, position.z); - if (!immediate) - return; - entity.prevPosX = position.x; - entity.prevPosY = position.y; - entity.prevPosZ = position.z; - } - - public void setRotation(Vector3d eulers, boolean immediate) { - if (entity == null) - return; - entity.rotationPitch = (float) eulers.x; - entity.rotationYaw = (float) eulers.y; - if (!immediate) - return; - entity.prevRotationPitch = entity.rotationPitch; - entity.prevRotationYaw = entity.rotationYaw; - } - - public Vector3d getPositionOffset() { - return entity != null ? entity.getPositionVec() : Vector3d.ZERO; - } - - public Vector3d getRotation() { - return entity != null ? new Vector3d(entity.rotationPitch, entity.rotationYaw, 0) : Vector3d.ZERO; - } - - @Override - protected void renderLast(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float fade, float pt) { - EntityRendererManager entityrenderermanager = Minecraft.getInstance() - .getRenderManager(); - - if (entity == null) { - entity = pose.create(world); - entity.prevRotationYaw = entity.rotationYaw = 180; - } - - ms.push(); - ms.translate(location.x, location.y, location.z); - ms.translate(MathHelper.lerp(pt, entity.prevPosX, entity.getX()), - MathHelper.lerp(pt, entity.prevPosY, entity.getY()), MathHelper.lerp(pt, entity.prevPosZ, entity.getZ())); - - MatrixStacker.of(ms) - .rotateY(AngleHelper.angleLerp(pt, entity.prevRotationYaw, entity.rotationYaw)); - - entityrenderermanager.render(entity, 0, 0, 0, 0, pt, ms, buffer, lightCoordsFromFade(fade)); - ms.pop(); - } - - public void setPose(ParrotPose pose) { - this.pose = pose; - } - - public static abstract class ParrotPose { - - abstract void tick(PonderScene scene, ParrotEntity entity, Vector3d location); - - ParrotEntity create(PonderWorld world) { - ParrotEntity entity = new ParrotEntity(EntityType.PARROT, world); - int nextInt = Create.RANDOM.nextInt(5); - entity.setVariant(nextInt == 1 ? 0 : nextInt); // blue parrots are kinda hard to see - return entity; - } - - } - - public static class DancePose extends ParrotPose { - - @Override - ParrotEntity create(PonderWorld world) { - ParrotEntity entity = super.create(world); - entity.setPartying(BlockPos.ZERO, true); - return entity; - } - - @Override - void tick(PonderScene scene, ParrotEntity entity, Vector3d location) { - entity.prevRotationYaw = entity.rotationYaw; - entity.rotationYaw -= 2; - } - - } - - public static class FlappyPose extends ParrotPose { - - @Override - void tick(PonderScene scene, ParrotEntity entity, Vector3d location) { - double length = entity.getPositionVec() - .subtract(entity.lastTickPosX, entity.lastTickPosY, entity.lastTickPosZ) - .length(); - entity.onGround = false; - double phase = Math.min(length * 15, 8); - float f = (float) ((PonderUI.ponderTicks % 100) * phase); - entity.flapSpeed = MathHelper.sin(f) + 1; - if (length == 0) - entity.flapSpeed = 0; - } - - } - - public static class SpinOnComponentPose extends ParrotPose { - - private BlockPos componentPos; - - public SpinOnComponentPose(BlockPos componentPos) { - this.componentPos = componentPos; - } - - @Override - void tick(PonderScene scene, ParrotEntity entity, Vector3d location) { - TileEntity tileEntity = scene.getWorld() - .getTileEntity(componentPos); - if (!(tileEntity instanceof KineticTileEntity)) - return; - float rpm = ((KineticTileEntity) tileEntity).getSpeed(); - entity.prevRotationYaw = entity.rotationYaw; - entity.rotationYaw += (rpm * .3f); - } - - } - - public static abstract class FaceVecPose extends ParrotPose { - - @Override - void tick(PonderScene scene, ParrotEntity entity, Vector3d location) { - Vector3d p_200602_2_ = getFacedVec(scene); - Vector3d Vector3d = location.add(entity.getEyePosition(0)); - double d0 = p_200602_2_.x - Vector3d.x; - double d1 = p_200602_2_.y - Vector3d.y; - double d2 = p_200602_2_.z - Vector3d.z; - double d3 = (double) MathHelper.sqrt(d0 * d0 + d2 * d2); - float targetPitch = - MathHelper.wrapDegrees((float) -(MathHelper.atan2(d1, d3) * (double) (180F / (float) Math.PI))); - float targetYaw = - MathHelper.wrapDegrees((float) -(MathHelper.atan2(d2, d0) * (double) (180F / (float) Math.PI)) + 90); - - entity.rotationPitch = AngleHelper.angleLerp(.4f, entity.rotationPitch, targetPitch); - entity.rotationYaw = AngleHelper.angleLerp(.4f, entity.rotationYaw, targetYaw); - } - - protected abstract Vector3d getFacedVec(PonderScene scene); - - } - - public static class FacePointOfInterestPose extends FaceVecPose { - - @Override - protected Vector3d getFacedVec(PonderScene scene) { - return scene.getPointOfInterest(); - } - - } - - public static class FaceCursorPose extends FaceVecPose { - - @Override - protected Vector3d getFacedVec(PonderScene scene) { - Minecraft minecraft = Minecraft.getInstance(); - MainWindow w = minecraft.getWindow(); - double mouseX = minecraft.mouseHelper.getMouseX() * w.getScaledWidth() / w.getWidth(); - double mouseY = minecraft.mouseHelper.getMouseY() * w.getScaledHeight() / w.getHeight(); - return scene.getTransform() - .screenToScene(mouseX, mouseY, 300, 0); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderOverlayElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderOverlayElement.java deleted file mode 100644 index 89db05a60..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderOverlayElement.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.ponder.PonderElement; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; - -public abstract class PonderOverlayElement extends PonderElement { - - public void tick(PonderScene scene) {} - - public abstract void render(PonderScene scene, PonderUI screen, MatrixStack ms, float partialTicks); - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderSceneElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderSceneElement.java deleted file mode 100644 index dfa176d04..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/PonderSceneElement.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.ponder.PonderElement; -import com.simibubi.create.foundation.ponder.PonderWorld; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; - -public abstract class PonderSceneElement extends PonderElement { - - public abstract void renderFirst(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float pt); - - public abstract void renderLayer(PonderWorld world, IRenderTypeBuffer buffer, RenderType type, MatrixStack ms, float pt); - - public abstract void renderLast(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float pt); - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java deleted file mode 100644 index 31da2fb41..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/TextWindowElement.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import java.util.List; -import java.util.function.Supplier; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.BoxElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.ponder.PonderLocalization; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.content.PonderPalette; -import com.simibubi.create.foundation.utility.ColorHelper; - -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector2f; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextProperties; -import net.minecraft.util.text.Style; -import net.minecraftforge.fml.client.gui.GuiUtils; - -public class TextWindowElement extends AnimatedOverlayElement { - - Supplier textGetter = () -> "(?) No text was provided"; - String bakedText; - - // from 0 to 200 - int y; - - Vector3d vec; - - boolean nearScene = false; - int color = PonderPalette.WHITE.getColor(); - - public class Builder { - - private PonderScene scene; - - public Builder(PonderScene scene) { - this.scene = scene; - } - - public Builder colored(PonderPalette color) { - TextWindowElement.this.color = color.getColor(); - return this; - } - - public Builder pointAt(Vector3d vec) { - TextWindowElement.this.vec = vec; - return this; - } - - public Builder independent(int y) { - TextWindowElement.this.y = y; - return this; - } - - public Builder independent() { - return independent(0); - } - - public Builder text(String defaultText) { - textGetter = scene.registerText(defaultText); - return this; - } - - public Builder sharedText(String key) { - textGetter = () -> PonderLocalization.getShared(key); - return this; - } - - public Builder placeNearTarget() { - TextWindowElement.this.nearScene = true; - return this; - } - - public Builder attachKeyFrame() { - scene.builder() - .addLazyKeyframe(); - return this; - } - - } - - @Override - protected void render(PonderScene scene, PonderUI screen, MatrixStack ms, float partialTicks, float fade) { - if (bakedText == null) - bakedText = textGetter.get(); - if (fade < 1 / 16f) - return; - Vector2f sceneToScreen = vec != null ? scene.getTransform() - .sceneToScreen(vec, partialTicks) : new Vector2f(screen.width / 2, (screen.height - 200) / 2 + y - 8); - - float yDiff = (screen.height / 2f - sceneToScreen.y - 10) / 100f; - int targetX = (int) (screen.width * MathHelper.lerp(yDiff * yDiff, 6f / 8, 5f / 8)); - - if (nearScene) - targetX = (int) Math.min(targetX, sceneToScreen.x + 50); - - int textWidth = Math.min(screen.width - targetX, 180); - - List lines = screen.getFontRenderer().getTextHandler().wrapLines(bakedText, textWidth, Style.EMPTY); - - int boxWidth = 0; - for (ITextProperties line : lines) - boxWidth = Math.max(boxWidth, screen.getFontRenderer().getWidth(line)); - - int boxHeight = screen.getFontRenderer() - .getWordWrappedHeight(bakedText, boxWidth); - - ms.push(); - ms.translate(0, sceneToScreen.y, 400); - - new BoxElement() - .withBackground(Theme.c(Theme.Key.PONDER_BACKGROUND_FLAT)) - .gradientBorder(Theme.p(Theme.Key.TEXT_WINDOW_BORDER)) - .at(targetX - 10, 3, 100) - .withBounds(boxWidth, boxHeight - 1) - .render(ms); - - //PonderUI.renderBox(ms, targetX - 10, 3, boxWidth, boxHeight - 1, 0xaa000000, 0x30eebb00, 0x10eebb00); - - int brighterColor = ColorHelper.mixAlphaColors(color, 0xFFffffdd, 1 / 2f); - if (vec != null) { - ms.push(); - ms.translate(sceneToScreen.x, 0, 0); - double lineTarget = (targetX - sceneToScreen.x) * fade; - ms.scale((float) lineTarget, 1, 1); - Matrix4f model = ms.peek().getModel(); - GuiUtils.drawGradientRect(model, -100, 0, 0, 1, 1, brighterColor, brighterColor); - GuiUtils.drawGradientRect(model, -100, 0, 1, 1, 2, 0xFF494949, 0xFF393939); - ms.pop(); - } - - ms.translate(0, 0, 400); - for (int i = 0; i < lines.size(); i++) { - screen.getFontRenderer() - .draw(ms, lines.get(i) - .getString(), targetX - 10, 3 + 9 * i, ColorHelper.applyAlpha(brighterColor, fade)); - } - ms.pop(); - } - - public int getColor() { - return color; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/TrackedElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/TrackedElement.java deleted file mode 100644 index b7c2cd7f9..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/TrackedElement.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import java.lang.ref.WeakReference; -import java.util.function.Consumer; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.ponder.PonderWorld; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; - -public abstract class TrackedElement extends PonderSceneElement { - - private WeakReference reference; - - public TrackedElement(T wrapped) { - this.reference = new WeakReference<>(wrapped); - } - - public void ifPresent(Consumer func) { - if (reference == null) - return; - T resolved = reference.get(); - if (resolved == null) - return; - func.accept(resolved); - } - - protected boolean isStillValid(T element) { - return true; - } - - @Override - public void renderFirst(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float pt) {} - - @Override - public void renderLayer(PonderWorld world, IRenderTypeBuffer buffer, RenderType type, MatrixStack ms, float pt) {} - - @Override - public void renderLast(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float pt) {} - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java b/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java deleted file mode 100644 index 6f9f6941d..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/elements/WorldSectionElement.java +++ /dev/null @@ -1,412 +0,0 @@ -package com.simibubi.create.foundation.ponder.elements; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Random; - -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.mojang.blaze3d.vertex.MatrixApplyingVertexBuilder; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderWorld; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.render.Compartment; -import com.simibubi.create.foundation.render.SuperByteBuffer; -import com.simibubi.create.foundation.render.SuperByteBufferCache; -import com.simibubi.create.foundation.render.TileEntityRenderHelper; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.Pair; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BlockModelRenderer; -import net.minecraft.client.renderer.BlockRendererDispatcher; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.model.ModelBakery; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.fluid.FluidState; -import net.minecraft.tileentity.ITickableTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.shapes.ISelectionContext; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.client.model.data.EmptyModelData; - -public class WorldSectionElement extends AnimatedSceneElement { - - public static final Compartment> DOC_WORLD_SECTION = new Compartment<>(); - - List renderedTileEntities; - Selection section; - boolean redraw; - - Vector3d prevAnimatedOffset = Vector3d.ZERO; - Vector3d animatedOffset = Vector3d.ZERO; - Vector3d prevAnimatedRotation = Vector3d.ZERO; - Vector3d animatedRotation = Vector3d.ZERO; - Vector3d centerOfRotation = Vector3d.ZERO; - Vector3d stabilizationAnchor = null; - - BlockPos selectedBlock; - - public WorldSectionElement() {} - - public WorldSectionElement(Selection section) { - this.section = section.copy(); - centerOfRotation = section.getCenter(); - } - - public void mergeOnto(WorldSectionElement other) { - setVisible(false); - if (other.isEmpty()) - other.set(section); - else - other.add(section); - } - - public void set(Selection selection) { - applyNewSelection(selection.copy()); - } - - public void add(Selection toAdd) { - applyNewSelection(this.section.add(toAdd)); - } - - public void erase(Selection toErase) { - applyNewSelection(this.section.substract(toErase)); - } - - private void applyNewSelection(Selection selection) { - this.section = selection; - queueRedraw(); - } - - public void setCenterOfRotation(Vector3d center) { - centerOfRotation = center; - } - - public void stabilizeRotation(Vector3d anchor) { - stabilizationAnchor = anchor; - } - - @Override - public void reset(PonderScene scene) { - super.reset(scene); - resetAnimatedTransform(); - resetSelectedBlock(); - } - - public void selectBlock(BlockPos pos) { - selectedBlock = pos; - } - - public void resetSelectedBlock() { - selectedBlock = null; - } - - public void resetAnimatedTransform() { - prevAnimatedOffset = Vector3d.ZERO; - animatedOffset = Vector3d.ZERO; - prevAnimatedRotation = Vector3d.ZERO; - animatedRotation = Vector3d.ZERO; - } - - public void queueRedraw() { - redraw = true; - } - - public boolean isEmpty() { - return section == null; - } - - public void setEmpty() { - section = null; - } - - public void setAnimatedRotation(Vector3d eulerAngles, boolean force) { - this.animatedRotation = eulerAngles; - if (force) - prevAnimatedRotation = animatedRotation; - } - - public Vector3d getAnimatedRotation() { - return animatedRotation; - } - - public void setAnimatedOffset(Vector3d offset, boolean force) { - this.animatedOffset = offset; - if (force) - prevAnimatedOffset = animatedOffset; - } - - public Vector3d getAnimatedOffset() { - return animatedOffset; - } - - @Override - public boolean isVisible() { - return super.isVisible() && !isEmpty(); - } - - class WorldSectionRayTraceResult { - Vector3d actualHitVec; - BlockPos worldPos; - } - - public Pair rayTrace(PonderWorld world, Vector3d source, Vector3d target) { - world.setMask(this.section); - Vector3d transformedTarget = reverseTransformVec(target); - BlockRayTraceResult rayTraceBlocks = world.rayTraceBlocks(new RayTraceContext(reverseTransformVec(source), - transformedTarget, BlockMode.OUTLINE, FluidMode.NONE, null)); - world.clearMask(); - - if (rayTraceBlocks == null) - return null; - if (rayTraceBlocks.getHitVec() == null) - return null; - - double t = rayTraceBlocks.getHitVec() - .subtract(transformedTarget) - .lengthSquared() - / source.subtract(target) - .lengthSquared(); - Vector3d actualHit = VecHelper.lerp((float) t, target, source); - return Pair.of(actualHit, rayTraceBlocks.getPos()); - } - - private Vector3d reverseTransformVec(Vector3d in) { - float pt = AnimationTickHolder.getPartialTicks(); - in = in.subtract(VecHelper.lerp(pt, prevAnimatedOffset, animatedOffset)); - if (!animatedRotation.equals(Vector3d.ZERO) || !prevAnimatedRotation.equals(Vector3d.ZERO)) { - if (centerOfRotation == null) - centerOfRotation = section.getCenter(); - double rotX = MathHelper.lerp(pt, prevAnimatedRotation.x, animatedRotation.x); - double rotZ = MathHelper.lerp(pt, prevAnimatedRotation.z, animatedRotation.z); - double rotY = MathHelper.lerp(pt, prevAnimatedRotation.y, animatedRotation.y); - in = in.subtract(centerOfRotation); - in = VecHelper.rotate(in, -rotX, Axis.X); - in = VecHelper.rotate(in, -rotZ, Axis.Z); - in = VecHelper.rotate(in, -rotY, Axis.Y); - in = in.add(centerOfRotation); - if (stabilizationAnchor != null) { - in = in.subtract(stabilizationAnchor); - in = VecHelper.rotate(in, rotX, Axis.X); - in = VecHelper.rotate(in, rotZ, Axis.Z); - in = VecHelper.rotate(in, rotY, Axis.Y); - in = in.add(stabilizationAnchor); - } - } - return in; - } - - public void transformMS(MatrixStack ms, float pt) { - MatrixStacker.of(ms) - .translate(VecHelper.lerp(pt, prevAnimatedOffset, animatedOffset)); - if (!animatedRotation.equals(Vector3d.ZERO) || !prevAnimatedRotation.equals(Vector3d.ZERO)) { - if (centerOfRotation == null) - centerOfRotation = section.getCenter(); - double rotX = MathHelper.lerp(pt, prevAnimatedRotation.x, animatedRotation.x); - double rotZ = MathHelper.lerp(pt, prevAnimatedRotation.z, animatedRotation.z); - double rotY = MathHelper.lerp(pt, prevAnimatedRotation.y, animatedRotation.y); - MatrixStacker.of(ms) - .translate(centerOfRotation) - .rotateX(rotX) - .rotateZ(rotZ) - .rotateY(rotY) - .translateBack(centerOfRotation); - if (stabilizationAnchor != null) { - MatrixStacker.of(ms) - .translate(stabilizationAnchor) - .rotateX(-rotX) - .rotateZ(-rotZ) - .rotateY(-rotY) - .translateBack(stabilizationAnchor); - } - } - } - - public void tick(PonderScene scene) { - prevAnimatedOffset = animatedOffset; - prevAnimatedRotation = animatedRotation; - if (!isVisible()) - return; - loadTEsIfMissing(scene.getWorld()); - renderedTileEntities.removeIf(te -> scene.getWorld() - .getTileEntity(te.getPos()) != te); - renderedTileEntities.forEach(te -> { - if (te instanceof ITickableTileEntity) - ((ITickableTileEntity) te).tick(); - }); - } - - @Override - public void whileSkipping(PonderScene scene) { - if (redraw) - renderedTileEntities = null; - redraw = false; - } - - protected void loadTEsIfMissing(PonderWorld world) { - if (renderedTileEntities != null) - return; - renderedTileEntities = new ArrayList<>(); - section.forEach(pos -> { - TileEntity tileEntity = world.getTileEntity(pos); - if (tileEntity == null) - return; - renderedTileEntities.add(tileEntity); - tileEntity.updateContainingBlockInfo(); - }); - } - - @Override - protected void renderLayer(PonderWorld world, IRenderTypeBuffer buffer, RenderType type, MatrixStack ms, float fade, - float pt) { - transformMS(ms, pt); - renderStructure(world, ms, buffer, type, fade); - } - - @Override - public void renderFirst(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float fade, float pt) { - int light = -1; - if (fade != 1) - light = (int) (MathHelper.lerp(fade, 5, 14)); - if (redraw) - renderedTileEntities = null; - transformMS(ms, pt); - world.pushFakeLight(light); - renderTileEntities(world, ms, buffer, pt); - world.popLight(); - - Map blockBreakingProgressions = world.getBlockBreakingProgressions(); - MatrixStack overlayMS = null; - - for (Entry entry : blockBreakingProgressions.entrySet()) { - BlockPos pos = entry.getKey(); - if (!section.test(pos)) - continue; - if (overlayMS == null) { - overlayMS = new MatrixStack(); - world.scene.getTransform() - .apply(overlayMS, pt, true); - transformMS(overlayMS, pt); - } - ms.push(); - ms.translate(pos.getX(), pos.getY(), pos.getZ()); - IVertexBuilder builder = new MatrixApplyingVertexBuilder( - buffer.getBuffer(ModelBakery.BLOCK_DESTRUCTION_RENDER_LAYERS.get(entry.getValue())), - overlayMS.peek().getModel(), - overlayMS.peek().getNormal()); - Minecraft.getInstance() - .getBlockRendererDispatcher() - .renderModel(world.getBlockState(pos), pos, world, ms, builder, true, world.rand, EmptyModelData.INSTANCE); - ms.pop(); - } - } - - protected void renderStructure(PonderWorld world, MatrixStack ms, IRenderTypeBuffer buffer, RenderType type, - float fade) { - SuperByteBufferCache bufferCache = CreateClient.BUFFER_CACHE; - int code = hashCode() ^ world.hashCode(); - - Pair key = Pair.of(code, RenderType.getBlockLayers() - .indexOf(type)); - if (redraw) - bufferCache.invalidate(DOC_WORLD_SECTION, key); - SuperByteBuffer contraptionBuffer = - bufferCache.get(DOC_WORLD_SECTION, key, () -> buildStructureBuffer(world, type)); - if (contraptionBuffer.isEmpty()) - return; - - int light = lightCoordsFromFade(fade); - contraptionBuffer.light(light) - .renderInto(ms, buffer.getBuffer(type)); - } - - @Override - protected void renderLast(PonderWorld world, IRenderTypeBuffer buffer, MatrixStack ms, float fade, float pt) { - redraw = false; - if (selectedBlock == null) - return; - BlockState blockState = world.getBlockState(selectedBlock); - if (blockState.isAir(world, selectedBlock)) - return; - VoxelShape shape = - blockState.getShape(world, selectedBlock, ISelectionContext.forEntity(Minecraft.getInstance().player)); - if (shape.isEmpty()) - return; - - ms.push(); - transformMS(ms, pt); - RenderSystem.disableTexture(); - WorldRenderer.drawBox(ms, buffer.getBuffer(RenderType.getLines()), shape.getBoundingBox() - .offset(selectedBlock), 1, 1, 1, 0.6f); - ms.pop(); - } - - private void renderTileEntities(PonderWorld world, MatrixStack ms, IRenderTypeBuffer buffer, float pt) { - loadTEsIfMissing(world); - TileEntityRenderHelper.renderTileEntities(world, renderedTileEntities, ms, buffer, pt); - } - - private SuperByteBuffer buildStructureBuffer(PonderWorld world, RenderType layer) { - ForgeHooksClient.setRenderLayer(layer); - MatrixStack ms = new MatrixStack(); - BlockRendererDispatcher dispatcher = Minecraft.getInstance() - .getBlockRendererDispatcher(); - BlockModelRenderer blockRenderer = dispatcher.getBlockModelRenderer(); - Random random = new Random(); - BufferBuilder builder = new BufferBuilder(DefaultVertexFormats.BLOCK.getIntegerSize()); - builder.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); - world.setMask(this.section); - - section.forEach(pos -> { - BlockState state = world.getBlockState(pos); - FluidState ifluidstate = world.getFluidState(pos); - - ms.push(); - ms.translate(pos.getX(), pos.getY(), pos.getZ()); - - if (state.getRenderType() != BlockRenderType.ENTITYBLOCK_ANIMATED && state.getBlock() != Blocks.AIR - && RenderTypeLookup.canRenderInLayer(state, layer)) { - TileEntity tileEntity = world.getTileEntity(pos); - blockRenderer.renderModel(world, dispatcher.getModelForState(state), state, pos, ms, builder, true, - random, 42, OverlayTexture.DEFAULT_UV, - tileEntity != null ? tileEntity.getModelData() : EmptyModelData.INSTANCE); - } - - if (!ifluidstate.isEmpty() && RenderTypeLookup.canRenderInLayer(ifluidstate, layer)) - dispatcher.renderFluid(pos, world, builder, ifluidstate); - - ms.pop(); - }); - - world.clearMask(); - builder.finishDrawing(); - return new SuperByteBuffer(builder); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateElementInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateElementInstruction.java deleted file mode 100644 index 21e2a6c4a..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateElementInstruction.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import java.util.function.BiConsumer; -import java.util.function.Function; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.PonderSceneElement; - -import net.minecraft.util.math.vector.Vector3d; - -public class AnimateElementInstruction extends TickingInstruction { - - protected Vector3d deltaPerTick; - protected Vector3d totalDelta; - protected Vector3d target; - protected ElementLink link; - protected T element; - - private BiConsumer setter; - private Function getter; - - protected AnimateElementInstruction(ElementLink link, Vector3d totalDelta, int ticks, - BiConsumer setter, Function getter) { - super(false, ticks); - this.link = link; - this.setter = setter; - this.getter = getter; - this.deltaPerTick = totalDelta.scale(1d / ticks); - this.totalDelta = totalDelta; - this.target = totalDelta; - } - - @Override - protected final void firstTick(PonderScene scene) { - super.firstTick(scene); - element = scene.resolve(link); - if (element == null) - return; - target = getter.apply(element) - .add(totalDelta); - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - if (element == null) - return; - if (remainingTicks == 0) { - setter.accept(element, target); - setter.accept(element, target); - return; - } - setter.accept(element, getter.apply(element) - .add(deltaPerTick)); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateMinecartInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateMinecartInstruction.java deleted file mode 100644 index a96e111d5..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateMinecartInstruction.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import java.util.function.BiConsumer; -import java.util.function.Function; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.elements.MinecartElement; - -import net.minecraft.util.math.vector.Vector3d; - -public class AnimateMinecartInstruction extends AnimateElementInstruction { - - public static AnimateMinecartInstruction rotate(ElementLink link, float rotation, int ticks) { - return new AnimateMinecartInstruction(link, new Vector3d(0, rotation, 0), ticks, - (wse, v) -> wse.setRotation((float) v.y, ticks == 0), MinecartElement::getRotation); - } - - public static AnimateMinecartInstruction move(ElementLink link, Vector3d offset, int ticks) { - return new AnimateMinecartInstruction(link, offset, ticks, (wse, v) -> wse.setPositionOffset(v, ticks == 0), - MinecartElement::getPositionOffset); - } - - protected AnimateMinecartInstruction(ElementLink link, Vector3d totalDelta, int ticks, - BiConsumer setter, Function getter) { - super(link, totalDelta, ticks, setter, getter); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateParrotInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateParrotInstruction.java deleted file mode 100644 index e0a45765b..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateParrotInstruction.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import java.util.function.BiConsumer; -import java.util.function.Function; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.elements.ParrotElement; - -import net.minecraft.util.math.vector.Vector3d; - -public class AnimateParrotInstruction extends AnimateElementInstruction { - - public static AnimateParrotInstruction rotate(ElementLink link, Vector3d rotation, int ticks) { - return new AnimateParrotInstruction(link, rotation, ticks, (wse, v) -> wse.setRotation(v, ticks == 0), - ParrotElement::getRotation); - } - - public static AnimateParrotInstruction move(ElementLink link, Vector3d offset, int ticks) { - return new AnimateParrotInstruction(link, offset, ticks, (wse, v) -> wse.setPositionOffset(v, ticks == 0), - ParrotElement::getPositionOffset); - } - - protected AnimateParrotInstruction(ElementLink link, Vector3d totalDelta, int ticks, - BiConsumer setter, Function getter) { - super(link, totalDelta, ticks, setter, getter); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateTileEntityInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateTileEntityInstruction.java deleted file mode 100644 index 273d520b2..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateTileEntityInstruction.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import java.util.Optional; -import java.util.function.BiConsumer; -import java.util.function.Function; - -import com.simibubi.create.content.contraptions.components.deployer.DeployerTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.bearing.IBearingTileEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyTileEntity; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderWorld; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; - -public class AnimateTileEntityInstruction extends TickingInstruction { - - protected double deltaPerTick; - protected double totalDelta; - protected double target; - protected final BlockPos location; - - private BiConsumer setter; - private Function getter; - - public static AnimateTileEntityInstruction bearing(BlockPos location, float totalDelta, int ticks) { - return new AnimateTileEntityInstruction(location, totalDelta, ticks, - (w, f) -> castIfPresent(w, location, IBearingTileEntity.class).ifPresent(bte -> bte.setAngle(f)), - (w) -> castIfPresent(w, location, IBearingTileEntity.class).map(bte -> bte.getInterpolatedAngle(0)) - .orElse(0f)); - } - - public static AnimateTileEntityInstruction pulley(BlockPos location, float totalDelta, int ticks) { - return new AnimateTileEntityInstruction(location, totalDelta, ticks, - (w, f) -> castIfPresent(w, location, PulleyTileEntity.class).ifPresent(pulley -> pulley.animateOffset(f)), - (w) -> castIfPresent(w, location, PulleyTileEntity.class).map(pulley -> pulley.offset) - .orElse(0f)); - } - - public static AnimateTileEntityInstruction deployer(BlockPos location, float totalDelta, int ticks) { - return new AnimateTileEntityInstruction(location, totalDelta, ticks, - (w, f) -> castIfPresent(w, location, DeployerTileEntity.class) - .ifPresent(deployer -> deployer.setAnimatedOffset(f)), - (w) -> castIfPresent(w, location, DeployerTileEntity.class).map(deployer -> deployer.getHandOffset(1)) - .orElse(0f)); - } - - protected AnimateTileEntityInstruction(BlockPos location, float totalDelta, int ticks, - BiConsumer setter, Function getter) { - super(false, ticks); - this.location = location; - this.setter = setter; - this.getter = getter; - this.deltaPerTick = totalDelta * (1d / ticks); - this.totalDelta = totalDelta; - this.target = totalDelta; - } - - @Override - protected final void firstTick(PonderScene scene) { - super.firstTick(scene); - target = getter.apply(scene.getWorld()) + totalDelta; - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - PonderWorld world = scene.getWorld(); - float current = getter.apply(world); - float next = (float) (remainingTicks == 0 ? target : current + deltaPerTick); - setter.accept(world, next); - if (remainingTicks == 0) // lock interpolation - setter.accept(world, next); - } - - private static Optional castIfPresent(PonderWorld world, BlockPos pos, Class teType) { - TileEntity tileEntity = world.getTileEntity(pos); - if (teType.isInstance(tileEntity)) - return Optional.of(teType.cast(tileEntity)); - return Optional.empty(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateWorldSectionInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateWorldSectionInstruction.java deleted file mode 100644 index 5fb7b2c23..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/AnimateWorldSectionInstruction.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import java.util.function.BiConsumer; -import java.util.function.Function; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; - -import net.minecraft.util.math.vector.Vector3d; - -public class AnimateWorldSectionInstruction extends AnimateElementInstruction { - - public static AnimateWorldSectionInstruction rotate(ElementLink link, Vector3d rotation, - int ticks) { - return new AnimateWorldSectionInstruction(link, rotation, ticks, - (wse, v) -> wse.setAnimatedRotation(v, ticks == 0), WorldSectionElement::getAnimatedRotation); - } - - public static AnimateWorldSectionInstruction move(ElementLink link, Vector3d offset, int ticks) { - return new AnimateWorldSectionInstruction(link, offset, ticks, (wse, v) -> wse.setAnimatedOffset(v, ticks == 0), - WorldSectionElement::getAnimatedOffset); - } - - protected AnimateWorldSectionInstruction(ElementLink link, Vector3d totalDelta, int ticks, - BiConsumer setter, Function getter) { - super(link, totalDelta, ticks, setter, getter); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ChaseAABBInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/ChaseAABBInstruction.java deleted file mode 100644 index e0a19f30b..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ChaseAABBInstruction.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.content.PonderPalette; - -import net.minecraft.util.math.AxisAlignedBB; - -public class ChaseAABBInstruction extends TickingInstruction { - - private AxisAlignedBB bb; - private Object slot; - private PonderPalette color; - - public ChaseAABBInstruction(PonderPalette color, Object slot, AxisAlignedBB bb, int ticks) { - super(false, ticks); - this.color = color; - this.slot = slot; - this.bb = bb; - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - scene.getOutliner() - .chaseAABB(slot, bb) - .lineWidth(1 / 16f) - .colored(color.getColor()); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateMinecartInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateMinecartInstruction.java deleted file mode 100644 index a6216f177..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateMinecartInstruction.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.elements.MinecartElement; - -import net.minecraft.util.Direction; - -public class CreateMinecartInstruction extends FadeIntoSceneInstruction { - - public CreateMinecartInstruction(int fadeInTicks, Direction fadeInFrom, MinecartElement element) { - super(fadeInTicks, fadeInFrom, element); - } - - @Override - protected Class getElementClass() { - return MinecartElement.class; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateParrotInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateParrotInstruction.java deleted file mode 100644 index 56ada8ae2..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/CreateParrotInstruction.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.elements.ParrotElement; - -import net.minecraft.util.Direction; - -public class CreateParrotInstruction extends FadeIntoSceneInstruction { - - public CreateParrotInstruction(int fadeInTicks, Direction fadeInFrom, ParrotElement element) { - super(fadeInTicks, fadeInFrom, element); - } - - @Override - protected Class getElementClass() { - return ParrotElement.class; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/DelayInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/DelayInstruction.java deleted file mode 100644 index 0965aa74b..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/DelayInstruction.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -public class DelayInstruction extends TickingInstruction { - - public DelayInstruction(int ticks) { - super(true, ticks); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/DisplayWorldSectionInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/DisplayWorldSectionInstruction.java deleted file mode 100644 index d9f5c70fc..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/DisplayWorldSectionInstruction.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import java.util.Optional; -import java.util.function.Supplier; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueItem; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class DisplayWorldSectionInstruction extends FadeIntoSceneInstruction { - - private Selection initialSelection; - private Optional> mergeOnto; - private BlockPos glue; - - public DisplayWorldSectionInstruction(int fadeInTicks, Direction fadeInFrom, Selection selection, - Optional> mergeOnto) { - this(fadeInTicks, fadeInFrom, selection, mergeOnto, null); - } - - public DisplayWorldSectionInstruction(int fadeInTicks, Direction fadeInFrom, Selection selection, - Optional> mergeOnto, @Nullable BlockPos glue) { - super(fadeInTicks, fadeInFrom, new WorldSectionElement(selection)); - initialSelection = selection; - this.mergeOnto = mergeOnto; - this.glue = glue; - } - - @Override - protected void firstTick(PonderScene scene) { - super.firstTick(scene); - mergeOnto.ifPresent(wse -> element.setAnimatedOffset(wse.get() - .getAnimatedOffset(), true)); - element.set(initialSelection); - element.setVisible(true); - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - if (remainingTicks > 0) - return; - mergeOnto.ifPresent(c -> element.mergeOnto(c.get())); - if (glue != null) - SuperGlueItem.spawnParticles(scene.getWorld(), glue, fadeInFrom, true); - } - - @Override - protected Class getElementClass() { - return WorldSectionElement.class; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/EmitParticlesInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/EmitParticlesInstruction.java deleted file mode 100644 index ff4fa77b9..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/EmitParticlesInstruction.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.Create; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderWorld; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.particles.IParticleData; -import net.minecraft.util.math.vector.Vector3d; - -public class EmitParticlesInstruction extends TickingInstruction { - - private Vector3d anchor; - private Emitter emitter; - private float runsPerTick; - - @FunctionalInterface - public static interface Emitter { - - public static Emitter simple(T data, Vector3d motion) { - return (w, x, y, z) -> w.addParticle(data, x, y, z, motion.x, motion.y, motion.z); - } - - public static Emitter withinBlockSpace(T data, Vector3d motion) { - return (w, x, y, z) -> w.addParticle(data, Math.floor(x) + Create.RANDOM.nextFloat(), - Math.floor(y) + Create.RANDOM.nextFloat(), Math.floor(z) + Create.RANDOM.nextFloat(), motion.x, - motion.y, motion.z); - } - - static ParticleManager paticleManager() { - return Minecraft.getInstance().particles; - } - - public void create(PonderWorld world, double x, double y, double z); - - } - - public EmitParticlesInstruction(Vector3d anchor, Emitter emitter, float runsPerTick, int ticks) { - super(false, ticks); - this.anchor = anchor; - this.emitter = emitter; - this.runsPerTick = runsPerTick; - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - int runs = (int) runsPerTick; - if (Create.RANDOM.nextFloat() < (runsPerTick - runs)) - runs++; - for (int i = 0; i < runs; i++) - emitter.create(scene.getWorld(), anchor.x, anchor.y, anchor.z); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeInOutInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeInOutInstruction.java deleted file mode 100644 index a7f195ffe..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeInOutInstruction.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderScene; - -public abstract class FadeInOutInstruction extends TickingInstruction { - - protected static final int fadeTime = 5; - - public FadeInOutInstruction(int duration) { - super(false, duration + 2 * fadeTime); - } - - protected abstract void show(PonderScene scene); - - protected abstract void hide(PonderScene scene); - - protected abstract void applyFade(PonderScene scene, float fade); - - @Override - protected void firstTick(PonderScene scene) { - super.firstTick(scene); - show(scene); - applyFade(scene, 0); - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - int elapsed = totalTicks - remainingTicks; - - if (elapsed < fadeTime) { - float fade = (elapsed / (float) fadeTime); - applyFade(scene, fade * fade); - - } else if (remainingTicks < fadeTime) { - float fade = (remainingTicks / (float) fadeTime); - applyFade(scene, fade * fade); - - } else - applyFade(scene, 1); - - if (remainingTicks == 0) { - applyFade(scene, 0); - hide(scene); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeIntoSceneInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeIntoSceneInstruction.java deleted file mode 100644 index 10a1bbaa9..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeIntoSceneInstruction.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; - -public abstract class FadeIntoSceneInstruction extends TickingInstruction { - - protected Direction fadeInFrom; - protected T element; - private ElementLink elementLink; - - public FadeIntoSceneInstruction(int fadeInTicks, Direction fadeInFrom, T element) { - super(false, fadeInTicks); - this.fadeInFrom = fadeInFrom; - this.element = element; - } - - @Override - protected void firstTick(PonderScene scene) { - super.firstTick(scene); - scene.addElement(element); - element.setVisible(true); - element.setFade(0); - element.setFadeVec(Vector3d.of(fadeInFrom.getDirectionVec()).scale(.5f)); - if (elementLink != null) - scene.linkElement(element, elementLink); - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - float fade = totalTicks == 0 ? 1 : (remainingTicks / (float) totalTicks); - element.setFade(1 - fade * fade); - if (remainingTicks == 0) { - if (totalTicks == 0) - element.setFade(1); - element.setFade(1); - } - } - - public ElementLink createLink(PonderScene scene) { - elementLink = new ElementLink<>(getElementClass()); - scene.linkElement(element, elementLink); - return elementLink; - } - - protected abstract Class getElementClass(); - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeOutOfSceneInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeOutOfSceneInstruction.java deleted file mode 100644 index 269ca682a..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/FadeOutOfSceneInstruction.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.ElementLink; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; - -public class FadeOutOfSceneInstruction extends TickingInstruction { - - private Direction fadeOutTo; - private ElementLink link; - private T element; - - public FadeOutOfSceneInstruction(int fadeOutTicks, Direction fadeOutTo, ElementLink link) { - super(false, fadeOutTicks); - this.fadeOutTo = fadeOutTo.getOpposite(); - this.link = link; - } - - @Override - protected void firstTick(PonderScene scene) { - super.firstTick(scene); - element = scene.resolve(link); - if (element == null) - return; - element.setVisible(true); - element.setFade(1); - element.setFadeVec(Vector3d.of(fadeOutTo.getDirectionVec()).scale(.5f)); - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - if (element == null) - return; - float fade = (remainingTicks / (float) totalTicks); - element.setFade(1 - (1 - fade) * (1 - fade)); - if (remainingTicks == 0) { - element.setVisible(false); - element.setFade(0); - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/HideAllInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/HideAllInstruction.java deleted file mode 100644 index 227893e68..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/HideAllInstruction.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.AnimatedOverlayElement; -import com.simibubi.create.foundation.ponder.elements.AnimatedSceneElement; - -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; - -public class HideAllInstruction extends TickingInstruction { - - private Direction fadeOutTo; - - public HideAllInstruction(int fadeOutTicks, Direction fadeOutTo) { - super(false, fadeOutTicks); - this.fadeOutTo = fadeOutTo; - } - - @Override - protected void firstTick(PonderScene scene) { - super.firstTick(scene); - scene.getElements() - .forEach(element -> { - if (element instanceof AnimatedSceneElement) { - AnimatedSceneElement animatedSceneElement = (AnimatedSceneElement) element; - animatedSceneElement.setFade(1); - animatedSceneElement - .setFadeVec(fadeOutTo == null ? null : Vector3d.of(fadeOutTo.getDirectionVec()).scale(.5f)); - } else if (element instanceof AnimatedOverlayElement) { - AnimatedOverlayElement animatedSceneElement = (AnimatedOverlayElement) element; - animatedSceneElement.setFade(1); - } else - element.setVisible(false); - }); - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - float fade = (remainingTicks / (float) totalTicks); - - scene.forEach(AnimatedSceneElement.class, ase -> { - ase.setFade(fade * fade); - if (remainingTicks == 0) - ase.setFade(0); - }); - - scene.forEach(AnimatedOverlayElement.class, aoe -> { - aoe.setFade(fade * fade); - if (remainingTicks == 0) - aoe.setFade(0); - }); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/HighlightValueBoxInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/HighlightValueBoxInstruction.java deleted file mode 100644 index b00f89dd2..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/HighlightValueBoxInstruction.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.content.PonderPalette; - -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Vector3d; - -public class HighlightValueBoxInstruction extends TickingInstruction { - - private Vector3d vec; - private Vector3d expands; - - public HighlightValueBoxInstruction(Vector3d vec, Vector3d expands, int duration) { - super(false, duration); - this.vec = vec; - this.expands = expands; - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - AxisAlignedBB point = new AxisAlignedBB(vec, vec); - AxisAlignedBB expanded = point.grow(expands.x, expands.y, expands.z); - scene.getOutliner() - .chaseAABB(vec, remainingTicks == totalTicks ? point : expanded) - .lineWidth(1 / 32f) - .colored(PonderPalette.WHITE.getColor()); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/KeyframeInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/KeyframeInstruction.java deleted file mode 100644 index 8bc6ea00a..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/KeyframeInstruction.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderInstruction; -import com.simibubi.create.foundation.ponder.PonderScene; - -public class KeyframeInstruction extends PonderInstruction { - - public static final KeyframeInstruction IMMEDIATE = new KeyframeInstruction(false); - public static final KeyframeInstruction DELAYED = new KeyframeInstruction(true); - - private boolean delayed; - - private KeyframeInstruction(boolean delayed) { - this.delayed = delayed; - } - - @Override - public boolean isComplete() { - return true; - } - - @Override - public void tick(PonderScene scene) { } - - @Override - public void onScheduled(PonderScene scene) { - scene.markKeyframe(delayed ? 6 : 0); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/LineInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/LineInstruction.java deleted file mode 100644 index 63bd171d2..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/LineInstruction.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.content.PonderPalette; - -import net.minecraft.util.math.vector.Vector3d; - -public class LineInstruction extends TickingInstruction { - - private PonderPalette color; - private Vector3d start; - private Vector3d end; - - public LineInstruction(PonderPalette color, Vector3d start, Vector3d end, int ticks) { - super(false, ticks); - this.color = color; - this.start = start; - this.end = end; - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - scene.getOutliner() - .showLine(start, start, end) - .lineWidth(1 / 16f) - .colored(color.getColor()); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/MarkAsFinishedInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/MarkAsFinishedInstruction.java deleted file mode 100644 index ef15e46dd..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/MarkAsFinishedInstruction.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderInstruction; -import com.simibubi.create.foundation.ponder.PonderScene; - -public class MarkAsFinishedInstruction extends PonderInstruction { - - @Override - public boolean isComplete() { - return true; - } - - @Override - public void tick(PonderScene scene) { - scene.setFinished(true); - } - - @Override - public void onScheduled(PonderScene scene) { - scene.stopCounting(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/MovePoiInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/MovePoiInstruction.java deleted file mode 100644 index a914595de..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/MovePoiInstruction.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderInstruction; -import com.simibubi.create.foundation.ponder.PonderScene; - -import net.minecraft.util.math.vector.Vector3d; - -public class MovePoiInstruction extends PonderInstruction { - - private Vector3d poi; - - public MovePoiInstruction(Vector3d poi) { - this.poi = poi; - } - - @Override - public boolean isComplete() { - return true; - } - - @Override - public void tick(PonderScene scene) { - scene.setPointOfInterest(poi); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/OutlineSelectionInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/OutlineSelectionInstruction.java deleted file mode 100644 index 23207f9fc..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/OutlineSelectionInstruction.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.content.PonderPalette; - -public class OutlineSelectionInstruction extends TickingInstruction { - - private PonderPalette color; - private Object slot; - private Selection selection; - - public OutlineSelectionInstruction(PonderPalette color, Object slot, Selection selection, int ticks) { - super(false, ticks); - this.color = color; - this.slot = slot; - this.selection = selection; - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - selection.makeOutline(scene.getOutliner(), slot) - .lineWidth(1 / 16f) - .colored(color.getColor()); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ReplaceBlocksInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/ReplaceBlocksInstruction.java deleted file mode 100644 index d71ad0919..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ReplaceBlocksInstruction.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import java.util.function.UnaryOperator; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderWorld; -import com.simibubi.create.foundation.ponder.Selection; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; - -public class ReplaceBlocksInstruction extends WorldModifyInstruction { - - private UnaryOperator stateToUse; - private boolean replaceAir; - private boolean spawnParticles; - - public ReplaceBlocksInstruction(Selection selection, UnaryOperator stateToUse, boolean replaceAir, - boolean spawnParticles) { - super(selection); - this.stateToUse = stateToUse; - this.replaceAir = replaceAir; - this.spawnParticles = spawnParticles; - } - - @Override - protected void runModification(Selection selection, PonderScene scene) { - PonderWorld world = scene.getWorld(); - selection.forEach(pos -> { - if (!world.getBounds() - .isVecInside(pos)) - return; - BlockState prevState = world.getBlockState(pos); - if (!replaceAir && prevState == Blocks.AIR.getDefaultState()) - return; - if (spawnParticles) - world.addBlockDestroyEffects(pos, prevState); - world.setBlockState(pos, stateToUse.apply(prevState)); - }); - } - - @Override - protected boolean needsRedraw() { - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/RotateSceneInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/RotateSceneInstruction.java deleted file mode 100644 index 9edec76fc..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/RotateSceneInstruction.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderInstruction; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderScene.SceneTransform; -import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; - -public class RotateSceneInstruction extends PonderInstruction { - - private float xRot; - private float yRot; - private boolean relative; - - public RotateSceneInstruction(float xRot, float yRot, boolean relative) { - this.xRot = xRot; - this.yRot = yRot; - this.relative = relative; - } - - @Override - public boolean isComplete() { - return true; - } - - @Override - public void tick(PonderScene scene) { - SceneTransform transform = scene.getTransform(); - float targetX = relative ? transform.xRotation.getChaseTarget() + xRot : xRot; - float targetY = relative ? transform.yRotation.getChaseTarget() + yRot : yRot; - transform.xRotation.chase(targetX, .1f, Chaser.EXP); - transform.yRotation.chase(targetY, .1f, Chaser.EXP); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ShowInputInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/ShowInputInstruction.java deleted file mode 100644 index 4a1864478..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/ShowInputInstruction.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.elements.InputWindowElement; - -public class ShowInputInstruction extends FadeInOutInstruction { - - private InputWindowElement element; - - public ShowInputInstruction(InputWindowElement element, int ticks) { - super(ticks); - this.element = element; - } - - @Override - protected void show(PonderScene scene) { - scene.addElement(element); - element.setVisible(true); - } - - @Override - protected void hide(PonderScene scene) { - element.setVisible(false); - } - - @Override - protected void applyFade(PonderScene scene, float fade) { - element.setFade(fade); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TextInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/TextInstruction.java deleted file mode 100644 index d0380cc81..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TextInstruction.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.OutlinerElement; -import com.simibubi.create.foundation.ponder.elements.TextWindowElement; - -public class TextInstruction extends FadeInOutInstruction { - - private TextWindowElement element; - private OutlinerElement outline; - - public TextInstruction(TextWindowElement element, int duration) { - super(duration); - this.element = element; - } - - public TextInstruction(TextWindowElement element, int duration, Selection selection) { - this(element, duration); - outline = new OutlinerElement(o -> selection.makeOutline(o) - .lineWidth(1 / 16f)); - } - - @Override - public void tick(PonderScene scene) { - super.tick(scene); - if (outline != null) - outline.setColor(element.getColor()); - } - - @Override - protected void show(PonderScene scene) { - scene.addElement(element); - element.setVisible(true); - if (outline != null) { - scene.addElement(outline); - outline.setFade(1); - outline.setVisible(true); - } - } - - @Override - protected void hide(PonderScene scene) { - element.setVisible(false); - if (outline != null) { - outline.setFade(0); - outline.setVisible(false); - } - } - - @Override - protected void applyFade(PonderScene scene, float fade) { - element.setFade(fade); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TickingInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/TickingInstruction.java deleted file mode 100644 index 93f2b5a03..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TickingInstruction.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderInstruction; -import com.simibubi.create.foundation.ponder.PonderScene; - -public abstract class TickingInstruction extends PonderInstruction { - - private boolean blocking; - protected int totalTicks; - protected int remainingTicks; - - public TickingInstruction(boolean blocking, int ticks) { - this.blocking = blocking; - remainingTicks = totalTicks = ticks; - } - - @Override - public void reset(PonderScene scene) { - super.reset(scene); - remainingTicks = totalTicks; - } - - protected void firstTick(PonderScene scene) {} - - @Override - public void onScheduled(PonderScene scene) { - super.onScheduled(scene); - if (isBlocking()) - scene.addToSceneTime(totalTicks); - } - - @Override - public void tick(PonderScene scene) { - if (remainingTicks == totalTicks) - firstTick(scene); - if (remainingTicks > 0) - remainingTicks--; - } - - @Override - public boolean isComplete() { - return remainingTicks == 0; - } - - @Override - public boolean isBlocking() { - return blocking; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TileEntityDataInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/TileEntityDataInstruction.java deleted file mode 100644 index 391b73063..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/TileEntityDataInstruction.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import java.util.function.UnaryOperator; - -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.PonderWorld; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.tileEntity.SyncedTileEntity; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; - -public class TileEntityDataInstruction extends WorldModifyInstruction { - - private boolean redraw; - private UnaryOperator data; - private Class type; - - public TileEntityDataInstruction(Selection selection, Class type, - UnaryOperator data, boolean redraw) { - super(selection); - this.type = type; - this.data = data; - this.redraw = redraw; - } - - @Override - protected void runModification(Selection selection, PonderScene scene) { - PonderWorld world = scene.getWorld(); - selection.forEach(pos -> { - if (!world.getBounds() - .isVecInside(pos)) - return; - TileEntity tileEntity = world.getTileEntity(pos); - if (!type.isInstance(tileEntity)) - return; - CompoundNBT apply = data.apply(tileEntity.write(new CompoundNBT())); - BlockState state = world.getBlockState(pos); - if (tileEntity instanceof SyncedTileEntity) - ((SyncedTileEntity) tileEntity).readClientUpdate(state, apply); - tileEntity.fromTag(state, apply); - }); - } - - @Override - protected boolean needsRedraw() { - return redraw; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/instructions/WorldModifyInstruction.java b/src/main/java/com/simibubi/create/foundation/ponder/instructions/WorldModifyInstruction.java deleted file mode 100644 index 583514b67..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/instructions/WorldModifyInstruction.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.foundation.ponder.instructions; - -import com.simibubi.create.foundation.ponder.PonderInstruction; -import com.simibubi.create.foundation.ponder.PonderScene; -import com.simibubi.create.foundation.ponder.Selection; -import com.simibubi.create.foundation.ponder.elements.WorldSectionElement; - -public abstract class WorldModifyInstruction extends PonderInstruction { - - private Selection selection; - - public WorldModifyInstruction(Selection selection) { - this.selection = selection; - } - - @Override - public boolean isComplete() { - return true; - } - - @Override - public void tick(PonderScene scene) { - runModification(selection, scene); - if (needsRedraw()) - scene.forEach(WorldSectionElement.class, WorldSectionElement::queueRedraw); - } - - protected abstract void runModification(Selection selection, PonderScene scene); - - protected abstract boolean needsRedraw(); - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java deleted file mode 100644 index c77273bab..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/ChapterLabel.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.simibubi.create.foundation.ponder.ui; - -import java.util.function.BiConsumer; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.UIRenderHelper; -import com.simibubi.create.foundation.gui.widgets.AbstractSimiWidget; -import com.simibubi.create.foundation.ponder.content.PonderChapter; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; - -public class ChapterLabel extends AbstractSimiWidget { - - private final PonderChapter chapter; - private final PonderButton button; - - public ChapterLabel(PonderChapter chapter, int x, int y, BiConsumer onClick) { - super(x, y, 175, 38); - - this.button = new PonderButton(x + 4, y + 4, 30, 30) - .showing(chapter) - .withCallback(onClick); - - this.chapter = chapter; - } - - @Override - public void render(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - UIRenderHelper.streak(ms, 0, x, y + height / 2, height - 2, width); - Minecraft.getInstance().fontRenderer.draw(ms, Lang.translate("ponder.chapter." + chapter.getId()), x + 50, - y + 20, Theme.i(Theme.Key.TEXT_ACCENT_SLIGHT)); - - button.renderButton(ms, mouseX, mouseY, partialTicks); - super.render(ms, mouseX, mouseY, partialTicks); - } - - @Override - public void onClick(double x, double y) { - if (!button.isMouseOver(x, y)) - return; - - button.runCallback(x, y); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/LayoutHelper.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/LayoutHelper.java deleted file mode 100644 index 32ca1df1d..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/LayoutHelper.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.simibubi.create.foundation.ponder.ui; - -import net.minecraft.client.renderer.Rectangle2d; - -public interface LayoutHelper { - - static LayoutHelper centeredHorizontal(int itemCount, int rows, int width, int height, int spacing) { - return new CenteredHorizontalLayoutHelper(itemCount, rows, width, height, spacing); - } - - int getX(); - - int getY(); - - void next(); - - int getTotalWidth(); - - int getTotalHeight(); - - default Rectangle2d getArea() { - int lWidth = getTotalWidth(); - int lHeight = getTotalHeight(); - return new Rectangle2d(-lWidth / 2, -lHeight / 2, lWidth, lHeight); - } - - class CenteredHorizontalLayoutHelper implements LayoutHelper { - - int itemCount; - int rows; - int width; - int height; - int spacing; - - int currentColumn = 0; - int currentRow = 0; - int[] rowCounts; - int x = 0, y = 0; - - CenteredHorizontalLayoutHelper(int itemCount, int rows, int width, int height, int spacing) { - this.itemCount = itemCount; - this.rows = rows; - this.width = width; - this.height = height; - this.spacing = spacing; - - rowCounts = new int[rows]; - int itemsPerRow = itemCount / rows; - int itemDiff = itemCount - itemsPerRow * rows; - for (int i = 0; i < rows; i++) { - rowCounts[i] = itemsPerRow; - if (itemDiff > 0) { - rowCounts[i]++; - itemDiff--; - } - } - - init(); - } - - @Override - public int getX() { - return x; - } - - @Override - public int getY() { - return y; - } - - @Override - public void next() { - currentColumn++; - if (currentColumn >= rowCounts[currentRow]) { - // nextRow - if (++currentRow >= rows) { - x = 0; - y = 0; - return; - } - - currentColumn = 0; - prepareX(); - y += height + spacing; - return; - } - - x += width + spacing; - } - - private void init() { - prepareX(); - prepareY(); - } - - private void prepareX() { - int rowWidth = rowCounts[currentRow] * width + (rowCounts[currentRow] - 1) * spacing; - x = -(rowWidth / 2); - } - - private void prepareY() { - int totalHeight = rows * height + (rows > 1 ? ((rows - 1) * spacing) : 0); - y = -(totalHeight / 2); - } - - @Override - public int getTotalWidth() { - return rowCounts[0] * width + (rowCounts[0] - 1) * spacing; - } - - @Override - public int getTotalHeight() { - return rows * height + (rows > 1 ? ((rows - 1) * spacing) : 0); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java deleted file mode 100644 index e3e675053..000000000 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderButton.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.simibubi.create.foundation.ponder.ui; - -import java.awt.*; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.gui.GuiGameElement; -import com.simibubi.create.foundation.gui.RenderElement; -import com.simibubi.create.foundation.gui.Theme; -import com.simibubi.create.foundation.gui.Theme.Key; -import com.simibubi.create.foundation.gui.widgets.BoxWidget; -import com.simibubi.create.foundation.gui.widgets.ElementWidget; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.MathHelper; - -public class PonderButton extends BoxWidget { - - protected ItemStack item; - protected KeyBinding shortcut; - protected LerpedFloat flash = LerpedFloat.linear().startWithValue(0).chase(0, 0.1f, LerpedFloat.Chaser.EXP); - - public PonderButton(int x, int y) { - this(x, y, 20, 20); - } - - public PonderButton(int x, int y, int width, int height) { - super(x, y, width, height); - z = 400; - paddingX = 2; - paddingY = 2; - } - - public T withShortcut(KeyBinding key) { - this.shortcut = key; - //noinspection unchecked - return (T) this; - } - - public T showing(ItemStack item) { - this.item = item; - return super.showingElement(GuiGameElement.of(item) - .scale(1.5f) - .at(-4, -4)); - } - - @Override - public T showingElement(RenderElement element) { - return super.showingElement(element); - } - - public void flash() { - flash.updateChaseTarget(1); - } - - public void dim() { - flash.updateChaseTarget(0); - } - - @Override - public void tick() { - super.tick(); - flash.tickChaser(); - } - - @Override - protected void beforeRender(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - super.beforeRender(ms, mouseX, mouseY, partialTicks); - - float flashValue = flash.getValue(partialTicks); - if (flashValue > .1f) { - float sin = 0.5f + 0.5f * MathHelper.sin((AnimationTickHolder.getTicks(true) + partialTicks) / 5f); - sin *= flashValue; - Color c1 = gradientColor1; - Color c2 = gradientColor2; - Color nc1 = new Color(255, 255, 255, MathHelper.clamp(c1.getAlpha() + 150, 0, 255)); - Color nc2 = new Color(155, 155, 155, MathHelper.clamp(c2.getAlpha() + 150, 0, 255)); - gradientColor1 = ColorHelper.mixColors(c1, nc1, sin); - gradientColor2 = ColorHelper.mixColors(c2, nc2, sin); - } - } - - @Override - public void renderButton(@Nonnull MatrixStack ms, int mouseX, int mouseY, float partialTicks) { - super.renderButton(ms, mouseX, mouseY, partialTicks); - float fadeValue = fade.getValue(); - - if (fadeValue < .1f) - return; - - if (shortcut != null) { - ms.translate(0, 0, z + 50); - drawCenteredText(ms, Minecraft.getInstance().fontRenderer, shortcut.getBoundKeyLocalizedText(), x + width / 2 + 8, y + height - 6, ColorHelper.applyAlpha(Theme.i(Theme.Key.TEXT_DARKER), fadeValue)); - } - } - - public ItemStack getItem() { - return item; - } - - @Override - public Key getDisabledTheme() { - return Theme.Key.PONDER_BUTTON_DISABLE; - } - - @Override - public Key getIdleTheme() { - return Theme.Key.PONDER_BUTTON_IDLE; - } - - @Override - public Key getHoverTheme() { - return Theme.Key.PONDER_BUTTON_HOVER; - } - - @Override - public Key getClickTheme() { - return Theme.Key.PONDER_BUTTON_CLICK; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java b/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java deleted file mode 100644 index 2ae42930c..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/AllInstanceFormats.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.simibubi.create.foundation.render; - -import com.jozufozu.flywheel.backend.gl.attrib.CommonAttributes; -import com.jozufozu.flywheel.backend.gl.attrib.VertexFormat; -import com.jozufozu.flywheel.core.Formats; - -public class AllInstanceFormats { - - public static VertexFormat ROTATING = kineticInstance() - .addAttributes(CommonAttributes.NORMAL) - .build(); - - public static VertexFormat BELT = kineticInstance() - .addAttributes(CommonAttributes.QUATERNION, CommonAttributes.UV, CommonAttributes.VEC4, - CommonAttributes.NORMALIZED_BYTE) - .build(); - - public static VertexFormat ACTOR = VertexFormat.builder() - .addAttributes(CommonAttributes.VEC3, CommonAttributes.LIGHT, CommonAttributes.FLOAT, - CommonAttributes.NORMAL, CommonAttributes.QUATERNION, CommonAttributes.NORMAL, - CommonAttributes.FLOAT) - .build(); - - public static VertexFormat FLAP = VertexFormat.builder() - .addAttributes(CommonAttributes.VEC3, CommonAttributes.LIGHT, CommonAttributes.VEC3, CommonAttributes.VEC3, - CommonAttributes.FLOAT, CommonAttributes.FLOAT, CommonAttributes.FLOAT, CommonAttributes.FLOAT) - .build(); - - private static VertexFormat.Builder kineticInstance() { - return Formats.litInstance() - .addAttributes(CommonAttributes.VEC3, CommonAttributes.FLOAT, CommonAttributes.FLOAT); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/AllMaterialSpecs.java b/src/main/java/com/simibubi/create/foundation/render/AllMaterialSpecs.java deleted file mode 100644 index 3a0c1dbcf..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/AllMaterialSpecs.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.foundation.render; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.instancing.InstanceData; -import com.jozufozu.flywheel.backend.instancing.MaterialSpec; -import com.jozufozu.flywheel.core.Formats; -import com.jozufozu.flywheel.event.GatherContextEvent; -import com.simibubi.create.Create; -import com.simibubi.create.content.contraptions.base.RotatingData; -import com.simibubi.create.content.contraptions.components.actors.ActorData; -import com.simibubi.create.content.contraptions.relays.belt.BeltData; -import com.simibubi.create.content.logistics.block.FlapData; - -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) -public class AllMaterialSpecs { - public static void init() { - // noop, make sure the static field are loaded. - } - - public static final MaterialSpec ROTATING = new MaterialSpec<>(Locations.ROTATING, AllProgramSpecs.ROTATING, Formats.UNLIT_MODEL, AllInstanceFormats.ROTATING, RotatingData::new); - public static final MaterialSpec BELTS = new MaterialSpec<>(Locations.BELTS, AllProgramSpecs.BELT, Formats.UNLIT_MODEL, AllInstanceFormats.BELT, BeltData::new); - public static final MaterialSpec ACTORS = new MaterialSpec<>(Locations.ACTORS, AllProgramSpecs.ACTOR, Formats.UNLIT_MODEL, AllInstanceFormats.ACTOR, ActorData::new); - public static final MaterialSpec FLAPS = new MaterialSpec<>(Locations.FLAPS, AllProgramSpecs.FLAPS, Formats.UNLIT_MODEL, AllInstanceFormats.FLAP, FlapData::new); - - public static MaterialSpec register(MaterialSpec spec) { - return Backend.getInstance().register(spec); - } - - @SubscribeEvent - public static void flwInit(GatherContextEvent event) { - register(ROTATING); - register(BELTS); - register(ACTORS); - register(FLAPS); - } - - public static class Locations { - public static final ResourceLocation ROTATING = new ResourceLocation(Create.ID, "rotating"); - public static final ResourceLocation BELTS = new ResourceLocation(Create.ID, "belts"); - public static final ResourceLocation ACTORS = new ResourceLocation(Create.ID, "actors"); - public static final ResourceLocation FLAPS = new ResourceLocation(Create.ID, "flaps"); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/AllProgramSpecs.java b/src/main/java/com/simibubi/create/foundation/render/AllProgramSpecs.java deleted file mode 100644 index 6df22f622..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/AllProgramSpecs.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.simibubi.create.foundation.render; - -import com.simibubi.create.Create; - -import net.minecraft.util.ResourceLocation; - -public class AllProgramSpecs { - - public static final ResourceLocation ROTATING = loc("rotating"); - public static final ResourceLocation CHROMATIC = loc("chromatic"); - public static final ResourceLocation BELT = loc("belt"); - public static final ResourceLocation FLAPS = loc("flap"); - public static final ResourceLocation STRUCTURE = loc("contraption_structure"); - public static final ResourceLocation ACTOR = loc("contraption_actor"); - - private static ResourceLocation loc(String name) { - return new ResourceLocation(Create.ID, name); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/Compartment.java b/src/main/java/com/simibubi/create/foundation/render/Compartment.java deleted file mode 100644 index 59a601df4..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/Compartment.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.simibubi.create.foundation.render; - -import org.apache.commons.lang3.tuple.Pair; - -import com.jozufozu.flywheel.core.PartialModel; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; - -public class Compartment { - public static final Compartment GENERIC_TILE = new Compartment<>(); - public static final Compartment PARTIAL = new Compartment<>(); - public static final Compartment> DIRECTIONAL_PARTIAL = new Compartment<>(); -} diff --git a/src/main/java/com/simibubi/create/foundation/render/CreateContexts.java b/src/main/java/com/simibubi/create/foundation/render/CreateContexts.java deleted file mode 100644 index 5b537ab7f..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/CreateContexts.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.simibubi.create.foundation.render; - -import java.util.stream.Stream; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.SpecMetaRegistry; -import com.jozufozu.flywheel.backend.gl.shader.ShaderType; -import com.jozufozu.flywheel.backend.loading.ModelTemplate; -import com.jozufozu.flywheel.core.WorldContext; -import com.jozufozu.flywheel.core.shader.gamestate.RainbowDebugStateProvider; -import com.jozufozu.flywheel.event.GatherContextEvent; -import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionProgram; -import com.simibubi.create.foundation.render.effects.EffectsContext; - -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD) -public class CreateContexts { - private static final ResourceLocation CONTRAPTION = new ResourceLocation("create", "context/contraption"); - - public static EffectsContext EFFECTS; - public static WorldContext CWORLD; - public static WorldContext STRUCTURE; - - @SubscribeEvent - public static void flwInit(GatherContextEvent event) { - Backend backend = event.getBackend(); - - SpecMetaRegistry.register(RainbowDebugStateProvider.INSTANCE); - - EFFECTS = backend.register(new EffectsContext(backend)); - CWORLD = backend.register(contraptionContext(backend)); - STRUCTURE = backend.register(contraptionContext(backend) - .withSpecStream(() -> Stream.of(AllProgramSpecs.STRUCTURE)) - .withTemplateFactory(ModelTemplate::new)); - } - - private static WorldContext contraptionContext(Backend backend) { - return new WorldContext<>(backend, ContraptionProgram::new) - .withName(CONTRAPTION) - .withBuiltin(ShaderType.FRAGMENT, CONTRAPTION, "/builtin.frag") - .withBuiltin(ShaderType.VERTEX, CONTRAPTION, "/builtin.vert"); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java b/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java deleted file mode 100644 index 7a8af4c23..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/PartialBufferer.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.foundation.render; - -import static net.minecraft.state.properties.BlockStateProperties.FACING; - -import java.util.function.Supplier; - -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; - -public class PartialBufferer { - - public static SuperByteBuffer get(PartialModel partial, BlockState referenceState) { - return CreateClient.BUFFER_CACHE.renderPartial(partial, referenceState); - } - - public static SuperByteBuffer getFacing(PartialModel partial, BlockState referenceState) { - Direction facing = referenceState.get(FACING); - return getFacing(partial, referenceState, facing); - } - - public static SuperByteBuffer getFacing(PartialModel partial, BlockState referenceState, Direction facing) { - return CreateClient.BUFFER_CACHE.renderDirectionalPartial(partial, referenceState, facing, rotateToFace(facing)); - } - - public static Supplier rotateToFace(Direction facing) { - return () -> { - MatrixStack stack = new MatrixStack(); - MatrixStacker.of(stack) - .centre() - .rotateY(AngleHelper.horizontalAngle(facing)) - .rotateX(AngleHelper.verticalAngle(facing)) - .unCentre(); - return stack; - }; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java deleted file mode 100644 index e5d31c07f..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/ShadowRenderHelper.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.simibubi.create.foundation.render; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; - -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.IWorldReader; - -/** - * Stolen from EntityRendererManager - */ -public class ShadowRenderHelper { - - private static final RenderType SHADOW_LAYER = - RenderType.getEntityNoOutline(new ResourceLocation("textures/misc/shadow.png")); - - public static void renderShadow(MatrixStack p_229096_0_, IRenderTypeBuffer p_229096_1_, Vector3d pos, - float p_229096_3_, float p_229096_6_) { - float f = p_229096_6_; - - double d2 = pos.getX(); - double d0 = pos.getY(); - double d1 = pos.getZ(); - int i = MathHelper.floor(d2 - (double) f); - int j = MathHelper.floor(d2 + (double) f); - int k = MathHelper.floor(d0 - (double) f); - int l = MathHelper.floor(d0); - int i1 = MathHelper.floor(d1 - (double) f); - int j1 = MathHelper.floor(d1 + (double) f); - MatrixStack.Entry matrixstack$entry = p_229096_0_.peek(); - IVertexBuilder ivertexbuilder = p_229096_1_.getBuffer(SHADOW_LAYER); - - for (BlockPos blockpos : BlockPos.getAllInBoxMutable(new BlockPos(i, k, i1), new BlockPos(j, l, j1))) { - renderShadowPart(matrixstack$entry, ivertexbuilder, Minecraft.getInstance().world, blockpos, d2, d0, d1, f, - p_229096_3_); - } - - } - - private static void renderShadowPart(MatrixStack.Entry p_229092_0_, IVertexBuilder p_229092_1_, - IWorldReader p_229092_2_, BlockPos p_229092_3_, double p_229092_4_, double p_229092_6_, double p_229092_8_, - float p_229092_10_, float p_229092_11_) { - BlockPos blockpos = p_229092_3_.down(); - BlockState blockstate = p_229092_2_.getBlockState(blockpos); - if (blockstate.getRenderType() != BlockRenderType.INVISIBLE && p_229092_2_.getLight(p_229092_3_) > 3) { - if (blockstate.isFullCube(p_229092_2_, blockpos)) { - VoxelShape voxelshape = blockstate.getShape(p_229092_2_, p_229092_3_.down()); - if (!voxelshape.isEmpty()) { - @SuppressWarnings("deprecation") - float f = (float) (((double) p_229092_11_ - (p_229092_6_ - (double) p_229092_3_.getY()) / 2.0D) - * 0.5D * (double) p_229092_2_.getBrightness(p_229092_3_)); - if (f >= 0.0F) { - if (f > 1.0F) { - f = 1.0F; - } - - AxisAlignedBB axisalignedbb = voxelshape.getBoundingBox(); - double d0 = (double) p_229092_3_.getX() + axisalignedbb.minX; - double d1 = (double) p_229092_3_.getX() + axisalignedbb.maxX; - double d2 = (double) p_229092_3_.getY() + axisalignedbb.minY; - double d3 = (double) p_229092_3_.getZ() + axisalignedbb.minZ; - double d4 = (double) p_229092_3_.getZ() + axisalignedbb.maxZ; - float f1 = (float) (d0 - p_229092_4_); - float f2 = (float) (d1 - p_229092_4_); - float f3 = (float) (d2 - p_229092_6_ + 0.015625D); - float f4 = (float) (d3 - p_229092_8_); - float f5 = (float) (d4 - p_229092_8_); - float f6 = -f1 / 2.0F / p_229092_10_ + 0.5F; - float f7 = -f2 / 2.0F / p_229092_10_ + 0.5F; - float f8 = -f4 / 2.0F / p_229092_10_ + 0.5F; - float f9 = -f5 / 2.0F / p_229092_10_ + 0.5F; - shadowVertex(p_229092_0_, p_229092_1_, f, f1, f3, f4, f6, f8); - shadowVertex(p_229092_0_, p_229092_1_, f, f1, f3, f5, f6, f9); - shadowVertex(p_229092_0_, p_229092_1_, f, f2, f3, f5, f7, f9); - shadowVertex(p_229092_0_, p_229092_1_, f, f2, f3, f4, f7, f8); - } - - } - } - } - } - - private static void shadowVertex(MatrixStack.Entry p_229091_0_, IVertexBuilder p_229091_1_, float p_229091_2_, - float p_229091_3_, float p_229091_4_, float p_229091_5_, float p_229091_6_, float p_229091_7_) { - p_229091_1_.vertex(p_229091_0_.getModel(), p_229091_3_, p_229091_4_, p_229091_5_) - .color(1.0F, 1.0F, 1.0F, p_229091_2_) - .texture(p_229091_6_, p_229091_7_) - .overlay(OverlayTexture.DEFAULT_UV) - .light(15728880) - .normal(p_229091_0_.getNormal(), 0.0F, 1.0F, 0.0F) - .endVertex(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java b/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java deleted file mode 100644 index 395169341..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java +++ /dev/null @@ -1,335 +0,0 @@ -package com.simibubi.create.foundation.render; - -import com.jozufozu.flywheel.util.BufferBuilderReader; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.foundation.block.render.SpriteShiftEntry; -import com.simibubi.create.foundation.utility.MatrixStacker; - -import it.unimi.dsi.fastutil.longs.Long2IntMap; -import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Matrix3f; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.util.math.vector.Vector4f; -import net.minecraft.world.World; -import net.minecraftforge.client.model.pipeline.LightUtil; - -public class SuperByteBuffer { - - private final BufferBuilderReader template; - - // Vertex Position - private MatrixStack transforms; - - // Vertex Texture Coords - private SpriteShiftFunc spriteShiftFunc; - - // Vertex Coloring - private boolean shouldColor; - private int r, g, b, a; - - // Vertex Lighting - private boolean useWorldLight; - private boolean hybridLight; - private int packedLightCoords; - private Matrix4f lightTransform; - - public SuperByteBuffer(BufferBuilder buf) { - template = new BufferBuilderReader(buf); - transforms = new MatrixStack(); - } - - public static float getUnInterpolatedU(TextureAtlasSprite sprite, float u) { - float f = sprite.getMaxU() - sprite.getMinU(); - return (u - sprite.getMinU()) / f * 16.0F; - } - - public static float getUnInterpolatedV(TextureAtlasSprite sprite, float v) { - float f = sprite.getMaxV() - sprite.getMinV(); - return (v - sprite.getMinV()) / f * 16.0F; - } - - private static final Long2IntMap WORLD_LIGHT_CACHE = new Long2IntOpenHashMap(); - Vector4f pos = new Vector4f(); - Vector3f normal = new Vector3f(); - Vector4f lightPos = new Vector4f(); - - public void renderInto(MatrixStack input, IVertexBuilder builder) { - if (isEmpty()) - return; - - Matrix3f normalMat = transforms.peek() - .getNormal() - .copy(); - - Matrix4f modelMat = input.peek() - .getModel() - .copy(); - - Matrix4f localTransforms = transforms.peek() - .getModel(); - modelMat.multiply(localTransforms); - - if (useWorldLight) { - WORLD_LIGHT_CACHE.clear(); - } - - boolean hasDefaultLight = packedLightCoords != 0; - float f = .5f; - int vertexCount = template.getVertexCount(); - for (int i = 0; i < vertexCount; i++) { - float x = template.getX(i); - float y = template.getY(i); - float z = template.getZ(i); - byte r = template.getR(i); - byte g = template.getG(i); - byte b = template.getB(i); - byte a = template.getA(i); - float normalX = template.getNX(i) / 127f; - float normalY = template.getNY(i) / 127f; - float normalZ = template.getNZ(i) / 127f; - - float staticDiffuse = LightUtil.diffuseLight(normalX, normalY, normalZ); - normal.set(normalX, normalY, normalZ); - normal.transform(normalMat); - float nx = normal.getX(); - float ny = normal.getY(); - float nz = normal.getZ(); - float instanceDiffuse = LightUtil.diffuseLight(nx, ny, nz); - - pos.set(x, y, z, 1F); - pos.transform(modelMat); - builder.vertex(pos.getX(), pos.getY(), pos.getZ()); - - // builder.color((byte) Math.max(0, nx * 255), (byte) Math.max(0, ny * 255), (byte) Math.max(0, nz * 255), a); - if (shouldColor) { - // float lum = (r < 0 ? 255 + r : r) / 256f; - int colorR = Math.min(255, (int) (((float) this.r) * instanceDiffuse)); - int colorG = Math.min(255, (int) (((float) this.g) * instanceDiffuse)); - int colorB = Math.min(255, (int) (((float) this.b) * instanceDiffuse)); - builder.color(colorR, colorG, colorB, this.a); - } else { - float diffuseMult = instanceDiffuse / staticDiffuse; - int colorR = Math.min(255, (int) (((float) Byte.toUnsignedInt(r)) * diffuseMult)); - int colorG = Math.min(255, (int) (((float) Byte.toUnsignedInt(g)) * diffuseMult)); - int colorB = Math.min(255, (int) (((float) Byte.toUnsignedInt(b)) * diffuseMult)); - builder.color(colorR, colorG, colorB, a); - } - - float u = template.getU(i); - float v = template.getV(i); - - if (spriteShiftFunc != null) { - spriteShiftFunc.shift(builder, u, v); - } else - builder.texture(u, v); - - int light; - if (useWorldLight) { - lightPos.set(((x - f) * 15 / 16f) + f, (y - f) * 15 / 16f + f, (z - f) * 15 / 16f + f, 1F); - lightPos.transform(localTransforms); - if (lightTransform != null) { - lightPos.transform(lightTransform); - } - - light = getLight(Minecraft.getInstance().world, lightPos); - if (hasDefaultLight) { - light = maxLight(light, packedLightCoords); - } - } else if (hasDefaultLight) { - light = packedLightCoords; - } else { - light = template.getLight(i); - } - - if (hybridLight) { - builder.light(maxLight(light, template.getLight(i))); - } else { - builder.light(light); - } - - builder.normal(nx, ny, nz) - .endVertex(); - } - - reset(); - } - - public SuperByteBuffer reset() { - transforms = new MatrixStack(); - spriteShiftFunc = null; - shouldColor = false; - r = 0; - g = 0; - b = 0; - a = 0; - useWorldLight = false; - hybridLight = false; - packedLightCoords = 0; - lightTransform = null; - return this; - } - - public MatrixStacker matrixStacker() { - return MatrixStacker.of(transforms); - } - - public SuperByteBuffer translate(Vector3d vec) { - return translate(vec.x, vec.y, vec.z); - } - - public SuperByteBuffer translate(double x, double y, double z) { - return translate((float) x, (float) y, (float) z); - } - - public SuperByteBuffer translate(float x, float y, float z) { - transforms.translate(x, y, z); - return this; - } - - public SuperByteBuffer transform(MatrixStack stack) { - transforms.peek() - .getModel() - .multiply(stack.peek() - .getModel()); - transforms.peek() - .getNormal() - .multiply(stack.peek() - .getNormal()); - return this; - } - - public SuperByteBuffer rotate(Direction axis, float radians) { - if (radians == 0) - return this; - transforms.multiply(axis.getUnitVector() - .getRadialQuaternion(radians)); - return this; - } - - public SuperByteBuffer rotate(Quaternion q) { - transforms.multiply(q); - return this; - } - - public SuperByteBuffer rotateCentered(Direction axis, float radians) { - return translate(.5f, .5f, .5f).rotate(axis, radians) - .translate(-.5f, -.5f, -.5f); - } - - public SuperByteBuffer rotateCentered(Quaternion q) { - return translate(.5f, .5f, .5f).rotate(q) - .translate(-.5f, -.5f, -.5f); - } - - public SuperByteBuffer color(int color) { - shouldColor = true; - r = ((color >> 16) & 0xFF); - g = ((color >> 8) & 0xFF); - b = (color & 0xFF); - a = 255; - return this; - } - - public SuperByteBuffer shiftUV(SpriteShiftEntry entry) { - this.spriteShiftFunc = (builder, u, v) -> { - float targetU = entry.getTarget() - .getInterpolatedU((getUnInterpolatedU(entry.getOriginal(), u))); - float targetV = entry.getTarget() - .getInterpolatedV((getUnInterpolatedV(entry.getOriginal(), v))); - builder.texture(targetU, targetV); - }; - return this; - } - - public SuperByteBuffer shiftUVScrolling(SpriteShiftEntry entry, float scrollV) { - this.spriteShiftFunc = (builder, u, v) -> { - float targetU = u - entry.getOriginal() - .getMinU() + entry.getTarget() - .getMinU(); - float targetV = v - entry.getOriginal() - .getMinV() + entry.getTarget() - .getMinV() - + scrollV; - builder.texture(targetU, targetV); - }; - return this; - } - - public SuperByteBuffer shiftUVtoSheet(SpriteShiftEntry entry, float uTarget, float vTarget, int sheetSize) { - this.spriteShiftFunc = (builder, u, v) -> { - float targetU = entry.getTarget() - .getInterpolatedU((getUnInterpolatedU(entry.getOriginal(), u) / sheetSize) + uTarget * 16); - float targetV = entry.getTarget() - .getInterpolatedV((getUnInterpolatedV(entry.getOriginal(), v) / sheetSize) + vTarget * 16); - builder.texture(targetU, targetV); - }; - return this; - } - - public SuperByteBuffer light() { - useWorldLight = true; - return this; - } - - public SuperByteBuffer light(Matrix4f lightTransform) { - useWorldLight = true; - this.lightTransform = lightTransform; - return this; - } - - public SuperByteBuffer light(int packedLightCoords) { - this.packedLightCoords = packedLightCoords; - return this; - } - - public SuperByteBuffer light(Matrix4f lightTransform, int packedLightCoords) { - useWorldLight = true; - this.lightTransform = lightTransform; - this.packedLightCoords = packedLightCoords; - return this; - } - - public SuperByteBuffer hybridLight() { - hybridLight = true; - return this; - } - - public static int maxLight(int packedLight1, int packedLight2) { - int blockLight1 = LightTexture.getBlockLightCoordinates(packedLight1); - int skyLight1 = LightTexture.getSkyLightCoordinates(packedLight1); - int blockLight2 = LightTexture.getBlockLightCoordinates(packedLight2); - int skyLight2 = LightTexture.getSkyLightCoordinates(packedLight2); - return LightTexture.pack(Math.max(blockLight1, blockLight2), Math.max(skyLight1, skyLight2)); - } - - private static int getLight(World world, Vector4f lightPos) { - BlockPos pos = new BlockPos(lightPos.getX(), lightPos.getY(), lightPos.getZ()); - return WORLD_LIGHT_CACHE.computeIfAbsent(pos.toLong(), $ -> WorldRenderer.getLightmapCoordinates(world, pos)); - } - - public boolean isEmpty() { - return template.isEmpty(); - } - - @FunctionalInterface - public interface SpriteShiftFunc { - void shift(IVertexBuilder builder, float u, float v); - } - - @FunctionalInterface - public interface IVertexLighter { - public int getPackedLight(float x, float y, float z); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/render/SuperByteBufferCache.java b/src/main/java/com/simibubi/create/foundation/render/SuperByteBufferCache.java deleted file mode 100644 index d11742f51..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/SuperByteBufferCache.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.simibubi.create.foundation.render; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.function.Supplier; - -import org.apache.commons.lang3.tuple.Pair; -import org.lwjgl.opengl.GL11; - -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import com.jozufozu.flywheel.core.PartialModel; -import com.jozufozu.flywheel.util.VirtualEmptyModelData; -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BlockModelRenderer; -import net.minecraft.client.renderer.BlockRendererDispatcher; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class SuperByteBufferCache { - - Map, Cache> cache; - - public SuperByteBufferCache() { - cache = new HashMap<>(); - registerCompartment(Compartment.GENERIC_TILE); - registerCompartment(Compartment.PARTIAL); - registerCompartment(Compartment.DIRECTIONAL_PARTIAL); - } - - public SuperByteBuffer renderBlock(BlockState toRender) { - return getGeneric(toRender, () -> standardBlockRender(toRender)); - } - - public SuperByteBuffer renderPartial(PartialModel partial, BlockState referenceState) { - return get(Compartment.PARTIAL, partial, () -> standardModelRender(partial.get(), referenceState)); - } - - public SuperByteBuffer renderPartial(PartialModel partial, BlockState referenceState, - Supplier modelTransform) { - return get(Compartment.PARTIAL, partial, - () -> standardModelRender(partial.get(), referenceState, modelTransform.get())); - } - - public SuperByteBuffer renderDirectionalPartial(PartialModel partial, BlockState referenceState, - Direction dir) { - return get(Compartment.DIRECTIONAL_PARTIAL, Pair.of(dir, partial), - () -> standardModelRender(partial.get(), referenceState)); - } - - public SuperByteBuffer renderDirectionalPartial(PartialModel partial, BlockState referenceState, Direction dir, - Supplier modelTransform) { - return get(Compartment.DIRECTIONAL_PARTIAL, Pair.of(dir, partial), - () -> standardModelRender(partial.get(), referenceState, modelTransform.get())); - } - - public SuperByteBuffer renderBlockIn(Compartment compartment, BlockState toRender) { - return get(compartment, toRender, () -> standardBlockRender(toRender)); - } - - SuperByteBuffer getGeneric(BlockState key, Supplier supplier) { - return get(Compartment.GENERIC_TILE, key, supplier); - } - - public SuperByteBuffer get(Compartment compartment, T key, Supplier supplier) { - Cache compartmentCache = this.cache.get(compartment); - try { - return compartmentCache.get(key, supplier::get); - } catch (ExecutionException e) { - e.printStackTrace(); - return null; - } - } - - public void invalidate(Compartment compartment, T key) { - Cache compartmentCache = this.cache.get(compartment); - compartmentCache.invalidate(key); - } - - public void registerCompartment(Compartment instance) { - cache.put(instance, CacheBuilder.newBuilder() - .build()); - } - - public void registerCompartment(Compartment instance, long ticksUntilExpired) { - cache.put(instance, CacheBuilder.newBuilder() - .expireAfterAccess(ticksUntilExpired * 50, TimeUnit.MILLISECONDS) - .build()); - } - - private SuperByteBuffer standardBlockRender(BlockState renderedState) { - BlockRendererDispatcher dispatcher = Minecraft.getInstance() - .getBlockRendererDispatcher(); - return standardModelRender(dispatcher.getModelForState(renderedState), renderedState); - } - - private SuperByteBuffer standardModelRender(IBakedModel model, BlockState referenceState) { - return standardModelRender(model, referenceState, new MatrixStack()); - } - - private SuperByteBuffer standardModelRender(IBakedModel model, BlockState referenceState, MatrixStack ms) { - BufferBuilder builder = getBufferBuilder(model, referenceState, ms); - - return new SuperByteBuffer(builder); - } - - public static BufferBuilder getBufferBuilder(IBakedModel model, BlockState referenceState, MatrixStack ms) { - Minecraft mc = Minecraft.getInstance(); - BlockRendererDispatcher dispatcher = mc.getBlockRendererDispatcher(); - BlockModelRenderer blockRenderer = dispatcher.getBlockModelRenderer(); - BufferBuilder builder = new BufferBuilder(512); - - builder.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); - blockRenderer.renderModel(mc.world, model, referenceState, BlockPos.ZERO.up(255), ms, builder, true, - mc.world.rand, 42, OverlayTexture.DEFAULT_UV, VirtualEmptyModelData.INSTANCE); - builder.finishDrawing(); - return builder; - } - - public void invalidate() { - cache.forEach((comp, cache) -> cache.invalidateAll()); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java b/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java deleted file mode 100644 index cf33b7f0e..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/TileEntityRenderHelper.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.simibubi.create.foundation.render; - -import java.util.Iterator; - -import javax.annotation.Nullable; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.Create; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.renderer.tileentity.TileEntityRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector4f; -import net.minecraft.world.World; - -public class TileEntityRenderHelper { - - public static void renderTileEntities(World world, Iterable customRenderTEs, MatrixStack ms, - IRenderTypeBuffer buffer) { - renderTileEntities(world, null, customRenderTEs, ms, null, buffer); - } - - public static void renderTileEntities(World world, Iterable customRenderTEs, MatrixStack ms, - IRenderTypeBuffer buffer, float pt) { - renderTileEntities(world, null, customRenderTEs, ms, null, buffer, pt); - } - - public static void renderTileEntities(World world, @Nullable PlacementSimulationWorld renderWorld, - Iterable customRenderTEs, MatrixStack ms, @Nullable Matrix4f lightTransform, IRenderTypeBuffer buffer) { - renderTileEntities(world, renderWorld, customRenderTEs, ms, lightTransform, buffer, - AnimationTickHolder.getPartialTicks()); - } - - public static void renderTileEntities(World world, @Nullable PlacementSimulationWorld renderWorld, - Iterable customRenderTEs, MatrixStack ms, @Nullable Matrix4f lightTransform, IRenderTypeBuffer buffer, - float pt) { - Iterator iterator = customRenderTEs.iterator(); - while (iterator.hasNext()) { - TileEntity tileEntity = iterator.next(); - // if (tileEntity instanceof IInstanceRendered) continue; // TODO: some things still need to render - - TileEntityRenderer renderer = TileEntityRendererDispatcher.instance.getRenderer(tileEntity); - if (renderer == null) { - iterator.remove(); - continue; - } - - BlockPos pos = tileEntity.getPos(); - ms.push(); - MatrixStacker.of(ms) - .translate(pos); - - try { - BlockPos lightPos; - if (lightTransform != null) { - Vector4f lightVec = new Vector4f(pos.getX() + .5f, pos.getY() + .5f, pos.getZ() + .5f, 1); - lightVec.transform(lightTransform); - lightPos = new BlockPos(lightVec.getX(), lightVec.getY(), lightVec.getZ()); - } else { - lightPos = pos; - } - int worldLight = getCombinedLight(world, lightPos, renderWorld, pos); - renderer.render(tileEntity, pt, ms, buffer, worldLight, OverlayTexture.DEFAULT_UV); - - } catch (Exception e) { - iterator.remove(); - - String message = "TileEntity " + tileEntity.getType() - .getRegistryName() - .toString() + " didn't want to render while moved.\n"; - if (AllConfigs.CLIENT.explainRenderErrors.get()) - Create.LOGGER.error(message, e); - else - Create.LOGGER.error(message); - } - - ms.pop(); - } - } - - public static int getCombinedLight(World world, BlockPos worldPos, @Nullable PlacementSimulationWorld renderWorld, - BlockPos renderWorldPos) { - int worldLight = WorldRenderer.getLightmapCoordinates(world, worldPos); - - if (renderWorld != null) { - int renderWorldLight = WorldRenderer.getLightmapCoordinates(renderWorld, renderWorldPos); - return SuperByteBuffer.maxLight(worldLight, renderWorldLight); - } - - return worldLight; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/render/backend/FastRenderDispatcher.java b/src/main/java/com/simibubi/create/foundation/render/backend/FastRenderDispatcher.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/main/java/com/simibubi/create/foundation/render/effects/ColorMatrices.java b/src/main/java/com/simibubi/create/foundation/render/effects/ColorMatrices.java deleted file mode 100644 index 07a683d16..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/effects/ColorMatrices.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.simibubi.create.foundation.render.effects; - -import com.simibubi.create.foundation.utility.AngleHelper; - -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Matrix4f; - -public class ColorMatrices { - - public static final float lumaR = 0.3086f; - public static final float lumaG = 0.6094f; - public static final float lumaB = 0.0820f; - - public static Matrix4f invert() { - Matrix4f invert = new Matrix4f(); - invert.a00 = -1.0F; - invert.a11 = -1.0F; - invert.a22 = -1.0F; - invert.a33 = -1.0F; - invert.a30 = 1; - invert.a31 = 1; - invert.a32 = 1; - - return invert; - } - - public static Matrix4f grayscale() { - Matrix4f mat = new Matrix4f(); - - mat.a00 = mat.a01 = mat.a02 = lumaR; - mat.a10 = mat.a11 = mat.a12 = lumaG; - mat.a20 = mat.a21 = mat.a22 = lumaB; - mat.a33 = 1; - - return mat; - } - - public static Matrix4f saturate(float s) { - Matrix4f mat = new Matrix4f(); - - mat.a00 = (1.0f - s) * lumaR + s; - mat.a01 = (1.0f - s) * lumaR; - mat.a02 = (1.0f - s) * lumaR; - mat.a10 = (1.0f - s) * lumaG; - mat.a11 = (1.0f - s) * lumaG + s; - mat.a12 = (1.0f - s) * lumaG; - mat.a20 = (1.0f - s) * lumaB; - mat.a21 = (1.0f - s) * lumaB; - mat.a22 = (1.0f - s) * lumaB + s; - - mat.a33 = 1; - - return mat; - } - - public static Matrix4f sepia(float amount) { - Matrix4f mat = new Matrix4f(); - - mat.a00 = (float) (0.393 + 0.607 * (1 - amount)); - mat.a10 = (float) (0.769 - 0.769 * (1 - amount)); - mat.a20 = (float) (0.189 - 0.189 * (1 - amount)); - mat.a01 = (float) (0.349 - 0.349 * (1 - amount)); - mat.a11 = (float) (0.686 + 0.314 * (1 - amount)); - mat.a21 = (float) (0.168 - 0.168 * (1 - amount)); - mat.a02 = (float) (0.272 - 0.272 * (1 - amount)); - mat.a12 = (float) (0.534 - 0.534 * (1 - amount)); - mat.a22 = (float) (0.131 + 0.869 * (1 - amount)); - - mat.a33 = 1; - - return mat; - } - - // https://stackoverflow.com/a/8510751 - public static Matrix4f hueShift(float rot) { - Matrix4f mat = new Matrix4f(); - - mat.loadIdentity(); - - float cosA = MathHelper.cos(AngleHelper.rad(rot)); - float sinA = MathHelper.sin(AngleHelper.rad(rot)); - mat.a00 = (float) (cosA + (1.0 - cosA) / 3.0); - mat.a01 = (float) (1. / 3. * (1.0 - cosA) - MathHelper.sqrt(1. / 3.) * sinA); - mat.a02 = (float) (1. / 3. * (1.0 - cosA) + MathHelper.sqrt(1. / 3.) * sinA); - mat.a10 = (float) (1. / 3. * (1.0 - cosA) + MathHelper.sqrt(1. / 3.) * sinA); - mat.a11 = (float) (cosA + 1. / 3. * (1.0 - cosA)); - mat.a12 = (float) (1. / 3. * (1.0 - cosA) - MathHelper.sqrt(1. / 3.) * sinA); - mat.a20 = (float) (1. / 3. * (1.0 - cosA) - MathHelper.sqrt(1. / 3.) * sinA); - mat.a21 = (float) (1. / 3. * (1.0 - cosA) + MathHelper.sqrt(1. / 3.) * sinA); - mat.a22 = (float) (cosA + 1. / 3. * (1.0 - cosA)); - - return mat; - } - - public static Matrix4f darken(float amount) { - Matrix4f mat = new Matrix4f(); - mat.loadIdentity(); - mat.multiply(1f - amount); - return mat; - } - - public static Matrix4f brightness(float amount) { - Matrix4f mat = new Matrix4f(); - mat.loadIdentity(); - mat.a03 = amount; - mat.a13 = amount; - mat.a23 = amount; - return mat; - } - - public static Matrix4f contrast(float amount) { - Matrix4f sub = new Matrix4f(); - sub.a00 = amount; - sub.a11 = amount; - sub.a22 = amount; - sub.a33 = 1; - sub.a30 = 0.5f - amount * 0.5f; - sub.a31 = 0.5f - amount * 0.5f; - sub.a32 = 0.5f - amount * 0.5f; - - return sub; - } - - public static Matrix4f identity() { - Matrix4f mat = new Matrix4f(); - mat.loadIdentity(); - return mat; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/effects/EffectsContext.java b/src/main/java/com/simibubi/create/foundation/render/effects/EffectsContext.java deleted file mode 100644 index 1967b49d5..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/effects/EffectsContext.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.simibubi.create.foundation.render.effects; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.backend.ShaderContext; -import com.jozufozu.flywheel.backend.gl.shader.ShaderType; -import com.jozufozu.flywheel.backend.loading.Shader; -import com.jozufozu.flywheel.core.shader.spec.ProgramSpec; -import com.simibubi.create.foundation.render.AllProgramSpecs; - -import net.minecraft.util.ResourceLocation; - -public class EffectsContext extends ShaderContext { - - public EffectsContext(Backend backend) { - super(backend); - } - - @Override - public void load() { - ProgramSpec programSpec = Backend.getInstance().getSpec(AllProgramSpecs.CHROMATIC); - - try { - programs.put(programSpec.name, new SphereFilterProgram(loadAndLink(programSpec, null))); - - Backend.log.debug("Loaded program {}", programSpec.name); - } catch (Exception e) { - Backend.log.error("Program '{}': {}", programSpec.name, e); - backend.sources.notifyError(); - } - } - - @Override - protected Shader getSource(ShaderType type, ResourceLocation name) { - Shader source = super.getSource(type, name); - source.processIncludes(); - return source; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/effects/EffectsHandler.java b/src/main/java/com/simibubi/create/foundation/render/effects/EffectsHandler.java deleted file mode 100644 index 41ce02740..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/effects/EffectsHandler.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.simibubi.create.foundation.render.effects; - -import java.util.ArrayList; - -import javax.annotation.Nullable; - -import org.lwjgl.opengl.GL11; -import org.lwjgl.opengl.GL20; -import org.lwjgl.opengl.GL30; - -import com.jozufozu.flywheel.backend.Backend; -import com.jozufozu.flywheel.core.FullscreenQuad; -import com.jozufozu.flywheel.util.RenderUtil; -import com.simibubi.create.foundation.render.AllProgramSpecs; -import com.simibubi.create.foundation.render.CreateContexts; -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.shader.Framebuffer; -import net.minecraft.client.shader.FramebufferConstants; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector3d; - -public class EffectsHandler { - - private static EffectsHandler instance; - - @Nullable - public static EffectsHandler getInstance() { - if (Backend.getInstance().available() && instance == null) { - instance = new EffectsHandler(Backend.getInstance()); - } - - if (!Backend.getInstance().available() && instance != null) { - instance.delete(); - instance = null; - } - - return instance; - } - - public static float getNearPlane() { - return 0.05f; - } - - public static float getFarPlane() { - return Minecraft.getInstance().gameRenderer.getFarPlaneDistance() * 4; - } - - private final Backend backend; - private final Framebuffer framebuffer; - private final ArrayList spheres; - - public EffectsHandler(Backend backend) { - this.backend = backend; - spheres = new ArrayList<>(); - - Framebuffer render = Minecraft.getInstance().getFramebuffer(); - framebuffer = new Framebuffer(render.framebufferWidth, render.framebufferHeight, false, Minecraft.IS_RUNNING_ON_MAC); - - } - - public void addSphere(FilterSphere sphere) { - this.spheres.add(sphere); - } - - public void render(Matrix4f view) { - if (spheres.size() == 0) { - return; - } - - GL20.glEnable(GL20.GL_DEPTH_TEST); - - GL20.glDepthRange(getNearPlane(), getFarPlane()); - - prepFramebufferSize(); - - Framebuffer mainBuffer = Minecraft.getInstance().getFramebuffer(); - - backend.compat.fbo.bindFramebuffer(FramebufferConstants.FRAME_BUFFER, framebuffer.framebufferObject); - GL11.glClear(GL30.GL_COLOR_BUFFER_BIT); - - SphereFilterProgram program = CreateContexts.EFFECTS.getProgram(AllProgramSpecs.CHROMATIC); - program.bind(); - - program.bindColorTexture(mainBuffer.getColorAttachment()); - program.bindDepthTexture(mainBuffer.getDepthAttachment()); - - GameRenderer gameRenderer = Minecraft.getInstance().gameRenderer; - ActiveRenderInfo activeRenderInfo = gameRenderer.getActiveRenderInfo(); - Matrix4f projection = gameRenderer.getBasicProjectionMatrix(activeRenderInfo, AnimationTickHolder.getPartialTicks(), true); - projection.a33 = 1; - projection.invert(); - program.bindInverseProjection(projection); - - Matrix4f inverseView = view.copy(); - inverseView.invert(); - program.bindInverseView(inverseView); - - Vector3d cameraPos = activeRenderInfo.getProjectedView(); - - program.setCameraPos(cameraPos.inverse()); - - for (FilterSphere sphere : spheres) { - sphere.x -= cameraPos.x; - sphere.y -= cameraPos.y; - sphere.z -= cameraPos.z; - } - - spheres.sort((o1, o2) -> { - double l1 = RenderUtil.length(o1.x, o1.y, o1.z); - double l2 = RenderUtil.length(o2.x, o2.y, o2.z); - return (int) Math.signum(l2 - l1); - }); - - program.uploadFilters(spheres); - - program.setFarPlane(getFarPlane()); - program.setNearPlane(getNearPlane()); - - FullscreenQuad.INSTANCE.get().draw(); - - program.bindColorTexture(0); - program.bindDepthTexture(0); - GL20.glActiveTexture(GL20.GL_TEXTURE0); - - program.unbind(); - spheres.clear(); - - backend.compat.fbo.bindFramebuffer(GL30.GL_READ_FRAMEBUFFER, framebuffer.framebufferObject); - backend.compat.fbo.bindFramebuffer(GL30.GL_DRAW_FRAMEBUFFER, mainBuffer.framebufferObject); - backend.compat.blit.blitFramebuffer(0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, 0, 0, mainBuffer.framebufferWidth, mainBuffer.framebufferHeight, GL30.GL_COLOR_BUFFER_BIT, GL20.GL_LINEAR); - backend.compat.fbo.bindFramebuffer(FramebufferConstants.FRAME_BUFFER, mainBuffer.framebufferObject); - } - - public void delete() { - framebuffer.deleteFramebuffer(); - } - - private void prepFramebufferSize() { - MainWindow window = Minecraft.getInstance().getWindow(); - if (framebuffer.framebufferWidth != window.getFramebufferWidth() - || framebuffer.framebufferHeight != window.getFramebufferHeight()) { - framebuffer.func_216491_a(window.getFramebufferWidth(), window.getFramebufferHeight(), - Minecraft.IS_RUNNING_ON_MAC); - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/effects/FilterSphere.java b/src/main/java/com/simibubi/create/foundation/render/effects/FilterSphere.java deleted file mode 100644 index 6c9546aef..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/effects/FilterSphere.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.foundation.render.effects; - -import com.jozufozu.flywheel.backend.gl.buffer.MappedBuffer; -import com.jozufozu.flywheel.util.RenderUtil; - -import net.minecraft.util.math.vector.Matrix4f; - -public class FilterSphere { - public float x; - public float y; - public float z; - public float radius; - - public float feather; - public float fade; - public float density = 2; - public boolean blend = false; - - public boolean surface = true; - public boolean field = true; - public float strength = 1; - - public boolean rMask; - public boolean gMask; - public boolean bMask; - - public Matrix4f filter; - - public void write(MappedBuffer buf) { - buf.putFloatArray(new float[]{ - x, - y, - z, - radius, - - feather, - fade, - density, - blend ? 1 : 0, - - surface ? 1 : 0, - field ? 1 : 0, - Math.abs(strength), - strength < 0 ? 1 : 0, - - rMask ? 1 : 0, - gMask ? 1 : 0, - bMask ? 1 : 0, - 0, // padding - }); - - buf.putFloatArray(RenderUtil.writeMatrix(filter)); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/render/effects/SphereFilterProgram.java b/src/main/java/com/simibubi/create/foundation/render/effects/SphereFilterProgram.java deleted file mode 100644 index 3b69fa5db..000000000 --- a/src/main/java/com/simibubi/create/foundation/render/effects/SphereFilterProgram.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.simibubi.create.foundation.render.effects; - -import java.util.ArrayList; - -import org.lwjgl.opengl.GL20; -import org.lwjgl.opengl.GL31; - -import com.jozufozu.flywheel.backend.gl.buffer.GlBuffer; -import com.jozufozu.flywheel.backend.gl.buffer.GlBufferType; -import com.jozufozu.flywheel.backend.gl.buffer.MappedBuffer; -import com.jozufozu.flywheel.backend.gl.shader.GlProgram; -import com.jozufozu.flywheel.backend.loading.Program; -import com.jozufozu.flywheel.core.shader.IMultiProgram; - -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector3d; - -public class SphereFilterProgram extends GlProgram implements IMultiProgram { - - protected static final int UBO_BINDING = 4; - - protected static final int SPHERE_FILTER_SIZE = 24 * 4; // - protected static final int MAX_FILTERS = 256; // arbitrary - - protected static final int EXTRA_INFO = 16; // array length: int + padding - protected static final int ALL_FILTERS_SIZE = MAX_FILTERS * SPHERE_FILTER_SIZE; - - protected static final int BUFFER_SIZE = EXTRA_INFO + ALL_FILTERS_SIZE; - - public final GlBuffer effectsUBO; - - protected final int uniformBlock; - - protected final int uDepth; - protected final int uColor; - - protected final int uInverseProjection; - protected final int uInverseView; - - protected final int uNearPlane; - protected final int uFarPlane; - - protected final int uCameraPos; - - public SphereFilterProgram(Program program) { - super(program); - - effectsUBO = new GlBuffer(GlBufferType.UNIFORM_BUFFER); - - uniformBlock = GL31.glGetUniformBlockIndex(program.program, "Filters"); - - GL31.glUniformBlockBinding(program.program, uniformBlock, UBO_BINDING); - - effectsUBO.bind(); - effectsUBO.alloc(BUFFER_SIZE); - GL31.glBindBufferBase(effectsUBO.getBufferTarget().glEnum, UBO_BINDING, effectsUBO.handle()); - effectsUBO.unbind(); - - uInverseProjection = getUniformLocation("uInverseProjection"); - uInverseView = getUniformLocation("uInverseView"); - uNearPlane = getUniformLocation("uNearPlane"); - uFarPlane = getUniformLocation("uFarPlane"); - uCameraPos = getUniformLocation("uCameraPos"); - - bind(); - uDepth = setSamplerBinding("uDepth", 8); - uColor = setSamplerBinding("uColor", 9); - unbind(); - } - - public void setNearPlane(float nearPlane) { - GL20.glUniform1f(uNearPlane, nearPlane); - } - - public void setFarPlane(float farPlane) { - GL20.glUniform1f(uFarPlane, farPlane); - } - - public void setCameraPos(Vector3d pos) { - GL20.glUniform3f(uCameraPos, (float) pos.x, (float) pos.y, (float) pos.z); - } - - public void uploadFilters(ArrayList filters) { - effectsUBO.bind(); - MappedBuffer buffer = effectsUBO.getBuffer(0, BUFFER_SIZE) - .putInt(filters.size()) - .position(16); - - filters.forEach(it -> it.write(buffer)); - - buffer.flush(); - - effectsUBO.unbind(); - } - - public void bindInverseProjection(Matrix4f mat) { - uploadMatrixUniform(uInverseProjection, mat); - } - - public void bindInverseView(Matrix4f mat) { - uploadMatrixUniform(uInverseView, mat); - } - - public void bindDepthTexture(int textureObject) { - GL20.glActiveTexture(GL20.GL_TEXTURE8); - GL20.glBindTexture(GL20.GL_TEXTURE_2D, textureObject); - } - - public void bindColorTexture(int textureObject) { - GL20.glActiveTexture(GL20.GL_TEXTURE9); - GL20.glBindTexture(GL20.GL_TEXTURE_2D, textureObject); - } - - @Override - public SphereFilterProgram get() { - return this; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/renderState/RenderTypes.java b/src/main/java/com/simibubi/create/foundation/renderState/RenderTypes.java deleted file mode 100644 index 41cc284bd..000000000 --- a/src/main/java/com/simibubi/create/foundation/renderState/RenderTypes.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.simibubi.create.foundation.renderState; - -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.AllSpecialTextures; - -import net.minecraft.client.renderer.RenderState; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.util.ResourceLocation; - -public class RenderTypes extends RenderState { - - protected static final RenderState.CullState DISABLE_CULLING = new NoCullState(); - - public static RenderType getOutlineTranslucent(ResourceLocation texture, boolean cull) { - RenderType.State rendertype$state = RenderType.State.builder() - .texture(new RenderState.TextureState(texture, false, false)) - .transparency(TRANSLUCENT_TRANSPARENCY) - .diffuseLighting(ENABLE_DIFFUSE_LIGHTING) - .alpha(ONE_TENTH_ALPHA) - .cull(cull ? ENABLE_CULLING : DISABLE_CULLING) - .lightmap(ENABLE_LIGHTMAP) - .overlay(ENABLE_OVERLAY_COLOR) - .build(true); - return RenderType.of("outline_translucent" + (cull ? "_cull" : ""), - DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, true, rendertype$state); - } - - private static final RenderType OUTLINE_SOLID = - RenderType.of("outline_solid", DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, - false, RenderType.State.builder() - .texture(new RenderState.TextureState(AllSpecialTextures.BLANK.getLocation(), false, false)) - .transparency(NO_TRANSPARENCY) - .diffuseLighting(ENABLE_DIFFUSE_LIGHTING) - .lightmap(ENABLE_LIGHTMAP) - .overlay(ENABLE_OVERLAY_COLOR) - .build(true)); - - public static RenderType getGlowingSolid(ResourceLocation texture) { - RenderType.State rendertype$state = RenderType.State.builder() - .texture(new RenderState.TextureState(texture, false, false)) - .transparency(NO_TRANSPARENCY) - .diffuseLighting(DISABLE_DIFFUSE_LIGHTING) - .lightmap(ENABLE_LIGHTMAP) - .overlay(ENABLE_OVERLAY_COLOR) - .build(true); - return RenderType.of("glowing_solid", DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, - true, false, rendertype$state); - } - - public static RenderType getGlowingTranslucent(ResourceLocation texture) { - RenderType.State rendertype$state = RenderType.State.builder() - .texture(new RenderState.TextureState(texture, false, false)) - .transparency(TRANSLUCENT_TRANSPARENCY) - .diffuseLighting(DISABLE_DIFFUSE_LIGHTING) - .alpha(ONE_TENTH_ALPHA) - .cull(DISABLE_CULLING) - .lightmap(ENABLE_LIGHTMAP) - .overlay(ENABLE_OVERLAY_COLOR) - .build(true); - return RenderType.of("glowing_translucent", DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, - 256, true, true, rendertype$state); - } - - private static final RenderType GLOWING_SOLID = RenderTypes.getGlowingSolid(PlayerContainer.BLOCK_ATLAS_TEXTURE); - private static final RenderType GLOWING_TRANSLUCENT = - RenderTypes.getGlowingTranslucent(PlayerContainer.BLOCK_ATLAS_TEXTURE); - - private static final RenderType ITEM_PARTIAL_SOLID = - RenderType.of("item_solid", DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, - false, RenderType.State.builder() - .texture(new RenderState.TextureState(PlayerContainer.BLOCK_ATLAS_TEXTURE, false, false)) - .transparency(NO_TRANSPARENCY) - .diffuseLighting(ENABLE_DIFFUSE_LIGHTING) - .lightmap(ENABLE_LIGHTMAP) - .overlay(ENABLE_OVERLAY_COLOR) - .build(true)); - - private static final RenderType ITEM_PARTIAL_TRANSLUCENT = RenderType.of("entity_translucent", - DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, true, RenderType.State.builder() - .texture(new RenderState.TextureState(PlayerContainer.BLOCK_ATLAS_TEXTURE, false, false)) - .transparency(TRANSLUCENT_TRANSPARENCY) - .diffuseLighting(ENABLE_DIFFUSE_LIGHTING) - .alpha(ONE_TENTH_ALPHA) - .cull(ENABLE_CULLING) - .lightmap(ENABLE_LIGHTMAP) - .overlay(ENABLE_OVERLAY_COLOR) - .build(true)); - - public static RenderType getItemPartialSolid() { - return ITEM_PARTIAL_SOLID; - } - - public static RenderType getItemPartialTranslucent() { - return ITEM_PARTIAL_TRANSLUCENT; - } - - public static RenderType getOutlineSolid() { - return OUTLINE_SOLID; - } - - public static RenderType getGlowingSolid() { - return GLOWING_SOLID; - } - - public static RenderType getGlowingTranslucent() { - return GLOWING_TRANSLUCENT; - } - - protected static class NoCullState extends RenderState.CullState { - public NoCullState() { - super(false); - } - - @Override - public void startDrawing() { - RenderSystem.disableCull(); - } - } - - // Mmm gimme those protected fields - public RenderTypes() { - super(null, null, null); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/renderState/SuperRenderTypeBuffer.java b/src/main/java/com/simibubi/create/foundation/renderState/SuperRenderTypeBuffer.java deleted file mode 100644 index 8cc83176a..000000000 --- a/src/main/java/com/simibubi/create/foundation/renderState/SuperRenderTypeBuffer.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.simibubi.create.foundation.renderState; - -import java.util.SortedMap; - -import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.IVertexBuilder; - -import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; -import net.minecraft.client.renderer.Atlases; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RegionRenderCacheBuilder; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.model.ModelBakery; -import net.minecraft.util.Util; - -public class SuperRenderTypeBuffer implements IRenderTypeBuffer { - - static SuperRenderTypeBuffer instance; - - public static SuperRenderTypeBuffer getInstance() { - if (instance == null) - instance = new SuperRenderTypeBuffer(); - return instance; - } - - SuperRenderTypeBufferPhase earlyBuffer; - SuperRenderTypeBufferPhase defaultBuffer; - SuperRenderTypeBufferPhase lateBuffer; - - public SuperRenderTypeBuffer() { - earlyBuffer = new SuperRenderTypeBufferPhase(); - defaultBuffer = new SuperRenderTypeBufferPhase(); - lateBuffer = new SuperRenderTypeBufferPhase(); - } - - public IVertexBuilder getEarlyBuffer(RenderType type) { - return earlyBuffer.getBuffer(type); - } - - @Override - public IVertexBuilder getBuffer(RenderType type) { - return defaultBuffer.getBuffer(type); - } - - public IVertexBuilder getLateBuffer(RenderType type) { - return lateBuffer.getBuffer(type); - } - - public void draw() { - RenderSystem.disableCull(); - earlyBuffer.draw(); - defaultBuffer.draw(); - lateBuffer.draw(); - } - - public void draw(RenderType type) { - RenderSystem.disableCull(); - earlyBuffer.draw(type); - defaultBuffer.draw(type); - lateBuffer.draw(type); - } - - private static class SuperRenderTypeBufferPhase extends IRenderTypeBuffer.Impl { - - // Visible clones from net.minecraft.client.renderer.RenderTypeBuffers - static final RegionRenderCacheBuilder blockBuilders = new RegionRenderCacheBuilder(); - - static final SortedMap createEntityBuilders() { - return Util.make(new Object2ObjectLinkedOpenHashMap<>(), (map) -> { - map.put(Atlases.getEntitySolid(), blockBuilders.get(RenderType.getSolid())); - assign(map, RenderTypes.getOutlineSolid()); - map.put(Atlases.getEntityCutout(), blockBuilders.get(RenderType.getCutout())); - map.put(Atlases.getBannerPatterns(), blockBuilders.get(RenderType.getCutoutMipped())); - map.put(Atlases.getEntityTranslucentCull(), blockBuilders.get(RenderType.getTranslucent())); // FIXME new equivalent of getEntityTranslucent() ? - assign(map, Atlases.getShieldPatterns()); - assign(map, Atlases.getBeds()); - assign(map, Atlases.getShulkerBoxes()); - assign(map, Atlases.getSign()); - assign(map, Atlases.getChest()); - assign(map, RenderType.getTranslucentNoCrumbling()); - assign(map, RenderType.getGlint()); - assign(map, RenderType.getEntityGlint()); - assign(map, RenderType.getWaterMask()); - ModelBakery.BLOCK_DESTRUCTION_RENDER_LAYERS.forEach((p_228488_1_) -> { - assign(map, p_228488_1_); - }); - }); - } - - private static void assign(Object2ObjectLinkedOpenHashMap map, RenderType type) { - map.put(type, new BufferBuilder(type.getExpectedBufferSize())); - } - - protected SuperRenderTypeBufferPhase() { - super(new BufferBuilder(256), createEntityBuilders()); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/sound/ContinuousSound.java b/src/main/java/com/simibubi/create/foundation/sound/ContinuousSound.java deleted file mode 100644 index 6055b26db..000000000 --- a/src/main/java/com/simibubi/create/foundation/sound/ContinuousSound.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.simibubi.create.foundation.sound; - -import net.minecraft.client.audio.TickableSound; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; - -public class ContinuousSound extends TickableSound { - - private float sharedPitch; - private SoundScape scape; - private float relativeVolume; - - protected ContinuousSound(SoundEvent event, SoundScape scape, float sharedPitch, float relativeVolume) { - super(event, SoundCategory.AMBIENT); - this.scape = scape; - this.sharedPitch = sharedPitch; - this.relativeVolume = relativeVolume; - this.repeat = true; - this.repeatDelay = 0; - this.global = false; - } - - public void remove() { - setDone(); - } - - @Override - public float getVolume() { - return scape.getVolume() * relativeVolume; - } - - @Override - public float getPitch() { - return sharedPitch; - } - - @Override - public double getX() { - return scape.getMeanPos().x; - } - - @Override - public double getY() { - return scape.getMeanPos().y; - } - - @Override - public double getZ() { - return scape.getMeanPos().z; - } - - @Override - public void tick() {} - -} diff --git a/src/main/java/com/simibubi/create/foundation/sound/RepeatingSound.java b/src/main/java/com/simibubi/create/foundation/sound/RepeatingSound.java deleted file mode 100644 index 0c8d4c97e..000000000 --- a/src/main/java/com/simibubi/create/foundation/sound/RepeatingSound.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.simibubi.create.foundation.sound; - -import com.simibubi.create.foundation.utility.AnimationTickHolder; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.vector.Vector3d; - -public class RepeatingSound { - - private SoundEvent event; - private float sharedPitch; - private int repeatDelay; - private SoundScape scape; - private float relativeVolume; - - public RepeatingSound(SoundEvent event, SoundScape scape, float sharedPitch, float relativeVolume, - int repeatDelay) { - this.event = event; - this.scape = scape; - this.sharedPitch = sharedPitch; - this.relativeVolume = relativeVolume; - this.repeatDelay = Math.max(1, repeatDelay); - } - - public void tick() { - if (AnimationTickHolder.getTicks() % repeatDelay != 0) - return; - - ClientWorld world = Minecraft.getInstance().world; - Vector3d meanPos = scape.getMeanPos(); - - world.playSound(meanPos.x, meanPos.y, meanPos.z, event, SoundCategory.AMBIENT, - scape.getVolume() * relativeVolume, sharedPitch, true); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/sound/SoundScape.java b/src/main/java/com/simibubi/create/foundation/sound/SoundScape.java deleted file mode 100644 index 96ea0b8d9..000000000 --- a/src/main/java/com/simibubi/create/foundation/sound/SoundScape.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.simibubi.create.foundation.sound; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.foundation.sound.SoundScapes.AmbienceGroup; -import com.simibubi.create.foundation.sound.SoundScapes.PitchGroup; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -class SoundScape { - List continuous; - List repeating; - private float pitch; - private AmbienceGroup group; - private Vector3d meanPos; - private PitchGroup pitchGroup; - - public SoundScape(float pitch, AmbienceGroup group) { - this.pitchGroup = SoundScapes.getGroupFromPitch(pitch); - this.pitch = pitch; - this.group = group; - continuous = new ArrayList<>(); - repeating = new ArrayList<>(); - } - - public SoundScape continuous(SoundEvent sound, float relativeVolume, float relativePitch) { - return add(new ContinuousSound(sound, this, pitch * relativePitch, relativeVolume)); - } - - public SoundScape repeating(SoundEvent sound, float relativeVolume, float relativePitch, int delay) { - return add(new RepeatingSound(sound, this, pitch * relativePitch, relativeVolume, delay)); - } - - public SoundScape add(ContinuousSound continuousSound) { - continuous.add(continuousSound); - return this; - } - - public SoundScape add(RepeatingSound repeatingSound) { - repeating.add(repeatingSound); - return this; - } - - public void play() { - continuous.forEach(Minecraft.getInstance() - .getSoundHandler()::play); - } - - public void tick() { - if (AnimationTickHolder.getTicks() % SoundScapes.UPDATE_INTERVAL == 0) - meanPos = null; - repeating.forEach(RepeatingSound::tick); - } - - public void remove() { - continuous.forEach(ContinuousSound::remove); - } - - public Vector3d getMeanPos() { - return meanPos == null ? meanPos = determineMeanPos() : meanPos; - } - - private Vector3d determineMeanPos() { - meanPos = Vector3d.ZERO; - int amount = 0; - for (BlockPos blockPos : SoundScapes.getAllLocations(group, pitchGroup)) { - meanPos = meanPos.add(VecHelper.getCenterOf(blockPos)); - amount++; - } - if (amount == 0) - return meanPos; - return meanPos.scale(1f / amount); - } - - public float getVolume() { - Entity renderViewEntity = Minecraft.getInstance().renderViewEntity; - float distanceMultiplier = 0; - if (renderViewEntity != null) { - double distanceTo = renderViewEntity.getPositionVec() - .distanceTo(getMeanPos()); - distanceMultiplier = (float) MathHelper.lerp(distanceTo / SoundScapes.MAX_AMBIENT_SOURCE_DISTANCE, 2, 0); - } - int soundCount = SoundScapes.getSoundCount(group, pitchGroup); - float argMax = (float) SoundScapes.SOUND_VOLUME_ARG_MAX; - return MathHelper.clamp(soundCount / (argMax * 10f), 0.025f, .15f) * distanceMultiplier; - } - -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/foundation/sound/SoundScapes.java b/src/main/java/com/simibubi/create/foundation/sound/SoundScapes.java deleted file mode 100644 index 6c78d965a..000000000 --- a/src/main/java/com/simibubi/create/foundation/sound/SoundScapes.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.simibubi.create.foundation.sound; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.IdentityHashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.function.BiFunction; - -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; - -public class SoundScapes { - - static final int MAX_AMBIENT_SOURCE_DISTANCE = 16; - static final int UPDATE_INTERVAL = 5; - static final int SOUND_VOLUME_ARG_MAX = 15; - - public enum AmbienceGroup { - - KINETIC(SoundScapes::kinetic), - COG(SoundScapes::cogwheel), - - SAW((p, g) -> new SoundScape(p, g).repeating(AllSoundEvents.SAW_IDLE.getMainEvent(), 1f, .95f, 1)) - - ; - - private BiFunction factory; - - private AmbienceGroup(BiFunction factory) { - this.factory = factory; - } - - public SoundScape instantiate(float pitch) { - return factory.apply(pitch, this); - } - - } - - private static SoundScape kinetic(float pitch, AmbienceGroup group) { - return new SoundScape(pitch, group).continuous(SoundEvents.ENTITY_MINECART_INSIDE, .25f, 1); - } - - private static SoundScape cogwheel(float pitch, AmbienceGroup group) { - return new SoundScape(pitch, group).continuous(AllSoundEvents.COGS.getMainEvent(), 1.5f, 1); - } - - enum PitchGroup { - VERY_LOW, LOW, NORMAL, HIGH, VERY_HIGH - } - - private static Map>> counter = new IdentityHashMap<>(); - private static Map, SoundScape> activeSounds = new HashMap<>(); - - public static void play(AmbienceGroup group, BlockPos pos, float pitch) { - if (!outOfRange(pos)) - addSound(group, pos, pitch); - } - - public static void tick() { - activeSounds.values() - .forEach(SoundScape::tick); - - if (AnimationTickHolder.getTicks() % UPDATE_INTERVAL != 0) - return; - - for (Iterator, SoundScape>> iterator = activeSounds.entrySet() - .iterator(); iterator.hasNext();) { - - Entry, SoundScape> entry = iterator.next(); - Pair key = entry.getKey(); - SoundScape value = entry.getValue(); - - if (getSoundCount(key.getFirst(), key.getSecond()) == 0) { - value.remove(); - iterator.remove(); - } - } - - counter.values() - .forEach(m -> m.values() - .forEach(Set::clear)); - } - - private static void addSound(AmbienceGroup group, BlockPos pos, float pitch) { - PitchGroup groupFromPitch = getGroupFromPitch(pitch); - Set set = counter.computeIfAbsent(group, ag -> new IdentityHashMap<>()) - .computeIfAbsent(groupFromPitch, pg -> new HashSet<>()); - set.add(pos); - - Pair pair = Pair.of(group, groupFromPitch); - activeSounds.computeIfAbsent(pair, $ -> { - SoundScape soundScape = group.instantiate(pitch); - soundScape.play(); - return soundScape; - }); - } - - public static void clean() { - BlockPos playerLocation = getCameraPos(); - for (Map> map : counter.values()) - for (Set set : map.values()) - set.removeIf(p -> !playerLocation.withinDistance(p, MAX_AMBIENT_SOURCE_DISTANCE)); - } - - protected static boolean outOfRange(BlockPos pos) { - return !getCameraPos().withinDistance(pos, MAX_AMBIENT_SOURCE_DISTANCE); - } - - protected static BlockPos getCameraPos() { - Entity renderViewEntity = Minecraft.getInstance().renderViewEntity; - if (renderViewEntity == null) - return BlockPos.ZERO; - BlockPos playerLocation = renderViewEntity.getBlockPos(); - return playerLocation; - } - - public static int getSoundCount(AmbienceGroup group, PitchGroup pitchGroup) { - return getAllLocations(group, pitchGroup).size(); - } - - public static Set getAllLocations(AmbienceGroup group, PitchGroup pitchGroup) { - return counter.getOrDefault(group, Collections.emptyMap()) - .getOrDefault(pitchGroup, Collections.emptySet()); - } - - public static PitchGroup getGroupFromPitch(float pitch) { - if (pitch < .70) - return PitchGroup.VERY_LOW; - if (pitch < .90) - return PitchGroup.LOW; - if (pitch < 1.10) - return PitchGroup.NORMAL; - if (pitch < 1.30) - return PitchGroup.HIGH; - return PitchGroup.VERY_HIGH; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/ComparatorUtil.java b/src/main/java/com/simibubi/create/foundation/tileEntity/ComparatorUtil.java deleted file mode 100644 index e35593b63..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/ComparatorUtil.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.foundation.tileEntity; - -import com.simibubi.create.foundation.fluid.SmartFluidTank; -import com.simibubi.create.foundation.tileEntity.behaviour.fluid.SmartFluidTankBehaviour; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.IBlockReader; - -public class ComparatorUtil { - - public static int fractionToRedstoneLevel(double frac) { - return MathHelper.floor(MathHelper.clamp(frac * 14 + (frac > 0 ? 1 : 0), 0, 15)); - } - - public static int levelOfSmartFluidTank(IBlockReader world, BlockPos pos) { - SmartFluidTankBehaviour fluidBehaviour = TileEntityBehaviour.get(world, pos, SmartFluidTankBehaviour.TYPE); - if (fluidBehaviour == null) - return 0; - SmartFluidTank primaryHandler = fluidBehaviour.getPrimaryHandler(); - double fillFraction = (double) primaryHandler.getFluid() - .getAmount() / primaryHandler.getCapacity(); - return fractionToRedstoneLevel(fillFraction); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java deleted file mode 100644 index f3dfc18f0..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/SmartTileEntity.java +++ /dev/null @@ -1,204 +0,0 @@ -package com.simibubi.create.foundation.tileEntity; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.utility.IPartialSafeNBT; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.ITickableTileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.items.CapabilityItemHandler; - -public abstract class SmartTileEntity extends SyncedTileEntity implements ITickableTileEntity, IPartialSafeNBT { - - private final Map, TileEntityBehaviour> behaviours; - // Internally maintained to be identical to behaviorMap.values() in order to improve iteration performance. - private final List behaviourList; - private boolean initialized; - private boolean firstNbtRead; - private int lazyTickRate; - private int lazyTickCounter; - - // Used for simulating this TE in a client-only setting - private boolean virtualMode; - - public SmartTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - behaviours = new HashMap<>(); - initialized = false; - firstNbtRead = true; - setLazyTickRate(10); - - ArrayList list = new ArrayList<>(); - addBehaviours(list); - list.forEach(b -> behaviours.put(b.getType(), b)); - - behaviourList = new ArrayList<>(list.size()); - updateBehaviorList(); - } - - public abstract void addBehaviours(List behaviours); - - /** - * Gets called just before reading tile data for behaviours. Register anything - * here that depends on your custom te data. - */ - public void addBehavioursDeferred(List behaviours) {} - - @Override - public void tick() { - if (!initialized && hasWorld()) { - initialize(); - initialized = true; - } - - if (lazyTickCounter-- <= 0) { - lazyTickCounter = lazyTickRate; - lazyTick(); - } - - behaviourList.forEach(TileEntityBehaviour::tick); - } - - public void initialize() { - behaviourList.forEach(TileEntityBehaviour::initialize); - lazyTick(); - } - - @Override - public final CompoundNBT write(CompoundNBT compound) { - write(compound, false); - return compound; - } - - @Override - public final CompoundNBT writeToClient(CompoundNBT compound) { - write(compound, true); - return compound; - } - - @Override - public final void readClientUpdate(BlockState state, CompoundNBT tag) { - fromTag(state, tag, true); - } - - @Override - public final void fromTag(BlockState state, CompoundNBT tag) { - fromTag(state, tag, false); - } - - /** - * Hook only these in future subclasses of STE - */ - protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { - if (firstNbtRead) { - firstNbtRead = false; - ArrayList list = new ArrayList<>(); - addBehavioursDeferred(list); - list.forEach(b -> behaviours.put(b.getType(), b)); - - updateBehaviorList(); - } - super.fromTag(state, compound); - behaviourList.forEach(tb -> tb.read(compound, clientPacket)); - } - - /** - * Hook only these in future subclasses of STE - */ - protected void write(CompoundNBT compound, boolean clientPacket) { - super.write(compound); - behaviourList.forEach(tb -> tb.write(compound, clientPacket)); - } - - @Override - public void writeSafe(CompoundNBT compound, boolean clientPacket) { - super.write(compound); - behaviourList.forEach(tb -> { - if (tb.isSafeNBT()) - tb.write(compound, clientPacket); - }); - } - - public ItemRequirement getRequiredItems() { - return behaviourList.stream().reduce( - ItemRequirement.NONE, - (a, b) -> a.with(b.getRequiredItems()), - (a, b) -> a.with(b) - ); - } - - @Override - public void remove() { - forEachBehaviour(TileEntityBehaviour::remove); - super.remove(); - } - - public void setLazyTickRate(int slowTickRate) { - this.lazyTickRate = slowTickRate; - this.lazyTickCounter = slowTickRate; - } - - public void lazyTick() { - - } - - protected void forEachBehaviour(Consumer action) { - behaviourList.forEach(action); - } - - protected void attachBehaviourLate(TileEntityBehaviour behaviour) { - behaviours.put(behaviour.getType(), behaviour); - behaviour.initialize(); - - updateBehaviorList(); - } - - protected void removeBehaviour(BehaviourType type) { - TileEntityBehaviour remove = behaviours.remove(type); - if (remove != null) { - remove.remove(); - updateBehaviorList(); - } - } - - // We don't trust the input to the API will be sane, so we - // update all the contents whenever something changes. It's - // simpler than trying to manipulate the list one element at - // a time. - private void updateBehaviorList() { - behaviourList.clear(); - behaviourList.addAll(behaviours.values()); - } - - @SuppressWarnings("unchecked") - public T getBehaviour(BehaviourType type) { - return (T) behaviours.get(type); - } - - protected boolean isItemHandlerCap(Capability cap) { - return cap == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY; - } - - protected boolean isFluidHandlerCap(Capability cap) { - return cap == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY; - } - - public void markVirtual() { - virtualMode = true; - } - - public boolean isVirtual() { - return virtualMode; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/SyncedTileEntity.java b/src/main/java/com/simibubi/create/foundation/tileEntity/SyncedTileEntity.java deleted file mode 100644 index 2c8929358..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/SyncedTileEntity.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.simibubi.create.foundation.tileEntity; - -import javax.annotation.ParametersAreNonnullByDefault; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.NetworkManager; -import net.minecraft.network.play.server.SUpdateTileEntityPacket; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.math.SectionPos; -import net.minecraft.world.chunk.Chunk; -import net.minecraftforge.fml.network.PacketDistributor; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public abstract class SyncedTileEntity extends TileEntity { - - public SyncedTileEntity(TileEntityType tileEntityTypeIn) { - super(tileEntityTypeIn); - } - - @Override - public CompoundNBT getTileData() { - return super.getTileData(); - } - - @Override - public CompoundNBT getUpdateTag() { - return write(new CompoundNBT()); - } - - @Override - public void handleUpdateTag(BlockState state, CompoundNBT tag) { - fromTag(state, tag); - } - - public void sendData() { - if (world != null) - world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 2 | 4 | 16); - } - - public void causeBlockUpdate() { - if (world != null) - world.notifyBlockUpdate(getPos(), getBlockState(), getBlockState(), 1); - } - - @Override - public SUpdateTileEntityPacket getUpdatePacket() { - return new SUpdateTileEntityPacket(getPos(), 1, writeToClient(new CompoundNBT())); - } - - @Override - public void onDataPacket(NetworkManager net, SUpdateTileEntityPacket pkt) { - readClientUpdate(getBlockState(), pkt.getNbtCompound()); - } - - // Special handling for client update packets - public void readClientUpdate(BlockState state, CompoundNBT tag) { - fromTag(state, tag); - } - - // Special handling for client update packets - public CompoundNBT writeToClient(CompoundNBT tag) { - return write(tag); - } - - public void notifyUpdate() { - markDirty(); - sendData(); - } - - public PacketDistributor.PacketTarget packetTarget() { - return PacketDistributor.TRACKING_CHUNK.with(this::containedChunk); - } - - public Chunk containedChunk() { - SectionPos sectionPos = SectionPos.from(pos); - return world.getChunk(sectionPos.getSectionX(), sectionPos.getSectionZ()); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java deleted file mode 100644 index 4f0588e55..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/TileEntityBehaviour.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.simibubi.create.foundation.tileEntity; - -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public abstract class TileEntityBehaviour { - - public SmartTileEntity tileEntity; - private int lazyTickRate; - private int lazyTickCounter; - - public TileEntityBehaviour(SmartTileEntity te) { - tileEntity = te; - setLazyTickRate(10); - } - - public abstract BehaviourType getType(); - - public void initialize() { - - } - - public void tick() { - if (lazyTickCounter-- <= 0) { - lazyTickCounter = lazyTickRate; - lazyTick(); - } - - } - - public void read(CompoundNBT nbt, boolean clientPacket) { - - } - - public void write(CompoundNBT nbt, boolean clientPacket) { - - } - - public boolean isSafeNBT() { - return false; - } - - public ItemRequirement getRequiredItems() { - return ItemRequirement.NONE; - } - - public void onBlockChanged(BlockState oldState) { - - } - - public void onNeighborChanged(BlockPos neighborPos) { - - } - - public void remove() { - - } - - public void destroy() { - - } - - public void setLazyTickRate(int slowTickRate) { - this.lazyTickRate = slowTickRate; - this.lazyTickCounter = slowTickRate; - } - - public void lazyTick() { - - } - - public BlockPos getPos() { - return tileEntity.getPos(); - } - - public World getWorld() { - return tileEntity.getWorld(); - } - - public static T get(IBlockReader reader, BlockPos pos, BehaviourType type) { - return get(reader.getTileEntity(pos), type); - } - - public static void destroy(IBlockReader reader, BlockPos pos, - BehaviourType type) { - T behaviour = get(reader.getTileEntity(pos), type); - if (behaviour != null) - behaviour.destroy(); - } - - public static T get(TileEntity te, BehaviourType type) { - if (te == null) - return null; - if (!(te instanceof SmartTileEntity)) - return null; - SmartTileEntity ste = (SmartTileEntity) te; - return ste.getBehaviour(type); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/BehaviourType.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/BehaviourType.java deleted file mode 100644 index d9fc571a8..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/BehaviourType.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour; - -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; - -public class BehaviourType { - - private String name; - - public BehaviourType(String name) { - this.name = name; - } - - public BehaviourType() { - this(""); - } - - public String getName() { - return name; - } - - @Override - public int hashCode() { - return super.hashCode() * 31 * 493286711; // Better hash table distribution - } -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/CenteredSideValueBoxTransform.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/CenteredSideValueBoxTransform.java deleted file mode 100644 index 4f3a8720c..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/CenteredSideValueBoxTransform.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour; - -import java.util.function.BiPredicate; - -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; - -public class CenteredSideValueBoxTransform extends ValueBoxTransform.Sided { - - private BiPredicate allowedDirections; - - public CenteredSideValueBoxTransform() { - this((b, d) -> true); - } - - public CenteredSideValueBoxTransform(BiPredicate allowedDirections) { - this.allowedDirections = allowedDirections; - } - - @Override - protected Vector3d getSouthLocation() { - return VecHelper.voxelSpace(8, 8, 16); - } - - @Override - protected boolean isSideActive(BlockState state, Direction direction) { - return allowedDirections.test(state, direction); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java deleted file mode 100644 index a81df38bb..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBox.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.foundation.gui.AllIcons; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.outliner.ChasingAABBOutline; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class ValueBox extends ChasingAABBOutline { - - protected ITextComponent label; - protected ITextComponent sublabel = StringTextComponent.EMPTY; - protected ITextComponent scrollTooltip = StringTextComponent.EMPTY; - protected Vector3d labelOffset = Vector3d.ZERO; - - protected int passiveColor; - protected int highlightColor; - public boolean isPassive; - - protected BlockPos pos; - protected ValueBoxTransform transform; - protected BlockState blockState; - - public ValueBox(ITextComponent label, AxisAlignedBB bb, BlockPos pos) { - super(bb); - this.label = label; - this.pos = pos; - this.blockState = Minecraft.getInstance().world.getBlockState(pos); - } - - public ValueBox transform(ValueBoxTransform transform) { - this.transform = transform; - return this; - } - - public ValueBox offsetLabel(Vector3d offset) { - this.labelOffset = offset; - return this; - } - - public ValueBox subLabel(ITextComponent sublabel) { - this.sublabel = sublabel; - return this; - } - - public ValueBox scrollTooltip(ITextComponent scrollTip) { - this.scrollTooltip = scrollTip; - return this; - } - - public ValueBox withColors(int passive, int highlight) { - this.passiveColor = passive; - this.highlightColor = highlight; - return this; - } - - public ValueBox passive(boolean passive) { - this.isPassive = passive; - return this; - } - - @Override - public void render(MatrixStack ms, SuperRenderTypeBuffer buffer, float pt) { - boolean hasTransform = transform != null; - if (transform instanceof Sided && params.getHighlightedFace() != null) - ((Sided) transform).fromSide(params.getHighlightedFace()); - if (hasTransform && !transform.shouldRender(blockState)) - return; - - ms.push(); - ms.translate(pos.getX(), pos.getY(), pos.getZ()); - if (hasTransform) - transform.transform(blockState, ms); - transformNormals = ms.peek() - .getNormal() - .copy(); - params.colored(isPassive ? passiveColor : highlightColor); - super.render(ms, buffer, pt); - - float fontScale = hasTransform ? -transform.getFontScale() : -1 / 64f; - ms.scale(fontScale, fontScale, fontScale); - - ms.push(); - renderContents(ms, buffer); - ms.pop(); - - if (!isPassive) { - ms.push(); - ms.translate(17.5, -.5, 7); - ms.translate(labelOffset.x, labelOffset.y, labelOffset.z); - - renderHoveringText(ms, buffer, label); - if (!sublabel.toString().isEmpty()) { - ms.translate(0, 10, 0); - renderHoveringText(ms, buffer, sublabel); - } - if (!scrollTooltip.getUnformattedComponentText().isEmpty()) { - ms.translate(0, 10, 0); - renderHoveringText(ms, buffer, scrollTooltip, 0x998899, 0x111111); - } - - ms.pop(); - } - - ms.pop(); - } - - public void renderContents(MatrixStack ms, IRenderTypeBuffer buffer) {} - - public static class ItemValueBox extends ValueBox { - ItemStack stack; - int count; - - public ItemValueBox(ITextComponent label, AxisAlignedBB bb, BlockPos pos, ItemStack stack, int count) { - super(label, bb, pos); - this.stack = stack; - this.count = count; - } - - @Override - public void renderContents(MatrixStack ms, IRenderTypeBuffer buffer) { - super.renderContents(ms, buffer); - FontRenderer font = Minecraft.getInstance().fontRenderer; - ITextComponent countString = new StringTextComponent(count == 0 ? "*" : count + ""); - ms.translate(17.5f, -5f, 7f); - - boolean isFilter = stack.getItem() instanceof FilterItem; - boolean isEmpty = stack.isEmpty(); - float scale = 1.5f; - ms.translate(-font.getWidth(countString), 0, 0); - - if (isFilter) - ms.translate(3, 8, 7.25f); - else if (isEmpty) { - ms.translate(-17, -2, 3f); - scale = 2f; - } - else - ms.translate(-7, 10, 10 + 1 / 4f); - - ms.scale(scale, scale, scale); - drawString(ms, buffer, countString, 0, 0, isFilter ? 0xFFFFFF : 0xEDEDED); - ms.translate(0, 0, -1 / 16f); - drawString(ms, buffer, countString, 1 - 1 / 8f, 1 - 1 / 8f, 0x4F4F4F); - } - - } - - public static class TextValueBox extends ValueBox { - ITextComponent text; - - public TextValueBox(ITextComponent label, AxisAlignedBB bb, BlockPos pos, ITextComponent text) { - super(label, bb, pos); - this.text = text; - } - - @Override - public void renderContents(MatrixStack ms, IRenderTypeBuffer buffer) { - super.renderContents(ms, buffer); - FontRenderer font = Minecraft.getInstance().fontRenderer; - float scale = 4; - ms.scale(scale, scale, 1); - ms.translate(-4, -4, 5); - - int stringWidth = font.getWidth(text); - float numberScale = (float) font.FONT_HEIGHT / stringWidth; - boolean singleDigit = stringWidth < 10; - if (singleDigit) - numberScale = numberScale / 2; - float verticalMargin = (stringWidth - font.FONT_HEIGHT) / 2f; - - ms.scale(numberScale, numberScale, numberScale); - ms.translate(singleDigit ? stringWidth / 2 : 0, singleDigit ? -verticalMargin : verticalMargin, 0); - - renderHoveringText(ms, buffer, text, 0xEDEDED, 0x4f4f4f); - } - - } - - public static class IconValueBox extends ValueBox { - AllIcons icon; - - public IconValueBox(ITextComponent label, INamedIconOptions iconValue, AxisAlignedBB bb, BlockPos pos) { - super(label, bb, pos); - subLabel(Lang.translate(iconValue.getTranslationKey())); - icon = iconValue.getIcon(); - } - - @Override - public void renderContents(MatrixStack ms, IRenderTypeBuffer buffer) { - super.renderContents(ms, buffer); - float scale = 4 * 16; - ms.scale(scale, scale, scale); - ms.translate(-.5f, -.5f, 1 / 32f); - icon.draw(ms, buffer, 0xFFFFFF); - } - - } - - // util - - protected void renderHoveringText(MatrixStack ms, IRenderTypeBuffer buffer, ITextComponent text) { - renderHoveringText(ms, buffer, text, highlightColor, ColorHelper.mixColors(passiveColor, 0, 0.75f)); - } - - protected void renderHoveringText(MatrixStack ms, IRenderTypeBuffer buffer, ITextComponent text, int color, - int shadowColor) { - ms.push(); - drawString(ms, buffer, text, 0, 0, color); - ms.translate(0, 0, -.25); - drawString(ms, buffer, text, 1, 1, shadowColor); - ms.pop(); - } - - private static void drawString(MatrixStack ms, IRenderTypeBuffer buffer, ITextComponent text, float x, float y, int color) { - Minecraft.getInstance().fontRenderer.draw(text, x, y, color, false, ms.peek() - .getModel(), buffer, false, 0, 15728880); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java deleted file mode 100644 index fd37abb2a..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxRenderer.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.content.contraptions.relays.elementary.AbstractShaftBlock; -import com.simibubi.create.content.logistics.item.filter.FilterItem; - -import net.minecraft.block.Block; -import net.minecraft.block.Blocks; -import net.minecraft.block.FenceBlock; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tags.BlockTags; - -public class ValueBoxRenderer { - - public static void renderItemIntoValueBox(ItemStack filter, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); - IBakedModel modelWithOverrides = itemRenderer.getItemModelWithOverrides(filter, Minecraft.getInstance().world, null); - boolean blockItem = modelWithOverrides.isGui3d(); - float scale = (!blockItem ? .5f : 1f) - 1 / 64f; - float zOffset = (!blockItem ? -.225f : 0) + customZOffset(filter.getItem()); - ms.scale(scale, scale, scale); - ms.translate(0, 0, zOffset); - itemRenderer.renderItem(filter, TransformType.FIXED, light, overlay, ms, buffer); - } - - private static float customZOffset(Item item) { - float NUDGE = -.1f; - if (item instanceof FilterItem) - return NUDGE; - if (item instanceof BlockItem) { - Block block = ((BlockItem) item).getBlock(); - if (block instanceof AbstractShaftBlock) - return NUDGE; - if (block instanceof FenceBlock) - return NUDGE; - if (block.isIn(BlockTags.BUTTONS)) - return NUDGE; - if (block == Blocks.END_ROD) - return NUDGE; - } - return 0; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java deleted file mode 100644 index 0d74f4e52..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/ValueBoxTransform.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour; - -import java.util.function.Function; - -import org.apache.commons.lang3.tuple.Pair; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.block.material.Material; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.vector.Vector3d; - -public abstract class ValueBoxTransform { - - protected float scale = getScale(); - - protected abstract Vector3d getLocalOffset(BlockState state); - - protected abstract void rotate(BlockState state, MatrixStack ms); - - public boolean testHit(BlockState state, Vector3d localHit) { - Vector3d offset = getLocalOffset(state); - if (offset == null) - return false; - return localHit.distanceTo(offset) < scale / 2; - } - - public void transform(BlockState state, MatrixStack ms) { - Vector3d position = getLocalOffset(state); - if (position == null) - return; - ms.translate(position.x, position.y, position.z); - rotate(state, ms); - ms.scale(scale, scale, scale); - } - - public boolean shouldRender(BlockState state) { - return state.getMaterial() != Material.AIR && getLocalOffset(state) != null; - } - - protected Vector3d rotateHorizontally(BlockState state, Vector3d vec) { - float yRot = 0; - if (state.contains(BlockStateProperties.FACING)) - yRot = AngleHelper.horizontalAngle(state.get(BlockStateProperties.FACING)); - if (state.contains(BlockStateProperties.HORIZONTAL_FACING)) - yRot = AngleHelper.horizontalAngle(state.get(BlockStateProperties.HORIZONTAL_FACING)); - return VecHelper.rotateCentered(vec, yRot, Axis.Y); - } - - protected float getScale() { - return .4f; - } - - protected float getFontScale() { - return 1 / 64f; - } - - public static abstract class Dual extends ValueBoxTransform { - - protected boolean first; - - public Dual(boolean first) { - this.first = first; - } - - public boolean isFirst() { - return first; - } - - public static Pair makeSlots(Function factory) { - return Pair.of(factory.apply(true), factory.apply(false)); - } - - public boolean testHit(BlockState state, Vector3d localHit) { - Vector3d offset = getLocalOffset(state); - if (offset == null) - return false; - return localHit.distanceTo(offset) < scale / 3.5f; - } - - } - - public static abstract class Sided extends ValueBoxTransform { - - protected Direction direction = Direction.UP; - - public Sided fromSide(Direction direction) { - this.direction = direction; - return this; - } - - @Override - protected Vector3d getLocalOffset(BlockState state) { - Vector3d location = getSouthLocation(); - location = VecHelper.rotateCentered(location, AngleHelper.horizontalAngle(getSide()), Axis.Y); - location = VecHelper.rotateCentered(location, AngleHelper.verticalAngle(getSide()), Axis.Z); - return location; - } - - protected abstract Vector3d getSouthLocation(); - - @Override - protected void rotate(BlockState state, MatrixStack ms) { - float yRot = AngleHelper.horizontalAngle(getSide()) + 180; - float xRot = getSide() == Direction.UP ? 90 : getSide() == Direction.DOWN ? 270 : 0; - MatrixStacker.of(ms) - .rotateY(yRot) - .rotateX(xRot); - } - - @Override - public boolean shouldRender(BlockState state) { - return super.shouldRender(state) && isSideActive(state, getSide()); - } - - @Override - public boolean testHit(BlockState state, Vector3d localHit) { - return isSideActive(state, getSide()) && super.testHit(state, localHit); - } - - protected boolean isSideActive(BlockState state, Direction direction) { - return true; - } - - public Direction getSide() { - return direction; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java deleted file mode 100644 index 8725bce5d..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/BeltProcessingBehaviour.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.belt; - -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.content.logistics.block.funnel.AbstractFunnelBlock; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; - -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; - -/** - * Behaviour for TileEntities which can process items on belts or depots beneath - * them. Currently only supports placement location 2 spaces above the belt - * block. Example use: Mechanical Press - */ -public class BeltProcessingBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - - public static enum ProcessingResult { - PASS, HOLD, REMOVE; - } - - private ProcessingCallback onItemEnter; - private ProcessingCallback continueProcessing; - - public BeltProcessingBehaviour(SmartTileEntity te) { - super(te); - onItemEnter = (s, i) -> ProcessingResult.PASS; - continueProcessing = (s, i) -> ProcessingResult.PASS; - } - - public BeltProcessingBehaviour whenItemEnters(ProcessingCallback callback) { - onItemEnter = callback; - return this; - } - - public BeltProcessingBehaviour whileItemHeld(ProcessingCallback callback) { - continueProcessing = callback; - return this; - } - - public static boolean isBlocked(IBlockReader world, BlockPos processingSpace) { - BlockState blockState = world.getBlockState(processingSpace.up()); - if (AbstractFunnelBlock.isFunnel(blockState)) - return false; - return !blockState.getCollisionShape(world, processingSpace.up()) - .isEmpty(); - } - - @Override - public BehaviourType getType() { - return TYPE; - } - - public ProcessingResult handleReceivedItem(TransportedItemStack stack, - TransportedItemStackHandlerBehaviour inventory) { - return onItemEnter.apply(stack, inventory); - } - - public ProcessingResult handleHeldItem(TransportedItemStack stack, TransportedItemStackHandlerBehaviour inventory) { - return continueProcessing.apply(stack, inventory); - } - - @FunctionalInterface - public interface ProcessingCallback { - public ProcessingResult apply(TransportedItemStack stack, TransportedItemStackHandlerBehaviour inventory); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/DirectBeltInputBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/DirectBeltInputBehaviour.java deleted file mode 100644 index 823568969..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/DirectBeltInputBehaviour.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.belt; - -import java.util.function.Supplier; - -import javax.annotation.Nullable; - -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.BeltFunnelBlock.Shape; -import com.simibubi.create.content.logistics.block.funnel.FunnelBlock; -import com.simibubi.create.content.logistics.block.funnel.FunnelTileEntity; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemHandlerHelper; - -/** - * Behaviour for TileEntities to which belts can transfer items directly in a - * backup-friendly manner. Example uses: Basin, Saw, Depot - */ -public class DirectBeltInputBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - - private InsertionCallback tryInsert; - private AvailabilityPredicate canInsert; - private Supplier supportsBeltFunnels; - - public DirectBeltInputBehaviour(SmartTileEntity te) { - super(te); - tryInsert = this::defaultInsertionCallback; - canInsert = d -> true; - supportsBeltFunnels = () -> false; - } - - public DirectBeltInputBehaviour allowingBeltFunnelsWhen(Supplier pred) { - supportsBeltFunnels = pred; - return this; - } - - public DirectBeltInputBehaviour allowingBeltFunnels() { - supportsBeltFunnels = () -> true; - return this; - } - - public DirectBeltInputBehaviour onlyInsertWhen(AvailabilityPredicate pred) { - canInsert = pred; - return this; - } - - public DirectBeltInputBehaviour setInsertionHandler(InsertionCallback callback) { - tryInsert = callback; - return this; - } - - private ItemStack defaultInsertionCallback(TransportedItemStack inserted, Direction side, boolean simulate) { - LazyOptional lazy = tileEntity.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side); - if (!lazy.isPresent()) - return inserted.stack; - return ItemHandlerHelper.insertItemStacked(lazy.orElse(null), inserted.stack.copy(), simulate); - } - - public boolean canInsertFromSide(Direction side) { - return canInsert.test(side); - } - - public ItemStack handleInsertion(ItemStack stack, Direction side, boolean simulate) { - return handleInsertion(new TransportedItemStack(stack), side, simulate); - } - - public ItemStack handleInsertion(TransportedItemStack stack, Direction side, boolean simulate) { - return tryInsert.apply(stack, side, simulate); - } - - @Override - public BehaviourType getType() { - return TYPE; - } - - @FunctionalInterface - public interface InsertionCallback { - public ItemStack apply(TransportedItemStack stack, Direction side, boolean simulate); - } - - @FunctionalInterface - public interface AvailabilityPredicate { - public boolean test(Direction side); - } - - @Nullable - public ItemStack tryExportingToBeltFunnel(ItemStack stack, @Nullable Direction side, boolean simulate) { - BlockPos funnelPos = tileEntity.getPos() - .up(); - World world = getWorld(); - BlockState funnelState = world.getBlockState(funnelPos); - if (!(funnelState.getBlock() instanceof BeltFunnelBlock)) - return null; - if (funnelState.get(BeltFunnelBlock.SHAPE) != Shape.PULLING) - return null; - if (side != null && FunnelBlock.getFunnelFacing(funnelState) != side) - return null; - TileEntity te = world.getTileEntity(funnelPos); - if (!(te instanceof FunnelTileEntity)) - return null; - if (funnelState.get(BeltFunnelBlock.POWERED)) - return stack; - ItemStack insert = FunnelBlock.tryInsert(world, funnelPos, stack, simulate); - if (insert.getCount() != stack.getCount() && !simulate) - ((FunnelTileEntity) te).flap(true); - return insert; - } - - public boolean canSupportBeltFunnels() { - return supportsBeltFunnels.get(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java deleted file mode 100644 index 56fcc5c91..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/belt/TransportedItemStackHandlerBehaviour.java +++ /dev/null @@ -1,134 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.belt; - -import java.util.List; -import java.util.function.Function; - -import javax.annotation.Nullable; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.content.contraptions.relays.belt.transport.TransportedItemStack; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.vector.Vector3d; - -public class TransportedItemStackHandlerBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - private ProcessingCallback processingCallback; - private PositionGetter positionGetter; - - public static class TransportedResult { - List outputs; - TransportedItemStack heldOutput; - - private static final TransportedResult DO_NOTHING = new TransportedResult(null, null); - private static final TransportedResult REMOVE_ITEM = new TransportedResult(ImmutableList.of(), null); - - public static TransportedResult doNothing() { - return DO_NOTHING; - } - - public static TransportedResult removeItem() { - return REMOVE_ITEM; - } - - public static TransportedResult convertTo(TransportedItemStack output) { - return new TransportedResult(ImmutableList.of(output), null); - } - - public static TransportedResult convertTo(List outputs) { - return new TransportedResult(outputs, null); - } - - public static TransportedResult convertToAndLeaveHeld(List outputs, - TransportedItemStack heldOutput) { - return new TransportedResult(outputs, heldOutput); - } - - private TransportedResult(List outputs, TransportedItemStack heldOutput) { - this.outputs = outputs; - this.heldOutput = heldOutput; - } - - public boolean doesNothing() { - return outputs == null; - } - - public boolean didntChangeFrom(ItemStack stackBefore) { - return doesNothing() - || outputs.size() == 1 && outputs.get(0).stack.equals(stackBefore, false) && !hasHeldOutput(); - } - - public List getOutputs() { - if (outputs == null) - throw new IllegalStateException("Do not call getOutputs() on a Result that doesNothing()."); - return outputs; - } - - public boolean hasHeldOutput() { - return heldOutput != null; - } - - @Nullable - public TransportedItemStack getHeldOutput() { - if (heldOutput == null) - throw new IllegalStateException( - "Do not call getHeldOutput() on a Result with hasHeldOutput() == false."); - return heldOutput; - } - - } - - public TransportedItemStackHandlerBehaviour(SmartTileEntity te, ProcessingCallback processingCallback) { - super(te); - this.processingCallback = processingCallback; - positionGetter = t -> VecHelper.getCenterOf(te.getPos()); - } - - public TransportedItemStackHandlerBehaviour withStackPlacement(PositionGetter function) { - this.positionGetter = function; - return this; - } - - public void handleProcessingOnAllItems(Function processFunction) { - handleCenteredProcessingOnAllItems(.51f, processFunction); - } - - public void handleProcessingOnItem(TransportedItemStack item, TransportedResult processOutput) { - handleCenteredProcessingOnAllItems(.51f, t -> { - if (t == item) - return processOutput; - return null; - }); - } - - public void handleCenteredProcessingOnAllItems(float maxDistanceFromCenter, - Function processFunction) { - this.processingCallback.applyToAllItems(maxDistanceFromCenter, processFunction); - } - - public Vector3d getWorldPositionOf(TransportedItemStack transported) { - return positionGetter.getWorldPositionVector(transported); - } - - @Override - public BehaviourType getType() { - return TYPE; - } - - @FunctionalInterface - public interface ProcessingCallback { - public void applyToAllItems(float maxDistanceFromCenter, - Function processFunction); - } - - @FunctionalInterface - public interface PositionGetter { - public Vector3d getWorldPositionVector(TransportedItemStack transported); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionBehaviour.java deleted file mode 100644 index e4ca847e1..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionBehaviour.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.edgeInteraction; - -import java.util.Optional; - -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; - -import net.minecraft.item.Item; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class EdgeInteractionBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - - ConnectionCallback connectionCallback; - ConnectivityPredicate connectivityPredicate; - Optional requiredItem; - - public EdgeInteractionBehaviour(SmartTileEntity te, ConnectionCallback callback) { - super(te); - this.connectionCallback = callback; - requiredItem = Optional.empty(); - connectivityPredicate = (world, pos, face, face2) -> true; - } - - public EdgeInteractionBehaviour connectivity(ConnectivityPredicate pred) { - this.connectivityPredicate = pred; - return this; - } - - public EdgeInteractionBehaviour require(Item item) { - this.requiredItem = Optional.of(item); - return this; - } - - @Override - public BehaviourType getType() { - return TYPE; - } - - @FunctionalInterface - public interface ConnectionCallback { - public void apply(World world, BlockPos clicked, BlockPos neighbour); - } - - @FunctionalInterface - public interface ConnectivityPredicate { - public boolean test(World world, BlockPos pos, Direction selectedFace, Direction connectedFace); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionHandler.java deleted file mode 100644 index 82ca086b9..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionHandler.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.edgeInteraction; - -import java.util.ArrayList; -import java.util.List; - -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.RaycastHelper; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.LogicalSide; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class EdgeInteractionHandler { - - @SubscribeEvent - public static void onBlockActivated(PlayerInteractEvent.RightClickBlock event) { - World world = event.getWorld(); - BlockPos pos = event.getPos(); - PlayerEntity player = event.getPlayer(); - Hand hand = event.getHand(); - ItemStack heldItem = player.getHeldItem(hand); - - if (player.isSneaking() || player.isSpectator()) - return; - EdgeInteractionBehaviour behaviour = TileEntityBehaviour.get(world, pos, EdgeInteractionBehaviour.TYPE); - if (behaviour == null) - return; - BlockRayTraceResult ray = RaycastHelper.rayTraceRange(world, player, 10); - if (ray == null) - return; - if (behaviour.requiredItem.orElse(heldItem.getItem()) != heldItem.getItem()) - return; - - Direction activatedDirection = getActivatedDirection(world, pos, ray.getFace(), ray.getHitVec(), behaviour); - if (activatedDirection == null) - return; - - if (event.getSide() != LogicalSide.CLIENT) - behaviour.connectionCallback.apply(world, pos, pos.offset(activatedDirection)); - event.setCanceled(true); - event.setCancellationResult(ActionResultType.SUCCESS); - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.BLOCKS, .25f, .1f); - } - - public static List getConnectiveSides(World world, BlockPos pos, Direction face, - EdgeInteractionBehaviour behaviour) { - List sides = new ArrayList<>(6); - if (BlockHelper.hasBlockSolidSide(world.getBlockState(pos.offset(face)), world, pos.offset(face), face.getOpposite())) - return sides; - - for (Direction direction : Iterate.directions) { - if (direction.getAxis() == face.getAxis()) - continue; - BlockPos neighbourPos = pos.offset(direction); - if (BlockHelper.hasBlockSolidSide(world.getBlockState(neighbourPos.offset(face)), world, neighbourPos.offset(face), - face.getOpposite())) - continue; - if (!behaviour.connectivityPredicate.test(world, pos, face, direction)) - continue; - sides.add(direction); - } - - return sides; - } - - public static Direction getActivatedDirection(World world, BlockPos pos, Direction face, Vector3d hit, - EdgeInteractionBehaviour behaviour) { - for (Direction facing : getConnectiveSides(world, pos, face, behaviour)) { - AxisAlignedBB bb = getBB(pos, facing); - if (bb.contains(hit)) - return facing; - } - return null; - } - - static AxisAlignedBB getBB(BlockPos pos, Direction direction) { - AxisAlignedBB bb = new AxisAlignedBB(pos); - Vector3i vec = direction.getDirectionVec(); - int x = vec.getX(); - int y = vec.getY(); - int z = vec.getZ(); - double margin = 12 / 16f; - double absX = Math.abs(x) * margin; - double absY = Math.abs(y) * margin; - double absZ = Math.abs(z) * margin; - - bb = bb.contract(absX, absY, absZ); - bb = bb.offset(absX / 2d, absY / 2d, absZ / 2d); - bb = bb.offset(x / 2d, y / 2d, z / 2d); - bb = bb.grow(1 / 256f); - return bb; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java deleted file mode 100644 index 6cfcd227b..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/edgeInteraction/EdgeInteractionRenderer.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.edgeInteraction; - -import java.util.List; - -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.StringTextComponent; - -public class EdgeInteractionRenderer { - - public static void tick() { - Minecraft mc = Minecraft.getInstance(); - RayTraceResult target = mc.objectMouseOver; - if (target == null || !(target instanceof BlockRayTraceResult)) - return; - - BlockRayTraceResult result = (BlockRayTraceResult) target; - ClientWorld world = mc.world; - BlockPos pos = result.getPos(); - PlayerEntity player = mc.player; - ItemStack heldItem = player.getHeldItemMainhand(); - - if (player.isSneaking()) - return; - EdgeInteractionBehaviour behaviour = TileEntityBehaviour.get(world, pos, EdgeInteractionBehaviour.TYPE); - if (behaviour == null) - return; - if (behaviour.requiredItem.orElse(heldItem.getItem()) != heldItem.getItem()) - return; - - Direction face = result.getFace(); - List connectiveSides = EdgeInteractionHandler.getConnectiveSides(world, pos, face, behaviour); - if (connectiveSides.isEmpty()) - return; - - Direction closestEdge = connectiveSides.get(0); - double bestDistance = Double.MAX_VALUE; - Vector3d center = VecHelper.getCenterOf(pos); - for (Direction direction : connectiveSides) { - double distance = Vector3d.of(direction.getDirectionVec()).subtract(target.getHitVec() - .subtract(center)) - .length(); - if (distance > bestDistance) - continue; - bestDistance = distance; - closestEdge = direction; - } - - AxisAlignedBB bb = EdgeInteractionHandler.getBB(pos, closestEdge); - boolean hit = bb.contains(target.getHitVec()); - - ValueBox box = new ValueBox(StringTextComponent.EMPTY, bb.offset(-pos.getX(), -pos.getY(), -pos.getZ()), pos); - Vector3d textOffset = Vector3d.ZERO; - - boolean positive = closestEdge.getAxisDirection() == AxisDirection.POSITIVE; - if (positive) { - if (face.getAxis() - .isHorizontal()) { - if (closestEdge.getAxis() - .isVertical()) - textOffset = textOffset.add(0, -128, 0); - else - textOffset = textOffset.add(-128, 0, 0); - } else - textOffset = textOffset.add(-128, 0, 0); - } - - box.offsetLabel(textOffset) - .withColors(0x7A6A2C, 0xB79D64) - .passive(!hit); - - CreateClient.OUTLINER.showValueBox("edge", box) - .lineWidth(1 / 64f) - .withFaceTexture(hit ? AllSpecialTextures.THIN_CHECKERED : null) - .highlightFace(face); - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java deleted file mode 100644 index 1768fd0cd..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringBehaviour.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.filtering; - -import java.util.function.Consumer; -import java.util.function.Supplier; - -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.items.ItemHandlerHelper; - -public class FilteringBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - - ValueBoxTransform slotPositioning; - boolean showCount; - Vector3d textShift; - - private ItemStack filter; - public int count; - private Consumer callback; - private Supplier isActive; - private Supplier showCountPredicate; - - int scrollableValue; - int ticksUntilScrollPacket; - boolean forceClientState; - boolean recipeFilter; - boolean fluidFilter; - - public FilteringBehaviour(SmartTileEntity te, ValueBoxTransform slot) { - super(te); - filter = ItemStack.EMPTY; - slotPositioning = slot; - showCount = false; - callback = stack -> { - }; - isActive = () -> true; - textShift = Vector3d.ZERO; - count = 0; - ticksUntilScrollPacket = -1; - showCountPredicate = () -> showCount; - recipeFilter = false; - fluidFilter = false; - } - - @Override - public boolean isSafeNBT() { return true; } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - nbt.put("Filter", getFilter().serializeNBT()); - nbt.putInt("FilterAmount", count); - - if (clientPacket && forceClientState) { - nbt.putBoolean("ForceScrollable", true); - forceClientState = false; - } - super.write(nbt, clientPacket); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - filter = ItemStack.read(nbt.getCompound("Filter")); - count = nbt.getInt("FilterAmount"); - if (nbt.contains("ForceScrollable")) { - scrollableValue = count; - ticksUntilScrollPacket = -1; - } - super.read(nbt, clientPacket); - } - - @Override - public void tick() { - super.tick(); - - if (!getWorld().isRemote) - return; - if (ticksUntilScrollPacket == -1) - return; - if (ticksUntilScrollPacket > 0) { - ticksUntilScrollPacket--; - return; - } - - AllPackets.channel.sendToServer(new FilteringCountUpdatePacket(getPos(), scrollableValue)); - ticksUntilScrollPacket = -1; - } - - public FilteringBehaviour withCallback(Consumer filterCallback) { - callback = filterCallback; - return this; - } - - public FilteringBehaviour forRecipes() { - recipeFilter = true; - return this; - } - - public FilteringBehaviour forFluids() { - fluidFilter = true; - return this; - } - - public FilteringBehaviour onlyActiveWhen(Supplier condition) { - isActive = condition; - return this; - } - - public FilteringBehaviour showCountWhen(Supplier condition) { - showCountPredicate = condition; - return this; - } - - public FilteringBehaviour showCount() { - showCount = true; - return this; - } - - public FilteringBehaviour moveText(Vector3d shift) { - textShift = shift; - return this; - } - - @Override - public void initialize() { - super.initialize(); - scrollableValue = count; - } - - public void setFilter(Direction face, ItemStack stack) { - setFilter(stack); - } - - public void setFilter(ItemStack stack) { - boolean confirm = ItemHandlerHelper.canItemStacksStack(stack, filter); - filter = stack.copy(); - callback.accept(filter); - count = !confirm ? 0 - : (filter.getItem() instanceof FilterItem) ? 0 : Math.min(stack.getCount(), stack.getMaxStackSize()); - forceClientState = true; - - tileEntity.markDirty(); - tileEntity.sendData(); - } - - @Override - public void destroy() { - if (filter.getItem() instanceof FilterItem) { - Vector3d pos = VecHelper.getCenterOf(getPos()); - World world = getWorld(); - world.addEntity(new ItemEntity(world, pos.x, pos.y, pos.z, filter.copy())); - } - - super.destroy(); - } - - @Override - public ItemRequirement getRequiredItems() { - Item filterItem = filter.getItem(); - if (filterItem instanceof FilterItem) - return new ItemRequirement(ItemRequirement.ItemUseType.CONSUME, filterItem); - - return ItemRequirement.NONE; - } - - public ItemStack getFilter(Direction side) { - return getFilter(); - } - - public ItemStack getFilter() { - return filter.copy(); - } - - public boolean isCountVisible() { - return showCountPredicate.get(); - } - - public boolean test(ItemStack stack) { - return !isActive() || filter.isEmpty() || FilterItem.test(tileEntity.getWorld(), stack, filter); - } - - public boolean test(FluidStack stack) { - return !isActive() || filter.isEmpty() || FilterItem.test(tileEntity.getWorld(), stack, filter); - } - - @Override - public BehaviourType getType() { - return TYPE; - } - - public boolean testHit(Vector3d hit) { - BlockState state = tileEntity.getBlockState(); - Vector3d localHit = hit.subtract(Vector3d.of(tileEntity.getPos())); - return slotPositioning.testHit(state, localHit); - } - - public int getAmount() { - return count; - } - - public boolean anyAmount() { - return count == 0; - } - - public boolean isActive() { - return isActive.get(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringCountUpdatePacket.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringCountUpdatePacket.java deleted file mode 100644 index d6548d1e8..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringCountUpdatePacket.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.filtering; - -import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; - -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.BlockPos; - -public class FilteringCountUpdatePacket extends TileEntityConfigurationPacket { - - int amount; - - public FilteringCountUpdatePacket(PacketBuffer buffer) { - super(buffer); - } - - public FilteringCountUpdatePacket(BlockPos pos, int amount) { - super(pos); - this.amount = amount; - } - - @Override - protected void writeSettings(PacketBuffer buffer) { - buffer.writeInt(amount); - } - - @Override - protected void readSettings(PacketBuffer buffer) { - amount = buffer.readInt(); - } - - @Override - protected void applySettings(SmartTileEntity te) { - FilteringBehaviour behaviour = te.getBehaviour(FilteringBehaviour.TYPE); - if (behaviour == null) - return; - behaviour.forceClientState = true; - behaviour.count = amount; - te.markDirty(); - te.sendData(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java deleted file mode 100644 index cdce8445f..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringHandler.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.filtering; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.AllItems; -import com.simibubi.create.AllKeys; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.RaycastHelper; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.world.World; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.LogicalSide; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.items.ItemHandlerHelper; - -@EventBusSubscriber -public class FilteringHandler { - - @SubscribeEvent - public static void onBlockActivated(PlayerInteractEvent.RightClickBlock event) { - World world = event.getWorld(); - BlockPos pos = event.getPos(); - PlayerEntity player = event.getPlayer(); - Hand hand = event.getHand(); - - if (player.isSneaking() || player.isSpectator()) - return; - - FilteringBehaviour behaviour = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); - if (behaviour == null) - return; - - BlockRayTraceResult ray = RaycastHelper.rayTraceRange(world, player, 10); - if (ray == null) - return; - if (behaviour instanceof SidedFilteringBehaviour) { - behaviour = ((SidedFilteringBehaviour) behaviour).get(ray.getFace()); - if (behaviour == null) - return; - } - if (!behaviour.isActive()) - return; - if (behaviour.slotPositioning instanceof ValueBoxTransform.Sided) - ((Sided) behaviour.slotPositioning).fromSide(ray.getFace()); - if (!behaviour.testHit(ray.getHitVec())) - return; - - ItemStack toApply = player.getHeldItem(hand) - .copy(); - - if (AllItems.WRENCH.isIn(toApply)) - return; - if (AllBlocks.MECHANICAL_ARM.isIn(toApply)) - return; - - if (event.getSide() != LogicalSide.CLIENT) { - if (!player.isCreative()) { - if (toApply.getItem() instanceof FilterItem) - player.getHeldItem(hand) - .shrink(1); - if (behaviour.getFilter() - .getItem() instanceof FilterItem) - player.inventory.placeItemBackInInventory(world, behaviour.getFilter()); - } - if (toApply.getItem() instanceof FilterItem) - toApply.setCount(1); - behaviour.setFilter(toApply); - - } else { - ItemStack filter = behaviour.getFilter(); - String feedback = "apply_click_again"; - if (toApply.getItem() instanceof FilterItem || !behaviour.isCountVisible()) - feedback = "apply"; - else if (ItemHandlerHelper.canItemStacksStack(toApply, filter)) - feedback = "apply_count"; - String translationKey = world.getBlockState(pos) - .getBlock() - .getTranslationKey(); - ITextComponent formattedText = new TranslationTextComponent(translationKey); - player.sendStatusMessage(Lang.createTranslationTextComponent("logistics.filter." + feedback, formattedText) - .formatted(TextFormatting.WHITE), true); - } - - event.setCanceled(true); - event.setCancellationResult(ActionResultType.SUCCESS); - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.BLOCKS, .25f, .1f); - } - - @OnlyIn(Dist.CLIENT) - public static boolean onScroll(double delta) { - RayTraceResult objectMouseOver = Minecraft.getInstance().objectMouseOver; - if (!(objectMouseOver instanceof BlockRayTraceResult)) - return false; - - BlockRayTraceResult result = (BlockRayTraceResult) objectMouseOver; - Minecraft mc = Minecraft.getInstance(); - ClientWorld world = mc.world; - BlockPos blockPos = result.getPos(); - - FilteringBehaviour filtering = TileEntityBehaviour.get(world, blockPos, FilteringBehaviour.TYPE); - if (filtering == null) - return false; - if (mc.player.isSneaking()) - return false; - if (!mc.player.isAllowEdit()) - return false; - if (!filtering.isCountVisible()) - return false; - if (!filtering.isActive()) - return false; - if (filtering.slotPositioning instanceof ValueBoxTransform.Sided) - ((Sided) filtering.slotPositioning).fromSide(result.getFace()); - if (!filtering.testHit(objectMouseOver.getHitVec())) - return false; - - ItemStack filterItem = filtering.getFilter(); - filtering.ticksUntilScrollPacket = 10; - int maxAmount = (filterItem.getItem() instanceof FilterItem) ? 64 : filterItem.getMaxStackSize(); - int prev = filtering.scrollableValue; - filtering.scrollableValue = - (int) MathHelper.clamp(filtering.scrollableValue + delta * (AllKeys.ctrlDown() ? 16 : 1), 0, maxAmount); - - if (prev != filtering.scrollableValue) { - float pitch = (filtering.scrollableValue) / (float) (maxAmount); - pitch = MathHelper.lerp(pitch, 1.5f, 2f); - AllSoundEvents.SCROLL_VALUE.play(world, mc.player, blockPos, 1, pitch); - } - - return true; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java deleted file mode 100644 index e1d21eb6f..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/FilteringRenderer.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.filtering; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.CreateClient; -import com.simibubi.create.content.logistics.item.filter.FilterItem; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.ItemValueBox; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxRenderer; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; -import com.simibubi.create.foundation.utility.Pair; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class FilteringRenderer { - - public static void tick() { - Minecraft mc = Minecraft.getInstance(); - RayTraceResult target = mc.objectMouseOver; - if (target == null || !(target instanceof BlockRayTraceResult)) - return; - - BlockRayTraceResult result = (BlockRayTraceResult) target; - ClientWorld world = mc.world; - BlockPos pos = result.getPos(); - BlockState state = world.getBlockState(pos); - - FilteringBehaviour behaviour = TileEntityBehaviour.get(world, pos, FilteringBehaviour.TYPE); - if (mc.player.isSneaking()) - return; - if (behaviour == null) - return; - if (behaviour instanceof SidedFilteringBehaviour) { - behaviour = ((SidedFilteringBehaviour) behaviour).get(result.getFace()); - if (behaviour == null) - return; - } - if (!behaviour.isActive()) - return; - if (behaviour.slotPositioning instanceof ValueBoxTransform.Sided) - ((Sided) behaviour.slotPositioning).fromSide(result.getFace()); - if (!behaviour.slotPositioning.shouldRender(state)) - return; - - ItemStack filter = behaviour.getFilter(); - boolean isFilterSlotted = filter.getItem() instanceof FilterItem; - boolean showCount = behaviour.isCountVisible(); - boolean fluids = behaviour.fluidFilter; - ITextComponent label = isFilterSlotted ? StringTextComponent.EMPTY - : Lang.translate(behaviour.recipeFilter ? "logistics.recipe_filter" - : fluids ? "logistics.fluid_filter" : "logistics.filter"); - boolean hit = behaviour.slotPositioning.testHit(state, target.getHitVec() - .subtract(Vector3d.of(pos))); - - AxisAlignedBB emptyBB = new AxisAlignedBB(Vector3d.ZERO, Vector3d.ZERO); - AxisAlignedBB bb = isFilterSlotted ? emptyBB.grow(.45f, .31f, .2f) : emptyBB.grow(.25f); - - ValueBox box = showCount ? new ItemValueBox(label, bb, pos, filter, behaviour.scrollableValue) - : new ValueBox(label, bb, pos); - - box.offsetLabel(behaviour.textShift) - .withColors(fluids ? 0x407088 : 0x7A6A2C, fluids ? 0x70adb5 : 0xB79D64) - .scrollTooltip(showCount && !isFilterSlotted ? new StringTextComponent("[").append(Lang.translate("action.scroll")).append("]") : StringTextComponent.EMPTY) - .passive(!hit); - - CreateClient.OUTLINER.showValueBox(Pair.of("filter", pos), box.transform(behaviour.slotPositioning)) - .lineWidth(1 / 64f) - .withFaceTexture(hit ? AllSpecialTextures.THIN_CHECKERED : null) - .highlightFace(result.getFace()); - } - - public static void renderOnTileEntity(SmartTileEntity tileEntityIn, float partialTicks, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - - if (tileEntityIn == null || tileEntityIn.isRemoved()) - return; - FilteringBehaviour behaviour = tileEntityIn.getBehaviour(FilteringBehaviour.TYPE); - if (behaviour == null) - return; - if (!behaviour.isActive()) - return; - if (behaviour.getFilter() - .isEmpty() && !(behaviour instanceof SidedFilteringBehaviour)) - return; - - ValueBoxTransform slotPositioning = behaviour.slotPositioning; - BlockState blockState = tileEntityIn.getBlockState(); - - if (slotPositioning instanceof ValueBoxTransform.Sided) { - ValueBoxTransform.Sided sided = (ValueBoxTransform.Sided) slotPositioning; - Direction side = sided.getSide(); - for (Direction d : Iterate.directions) { - ItemStack filter = behaviour.getFilter(d); - if (filter.isEmpty()) - continue; - - sided.fromSide(d); - if (!slotPositioning.shouldRender(blockState)) - continue; - - ms.push(); - slotPositioning.transform(blockState, ms); - ValueBoxRenderer.renderItemIntoValueBox(filter, ms, buffer, light, overlay); - ms.pop(); - } - sided.fromSide(side); - return; - } else if (slotPositioning.shouldRender(blockState)) { - ms.push(); - slotPositioning.transform(blockState, ms); - ValueBoxRenderer.renderItemIntoValueBox(behaviour.getFilter(), ms, buffer, light, overlay); - ms.pop(); - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java deleted file mode 100644 index 28756ef0a..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/filtering/SidedFilteringBehaviour.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.filtering; - -import java.util.HashSet; -import java.util.IdentityHashMap; -import java.util.Map; -import java.util.Set; -import java.util.function.BiFunction; -import java.util.function.Predicate; - -import com.simibubi.create.content.schematics.ItemRequirement; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.NBTHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.common.util.Constants.NBT; - -public class SidedFilteringBehaviour extends FilteringBehaviour { - - Map sidedFilters; - private BiFunction filterFactory; - private Predicate validDirections; - - public SidedFilteringBehaviour(SmartTileEntity te, ValueBoxTransform.Sided sidedSlot, - BiFunction filterFactory, - Predicate validDirections) { - super(te, sidedSlot); - this.filterFactory = filterFactory; - this.validDirections = validDirections; - sidedFilters = new IdentityHashMap<>(); - updateFilterPresence(); - } - - @Override - public void initialize() { - super.initialize(); - } - - public FilteringBehaviour get(Direction side) { - return sidedFilters.get(side); - } - - public void updateFilterPresence() { - Set valid = new HashSet<>(); - for (Direction d : Iterate.directions) - if (validDirections.test(d)) - valid.add(d); - for (Direction d : Iterate.directions) - if (valid.contains(d)) { - if (!sidedFilters.containsKey(d)) - sidedFilters.put(d, filterFactory.apply(d, new FilteringBehaviour(tileEntity, slotPositioning))); - } else if (sidedFilters.containsKey(d)) - removeFilter(d); - } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - nbt.put("Filters", NBTHelper.writeCompoundList(sidedFilters.entrySet(), entry -> { - CompoundNBT compound = new CompoundNBT(); - compound.putInt("Side", entry.getKey() - .getIndex()); - entry.getValue() - .write(compound, clientPacket); - return compound; - })); - super.write(nbt, clientPacket); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - NBTHelper.iterateCompoundList(nbt.getList("Filters", NBT.TAG_COMPOUND), compound -> { - Direction face = Direction.byIndex(compound.getInt("Side")); - if (sidedFilters.containsKey(face)) - sidedFilters.get(face) - .read(compound, clientPacket); - }); - super.read(nbt, clientPacket); - } - - @Override - public void tick() { - super.tick(); - sidedFilters.values() - .forEach(FilteringBehaviour::tick); - } - - @Override - public void setFilter(Direction side, ItemStack stack) { - if (!sidedFilters.containsKey(side)) - return; - sidedFilters.get(side) - .setFilter(stack); - } - - @Override - public ItemStack getFilter(Direction side) { - if (!sidedFilters.containsKey(side)) - return ItemStack.EMPTY; - return sidedFilters.get(side) - .getFilter(); - } - - public boolean test(Direction side, ItemStack stack) { - if (!sidedFilters.containsKey(side)) - return true; - return sidedFilters.get(side) - .test(stack); - } - - @Override - public void destroy() { - sidedFilters.values() - .forEach(FilteringBehaviour::destroy); - super.destroy(); - } - - @Override - public ItemRequirement getRequiredItems() { - return sidedFilters.values().stream().reduce( - ItemRequirement.NONE, - (a, b) -> a.with(b.getRequiredItems()), - (a, b) -> a.with(b) - ); - } - - public void removeFilter(Direction side) { - if (!sidedFilters.containsKey(side)) - return; - sidedFilters.remove(side) - .destroy(); - } - - public boolean testHit(Direction direction, Vector3d hit) { - ValueBoxTransform.Sided sidedPositioning = (Sided) slotPositioning; - BlockState state = tileEntity.getBlockState(); - Vector3d localHit = hit.subtract(Vector3d.of(tileEntity.getPos())); - return sidedPositioning.fromSide(direction) - .testHit(state, localHit); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/fluid/SmartFluidTankBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/fluid/SmartFluidTankBehaviour.java deleted file mode 100644 index 05ddc710a..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/fluid/SmartFluidTankBehaviour.java +++ /dev/null @@ -1,292 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.fluid; - -import java.util.function.Consumer; - -import org.apache.commons.lang3.mutable.MutableInt; - -import com.simibubi.create.foundation.fluid.CombinedTankWrapper; -import com.simibubi.create.foundation.fluid.SmartFluidTank; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; -import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraftforge.common.util.Constants.NBT; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.IFluidHandler; - -public class SmartFluidTankBehaviour extends TileEntityBehaviour { - - public static BehaviourType - - TYPE = new BehaviourType<>(), INPUT = new BehaviourType<>("Input"), OUTPUT = new BehaviourType<>("Output"); - - private static final int SYNC_RATE = 8; - - protected int syncCooldown; - protected boolean queuedSync; - protected TankSegment[] tanks; - protected LazyOptional capability; - protected boolean extractionAllowed; - protected boolean insertionAllowed; - protected Runnable fluidUpdateCallback; - - private BehaviourType behaviourType; - - public static SmartFluidTankBehaviour single(SmartTileEntity te, int capacity) { - return new SmartFluidTankBehaviour(TYPE, te, 1, capacity, false); - } - - public SmartFluidTankBehaviour(BehaviourType type, SmartTileEntity te, int tanks, - int tankCapacity, boolean enforceVariety) { - super(te); - insertionAllowed = true; - extractionAllowed = true; - behaviourType = type; - this.tanks = new TankSegment[tanks]; - IFluidHandler[] handlers = new IFluidHandler[tanks]; - for (int i = 0; i < tanks; i++) { - TankSegment tankSegment = new TankSegment(tankCapacity); - this.tanks[i] = tankSegment; - handlers[i] = tankSegment.tank; - } - capability = LazyOptional.of(() -> new InternalFluidHandler(handlers, enforceVariety)); - fluidUpdateCallback = () -> { - }; - } - - public SmartFluidTankBehaviour whenFluidUpdates(Runnable fluidUpdateCallback) { - this.fluidUpdateCallback = fluidUpdateCallback; - return this; - } - - public SmartFluidTankBehaviour allowInsertion() { - insertionAllowed = true; - return this; - } - - public SmartFluidTankBehaviour allowExtraction() { - extractionAllowed = true; - return this; - } - - public SmartFluidTankBehaviour forbidInsertion() { - insertionAllowed = false; - return this; - } - - public SmartFluidTankBehaviour forbidExtraction() { - extractionAllowed = false; - return this; - } - - @Override - public void initialize() { - super.initialize(); - if (getWorld().isRemote) - return; - foreach(ts -> { - ts.fluidLevel.forceNextSync(); - ts.onFluidStackChanged(); - }); - } - - @Override - public void tick() { - super.tick(); - - if (syncCooldown > 0) { - syncCooldown--; - if (syncCooldown == 0 && queuedSync) - updateFluids(); - } - - foreach(te -> { - LerpedFloat fluidLevel = te.getFluidLevel(); - if (fluidLevel != null) - fluidLevel.tickChaser(); - }); - } - - public void sendDataImmediately() { - syncCooldown = 0; - queuedSync = false; - updateFluids(); - } - - public void sendDataLazily() { - if (syncCooldown > 0) { - queuedSync = true; - return; - } - updateFluids(); - queuedSync = false; - syncCooldown = SYNC_RATE; - } - - protected void updateFluids() { - fluidUpdateCallback.run(); - tileEntity.sendData(); - tileEntity.markDirty(); - } - - @Override - public void remove() { - super.remove(); - capability.invalidate(); - } - - public SmartFluidTank getPrimaryHandler() { - return getPrimaryTank().tank; - } - - public TankSegment getPrimaryTank() { - return tanks[0]; - } - - public TankSegment[] getTanks() { - return tanks; - } - - public boolean isEmpty() { - for (TankSegment tankSegment : tanks) - if (!tankSegment.tank.isEmpty()) - return false; - return true; - } - - public void foreach(Consumer action) { - for (TankSegment tankSegment : tanks) - action.accept(tankSegment); - } - - public LazyOptional getCapability() { - return capability; - } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - super.write(nbt, clientPacket); - ListNBT tanksNBT = new ListNBT(); - foreach(ts -> tanksNBT.add(ts.writeNBT())); - nbt.put(getType().getName() + "Tanks", tanksNBT); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - super.read(nbt, clientPacket); - MutableInt index = new MutableInt(0); - NBTHelper.iterateCompoundList(nbt.getList(getType().getName() + "Tanks", NBT.TAG_COMPOUND), c -> { - if (index.intValue() >= tanks.length) - return; - tanks[index.intValue()].readNBT(c, clientPacket); - index.increment(); - }); - } - - public class InternalFluidHandler extends CombinedTankWrapper { - - public InternalFluidHandler(IFluidHandler[] handlers, boolean enforceVariety) { - super(handlers); - if (enforceVariety) - enforceVariety(); - } - - @Override - public int fill(FluidStack resource, FluidAction action) { - if (!insertionAllowed) - return 0; - return super.fill(resource, action); - } - - public int forceFill(FluidStack resource, FluidAction action) { - return super.fill(resource, action); - } - - @Override - public FluidStack drain(FluidStack resource, FluidAction action) { - if (!extractionAllowed) - return FluidStack.EMPTY; - return super.drain(resource, action); - } - - @Override - public FluidStack drain(int maxDrain, FluidAction action) { - if (!extractionAllowed) - return FluidStack.EMPTY; - return super.drain(maxDrain, action); - } - - } - - public class TankSegment { - - protected SmartFluidTank tank; - protected LerpedFloat fluidLevel; - protected FluidStack renderedFluid; - - public TankSegment(int capacity) { - tank = new SmartFluidTank(capacity, f -> onFluidStackChanged()); - fluidLevel = LerpedFloat.linear() - .startWithValue(0) - .chase(0, .25, Chaser.EXP); - renderedFluid = FluidStack.EMPTY; - } - - public void onFluidStackChanged() { - if (!tileEntity.hasWorld()) - return; - fluidLevel.chase(tank.getFluidAmount() / (float) tank.getCapacity(), .25, Chaser.EXP); - if (!getWorld().isRemote) - sendDataLazily(); - } - - public FluidStack getRenderedFluid() { - return renderedFluid; - } - - public LerpedFloat getFluidLevel() { - return fluidLevel; - } - - public float getTotalUnits(float partialTicks) { - return fluidLevel.getValue(partialTicks) * tank.getCapacity(); - } - - public CompoundNBT writeNBT() { - CompoundNBT compound = new CompoundNBT(); - compound.put("TankContent", tank.writeToNBT(new CompoundNBT())); - compound.put("Level", fluidLevel.writeNBT()); - return compound; - } - - public void readNBT(CompoundNBT compound, boolean clientPacket) { - tank.readFromNBT(compound.getCompound("TankContent")); - fluidLevel.readNBT(compound.getCompound("Level"), clientPacket); - if (!tank.getFluid() - .isEmpty()) - renderedFluid = tank.getFluid(); - } - - public boolean isEmpty(float partialTicks) { - FluidStack renderedFluid = getRenderedFluid(); - if (renderedFluid.isEmpty()) - return true; - float units = getTotalUnits(partialTicks); - if (units < 1) - return true; - return false; - } - - } - - @Override - public BehaviourType getType() { - return behaviourType; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InvManipulationBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InvManipulationBehaviour.java deleted file mode 100644 index 80fcbf014..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/inventory/InvManipulationBehaviour.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.inventory; - -import java.util.function.Function; -import java.util.function.Predicate; - -import javax.annotation.Nullable; - -import com.google.common.base.Predicates; -import com.simibubi.create.foundation.item.ItemHelper; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; -import com.simibubi.create.foundation.utility.BlockFace; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.items.CapabilityItemHandler; -import net.minecraftforge.items.IItemHandler; -import net.minecraftforge.items.ItemHandlerHelper; - -public class InvManipulationBehaviour extends TileEntityBehaviour { - - // Extra types available for multibehaviour - public static BehaviourType - - TYPE = new BehaviourType<>(), EXTRACT = new BehaviourType<>(), INSERT = new BehaviourType<>(); - - protected InterfaceProvider target; - protected LazyOptional targetCapability; - protected boolean simulateNext; - protected boolean bypassSided; - private boolean findNewNextTick; - - private BehaviourType behaviourType; - - public static InvManipulationBehaviour forExtraction(SmartTileEntity te, InterfaceProvider target) { - return new InvManipulationBehaviour(EXTRACT, te, target); - } - - public static InvManipulationBehaviour forInsertion(SmartTileEntity te, InterfaceProvider target) { - return new InvManipulationBehaviour(INSERT, te, target); - } - - public InvManipulationBehaviour(SmartTileEntity te, InterfaceProvider target) { - this(TYPE, te, target); - } - - private InvManipulationBehaviour(BehaviourType type, SmartTileEntity te, - InterfaceProvider target) { - super(te); - behaviourType = type; - setLazyTickRate(5); - this.target = target; - this.targetCapability = LazyOptional.empty(); - simulateNext = false; - bypassSided = false; - } - - public InvManipulationBehaviour bypassSidedness() { - bypassSided = true; - return this; - } - - /** - * Only simulate the upcoming operation - */ - public InvManipulationBehaviour simulate() { - simulateNext = true; - return this; - } - - public boolean hasInventory() { - return targetCapability.isPresent(); - } - - @Nullable - public IItemHandler getInventory() { - return targetCapability.orElse(null); - } - - public ItemStack extract() { - return extract(getAmountFromFilter()); - } - - public ItemStack extract(int amount) { - return extract(amount, Predicates.alwaysTrue()); - } - - public ItemStack extract(int amount, Predicate filter) { - return extract(amount, filter, ItemStack::getMaxStackSize); - } - - public ItemStack extract(int amount, Predicate filter, Function amountThreshold) { - boolean shouldSimulate = simulateNext; - simulateNext = false; - - if (getWorld().isRemote) - return ItemStack.EMPTY; - IItemHandler inventory = targetCapability.orElse(null); - if (inventory == null) - return ItemStack.EMPTY; - - Predicate test = getFilterTest(filter); - - ItemStack simulatedItems = extractAmountOrThresh(inventory, test, amount, amountThreshold, true); - if (shouldSimulate || simulatedItems.isEmpty()) - return simulatedItems; - - return extractAmountOrThresh(inventory, test, amount, amountThreshold, false); - } - - private static ItemStack extractAmountOrThresh(IItemHandler inventory, Predicate test, int amount, - Function amountThreshold, boolean shouldSimulate) { - if (amount == -1) - return ItemHelper.extract(inventory, test, amountThreshold, shouldSimulate); - return ItemHelper.extract(inventory, test, amount, shouldSimulate); - } - - public ItemStack insert(ItemStack stack) { - boolean shouldSimulate = simulateNext; - simulateNext = false; - IItemHandler inventory = targetCapability.orElse(null); - if (inventory == null) - return stack; - return ItemHandlerHelper.insertItemStacked(inventory, stack, shouldSimulate); - } - - protected Predicate getFilterTest(Predicate customFilter) { - Predicate test = customFilter; - FilteringBehaviour filter = tileEntity.getBehaviour(FilteringBehaviour.TYPE); - if (filter != null) - test = customFilter.and(filter::test); - return test; - } - - @Override - public void initialize() { - super.initialize(); - findNewNextTick = true; - } - - @Override - public void onNeighborChanged(BlockPos neighborPos) { - BlockFace targetBlockFace = target.getTarget(getWorld(), tileEntity.getPos(), tileEntity.getBlockState()); - if (targetBlockFace.getConnectedPos().equals(neighborPos)) - onHandlerInvalidated(targetCapability); - } - - protected void onHandlerInvalidated(LazyOptional handler) { - findNewNextTick = true; - targetCapability = LazyOptional.empty(); - } - - @Override - public void lazyTick() { - super.lazyTick(); - if (!targetCapability.isPresent()) - findNewCapability(); - } - - @Override - public void tick() { - super.tick(); - if (findNewNextTick || getWorld().getGameTime() % 64 == 0) { - findNewNextTick = false; - findNewCapability(); - } - } - - public int getAmountFromFilter() { - int amount = -1; - FilteringBehaviour filter = tileEntity.getBehaviour(FilteringBehaviour.TYPE); - if (filter != null && !filter.anyAmount()) - amount = filter.getAmount(); - return amount; - } - - public void findNewCapability() { - BlockFace targetBlockFace = target.getTarget(getWorld(), tileEntity.getPos(), tileEntity.getBlockState()) - .getOpposite(); - BlockPos pos = targetBlockFace.getPos(); - World world = getWorld(); - - targetCapability = LazyOptional.empty(); - - if (!world.isBlockPresent(pos)) - return; - TileEntity invTE = world.getTileEntity(pos); - if (invTE == null) - return; - targetCapability = bypassSided ? invTE.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) - : invTE.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, targetBlockFace.getFace()); - if (targetCapability.isPresent()) - targetCapability.addListener(this::onHandlerInvalidated); - } - - @Override - public BehaviourType getType() { - return behaviourType; - } - - @FunctionalInterface - public interface InterfaceProvider { - - public static InterfaceProvider towardBlockFacing() { - return (w, p, s) -> new BlockFace(p, s.contains(BlockStateProperties.FACING) ? s.get(BlockStateProperties.FACING) - : s.get(BlockStateProperties.HORIZONTAL_FACING)); - } - - public static InterfaceProvider oppositeOfBlockFacing() { - return (w, p, s) -> new BlockFace(p, - (s.contains(BlockStateProperties.FACING) ? s.get(BlockStateProperties.FACING) - : s.get(BlockStateProperties.HORIZONTAL_FACING)).getOpposite()); - } - - public BlockFace getTarget(World world, BlockPos pos, BlockState blockState); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java deleted file mode 100644 index 75aa226e0..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkBehaviour.java +++ /dev/null @@ -1,218 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.linked; - -import java.util.function.Function; -import java.util.function.IntConsumer; -import java.util.function.IntSupplier; - -import org.apache.commons.lang3.tuple.Pair; - -import com.simibubi.create.Create; -import com.simibubi.create.content.logistics.IRedstoneLinkable; -import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler; -import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; - -import net.minecraft.block.BlockState; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class LinkBehaviour extends TileEntityBehaviour implements IRedstoneLinkable { - - public static BehaviourType TYPE = new BehaviourType<>(); - - enum Mode { - TRANSMIT, RECEIVE - } - - Frequency frequencyFirst; - Frequency frequencyLast; - ValueBoxTransform firstSlot; - ValueBoxTransform secondSlot; - Vector3d textShift; - - public boolean newPosition; - private Mode mode; - private IntSupplier transmission; - private IntConsumer signalCallback; - - protected LinkBehaviour(SmartTileEntity te, Pair slots) { - super(te); - frequencyFirst = Frequency.EMPTY; - frequencyLast = Frequency.EMPTY; - firstSlot = slots.getLeft(); - secondSlot = slots.getRight(); - textShift = Vector3d.ZERO; - newPosition = true; - } - - public static LinkBehaviour receiver(SmartTileEntity te, Pair slots, - IntConsumer signalCallback) { - LinkBehaviour behaviour = new LinkBehaviour(te, slots); - behaviour.signalCallback = signalCallback; - behaviour.mode = Mode.RECEIVE; - return behaviour; - } - - public static LinkBehaviour transmitter(SmartTileEntity te, Pair slots, - IntSupplier transmission) { - LinkBehaviour behaviour = new LinkBehaviour(te, slots); - behaviour.transmission = transmission; - behaviour.mode = Mode.TRANSMIT; - return behaviour; - } - - public LinkBehaviour moveText(Vector3d shift) { - textShift = shift; - return this; - } - - public void copyItemsFrom(LinkBehaviour behaviour) { - if (behaviour == null) - return; - frequencyFirst = behaviour.frequencyFirst; - frequencyLast = behaviour.frequencyLast; - } - - @Override - public boolean isListening() { - return mode == Mode.RECEIVE; - } - - @Override - public int getTransmittedStrength() { - return mode == Mode.TRANSMIT ? transmission.getAsInt() : 0; - } - - @Override - public void setReceivedStrength(int networkPower) { - if (!newPosition) - return; - signalCallback.accept(networkPower); - } - - public void notifySignalChange() { - Create.REDSTONE_LINK_NETWORK_HANDLER.updateNetworkOf(getWorld(), this); - } - - @Override - public void initialize() { - super.initialize(); - if (getWorld().isRemote) - return; - getHandler().addToNetwork(getWorld(), this); - newPosition = true; - } - - @Override - public Pair getNetworkKey() { - return Pair.of(frequencyFirst, frequencyLast); - } - - @Override - public void remove() { - super.remove(); - if (getWorld().isRemote) - return; - getHandler().removeFromNetwork(getWorld(), this); - } - - @Override - public boolean isSafeNBT() { - return true; - } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - super.write(nbt, clientPacket); - nbt.put("FrequencyFirst", frequencyFirst.getStack() - .write(new CompoundNBT())); - nbt.put("FrequencyLast", frequencyLast.getStack() - .write(new CompoundNBT())); - nbt.putLong("LastKnownPosition", tileEntity.getPos() - .toLong()); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - long positionInTag = tileEntity.getPos() - .toLong(); - long positionKey = nbt.getLong("LastKnownPosition"); - newPosition = positionInTag != positionKey; - - super.read(nbt, clientPacket); - frequencyFirst = Frequency.of(ItemStack.read(nbt.getCompound("FrequencyFirst"))); - frequencyLast = Frequency.of(ItemStack.read(nbt.getCompound("FrequencyLast"))); - } - - public void setFrequency(boolean first, ItemStack stack) { - stack = stack.copy(); - stack.setCount(1); - ItemStack toCompare = first ? frequencyFirst.getStack() : frequencyLast.getStack(); - boolean changed = - !ItemStack.areItemsEqual(stack, toCompare) || !ItemStack.areItemStackTagsEqual(stack, toCompare); - - if (changed) - getHandler().removeFromNetwork(getWorld(), this); - - if (first) - frequencyFirst = Frequency.of(stack); - else - frequencyLast = Frequency.of(stack); - - if (!changed) - return; - - tileEntity.sendData(); - getHandler().addToNetwork(getWorld(), this); - } - - @Override - public BehaviourType getType() { - return TYPE; - } - - private RedstoneLinkNetworkHandler getHandler() { - return Create.REDSTONE_LINK_NETWORK_HANDLER; - } - - public static class SlotPositioning { - Function> offsets; - Function rotation; - float scale; - - public SlotPositioning(Function> offsetsForState, - Function rotationForState) { - offsets = offsetsForState; - rotation = rotationForState; - scale = 1; - } - - public SlotPositioning scale(float scale) { - this.scale = scale; - return this; - } - - } - - public boolean testHit(Boolean first, Vector3d hit) { - BlockState state = tileEntity.getBlockState(); - Vector3d localHit = hit.subtract(Vector3d.of(tileEntity.getPos())); - return (first ? firstSlot : secondSlot).testHit(state, localHit); - } - - @Override - public boolean isAlive() { - return !tileEntity.isRemoved() && getWorld().getTileEntity(getPos()) == tileEntity; - } - - @Override - public BlockPos getLocation() { - return getPos(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkHandler.java deleted file mode 100644 index 1c5e6319f..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkHandler.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.linked; - -import java.util.Arrays; - -import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.utility.RaycastHelper; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.PlayerInteractEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.LogicalSide; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class LinkHandler { - - @SubscribeEvent - public static void onBlockActivated(PlayerInteractEvent.RightClickBlock event) { - World world = event.getWorld(); - BlockPos pos = event.getPos(); - PlayerEntity player = event.getPlayer(); - Hand hand = event.getHand(); - - if (player.isSneaking() || player.isSpectator()) - return; - - LinkBehaviour behaviour = TileEntityBehaviour.get(world, pos, LinkBehaviour.TYPE); - if (behaviour == null) - return; - - ItemStack heldItem = player.getHeldItem(hand); - BlockRayTraceResult ray = RaycastHelper.rayTraceRange(world, player, 10); - if (ray == null) - return; - if (AllItems.LINKED_CONTROLLER.isIn(heldItem)) - return; - if (AllItems.WRENCH.isIn(heldItem)) - return; - - for (boolean first : Arrays.asList(false, true)) { - if (behaviour.testHit(first, ray.getHitVec())) { - if (event.getSide() != LogicalSide.CLIENT) - behaviour.setFrequency(first, heldItem); - event.setCanceled(true); - event.setCancellationResult(ActionResultType.SUCCESS); - world.playSound(null, pos, SoundEvents.ENTITY_ITEM_FRAME_ADD_ITEM, SoundCategory.BLOCKS, .25f, .1f); - } - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkRenderer.java deleted file mode 100644 index 8e7d31245..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/linked/LinkRenderer.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.linked; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.datafixers.util.Pair; -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxRenderer; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public class LinkRenderer { - - public static void tick() { - Minecraft mc = Minecraft.getInstance(); - RayTraceResult target = mc.objectMouseOver; - if (target == null || !(target instanceof BlockRayTraceResult)) - return; - - BlockRayTraceResult result = (BlockRayTraceResult) target; - ClientWorld world = mc.world; - BlockPos pos = result.getPos(); - - LinkBehaviour behaviour = TileEntityBehaviour.get(world, pos, LinkBehaviour.TYPE); - if (behaviour == null) - return; - - ITextComponent freq1 = Lang.translate("logistics.firstFrequency"); - ITextComponent freq2 = Lang.translate("logistics.secondFrequency"); - - for (boolean first : Iterate.trueAndFalse) { - AxisAlignedBB bb = new AxisAlignedBB(Vector3d.ZERO, Vector3d.ZERO).grow(.25f); - ITextComponent label = first ? freq2 : freq1; - boolean hit = behaviour.testHit(first, target.getHitVec()); - ValueBoxTransform transform = first ? behaviour.firstSlot : behaviour.secondSlot; - - ValueBox box = new ValueBox(label, bb, pos).withColors(0x601F18, 0xB73C2D) - .offsetLabel(behaviour.textShift) - .passive(!hit); - CreateClient.OUTLINER.showValueBox(Pair.of(Boolean.valueOf(first), pos), box.transform(transform)) - .lineWidth(1 / 64f) - .withFaceTexture(hit ? AllSpecialTextures.THIN_CHECKERED : null) - .highlightFace(result.getFace()); - } - } - - public static void renderOnTileEntity(SmartTileEntity te, float partialTicks, MatrixStack ms, - IRenderTypeBuffer buffer, int light, int overlay) { - - if (te == null || te.isRemoved()) - return; - LinkBehaviour behaviour = te.getBehaviour(LinkBehaviour.TYPE); - if (behaviour == null) - return; - - for (boolean first : Iterate.trueAndFalse) { - ValueBoxTransform transform = first ? behaviour.firstSlot : behaviour.secondSlot; - ItemStack stack = first ? behaviour.frequencyFirst.getStack() : behaviour.frequencyLast.getStack(); - - ms.push(); - transform.transform(te.getBlockState(), ms); - ValueBoxRenderer.renderItemIntoValueBox(stack, ms, buffer, light, overlay); - ms.pop(); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/BulkScrollValueBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/BulkScrollValueBehaviour.java deleted file mode 100644 index 245dab41f..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/BulkScrollValueBehaviour.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue; - -import java.util.List; -import java.util.function.Function; - -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; - -import net.minecraft.util.text.ITextComponent; - -public class BulkScrollValueBehaviour extends ScrollValueBehaviour { - - Function> groupGetter; - - public BulkScrollValueBehaviour(ITextComponent label, SmartTileEntity te, ValueBoxTransform slot, - Function> groupGetter) { - super(label, te, slot); - this.groupGetter = groupGetter; - } - - List getBulk() { - return groupGetter.apply(tileEntity); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/INamedIconOptions.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/INamedIconOptions.java deleted file mode 100644 index b43fc801d..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/INamedIconOptions.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue; - -import com.simibubi.create.foundation.gui.AllIcons; - -public interface INamedIconOptions { - AllIcons getIcon(); - String getTranslationKey(); -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollOptionBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollOptionBehaviour.java deleted file mode 100644 index 2756fa313..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollOptionBehaviour.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue; - -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; - -import net.minecraft.util.text.ITextComponent; - -public class ScrollOptionBehaviour & INamedIconOptions> extends ScrollValueBehaviour { - - private E[] options; - - public ScrollOptionBehaviour(Class enum_, ITextComponent label, SmartTileEntity te, ValueBoxTransform slot) { - super(label, te, slot); - options = enum_.getEnumConstants(); - between(0, options.length - 1); - withStepFunction((c) -> -1); - } - - INamedIconOptions getIconForSelected() { - return get(); - } - - public E get() { - return options[scrollableValue]; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java deleted file mode 100644 index d189a689d..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueBehaviour.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue; - -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; - -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; - -public class ScrollValueBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - - ValueBoxTransform slotPositioning; - Vector3d textShift; - - int min = 0; - int max = 1; - public int value; - public int scrollableValue; - int ticksUntilScrollPacket; - boolean forceClientState; - ITextComponent label; - Consumer callback; - Consumer clientCallback; - Function formatter; - Function unit; - Function step; - private Supplier isActive; - boolean needsWrench; - - public ScrollValueBehaviour(ITextComponent label, SmartTileEntity te, ValueBoxTransform slot) { - super(te); - this.setLabel(label); - slotPositioning = slot; - callback = i -> { - }; - clientCallback = i -> { - }; - textShift = Vector3d.ZERO; - formatter = i -> Integer.toString(i); - step = (c) -> 1; - value = 0; - isActive = () -> true; - ticksUntilScrollPacket = -1; - } - - @Override - public boolean isSafeNBT() { return true; } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - nbt.putInt("ScrollValue", value); - if (clientPacket && forceClientState) { - nbt.putBoolean("ForceScrollable", true); - forceClientState = false; - } - super.write(nbt, clientPacket); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - value = nbt.getInt("ScrollValue"); - if (nbt.contains("ForceScrollable")) { - ticksUntilScrollPacket = -1; - scrollableValue = value; - } - super.read(nbt, clientPacket); - } - - @Override - public void tick() { - super.tick(); - - if (!getWorld().isRemote) - return; - if (ticksUntilScrollPacket == -1) - return; - if (ticksUntilScrollPacket > 0) { - ticksUntilScrollPacket--; - return; - } - - AllPackets.channel.sendToServer(new ScrollValueUpdatePacket(getPos(), scrollableValue)); - ticksUntilScrollPacket = -1; - } - - public ScrollValueBehaviour withClientCallback(Consumer valueCallback) { - clientCallback = valueCallback; - return this; - } - - public ScrollValueBehaviour withCallback(Consumer valueCallback) { - callback = valueCallback; - return this; - } - - public ScrollValueBehaviour between(int min, int max) { - this.min = min; - this.max = max; - return this; - } - - public ScrollValueBehaviour moveText(Vector3d shift) { - textShift = shift; - return this; - } - - public ScrollValueBehaviour requiresWrench() { - this.needsWrench = true; - return this; - } - - public ScrollValueBehaviour withFormatter(Function formatter) { - this.formatter = formatter; - return this; - } - - public ScrollValueBehaviour withUnit(Function unit) { - this.unit = unit; - return this; - } - - public ScrollValueBehaviour onlyActiveWhen(Supplier condition) { - isActive = condition; - return this; - } - - public ScrollValueBehaviour withStepFunction(Function step) { - this.step = step; - return this; - } - - @Override - public void initialize() { - super.initialize(); - setValue(value); - scrollableValue = value; - } - - public void setValue(int value) { - value = MathHelper.clamp(value, min, max); - if (value == this.value) - return; - this.value = value; - forceClientState = true; - callback.accept(value); - tileEntity.markDirty(); - tileEntity.sendData(); - scrollableValue = value; - } - - public int getValue() { - return value; - } - - public String formatValue() { - return formatter.apply(scrollableValue); - } - - @Override - public BehaviourType getType() { - return TYPE; - } - - public boolean isActive() { - return isActive.get(); - } - - public boolean testHit(Vector3d hit) { - BlockState state = tileEntity.getBlockState(); - Vector3d localHit = hit.subtract(Vector3d.of(tileEntity.getPos())); - return slotPositioning.testHit(state, localHit); - } - - public void setLabel(ITextComponent label) { - this.label = label; - } - - public static class StepContext { - public int currentValue; - public boolean forward; - public boolean shift; - public boolean control; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueHandler.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueHandler.java deleted file mode 100644 index 1ae96c132..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueHandler.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllKeys; -import com.simibubi.create.AllSoundEvents; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided; -import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueBehaviour.StepContext; -import com.simibubi.create.foundation.utility.animation.PhysicalFloat; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceResult; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.common.Mod.EventBusSubscriber; - -@EventBusSubscriber -public class ScrollValueHandler { - - private static float lastPassiveScroll = 0.0f; - private static float passiveScroll = 0.0f; - private static float passiveScrollDirection = 1f; - private static final PhysicalFloat wrenchCog = PhysicalFloat.create() - .withDrag(0.3); - - @OnlyIn(Dist.CLIENT) - public static boolean onScroll(double delta) { - RayTraceResult objectMouseOver = Minecraft.getInstance().objectMouseOver; - if (!(objectMouseOver instanceof BlockRayTraceResult)) - return false; - - BlockRayTraceResult result = (BlockRayTraceResult) objectMouseOver; - Minecraft mc = Minecraft.getInstance(); - ClientWorld world = mc.world; - BlockPos blockPos = result.getPos(); - - ScrollValueBehaviour scrolling = TileEntityBehaviour.get(world, blockPos, ScrollValueBehaviour.TYPE); - if (scrolling == null) - return false; - if (!scrolling.isActive()) - return false; - if (!mc.player.isAllowEdit()) - return false; - - passiveScrollDirection = (float) -delta; - wrenchCog.bump(3, -delta * 10); - int prev = scrolling.scrollableValue; - - if (scrolling.needsWrench && !AllItems.WRENCH.isIn(mc.player.getHeldItemMainhand())) - return false; - if (scrolling.slotPositioning instanceof Sided) - ((Sided) scrolling.slotPositioning).fromSide(result.getFace()); - if (!scrolling.testHit(objectMouseOver.getHitVec())) - return false; - - if (scrolling instanceof BulkScrollValueBehaviour && AllKeys.ctrlDown()) { - BulkScrollValueBehaviour bulkScrolling = (BulkScrollValueBehaviour) scrolling; - for (SmartTileEntity te : bulkScrolling.getBulk()) { - ScrollValueBehaviour other = te.getBehaviour(ScrollValueBehaviour.TYPE); - if (other != null) - applyTo(delta, other); - } - - } else - applyTo(delta, scrolling); - - if (prev != scrolling.scrollableValue) { - float pitch = (scrolling.scrollableValue - scrolling.min) / (float) (scrolling.max - scrolling.min); - pitch = MathHelper.lerp(pitch, 1.5f, 2f); - AllSoundEvents.SCROLL_VALUE.play(world, mc.player, blockPos, 1, pitch); - } - return true; - } - - public static float getScroll(float partialTicks) { - return wrenchCog.getValue(partialTicks) + MathHelper.lerp(partialTicks, lastPassiveScroll, passiveScroll); - } - - @OnlyIn(Dist.CLIENT) - public static void tick() { - lastPassiveScroll = passiveScroll; - wrenchCog.tick(); - passiveScroll += passiveScrollDirection * 0.5; - } - - protected static void applyTo(double delta, ScrollValueBehaviour scrolling) { - scrolling.ticksUntilScrollPacket = 10; - int valueBefore = scrolling.scrollableValue; - - StepContext context = new StepContext(); - context.control = AllKeys.ctrlDown(); - context.shift = AllKeys.shiftDown(); - context.currentValue = scrolling.scrollableValue; - context.forward = delta > 0; - - double newValue = scrolling.scrollableValue + Math.signum(delta) * scrolling.step.apply(context); - scrolling.scrollableValue = (int) MathHelper.clamp(newValue, scrolling.min, scrolling.max); - - if (valueBefore != scrolling.scrollableValue) - scrolling.clientCallback.accept(scrolling.scrollableValue); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java deleted file mode 100644 index ab5521204..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueRenderer.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue; - -import com.simibubi.create.AllItems; -import com.simibubi.create.AllKeys; -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.IconValueBox; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox.TextValueBox; -import com.simibubi.create.foundation.utility.Lang; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.util.Direction; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; - -public class ScrollValueRenderer { - - public static void tick() { - Minecraft mc = Minecraft.getInstance(); - RayTraceResult target = mc.objectMouseOver; - if (target == null || !(target instanceof BlockRayTraceResult)) - return; - - BlockRayTraceResult result = (BlockRayTraceResult) target; - ClientWorld world = mc.world; - BlockPos pos = result.getPos(); - Direction face = result.getFace(); - - ScrollValueBehaviour behaviour = TileEntityBehaviour.get(world, pos, ScrollValueBehaviour.TYPE); - if (behaviour == null) - return; - if (!behaviour.isActive()) - return; - if (behaviour.needsWrench && !AllItems.WRENCH.isIn(mc.player.getHeldItemMainhand())) - return; - boolean highlight = behaviour.testHit(target.getHitVec()); - - if (behaviour instanceof BulkScrollValueBehaviour && AllKeys.ctrlDown()) { - BulkScrollValueBehaviour bulkScrolling = (BulkScrollValueBehaviour) behaviour; - for (SmartTileEntity smartTileEntity : bulkScrolling.getBulk()) { - ScrollValueBehaviour other = smartTileEntity.getBehaviour(ScrollValueBehaviour.TYPE); - if (other != null) - addBox(world, smartTileEntity.getPos(), face, other, highlight); - } - } else - addBox(world, pos, face, behaviour, highlight); - } - - protected static void addBox(ClientWorld world, BlockPos pos, Direction face, ScrollValueBehaviour behaviour, - boolean highlight) { - AxisAlignedBB bb = new AxisAlignedBB(Vector3d.ZERO, Vector3d.ZERO).grow(.5f) - .contract(0, 0, -.5f) - .offset(0, 0, -.125f); - ITextComponent label = behaviour.label; - ValueBox box; - - if (behaviour instanceof ScrollOptionBehaviour) { - box = new IconValueBox(label, ((ScrollOptionBehaviour) behaviour).getIconForSelected(), bb, pos); - } else { - box = new TextValueBox(label, bb, pos, new StringTextComponent(behaviour.formatValue())); - if (behaviour.unit != null) - box.subLabel(new StringTextComponent("(").append(behaviour.unit.apply(behaviour.scrollableValue)).append(")")); - } - - box.scrollTooltip(new StringTextComponent("[").append(Lang.translate("action.scroll")).append("]")); - box.offsetLabel(behaviour.textShift.add(20, -10, 0)) - .withColors(0x5A5D5A, 0xB5B7B6) - .passive(!highlight); - - CreateClient.OUTLINER.showValueBox(pos, box.transform(behaviour.slotPositioning)) - .lineWidth(1 / 64f) - .highlightFace(face); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueUpdatePacket.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueUpdatePacket.java deleted file mode 100644 index 3e4d0d90a..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/scrollvalue/ScrollValueUpdatePacket.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue; - -import com.simibubi.create.foundation.networking.TileEntityConfigurationPacket; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; - -import net.minecraft.network.PacketBuffer; -import net.minecraft.util.math.BlockPos; - -public class ScrollValueUpdatePacket extends TileEntityConfigurationPacket { - - int value; - - public ScrollValueUpdatePacket(PacketBuffer buffer) { - super(buffer); - } - - public ScrollValueUpdatePacket(BlockPos pos, int amount) { - super(pos); - this.value = amount; - } - - @Override - protected void writeSettings(PacketBuffer buffer) { - buffer.writeInt(value); - } - - @Override - protected void readSettings(PacketBuffer buffer) { - value = buffer.readInt(); - } - - @Override - protected void applySettings(SmartTileEntity te) { - ScrollValueBehaviour behaviour = te.getBehaviour(ScrollValueBehaviour.TYPE); - if (behaviour == null) - return; - behaviour.setValue(value); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java b/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java deleted file mode 100644 index 3f1bb7fd9..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/behaviour/simple/DeferralBehaviour.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.behaviour.simple; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour; -import com.simibubi.create.foundation.tileEntity.behaviour.BehaviourType; - -import net.minecraft.nbt.CompoundNBT; - -public class DeferralBehaviour extends TileEntityBehaviour { - - public static BehaviourType TYPE = new BehaviourType<>(); - - private boolean needsUpdate; - private Supplier callback; - - public DeferralBehaviour(SmartTileEntity te, Supplier callback) { - super(te); - this.callback = callback; - } - - @Override - public boolean isSafeNBT() { return true; } - - @Override - public void write(CompoundNBT nbt, boolean clientPacket) { - nbt.putBoolean("NeedsUpdate", needsUpdate); - super.write(nbt, clientPacket); - } - - @Override - public void read(CompoundNBT nbt, boolean clientPacket) { - needsUpdate = nbt.getBoolean("NeedsUpdate"); - super.read(nbt, clientPacket); - } - - @Override - public void tick() { - super.tick(); - if (needsUpdate && callback.get()) - needsUpdate = false; - } - - public void scheduleUpdate() { - needsUpdate = true; - } - - @Override - public BehaviourType getType() { - return TYPE; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java deleted file mode 100644 index 2b47c21fb..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/ColoredOverlayTileEntityRenderer.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.renderer; - -import com.jozufozu.flywheel.backend.Backend; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.render.SuperByteBuffer; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.tileentity.TileEntity; - -public abstract class ColoredOverlayTileEntityRenderer extends SafeTileEntityRenderer { - - public ColoredOverlayTileEntityRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(T te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - - if (Backend.getInstance().canUseInstancing(te.getWorld())) return; - - SuperByteBuffer render = render(getOverlayBuffer(te), getColor(te, partialTicks), light); - render.renderInto(ms, buffer.getBuffer(RenderType.getSolid())); - } - - protected abstract int getColor(T te, float partialTicks); - - protected abstract SuperByteBuffer getOverlayBuffer(T te); - - public static SuperByteBuffer render(SuperByteBuffer buffer, int color, int light) { - return buffer.color(color).light(light); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/SafeTileEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/SafeTileEntityRenderer.java deleted file mode 100644 index 6c02f67f9..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/SafeTileEntityRenderer.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.renderer; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.block.Blocks; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.tileentity.TileEntityRenderer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; -import net.minecraft.tileentity.TileEntity; - -public abstract class SafeTileEntityRenderer extends TileEntityRenderer { - - public SafeTileEntityRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - public final void render(T te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light, - int overlay) { - if (isInvalid(te)) - return; - renderSafe(te, partialTicks, ms, buffer, light, overlay); - } - - protected abstract void renderSafe(T te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light, - int overlay); - - public boolean isInvalid(T te) { - return !te.hasWorld() || te.getBlockState() - .getBlock() == Blocks.AIR; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/SmartTileEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/SmartTileEntityRenderer.java deleted file mode 100644 index 7dfbf60ff..000000000 --- a/src/main/java/com/simibubi/create/foundation/tileEntity/renderer/SmartTileEntityRenderer.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.simibubi.create.foundation.tileEntity.renderer; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.tileEntity.SmartTileEntity; -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringRenderer; -import com.simibubi.create.foundation.tileEntity.behaviour.linked.LinkRenderer; - -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; - -public class SmartTileEntityRenderer extends SafeTileEntityRenderer { - - public SmartTileEntityRenderer(TileEntityRendererDispatcher dispatcher) { - super(dispatcher); - } - - @Override - protected void renderSafe(T tileEntityIn, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer, int light, - int overlay) { - FilteringRenderer.renderOnTileEntity(tileEntityIn, partialTicks, ms, buffer, light, overlay); - LinkRenderer.renderOnTileEntity(tileEntityIn, partialTicks, ms, buffer, light, overlay); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/AbstractBlockBreakQueue.java b/src/main/java/com/simibubi/create/foundation/utility/AbstractBlockBreakQueue.java deleted file mode 100644 index cc4989e8d..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/AbstractBlockBreakQueue.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.function.BiConsumer; -import java.util.function.Consumer; - -import javax.annotation.Nullable; - -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.event.ForgeEventFactory; - -public abstract class AbstractBlockBreakQueue { - protected Consumer makeCallbackFor(World world, float effectChance, ItemStack toDamage, - @Nullable PlayerEntity playerEntity, BiConsumer drop) { - return pos -> { - ItemStack usedTool = toDamage.copy(); - BlockHelper.destroyBlockAs(world, pos, playerEntity, toDamage, effectChance, - stack -> drop.accept(pos, stack)); - if (toDamage.isEmpty() && !usedTool.isEmpty()) - ForgeEventFactory.onPlayerDestroyItem(playerEntity, usedTool, Hand.MAIN_HAND); - }; - } - - public void destroyBlocks(World world, @Nullable LivingEntity entity, BiConsumer drop) { - PlayerEntity playerEntity = entity instanceof PlayerEntity ? ((PlayerEntity) entity) : null; - ItemStack toDamage = - playerEntity != null && !playerEntity.isCreative() ? playerEntity.getHeldItemMainhand() : ItemStack.EMPTY; - destroyBlocks(world, toDamage, playerEntity, drop); - } - - public abstract void destroyBlocks(World world, ItemStack toDamage, @Nullable PlayerEntity playerEntity, - BiConsumer drop); -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java b/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java deleted file mode 100644 index efc5f90f8..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/AnimationTickHolder.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import com.simibubi.create.foundation.ponder.PonderUI; -import com.simibubi.create.foundation.ponder.PonderWorld; -import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld; - -import net.minecraft.client.Minecraft; -import net.minecraft.world.IWorld; - -public class AnimationTickHolder { - - private static int ticks; - private static int paused_ticks; - - public static void reset() { - ticks = 0; - paused_ticks = 0; - } - - public static void tick() { - if (!Minecraft.getInstance() - .isGamePaused()) { - ticks = (ticks + 1) % 1_728_000; // wrap around every 24 hours so we maintain enough floating point precision - } else { - paused_ticks = (paused_ticks + 1) % 1_728_000; - } - } - - public static int getTicks() { - return getTicks(false); - } - - public static int getTicks(boolean includePaused) { - return includePaused ? ticks + paused_ticks : ticks; - } - - public static float getRenderTime() { - return getTicks() + getPartialTicks(); - } - - public static float getPartialTicks() { - Minecraft mc = Minecraft.getInstance(); - return (mc.isGamePaused() ? mc.renderPartialTicksPaused : mc.getRenderPartialTicks()); - } - - public static int getTicks(IWorld world) { - if (world instanceof WrappedClientWorld) - return getTicks(((WrappedClientWorld) world).getWrappedWorld()); - return world instanceof PonderWorld ? PonderUI.ponderTicks : getTicks(); - } - - public static float getRenderTime(IWorld world) { - return getTicks(world) + getPartialTicks(world); - } - - public static float getPartialTicks(IWorld world) { - return world instanceof PonderWorld ? PonderUI.getPartialTicks() : getPartialTicks(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockFace.java b/src/main/java/com/simibubi/create/foundation/utility/BlockFace.java deleted file mode 100644 index b26edb76c..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockFace.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTUtil; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; - -public class BlockFace extends Pair { - - public BlockFace(BlockPos first, Direction second) { - super(first, second); - } - - public boolean isEquivalent(BlockFace other) { - if (equals(other)) - return true; - return getConnectedPos().equals(other.getPos()) && getPos().equals(other.getConnectedPos()); - } - - public BlockPos getPos() { - return getFirst(); - } - - public Direction getFace() { - return getSecond(); - } - - public Direction getOppositeFace() { - return getSecond().getOpposite(); - } - - public BlockFace getOpposite() { - return new BlockFace(getConnectedPos(), getOppositeFace()); - } - - public BlockPos getConnectedPos() { - return getPos().offset(getFace()); - } - - public CompoundNBT serializeNBT() { - CompoundNBT compoundNBT = new CompoundNBT(); - compoundNBT.put("Pos", NBTUtil.writeBlockPos(getPos())); - NBTHelper.writeEnum(compoundNBT, "Face", getFace()); - return compoundNBT; - } - - public static BlockFace fromNBT(CompoundNBT compound) { - return new BlockFace(NBTUtil.readBlockPos(compound.getCompound("Pos")), - NBTHelper.readEnum(compound, "Face", Direction.class)); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java b/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java deleted file mode 100644 index cc76d5dbe..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/BlockHelper.java +++ /dev/null @@ -1,350 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -import javax.annotation.Nullable; - -import net.minecraft.block.AbstractRailBlock; -import net.minecraft.block.RailBlock; - -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.chunk.ChunkSection; -import net.minecraftforge.common.util.BlockSnapshot; - -import org.apache.commons.lang3.mutable.MutableInt; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.contraptions.base.KineticTileEntity; -import com.simibubi.create.content.contraptions.components.actors.SeatBlock; - -import net.minecraft.block.BedBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.SlimeBlock; -import net.minecraft.client.particle.DiggingParticle; -import net.minecraft.client.particle.ParticleManager; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.state.properties.SlabType; -import net.minecraft.stats.Stats; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.FluidTags; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.GameRules; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.IPlantable; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.world.BlockEvent; - -public class BlockHelper { - - @OnlyIn(Dist.CLIENT) - public static void addReducedDestroyEffects(BlockState state, World worldIn, BlockPos pos, - ParticleManager manager) { - if (!(worldIn instanceof ClientWorld)) - return; - ClientWorld world = (ClientWorld) worldIn; - VoxelShape voxelshape = state.getShape(world, pos); - MutableInt amtBoxes = new MutableInt(0); - voxelshape.forEachBox((x1, y1, z1, x2, y2, z2) -> amtBoxes.increment()); - double chance = 1d / amtBoxes.getValue(); - - voxelshape.forEachBox((x1, y1, z1, x2, y2, z2) -> { - double d1 = Math.min(1.0D, x2 - x1); - double d2 = Math.min(1.0D, y2 - y1); - double d3 = Math.min(1.0D, z2 - z1); - int i = Math.max(2, MathHelper.ceil(d1 / 0.25D)); - int j = Math.max(2, MathHelper.ceil(d2 / 0.25D)); - int k = Math.max(2, MathHelper.ceil(d3 / 0.25D)); - - for (int l = 0; l < i; ++l) { - for (int i1 = 0; i1 < j; ++i1) { - for (int j1 = 0; j1 < k; ++j1) { - if (world.rand.nextDouble() > chance) - continue; - - double d4 = ((double) l + 0.5D) / (double) i; - double d5 = ((double) i1 + 0.5D) / (double) j; - double d6 = ((double) j1 + 0.5D) / (double) k; - double d7 = d4 * d1 + x1; - double d8 = d5 * d2 + y1; - double d9 = d6 * d3 + z1; - manager - .addEffect((new DiggingParticle(world, (double) pos.getX() + d7, (double) pos.getY() + d8, - (double) pos.getZ() + d9, d4 - 0.5D, d5 - 0.5D, d6 - 0.5D, state)).setBlockPos(pos)); - } - } - } - - }); - } - - public static BlockState setZeroAge(BlockState blockState) { - if (blockState.contains(BlockStateProperties.AGE_0_1)) - return blockState.with(BlockStateProperties.AGE_0_1, 0); - if (blockState.contains(BlockStateProperties.AGE_0_2)) - return blockState.with(BlockStateProperties.AGE_0_2, 0); - if (blockState.contains(BlockStateProperties.AGE_0_3)) - return blockState.with(BlockStateProperties.AGE_0_3, 0); - if (blockState.contains(BlockStateProperties.AGE_0_5)) - return blockState.with(BlockStateProperties.AGE_0_5, 0); - if (blockState.contains(BlockStateProperties.AGE_0_7)) - return blockState.with(BlockStateProperties.AGE_0_7, 0); - if (blockState.contains(BlockStateProperties.AGE_0_15)) - return blockState.with(BlockStateProperties.AGE_0_15, 0); - if (blockState.contains(BlockStateProperties.AGE_0_25)) - return blockState.with(BlockStateProperties.AGE_0_25, 0); - if (blockState.contains(BlockStateProperties.HONEY_LEVEL)) - return blockState.with(BlockStateProperties.HONEY_LEVEL, 0); - if (blockState.contains(BlockStateProperties.HATCH_0_2)) - return blockState.with(BlockStateProperties.HATCH_0_2, 0); - if (blockState.contains(BlockStateProperties.STAGE_0_1)) - return blockState.with(BlockStateProperties.STAGE_0_1, 0); - if (blockState.contains(BlockStateProperties.LEVEL_0_3)) - return blockState.with(BlockStateProperties.LEVEL_0_3, 0); - if (blockState.contains(BlockStateProperties.LEVEL_0_8)) - return blockState.with(BlockStateProperties.LEVEL_0_8, 0); - if (blockState.contains(BlockStateProperties.EXTENDED)) - return blockState.with(BlockStateProperties.EXTENDED, false); - return blockState; - } - - public static int findAndRemoveInInventory(BlockState block, PlayerEntity player, int amount) { - int amountFound = 0; - Item required = getRequiredItem(block).getItem(); - - boolean needsTwo = block.contains(BlockStateProperties.SLAB_TYPE) - && block.get(BlockStateProperties.SLAB_TYPE) == SlabType.DOUBLE; - - if (needsTwo) - amount *= 2; - - if (block.contains(BlockStateProperties.EGGS_1_4)) - amount *= block.get(BlockStateProperties.EGGS_1_4); - - if (block.contains(BlockStateProperties.PICKLES_1_4)) - amount *= block.get(BlockStateProperties.PICKLES_1_4); - - { - // Try held Item first - int preferredSlot = player.inventory.currentItem; - ItemStack itemstack = player.inventory.getStackInSlot(preferredSlot); - int count = itemstack.getCount(); - if (itemstack.getItem() == required && count > 0) { - int taken = Math.min(count, amount - amountFound); - player.inventory.setInventorySlotContents(preferredSlot, - new ItemStack(itemstack.getItem(), count - taken)); - amountFound += taken; - } - } - - // Search inventory - for (int i = 0; i < player.inventory.getSizeInventory(); ++i) { - if (amountFound == amount) - break; - - ItemStack itemstack = player.inventory.getStackInSlot(i); - int count = itemstack.getCount(); - if (itemstack.getItem() == required && count > 0) { - int taken = Math.min(count, amount - amountFound); - player.inventory.setInventorySlotContents(i, new ItemStack(itemstack.getItem(), count - taken)); - amountFound += taken; - } - } - - if (needsTwo) { - // Give back 1 if uneven amount was removed - if (amountFound % 2 != 0) - player.inventory.addItemStackToInventory(new ItemStack(required)); - amountFound /= 2; - } - - return amountFound; - } - - public static ItemStack getRequiredItem(BlockState state) { - ItemStack itemStack = new ItemStack(state.getBlock()); - if (itemStack.getItem() == Items.FARMLAND) - itemStack = new ItemStack(Items.DIRT); - else if (itemStack.getItem() == Items.GRASS_PATH) - itemStack = new ItemStack(Items.GRASS_BLOCK); - return itemStack; - } - - public static void destroyBlock(World world, BlockPos pos, float effectChance) { - destroyBlock(world, pos, effectChance, stack -> Block.spawnAsEntity(world, pos, stack)); - } - - public static void destroyBlock(World world, BlockPos pos, float effectChance, - Consumer droppedItemCallback) { - destroyBlockAs(world, pos, null, ItemStack.EMPTY, effectChance, droppedItemCallback); - } - - public static void destroyBlockAs(World world, BlockPos pos, @Nullable PlayerEntity player, ItemStack usedTool, - float effectChance, Consumer droppedItemCallback) { - FluidState fluidState = world.getFluidState(pos); - BlockState state = world.getBlockState(pos); - if (world.rand.nextFloat() < effectChance) - world.playEvent(2001, pos, Block.getStateId(state)); - TileEntity tileentity = state.hasTileEntity() ? world.getTileEntity(pos) : null; - if (player != null) { - BlockEvent.BreakEvent event = new BlockEvent.BreakEvent(world, pos, state, player); - MinecraftForge.EVENT_BUS.post(event); - if (event.isCanceled()) - return; - - if (event.getExpToDrop() > 0 && world instanceof ServerWorld) - state.getBlock() - .dropXpOnBlockBreak((ServerWorld) world, pos, event.getExpToDrop()); - - usedTool.onBlockDestroyed(world, state, pos, player); - player.addStat(Stats.BLOCK_MINED.get(state.getBlock())); - } - - if (world instanceof ServerWorld && world.getGameRules() - .getBoolean(GameRules.DO_TILE_DROPS) && !world.restoringBlockSnapshots - && (player == null || !player.isCreative())) { - for (ItemStack itemStack : Block.getDrops(state, (ServerWorld) world, pos, tileentity, player, usedTool)) - droppedItemCallback.accept(itemStack); - state.spawnAdditionalDrops((ServerWorld) world, pos, ItemStack.EMPTY); - } - - world.setBlockState(pos, fluidState.getBlockState()); - } - - public static boolean isSolidWall(IBlockReader reader, BlockPos fromPos, Direction toDirection) { - return hasBlockSolidSide(reader.getBlockState(fromPos.offset(toDirection)), reader, fromPos.offset(toDirection), - toDirection.getOpposite()); - } - - public static boolean noCollisionInSpace(IBlockReader reader, BlockPos pos) { - return reader.getBlockState(pos) - .getCollisionShape(reader, pos) - .isEmpty(); - } - - private static void placeRailWithoutUpdate(World world, BlockState state, BlockPos target) { - int i = target.getX() & 15; - int j = target.getY(); - int k = target.getZ() & 15; - Chunk chunk = world.getChunkAt(target); - ChunkSection chunksection = chunk.getSections()[j >> 4]; - if (chunksection == Chunk.EMPTY_SECTION) { - chunksection = new ChunkSection(j >> 4 << 4); - chunk.getSections()[j >> 4] = chunksection; - } - BlockState old = chunksection.setBlockState(i, j & 15, k, state); - chunk.markDirty(); - world.markAndNotifyBlock(target, chunk, old, state, 82, 512); - - world.setBlockState(target, state, 82); - world.neighborChanged(target, world.getBlockState(target.down()).getBlock(), target.down()); - } - - public static void placeSchematicBlock(World world, BlockState state, BlockPos target, ItemStack stack, - @Nullable CompoundNBT data) { - // Piston - if (state.contains(BlockStateProperties.EXTENDED)) - state = state.with(BlockStateProperties.EXTENDED, Boolean.FALSE); - if (state.contains(BlockStateProperties.WATERLOGGED)) - state = state.with(BlockStateProperties.WATERLOGGED, Boolean.FALSE); - - if (AllBlocks.BELT.has(state)) { - world.setBlockState(target, state, 2); - return; - } else if (state.getBlock() == Blocks.COMPOSTER) - state = Blocks.COMPOSTER.getDefaultState(); - else if (state.getBlock() != Blocks.SEA_PICKLE && state.getBlock() instanceof IPlantable) - state = ((IPlantable) state.getBlock()).getPlant(world, target); - - if (world.getDimension() - .isUltrawarm() - && state.getFluidState() - .getFluid() - .isIn(FluidTags.WATER)) { - int i = target.getX(); - int j = target.getY(); - int k = target.getZ(); - world.playSound(null, target, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, - 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - - for (int l = 0; l < 8; ++l) { - world.addParticle(ParticleTypes.LARGE_SMOKE, i + Math.random(), j + Math.random(), k + Math.random(), - 0.0D, 0.0D, 0.0D); - } - Block.spawnDrops(state, world, target); - return; - } - - if (state.getBlock() instanceof AbstractRailBlock) { - placeRailWithoutUpdate(world, state, target); - } else { - world.setBlockState(target, state, 18); - } - - if (data != null) { - TileEntity tile = world.getTileEntity(target); - if (tile != null) { - data.putInt("x", target.getX()); - data.putInt("y", target.getY()); - data.putInt("z", target.getZ()); - if (tile instanceof KineticTileEntity) - ((KineticTileEntity) tile).warnOfMovement(); - tile.fromTag(tile.getBlockState(), data); - } - } - - try { - state.getBlock() - .onBlockPlacedBy(world, target, state, null, stack); - } catch (Exception e) { - } - } - - public static double getBounceMultiplier(Block block) { - if (block instanceof SlimeBlock) - return 0.8D; - if (block instanceof BedBlock || block instanceof SeatBlock) - return 0.66 * 0.8D; - return 0; - } - - public static boolean hasBlockSolidSide(BlockState p_220056_0_, IBlockReader p_220056_1_, BlockPos p_220056_2_, - Direction p_220056_3_) { - return !p_220056_0_.isIn(BlockTags.LEAVES) - && Block.doesSideFillSquare(p_220056_0_.getCollisionShape(p_220056_1_, p_220056_2_), p_220056_3_); - } - - public static boolean extinguishFire(World world, @Nullable PlayerEntity p_175719_1_, BlockPos p_175719_2_, - Direction p_175719_3_) { - p_175719_2_ = p_175719_2_.offset(p_175719_3_); - if (world.getBlockState(p_175719_2_) - .getBlock() == Blocks.FIRE) { - world.playEvent(p_175719_1_, 1009, p_175719_2_, 0); - world.removeBlock(p_175719_2_, false); - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/ColorHandlers.java b/src/main/java/com/simibubi/create/foundation/utility/ColorHandlers.java deleted file mode 100644 index 75e429dd1..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/ColorHandlers.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import net.minecraft.block.RedstoneWireBlock; -import net.minecraft.client.renderer.color.IBlockColor; -import net.minecraft.client.renderer.color.IItemColor; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.world.GrassColors; -import net.minecraft.world.biome.BiomeColors; - -public class ColorHandlers { - - public static IBlockColor getGrassyBlock() { - return (state, world, pos, layer) -> pos != null && world != null ? BiomeColors.getGrassColor(world, pos) - : GrassColors.get(0.5D, 1.0D); - } - - public static IItemColor getGrassyItem() { - return (stack, layer) -> GrassColors.get(0.5D, 1.0D); - } - - public static IBlockColor getRedstonePower() { - return (state, world, pos, layer) -> RedstoneWireBlock - .getWireColor(pos != null && world != null ? state.get(BlockStateProperties.POWER_0_15) : 0); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/ColorHelper.java b/src/main/java/com/simibubi/create/foundation/utility/ColorHelper.java deleted file mode 100644 index d02fb3156..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/ColorHelper.java +++ /dev/null @@ -1,127 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.awt.Color; -import java.util.UUID; - -import javax.annotation.Nonnull; - -import com.mojang.blaze3d.systems.RenderSystem; - -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class ColorHelper { - - public static int rainbowColor(int timeStep) { - int localTimeStep = timeStep % 1536; - int timeStepInPhase = localTimeStep % 256; - int phaseBlue = localTimeStep / 256; - int red = colorInPhase(phaseBlue + 4, timeStepInPhase); - int green = colorInPhase(phaseBlue + 2, timeStepInPhase); - int blue = colorInPhase(phaseBlue, timeStepInPhase); - return (red << 16) + (green << 8) + (blue); - } - - private static int colorInPhase(int phase, int progress) { - phase = phase % 6; - if (phase <= 1) - return 0; - if (phase == 2) - return progress; - if (phase <= 4) - return 255; - else - return 255 - progress; - } - - public static int applyAlpha(int color, float alpha) { - int prevAlphaChannel = (color >> 24) & 0xFF; - if (prevAlphaChannel > 0) - alpha *= prevAlphaChannel / 256f; - int alphaChannel = (int) (0xFF * MathHelper.clamp(alpha, 0, 1)); - return (color & 0xFFFFFF) | alphaChannel << 24; - } - - public static Color applyAlpha(Color c, float alpha) { - return new Color(applyAlpha(c.getRGB(), alpha), true); - } - - public static int mixColors(int color1, int color2, float w) { - int r1 = (color1 >> 16); - int g1 = (color1 >> 8) & 0xFF; - int b1 = color1 & 0xFF; - int r2 = (color2 >> 16); - int g2 = (color2 >> 8) & 0xFF; - int b2 = color2 & 0xFF; - - int color = ((int) (r1 + (r2 - r1) * w) << 16) + ((int) (g1 + (g2 - g1) * w) << 8) + (int) (b1 + (b2 - b1) * w); - - return color; - } - - @Nonnull - public static Color mixColors(@Nonnull Color c1, @Nonnull Color c2, float w) { - float[] cmp1 = c1.getRGBComponents(null); - float[] cmp2 = c2.getRGBComponents(null); - return new Color( - cmp1[0] + (cmp2[0] - cmp1[0]) * w, - cmp1[1] + (cmp2[1] - cmp1[1]) * w, - cmp1[2] + (cmp2[2] - cmp1[2]) * w, - cmp1[3] + (cmp2[3] - cmp1[3]) * w - ); - } - - @Nonnull - public static Color mixColors(@Nonnull Couple colors, float w) { - return mixColors(colors.getFirst(), colors.getSecond(), w); - } - - public static int mixAlphaColors(int color1, int color2, float w) { - int a1 = (color1 >> 24); - int r1 = (color1 >> 16) & 0xFF; - int g1 = (color1 >> 8) & 0xFF; - int b1 = color1 & 0xFF; - int a2 = (color2 >> 24); - int r2 = (color2 >> 16) & 0xFF; - int g2 = (color2 >> 8) & 0xFF; - int b2 = color2 & 0xFF; - - int color = ((int) (a1 + (a2 - a1) * w) << 24) + ((int) (r1 + (r2 - r1) * w) << 16) - + ((int) (g1 + (g2 - g1) * w) << 8) + (int) (b1 + (b2 - b1) * w); - - return color; - } - - public static void glColor(int color) { - color = mixColors(color, 0xFFFFFF, .5f); - int r = (color >> 16) & 0xFF; - int g = (color >> 8) & 0xFF; - int b = color & 0xFF; - - RenderSystem.color4f(r / 256f, g / 256f, b / 256f, 1); - } - - public static void glResetColor() { - RenderSystem.color4f(1, 1, 1, 1); - } - - public static Vector3d getRGB(int color) { - int r = (color >> 16) & 0xFF; - int g = (color >> 8) & 0xFF; - int b = color & 0xFF; - return new Vector3d(r, g, b).scale(1 / 256d); - } - - public static int colorFromUUID(UUID uuid) { - if (uuid == null) - return 0x333333; - return colorFromLong(uuid.getLeastSignificantBits()); - } - - public static int colorFromLong(long l) { - int rainbowColor = ColorHelper.rainbowColor(String.valueOf(l) - .hashCode()); - return ColorHelper.mixColors(rainbowColor, 0xFFFFFF, .5f); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Couple.java b/src/main/java/com/simibubi/create/foundation/utility/Couple.java deleted file mode 100644 index 79b4bc1ce..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/Couple.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.Iterator; -import java.util.List; -import java.util.function.BiConsumer; -import java.util.function.BiFunction; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.stream.Stream; - -import com.google.common.base.Supplier; -import com.google.common.collect.ImmutableList; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.ListNBT; - -public class Couple extends Pair implements Iterable { - - private static Couple TRUE_AND_FALSE = Couple.create(true, false); - - protected Couple(T first, T second) { - super(first, second); - } - - public static Couple create(T first, T second) { - return new Couple<>(first, second); - } - - public static Couple create(Supplier factory) { - return new Couple<>(factory.get(), factory.get()); - } - - public T get(boolean first) { - return first ? getFirst() : getSecond(); - } - - public void set(boolean first, T value) { - if (first) - setFirst(value); - else - setSecond(value); - } - - @Override - public Couple copy() { - return create(first, second); - } - - public Couple map(Function function) { - return Couple.create(function.apply(first), function.apply(second)); - } - - public Couple mapWithContext(BiFunction function) { - return Couple.create(function.apply(first, true), function.apply(second, false)); - } - - public Couple mapWithParams(BiFunction function, Couple values) { - return Couple.create(function.apply(first, values.first), function.apply(second, values.second)); - } - - public void replace(Function function) { - setFirst(function.apply(getFirst())); - setSecond(function.apply(getSecond())); - } - - public void replaceWithContext(BiFunction function) { - replaceWithParams(function, TRUE_AND_FALSE); - } - - public void replaceWithParams(BiFunction function, Couple values) { - setFirst(function.apply(getFirst(), values.getFirst())); - setSecond(function.apply(getSecond(), values.getSecond())); - } - - @Override - public void forEach(Consumer consumer) { - consumer.accept(getFirst()); - consumer.accept(getSecond()); - } - - public void forEachWithContext(BiConsumer consumer) { - forEachWithParams(consumer, TRUE_AND_FALSE); - } - - public void forEachWithParams(BiConsumer function, Couple values) { - function.accept(getFirst(), values.getFirst()); - function.accept(getSecond(), values.getSecond()); - } - - public Couple swap() { - return Couple.create(second, first); - } - - public ListNBT serializeEach(Function serializer) { - return NBTHelper.writeCompoundList(ImmutableList.of(first, second), serializer); - } - - public static Couple deserializeEach(ListNBT list, Function deserializer) { - List readCompoundList = NBTHelper.readCompoundList(list, deserializer); - return new Couple<>(readCompoundList.get(0), readCompoundList.get(1)); - } - - @Override - public Iterator iterator() { - return new Couplerator<>(this); - } - - public Stream stream() { - return Stream.of(first, second); - } - - private static class Couplerator implements Iterator { - - int state; - private Couple couple; - - public Couplerator(Couple couple) { - this.couple = couple; - state = 0; - } - - @Override - public boolean hasNext() { - return state != 2; - } - - @Override - public T next() { - state++; - if (state == 1) - return couple.first; - if (state == 2) - return couple.second; - return null; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Debug.java b/src/main/java/com/simibubi/create/foundation/utility/Debug.java deleted file mode 100644 index b52612b30..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/Debug.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import net.minecraft.client.Minecraft; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.common.thread.EffectiveSide; - -/** Deprecated so simi doensn't forget to remove debug calls **/ -@OnlyIn(value = Dist.CLIENT) -public class Debug { - - @Deprecated - public static void debugChat(ITextComponent message) { - if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.sendStatusMessage(message, false); - } - - @Deprecated - public static void debugChatAndShowStack(ITextComponent message, int depth) { - if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.sendStatusMessage(message.copy() - .append("@") - .append(debugStack(depth)), false); - } - - @Deprecated - public static void debugMessage(ITextComponent message) { - if (Minecraft.getInstance().player != null) - Minecraft.getInstance().player.sendStatusMessage(message, true); - } - - @Deprecated - public static String getLogicalSide() { - return EffectiveSide.get() - .isClient() ? "CL" : "SV"; - } - - @Deprecated - public static ITextComponent debugStack(int depth) { - StackTraceElement[] stackTraceElements = Thread.currentThread() - .getStackTrace(); - IFormattableTextComponent text = new StringTextComponent("[") - .append(new StringTextComponent(getLogicalSide()).formatted(TextFormatting.GOLD)) - .append("] "); - for (int i = 1; i < depth + 2 && i < stackTraceElements.length; i++) { - StackTraceElement e = stackTraceElements[i]; - if (e.getClassName() - .equals(Debug.class.getName())) - continue; - text.append(new StringTextComponent(e.getMethodName()).formatted(TextFormatting.YELLOW)) - .append(", "); - } - return text.append(new StringTextComponent(" ...").formatted(TextFormatting.GRAY)); - } - - @Deprecated - public static void markTemporary() {} - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/DirectionHelper.java b/src/main/java/com/simibubi/create/foundation/utility/DirectionHelper.java deleted file mode 100644 index 88ce27061..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/DirectionHelper.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import static net.minecraft.util.Direction.DOWN; -import static net.minecraft.util.Direction.EAST; -import static net.minecraft.util.Direction.NORTH; -import static net.minecraft.util.Direction.SOUTH; -import static net.minecraft.util.Direction.UP; -import static net.minecraft.util.Direction.WEST; - -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; - -/** - * A bunch of methods that got stripped out of Direction in 1.15 - * - * @author Mojang - */ -public class DirectionHelper { - - public static Direction rotateAround(Direction dir, Direction.Axis axis) { - switch (axis) { - case X: - if (dir != WEST && dir != EAST) { - return rotateX(dir); - } - - return dir; - case Y: - if (dir != UP && dir != DOWN) { - return dir.rotateY(); - } - - return dir; - case Z: - if (dir != NORTH && dir != SOUTH) { - return rotateZ(dir); - } - - return dir; - default: - throw new IllegalStateException("Unable to get CW facing for axis " + axis); - } - } - - public static Direction rotateX(Direction dir) { - switch (dir) { - case NORTH: - return DOWN; - case EAST: - case WEST: - default: - throw new IllegalStateException("Unable to get X-rotated facing of " + dir); - case SOUTH: - return UP; - case UP: - return NORTH; - case DOWN: - return SOUTH; - } - } - - public static Direction rotateZ(Direction dir) { - switch (dir) { - case EAST: - return DOWN; - case SOUTH: - default: - throw new IllegalStateException("Unable to get Z-rotated facing of " + dir); - case WEST: - return UP; - case UP: - return EAST; - case DOWN: - return WEST; - } - } - - public static Direction getPositivePerpendicular(Axis horizontalAxis) { - return horizontalAxis == Axis.X ? SOUTH : EAST; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/DyeHelper.java b/src/main/java/com/simibubi/create/foundation/utility/DyeHelper.java deleted file mode 100644 index 71e8eb98d..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/DyeHelper.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import net.minecraft.block.Blocks; -import net.minecraft.item.DyeColor; -import net.minecraft.item.Item; -import net.minecraft.util.IItemProvider; -import net.minecraftforge.common.Tags; - -public class DyeHelper { - - public static IItemProvider getWoolOfDye(DyeColor color) { - switch (color) { - case BLACK: - return Blocks.BLACK_WOOL; - case BLUE: - return Blocks.BLUE_WOOL; - case BROWN: - return Blocks.BROWN_WOOL; - case CYAN: - return Blocks.CYAN_WOOL; - case GRAY: - return Blocks.GRAY_WOOL; - case GREEN: - return Blocks.GREEN_WOOL; - case LIGHT_BLUE: - return Blocks.LIGHT_BLUE_WOOL; - case LIGHT_GRAY: - return Blocks.LIGHT_GRAY_WOOL; - case LIME: - return Blocks.LIME_WOOL; - case MAGENTA: - return Blocks.MAGENTA_WOOL; - case ORANGE: - return Blocks.ORANGE_WOOL; - case PINK: - return Blocks.PINK_WOOL; - case PURPLE: - return Blocks.PURPLE_WOOL; - case RED: - return Blocks.RED_WOOL; - case YELLOW: - return Blocks.YELLOW_WOOL; - case WHITE: - default: - return Blocks.WHITE_WOOL; - } - } - - public static Tags.IOptionalNamedTag getTagOfDye(DyeColor color) { - switch (color) { - case BLACK: - return Tags.Items.DYES_BLACK; - case BLUE: - return Tags.Items.DYES_BLUE; - case BROWN: - return Tags.Items.DYES_BROWN; - case CYAN: - return Tags.Items.DYES_CYAN; - case GRAY: - return Tags.Items.DYES_GRAY; - case GREEN: - return Tags.Items.DYES_GREEN; - case LIGHT_BLUE: - return Tags.Items.DYES_LIGHT_BLUE; - case LIGHT_GRAY: - return Tags.Items.DYES_LIGHT_GRAY; - case LIME: - return Tags.Items.DYES_LIME; - case MAGENTA: - return Tags.Items.DYES_MAGENTA; - case ORANGE: - return Tags.Items.DYES_ORANGE; - case PINK: - return Tags.Items.DYES_PINK; - case PURPLE: - return Tags.Items.DYES_PURPLE; - case RED: - return Tags.Items.DYES_RED; - case YELLOW: - return Tags.Items.DYES_YELLOW; - case WHITE: - default: - return Tags.Items.DYES_WHITE; - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/EmptyNamedTag.java b/src/main/java/com/simibubi/create/foundation/utility/EmptyNamedTag.java deleted file mode 100644 index 6e33ff6d1..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/EmptyNamedTag.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.Collections; -import java.util.List; - -import javax.annotation.ParametersAreNonnullByDefault; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.Tags; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class EmptyNamedTag implements Tags.IOptionalNamedTag { - private final ResourceLocation id; - - public EmptyNamedTag(ResourceLocation id) { - this.id = id; - } - - @Override - public boolean isDefaulted() { - return false; - } - - @Override - public ResourceLocation getId() { - return id; - } - - @Override - public boolean contains(Object p_230235_1_) { - return false; - } - - @Override - public List values() { - return Collections.emptyList(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/FilesHelper.java b/src/main/java/com/simibubi/create/foundation/utility/FilesHelper.java deleted file mode 100644 index deb9d4027..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/FilesHelper.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; - -import com.google.gson.JsonElement; -import com.google.gson.JsonParser; -import com.google.gson.internal.Streams; -import com.google.gson.stream.JsonReader; -import com.google.gson.stream.JsonWriter; -import com.simibubi.create.Create; - -import net.minecraft.nbt.CompoundNBT; - -public class FilesHelper { - - public static void createFolderIfMissing(String name) { - try { - Files.createDirectories(Paths.get(name)); - } catch (IOException e) { - Create.LOGGER.warn("Could not create Folder: {}", name); - } - } - - public static String findFirstValidFilename(String name, String folderPath, String extension) { - int index = 0; - String filename; - String filepath; - do { - filename = slug(name) + ((index == 0) ? "" : "_" + index) + "." + extension; - index++; - filepath = folderPath + "/" + filename; - } while (Files.exists(Paths.get(filepath))); - return filename; - } - - public static String slug(String name) { - return Lang.asId(name) - .replaceAll("\\W+", "_"); - } - - public static boolean saveTagCompoundAsJson(CompoundNBT compound, String path) { - try { - Files.deleteIfExists(Paths.get(path)); - JsonWriter writer = new JsonWriter(Files.newBufferedWriter(Paths.get(path), StandardOpenOption.CREATE)); - writer.setIndent(" "); - Streams.write(new JsonParser().parse(compound.toString()), writer); - writer.close(); - return true; - } catch (IOException e) { - e.printStackTrace(); - } - return false; - } - - public static boolean saveTagCompoundAsJsonCompact(CompoundNBT compound, String path) { - try { - Files.deleteIfExists(Paths.get(path)); - JsonWriter writer = new JsonWriter(Files.newBufferedWriter(Paths.get(path), StandardOpenOption.CREATE)); - Streams.write(new JsonParser().parse(compound.toString()), writer); - writer.close(); - return true; - } catch (IOException e) { - e.printStackTrace(); - } - return false; - - } - - private static JsonElement loadJson(InputStream inputStream) { - try { - JsonReader reader = new JsonReader(new BufferedReader(new InputStreamReader(inputStream))); - reader.setLenient(true); - JsonElement element = Streams.parse(reader); - reader.close(); - inputStream.close(); - return element; - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - - public static JsonElement loadJsonResource(String filepath) { - return loadJson(Create.class.getClassLoader() - .getResourceAsStream(filepath)); - } - - public static JsonElement loadJson(String filepath) { - try { - return loadJson(Files.newInputStream(Paths.get(filepath), StandardOpenOption.READ)); - } catch (IOException e) { - e.printStackTrace(); - } - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/FontHelper.java b/src/main/java/com/simibubi/create/foundation/utility/FontHelper.java deleted file mode 100644 index c81ffef70..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/FontHelper.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.text.BreakIterator; -import java.util.LinkedList; -import java.util.List; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraftforge.client.MinecraftForgeClient; - -public final class FontHelper { - - private FontHelper() {} - - public static List cutString(FontRenderer font, String text, int maxWidthPerLine) { - // Split words - List words = new LinkedList<>(); - BreakIterator iterator = BreakIterator.getLineInstance(MinecraftForgeClient.getLocale()); - iterator.setText(text); - int start = iterator.first(); - for (int end = iterator.next(); end != BreakIterator.DONE; start = end, end = iterator.next()) { - String word = text.substring(start, end); - words.add(word); - } - // Apply hard wrap - List lines = new LinkedList<>(); - StringBuilder currentLine = new StringBuilder(); - int width = 0; - for (String word : words) { - int newWidth = font.getStringWidth(word); - if (width + newWidth > maxWidthPerLine) { - if (width > 0) { - String line = currentLine.toString(); - lines.add(line); - currentLine = new StringBuilder(); - width = 0; - } else { - lines.add(word); - continue; - } - } - currentLine.append(word); - width += newWidth; - } - if (width > 0) { - lines.add(currentLine.toString()); - } - return lines; - } - - public static void drawSplitString(MatrixStack ms, FontRenderer font, String text, int x, int y, int width, - int color) { - List list = cutString(font, text, width); - Matrix4f matrix4f = ms.peek() - .getModel(); - - for (String s : list) { - float f = (float) x; - if (font.getBidiFlag()) { - int i = font.getStringWidth(font.bidiReorder(s)); - f += (float) (width - i); - } - - draw(font, s, f, (float) y, color, matrix4f, false); - y += 9; - } - } - - private static int draw(FontRenderer font, String p_228078_1_, float p_228078_2_, float p_228078_3_, - int p_228078_4_, Matrix4f p_228078_5_, boolean p_228078_6_) { - if (p_228078_1_ == null) { - return 0; - } else { - IRenderTypeBuffer.Impl irendertypebuffer$impl = IRenderTypeBuffer.immediate(Tessellator.getInstance() - .getBuffer()); - int i = font.draw(p_228078_1_, p_228078_2_, p_228078_3_, p_228078_4_, p_228078_6_, p_228078_5_, - irendertypebuffer$impl, false, 0, 15728880); - irendertypebuffer$impl.draw(); - return i; - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/ICoordinate.java b/src/main/java/com/simibubi/create/foundation/utility/ICoordinate.java deleted file mode 100644 index aa4bdcbb8..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/ICoordinate.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import net.minecraft.util.math.BlockPos; - -@FunctionalInterface -public interface ICoordinate { - float get(BlockPos from); -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java b/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java deleted file mode 100644 index ae1ca8a9d..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/IPartialSafeNBT.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import net.minecraft.nbt.CompoundNBT; - -public interface IPartialSafeNBT { - public void writeSafe(CompoundNBT compound, boolean clientPacket); -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/ISimpleReloadListener.java b/src/main/java/com/simibubi/create/foundation/utility/ISimpleReloadListener.java deleted file mode 100644 index 1b361b789..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/ISimpleReloadListener.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.Executor; - -import net.minecraft.profiler.IProfiler; -import net.minecraft.resources.IFutureReloadListener; -import net.minecraft.resources.IResourceManager; -import net.minecraft.util.Unit; - -@FunctionalInterface -public interface ISimpleReloadListener extends IFutureReloadListener { - - @Override - default CompletableFuture reload(IFutureReloadListener.IStage stage, IResourceManager resourceManager, IProfiler prepareProfiler, IProfiler applyProfiler, Executor prepareExecutor, Executor applyExecutor) { - return stage.markCompleteAwaitingOthers(Unit.INSTANCE).thenRunAsync(() -> { - onReload(resourceManager, applyProfiler); - }, applyExecutor); - } - - void onReload(IResourceManager resourceManager, IProfiler profiler); - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/IntAttached.java b/src/main/java/com/simibubi/create/foundation/utility/IntAttached.java deleted file mode 100644 index 157b533dc..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/IntAttached.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.function.Function; - -import net.minecraft.nbt.CompoundNBT; - -public class IntAttached extends Pair { - - protected IntAttached(Integer first, V second) { - super(first, second); - } - - public static IntAttached with(int number, V value) { - return new IntAttached<>(number, value); - } - - public static IntAttached withZero(V value) { - return new IntAttached<>(0, value); - } - - public boolean isZero() { - return first.intValue() == 0; - } - - public boolean exceeds(int value) { - return first.intValue() > value; - } - - public boolean isOrBelowZero() { - return first.intValue() <= 0; - } - - public void increment() { - first++; - } - - public void decrement() { - first--; - } - - public V getValue() { - return getSecond(); - } - - public CompoundNBT serializeNBT(Function serializer) { - CompoundNBT nbt = new CompoundNBT(); - nbt.put("Item", serializer.apply(getValue())); - nbt.putInt("Location", getFirst()); - return nbt; - } - - public static IntAttached read(CompoundNBT nbt, Function deserializer) { - return IntAttached.with(nbt.getInt("Location"), deserializer.apply(nbt.getCompound("Item"))); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Iterate.java b/src/main/java/com/simibubi/create/foundation/utility/Iterate.java deleted file mode 100644 index 71b621cd2..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/Iterate.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.Arrays; -import java.util.EnumSet; -import java.util.List; - -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; - -public class Iterate { - - public static final boolean[] trueAndFalse = { true, false }; - public static final int[] zeroAndOne = { 0, 1 }; - public static final int[] positiveAndNegative = { 1, -1 }; - public static final Direction[] directions = Direction.values(); - public static final Direction[] horizontalDirections = getHorizontals(); - public static final Axis[] axes = Axis.values(); - public static final EnumSet axisSet = EnumSet.allOf(Direction.Axis.class); - - private static Direction[] getHorizontals() { - Direction[] directions = new Direction[4]; - for (int i = 0; i < 4; i++) - directions[i] = Direction.byHorizontalIndex(i); - return directions; - } - - public static Direction[] directionsInAxis(Axis axis) { - switch (axis) { - case X: - return new Direction[] { Direction.EAST, Direction.WEST }; - case Y: - return new Direction[] { Direction.UP, Direction.DOWN }; - default: - case Z: - return new Direction[] { Direction.SOUTH, Direction.NORTH }; - } - } - - public static List hereAndBelow(BlockPos pos) { - return Arrays.asList(pos, pos.down()); - } - - public static List hereBelowAndAbove(BlockPos pos) { - return Arrays.asList(pos, pos.down(), pos.up()); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Lang.java b/src/main/java/com/simibubi/create/foundation/utility/Lang.java deleted file mode 100644 index 62384d800..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/Lang.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.ArrayList; -import java.util.List; -import java.util.Locale; - -import com.simibubi.create.Create; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TranslationTextComponent; - -public class Lang { - - public static TranslationTextComponent translate(String key, Object... args) { - return createTranslationTextComponent(key, args); - } - - public static TranslationTextComponent createTranslationTextComponent(String key, Object... args) { - return new TranslationTextComponent(Create.ID + "." + key, args); - } - - public static void sendStatus(PlayerEntity player, String key, Object... args) { - player.sendStatusMessage(createTranslationTextComponent(key, args), true); - } - - public static List translatedOptions(String prefix, String... keys) { - List result = new ArrayList<>(keys.length); - for (String key : keys) - result.add(translate(prefix + "." + key)); - - return result; - } - - public static String asId(String name) { - return name.toLowerCase(Locale.ROOT); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/MatrixStacker.java b/src/main/java/com/simibubi/create/foundation/utility/MatrixStacker.java deleted file mode 100644 index 11ff390c7..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/MatrixStacker.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import com.mojang.blaze3d.matrix.MatrixStack; - -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.util.math.vector.Vector3i; - -public class MatrixStacker { - - public static final Vector3d center = VecHelper.getCenterOf(BlockPos.ZERO); - static MatrixStacker instance; - - MatrixStack ms; - - public static MatrixStacker of(MatrixStack ms) { - if (instance == null) - instance = new MatrixStacker(); - instance.ms = ms; - return instance; - } - - public MatrixStacker restoreIdentity() { - MatrixStack.Entry entry = ms.peek(); - - entry.getModel() - .loadIdentity(); - entry.getNormal() - .loadIdentity(); - - return this; - } - - public MatrixStacker rotate(Direction axis, float radians) { - if (radians == 0) - return this; - ms.multiply(axis.getUnitVector() - .getRadialQuaternion(radians)); - return this; - } - - public MatrixStacker rotate(double angle, Axis axis) { - Vector3f vec = - axis == Axis.X ? Vector3f.POSITIVE_X : axis == Axis.Y ? Vector3f.POSITIVE_Y : Vector3f.POSITIVE_Z; - return multiply(vec, angle); - } - - public MatrixStacker rotateX(double angle) { - return multiply(Vector3f.POSITIVE_X, angle); - } - - public MatrixStacker rotateY(double angle) { - return multiply(Vector3f.POSITIVE_Y, angle); - } - - public MatrixStacker rotateZ(double angle) { - return multiply(Vector3f.POSITIVE_Z, angle); - } - - public MatrixStacker centre() { - return translate(center); - } - - public MatrixStacker unCentre() { - return translateBack(center); - } - - public MatrixStacker translate(Vector3i vec) { - ms.translate(vec.getX(), vec.getY(), vec.getZ()); - return this; - } - - public MatrixStacker translate(Vector3d vec) { - ms.translate(vec.x, vec.y, vec.z); - return this; - } - - public MatrixStacker translateBack(Vector3d vec) { - ms.translate(-vec.x, -vec.y, -vec.z); - return this; - } - - public MatrixStacker translate(double x, double y, double z) { - ms.translate(x, y, z); - return this; - } - - public MatrixStacker multiply(Quaternion quaternion) { - ms.multiply(quaternion); - return this; - } - - public MatrixStacker nudge(int id) { - long randomBits = (long) id * 31L * 493286711L; - randomBits = randomBits * randomBits * 4392167121L + randomBits * 98761L; - float xNudge = (((float) (randomBits >> 16 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F; - float yNudge = (((float) (randomBits >> 20 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F; - float zNudge = (((float) (randomBits >> 24 & 7L) + 0.5F) / 8.0F - 0.5F) * 0.004F; - ms.translate(xNudge, yNudge, zNudge); - return this; - } - - public MatrixStacker multiply(Vector3f axis, double angle) { - if (angle == 0) - return this; - ms.multiply(axis.getDegreesQuaternion((float) angle)); - return this; - } - - public MatrixStacker push() { - ms.push(); - return this; - } - - public MatrixStacker pop() { - ms.pop(); - return this; - } - - public MatrixStack unwrap() { - return ms; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java b/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java deleted file mode 100644 index abb7f39c5..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/NBTHelper.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; -import java.util.function.Function; - -import javax.annotation.Nonnull; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.FloatNBT; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.util.math.AxisAlignedBB; - -public class NBTHelper { - - public static void putMarker(CompoundNBT nbt, String marker) { - nbt.putBoolean(marker, true); - } - - public static > T readEnum(CompoundNBT nbt, String key, Class enumClass) { - T[] enumConstants = enumClass.getEnumConstants(); - String name = nbt.getString(key); - if (enumConstants == null) - throw new IllegalArgumentException("Non-Enum class passed to readEnum(): " + enumClass.getName()); - for (T t : enumConstants) { - if (t.name() - .equals(name)) - return t; - } - return enumConstants[0]; - } - - public static > void writeEnum(CompoundNBT nbt, String key, T enumConstant) { - nbt.putString(key, enumConstant.name()); - } - - public static ListNBT writeCompoundList(Iterable list, Function serializer) { - ListNBT listNBT = new ListNBT(); - list.forEach(t -> listNBT.add(serializer.apply(t))); - return listNBT; - } - - public static List readCompoundList(ListNBT listNBT, Function deserializer) { - List list = new ArrayList<>(listNBT.size()); - listNBT.forEach(inbt -> list.add(deserializer.apply((CompoundNBT) inbt))); - return list; - } - - public static void iterateCompoundList(ListNBT listNBT, Consumer consumer) { - listNBT.forEach(inbt -> consumer.accept((CompoundNBT) inbt)); - } - - public static ListNBT writeItemList(List stacks) { - return writeCompoundList(stacks, ItemStack::serializeNBT); - } - - public static List readItemList(ListNBT stacks) { - return readCompoundList(stacks, ItemStack::read); - } - - public static ListNBT writeAABB(AxisAlignedBB bb) { - ListNBT bbtag = new ListNBT(); - bbtag.add(FloatNBT.of((float) bb.minX)); - bbtag.add(FloatNBT.of((float) bb.minY)); - bbtag.add(FloatNBT.of((float) bb.minZ)); - bbtag.add(FloatNBT.of((float) bb.maxX)); - bbtag.add(FloatNBT.of((float) bb.maxY)); - bbtag.add(FloatNBT.of((float) bb.maxZ)); - return bbtag; - } - - public static AxisAlignedBB readAABB(ListNBT bbtag) { - if (bbtag == null || bbtag.isEmpty()) - return null; - return new AxisAlignedBB(bbtag.getFloat(0), bbtag.getFloat(1), bbtag.getFloat(2), bbtag.getFloat(3), - bbtag.getFloat(4), bbtag.getFloat(5)); - - } - - @Nonnull - public static INBT getINBT(CompoundNBT nbt, String id) { - INBT inbt = nbt.get(id); - if (inbt != null) - return inbt; - return new CompoundNBT(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java b/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java deleted file mode 100644 index cf919904a..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/NBTProcessors.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.UnaryOperator; - -import javax.annotation.Nullable; - -import com.simibubi.create.AllTileEntities; -import com.simibubi.create.content.logistics.item.filter.FilterItem; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.tileentity.MobSpawnerTileEntity; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityType; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.common.util.Constants; - -public final class NBTProcessors { - - private static final Map, UnaryOperator> processors = new HashMap<>(); - private static final Map, UnaryOperator> survivalProcessors = new HashMap<>(); - - public static synchronized void addProcessor(TileEntityType type, UnaryOperator processor) { - processors.put(type, processor); - } - - public static synchronized void addSurvivalProcessor(TileEntityType type, UnaryOperator processor) { - survivalProcessors.put(type, processor); - } - - static { - addProcessor(TileEntityType.SIGN, data -> { - for (int i = 0; i < 4; ++i) { - if (textComponentHasClickEvent(data.getString("Text" + (i + 1)))) - return null; - } - return data; - }); - addProcessor(TileEntityType.LECTERN, data -> { - if (!data.contains("Book", Constants.NBT.TAG_COMPOUND)) - return data; - CompoundNBT book = data.getCompound("Book"); - - if (!book.contains("tag", Constants.NBT.TAG_COMPOUND)) - return data; - CompoundNBT tag = book.getCompound("tag"); - - if (!tag.contains("pages", Constants.NBT.TAG_LIST)) - return data; - ListNBT pages = tag.getList("pages", Constants.NBT.TAG_STRING); - - for (INBT inbt : pages) { - if (textComponentHasClickEvent(inbt.getString())) - return null; - } - return data; - }); - addSurvivalProcessor(AllTileEntities.FUNNEL.get(), data -> { - if (data.contains("Filter")) { - ItemStack filter = ItemStack.read(data.getCompound("Filter")); - if (filter.getItem() instanceof FilterItem) - data.remove("Filter"); - } - return data; - }); - } - - public static boolean textComponentHasClickEvent(String json) { - ITextComponent component = ITextComponent.Serializer.fromJson(json.isEmpty() ? "\"\"" : json); - return component != null && component.getStyle() != null && component.getStyle().getClickEvent() != null; - } - - private NBTProcessors() { - } - - @Nullable - public static CompoundNBT process(TileEntity tileEntity, CompoundNBT compound, boolean survival) { - if (compound == null) - return null; - TileEntityType type = tileEntity.getType(); - if (survival && survivalProcessors.containsKey(type)) - compound = survivalProcessors.get(type) - .apply(compound); - if (compound != null && processors.containsKey(type)) - return processors.get(type) - .apply(compound); - if (tileEntity instanceof MobSpawnerTileEntity) - return compound; - if (tileEntity.onlyOpsCanSetNbt()) - return null; - return compound; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Pair.java b/src/main/java/com/simibubi/create/foundation/utility/Pair.java deleted file mode 100644 index 908e7047c..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/Pair.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.Objects; - -public class Pair { - - F first; - S second; - - protected Pair(F first, S second) { - this.first = first; - this.second = second; - } - - public static Pair of(F first, S second) { - return new Pair<>(first, second); - } - - public F getFirst() { - return first; - } - - public S getSecond() { - return second; - } - - public void setFirst(F first) { - this.first = first; - } - - public void setSecond(S second) { - this.second = second; - } - - public Pair copy() { - return Pair.of(first, second); - } - - @Override - public boolean equals(final Object obj) { - if (obj == this) - return true; - if (obj instanceof Pair) { - final Pair other = (Pair) obj; - return Objects.equals(first, other.first) && Objects.equals(second, other.second); - } - return false; - } - - @Override - public int hashCode() { - return (nullHash(first) * 31) ^ nullHash(second); - } - - int nullHash(Object o) { - return o == null ? 0 : o.hashCode(); - } - - @Override - public String toString() { - return "(" + first + ", " + second + ")"; - } - - public Pair swap() { - return Pair.of(second, first); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/Pointing.java b/src/main/java/com/simibubi/create/foundation/utility/Pointing.java deleted file mode 100644 index c9eac4486..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/Pointing.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.IStringSerializable; - -public enum Pointing implements IStringSerializable { - UP(0), LEFT(270), DOWN(180), RIGHT(90); - - private int xRotation; - - private Pointing(int xRotation) { - this.xRotation = xRotation; - } - - @Override - public String getString() { - return Lang.asId(name()); - } - - public int getXRotation() { - return xRotation; - } - - public Direction getCombinedDirection(Direction direction) { - Axis axis = direction.getAxis(); - Direction top = axis == Axis.Y ? Direction.SOUTH : Direction.UP; - int rotations = direction.getAxisDirection() == AxisDirection.NEGATIVE ? 4 - ordinal() : ordinal(); - for (int i = 0; i < rotations; i++) - top = DirectionHelper.rotateAround(top, axis); - return top; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/RaycastHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RaycastHelper.java deleted file mode 100644 index 057c2b378..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/RaycastHelper.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.function.Predicate; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.math.RayTraceContext.BlockMode; -import net.minecraft.util.math.RayTraceContext.FluidMode; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; - -public class RaycastHelper { - - public static BlockRayTraceResult rayTraceRange(World worldIn, PlayerEntity playerIn, double range) { - Vector3d origin = getTraceOrigin(playerIn); - Vector3d target = getTraceTarget(playerIn, range, origin); - RayTraceContext context = new RayTraceContext(origin, target, BlockMode.COLLIDER, FluidMode.NONE, playerIn); - return worldIn.rayTraceBlocks(context); - } - - public static PredicateTraceResult rayTraceUntil(PlayerEntity playerIn, double range, - Predicate predicate) { - Vector3d origin = getTraceOrigin(playerIn); - Vector3d target = getTraceTarget(playerIn, range, origin); - return rayTraceUntil(origin, target, predicate); - } - - public static Vector3d getTraceTarget(PlayerEntity playerIn, double range, Vector3d origin) { - float f = playerIn.rotationPitch; - float f1 = playerIn.rotationYaw; - float f2 = MathHelper.cos(-f1 * 0.017453292F - (float) Math.PI); - float f3 = MathHelper.sin(-f1 * 0.017453292F - (float) Math.PI); - float f4 = -MathHelper.cos(-f * 0.017453292F); - float f5 = MathHelper.sin(-f * 0.017453292F); - float f6 = f3 * f4; - float f7 = f2 * f4; - double d3 = range; - Vector3d Vector3d1 = origin.add((double) f6 * d3, (double) f5 * d3, (double) f7 * d3); - return Vector3d1; - } - - public static Vector3d getTraceOrigin(PlayerEntity playerIn) { - double d0 = playerIn.getX(); - double d1 = playerIn.getY() + (double) playerIn.getEyeHeight(); - double d2 = playerIn.getZ(); - Vector3d Vector3d = new Vector3d(d0, d1, d2); - return Vector3d; - } - - public static PredicateTraceResult rayTraceUntil(Vector3d start, Vector3d end, Predicate predicate) { - if (Double.isNaN(start.x) || Double.isNaN(start.y) || Double.isNaN(start.z)) - return null; - if (Double.isNaN(end.x) || Double.isNaN(end.y) || Double.isNaN(end.z)) - return null; - - int dx = MathHelper.floor(end.x); - int dy = MathHelper.floor(end.y); - int dz = MathHelper.floor(end.z); - int x = MathHelper.floor(start.x); - int y = MathHelper.floor(start.y); - int z = MathHelper.floor(start.z); - - BlockPos currentPos = new BlockPos(x, y, z); - - if (predicate.test(currentPos)) - return new PredicateTraceResult(currentPos, Direction.getFacingFromVector(dx - x, dy - y, dz - z)); - - int remainingDistance = 200; - - while (remainingDistance-- >= 0) { - if (Double.isNaN(start.x) || Double.isNaN(start.y) || Double.isNaN(start.z)) { - return null; - } - - if (x == dx && y == dy && z == dz) { - return new PredicateTraceResult(); - } - - boolean flag2 = true; - boolean flag = true; - boolean flag1 = true; - double d0 = 999.0D; - double d1 = 999.0D; - double d2 = 999.0D; - - if (dx > x) { - d0 = (double) x + 1.0D; - } else if (dx < x) { - d0 = (double) x + 0.0D; - } else { - flag2 = false; - } - - if (dy > y) { - d1 = (double) y + 1.0D; - } else if (dy < y) { - d1 = (double) y + 0.0D; - } else { - flag = false; - } - - if (dz > z) { - d2 = (double) z + 1.0D; - } else if (dz < z) { - d2 = (double) z + 0.0D; - } else { - flag1 = false; - } - - double d3 = 999.0D; - double d4 = 999.0D; - double d5 = 999.0D; - double d6 = end.x - start.x; - double d7 = end.y - start.y; - double d8 = end.z - start.z; - - if (flag2) { - d3 = (d0 - start.x) / d6; - } - - if (flag) { - d4 = (d1 - start.y) / d7; - } - - if (flag1) { - d5 = (d2 - start.z) / d8; - } - - if (d3 == -0.0D) { - d3 = -1.0E-4D; - } - - if (d4 == -0.0D) { - d4 = -1.0E-4D; - } - - if (d5 == -0.0D) { - d5 = -1.0E-4D; - } - - Direction enumfacing; - - if (d3 < d4 && d3 < d5) { - enumfacing = dx > x ? Direction.WEST : Direction.EAST; - start = new Vector3d(d0, start.y + d7 * d3, start.z + d8 * d3); - } else if (d4 < d5) { - enumfacing = dy > y ? Direction.DOWN : Direction.UP; - start = new Vector3d(start.x + d6 * d4, d1, start.z + d8 * d4); - } else { - enumfacing = dz > z ? Direction.NORTH : Direction.SOUTH; - start = new Vector3d(start.x + d6 * d5, start.y + d7 * d5, d2); - } - - x = MathHelper.floor(start.x) - (enumfacing == Direction.EAST ? 1 : 0); - y = MathHelper.floor(start.y) - (enumfacing == Direction.UP ? 1 : 0); - z = MathHelper.floor(start.z) - (enumfacing == Direction.SOUTH ? 1 : 0); - currentPos = new BlockPos(x, y, z); - - if (predicate.test(currentPos)) - return new PredicateTraceResult(currentPos, enumfacing); - } - - return new PredicateTraceResult(); - } - - public static class PredicateTraceResult { - private BlockPos pos; - private Direction facing; - - public PredicateTraceResult(BlockPos pos, Direction facing) { - this.pos = pos; - this.facing = facing; - } - - public PredicateTraceResult() { - // missed, no result - } - - public Direction getFacing() { - return facing; - } - - public BlockPos getPos() { - return pos; - } - - public boolean missed() { - return this.pos == null; - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java b/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java deleted file mode 100644 index cf9877283..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/RemapHelper.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import static com.simibubi.create.AllBlocks.ADJUSTABLE_CRATE; -import static com.simibubi.create.AllBlocks.ADJUSTABLE_PULSE_REPEATER; -import static com.simibubi.create.AllBlocks.ADJUSTABLE_REPEATER; -import static com.simibubi.create.AllBlocks.ANDESITE_ENCASED_SHAFT; -import static com.simibubi.create.AllBlocks.BRASS_BELT_FUNNEL; -import static com.simibubi.create.AllBlocks.BRASS_TUNNEL; -import static com.simibubi.create.AllBlocks.CONTENT_OBSERVER; -import static com.simibubi.create.AllBlocks.LINEAR_CHASSIS; -import static com.simibubi.create.AllBlocks.MECHANICAL_DRILL; -import static com.simibubi.create.AllBlocks.MECHANICAL_HARVESTER; -import static com.simibubi.create.AllBlocks.MECHANICAL_PLOUGH; -import static com.simibubi.create.AllBlocks.MECHANICAL_SAW; -import static com.simibubi.create.AllBlocks.PISTON_EXTENSION_POLE; -import static com.simibubi.create.AllBlocks.POWERED_LATCH; -import static com.simibubi.create.AllBlocks.POWERED_TOGGLE_LATCH; -import static com.simibubi.create.AllBlocks.RADIAL_CHASSIS; -import static com.simibubi.create.AllBlocks.REDSTONE_CONTACT; -import static com.simibubi.create.AllBlocks.REDSTONE_LINK; -import static com.simibubi.create.AllBlocks.SECONDARY_LINEAR_CHASSIS; -import static com.simibubi.create.AllBlocks.SPEEDOMETER; -import static com.simibubi.create.AllBlocks.STOCKPILE_SWITCH; -import static com.simibubi.create.AllBlocks.STRESSOMETER; -import static com.simibubi.create.AllItems.ATTRIBUTE_FILTER; -import static com.simibubi.create.AllItems.CRAFTER_SLOT_COVER; -import static com.simibubi.create.AllItems.CRUSHED_COPPER; -import static com.simibubi.create.AllItems.CRUSHED_GOLD; -import static com.simibubi.create.AllItems.CRUSHED_IRON; -import static com.simibubi.create.AllItems.CRUSHED_ZINC; -import static com.simibubi.create.AllItems.GOLDEN_SHEET; -import static com.simibubi.create.AllItems.LAPIS_SHEET; -import static com.simibubi.create.AllItems.POWDERED_OBSIDIAN; -import static com.simibubi.create.AllItems.SCHEMATIC; -import static com.simibubi.create.AllItems.SCHEMATIC_AND_QUILL; -import static com.simibubi.create.AllItems.WAND_OF_SYMMETRY; -import static com.simibubi.create.AllItems.WHEAT_FLOUR; -import static com.simibubi.create.AllItems.WORLDSHAPER; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.ACACIA_WINDOW; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.ACACIA_WINDOW_PANE; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.BIRCH_WINDOW; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.BIRCH_WINDOW_PANE; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.DARK_OAK_WINDOW; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.DARK_OAK_WINDOW_PANE; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.JUNGLE_WINDOW; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.JUNGLE_WINDOW_PANE; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.OAK_WINDOW; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.OAK_WINDOW_PANE; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.ORNATE_IRON_WINDOW; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.ORNATE_IRON_WINDOW_PANE; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.SPRUCE_WINDOW; -import static com.simibubi.create.content.palettes.AllPaletteBlocks.SPRUCE_WINDOW_PANE; - -import java.util.HashMap; -import java.util.Map; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.Create; - -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.ModContainer; -import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.ForgeRegistries; - -@Mod.EventBusSubscriber -public class RemapHelper { - private static final Map reMap = new HashMap<>(); - - static { - reMap.put("toggle_latch", POWERED_TOGGLE_LATCH.getId()); - reMap.put("encased_shaft", ANDESITE_ENCASED_SHAFT.getId()); - reMap.put("encased_belt", AllBlocks.ENCASED_CHAIN_DRIVE.getId()); - reMap.put("adjustable_pulley", AllBlocks.ADJUSTABLE_CHAIN_GEARSHIFT.getId()); -// reMap.put("linked_extractor", ); - reMap.put("limestone_stairs", Create.asResource("polished_limestone_stairs")); -// reMap.put("window_in_a_block", ); - reMap.put("weathered_limestone_layers", Create.asResource("layered_weathered_limestone")); - reMap.put("stockswitch", STOCKPILE_SWITCH.getId()); - reMap.put("indented_gabbro_slab", Create.asResource("polished_gabbro_slab")); -// reMap.put("vertical_extractor", ); - reMap.put("andesite_layers", Create.asResource("layered_andesite")); - reMap.put("scoria_layers", Create.asResource("layered_scoria")); -// reMap.put("extractor", ); -// reMap.put("linked_transposer", ); - reMap.put("dark_scoria_tiles_stairs", Create.asResource("dark_scoria_bricks_stairs")); - reMap.put("redstone_latch", POWERED_LATCH.getId()); - reMap.put("oak_glass", OAK_WINDOW.getId()); - reMap.put("spruce_glass_pane", SPRUCE_WINDOW_PANE.getId()); - reMap.put("dolomite_stairs", Create.asResource("polished_dolomite_stairs")); - reMap.put("contact", REDSTONE_CONTACT.getId()); - reMap.put("paved_gabbro_bricks", Create.asResource("paved_gabbro")); - reMap.put("slightly_mossy_gabbro_bricks", Create.asResource("mossy_gabbro")); - reMap.put("limestone_wall", Create.asResource("polished_limestone_wall")); - reMap.put("acacia_glass_pane", ACACIA_WINDOW_PANE.getId()); - reMap.put("dark_oak_glass", DARK_OAK_WINDOW.getId()); -// reMap.put("vertical_linked_extractor", ); -// reMap.put("vertical_funnel", ); -// reMap.put("vertical_linked_transposer", ); - reMap.put("dark_oak_glass_pane", DARK_OAK_WINDOW_PANE.getId()); - reMap.put("belt_funnel", BRASS_BELT_FUNNEL.getId()); - reMap.put("dark_scoria_tiles", Create.asResource("dark_scoria_bricks")); - reMap.put("acacia_glass", ACACIA_WINDOW.getId()); - reMap.put("dark_scoria_tiles_slab", Create.asResource("dark_scoria_bricks_slab")); - reMap.put("weathered_limestone_stairs", Create.asResource("polished_weathered_limestone_stairs")); - reMap.put("dolomite_layers", Create.asResource("layered_dolomite")); - reMap.put("jungle_glass", JUNGLE_WINDOW.getId()); -// reMap.put("transposer", ); - reMap.put("iron_glass", ORNATE_IRON_WINDOW.getId()); - reMap.put("limestone_slab", Create.asResource("polished_limestone_slab")); - reMap.put("entity_detector", CONTENT_OBSERVER.getId()); - reMap.put("flexcrate", ADJUSTABLE_CRATE.getId()); - reMap.put("scoria_slab", Create.asResource("polished_scoria_slab")); - reMap.put("birch_glass", BIRCH_WINDOW.getId()); - reMap.put("saw", MECHANICAL_SAW.getId()); -// reMap.put("vertical_transposer", ); - reMap.put("flexpulsepeater", ADJUSTABLE_PULSE_REPEATER.getId()); - reMap.put("dolomite_wall", Create.asResource("polished_dolomite_wall")); - reMap.put("gabbro_layers", Create.asResource("layered_gabbro")); - reMap.put("scoria_wall", Create.asResource("polished_scoria_wall")); - reMap.put("stress_gauge", STRESSOMETER.getId()); - reMap.put("gabbro_slab", Create.asResource("polished_gabbro_slab")); - reMap.put("spruce_glass", SPRUCE_WINDOW.getId()); -// reMap.put("cocoa_log", ); - reMap.put("iron_glass_pane", ORNATE_IRON_WINDOW_PANE.getId()); - reMap.put("birch_glass_pane", BIRCH_WINDOW_PANE.getId()); - reMap.put("harvester", MECHANICAL_HARVESTER.getId()); - reMap.put("dolomite_slab", Create.asResource("polished_dolomite_slab")); - reMap.put("plough", MECHANICAL_PLOUGH.getId()); - reMap.put("mossy_gabbro_bricks", Create.asResource("overgrown_gabbro")); - reMap.put("paved_gabbro_bricks_slab", Create.asResource("paved_gabbro_slab")); - reMap.put("gabbro_wall", Create.asResource("polished_gabbro_wall")); - reMap.put("granite_layers", Create.asResource("layered_granite")); - reMap.put("indented_gabbro", Create.asResource("polished_gabbro")); - reMap.put("drill", MECHANICAL_DRILL.getId()); - reMap.put("flexpeater", ADJUSTABLE_REPEATER.getId()); - reMap.put("rotation_chassis", RADIAL_CHASSIS.getId()); - reMap.put("scoria_stairs", Create.asResource("polished_scoria_stairs")); - reMap.put("weathered_limestone_wall", Create.asResource("polished_weathered_limestone_wall")); - reMap.put("belt_tunnel", BRASS_TUNNEL.getId()); - reMap.put("redstone_bridge", REDSTONE_LINK.getId()); - reMap.put("speed_gauge", SPEEDOMETER.getId()); - reMap.put("diorite_layers", Create.asResource("layered_diorite")); - reMap.put("oak_glass_pane", OAK_WINDOW_PANE.getId()); - reMap.put("translation_chassis", LINEAR_CHASSIS.getId()); -// reMap.put("symmetry_tripleplane", Create.asResource("")); - reMap.put("weathered_limestone_slab", Create.asResource("polished_weathered_limestone_slab")); - reMap.put("gabbro_stairs", Create.asResource("polished_gabbro_stairs")); - reMap.put("limestone_layers", Create.asResource("layered_limestone")); -// reMap.put("symmetry_plane", Create.asResource("")); - reMap.put("translation_chassis_secondary", SECONDARY_LINEAR_CHASSIS.getId()); - reMap.put("jungle_glass_pane", JUNGLE_WINDOW_PANE.getId()); - reMap.put("piston_pole", PISTON_EXTENSION_POLE.getId()); - -// reMap.put("shadow_steel_sword", ); - reMap.put("lapis_plate", LAPIS_SHEET.getId()); - reMap.put("crushed_copper", CRUSHED_COPPER.getId()); - reMap.put("empty_blueprint", SCHEMATIC.getId()); -// reMap.put("shadow_steel_mattock", ); -// reMap.put("rose_quartz_sword", ); - reMap.put("gold_sheet", GOLDEN_SHEET.getId()); - reMap.put("flour", WHEAT_FLOUR.getId()); -// reMap.put("encased_shaft", ); - reMap.put("blueprint_and_quill", SCHEMATIC_AND_QUILL.getId()); - reMap.put("crushed_iron", CRUSHED_IRON.getId()); -// reMap.put("blazing_axe", ); - reMap.put("slot_cover", CRAFTER_SLOT_COVER.getId()); - reMap.put("blueprint", SCHEMATIC.getId()); - reMap.put("symmetry_wand", WAND_OF_SYMMETRY.getId()); - reMap.put("terrain_zapper", WORLDSHAPER.getId()); -// reMap.put("blazing_sword", ); -// reMap.put("zinc_handle", HAND_CRANK.getId()); -// reMap.put("rose_quartz_axe", ); -// reMap.put("shadow_steel_pickaxe", ); - reMap.put("crushed_zinc", CRUSHED_ZINC.getId()); -// reMap.put("rose_quartz_pickaxe", ); -// reMap.put("blazing_pickaxe", ); - reMap.put("property_filter", ATTRIBUTE_FILTER.getId()); -// reMap.put("blazing_shovel", ); - reMap.put("crushed_gold", CRUSHED_GOLD.getId()); - reMap.put("obsidian_dust", POWDERED_OBSIDIAN.getId()); -// reMap.put("rose_quartz_shovel", ); - } - - @SubscribeEvent - public static void onRemapBlocks(RegistryEvent.MissingMappings event) { - ModContainer mod = ModList.get() - .getModContainerById(Create.ID) - .orElse(null); - if (mod == null) - return; - event.setModContainer(mod); - ImmutableList> mappings = event.getMappings(); - - for (RegistryEvent.MissingMappings.Mapping mapping : mappings) { - if (reMap.containsKey(mapping.key.getPath())) { - try { - Create.LOGGER.warn("Remapping block '{}' to '{}'", mapping.key, reMap.get(mapping.key.getPath())); - mapping.remap(ForgeRegistries.BLOCKS.getValue(reMap.get(mapping.key.getPath()))); - } catch (Throwable t) { - Create.LOGGER.warn("Remapping block '{}' to '{}' failed: {}", mapping.key, - reMap.get(mapping.key.getPath()), t); - } - } - } - } - - @SubscribeEvent - public static void onRemapItems(RegistryEvent.MissingMappings event) { - ModContainer mod = ModList.get() - .getModContainerById(Create.ID) - .orElse(null); - if (mod == null) - return; - event.setModContainer(mod); - ImmutableList> mappings = event.getMappings(); - - for (RegistryEvent.MissingMappings.Mapping mapping : mappings) { - if (reMap.containsKey(mapping.key.getPath())) { - try { - Create.LOGGER.warn("Remapping item '{}' to '{}'", mapping.key, reMap.get(mapping.key.getPath())); - mapping.remap(ForgeRegistries.ITEMS.getValue(reMap.get(mapping.key.getPath()))); - } catch (Throwable t) { - Create.LOGGER.warn("Remapping item '{}' to '{}' failed: {}", mapping.key, - reMap.get(mapping.key.getPath()), t); - } - } - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/ServerSpeedProvider.java b/src/main/java/com/simibubi/create/foundation/utility/ServerSpeedProvider.java deleted file mode 100644 index 45e7e224b..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/ServerSpeedProvider.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.function.Supplier; - -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.networking.SimplePacketBase; - -import net.minecraft.client.Minecraft; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.network.NetworkEvent.Context; -import net.minecraftforge.fml.network.PacketDistributor; - -public class ServerSpeedProvider { - - static int clientTimer = 0; - static int serverTimer = 0; - static boolean initialized = false; - static InterpolatedChasingValue modifier = new InterpolatedChasingValue().withSpeed(.25f); - - public static void serverTick() { - serverTimer++; - if (serverTimer > getSyncInterval()) { - AllPackets.channel.send(PacketDistributor.ALL.noArg(), new Packet()); - serverTimer = 0; - } - } - - @OnlyIn(Dist.CLIENT) - public static void clientTick() { - if (Minecraft.getInstance() - .isSingleplayer() - && Minecraft.getInstance() - .isGamePaused()) - return; - modifier.tick(); - clientTimer++; - } - - public static Integer getSyncInterval() { - return AllConfigs.SERVER.tickrateSyncTimer.get(); - } - - public static float get() { - return modifier.value; - } - - public static class Packet extends SimplePacketBase { - - public Packet() {} - - public Packet(PacketBuffer buffer) {} - - @Override - public void write(PacketBuffer buffer) {} - - @Override - public void handle(Supplier context) { - context.get() - .enqueueWork(() -> { - if (!initialized) { - initialized = true; - clientTimer = 0; - return; - } - float target = ((float) getSyncInterval()) / Math.max(clientTimer, 1); - modifier.target(Math.min(target, 1)); - clientTimer = 0; - - }); - context.get() - .setPacketHandled(true); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java b/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java deleted file mode 100644 index d1191082d..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/TreeCutter.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; -import java.util.function.BiConsumer; -import java.util.function.Predicate; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -import com.simibubi.create.AllTags; - -import net.minecraft.block.BambooBlock; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.CactusBlock; -import net.minecraft.block.ChorusFlowerBlock; -import net.minecraft.block.ChorusPlantBlock; -import net.minecraft.block.KelpBlock; -import net.minecraft.block.KelpTopBlock; -import net.minecraft.block.LeavesBlock; -import net.minecraft.block.SugarCaneBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.tags.BlockTags; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.World; - -public class TreeCutter { - public static final Tree NO_TREE = new Tree(Collections.emptyList(), Collections.emptyList()); - - /** - * Finds a tree at the given pos. Block at the position should be air - * - * @param reader - * @param pos - * @return null if not found or not fully cut - */ - @Nonnull - public static Tree findTree(@Nullable IBlockReader reader, BlockPos pos) { - if (reader == null) - return NO_TREE; - - List logs = new ArrayList<>(); - List leaves = new ArrayList<>(); - Set visited = new HashSet<>(); - List frontier = new LinkedList<>(); - - // Bamboo, Sugar Cane, Cactus - BlockState stateAbove = reader.getBlockState(pos.up()); - if (isVerticalPlant(stateAbove)) { - logs.add(pos.up()); - for (int i = 1; i < 256; i++) { - BlockPos current = pos.up(i); - if (!isVerticalPlant(reader.getBlockState(current))) - break; - logs.add(current); - } - Collections.reverse(logs); - return new Tree(logs, leaves); - } - - // Chorus - if (isChorus(stateAbove)) { - frontier.add(pos.up()); - while (!frontier.isEmpty()) { - BlockPos current = frontier.remove(0); - visited.add(current); - logs.add(current); - for (Direction direction : Iterate.directions) { - BlockPos offset = current.offset(direction); - if (visited.contains(offset)) - continue; - if (!isChorus(reader.getBlockState(offset))) - continue; - frontier.add(offset); - } - } - Collections.reverse(logs); - return new Tree(logs, leaves); - } - - // Regular Tree - if (!validateCut(reader, pos)) - return NO_TREE; - - visited.add(pos); - BlockPos.getAllInBox(pos.add(-1, 0, -1), pos.add(1, 1, 1)) - .forEach(p -> frontier.add(new BlockPos(p))); - - // Find all logs - while (!frontier.isEmpty()) { - BlockPos currentPos = frontier.remove(0); - if (visited.contains(currentPos)) - continue; - visited.add(currentPos); - - if (!isLog(reader.getBlockState(currentPos))) - continue; - logs.add(currentPos); - addNeighbours(currentPos, frontier, visited); - } - - // Find all leaves - visited.clear(); - visited.addAll(logs); - frontier.addAll(logs); - while (!frontier.isEmpty()) { - BlockPos currentPos = frontier.remove(0); - if (!logs.contains(currentPos) && visited.contains(currentPos)) - continue; - visited.add(currentPos); - - BlockState blockState = reader.getBlockState(currentPos); - boolean isLog = isLog(blockState); - boolean isLeaf = isLeaf(blockState); - boolean isGenericLeaf = isLeaf || isNonDecayingLeaf(blockState); - - if (!isLog && !isGenericLeaf) - continue; - if (isGenericLeaf) - leaves.add(currentPos); - - int distance = !isLeaf ? 0 : blockState.get(LeavesBlock.DISTANCE); - for (Direction direction : Iterate.directions) { - BlockPos offset = currentPos.offset(direction); - if (visited.contains(offset)) - continue; - BlockState state = reader.getBlockState(offset); - BlockPos subtract = offset.subtract(pos); - int horizontalDistance = Math.max(Math.abs(subtract.getX()), Math.abs(subtract.getZ())); - if (isLeaf(state) && state.get(LeavesBlock.DISTANCE) > distance - || isNonDecayingLeaf(state) && horizontalDistance < 4) - frontier.add(offset); - } - - } - - return new Tree(logs, leaves); - } - - public static boolean isChorus(BlockState stateAbove) { - return stateAbove.getBlock() instanceof ChorusPlantBlock || stateAbove.getBlock() instanceof ChorusFlowerBlock; - } - - public static boolean isVerticalPlant(BlockState stateAbove) { - Block block = stateAbove.getBlock(); - if (block instanceof BambooBlock) - return true; - if (block instanceof CactusBlock) - return true; - if (block instanceof SugarCaneBlock) - return true; - if (block instanceof KelpBlock) - return true; - return block instanceof KelpTopBlock; - } - - /** - * Checks whether a tree was fully cut by seeing whether the layer above the cut - * is not supported by any more logs. - * - * @param reader - * @param pos - * @return - */ - private static boolean validateCut(IBlockReader reader, BlockPos pos) { - Set visited = new HashSet<>(); - List frontier = new LinkedList<>(); - frontier.add(pos); - frontier.add(pos.up()); - int posY = pos.getY(); - - while (!frontier.isEmpty()) { - BlockPos currentPos = frontier.remove(0); - visited.add(currentPos); - boolean lowerLayer = currentPos.getY() == posY; - - if (!isLog(reader.getBlockState(currentPos))) - continue; - if (!lowerLayer && !pos.equals(currentPos.down()) && isLog(reader.getBlockState(currentPos.down()))) - return false; - - for (Direction direction : Iterate.directions) { - if (direction == Direction.DOWN) - continue; - if (direction == Direction.UP && !lowerLayer) - continue; - BlockPos offset = currentPos.offset(direction); - if (visited.contains(offset)) - continue; - frontier.add(offset); - } - - } - - return true; - } - - private static void addNeighbours(BlockPos pos, List frontier, Set visited) { - BlockPos.getAllInBox(pos.add(-1, -1, -1), pos.add(1, 1, 1)) - .filter(((Predicate) visited::contains).negate()) - .forEach(p -> frontier.add(new BlockPos(p))); - } - - private static boolean isLog(BlockState state) { - return state.isIn(BlockTags.LOGS) || AllTags.AllBlockTags.SLIMY_LOGS.matches(state); - } - - private static boolean isNonDecayingLeaf(BlockState state) { - return state.isIn(BlockTags.WART_BLOCKS) || state.getBlock() == Blocks.SHROOMLIGHT; - } - - private static boolean isLeaf(BlockState state) { - return state.contains(LeavesBlock.DISTANCE); - } - - public static class Tree extends AbstractBlockBreakQueue { - private final List logs; - private final List leaves; - - public Tree(List logs, List leaves) { - this.logs = logs; - this.leaves = leaves; - } - - @Override - public void destroyBlocks(World world, ItemStack toDamage, @Nullable PlayerEntity playerEntity, - BiConsumer drop) { - logs.forEach(makeCallbackFor(world, 1 / 2f, toDamage, playerEntity, drop)); - leaves.forEach(makeCallbackFor(world, 1 / 8f, toDamage, playerEntity, drop)); - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/UniqueLinkedList.java b/src/main/java/com/simibubi/create/foundation/utility/UniqueLinkedList.java deleted file mode 100644 index 83a1d82b4..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/UniqueLinkedList.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.Collection; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; - -public class UniqueLinkedList extends LinkedList { - private final HashSet contained = new HashSet<>(); - - @Override - public boolean contains(Object o) { - return contained.contains(o); - } - - @Override - public E poll() { - E e = super.poll(); - contained.remove(e); - return e; - } - - @Override - public boolean add(E e) { - if (contained.add(e)) - return super.add(e); - else - return false; - } - - @Override - public void add(int index, E element) { - if (contained.add(element)) - super.add(index, element); - } - - @Override - public void addFirst(E e) { - if (contained.add(e)) - super.addFirst(e); - } - - @Override - public void addLast(E e) { - if (contained.add(e)) - super.addLast(e); - } - - @Override - public boolean addAll(Collection c) { - List filtered = c.stream() - .filter(it -> !contained.contains(it)) - .collect(Collectors.toList()); - return super.addAll(filtered); - } - - @Override - public boolean addAll(int index, Collection c) { - List filtered = c.stream() - .filter(it -> !contained.contains(it)) - .collect(Collectors.toList()); - return super.addAll(index, filtered); - } - - @Override - public boolean remove(Object o) { - contained.remove(o); - return super.remove(o); - } - - @Override - public E remove(int index) { - E e = super.remove(index); - contained.remove(e); - return e; - } - - @Override - public E removeFirst() { - E e = super.removeFirst(); - contained.remove(e); - return e; - } - - @Override - public E removeLast() { - E e = super.removeLast(); - contained.remove(e); - return e; - } - - @Override - public void clear() { - super.clear(); - contained.clear(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java b/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java deleted file mode 100644 index 2809bf0b6..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/VecHelper.java +++ /dev/null @@ -1,218 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.Random; - -import javax.annotation.Nullable; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.nbt.DoubleNBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Quaternion; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.util.math.vector.Vector3i; - -public class VecHelper { - - public static final Vector3f ZERO_3F = new Vector3f(0, 0, 0); - public static final Vector3d CENTER_OF_ORIGIN = new Vector3d(.5, .5, .5); - - public static Vector3d rotate(Vector3d vec, Vector3d rotationVec) { - return rotate(vec, rotationVec.x, rotationVec.y, rotationVec.z); - } - - public static Vector3d rotate(Vector3d vec, double xRot, double yRot, double zRot) { - return rotate(rotate(rotate(vec, xRot, Axis.X), yRot, Axis.Y), zRot, Axis.Z); - } - - public static Vector3d rotateCentered(Vector3d vec, double deg, Axis axis) { - Vector3d shift = getCenterOf(BlockPos.ZERO); - return VecHelper.rotate(vec.subtract(shift), deg, axis) - .add(shift); - } - - public static Vector3d rotate(Vector3d vec, double deg, Axis axis) { - if (deg == 0) - return vec; - if (vec == Vector3d.ZERO) - return vec; - - float angle = (float) (deg / 180f * Math.PI); - double sin = MathHelper.sin(angle); - double cos = MathHelper.cos(angle); - double x = vec.x; - double y = vec.y; - double z = vec.z; - - if (axis == Axis.X) - return new Vector3d(x, y * cos - z * sin, z * cos + y * sin); - if (axis == Axis.Y) - return new Vector3d(x * cos + z * sin, y, z * cos - x * sin); - if (axis == Axis.Z) - return new Vector3d(x * cos - y * sin, y * cos + x * sin, z); - return vec; - } - - public static boolean isVecPointingTowards(Vector3d vec, Direction direction) { - return Vector3d.of(direction.getDirectionVec()) - .dotProduct(vec.normalize()) > 0; - // return new Vector3d(direction.getDirectionVec()).distanceTo(vec.normalize()) < .75; - } - - public static Vector3d getCenterOf(Vector3i pos) { - if (pos.equals(Vector3i.NULL_VECTOR)) - return CENTER_OF_ORIGIN; - return Vector3d.of(pos) - .add(.5f, .5f, .5f); - } - - public static Vector3d offsetRandomly(Vector3d vec, Random r, float radius) { - return new Vector3d(vec.x + (r.nextFloat() - .5f) * 2 * radius, vec.y + (r.nextFloat() - .5f) * 2 * radius, - vec.z + (r.nextFloat() - .5f) * 2 * radius); - } - - public static Vector3d axisAlingedPlaneOf(Vector3d vec) { - vec = vec.normalize(); - return new Vector3d(1, 1, 1).subtract(Math.abs(vec.x), Math.abs(vec.y), Math.abs(vec.z)); - } - - public static Vector3d axisAlingedPlaneOf(Direction face) { - return axisAlingedPlaneOf(Vector3d.of(face.getDirectionVec())); - } - - public static ListNBT writeNBT(Vector3d vec) { - ListNBT listnbt = new ListNBT(); - listnbt.add(DoubleNBT.of(vec.x)); - listnbt.add(DoubleNBT.of(vec.y)); - listnbt.add(DoubleNBT.of(vec.z)); - return listnbt; - } - - public static Vector3d readNBT(ListNBT list) { - if (list.isEmpty()) - return Vector3d.ZERO; - return new Vector3d(list.getDouble(0), list.getDouble(1), list.getDouble(2)); - } - - public static Vector3d voxelSpace(double x, double y, double z) { - return new Vector3d(x, y, z).scale(1 / 16f); - } - - public static int getCoordinate(Vector3i pos, Axis axis) { - return axis.getCoordinate(pos.getX(), pos.getY(), pos.getZ()); - } - - public static float getCoordinate(Vector3d vec, Axis axis) { - return (float) axis.getCoordinate(vec.x, vec.y, vec.z); - } - - public static boolean onSameAxis(BlockPos pos1, BlockPos pos2, Axis axis) { - if (pos1.equals(pos2)) - return true; - for (Axis otherAxis : Axis.values()) - if (axis != otherAxis) - if (getCoordinate(pos1, otherAxis) != getCoordinate(pos2, otherAxis)) - return false; - return true; - } - - public static Vector3d clamp(Vector3d vec, float maxLength) { - return vec.length() > maxLength ? vec.normalize() - .scale(maxLength) : vec; - } - - public static Vector3d lerp(float p, Vector3d from, Vector3d to) { - return from.add(to.subtract(from) - .scale(p)); - } - - public static Vector3d clampComponentWise(Vector3d vec, float maxLength) { - return new Vector3d(MathHelper.clamp(vec.x, -maxLength, maxLength), - MathHelper.clamp(vec.y, -maxLength, maxLength), MathHelper.clamp(vec.z, -maxLength, maxLength)); - } - - public static Vector3d project(Vector3d vec, Vector3d ontoVec) { - if (ontoVec.equals(Vector3d.ZERO)) - return Vector3d.ZERO; - return ontoVec.scale(vec.dotProduct(ontoVec) / ontoVec.lengthSquared()); - } - - @Nullable - public static Vector3d intersectSphere(Vector3d origin, Vector3d lineDirection, Vector3d sphereCenter, - double radius) { - if (lineDirection.equals(Vector3d.ZERO)) - return null; - if (lineDirection.length() != 1) - lineDirection = lineDirection.normalize(); - - Vector3d diff = origin.subtract(sphereCenter); - double lineDotDiff = lineDirection.dotProduct(diff); - double delta = lineDotDiff * lineDotDiff - (diff.lengthSquared() - radius * radius); - if (delta < 0) - return null; - double t = -lineDotDiff + MathHelper.sqrt(delta); - return origin.add(lineDirection.scale(t)); - } - - // https://forums.minecraftforge.net/topic/88562-116solved-3d-to-2d-conversion/?do=findComment&comment=413573 slightly modified - public static Vector3d projectToPlayerView(Vector3d target, float partialTicks) { - /* - * The (centered) location on the screen of the given 3d point in the world. - * Result is (dist right of center screen, dist up from center screen, if < 0, then in front of view plane) - */ - ActiveRenderInfo ari = Minecraft.getInstance().gameRenderer.getActiveRenderInfo(); - Vector3d camera_pos = ari.getProjectedView(); - Quaternion camera_rotation_conj = ari.getRotation() - .copy(); - camera_rotation_conj.conjugate(); - - Vector3f result3f = new Vector3f((float) (camera_pos.x - target.x), (float) (camera_pos.y - target.y), - (float) (camera_pos.z - target.z)); - result3f.func_214905_a(camera_rotation_conj); - - // ----- compensate for view bobbing (if active) ----- - // the following code adapted from GameRenderer::applyBobbing (to invert it) - Minecraft mc = Minecraft.getInstance(); - if (mc.gameSettings.viewBobbing) { - Entity renderViewEntity = mc.getRenderViewEntity(); - if (renderViewEntity instanceof PlayerEntity) { - PlayerEntity playerentity = (PlayerEntity) renderViewEntity; - float distwalked_modified = playerentity.distanceWalkedModified; - - float f = distwalked_modified - playerentity.prevDistanceWalkedModified; - float f1 = -(distwalked_modified + f * partialTicks); - float f2 = MathHelper.lerp(partialTicks, playerentity.prevCameraYaw, playerentity.cameraYaw); - Quaternion q2 = new Quaternion(Vector3f.POSITIVE_X, - Math.abs(MathHelper.cos(f1 * (float) Math.PI - 0.2F) * f2) * 5.0F, true); - q2.conjugate(); - result3f.func_214905_a(q2); - - Quaternion q1 = - new Quaternion(Vector3f.POSITIVE_Z, MathHelper.sin(f1 * (float) Math.PI) * f2 * 3.0F, true); - q1.conjugate(); - result3f.func_214905_a(q1); - - Vector3f bob_translation = new Vector3f((MathHelper.sin(f1 * (float) Math.PI) * f2 * 0.5F), - (-Math.abs(MathHelper.cos(f1 * (float) Math.PI) * f2)), 0.0f); - bob_translation.setY(-bob_translation.getY()); // this is weird but hey, if it works - result3f.add(bob_translation); - } - } - - // ----- adjust for fov ----- - float fov = (float) mc.gameRenderer.getFOVModifier(ari, partialTicks, true); - - float half_height = (float) mc.getWindow() - .getScaledHeight() / 2; - float scale_factor = half_height / (result3f.getZ() * (float) Math.tan(Math.toRadians(fov / 2))); - return new Vector3d(-result3f.getX() * scale_factor, result3f.getY() * scale_factor, result3f.getZ()); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/VoxelShaper.java b/src/main/java/com/simibubi/create/foundation/utility/VoxelShaper.java deleted file mode 100644 index 31e9645ac..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/VoxelShaper.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.function.Function; - -import org.apache.commons.lang3.mutable.MutableObject; - -import net.minecraft.block.Block; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.util.math.shapes.VoxelShapes; -import net.minecraft.util.math.vector.Vector3d; - -public class VoxelShaper { - - private Map shapes = new HashMap<>(); - - public VoxelShape get(Direction direction) { - return shapes.get(direction); - } - - public VoxelShape get(Axis axis) { - return shapes.get(axisAsFace(axis)); - } - - public static VoxelShaper forHorizontal(VoxelShape shape, Direction facing) { - return forDirectionsWithRotation(shape, facing, Direction.Plane.HORIZONTAL, new HorizontalRotationValues()); - } - - public static VoxelShaper forHorizontalAxis(VoxelShape shape, Axis along) { - return forDirectionsWithRotation(shape, axisAsFace(along), Arrays.asList(Direction.SOUTH, Direction.EAST), - new HorizontalRotationValues()); - } - - public static VoxelShaper forDirectional(VoxelShape shape, Direction facing) { - return forDirectionsWithRotation(shape, facing, Arrays.asList(Iterate.directions), new DefaultRotationValues()); - } - - public static VoxelShaper forAxis(VoxelShape shape, Axis along) { - return forDirectionsWithRotation(shape, axisAsFace(along), - Arrays.asList(Direction.SOUTH, Direction.EAST, Direction.UP), new DefaultRotationValues()); - } - - public VoxelShaper withVerticalShapes(VoxelShape upShape) { - shapes.put(Direction.UP, upShape); - shapes.put(Direction.DOWN, rotatedCopy(upShape, new Vector3d(180, 0, 0))); - return this; - } - - public VoxelShaper withShape(VoxelShape shape, Direction facing) { - shapes.put(facing, shape); - return this; - } - - public static Direction axisAsFace(Axis axis) { - return Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - } - - protected static float horizontalAngleFromDirection(Direction direction) { - return (float) ((Math.max(direction.getHorizontalIndex(), 0) & 3) * 90); - } - - protected static VoxelShaper forDirectionsWithRotation(VoxelShape shape, Direction facing, - Iterable directions, Function rotationValues) { - VoxelShaper voxelShaper = new VoxelShaper(); - for (Direction dir : directions) { - voxelShaper.shapes.put(dir, rotate(shape, facing, dir, rotationValues)); - } - return voxelShaper; - } - - protected static VoxelShape rotate(VoxelShape shape, Direction from, Direction to, - Function usingValues) { - if (from == to) - return shape; - - return rotatedCopy(shape, usingValues.apply(from) - .inverse() - .add(usingValues.apply(to))); - } - - protected static VoxelShape rotatedCopy(VoxelShape shape, Vector3d rotation) { - if (rotation.equals(Vector3d.ZERO)) - return shape; - - MutableObject result = new MutableObject<>(VoxelShapes.empty()); - Vector3d center = new Vector3d(8, 8, 8); - - shape.forEachBox((x1, y1, z1, x2, y2, z2) -> { - Vector3d v1 = new Vector3d(x1, y1, z1).scale(16) - .subtract(center); - Vector3d v2 = new Vector3d(x2, y2, z2).scale(16) - .subtract(center); - - v1 = VecHelper.rotate(v1, (float) rotation.x, Axis.X); - v1 = VecHelper.rotate(v1, (float) rotation.y, Axis.Y); - v1 = VecHelper.rotate(v1, (float) rotation.z, Axis.Z) - .add(center); - - v2 = VecHelper.rotate(v2, (float) rotation.x, Axis.X); - v2 = VecHelper.rotate(v2, (float) rotation.y, Axis.Y); - v2 = VecHelper.rotate(v2, (float) rotation.z, Axis.Z) - .add(center); - - VoxelShape rotated = Block.makeCuboidShape(v1.x, v1.y, v1.z, v2.x, v2.y, v2.z); - result.setValue(VoxelShapes.or(result.getValue(), rotated)); - }); - - return result.getValue(); - } - - protected static class DefaultRotationValues implements Function { - // assume facing up as the default rotation - @Override - public Vector3d apply(Direction direction) { - return new Vector3d(direction == Direction.UP ? 0 : (Direction.Plane.VERTICAL.test(direction) ? 180 : 90), - -horizontalAngleFromDirection(direction), 0); - } - } - - protected static class HorizontalRotationValues implements Function { - @Override - public Vector3d apply(Direction direction) { - return new Vector3d(0, -horizontalAngleFromDirection(direction), 0); - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/WorldAttached.java b/src/main/java/com/simibubi/create/foundation/utility/WorldAttached.java deleted file mode 100644 index ee9022165..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/WorldAttached.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; - -import javax.annotation.Nullable; - -import net.minecraft.world.IWorld; - -public class WorldAttached { - - static List> allMaps = new ArrayList<>(); - Map attached; - private Supplier factory; - - public WorldAttached(Supplier factory) { - this.factory = factory; - attached = new HashMap<>(); - allMaps.add(attached); - } - - public static void invalidateWorld(IWorld world) { - allMaps.forEach(m -> m.remove(world)); - } - - @Nullable - public T get(IWorld world) { - T t = attached.get(world); - if (t != null) - return t; - T entry = factory.get(); - put(world, entry); - return entry; - } - - public void put(IWorld world, T entry) { - attached.put(world, entry); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/WorldHelper.java b/src/main/java/com/simibubi/create/foundation/utility/WorldHelper.java deleted file mode 100644 index 3cd375ea9..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/WorldHelper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.simibubi.create.foundation.utility; - -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; -import net.minecraft.world.IWorld; - -public class WorldHelper { - public static ResourceLocation getDimensionID(IWorld world) { - return world.getRegistryManager() - .get(Registry.DIMENSION_TYPE_KEY) - .getKey(world.getDimension()); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/animation/Force.java b/src/main/java/com/simibubi/create/foundation/utility/animation/Force.java deleted file mode 100644 index d15b3e627..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/animation/Force.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.simibubi.create.foundation.utility.animation; - -public interface Force { - - float get(float mass, float value, float speed); - - boolean finished(); - - class Drag implements Force { - final float dragFactor; - - public Drag(float dragFactor) { - this.dragFactor = dragFactor; - } - - @Override - public float get(float mass, float value, float speed) { - return -speed * dragFactor; - } - - @Override - public boolean finished() { - return false; - } - } - - class Zeroing implements Force { - final float g; - - public Zeroing(float g) { - this.g = g / 20; - } - - @Override - public float get(float mass, float value, float speed) { - return -Math.signum(value) * g * mass; - } - - @Override - public boolean finished() { - return false; - } - } - - class Impulse implements Force { - - float force; - - public Impulse(float force) { - this.force = force; - } - - @Override - public float get(float mass, float value, float speed) { - return force; - } - - @Override - public boolean finished() { - return true; - } - } - - class OverTime implements Force { - int timeRemaining; - float f; - - public OverTime(int time, float totalAcceleration) { - this.timeRemaining = time; - this.f = totalAcceleration / (float) time; - } - - @Override - public float get(float mass, float value, float speed) { - timeRemaining--; - return f; - } - - @Override - public boolean finished() { - return timeRemaining <= 0; - } - } - - class Static implements Force { - float force; - - public Static(float force) { - this.force = force; - } - - @Override - public float get(float mass, float value, float speed) { - return force; - } - - @Override - public boolean finished() { - return false; - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/animation/LerpedFloat.java b/src/main/java/com/simibubi/create/foundation/utility/animation/LerpedFloat.java deleted file mode 100644 index 087929bb0..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/animation/LerpedFloat.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.simibubi.create.foundation.utility.animation; - -import com.simibubi.create.foundation.utility.AngleHelper; - -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.MathHelper; - -// Can replace all Interpolated value classes -// InterpolatedChasingValue, InterpolatedValue, InterpolatedChasingAngle, InterpolatedAngle -public class LerpedFloat { - - Interpolater interpolater; - float previousValue; - float value; - - Chaser chaseFunction; - float chaseTarget; - float chaseSpeed; - - boolean forcedSync; - - public LerpedFloat(Interpolater interpolater) { - this.interpolater = interpolater; - startWithValue(0); - forcedSync = true; - } - - public static LerpedFloat linear() { - return new LerpedFloat((p, c, t) -> (float) MathHelper.lerp(p, c, t)); - } - - public static LerpedFloat angular() { - return new LerpedFloat(AngleHelper::angleLerp); - } - - public LerpedFloat startWithValue(double value) { - float f = (float) value; - this.previousValue = f; - this.chaseTarget = f; - this.value = f; - return this; - } - - public LerpedFloat chase(double value, double speed, Chaser chaseFunction) { - this.chaseTarget = (float) value; - this.chaseSpeed = (float) speed; - this.chaseFunction = chaseFunction; - return this; - } - - public void updateChaseTarget(float target) { - this.chaseTarget = target; - } - - public boolean updateChaseSpeed(double speed) { - float prevSpeed = this.chaseSpeed; - this.chaseSpeed = (float) speed; - return !MathHelper.epsilonEquals(prevSpeed, speed); - } - - public void tickChaser() { - previousValue = value; - if (chaseFunction == null) - return; - if (MathHelper.epsilonEquals((double) value, chaseTarget)) { - value = chaseTarget; - return; - } - value = chaseFunction.chase(value, chaseSpeed, chaseTarget); - } - - public void setValue(double value) { - this.previousValue = this.value; - this.value = (float) value; - } - - public float getValue() { - return getValue(1); - } - - public float getValue(float partialTicks) { - return MathHelper.lerp(partialTicks, previousValue, value); - } - - public boolean settled() { - return MathHelper.epsilonEquals((double) previousValue, value); - } - - public float getChaseTarget() { - return chaseTarget; - } - - public void forceNextSync() { - forcedSync = true; - } - - public CompoundNBT writeNBT() { - CompoundNBT compoundNBT = new CompoundNBT(); - compoundNBT.putFloat("Speed", chaseSpeed); - compoundNBT.putFloat("Target", chaseTarget); - compoundNBT.putFloat("Value", value); - if (forcedSync) - compoundNBT.putBoolean("Force", true); - forcedSync = false; - return compoundNBT; - } - - public void readNBT(CompoundNBT compoundNBT, boolean clientPacket) { - if (!clientPacket || compoundNBT.contains("Force")) - startWithValue(compoundNBT.getFloat("Value")); - readChaser(compoundNBT); - } - - private void readChaser(CompoundNBT compoundNBT) { - chaseSpeed = compoundNBT.getFloat("Speed"); - chaseTarget = compoundNBT.getFloat("Target"); - } - - @FunctionalInterface - public interface Interpolater { - float interpolate(double progress, double current, double target); - } - - @FunctionalInterface - public interface Chaser { - - public static final Chaser IDLE = (c, s, t) -> (float) c; - public static final Chaser EXP = exp(Double.MAX_VALUE); - public static final Chaser LINEAR = (c, s, t) -> (float) (c + MathHelper.clamp(t - c, -s, s)); - - public static Chaser exp(double maxEffectiveSpeed) { - return (c, s, t) -> (float) (c + MathHelper.clamp((t - c) * s, -maxEffectiveSpeed, maxEffectiveSpeed)); - } - - float chase(double current, double speed, double target); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/animation/PhysicalFloat.java b/src/main/java/com/simibubi/create/foundation/utility/animation/PhysicalFloat.java deleted file mode 100644 index d56f8e35f..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/animation/PhysicalFloat.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.simibubi.create.foundation.utility.animation; - -import java.util.ArrayList; - -import net.minecraft.util.math.MathHelper; - -public class PhysicalFloat { - - float previousValue; - float value; - - float previousSpeed; - float speed; - - float mass; - - private final ArrayList forces = new ArrayList<>(); - - public static PhysicalFloat create() { - return new PhysicalFloat(1); - } - - public static PhysicalFloat create(float mass) { - return new PhysicalFloat(mass); - } - - public PhysicalFloat(float mass) { - this.mass = mass; - } - - public PhysicalFloat startAt(double value) { - previousValue = this.value = (float) value; - return this; - } - - public PhysicalFloat withDrag(double drag) { - return addForce(new Force.Drag((float) drag)); - } - - public PhysicalFloat zeroing(double g) { - return addForce(new Force.Zeroing((float) g)); - } - - public void tick() { - previousSpeed = speed; - previousValue = value; - - float totalImpulse = 0; - for (Force force : forces) - totalImpulse += force.get(mass, value, speed) / mass; - - speed += totalImpulse; - - forces.removeIf(Force::finished); - - value += speed; - } - - public PhysicalFloat addForce(Force f) { - forces.add(f); - return this; - } - - public PhysicalFloat bump(double force) { - return addForce(new Force.Impulse((float) force)); - } - - public PhysicalFloat bump(int time, double force) { - return addForce(new Force.OverTime(time, (float) force)); - } - - public float getValue() { - return getValue(1); - } - - public float getValue(float partialTicks) { - return MathHelper.lerp(partialTicks, previousValue, value); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockParams.java b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockParams.java deleted file mode 100644 index b83e7f13d..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockParams.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.simibubi.create.foundation.utility.ghost; - -import java.util.function.Supplier; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; - -public class GhostBlockParams { - - protected final BlockState state; - protected BlockPos pos; - protected Supplier alphaSupplier; - - private GhostBlockParams(BlockState state) { - this.state = state; - this.pos = BlockPos.ZERO; - this.alphaSupplier = () -> 1f; - } - - public static GhostBlockParams of(BlockState state) { - return new GhostBlockParams(state); - } - - public static GhostBlockParams of(Block block) { - return of(block.getDefaultState()); - } - - public GhostBlockParams at(BlockPos pos) { - this.pos = pos; - return this; - } - - public GhostBlockParams at(int x, int y, int z) { - return this.at(new BlockPos(x, y, z)); - } - - public GhostBlockParams alpha(Supplier alphaSupplier) { - this.alphaSupplier = alphaSupplier; - return this; - } - - public GhostBlockParams alpha(float alpha) { - return this.alpha(() -> alpha); - } - - public GhostBlockParams breathingAlpha() { - return this.alpha(() -> (float) GhostBlocks.getBreathingAlpha()); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java deleted file mode 100644 index 6878acf40..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlockRenderer.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.simibubi.create.foundation.utility.ghost; - -import java.nio.Buffer; -import java.nio.ByteBuffer; -import java.nio.IntBuffer; -import java.util.List; -import java.util.Random; - -import javax.annotation.Nullable; - -import org.lwjgl.system.MemoryStack; - -import com.jozufozu.flywheel.util.VirtualEmptyModelData; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.utility.placement.PlacementHelpers; - -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BlockRendererDispatcher; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.renderer.WorldRenderer; -import net.minecraft.client.renderer.model.BakedQuad; -import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.util.math.vector.Vector4f; - -public abstract class GhostBlockRenderer { - - private static final GhostBlockRenderer transparent = new TransparentGhostBlockRenderer(); - - public static GhostBlockRenderer transparent() { - return transparent; - } - - private static final GhostBlockRenderer standard = new DefaultGhostBlockRenderer(); - - public static GhostBlockRenderer standard() { - return standard; - } - - public abstract void render(MatrixStack ms, SuperRenderTypeBuffer buffer, GhostBlockParams params); - - private static class DefaultGhostBlockRenderer extends GhostBlockRenderer { - - public void render(MatrixStack ms, SuperRenderTypeBuffer buffer, GhostBlockParams params) { - ms.push(); - - BlockRendererDispatcher dispatcher = Minecraft.getInstance() - .getBlockRendererDispatcher(); - - IBakedModel model = dispatcher.getModelForState(params.state); - - RenderType layer = RenderTypeLookup.getEntityBlockLayer(params.state, false); - IVertexBuilder vb = buffer.getEarlyBuffer(layer); - - BlockPos pos = params.pos; - ms.translate(pos.getX(), pos.getY(), pos.getZ()); - - dispatcher.getBlockModelRenderer() - .renderModel(ms.peek(), vb, params.state, model, 1f, 1f, 1f, 0xF000F0, OverlayTexture.DEFAULT_UV, - VirtualEmptyModelData.INSTANCE); - - ms.pop(); - } - - } - - private static class TransparentGhostBlockRenderer extends GhostBlockRenderer { - - public void render(MatrixStack ms, SuperRenderTypeBuffer buffer, GhostBlockParams params) { - - // prepare - ms.push(); - - // RenderSystem.pushMatrix(); - - Minecraft mc = Minecraft.getInstance(); - BlockRendererDispatcher dispatcher = mc.getBlockRendererDispatcher(); - - IBakedModel model = dispatcher.getModelForState(params.state); - - // RenderType layer = RenderTypeLookup.getEntityBlockLayer(params.state); - RenderType layer = RenderType.getTranslucent(); - IVertexBuilder vb = buffer.getEarlyBuffer(layer); - - BlockPos pos = params.pos; - ms.translate(pos.getX(), pos.getY(), pos.getZ()); - - ms.translate(.5, .5, .5); - ms.scale(.85f, .85f, .85f); - ms.translate(-.5, -.5, -.5); - - // dispatcher.getBlockModelRenderer().renderModel(ms.peek(), vb, params.state, model, 1f, 1f, 1f, 0xF000F0, OverlayTexture.DEFAULT_UV, VirtualEmptyModelData.INSTANCE); - renderModel(params, ms.peek(), vb, params.state, model, 1f, 1f, 1f, - WorldRenderer.getLightmapCoordinates(mc.world, pos), OverlayTexture.DEFAULT_UV, - VirtualEmptyModelData.INSTANCE); - - // buffer.draw(); - // clean - // RenderSystem.popMatrix(); - ms.pop(); - - } - - // BlockModelRenderer - public void renderModel(GhostBlockParams params, MatrixStack.Entry entry, IVertexBuilder vb, - @Nullable BlockState state, IBakedModel model, float p_228804_5_, float p_228804_6_, float p_228804_7_, - int p_228804_8_, int p_228804_9_, net.minecraftforge.client.model.data.IModelData modelData) { - Random random = new Random(); - - for (Direction direction : Direction.values()) { - random.setSeed(42L); - renderQuad(params, entry, vb, p_228804_5_, p_228804_6_, p_228804_7_, - model.getQuads(state, direction, random, modelData), p_228804_8_, p_228804_9_); - } - - random.setSeed(42L); - renderQuad(params, entry, vb, p_228804_5_, p_228804_6_, p_228804_7_, - model.getQuads(state, (Direction) null, random, modelData), p_228804_8_, p_228804_9_); - } - - // BlockModelRenderer - private static void renderQuad(GhostBlockParams params, MatrixStack.Entry p_228803_0_, - IVertexBuilder p_228803_1_, float p_228803_2_, float p_228803_3_, float p_228803_4_, - List p_228803_5_, int p_228803_6_, int p_228803_7_) { - Float alpha = params.alphaSupplier.get() * .75f * PlacementHelpers.getCurrentAlpha(); - - for (BakedQuad bakedquad : p_228803_5_) { - float f; - float f1; - float f2; - if (bakedquad.hasTintIndex()) { - f = MathHelper.clamp(p_228803_2_, 0.0F, 1.0F); - f1 = MathHelper.clamp(p_228803_3_, 0.0F, 1.0F); - f2 = MathHelper.clamp(p_228803_4_, 0.0F, 1.0F); - } else { - f = 1.0F; - f1 = 1.0F; - f2 = 1.0F; - } - - quad(alpha, p_228803_1_, p_228803_0_, bakedquad, new float[] { 1f, 1f, 1f, 1f }, f, f1, f2, - new int[] { p_228803_6_, p_228803_6_, p_228803_6_, p_228803_6_ }, p_228803_7_); - } - - } - - // IVertexBuilder - static void quad(float alpha, IVertexBuilder vb, MatrixStack.Entry p_227890_1_, BakedQuad p_227890_2_, - float[] p_227890_3_, float p_227890_4_, float p_227890_5_, float p_227890_6_, int[] p_227890_7_, - int p_227890_8_) { - int[] aint = p_227890_2_.getVertexData(); - Vector3i Vector3i = p_227890_2_.getFace() - .getDirectionVec(); - Vector3f vector3f = new Vector3f((float) Vector3i.getX(), (float) Vector3i.getY(), (float) Vector3i.getZ()); - Matrix4f matrix4f = p_227890_1_.getModel(); - vector3f.transform(p_227890_1_.getNormal()); - int vertexSize = DefaultVertexFormats.BLOCK.getIntegerSize(); - int j = aint.length / vertexSize; - - try (MemoryStack memorystack = MemoryStack.stackPush()) { - ByteBuffer bytebuffer = memorystack.malloc(DefaultVertexFormats.BLOCK.getSize()); - IntBuffer intbuffer = bytebuffer.asIntBuffer(); - - for (int k = 0; k < j; ++k) { - ((Buffer) intbuffer).clear(); - intbuffer.put(aint, k * vertexSize, vertexSize); - float f = bytebuffer.getFloat(0); - float f1 = bytebuffer.getFloat(4); - float f2 = bytebuffer.getFloat(8); - float r; - float g; - float b; - - r = p_227890_3_[k] * p_227890_4_; - g = p_227890_3_[k] * p_227890_5_; - b = p_227890_3_[k] * p_227890_6_; - - int l = vb.applyBakedLighting(p_227890_7_[k], bytebuffer); - float f9 = bytebuffer.getFloat(16); - float f10 = bytebuffer.getFloat(20); - Vector4f vector4f = new Vector4f(f, f1, f2, 1.0F); - vector4f.transform(matrix4f); - vb.applyBakedNormals(vector3f, bytebuffer, p_227890_1_.getNormal()); - vb.vertex(vector4f.getX(), vector4f.getY(), vector4f.getZ(), r, g, b, alpha, f9, f10, p_227890_8_, - l, vector3f.getX(), vector3f.getY(), vector3f.getZ()); - } - } - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlocks.java b/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlocks.java deleted file mode 100644 index 1ef7f0c01..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/ghost/GhostBlocks.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.simibubi.create.foundation.utility.ghost; - -import java.util.HashMap; -import java.util.Map; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; - -import net.minecraft.block.BlockState; -import net.minecraft.util.math.MathHelper; - -public class GhostBlocks { - - public static double getBreathingAlpha() { - double period = 2500; - double timer = System.currentTimeMillis() % period; - double offset = MathHelper.cos((float) ((2d/period) * Math.PI * timer)); - return 0.55d - 0.2d * offset; - } - - final Map ghosts; - - public GhostBlockParams showGhostState(Object slot, BlockState state) { - return showGhostState(slot, state, 1); - } - - public GhostBlockParams showGhostState(Object slot, BlockState state, int ttl) { - Entry e = refresh(slot, GhostBlockRenderer.transparent(), GhostBlockParams.of(state), ttl); - return e.params; - } - - public GhostBlockParams showGhost(Object slot, GhostBlockRenderer ghost, GhostBlockParams params, int ttl) { - Entry e = refresh(slot, ghost, params, ttl); - return e.params; - } - - private Entry refresh(Object slot, GhostBlockRenderer ghost, GhostBlockParams params, int ttl) { - if (!ghosts.containsKey(slot)) - ghosts.put(slot, new Entry(ghost, params, ttl)); - - Entry e = ghosts.get(slot); - e.ticksToLive = ttl; - e.params = params; - e.ghost = ghost; - return e; - } - - public GhostBlocks() { - ghosts = new HashMap<>(); - } - - public void tickGhosts() { - ghosts.forEach((slot, entry) -> entry.ticksToLive--); - ghosts.entrySet().removeIf(e -> !e.getValue().isAlive()); - } - - public void renderAll(MatrixStack ms, SuperRenderTypeBuffer buffer) { - ghosts.forEach((slot, entry) -> { - GhostBlockRenderer ghost = entry.ghost; - ghost.render(ms, buffer, entry.params); - }); - } - - static class Entry { - - private GhostBlockRenderer ghost; - private GhostBlockParams params; - private int ticksToLive; - - public Entry(GhostBlockRenderer ghost, GhostBlockParams params) { - this(ghost, params, 1); - } - - public Entry(GhostBlockRenderer ghost, GhostBlockParams params, int ttl) { - this.ghost = ghost; - this.params = params; - this.ticksToLive = ttl; - } - - public boolean isAlive() { - return ticksToLive >= 0; - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/AABBOutline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/AABBOutline.java deleted file mode 100644 index 9839b890d..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/AABBOutline.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.simibubi.create.foundation.utility.outliner; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.foundation.renderState.RenderTypes; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Vector3d; - -public class AABBOutline extends Outline { - - protected AxisAlignedBB bb; - - public AABBOutline(AxisAlignedBB bb) { - this.setBounds(bb); - } - - @Override - public void render(MatrixStack ms, SuperRenderTypeBuffer buffer, float pt) { - renderBB(ms, buffer, bb); - } - - public void renderBB(MatrixStack ms, SuperRenderTypeBuffer buffer, AxisAlignedBB bb) { - Vector3d projectedView = Minecraft.getInstance().gameRenderer.getActiveRenderInfo() - .getProjectedView(); - boolean noCull = bb.contains(projectedView); - bb = bb.grow(noCull ? -1 / 128d : 1 / 128d); - noCull |= params.disableCull; - - Vector3d xyz = new Vector3d(bb.minX, bb.minY, bb.minZ); - Vector3d Xyz = new Vector3d(bb.maxX, bb.minY, bb.minZ); - Vector3d xYz = new Vector3d(bb.minX, bb.maxY, bb.minZ); - Vector3d XYz = new Vector3d(bb.maxX, bb.maxY, bb.minZ); - Vector3d xyZ = new Vector3d(bb.minX, bb.minY, bb.maxZ); - Vector3d XyZ = new Vector3d(bb.maxX, bb.minY, bb.maxZ); - Vector3d xYZ = new Vector3d(bb.minX, bb.maxY, bb.maxZ); - Vector3d XYZ = new Vector3d(bb.maxX, bb.maxY, bb.maxZ); - - Vector3d start = xyz; - renderAACuboidLine(ms, buffer, start, Xyz); - renderAACuboidLine(ms, buffer, start, xYz); - renderAACuboidLine(ms, buffer, start, xyZ); - - start = XyZ; - renderAACuboidLine(ms, buffer, start, xyZ); - renderAACuboidLine(ms, buffer, start, XYZ); - renderAACuboidLine(ms, buffer, start, Xyz); - - start = XYz; - renderAACuboidLine(ms, buffer, start, xYz); - renderAACuboidLine(ms, buffer, start, Xyz); - renderAACuboidLine(ms, buffer, start, XYZ); - - start = xYZ; - renderAACuboidLine(ms, buffer, start, XYZ); - renderAACuboidLine(ms, buffer, start, xyZ); - renderAACuboidLine(ms, buffer, start, xYz); - - renderFace(ms, buffer, Direction.NORTH, xYz, XYz, Xyz, xyz, noCull); - renderFace(ms, buffer, Direction.SOUTH, XYZ, xYZ, xyZ, XyZ, noCull); - renderFace(ms, buffer, Direction.EAST, XYz, XYZ, XyZ, Xyz, noCull); - renderFace(ms, buffer, Direction.WEST, xYZ, xYz, xyz, xyZ, noCull); - renderFace(ms, buffer, Direction.UP, xYZ, XYZ, XYz, xYz, noCull); - renderFace(ms, buffer, Direction.DOWN, xyz, Xyz, XyZ, xyZ, noCull); - - } - - protected void renderFace(MatrixStack ms, SuperRenderTypeBuffer buffer, Direction direction, Vector3d p1, Vector3d p2, - Vector3d p3, Vector3d p4, boolean noCull) { - if (!params.faceTexture.isPresent()) - return; - - ResourceLocation faceTexture = params.faceTexture.get() - .getLocation(); - float alphaBefore = params.alpha; - params.alpha = - (direction == params.getHighlightedFace() && params.hightlightedFaceTexture.isPresent()) ? 1 : 0.5f; - - RenderType translucentType = RenderTypes.getOutlineTranslucent(faceTexture, !noCull); - IVertexBuilder builder = buffer.getLateBuffer(translucentType); - - Axis axis = direction.getAxis(); - Vector3d uDiff = p2.subtract(p1); - Vector3d vDiff = p4.subtract(p1); - float maxU = (float) Math.abs(axis == Axis.X ? uDiff.z : uDiff.x); - float maxV = (float) Math.abs(axis == Axis.Y ? vDiff.z : vDiff.y); - putQuadUV(ms, builder, p1, p2, p3, p4, 0, 0, maxU, maxV, Direction.UP); - params.alpha = alphaBefore; - } - - public void setBounds(AxisAlignedBB bb) { - this.bb = bb; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/BlockClusterOutline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/BlockClusterOutline.java deleted file mode 100644 index 1f91f886f..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/BlockClusterOutline.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.simibubi.create.foundation.utility.outliner; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.foundation.renderState.RenderTypes; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.renderer.RenderType; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.Direction.AxisDirection; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.vector.Vector3d; - -public class BlockClusterOutline extends Outline { - - private Cluster cluster; - - public BlockClusterOutline(Iterable selection) { - cluster = new Cluster(); - selection.forEach(cluster::include); - } - - @Override - public void render(MatrixStack ms, SuperRenderTypeBuffer buffer, float pt) { - for (MergeEntry edge : cluster.visibleEdges) { - Vector3d start = Vector3d.of(edge.pos); - Direction direction = Direction.getFacingFromAxis(AxisDirection.POSITIVE, edge.axis); - renderAACuboidLine(ms, buffer, start, Vector3d.of(edge.pos.offset(direction))); - } - - for (MergeEntry face : cluster.visibleFaces.keySet()) { - AxisDirection axisDirection = cluster.visibleFaces.get(face); - Direction direction = Direction.getFacingFromAxis(axisDirection, face.axis); - BlockPos pos = face.pos; - if (axisDirection == AxisDirection.POSITIVE) - pos = pos.offset(direction.getOpposite()); - renderBlockFace(ms, buffer, pos, direction); - } - } - - protected void renderBlockFace(MatrixStack ms, SuperRenderTypeBuffer buffer, BlockPos pos, Direction face) { - Optional faceTexture = params.faceTexture; - if (!faceTexture.isPresent()) - return; - - RenderType translucentType = RenderTypes.getOutlineTranslucent(faceTexture.get() - .getLocation(), true); - IVertexBuilder builder = buffer.getLateBuffer(translucentType); - - Vector3d center = VecHelper.getCenterOf(pos); - Vector3d offset = Vector3d.of(face.getDirectionVec()); - Vector3d plane = VecHelper.axisAlingedPlaneOf(offset); - Axis axis = face.getAxis(); - - offset = offset.scale(1 / 2f + 1 / 64d); - plane = plane.scale(1 / 2f) - .add(offset); - - int deg = face.getAxisDirection() - .getOffset() * 90; - Vector3d a1 = plane.add(center); - plane = VecHelper.rotate(plane, deg, axis); - Vector3d a2 = plane.add(center); - plane = VecHelper.rotate(plane, deg, axis); - Vector3d a3 = plane.add(center); - plane = VecHelper.rotate(plane, deg, axis); - Vector3d a4 = plane.add(center); - - putQuad(ms, builder, a1, a2, a3, a4, face); - } - - private static class Cluster { - - Map visibleFaces; - Set visibleEdges; - - public Cluster() { - visibleEdges = new HashSet<>(); - visibleFaces = new HashMap<>(); - } - - public void include(BlockPos pos) { - - // 6 FACES - for (Axis axis : Axis.values()) { - Direction direction = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis); - for (int offset : new int[] { 0, 1 }) { - MergeEntry entry = new MergeEntry(axis, pos.offset(direction, offset)); - if (visibleFaces.remove(entry) == null) - visibleFaces.put(entry, offset == 0 ? AxisDirection.NEGATIVE : AxisDirection.POSITIVE); - } - } - - // 12 EDGES - for (Axis axis : Axis.values()) { - for (Axis axis2 : Axis.values()) { - if (axis == axis2) - continue; - for (Axis axis3 : Axis.values()) { - if (axis == axis3) - continue; - if (axis2 == axis3) - continue; - - Direction direction = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis2); - Direction direction2 = Direction.getFacingFromAxis(AxisDirection.POSITIVE, axis3); - - for (int offset : new int[] { 0, 1 }) { - BlockPos entryPos = pos.offset(direction, offset); - for (int offset2 : new int[] { 0, 1 }) { - entryPos = entryPos.offset(direction2, offset2); - MergeEntry entry = new MergeEntry(axis, entryPos); - if (!visibleEdges.remove(entry)) - visibleEdges.add(entry); - } - } - } - - break; - } - } - - } - - } - - private static class MergeEntry { - - Axis axis; - BlockPos pos; - - public MergeEntry(Axis axis, BlockPos pos) { - this.axis = axis; - this.pos = pos; - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (!(o instanceof MergeEntry)) - return false; - - MergeEntry other = (MergeEntry) o; - return this.axis == other.axis && this.pos.equals(other.pos); - } - - @Override - public int hashCode() { - return this.pos.hashCode() * 31 + axis.ordinal(); - } - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/ChasingAABBOutline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/ChasingAABBOutline.java deleted file mode 100644 index d70ef3189..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/ChasingAABBOutline.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.foundation.utility.outliner; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; - -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.MathHelper; - -public class ChasingAABBOutline extends AABBOutline { - - AxisAlignedBB targetBB; - AxisAlignedBB prevBB; - - public ChasingAABBOutline(AxisAlignedBB bb) { - super(bb); - prevBB = bb.grow(0); - targetBB = bb.grow(0); - } - - public void target(AxisAlignedBB target) { - targetBB = target; - } - - @Override - public void tick() { - prevBB = bb; - setBounds(interpolateBBs(bb, targetBB, .5f)); - } - - @Override - public void render(MatrixStack ms, SuperRenderTypeBuffer buffer, float pt) { - renderBB(ms, buffer, interpolateBBs(prevBB, bb, pt)); - } - - private static AxisAlignedBB interpolateBBs(AxisAlignedBB current, AxisAlignedBB target, float pt) { - return new AxisAlignedBB(MathHelper.lerp(pt, current.minX, target.minX), - MathHelper.lerp(pt, current.minY, target.minY), MathHelper.lerp(pt, current.minZ, target.minZ), - MathHelper.lerp(pt, current.maxX, target.maxX), MathHelper.lerp(pt, current.maxY, target.maxY), - MathHelper.lerp(pt, current.maxZ, target.maxZ)); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/LineOutline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/LineOutline.java deleted file mode 100644 index 6085a76a6..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/LineOutline.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.simibubi.create.foundation.utility.outliner; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; - -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class LineOutline extends Outline { - - protected Vector3d start = Vector3d.ZERO; - protected Vector3d end = Vector3d.ZERO; - - public LineOutline set(Vector3d start, Vector3d end) { - this.start = start; - this.end = end; - return this; - } - - @Override - public void render(MatrixStack ms, SuperRenderTypeBuffer buffer, float pt) { - renderCuboidLine(ms, buffer, start, end); - } - - public static class EndChasingLineOutline extends LineOutline { - - float prevProgress = 0; - float progress = 0; - - @Override - public void tick() { - } - - public EndChasingLineOutline setProgress(float progress) { - prevProgress = this.progress; - this.progress = progress; - return this; - } - - @Override - public LineOutline set(Vector3d start, Vector3d end) { - if (!end.equals(this.end)) - super.set(start, end); - return this; - } - - @Override - public void render(MatrixStack ms, SuperRenderTypeBuffer buffer, float pt) { - float distanceToTarget = 1 - MathHelper.lerp(pt, prevProgress, progress); - Vector3d start = end.add(this.start.subtract(end) - .scale(distanceToTarget)); - renderCuboidLine(ms, buffer, start, end); - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java deleted file mode 100644 index e23c179fc..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outline.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.simibubi.create.foundation.utility.outliner; - -import java.util.Optional; - -import javax.annotation.Nullable; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.matrix.MatrixStack.Entry; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import com.simibubi.create.AllSpecialTextures; -import com.simibubi.create.foundation.renderState.RenderTypes; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.ColorHelper; -import com.simibubi.create.foundation.utility.MatrixStacker; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.util.Direction; -import net.minecraft.util.Direction.Axis; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Matrix3f; -import net.minecraft.util.math.vector.Vector3d; - -public abstract class Outline { - - protected OutlineParams params; - protected Matrix3f transformNormals; - - public Outline() { - params = new OutlineParams(); - } - - public abstract void render(MatrixStack ms, SuperRenderTypeBuffer buffer, float pt); - - public void renderCuboidLine(MatrixStack ms, SuperRenderTypeBuffer buffer, Vector3d start, Vector3d end) { - Vector3d diff = end.subtract(start); - float hAngle = AngleHelper.deg(MathHelper.atan2(diff.x, diff.z)); - float hDistance = (float) diff.mul(1, 0, 1) - .length(); - float vAngle = AngleHelper.deg(MathHelper.atan2(hDistance, diff.y)) - 90; - ms.push(); - MatrixStacker.of(ms) - .translate(start) - .rotateY(hAngle).rotateX(vAngle); - renderAACuboidLine(ms, buffer, Vector3d.ZERO, new Vector3d(0, 0, diff.length())); - ms.pop(); - } - - public void renderAACuboidLine(MatrixStack ms, SuperRenderTypeBuffer buffer, Vector3d start, Vector3d end) { - float lineWidth = params.getLineWidth(); - if (lineWidth == 0) - return; - - IVertexBuilder builder = buffer.getBuffer(RenderTypes.getOutlineSolid()); - - Vector3d diff = end.subtract(start); - if (diff.x + diff.y + diff.z < 0) { - Vector3d temp = start; - start = end; - end = temp; - diff = diff.scale(-1); - } - - Vector3d extension = diff.normalize() - .scale(lineWidth / 2); - Vector3d plane = VecHelper.axisAlingedPlaneOf(diff); - Direction face = Direction.getFacingFromVector(diff.x, diff.y, diff.z); - Axis axis = face.getAxis(); - - start = start.subtract(extension); - end = end.add(extension); - plane = plane.scale(lineWidth / 2); - - Vector3d a1 = plane.add(start); - Vector3d b1 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a2 = plane.add(start); - Vector3d b2 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a3 = plane.add(start); - Vector3d b3 = plane.add(end); - plane = VecHelper.rotate(plane, -90, axis); - Vector3d a4 = plane.add(start); - Vector3d b4 = plane.add(end); - - if (params.disableNormals) { - face = Direction.UP; - putQuad(ms, builder, b4, b3, b2, b1, face); - putQuad(ms, builder, a1, a2, a3, a4, face); - putQuad(ms, builder, a1, b1, b2, a2, face); - putQuad(ms, builder, a2, b2, b3, a3, face); - putQuad(ms, builder, a3, b3, b4, a4, face); - putQuad(ms, builder, a4, b4, b1, a1, face); - return; - } - - putQuad(ms, builder, b4, b3, b2, b1, face); - putQuad(ms, builder, a1, a2, a3, a4, face.getOpposite()); - Vector3d vec = a1.subtract(a4); - face = Direction.getFacingFromVector(vec.x, vec.y, vec.z); - putQuad(ms, builder, a1, b1, b2, a2, face); - vec = VecHelper.rotate(vec, -90, axis); - face = Direction.getFacingFromVector(vec.x, vec.y, vec.z); - putQuad(ms, builder, a2, b2, b3, a3, face); - vec = VecHelper.rotate(vec, -90, axis); - face = Direction.getFacingFromVector(vec.x, vec.y, vec.z); - putQuad(ms, builder, a3, b3, b4, a4, face); - vec = VecHelper.rotate(vec, -90, axis); - face = Direction.getFacingFromVector(vec.x, vec.y, vec.z); - putQuad(ms, builder, a4, b4, b1, a1, face); - } - - public void putQuad(MatrixStack ms, IVertexBuilder builder, Vector3d v1, Vector3d v2, Vector3d v3, Vector3d v4, - Direction normal) { - putQuadUV(ms, builder, v1, v2, v3, v4, 0, 0, 1, 1, normal); - } - - public void putQuadUV(MatrixStack ms, IVertexBuilder builder, Vector3d v1, Vector3d v2, Vector3d v3, Vector3d v4, float minU, - float minV, float maxU, float maxV, Direction normal) { - putVertex(ms, builder, v1, minU, minV, normal); - putVertex(ms, builder, v2, maxU, minV, normal); - putVertex(ms, builder, v3, maxU, maxV, normal); - putVertex(ms, builder, v4, minU, maxV, normal); - } - - protected void putVertex(MatrixStack ms, IVertexBuilder builder, Vector3d pos, float u, float v, Direction normal) { - int i = 15 << 20 | 15 << 4; - int j = i >> 16 & '\uffff'; - int k = i & '\uffff'; - Entry peek = ms.peek(); - Vector3d rgb = params.rgb; - if (transformNormals == null) - transformNormals = peek.getNormal(); - - int xOffset = 0; - int yOffset = 0; - int zOffset = 0; - - if (normal != null) { - xOffset = normal.getXOffset(); - yOffset = normal.getYOffset(); - zOffset = normal.getZOffset(); - } - - builder.vertex(peek.getModel(), (float) pos.x, (float) pos.y, (float) pos.z) - .color((float) rgb.x, (float) rgb.y, (float) rgb.z, params.alpha) - .texture(u, v) - .overlay(OverlayTexture.DEFAULT_UV) - .light(j, k) - .normal(peek.getNormal(), xOffset, yOffset, zOffset) - .endVertex(); - - transformNormals = null; - } - - public void tick() {} - - public OutlineParams getParams() { - return params; - } - - public static class OutlineParams { - protected Optional faceTexture; - protected Optional hightlightedFaceTexture; - protected Direction highlightedFace; - protected boolean fadeLineWidth; - protected boolean disableCull; - protected boolean disableNormals; - protected float alpha; - protected int lightMapU, lightMapV; - protected Vector3d rgb; - private float lineWidth; - - public OutlineParams() { - faceTexture = hightlightedFaceTexture = Optional.empty(); - alpha = 1; - lineWidth = 1 / 32f; - fadeLineWidth = true; - rgb = ColorHelper.getRGB(0xFFFFFF); - - int i = 15 << 20 | 15 << 4; - lightMapU = i >> 16 & '\uffff'; - lightMapV = i & '\uffff'; - } - - // builder - - public OutlineParams colored(int color) { - rgb = ColorHelper.getRGB(color); - return this; - } - - public OutlineParams lineWidth(float width) { - this.lineWidth = width; - return this; - } - - public OutlineParams withFaceTexture(AllSpecialTextures texture) { - this.faceTexture = Optional.ofNullable(texture); - return this; - } - - public OutlineParams clearTextures() { - return this.withFaceTextures(null, null); - } - - public OutlineParams withFaceTextures(AllSpecialTextures texture, AllSpecialTextures highlightTexture) { - this.faceTexture = Optional.ofNullable(texture); - this.hightlightedFaceTexture = Optional.ofNullable(highlightTexture); - return this; - } - - public OutlineParams highlightFace(@Nullable Direction face) { - highlightedFace = face; - return this; - } - - public OutlineParams disableNormals() { - disableNormals = true; - return this; - } - - public OutlineParams disableCull() { - disableCull = true; - return this; - } - - // getter - - public float getLineWidth() { - return fadeLineWidth ? alpha * lineWidth : lineWidth; - } - - public Direction getHighlightedFace() { - return highlightedFace; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java deleted file mode 100644 index 64ae8334f..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.simibubi.create.foundation.utility.outliner; - -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; -import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; -import com.simibubi.create.foundation.utility.outliner.LineOutline.EndChasingLineOutline; -import com.simibubi.create.foundation.utility.outliner.Outline.OutlineParams; - -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; - -public class Outliner { - - final Map outlines; - - public Map getOutlines() { - return Collections.unmodifiableMap(outlines); - } - - // Facade - - public OutlineParams showValueBox(Object slot, ValueBox box) { - outlines.put(slot, new OutlineEntry(box)); - return box.getParams(); - } - - public OutlineParams showLine(Object slot, Vector3d start, Vector3d end) { - if (!outlines.containsKey(slot)) { - LineOutline outline = new LineOutline(); - outlines.put(slot, new OutlineEntry(outline)); - } - OutlineEntry entry = outlines.get(slot); - entry.ticksTillRemoval = 1; - ((LineOutline) entry.outline).set(start, end); - return entry.outline.getParams(); - } - - public OutlineParams endChasingLine(Object slot, Vector3d start, Vector3d end, float chasingProgress) { - if (!outlines.containsKey(slot)) { - EndChasingLineOutline outline = new EndChasingLineOutline(); - outlines.put(slot, new OutlineEntry(outline)); - } - OutlineEntry entry = outlines.get(slot); - entry.ticksTillRemoval = 1; - ((EndChasingLineOutline) entry.outline).setProgress(chasingProgress) - .set(start, end); - return entry.outline.getParams(); - } - - public OutlineParams showAABB(Object slot, AxisAlignedBB bb, int ttl) { - createAABBOutlineIfMissing(slot, bb); - ChasingAABBOutline outline = getAndRefreshAABB(slot, ttl); - outline.prevBB = outline.targetBB = outline.bb = bb; - return outline.getParams(); - } - - public OutlineParams showAABB(Object slot, AxisAlignedBB bb) { - createAABBOutlineIfMissing(slot, bb); - ChasingAABBOutline outline = getAndRefreshAABB(slot); - outline.prevBB = outline.targetBB = outline.bb = bb; - return outline.getParams(); - } - - public OutlineParams chaseAABB(Object slot, AxisAlignedBB bb) { - createAABBOutlineIfMissing(slot, bb); - ChasingAABBOutline outline = getAndRefreshAABB(slot); - outline.targetBB = bb; - return outline.getParams(); - } - - public OutlineParams showCluster(Object slot, Iterable selection) { - BlockClusterOutline outline = new BlockClusterOutline(selection); - OutlineEntry entry = new OutlineEntry(outline); - outlines.put(slot, entry); - return entry.getOutline() - .getParams(); - } - - public void keep(Object slot) { - if (outlines.containsKey(slot)) - outlines.get(slot).ticksTillRemoval = 1; - } - - public void remove(Object slot) { - outlines.remove(slot); - } - - public Optional edit(Object slot) { - keep(slot); - if (outlines.containsKey(slot)) - return Optional.of(outlines.get(slot) - .getOutline() - .getParams()); - return Optional.empty(); - } - - // Utility - - private void createAABBOutlineIfMissing(Object slot, AxisAlignedBB bb) { - if (!outlines.containsKey(slot) || !(outlines.get(slot).outline instanceof AABBOutline)) { - ChasingAABBOutline outline = new ChasingAABBOutline(bb); - outlines.put(slot, new OutlineEntry(outline)); - } - } - - private ChasingAABBOutline getAndRefreshAABB(Object slot) { - OutlineEntry entry = outlines.get(slot); - entry.ticksTillRemoval = 1; - return (ChasingAABBOutline) entry.getOutline(); - } - - private ChasingAABBOutline getAndRefreshAABB(Object slot, int ttl) { - OutlineEntry entry = outlines.get(slot); - entry.ticksTillRemoval = ttl; - return (ChasingAABBOutline) entry.getOutline(); - } - - // Maintenance - - public Outliner() { - outlines = Collections.synchronizedMap(new HashMap<>()); - } - - public void tickOutlines() { - Set toClear = new HashSet<>(); - - outlines.forEach((key, entry) -> { - entry.ticksTillRemoval--; - entry.getOutline() - .tick(); - if (entry.isAlive()) - return; - toClear.add(key); - }); - - toClear.forEach(outlines::remove); - } - - public void renderOutlines(MatrixStack ms, SuperRenderTypeBuffer buffer, float pt) { - outlines.forEach((key, entry) -> { - Outline outline = entry.getOutline(); - outline.params.alpha = 1; - if (entry.ticksTillRemoval < 0) { - - int prevTicks = entry.ticksTillRemoval + 1; - float fadeticks = OutlineEntry.fadeTicks; - float lastAlpha = prevTicks >= 0 ? 1 : 1 + (prevTicks / fadeticks); - float currentAlpha = 1 + (entry.ticksTillRemoval / fadeticks); - float alpha = MathHelper.lerp(pt, lastAlpha, currentAlpha); - - outline.params.alpha = alpha * alpha * alpha; - if (outline.params.alpha < 1 / 8f) - return; - } - outline.render(ms, buffer, pt); - }); - } - - public static class OutlineEntry { - - static final int fadeTicks = 8; - private Outline outline; - private int ticksTillRemoval; - - public OutlineEntry(Outline outline) { - this.outline = outline; - ticksTillRemoval = 1; - } - - public boolean isAlive() { - return ticksTillRemoval >= -fadeTicks; - } - - public Outline getOutline() { - return outline; - } - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java b/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java deleted file mode 100644 index 2b3403f0f..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/placement/IPlacementHelper.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.simibubi.create.foundation.utility.placement; - -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.utility.Iterate; -import com.simibubi.create.foundation.utility.Pair; -import com.simibubi.create.foundation.utility.VecHelper; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.World; - -@MethodsReturnNonnullByDefault -public interface IPlacementHelper { - - /** - * used as an identifier in SuperGlueHandler to skip blocks placed by helpers - */ - BlockState ID = new BlockState(Blocks.AIR, null, null); - - /** - * @return a predicate that gets tested with the items held in the players hands
- * should return true if this placement helper is active with the given item - */ - Predicate getItemPredicate(); - - /** - * @return a predicate that gets tested with the blockstate the player is looking at
- * should return true if this placement helper is active with the given blockstate - */ - Predicate getStatePredicate(); - - /** - * - * @param player the player that activated the placement helper - * @param world the world that the placement helper got activated in - * @param state the Blockstate of the Block that the player is looking at or clicked on - * @param pos the position of the Block the player is looking at or clicked on - * @param ray the exact raytrace result - * - * @return the PlacementOffset object describing where to place the new block.
- * Use {@link PlacementOffset#fail} when no new position could be found.
- * Use {@link PlacementOffset#success(Vector3i)} with the new BlockPos to indicate a success - * and call {@link PlacementOffset#withTransform(Function)} if the blocks default state has to be modified before it is placed - */ - PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray); - - //sets the offset's ghost state with the default state of the held block item, this is used in PlacementHelpers and can be ignored in most cases - default PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray, ItemStack heldItem) { - PlacementOffset offset = getOffset(player, world, state, pos, ray); - if (heldItem.getItem() instanceof BlockItem) { - BlockItem blockItem = (BlockItem) heldItem.getItem(); - offset = offset.withGhostState(blockItem.getBlock().getDefaultState()); - } - return offset; - } - - /** - * overwrite this method if your placement helper needs a different rendering than the default ghost state - * - * @param pos the position of the Block the player is looking at or clicked on - * @param state the Blockstate of the Block that the player is looking at or clicked on - * @param ray the exact raytrace result - * @param offset the PlacementOffset returned by {@link #getOffset(PlayerEntity, World, BlockState, BlockPos, BlockRayTraceResult)}
- * the offset will always be successful if this method is called - */ - default void renderAt(BlockPos pos, BlockState state, BlockRayTraceResult ray, PlacementOffset offset) { - displayGhost(offset); - } - - //RIP - static void renderArrow(Vector3d center, Vector3d target, Direction arrowPlane) { - renderArrow(center, target, arrowPlane, 1D); - } - static void renderArrow(Vector3d center, Vector3d target, Direction arrowPlane, double distanceFromCenter) { - Vector3d direction = target.subtract(center).normalize(); - Vector3d facing = Vector3d.of(arrowPlane.getDirectionVec()); - Vector3d start = center.add(direction); - Vector3d offset = direction.scale(distanceFromCenter - 1); - Vector3d offsetA = direction.crossProduct(facing).normalize().scale(.25); - Vector3d offsetB = facing.crossProduct(direction).normalize().scale(.25); - Vector3d endA = center.add(direction.scale(.75)).add(offsetA); - Vector3d endB = center.add(direction.scale(.75)).add(offsetB); - CreateClient.OUTLINER.showLine("placementArrowA" + center + target, start.add(offset), endA.add(offset)).lineWidth(1 / 16f); - CreateClient.OUTLINER.showLine("placementArrowB" + center + target, start.add(offset), endB.add(offset)).lineWidth(1 / 16f); - } - - default void displayGhost(PlacementOffset offset) { - if (!offset.hasGhostState()) - return; - - CreateClient.GHOST_BLOCKS.showGhostState(this, offset.getTransform().apply(offset.getGhostState())) - .at(offset.getBlockPos()) - .breathingAlpha(); - } - - static List orderedByDistanceOnlyAxis(BlockPos pos, Vector3d hit, Direction.Axis axis) { - return orderedByDistance(pos, hit, dir -> dir.getAxis() == axis); - } - - static List orderedByDistanceOnlyAxis(BlockPos pos, Vector3d hit, Direction.Axis axis, Predicate includeDirection) { - return orderedByDistance(pos, hit, ((Predicate) dir -> dir.getAxis() == axis).and(includeDirection)); - } - - static List orderedByDistanceExceptAxis(BlockPos pos, Vector3d hit, Direction.Axis axis) { - return orderedByDistance(pos, hit, dir -> dir.getAxis() != axis); - } - - static List orderedByDistanceExceptAxis(BlockPos pos, Vector3d hit, Direction.Axis axis, Predicate includeDirection) { - return orderedByDistance(pos, hit, ((Predicate) dir -> dir.getAxis() != axis).and(includeDirection)); - } - - static List orderedByDistanceExceptAxis(BlockPos pos, Vector3d hit, Direction.Axis first, Direction.Axis second) { - return orderedByDistanceExceptAxis(pos, hit, first, d -> d.getAxis() != second); - } - - static List orderedByDistanceExceptAxis(BlockPos pos, Vector3d hit, Direction.Axis first, Direction.Axis second, Predicate includeDirection) { - return orderedByDistanceExceptAxis(pos, hit, first, ((Predicate) d -> d.getAxis() != second).and(includeDirection)); - } - - static List orderedByDistance(BlockPos pos, Vector3d hit) { - return orderedByDistance(pos, hit, _$ -> true); - } - - static List orderedByDistance(BlockPos pos, Vector3d hit, Predicate includeDirection) { - Vector3d centerToHit = hit.subtract(VecHelper.getCenterOf(pos)); - return Arrays.stream(Iterate.directions) - .filter(includeDirection) - .map(dir -> Pair.of(dir, Vector3d.of(dir.getDirectionVec()).distanceTo(centerToHit))) - .sorted(Comparator.comparingDouble(Pair::getSecond)) - .map(Pair::getFirst) - .collect(Collectors.toList()); - } - - default boolean matchesItem(ItemStack item) { - return getItemPredicate().test(item); - } - - default boolean matchesState(BlockState state) { - return getStatePredicate().test(state); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementHelpers.java b/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementHelpers.java deleted file mode 100644 index 09f98b72f..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementHelpers.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.simibubi.create.foundation.utility.placement; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import org.lwjgl.opengl.GL11; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.systems.RenderSystem; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.config.CClient; -import com.simibubi.create.foundation.gui.AllGuiTextures; -import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingAngle; -import com.simibubi.create.foundation.gui.widgets.InterpolatedChasingValue; -import com.simibubi.create.foundation.utility.AngleHelper; -import com.simibubi.create.foundation.utility.VecHelper; - -import net.minecraft.block.BlockState; -import net.minecraft.client.MainWindow; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3f; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.RenderGameOverlayEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber -public class PlacementHelpers { - - private static final List helpers = new ArrayList<>(); - private static int animationTick = 0; - private static final InterpolatedChasingValue angle = new InterpolatedChasingAngle().withSpeed(0.25f); - private static BlockPos target = null; - private static BlockPos lastTarget = null; - - public static int register(IPlacementHelper helper) { - helpers.add(helper); - return helpers.size() - 1; - } - - public static IPlacementHelper get(int id) { - if (id < 0 || id >= helpers.size()) - throw new ArrayIndexOutOfBoundsException("id " + id + " for placement helper not known"); - - return helpers.get(id); - } - - @OnlyIn(Dist.CLIENT) - public static void tick() { - setTarget(null); - checkHelpers(); - - if (target == null) { - if (animationTick > 0) - animationTick = Math.max(animationTick - 2, 0); - - return; - } - - if (animationTick < 10) - animationTick++; - - } - - @OnlyIn(Dist.CLIENT) - private static void checkHelpers() { - Minecraft mc = Minecraft.getInstance(); - ClientWorld world = mc.world; - - if (world == null) - return; - - if (!(mc.objectMouseOver instanceof BlockRayTraceResult)) - return; - - BlockRayTraceResult ray = (BlockRayTraceResult) mc.objectMouseOver; - - if (mc.player == null) - return; - - if (mc.player.isSneaking())//for now, disable all helpers when sneaking TODO add helpers that respect sneaking but still show position - return; - - for (Hand hand : Hand.values()) { - - ItemStack heldItem = mc.player.getHeldItem(hand); - List filteredForHeldItem = helpers.stream().filter(helper -> helper.matchesItem(heldItem)).collect(Collectors.toList()); - if (filteredForHeldItem.isEmpty()) - continue; - - BlockPos pos = ray.getPos(); - BlockState state = world.getBlockState(pos); - - List filteredForState = filteredForHeldItem.stream().filter(helper -> helper.matchesState(state)).collect(Collectors.toList()); - if (filteredForState.isEmpty()) - continue; - - boolean atLeastOneMatch = false; - for (IPlacementHelper h : filteredForState) { - PlacementOffset offset = h.getOffset(mc.player, world, state, pos, ray, heldItem); - - if (offset.isSuccessful()) { - h.renderAt(pos, state, ray, offset); - setTarget(offset.getBlockPos()); - atLeastOneMatch = true; - break; - } - - } - - //at least one helper activated, no need to check the offhand if we are still in the mainhand - if (atLeastOneMatch) - return; - - } - } - - static void setTarget(BlockPos target) { - PlacementHelpers.target = target; - - if (target == null) - return; - - if (lastTarget == null) { - lastTarget = target; - return; - } - - if (!lastTarget.equals(target)) - lastTarget = target; - } - - @SubscribeEvent - @OnlyIn(Dist.CLIENT) - public static void onRender(RenderGameOverlayEvent.Pre event) { - if (event.getType() != RenderGameOverlayEvent.ElementType.CROSSHAIRS) - return; - - Minecraft mc = Minecraft.getInstance(); - PlayerEntity player = mc.player; - - if (player != null && animationTick > 0) { - MainWindow res = event.getWindow(); - - float screenY = res.getScaledHeight() / 2f; - float screenX = res.getScaledWidth() / 2f; - float progress = getCurrentAlpha(); - - drawDirectionIndicator(event.getMatrixStack(), event.getPartialTicks(), screenX, screenY, progress); - } - } - - public static float getCurrentAlpha() { - return Math.min(animationTick / 10f/* + event.getPartialTicks()*/, 1f); - } - - @OnlyIn(Dist.CLIENT) - private static void drawDirectionIndicator(MatrixStack ms, float partialTicks, float centerX, float centerY, float progress) { - float r = .8f; - float g = .8f; - float b = .8f; - float a = progress * progress; - - Vector3d projTarget = VecHelper.projectToPlayerView(VecHelper.getCenterOf(lastTarget), partialTicks); - - Vector3d target = new Vector3d(projTarget.x, projTarget.y, 0); - if (projTarget.z > 0) { - target = target.inverse(); - } - - Vector3d norm = target.normalize(); - Vector3d ref = new Vector3d(0, 1, 0); - float targetAngle = AngleHelper.deg(Math.acos(norm.dotProduct(ref))); - - angle.withSpeed(0.25f); - - if (norm.x < 0) { - targetAngle = 360 - targetAngle; - } - - if (animationTick < 10) - angle.set(targetAngle); - - angle.target(targetAngle); - angle.tick(); - - float snapSize = 22.5f; - float snappedAngle = (snapSize * Math.round(angle.get(0f) / snapSize)) % 360f; - - float length = 10; - - CClient.PlacementIndicatorSetting mode = AllConfigs.CLIENT.placementIndicator.get(); - if (mode == CClient.PlacementIndicatorSetting.TRIANGLE) - fadedArrow(ms, centerX, centerY, r, g, b, a, length, snappedAngle); - else if (mode == CClient.PlacementIndicatorSetting.TEXTURE) - textured(ms, centerX, centerY, a, snappedAngle); - } - - private static void fadedArrow(MatrixStack ms, float centerX, float centerY, float r, float g, float b, float a, float length, float snappedAngle) { - ms.push(); - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.disableAlphaTest(); - RenderSystem.defaultBlendFunc(); - RenderSystem.shadeModel(GL11.GL_SMOOTH); - - ms.translate(centerX, centerY, 0); - ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle.get(0))); - //RenderSystem.rotatef(snappedAngle, 0, 0, 1); - double scale = AllConfigs.CLIENT.indicatorScale.get(); - RenderSystem.scaled(scale, scale, 1); - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder bufferbuilder = tessellator.getBuffer(); - bufferbuilder.begin(GL11.GL_POLYGON, DefaultVertexFormats.POSITION_COLOR); - - Matrix4f mat = ms.peek().getModel(); - - bufferbuilder.vertex(mat, 0, - (10 + length), 0).color(r, g, b, a).endVertex(); - - bufferbuilder.vertex(mat, -9, -3, 0).color(r, g, b, 0f).endVertex(); - bufferbuilder.vertex(mat, -6, -6, 0).color(r, g, b, 0f).endVertex(); - bufferbuilder.vertex(mat, -3, -8, 0).color(r, g, b, 0f).endVertex(); - bufferbuilder.vertex(mat, 0, -8.5f, 0).color(r, g, b, 0f).endVertex(); - bufferbuilder.vertex(mat, 3, -8, 0).color(r, g, b, 0f).endVertex(); - bufferbuilder.vertex(mat, 6, -6, 0).color(r, g, b, 0f).endVertex(); - bufferbuilder.vertex(mat, 9, -3, 0).color(r, g, b, 0f).endVertex(); - - tessellator.draw(); - RenderSystem.shadeModel(GL11.GL_FLAT); - RenderSystem.disableBlend(); - RenderSystem.enableAlphaTest(); - RenderSystem.enableTexture(); - ms.pop(); - } - - private static void textured(MatrixStack ms, float centerX, float centerY, float alpha, float snappedAngle) { - ms.push(); - RenderSystem.enableTexture(); - AllGuiTextures.PLACEMENT_INDICATOR_SHEET.bind(); - RenderSystem.enableBlend(); - RenderSystem.enableAlphaTest(); - RenderSystem.defaultBlendFunc(); - RenderSystem.shadeModel(GL11.GL_SMOOTH); - - ms.translate(centerX, centerY, 0); - float scale = AllConfigs.CLIENT.indicatorScale.get().floatValue() * .75f; - ms.scale(scale, scale, 1); - ms.scale(12, 12, 1); - - float index = snappedAngle / 22.5f; - float tex_size = 16f/256f; - - float tx = 0; - float ty = index * tex_size; - float tw = 1f; - float th = tex_size; - - Tessellator tessellator = Tessellator.getInstance(); - BufferBuilder buffer = tessellator.getBuffer(); - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR_TEXTURE); - - Matrix4f mat = ms.peek().getModel(); - buffer.vertex(mat, -1, -1, 0).color(1f, 1f, 1f, alpha).texture(tx, ty).endVertex(); - buffer.vertex(mat, -1, 1, 0).color(1f, 1f, 1f, alpha).texture(tx, ty + th).endVertex(); - buffer.vertex(mat, 1, 1, 0).color(1f, 1f, 1f, alpha).texture(tx + tw, ty + th).endVertex(); - buffer.vertex(mat, 1, -1, 0).color(1f, 1f, 1f, alpha).texture(tx + tw, ty).endVertex(); - - tessellator.draw(); - - RenderSystem.shadeModel(GL11.GL_FLAT); - RenderSystem.disableBlend(); - ms.pop(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementOffset.java b/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementOffset.java deleted file mode 100644 index 17fd6505c..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/placement/PlacementOffset.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.simibubi.create.foundation.utility.placement; - -import java.util.function.Function; - -import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.block.BlockState; -import net.minecraft.block.SoundType; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.stats.Stats; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.vector.Vector3i; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.util.BlockSnapshot; -import net.minecraftforge.event.world.BlockEvent; - -public class PlacementOffset { - - private final boolean success; - private Vector3i pos; - private Function stateTransform; - private BlockState ghostState; - - private PlacementOffset(boolean success) { - this.success = success; - this.pos = BlockPos.ZERO; - this.stateTransform = Function.identity(); - this.ghostState = null; - } - - public static PlacementOffset fail() { - return new PlacementOffset(false); - } - - public static PlacementOffset success() { - return new PlacementOffset(true); - } - - public static PlacementOffset success(Vector3i pos) { - return success().at(pos); - } - - public static PlacementOffset success(Vector3i pos, Function transform) { - return success().at(pos).withTransform(transform); - } - - public PlacementOffset at(Vector3i pos) { - this.pos = pos; - return this; - } - - public PlacementOffset withTransform(Function stateTransform) { - this.stateTransform = stateTransform; - return this; - } - - public PlacementOffset withGhostState(BlockState ghostState) { - this.ghostState = ghostState; - return this; - } - - public boolean isSuccessful() { - return success; - } - - public Vector3i getPos() { - return pos; - } - - public BlockPos getBlockPos() { - if (pos instanceof BlockPos) - return (BlockPos) pos; - - return new BlockPos(pos); - } - - public Function getTransform() { - return stateTransform; - } - - public boolean hasGhostState() { - return ghostState != null; - } - - public BlockState getGhostState() { - return ghostState; - } - - public boolean isReplaceable(World world) { - if (!success) - return false; - - return world.getBlockState(new BlockPos(pos)).getMaterial().isReplaceable(); - } - - public ActionResultType placeInWorld(World world, BlockItem blockItem, PlayerEntity player, Hand hand, BlockRayTraceResult ray) { - - if (!isReplaceable(world)) - return ActionResultType.PASS; - - if (world.isRemote) - return ActionResultType.SUCCESS; - - ItemUseContext context = new ItemUseContext(player, hand, ray); - BlockPos newPos = new BlockPos(pos); - - if (!world.isBlockModifiable(player, newPos)) - return ActionResultType.PASS; - - BlockState state = stateTransform.apply(blockItem.getBlock().getDefaultState()); - if (state.contains(BlockStateProperties.WATERLOGGED)) { - FluidState fluidState = world.getFluidState(newPos); - state = state.with(BlockStateProperties.WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - } - - BlockSnapshot snapshot = BlockSnapshot.create(world.getRegistryKey(), world, newPos); - world.setBlockState(newPos, state); - - BlockEvent.EntityPlaceEvent event = new BlockEvent.EntityPlaceEvent(snapshot, IPlacementHelper.ID, player); - if (MinecraftForge.EVENT_BUS.post(event)) { - snapshot.restore(true, false); - return ActionResultType.FAIL; - } - - BlockState newState = world.getBlockState(newPos); - SoundType soundtype = newState.getSoundType(world, newPos, player); - world.playSound(player, newPos, soundtype.getPlaceSound(), SoundCategory.BLOCKS, (soundtype.getVolume() + 1.0F) / 2.0F, soundtype.getPitch() * 0.8F); - - player.addStat(Stats.ITEM_USED.get(blockItem)); - - if (player instanceof ServerPlayerEntity) - CriteriaTriggers.PLACED_BLOCK.trigger((ServerPlayerEntity) player, newPos, context.getItem()); - - if (!player.isCreative()) - context.getItem().shrink(1); - - return ActionResultType.SUCCESS; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/placement/util/PoleHelper.java b/src/main/java/com/simibubi/create/foundation/utility/placement/util/PoleHelper.java deleted file mode 100644 index f362531d3..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/placement/util/PoleHelper.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.simibubi.create.foundation.utility.placement.util; - -import java.util.List; -import java.util.function.Function; -import java.util.function.Predicate; - -import com.simibubi.create.content.curiosities.tools.ExtendoGripItem; -import com.simibubi.create.foundation.config.AllConfigs; -import com.simibubi.create.foundation.utility.placement.IPlacementHelper; -import com.simibubi.create.foundation.utility.placement.PlacementOffset; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.state.Property; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeMod; - -@MethodsReturnNonnullByDefault -public abstract class PoleHelper> implements IPlacementHelper { - - protected final Predicate statePredicate; - protected final Property property; - protected final Function axisFunction; - - public PoleHelper(Predicate statePredicate, Function axisFunction, Property property) { - this.statePredicate = statePredicate; - this.axisFunction = axisFunction; - this.property = property; - } - - public boolean matchesAxis(BlockState state, Direction.Axis axis) { - if (!statePredicate.test(state)) - return false; - - return axisFunction.apply(state) == axis; - } - - public int attachedPoles(World world, BlockPos pos, Direction direction) { - BlockPos checkPos = pos.offset(direction); - BlockState state = world.getBlockState(checkPos); - int count = 0; - while (matchesAxis(state, direction.getAxis())) { - count++; - checkPos = checkPos.offset(direction); - state = world.getBlockState(checkPos); - } - return count; - } - - @Override - public Predicate getStatePredicate() { - return this.statePredicate; - } - - @Override - public PlacementOffset getOffset(PlayerEntity player, World world, BlockState state, BlockPos pos, BlockRayTraceResult ray) { - List directions = IPlacementHelper.orderedByDistance(pos, ray.getHitVec(), dir -> dir.getAxis() == axisFunction.apply(state)); - for (Direction dir : directions) { - int range = AllConfigs.SERVER.curiosities.placementAssistRange.get(); - if (player != null) { - ModifiableAttributeInstance reach = player.getAttribute(ForgeMod.REACH_DISTANCE.get()); - if (reach != null && reach.hasModifier(ExtendoGripItem.singleRangeAttributeModifier)) - range += 4; - } - int poles = attachedPoles(world, pos, dir); - if (poles >= range) - continue; - - BlockPos newPos = pos.offset(dir, poles + 1); - BlockState newState = world.getBlockState(newPos); - - if (newState.getMaterial().isReplaceable()) - return PlacementOffset.success(newPos, bState -> bState.with(property, state.get(property))); - - } - - return PlacementOffset.fail(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/recipe/RecipeConditions.java b/src/main/java/com/simibubi/create/foundation/utility/recipe/RecipeConditions.java deleted file mode 100644 index 901ca5dc6..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/recipe/RecipeConditions.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.simibubi.create.foundation.utility.recipe; - -import java.util.function.Predicate; - -import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringBehaviour; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.IRecipeType; - -/** - * Commonly used Predicates for searching through recipe collections. - * - * @author simibubi - * - */ -public class RecipeConditions { - - public static Predicate> isOfType(IRecipeType... otherTypes) { - return recipe -> { - IRecipeType recipeType = recipe.getType(); - for (IRecipeType other : otherTypes) - if (recipeType == other) - return true; - return false; - }; - } - - public static Predicate> firstIngredientMatches(ItemStack stack) { - return r -> !r.getIngredients().isEmpty() && r.getIngredients().get(0).test(stack); - } - - public static Predicate> outputMatchesFilter(FilteringBehaviour filtering) { - return r -> filtering.test(r.getRecipeOutput()); - - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/recipe/RecipeFinder.java b/src/main/java/com/simibubi/create/foundation/utility/recipe/RecipeFinder.java deleted file mode 100644 index b6a098d44..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/recipe/RecipeFinder.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.simibubi.create.foundation.utility.recipe; - -import java.util.Collections; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.function.Predicate; -import java.util.stream.Collectors; - -import javax.annotation.Nullable; - -import com.google.common.cache.Cache; -import com.google.common.cache.CacheBuilder; -import com.simibubi.create.foundation.utility.ISimpleReloadListener; - -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.world.World; - -/** - * Utility for searching through a world's recipe collection. Non-dynamic - * conditions can be split off into an initial search for caching intermediate - * results. - * - * @author simibubi - * - */ -public class RecipeFinder { - - private static Cache>> cachedSearches = CacheBuilder.newBuilder().build(); - - /** - * Find all IRecipes matching the condition predicate. If this search is made - * more than once, using the same object instance as the cacheKey will retrieve - * the cached result from the first time. - * - * @param cacheKey (can be null to prevent the caching) - * @param world - * @param conditions - * @return A started search to continue with more specific conditions. - */ - public static List> get(@Nullable Object cacheKey, World world, Predicate> conditions) { - if (cacheKey == null) - return startSearch(world, conditions); - - try { - return cachedSearches.get(cacheKey, () -> startSearch(world, conditions)); - } catch (ExecutionException e) { - e.printStackTrace(); - } - - return Collections.emptyList(); - } - - private static List> startSearch(World world, Predicate> conditions) { - List> list = world.getRecipeManager().getRecipes().stream().filter(conditions) - .collect(Collectors.toList()); - return list; - } - - public static final ISimpleReloadListener LISTENER = (resourceManager, profiler) -> { - cachedSearches.invalidateAll(); - }; - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationServerWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationServerWorld.java deleted file mode 100644 index 60b82a4e5..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationServerWorld.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.HashMap; -import java.util.function.Predicate; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.server.ServerWorld; - -public class PlacementSimulationServerWorld extends WrappedServerWorld { - public HashMap blocksAdded; - - public PlacementSimulationServerWorld(ServerWorld wrapped) { - super(wrapped); - blocksAdded = new HashMap<>(); - } - - public void clear() { - blocksAdded.clear(); - } - - @Override - public boolean setBlockState(BlockPos pos, BlockState newState, int flags) { - blocksAdded.put(pos.toImmutable(), newState); - return true; - } - - @Override - public boolean setBlockState(BlockPos pos, BlockState state) { - return setBlockState(pos, state, 0); - } - - @Override - public boolean hasBlockState(BlockPos pos, Predicate condition) { - return condition.test(getBlockState(pos)); - } - - @Override - public boolean isBlockPresent(BlockPos pos) { - return true; - } - - @Override - public boolean isAreaLoaded(BlockPos center, int range) { - return true; - } - - @Override - public BlockState getBlockState(BlockPos pos) { - if (blocksAdded.containsKey(pos)) - return blocksAdded.get(pos); - return Blocks.AIR.getDefaultState(); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java deleted file mode 100644 index e0f1c9806..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/PlacementSimulationWorld.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.function.Predicate; - -import com.jozufozu.flywheel.backend.IFlywheelWorld; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.SectionPos; -import net.minecraft.world.World; -import net.minecraft.world.lighting.WorldLightManager; - -public class PlacementSimulationWorld extends WrappedWorld implements IFlywheelWorld { - public Map blocksAdded; - public Map tesAdded; - - public Set spannedSections; - public WorldLightManager lighter; - public WrappedChunkProvider chunkProvider; - private final BlockPos.Mutable scratch = new BlockPos.Mutable(); - - public PlacementSimulationWorld(World wrapped) { - this(wrapped, new WrappedChunkProvider()); - } - - public PlacementSimulationWorld(World wrapped, WrappedChunkProvider chunkProvider) { - super(wrapped, chunkProvider); - this.chunkProvider = chunkProvider.setWorld(this); - spannedSections = new HashSet<>(); - lighter = new WorldLightManager(chunkProvider, true, false); // blockLight, skyLight - blocksAdded = new HashMap<>(); - tesAdded = new HashMap<>(); - } - - @Override - public WorldLightManager getLightingProvider() { - return lighter; - } - - public void updateLightSources() { - for (Map.Entry entry : blocksAdded.entrySet()) { - BlockPos pos = entry.getKey(); - BlockState state = entry.getValue(); - int light = state.getLightValue(this, pos); - if (light > 0) { - lighter.func_215573_a(pos, light); - } - } - } - - public void setTileEntities(Collection tileEntities) { - tesAdded.clear(); - tileEntities.forEach(te -> tesAdded.put(te.getPos(), te)); - } - - public void clear() { - blocksAdded.clear(); - } - - @Override - public boolean setBlockState(BlockPos pos, BlockState newState, int flags) { - blocksAdded.put(pos, newState); - - SectionPos sectionPos = SectionPos.from(pos); - if (spannedSections.add(sectionPos)) { - lighter.updateSectionStatus(sectionPos, false); - } - - if ((flags & 128) == 0) { - lighter.checkBlock(pos); - } - - return true; - } - - @Override - public boolean setBlockState(BlockPos pos, BlockState state) { - return setBlockState(pos, state, 0); - } - - @Override - public TileEntity getTileEntity(BlockPos pos) { - return tesAdded.get(pos); - } - - @Override - public boolean hasBlockState(BlockPos pos, Predicate condition) { - return condition.test(getBlockState(pos)); - } - - @Override - public boolean isBlockPresent(BlockPos pos) { - return true; - } - - @Override - public boolean isAreaLoaded(BlockPos center, int range) { - return true; - } - - public BlockState getBlockState(int x, int y, int z) { - return getBlockState(scratch.setPos(x, y, z)); - } - - @Override - public BlockState getBlockState(BlockPos pos) { - BlockState state = blocksAdded.get(pos); - if (state != null) - return state; - return Blocks.AIR.getDefaultState(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java deleted file mode 100644 index 3a15cc1e7..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/RayTraceWorld.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.function.BiFunction; - -import net.minecraft.block.BlockState; -import net.minecraft.fluid.FluidState; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.IWorld; - -public class RayTraceWorld implements IBlockReader { - - private IWorld template; - private BiFunction stateGetter; - - public RayTraceWorld(IWorld template, BiFunction stateGetter) { - this.template = template; - this.stateGetter = stateGetter; - } - - @Override - public TileEntity getTileEntity(BlockPos pos) { - return template.getTileEntity(pos); - } - - @Override - public BlockState getBlockState(BlockPos pos) { - return stateGetter.apply(pos, template.getBlockState(pos)); - } - - @Override - public FluidState getFluidState(BlockPos pos) { - return template.getFluidState(pos); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java deleted file mode 100644 index dbc75fcfd..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedChunkProvider.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.HashMap; -import java.util.Map; -import java.util.stream.Stream; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.utility.worldWrappers.chunk.EmptierChunk; -import com.simibubi.create.foundation.utility.worldWrappers.chunk.WrappedChunk; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.world.IBlockReader; -import net.minecraft.world.chunk.AbstractChunkProvider; -import net.minecraft.world.chunk.ChunkStatus; -import net.minecraft.world.chunk.IChunk; -import net.minecraft.world.lighting.WorldLightManager; - -public class WrappedChunkProvider extends AbstractChunkProvider { - private PlacementSimulationWorld world; - - public HashMap chunks; - - public WrappedChunkProvider setWorld(PlacementSimulationWorld world) { - this.world = world; - this.chunks = new HashMap<>(); - return this; - } - - public Stream getLightSources() { - return world.blocksAdded - .entrySet() - .stream() - .filter(it -> it.getValue().getLightValue(world, it.getKey()) != 0) - .map(Map.Entry::getKey); - } - - @Nullable - @Override - public IBlockReader getChunkForLight(int x, int z) { - return getChunk(x, z); - } - - @Override - public IBlockReader getWorld() { - return world; - } - - @Nullable - @Override - public IChunk getChunk(int x, int z, ChunkStatus status, boolean p_212849_4_) { - return getChunk(x, z); - } - - public IChunk getChunk(int x, int z) { - long pos = ChunkPos.asLong(x, z); - - if (chunks == null) - return new EmptierChunk(); - - return chunks.computeIfAbsent(pos, $ -> new WrappedChunk(world, x, z)); - } - - @Override - public String makeString() { - return "WrappedChunkProvider"; - } - - @Override - public WorldLightManager getLightManager() { - return world.getLightingProvider(); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedClientWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedClientWorld.java deleted file mode 100644 index ac0a8c9b3..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedClientWorld.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.List; -import java.util.function.BiPredicate; -import java.util.stream.Stream; - -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; - -import mezz.jei.api.MethodsReturnNonnullByDefault; -import net.minecraft.block.BlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityPredicate; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.FluidState; -import net.minecraft.particles.IParticleData; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.shapes.VoxelShape; -import net.minecraft.world.LightType; -import net.minecraft.world.World; -import net.minecraft.world.level.ColorResolver; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -@OnlyIn(Dist.CLIENT) -@SuppressWarnings("deprecation") -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class WrappedClientWorld extends ClientWorld { - private static final Minecraft mc = Minecraft.getInstance(); - protected World world; - - private WrappedClientWorld(World world) { - super(mc.getConnection(), mc.world.getWorldInfo(), world.getRegistryKey(), world.getDimension(), mc.getConnection().viewDistance, world.getProfilerSupplier(), mc.worldRenderer, world.isDebugWorld(), world.getBiomeAccess().seed); - this.world = world; - } - - public static WrappedClientWorld of(World world) { - return new WrappedClientWorld(world); - } - - @Override - public boolean isBlockLoaded(BlockPos pos) { - return world.isBlockLoaded(pos); - } - - @Override - public Stream getBlockCollisions(@Nullable Entity entity, AxisAlignedBB axisAlignedBB) { - return world.getBlockCollisions(entity, axisAlignedBB); - } - - @Override - public Stream getBlockCollisions(@Nullable Entity entity, AxisAlignedBB axisAlignedBB, BiPredicate blockStateBlockPosBiPredicate) { - return world.getBlockCollisions(entity, axisAlignedBB, blockStateBlockPosBiPredicate); - } - - @Override - public BlockState getBlockState(BlockPos pos) { - return world.getBlockState(pos); - } - - // FIXME: blockstate#getCollisionShape with WrappedClientWorld gives unreliable data (maybe) - - - @Override - public int getLightLevel(LightType type, BlockPos pos) { - return world.getLightLevel(type, pos); - } - - @Override - public int getLightValue(BlockPos pos) { - return world.getLightValue(pos); - } - - @Override - public FluidState getFluidState(BlockPos pos) { - return world.getFluidState(pos); - } - - @Nullable - @Override - public T getClosestEntity(List p_217361_1_, EntityPredicate p_217361_2_, @Nullable LivingEntity p_217361_3_, double p_217361_4_, double p_217361_6_, double p_217361_8_) { - return world.getClosestEntity(p_217361_1_, p_217361_2_, p_217361_3_, p_217361_4_, p_217361_6_, p_217361_8_); - } - - @Override - public int getColor(BlockPos p_225525_1_, ColorResolver p_225525_2_) { - return world.getColor(p_225525_1_, p_225525_2_); - } - - // FIXME: Emissive Lighting might not light stuff properly - - - @Override - public void addParticle(IParticleData p_195594_1_, double p_195594_2_, double p_195594_4_, double p_195594_6_, double p_195594_8_, double p_195594_10_, double p_195594_12_) { - world.addParticle(p_195594_1_, p_195594_2_, p_195594_4_, p_195594_6_, p_195594_8_, p_195594_10_, p_195594_12_); - } - - @Override - public void addParticle(IParticleData p_195590_1_, boolean p_195590_2_, double p_195590_3_, double p_195590_5_, double p_195590_7_, double p_195590_9_, double p_195590_11_, double p_195590_13_) { - world.addParticle(p_195590_1_, p_195590_2_, p_195590_3_, p_195590_5_, p_195590_7_, p_195590_9_, p_195590_11_, p_195590_13_); - } - - @Override - public void addOptionalParticle(IParticleData p_195589_1_, double p_195589_2_, double p_195589_4_, double p_195589_6_, double p_195589_8_, double p_195589_10_, double p_195589_12_) { - world.addOptionalParticle(p_195589_1_, p_195589_2_, p_195589_4_, p_195589_6_, p_195589_8_, p_195589_10_, p_195589_12_); - } - - @Override - public void addOptionalParticle(IParticleData p_217404_1_, boolean p_217404_2_, double p_217404_3_, double p_217404_5_, double p_217404_7_, double p_217404_9_, double p_217404_11_, double p_217404_13_) { - world.addOptionalParticle(p_217404_1_, p_217404_2_, p_217404_3_, p_217404_5_, p_217404_7_, p_217404_9_, p_217404_11_, p_217404_13_); - } - - @Override - public void playSound(double p_184134_1_, double p_184134_3_, double p_184134_5_, SoundEvent p_184134_7_, SoundCategory p_184134_8_, float p_184134_9_, float p_184134_10_, boolean p_184134_11_) { - world.playSound(p_184134_1_, p_184134_3_, p_184134_5_, p_184134_7_,p_184134_8_, p_184134_9_, p_184134_10_, p_184134_11_); - } - - @Override - public void playSound(@Nullable PlayerEntity p_184148_1_, double p_184148_2_, double p_184148_4_, double p_184148_6_, SoundEvent p_184148_8_, SoundCategory p_184148_9_, float p_184148_10_, float p_184148_11_) { - world.playSound(p_184148_1_, p_184148_2_, p_184148_4_, p_184148_6_, p_184148_8_, p_184148_9_, p_184148_10_, p_184148_11_); - } - - @Nullable - @Override - public TileEntity getTileEntity(BlockPos p_175625_1_) { - return world.getTileEntity(p_175625_1_); - } - public World getWrappedWorld() { - return world; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedServerWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedServerWorld.java deleted file mode 100644 index ec967e3d7..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedServerWorld.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.Collections; -import java.util.List; - -import javax.annotation.ParametersAreNonnullByDefault; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.crafting.RecipeManager; -import net.minecraft.server.MinecraftServer; -import net.minecraft.tags.ITagCollectionSupplier; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.Util; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.ITickList; -import net.minecraft.world.World; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.server.ServerChunkProvider; -import net.minecraft.world.server.ServerTickList; -import net.minecraft.world.server.ServerWorld; -import net.minecraft.world.storage.IServerWorldInfo; -import net.minecraft.world.storage.MapData; -import net.minecraft.world.storage.SaveFormat; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; - -@ParametersAreNonnullByDefault -@MethodsReturnNonnullByDefault -public class WrappedServerWorld extends ServerWorld { - - protected World world; - - public WrappedServerWorld(World world) { - // Replace null with world.getChunkProvider().chunkManager.field_219266_t ? We had null in 1.15 - super(world.getServer(), Util.getServerExecutor(), getLevelSaveFromWorld(world), (IServerWorldInfo) world.getWorldInfo(), world.getRegistryKey(), world.getDimension(), null, ((ServerChunkProvider) world.getChunkProvider()).getChunkGenerator(), world.isDebugWorld(), world.getBiomeAccess().seed, Collections.EMPTY_LIST, false); //, world.field_25143); - this.world = world; - } - - @Override - public float getCelestialAngleRadians(float p_72826_1_) { - return 0; - } - - @Override - public int getLight(BlockPos pos) { - return 15; - } - - @Override - public void notifyBlockUpdate(BlockPos pos, BlockState oldState, BlockState newState, int flags) { - world.notifyBlockUpdate(pos, oldState, newState, flags); - } - - @Override - public ServerTickList getPendingBlockTicks() { - ITickList tl = world.getPendingBlockTicks(); - if (tl instanceof ServerTickList) - return (ServerTickList) tl; - return super.getPendingBlockTicks(); - } - - @Override - public ServerTickList getPendingFluidTicks() { - ITickList tl = world.getPendingFluidTicks(); - if (tl instanceof ServerTickList) - return (ServerTickList) tl; - return super.getPendingFluidTicks(); - } - - @Override - public void playEvent(PlayerEntity player, int type, BlockPos pos, int data) { - } - - @Override - public List getPlayers() { - return Collections.emptyList(); - } - - @Override - public void playSound(PlayerEntity player, double x, double y, double z, SoundEvent soundIn, SoundCategory category, - float volume, float pitch) { - } - - @Override - public void playMovingSound(PlayerEntity p_217384_1_, Entity p_217384_2_, SoundEvent p_217384_3_, - SoundCategory p_217384_4_, float p_217384_5_, float p_217384_6_) { - } - - @Override - public Entity getEntityByID(int id) { - return null; - } - - @Override - public MapData getMapData(String mapName) { - return null; - } - - @Override - public boolean addEntity(Entity entityIn) { - entityIn.setWorld(world); - return world.addEntity(entityIn); - } - - @Override - public void registerMapData(MapData mapDataIn) { - } - - @Override - public int getNextMapId() { - return 0; - } - - @Override - public void sendBlockBreakProgress(int breakerId, BlockPos pos, int progress) { - } - - @Override - public RecipeManager getRecipeManager() { - return world.getRecipeManager(); - } - - @Override - public ITagCollectionSupplier getTags() { - return world.getTags(); - } - - @Override - public Biome getGeneratorStoredBiome(int p_225604_1_, int p_225604_2_, int p_225604_3_) { - return world.getGeneratorStoredBiome(p_225604_1_, p_225604_2_, p_225604_3_); - } - - private static SaveFormat.LevelSave getLevelSaveFromWorld(World world) { - return ObfuscationReflectionHelper.getPrivateValue(MinecraftServer.class, world.getServer(), "field_71310_m"); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java deleted file mode 100644 index 634da56bd..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/WrappedWorld.java +++ /dev/null @@ -1,193 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers; - -import java.util.Collections; -import java.util.List; -import java.util.function.Predicate; - -import javax.annotation.Nullable; -import javax.annotation.ParametersAreNonnullByDefault; - -import mcp.MethodsReturnNonnullByDefault; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.Fluid; -import net.minecraft.item.crafting.RecipeManager; -import net.minecraft.scoreboard.Scoreboard; -import net.minecraft.tags.ITagCollectionSupplier; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.registry.DynamicRegistries; -import net.minecraft.world.ITickList; -import net.minecraft.world.World; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.chunk.AbstractChunkProvider; -import net.minecraft.world.lighting.WorldLightManager; -import net.minecraft.world.storage.ISpawnWorldInfo; -import net.minecraft.world.storage.MapData; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class WrappedWorld extends World { - - protected World world; - protected AbstractChunkProvider provider; - - public WrappedWorld(World world, AbstractChunkProvider provider) { - super((ISpawnWorldInfo) world.getWorldInfo(), world.getRegistryKey(), world.getDimension(), world::getProfiler, - world.isRemote, world.isDebugWorld(), 0); - this.world = world; - this.provider = provider; - } - - public WrappedWorld(World world) { - this(world, null); - } - - public World getWorld() { - return world; - } - - @Override - public WorldLightManager getLightingProvider() { - return world.getLightingProvider(); - } - - @Override - public BlockState getBlockState(@Nullable BlockPos pos) { - return world.getBlockState(pos); - } - - @Override - public boolean hasBlockState(@Nullable BlockPos p_217375_1_, @Nullable Predicate p_217375_2_) { - return world.hasBlockState(p_217375_1_, p_217375_2_); - } - - @Override - public TileEntity getTileEntity(@Nullable BlockPos pos) { - return world.getTileEntity(pos); - } - - @Override - public boolean setBlockState(@Nullable BlockPos pos, @Nullable BlockState newState, int flags) { - return world.setBlockState(pos, newState, flags); - } - - @Override - public int getLight(BlockPos pos) { - return 15; - } - - @Override - public void notifyBlockUpdate(BlockPos pos, BlockState oldState, BlockState newState, int flags) { - world.notifyBlockUpdate(pos, oldState, newState, flags); - } - - @Override - public ITickList getPendingBlockTicks() { - return world.getPendingBlockTicks(); - } - - @Override - public ITickList getPendingFluidTicks() { - return world.getPendingFluidTicks(); - } - - @Override - public AbstractChunkProvider getChunkProvider() { - return provider; - } - - @Override - public void playEvent(@Nullable PlayerEntity player, int type, BlockPos pos, int data) {} - - @Override - public List getPlayers() { - return Collections.emptyList(); - } - - @Override - public void playSound(@Nullable PlayerEntity player, double x, double y, double z, SoundEvent soundIn, - SoundCategory category, float volume, float pitch) {} - - @Override - public void playMovingSound(@Nullable PlayerEntity p_217384_1_, Entity p_217384_2_, SoundEvent p_217384_3_, - SoundCategory p_217384_4_, float p_217384_5_, float p_217384_6_) {} - - @Override - public Entity getEntityByID(int id) { - return null; - } - - @Override - public MapData getMapData(String mapName) { - return null; - } - - @Override - public boolean addEntity(@Nullable Entity entityIn) { - if (entityIn == null) - return false; - entityIn.setWorld(world); - return world.addEntity(entityIn); - } - - @Override - public void registerMapData(MapData mapDataIn) {} - - @Override - public int getNextMapId() { - return world.getNextMapId(); - } - - @Override - public void sendBlockBreakProgress(int breakerId, BlockPos pos, int progress) {} - - @Override - public Scoreboard getScoreboard() { - return world.getScoreboard(); - } - - @Override - public RecipeManager getRecipeManager() { - return world.getRecipeManager(); - } - - @Override - public ITagCollectionSupplier getTags() { - return world.getTags(); - } - - @Override - public Biome getGeneratorStoredBiome(int p_225604_1_, int p_225604_2_, int p_225604_3_) { - return world.getGeneratorStoredBiome(p_225604_1_, p_225604_2_, p_225604_3_); - } - - @Override - public DynamicRegistries getRegistryManager() { - return world.getRegistryManager(); - } - - @Override - public float getBrightness(Direction p_230487_1_, boolean p_230487_2_) { - return world.getBrightness(p_230487_1_, p_230487_2_); - } - - @Override - public void markChunkDirty(BlockPos p_175646_1_, TileEntity p_175646_2_) { - } - - @Override - public boolean isBlockLoaded(BlockPos p_175667_1_) { - return true; - } - - @Override - public void updateComparatorOutputLevel(BlockPos p_175666_1_, Block p_175666_2_) { - return; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java deleted file mode 100644 index dae7595f3..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/EmptierChunk.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.Entity; -import net.minecraft.fluid.FluidState; -import net.minecraft.fluid.Fluids; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.chunk.Chunk; -import net.minecraft.world.lighting.WorldLightManager; -import net.minecraft.world.server.ChunkHolder; - -import javax.annotation.Nullable; - -import java.util.List; -import java.util.function.Predicate; - -public class EmptierChunk extends Chunk { - - public EmptierChunk() { - super(null, null, null); - } - - public BlockState getBlockState(BlockPos p_180495_1_) { - return Blocks.VOID_AIR.getDefaultState(); - } - - @Nullable - public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { - return null; - } - - public FluidState getFluidState(BlockPos p_204610_1_) { - return Fluids.EMPTY.getDefaultState(); - } - - @Nullable - public WorldLightManager getWorldLightManager() { - return null; - } - - public int getLightValue(BlockPos p_217298_1_) { - return 0; - } - - public void addEntity(Entity p_76612_1_) { } - - public void removeEntity(Entity p_76622_1_) { } - - public void removeEntityAtIndex(Entity p_76608_1_, int p_76608_2_) { } - - @Nullable - public TileEntity getTileEntity(BlockPos p_177424_1_, Chunk.CreateEntityType p_177424_2_) { - return null; - } - - public void addTileEntity(TileEntity p_150813_1_) { } - - public void addTileEntity(BlockPos p_177426_1_, TileEntity p_177426_2_) { } - - public void removeTileEntity(BlockPos p_177425_1_) { } - - public void markDirty() { } - - public void getEntitiesWithinAABBForEntity(@Nullable Entity p_177414_1_, AxisAlignedBB p_177414_2_, List p_177414_3_, Predicate p_177414_4_) { } - - public void getEntitiesOfTypeWithinAABB(Class p_177430_1_, AxisAlignedBB p_177430_2_, List p_177430_3_, Predicate p_177430_4_) { } - - public boolean isEmpty() { - return true; - } - - public boolean isEmptyBetween(int p_76606_1_, int p_76606_2_) { - return true; - } - - public ChunkHolder.LocationType getLocationType() { - return ChunkHolder.LocationType.BORDER; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java deleted file mode 100644 index c7bd8101d..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunk.java +++ /dev/null @@ -1,260 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import java.util.Collection; -import java.util.Map; -import java.util.Set; -import java.util.stream.Stream; - -import javax.annotation.Nullable; - -import com.simibubi.create.foundation.utility.worldWrappers.PlacementSimulationWorld; - -import it.unimi.dsi.fastutil.longs.LongSet; -import it.unimi.dsi.fastutil.shorts.ShortList; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.Entity; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.FluidState; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.ChunkPos; -import net.minecraft.util.palette.UpgradeData; -import net.minecraft.world.ITickList; -import net.minecraft.world.biome.BiomeContainer; -import net.minecraft.world.chunk.ChunkSection; -import net.minecraft.world.chunk.ChunkStatus; -import net.minecraft.world.chunk.IChunk; -import net.minecraft.world.gen.Heightmap; -import net.minecraft.world.gen.feature.structure.Structure; -import net.minecraft.world.gen.feature.structure.StructureStart; - -public class WrappedChunk implements IChunk { - - final PlacementSimulationWorld world; - boolean needsLight; - final int x; - final int z; - final ChunkPos pos; - - private final ChunkSection[] sections; - - public WrappedChunk(PlacementSimulationWorld world, int x, int z) { - this.world = world; - this.needsLight = true; - this.x = x; - this.z = z; - this.pos = new ChunkPos(x, z); - - this.sections = new ChunkSection[16]; - - for (int i = 0; i < 16; i++) { - sections[i] = new WrappedChunkSection(this, i << 4); - } - } - - @Override - public Stream getLightSources() { - return world.blocksAdded - .entrySet() - .stream() - .filter(it -> { - BlockPos blockPos = it.getKey(); - boolean chunkContains = blockPos.getX() >> 4 == x && blockPos.getZ() >> 4 == z; - return chunkContains && it.getValue().getLightValue(world, blockPos) != 0; - }) - .map(Map.Entry::getKey); - } - - @Override - public ChunkSection[] getSections() { - return sections; - } - - @Override - public ChunkStatus getStatus() { - return ChunkStatus.LIGHT; - } - - @Nullable - @Override - public BlockState setBlockState(BlockPos p_177436_1_, BlockState p_177436_2_, boolean p_177436_3_) { - return null; - } - - @Override - public void addTileEntity(BlockPos p_177426_1_, TileEntity p_177426_2_) { - - } - - @Override - public void addEntity(Entity p_76612_1_) { - - } - - @Override - public Set getTileEntitiesPos() { - return null; - } - - @Override - public Collection> func_217311_f() { - return null; - } - - @Override - public void setHeightmap(Heightmap.Type p_201607_1_, long[] p_201607_2_) { - - } - - @Override - public Heightmap getHeightmap(Heightmap.Type p_217303_1_) { - return null; - } - - @Override - public int getTopBlockY(Heightmap.Type p_201576_1_, int p_201576_2_, int p_201576_3_) { - return 0; - } - - @Override - public ChunkPos getPos() { - return pos; - } - - @Override - public void setLastSaveTime(long p_177432_1_) { - - } - - @Nullable - @Override - public BiomeContainer getBiomeArray() { - return null; - } - - @Override - public void setModified(boolean p_177427_1_) { - - } - - @Override - public boolean isModified() { - return false; - } - - @Override - public void removeTileEntity(BlockPos p_177425_1_) { - - } - - @Override - public ShortList[] getPackedPositions() { - return new ShortList[0]; - } - - @Nullable - @Override - public CompoundNBT getDeferredTileEntity(BlockPos p_201579_1_) { - return null; - } - - @Nullable - @Override - public CompoundNBT func_223134_j(BlockPos p_223134_1_) { - return null; - } - - @Override - public ITickList getBlocksToBeTicked() { - return null; - } - - @Override - public ITickList getFluidsToBeTicked() { - return null; - } - - @Override - public UpgradeData getUpgradeData() { - return null; - } - - @Override - public void setInhabitedTime(long p_177415_1_) { - - } - - @Override - public long getInhabitedTime() { - return 0; - } - - @Override - public boolean hasLight() { - return needsLight; - } - - @Override - public void setLight(boolean needsLight) { - this.needsLight = needsLight; - } - - @Nullable - @Override - public TileEntity getTileEntity(BlockPos pos) { - return null; - } - - @Override - public BlockState getBlockState(BlockPos pos) { - return world.getBlockState(pos); - } - - @Override - public FluidState getFluidState(BlockPos p_204610_1_) { - return null; - } - - @Override - public void addStructureReference(Structure arg0, long arg1) { - - } - - @Override - public Map, LongSet> getStructureReferences() { - return null; - } - - @Override - public LongSet getStructureReferences(Structure arg0) { - return null; - } - - @Override - public StructureStart getStructureStart(Structure arg0) { - return null; - } - - @Override - public void setStructureReferences(Map, LongSet> arg0) { - - } - - @Override - public void setStructureStart(Structure arg0, StructureStart arg1) { - - } - - @Override - public void setStructureStarts(Map, StructureStart> p_201612_1_) { - - } - - @Override - public Map, StructureStart> getStructureStarts() { - return null; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java b/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java deleted file mode 100644 index e5e90594d..000000000 --- a/src/main/java/com/simibubi/create/foundation/utility/worldWrappers/chunk/WrappedChunkSection.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.simibubi.create.foundation.utility.worldWrappers.chunk; - -import net.minecraft.block.BlockState; -import net.minecraft.world.chunk.ChunkSection; - -public class WrappedChunkSection extends ChunkSection { - - public WrappedChunk owner; - - public final int xStart; - public final int yStart; - public final int zStart; - - public WrappedChunkSection(WrappedChunk owner, int yBase) { - super(yBase); - this.owner = owner; - this.xStart = owner.pos.getXStart(); - this.yStart = yBase; - this.zStart = owner.pos.getZStart(); - } - - @Override - public BlockState getBlockState(int x, int y, int z) { - // ChunkSection#getBlockState expects local chunk coordinates, so we add to get back into world coords. - return owner.world.getBlockState(x + xStart, y + yStart, z + zStart); - } - - @Override - public BlockState setBlockState(int p_177484_1_, int p_177484_2_, int p_177484_3_, BlockState p_177484_4_, boolean p_177484_5_) { - throw new IllegalStateException("Chunk sections should not be mutated in a fake world."); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/AllWorldFeatures.java b/src/main/java/com/simibubi/create/foundation/worldgen/AllWorldFeatures.java deleted file mode 100644 index 3eab6cd93..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/AllWorldFeatures.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.HashMap; -import java.util.Map; - -import com.simibubi.create.AllBlocks; -import com.simibubi.create.Create; -import com.simibubi.create.content.palettes.AllPaletteBlocks; -import com.tterrag.registrate.util.nullness.NonNullSupplier; - -import net.minecraft.block.Block; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.WorldGenRegistries; -import net.minecraft.world.biome.Biome.Category; -import net.minecraft.world.biome.Biomes; -import net.minecraft.world.gen.GenerationStage; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.placement.Placement; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.event.world.BiomeLoadingEvent; - -public class AllWorldFeatures { - - static Map entries = new HashMap<>(); - - static final ConfigDrivenFeatureEntry - - COPPER = register("copper_ore", AllBlocks.COPPER_ORE, 18, 2).between(40, 85), - - ZINC = register("zinc_ore", AllBlocks.ZINC_ORE, 14, 4).between(15, 70), - - LIMESTONE = register("limestone", AllPaletteBlocks.LIMESTONE, 128, 1 / 64f).between(30, 70), - - WEATHERED_LIMESTONE = - register("weathered_limestone", AllPaletteBlocks.WEATHERED_LIMESTONE, 128, 1 / 64f).between(10, 30), - - DOLOMITE = register("dolomite", AllPaletteBlocks.DOLOMITE, 128, 1 / 64f).between(20, 70), - - GABBRO = register("gabbro", AllPaletteBlocks.GABBRO, 128, 1 / 64f).between(20, 70), - - SCORIA = register("scoria", AllPaletteBlocks.NATURAL_SCORIA, 128, 1 / 32f).between(0, 10) - - ; - - private static ConfigDrivenFeatureEntry register(String id, NonNullSupplier block, int clusterSize, - float frequency) { - ConfigDrivenFeatureEntry configDrivenFeatureEntry = - new ConfigDrivenFeatureEntry(id, block, clusterSize, frequency); - entries.put(id, configDrivenFeatureEntry); - return configDrivenFeatureEntry; - } - - /** - * Increment this number if all worldgen entries should be overwritten in this - * update. Worlds from the previous version will overwrite potentially changed - * values with the new defaults. - */ - public static final int forcedUpdateVersion = 2; - - public static void registerFeatures() { - // ForgeRegistries.FEATURES.register(ConfigDrivenOreFeature.INSTANCE); - // ForgeRegistries.DECORATORS.register(ConfigDrivenDecorator.INSTANCE); - entries.entrySet() - .forEach(entry -> { - Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, Create.ID + "_" + entry.getKey(), - entry.getValue() - .getFeature()); - }); - } - - public static void reload(BiomeLoadingEvent event) { - entries.values() - .forEach(entry -> { - if (event.getName() == Biomes.THE_VOID.getRegistryName()) - return; - if (event.getCategory() == Category.NETHER) - return; - event.getGeneration() - .feature(GenerationStage.Decoration.UNDERGROUND_ORES, entry.getFeature()); - }); - } - - public static void fillConfig(ForgeConfigSpec.Builder builder) { - entries.values() - .forEach(entry -> { - builder.push(entry.id); - entry.addToConfig(builder); - builder.pop(); - }); - } - - public static void register() {} - - public static void registerOreFeatures(RegistryEvent.Register> event) { - event.getRegistry() - .register(ConfigDrivenOreFeature.INSTANCE); - } - - public static void registerDecoratorFeatures(RegistryEvent.Register> event) { - event.getRegistry() - .register(ConfigDrivenDecorator.INSTANCE); - } -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenDecorator.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenDecorator.java deleted file mode 100644 index b9c6509ad..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenDecorator.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.Random; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.gen.placement.SimplePlacement; - -public class ConfigDrivenDecorator extends SimplePlacement { - - public static final ConfigDrivenDecorator INSTANCE = new ConfigDrivenDecorator(); - - public ConfigDrivenDecorator() { - super(ConfigDrivenOreFeatureConfig.CODEC); - setRegistryName("create_config_driven_decorator"); - } - - @Override - protected Stream getPositions(Random r, ConfigDrivenOreFeatureConfig config, BlockPos pos) { - float frequency = config.getFrequency(); - - int floored = MathHelper.floor(frequency); - int count = floored + (r.nextFloat() < frequency - floored ? 1 : 0); - if (count == 0) - return Stream.empty(); - - int maxY = config.getMaxY(); - int minY = config.getMinY(); - - return IntStream.range(0, count) - .mapToObj($ -> pos) - .map(p -> { - int i = p.getX(); - int j = p.getZ(); - int k = r.nextInt(maxY - minY) + minY; - return new BlockPos(i, k, j); - }); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenFeatureEntry.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenFeatureEntry.java deleted file mode 100644 index e89ff388e..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenFeatureEntry.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.Optional; - -import com.simibubi.create.foundation.config.ConfigBase; -import com.tterrag.registrate.util.nullness.NonNullSupplier; - -import net.minecraft.block.Block; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.OreFeatureConfig.FillerBlockType; -import net.minecraftforge.common.ForgeConfigSpec; - -public class ConfigDrivenFeatureEntry extends ConfigBase { - - public final String id; - public final NonNullSupplier block; - - protected ConfigInt clusterSize; - protected ConfigInt minHeight; - protected ConfigInt maxHeight; - protected ConfigFloat frequency; - - Optional> feature = Optional.empty(); - - public ConfigDrivenFeatureEntry(String id, NonNullSupplier block, int clusterSize, - float frequency) { - this.id = id; - this.block = block; - this.clusterSize = i(clusterSize, 0, "clusterSize"); - this.minHeight = i(0, 0, "minHeight"); - this.maxHeight = i(256, 0, "maxHeight"); - this.frequency = f(frequency, 0, 512, "frequency", "Amount of clusters generated per Chunk.", - " >1 to spawn multiple.", " <1 to make it a chance.", " 0 to disable."); - } - - public ConfigDrivenFeatureEntry between(int minHeight, int maxHeight) { - allValues.remove(this.minHeight); - allValues.remove(this.maxHeight); - this.minHeight = i(minHeight, 0, "minHeight"); - this.maxHeight = i(maxHeight, 0, "maxHeight"); - return this; - } - - public ConfiguredFeature getFeature() { - if (!feature.isPresent()) - feature = Optional.of(createFeature()); - return feature.get(); - } - - private ConfiguredFeature createFeature() { - ConfigDrivenOreFeatureConfig config = - new ConfigDrivenOreFeatureConfig(FillerBlockType.BASE_STONE_OVERWORLD, block.get() - .getDefaultState(), id); - - return ConfigDrivenOreFeature.INSTANCE.configure(config) - .decorate(ConfigDrivenDecorator.INSTANCE.configure(config)); - } - - public void addToConfig(ForgeConfigSpec.Builder builder) { - registerAll(builder); - } - - @Override - public String getName() { - return id; - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeature.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeature.java deleted file mode 100644 index 959452655..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeature.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.BitSet; -import java.util.Random; - -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.ISeedReader; -import net.minecraft.world.IWorld; -import net.minecraft.world.gen.ChunkGenerator; -import net.minecraft.world.gen.Heightmap; -import net.minecraft.world.gen.feature.Feature; - -public class ConfigDrivenOreFeature extends Feature { - - public static final ConfigDrivenOreFeature INSTANCE = new ConfigDrivenOreFeature(); - - public ConfigDrivenOreFeature() { - super(ConfigDrivenOreFeatureConfig.CODEC); - setRegistryName("create_config_driven_ore"); - } - - // From OreFeature, slight adjustments - - public boolean generate(ISeedReader p_241855_1_, ChunkGenerator p_241855_2_, Random p_241855_3_, - BlockPos p_241855_4_, ConfigDrivenOreFeatureConfig p_241855_5_) { - float f = p_241855_3_.nextFloat() * (float) Math.PI; - float size = p_241855_5_.getSize(); - float f1 = size / 8.0F; - int i = MathHelper.ceil((size / 16.0F * 2.0F + 1.0F) / 2.0F); - double d0 = (double) p_241855_4_.getX() + Math.sin((double) f) * (double) f1; - double d1 = (double) p_241855_4_.getX() - Math.sin((double) f) * (double) f1; - double d2 = (double) p_241855_4_.getZ() + Math.cos((double) f) * (double) f1; - double d3 = (double) p_241855_4_.getZ() - Math.cos((double) f) * (double) f1; - double d4 = (double) (p_241855_4_.getY() + p_241855_3_.nextInt(3) - 2); - double d5 = (double) (p_241855_4_.getY() + p_241855_3_.nextInt(3) - 2); - int k = p_241855_4_.getX() - MathHelper.ceil(f1) - i; - int l = p_241855_4_.getY() - 2 - i; - int i1 = p_241855_4_.getZ() - MathHelper.ceil(f1) - i; - int j1 = 2 * (MathHelper.ceil(f1) + i); - int k1 = 2 * (2 + i); - - for (int l1 = k; l1 <= k + j1; ++l1) { - for (int i2 = i1; i2 <= i1 + j1; ++i2) { - if (l <= p_241855_1_.getHeight(Heightmap.Type.OCEAN_FLOOR_WG, l1, i2)) { - return this.func_207803_a(p_241855_1_, p_241855_3_, p_241855_5_, d0, d1, d2, d3, d4, d5, k, l, i1, - j1, k1); - } - } - } - - return false; - } - - protected boolean func_207803_a(IWorld p_207803_1_, Random p_207803_2_, ConfigDrivenOreFeatureConfig p_207803_3_, - double p_207803_4_, double p_207803_6_, double p_207803_8_, double p_207803_10_, double p_207803_12_, - double p_207803_14_, int p_207803_16_, int p_207803_17_, int p_207803_18_, int p_207803_19_, int p_207803_20_) { - int i = 0; - BitSet bitset = new BitSet(p_207803_19_ * p_207803_20_ * p_207803_19_); - BlockPos.Mutable blockpos$mutable = new BlockPos.Mutable(); - int j = p_207803_3_.getSize(); - double[] adouble = new double[j * 4]; - - for (int k = 0; k < j; ++k) { - float f = (float) k / (float) j; - double d0 = MathHelper.lerp((double) f, p_207803_4_, p_207803_6_); - double d2 = MathHelper.lerp((double) f, p_207803_12_, p_207803_14_); - double d4 = MathHelper.lerp((double) f, p_207803_8_, p_207803_10_); - double d6 = p_207803_2_.nextDouble() * (double) j / 16.0D; - double d7 = ((double) (MathHelper.sin((float) Math.PI * f) + 1.0F) * d6 + 1.0D) / 2.0D; - adouble[k * 4 + 0] = d0; - adouble[k * 4 + 1] = d2; - adouble[k * 4 + 2] = d4; - adouble[k * 4 + 3] = d7; - } - - for (int i3 = 0; i3 < j - 1; ++i3) { - if (!(adouble[i3 * 4 + 3] <= 0.0D)) { - for (int k3 = i3 + 1; k3 < j; ++k3) { - if (!(adouble[k3 * 4 + 3] <= 0.0D)) { - double d12 = adouble[i3 * 4 + 0] - adouble[k3 * 4 + 0]; - double d13 = adouble[i3 * 4 + 1] - adouble[k3 * 4 + 1]; - double d14 = adouble[i3 * 4 + 2] - adouble[k3 * 4 + 2]; - double d15 = adouble[i3 * 4 + 3] - adouble[k3 * 4 + 3]; - if (d15 * d15 > d12 * d12 + d13 * d13 + d14 * d14) { - if (d15 > 0.0D) { - adouble[k3 * 4 + 3] = -1.0D; - } else { - adouble[i3 * 4 + 3] = -1.0D; - } - } - } - } - } - } - - for (int j3 = 0; j3 < j; ++j3) { - double d11 = adouble[j3 * 4 + 3]; - if (!(d11 < 0.0D)) { - double d1 = adouble[j3 * 4 + 0]; - double d3 = adouble[j3 * 4 + 1]; - double d5 = adouble[j3 * 4 + 2]; - int l = Math.max(MathHelper.floor(d1 - d11), p_207803_16_); - int l3 = Math.max(MathHelper.floor(d3 - d11), p_207803_17_); - int i1 = Math.max(MathHelper.floor(d5 - d11), p_207803_18_); - int j1 = Math.max(MathHelper.floor(d1 + d11), l); - int k1 = Math.max(MathHelper.floor(d3 + d11), l3); - int l1 = Math.max(MathHelper.floor(d5 + d11), i1); - - for (int i2 = l; i2 <= j1; ++i2) { - double d8 = ((double) i2 + 0.5D - d1) / d11; - if (d8 * d8 < 1.0D) { - for (int j2 = l3; j2 <= k1; ++j2) { - double d9 = ((double) j2 + 0.5D - d3) / d11; - if (d8 * d8 + d9 * d9 < 1.0D) { - for (int k2 = i1; k2 <= l1; ++k2) { - double d10 = ((double) k2 + 0.5D - d5) / d11; - if (d8 * d8 + d9 * d9 + d10 * d10 < 1.0D) { - int l2 = i2 - p_207803_16_ + (j2 - p_207803_17_) * p_207803_19_ - + (k2 - p_207803_18_) * p_207803_19_ * p_207803_20_; - if (!bitset.get(l2)) { - bitset.set(l2); - blockpos$mutable.setPos(i2, j2, k2); - if (p_207803_3_.target.test(p_207803_1_.getBlockState(blockpos$mutable), - p_207803_2_)) { - p_207803_1_.setBlockState(blockpos$mutable, p_207803_3_.state, 2); - ++i; - } - } - } - } - } - } - } - } - } - } - - return i > 0; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeatureConfig.java b/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeatureConfig.java deleted file mode 100644 index dfb01f65a..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/ConfigDrivenOreFeatureConfig.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import com.simibubi.create.foundation.config.AllConfigs; - -import net.minecraft.block.BlockState; -import net.minecraft.world.gen.feature.IFeatureConfig; -import net.minecraft.world.gen.feature.template.RuleTest; -import net.minecraft.world.gen.placement.IPlacementConfig; - -public class ConfigDrivenOreFeatureConfig implements IFeatureConfig, IPlacementConfig { - - public static final Codec CODEC = RecordCodecBuilder.create((p_236568_0_) -> { - return p_236568_0_.group(RuleTest.field_25012.fieldOf("target") - .forGetter((p_236570_0_) -> { - return p_236570_0_.target; - }), BlockState.CODEC.fieldOf("state") - .forGetter((p_236569_0_) -> { - return p_236569_0_.state; - }), - Codec.STRING.fieldOf("key") - .forGetter(t -> t.key)) - .apply(p_236568_0_, ConfigDrivenOreFeatureConfig::new); - }); - - public final RuleTest target; - public final BlockState state; - public final String key; - - public ConfigDrivenOreFeatureConfig(RuleTest target, BlockState state, String key) { - this.target = target; - this.state = state; - this.key = key; - } - - public int getSize() { - return entry().clusterSize.get(); - } - - public int getMinY() { - return entry().minHeight.get(); - } - - public int getMaxY() { - return entry().maxHeight.get(); - } - - public float getFrequency() { - if (AllConfigs.COMMON.worldGen.disable.get()) - return 0; - return entry().frequency.getF(); - } - - protected ConfigDrivenFeatureEntry entry() { - return AllWorldFeatures.entries.get(key); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/worldgen/OxidizingBlock.java b/src/main/java/com/simibubi/create/foundation/worldgen/OxidizingBlock.java deleted file mode 100644 index 74345a8a3..000000000 --- a/src/main/java/com/simibubi/create/foundation/worldgen/OxidizingBlock.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.simibubi.create.foundation.worldgen; - -import java.util.LinkedList; -import java.util.OptionalDouble; -import java.util.Random; - -import com.simibubi.create.content.curiosities.tools.SandPaperItem; -import com.simibubi.create.foundation.utility.BlockHelper; -import com.simibubi.create.foundation.utility.Iterate; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.state.IntegerProperty; -import net.minecraft.state.StateContainer.Builder; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; - -public class OxidizingBlock extends Block { - - public static final IntegerProperty OXIDIZATION = IntegerProperty.create("oxidization", 0, 7); - private float chance; - - public OxidizingBlock(Properties properties, float chance) { - super(properties); - this.chance = chance; - setDefaultState(getDefaultState().with(OXIDIZATION, 0)); - } - - @Override - protected void fillStateContainer(Builder builder) { - super.fillStateContainer(builder.add(OXIDIZATION)); - } - - @Override - public boolean ticksRandomly(BlockState state) { - return super.ticksRandomly(state) || state.get(OXIDIZATION) < 7; - } - - @Override - public void randomTick(BlockState state, ServerWorld worldIn, BlockPos pos, Random random) { - if (worldIn.getRandom() - .nextFloat() <= chance) { - int currentState = state.get(OXIDIZATION); - boolean canIncrease = false; - LinkedList neighbors = new LinkedList<>(); - for (Direction facing : Iterate.directions) { - BlockPos neighbourPos = pos.offset(facing); - if (!worldIn.isAreaLoaded(neighbourPos, 0)) - continue; - if (!worldIn.isBlockPresent(neighbourPos)) - continue; - BlockState neighborState = worldIn.getBlockState(neighbourPos); - if (neighborState.contains(OXIDIZATION) && neighborState.get(OXIDIZATION) != 0) { - neighbors.add(neighborState.get(OXIDIZATION)); - } - if (BlockHelper.hasBlockSolidSide(neighborState, worldIn, neighbourPos, facing.getOpposite())) { - continue; - } - canIncrease = true; - } - if (canIncrease) { - OptionalDouble average = neighbors.stream() - .mapToInt(v -> v) - .average(); - if (average.orElse(7d) >= currentState) - worldIn.setBlockState(pos, state.with(OXIDIZATION, Math.min(currentState + 1, 7))); - } - } - } - - @Override - public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, - BlockRayTraceResult blockRayTraceResult) { - if (state.get(OXIDIZATION) > 0 && player.getHeldItem(hand) - .getItem() instanceof SandPaperItem) { - if (!player.isCreative()) - player.getHeldItem(hand) - .damageItem(1, player, p -> p.sendBreakAnimation(p.getActiveHand())); - world.setBlockState(pos, state.with(OXIDIZATION, 0)); - return ActionResultType.SUCCESS; - } - return ActionResultType.PASS; - } -} diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 3c8e798a7..01536bdaf 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,27 +1,26 @@ -modLoader="javafml" -loaderVersion="[34,)" -#issueTrackerURL="" -license="MIT" +modLoader = "javafml" +loaderVersion = "[36,)" +license = "LGPL3" -[[mods]] -modId="create" -version="${file.jarVersion}" -displayName="Create" -#updateJSONURL="" -authors="simibubi" -description=''' -Technology that empowers the player.''' +[[mods]] +modId = "flywheel" +version = "${file.jarVersion}" +displayName = "Flywheel" +authors="Jozufozu" +description = ''' +A modern engine for modded minecraft. +''' -[[dependencies.create]] - modId="forge" - mandatory=true - versionRange="[35.1.16,)" - ordering="NONE" - side="BOTH" +[[dependencies.flywheel]] +modId = "forge" +mandatory = true +versionRange = "[36,)" +ordering = "NONE" +side = "BOTH" -[[dependencies.create]] - modId="minecraft" - mandatory=true - versionRange="[1.16.4,1.17)" - ordering="NONE" - side="BOTH" \ No newline at end of file +[[dependencies.flywheel]] +modId = "minecraft" +mandatory = true +versionRange = "[1.16.5,1.17)" +ordering = "NONE" +side = "BOTH" diff --git a/src/main/resources/assets/create/flywheel/programs/belt.json b/src/main/resources/assets/create/flywheel/programs/belt.json deleted file mode 100644 index e6b53432e..000000000 --- a/src/main/resources/assets/create/flywheel/programs/belt.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "vert": "create:belt.vert", - "frag": "flywheel:block.frag", - "states": [ - { - "when": "create:rainbow_debug", - "define": "DEBUG_RAINBOW" - }, - { - "when": { - "provider": "flywheel:normal_debug", - "value": "true" - }, - "define": "DEBUG_NORMAL" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "linear" - }, - "define": ["USE_FOG", "USE_FOG_LINEAR"], - "extend": "flywheel:fog_linear" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "exp2" - }, - "define": ["USE_FOG", "USE_FOG_EXP2"], - "extend": "flywheel:fog_exp2" - } - ] -} diff --git a/src/main/resources/assets/create/flywheel/programs/chromatic.json b/src/main/resources/assets/create/flywheel/programs/chromatic.json deleted file mode 100644 index f521eefa6..000000000 --- a/src/main/resources/assets/create/flywheel/programs/chromatic.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "vert": "create:area_effect.vert", - "frag": "create:area_effect.frag" -} diff --git a/src/main/resources/assets/create/flywheel/programs/contraption_actor.json b/src/main/resources/assets/create/flywheel/programs/contraption_actor.json deleted file mode 100644 index e9acf9d1e..000000000 --- a/src/main/resources/assets/create/flywheel/programs/contraption_actor.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "vert": "create:contraption_actor.vert", - "frag": "flywheel:block.frag", - "states": [ - { - "when": { - "provider": "flywheel:normal_debug", - "value": "true" - }, - "define": "DEBUG_NORMAL" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "linear" - }, - "define": ["USE_FOG", "USE_FOG_LINEAR"], - "extend": "flywheel:fog_linear" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "exp2" - }, - "define": ["USE_FOG", "USE_FOG_EXP2"], - "extend": "flywheel:fog_exp2" - } - ] -} diff --git a/src/main/resources/assets/create/flywheel/programs/contraption_structure.json b/src/main/resources/assets/create/flywheel/programs/contraption_structure.json deleted file mode 100644 index 9440ca25a..000000000 --- a/src/main/resources/assets/create/flywheel/programs/contraption_structure.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "vert": "create:contraption_structure.vert", - "frag": "flywheel:block.frag", - "states": [ - { - "when": { - "provider": "flywheel:normal_debug", - "value": "true" - }, - "define": "DEBUG_NORMAL" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "linear" - }, - "define": ["USE_FOG", "USE_FOG_LINEAR"], - "extend": "flywheel:fog_linear" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "exp2" - }, - "define": ["USE_FOG", "USE_FOG_EXP2"], - "extend": "flywheel:fog_exp2" - } - ] -} diff --git a/src/main/resources/assets/create/flywheel/programs/flap.json b/src/main/resources/assets/create/flywheel/programs/flap.json deleted file mode 100644 index f7de4c45e..000000000 --- a/src/main/resources/assets/create/flywheel/programs/flap.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "vert": "create:flap.vert", - "frag": "flywheel:block.frag", - "states": [ - { - "when": { - "provider": "flywheel:normal_debug", - "value": "true" - }, - "define": "DEBUG_NORMAL" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "linear" - }, - "define": ["USE_FOG", "USE_FOG_LINEAR"], - "extend": "flywheel:fog_linear" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "exp2" - }, - "define": ["USE_FOG", "USE_FOG_EXP2"], - "extend": "flywheel:fog_exp2" - } - ] -} diff --git a/src/main/resources/assets/create/flywheel/programs/rotating.json b/src/main/resources/assets/create/flywheel/programs/rotating.json deleted file mode 100644 index 58d80d445..000000000 --- a/src/main/resources/assets/create/flywheel/programs/rotating.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "vert": "create:rotating.vert", - "frag": "flywheel:block.frag", - "states": [ - { - "when": "create:rainbow_debug", - "define": "DEBUG_RAINBOW" - }, - { - "when": { - "provider": "flywheel:normal_debug", - "value": "true" - }, - "define": "DEBUG_NORMAL" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "linear" - }, - "define": ["USE_FOG", "USE_FOG_LINEAR"], - "extend": "flywheel:fog_linear" - }, - { - "when": { - "provider": "flywheel:fog_mode", - "value": "exp2" - }, - "define": ["USE_FOG", "USE_FOG_EXP2"], - "extend": "flywheel:fog_exp2" - } - ] -} diff --git a/src/main/resources/assets/create/flywheel/shaders/area_effect.frag b/src/main/resources/assets/create/flywheel/shaders/area_effect.frag deleted file mode 100644 index 6c34704ce..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/area_effect.frag +++ /dev/null @@ -1,167 +0,0 @@ -#version 140 - -#flwinclude <"flywheel:core/color.glsl"> - -in vec2 ScreenCoord; -in vec3 WorldDir; - -out vec4 Color; - -// constants -uniform sampler2D uDepth; -uniform sampler2D uColor; -uniform float uNearPlane = 0.15; -uniform float uFarPlane = 1.; -uniform vec3 uCameraPos; - -struct SphereFilter { - vec4 sphere;// - vec4 d1;// - vec4 strength;// - vec4 channelMask;// - mat4 colorOp; -}; - - #define N 256 -layout (std140) uniform Filters { - int uCount; - SphereFilter uSpheres[N]; -}; - -float linearizeDepth(float d, float zNear, float zFar) { - float clipZ = 2.0 * d - 1.0; - return zNear * zFar / (zFar + zNear - clipZ * (zFar - zNear)); -} - -vec3 filterColor(mat4 colorOp, vec3 color) { - // preserve alpha while transforming color - vec4 i = vec4(color, 1.); - i *= colorOp; - return i.rgb; -} - -float getDepth() { - float depth = texture2D(uDepth, ScreenCoord).r; - - return linearizeDepth(depth, uNearPlane, uFarPlane); -} - -float surfaceFilterStrength(vec3 worldPos, vec4 sphere, float feather) { - float distance = distance(sphere.xyz, worldPos); - return 1 - smoothstep(sphere.w, sphere.w + feather, distance); -} - -vec2 raySphere(vec3 worldDir, vec3 position, float radius) { - float rayLengthSqr = dot(worldDir, worldDir); - float sphereDistSqr = dot(position, position); - - const vec3 M = vec3(2., 2., 4.); - vec3 f = M * vec3(dot(-position, worldDir), vec2(rayLengthSqr)); - - vec2 s = vec2(f.x, radius); - vec2 s2 = s * s; - float c = sphereDistSqr - s2.y; - float dc = f.z * c; - - float discriminant = s2.x - dc; - float hitDepth = (-f.x - sqrt(discriminant)) / f.y; - - return vec2(discriminant, hitDepth); -} - -// if i == 0 return s -// if i == 1 return 1 - s -float invert(float s, float i) { - return i - 2*i*s + s; -} - -float bubbleFilterStrength(vec3 worldDir, float depth, vec4 sphere, float feather, float density) { - vec3 position = sphere.xyz; - - vec2 hit = raySphere(worldDir, position, sphere.w + feather); - float hitDepth = hit.y; - - float strength = 0.; - - //float boo = step(0., discriminant) * step(0., hitDepth) * step(0., depth - hitDepth); - if (hit.x > 0 && hitDepth > 0 && hitDepth < depth) { - vec3 hitPos = worldDir * hitDepth; - - vec3 normal = normalize(hitPos - position); - float normalDot = dot(normal, normalize(worldDir)); - // blend into the effect based on the distance between the fragcoord and point on the sphere - // this avoinds having hard edges - strength += mix(0., normalDot * normalDot * density, clamp(depth - hitDepth, 0., feather + 1.)); - } - - return clamp(strength, 0., 1.);// * boo; -} - -float filterStrength(vec3 worldDir, float depth, inout SphereFilter f) { - vec4 sphere = f.sphere; - vec4 data = f.d1; - float feather = data.x; - - float strength; - // transition effect - float transitionRadius = sphere.w + feather; - strength = 1. - smoothstep(transitionRadius, transitionRadius + max(0.5, data.y), length(sphere.xyz)); - // bubble effect - strength = max(strength, bubbleFilterStrength(worldDir, depth, sphere, feather, data.z)); - - strength *= f.strength.y; - // surface effect - strength = max(strength, surfaceFilterStrength(worldDir * depth, sphere, feather) * f.strength.x); - - return strength * f.strength.z; -} - -vec3 applyFilters(vec3 worldDir, float depth, vec3 diffuse) { - vec3 worldPos = worldDir * depth; - - vec3 accum = vec3(diffuse); - - for (int i = 0; i < uCount; i++) { - SphereFilter s = uSpheres[i]; - - float strength = filterStrength(worldDir, depth, s); - - strength = invert(strength, s.strength.w); - - if (strength > 0) { - const float fcon = 0.; - - vec3 baseColor = mix(diffuse, accum, s.d1.w); - - vec3 filtered = filterColor(s.colorOp, baseColor); - - // vec3 baseHsv = rgb2hsv(baseColor); - // vec3 maskHsv = rgb2hsv(s.colorMask.rgb); - // float diff = dot(abs(baseHsv - maskHsv), vec3(1., 1.1, 0.1)); - // float colorMask = step(s.colorMask.w, diff); - float mixing = clamp(strength, 0., 1.); - - accum = mix(accum, filtered, mixing * s.channelMask.xyz); - //accum = vec3(colorMask); - } - } - - return accum; -} - -vec4 debugGrid(vec3 worldPos, vec4 diffuse) { - vec3 fractionalCoords = fract(worldPos - uCameraPos); - - vec3 isBonudary = step(15./16., fractionalCoords); - - return vec4(mix(diffuse.rgb, fractionalCoords, isBonudary), 1.); -} - -void main() { - float depth = getDepth(); - - vec4 diffuse = texture2D(uColor, ScreenCoord); - - Color = vec4(applyFilters(WorldDir, depth, diffuse.rgb), diffuse.a); - //Color = debugGrid(WorldDir * depth, Color); -} diff --git a/src/main/resources/assets/create/flywheel/shaders/area_effect.vert b/src/main/resources/assets/create/flywheel/shaders/area_effect.vert deleted file mode 100644 index 0a0d8443a..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/area_effect.vert +++ /dev/null @@ -1,29 +0,0 @@ -#version 140 - -// scaling constants -// e - 0.99, this works well, no idea why -#define SXY 1.7282818 -// 1.90 -> highp close, mediump far -// 1.91 -> mediump close, highp far -#define SZ 1.905 - -in vec4 aVertex;// - -out vec2 ScreenCoord; -out vec3 WorldDir; - -uniform mat4 uInverseProjection; -uniform mat4 uInverseView; - -void main() { - gl_Position = vec4(aVertex.xy, 0., 1.); - ScreenCoord = aVertex.zw; - - vec4 clip = vec4(aVertex.xy, 0., 1.); - - clip *= uInverseProjection; - - vec3 cameraDir = clip.xyz / clip.w; - cameraDir = cameraDir * vec3(SXY, SXY, SZ); - WorldDir = (uInverseView * vec4(cameraDir, 1.)).xyz; -} diff --git a/src/main/resources/assets/create/flywheel/shaders/belt.vert b/src/main/resources/assets/create/flywheel/shaders/belt.vert deleted file mode 100644 index be5d51a43..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/belt.vert +++ /dev/null @@ -1,51 +0,0 @@ -#define PI 3.1415926538 - -#flwbuiltins -#flwinclude <"flywheel:core/quaternion.glsl"> -#flwinclude <"flywheel:core/matutils.glsl"> -#flwinclude <"flywheel:core/diffuse.glsl"> - -#[InstanceData] -struct Belt { - vec2 light; - vec4 color; - vec3 pos; - float speed; - float offset; - vec4 rotation; - vec2 sourceTexture; - vec4 scrollTexture; - float scrollMult; -}; - -#flwinclude <"flywheel:data/modelvertex.glsl"> -#flwinclude <"flywheel:data/blockfragment.glsl"> - -BlockFrag FLWMain(Vertex v, Belt instance) { - vec3 rotated = rotateVertexByQuat(v.pos - .5, instance.rotation) + instance.pos + .5; - - vec4 worldPos = vec4(rotated, 1.); - - vec3 norm = rotateVertexByQuat(v.normal, instance.rotation); - - FLWFinalizeWorldPos(worldPos); - FLWFinalizeNormal(norm); - - float scrollSize = instance.scrollTexture.w - instance.scrollTexture.y; - float scroll = fract(instance.speed * uTime / (31.5 * 16.) + instance.offset) * scrollSize * instance.scrollMult; - - BlockFrag b; - b.diffuse = diffuse(norm); - b.texCoords = v.texCoords - instance.sourceTexture + instance.scrollTexture.xy + vec2(0, scroll); - b.light = instance.light; - - #if defined(DEBUG_RAINBOW) - b.color = instance.color; - #elif defined(DEBUG_NORMAL) - b.color = vec4(norm, 1.); - #else - b.color = vec4(1.); - #endif - - return b; -} diff --git a/src/main/resources/assets/create/flywheel/shaders/context/contraption/builtin.frag b/src/main/resources/assets/create/flywheel/shaders/context/contraption/builtin.frag deleted file mode 100644 index 919e64ceb..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/context/contraption/builtin.frag +++ /dev/null @@ -1,31 +0,0 @@ -#flwinclude <"flywheel:context/world/fog.glsl"> -#flwinclude <"flywheel:core/lightutil.glsl"> - -varying vec3 BoxCoord; -varying vec2 BoxLight; -uniform sampler3D uLightVolume; - -uniform sampler2D uBlockAtlas; -uniform sampler2D uLightMap; - -vec4 FLWBlockTexture(vec2 texCoords) { - return texture2D(uBlockAtlas, texCoords); -} - -void FLWFinalizeColor(vec4 color) { - #if defined(USE_FOG) - float a = color.a; - float fog = clamp(FLWFogFactor(), 0., 1.); - - color = mix(uFogColor, color, fog); - color.a = a; - #endif - - gl_FragColor = color; -} - -vec4 FLWLight(vec2 lightCoords) { - lightCoords = max(lightCoords, texture3D(uLightVolume, BoxCoord).rg); - - return texture2D(uLightMap, shiftLight(lightCoords)); -} diff --git a/src/main/resources/assets/create/flywheel/shaders/context/contraption/builtin.vert b/src/main/resources/assets/create/flywheel/shaders/context/contraption/builtin.vert deleted file mode 100644 index 3d82348ea..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/context/contraption/builtin.vert +++ /dev/null @@ -1,34 +0,0 @@ -#if defined(USE_FOG) -varying float FragDistance; -#endif - -varying vec3 BoxCoord; - -uniform vec3 uLightBoxSize; -uniform vec3 uLightBoxMin; -uniform mat4 uModel; - -uniform float uTime; -uniform mat4 uViewProjection; -uniform vec3 uCameraPos; - -void FLWFinalizeWorldPos(inout vec4 worldPos) { - worldPos = uModel * worldPos; - - BoxCoord = (worldPos.xyz - uLightBoxMin) / uLightBoxSize; - - #if defined(USE_FOG) - FragDistance = length(worldPos.xyz); - #endif - - gl_Position = uViewProjection * worldPos; -} - -void FLWFinalizeNormal(inout vec3 normal) { - mat3 m; - m[0] = uModel[0].xyz; - m[1] = uModel[1].xyz; - m[2] = uModel[2].xyz; - normal = m * normal; -} - diff --git a/src/main/resources/assets/create/flywheel/shaders/contraption_actor.vert b/src/main/resources/assets/create/flywheel/shaders/contraption_actor.vert deleted file mode 100644 index 25ff4980a..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/contraption_actor.vert +++ /dev/null @@ -1,47 +0,0 @@ -#define PI 3.1415926538 - -#flwbuiltins -#flwinclude <"flywheel:core/matutils.glsl"> -#flwinclude <"flywheel:core/quaternion.glsl"> -#flwinclude <"flywheel:core/diffuse.glsl"> - -#[InstanceData] -struct Actor { - vec3 pos; - vec2 light; - float offset; - vec3 axis; - vec4 rotation; - vec3 rotationCenter; - float speed; -}; - -#flwinclude <"flywheel:data/modelvertex.glsl"> -#flwinclude <"flywheel:data/blockfragment.glsl"> - -BlockFrag FLWMain(Vertex v, Actor instance) { - float degrees = instance.offset + uTime * instance.speed / 20.; - //float angle = fract(degrees / 360.) * PI * 2.; - - vec4 kineticRot = quat(instance.axis, degrees); - vec3 rotated = rotateVertexByQuat(v.pos - instance.rotationCenter, kineticRot) + instance.rotationCenter; - - vec4 worldPos = vec4(rotateVertexByQuat(rotated - .5, instance.rotation) + instance.pos + .5, 1.); - vec3 norm = rotateVertexByQuat(rotateVertexByQuat(v.normal, kineticRot), instance.rotation); - - FLWFinalizeWorldPos(worldPos); - FLWFinalizeNormal(norm); - - BlockFrag b; - b.diffuse = diffuse(norm); - b.texCoords = v.texCoords; - b.light = instance.light; - - #if defined(DEBUG_NORMAL) - b.color = vec4(norm, 1.); - #else - b.color = vec4(1.); - #endif - - return b; -} diff --git a/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert b/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert deleted file mode 100644 index a42245c1d..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/contraption_structure.vert +++ /dev/null @@ -1,37 +0,0 @@ -#define PI 3.1415926538 - -#flwbuiltins -#flwinclude <"flywheel:core/matutils.glsl"> -#flwinclude <"flywheel:core/diffuse.glsl"> - -#[VertexData] -struct Vertex { - vec3 pos; - vec3 normal; - vec2 texCoords; - vec4 color; - vec2 modelLight; -}; - -#flwinclude <"flywheel:data/blockfragment.glsl"> - -BlockFrag FLWMain(Vertex v) { - vec4 worldPos = vec4(v.pos, 1.); - vec3 norm = v.normal; - - FLWFinalizeWorldPos(worldPos); - FLWFinalizeNormal(norm); - - BlockFrag b; - b.diffuse = diffuse(norm); - b.texCoords = v.texCoords; - b.light = v.modelLight; - - #if defined(DEBUG_NORMAL) - b.color = vec4(norm, 1.); - #else - b.color = v.color / diffuse(v.normal); - #endif - - return b; -} diff --git a/src/main/resources/assets/create/flywheel/shaders/flap.vert b/src/main/resources/assets/create/flywheel/shaders/flap.vert deleted file mode 100644 index ef39637df..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/flap.vert +++ /dev/null @@ -1,66 +0,0 @@ -#define PI 3.1415926538 - -#flwbuiltins -#flwinclude <"flywheel:core/matutils.glsl"> -#flwinclude <"flywheel:core/quaternion.glsl"> -#flwinclude <"flywheel:core/diffuse.glsl"> - -#[InstanceData] -struct Flap { - vec3 instancePos; - vec2 light; - vec3 segmentOffset; - vec3 pivot; - float horizontalAngle; - float intensity; - float flapScale; - float flapness; -}; - -#flwinclude <"flywheel:data/modelvertex.glsl"> -#flwinclude <"flywheel:data/blockfragment.glsl"> - - -float toRad(float degrees) { - return fract(degrees / 360.) * PI * 2.; -} - -float getFlapAngle(float flapness, float intensity, float scale) { - float absFlap = abs(flapness); - - float angle = sin((1. - absFlap) * PI * intensity) * 30. * flapness * scale; - - float halfAngle = angle * 0.5; - - float which = step(0., flapness);// 0 if negative, 1 if positive - float degrees = which * halfAngle + (1. - which) * angle;// branchless conditional multiply - - return degrees; -} - -BlockFrag FLWMain(Vertex v, Flap flap) { - float flapAngle = getFlapAngle(flap.flapness, flap.intensity, flap.flapScale); - - vec4 orientation = quat(vec3(0., 1., 0.), -flap.horizontalAngle); - vec4 flapRotation = quat(vec3(1., 0., 0.), flapAngle); - - vec3 rotated = rotateVertexByQuat(v.pos - flap.pivot, flapRotation) + flap.pivot + flap.segmentOffset; - rotated = rotateVertexByQuat(rotated - .5, orientation) + flap.instancePos + .5; - - vec4 worldPos = vec4(rotated, 1.); - vec3 norm = rotateVertexByQuat(rotateVertexByQuat(v.normal, flapRotation), orientation); - - FLWFinalizeWorldPos(worldPos); - FLWFinalizeNormal(norm); - - BlockFrag b; - b.diffuse = diffuse(norm); - b.texCoords = v.texCoords; - b.light = flap.light; - #if defined(DEBUG_NORMAL) - b.color = vec4(norm, 1.); - #else - b.color = vec4(1.); - #endif - return b; -} diff --git a/src/main/resources/assets/create/flywheel/shaders/rotating.vert b/src/main/resources/assets/create/flywheel/shaders/rotating.vert deleted file mode 100644 index 5acfdbd3f..000000000 --- a/src/main/resources/assets/create/flywheel/shaders/rotating.vert +++ /dev/null @@ -1,52 +0,0 @@ -#define PI 3.1415926538 - -#flwbuiltins -#flwinclude <"flywheel:core/matutils.glsl"> -#flwinclude <"flywheel:core/diffuse.glsl"> - -#[InstanceData] -struct Rotating { - vec2 light; - vec4 color; - vec3 pos; - float speed; - float offset; - vec3 axis; -}; - -#flwinclude <"flywheel:data/modelvertex.glsl"> -#flwinclude <"flywheel:data/blockfragment.glsl"> - -mat4 kineticRotation(float offset, float speed, vec3 axis) { - float degrees = offset + uTime * speed * 3./10.; - float angle = fract(degrees / 360.) * PI * 2.; - - return rotate(axis, angle); -} - -BlockFrag FLWMain(Vertex v, Rotating instance) { - mat4 spin = kineticRotation(instance.offset, instance.speed, instance.axis); - - vec4 worldPos = spin * vec4(v.pos - .5, 1.); - worldPos += vec4(instance.pos + .5, 0.); - - vec3 norm = modelToNormal(spin) * v.normal; - - FLWFinalizeWorldPos(worldPos); - FLWFinalizeNormal(norm); - - BlockFrag b; - b.diffuse = diffuse(norm); - b.texCoords = v.texCoords; - b.light = instance.light; - - #if defined(DEBUG_RAINBOW) - b.color = instance.color; - #elif defined(DEBUG_NORMAL) - b.color = vec4(norm, 1.); - #else - b.color = vec4(1.); - #endif - - return b; -} diff --git a/src/main/resources/assets/create/lang/Localization Readme.txt b/src/main/resources/assets/create/lang/Localization Readme.txt deleted file mode 100644 index c573cbded..000000000 --- a/src/main/resources/assets/create/lang/Localization Readme.txt +++ /dev/null @@ -1,37 +0,0 @@ -Hi there! -Looking to contribute with a localization? Here's how: - - -1. Check if your language is already present in an outdated state: - -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/generated/resources/assets/create/lang/unfinished -Shows generated lang files that are composed of any old translation file in the official lang folder as well as placeholder entries of new content added since. -NOTICE: this is not the true lang folder, changes to the files in that directory will be lost as they are auto-generated templates. - -If your locale is present here, copy the file, and translate all entries that read "UNLOCALIZED". - If you do not want to translate all of it, simply delete all entries that are still UNLOCALIZED, this will make it equivalent to an "outdated" lang file. - Once you are finished, continue with step 3. - - - -2. Creating a new localization file - -If you couldn't find a started translation in the previous step: -Grab a copy of the full standard localization file here: -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/generated/resources/assets/create/lang/en_us.json - Rename your copied file to the locale it is targeting, and start making your translations by replacing the english text. - Once you are finished, continue with step 3. - - - -3. Publishing your changes - -Any lang file you created or changed belongs into this folder: -https://github.com/Creators-of-Create/Create/blob/mc1.16/dev/src/main/resources/assets/create/lang -This is the lang folder you found this readme in. - You can either open a pull request inserting your file for us, or get in contact on the feedback & help channel linked on Create's project page (CurseForge). - NOTICE: when making PRs, always target the main branch unless your changes are exclusive to a different version of minecraft than the one the main branch is on. - - - -Thank you kindly for your contribution! diff --git a/src/main/resources/assets/create/lang/de_de.json b/src/main/resources/assets/create/lang/de_de.json deleted file mode 100644 index 4b4f99959..000000000 --- a/src/main/resources/assets/create/lang/de_de.json +++ /dev/null @@ -1,1196 +0,0 @@ -{ - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "Akazienholzfenster", - "block.create.acacia_window_pane": "Akazienholzfensterscheibe", - "block.create.adjustable_chain_gearshift": "Verstellbares Kettengetriebe", - "block.create.adjustable_crate": "Verstellbare Kiste", - "block.create.adjustable_pulse_repeater": "Verstellbarer Pulsverstärker", - "block.create.adjustable_repeater": "Verstellbarer Verstärker", - "block.create.analog_lever": "Analoger Schalter", - "block.create.andesite_belt_funnel": "Riementrichter aus Andesit", - "block.create.andesite_bricks": "Andesitziegel", - "block.create.andesite_bricks_slab": "Andesitziegelstufe", - "block.create.andesite_bricks_stairs": "Andesitziegeltreppe", - "block.create.andesite_bricks_wall": "Andesitziegelmauer", - "block.create.andesite_casing": "Andesitrahmen", - "block.create.andesite_cobblestone": "Andesitbruchstein", - "block.create.andesite_cobblestone_slab": "Andesitbruchsteinstufe", - "block.create.andesite_cobblestone_stairs": "Andesitbruchsteintreppe", - "block.create.andesite_cobblestone_wall": "Andesitbruchsteinmauer", - "block.create.andesite_encased_shaft": "Andesitummantelte Welle", - "block.create.andesite_funnel": "Andesit Trichter", - "block.create.andesite_pillar": "Andesitsäule", - "block.create.andesite_tunnel": "Andesittunnel", - "block.create.basin": "Behälter", - "block.create.belt": "Mechanischer Riemen", - "block.create.birch_window": "Birkenholzfenster", - "block.create.birch_window_pane": "Birkenholzfensterscheibe", - "block.create.black_sail": "Schwarzes Segel", - "block.create.black_seat": "Schwarzer Sitz", - "block.create.black_valve_handle": "Schwarzer Ventilgriff", - "block.create.blaze_burner": "Lohenbrenner", - "block.create.blue_sail": "Blaues Segel", - "block.create.blue_seat": "Blauer Sitz", - "block.create.blue_valve_handle": "Blauer Ventilgriff", - "block.create.brass_belt_funnel": "Riementrichter aus Messing", - "block.create.brass_block": "Messing Block", - "block.create.brass_casing": "Messingrahmen", - "block.create.brass_encased_shaft": "Messingummantelte Welle", - "block.create.brass_funnel": "Messingtrichter", - "block.create.brass_tunnel": "Messingtunnel", - "block.create.brown_sail": "Braunes Segel", - "block.create.brown_seat": "Brauner Sitz", - "block.create.brown_valve_handle": "Brauner Ventilgriff", - "block.create.cart_assembler": "Lorenmonteur", - "block.create.chiseled_dark_scoria": "Gemeißelte dunkle Schlacke", - "block.create.chiseled_dolomite": "Gemeißeltes Dolomit", - "block.create.chiseled_gabbro": "Gemeißeltes Gabbro", - "block.create.chiseled_limestone": "Gemeißelter Kalkstein", - "block.create.chiseled_scoria": "Gemeißelte Schlacke", - "block.create.chiseled_weathered_limestone": "Gemeißelter verwitterter Kalkstein", - "block.create.chocolate": "Schokolade", - "block.create.chute": "Rinne", - "block.create.clockwork_bearing": "Uhrwerk-Lager", - "block.create.clutch": "Kupplung", - "block.create.cogwheel": "Zahnrad", - "block.create.content_observer": "Inhaltsbeobachter", - "block.create.controller_rail": "Steuerungsschiene", - "block.create.copper_block": "Kupfer Block", - "block.create.copper_casing": "Kupferrahmen", - "block.create.copper_ore": "Kupfererz", - "block.create.copper_shingles": "Kupferschindeln", - "block.create.copper_tiles": "Kupferfliesen", - "block.create.copper_valve_handle": "Kupfer Ventilgriff", - "block.create.creative_crate": "Kreative anpassbare Kiste", - "block.create.creative_fluid_tank": "Kreativer Flüssigkeitstank", - "block.create.creative_motor": "Kreativer Motor", - "block.create.crushing_wheel": "Mahlwerkrad", - "block.create.crushing_wheel_controller": "Mahlwerkrad Steurung", - "block.create.cuckoo_clock": "Kuckucksuhr", - "block.create.cyan_sail": "Türkises Segel", - "block.create.cyan_seat": "Türkiser Sitz", - "block.create.cyan_valve_handle": "Türkiser Ventilgriff", - "block.create.dark_oak_window": "Schwarzeichenholzfenster", - "block.create.dark_oak_window_pane": "Schwarzeichenholzfensterscheibe", - "block.create.dark_scoria": "Dunkle Schlacke", - "block.create.dark_scoria_bricks": "Dunkle Schlackenziegel", - "block.create.dark_scoria_bricks_slab": "Dunkle Schlackenziegelstufe", - "block.create.dark_scoria_bricks_stairs": "Dunkle Schlackenziegeltreppe", - "block.create.dark_scoria_bricks_wall": "Dunkle Schlackenziegelmauer", - "block.create.dark_scoria_cobblestone": "Dunkler Schlackebruchstein", - "block.create.dark_scoria_cobblestone_slab": "Dunkle Schlackebruchsteinstufe", - "block.create.dark_scoria_cobblestone_stairs": "Dunkle Schlackebruchsteintreppe", - "block.create.dark_scoria_cobblestone_wall": "Dunkle Schlackebruchsteinmauer", - "block.create.dark_scoria_pillar": "Dunkle Schlackesäule", - "block.create.deployer": "Einsatzgerät", - "block.create.depot": "Depot", - "block.create.diorite_bricks": "Dioritziegel", - "block.create.diorite_bricks_slab": "Dioritziegelstufe", - "block.create.diorite_bricks_stairs": "Dioritziegeltreppe", - "block.create.diorite_bricks_wall": "Dioritziegelmauer", - "block.create.diorite_cobblestone": "Dioritbruchstein", - "block.create.diorite_cobblestone_slab": "Dioritbruchsteinstufe", - "block.create.diorite_cobblestone_stairs": "Dioritbruchsteintreppe", - "block.create.diorite_cobblestone_wall": "Dioritbruchsteinmauer", - "block.create.diorite_pillar": "Dioritsäule", - "block.create.dolomite": "Dolomit", - "block.create.dolomite_bricks": "Dolomitziegel", - "block.create.dolomite_bricks_slab": "Dolomitziegelstufe", - "block.create.dolomite_bricks_stairs": "Dolomitziegeltreppe", - "block.create.dolomite_bricks_wall": "Dolomitziegelmauer", - "block.create.dolomite_cobblestone": "Dolomitbruchstein", - "block.create.dolomite_cobblestone_slab": "Dolomitbruchsteinstufe", - "block.create.dolomite_cobblestone_stairs": "Dolomitbruchsteintreppe", - "block.create.dolomite_cobblestone_wall": "Dolomitbruchsteinmauer", - "block.create.dolomite_pillar": "Dolomitsäule", - "block.create.encased_chain_drive": "Ummantelter Kettenriemen", - "block.create.encased_fan": "Ummantelter Lüfter", - "block.create.encased_fluid_pipe": "Ummanteltes Rohr", - "block.create.fancy_andesite_bricks": "Schicke Andesitziegel", - "block.create.fancy_andesite_bricks_slab": "Schicke Andesitziegelstufe", - "block.create.fancy_andesite_bricks_stairs": "Schicke Andesitziegeltreppe", - "block.create.fancy_andesite_bricks_wall": "Schicke Andesitziegelmauer", - "block.create.fancy_dark_scoria_bricks": "Schicke dunkle Schlackenziegel", - "block.create.fancy_dark_scoria_bricks_slab": "Schicke dunkle Schlackenziegelstufe", - "block.create.fancy_dark_scoria_bricks_stairs": "Schicke dunkle Schlackenziegeltreppe", - "block.create.fancy_dark_scoria_bricks_wall": "Schicke dunkle Schlackenziegelmauer", - "block.create.fancy_diorite_bricks": "Schöne Dioritziegel", - "block.create.fancy_diorite_bricks_slab": "Schöne Dioritziegelstufe", - "block.create.fancy_diorite_bricks_stairs": "Schöne Dioritziegeltreppe", - "block.create.fancy_diorite_bricks_wall": "Schöne Dioritziegelmauer", - "block.create.fancy_dolomite_bricks": "Schöne Dolomitziegel", - "block.create.fancy_dolomite_bricks_slab": "Schöne Dolomitziegelstufe", - "block.create.fancy_dolomite_bricks_stairs": "Schöne Dolomitziegeltreppe", - "block.create.fancy_dolomite_bricks_wall": "Schöne Dolomitziegelmauer", - "block.create.fancy_gabbro_bricks": "Schöne Gabbroziegel", - "block.create.fancy_gabbro_bricks_slab": "Schöne Gabbroziegelstufe", - "block.create.fancy_gabbro_bricks_stairs": "Schöne Gabbroziegeltreppe", - "block.create.fancy_gabbro_bricks_wall": "Schöne Gabbroziegelmauer", - "block.create.fancy_granite_bricks": "Schöne Granitziegel", - "block.create.fancy_granite_bricks_slab": "Schöne Granitziegelstufe", - "block.create.fancy_granite_bricks_stairs": "Schöne Granitziegeltreppe", - "block.create.fancy_granite_bricks_wall": "Schöne Granitziegelmauer", - "block.create.fancy_limestone_bricks": "Schöne Kalksteinziegel", - "block.create.fancy_limestone_bricks_slab": "Schöne Kalksteinziegelstufe", - "block.create.fancy_limestone_bricks_stairs": "Schöne Kalksteinziegeltreppe", - "block.create.fancy_limestone_bricks_wall": "Schöne Kalksteinziegelmauer", - "block.create.fancy_scoria_bricks": "Schöne Schlackenziegel", - "block.create.fancy_scoria_bricks_slab": "Schöne Schlackenziegelstufe", - "block.create.fancy_scoria_bricks_stairs": "Schöne Schlackenziegeltreppe", - "block.create.fancy_scoria_bricks_wall": "Schöne Schlackenziegelmauer", - "block.create.fancy_weathered_limestone_bricks": "Schöne Verwitterte Kalksteinziegel", - "block.create.fancy_weathered_limestone_bricks_slab": "Schöne Verwitterte Kalksteinziegelstufe", - "block.create.fancy_weathered_limestone_bricks_stairs": "Schöne Verwitterte Kalksteinziegeltreppe", - "block.create.fancy_weathered_limestone_bricks_wall": "Schöne Verwitterte Kalksteinziegelmauer", - "block.create.fluid_pipe": "Flüssigkeitsrohr", - "block.create.fluid_tank": "Flüssigkeitstank", - "block.create.fluid_valve": "Flüssigkeitsventil", - "block.create.flywheel": "Schwungrad", - "block.create.framed_glass": "Gerahmtes Glas", - "block.create.framed_glass_pane": "Gerahmte Glasscheibe", - "block.create.furnace_engine": "Ofenmotor", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Gabbroziegel", - "block.create.gabbro_bricks_slab": "Gabbroziegelstufe", - "block.create.gabbro_bricks_stairs": "Gabbroziegeltreppe", - "block.create.gabbro_bricks_wall": "Gabbroziegelmauer", - "block.create.gabbro_cobblestone": "Gabbrobruchstein", - "block.create.gabbro_cobblestone_slab": "Gabbrobruchstein", - "block.create.gabbro_cobblestone_stairs": "Gabbrobruchstein", - "block.create.gabbro_cobblestone_wall": "Gabbrobruchstein", - "block.create.gabbro_pillar": "Gabbrosäule", - "block.create.gantry_carriage": "Portalkranwagen", - "block.create.gantry_shaft": "Portalkranachse", - "block.create.gearbox": "Getriebe", - "block.create.gearshift": "Gangschaltung", - "block.create.glass_fluid_pipe": "Glasrohr", - "block.create.granite_bricks": "Granitziegel", - "block.create.granite_bricks_slab": "Granitziegelstufe", - "block.create.granite_bricks_stairs": "Granitziegeltreppe", - "block.create.granite_bricks_wall": "Granitziegelmauer", - "block.create.granite_cobblestone": "Granitbruchstein", - "block.create.granite_cobblestone_slab": "Granitbruchsteinstufe", - "block.create.granite_cobblestone_stairs": "Granitbruchtreppe", - "block.create.granite_cobblestone_wall": "Granitbruchsteinmauer", - "block.create.granite_pillar": "Granitsäule", - "block.create.gray_sail": "Graues Segel", - "block.create.gray_seat": "Grauer Sitz", - "block.create.gray_valve_handle": "Grauer Ventilgriff", - "block.create.green_sail": "Grünes Segel", - "block.create.green_seat": "Grüner Sitz", - "block.create.green_valve_handle": "Grüner Ventilgriff", - "block.create.hand_crank": "Handkurbel", - "block.create.honey": "Honig", - "block.create.horizontal_framed_glass": "Horizontal Gerahmtes Glas", - "block.create.horizontal_framed_glass_pane": "Horizontal Gerahmte Glasscheibe", - "block.create.hose_pulley": "Umlenkrolle", - "block.create.item_drain": "Abfluss", - "block.create.jungle_window": "Tropenholzfenster", - "block.create.jungle_window_pane": "Tropenholzfensterscheibe", - "block.create.large_cogwheel": "Großes Zahnrad", - "block.create.layered_andesite": "Geschichteter Andesit", - "block.create.layered_dark_scoria": "Geschichtete Dunkle Schlacke", - "block.create.layered_diorite": "Geschichteter Diorit", - "block.create.layered_dolomite": "Geschichteter Dolomit", - "block.create.layered_gabbro": "Geschichteter Gabbro", - "block.create.layered_granite": "Geschichteter Granit", - "block.create.layered_limestone": "Geschichteter Kalkstein", - "block.create.layered_scoria": "Geschichtete Schlacke", - "block.create.layered_weathered_limestone": "Geschichteter Verwitterter Kalkstein", - "block.create.light_blue_sail": "Hellblaues Segel", - "block.create.light_blue_seat": "Hellblauer Sitz", - "block.create.light_blue_valve_handle": "Hellblauer Ventilgriff", - "block.create.light_gray_sail": "Hellgraues Segel", - "block.create.light_gray_seat": "Hellgrauer Sitz", - "block.create.light_gray_valve_handle": "Hellgrauer Ventilgriff", - "block.create.lime_sail": "Hellgrünes Segel", - "block.create.lime_seat": "Hellgrüner Sitz", - "block.create.lime_valve_handle": "Hellgrüner Ventilgriff", - "block.create.limesand": "Kalksand", - "block.create.limestone": "Kalkstein", - "block.create.limestone_bricks": "Kalksteinziegel", - "block.create.limestone_bricks_slab": "Kalksteinziegelstufe", - "block.create.limestone_bricks_stairs": "Kalksteinziegeltreppe", - "block.create.limestone_bricks_wall": "Kalksteinziegelmauer", - "block.create.limestone_cobblestone": "Kalkbruchstein", - "block.create.limestone_cobblestone_slab": "Kalkbruchsteinstufe", - "block.create.limestone_cobblestone_stairs": "Kalkbruchsteintreppe", - "block.create.limestone_cobblestone_wall": "Kalkbruchsteinmauer", - "block.create.limestone_pillar": "Kalksteinsäule", - "block.create.linear_chassis": "Schubgerüst", - "block.create.lit_blaze_burner": "Aktiver Lohenbrenner", - "block.create.magenta_sail": "Magenta Segel", - "block.create.magenta_seat": "Magenta Sitz", - "block.create.magenta_valve_handle": "Magenta Ventilgriff", - "block.create.mechanical_arm": "Mechanischer Arm", - "block.create.mechanical_bearing": "Mechanisches Lager", - "block.create.mechanical_crafter": "Mechanische Handwerkseinheit", - "block.create.mechanical_drill": "Mechanischer Bohrer", - "block.create.mechanical_harvester": "Mechanische Erntemaschine", - "block.create.mechanical_mixer": "Mechanischer Mixer", - "block.create.mechanical_piston": "Mechanischer Kolben", - "block.create.mechanical_piston_head": "Mechanisches Kolbenende", - "block.create.mechanical_plough": "Mechanischer Pflug", - "block.create.mechanical_press": "Mechanische Presse", - "block.create.mechanical_pump": "Mechanische Pumpe", - "block.create.mechanical_saw": "Mechanische Säge", - "block.create.metal_bracket": "Metallhalterung", - "block.create.millstone": "Mahlstein", - "block.create.minecart_anchor": "Lorenanker", - "block.create.mossy_andesite": "Moosiger Andesit", - "block.create.mossy_dark_scoria": "Moosige Dunkle Schlacke", - "block.create.mossy_diorite": "Moosiger Diorit", - "block.create.mossy_dolomite": "Moosiger Dolomit", - "block.create.mossy_gabbro": "Moosiger Gabbro", - "block.create.mossy_granite": "Moosiger Granit", - "block.create.mossy_limestone": "Moosiger Kalkstein", - "block.create.mossy_scoria": "Moosige Schlacke", - "block.create.mossy_weathered_limestone": "Moosiger Verwitterter Kalkstein", - "block.create.mysterious_cuckoo_clock": "Kuckucksuhr", - "block.create.natural_scoria": "Natürliche Schlacke", - "block.create.nixie_tube": "Nixie-Röhre", - "block.create.nozzle": "Düse", - "block.create.oak_window": "Eichenfenster", - "block.create.oak_window_pane": "Eichenfensterscheibe", - "block.create.orange_sail": "Oranges Segel", - "block.create.orange_seat": "Oranger Sitz", - "block.create.orange_valve_handle": "Oranger Ventilgriff", - "block.create.ornate_iron_window": "Kunstvolles Eisenfenster", - "block.create.ornate_iron_window_pane": "Kunstvolle Eisenfensterscheibe", - "block.create.overgrown_andesite": "Überwachsener Andesit", - "block.create.overgrown_dark_scoria": "Überwachsene Dunkle Schlacke", - "block.create.overgrown_diorite": "Überwachsener Diorit", - "block.create.overgrown_dolomite": "Überwachsener Dolomit", - "block.create.overgrown_gabbro": "Überwachsener Gabbro", - "block.create.overgrown_granite": "Überwachsener Granit", - "block.create.overgrown_limestone": "Überwachsener Kalkstein", - "block.create.overgrown_scoria": "Überwachsener Schlacke", - "block.create.overgrown_weathered_limestone": "Überwachsener Verwitterter Kalkstein", - "block.create.paved_andesite": "Gepflasterter Andesit", - "block.create.paved_andesite_slab": "Gepflasterte Andesitstufe", - "block.create.paved_andesite_stairs": "Gepflasterte Andesittreppe", - "block.create.paved_andesite_wall": "Gepflasterte Andesitmauer", - "block.create.paved_dark_scoria": "Gepflasterte Dunkle Schlacke", - "block.create.paved_dark_scoria_slab": "Gepflasterte Dunkle Schlackenstufe", - "block.create.paved_dark_scoria_stairs": "Gepflasterte Dunkle Schlackentreppe", - "block.create.paved_dark_scoria_wall": "Gepflasterte Dunkle Schlackenmauer", - "block.create.paved_diorite": "Gepflasterter Diorit", - "block.create.paved_diorite_slab": "Gepflasterte Dioritstufe", - "block.create.paved_diorite_stairs": "Gepflasterte Diorittreppe", - "block.create.paved_diorite_wall": "Gepflasterte Dioritmauer", - "block.create.paved_dolomite": "Gepflasterter Dolomit", - "block.create.paved_dolomite_slab": "Gepflasterte Dolomitstufe", - "block.create.paved_dolomite_stairs": "Gepflasterte Dolomittreppe", - "block.create.paved_dolomite_wall": "Gepflasterte Dolomitmauer", - "block.create.paved_gabbro": "Gepflasterter Gabbro", - "block.create.paved_gabbro_slab": "Gepflasterte Gabbrostufe", - "block.create.paved_gabbro_stairs": "Gepflasterte Gabbrotreppe", - "block.create.paved_gabbro_wall": "Gepflasterte Gabbromauer", - "block.create.paved_granite": "Gepflasterter Granit", - "block.create.paved_granite_slab": "Gepflasterte Granitstufe", - "block.create.paved_granite_stairs": "Gepflasterte Granittreppe", - "block.create.paved_granite_wall": "Gepflasterte Granitmauer", - "block.create.paved_limestone": "Gepflasterter Kalkstein", - "block.create.paved_limestone_slab": "Gepflasterte Kalksteinstufe", - "block.create.paved_limestone_stairs": "Gepflasterte Kalksteintreppe", - "block.create.paved_limestone_wall": "Gepflasterte Kalksteinmauer", - "block.create.paved_scoria": "Gepflasterte Schlacke", - "block.create.paved_scoria_slab": "Gepflasterte Schlackenstufe", - "block.create.paved_scoria_stairs": "Gepflasterte Schlackentreppe", - "block.create.paved_scoria_wall": "Gepflasterte Schlackenmauer", - "block.create.paved_weathered_limestone": "Gepflasterter Verwitterter Kalkstein", - "block.create.paved_weathered_limestone_slab": "Gepflasterte Verwitterte Kalksteinstufe", - "block.create.paved_weathered_limestone_stairs": "Gepflasterte Verwitterte Kalksteintreppe", - "block.create.paved_weathered_limestone_wall": "Gepflasterte Verwitterte Kalksteinmauer", - "block.create.pink_sail": "Rosa Segel", - "block.create.pink_seat": "Rosa Sitz", - "block.create.pink_valve_handle": "Rosa Ventilgriff", - "block.create.piston_extension_pole": "Kolben-Pleuelverlängerung", - "block.create.polished_dark_scoria": "Polierte Dunkle Schlacke", - "block.create.polished_dark_scoria_slab": "Polierte Dunkle Schlackenstufe", - "block.create.polished_dark_scoria_stairs": "Polierte Dunkle Schlackentreppe", - "block.create.polished_dark_scoria_wall": "Polierte Dunkle Schlackenmauer", - "block.create.polished_dolomite": "Polierter Dolomit", - "block.create.polished_dolomite_slab": "Polierte Dolomitstufe", - "block.create.polished_dolomite_stairs": "Polierte Dolomittreppe", - "block.create.polished_dolomite_wall": "Polierte Dolomitmauer", - "block.create.polished_gabbro": "Polierter Gabbro", - "block.create.polished_gabbro_slab": "Polierte Gabbrostufe", - "block.create.polished_gabbro_stairs": "Polierte Gabbrotreppe", - "block.create.polished_gabbro_wall": "Polierte Gabbromauer", - "block.create.polished_limestone": "Polierter Kalkstein", - "block.create.polished_limestone_slab": "Polierte Kalksteinstufe", - "block.create.polished_limestone_stairs": "Polierte Kalksteintreppe", - "block.create.polished_limestone_wall": "Polierte Kalksteinmauer", - "block.create.polished_scoria": "Polierte Schlacke", - "block.create.polished_scoria_slab": "Polierte Schlackenstufe", - "block.create.polished_scoria_stairs": "Polierte Schlackentreppe", - "block.create.polished_scoria_wall": "Polierte Schlackenmauer", - "block.create.polished_weathered_limestone": "Polierter Verwitterter Kalkstein", - "block.create.polished_weathered_limestone_slab": "Polierte Verwitterte Kalksteinstufe", - "block.create.polished_weathered_limestone_stairs": "Polierte Verwitterte Kalksteintreppe", - "block.create.polished_weathered_limestone_wall": "Polierte Verwitterte Kalksteinmauer", - "block.create.portable_fluid_interface": "Portable Flüssigkeitsschnittstelle", - "block.create.portable_storage_interface": "Portable Lagerschnittstelle", - "block.create.powered_latch": "RS-Flipflop", - "block.create.powered_toggle_latch": "T-Flipflop", - "block.create.pulley_magnet": "Rollenmagnet", - "block.create.pulse_repeater": "Pulsierender Verstärker", - "block.create.purple_sail": "Lila Segel", - "block.create.purple_seat": "Lila Sitz", - "block.create.purple_valve_handle": "Lila Ventilgriff", - "block.create.radial_chassis": "Drehgerüst", - "block.create.red_sail": "Rote Segel", - "block.create.red_seat": "Roter Sitz", - "block.create.red_valve_handle": "Roter Ventilgriff", - "block.create.redstone_contact": "Redstone-Kontakt", - "block.create.redstone_link": "Redstone-Verbindung", - "block.create.refined_radiance_casing": "Glanzgehäuse", - "block.create.reinforced_rail": "Verstärkte Schiene", - "block.create.rope": "Seil", - "block.create.rope_pulley": "Seilrolle", - "block.create.rotation_speed_controller": "Rotationsgeschwindigkeitsregler", - "block.create.sail_frame": "Segelrahmen", - "block.create.schematic_table": "Bauplantisch", - "block.create.schematicannon": "Bauplankanone", - "block.create.scoria": "Schlacke", - "block.create.scoria_bricks": "Schlackenziegel", - "block.create.scoria_bricks_slab": "Schlackenziegelstufe", - "block.create.scoria_bricks_stairs": "Schlackenziegeltreppe", - "block.create.scoria_bricks_wall": "Schlackenziegelmauer", - "block.create.scoria_cobblestone": "Schlackenbruchstein", - "block.create.scoria_cobblestone_slab": "Schlackenpflasterstufe", - "block.create.scoria_cobblestone_stairs": "Schlackenpflastertreppe", - "block.create.scoria_cobblestone_wall": "Schlackenpflastermauer", - "block.create.scoria_pillar": "Schlackensäule", - "block.create.secondary_linear_chassis": "Sekundäres Schubgerüst", - "block.create.sequenced_gearshift": "Sequenzielle Gangschaltung", - "block.create.shadow_steel_casing": "Schattengehäuse", - "block.create.shaft": "Welle", - "block.create.smart_chute": "Schlaue Rinne", - "block.create.smart_fluid_pipe": "Schlaues Flüssigkeitsrohr", - "block.create.speedometer": "Tachometer", - "block.create.spout": "Ausguss", - "block.create.spruce_window": "Fichtenfenster", - "block.create.spruce_window_pane": "Fichtenfensterscheibe", - "block.create.sticker": "Ankleber", - "block.create.sticky_mechanical_piston": "Klebriger Mechanischer Kolben", - "block.create.stockpile_switch": "Vorratssensor", - "block.create.stressometer": "Stressometer", - "block.create.tiled_glass": "Glasfliesen", - "block.create.tiled_glass_pane": "Glasfliesenscheibe", - "block.create.turntable": "Drehtisch", - "block.create.vertical_framed_glass": "Vertikal Gerahmtes Glas", - "block.create.vertical_framed_glass_pane": "Vertikal Gerahmte Glasscheibe", - "block.create.water_wheel": "Wasserrad", - "block.create.weathered_limestone": "Verwitterter Kalkstein", - "block.create.weathered_limestone_bricks": "Verwitterte Kalksteinziegel", - "block.create.weathered_limestone_bricks_slab": "Verwitterte Kalksteinziegelstufe", - "block.create.weathered_limestone_bricks_stairs": "Verwitterte Kalksteinziegeltreppe", - "block.create.weathered_limestone_bricks_wall": "Verwitterte Kalksteinziegelmauer", - "block.create.weathered_limestone_cobblestone": "Verwittertes Kalksteinpflaster", - "block.create.weathered_limestone_cobblestone_slab": "Verwitterte Kalksteinpflasterstufe", - "block.create.weathered_limestone_cobblestone_stairs": "Verwitterte Kalksteinpflastertreppe", - "block.create.weathered_limestone_cobblestone_wall": "Verwitterte Limestonepflastermauer", - "block.create.weathered_limestone_pillar": "Verwitterte Kalksteinsäule", - "block.create.weighted_ejector": "Gewichteter Werfer", - "block.create.white_sail": "Weiße Segel", - "block.create.white_seat": "Weißer Sitz", - "block.create.white_valve_handle": "Weißer Ventilgriff", - "block.create.windmill_bearing": "Windmühlenlager", - "block.create.wooden_bracket": "Holzhalterung", - "block.create.yellow_sail": "Gelbes Segel", - "block.create.yellow_seat": "Gelber Sitz", - "block.create.yellow_valve_handle": "Gelber Ventilgriff", - "block.create.zinc_block": "Zinkblock", - "block.create.zinc_ore": "Zinkerz", - - "entity.create.contraption": "Vorrichtung", - "entity.create.gantry_contraption": "Portalkran Vorrichtung", - "entity.create.seat": "Sitz", - "entity.create.stationary_contraption": "Stationäre Vorrichtung", - "entity.create.super_glue": "Superkleber", - - "fluid.create.milk": "Milch", - "fluid.create.potion": "Trank", - "fluid.create.tea": "Bauherrentee", - - "item.create.andesite_alloy": "Andesitlegierung", - "item.create.attribute_filter": "Attribut Filter", - "item.create.bar_of_chocolate": "Schokoladentafel", - "item.create.belt_connector": "Mechanischer Riemen", - "item.create.blaze_cake": "Lohenkuchen", - "item.create.blaze_cake_base": "Lohenkuchenbasis", - "item.create.brass_hand": "Messing Hand", - "item.create.brass_ingot": "Messingbarren", - "item.create.brass_nugget": "Messingklumpen", - "item.create.brass_sheet": "Messingblech", - "item.create.builders_tea": "Baumeisters Tee", - "item.create.chest_minecart_contraption": "Güterloren Vorrichtung", - "item.create.chocolate_bucket": "Schokoladeneimer", - "item.create.chocolate_glazed_berries": "Schokoladenglasierte Beeren", - "item.create.chromatic_compound": "Chromatische Verbindung", - "item.create.cinder_flour": "Aschenmehl", - "item.create.copper_ingot": "Kupferbarren", - "item.create.copper_nugget": "Kupferklumpen", - "item.create.copper_sheet": "Kupferblech", - "item.create.crafter_slot_cover": "Handwerkseinheit Slot Abdeckung", - "item.create.crushed_aluminum_ore": "Zerkleinertes Aluminiumerz", - "item.create.crushed_brass": "Zerkleinertes Messing", - "item.create.crushed_copper_ore": "Zerkleinertes Kupfererz", - "item.create.crushed_gold_ore": "Zerkleinertes Golderz", - "item.create.crushed_iron_ore": "Zerkleinertes Eisenerz", - "item.create.crushed_lead_ore": "Zerkleinertes Bleierz", - "item.create.crushed_nickel_ore": "Zerkleinertes Nickelerz", - "item.create.crushed_osmium_ore": "Zerkleinertes Osmiumerz", - "item.create.crushed_platinum_ore": "Zerkleinertes Platinerz", - "item.create.crushed_quicksilver_ore": "Zerkleinertes Quecksilbererz", - "item.create.crushed_silver_ore": "Zerkleinertes Silbererz", - "item.create.crushed_tin_ore": "Zerkleinertes Zinnerz", - "item.create.crushed_uranium_ore": "Zerkleinertes Uranerz", - "item.create.crushed_zinc_ore": "Zerkleinertes Zinkerz", - "item.create.deforester": "Entforster", - "item.create.dough": "Teig", - "item.create.electron_tube": "Elektronenröhre", - "item.create.empty_blaze_burner": "Leerer Lohenbrenner", - "item.create.empty_schematic": "Leerer Bauplan", - "item.create.extendo_grip": "Extendo Griff", - "item.create.filter": "Filter", - "item.create.furnace_minecart_contraption": "Antriebsloren Vorrichtung", - "item.create.goggles": "Ingenieursbrille", - "item.create.golden_sheet": "Goldblech", - "item.create.handheld_blockzapper": "Blockpistole", - "item.create.handheld_worldshaper": "Geländeformer", - "item.create.honey_bucket": "Honigeimer", - "item.create.honeyed_apple": "Honigapfel", - "item.create.integrated_circuit": "Integrierter Schaltkreis", - "item.create.iron_sheet": "Eisenblech", - "item.create.lapis_sheet": "Lapislazuliblech", - "item.create.minecart_contraption": "Loren Vorrichtung", - "item.create.minecart_coupling": "Lorenkupplung", - "item.create.polished_rose_quartz": "Polierter Rosenquarz", - "item.create.powdered_obsidian": "Pulverisierter Obsidian", - "item.create.propeller": "Propeller", - "item.create.red_sand_paper": "Rotes Schmirgelpapier", - "item.create.refined_radiance": "Raffinierter Glanz", - "item.create.rose_quartz": "Rosenquarz", - "item.create.sand_paper": "Schmirgelpapier", - "item.create.schematic": "Bauplan", - "item.create.schematic_and_quill": "Bauplan und Feder", - "item.create.shadow_steel": "Schattenstahl", - "item.create.super_glue": "Superkleber", - "item.create.sweet_roll": "Rosinenschnecke", - "item.create.tree_fertilizer": "Baumdünger", - "item.create.vertical_gearbox": "Vertikales Getriebe", - "item.create.wand_of_symmetry": "Symmetriestab", - "item.create.wheat_flour": "Weizenmehl", - "item.create.whisk": "Rührstab", - "item.create.wrench": "Schraubenschlüssel", - "item.create.zinc_ingot": "Zinkbarren", - "item.create.zinc_nugget": "Zinkklumpen", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Willkommen zu Create", - "advancement.create.root.desc": "Es ist Zeit mit dem Bauen von tollen Apparaten zu starten!", - "advancement.create.andesite_alloy": "Alliterationen in Massen", - "advancement.create.andesite_alloy.desc": "Create's Materialien haben verrückte Namen, Eisenlegierung ist im Deutschen leider keine.", - "advancement.create.its_alive": "Es ist am leben!", - "advancement.create.its_alive.desc": "Gucke deinem erstem beweglichen Teil beim drehen zu.", - "advancement.create.shifting_gears": "Wechsel deine Gänge", - "advancement.create.shifting_gears.desc": "Verbinde ein großes Zahnrad mit einem kleinem, um die Geschwindigkeit deiner Apparate zu verändern.", - "advancement.create.overstressed": "Überfordert", - "advancement.create.overstressed.desc": "Erfahre die Limits der Belastung aus erster Hand.", - "advancement.create.belt": "Befördere es alles", - "advancement.create.belt.desc": "Verbinde zwei Wllen mit einem Mechanischem Riemen", - "advancement.create.tunnel": "Geht in Deckung!", - "advancement.create.tunnel.desc": "Verschönere deinen Mechanischem Riemen mit einem Tunnel.", - "advancement.create.splitter_tunnel": "Divide & Conquer", - "advancement.create.splitter_tunnel.desc": "Mache einen Teiler aus einer Gruppe von Messingtunneln.", - "advancement.create.chute": "Abstürzen", - "advancement.create.chute.desc": "Platziere eine Rinne, das vertikale Gegenstück des Riemens.", - "advancement.create.upward_chute": "Luftentführung", - "advancement.create.upward_chute.desc": "Sieh einen geworfenen Gegenstand in eine propellerbetriebene Rinne fliegen.", - "advancement.create.fan": "Mechanischer Luftbändiger", - "advancement.create.fan.desc": "Reite den Luftstrom eines eingeschlossenen Propellers.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Beschaffe einen Extendo Griff.", - "advancement.create.dual_extendo_grip": "Ultimatives Boing-Zeitalter", - "advancement.create.dual_extendo_grip.desc": "Schwinge zwei Extendo Griffe gleichzeitig für eine übermenschliche Reichweite.", - "advancement.create.eob": "Ende der Beta", - "advancement.create.eob.desc": "Erwarte mehr Inhalt in der Zukunft. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Paletten", - - "death.attack.create.crush": "%1$s stolperte in ein Mahlwerk", - "death.attack.create.fan_fire": "%1$s hat heiße Luft eingeatmet", - "death.attack.create.fan_lava": "%1$s wurde von Lava verweht", - "death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert", - "death.attack.create.mechanical_saw": "%1$s wurde zersägt", - "death.attack.create.cuckoo_clock_explosion": "%1$s wurde durch eine falsche Kuckucksuhr gesprengt", - - "create.block.deployer.damage_source_name": "einem Finger", - "create.block.cart_assembler.invalid": "Platziere deinen Lorenmonteur auf einer Schiene.", - - "create.recipe.crushing": "Mahlen (Mahlwerk)", - "create.recipe.milling": "Mahlen (Mahlstein)", - "create.recipe.pressing": "Mechanische Presse", - "create.recipe.mixing": "Mixen", - "create.recipe.sawing": "Sägen", - "create.recipe.blockzapper_upgrade": "Blockpistole", - "create.recipe.sandpaper_polishing": "Schleifen", - "create.recipe.processing.chance": "Chance: %1$s%%", - "create.recipe.heat_requirement.none": "Keine Hitze benötigt", - "create.recipe.heat_requirement.heated": "Wenig Hitze benötigt", - "create.recipe.heat_requirement.superheated": "Viel Hitze benötigt", - "create.recipe.fan_washing": "Sammelwaschen", - "create.recipe.fan_washing.fan": "Propeller hinter fließendem Wasser", - "create.recipe.fan_smoking": "Sammelräuchern", - "create.recipe.fan_smoking.fan": "Propeller hinter Feuer", - "create.recipe.fan_blasting": "Sammelschmelzen", - "create.recipe.fan_blasting.fan": "Propeller hinter Lava", - "create.recipe.automatic_shapeless": "Automatisiertes Formloses Bauen", - "create.recipe.automatic_brewing": "Automatisiertes Brauen", - "create.recipe.packing": "Komprimieren", - "create.recipe.automatic_packing": "Automatisiertes Packen", - "create.recipe.mechanical_crafting": "Mechanisches Bauen", - "create.recipe.automatic_shaped": "Automatisiertes Geformtes Bauen", - "create.recipe.block_cutting": "Schneiden von Blöcken", - "create.recipe.wood_cutting": "Schneiden von Holz", - "create.recipe.mystery_conversion": "Mysteriöse Konvertierung", - "create.recipe.spout_filling": "Befüllung per Ausguss", - "create.recipe.draining": "Gegenstandsablassung", - - "create.generic.range": "Reichweite", - "create.generic.radius": "Radius", - "create.generic.width": "Breite", - "create.generic.height": "Höhe", - "create.generic.length": "Länge", - "create.generic.speed": "Geschwindigkeit", - "create.generic.delay": "Verzögerung", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Sekunden", - "create.generic.unit.minutes": "Minuten", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "Uhrzeigersinn", - "create.generic.counter_clockwise": "Gegen-Uhrzeigersinn", - - "create.action.scroll": "Wechseln", - "create.action.confirm": "Bestätigen", - "create.action.abort": "Abbrechen", - "create.action.saveToFile": "Speichern", - "create.action.discard": "Löschen", - - "create.keyinfo.toolmenu": "Werkzeugmenü", - "create.keyinfo.scrollup": "Simuliere Mausrad hoch (In der Welt)", - "create.keyinfo.scrolldown": "Simuliere Mausrad runter (In der Welt)", - - "create.gui.scrollInput.defaultTitle": "Wähle eine Option:", - "create.gui.scrollInput.scrollToModify": "Mausrad zum Ändern", - "create.gui.scrollInput.scrollToAdjustAmount": "Mausrad um Betrag anzupassen", - "create.gui.scrollInput.scrollToSelect": "Mausrad zum Auswählen", - "create.gui.scrollInput.shiftScrollsFaster": "Shift zum schnelleren Auswählen", - "create.gui.toolmenu.focusKey": "Halte [%1$s] zum Fokussieren", - "create.gui.toolmenu.cycle": "[Mausrad] zum Wechseln", - "create.gui.symmetryWand.mirrorType": "Spiegeln", - "create.gui.symmetryWand.orientation": "Orientierung", - - "create.symmetry.mirror.plane": "Einfach Spiegeln", - "create.symmetry.mirror.doublePlane": "Rechteckig", - "create.symmetry.mirror.triplePlane": "Achteckig", - - "create.orientation.orthogonal": "Orthogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Entlang Z", - "create.orientation.alongX": "Entlang X", - - "create.gui.blockzapper.title": "Blockpistole", - "create.gui.blockzapper.replaceMode": "Austauschmodus", - "create.gui.blockzapper.searchDiagonal": "Diagonalen folgen", - "create.gui.blockzapper.searchFuzzy": "Materialgrenzen ignorieren", - "create.gui.blockzapper.range": "Reichweite", - "create.gui.blockzapper.needsUpgradedAmplifier": "Benötigt besseren Verstärker", - "create.gui.blockzapper.patternSection": "Muster", - "create.gui.blockzapper.pattern.solid": "Fest", - "create.gui.blockzapper.pattern.checkered": "Schachbrett", - "create.gui.blockzapper.pattern.inversecheckered": "Inverses Schachbrett", - "create.gui.blockzapper.pattern.chance25": "25%-Chance", - "create.gui.blockzapper.pattern.chance50": "50%-Chance", - "create.gui.blockzapper.pattern.chance75": "75%-Chance", - - "create.blockzapper.usingBlock": "Auswahl: %1$s", - "create.blockzapper.componentUpgrades": "Bauteil-Upgrades:", - "create.blockzapper.component.body": "Rumpf", - "create.blockzapper.component.amplifier": "Verstärker", - "create.blockzapper.component.accelerator": "Beschleuniger", - "create.blockzapper.component.retriever": "Empfänger", - "create.blockzapper.component.scope": "Fernrohr", - "create.blockzapper.componentTier.none": "Nichts", - "create.blockzapper.componentTier.brass": "Messing", - "create.blockzapper.componentTier.chromatic": "Chromatisch", - "create.blockzapper.leftClickToSet": "Linksklick auf einen Block zum Auswählen", - "create.blockzapper.empty": "Keine Blöcke übrig!", - - "create.gui.terrainzapper.title": "Tragbarer Geländeformer", - "create.gui.terrainzapper.placement": "Platzierung", - "create.gui.terrainzapper.placement.merged": "Zusammengeführt", - "create.gui.terrainzapper.placement.attached": "Angefügt", - "create.gui.terrainzapper.placement.inserted": "Eingefügt", - "create.gui.terrainzapper.brush": "Pinsel", - "create.gui.terrainzapper.brush.cuboid": "Quader", - "create.gui.terrainzapper.brush.sphere": "Kugel", - "create.gui.terrainzapper.brush.cylinder": "Zylinder", - "create.gui.terrainzapper.tool": "Werkzeug", - "create.gui.terrainzapper.tool.fill": "Füllen", - "create.gui.terrainzapper.tool.place": "Platzieren", - "create.gui.terrainzapper.tool.replace": "Ersetzen", - "create.gui.terrainzapper.tool.clear": "Löschen", - "create.gui.terrainzapper.tool.overlay": "Überlagern", - "create.gui.terrainzapper.tool.flatten": "Abflachen", - - "create.terrainzapper.shiftRightClickToSet": "Shift-Rechts-Klick um eine Form auszuwählen", - - "create.logistics.filter": "Filter", - "create.logistics.recipe_filter": "Rezeptfilter", - "create.logistics.fluid_filter": "Flüssigkeitsfilter", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filter angewendet auf %1$s.", - "create.logistics.filter.apply_click_again": "Filter angewendet auf %1$s, klicke nochmal um Menge zu kopieren.", - "create.logistics.filter.apply_count": "Extraktionsmenge auf Filter angewendet.", - "create.logistics.when_multiple_outputs_available": "Wenn mehrere Ausgaben verfügbar sind", - - "create.gui.adjustable_crate.title": "Lagerraum", - "create.gui.adjustable_crate.storageSpace": "Lagerraum", - - "create.gui.stockpile_switch.title": "Vorratssensor", - "create.gui.stockpile_switch.invert_signal": "Invertiere Signal", - "create.gui.stockpile_switch.move_to_lower_at": "Gehe zu unterer Spur bei %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Gehe zu oberer Spur bei %1$s%%", - - "create.schematicAndQuill.dimensions": "Bauplangröße: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Erste Position festgelegt.", - "create.schematicAndQuill.secondPos": "Zweite Position festgelegt.", - "create.schematicAndQuill.noTarget": "Halte [Strg] zur Auswahl von Luft.", - "create.schematicAndQuill.abort": "Auswahl zurückgesetzt.", - "create.schematicAndQuill.title": "Bauplanname:", - "create.schematicAndQuill.fallbackName": "Mein Bauplan", - "create.schematicAndQuill.saved": "Gespeichert als %1$s", - "create.schematicAndQuill.convert": "Speichere und lade sofort hoch", - - "create.schematic.invalid": "[!] Ungültiger Gegenstand - Benutze einen Bauplantisch.", - "create.schematic.position": "Position", - "create.schematic.rotation": "Rotation", - "create.schematic.rotation.none": "Nein", - "create.schematic.rotation.cw90": "90° im Uhrzeigersinn", - "create.schematic.rotation.cw180": "180° im Uhrzeigersinn", - "create.schematic.rotation.cw270": "270° im Uhrzeigersinn", - "create.schematic.mirror": "Spiegeln", - "create.schematic.mirror.none": "Nein", - "create.schematic.mirror.frontBack": "Vor-Zurück", - "create.schematic.mirror.leftRight": "Links-Rechts", - "create.schematic.tool.deploy": "Positionieren", - "create.schematic.tool.move": "XZ Bewegen", - "create.schematic.tool.movey": "Y Bewegen", - "create.schematic.tool.rotate": "Rotieren", - "create.schematic.tool.print": "Drucken", - "create.schematic.tool.flip": "Umdrehen", - "create.schematic.tool.deploy.description.0": "Bewegt die Struktur an einen anderen ort.", - "create.schematic.tool.deploy.description.1": "Mit Rechtsklick auf den Boden platzieren.", - "create.schematic.tool.deploy.description.2": "[Strg] halten, um in einer bestimmten Entfernung zu arbeiten.", - "create.schematic.tool.deploy.description.3": "[Strg]-Mausrad um die Entfernung zu ändern.", - "create.schematic.tool.move.description.0": "Bewegt das Schema horizontal", - "create.schematic.tool.move.description.1": "Zeig auf das Schema und benutze [Strg]-Mausrad.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Bewegt das Schema vertikal", - "create.schematic.tool.movey.description.1": "[Strg]-Mausrad zum hoch- und runterbewegen", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Rotiert das Schema um seine Mitte.", - "create.schematic.tool.rotate.description.1": "[Strg]-Mausrad für eine Drehung um 90°", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Platziert sofort die Struktur in der Welt", - "create.schematic.tool.print.description.1": "[Rechtsklick] zum Bestätigen der Platzierung an der aktuellen Position.", - "create.schematic.tool.print.description.2": "Dieses Werkzeug ist nur für den Kreativ-Modus.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Kehrt das Schema entlang der ausgewählten Oberfläche um.", - "create.schematic.tool.flip.description.1": "Zeige auf das Schema und benutze [Strg]-Mausrad.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Dein Bauplan ist zu groß.", - "create.schematics.maxAllowedSize": "Die maximale Bauplan-Dateigröße ist:", - - "create.gui.schematicTable.title": "Bauplantisch", - "create.gui.schematicTable.availableSchematics": "Verfügbare Baupläne", - "create.gui.schematicTable.noSchematics": "Keine gespeicherten Baupläne", - "create.gui.schematicTable.uploading": "Hochladen...", - "create.gui.schematicTable.finished": "Hochgeladen!", - "create.gui.schematicTable.refresh": "Aktualisiere Dateien", - "create.gui.schematicTable.open_folder": "Öffne Ordner", - "create.gui.schematicannon.showOptions": "Zeige Drucker Einstellungen", - "create.gui.schematicannon.title": "Bauplankanone", - "create.gui.schematicannon.listPrinter": "Materiallistendruck", - "create.gui.schematicannon.gunpowderLevel": "Schwarzpulver bei %1$s%%", - "create.gui.schematicannon.shotsRemaining": "%1$s Schuss übrig", - "create.gui.schematicannon.shotsRemainingWithBackup": "Mit Reserve: %1$s", - "create.gui.schematicannon.optionEnabled": "Aktiviert", - "create.gui.schematicannon.optionDisabled": "Deaktiviert", - "create.gui.schematicannon.option.dontReplaceSolid": "Feste Blöcke nicht ersetzen", - "create.gui.schematicannon.option.replaceWithSolid": "Feste Blöcke mit festen ersetzen", - "create.gui.schematicannon.option.replaceWithAny": "Feste Blöcke immer ersetzen", - "create.gui.schematicannon.option.replaceWithEmpty": "Feste Blöcke mit Leere ersetzen", - "create.gui.schematicannon.option.skipMissing": "Fehlende Blöcke ignorieren", - "create.gui.schematicannon.option.skipTileEntities": "Tile Entities ignorieren", - "create.gui.schematicannon.option.skipMissing.description": "Wenn die Bauplankanone einen benötigten Block nicht finden kann, wird sie einfach beim nächsten weiter machen.", - "create.gui.schematicannon.option.skipTileEntities.description": "Die Bauplankanone wird versuchen, Blöcke mit extra Daten, beispielsweise Truhen, nicht zu ersetzen.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Die Kanone wird ausschließlich nicht feste Blöcke und Luft in ihrem Arbeitsbereich ersetzen.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Die Kanone wird feste Blöcke nur dann ersetzen, wenn an der Position vorher bereits ein fester Block war.", - "create.gui.schematicannon.option.replaceWithAny.description": "Die Kanone wird feste Blöcke ersetzen, wenn der Bauplan an der Position einen Block enthält.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Die Kanone wird alle Blöcke im Arbeitsbereich entfernen.", - "create.gui.schematicannon.slot.gunpowder": "Füge Schwarzpulver hinzu um die Kanone zu betreiben", - "create.gui.schematicannon.slot.listPrinter": "Platziere hier Bücher um eine Checkliste für deinen Bauplan zu drucken", - "create.gui.schematicannon.slot.schematic": "Füge Bauplan hier hinzu. Stelle sicher dass er an einer spezifischen Position bereitgestellt wird.", - "create.materialChecklist": "Material Checkliste", - "create.materialChecklist.blocksNotLoaded": "* Haftungsausschluss *\n\nMaterialliste könnte inakkurat seit da es möglich ist dass releveante Chunks nicht geladen sind.", - - "create.schematicannon.status.idle": "Aus", - "create.schematicannon.status.ready": "Bereit", - "create.schematicannon.status.running": "An", - "create.schematicannon.status.finished": "Fertig", - "create.schematicannon.status.paused": "Pausiert", - "create.schematicannon.status.stopped": "Gestoppt", - "create.schematicannon.status.noGunpowder": "Schwarzpulver leer", - "create.schematicannon.status.targetNotLoaded": "Kein Block geladen", - "create.schematicannon.status.targetOutsideRange": "Ziel zu weit weg", - "create.schematicannon.status.searching": "Suchen", - "create.schematicannon.status.skipping": "Überspringen", - "create.schematicannon.status.missingBlock": "Fehlender Block:", - "create.schematicannon.status.placing": "Platzieren", - "create.schematicannon.status.clearing": "Blöcke entfernen", - "create.schematicannon.status.schematicInvalid": "Bauplan ungültig", - "create.schematicannon.status.schematicNotPlaced": "Bauplan nicht positioniert", - "create.schematicannon.status.schematicExpired": "Bauplandatei abgelaufen", - - "create.gui.filter.deny_list": "Verweigert-Liste", - "create.gui.filter.deny_list.description": "Gegenstände werden nur weitergegeben wenn sie NICHT mit einem der oben genannten übereinstimmen. Eine leere Verweigert-Liste akzeptiert alles.", - "create.gui.filter.allow_list": "Erlaubt-Liste", - "create.gui.filter.allow_list.description": "Gegenstände werden nur weitergegeben wenn sie mit einem der oben genannten übereinstimmen. Eine leere Erlaubt-Liste lehnt alles ab.", - "create.gui.filter.respect_data": "Respektiere Daten", - "create.gui.filter.respect_data.description": "Gegenstände stimmen nur überein wenn ihre Haltbarkeit, Verzauberungen, und andere Attribute ebenfalls passen.", - "create.gui.filter.ignore_data": "Ignoriere Daten", - "create.gui.filter.ignore_data.description": "Gegenstände stimmen unabhängig ihrer Attribute überein.", - - "create.minecart_coupling.two_couplings_max": "Jede Lore kann nicht mehr als zwei Kupplungen haben", - "create.minecart_coupling.unloaded": "Teile des Zuges scheinen in nicht geladenen Chunks zu sein", - "create.minecart_coupling.no_loops": "Kupplungen können keine Schleife bilden", - "create.minecart_coupling.removed": "Alle Kupplungen wurden von der Lore entfernt", - "create.minecart_coupling.too_far": "Loren sind zu weit entfernt", - - "create.contraptions.movement_mode": "Bewegungsmodus", - "create.contraptions.movement_mode.move_place": "Platziere immer wenn gestoppt", - "create.contraptions.movement_mode.move_place_returned": "Platziere nur in Ausgangsposition", - "create.contraptions.movement_mode.move_never_place": "Platziere nur wenn Anker zerstört", - "create.contraptions.movement_mode.rotate_place": "Platziere immer wenn gestoppt", - "create.contraptions.movement_mode.rotate_place_returned": "Platziere nur nahe des Ausgangswinkels", - "create.contraptions.movement_mode.rotate_never_place": "Platziere nur wenn Anker zerstört", - "create.contraptions.cart_movement_mode": "Loren-Bewegungsmodus", - "create.contraptions.cart_movement_mode.rotate": "Zeige immer in Bewegungsrichtung", - "create.contraptions.cart_movement_mode.rotate_paused": "Pausiere Akteure beim drehen", - "create.contraptions.cart_movement_mode.rotation_locked": "Sperre Rotation", - "create.contraptions.windmill.rotation_direction": "Rotationsrichtung", - "create.contraptions.clockwork.clock_hands": "Uhrzeiger", - "create.contraptions.clockwork.hour_first": "Stundenzeiger zuerst", - "create.contraptions.clockwork.minute_first": "Minutenzeiger zuerst", - "create.contraptions.clockwork.hour_first_24": "24-Stunden-Zeiger zuerst", - - "create.gui.goggles.generator_stats": "Generator Statistik:", - "create.gui.goggles.kinetic_stats": "Kinetische Statistik:", - "create.gui.goggles.at_current_speed": "bei derzeitiger Geschwindigkeit", - "create.gui.goggles.pole_length": "Stab Länge:", - "create.gui.goggles.fluid_container": "Flüssigkeitstank Info:", - "create.gui.goggles.fluid_container.capacity": "Kapazität:", - - "create.gui.assembly.exception": "Diese Vorrichtung konnte nicht gebaut werden:", - "create.gui.assembly.exception.unmovableBlock": "Unbeweglicher Block (%4$s) bei [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "Der Block bei [%1$s,%2$s,%3$s] war nicht in einem geladenen Chunk", - "create.gui.assembly.exception.structureTooLarge": "In dieser Vorrichtung sind zu viele Blöcke enthalten.\nDas konfigurierte Maximum ist: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "Es sind zu viele Pleuelverlängerungen an diesen Kolben angebracht.\nDas konfigurierte Maximum ist: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Dem Kolben fehlen ein paar Pleuelverlängerungen", - "create.gui.assembly.exception.not_enough_sails": "Angebrachte Struktur enthält nicht genug segelähnliche Blöcke: %1$s\nEin Minimum von %2$s ist erforderlich", - - "create.gui.gauge.info_header": "Messgerät Information:", - - "create.gui.speedometer.title": "Rotationsgeschwindigkeit", - "create.gui.stressometer.title": "Netzwerkbelastung", - "create.gui.stressometer.capacity": "Verbleibende Kapazität", - "create.gui.stressometer.overstressed": "Überbelastet", - "create.gui.stressometer.no_rotation": "Keine Rotation", - - "create.gui.contraptions.not_fast_enough": "Wie es scheint dreht sich dieses %1$s _nicht_ _schnell_ _genug_.", - "create.gui.contraptions.network_overstressed": "Wie es scheint ist diese Vorrichtung _überbelastet_. Füge mehr Quellen hinzu oder _verlangsame_ die Komponenten mit hoher _Belastungsauswirkung_.", - - "create.gui.sequenced_gearshift.title": "Sequenzielle Gangschaltung", - "create.gui.sequenced_gearshift.instruction": "Befehl", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Drehe um Winkel", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Drehe", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Winkel", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Drehe um Kolben/Seilrolle/Portalkran zu bewegen", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Kolben", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distanz", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "Verzögerung", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Dauer", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "Beende", - "create.gui.sequenced_gearshift.instruction.end": "Beende", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Warte auf neues Redstone Signal", - "create.gui.sequenced_gearshift.instruction.await": "Warte", - "create.gui.sequenced_gearshift.speed": "Geschwindigkeit, Richtung", - "create.gui.sequenced_gearshift.speed.forward": "Eingangsgeschwindigkeit, Vorwärts", - "create.gui.sequenced_gearshift.speed.forward_fast": "Doppelte Geschwindigkeit, Vorwärts", - "create.gui.sequenced_gearshift.speed.back": "Eingangsgeschwindigkeit, Umgekehrt", - "create.gui.sequenced_gearshift.speed.back_fast": "Doppelte Geschwindigkeit, Umgekehrt", - - "create.tooltip.holdKey": "Halte [%1$s]", - "create.tooltip.holdKeyOrKey": "Halte [%1$s] oder [%2$s]", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Strg", - "create.tooltip.holdForDescription": "Halte [%1$s] für eine Zusammenfassung", - "create.tooltip.holdForControls": "Halte [%1$s] für die Steuerung", - "create.tooltip.speedRequirement": "Geschwindigkeitsanforderung: %1$s", - "create.tooltip.speedRequirement.none": "Keine", - "create.tooltip.speedRequirement.medium": "Moderat", - "create.tooltip.speedRequirement.high": "Schnell", - "create.tooltip.stressImpact": "Kinetische Belastungsauswirkung: %1$s", - "create.tooltip.stressImpact.low": "Niedrig", - "create.tooltip.stressImpact.medium": "Moderat", - "create.tooltip.stressImpact.high": "Hoch", - "create.tooltip.stressImpact.overstressed": "Überbelastet", - "create.tooltip.capacityProvided": "Kinetische Belastungskapazität: %1$s", - "create.tooltip.capacityProvided.low": "Niedrig", - "create.tooltip.capacityProvided.medium": "Mittel", - "create.tooltip.capacityProvided.high": "Groß", - "create.tooltip.generationSpeed": "Generiert mit %1$s %2$s", - "create.tooltip.analogStrength": "Analoge Stärke: %1$s/15", - - "create.tooltip.chute.header": "Rinnen Information", - "create.tooltip.chute.items_move_down": "Gegenstände bewegen sich nach unten", - "create.tooltip.chute.items_move_up": "Gegenstände bewegen sich nach oben", - "create.tooltip.chute.no_fans_attached": "Keine angeschlossenen Propeller", - "create.tooltip.chute.fans_push_up": "Propeller schieben von unterhalb", - "create.tooltip.chute.fans_push_down": "Propeller schieben von oberhalb", - "create.tooltip.chute.fans_pull_up": "Propeller ziehen von oberhalb", - "create.tooltip.chute.fans_pull_down": "Propeller ziehen von unterhalb", - "create.tooltip.chute.contains": "Enthält: %1$s x%2$s", - - "create.mechanical_arm.extract_from": "Nehme Gegenstände von %1$s", - "create.mechanical_arm.deposit_to": "Lege Gegenstände in %1$s", - "create.mechanical_arm.summary": "Mechanischer Arm hat %1$s Eingabe(n) und %2$s Ausgabe(n).", - "create.mechanical_arm.points_outside_range": "%1$s ausgewählte(r) Interaktionspunkt(e) entfernt aufgrund Reichweitenlimitierungen.", - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Gezwungener Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "Bevorzuge erstes Ziel", - - "create.weighted_ejector.target_set": "Ziel ausgewählt", - "create.weighted_ejector.target_not_valid": "Werfe auf angrenzenden Block (Ziel war nicht gültig)", - "create.weighted_ejector.no_target": "Werfe auf angrenzenden Block (Kein Ziel war ausgewählt)", - "create.weighted_ejector.targeting": "Werfe nach [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Geworfene Stapelgröße", - - "create.tunnel.selection_mode.split": "Aufteilung", - "create.tunnel.selection_mode.forced_split": "Gezwungene Aufteilung", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Gezwungener Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "Bevorzuge Naheliegensten", - "create.tunnel.selection_mode.randomize": "Zufällig", - "create.tunnel.selection_mode.synchronize": "Synchronisiere Eingaben", - - "create.hint.hose_pulley.title": "Endlose Versorgung", - "create.hint.hose_pulley": "Das angewählte Gewässer wird als unendlich betrachtet.", - "create.hint.mechanical_arm_no_targets.title": "Keine Ziele", - "create.hint.mechanical_arm_no_targets": "Es schein dieser _Mechanische_ _Arm_ hat keine _Ziele_. Wähle Riemen, Depots oder Trichter und andere Blöcke indem du sie _Rechts-Klickst_ während du den _Mechanischen_ _Arm_ in deiner _Hand_ _hälst_.", - "create.hint.empty_bearing.title": "Aktualisiere Lager", - "create.hint.empty_bearing": "_Rechts-Klicke_ das Lager mit einer _leeren_ _Hand_ um die Struktur die du davor gebaut hast _anzubringen_.", - "create.hint.full_deployer.title": "Einsatzgerät Gegenstand Überlauf", - "create.hint.full_deployer": "Es scheint, dieses _Einsatzgerät_ enthält _überflüssige_ _Gegenstände_ die _extrahiert_ werden müssen. Nutze _Trichter_ oder anderes um ihn von seinem Überfluss zu befreien.", - - "create.gui.config.overlay1": "Hi :)", - "create.gui.config.overlay2": "Dies ist ein Beispiel Overlay", - "create.gui.config.overlay3": "Klicke oder ziehe mit deiner Maus", - "create.gui.config.overlay4": "um diese Vorschau zu bewegen", - "create.gui.config.overlay5": "Drücke ESC um diesen Bildschirm zu verlassen", - "create.gui.config.overlay6": "und die neue Position zu speichern", - "create.gui.config.overlay7": "Benutze /create overlay reset", - "create.gui.config.overlay8": "um die Standardposition zurückzusetzen", - - "create.gui.attribute_filter.no_selected_attributes": "Keine Attribute ausgewählt", - "create.gui.attribute_filter.selected_attributes": "Ausgewählte Attribute:", - "create.gui.attribute_filter.add_attribute": "Füge Attribut zur Liste hinzu", - "create.gui.attribute_filter.add_inverted_attribute": "Füge gegenteiliges Attribut zur Liste hinzu", - "create.gui.attribute_filter.allow_list_disjunctive": "Erlaubt-Liste (Irgendeins)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Gegenstände werden weitergereicht wenn sie irgendeins der ausgewählten Attribute haben.", - "create.gui.attribute_filter.allow_list_conjunctive": "Erlaubt-Liste (Alle)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Gegenstände werden nur weitergereicht wenn sie ALLE der ausgewählten Attribute haben.", - "create.gui.attribute_filter.deny_list": "Verweigert-Liste", - "create.gui.attribute_filter.deny_list.description": "Gegenstände werden nur weitergereicht wenn sie KEINES der ausgewählten Attribute haben.", - "create.gui.attribute_filter.add_reference_item": "Füge Referenz-Gegenstand hinzu", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server Tick ist derzeitig um %s ms verlangsamt :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server Tick ist jetzt um %s ms verlangsamt >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server Tick ist jetzt wieder auf normaler Geschwindigkeit :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: Benutze /killtps stop um den Server Tick wieder auf normale Geschwindigkeit zu bringen", - "create.command.killTPSCommand.status.usage.1": "[Create]: Benutze /killtps start um den Server Tick künstlich zu verlangsamen", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.subtitle.schematicannon_launch_block": "Bauplankanone schießt", - "create.subtitle.schematicannon_finish": "Bauplankanone endet", - "create.subtitle.slime_added": "Schleim matscht", - "create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert", - "create.subtitle.mechanical_press_item_break": "Metall klonkt", - "create.subtitle.blockzapper_place": "Blöcke zappen an Ort und Stelle", - "create.subtitle.blockzapper_confirm": "Bestätigendes Ding", - "create.subtitle.blockzapper_deny": "Ablehnendes Boop", - "create.subtitle.block_funnel_eat": "Trichter MAMPFT", - "create.subtitle.blaze_munch": "Lohe kaut glücklich", - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "BEISPIELGEGENSTAND (nur ein Marker, um zu zeigen, dass dieser Tooltip existiert)", - "item.create.example_item.tooltip.summary": "Eine Kurzbeschreibung eines Gegenstands. _Unterstriche_ heben einen Begriff hervor.", - "item.create.example_item.tooltip.condition1": "Wenn dies", - "item.create.example_item.tooltip.behaviour1": "dann tut dieser Gegenstand das. (Verhalten wird mit der Shift-Taste angezeigt)", - "item.create.example_item.tooltip.condition2": "Und wenn dies", - "item.create.example_item.tooltip.behaviour2": "kannst du so viele Verhaltensweisen hinzufügen wie du magst", - "item.create.example_item.tooltip.control1": "Wenn Strg gedrückt ist", - "item.create.example_item.tooltip.action1": "wird diese Steuerung gezeigt.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRIESTAB", - "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt deine Blockplatzierung perfekt über die konfigurierten Ebenen.", - "item.create.wand_of_symmetry.tooltip.condition1": "Wenn in der Schnellleiste", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Bleibt aktiv", - "item.create.wand_of_symmetry.tooltip.control1": "R-Klick auf Boden", - "item.create.wand_of_symmetry.tooltip.action1": "_Erstellt_ oder _Bewegt_ den Spiegel", - "item.create.wand_of_symmetry.tooltip.control2": "R-Klick in die Luft", - "item.create.wand_of_symmetry.tooltip.action2": "_Löscht_ den aktiven Spiegel", - "item.create.wand_of_symmetry.tooltip.control3": "R-Klick beim Schleichen", - "item.create.wand_of_symmetry.tooltip.action3": "Öffnet das _Konfigurationsmenü_", - - "item.create.handheld_blockzapper.tooltip": "BLOCKPISTOLE", - "item.create.handheld_blockzapper.tooltip.summary": "Ermöglicht das Platzieren und Austauschen von Blöcken aus großer Entfernung.", - "item.create.handheld_blockzapper.tooltip.control1": "L-Klick auf Block", - "item.create.handheld_blockzapper.tooltip.action1": "Legt die von dem Werkzeug platzierten Blöcke auf den angeschauten Block fest.", - "item.create.handheld_blockzapper.tooltip.control2": "R-Klick auf Block", - "item.create.handheld_blockzapper.tooltip.action2": "_Platziert_ oder _Ersetzt_ den ausgewählten Block.", - "item.create.handheld_blockzapper.tooltip.control3": "R-Klick beim Schleichen", - "item.create.handheld_blockzapper.tooltip.action3": "Öffnet das _Konfigurationsmenü_", - - "item.create.tree_fertilizer.tooltip": "BAUMDÜNGER", - "item.create.tree_fertilizer.tooltip.summary": "Eine Mischung aus Mineralien, die sich für weit verbreitete Baumarten eignet", - "item.create.tree_fertilizer.tooltip.condition1": "Wenn auf einen Setzling angewendet", - "item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen", - - "item.create.empty_schematic.tooltip": "LEERER BAUPLAN", - "item.create.empty_schematic.tooltip.summary": "Wird für die Herstellung und das Schreiben auf dem _Bauplantisch_ verwendet", - - "item.create.schematic.tooltip": "BAUPLAN", - "item.create.schematic.tooltip.summary": "Beschreibt eine Struktur, die in der Welt platziert werden kann. Positioniere das Hologramm wie gewünscht und verwende eine _Bauplankanone_, um die Struktur zu bauen.", - "item.create.schematic.tooltip.condition1": "Wenn gehalten", - "item.create.schematic.tooltip.behaviour1": "Kann mit den Werkzeugen auf dem Bildschirm positioniert werden", - "item.create.schematic.tooltip.control1": "R-Klick beim Schleichen", - "item.create.schematic.tooltip.action1": "Öffnet ein Menü zur Eingabe exakter _Koordinaten_.", - - "item.create.schematic_and_quill.tooltip": "BAUPLAN UND FEDER", - "item.create.schematic_and_quill.tooltip.summary": "Wird benutzt, um eine existierende Struktur in der Welt als eine .nbt-Datei zu speichern.", - "item.create.schematic_and_quill.tooltip.condition1": "Schritt 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Wähle zwei Eckpunkte mit R-Klick aus", - "item.create.schematic_and_quill.tooltip.condition2": "Schritt 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "Auf den Oberflächen _Strg-Scrollen_ um die Größe zu verändern. Nochmals R-Klick um zu speichern.", - "item.create.schematic_and_quill.tooltip.control1": "R-Klick", - "item.create.schematic_and_quill.tooltip.action1": "Einen Eckpunkt auswählen / Speichern bestätigen", - "item.create.schematic_and_quill.tooltip.control2": "Strg gedrückt halten", - "item.create.schematic_and_quill.tooltip.action2": "Wählt Punkte _mitten_ _in_ _der_ _Luft._ _Scrolle,_ um die Distanz anzupassen.", - "item.create.schematic_and_quill.tooltip.control3": "R-Klick beim Schleichen", - "item.create.schematic_and_quill.tooltip.action3": "_Setzt_ die Auswahl _zurück_ und löscht sie.", - - "block.create.schematicannon.tooltip": "BAUPLANKANONE", - "block.create.schematicannon.tooltip.summary": "Schießt Blöcke, um eine Struktur nach einem positionierten _Bauplan_ zu errichten. Benutzt Gegenstände aus benachbarten Inventaren und _Schießpulver_ als Treibstoff.", - "block.create.schematicannon.tooltip.control1": "Wenn R-Geklickt", - "block.create.schematicannon.tooltip.action1": "Öffnet das _Menü_", - - "block.create.schematic_table.tooltip": "BAUPLANTISCH", - "block.create.schematic_table.tooltip.summary": "Schreibt gespeicherte Baupläne auf einen _Leeren_ _Bauplan_", - "block.create.schematic_table.tooltip.condition1": "Wenn ein Leerer Bauplan bereitgestellt wird", - "block.create.schematic_table.tooltip.behaviour1": "Lädt eine ausgewählte Datei von deinem Bauplan-Ordner hoch", - - "block.create.shaft.tooltip": "WELLE", - "block.create.shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse.", - - "block.create.cogwheel.tooltip": "ZAHNRAD", - "block.create.cogwheel.tooltip.summary": "_Überträgt_ _Rotation_ entlang seiner Achse und auf benachbarte _Zahnräder._", - - "block.create.large_cogwheel.tooltip": "GROẞES ZAHNRAD", - "block.create.large_cogwheel.tooltip.summary": "Eine größere Version des _Zahnrads,_ ermöglicht eine _Änderung_ der _Rotationsgeschwindigket_, wenn es mit einem kleinerem Zahnrad verbunden wird.", - - "block.create.encased_shaft.tooltip": "EINGESCHLOSSENE WELLE", - "block.create.encased_shaft.tooltip.summary": "_Überträgt_ _Rotation_ entlang ihrer Achse. Nützlich für die Übertragung von Rotation durch Wände hindurch.", - - "block.create.gearbox.tooltip": "GETRIEBE", - "block.create.gearbox.tooltip.summary": "_Leitet_ _Rotation_ in _vier_ _Richtungen_ weiter. Kehrt geradlinige Verbindungen um.", - - "block.create.gearshift.tooltip": "GANGSCHALTUNG", - "block.create.gearshift.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", - "block.create.gearshift.tooltip.condition1": "Wenn aktiv", - "block.create.gearshift.tooltip.behaviour1": "_Kehrt_ die ausgehende Drehrichtung _um._", - - "block.create.clutch.tooltip": "KUPPLUNG", - "block.create.clutch.tooltip.summary": "Ein kontrollierbarer _Rotationsschalter_ für angeschlossene Wellen.", - "block.create.clutch.tooltip.condition1": "Wenn aktiv", - "block.create.clutch.tooltip.behaviour1": "_Stoppt_ das Weiterleiten von Rotation zur anderen Seite.", - - "item.create.belt_connector.tooltip": "MECHANISCHER RIEMEN", - "item.create.belt_connector.tooltip.summary": "Verbindet zwei _Wellen_ mit einem _Mechanischen_ _Riemen._ Verbundene Wellen haben die exakt gleiche Rotationsgeschwindigkeit und Richtung.", - "item.create.belt_connector.tooltip.control1": "R-Klick auf Welle", - "item.create.belt_connector.tooltip.action1": "Wählt die Welle als Verbindungspunkt für den Riemen aus. Beide ausgewählten Wellen müssen _horizontal,_ _vertikal_ oder _diagonal_ entlang der Richtung des Riemens zeigen.", - "item.create.belt_connector.tooltip.control2": "R-Klick beim Schleichen", - "item.create.belt_connector.tooltip.action2": "_Setzt_ die erste ausgewählte Position des Riemens _zurück._", - - "block.create.water_wheel.tooltip": "WASSERRAD", - "block.create.water_wheel.tooltip.summary": "Liefert _Rotationsenergie_ von benachbarten _Wasserströmungen._", - - "block.create.encased_fan.tooltip": "EINGESCHLOSSENER PROPELLER", - "block.create.encased_fan.tooltip.summary": "Wandelt _Rotationsenergie_ in _Luftstöme_ um und wieder zurück. Hat mehrere Verwendungsmöglichkeiten.", - "block.create.encased_fan.tooltip.condition1": "Wenn über Feuer", - "block.create.encased_fan.tooltip.behaviour1": "Liefert _Rotationsenergie_ (muss vertikal ausgerichtet sein)", - "block.create.encased_fan.tooltip.condition2": "Wenn angetrieben", - "block.create.encased_fan.tooltip.behaviour2": "_Bläst_ Dinge auf einer Seite von sich weg, _zieht_ sie auf der anderen zu sich hin. Kraft und Geschwindigkeit sind abhängig von der eingehenden Rotation.", - "block.create.encased_fan.tooltip.condition3": "Wenn Luft durch spezielle Blöcke fließt", - "block.create.encased_fan.tooltip.behaviour3": "Werden Gegenstände vor dem Block verarbeitet: _Wasser_ wäscht, _Feuer_ räuchert, und _Lava_ schmilzt den Gegenstand.", - - "block.create.turntable.tooltip": "DREHTISCH", - "block.create.turntable.tooltip.summary": "Wandelt _Rotationsenergie_ in starkes Schwindelgefühl um.", - - "block.create.crushing_wheel.tooltip": "MAHLWERKRAD", - "block.create.crushing_wheel.tooltip.summary": "Riesige, drehbare Räder, die alles _zermalmen_ das zwischen ihnen landet.", - "block.create.crushing_wheel.tooltip.condition1": "Wenn mit einem anderem Mahlwerkrad verbunden", - "block.create.crushing_wheel.tooltip.behaviour1": "Formt einen Schredder, mit dem man verschiedene Sachen verarbeiten kann. Die Zähne der Räder müssen ineinandergreifen und mit der _gleichen_ _Geschwindigkeit_ in _gegengesetzte_ _Richtungen_ drehen.", - - "block.create.mechanical_press.tooltip": "MECHANISCHE PRESSE", - "block.create.mechanical_press.tooltip.summary": "Ein starker Kolben, welcher Gegenstände unter ihm zusammenpresst. Benötigt konstante _Rotationsenergie._", - "block.create.mechanical_press.tooltip.condition1": "Wenn durch Redstone aktiviert", - "block.create.mechanical_press.tooltip.behaviour1": "_Fängt_ _an_, Gegenstände, die darunter liegen, zusammenzudrücken.", - "block.create.mechanical_press.tooltip.condition2": "Wenn über einem Mechanischem Riemen", - "block.create.mechanical_press.tooltip.behaviour2": "Presst _automatisch_ alle auf dem Riemen vorbeigeführten Gegenstände zusammen.", - "block.create.mechanical_press.tooltip.condition3": "UNLOCALIZED: When above Basin", - "block.create.mechanical_press.tooltip.behaviour3": "UNLOCALIZED: Starts to _compact items_ in the basin whenever all necessary ingredients are present.", - - "block.create.mechanical_piston.tooltip": "MECHANISCHER KOLBEN", - "block.create.mechanical_piston.tooltip.summary": "Eine fortgeschrittene Version des _Kolbens,_ welcher _Rotationsenergie_ benutzt, um verbundene Strukturen präzise zu bewegen. _Kolben-Pleuelverlängerungen_ auf der Hinterseite bestimmen die _Reichweite_ des Kolbens. Ohne Verlängerungen bewegt sich dieser nicht. Verwende ein _Schubgerüst,_ um mehr als nur eine Reihe von Blöcken zu bewegen.", - "block.create.mechanical_piston.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_piston.tooltip.behaviour1": "Fängt an, die angeschlossene Struktur zu bewegen. Geschwindigkeit und Richtung korrelieren mit der eingehenden Rotationsgeschwindigkeit.", - - "block.create.piston_extension_pole.tooltip": "KOLBEN-PLEUELVERÄNGERUNG", - "block.create.piston_extension_pole.tooltip.summary": "Wird benutzt, um die Reichweite von _Mechanischen_ _Kolben_ zu erhöhen.", - "block.create.piston_extension_pole.tooltip.condition1": "Wenn an einem Mechanischen Kolben angebracht", - "block.create.piston_extension_pole.tooltip.behaviour1": "Erhöht die Länge des Kolbens um 1 Block.", - - "block.create.mechanical_bearing.tooltip": "MECHANISCHES LAGER", - "block.create.mechanical_bearing.tooltip.summary": "Wird benutzt, um _größere_ _Strukturen_ zu drehen oder um _Rotationsenergie_ aus Wind zu erzeugen.", - "block.create.mechanical_bearing.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_bearing.tooltip.behaviour1": "Fängt an, angeschlossene _Drehgerüste_ und an ihnen angebrachte Blöcke zu drehen.", - - "block.create.linear_chassis.tooltip": "SCHUBGERÜST", - "block.create.linear_chassis.tooltip.summary": "Eine konfigurierbare Basis für Strukturen, die durch _Mechanische_ _Kolben_ bewegt werden sollen. Diese Blöcke müssen die erste Reihe von Blöcken vor dem Kloben bilden.", - "block.create.linear_chassis.tooltip.condition1": "Wenn durch einen Mechanischen Kolben bewegt", - "block.create.linear_chassis.tooltip.behaviour1": "_Bewegt_ alle _verbundenen_ _Gerüste_ mit der gleichen Orientierung, und angebrachte Blöcke davor. Wenn der Kolben zurückgezogen wird, werden Blöcke nur zurückgezogen, wenn die Fläche des Gerüsts _klebrig_ ist (Siehe [Strg]).", - "block.create.linear_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", - "block.create.linear_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", - "block.create.linear_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", - "block.create.linear_chassis.tooltip.action1": "Lässt die Oberfläche _klebrig_ werden. Wenn der Kolben zurückgezogen wird, _zieht_ das Gerüst alle verbundenen Blöcke _zurück_ in seine Spalte und innerhalb der konfigurierten Reichweite.", - - "block.create.radial_chassis.tooltip": "DREHGERÜST", - "block.create.radial_chassis.tooltip.summary": "Wird für das Drehen von Strukturen mit dem _Mechanischem_ _Lager_ benutzt.", - "block.create.radial_chassis.tooltip.condition1": "Wenn durch ein Lager gedreht", - "block.create.radial_chassis.tooltip.behaviour1": "_Dreht_ alle an _klebrigen_ Seiten angebrachten Blöcke (Siehe [Strg]) innerhalb der konfigurierten Reichweite um sich. _Überträgt_ die Rotation zu weiter angebrachten Rotationsgerüsten.", - "block.create.radial_chassis.tooltip.condition2": "UNLOCALIZED: With Wrench", - "block.create.radial_chassis.tooltip.behaviour2": "UNLOCALIZED: Configure the _range_ for this chassis block. Hold CTRL to modify the range of all attached chassis blocks as well.", - "block.create.radial_chassis.tooltip.control1": "Wenn mit einem Schleimball R-geklickt", - "block.create.radial_chassis.tooltip.action1": "Lässt die geklickte Fläche _klebrig_ werden. Wenn das Gerüst gedreht wird, werden alle verbundenen Blöcke an dieser Seite mit dem Gerüst mitgedreht.", - - "block.create.mechanical_drill.tooltip": "MECHANISCHER BOHRER", - "block.create.mechanical_drill.tooltip.summary": "Ein mechanisches Gerät, welches sich dazu eignet _Blöcke_ _zu_ _brechen._", - "block.create.mechanical_drill.tooltip.condition1": "Wenn angetrieben", - "block.create.mechanical_drill.tooltip.behaviour1": "Funktioniert als _stationärer_ Blockbrecher. _Schadet_ außerdem _Wesen_ in seiner effektiven Reichweite.", - "block.create.mechanical_drill.tooltip.condition2": "Wenn durch einem Mechanischen Kolben bewegt", - "block.create.mechanical_drill.tooltip.behaviour2": "Bricht Blöcke die der Bohrer trifft.", - - "block.create.mechanical_harvester.tooltip": "MECHANISCHE ERNTEMASCHINE", - "block.create.mechanical_harvester.tooltip.summary": "Ein mechanischer Pflanzenschneider für die Automatisierung deiner Ernte.", - "block.create.mechanical_harvester.tooltip.condition1": "Wenn durch einem Mechanischen Kolben bewegt", - "block.create.mechanical_harvester.tooltip.behaviour1": "Werden alle _reifen_ _Pflanzen_ _geerntet_, die die Klinge treffen, und auf ihren anfänglichen Wachstumszustand zurückgesetzt.", - - "block.create.stockpile_switch.tooltip": "VORRATSSENSOR", - "block.create.stockpile_switch.tooltip.summary": "Schaltet ein Redstone-Signal ein oder aus, basierend auf der _Speichermenge_ im verbundenen Behälter.", - "block.create.stockpile_switch.tooltip.condition1": "Wenn unter dem unteren Limit", - "block.create.stockpile_switch.tooltip.behaviour1": "Wird das Redstone-Signal ausgeschaltet.", - - "block.create.redstone_link.tooltip": "REDSTONE-VERBINDUNG", - "block.create.redstone_link.tooltip.summary": "Endpunkte für _Drahtlose_ _Redstone-Verbindungen._ Mithilfe von Gegenständen kann die Frequenz eingestellt werden. Signalreichweite ist begrenzt, aber angemessen.", - "block.create.redstone_link.tooltip.condition1": "Wenn aktiv", - "block.create.redstone_link.tooltip.behaviour1": "Liefern eingehende Verbindungen mit derselben _Frequenz_ ein Redstone-Signal.", - "block.create.redstone_link.tooltip.control1": "Wenn mit einem Gegenstand R-geklickt", - "block.create.redstone_link.tooltip.action1": "Setzt die _Frequenz_ auf diesen Gegenstand. Insgesamt können _zwei_ _verschiedene_ _Gegenstände_ benutzt werden, um die Frequenz zu definieren.", - "block.create.redstone_link.tooltip.control2": "Wenn während dem Schleichen R-geklickt", - "block.create.redstone_link.tooltip.action2": "Schaltet zwischen _Empfänger-_ und _Transmittermodus_ um.", - - "block.create.redstone_contact.tooltip": "REDSTONE-KONTAKT", - "block.create.redstone_contact.tooltip.summary": "Ein einfaches Gerät für fortgeschrittene Redstone-Apparate.", - "block.create.redstone_contact.tooltip.condition1": "Wenn gegenüber einem anderen Kontakt", - "block.create.redstone_contact.tooltip.behaviour1": "Liefert ein _Redstone-Signal._", - "block.create.redstone_contact.tooltip.condition2": "Wenn durch einen Mechanischen Kolben bewegt", - "block.create.redstone_contact.tooltip.behaviour2": "Löst im Vorbeifahren stationären Kontakte aus", - - "block.create.adjustable_crate.tooltip": "LAGERRAUM", - "block.create.adjustable_crate.tooltip.summary": "Dieser _Speicherbehälter_ erlaubt manuelle Kontrolle über seine Kapazität. Er kann bis zu _16_ _Stacks_ von jeglichem Gegenstand beinhalten.", - "block.create.adjustable_crate.tooltip.control1": "Wenn R-geklickt", - "block.create.adjustable_crate.tooltip.action1": "Öffnet das _Menü_", - - "block.create.creative_crate.tooltip": "BAUPLANKANONENMACHER", - "block.create.creative_crate.tooltip.summary": "Stellt einen unendlichen Vorrat an Blöcken für benachbarte _Bauplaenkanonen_ bereit.", - "block.create.creative_crate.tooltip.condition1": "Wenn Gegenstand in Filter Slot", - "block.create.creative_crate.tooltip.behaviour1": "Alles _extrahierende_ von diesem Container wird einen _endlosen Vorrat_ des angegebenen Gegenstands zur Verfügung stellen. In diese Kiste _eingefügte_ Gegenstände werden _entsorgt_.", - - "block.create.pulse_repeater.tooltip": "PULSIERENDER VERSTÄRKER", - "block.create.pulse_repeater.tooltip.summary": "Ein einfacher Schaltkreis, um durchgehende Redstone-Signale auf eine Länge von _1_ _tick_ zu reduzieren.", - - "block.create.adjustable_repeater.tooltip": "VERZÖGERNDER VERSTÄRKER", - "block.create.adjustable_repeater.tooltip.summary": "Ein fortgeschrittener _Redstone-Verstärker_ mit einer _konfigurierbaren_ _Verzögerung_ von bis zu 30 Minuten.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - - "create.tooltip.randomWipDescription0": "Bitte halte dies fern von Kindern", - "create.tooltip.randomWipDescription1": "Ein Babypanda stirbt jedes mal wenn du diesen Gegenstand benutzt. Jedes. Mal.", - "create.tooltip.randomWipDescription2": "Benutzung auf eigene Gefahr.", - "create.tooltip.randomWipDescription3": "Dies ist nicht der Gegenstand den du suchst, *wackelt mit Finger* bitte geht auseinander.", - "create.tooltip.randomWipDescription4": "Dieser Gegenstand wird sich in 10 Sekunden selbst zerstören. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Glaub mir, es ist nutzlos.", - "create.tooltip.randomWipDescription6": "Bei der Verwendung dieses Gegenstands stimmst du hiermit unserem Haftungsausschluss zu und nimmst dessen Bedingungen an.", - "create.tooltip.randomWipDescription7": "Dieser ist nicht für dich. Wie wäre es mit dem?", - "create.tooltip.randomWipDescription8": "Benutze es und bereue deine Entscheidung umgehend.", - - "_": "Thank you for translating Create!" -} \ No newline at end of file diff --git a/src/main/resources/assets/create/lang/default/advancements.json b/src/main/resources/assets/create/lang/default/advancements.json deleted file mode 100644 index 4ee6b87de..000000000 --- a/src/main/resources/assets/create/lang/default/advancements.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - - "advancement.create.root": "Welcome to Create", - "advancement.create.root.desc": "It's time to start building some amazing Contraptions!", - "advancement.create.andesite_alloy": "Alliterations Aplenty", - "advancement.create.andesite_alloy.desc": "Create's materials have weird names, Andesite Alloy is one of them.", - - "advancement.create.its_alive": "It's Alive!", - "advancement.create.its_alive.desc": "Watch your first kinetic component spin.", - "advancement.create.shifting_gears": "Shifting Gears", - "advancement.create.shifting_gears.desc": "Connect a Large Cogwheel to a Small Cogwheel, allowing you to change the speed of your contraption.", - "advancement.create.overstressed": "Overstressed", - "advancement.create.overstressed.desc": "Experience the limits of stress firsthand.", - "advancement.create.belt": "Kelp Drive", - "advancement.create.belt.desc": "Connect two shafts with a Mechanical Belt.", - "advancement.create.tunnel": "Take cover!", - "advancement.create.tunnel.desc": "Embellish your mechanical belt with a Tunnel.", - "advancement.create.splitter_tunnel": "Divide and Conquer", - "advancement.create.splitter_tunnel.desc": "Create a splitter with a group of Brass Tunnels.", - "advancement.create.chute": "Tumbling down", - "advancement.create.chute.desc": "Place a chute, the vertical counterpart of the belt.", - "advancement.create.upward_chute": "Aerial Abduction", - "advancement.create.upward_chute.desc": "Watch a thrown item fly up into a fan-powered chute.", - "advancement.create.belt_funnel": "Funnels' Flappy Danglers", - "advancement.create.belt_funnel.desc": "Place a sideways funnel on top of a belt or depot to create a special type.", - "advancement.create.belt_funnel_kiss": "The Parrots and the Flaps", - "advancement.create.belt_funnel_kiss.desc": "Make two belt mounted funnels kiss.", - "advancement.create.fan": "Mechanical Airbender", - "advancement.create.fan.desc": "Ride the stream of air provided by an Encased Fan.", - "advancement.create.fan_lava": "Geothermal Space Heater", - "advancement.create.fan_lava.desc": "Get caught in a stream of air that smelts things.", - "advancement.create.fan_water": "Wacky Washing", - "advancement.create.fan_water.desc": "Get caught in a stream of air that washes things.", - "advancement.create.fan_smoke": "Mechanical Bellows", - "advancement.create.fan_smoke.desc": "Get caught in a stream of air that smokes items.", - "advancement.create.wrench": "Configure Conveniently", - "advancement.create.wrench.desc": "Create a Wrench to aid you in building your contraptions.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Create some Engineer's Goggles to aid you in getting more kinetic information from components.", - "advancement.create.speedometer": "But How Fast Exactly?", - "advancement.create.speedometer.desc": "Place and power a Speedometer. Look at it through your goggles to read its exact value.", - "advancement.create.stressometer": "But How Stressed Exactly?", - "advancement.create.stressometer.desc": "Place and power a Stressometer. Look at it through your goggles to read its exact value.", - - "advancement.create.aesthetics": "Boom, Aesthetics!", - "advancement.create.aesthetics.desc": "Place brackets on a shaft, pipe and cogwheel.", - "advancement.create.reinforced": "Boom, Reinforced!", - "advancement.create.reinforced.desc": "Use fitting casing blocks on a shaft, pipe and mechanical belt.", - "advancement.create.water_wheel": "Harnessing Hydraulics", - "advancement.create.water_wheel.desc": "Place a Water Wheel and try getting it to spin!", - "advancement.create.chocolate_wheel": "Tasteful power", - "advancement.create.chocolate_wheel.desc": "Run a Water Wheel with molten Chocolate.", - "advancement.create.lava_wheel": "Magma Wheel", - "advancement.create.lava_wheel.desc": "This shouldn't have worked.", - "advancement.create.cuckoo": "Is it time?", - "advancement.create.cuckoo.desc": "Witness a cuckhoo clock announce bedtime.", - "advancement.create.millstone": "Pocket Crusher", - "advancement.create.millstone.desc": "Place and power a Millstone.", - "advancement.create.windmill": "A mild Breeze", - "advancement.create.windmill.desc": "Assemble a windmill.", - "advancement.create.maxed_windmill": "A strong breeze", - "advancement.create.maxed_windmill.desc": "Assemble a windmill of maximum strength.", - "advancement.create.andesite_casing": "The Andesite Age", - "advancement.create.andesite_casing.desc": "Use some Andesite Alloy and Wood to create a basic Casing.", - "advancement.create.mechanical_drill": "Stationary Breakers", - "advancement.create.mechanical_drill.desc": "Place and power a Mechanical Drill.", - "advancement.create.press": "Press Goes 'Bonk!'", - "advancement.create.press.desc": "Power a Mechanical Press and use it to create some Sheets.", - "advancement.create.polished_rose_quartz": "Pink Diamonds", - "advancement.create.polished_rose_quartz.desc": "Use a piece of Sand Paper to polish Rose Quartz until it becomes transparent.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Make some Electron Tubes, useful in crafting less primitive machinery.", - "advancement.create.mechanical_saw": "Stationary Chopping", - "advancement.create.mechanical_saw.desc": "Place and power a Mechanical Saw.", - "advancement.create.basin": "Basin Operation", - "advancement.create.basin.desc": "Place a Basin and try throwing items into it.", - "advancement.create.mixer": "Mixin' It Up", - "advancement.create.mixer.desc": "Place a Mechanical Mixer above the Basin, power it, and start mixing some ingredients.", - "advancement.create.blaze_burner": "A living Fireplace", - "advancement.create.blaze_burner.desc": "Obtain a Blaze Burner.", - "advancement.create.compact": "Automated Compacting", - "advancement.create.compact.desc": "Use a Press and a Basin to compact some items.", - - "advancement.create.brass": "Actual Alloys", - "advancement.create.brass.desc": "Use Crushed Copper and Crushed Zinc to create some Brass.", - "advancement.create.brass_casing": "The Brass Age", - "advancement.create.brass_casing.desc": "Use newly obtained Brass and some Wood to create a more advanced Casing.", - "advancement.create.copper_casing": "The Copper Age", - "advancement.create.copper_casing.desc": "Use some Copper Sheets and Wood to create some Copper Casings.", - - "advancement.create.spout": "Sploosh", - "advancement.create.spout.desc": "Watch a fluid item being filled using a spout.", - "advancement.create.spout_potion": "Global Brewery", - "advancement.create.spout_potion.desc": "Watch a spout fill a bottle with potion fluid.", - "advancement.create.chocolate": "A world of Imagination", - "advancement.create.chocolate.desc": "Obtain a bucket of Molten Chocolate.", - "advancement.create.item_drain": "Tumble Draining", - "advancement.create.item_drain.desc": "Watch a fluid item being emptied by an item drain.", - "advancement.create.chained_item_drain": "Let it roll!", - "advancement.create.chained_item_drain.desc": "Watch an item roll across several chained item drains.", - "advancement.create.glass_pipe": "Flow Spy", - "advancement.create.glass_pipe.desc": "Watch fluid propagate through a windowed fluid pipe. Straight fluid pipes become windowed when a wrench is used on them.", - "advancement.create.pipe_collision": "Never cross the Streams!", - "advancement.create.pipe_collision.desc": "Watch two fluids meet in your pipe network.", - "advancement.create.pipe_spill": "There's a leak!", - "advancement.create.pipe_spill.desc": "Watch an open end of a pipe take or place fluids into the world.", - "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.infinite_water": "Draining the Ocean", - "advancement.create.infinite_water.desc": "Pump from a body of Water large enough to be considered Infinite.", - "advancement.create.infinite_lava": "Draining the Planets' Core", - "advancement.create.infinite_lava.desc": "Pump from a body of Lava large enough to be considered Infinite.", - "advancement.create.infinite_chocolate": "Drowning in Imagination", - "advancement.create.infinite_chocolate.desc": "Pump from a body of Molten Chocolate large enough to be considered Infinite.", - - "advancement.create.crafter": "Automated Assembly", - "advancement.create.crafter.desc": "Place and power some Mechanical Crafters.", - "advancement.create.clockwork_bearing": "Contraption o'clock", - "advancement.create.clockwork_bearing.desc": "Assemble a Structure mounted on a Clockwork Bearing.", - "advancement.create.nixie_tube": "Signs of Style", - "advancement.create.nixie_tube.desc": "Obtain and place down a pair of Nixie Tubes.", - "advancement.create.deployer": "Poke, Place, and Attack", - "advancement.create.deployer.desc": "Place and power a Deployer, the perfect reflection of yourself.", - "advancement.create.speed_controller": "Engineers hate him!", - "advancement.create.speed_controller.desc": "Place a Rotation Speed Controller, the ultimate device for changing gear.", - "advancement.create.flywheel": "Heart of the Factory", - "advancement.create.flywheel.desc": "Successfully connect an engine to the Flywheel.", - "advancement.create.overstress_flywheel": "High levels of Stress", - "advancement.create.overstress_flywheel.desc": "Overstress a Furnace Engine.", - "advancement.create.integrated_circuit": "Complex Calculation", - "advancement.create.integrated_circuit.desc": "Assemble an Integrated Circuit.", - "advancement.create.mechanical_arm": "Busy Hands!", - "advancement.create.mechanical_arm.desc": "Craft a Mechanical Arm, select in- and outputs, place it down and give it power; then watch as it does all the work for you.", - "advancement.create.musical_arm": "Play Me My Theme Tune!", - "advancement.create.musical_arm.desc": "Watch a Mechanical Arm operate your Jukebox.", - "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_blaze_burner": "Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "Instruct a Mechanical Arm to feed your Blaze Burner.", - "advancement.create.fist_bump": "Pound It, Bro!", - "advancement.create.fist_bump.desc": "Make two Deployers fist-bump.", - "advancement.create.crushing_wheel": "A Pair of Giants", - "advancement.create.crushing_wheel.desc": "Create some Crushing Wheels to break down more materials more effectively.", - "advancement.create.blaze_cake": "Sugar Rush", - "advancement.create.blaze_cake.desc": "Bake your blaze burner a special cake.", - - "advancement.create.chromatic_compound": "Bipolar Minerals", - "advancement.create.chromatic_compound.desc": "Create a Bar of Chromatic Compound.", - "advancement.create.shadow_steel": "Void Returner", - "advancement.create.shadow_steel.desc": "Create Shadow Steel, a metal bar of nothingness.", - "advancement.create.refined_radiance": "Bright and Inspiring", - "advancement.create.refined_radiance.desc": "Create Refined Radiance, a powerful chromatic substance.", - "advancement.create.chromatic_age": "The Chromatic Age", - "advancement.create.chromatic_age.desc": "Create casing blocks of the light and dark.", - - "advancement.create.wand_of_symmetry": "Radiant Mirrors", - "advancement.create.wand_of_symmetry.desc": "Craft a Staff of Symmetry.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Get hold of an Extendo Grip.", - "advancement.create.dual_extendo_grip": "Ultimate Boing-age", - "advancement.create.dual_extendo_grip.desc": "Dual wield Extendo Grips for super-human reach.", - - "advancement.create.eob": "End of Beta", - "advancement.create.eob.desc": "Expect more content here in the future. <3" - -} diff --git a/src/main/resources/assets/create/lang/default/messages.json b/src/main/resources/assets/create/lang/default/messages.json deleted file mode 100644 index 24c126827..000000000 --- a/src/main/resources/assets/create/lang/default/messages.json +++ /dev/null @@ -1,509 +0,0 @@ -{ - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Palettes", - "death.attack.create.crush": "%1$s was processed by Crushing Wheels", - "death.attack.create.fan_fire": "%1$s was burned to death by hot air", - "death.attack.create.fan_lava": "%1$s was burned to death by lava fan", - "death.attack.create.mechanical_drill": "%1$s was impaled by a Mechanical Drill", - "death.attack.create.mechanical_saw": "%1$s got cut in half by a Mechanical Saw", - "death.attack.create.cuckoo_clock_explosion": "%1$s was blown up by tampered cuckoo clock", - "create.block.deployer.damage_source_name": "a rogue Deployer", - "create.block.cart_assembler.invalid": "Place your Cart Assembler on a rail block", - "create.menu.return": "Return to Menu", - "create.menu.configure": "Configure...", - "create.menu.getting_started": "Getting Started", - "create.menu.project_page": "Project Page", - "create.menu.report_bugs": "Report Issues", - "create.menu.support": "Support Us", - "create.recipe.crushing": "Crushing", - "create.recipe.milling": "Milling", - "create.recipe.fan_washing": "Bulk Washing", - "create.recipe.fan_washing.fan": "Fan behind Flowing Water", - "create.recipe.fan_smoking": "Bulk Smoking", - "create.recipe.fan_smoking.fan": "Fan behind Fire", - "create.recipe.fan_blasting": "Bulk Blasting", - "create.recipe.fan_blasting.fan": "Fan behind Lava", - "create.recipe.pressing": "Pressing", - "create.recipe.mixing": "Mixing", - "create.recipe.deploying": "Deploying", - "create.recipe.automatic_shapeless": "Automated Shapeless Crafting", - "create.recipe.automatic_brewing": "Automated Brewing", - "create.recipe.packing": "Compacting", - "create.recipe.automatic_packing": "Automated Packing", - "create.recipe.sawing": "Sawing", - "create.recipe.mechanical_crafting": "Mechanical Crafting", - "create.recipe.automatic_shaped": "Automated Shaped Crafting", - "create.recipe.block_cutting": "Block Cutting", - "create.recipe.wood_cutting": "Wood Cutting", - "create.recipe.sandpaper_polishing": "Sandpaper Polishing", - "create.recipe.mystery_conversion": "Mysterious Conversion", - "create.recipe.spout_filling": "Filling by Spout", - "create.recipe.draining": "Item Draining", - - "create.recipe.processing.chance": "%1$s%% Chance", - "create.recipe.heat_requirement.none": "No Heating Required", - "create.recipe.heat_requirement.heated": "Heated", - "create.recipe.heat_requirement.superheated": "Super-Heated", - - "create.generic.range": "Range", - "create.generic.radius": "Radius", - "create.generic.width": "Width", - "create.generic.height": "Height", - "create.generic.length": "Length", - "create.generic.speed": "Speed", - "create.generic.delay": "Delay", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Seconds", - "create.generic.unit.minutes": "Minutes", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "\u00B0", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "Clockwise", - "create.generic.counter_clockwise": "Counter-Clockwise", - - "create.action.scroll": "Scroll", - "create.action.confirm": "Confirm", - "create.action.abort": "Abort", - "create.action.saveToFile": "Save", - "create.action.discard": "Discard", - - "create.keyinfo.toolmenu": "Focus Tool Menu", - "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", - - "create.gui.scrollInput.defaultTitle": "Choose an Option:", - "create.gui.scrollInput.scrollToModify": "Scroll to Modify", - "create.gui.scrollInput.scrollToAdjustAmount": "Scroll to Adjust Amount", - "create.gui.scrollInput.scrollToSelect": "Scroll to Select", - "create.gui.scrollInput.shiftScrollsFaster": "Shift to Scroll Faster", - - "create.gui.toolmenu.focusKey": "Hold [%1$s] to Focus", - "create.gui.toolmenu.cycle": "[SCROLL] to Cycle", - - "create.gui.symmetryWand.mirrorType": "Mirror", - "create.gui.symmetryWand.orientation": "Orientation", - "create.symmetry.mirror.plane": "Mirror Once", - "create.symmetry.mirror.doublePlane": "Rectangular", - "create.symmetry.mirror.triplePlane": "Octagonal", - "create.orientation.orthogonal": "Orthogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Along Z", - "create.orientation.alongX": "Along X", - - "create.gui.terrainzapper.title": "Handheld Blockzapper", - "create.gui.terrainzapper.searchDiagonal": "Follow Diagonals", - "create.gui.terrainzapper.searchFuzzy": "Ignore Material Borders", - "create.gui.terrainzapper.patternSection": "Pattern", - "create.gui.terrainzapper.pattern.solid": "Solid", - "create.gui.terrainzapper.pattern.checkered": "Checkerboard", - "create.gui.terrainzapper.pattern.inversecheckered": "Inverted Checkerboard", - "create.gui.terrainzapper.pattern.chance25": "25% Roll", - "create.gui.terrainzapper.pattern.chance50": "50% Roll", - "create.gui.terrainzapper.pattern.chance75": "75% Roll", - "create.gui.terrainzapper.placement": "Placement", - "create.gui.terrainzapper.placement.merged": "Merged", - "create.gui.terrainzapper.placement.attached": "Attached", - "create.gui.terrainzapper.placement.inserted": "Inserted", - "create.gui.terrainzapper.brush": "Brush", - "create.gui.terrainzapper.brush.cuboid": "Cuboid", - "create.gui.terrainzapper.brush.sphere": "Sphere", - "create.gui.terrainzapper.brush.cylinder": "Cylinder", - "create.gui.terrainzapper.brush.surface": "Surface", - "create.gui.terrainzapper.brush.cluster": "Cluster", - "create.gui.terrainzapper.tool": "Tool", - "create.gui.terrainzapper.tool.fill": "Fill", - "create.gui.terrainzapper.tool.place": "Place", - "create.gui.terrainzapper.tool.replace": "Replace", - "create.gui.terrainzapper.tool.clear": "Clear", - "create.gui.terrainzapper.tool.overlay": "Overlay", - "create.gui.terrainzapper.tool.flatten": "Flatten", - - "create.terrainzapper.shiftRightClickToSet": "Shift-Right-Click to Select a Shape", - "create.terrainzapper.usingBlock": "Using: %1$s", - "create.terrainzapper.leftClickToSet": "Left-Click a Block to set Material", - - "create.minecart_coupling.two_couplings_max": "Minecarts cannot have more than two couplings each", - "create.minecart_coupling.unloaded": "Parts of your train seem to be in unloaded chunks", - "create.minecart_coupling.no_loops": "Couplings cannot form a loop", - "create.minecart_coupling.removed": "Removed all couplings from minecart", - "create.minecart_coupling.too_far": "Minecarts are too far apart", - - "create.contraptions.movement_mode": "Movement Mode", - "create.contraptions.movement_mode.move_place": "Always Place when Stopped", - "create.contraptions.movement_mode.move_place_returned": "Place only in Starting Position", - "create.contraptions.movement_mode.move_never_place": "Place only when Anchor Destroyed", - "create.contraptions.movement_mode.rotate_place": "Always Place when Stopped", - "create.contraptions.movement_mode.rotate_place_returned": "Only Place near Initial Angle", - "create.contraptions.movement_mode.rotate_never_place": "Only Place when Anchor Destroyed", - "create.contraptions.cart_movement_mode": "Cart Movement Mode", - "create.contraptions.cart_movement_mode.rotate": "Always face toward motion", - "create.contraptions.cart_movement_mode.rotate_paused": "Pause actors while rotating", - "create.contraptions.cart_movement_mode.rotation_locked": "Lock rotation", - - "create.contraptions.windmill.rotation_direction": "Rotation Direction", - "create.contraptions.clockwork.clock_hands": "Clock Hands", - "create.contraptions.clockwork.hour_first": "Hour hand first", - "create.contraptions.clockwork.minute_first": "Minute hand first", - "create.contraptions.clockwork.hour_first_24": "24-Hour hand first", - - "create.logistics.filter": "Filter", - "create.logistics.recipe_filter": "Recipe Filter", - "create.logistics.fluid_filter": "Fluid Filter", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - - "create.logistics.filter.apply": "Applied filter to %1$s.", - "create.logistics.filter.apply_click_again": "Applied filter to %1$s, click again to copy the amount.", - "create.logistics.filter.apply_count": "Applied extraction count to filter.", - - "create.gui.goggles.generator_stats": "Generator Stats:", - "create.gui.goggles.kinetic_stats": "Kinetic Stats:", - "create.gui.goggles.at_current_speed": "at current speed", - "create.gui.goggles.pole_length": "Pole Length:", - "create.gui.goggles.fluid_container": "Fluid Container Info:", - "create.gui.goggles.fluid_container.capacity": "Capacity: ", - - "create.gui.assembly.exception": "This Contraption was unable to assemble:", - "create.gui.assembly.exception.unmovableBlock": "Unmovable Block (%4$s) at [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "The Block at [%1$s,%2$s,%3$s] was not in a loaded chunk", - "create.gui.assembly.exception.structureTooLarge": "There are too many Blocks included in the contraption.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "There are too many extension Poles attached to this Piston.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "The Piston is missing some extension Poles", - "create.gui.assembly.exception.not_enough_sails": "Attached structure does not include enough sail-like blocks: %1$s\nA minimum of %2$s are required", - - "create.gui.gauge.info_header": "Gauge Information:", - "create.gui.speedometer.title": "Rotation Speed", - "create.gui.stressometer.title": "Network Stress", - "create.gui.stressometer.capacity": "Remaining Capacity", - "create.gui.stressometer.overstressed": "Overstressed", - "create.gui.stressometer.no_rotation": "No Rotation", - - "create.gui.contraptions.not_fast_enough": "It appears that this %1$s is _not_ rotating with _enough_ _speed_.", - "create.gui.contraptions.network_overstressed": "It appears that this contraption is _overstressed_. Add more sources or _slow_ _down_ the components with a high _stress_ _impact_.", - - "create.gui.adjustable_crate.title": "Adjustable Crate", - "create.gui.adjustable_crate.storageSpace": "Storage Space", - - "create.gui.stockpile_switch.title": "Stockpile Switch", - "create.gui.stockpile_switch.invert_signal": "Invert Signal", - "create.gui.stockpile_switch.move_to_lower_at": "Move to lower lane at %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Move to upper lane at %1$s%%", - - "create.gui.sequenced_gearshift.title": "Sequenced Gearshift", - "create.gui.sequenced_gearshift.instruction": "Instruction", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Turn by angle", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Turn", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Turn to move Piston/Pulley/Gantry", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distance", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Timed Delay", - "create.gui.sequenced_gearshift.instruction.delay": "Delay", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Duration", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "End", - "create.gui.sequenced_gearshift.instruction.end": "End", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Await new Redstone Pulse", - "create.gui.sequenced_gearshift.instruction.await": "Await", - "create.gui.sequenced_gearshift.speed": "Speed, Direction", - "create.gui.sequenced_gearshift.speed.forward": "Input speed, Forwards", - "create.gui.sequenced_gearshift.speed.forward_fast": "Double speed, Forwards", - "create.gui.sequenced_gearshift.speed.back": "Input speed, Reversed", - "create.gui.sequenced_gearshift.speed.back_fast": "Double speed, Reversed", - - "create.schematicAndQuill.dimensions": "Schematic Size: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "First position set.", - "create.schematicAndQuill.secondPos": "Second position set.", - "create.schematicAndQuill.noTarget": "Hold [Ctrl] to select Air blocks.", - "create.schematicAndQuill.abort": "Removed selection.", - "create.schematicAndQuill.title": "Schematic Name:", - "create.schematicAndQuill.convert": "Save and Upload Immediately", - "create.schematicAndQuill.fallbackName": "My Schematic", - "create.schematicAndQuill.saved": "Saved as %1$s", - - "create.schematic.invalid": "[!] Invalid Item - Use the Schematic Table instead", - "create.schematic.position": "Position", - "create.schematic.rotation": "Rotation", - "create.schematic.rotation.none": "None", - "create.schematic.rotation.cw90": "Clockwise 90", - "create.schematic.rotation.cw180": "Clockwise 180", - "create.schematic.rotation.cw270": "Clockwise 270", - "create.schematic.mirror": "Mirror", - "create.schematic.mirror.none": "None", - "create.schematic.mirror.frontBack": "Front-Back", - "create.schematic.mirror.leftRight": "Left-Right", - - "create.schematic.tool.deploy": "Position", - "create.schematic.tool.move": "Move XZ", - "create.schematic.tool.movey": "Move Y", - "create.schematic.tool.rotate": "Rotate", - "create.schematic.tool.print": "Print", - "create.schematic.tool.flip": "Mirror", - - "create.schematic.tool.deploy.description.0": "Moves the structure to a location.", - "create.schematic.tool.deploy.description.1": "Right-Click on the ground to place.", - "create.schematic.tool.deploy.description.2": "Hold [Ctrl] to select at a fixed distance.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Scroll to change the distance.", - "create.schematic.tool.move.description.0": "Shifts the Schematic Horizontally.", - "create.schematic.tool.move.description.1": "Point at the Schematic and [CTRL]-Scroll to push it.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Shifts the Schematic Vertically.", - "create.schematic.tool.movey.description.1": "[CTRL]-Scroll to move it up/down.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Rotates the Schematic around its center.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Scroll to rotate by 90 Degrees.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Instantly places the structure in the world.", - "create.schematic.tool.print.description.1": "[Right-Click] to confirm placement at the current location.", - "create.schematic.tool.print.description.2": "This tool is for Creative Mode only.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Flips the Schematic along the face you select.", - "create.schematic.tool.flip.description.1": "Point at the Schematic and [CTRL]-Scroll to flip it.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Syncing...", - "create.schematics.uploadTooLarge": "Your schematic exceeds limitations specified by the server.", - "create.schematics.maxAllowedSize": "The maximum allowed schematic file size is:", - - "create.gui.schematicTable.refresh": "Refresh Files", - "create.gui.schematicTable.open_folder": "Open Folder", - "create.gui.schematicTable.title": "Schematic Table", - "create.gui.schematicTable.availableSchematics": "Available Schematics", - "create.gui.schematicTable.noSchematics": "No Schematics Saved", - "create.gui.schematicTable.uploading": "Uploading...", - "create.gui.schematicTable.finished": "Upload Finished!", - - "create.gui.schematicannon.title": "Schematicannon", - "create.gui.schematicannon.listPrinter": "Checklist Printer", - "create.gui.schematicannon.gunpowderLevel": "Gunpowder at %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Shots left: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "With backup: %1$s", - "create.gui.schematicannon.optionEnabled": "Currently Enabled", - "create.gui.schematicannon.optionDisabled": "Currently Disabled", - "create.gui.schematicannon.showOptions": "Show Printer Settings", - "create.gui.schematicannon.option.dontReplaceSolid": "Don't Replace Solid Blocks", - "create.gui.schematicannon.option.replaceWithSolid": "Replace Solid with Solid", - "create.gui.schematicannon.option.replaceWithAny": "Replace Solid with Any", - "create.gui.schematicannon.option.replaceWithEmpty": "Replace Solid with Empty", - "create.gui.schematicannon.option.skipMissing": "Skip missing Blocks", - "create.gui.schematicannon.option.skipTileEntities": "Protect Tile Entities", - - "create.gui.schematicannon.slot.gunpowder": "Add gunpowder to fuel the cannon", - "create.gui.schematicannon.slot.listPrinter": "Place books here to print a Checklist for your Schematic", - "create.gui.schematicannon.slot.schematic": "Add your Schematic here. Make sure it is deployed at a specific location.", - - "create.gui.schematicannon.option.skipMissing.description": "If the cannon cannot find a required Block for placement, it will continue at the next Location.", - "create.gui.schematicannon.option.skipTileEntities.description": "The cannon will avoid replacing data holding blocks such as Chests.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "The cannon will never replace any Solid blocks in its working area, only non-Solid and Air.", - "create.gui.schematicannon.option.replaceWithSolid.description": "The cannon will only replace Solid blocks in its working area if the Schematic contains a solid Block at the Location.", - "create.gui.schematicannon.option.replaceWithAny.description": "The cannon will replace Solid blocks in its working area if the Schematic contains any Block at the Location.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "The cannon will clear out all blocks in its working area, including those replaced by Air.", - - "create.schematicannon.status.idle": "Idle", - "create.schematicannon.status.ready": "Ready", - "create.schematicannon.status.running": "Running", - "create.schematicannon.status.finished": "Finished", - "create.schematicannon.status.paused": "Paused", - "create.schematicannon.status.stopped": "Stopped", - "create.schematicannon.status.noGunpowder": "Out of Gunpowder", - "create.schematicannon.status.targetNotLoaded": "Target is not loaded", - "create.schematicannon.status.targetOutsideRange": "Target too far away", - "create.schematicannon.status.searching": "Searching", - "create.schematicannon.status.skipping": "Skipping", - "create.schematicannon.status.missingBlock": "Missing Item:", - "create.schematicannon.status.placing": "Placing", - "create.schematicannon.status.clearing": "Clearing Blocks", - "create.schematicannon.status.schematicInvalid": "Schematic Invalid", - "create.schematicannon.status.schematicNotPlaced": "Schematic not Positioned", - "create.schematicannon.status.schematicExpired": "Schematic File Expired", - - "create.materialChecklist": "Material Checklist", - "create.materialChecklist.blocksNotLoaded": "* Disclaimer *\n\nMaterial List may be inaccurate due to relevant chunks not being loaded.", - - "create.gui.filter.deny_list": "Deny-List", - "create.gui.filter.deny_list.description": "Items pass if they do NOT match any of the above. An empty Deny-List accepts everything.", - "create.gui.filter.allow_list": "Allow-List", - "create.gui.filter.allow_list.description": "Items pass if they match any of the above. An empty Allow-List rejects everything.", - "create.gui.filter.respect_data": "Respect Data", - "create.gui.filter.respect_data.description": "Items only match if their durability, enchantments, and other attributes match as well.", - "create.gui.filter.ignore_data": "Ignore Data", - "create.gui.filter.ignore_data.description": "Items match regardless of their attributes.", - - "create.item_attributes.placeable": "is placeable", - "create.item_attributes.placeable.inverted": "is not placeable", - "create.item_attributes.consumable": "can be eaten", - "create.item_attributes.consumable.inverted": "cannot be eaten", - "create.item_attributes.smeltable": "can be Smelted", - "create.item_attributes.smeltable.inverted": "cannot be Smelted", - "create.item_attributes.washable": "can be Washed", - "create.item_attributes.washable.inverted": "cannot be Washed", - "create.item_attributes.smokable": "can be Smoked", - "create.item_attributes.smokable.inverted": "cannot be Smoked", - "create.item_attributes.crushable": "can be Crushed", - "create.item_attributes.crushable.inverted": "cannot be Crushed", - "create.item_attributes.blastable": "is smeltable in Blast Furnace", - "create.item_attributes.blastable.inverted": "is not smeltable in Blast Furnace", - "create.item_attributes.enchanted": "is enchanted", - "create.item_attributes.enchanted.inverted": "is unenchanted", - "create.item_attributes.damaged": "is damaged", - "create.item_attributes.damaged.inverted": "is not damaged", - "create.item_attributes.badly_damaged": "is heavily damaged", - "create.item_attributes.badly_damaged.inverted": "is not heavily damaged", - "create.item_attributes.not_stackable": "cannot stack", - "create.item_attributes.not_stackable.inverted": "can be stacked", - "create.item_attributes.equipable": "can be equipped", - "create.item_attributes.equipable.inverted": "cannot be equipped", - "create.item_attributes.furnace_fuel": "is furnace fuel", - "create.item_attributes.furnace_fuel.inverted": "is not furnace fuel", - "create.item_attributes.in_tag": "is tagged %1$s", - "create.item_attributes.in_tag.inverted": "is not tagged %1$s", - "create.item_attributes.in_item_group": "is in group '%1$s'", - "create.item_attributes.in_item_group.inverted": "is not in group '%1$s'", - "create.item_attributes.added_by": "was added by %1$s", - "create.item_attributes.added_by.inverted": "was not added by %1$s", - - "create.item_attributes.has_enchant": "is enchanted with %1$s", - "create.item_attributes.has_enchant.inverted": "is not enchanted with %1$s", - "create.item_attributes.color": "is dyed %1$s", - "create.item_attributes.color.inverted": "is not dyed %1$s", - "create.item_attributes.max_enchanted": "is enchanted at max level", - "create.item_attributes.max_enchanted.inverted": "is not enchanted at max level", - "create.item_attributes.has_fluid": "contains %1$s", - "create.item_attributes.has_fluid.inverted": "does not contain %1$s", - "create.item_attributes.has_name": "has the custom name %1$s", - "create.item_attributes.has_name.inverted": "does not have the custom name %1$s", - "create.item_attributes.book_author": "was authored by %1$s", - "create.item_attributes.book_author.inverted": "was not authored by %1$s", - "create.item_attributes.book_copy_original": "is an original", - "create.item_attributes.book_copy_original.inverted": "is not an original", - "create.item_attributes.book_copy_first": "is a first-generation copy", - "create.item_attributes.book_copy_first.inverted": "is not a first-generation copy", - "create.item_attributes.book_copy_second": "is a second-generation copy", - "create.item_attributes.book_copy_second.inverted": "is not a second-generation copy", - "create.item_attributes.book_copy_tattered": "is a tattered mess", - "create.item_attributes.book_copy_tattered.inverted": "is not a tattered mess", - "create.item_attributes.astralsorcery_crystal": "has crystal attribute %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "does not have crystal attribute %1$s", - "create.item_attributes.astralsorcery_constellation": "is attuned to %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "is not attuned to %1$s", - "create.item_attributes.astralsorcery_perk_gem": "has perk attribute %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "does not have perk attribute %1$s", - "create.item_attributes.astralsorcery_amulet": "improves %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "does not improve %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "No attributes selected", - "create.gui.attribute_filter.selected_attributes": "Selected attributes:", - "create.gui.attribute_filter.add_attribute": "Add attribute to List", - "create.gui.attribute_filter.add_inverted_attribute": "Add opposite attribute to List", - "create.gui.attribute_filter.allow_list_disjunctive": "Allow-List (Any)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Items pass if they have any of the selected attributes.", - "create.gui.attribute_filter.allow_list_conjunctive": "Allow-List (All)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Items pass only if they have ALL of the selected attributes.", - "create.gui.attribute_filter.deny_list": "Deny-List", - "create.gui.attribute_filter.deny_list.description": "Items pass if they do NOT have any of the selected attributes.", - "create.gui.attribute_filter.add_reference_item": "Add Reference Item", - - "create.tooltip.holdForDescription": "Hold [%1$s] for Summary", - "create.tooltip.holdForControls": "Hold [%1$s] for Controls", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - - "create.tooltip.speedRequirement": "Speed Requirement: %1$s", - "create.tooltip.speedRequirement.none": "None", - "create.tooltip.speedRequirement.medium": "Moderate", - "create.tooltip.speedRequirement.high": "Fast", - - "create.tooltip.stressImpact": "Kinetic Stress Impact: %1$s", - "create.tooltip.stressImpact.low": "Low", - "create.tooltip.stressImpact.medium": "Moderate", - "create.tooltip.stressImpact.high": "High", - "create.tooltip.stressImpact.overstressed": "Overstressed", - - "create.tooltip.capacityProvided": "Kinetic Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "Small", - "create.tooltip.capacityProvided.medium": "Medium", - "create.tooltip.capacityProvided.high": "Large", - "create.tooltip.generationSpeed" : "Generates at %1$s %2$s", - - "create.tooltip.analogStrength": "Analog Strength: %1$s/15", - - "create.mechanical_arm.extract_from": "Take items from %1$s", - "create.mechanical_arm.deposit_to": "Deposit items to %1$s", - "create.mechanical_arm.summary": "Mechanical Arm has %1$s input(s) and %2$s output(s).", - "create.mechanical_arm.points_outside_range": "%1$s selected interaction point(s) removed due to range limitations.", - - "create.weighted_ejector.target_set": "Target Selected", - "create.weighted_ejector.target_not_valid": "Ejecting to Adjacent block (Target was not Valid)", - "create.weighted_ejector.no_target": "Ejecting to Adjacent block (No Target was Selected)", - "create.weighted_ejector.targeting": "Ejecting to [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Ejected Stack Size", - - "create.logistics.when_multiple_outputs_available": "When Multiple Outputs Available", - - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Forced Round Robin", - "create.mechanical_arm.selection_mode.prefer_first": "Prefer First Target", - - "create.tunnel.selection_mode.split": "Split", - "create.tunnel.selection_mode.forced_split": "Forced Split", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Forced Round Robin", - "create.tunnel.selection_mode.prefer_nearest": "Prefer Nearest", - "create.tunnel.selection_mode.randomize": "Randomize", - "create.tunnel.selection_mode.synchronize": "Synchronize Inputs", - - "create.tooltip.chute.header": "Chute Information", - "create.tooltip.chute.items_move_down": "Items move Downward", - "create.tooltip.chute.items_move_up": "Items move Upward", - "create.tooltip.chute.no_fans_attached": "No attached fans", - "create.tooltip.chute.fans_push_up": "Fans push from Below", - "create.tooltip.chute.fans_push_down": "Fans push 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.contains": "Contains: %1$s x%2$s", - "create.linked_controller.bind_mode": "Bind mode active", - "create.linked_controller.press_keybind": "Press %1$s, %2$s, %3$s, %4$s, %5$s or %6$s, to bind this frequency to the respective key", - "create.linked_controller.key_bound": "Frequency bound to %1$s", - "create.linked_controller.frequency_slot_1": "Keybind: %1$s, Freq. #1", - "create.linked_controller.frequency_slot_2": "Keybind: %1$s, Freq. #2", - "create.crafting_blueprint.crafting_slot": "Ingredient Slot", - "create.crafting_blueprint.filter_items_viable": "Advanced filter items are viable", - "create.crafting_blueprint.display_slot": "Display Slot", - "create.crafting_blueprint.inferred": "Inferred from recipe", - "create.crafting_blueprint.manually_assigned": "Manually assigned", - "create.crafting_blueprint.secondary_display_slot": "Secondary Display Slot", - "create.crafting_blueprint.optional": "Optional", - "create.hint.hose_pulley.title": "Bottomless Supply", - "create.hint.hose_pulley": "The targeted body of fluid is considered infinite.", - "create.hint.mechanical_arm_no_targets.title": "No Targets", - "create.hint.mechanical_arm_no_targets": "It appears this _Mechanical_ _Arm_ has not been assigned any _targets._ Select belts, depots, funnels and other blocks by _right-clicking_ them while _holding_ the _Mechanical_ _Arm_ in your _hand_.", - "create.hint.empty_bearing.title": "Update Bearing", - "create.hint.empty_bearing": "_Right-click_ the bearing with an _empty_ _hand_ to _attach_ the structure you just built in front of it.", - "create.hint.full_deployer.title": "Deployer Item Overflow", - "create.hint.full_deployer": "It appears this _Deployer_ contains _excess_ _items_ that need to be _extracted._ Use a _hopper,_ _funnel_ or other means to free it from its overflow.", - "create.gui.config.overlay1": "Hi :)", - "create.gui.config.overlay2": "This is a sample overlay", - "create.gui.config.overlay3": "Click or drag with your mouse", - "create.gui.config.overlay4": "to move this preview", - "create.gui.config.overlay5": "Press ESC to exit this screen", - "create.gui.config.overlay6": "and save the new position", - "create.gui.config.overlay7": "Run /create overlay reset", - "create.gui.config.overlay8": "to reset to the default position", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "This Cart Contraption seems too big to pick up" - -} diff --git a/src/main/resources/assets/create/lang/default/tooltips.json b/src/main/resources/assets/create/lang/default/tooltips.json deleted file mode 100644 index cdbb55144..000000000 --- a/src/main/resources/assets/create/lang/default/tooltips.json +++ /dev/null @@ -1,274 +0,0 @@ -{ - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with a cozy and wooden bit of reinforcement.", - - "block.create.metal_bracket.tooltip": "METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "_Decorate_ your _Shafts, Cogwheels_ and _Pipes_ with an industrial and sturdy bit of reinforcement.", - - "block.create.copper_casing.tooltip": "COPPER CASING", - "block.create.copper_casing.tooltip.summary": "Robust machine casing with a variety of uses. Safe for decoration.", - "block.create.copper_casing.tooltip.condition1": "When used on Fluid Pipe", - "block.create.copper_casing.tooltip.behaviour1": "_Encases_ the _Fluid Pipe_ with the _Copper Casing_. Encased Fluid pipes will _lock their connections_ in place, no longer reacting to changes to neighbouring pipes.", - - "block.create.encased_fluid_pipe.tooltip": "ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "A _Fluid Pipe_ encased with the _Copper Casing_.", - - "block.create.seat.tooltip": "SEAT", - "block.create.seat.tooltip.summary": "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": "Right click on Seat", - "block.create.seat.tooltip.behaviour1": "Sits the player on the _Seat_. Press L-shift to leave the _Seat_.", - - "item.create.blaze_cake.tooltip": "BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "A Delicious treat for your hard-working _Blaze Burners_. Gets them all fired up!", - - "block.create.fluid_pipe.tooltip": "FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "Used for moving _fluids_ around. Needs a _Mechanical Pump_ to get the _fluid_ moving.", - "block.create.fluid_pipe.tooltip.condition1": "Fluid Transfer", - "block.create.fluid_pipe.tooltip.behaviour1": "Can connect to _fluid containers_ such as _Tanks_ or _Basins_. Exposed _pipe_ ends can also drain or place fluid blocks. Be careful of leaks!", - "block.create.fluid_pipe.tooltip.condition2": "Right-clicked with Wrench", - "block.create.fluid_pipe.tooltip.behaviour2": "Places a window on the pipe if available", - - "block.create.hose_pulley.tooltip": "HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "Used for _placing_ or _draining_ large _fluid bodies_ in the world.", - "block.create.hose_pulley.tooltip.condition1": "When Powered by Kinetics", - "block.create.hose_pulley.tooltip.behaviour1": "_Raises_ or _Lowers_ the hose, location of the hose determines up to which _height extraction_ or _filling_ will act.", - "block.create.hose_pulley.tooltip.condition2": "When Fluids pulled from Pulley", - "block.create.hose_pulley.tooltip.behaviour2": "Starts _taking fluid_ blocks from the body the hose end was lowered into. Very _large bodies_ of fluids will be _considered infinite_.", - "block.create.hose_pulley.tooltip.condition3": "When Fluids pushed to Pulley", - "block.create.hose_pulley.tooltip.behaviour3": "Starts _filling fluid_ into the world _up to_ the _hose_ ends' _height_.", - - "block.create.fluid_tank.tooltip": "FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "_Stores_ all your favourite _fluids_. Scales in width and height.", - "block.create.fluid_tank.tooltip.condition1": "Right-clicked with Wrench", - "block.create.fluid_tank.tooltip.behaviour1": "Changes the optional window", - - "block.create.creative_fluid_tank.tooltip": "CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "This _Fluid Tank_ allows infinite replication of any Fluid. Scales in width and height.", - "block.create.creative_fluid_tank.tooltip.condition1": "When Fluid in Tank", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Anything _extracting_ from this tank will provide an _endless supply_ of the fluid specified. Fluids _inserted_ into this tank will be _voided._", - "block.create.creative_fluid_tank.tooltip.condition2": "Right-clicked with Wrench", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Changes the optional window", - - "block.create.fluid_valve.tooltip": "FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "Halts the flow of fluid down a pipe.", - "block.create.fluid_valve.tooltip.condition1": "Controllable flow", - "block.create.fluid_valve.tooltip.behaviour1": "Applied _rotational force_ will force the _valve_ to close, ceasing the flow of _fluids_. Reverse the direction of the _rotational force_ to re-open the valve.", - - "block.create.mechanical_pump.tooltip": "MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "Takes _rotational force_ and uses it to move _fluid_ along a _pipe_. Has a maximum range of effect in both directions. (16 blocks by default)", - "block.create.mechanical_pump.tooltip.condition1": "Fluid Flow", - "block.create.mechanical_pump.tooltip.behaviour1": "Applied _rotational force_ creates pressure that forces _fluid_ through the _pipe_ network. Reverse the direction of the _rotational force_ to switch the direction that the _fluid_ flows.", - "block.create.mechanical_pump.tooltip.control1": "Right-clicked with Wrench", - "block.create.mechanical_pump.tooltip.action1": "Reverses the direction of the _pump_, switching the default direction of the flow", - - "block.create.smart_fluid_pipe.tooltip": "SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "A _fluid pipe_ with a filter. Can specify which _fluids_ pass through.", - "block.create.smart_fluid_pipe.tooltip.condition1": "When Fluids are pushed into it", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Smart pipes receiving fluid that does not match its filter will block the flow.", - "block.create.smart_fluid_pipe.tooltip.condition2": "When adjacent to fluid container", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Smart pipes _starting_ a _flow_ from any container will only extract fluids that _match_ its _filter._", - - "block.create.spout.tooltip": "SPOUT", - "block.create.spout.tooltip.summary": "An injector for refilling your _fluid items._", - "block.create.spout.tooltip.condition1": "Fluid Transfer", - "block.create.spout.tooltip.behaviour1": "When a _fluid container item_ such as a _bucket_ or _bottle_ is placed underneath, the spout will attempt to refill it with it's own stored _fluid_.", - "block.create.spout.tooltip.condition2": "Fluid Automation", - "block.create.spout.tooltip.behaviour2": "The spout placed above a _belt_ or _depot_ will react automatically with a _fluid container item_ that passes beneath it.", - - "block.create.item_drain.tooltip": "ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "A grated depot for emptying your _fluid items._", - "block.create.item_drain.tooltip.condition1": "Fluid Transfer", - "block.create.item_drain.tooltip.behaviour1": "When a _fluid container item_ such as a _bucket_ or _bottle_ is inserted from the side, the drain will attempt to empty it into its own _fluid container_. The item will then be ejected on the opposite side.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "Perfectly mirrors Block placement across configured planes.", - "item.create.wand_of_symmetry.tooltip.condition1": "When in Hotbar", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Stays Active", - "item.create.wand_of_symmetry.tooltip.control1": "R-Click on Ground", - "item.create.wand_of_symmetry.tooltip.action1": "_Creates_ or _Moves_ the Mirror", - "item.create.wand_of_symmetry.tooltip.control2": "R-Click in the Air", - "item.create.wand_of_symmetry.tooltip.action2": "_Removes_ the active Mirror", - "item.create.wand_of_symmetry.tooltip.control3": "R-Click while Sneaking", - "item.create.wand_of_symmetry.tooltip.action3": "Opens the _Configuration Interface_", - - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "Handy tool for creating _landscapes_ and _terrain features_.", - "item.create.handheld_worldshaper.tooltip.control1": "L-Click at Block", - "item.create.handheld_worldshaper.tooltip.action1": "Sets blocks placed by the tool to the targeted block.", - "item.create.handheld_worldshaper.tooltip.control2": "R-Click at Block", - "item.create.handheld_worldshaper.tooltip.action2": "Applies the currently selected _Brush_ and _Tool_ at the targeted location.", - "item.create.handheld_worldshaper.tooltip.control3": "R-Click while Sneaking", - "item.create.handheld_worldshaper.tooltip.action3": "Opens the _Configuration Interface_", - - "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "A powerful combination of minerals suitable for speeding up the growth of common tree types.", - "item.create.tree_fertilizer.tooltip.condition1": "When used on a Sapling", - "item.create.tree_fertilizer.tooltip.behaviour1": "Grows Trees _regardless_ of their _spacing conditions_", - - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder.", - "item.create.extendo_grip.tooltip.condition1": "When in Off-Hand", - "item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.", - - "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "_Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.", - "item.create.filter.tooltip.condition1": "When in filter slot", - "item.create.filter.tooltip.behaviour1": "_Controls_ item flow according to its _configuration_.", - "item.create.filter.tooltip.condition2": "When R-Clicked", - "item.create.filter.tooltip.behaviour2": "Opens the _configuration interface_.", - - "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "_Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of_ item _attributes_ and _categories_.", - "item.create.attribute_filter.tooltip.condition1": "When in filter slot", - "item.create.attribute_filter.tooltip.behaviour1": "_Controls_ item flow according to its _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "When R-Clicked", - "item.create.attribute_filter.tooltip.behaviour2": "Opens the _configuration interface_.", - - "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "Used as a recipe ingredient and for writing at the _Schematic Table_.", - - "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "Holds a structure to be positioned and placed into the world. Position the Hologram as desired and use a _Schematicannon_ to build it.", - "item.create.schematic.tooltip.condition1": "When Held", - "item.create.schematic.tooltip.behaviour1": "Can be positioned using the Tools on Screen.", - "item.create.schematic.tooltip.control1": "R-Click while Sneaking", - "item.create.schematic.tooltip.action1": "Opens an _Interface_ for entering exact _Coordinates_.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "Used for saving a Structure in your world to a .nbt file.", - "item.create.schematic_and_quill.tooltip.condition1": "Step 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Select two corner points using R-Click.", - "item.create.schematic_and_quill.tooltip.condition2": "Step 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scroll_ on the faces to adjust the size. R-Click again to Save.", - "item.create.schematic_and_quill.tooltip.control1": "R-Click", - "item.create.schematic_and_quill.tooltip.action1": "Select a corner point / confirm save.", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl Held", - "item.create.schematic_and_quill.tooltip.action2": "Select points in _mid-air_. _Scroll_ to adjust the distance.", - "item.create.schematic_and_quill.tooltip.control3": "R-Click while Sneaking", - "item.create.schematic_and_quill.tooltip.action3": "_Resets_ and removes the selection.", - - "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "Shoots blocks to recreate a deployed _Schematic_ in the World. Uses items from adjacent Inventories and _Gunpowder_ as fuel.", - "block.create.schematicannon.tooltip.condition1": "When R-Clicked", - "block.create.schematicannon.tooltip.behaviour1": "Opens the _Interface_", - - "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "Writes saved Schematics onto an _Empty Schematic_.", - "block.create.schematic_table.tooltip.condition1": "When given an Empty Schematic", - "block.create.schematic_table.tooltip.behaviour1": "Uploads a chosen File from your Schematics Folder.", - - "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "A pair of glasses to augment your vision with useful _kinetic information_.", - "item.create.goggles.tooltip.condition1": "When worn", - "item.create.goggles.tooltip.behaviour1": "Shows _colored indicators_ corresponding to the _Speed Level_ of a placed kinetic component as well as _Stress Impact_ and _Capacity_ of individual components.", - "item.create.goggles.tooltip.condition2": "When looking at gauge", - "item.create.goggles.tooltip.behaviour2": "Shows detailed information about _Speed_ or _Stress_ of the network to which the gauge is connected.", - "item.create.goggles.tooltip.condition3": "When looking at fluid containers", - "item.create.goggles.tooltip.behaviour3": "Shows detailed information about the _Capacity_ of the block and any _Fluids_ stored within.", - - "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "A useful tool for working on kinetic contraptions. Can be used to _Rotate_, _Dismantle_ and to _Configure_ components.", - "item.create.wrench.tooltip.control1": "Right-Click a kinetic block", - "item.create.wrench.tooltip.action1": "_Rotates components_ toward or away from the face with which you interacted.", - "item.create.wrench.tooltip.control2": "R-Click while Sneaking", - "item.create.wrench.tooltip.action2": "_Disassembles Kinetic components_ and places them back in _your inventory_.", - - "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "Attach to the front of an _Encased Fan_ to distribute its effect on Entities in _all directions_.", - - "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "Fine craftsmanship for _decorating_ a space and _keeping track of time_.", - "block.create.cuckoo_clock.tooltip.condition1": "When Powered by Kinetics", - "block.create.cuckoo_clock.tooltip.behaviour1": "Shows the _current time_ and plays a tune twice a day. _Activates_ once at _noon_ and at dusk, as soon as _players can sleep_.", - - "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "Turns _Rotational Force_ into refined Motion Sickness.", - - "block.create.portable_fluid_interface.tooltip": "PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "A portable interchange point for _moving fluids_ to and from a _structure_ moved by a piston, bearing, minecart, or pulley. Two meeting interfaces have to _face each other_ and be spaced _1-2 blocks apart_.", - "block.create.portable_fluid_interface.tooltip.condition1": "While Moving", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Interacts with stationary _portable storage interfaces_ to transfer fluids to or from the contraption. Pipes inserting into or extracting from the _Stationary Interface_ will interact with the tanks on the contraption _directly._ The structure will briefly stall as Fluids are exchanged.", - "block.create.portable_fluid_interface.tooltip.condition2": "When Powered by Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "_Disengages_ any active connection immediately.", - - "block.create.stockpile_switch.tooltip": "STOCKPILE SWITCH", - "block.create.stockpile_switch.tooltip.summary": "Toggles a Redstone signal based on the amount of _Stored Items_ in the attached Container. Comes with a handy filter. As opposed to a _Comparator,_ the _Stockpile Switch_ allows configuration of _thresholds,_ at which signals are inverted.", - "block.create.stockpile_switch.tooltip.condition1": "When R-Clicked", - "block.create.stockpile_switch.tooltip.behaviour1": "Opens the _Configuration Interface_.", - - "block.create.content_observer.tooltip": "CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "_Detects Items_ inside _containers_ and _conveyors_ matching a configured _filter_. While the observed _inventory_, _belt_ or _chute contains_ a matching item, this component will emit a _Redstone Signal_. When an observed _funnel transfers_ a matching item, this component will emit a _Redstone Pulse_.", - - "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "This _Item Container_ allows Manual control over its capacity. It can hold up to _16 Stacks_ of any Item. Supports _Redstone Comparators_.", - "block.create.adjustable_crate.tooltip.condition1": "When R-Clicked", - "block.create.adjustable_crate.tooltip.behaviour1": "Opens the _Interface_.", - - "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "This _Storage Container_ allows infinite replication of any item. Place next to a _Schematicannon_ to remove any material requirements.", - "block.create.creative_crate.tooltip.condition1": "When Item in Filter Slot", - "block.create.creative_crate.tooltip.behaviour1": "Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._", - - "block.create.controller_rail.tooltip": "CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "A _uni-directional powered rail_ capable of _fine control_ over a minecarts' _movement speed_.", - "block.create.controller_rail.tooltip.condition1": "When Powered by Redstone", - "block.create.controller_rail.tooltip.behaviour1": "_Accelerates_ or _Decelerates_ passing _minecarts_ corresponding to the _signal strength_. Propagates redstone power to adjacent controller rails. Powering two controller rails with different strengths will cause tracks between them to interpolate their signal.", - - "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.", - "item.create.sand_paper.tooltip.condition1": "When Used", - "item.create.sand_paper.tooltip.behaviour1": "Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_", - - "item.create.builders_tea.tooltip": "BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "The perfect drink to get the day started- _Motivating_ and _Saturating._", - - "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "A Chromatic material forged from _absorbed light_.", - - "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "A Chromatic material forged _in the void_.", - - "item.create.minecart_coupling.tooltip": "MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "_Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.", - "item.create.minecart_coupling.tooltip.condition1": "When Used on Minecart", - "item.create.minecart_coupling.tooltip.behaviour1": "_Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.", - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Please keep this item away from children.", - "create.tooltip.randomWipDescription1": "A baby panda dies every time you use this item. Every. Time.", - "create.tooltip.randomWipDescription2": "Use at your own risk.", - "create.tooltip.randomWipDescription3": "This is not the item you are looking for, *finger-wiggles* please disperse.", - "create.tooltip.randomWipDescription4": "This item will self-destruct in 10 seconds. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Believe me, it's useless.", - "create.tooltip.randomWipDescription6": "By using this item, you hereby consent to our disclaimer and agree to its terms.", - "create.tooltip.randomWipDescription7": "This one maybe isn't for you. What about that one?", - "create.tooltip.randomWipDescription8": "Use it and regret your decision immediately.", - "create.gui.chromatic_projector.title": "Chromatic Projector", - "create.gui.chromatic_projector.filter.invert": "Invert", - "create.gui.chromatic_projector.filter.sepia": "Sepia", - "create.gui.chromatic_projector.filter.grayscale": "Grayscale", - "create.gui.chromatic_projector.filter.saturate": "Saturate", - "create.gui.chromatic_projector.filter.hue_shift": "Hue shift", - "create.gui.chromatic_projector.filter.darken": "Darken", - "create.gui.chromatic_projector.filter.contrast": "Contrast", - "create.gui.chromatic_projector.filter.end": "End", - "create.gui.chromatic_projector.filter": "Filter", - "create.gui.chromatic_projector.surface": "Surface", - "create.gui.chromatic_projector.field": "Field", - "create.gui.chromatic_projector.strength": "Strength", - "create.gui.chromatic_projector.radius": "Radius", - "create.gui.chromatic_projector.feather": "Feather", - "create.gui.chromatic_projector.density": "Density", - "create.gui.chromatic_projector.fade": "Fade", - "create.gui.chromatic_projector.blend": "Blend" -} diff --git a/src/main/resources/assets/create/lang/es_es.json b/src/main/resources/assets/create/lang/es_es.json deleted file mode 100644 index c8e41ac46..000000000 --- a/src/main/resources/assets/create/lang/es_es.json +++ /dev/null @@ -1,1805 +0,0 @@ -{ - - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "Ventana de acacia", - "block.create.acacia_window_pane": "Panel de ventana de acacia", - "block.create.adjustable_chain_gearshift": "Cadena de transmisión ajustable", - "block.create.adjustable_crate": "Caja ajustable", - "block.create.adjustable_pulse_repeater": "Repetidor de pulso ajustable", - "block.create.adjustable_repeater": "Repetidor ajustable", - "block.create.analog_lever": "Palanca analógica", - "block.create.andesite_belt_funnel": "Embudo de cinta de andesita", - "block.create.andesite_bricks": "Ladrillos de andesita", - "block.create.andesite_bricks_slab": "Losa de ladrillos de andesita", - "block.create.andesite_bricks_stairs": "Escaleras de ladrillos de andesita", - "block.create.andesite_bricks_wall": "Pared de ladrillos de andesita", - "block.create.andesite_casing": "Revestidor de andesita", - "block.create.andesite_cobblestone": "Adoquín de andesita", - "block.create.andesite_cobblestone_slab": "Losa de adoquín de andesita", - "block.create.andesite_cobblestone_stairs": "Escaleras de adoquines de andesita", - "block.create.andesite_cobblestone_wall": "Muro de adoquines de andesita", - "block.create.andesite_encased_shaft": "Eje revestido de andesita", - "block.create.andesite_funnel": "Embudo de andesita", - "block.create.andesite_pillar": "Poste de andesita", - "block.create.andesite_tunnel": "Túnel de Andesita", - "block.create.basin": "Cuenca", - "block.create.belt": "Cinta", - "block.create.birch_window": "Ventana de abedul", - "block.create.birch_window_pane": "Panel de ventana de abedul", - "block.create.black_sail": "Vela negra", - "block.create.black_seat": "Asiento negro", - "block.create.black_valve_handle": "Asa de válvula negra", - "block.create.blaze_burner": "Quemador de Blaze", - "block.create.blue_sail": "Vela azul", - "block.create.blue_seat": "Asiento azul", - "block.create.blue_valve_handle": "Asa de válvula azul", - "block.create.brass_belt_funnel": "Embudo de cinta de latón", - "block.create.brass_block": "Bloque de latón", - "block.create.brass_casing": "Revestidor de latón", - "block.create.brass_encased_shaft": "Eje revestido de latón", - "block.create.brass_funnel": "Embudo de latón", - "block.create.brass_tunnel": "Túnel de latón", - "block.create.brown_sail": "Vela marrón", - "block.create.brown_seat": "Asiento marrón", - "block.create.brown_valve_handle": "Asa de válvula marrón", - "block.create.cart_assembler": "Ensamblador de vagonetas", - "block.create.chiseled_dark_scoria": "Escoria oscura cincelada", - "block.create.chiseled_dolomite": "Dolomita cincelada", - "block.create.chiseled_gabbro": "Gabro cincelado", - "block.create.chiseled_limestone": "Caliza cincelada", - "block.create.chiseled_scoria": "Escoria cincelada", - "block.create.chiseled_weathered_limestone": "Piedra caliza erosionada cincelada", - "block.create.chocolate": "Chocolate", - "block.create.chute": "Ducto", - "block.create.clockwork_bearing": "Rodamiento de reloj", - "block.create.clutch": "Embrague", - "block.create.cogwheel": "Rueda dentada", - "block.create.content_observer": "Observador de contenidos", - "block.create.controller_rail": "Raíl de control", - "block.create.copper_block": "Bloque de cobre", - "block.create.copper_casing": "Revestidor de caliza", - "block.create.copper_ore": "Mineral de cobre", - "block.create.copper_shingles": "Bloque de tejas de cobre", - "block.create.copper_tiles": "Bloque de baldosas de cobre", - "block.create.copper_valve_handle": "Asa de válvula de cobre", - "block.create.creative_crate": "Caja creativa", - "block.create.creative_fluid_tank": "Tanque de fluidos creativo", - "block.create.creative_motor": "Motor creativo", - "block.create.crushing_wheel": "Rueda trituradora", - "block.create.crushing_wheel_controller": "Controlador de Rueda trituradora", - "block.create.cuckoo_clock": "Reloj Cucú", - "block.create.cyan_sail": "Vela cian", - "block.create.cyan_seat": "Asiento cian", - "block.create.cyan_valve_handle": "Asa de válvula cian", - "block.create.dark_oak_window": "Ventana de roble oscuro", - "block.create.dark_oak_window_pane": "Panel de ventana de roble oscuro", - "block.create.dark_scoria": "Escoria oscura", - "block.create.dark_scoria_bricks": "Ladrillos de escoria oscura", - "block.create.dark_scoria_bricks_slab": "Losa de ladrillos de escoria oscura", - "block.create.dark_scoria_bricks_stairs": "Escaleras de ladrillos de escoria oscura", - "block.create.dark_scoria_bricks_wall": "Pared de ladrillos de escoria oscura", - "block.create.dark_scoria_cobblestone": "Adoquines de escoria oscura", - "block.create.dark_scoria_cobblestone_slab": "Losa de adoquines de escoria oscura", - "block.create.dark_scoria_cobblestone_stairs": "Escaleras de adoquines de escoria oscura", - "block.create.dark_scoria_cobblestone_wall": "Pared de adoquines de escoria oscura", - "block.create.dark_scoria_pillar": "Pilar de escoria oscura", - "block.create.deployer": "Desplegador", - "block.create.depot": "Depósito", - "block.create.diorite_bricks": "Ladrillos de diorita", - "block.create.diorite_bricks_slab": "Losa de ladrillos de diorita", - "block.create.diorite_bricks_stairs": "Escaleras de ladrillos de diorita", - "block.create.diorite_bricks_wall": "Pared de ladrillos de diorita", - "block.create.diorite_cobblestone": "Adoquín de diorita", - "block.create.diorite_cobblestone_slab": "Losa de adoquínes de diorita", - "block.create.diorite_cobblestone_stairs": "Escaleras de adoquines de diorita", - "block.create.diorite_cobblestone_wall": "Pared de adoquines de diorita", - "block.create.diorite_pillar": "Pilar de diorita", - "block.create.dolomite": "Dolomita", - "block.create.dolomite_bricks": "Ladrillos de dolomita", - "block.create.dolomite_bricks_slab": "Losa de ladrillos de dolomita", - "block.create.dolomite_bricks_stairs": "Escaleras de ladrillos de dolomita", - "block.create.dolomite_bricks_wall": "Pared de ladrillos de dolomita", - "block.create.dolomite_cobblestone": "Adoquín de dolomita", - "block.create.dolomite_cobblestone_slab": "Losa de adoquín de dolomita", - "block.create.dolomite_cobblestone_stairs": "Escaleras de adoquines de dolomita", - "block.create.dolomite_cobblestone_wall": "Pared de adoquines de dolomita", - "block.create.dolomite_pillar": "Pilar de dolomita", - "block.create.encased_chain_drive": "Cadena de transmisión revestida", - "block.create.encased_fan": "Ventilador revestido", - "block.create.encased_fluid_pipe": "Tubería de fluidos de cobre reforzada", - "block.create.fancy_andesite_bricks": "Ladrillos de andesita elegantes", - "block.create.fancy_andesite_bricks_slab": "Ladrillos de andesita elegantes", - "block.create.fancy_andesite_bricks_stairs": "Escaleras de ladrillos de andesita elegantes", - "block.create.fancy_andesite_bricks_wall": "Pared de ladrillos de andesita elegantes", - "block.create.fancy_dark_scoria_bricks": "Ladrillos de escoria oscura elegantes", - "block.create.fancy_dark_scoria_bricks_slab": "Losa de ladrillos de escoria oscura elegantes", - "block.create.fancy_dark_scoria_bricks_stairs": "Escalera de ladrillos de escoria oscura elegantes", - "block.create.fancy_dark_scoria_bricks_wall": "Pared de ladrillos de escoria oscura elegantes", - "block.create.fancy_diorite_bricks": "Ladrillos de diorita elegantes", - "block.create.fancy_diorite_bricks_slab": "Losa de ladrillos de diorita elegantes", - "block.create.fancy_diorite_bricks_stairs": "Escaleras de ladrillos de diorita elegantes", - "block.create.fancy_diorite_bricks_wall": "Pared de ladrillos de diorita elegantes", - "block.create.fancy_dolomite_bricks": "Ladrillos de dolomita elegantes", - "block.create.fancy_dolomite_bricks_slab": "Losa de ladrillos de dolomita elegantes", - "block.create.fancy_dolomite_bricks_stairs": "Escaleras de ladrillos de dolomita elegantes", - "block.create.fancy_dolomite_bricks_wall": "Pared de ladrillos de dolomita elegantes", - "block.create.fancy_gabbro_bricks": "Ladrillos de gabro elegantes", - "block.create.fancy_gabbro_bricks_slab": "Losa de ladrillos de gabro elegantes", - "block.create.fancy_gabbro_bricks_stairs": "Escaleras de ladrillos de gabro elegantes", - "block.create.fancy_gabbro_bricks_wall": "Pared de ladrillos de gabro elegantes", - "block.create.fancy_granite_bricks": "Ladrillos de granito elegantes", - "block.create.fancy_granite_bricks_slab": "Losa de ladrillos de granito elegantes", - "block.create.fancy_granite_bricks_stairs": "Escaleras de ladrillos de granito elegantes", - "block.create.fancy_granite_bricks_wall": "Pared de ladrillos de granito elegantes", - "block.create.fancy_limestone_bricks": "Ladrillos de piedra caliza elegantes", - "block.create.fancy_limestone_bricks_slab": "Losa de ladrillos de piedra caliza elegantes", - "block.create.fancy_limestone_bricks_stairs": "Escaleras de ladrillos de piedra caliza elegantes", - "block.create.fancy_limestone_bricks_wall": "Pared de ladrillos de piedra caliza elegantes", - "block.create.fancy_scoria_bricks": "Ladrillos de escoria elegantes", - "block.create.fancy_scoria_bricks_slab": "Losa de ladrillos de escoria elegantes", - "block.create.fancy_scoria_bricks_stairs": "Escaleras de ladrillos de escoria elegantes", - "block.create.fancy_scoria_bricks_wall": "Pared de ladrillos de escoria elegantes", - "block.create.fancy_weathered_limestone_bricks": "Ladrillos de piedra de caliza erosionada elegantes", - "block.create.fancy_weathered_limestone_bricks_slab": "Losa de ladrillos de caliza erosionada elegantes", - "block.create.fancy_weathered_limestone_bricks_stairs": "Escaleras de ladrillos de caliza erosionada elegantes", - "block.create.fancy_weathered_limestone_bricks_wall": "Pared de ladrillos de caliza erosionada elegantes", - "block.create.fluid_pipe": "Tubería de fluidos de cobre", - "block.create.fluid_tank": "Depósito de fluidos", - "block.create.fluid_valve": "Válvula de fluidos", - "block.create.flywheel": "Rueda de inercia", - "block.create.framed_glass": "Cristal enmarcado", - "block.create.framed_glass_pane": "Panel de cristal enmarcado", - "block.create.furnace_engine": "Motor de horno", - "block.create.gabbro": "Gabro", - "block.create.gabbro_bricks": "Ladrillos de gabro", - "block.create.gabbro_bricks_slab": "Losa de ladrillos de gabro", - "block.create.gabbro_bricks_stairs": "Escaleras de ladrillos de gabro", - "block.create.gabbro_bricks_wall": "Pared de ladrillos de gabro", - "block.create.gabbro_cobblestone": "Adoquín de gabro", - "block.create.gabbro_cobblestone_slab": "Losa de adoquínes de gabro", - "block.create.gabbro_cobblestone_stairs": "Escaleras de adoquínes de gabro", - "block.create.gabbro_cobblestone_wall": "Pared de adoquínes de gabro", - "block.create.gabbro_pillar": "Pilar de gabro", - "block.create.gantry_pinion": "Piñón de grúa", - "block.create.gantry_shaft": "Eje de grúa", - "block.create.gearbox": "Caja de transmisión", - "block.create.gearshift": "Caja de cambios", - "block.create.glass_fluid_pipe": "Tubería de fluidos de cristal", - "block.create.granite_bricks": "Ladrillos de granito", - "block.create.granite_bricks_slab": "Losa de ladrillos de granito", - "block.create.granite_bricks_stairs": "Escaleras de ladrillos de granito", - "block.create.granite_bricks_wall": "Pared de ladrillos de granito", - "block.create.granite_cobblestone": "Adoquín de granito", - "block.create.granite_cobblestone_slab": "Losa de adoquínes de granito", - "block.create.granite_cobblestone_stairs": "Escaleras de adoquínes de granito", - "block.create.granite_cobblestone_wall": "Pared de adoquínes de granito", - "block.create.granite_pillar": "Pilar de granito", - "block.create.gray_sail": "Vela gris", - "block.create.gray_seat": "Asiento gris", - "block.create.gray_valve_handle": "Asa de válvula gris", - "block.create.green_sail": "Vela verde", - "block.create.green_seat": "Asiento verde", - "block.create.green_valve_handle": "Asa de válvula verde", - "block.create.hand_crank": "Manivela", - "block.create.honey": "Miel", - "block.create.horizontal_framed_glass": "Cristal con marco horizontal", - "block.create.horizontal_framed_glass_pane": "Panel de cristal con marco horizontal", - "block.create.hose_pulley": "Polea de manguera", - "block.create.item_drain": "Drenador de elementos", - "block.create.jungle_window": "Ventana de jungla", - "block.create.jungle_window_pane": "Panel de ventana de jungla", - "block.create.large_cogwheel": "Rueda dentada grande", - "block.create.layered_andesite": "Andesita estratificada", - "block.create.layered_dark_scoria": "Escoria oscura estratificada", - "block.create.layered_diorite": "Diorita estratificada", - "block.create.layered_dolomite": "Dolomita estratificada", - "block.create.layered_gabbro": "Gabro estratificado", - "block.create.layered_granite": "Granito estratificado", - "block.create.layered_limestone": "Piedra caliza estratificada", - "block.create.layered_scoria": "Escoria estratificada", - "block.create.layered_weathered_limestone": "Caliza erosionada estratificada", - "block.create.light_blue_sail": "Vela azul claro", - "block.create.light_blue_seat": "Asiento azul claro", - "block.create.light_blue_valve_handle": "Asa de válvula azul claro", - "block.create.light_gray_sail": "Vela gris claro", - "block.create.light_gray_seat": "Asiento gris claro", - "block.create.light_gray_valve_handle": "Asa de válvula gris claro", - "block.create.lime_sail": "Vela lima", - "block.create.lime_seat": "Asiento lima", - "block.create.lime_valve_handle": "Asa de válvula lima", - "block.create.limesand": "Arena caliza", - "block.create.limestone": "Piedra caliza", - "block.create.limestone_bricks": "Ladrillos de piedra caliza", - "block.create.limestone_bricks_slab": "Losa de ladrillos de piedra caliza", - "block.create.limestone_bricks_stairs": "Escaleras de ladrillos de piedra caliza", - "block.create.limestone_bricks_wall": "Pared de ladrillos de piedra caliza", - "block.create.limestone_cobblestone": "Adoquínes de piedra caliza", - "block.create.limestone_cobblestone_slab": "Losa de adoquines de piedra caliza", - "block.create.limestone_cobblestone_stairs": "Escaleras de adoquines de piedra caliza", - "block.create.limestone_cobblestone_wall": "Pared de adoquines de piedra caliza", - "block.create.limestone_pillar": "Pilar de piedra caliza", - "block.create.linear_chassis": "Chasis lineal", - "block.create.lit_blaze_burner": "Quemador de Blaze encendido", - "block.create.magenta_sail": "Vela magenta", - "block.create.magenta_seat": "Asiento magenta", - "block.create.magenta_valve_handle": "Asa de válvula magenta", - "block.create.mechanical_arm": "Brazo mecánico", - "block.create.mechanical_bearing": "Rodamiento mecánico", - "block.create.mechanical_crafter": "Autoensamblador mecánico", - "block.create.mechanical_drill": "Taladro mecánico", - "block.create.mechanical_harvester": "Cosechadora mecánica", - "block.create.mechanical_mixer": "Mezcladora mecánica", - "block.create.mechanical_piston": "Pistón mecánico", - "block.create.mechanical_piston_head": "Cabezal de pistón mecánico", - "block.create.mechanical_plough": "Arado mecánico", - "block.create.mechanical_press": "Prensa mecánica", - "block.create.mechanical_pump": "Bomba mecánica", - "block.create.mechanical_saw": "Sierra mecánica", - "block.create.metal_bracket": "Soporte de metal para ejes", - "block.create.millstone": "Piedra de molino", - "block.create.minecart_anchor": "Ancla de vagonetas", - "block.create.mossy_andesite": "Andesita musgosa", - "block.create.mossy_dark_scoria": "Escoria oscura musgosa", - "block.create.mossy_diorite": "Diorita musgosa", - "block.create.mossy_dolomite": "Dolomita musgosa", - "block.create.mossy_gabbro": "Gabro musgoso", - "block.create.mossy_granite": "Granito musgoso", - "block.create.mossy_limestone": "Caliza musgosa", - "block.create.mossy_scoria": "Escoria musgosa", - "block.create.mossy_weathered_limestone": "Caliza erosionada musgosa", - "block.create.mysterious_cuckoo_clock": "Reloj cucú", - "block.create.natural_scoria": "Escoria natural", - "block.create.nixie_tube": "Tubo Nixie", - "block.create.nozzle": "Boquilla", - "block.create.oak_window": "Ventana de roble", - "block.create.oak_window_pane": "Panel de ventana de roble", - "block.create.orange_sail": "Vela naranja", - "block.create.orange_seat": "Asiento naranja", - "block.create.orange_valve_handle": "Asa de válvula naranja", - "block.create.ornate_iron_window": "Ventana de hierro ornamentada", - "block.create.ornate_iron_window_pane": "Panel de ventana de hierro ornamentada", - "block.create.overgrown_andesite": "Andesita sobredimensionada", - "block.create.overgrown_dark_scoria": "Escoria oscura sobredimensionada", - "block.create.overgrown_diorite": "Diorita sobredimensionada", - "block.create.overgrown_dolomite": "Dolomita sobredimensionada", - "block.create.overgrown_gabbro": "Gabro sobredimensionado", - "block.create.overgrown_granite": "Granito sobredimensionado", - "block.create.overgrown_limestone": "Caliza sobredimensionada", - "block.create.overgrown_scoria": "Escoria sobredimensionada", - "block.create.overgrown_weathered_limestone": "Caliza erosionada sobredimensionada", - "block.create.paved_andesite": "Andesita pavimentada", - "block.create.paved_andesite_slab": "Losa de andesita pavimentada", - "block.create.paved_andesite_stairs": "Escaleras de andesita pavimentada", - "block.create.paved_andesite_wall": "Pared de andesita pavimentada", - "block.create.paved_dark_scoria": "Escoria oscura pavimentada", - "block.create.paved_dark_scoria_slab": "Losa de escoria oscura pavimentada", - "block.create.paved_dark_scoria_stairs": "Escaleras de escoria oscura pavimentada", - "block.create.paved_dark_scoria_wall": "Pared de escoria oscura pavimentad", - "block.create.paved_diorite": "Diorita pavimentada", - "block.create.paved_diorite_slab": "Losa de diorita pavimentada", - "block.create.paved_diorite_stairs": "Escaleras de diorita pavimentada", - "block.create.paved_diorite_wall": "Pared de diorita pavimentad", - "block.create.paved_dolomite": "Dolomita pavimentada", - "block.create.paved_dolomite_slab": "Losa de dolomita pavimentada", - "block.create.paved_dolomite_stairs": "Escaleras de dolomita pavimentada", - "block.create.paved_dolomite_wall": "Pared de dolomita pavimentada", - "block.create.paved_gabbro": "Gabro pavimentado", - "block.create.paved_gabbro_slab": "Losa de gabro pavimentado", - "block.create.paved_gabbro_stairs": "Escaleras de gabro pavimentado", - "block.create.paved_gabbro_wall": "Pared de gabro pavimentado", - "block.create.paved_granite": "Granito pavimentado", - "block.create.paved_granite_slab": "Losa de granito pavimentado", - "block.create.paved_granite_stairs": "Escaleras de granito pavimentado", - "block.create.paved_granite_wall": "Pared de granito pavimentado", - "block.create.paved_limestone": "Piedra caliza pavimentada", - "block.create.paved_limestone_slab": "Losa de piedra caliza pavimentada", - "block.create.paved_limestone_stairs": "Escaleras de piedra caliza pavimentada", - "block.create.paved_limestone_wall": "Pared de piedra caliza pavimentada", - "block.create.paved_scoria": "Escoria pavimentada", - "block.create.paved_scoria_slab": "Losa de escoria pavimentada", - "block.create.paved_scoria_stairs": "Escaleras de escoria pavimentada", - "block.create.paved_scoria_wall": "Pared de escoria pavimentada", - "block.create.paved_weathered_limestone": "Piedra caliza erosionada pavimentada", - "block.create.paved_weathered_limestone_slab": "Losa de piedra caliza erosionada pavimentada", - "block.create.paved_weathered_limestone_stairs": "Escaleras de piedra caliza erosionada pavimentada", - "block.create.paved_weathered_limestone_wall": "Pared de piedra caliza erosionada pavimentada", - "block.create.pink_sail": "Vela rosa", - "block.create.pink_seat": "Asiento rosa", - "block.create.pink_valve_handle": "Asa de válvula rosa", - "block.create.piston_extension_pole": "Pértiga de extensión de pistón", - "block.create.polished_dark_scoria": "Escoria oscura pulida", - "block.create.polished_dark_scoria_slab": "Losa de escoria oscura pulida", - "block.create.polished_dark_scoria_stairs": "Escaleras de escoria oscura pulida", - "block.create.polished_dark_scoria_wall": "Pared de escoria oscura pulida", - "block.create.polished_dolomite": "Dolomita pulida", - "block.create.polished_dolomite_slab": "Losa de dolomita pulida", - "block.create.polished_dolomite_stairs": "Escaleras de dolomita pulidas", - "block.create.polished_dolomite_wall": "Pared de dolomita pulida", - "block.create.polished_gabbro": "Gabro pulido", - "block.create.polished_gabbro_slab": "Losa de gabro pulido", - "block.create.polished_gabbro_stairs": "Escaleras de gabro pulido", - "block.create.polished_gabbro_wall": "Pared de gabro pulido", - "block.create.polished_limestone": "Piedra caliza pulida", - "block.create.polished_limestone_slab": "Losa de piedra caliza pulida", - "block.create.polished_limestone_stairs": "Escaleras de piedra caliza pulidas", - "block.create.polished_limestone_wall": "Pared de piedra caliza pulida", - "block.create.polished_scoria": "Escoria pulida", - "block.create.polished_scoria_slab": "Losa de escoria pulida", - "block.create.polished_scoria_stairs": "Escaleras de losa pulida", - "block.create.polished_scoria_wall": "Pared de escoria pulida", - "block.create.polished_weathered_limestone": "Piedra caliza erosionada pulida", - "block.create.polished_weathered_limestone_slab": "Losa de piedra caliza erosionada pulida", - "block.create.polished_weathered_limestone_stairs": "Escaleras de piedra caliza erosionada pulida", - "block.create.polished_weathered_limestone_wall": "Pared de piedra caliza erosionada pulida", - "block.create.portable_fluid_interface": "Interfaz de fluidos portátil", - "block.create.portable_storage_interface": "Interfaz de almacenamiento portátil", - "block.create.powered_latch": "Palanca motorizada", - "block.create.powered_toggle_latch": "Palanca de cierre motorizada", - "block.create.pulley_magnet": "Imán de la polea", - "block.create.pulse_repeater": "Repetidor de pulsos de Redstone", - "block.create.purple_sail": "Vela morada", - "block.create.purple_seat": "Asiento morado", - "block.create.purple_valve_handle": "Asa de válvula morada", - "block.create.radial_chassis": "Chasis radial", - "block.create.red_sail": "Vela roja", - "block.create.red_seat": "Asiento rojo", - "block.create.red_valve_handle": "Asa de válvula roja", - "block.create.redstone_contact": "Contacto de Redstone", - "block.create.redstone_link": "Enlace de Redstone", - "block.create.refined_radiance_casing": "Revestidor de radiante", - "block.create.reinforced_rail": "Raíl reforzado", - "block.create.rope": "Cuerda", - "block.create.rope_pulley": "Polea de cuerda", - "block.create.rotation_speed_controller": "Controlador de velocidad de rotación", - "block.create.sail_frame": "Marco de vela", - "block.create.schematic_table": "Tabla de esquemas", - "block.create.schematicannon": "Schematicannon", - "block.create.scoria": "Escoria", - "block.create.scoria_bricks": "Ladrillos de escoria", - "block.create.scoria_bricks_slab": "Losa de ladrillos de escoria", - "block.create.scoria_bricks_stairs": "Escaleras de ladrillos de escoria", - "block.create.scoria_bricks_wall": "Pared de ladrillos de escoria", - "block.create.scoria_cobblestone": "Adoquín de escoria", - "block.create.scoria_cobblestone_slab": "Losa de adoquínes de escoria", - "block.create.scoria_cobblestone_stairs": "Escaleras de adoquines de escoria", - "block.create.scoria_cobblestone_wall": "Pared de adoquines de escoria", - "block.create.scoria_pillar": "Pilar de escoria", - "block.create.secondary_linear_chassis": "Chasis lineal secundario", - "block.create.sequenced_gearshift": "Palanca de cambios secuencial", - "block.create.shadow_steel_casing": "Revestidor sombrío", - "block.create.shaft": "Eje", - "block.create.smart_chute": "Ducto inteligente", - "block.create.smart_fluid_pipe": "Tubería de fluidos inteligente", - "block.create.speedometer": "Velocímetro", - "block.create.spout": "Surtidor", - "block.create.spruce_window": "Ventana de abeto", - "block.create.spruce_window_pane": "Panel de ventana de abeto", - "block.create.sticky_mechanical_piston": "Pistón mecánico pegajoso", - "block.create.stockpile_switch": "Interruptor de acopio", - "block.create.stressometer": "Estresómetro", - "block.create.tiled_glass": "Vidrio esmaltado", - "block.create.tiled_glass_pane": "Panel de vidrio esmaltado", - "block.create.turntable": "Plataforma giratoria mecánica", - "block.create.vertical_framed_glass": "Vidrio esmaltado vertical", - "block.create.vertical_framed_glass_pane": "Panel de vidrio esmaltado vertical", - "block.create.water_wheel": "Rueda hidráulica mecánica", - "block.create.weathered_limestone": "Piedra caliza erosionada", - "block.create.weathered_limestone_bricks": "Ladrillos de piedra caliza erosionada", - "block.create.weathered_limestone_bricks_slab": "Losa de piedra caliza erosionada", - "block.create.weathered_limestone_bricks_stairs": "Escaleras de ladrillos de piedra caliza erosionada", - "block.create.weathered_limestone_bricks_wall": "Pared de ladrillos de piedra caliza erosionada", - "block.create.weathered_limestone_cobblestone": "Adoquín de piedra caliza erosionada", - "block.create.weathered_limestone_cobblestone_slab": "Losa de adoquín de piedra caliza erosionada", - "block.create.weathered_limestone_cobblestone_stairs": "Escaleras de adoquín de piedra caliza erosionada", - "block.create.weathered_limestone_cobblestone_wall": "Pared de adoquínes de piedra caliza erosionada", - "block.create.weathered_limestone_pillar": "Pilar de piedra caliza erosionada", - "block.create.white_sail": "Vela blanca", - "block.create.white_seat": "Asiento blanco", - "block.create.white_valve_handle": "Asa de válvula blanco", - "block.create.windmill_bearing": "Rodamiento del molino de viento", - "block.create.wooden_bracket": "Soporte de madera para ejes", - "block.create.yellow_sail": "Vela amarilla", - "block.create.yellow_seat": "Asiento amarillo", - "block.create.yellow_valve_handle": "Asa de válvula amarillo", - "block.create.zinc_block": "Bloque de zinc", - "block.create.zinc_ore": "Mineral de zinc", - - "entity.create.contraption": "Artilugio", - "entity.create.gantry_contraption": "Artilugio de grúa", - "entity.create.seat": "Asiento", - "entity.create.stationary_contraption": "Artilugio estacionario", - "entity.create.super_glue": "Super Pegamento", - - "fluid.create.milk": "Leche", - "fluid.create.potion": "Poción", - "fluid.create.tea": "Té del Constructor", - - "item.create.andesite_alloy": "Aleación de andesita", - "item.create.attribute_filter": "Filtro de atributos", - "item.create.bar_of_chocolate": "Barra de chocolate", - "item.create.belt_connector": "Correa", - "item.create.blaze_cake": "Pastel de Blaze", - "item.create.blaze_cake_base": "Base de Pastel de Blaze", - "item.create.brass_hand": "Mano de latón", - "item.create.brass_ingot": "Lingote de latón", - "item.create.brass_nugget": "Pepita de latón", - "item.create.brass_sheet": "Lámina de latón", - "item.create.builders_tea": "Té del Constructor", - "item.create.chest_minecart_contraption": "Artilugio de vagoneta con cofre", - "item.create.chocolate_bucket": "Cubo de chocolate", - "item.create.chromatic_compound": "Compuesto cromático", - "item.create.cinder_flour": "Harina de ceniza", - "item.create.copper_ingot": "Lingote de cobre", - "item.create.copper_nugget": "Pepita de cobre", - "item.create.copper_sheet": "Lámina de cobre", - "item.create.crafter_slot_cover": "Tapa de ranura del Autoensamblador mecánico", - "item.create.crushed_aluminum_ore": "Mineral de aluminio molido", - "item.create.crushed_brass": "Latón molido", - "item.create.crushed_copper_ore": "Mineral de cobre molido", - "item.create.crushed_gold_ore": "Mineral de oro molido", - "item.create.crushed_iron_ore": "Mineral de hierro molido", - "item.create.crushed_lead_ore": "Mineral de plomo molido", - "item.create.crushed_nickel_ore": "Mineral de níquel molido", - "item.create.crushed_osmium_ore": "Mineral de osmio molido", - "item.create.crushed_platinum_ore": "Mineral de platino molido", - "item.create.crushed_quicksilver_ore": "Mineral de mercurio molido", - "item.create.crushed_silver_ore": "Mineral de plata molido", - "item.create.crushed_tin_ore": "Mineral de estaño molido", - "item.create.crushed_uranium_ore": "Mineral de uranio molido", - "item.create.crushed_zinc_ore": "Mineral de zinc molido", - "item.create.deforester": "Deforestador", - "item.create.dough": "Masilla", - "item.create.electron_tube": "Tubo de electrones", - "item.create.empty_blaze_burner": "Quemador de Blaze vacío", - "item.create.empty_schematic": "Esquema vacío", - "item.create.extendo_grip": "Agarre extendido", - "item.create.filter": "Filtro", - "item.create.furnace_minecart_contraption": "Artilugio de vagoneta de horno", - "item.create.goggles": "Gafas del Ingeniero", - "item.create.golden_sheet": "Lámina de oro", - "item.create.handheld_blockzapper": "Blockzapper", - "item.create.handheld_worldshaper": "Worldshaper", - "item.create.honey_bucket": "Cubo de miel", - "item.create.integrated_circuit": "Chip de circuito integrado", - "item.create.iron_sheet": "Lámina de hierro", - "item.create.lapis_sheet": "Lámina de lapislázuli", - "item.create.minecart_contraption": "Artilugio de vagoneta", - "item.create.minecart_coupling": "Acoplamiento de vagoneta", - "item.create.polished_rose_quartz": "Cuarzo rosado pulido", - "item.create.powdered_obsidian": "Obsidiana en polvo", - "item.create.propeller": "Hélice", - "item.create.red_sand_paper": "Papel de lija rojo", - "item.create.refined_radiance": "Resplandor refinado", - "item.create.rose_quartz": "Cuarzo rosado", - "item.create.sand_paper": "Papel de lija", - "item.create.schematic": "Esquema", - "item.create.schematic_and_quill": "Esquema y Pluma", - "item.create.shadow_steel": "Acero sombrío", - "item.create.super_glue": "Super Pegamento", - "item.create.tree_fertilizer": "Fertilizador de árboles", - "item.create.vertical_gearbox": "Caja de transmisión vertical", - "item.create.wand_of_symmetry": "Varita de simetría", - "item.create.wheat_flour": "Harina de trigo", - "item.create.whisk": "Batidora", - "item.create.wrench": "Llave inglesa", - "item.create.zinc_ingot": "Lingote de zinc", - "item.create.zinc_nugget": "Pepita de zinc", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Bienvenido a Create", - "advancement.create.root.desc": "¡Es hora de empezar a construir increíbles Artilugios!", - "advancement.create.andesite_alloy": "Aliteraciones en abundancia", - "advancement.create.andesite_alloy.desc": "Los materiales de Create tienen nombres extraños, la aleación de andesita es uno de ellos.", - "advancement.create.its_alive": "Está Vivo!", - "advancement.create.its_alive.desc": "Vea cómo gira su primer componente cinético.", - "advancement.create.shifting_gears": "Cambiando de marcha", - "advancement.create.shifting_gears.desc": "Conecta una rueda dentada grande a una pequeña, lo que te permitirá cambiar la velocidad de tu artilugio.", - "advancement.create.overstressed": "Sobrecargado", - "advancement.create.overstressed.desc": "Experimenta los límites del estrés.", - "advancement.create.belt": "Paseo de algas", - "advancement.create.belt.desc": "Conectar dos ejes con una correa.", - "advancement.create.tunnel": "Cúbrete!", - "advancement.create.tunnel.desc": "Embellece tu correa con un Túnel.", - "advancement.create.splitter_tunnel": "Divide y vencerás", - "advancement.create.splitter_tunnel.desc": "Crear un divisor con un grupo de túneles de latón.", - "advancement.create.chute": "Caída en picado", - "advancement.create.chute.desc": "Coloque un ducto, la contrapartida vertical de la cinta.", - "advancement.create.upward_chute": "Abducción aérea", - "advancement.create.upward_chute.desc": "Observe cómo un objeto lanzado vuela hacia un paracaídas impulsado por un ventilador.", - "advancement.create.belt_funnel": "Colgantes con forma de embudo", - "advancement.create.belt_funnel.desc": "Coloca un embudo lateral encima de una cinta o depósito para crear un tipo especial.", - "advancement.create.belt_funnel_kiss": "Los loros y las aletas", - "advancement.create.belt_funnel_kiss.desc": "Haz besar dos embudos montados con una cinta.", - "advancement.create.fan": "Maestro mecánico del aire", - "advancement.create.fan.desc": "Monta la corriente de aire proporcionada por un ventilador revestido.", - "advancement.create.fan_lava": "Calentador geotérmico", - "advancement.create.fan_lava.desc": "Quedar atrapado en una corriente de aire que funde las cosas.", - "advancement.create.fan_water": "Lavado de la ropa", - "advancement.create.fan_water.desc": "Quedar atrapado en una corriente de aire que lava las cosas.", - "advancement.create.fan_smoke": "Fuelle mecánico", - "advancement.create.fan_smoke.desc": "Quedar atrapado en una corriente de aire que humea los artículos.", - "advancement.create.wrench": "Configurar convenientemente", - "advancement.create.wrench.desc": "Crea una llave inglesa para ayudarte a construir tus artilugios.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Crea unas Gafas del Ingeniero para ayudarte a obtener más información cinética de los componentes.", - "advancement.create.speedometer": "Pero, ¿con qué rapidez exactamente??", - "advancement.create.speedometer.desc": "Coloca y alimenta un Velocímetro. Míralo a través de las gafas para leer su valor exacto.", - "advancement.create.stressometer": "Pero, ¿cuán estresado exactamente??", - "advancement.create.stressometer.desc": "Coloca y alimenta un Estresómetro. Míralo a través de las gafas para leer su valor exacto.", - "advancement.create.aesthetics": "Boom, Estética!", - "advancement.create.aesthetics.desc": "Colocar los soportes en un eje, tubo y rueda dentada.", - "advancement.create.reinforced": "Boom, Reforzado!", - "advancement.create.reinforced.desc": "Utilizar bloques de revestimiento en un eje, un tubo y una cinta.", - "advancement.create.water_wheel": "Aprovechar la hidráulica", - "advancement.create.water_wheel.desc": "Coloca una Rueda hidráulica e intenta hacerla girar.", - "advancement.create.chocolate_wheel": "Potencia de buen gusto", - "advancement.create.chocolate_wheel.desc": "Hacer funcionar una rueda de agua con chocolate fundido.", - "advancement.create.lava_wheel": "Rueda de Magma", - "advancement.create.lava_wheel.desc": "Esto no debió haber funcionado.", - "advancement.create.cuckoo": "¿Es el momento?", - "advancement.create.cuckoo.desc": "Presenciar cómo un Reloj de cucú anuncia la hora de acostarse.", - "advancement.create.millstone": "Triturador de bolsillo", - "advancement.create.millstone.desc": "Colocar y alimentar una Piedra de molino.", - "advancement.create.windmill": "Una suave brisa", - "advancement.create.windmill.desc": "Montar un molino de viento.", - "advancement.create.maxed_windmill": "Una fuerte brisa", - "advancement.create.maxed_windmill.desc": "Montar un molino de viento de máxima intensidad.", - "advancement.create.andesite_casing": "La edad de la andesita", - "advancement.create.andesite_casing.desc": "Utiliza un poco de aleación de andesita y madera para crear un revestimiento básico.", - "advancement.create.mechanical_drill": "Interruptores fijos", - "advancement.create.mechanical_drill.desc": "Colocar y alimentar un taladro mecánico.", - "advancement.create.press": "¡La prensa se pone en marcha!", - "advancement.create.press.desc": "Activa una prensa mecánica y utilízala para crear algunas láminas.", - "advancement.create.polished_rose_quartz": "Diamantes rosas", - "advancement.create.polished_rose_quartz.desc": "Utiliza un trozo de papel de lija para pulir el cuarzo rosa hasta que se vuelva transparente.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Haz algunos Tubos de Electrones, útiles en la fabricación de maquinaria menos primitiva.", - "advancement.create.mechanical_saw": "Picado estacionario", - "advancement.create.mechanical_saw.desc": "Colocar y alimentar una sierra mecánica.", - "advancement.create.basin": "Funcionamiento de la cuenca", - "advancement.create.basin.desc": "Coloca una Cuenca e intenta arrojar objetos en ella.", - "advancement.create.mixer": "Mezcla de colores", - "advancement.create.mixer.desc": "Coloque una batidora mecánica sobre el lavabo, enciéndala y empiece a mezclar algunos ingredientes.", - "advancement.create.blaze_burner": "Una chimenea viva", - "advancement.create.blaze_burner.desc": "Obtener un Quemador de Blaze.", - "advancement.create.compact": "Compactación automática", - "advancement.create.compact.desc": "Utiliza una prensa y una palangana para compactar algunos elementos.", - "advancement.create.brass": "Aleaciones reales", - "advancement.create.brass.desc": "Utiliza Cobre molido y Zinc molido para crear algo de latón.", - "advancement.create.brass_casing": "La Edad de Latón", - "advancement.create.brass_casing.desc": "Utiliza el latón recién obtenido y algo de madera para crear un revestimiento más avanzado.", - "advancement.create.copper_casing": "La Edad de Cobre", - "advancement.create.copper_casing.desc": "Utiliza algunas láminas de cobre y madera para crear algunos revestimientos de cobre.", - "advancement.create.spout": "Sploosh", - "advancement.create.spout.desc": "Observar el llenado de un elemento fluido usando una boquilla.", - "advancement.create.spout_potion": "Cervecera global", - "advancement.create.spout_potion.desc": "Mira cómo un pico llena una botella con líquido de poción.", - "advancement.create.chocolate": "Un mundo de imaginación", - "advancement.create.chocolate.desc": "Obtener un cubo de chocolate fundido.", - "advancement.create.item_drain": "Drenaje de la ropa", - "advancement.create.item_drain.desc": "Ver cómo se vacía un elemento fluido mediante una drenadora de elementos.", - "advancement.create.chained_item_drain": "Déjalo rodar!", - "advancement.create.chained_item_drain.desc": "Observa cómo un objeto rueda por varios drenadores de elementos encadenados.", - "advancement.create.glass_pipe": "Espía del flujo", - "advancement.create.glass_pipe.desc": "Observe cómo se propaga el fluido a través de una tubería de fluidos con ventanas. Las tuberías de fluido rectas se convierten en ventanas cuando se utiliza una llave en ellas.", - "advancement.create.pipe_collision": "No cruzar nunca los arroyos", - "advancement.create.pipe_collision.desc": "Vea cómo se unen dos fluidos en su red de tuberías.", - "advancement.create.pipe_spill": "¡Hay una fuga!", - "advancement.create.pipe_spill.desc": "Observe cómo un extremo abierto de una tubería toma o deposita fluidos en el mundo.", - "advancement.create.hose_pulley": "Vertidos industriales", - "advancement.create.hose_pulley.desc": "Bajar una polea de manguera y ver cómo se vacía o se llena un cuerpo de líquido.", - "advancement.create.infinite_water": "Drenando el océano", - "advancement.create.infinite_water.desc": "Bombea de una masa de agua lo suficientemente grande como para ser considerada infinita.", - "advancement.create.infinite_lava": "Drenaje del núcleo de los planetas", - "advancement.create.infinite_lava.desc": "Bombea de una masa de lava lo suficientemente grande como para ser considerada infinita.", - "advancement.create.infinite_chocolate": "Ahogándose en la imaginación", - "advancement.create.infinite_chocolate.desc": "Bombea desde una masa de chocolate fundido lo suficientemente grande como para ser considerado infinito.", - "advancement.create.crafter": "Montaje automatizado", - "advancement.create.crafter.desc": "Coloca y alimenta algunos autoensambladores.", - "advancement.create.clockwork_bearing": "Artilugio a la hora", - "advancement.create.clockwork_bearing.desc": "Ensamblar una estructura montada sobre un rodamiento de relojería.", - "advancement.create.nixie_tube": "Signos de estilo", - "advancement.create.nixie_tube.desc": "Obtener y colocar un par de Tubos Nixie.", - "advancement.create.deployer": "Picar, colocar y atacar", - "advancement.create.deployer.desc": "Coloca y potencia un Desplegador, el reflejo perfecto de ti mismo.", - "advancement.create.speed_controller": "Los ingenieros lo odian!", - "advancement.create.speed_controller.desc": "Coloque un regulador de velocidad de rotación, el dispositivo definitivo para cambiar de marcha.", - "advancement.create.flywheel": "El corazón de la fábrica", - "advancement.create.flywheel.desc": "Conectar con éxito un motor a la rueda de inercia.", - "advancement.create.overstress_flywheel": "Altos niveles de estrés", - "advancement.create.overstress_flywheel.desc": "Sobrecargar un Motor de Horno.", - "advancement.create.integrated_circuit": "Cálculos complejos", - "advancement.create.integrated_circuit.desc": "Ensamblar un chip de circuito integrado.", - "advancement.create.mechanical_arm": "Manos ocupadas!", - "advancement.create.mechanical_arm.desc": "Crea un brazo mecánico, selecciona las entradas y salidas, colócalo en el suelo y dale energía; luego observa cómo hace todo el trabajo por ti.", - "advancement.create.musical_arm": "Tócame la melodía!", - "advancement.create.musical_arm.desc": "Vea cómo un brazo mecánico maneja su Jukebox.", - "advancement.create.arm_many_targets": "Organize-o-Tron", - "advancement.create.arm_many_targets.desc": "Programar un brazo mecánico con diez o más posiciones de salida.", - "advancement.create.arm_blaze_burner": "Combust-o-Tron", - "advancement.create.arm_blaze_burner.desc": "Instruya un brazo mecánico para alimentar su Quemador de Blaze.", - "advancement.create.fist_bump": "¡Pégale, hermano!", - "advancement.create.fist_bump.desc": "Hacer que dos Desplegadores se den un puñetazo.", - "advancement.create.crushing_wheel": "Un par de gigantes", - "advancement.create.crushing_wheel.desc": "Crea algunas Ruedas de trituración para descomponer más materiales de forma más eficaz.", - "advancement.create.blaze_cake": "Fiebre del azúcar", - "advancement.create.blaze_cake.desc": "Hornea en tu Quemador de Blaze un pastel especial.", - "advancement.create.chromatic_compound": "Minerales bipolares", - "advancement.create.chromatic_compound.desc": "Crea una Barra de Compuesto Cromático.", - "advancement.create.shadow_steel": "Retorno del vacío", - "advancement.create.shadow_steel.desc": "Crea Acero Sombrío, una barra de metal de la nada.", - "advancement.create.refined_radiance": "Brillante e inspirador", - "advancement.create.refined_radiance.desc": "Crea un Resplandor refinado, una poderosa sustancia cromática.", - "advancement.create.chromatic_age": "La edad cromática", - "advancement.create.chromatic_age.desc": "Crear bloques de revestimiento de la luz y la oscuridad.", - "advancement.create.zapper": "Construir con estilo", - "advancement.create.zapper.desc": "Construye un Blockzapper. Una pistola láser radiante que te ayuda a construir.", - "advancement.create.upgraded_zapper": "Radiante sobrecarga", - "advancement.create.upgraded_zapper.desc": "Crear y activar un Blockzapper totalmente mejorado.", - "advancement.create.wand_of_symmetry": "Espejos radiantes", - "advancement.create.wand_of_symmetry.desc": "Crear un bastón de simetría.", - "advancement.create.deforester": "Picado radiante", - "advancement.create.deforester.desc": "Crea un Deforestador y despídete del bosque local.", - "advancement.create.extendo_grip": "Boioioing!", - "advancement.create.extendo_grip.desc": "Hazte con un Agarre extentido.", - "advancement.create.dual_extendo_grip": "La última edad del boing", - "advancement.create.dual_extendo_grip.desc": "Doble Empuñadura extendida para un alcance sobrehumano.", - "advancement.create.eob": "Fin de la beta", - "advancement.create.eob.desc": "Espere más contenido aquí en el futuro. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Paletas", - - "death.attack.create.crush": "%1$s se procesó por las Ruedas de trituración", - "death.attack.create.fan_fire": "%1$s murió quemado por el aire caliente", - "death.attack.create.fan_lava": "%1$s murió quemado por un abanico de lava", - "death.attack.create.mechanical_drill": "%1$s fue empalado por un taladro mecánico", - "death.attack.create.mechanical_saw": "%1$s fue cortado por la mitad por una sierra mecánica", - "death.attack.create.cuckoo_clock_explosion": "%1$s fue volado por los aires por un reloj cucú manipulado", - - "create.block.deployer.damage_source_name": "un Desplegador rebelde", - "create.block.cart_assembler.invalid": "Coloque su Ensamblador de vagonetas en un bloque de Raíles", - - "create.recipe.crushing": "Trituración", - "create.recipe.milling": "Fresado", - "create.recipe.fan_washing": "Lavado a granel", - "create.recipe.fan_washing.fan": "Ventilador detrás del agua fluyente", - "create.recipe.fan_smoking": "Ahumador a granel", - "create.recipe.fan_smoking.fan": "Ventilador detrás del fuego", - "create.recipe.fan_blasting": "Voladuras a granel", - "create.recipe.fan_blasting.fan": "Ventilador detrás de la lava", - "create.recipe.pressing": "Prensando", - "create.recipe.mixing": "Mezclando", - "create.recipe.automatic_shapeless": "Elaboración automatizada de productos sin forma", - "create.recipe.automatic_brewing": "Elaboración de cerveza automatizada", - "create.recipe.packing": "Compactando", - "create.recipe.automatic_packing": "Embalaje automatizado", - "create.recipe.sawing": "Aserrando", - "create.recipe.mechanical_crafting": "Elaboración mecánica", - "create.recipe.automatic_shaped": "Elaboración automatizada de productos con forma", - "create.recipe.block_cutting": "Corte de bloques", - "create.recipe.wood_cutting": "Corte de maderas", - "create.recipe.blockzapper_upgrade": "Blockzapper", - "create.recipe.sandpaper_polishing": "Pulido con papel de lija", - "create.recipe.mystery_conversion": "Conversión misteriosa", - "create.recipe.spout_filling": "Llenar por el pico", - "create.recipe.draining": "Drenador de elementos", - "create.recipe.processing.chance": "%1$s%% Chance", - "create.recipe.heat_requirement.none": "No es necesario calentar", - "create.recipe.heat_requirement.heated": "Calentado", - "create.recipe.heat_requirement.superheated": "Súper-Calentado", - - "create.generic.range": "Rango", - "create.generic.radius": "Radio", - "create.generic.width": "Ancho", - "create.generic.height": "Alto", - "create.generic.length": "Largo", - "create.generic.speed": "Velocidad", - "create.generic.delay": "Retraso", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Segundos", - "create.generic.unit.minutes": "Minutos", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "En el sentido de las agujas del reloj", - "create.generic.counter_clockwise": "En sentido contrario a las agujas del reloj", - - "create.action.scroll": "Desplazar", - "create.action.confirm": "Confirmar", - "create.action.abort": "Abortar", - "create.action.saveToFile": "Guardar", - "create.action.discard": "Descartar", - - "create.keyinfo.toolmenu": "Menú de la Herramienta de Enfoque", - "create.keyinfo.scrollup": "Simular usar la rueda del ratón hacia arriba (en el mundo)", - "create.keyinfo.scrolldown": "Simular usar la rueda del ratón hacia abajo (en el mundo)", - - "create.gui.scrollInput.defaultTitle": "Seleccione una opción:", - "create.gui.scrollInput.scrollToModify": "Usa la rueda del ratón para Modificar", - "create.gui.scrollInput.scrollToAdjustAmount": "Usa la rueda del ratón para ajustar la cantidad", - "create.gui.scrollInput.scrollToSelect": "Usa la rueda del ratón para Seleccionar", - "create.gui.scrollInput.shiftScrollsFaster": "Shift para usar la rueda del ratón más rápido", - "create.gui.toolmenu.focusKey": "Mantenga [%1$s] para enfocar", - "create.gui.toolmenu.cycle": "[RUEDA DEL RATÓN] para el ciclo", - "create.gui.symmetryWand.mirrorType": "Espejado", - "create.gui.symmetryWand.orientation": "Orientación", - - "create.symmetry.mirror.plane": "Plano de espejo", - "create.symmetry.mirror.doublePlane": "Rectangular", - "create.symmetry.mirror.triplePlane": "Octogonal", - - "create.orientation.orthogonal": "Ortogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "A lo largo de Z", - "create.orientation.alongX": "A lo largo de X", - - "create.gui.blockzapper.title": "Blockzapper", - "create.gui.blockzapper.replaceMode": "Modo de sustitución", - "create.gui.blockzapper.searchDiagonal": "Seguir las diagonales", - "create.gui.blockzapper.searchFuzzy": "Ignorar los bordes del material", - "create.gui.blockzapper.range": "Alcance del margen de maniobra", - "create.gui.blockzapper.needsUpgradedAmplifier": "Requiere un amplificador mejorado", - "create.gui.blockzapper.patternSection": "Patrón", - "create.gui.blockzapper.pattern.solid": "Sólido", - "create.gui.blockzapper.pattern.checkered": "Tablero de ajedrez", - "create.gui.blockzapper.pattern.inversecheckered": "Tablero de ajedrez invertido", - "create.gui.blockzapper.pattern.chance25": "25% Roll", - "create.gui.blockzapper.pattern.chance50": "50% Roll", - "create.gui.blockzapper.pattern.chance75": "75% Roll", - "create.gui.terrainzapper.title": "Worldshaper", - "create.gui.terrainzapper.placement": "Colocación", - "create.gui.terrainzapper.placement.merged": "Fusionado", - "create.gui.terrainzapper.placement.attached": "Adjuntado", - "create.gui.terrainzapper.placement.inserted": "Insertado", - "create.gui.terrainzapper.brush": "Pincel", - "create.gui.terrainzapper.brush.cuboid": "Cuboide", - "create.gui.terrainzapper.brush.sphere": "Esfera", - "create.gui.terrainzapper.brush.cylinder": "Cilindro", - "create.gui.terrainzapper.tool": "Herramienta", - "create.gui.terrainzapper.tool.fill": "Llenar", - "create.gui.terrainzapper.tool.place": "Sitio", - "create.gui.terrainzapper.tool.replace": "Sustituir", - "create.gui.terrainzapper.tool.clear": "Borrar", - "create.gui.terrainzapper.tool.overlay": "Superposición", - "create.gui.terrainzapper.tool.flatten": "Aplanar", - - "create.terrainzapper.shiftRightClickToSet": "Shift+Clic con el botón derecho para seleccionar una forma", - - "create.blockzapper.usingBlock": "Utilizando: %1$s", - "create.blockzapper.componentUpgrades": "Mejoras de componentes:", - "create.blockzapper.component.body": "Cuerpo", - "create.blockzapper.component.amplifier": "Amplificador", - "create.blockzapper.component.accelerator": "Acelerador", - "create.blockzapper.component.retriever": "Recuperador", - "create.blockzapper.component.scope": "Mira telescópica", - "create.blockzapper.componentTier.none": "Ninguno", - "create.blockzapper.componentTier.brass": "Latón", - "create.blockzapper.componentTier.chromatic": "Cromático", - "create.blockzapper.leftClickToSet": "Clic izquierdo en un bloque para establecer el material", - "create.blockzapper.empty": "Sin bloques!", - - "create.minecart_coupling.two_couplings_max": "Las vagonetas no pueden tener más de dos enganches cada una", - "create.minecart_coupling.unloaded": "Algunas partes de su tren parecen estar en chunks no cargados", - "create.minecart_coupling.no_loops": "Los acoplamientos no pueden formar un bucle", - "create.minecart_coupling.removed": "Se han retirado todos los acoplamientos de la vagoneta", - "create.minecart_coupling.too_far": "Las vagonetas están demasiado separadas", - - "create.contraptions.movement_mode": "Modo de movimiento", - "create.contraptions.movement_mode.move_place": "Colocar siempre al detenerse", - "create.contraptions.movement_mode.move_place_returned": "Colocar sólo en la posición inicial", - "create.contraptions.movement_mode.move_never_place": "Colocar sólo cuando se destruye el ancla", - "create.contraptions.movement_mode.rotate_place": "Colocar siempre al detenerse", - "create.contraptions.movement_mode.rotate_place_returned": "Colocar sólo cerca del ángulo inicial", - "create.contraptions.movement_mode.rotate_never_place": "Colocar sólo cuando se destruye el ancla", - "create.contraptions.cart_movement_mode": "Modo de movimiento de la vagoneta", - "create.contraptions.cart_movement_mode.rotate": "Siempre de cara al movimiento", - "create.contraptions.cart_movement_mode.rotate_paused": "Pausar a los actores mientras giran", - "create.contraptions.cart_movement_mode.rotation_locked": "Bloquear rotación", - "create.contraptions.windmill.rotation_direction": "Dirección de rotación", - "create.contraptions.clockwork.clock_hands": "Manecillas de reloj", - "create.contraptions.clockwork.hour_first": "La manecilla de las horas primero", - "create.contraptions.clockwork.minute_first": "La manecilla de los minutos primero", - "create.contraptions.clockwork.hour_first_24": "La manecilla del día primero", - - "create.logistics.filter": "Filtro", - "create.logistics.recipe_filter": "Filtro de recetas", - "create.logistics.fluid_filter": "Filtro de fluidos", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filtro aplicado a %1$s.", - "create.logistics.filter.apply_click_again": "Filtro aplicado a %1$s, haga clic de nuevo para copiar la cantidad.", - "create.logistics.filter.apply_count": "Aplicado recuento de extracciones al filtro.", - - "create.gui.goggles.generator_stats": "Estadísticas del generador:", - "create.gui.goggles.kinetic_stats": "Estadísticas cinéticas:", - "create.gui.goggles.at_current_speed": "con la velocidad actual", - "create.gui.goggles.pole_length": "Longitud del poste:", - "create.gui.assembly.exception": "Este artilugio no se pudo montar:", - "create.gui.assembly.exception.unmovableBlock": "Bloque inamovible (%4$s) en [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "El bloque en [%1$s,%2$s,%3$s] no estaba en un chunk cargado", - "create.gui.assembly.exception.structureTooLarge": "Hay demasiados bloques incluídos en el artilugio.\nEl máximo configurado es: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "Hay demasiadas Pértigas de extensión conectadas a este Pistón.\nEl máximo configurado es: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Faltan pértigas de extensión para el Pistón", - "create.gui.assembly.exception.not_enough_sails": "La estructura adjunta no incluye suficientes bloques tipo vela: %1$s\nSe requiere un mínimo de %2$s", - "create.gui.gauge.info_header": "Información sobre el medidor:", - "create.gui.speedometer.title": "Velocidad de rotación", - "create.gui.stressometer.title": "Estrés de la red", - "create.gui.stressometer.capacity": "Capacidad restante", - "create.gui.stressometer.overstressed": "Sobrecargado", - "create.gui.stressometer.no_rotation": "Sin rotación", - "create.gui.contraptions.not_fast_enough": "Parece que este %1$s no está girando con _suficiente_ velocidad_.", - "create.gui.contraptions.network_overstressed": "Parece que este artilugio está _sobrecargado_. Añade más fuentes o _desacelera_ los componentes con un _impacto_ de alto estrés.", - "create.gui.adjustable_crate.title": "Caja ajustable", - "create.gui.adjustable_crate.storageSpace": "Espacio de almacenamiento", - "create.gui.stockpile_switch.title": "Interruptor de acopio", - "create.gui.stockpile_switch.invert_signal": "Invertir señal", - "create.gui.stockpile_switch.move_to_lower_at": "Pasar al carril inferior en %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Pasar al carril superior en %1$s%%", - "create.gui.sequenced_gearshift.title": "Cambio de marchas secuenciado", - "create.gui.sequenced_gearshift.instruction": "Instrucción", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Giro por ángulo", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Giro", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Ángulo", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Giro para mover el pistón/polea/grúa", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Pistón", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distancia", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Tiempo de retraso", - "create.gui.sequenced_gearshift.instruction.delay": "Retraso", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Duración", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "Fin", - "create.gui.sequenced_gearshift.instruction.end": "Fin", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "En espera de un Pulso de Redstone", - "create.gui.sequenced_gearshift.instruction.await": "En espera", - "create.gui.sequenced_gearshift.speed": "Velocidad, Dirección", - "create.gui.sequenced_gearshift.speed.forward": "Velocidad de entrada, hacia adelante", - "create.gui.sequenced_gearshift.speed.forward_fast": "Doble velocidad, hacia adelante", - "create.gui.sequenced_gearshift.speed.back": "Velocidad de entrada, Invertida", - "create.gui.sequenced_gearshift.speed.back_fast": "Doble velocidad, Invertida", - - "create.schematicAndQuill.dimensions": "Tamaño del esquema: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Primera posición fijada.", - "create.schematicAndQuill.secondPos": "Segunda posición fijada.", - "create.schematicAndQuill.noTarget": "Mantenga [Ctrl] para seleccionar los bloques del aire.", - "create.schematicAndQuill.abort": "Selección eliminada.", - "create.schematicAndQuill.title": "Nombre del esquema:", - "create.schematicAndQuill.convert": "Guardar y desplegar inmediatamente", - "create.schematicAndQuill.fallbackName": "Mi esquema", - "create.schematicAndQuill.saved": "Guardado como %1$s", - - "create.schematic.invalid": "[!] Elemento no válido - Utilice la tabla de esquemas en su lugar", - "create.schematic.position": "Posición", - "create.schematic.rotation": "Rotación", - "create.schematic.rotation.none": "Ninguno", - "create.schematic.rotation.cw90": "En el sentido de las agujas del reloj 90", - "create.schematic.rotation.cw180": "En el sentido de las agujas del reloj 180", - "create.schematic.rotation.cw270": "En el sentido de las agujas del reloj 270", - "create.schematic.mirror": "Espejado", - "create.schematic.mirror.none": "Ninguno", - "create.schematic.mirror.frontBack": "Delante-detrás", - "create.schematic.mirror.leftRight": "Izquierda-Derecha", - "create.schematic.tool.deploy": "Despliegue", - "create.schematic.tool.move": "Mover XZ", - "create.schematic.tool.movey": "Mover Y", - "create.schematic.tool.rotate": "Rotar", - "create.schematic.tool.print": "Imprimir", - "create.schematic.tool.flip": "Voltear", - "create.schematic.tool.deploy.description.0": "Mueve la estructura a un lugar.", - "create.schematic.tool.deploy.description.1": "Haga clic con el botón derecho del ratón en el suelo para colocar.", - "create.schematic.tool.deploy.description.2": "Mantenga [Ctrl] para seleccionar a una distancia fija.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Rueda del ratón para cambiar la distancia.", - "create.schematic.tool.move.description.0": "Desplaza el esquema horizontalmente.", - "create.schematic.tool.move.description.1": "Apunta al Esquema y [CTRL]-Rueda del ratón para ponerlo.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Desplaza el esquema verticalmente..", - "create.schematic.tool.movey.description.1": "[CTRL]-Rueda del ratón para moverlo hacia arriba/abajo.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Gira el esquema alrededor de su centro.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Rueda del ratón para girar 90 grados.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Sitúa instantáneamente la estructura en el mundo.", - "create.schematic.tool.print.description.1": "[Clic derecho] para confirmar la colocación en el lugar actual.", - "create.schematic.tool.print.description.2": "Esta herramienta es sólo para el Modo Creativo.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Voltea el Esquema a lo largo de la cara que seleccione.", - "create.schematic.tool.flip.description.1": "Apunta al esquema y [CTRL]-Rueda del ratón para voltearlo.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Sincronizando...", - "create.schematics.uploadTooLarge": "Tu esquema excede las limitaciones especificadas por el servidor.", - "create.schematics.maxAllowedSize": "El tamaño máximo permitido del archivo del esquema es:", - - "create.gui.schematicTable.refresh": "Refrescar archivos", - "create.gui.schematicTable.open_folder": "Abrir carpeta", - "create.gui.schematicTable.title": "Tabla de esquemas", - "create.gui.schematicTable.availableSchematics": "Esquemas disponibles", - "create.gui.schematicTable.noSchematics": "No hay esquemas guardados", - "create.gui.schematicTable.uploading": "Subiendo...", - "create.gui.schematicTable.finished": "Subida finalizada!", - "create.gui.schematicannon.title": "Schematicannon", - "create.gui.schematicannon.listPrinter": "Lista de control de la impresora", - "create.gui.schematicannon.gunpowderLevel": "Pólvora %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Disparos restantes: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Con respaldo: %1$s", - "create.gui.schematicannon.optionEnabled": "Actualmente habilitado", - "create.gui.schematicannon.optionDisabled": "Actualmente deshabilitado", - "create.gui.schematicannon.showOptions": "Mostrar la configuración de la impresora", - "create.gui.schematicannon.option.dontReplaceSolid": "No sustituír los bloques sólidos", - "create.gui.schematicannon.option.replaceWithSolid": "Sustituir sólido por sólido", - "create.gui.schematicannon.option.replaceWithAny": "Sustituir sólido por cualquiera", - "create.gui.schematicannon.option.replaceWithEmpty": "Sustituir sólido por vacío", - "create.gui.schematicannon.option.skipMissing": "Omitir los bloques que faltan", - "create.gui.schematicannon.option.skipTileEntities": "Proteger a las entidades", - "create.gui.schematicannon.slot.gunpowder": "Añade pólvora para alimentar el cañón", - "create.gui.schematicannon.slot.listPrinter": "Coloque los libros aquí para imprimir una lista de comprobación para su esquema", - "create.gui.schematicannon.slot.schematic": "Añada su esquema aquí. Asegúrese de que se despliega en un lugar específico.", - "create.gui.schematicannon.option.skipMissing.description": "Si el cañón no encuentra un bloque necesario para su colocación, continuará en la siguiente ubicación.", - "create.gui.schematicannon.option.skipTileEntities.description": "El cañón evitará reemplazar los bloques que contienen datos, como los Cofres.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "El cañón nunca sustituirá ningún bloque sólido en su zona de trabajo, sólo los no sólidos y el aire.", - "create.gui.schematicannon.option.replaceWithSolid.description": "El cañón sólo reemplazará los bloques sólidos en su área de trabajo si el esquema contiene un bloque sólido en la ubicación.", - "create.gui.schematicannon.option.replaceWithAny.description": "El cañón reemplazará los bloques sólidos en su área de trabajo si el esquema contiene algún bloque en la ubicación.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "El cañón eliminará todos los bloques de su zona de trabajo, incluidos los sustituidos por Aire.", - - "create.schematicannon.status.idle": "Inactivo", - "create.schematicannon.status.ready": "Listo", - "create.schematicannon.status.running": "Funcionando", - "create.schematicannon.status.finished": "Finished", - "create.schematicannon.status.paused": "Pausado", - "create.schematicannon.status.stopped": "Detenido", - "create.schematicannon.status.noGunpowder": "Sin pólvora", - "create.schematicannon.status.targetNotLoaded": "El objetivo no está cargado", - "create.schematicannon.status.targetOutsideRange": "Objetivo demasiado lejano", - "create.schematicannon.status.searching": "Buscando", - "create.schematicannon.status.skipping": "Omitiendo", - "create.schematicannon.status.missingBlock": "Elementos perdidos:", - "create.schematicannon.status.placing": "Colocando", - "create.schematicannon.status.clearing": "Limpiando bloques", - "create.schematicannon.status.schematicInvalid": "Esquema inválido", - "create.schematicannon.status.schematicNotPlaced": "Esquema no desplegado", - "create.schematicannon.status.schematicExpired": "Archivo de esquemas caducado", - - "create.materialChecklist": "Lista de control del material", - "create.materialChecklist.blocksNotLoaded": "* Descargo de Responsabilidad *\n\nLa lista de materiales puede ser inexacta debido a que no se han cargado los chunks pertinentes.", - - "create.gui.filter.deny_list": "Lista de denegados", - "create.gui.filter.deny_list.description": "Los elementos pasan si NO coinciden con ninguno de los anteriores. Una lista de denegación vacía acepta todo.", - "create.gui.filter.allow_list": "Lista de permitidos", - "create.gui.filter.allow_list.description": "Los elementos pasan si coinciden con alguno de los anteriores. Una lista de permitidos vacía rechaza todo.", - "create.gui.filter.respect_data": "Respetar datos", - "create.gui.filter.respect_data.description": "Los objetos sólo coinciden si su durabilidad, encantos y otros atributos también coinciden.", - "create.gui.filter.ignore_data": "Ignorar datos", - "create.gui.filter.ignore_data.description": "Los artículos coinciden independientemente de sus atributos.", - - "create.item_attributes.placeable": "se puede colocar", - "create.item_attributes.placeable.inverted": "no se puede colocar", - "create.item_attributes.consumable": "se puede comer", - "create.item_attributes.consumable.inverted": "no se puede comer", - "create.item_attributes.smeltable": "se puede fundir", - "create.item_attributes.smeltable.inverted": "no se puede fundir", - "create.item_attributes.washable": "se puede lavar", - "create.item_attributes.washable.inverted": "no se puede lavar", - "create.item_attributes.smokable": "puede ser ahumado", - "create.item_attributes.smokable.inverted": "no puede ser ahumado", - "create.item_attributes.crushable": "puede ser molido", - "create.item_attributes.crushable.inverted": "no puede ser molido", - "create.item_attributes.blastable": "es fundible en el alto horno", - "create.item_attributes.blastable.inverted": "no es fundible en el alto horno", - "create.item_attributes.enchanted": "está encantado", - "create.item_attributes.enchanted.inverted": "no está encantado", - "create.item_attributes.damaged": "está dañado", - "create.item_attributes.damaged.inverted": "no está dañado", - "create.item_attributes.badly_damaged": "está muy dañado", - "create.item_attributes.badly_damaged.inverted": "no está muy dañado", - "create.item_attributes.not_stackable": "no se puede apilar", - "create.item_attributes.not_stackable.inverted": "se puede apilar", - "create.item_attributes.equipable": "se puede equipar", - "create.item_attributes.equipable.inverted": "no se puede equipar", - "create.item_attributes.furnace_fuel": "es combustible para hornos", - "create.item_attributes.furnace_fuel.inverted": "no es combustible para hornos", - "create.item_attributes.in_tag": "está etiquetado %1$s", - "create.item_attributes.in_tag.inverted": "no está etiquetado %1$s", - "create.item_attributes.in_item_group": "está en el grupo '%1$s'", - "create.item_attributes.in_item_group.inverted": "no está en el grupo '%1$s'", - "create.item_attributes.added_by": "fue añadido por %1$s", - "create.item_attributes.added_by.inverted": "no fue añadida por %1$s", - "create.item_attributes.has_enchant": "está encantado con %1$s", - "create.item_attributes.has_enchant.inverted": "no está encantado con %1$s", - "create.item_attributes.has_fluid": "contiene %1$s", - "create.item_attributes.has_fluid.inverted": "no contiene %1$s", - "create.item_attributes.has_name": "tiene el nombre personalizado %1$s", - "create.item_attributes.has_name.inverted": "no tiene el nombre personalizado %1$s", - "create.item_attributes.book_author": "es obra de %1$s", - "create.item_attributes.book_author.inverted": "no es es obra de %1$s", - "create.item_attributes.book_copy_original": "es un original", - "create.item_attributes.book_copy_original.inverted": "no es un original", - "create.item_attributes.book_copy_first": "es una copia de primera generación", - "create.item_attributes.book_copy_first.inverted": "no es una copia de primera generación", - "create.item_attributes.book_copy_second": "es una copia de segunda generación", - "create.item_attributes.book_copy_second.inverted": "no es una copia de segunda generación", - "create.item_attributes.book_copy_tattered": "es un desordenado desastre", - "create.item_attributes.book_copy_tattered.inverted": "no es un desordenado desastre", - "create.item_attributes.astralsorcery_crystal": "tiene el atributo de cristal %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "no tiene atributo de cristal %1$s", - "create.item_attributes.astralsorcery_constellation": "está en sintonía con %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "no está en sintonía con %1$s", - "create.item_attributes.astralsorcery_perk_gem": "tiene el atributo ventaja %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "no tiene el atributo ventaja %1$s", - "create.item_attributes.astralsorcery_amulet": "mejora %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "no mejora %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "No hay atributos seleccionados", - "create.gui.attribute_filter.selected_attributes": "Atributos seleccionados:", - "create.gui.attribute_filter.add_attribute": "Añadir atributo a la lista", - "create.gui.attribute_filter.add_inverted_attribute": "Añadir atributo invertido a la Lista", - "create.gui.attribute_filter.allow_list_disjunctive": "Lista de permitidos (Cualquiera)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Los elementos pasan si tienen alguno de los atributos seleccionados", - "create.gui.attribute_filter.allow_list_conjunctive": "Lista de permitidos (Todos)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Los elementos pasan sólo si tienen TODOS los atributos seleccionados", - "create.gui.attribute_filter.deny_list": "Lista de denegados", - "create.gui.attribute_filter.deny_list.description": "Los elementos pasan si NO tienen ninguno de los atributos seleccionados", - "create.gui.attribute_filter.add_reference_item": "Añadir elemento de referencia", - - "create.tooltip.holdKey": "Mantener [%1$s]", - "create.tooltip.holdKeyOrKey": "Mantener [%1$s] o [%2$s]", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Requisitos de velocidad: %1$s", - "create.tooltip.speedRequirement.none": "Ninguno", - "create.tooltip.speedRequirement.medium": "Moderado", - "create.tooltip.speedRequirement.high": "Rápido", - "create.tooltip.stressImpact": "Impacto de estrés: %1$s", - "create.tooltip.stressImpact.low": "Bajo", - "create.tooltip.stressImpact.medium": "Moderado", - "create.tooltip.stressImpact.high": "Alto", - "create.tooltip.stressImpact.overstressed": "Sobrecargado", - "create.tooltip.capacityProvided": "Capacidad de estrés: %1$s", - "create.tooltip.capacityProvided.low": "Pequeña", - "create.tooltip.capacityProvided.medium": "Media", - "create.tooltip.capacityProvided.high": "Grande", - "create.tooltip.capacityProvided.asGenerator": "(Como generador)", - "create.tooltip.generationSpeed": "Genera en %1$s %2$s", - "create.tooltip.analogStrength": "Fuerza analógica: %1$s/15", - - "create.mechanical_arm.extract_from": "Extraer elementos de %1$s", - "create.mechanical_arm.deposit_to": "Depositar elementos en %1$s", - "create.mechanical_arm.summary": "El brazo mecánico tiene %1$s entrada(s) y %2$s salida(s)", - "create.mechanical_arm.points_outside_range": "%1$s punto(s) de interacción seleccionado(s) eliminado(s) debido a las limitaciones de rango", - - "create.logistics.when_multiple_outputs_available": "Cuando hay múltiples salidas disponibles", - - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Round Robin forzado", - "create.mechanical_arm.selection_mode.prefer_first": "Preferir el primer objetivo", - - "create.tunnel.selection_mode.split": "División", - "create.tunnel.selection_mode.forced_split": "División forzada", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Round Robin forzado", - "create.tunnel.selection_mode.prefer_nearest": "Preferir el más cercano", - "create.tunnel.selection_mode.randomize": "Aleatorizar", - "create.tunnel.selection_mode.synchronize": "Sincronizar entradas", - - "create.tooltip.chute.header": "Información del ducto", - "create.tooltip.chute.items_move_down": "Los elementos se mueven hacia abajo", - "create.tooltip.chute.items_move_up": "Los elementos se mueven hacia arriba", - "create.tooltip.chute.no_fans_attached": "No hay ventiladores adjuntos", - "create.tooltip.chute.fans_push_up": "Los ventiladores empujan desde abajo", - "create.tooltip.chute.fans_push_down": "Los ventiladores empujan desde arriba", - "create.tooltip.chute.fans_pull_up": "Los ventiladores tiran desde arriba", - "create.tooltip.chute.fans_pull_down": "Los ventiladores tiran desde abajo", - "create.tooltip.chute.contains": "Contiene: %1$s x%2$s", - - "create.hint.hose_pulley.title": "Suministro sin fondo", - "create.hint.hose_pulley": "La masa de fluido objetivo se considera infinita", - "create.hint.mechanical_arm_no_targets.title": "No hay objetivos", - "create.hint.mechanical_arm_no_targets": "Parece que a este _brazo mecánico_ no se le ha asignado ningún _objetivo._ Selecciona correas, depósitos, embudos y otros bloques haciendo _clic derecho_ sobre ellos mientras _sostienes_ el _brazo mecánico_ en tu _mano_.", - "create.hint.horizontal_funnel.title": "Embudos horizontales", - "create.hint.horizontal_funnel": "No puede transferir entre inventarios _directamente_. Intenta pasar una _correa_ o un _depósito_ por debajo de tu embudo para extraer artículos de los inventarios", - "create.hint.upward_funnel.title": "Embudos hacia arriba", - "create.hint.upward_funnel": "sólo pueden transferir objetos insertados por _brazos_, y _ductos_ impulsados por ventilador, o elementos _lanzados_ hacia ellos. Intenta construir algunos _ductos_ si quieres mover tus objetos _verticalmente_", - "create.hint.empty_bearing.title": "Rodamiento de reloj", - "create.hint.empty_bearing": "_Haz clic con el botón derecho del ratón_ en el rodamiento con la _mano vacía_ para _adherir_ la estructura que acabas de construir delante de él", - "create.hint.full_deployer.title": "Desbordamiento de elementos del desplegador", - "create.hint.full_deployer": "Parece que este _Desplegador_ contiene _elementos_ en exceso que necesitan ser _extraídos._ Usa un _tolva,_embudo_ u otro medio para liberarlo de su desbordamiento.", - - "create.gui.config.overlay1": "Hola :)", - "create.gui.config.overlay2": "Esta es una muestra de la superposición", - "create.gui.config.overlay3": "Haga clic o arrastre con el ratón", - "create.gui.config.overlay4": "para mover esta vista previa", - "create.gui.config.overlay5": "Pulsar ESC para salir de esta pantalla", - "create.gui.config.overlay6": "y guardar la nueva posición", - "create.gui.config.overlay7": "Ejecute /create overlay reset", - "create.gui.config.overlay8": "para restablecer la posición por defecto", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Crear]: El tick del servidor está actualmente ralentizado en %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Crear]: El tick del servidor está ralentizado en %s ms ahora >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: El tick del servidor ha vuelto a su velocidad normal :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: usar /killtps stop para que el servidor vuelva a la velocidad normal", - "create.command.killTPSCommand.status.usage.1": "[Create]: usar /killtps start para ralentizar artificialmente el tick del servidor", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.subtitle.schematicannon_launch_block": "Disparos de Schematicannon", - "create.subtitle.schematicannon_finish": "Acabados de Schematicannon", - "create.subtitle.slime_added": "Slime aplastado", - "create.subtitle.mechanical_press_activation": "La Prensa Mecánica se activa", - "create.subtitle.mechanical_press_item_break": "Clanks de metal", - "create.subtitle.blockzapper_place": "Los bloques se colocan en su sitio", - "create.subtitle.blockzapper_confirm": "Ding afirmativo", - "create.subtitle.blockzapper_deny": "Boop declinante", - "create.subtitle.block_funnel_eat": "CHOMPS del embudo", - "create.subtitle.blaze_munch": "Blaze mastica felizmente", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EJEMPLO DE ITEM (sólo un marcador de que este tooltip existe)", - "item.create.example_item.tooltip.summary": "Una breve descripción del elemento. Los puntajes bajos resaltan un término", - "item.create.example_item.tooltip.condition1": "Cuando este", - "item.create.example_item.tooltip.behaviour1": "Entonces este elemento hace esto. (los comportamientos se muestran en el turno)", - "item.create.example_item.tooltip.condition2": "Y cuando esto", - "item.create.example_item.tooltip.behaviour2": "Puedes añadir tantos comportamientos como quieras", - "item.create.example_item.tooltip.control1": "Cuando se pulsa Ctrl", - "item.create.example_item.tooltip.action1": "Se muestran estos controles", - - "block.create.andesite_encased_shaft.tooltip": "EJE REVESTIDO DE ANDESITA", - "block.create.andesite_encased_shaft.tooltip.summary": "Elemento _sólo para el modo creativo_. Reviste los _ejes_ en el mundo usando _revestimiento de andesita_. Los bloques de revestimiento _no se consumirán_.", - - "block.create.brass_encased_shaft.tooltip": "EJE REVESTIDO DE LATÓN", - "block.create.brass_encased_shaft.tooltip.summary": "Elemento _sólo para el modo creativo_. Reviste los _ejes_ en el mundo usando _revestimiento de latón_. Los bloques de revestimiento _no se consumirán_.", - - "block.create.wooden_bracket.tooltip": "SOPORTE DE MADERA PARA EJES", - "block.create.wooden_bracket.tooltip.summary": "Decora tus _Ejes_, _Ruedas dentadas_ y _Ductos_ con un refuerzo acogedor y de madera.", - - "block.create.metal_bracket.tooltip": "SOPORTE DE METAL PARA EJES", - "block.create.metal_bracket.tooltip.summary": "Decora tus _Ejes_, _Ruedas dentadas_ y _Ductos_ con un poco de refuerzo industrial robusto.", - - "block.create.andesite_casing.tooltip": "REVESTIDOR DE ANDESITA", - "block.create.andesite_casing.tooltip.summary": "Máquina de revestimiento simple con una variedad de usos. Seguro para la decoración. Puede utilizarse para _revestir ejes_ y _cintas._", - - "block.create.andesite_funnel.tooltip": "EMBUDO DE ANDESITA", - "block.create.andesite_funnel.tooltip.summary": "Un componente de transferencia de elementos en general, que hace la transición de éstos entre los medios de transporte. Se puede controlar con una _señal de Redstone_.", - "block.create.andesite_funnel.tooltip.condition1": "Comportamiento general", - "block.create.andesite_funnel.tooltip.behaviour1": "La cara _abierta_ _recogerá los objetos molidos_ en el espacio del bloque que tiene delante y los _insertará_ en cualquier contenedor del lado opuesto del embudo", - "block.create.andesite_funnel.tooltip.condition2": "Cuando se montan en cintas, depósitos y similares", - "block.create.andesite_funnel.tooltip.behaviour2": "_Recoge_ o _Coloca_ los elementos en el componente montado, desde o hacia el inventario _detrás_ de sí mismo. Siempre que el embudo tenga una direccionalidad específica, puede invertirse utilizando una Llave.", - "block.create.andesite_funnel.tooltip.condition3": "Cuando se encuentra verticalmente entre dos inventarios", - "block.create.andesite_funnel.tooltip.behaviour3": "Transferirá los artículos hacia abajo, como una tolva sin búfer.", - - "block.create.andesite_tunnel.tooltip": "TÚNEL DE ANDESITA", - "block.create.andesite_tunnel.tooltip.summary": "¡Una cubierta protectora para sus _cintas_!. El _Túnel de Andesita_ puede separar un elemento de una pila cuando se coloca otra cinta o depósito al lado de la cinta principal.", - "block.create.andesite_tunnel.tooltip.control1": "Click derecho con la Llave Inglesa en el lateral", - "block.create.andesite_tunnel.tooltip.action1": "_Ajusta las persianas de las ventanas_ si el túnel tiene una ventana en esa cara.", - - "block.create.brass_funnel.tooltip": "EMBUDO DE LATÓN", - "block.create.brass_funnel.tooltip.summary": "Un componente de transferencia de elementos en general, que hace la transición de éstos entre los medios de transporte. Se puede controlar con una _señal de Redstone_. Viene con un práctico _filtro_.", - "block.create.brass_funnel.tooltip.condition1": "Comportamiento General", - "block.create.brass_funnel.tooltip.behaviour1": "La cara _abierta_ _recogerá los objetos molidos_ en el espacio del bloque que tiene delante y los _insertará_ en cualquier contenedor del lado opuesto del embudo.", - "block.create.brass_funnel.tooltip.condition2": "Cuando se montan en cintas, depósitos y similares", - "block.create.brass_funnel.tooltip.behaviour2": "_Recoge_ o _Coloca_ los elementos en el componente montado, desde o hacia el inventario _detrás_ de sí mismo. Siempre que el embudo tenga una direccionalidad específica, puede invertirse utilizando una Llave Inglesa.", - "block.create.brass_funnel.tooltip.condition3": "Cuando se encuentra verticalmente entre dos inventarios", - "block.create.brass_funnel.tooltip.behaviour3": "Transfiere los artículos hacia abajo, como una tolva sin búfer.", - - "block.create.brass_tunnel.tooltip": "TÚNEL DE LATÓN", - "block.create.brass_tunnel.tooltip.summary": "Una cubierta protectora elegante para sus _cintas_. Los _Túneles de latón_ también vienen con una serie de opciones de _Filtración_ y _División_ para sus artículos.", - "block.create.brass_tunnel.tooltip.condition1": "Cuando se colocan uno al lado del otro", - "block.create.brass_tunnel.tooltip.behaviour1": "Los túneles de latón se conectan entre sí y permiten redirigir el contenido de una cinta a otra.", - "block.create.brass_tunnel.tooltip.condition2": "Filtrado", - "block.create.brass_tunnel.tooltip.behaviour2": "Los _Túneles de latón_ vienen con filtros tanto para la _Entrada_ como para la _Salida_. Si un _Elemento_ no está permitido desde la salida filtrada de un _Túnel_ será transferido a la salida de un _Túnel_ conectado.", - "block.create.brass_tunnel.tooltip.condition3": "Dividiendo", - "block.create.brass_tunnel.tooltip.behaviour3": "Los _Túneles de latón_ pueden ser configurados para cambiar el método en el que los _Elementos_ son ordenados en los _Túneles_ conectados.", - "block.create.brass_tunnel.tooltip.control1": "Cuando haces click derecho con una Llave Inglesa", - "block.create.brass_tunnel.tooltip.action1": "_Ajusta las persianas de las ventanas_ si el túnel tiene una ventana en esa cara.", - "block.create.brass_tunnel.tooltip.control2": "Usa la rueda del ratón con la Llave Inglesa en la parte superior", - "block.create.brass_tunnel.tooltip.action2": "Cambiar el método de división de los _Túneles_ conectados.", - - "block.create.copper_casing.tooltip": "REVESTIDOR DE COBRE", - "block.create.copper_casing.tooltip.summary": "Robusta máquina de revestimientos con una gran variedad de usos. Seguro para la decoración.", - "block.create.copper_casing.tooltip.condition1": "Cuando se utiliza en una tubería de fluidos", - "block.create.copper_casing.tooltip.behaviour1": "_Reviste_ la _Tubería de fluidos_ con _Revestimiento de cobre_. Las tuberías de fluidos revestidas _bloquean sus conexiones_ en su lugar, dejando de reaccionar a los cambios en las tuberías vecinas.", - - "block.create.encased_fluid_pipe.tooltip": "TUBO DE FLUIDOS REFORZADO", - "block.create.encased_fluid_pipe.tooltip.summary": "Un tubo de fluidos reforzado con más cobre.", - - "block.create.copper_valve_handle.tooltip": "ASA DE VÁLVULA DE COBRE", - "block.create.copper_valve_handle.tooltip.summary": "Una precisa _fuente_ de _fuerza de rotación_ que requiere la interacción de los jugadores. ¡Ten cuidado de no agotarte!", - "block.create.copper_valve_handle.tooltip.condition1": "Cuando se utiliza", - "block.create.copper_valve_handle.tooltip.behaviour1": "Proporciona _Fuerza de rotación_ a un artilugio acoplado. _Shift_ para _invertir_ la rotación.", - - "block.create.seat.tooltip": "ASIENTO", - "block.create.seat.tooltip.summary": "¡Siéntate y disfruta del viaje! Anclará a un jugador en un _contrafuerte_ en movimiento. También es ideal para los muebles estáticos. Viene en una variedad de colores.", - "block.create.seat.tooltip.condition1": "Click derecho en el asiento", - "block.create.seat.tooltip.behaviour1": "Sienta al jugador en el _Asiento_. Pulsa shift izquierdo para dejar el _Asiento_.", - - "block.create.chute.tooltip": "DUCTO", - "block.create.chute.tooltip.summary": "_Recoge_ y _Transporta_ elementos en vertical o en diagonal. Puede tanto coger como colocar objetos en _contenedores de objetos_. También puede interactuar con los ductos desde el lateral utilizando _tolvas_ o _embudos montados_.", - "block.create.chute.tooltip.condition1": "Cuando se alimenta con un ventilador", - "block.create.chute.tooltip.behaviour1": "Los ductos accionados por ventilador pueden transportar _elementos_ hacia arriba, y aspirar _elementos_ de los _depósitos_ y de las _cintas_.", - - "block.create.depot.tooltip": "DEPÓSITO", - "block.create.depot.tooltip.summary": "Un lugar práctico para colocar sus _elementos_. Proporciona un punto de interacción para varias máquinas", - "block.create.depot.tooltip.condition1": "Click derecho en el depósito", - "block.create.depot.tooltip.behaviour1": "Coloca o toma un _Elemento_ del _Depósito_. Los _Bloques_ y los _Artilugios_ que interactúan con una _cinta_ también funcionan en un _Depósito_.", - - "item.create.blaze_cake.tooltip": "PASTEL DE BLAZE", - "item.create.blaze_cake.tooltip.summary": "Un delicioso regalo para sus esforzados _Quemadores de blaze_. Los pone en marcha!.", - - "item.create.empty_blaze_burner.tooltip": "QUEMADOR DE BLAZE VACÍO", - "item.create.empty_blaze_burner.tooltip.summary": "Un pequeño hogar de hierro para tus amigos fogosos. Estoy seguro de que podrías darles un buen uso.", - "item.create.empty_blaze_burner.tooltip.condition1": "Cuando se utiliza en un Blaze o en un generador de Blaze", - "item.create.empty_blaze_burner.tooltip.behaviour1": "_Captura_ un Blaze en el elemento", - - "block.create.fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS DE COBRE", - "block.create.fluid_pipe.tooltip.summary": "Se utiliza para mover _fluidos_. Necesita una _bomba mecánica_ para que el _fluido_ se mueva.", - "block.create.fluid_pipe.tooltip.condition1": "Transferencia de fluidos", - "block.create.fluid_pipe.tooltip.behaviour1": "Puede conectarse a _contenedores de fluidos_ como _depósitos_ o _cuencas_. Los extremos expuestos de los _tubos_ también pueden drenar o colocar bloques de fluido. ¡Cuidado con las fugas!", - "block.create.fluid_pipe.tooltip.control1": "Cuando haces clic derecho con una Llave Inglesa", - "block.create.fluid_pipe.tooltip.action1": "Coloca una ventana en la tubería si está disponible", - - "block.create.hose_pulley.tooltip": "POLEA DE MANGUERA", - "block.create.hose_pulley.tooltip.summary": "Se utiliza para _colocar_ o _drenar_ grandes _cuerpos fluidos_ en el mundo", - "block.create.hose_pulley.tooltip.condition1": "Cuando se alimenta por cinética", - "block.create.hose_pulley.tooltip.behaviour1": "_Sube_ o _baja_ la manguera, la ubicación de la manguera determina hasta qué _altura de extracción_ o _llenado_ actuará.", - "block.create.hose_pulley.tooltip.condition2": "Cuando los fluidos se extraen de la polea", - "block.create.hose_pulley.tooltip.behaviour2": "Comienza a _tomar bloques de fluidos_ del cuerpo al que se bajó el extremo de la manguera. Los cuerpos muy _grandes_ de fluidos se _considerarán infinitos_.", - "block.create.hose_pulley.tooltip.condition3": "Cuando los fluidos son empujados a la polea", - "block.create.hose_pulley.tooltip.behaviour3": "Comienza a _llenar de fluido_ el mundo hasta la _altura_ de los extremos de la _manguera_", - - "block.create.fluid_tank.tooltip": "TANQUE DE FLUIDOS", - "block.create.fluid_tank.tooltip.summary": "Almacena todos tus _líquidos_ favoritos. Escala en anchura y altura.", - "block.create.fluid_tank.tooltip.condition1": "Cuando se hace click derecho con la Llave Inglesa", - "block.create.fluid_tank.tooltip.behaviour1": "Cambia la ventana opcional", - - "block.create.creative_fluid_tank.tooltip": "TANQUE DE FLUIDOS CREATIVO", - "block.create.creative_fluid_tank.tooltip.summary": "Este _Tanque de Fluidos_ permite la replicación infinita de cualquier Fluido. Escala en anchura y altura.", - "block.create.creative_fluid_tank.tooltip.condition1": "Cuando hay fluido en el tanque", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Todo lo que se _extraiga_ de este tanque proporcionará un _suministro ilimitado_ del fluido especificado. Los fluidos _insertados_ en este tanque serán _evitados._", - "block.create.creative_fluid_tank.tooltip.condition2": "Cuando se hace clic derecho con una Llave Inglesa", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Cambia la ventana opcional", - - "block.create.fluid_valve.tooltip": "VALVULA DE FLUIDOS", - "block.create.fluid_valve.tooltip.summary": "Detiene el flujo de un fluido por una tubería", - "block.create.fluid_valve.tooltip.condition1": "Flujo controlable", - "block.create.fluid_valve.tooltip.behaviour1": "La _fuerza de rotación_ aplicada obligará a la _válvula_ a cerrarse, cesando el flujo de _fluidos_. Invierta la dirección de la _fuerza de rotación_ para volver a abrir la válvula", - - "block.create.mechanical_pump.tooltip": "BOMBA MECÁNICA", - "block.create.mechanical_pump.tooltip.summary": "Toma la _fuerza de rotación_ y la utiliza para mover el _fluido_ a lo largo de un _tubo_. Tiene un rango máximo de efecto en ambas direcciones. (16 bloques por defecto)", - "block.create.mechanical_pump.tooltip.condition1": "Flujo de fluido", - "block.create.mechanical_pump.tooltip.behaviour1": "La _fuerza de rotación_ aplicada crea una presión que obliga al _fluido_ a pasar por la red de _tuberías_. Invierte la dirección de la _fuerza de rotación_ para cambiar la dirección en la que fluye el _fluido_", - "block.create.mechanical_pump.tooltip.control1": "Pulsando con el botón derecho del ratón con la Llave Inglesa", - "block.create.mechanical_pump.tooltip.action1": "Invierte la dirección de la _bomba_, cambiando la dirección por defecto del flujo", - - "block.create.smart_fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS INTELIGENTE", - "block.create.smart_fluid_pipe.tooltip.summary": "Una _tubería de fluidos_ con un filtro. Puede especificar qué _fluidos_ pasan por ella", - "block.create.smart_fluid_pipe.tooltip.condition1": "Cuando se introducen fluidos en ella", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Las tuberías inteligentes que reciban fluidos que no coincidan con su filtro bloquearán el flujo", - "block.create.smart_fluid_pipe.tooltip.condition2": "Cuando es adyacente a un contenedor de fluido", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Las tuberías inteligentes que _inicien_ un _flujo_ desde cualquier contenedor sólo extraerán fluidos que _coincidan_ con su _filtro._", - - "block.create.spout.tooltip": "SURTIDOR", - "block.create.spout.tooltip.summary": "Un inyector para rellenar tus elementos de _fluidos._", - "block.create.spout.tooltip.condition1": "Transferencia de fluidos", - "block.create.spout.tooltip.behaviour1": "Cuando se coloca un _contenedor de fluidos_ como un _cubo_ o una _botella_ debajo, el caño intentará rellenarlo con su propio _fluido_ almacenado", - "block.create.spout.tooltip.condition2": "Automatización de fluidos", - "block.create.spout.tooltip.behaviour2": "El caño colocado encima de una _cinta_ o _depósito_ reaccionará automáticamente con un contenedor de fluidos_ que pase por debajo", - - "block.create.item_drain.tooltip": "DRENADOR DE ELEMENTOS", - "block.create.item_drain.tooltip.summary": "Un depósito rallado para vaciar tus _artículos fluidos._", - "block.create.item_drain.tooltip.condition1": "Transferencia de fluidos", - "block.create.item_drain.tooltip.behaviour1": "Cuando un _contenedor de fluidos_, como un _cubo_ o una _botella_, se inserta desde el lateral, el desagüe intentará vaciarlo en su propio _contenedor de fluidos_. El artículo será entonces expulsado por el lado opuesto", - - "block.create.mechanical_arm.tooltip": "BRAZO MECÁNICO", - "block.create.mechanical_arm.tooltip.summary": "Artilugio avanzado para reubicar _elementos_", - "block.create.mechanical_arm.tooltip.condition1": "Transferencia de elementos", - "block.create.mechanical_arm.tooltip.behaviour1": "Puede tomar o colocar objetos en cualquier _inventario_ accesible_, como _Cintas_, _Depósitos_, _Embudos_ y _Autoensambladores_", - "block.create.mechanical_arm.tooltip.control1": "Mientras está en la mano", - "block.create.mechanical_arm.tooltip.action1": "Haz clic con el botón derecho en un _objeto accesible del inventario_ para establecerlo como _fuente_ para el _brazo mecánico_. Haz clic con el botón derecho del ratón dos veces para establecerlo como _destino_", - "block.create.mechanical_arm.tooltip.control2": "Usa la rueda del ratón con la Llave Inglesa", - "block.create.mechanical_arm.tooltip.action2": "Establece el comportamiento de orden de los _items_ emitidos por el _brazo mecánico_", - - "item.create.wand_of_symmetry.tooltip": "VARITA DE SIMETRÍA", - "item.create.wand_of_symmetry.tooltip.summary": "Refleja perfectamente la colocación de bloques en los planos configurados", - "item.create.wand_of_symmetry.tooltip.condition1": "Mientras está en el inventario rápido", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Permanece activo", - "item.create.wand_of_symmetry.tooltip.control1": "Click derecho en el suelo", - "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _Mueve_ el Espejo", - "item.create.wand_of_symmetry.tooltip.control2": "Click derecho en el aire", - "item.create.wand_of_symmetry.tooltip.action2": "_Quita_ el Espejo activo", - "item.create.wand_of_symmetry.tooltip.control3": "Click derecho mientras se agacha", - "item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz de Configuración_", - - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Novedoso artefacto para colocar o intercambiar bloques a distancia", - "item.create.handheld_blockzapper.tooltip.control1": "Click izquierdo en un bloque", - "item.create.handheld_blockzapper.tooltip.action1": "Establece los bloques colocados por la herramienta en el bloque objetivo", - "item.create.handheld_blockzapper.tooltip.control2": "Click derecho en un bloque", - "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ o _Reemplaza_ el bloque objetivo", - "item.create.handheld_blockzapper.tooltip.control3": "Click derecho mientras se agacha", - "item.create.handheld_blockzapper.tooltip.action3": "Abre la _Interfaz de Configuración_", - - "item.create.handheld_worldshaper.tooltip": "WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "Práctica herramienta para crear _paisajes_ y _características del terreno_", - "item.create.handheld_worldshaper.tooltip.control1": "Click izquierdo en un bloque", - "item.create.handheld_worldshaper.tooltip.action1": "Establece los bloques colocados por la herramienta en el bloque objetivo", - "item.create.handheld_worldshaper.tooltip.control2": "Click derecho en un bloque", - "item.create.handheld_worldshaper.tooltip.action2": "Aplica el _pincel_ y la _herramienta_ actualmente seleccionadas en el lugar deseado.", - "item.create.handheld_worldshaper.tooltip.control3": "Click derecho mientras se agacha", - "item.create.handheld_worldshaper.tooltip.action3": "Abre la _Interfaz de Configuración_", - - "item.create.tree_fertilizer.tooltip": "FERTILIZANTE PARA ÁRBOLES", - "item.create.tree_fertilizer.tooltip.summary": "Una potente combinación de minerales adecuada para acelerar el crecimiento de los tipos de árboles más comunes", - "item.create.tree_fertilizer.tooltip.condition1": "Cuando se utiliza en un árbol joven", - "item.create.tree_fertilizer.tooltip.behaviour1": "Hace crecer los árboles _independientemente_ de sus condiciones de _espacio_", - - "item.create.deforester.tooltip": "DEFORESTADOR", - "item.create.deforester.tooltip.summary": "Un hacha _radiante_ capaz de talar árboles en una fracción de segundo", - - "item.create.extendo_grip.tooltip": "AGARRE EXTENDIDO", - "item.create.extendo_grip.tooltip.summary": "¡Boioioing! Aumenta enormemente la _distancia de alcance_ del portador", - "item.create.extendo_grip.tooltip.condition1": "Cuando está fuera de la mano", - "item.create.extendo_grip.tooltip.behaviour1": "Aumenta la _distancia de alcance_ de los objetos usados en la _mano principal_", - - "item.create.filter.tooltip": "FILTRO", - "item.create.filter.tooltip.summary": "Controla las salidas_ y _entradas_ de los dispositivos logísticos con más _precisión_, comparándolas con un _conjunto de elementos_ o varios _filtros anidados_", - "item.create.filter.tooltip.condition1": "Cuando está en la ranura del filtro", - "item.create.filter.tooltip.behaviour1": "Controla_ el flujo del elemento según su _configuración_", - "item.create.filter.tooltip.condition2": "Cuando se hace clic derecho", - "item.create.filter.tooltip.behaviour2": "Abre la interfaz de _configuración_", - - "item.create.attribute_filter.tooltip": "FILTRO DE ATRIBUTOS", - "item.create.attribute_filter.tooltip.summary": "Controla las salidas_ y las _entradas_ de los dispositivos logísticos con más _precisión_, comparándolas con un _conjunto de _atributos_ y _categorías_ de artículos", - "item.create.attribute_filter.tooltip.condition1": "Cuando está en la ranura del filtro", - "item.create.attribute_filter.tooltip.behaviour1": "Controla el flujo del elemento según su _configuración_", - "item.create.attribute_filter.tooltip.condition2": "Cuando se hace clic derecho", - "item.create.attribute_filter.tooltip.behaviour2": "Abre la interfaz de _configuración_", - - "item.create.empty_schematic.tooltip": "ESQUEMA VACÍO", - "item.create.empty_schematic.tooltip.summary": "Se utiliza como ingrediente de las recetas y para escribir en la _tabla de esquemas_", - - "item.create.schematic.tooltip": "ESQUEMA", - "item.create.schematic.tooltip.summary": "Contiene una estructura para ser posicionada y colocada en el mundo. Posiciona el holograma como se desee y utiliza un _Esquematicannon_ para construirlo", - "item.create.schematic.tooltip.condition1": "Cuando se mantiene", - "item.create.schematic.tooltip.behaviour1": "Se puede posicionar utilizando las herramientas en pantalla", - "item.create.schematic.tooltip.control1": "Click derecho mientras se agacha", - "item.create.schematic.tooltip.action1": "Abre una _Interfaz_ para introducir las _Coordenadas_ exactas", - - "item.create.schematic_and_quill.tooltip": "ESQUEMA Y PLUMA", - "item.create.schematic_and_quill.tooltip.summary": "Se utiliza para guardar una estructura de tu mundo en un archivo .nbt", - "item.create.schematic_and_quill.tooltip.condition1": "Paso 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Selecciona dos puntos de esquina usando click derecho", - "item.create.schematic_and_quill.tooltip.condition2": "Paso 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Rueda del ratón_ en las caras para ajustar el tamaño. Click derecho de nuevo para guardar", - "item.create.schematic_and_quill.tooltip.control1": "Click derecho", - "item.create.schematic_and_quill.tooltip.action1": "Seleccionar un punto de esquina / confirmar guardar", - "item.create.schematic_and_quill.tooltip.control2": "Al mantener Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Seleccionar puntos en _medio del aire_. Rueda del ratón para ajustar la distancia", - "item.create.schematic_and_quill.tooltip.control3": "Click derecho mientras se agacha", - "item.create.schematic_and_quill.tooltip.action3": "Reinicia_ y elimina la selección", - - "block.create.schematicannon.tooltip": "ESQUEMATICAÑÓN", - "block.create.schematicannon.tooltip.summary": "Dispara bloques para recrear un _Esquema_ desplegado en el Mundo. Utiliza elementos de los inventarios adyacentes y _Pólvora_ como combustible.", - "block.create.schematicannon.tooltip.control1": "Cuando se hace clic derecho", - "block.create.schematicannon.tooltip.action1": "Abre la _Interfaz_ de configuración", - - "block.create.schematic_table.tooltip": "TABLA DE ESQUEMAS", - "block.create.schematic_table.tooltip.summary": "Escribe los esquemas guardados en un _esquema vacío_", - "block.create.schematic_table.tooltip.condition1": "Cuando se da un esquema vacío", - "block.create.schematic_table.tooltip.behaviour1": "Carga un archivo elegido de la carpeta de esquemas", - - "block.create.shaft.tooltip": "EJE", - "block.create.shaft.tooltip.summary": "_Retransmite la rotación_ en línea recta", - - "block.create.cogwheel.tooltip": "RUEDA DENTADA", - "block.create.cogwheel.tooltip.summary": "_Retransmite la rotación_ en línea recta, y a las _ruedas dentadas_ adyacentes", - - "block.create.large_cogwheel.tooltip": "RUEDA DENTADA GRANDE", - "block.create.large_cogwheel.tooltip.summary": "Una versión más grande de la _Rueda dentada_, que permite _cambiar_ la _Velocidad de Rotación_ cuando se conecta a su contraparte más pequeña", - - "block.create.encased_shaft.tooltip": "EJE REVESTIDO", - "block.create.encased_shaft.tooltip.summary": "_Retransmite la rotación_ en línea recta. Adecuado para propagar la Rotación a través de Muros", - - "block.create.gearbox.tooltip": "CAJA DE TRANSMISIÓN", - "block.create.gearbox.tooltip.summary": "_Retransmite la rotación_ en _cuatro direcciones_. Invierte las conexiones rectas", - - "block.create.gearshift.tooltip": "CAJA DE CAMBIOS", - "block.create.gearshift.tooltip.summary": "Un control para alternar la dirección de rotación de los ejes conectados", - "block.create.gearshift.tooltip.condition1": "Cuando se alimenta", - "block.create.gearshift.tooltip.behaviour1": "_Invierte_ la rotación de salida", - - "block.create.clutch.tooltip": "Embrague", - "block.create.clutch.tooltip.summary": "Un control para conectar/desconectar la rotación de los ejes conectados", - "block.create.clutch.tooltip.condition1": "Cuando se acciona", - "block.create.clutch.tooltip.behaviour1": "_Detiene_ el transporte de la rotación al otro lado", - - "block.create.encased_chain_drive.tooltip": "CADENA DE TRANSMISIÓN REVESTIDA", - "block.create.encased_chain_drive.tooltip.summary": "_Retransmite la rotación_ en línea recta y a las cadenas de transmisión adyacentes. Las cadenas de transmisión se conectan en un grupo cuando se colocan junto a otra en cualquier cara sin eje. Su orientación no tiene que coincidir", - "block.create.encased_chain_drive.tooltip.condition1": "Cuando se conecta", - "block.create.encased_chain_drive.tooltip.behaviour1": "Los bloques conectados transmitirán la _velocidad de rotación_ y la dirección de este componente", - - "block.create.adjustable_chain_gearshift.tooltip": "CADENA DE TRANSMISIÓN AJUSTABLE", - "block.create.adjustable_chain_gearshift.tooltip.summary": "_Retransmite el giro_ en línea recta y a las _cadenas adyacentes_. El Redstone analógo proporcionada a este bloque controlará qué tamaño de rueda motriz se acopla a las cadenas de transmisión adyacentes", - "block.create.adjustable_chain_gearshift.tooltip.condition1": "Control de Redstone", - "block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Sin señal_, los accionamientos de cadena adyacentes transmitirán la _misma velocidad._ Con una señal de _fuerza completa_, los accionamientos de cadena adyacentes transmitirán exactamente _el doble de su velocidad._ Cualquier cosa entre medias dará resultados entre 1-2x su velocidad", - - "item.create.belt_connector.tooltip": "CORREA", - "item.create.belt_connector.tooltip.summary": "Conecta dos o más _ejes_ con una _Correa_. Los ejes conectados tendrán exactamente la misma velocidad y dirección de rotación. La correa puede actuar como _Transportador_ para _Estados_ y _Entidades_", - "item.create.belt_connector.tooltip.control1": "Click derecho en el eje", - "item.create.belt_connector.tooltip.action1": "Selecciona el eje como una polea de la correa. Los dos ejes seleccionados tienen que estar _alineados_ ya sea _Verticalmente_, _Horizontalmente_ o _Diagonalmente_ hacia la dirección de la correa", - "item.create.belt_connector.tooltip.control2": "Click derecho mientras te agachas", - "item.create.belt_connector.tooltip.action2": "_Reinicia_ la primera posición seleccionada para la correa", - - "item.create.goggles.tooltip": "GAFAS DEL INGENIERO", - "item.create.goggles.tooltip.summary": "Un par de gafas para aumentar tu visión con útil información _cinética_", - "item.create.goggles.tooltip.condition1": "Cuando se llevan puestas", - "item.create.goggles.tooltip.behaviour1": "Muestra _indicadores de color_ correspondientes al _Nivel de velocidad_ de un componente cinético colocado, así como el _Impacto de estrés_ y la _Capacidad_ de los componentes individuales.", - "item.create.goggles.tooltip.condition2": "Al mirar el medidor", - "item.create.goggles.tooltip.behaviour2": "Muestra información detallada sobre _Velocidad_ o _Estrés_ de la red a la que está conectado el medidor", - - "item.create.wrench.tooltip": "LLAVE INGLESA", - "item.create.wrench.tooltip.summary": "Una herramienta útil para trabajar en artilugios cinéticos. Se puede utilizar para _Rotar_, _Desmantelar_ y para _Configurar_ componentes", - "item.create.wrench.tooltip.control1": "Click con el botón derecho en un bloque cinético", - "item.create.wrench.tooltip.action1": "_Rota los componentes_ hacia o desde la cara con la que ha interactuado", - "item.create.wrench.tooltip.control2": "Click derecho mientras te agachas", - "item.create.wrench.tooltip.action2": "Desmonta los componentes cinéticos_ y los devuelve a _tu inventario_", - - "block.create.creative_motor.tooltip": "MOTOR CREATIVO", - "block.create.creative_motor.tooltip.summary": "Una fuente configurable de _Fuerza Rotativa_", - - "block.create.water_wheel.tooltip": "RUEDA HIDRÁULICA MECÁNICA", - "block.create.water_wheel.tooltip.summary": "Proporciona _Fuerza de rotación_ tomada de las _Corrientes de agua_ adyacentes", - - "block.create.encased_fan.tooltip": "VENTILADOR REVESTIDO", - "block.create.encased_fan.tooltip.summary": "Convierte la _fuerza de rotación_ en _corrientes de aire_ y viceversa. Tiene una gran variedad de usos", - "block.create.encased_fan.tooltip.condition1": "Cuando es alimentado por Redstone", - "block.create.encased_fan.tooltip.behaviour1": "Proporciona _fuerza de rotación_ a partir de cualquier _fuente de calor_ inmediatamente inferior. El ventilador debe estar orientado hacia abajo", - "block.create.encased_fan.tooltip.condition2": "Cuando es impulsado por la cinética", - "block.create.encased_fan.tooltip.behaviour2": "_Empuja_ o _Tira_ de Entidades, dependiendo de la velocidad de Rotación entrante", - "block.create.encased_fan.tooltip.condition3": "Al soplar a través de bloques especiales", - "block.create.encased_fan.tooltip.behaviour3": "Se emiten partículas de _Líquidos_ y _Fuego_ en el flujo de aire. Esto puede utilizarse para _procesar objetos_", - - "block.create.nozzle.tooltip": "BOQUILLA", - "block.create.nozzle.tooltip.summary": "Se acopla a la parte delantera de un _ventilador revestido_ para distribuir su efecto sobre las entidades en _todas las direcciones_", - - "block.create.hand_crank.tooltip": "MANIVELA", - "block.create.hand_crank.tooltip.summary": "Una sencilla _fuente_ de _fuerza de rotación_ que requiere la interacción de los jugadores. Ten cuidado de no agotarte!", - "block.create.hand_crank.tooltip.condition1": "Cuando se usa", - "block.create.hand_crank.tooltip.behaviour1": "Proporciona _fuerza de rotación_ a un artilugio acoplado. _Se puede revertir_ la rotación", - - "block.create.cuckoo_clock.tooltip": "RELOJ DE CUCO", - "block.create.cuckoo_clock.tooltip.summary": "Fina artesanía para _decorar_ un espacio y _contar el tiempo_", - "block.create.cuckoo_clock.tooltip.condition1": "Cuando es alimentado por cinética", - "block.create.cuckoo_clock.tooltip.behaviour1": "Muestra la _hora actual_ y toca una melodía dos veces al día. Se activa_ una vez al _mediodía_ y al anochecer, en cuanto _los jugadores pueden dormir_", - - "block.create.turntable.tooltip": "PLATAFORMA GIRATORIA", - "block.create.turntable.tooltip.summary": "Convierte la _fuerza de rotación_ en un refinado mareo", - - "block.create.millstone.tooltip": "PIEDRA DEL MOLINO", - "block.create.millstone.tooltip.summary": "Un componente cinético adecuado para _moler_ materiales insertados. Puede ser alimentado por una rueda dentada adyacente o conectándose al eje de la parte inferior. Los resultados tienen que ser extraídos del componente", - "block.create.millstone.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.millstone.tooltip.behaviour1": "Comienza a aplicar _recetas de fresado_ a cualquier elemento insertado desde el lateral o la parte superior del bloque", - "block.create.millstone.tooltip.condition2": "Cuando se hace clic derecho", - "block.create.millstone.tooltip.behaviour2": "Recoge las salidas manualmente", - - "block.create.crushing_wheel.tooltip": "RUEDA DE TRITURACIÓN", - "block.create.crushing_wheel.tooltip.summary": "Grandes ruedas giratorias que _rompen_ cualquier cosa", - "block.create.crushing_wheel.tooltip.condition1": "Cuando se une a otra rueda trituradora", - "block.create.crushing_wheel.tooltip.behaviour1": "Forma una máquina trituradora para procesar una variedad de cosas. Los dientes de las ruedas tienen que conectarse y moverse con la _misma velocidad_ en _direcciones opuestas_", - - "block.create.mechanical_press.tooltip": "PRENSA MECÁNICA", - "block.create.mechanical_press.tooltip.summary": "Un pistón de fuerza para comprimir los objetos que tiene debajo. Requiere una _fuerza de rotación_ constante", - "block.create.mechanical_press.tooltip.condition1": "Cuando es impulsado por Redstone", - "block.create.mechanical_press.tooltip.behaviour1": "Comienza a _comprimir_ los objetos que caen debajo", - "block.create.mechanical_press.tooltip.condition2": "Cuando está por encima de una cinta", - "block.create.mechanical_press.tooltip.behaviour2": "Comprime _automáticamente_ los elementos de derivación en la cinta", - "block.create.mechanical_press.tooltip.condition3": "Cuando está por encima de la Cuenca", - "block.create.mechanical_press.tooltip.behaviour3": "Comienza a _compactar artículos_ en la cuenca siempre que estén presentes todos los ingredientes necesarios", - - "block.create.basin.tooltip": "CUENCA", - "block.create.basin.tooltip.summary": "Un práctico _contenedor de elementos_ utilizado en el procesamiento con la _Mezcladora mecánica_ y la _Prensa mecánica_. Soporta _Comparadores de Redstone_. Viene con un práctico filtro que especifica qué elementos deben crearse en esta cuenca", - "block.create.basin.tooltip.condition1": "Salida automática", - "block.create.basin.tooltip.behaviour1": "Cuando los _inventarios abiertos_ como cintas, otras cuencas, depósitos, desagües de fluidos y otros están _bajo un lado_ de una cuenca, recibirán automáticamente cualquier _salida de artículos/fluidos_ creada en la cuenca. Esto es útil para la automatización", - - "block.create.blaze_burner.tooltip": "QUEMADOR DE BLAZE", - "block.create.blaze_burner.tooltip.summary": "Un bloque donde se aloja un blaze domado para calentar una cuenca", - "block.create.blaze_burner.tooltip.condition1": "Cuando se coloca debajo de una cuenca", - "block.create.blaze_burner.tooltip.behaviour1": "Proporciona _calor_ a las recetas de la cuenca", - "block.create.blaze_burner.tooltip.condition2": "Cuando se utiliza el combustible en el Quemador de Blaze", - "block.create.blaze_burner.tooltip.behaviour2": "Aumenta el tiempo de combustión restante en el tiempo de combustión del horno del elemento utilizado. Consume el objeto. Utiliza _Torta de Blaze_ para altas temperaturas", - - "block.create.reinforced_rail.tooltip": "RAÍL REFORZADO", - "block.create.reinforced_rail.tooltip.summary": "Raíl estabilizado con madera, _no necesita soportes_", - - "block.create.mechanical_mixer.tooltip": "MEZCLADOR MECÁNICO", - "block.create.mechanical_mixer.tooltip.summary": "Un batidor cinético que proporciona recetas de elaboración automatizada de múltiples ingredientes. Requiere una _fuerza de rotación_ constante y una _cuenca_ colocada debajo (con un espacio intermedio)", - "block.create.mechanical_mixer.tooltip.condition1": "Cuando está por encima de la Cuenca", - "block.create.mechanical_mixer.tooltip.behaviour1": "Comienza a mezclar los elementos en la cuenca siempre que estén presentes todos los ingredientes necesarios. Para evitar recetas no deseadas, utilice la ranura del filtro de la cuenca o reduzca la fuerza de rotación hasta que se hayan añadido todos los ingredientes deseados", - - "block.create.mechanical_crafter.tooltip": "AUTOENSAMBLADOR MECÁNICO", - "block.create.mechanical_crafter.tooltip.summary": "Un ensamblador cinético para _automatizar_ cualquier receta de _crafteo_ con forma. Coloca _múltiples en una cuadrícula_ correspondiente a tu receta, y _organiza sus cintas_ para crear un _flujo_ que salga de la cuadrícula en uno de los Autoensambladores", - "block.create.mechanical_crafter.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.mechanical_crafter.tooltip.behaviour1": "_Empieza el proceso de creación_ en cuanto _todos los crafters_ de la parrilla hayan recibido un objeto_", - "block.create.mechanical_crafter.tooltip.condition2": "Con pulso de Redstone", - "block.create.mechanical_crafter.tooltip.behaviour2": "_Fuerza_ el inicio del proceso de _creación_ con todos los _artículos_ dados actualmente en la parrilla", - "block.create.mechanical_crafter.tooltip.control1": "Cuando se arranca por delante", - "block.create.mechanical_crafter.tooltip.action1": "_Circula la dirección_ hacia la que un autoensamblador individual _mueve sus objetos_. Para formar una cuadrícula de trabajo, _organiza las cintas en un flujo_ que mueva todos los objetos hacia un autoensamblador final. El autoensamblador final debe _apuntar hacia fuera_ de la rejilla", - "block.create.mechanical_crafter.tooltip.control2": "Cuando se arranca hacia atrás", - "block.create.mechanical_crafter.tooltip.action2": "Conecta_ el _inventario de entrada_ de los autoensambladores adyacentes. Usa esto para _combinar ranuras_ en la cuadrícula de trabajo y _guardar el la entrada de trabajo_", - - "block.create.furnace_engine.tooltip": "MOTOR DEL HORNO", - "block.create.furnace_engine.tooltip.summary": "Una poderosa fuente de _fuerza de rotación/torque_ que requiere un _horno en funcionamiento_ para funcionar", - "block.create.furnace_engine.tooltip.condition1": "Cuando se conecta a un horno encendido", - "block.create.furnace_engine.tooltip.behaviour1": "_Empieza a alimentar_ un _Horno_ colocado delante de él (a 1m de distancia). Utiliza un Alto Horno para obtener mayores velocidades", - - "block.create.flywheel.tooltip": "RUEDA DE INERCIA", - "block.create.flywheel.tooltip.summary": "Una gran rueda metálica para _conducir y estabilizar_ la fuerza generada por un _motor conectado_. Las ruedas de inercia se conectan a los motores si están a _1m de distancia_ y en un _ángulo de 90º_ entre ellos", - "block.create.flywheel.tooltip.condition1": "Cuando está unida a un motor en marcha", - "block.create.flywheel.tooltip.behaviour1": "Proporciona _fuerza de rotación_ a un artilugio conectado en función de la fuerza y la velocidad del generador", - - "block.create.portable_storage_interface.tooltip": "INTERFAZ DE ALMACENAMIENTO PORTÁTIL", - "block.create.portable_storage_interface.tooltip.summary": "Un punto de intercambio portátil para _mover elementos_ hacia y desde una _estructura_ movida por un pistón, rodamiento, vagoneta o polea. Para cumplirse dos interfaces tienen que _enfrentarse_ y estar separadas _1-2 bloques_", - "block.create.portable_storage_interface.tooltip.condition1": "Mientras se mueve", - "block.create.portable_storage_interface.tooltip.behaviour1": "Interactúa con las _interfaces de almacenamiento portátil_ estacionarias para transferir elementos hacia o desde el artilugio. Los componentes que se inserten o extraigan de la _interfaz estacionaria_ interactuarán con los inventarios del artilugio _directamente._ La estructura se detendrá brevemente mientras se intercambian los elementos.", - "block.create.portable_storage_interface.tooltip.condition2": "Cuando es alimentado por Redstone", - "block.create.portable_storage_interface.tooltip.behaviour2": "Desactiva_ cualquier conexión activa inmediatamente", - - "block.create.portable_fluid_interface.tooltip": "INTERFAZ DE FLUIDO PORTÁTIL", - "block.create.portable_fluid_interface.tooltip.summary": "Punto de intercambio portátil para _mover fluidos_ hacia y desde una _estructura_ movida por un pistón, rodamiento, vagoneta o polea. Para cumplirse dos interfaces tienen que _enfrentarse_ y estar separadas _1-2 bloques_", - "block.create.portable_fluid_interface.tooltip.condition1": "Mientras se mueve", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Interactúa con las _interfaces de almacenamiento portátiles_ estacionarias para transferir fluidos hacia o desde el artilugio. Las tuberías que se inserten en la _interfaz estacionaria_ o se extraigan de ella interactuarán con los depósitos del artilugio _directamente._ La estructura se paralizará brevemente mientras se intercambian fluidos.", - "block.create.portable_fluid_interface.tooltip.condition2": "Cuando se alimenta con Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "_Desconecta_ cualquier conexión activa inmediatamente", - - "block.create.rotation_speed_controller.tooltip": "CONTROLADOR DE VELOCIDAD DE ROTACIÓN", - "block.create.rotation_speed_controller.tooltip.summary": "Un _relé_ configurable_ capaz de acelerar o ralentizar el componente de destino a cualquier velocidad deseada", - "block.create.rotation_speed_controller.tooltip.condition1": "Cuando se adjunta a una rueda dentada grande", - "block.create.rotation_speed_controller.tooltip.behaviour1": "Transmite la fuerza de rotación entrante a la rueda, intentando _igualar_ la _velocidad_ a la que está configurada. La _rueda mecánica_ tiene que estar _adherida en la parte superior_ del controlador", - - "block.create.mechanical_piston.tooltip": "PISTÓN MECÁNICO", - "block.create.mechanical_piston.tooltip.summary": "Una versión más avanzada del _Pistón_. Utiliza la _Fuerza de rotación_ para mover con precisión las estructuras que tiene delante. las pértigas de extensión del pistón_ en la parte trasera definen el _alcance_ de este dispositivo. Sin las extensiones, el pistón no se moverá. Utiliza _Chasis_ o _Bloques de Slime_ para mover más de una línea de bloques", - "block.create.mechanical_piston.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.mechanical_piston.tooltip.behaviour1": "Comienza a mover la estructura adjunta. La velocidad y la dirección se correlacionan con la velocidad de rotación entrante", - - "block.create.piston_extension_pole.tooltip": "PÉRTIGA DE EXTENSIÓN", - "block.create.piston_extension_pole.tooltip.summary": "Amplía la gama de _Pistones mecánicos_", - "block.create.piston_extension_pole.tooltip.condition1": "Cuando se acopla a un pistón mecánico", - "block.create.piston_extension_pole.tooltip.behaviour1": "Extiende el alcance de un pistón en 1 bloque", - - "block.create.mechanical_bearing.tooltip": "RODAMIENTO MECÁNICO", - "block.create.mechanical_bearing.tooltip.summary": "Se utiliza para girar _estructuras más grandes_ con fuerza de rotación", - "block.create.mechanical_bearing.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.mechanical_bearing.tooltip.behaviour1": "Inicia la rotación de los bloques adjuntos. Utiliza _Chasis_, _Slime_ o _Súper Pegamento_ para mover más de un bloque", - - "block.create.windmill_bearing.tooltip": "RODAMIENTO DEL MOLINO DE VIENTO", - "block.create.windmill_bearing.tooltip.summary": "Se utiliza para aprovechar la _fuerza de rotación_ del viento. Coloca tu propio diseño y mira cómo gira!", - "block.create.windmill_bearing.tooltip.condition1": "Al hacer clic con el botón derecho", - "block.create.windmill_bearing.tooltip.behaviour1": "Comienza a proporcionar _Fuerza de rotación_ generada por la rotación de su estructura adjunta. La estructura tiene que incluir bloques de vela o lana adecuados. Utiliza _Chasis_, _Slime_ o _Súper Pegamento_ para mover más de un bloque.", - - "block.create.sail_frame.tooltip": "MARCO DE VELA", - "block.create.sail_frame.tooltip.summary": "Un útil bloque de construcción y fuente de energía cinética cuando forma parte de una estructura montada sobre un _Rodamiento de molino_", - - "block.create.white_sail.tooltip": "VELA BLANCA", - "block.create.white_sail.tooltip.summary": "Un útil bloque de construcción y fuente de energía cinética cuando forma parte de una estructura montada en un _Rodamiento de molino_. Viene en una variedad de colores", - "block.create.white_sail.tooltip.condition1": "Cuando se hace clic con el botón derecho del ratón con tinte", - "block.create.white_sail.tooltip.behaviour1": "Cambia el color de la vela", - - "block.create.clockwork_bearing.tooltip": "RODAMIENTO DE RELOJ", - "block.create.clockwork_bearing.tooltip.summary": "Una versión avanzada del _rodamiento mecánico_ para hacer girar hasta dos _manecillas de reloj_ según la _hora actual_ en el _juego_", - "block.create.clockwork_bearing.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.clockwork_bearing.tooltip.behaviour1": "Comienza a girar la estructura adjunta hacia la _hora actual_. Si existe una segunda estructura independiente delante de la primera, servirá de _manecilla de las horas_", - - "block.create.sequenced_gearshift.tooltip": "CAMBIO DE MARCHAS SECUENCIADO", - "block.create.sequenced_gearshift.tooltip.summary": "Un _componente de utilidad programable_, que puede cambiar su _rendimiento rotacional_ según hasta _5 instrucciones consecutivas._ Utilízalo para alimentar Rodamientos Mecánicos, Pistones o Poleas con más control sobre la sincronización y la velocidad. Puede ser menos preciso a velocidades más altas", - "block.create.sequenced_gearshift.tooltip.condition1": "Cuando es impulsado por Redstone", - "block.create.sequenced_gearshift.tooltip.behaviour1": "_Ejecuta_ las instrucciones programadas en función de la velocidad de entrada", - "block.create.sequenced_gearshift.tooltip.condition2": "Cuando se hace clic derecho", - "block.create.sequenced_gearshift.tooltip.behaviour2": "Abre la _interfaz de configuración._", - - "block.create.cart_assembler.tooltip": "ENSAMBLADOR DE VAGONETAS", - "block.create.cart_assembler.tooltip.summary": "Cuando se coloca en un _Raíl_, puede _ensamblar_ y _desensamblar_ estructuras móviles en las vagonetas que pasan. Consulta [Ctrl] para conocer el comportamiento específico del tipo de raíl", - "block.create.cart_assembler.tooltip.condition1": "Artilugio de vagoneta simple", - "block.create.cart_assembler.tooltip.behaviour1": "Con un _miembro único_, las estructuras se anclarán y girarán en _una sola vagoneta_. Utilice una _Llave Inglesa_ para especificar el _comportamiento de rotación_ deseado", - "block.create.cart_assembler.tooltip.condition2": "Artilugio de vagonetas", - "block.create.cart_assembler.tooltip.behaviour2": "Dos ensambladores de vagonetas _conectadas por_ una _estructura_, una vez que ambos contengan una vagoneta, las conectará con un artilugio montado _entre los dos_. La estructura se comportará de forma similar a un _acoplador de vagonetas_", - "block.create.cart_assembler.tooltip.control1": "Cuando se coloca sobre un Rail", - "block.create.cart_assembler.tooltip.action1": "_Se monta_ en las vagonetas que pasan _cuando está alimentado_, _se desmonta_ en caso contrario", - "block.create.cart_assembler.tooltip.control2": "Cuando se coloca sobre un raíl energizado", - "block.create.cart_assembler.tooltip.action2": "Monta y _acelera_ las vagonetas _cuando está alimentado_, desmonta y _sostiene_ en caso contrario", - "block.create.cart_assembler.tooltip.control3": "Cuando se coloca sobre el raíl detector", - "block.create.cart_assembler.tooltip.action3": "_Monta vagonetas sin montar_, _desmonta vagonetas montadas_", - "block.create.cart_assembler.tooltip.control4": "Cuando se coloca sobre el raíl activador", - "block.create.cart_assembler.tooltip.action4": "Desmonta_ vagonetas cuando se activa", - - "block.create.rope_pulley.tooltip": "POLEA DE CUERDA", - "block.create.rope_pulley.tooltip.summary": "Mueve verticalmente los _bloques_ y _estructuras_ adjuntos. Utiliza _Chasis_, _Slime_ o _Súper Pegamento_ para mover más de un bloque", - "block.create.rope_pulley.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.rope_pulley.tooltip.behaviour1": "Comienza a mover la estructura adjunta. La velocidad y la dirección se correlacionan con la velocidad de rotación entrante", - - "block.create.linear_chassis.tooltip": "CHASIS LINEAL", - "block.create.linear_chassis.tooltip.summary": "Bloque base configurable que conecta estructuras para el movimiento", - "block.create.linear_chassis.tooltip.condition1": "Cuando se mueve", - "block.create.linear_chassis.tooltip.behaviour1": "_Mueve_ todos los _Chasis adjuntos_ con la misma orientación, y una columna de Bloques dentro de su rango. Los bloques sólo serán arrastrados si la cara del chasis es _Pegajosa_ (Ver [Ctrl])", - "block.create.linear_chassis.tooltip.condition2": "Con Llave Inglesa", - "block.create.linear_chassis.tooltip.behaviour2": "Configura el _rango_ para este bloque de chasis. Mantenga pulsada la tecla CTRL para modificar también el rango de todos los bloques de chasis adjuntos", - "block.create.linear_chassis.tooltip.control1": "Cuando se hace clic derecho con slime", - "block.create.linear_chassis.tooltip.action1": "Hace que la cara sobre la que se ha hecho clic sea _pegajosa_. Cuando se mueva, el chasis _tirará_ de los bloques adjuntos, independientemente de la dirección del movimiento", - - "block.create.secondary_linear_chassis.tooltip": "CHASIS LINEAL SECUNDARIO", - "block.create.secondary_linear_chassis.tooltip.summary": "Un segundo tipo de _Chasis lineal_ que no se conecta al otro", - - "block.create.radial_chassis.tooltip": "CHASIS RADIAL", - "block.create.radial_chassis.tooltip.summary": "Bloque base configurable que conecta estructuras para el movimiento", - "block.create.radial_chassis.tooltip.condition1": "Cuando se mueve", - "block.create.radial_chassis.tooltip.behaviour1": "_Mueve_ todos los _Chasis_ adjuntos en una columna, y un cilindro de bloques a su alrededor. Los bloques que lo rodean sólo se mueven cuando están dentro del rango y están adheridos a un lado pegajoso (Ver [Ctrl]).", - "block.create.radial_chassis.tooltip.condition2": "Con Llave Inglesa", - "block.create.radial_chassis.tooltip.behaviour2": "Configura el _rango_ para este bloque de chasis. Mantenga pulsada la tecla CTRL para modificar también el rango de todos los bloques de chasis adjuntos", - "block.create.radial_chassis.tooltip.control1": "Cuando se hace clic derecho con slime", - "block.create.radial_chassis.tooltip.action1": "Hace que la cara sobre la que se ha hecho clic sea _pegajosa_. Cuando el chasis se mueve, todos los bloques designados unidos a la cara pegajosa se mueven con él", - - "block.create.mechanical_drill.tooltip": "TALADRO MECÁNICO", - "block.create.mechanical_drill.tooltip.summary": "Un dispositivo mecánico adecuado para _romper bloques_. Se puede mover con _pistones mecánicos_, _rodamientos_ u otros controladores", - "block.create.mechanical_drill.tooltip.condition1": "Cuando se mueve con cinética", - "block.create.mechanical_drill.tooltip.behaviour1": "Actúa como un rompebloques _estacionario_. También _hace daño a las entidades_ en su área efectiva", - "block.create.mechanical_drill.tooltip.condition2": "Mientras se mueve", - "block.create.mechanical_drill.tooltip.behaviour2": "Rompe los bloques con los que colisiona el taladro", - - "block.create.mechanical_harvester.tooltip": "COSECHADORA MECÁNICA", - "block.create.mechanical_harvester.tooltip.summary": "Una cosechadora mecánica adecuada para la automatización de cultivos a mediana escala. Se puede mover con _Pistones mecánicos_, _Rodamientos_ u otros controladores", - "block.create.mechanical_harvester.tooltip.condition1": "Mientras se mueve", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Corta_ todos los _cultivos maduros_ con los que la cuchilla colisiona y los restablece a su estado de crecimiento inicial", - - "block.create.mechanical_plough.tooltip": "ARADO MECÁNICO", - "block.create.mechanical_plough.tooltip.summary": "Un arado mecánico tiene varios usos. Se puede mover con _Pistones mecánicos_, _Rodamientos_ u otros mandos", - "block.create.mechanical_plough.tooltip.condition1": "Mientras se mueve", - "block.create.mechanical_plough.tooltip.behaviour1": "_Rompe bloques_ con los que _no se puede colisionar_, como antorchas, raíles o capas de nieve. _Aplica_ su _movimiento_ a las _entidades_ sin dañarlas. _Labra bloques de tierra_ como si se usara una azada en ellos", - - "block.create.mechanical_saw.tooltip": "SIERRA MECÁNICA", - "block.create.mechanical_saw.tooltip.summary": "Adecuada para _cortar árboles_ de forma eficaz y para _cortar bloques_ en sus homólogos carpinteros. Se puede mover mediante _pistones mecánicos_ o _rodamientos_", - "block.create.mechanical_saw.tooltip.condition1": "Cuando está orientado hacia arriba", - "block.create.mechanical_saw.tooltip.behaviour1": "Aplica las recetas _Serrar_ y _Estallar_ a los objetos que se dejan caer o se introducen en ella. Cuando hay varias salidas posibles, las recorre a menos que se asigne un _filtro_", - "block.create.mechanical_saw.tooltip.condition2": "Cuando se orienta horizontalmente", - "block.create.mechanical_saw.tooltip.behaviour2": "Rompe los troncos_ que tiene delante. Si el tronco soportaba un árbol por sí mismo, el _árbol se derrumbará_ lejos de la sierra", - "block.create.mechanical_saw.tooltip.condition3": "Mientras se mueve", - "block.create.mechanical_saw.tooltip.behaviour3": "_Corta_ todos los _Árboles_ con los que colisiona la sierra", - - "block.create.stockpile_switch.tooltip": "INTERRUPTOR DE ACOPIO", - "block.create.stockpile_switch.tooltip.summary": "Activa una señal de Redstone en función de la cantidad de _Artículos almacenados_ en el Contenedor adjunto. Viene con un práctico filtro. A diferencia de un _Comparador,_ el _Interruptor de acopio_ permite la configuración de _Umbrales,_ a partir de los cuales se invierten las señales", - "block.create.stockpile_switch.tooltip.condition1": "Cuando haces click derecho", - "block.create.stockpile_switch.tooltip.behaviour1": "Abre la _Interfaz de Configuración_", - - "block.create.content_observer.tooltip": "OBSERVADOR DE CONTENIDO", - "block.create.content_observer.tooltip.summary": "_Detecta artículos_ dentro de _contenedores_ y _transportadores_ que coinciden con un _filtro_ configurado. Mientras el _inventario_, la _cinta_ o la _canaleta_ observados contengan_ un artículo que coincida, este componente emitirá una _señal de Redstone_. Cuando un _túnel observado transfiere_ un artículo coincidente, este componente emitirá un _Pulso de Redstone_", - - "block.create.redstone_link.tooltip": "ENLACE DE REDSTONE", - "block.create.redstone_link.tooltip.summary": "Puntos finales para conexiones _Inalámbricas Redstone_. Se pueden asignar _frecuencias_ utilizando cualquier elemento. El alcance de la señal es limitado, aunque razonablemente lejano", - "block.create.redstone_link.tooltip.condition1": "Cuando se alimenta", - "block.create.redstone_link.tooltip.behaviour1": "Recibir enlaces de la misma _Frecuencia_ producirá una señal de Redstone", - "block.create.redstone_link.tooltip.control1": "Cuando se hace Clic derecho con un ítem", - "block.create.redstone_link.tooltip.action1": "Establece la _Frecuencia_ a ese elemento. Se pueden utilizar un total de _dos elementos diferentes_ en combinación para definir una Frecuencia", - "block.create.redstone_link.tooltip.control2": "Cuando se hace clic derecho mientras se agacha", - "block.create.redstone_link.tooltip.action2": "Cambia entre el modo _Receptor_ y _Transmisor_", - - "block.create.nixie_tube.tooltip": "TUBO NIXIE", - "block.create.nixie_tube.tooltip.summary": "Un elegante _visualizador_ de _números y texto_ potenciados por Redstone", - "block.create.nixie_tube.tooltip.condition1": "Cuando se alimenta", - "block.create.nixie_tube.tooltip.behaviour1": "Muestra el valor actual de la _Fuerza de la señal Redstone_", - "block.create.nixie_tube.tooltip.condition2": "Con etiqueta de nombre", - "block.create.nixie_tube.tooltip.behaviour2": "Mostrar el _contenido_ de su _etiqueta de nombre_ con varios tubos nixie _ordenados_ en una _línea_", - - "block.create.redstone_contact.tooltip": "CONTACTO DE REDSTONE", - "block.create.redstone_contact.tooltip.summary": "Solo emite energía de Redstone por parejas. Se puede mover con _Pistones mecánicos_, _Rodamientos_ u otros controladores", - "block.create.redstone_contact.tooltip.condition1": "Cuando se enfrenta a otro Contacto", - "block.create.redstone_contact.tooltip.behaviour1": "Proporciona una _señal de Redstone_", - "block.create.redstone_contact.tooltip.condition2": "Mientras se mueve", - "block.create.redstone_contact.tooltip.behaviour2": "Activa todos los contactos estacionarios que pasa", - - "block.create.adjustable_crate.tooltip": "CAJA AJUSTABLE", - "block.create.adjustable_crate.tooltip.summary": "Este _Contenedor de Artículos_ permite el control manual de su capacidad. Puede contener hasta _16 pilas_ de cualquier objeto. Soporta _Comparadores de Redstone_", - "block.create.adjustable_crate.tooltip.control1": "Cuando haces click derecho", - "block.create.adjustable_crate.tooltip.action1": "Abre la _Interfaz_", - - "block.create.creative_crate.tooltip": "CAJA CREATIVA", - "block.create.creative_crate.tooltip.summary": "Este _Contenedor de Almacenamiento_ permite la replicación infinita de cualquier elemento. Colócalo junto a un _Schematicannon_ para eliminar cualquier requisito de material", - "block.create.creative_crate.tooltip.condition1": "Cuando el artículo está en la ranura del filtro", - "block.create.creative_crate.tooltip.behaviour1": "Todo lo que se _extraiga_ de este contenedor proporcionará un _suministro ilimitado_ del elemento especificado. Los elementos _insertados_ en esta caja serán _evitados._", - - "block.create.deployer.tooltip": "DESPLEGADOR", - "block.create.deployer.tooltip.summary": "_Lanza_, _Usa_ y _Activa_. Esta máquina intentará _imitar_ a un _jugador_ en la medida de lo posible. Puede _tomar_ y _depositar objetos_ en su propio _inventario_. Los objetos guardados deben ser _insertados_ y _extraídos_ del bloque directamente", - "block.create.deployer.tooltip.condition1": "Cuando se alimenta de cinética", - "block.create.deployer.tooltip.behaviour1": "Extiende su brazo y se _activa_ en el espacio del bloque _2m por delante_ de sí mismo", - "block.create.deployer.tooltip.condition2": "Click derecho con la Llave Inglesa", - "block.create.deployer.tooltip.behaviour2": "Activa el modo puñetazo. En el _modo puñetazo_, el Desplegador intentará usar su objeto para _romper bloques_ o _herir entidades_", - "block.create.deployer.tooltip.condition3": "Cuando se asigna el filtro", - "block.create.deployer.tooltip.behaviour3": "El desplegador no se activará a menos que el elemento retenido _coincida_ con el _filtro._ Los elementos que no coincidan no podrán ser insertados; los elementos retenidos que coincidan con el filtro no podrán ser extraídos.", - - "block.create.brass_casing.tooltip": "REVESTIDOR DE LATÓN", - "block.create.brass_casing.tooltip.summary": "Resistente máquina revestidora con una gran variedad de usos. Segura para la decoración. Se puede utilizar para _revestir ejes_ y _cintas._", - - "block.create.pulse_repeater.tooltip": "REPETIDOR DE PULSOS DE REDSTONE", - "block.create.pulse_repeater.tooltip.summary": "Un circuito sencillo para cortar las señales de Redstone que pasan a una longitud de _1 tick_", - - "block.create.adjustable_repeater.tooltip": "REPETIDOR AJUSTABLE", - "block.create.adjustable_repeater.tooltip.summary": "Un avanzado _repetidor de Redstone_ con un _retraso configurable_ de hasta 30 minutos", - - "block.create.adjustable_pulse_repeater.tooltip": "REPETIDOR DE PULSO AJUSTABLE", - "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _repetidor de pulsos_ con un _retardo configurable_ de hasta 30 minutos", - - "block.create.analog_lever.tooltip": "PALANCA ANALÓGICA", - "block.create.analog_lever.tooltip.summary": "Una palanca con un control más _preciso_ sobre su fuerza de _señal_ emitida", - - "block.create.powered_toggle_latch.tooltip": "PALANCA MECANIZADA", - "block.create.powered_toggle_latch.tooltip.summary": "Una palanca que puede ser accionada por un _Pulso de Redstone_", - - "block.create.powered_latch.tooltip": "PALANCA DE CIERRE MECANIZADA", - "block.create.powered_latch.tooltip.summary": "Una palanca que puede ser controlada por _señales de Redstone_. Una señal en la _trasera la habilita_, una señal desde el _lado la reinicia_", - - "block.create.controller_rail.tooltip": "RAÍL DE CONTROL", - "block.create.controller_rail.tooltip.summary": "Un _raíl energizado unidireccional_ capaz de _controlar con precisión_ la _velocidad de movimiento_ de una vagoneta", - "block.create.controller_rail.tooltip.condition1": "Cuando es impulsado por Redstone", - "block.create.controller_rail.tooltip.behaviour1": "_Acelera_ o _Desacelera_ pasando _vagonetas_ correspondientes a la _fuerza de la señal_. Propaga la energía de Redstone a los Raíles de control adyacentes. Al alimentar dos Raíles de control con diferentes intensidades, los carriles entre ellos interpolarán su señal", - - "block.create.speedometer.tooltip": "VELOCÍMETRO", - "block.create.speedometer.tooltip.summary": "Mide y muestra la _velocidad de rotación_ de los componentes cinéticos acoplados. Es compatible con _comparadores de Redstone_", - "block.create.speedometer.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.speedometer.tooltip.behaviour1": "Indica un color correspondiente al nivel de velocidad. El _Verde_ indica Lento, el _Azul_ Moderado y el _Púrpura_ Rápido. Algunos componentes mecánicos requieren un nivel de velocidad suficiente para funcionar correctamente", - - "block.create.stressometer.tooltip": "ESTRESÓMETRO", - "block.create.stressometer.tooltip.summary": "Mide y muestra el _estrés global_ de la red cinética adjunta. Es compatible con _comparadores de Redstone_", - "block.create.stressometer.tooltip.condition1": "Cuando se alimenta con cinética", - "block.create.stressometer.tooltip.behaviour1": "Indica un color correspondiente al nivel de estrés. Las redes demasiado estresadas dejarán de moverse. El estrés puede aliviarse añadiendo más _fuentes de rotación_ a la red", - - "item.create.sand_paper.tooltip": "PAPEL DE LIJA", - "item.create.sand_paper.tooltip.summary": "Un papel rugoso que se puede utilizar para _pulir materiales_. Se puede aplicar automáticamente con el Desplegador", - "item.create.sand_paper.tooltip.condition1": "Cuando se usa", - "item.create.sand_paper.tooltip.behaviour1": "Aplica el pulido a los objetos sostenidos en la _mano libre_ o tirados en el _suelo_ cuando se _miran_", - - "item.create.super_glue.tooltip": "SÚPER PEGAMENTO", - "item.create.super_glue.tooltip.summary": "Pega un bloque a otro y serán inseparables para siempre", - "item.create.super_glue.tooltip.condition1": "Cuando se usa", - "item.create.super_glue.tooltip.behaviour1": "Hace que la cara _clicada_ de un bloque sea _pegajosa_. Los bloques unidos a caras pegajosas serán _arrastrados_ cuando se muevan por _pistones mecánicos_, _rodamientos_ y otros controladores", - "item.create.super_glue.tooltip.condition2": "Cuando se sostiene en la mano", - "item.create.super_glue.tooltip.behaviour2": "_Adjunta automáticamente_ los bloques colocados desde la mano principal al _lado_ contra el que fueron _colocados._", - - "item.create.builders_tea.tooltip": "TÉ DEL CONSTRUCTOR", - "item.create.builders_tea.tooltip.summary": "La bebida perfecta para empezar el día- _Motivante_ y _Saturante._", - - "item.create.refined_radiance.tooltip": "RESPLANDOR REFINADO", - "item.create.refined_radiance.tooltip.summary": "Material cromático forjado a partir de _luz absorbida_", - - "item.create.shadow_steel.tooltip": "ACERO SOMBRÍO", - "item.create.shadow_steel.tooltip.summary": "Un material cromático forjado _en el vacío_", - - "item.create.minecart_coupling.tooltip": "ENSAMBLADOR DE VAGONETAS", - "item.create.minecart_coupling.tooltip.summary": "_Encadena_ todas tus _Vagonetas_ o _Artilugios de vagoneta_ para formar un majestuoso Tren", - "item.create.minecart_coupling.tooltip.condition1": "Cuando se utiliza en Vagonetas", - "item.create.minecart_coupling.tooltip.behaviour1": "_Acopla_ dos Vagonetas, intentando mantenerlas a una _distancia constante_ mientras se mueven", - - "item.create.crafter_slot_cover.tooltip": "TAPA DE RANURA DEL AUTOENSAMBLADOR", - "item.create.crafter_slot_cover.tooltip.summary": "Se utiliza para marcar a un _Autoensamblador_ una ranura vacía en una receta. Los autoensambladores no tienen que formar necesariamente una cuadrícula completa. Esto es útil cuando hay recetas en las que los _ingredientes están en diagonal_ entre sí", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "¡Trabajo en curso!", - "create.tooltip.randomWipDescription0": "Por favor, mantenga este artículo fuera del alcance de los niños", - "create.tooltip.randomWipDescription1": "Un bebé panda muere cada vez que usas este objeto. Cada vez. Cada vez", - "create.tooltip.randomWipDescription2": "Úsalo bajo tu propio riesgo", - "create.tooltip.randomWipDescription3": "Este no es el objeto que buscas, *mueve los dedos* por favor, dispérsate", - "create.tooltip.randomWipDescription4": "Este objeto se autodestruirá en 10 segundos. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Créeme, es inútil", - "create.tooltip.randomWipDescription6": "Al utilizar este elemento, aceptas nuestra exención de responsabilidad y estás de acuerdo con sus términos", - "create.tooltip.randomWipDescription7": "Este quizás no es para ti. ¿Qué tal ese?", - "create.tooltip.randomWipDescription8": "Úsalo y arrepiéntete de tu decisión inmediatamente", - - "_": "Thank you for translating Create!" - -} diff --git a/src/main/resources/assets/create/lang/es_mx.json b/src/main/resources/assets/create/lang/es_mx.json deleted file mode 100644 index 5264b5a87..000000000 --- a/src/main/resources/assets/create/lang/es_mx.json +++ /dev/null @@ -1,804 +0,0 @@ -{ - - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "Ventana de Acacia", - "block.create.acacia_window_pane": "Panel de Ventana de Acacia", - "block.create.adjustable_chain_gearshift": "Cambio Ajustable de Velocidad de Cadena", - "block.create.adjustable_crate": "Caja Ajustable", - "block.create.adjustable_pulse_repeater": "Repetidor de Pulso Ajustable", - "block.create.adjustable_repeater": "Repetidor Ajustable", - "block.create.analog_lever": "Palanca Analogica", - "block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel", - "block.create.andesite_bricks": "Ladrillos de Andesita", - "block.create.andesite_bricks_slab": "Losa de Ladrillos de Andesita", - "block.create.andesite_bricks_stairs": "Escaleras de Ladrillos de Andesita", - "block.create.andesite_bricks_wall": "Pared de Ladrillos de Andesita", - "block.create.andesite_casing": "Carcasa de Andesita", - "block.create.andesite_cobblestone": "Piedra Labrada de Andesita", - "block.create.andesite_cobblestone_slab": "Losa de Piedra Labrada de Andesita", - "block.create.andesite_cobblestone_stairs": "Escaleras de Piedra Labrada de Andesita", - "block.create.andesite_cobblestone_wall": "Pared de Piedra Labrada de Andesita", - "block.create.andesite_encased_shaft": "Eje empotrado de Andesita", - "block.create.andesite_funnel": "Embudo de Andesita", - "block.create.andesite_pillar": "Pilar de Andesita", - "block.create.andesite_tunnel": "Túnel de Andesita", - "block.create.basin": "Cuenco", - "block.create.belt": "Correa", - "block.create.birch_window": "Ventana de Abedul", - "block.create.birch_window_pane": "Panel de Ventana de Abedul", - "block.create.black_sail": "Vela Negra", - "block.create.black_seat": "Asiento Negro", - "block.create.black_valve_handle": "Manija de Válvula Negra", - "block.create.blaze_burner": "Quemador de Blaze", - "block.create.blue_sail": "Vela Azul", - "block.create.blue_seat": "Asiento Azul", - "block.create.blue_valve_handle": "Manija de Válvula Azul", - "block.create.brass_belt_funnel": "UNLOCALIZED:Brass Belt Funnel", - "block.create.brass_block": "Bloque de Latón", - "block.create.brass_casing": "Carcasa de Latón", - "block.create.brass_encased_shaft": "Eje empotrado de Latón", - "block.create.brass_funnel": "Embudo de Latón", - "block.create.brass_tunnel": "Túnel de Latón", - "block.create.brown_sail": "Vela Café", - "block.create.brown_seat": "Asiento Café ", - "block.create.brown_valve_handle": "Manija de Válvula Café", - "block.create.cart_assembler": "Ensamblador de Vagonetas", - "block.create.chiseled_dark_scoria": "Escoria Oscura Grabada", - "block.create.chiseled_dolomite": "Dolomita Grabada", - "block.create.chiseled_gabbro": "Gabro Grabado", - "block.create.chiseled_limestone": "Caliza Grabada", - "block.create.chiseled_scoria": "Escoria Grabada", - "block.create.chiseled_weathered_limestone": "Caliza Meteorizada Grabada", - "block.create.chocolate": "Chocolate", - "block.create.chute": "Vertedor", - "block.create.clockwork_bearing": "Rodamiento de Reloj", - "block.create.clutch": "Embrague", - "block.create.cogwheel": "Rueda Dentada", - "block.create.content_observer": "Observador de Contenido", - "block.create.controller_rail": "Vía de Control", - "block.create.copper_block": "Bloque de Cobre", - "block.create.copper_casing": "Carcasa de Cobre", - "block.create.copper_ore": "Mineral de Cobre", - "block.create.copper_shingles": "Techado de Cobre", - "block.create.copper_tiles": "Baldosas de Cobre", - "block.create.copper_valve_handle": "Manija de Válvula de Cobre", - "block.create.creative_crate": "Caja del Creativo", - "block.create.creative_fluid_tank": "Tanque de Fluido del Creativo", - "block.create.creative_motor": "Motor del Creativo", - "block.create.crimson_window": "Ventana Carmesí", - "block.create.crimson_window_pane": "Panel de Ventana Carmesí", - "block.create.crushing_wheel": "Rueda Trituradora", - "block.create.crushing_wheel_controller": "UNLOCALIZED:Crushing Wheel Controller", - "block.create.cuckoo_clock": "Reloj Cuco", - "block.create.cyan_sail": "Vela Cian", - "block.create.cyan_seat": "Asiento Cian", - "block.create.cyan_valve_handle": "Manija de Válvula Cian", - "block.create.dark_oak_window": "Ventana de Roble Oscuro", - "block.create.dark_oak_window_pane": "Panel de Ventana de Roble Oscuro", - "block.create.dark_scoria": "Escoria Oscura", - "block.create.dark_scoria_bricks": "Ladrillos de Escoria Oscura", - "block.create.dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura", - "block.create.dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura", - "block.create.dark_scoria_bricks_wall": "Pared de Ladrillos de Escoria Oscura", - "block.create.dark_scoria_cobblestone": "Piedra Labrada de Escoria Oscura", - "block.create.dark_scoria_cobblestone_slab": "Losa de Piedra Labrada de Escoria Oscura", - "block.create.dark_scoria_cobblestone_stairs": "Escaleras de Piedra Labrada de Escoria Oscura", - "block.create.dark_scoria_cobblestone_wall": "Pared de Piedra Labrada de Escoria Oscura", - "block.create.dark_scoria_pillar": "Pilar de Escoria Oscura", - "block.create.deployer": "Desplegador", - "block.create.depot": "Depósito", - "block.create.diorite_bricks": "Ladrillos de Diorita", - "block.create.diorite_bricks_slab": "Losa de Ladrillos de Diorita", - "block.create.diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita", - "block.create.diorite_bricks_wall": "Pared de Ladrillos de Diorita", - "block.create.diorite_cobblestone": "Piedra Labrada de Diorita", - "block.create.diorite_cobblestone_slab": "Losa de Piedra Labrada de Diorita", - "block.create.diorite_cobblestone_stairs": "Escaleras de Piedra Labrada de Diorita", - "block.create.diorite_cobblestone_wall": "Pared de Piedra Labrada de Diorita", - "block.create.diorite_pillar": "Pared de Diorita", - "block.create.dolomite": "Dolomita", - "block.create.dolomite_bricks": "Ladrillos de Dolomita", - "block.create.dolomite_bricks_slab": "Losa de Ladrillos de Dolomita", - "block.create.dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita", - "block.create.dolomite_bricks_wall": "Pared de Ladrillos de Dolomita", - "block.create.dolomite_cobblestone": "Piedra Labrada de Dolomita", - "block.create.dolomite_cobblestone_slab": "Losa de Piedra Labrada de Dolomita", - "block.create.dolomite_cobblestone_stairs": "Escaleras de Piedra Labrada de Dolomita", - "block.create.dolomite_cobblestone_wall": "Pared de Piedra Labrada de Dolomita", - "block.create.dolomite_pillar": "Pilar de Dolomita", - "block.create.encased_chain_drive": "Transmisión de Cadena Empotrada", - "block.create.encased_fan": "Ventilador Acoplado", - "block.create.encased_fluid_pipe": "Tubería de Fluidos Recubierta", - "block.create.fancy_andesite_bricks": "Ladrillos de Andesita Elegantes", - "block.create.fancy_andesite_bricks_slab": "Losa de Ladrillos de Andesita Elegantes", - "block.create.fancy_andesite_bricks_stairs": "Escaleras de Ladrillos de Andesita Elegantes", - "block.create.fancy_andesite_bricks_wall": "Pared de Ladrillos de Andesita Elegantes", - "block.create.fancy_dark_scoria_bricks": "Ladrillos de Escoria Oscura Elegantes", - "block.create.fancy_dark_scoria_bricks_slab": "Losa de Ladrillos de Escoria Oscura Elegantes", - "block.create.fancy_dark_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Oscura Elegantes", - "block.create.fancy_dark_scoria_bricks_wall": "Pared de Ladrillos de Escoria Oscura Elegantes", - "block.create.fancy_diorite_bricks": "Ladrillos de Diorita Elegantes", - "block.create.fancy_diorite_bricks_slab": "Losa de Ladrillos de Diorita Elegantes", - "block.create.fancy_diorite_bricks_stairs": "Escaleras de Ladrillos de Diorita Elegantes", - "block.create.fancy_diorite_bricks_wall": "Pared de Ladrillos de Diorita Elegantes", - "block.create.fancy_dolomite_bricks": "Ladrillos de Dolomita Elegantes", - "block.create.fancy_dolomite_bricks_slab": "Losa de Ladrillos de Dolomita Elegantes", - "block.create.fancy_dolomite_bricks_stairs": "Escaleras de Ladrillos de Dolomita Elegantes", - "block.create.fancy_dolomite_bricks_wall": "Pared de Ladrillos de Dolomita Elegantes", - "block.create.fancy_gabbro_bricks": "Ladrillos de Gabro Elegantes", - "block.create.fancy_gabbro_bricks_slab": "Losa Ladrillos de Gabro Elegantes", - "block.create.fancy_gabbro_bricks_stairs": "Escaleras Ladrillos de Gabro Elegantes", - "block.create.fancy_gabbro_bricks_wall": "Pared de Ladrillos de Gabro Elegantes", - "block.create.fancy_granite_bricks": "Ladrillos de Granito Elegantes", - "block.create.fancy_granite_bricks_slab": "Losa de Ladrillos de Granito Elegantes", - "block.create.fancy_granite_bricks_stairs": "Escaleras de Ladrillos de Granito Elegantes", - "block.create.fancy_granite_bricks_wall": "Pared de Ladrillos de Granito Elegantes", - "block.create.fancy_limestone_bricks": "Ladrillos de Caliza Elegantes", - "block.create.fancy_limestone_bricks_slab": "Losa de Ladrillos de Caliza Elegantes", - "block.create.fancy_limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza Elegantes", - "block.create.fancy_limestone_bricks_wall": "Pared de Ladrillos de Caliza Elegantes", - "block.create.fancy_scoria_bricks": "Ladrillos de Escoria Elegantes", - "block.create.fancy_scoria_bricks_slab": "Losa de Ladrillos de Escoria Elegantes", - "block.create.fancy_scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria Elegantes", - "block.create.fancy_scoria_bricks_wall": "Pared de Ladrillos de Escoria Elegantes", - "block.create.fancy_weathered_limestone_bricks": "Ladrillos de Caliza Meteorizada Elegantes", - "block.create.fancy_weathered_limestone_bricks_slab": "Losa de Ladrillos de Caliza Meteorizada Elegantes", - "block.create.fancy_weathered_limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza Meteorizada Elegantes", - "block.create.fancy_weathered_limestone_bricks_wall": "Pared de Ladrillos de Caliza Meteorizada Elegantes", - "block.create.fluid_pipe": "Tubería de Fluidos", - "block.create.fluid_tank": "Tanque de Fluidos", - "block.create.fluid_valve": "Válvula de Fluidos", - "block.create.flywheel": "Rueda de Inercia", - "block.create.framed_glass": "Vidrio Enmarcado", - "block.create.framed_glass_pane": "Panel de Vidrio Enmarcado", - "block.create.furnace_engine": "Motor de Horno", - "block.create.gabbro": "Gabro", - "block.create.gabbro_bricks": "Ladrillos de Gabro", - "block.create.gabbro_bricks_slab": "Losa de Ladrillos de Gabro", - "block.create.gabbro_bricks_stairs": "Escaleras de Ladrillos de Gabro", - "block.create.gabbro_bricks_wall": "Pared de Ladrillos de Gabro", - "block.create.gabbro_cobblestone": "Piedra Labrada de Gabro", - "block.create.gabbro_cobblestone_slab": "Losa de Piedra Labrada de Gabro", - "block.create.gabbro_cobblestone_stairs": "Escaleras de Piedra Labrada de Gabro", - "block.create.gabbro_cobblestone_wall": "Pared de Piedra Labrada de Gabro", - "block.create.gabbro_pillar": "Pilar de Gabro", - "block.create.gearbox": "Transmisión", - "block.create.gearshift": "Cambio de Marcha", - "block.create.glass_fluid_pipe": "Tubería de Fluidos de Vidrio", - "block.create.granite_bricks": "Ladrillos de Granito", - "block.create.granite_bricks_slab": "Losa de Ladrillos de Granito", - "block.create.granite_bricks_stairs": "Escaleras de Ladrillos de Granito", - "block.create.granite_bricks_wall": "Pared de Ladrillos de Granito", - "block.create.granite_cobblestone": "Piedra Labrada de Granito", - "block.create.granite_cobblestone_slab": "Losa de Piedra Labrada de Granito", - "block.create.granite_cobblestone_stairs": "Escaleras de Piedra Labrada de Granito", - "block.create.granite_cobblestone_wall": "Pared de Piedra Labrada de Granito", - "block.create.granite_pillar": "Pilar de Granito", - "block.create.gray_sail": "Vela Gris", - "block.create.gray_seat": "Asiento Gris", - "block.create.gray_valve_handle": "Manija de Válvula Gris", - "block.create.green_sail": "Vela Verde", - "block.create.green_seat": "Asiento Verde", - "block.create.green_valve_handle": "Manija de Válvula Verde", - "block.create.hand_crank": "Manivela", - "block.create.honey": "Miel", - "block.create.horizontal_framed_glass": "Vidrio Enmarcado Horizontal", - "block.create.horizontal_framed_glass_pane": "Panel de Vidrio Enmarcado Horizontal", - "block.create.hose_pulley": "Polea con Manguera", - "block.create.item_drain": "Extractor de Fluidos", - "block.create.jungle_window": "Ventana de Jungla", - "block.create.jungle_window_pane": "Panel de Ventana de Jungla", - "block.create.large_cogwheel": "Rueda Dentada Grande", - "block.create.layered_andesite": "Andesita en Capas", - "block.create.layered_dark_scoria": "Escoria Oscura en Capas", - "block.create.layered_diorite": "Diorita en Capas", - "block.create.layered_dolomite": "Dolomita en Capas", - "block.create.layered_gabbro": "Gabro en Capas", - "block.create.layered_granite": "Granito en Capas", - "block.create.layered_limestone": "Caliza en Capas", - "block.create.layered_scoria": "Escoria en Capas", - "block.create.layered_weathered_limestone": "Caliza Meteorizada en Capas", - "block.create.light_blue_sail": "Vela Azul Claro", - "block.create.light_blue_seat": "Asiento Azul Claro", - "block.create.light_blue_valve_handle": "Manija de Válvula Azul Claro", - "block.create.light_gray_sail": "Vela Gris Claro", - "block.create.light_gray_seat": "Asiento Gris Claro", - "block.create.light_gray_valve_handle": "Manija de Válvula Gris Claro", - "block.create.lime_sail": "Vela Verde Lima", - "block.create.lime_seat": "Asiento Verde Lima", - "block.create.lime_valve_handle": "Manija de Válvula Verde Lima", - "block.create.limesand": "Arena de Caliza", - "block.create.limestone": "Caliza", - "block.create.limestone_bricks": "Ladrillos de Caliza", - "block.create.limestone_bricks_slab": "Losa de Ladrillos de Caliza", - "block.create.limestone_bricks_stairs": "Escaleras de Ladrillos de Caliza", - "block.create.limestone_bricks_wall": "Pared de Ladrillos de Caliza", - "block.create.limestone_cobblestone": "Piedra Labrada de Caliza", - "block.create.limestone_cobblestone_slab": "Losa de Piedra Labrada de Caliza", - "block.create.limestone_cobblestone_stairs": "Escaleras de Piedra Labrada de Caliza", - "block.create.limestone_cobblestone_wall": "Pared de Piedra Labrada de Caliza", - "block.create.limestone_pillar": "Pilar de Caliza", - "block.create.linear_chassis": "Chasis Lineal", - "block.create.lit_blaze_burner": "Quemador de Blaze Iluminado", - "block.create.magenta_sail": "Vela Magenta", - "block.create.magenta_seat": "Asiento Magenta", - "block.create.magenta_valve_handle": "Manija de Válvula Magenta", - "block.create.mechanical_arm": "Brazo Mecánico", - "block.create.mechanical_bearing": "Rodamiento Mecánico", - "block.create.mechanical_crafter": "Crafter Mecánico", - "block.create.mechanical_drill": "Taladro Mecánico", - "block.create.mechanical_harvester": "Cosechador Mecánico", - "block.create.mechanical_mixer": "Mezcladora Mecánica", - "block.create.mechanical_piston": "Pistón Mecánico", - "block.create.mechanical_piston_head": "Cabeza de Pistón Mecánico", - "block.create.mechanical_plough": "Arado Mecánico", - "block.create.mechanical_press": "Prensa Mecánica", - "block.create.mechanical_pump": "Bomba Mecánica", - "block.create.mechanical_saw": "Sierra Mecánica", - "block.create.metal_bracket": "Soporte de Metal", - "block.create.millstone": "Molino", - "block.create.minecart_anchor": "Ancla de Vagonetas", - "block.create.mossy_andesite": "Andesita Musgosa", - "block.create.mossy_dark_scoria": "Escoria Oscura Musgosa", - "block.create.mossy_diorite": "Diorita Musgosa", - "block.create.mossy_dolomite": "Dolomita Musgosa", - "block.create.mossy_gabbro": "Gabro Musgoso", - "block.create.mossy_granite": "Granito Musgoso", - "block.create.mossy_limestone": "Caliza Musgosa", - "block.create.mossy_scoria": "Escoria Musgosa", - "block.create.mossy_weathered_limestone": "Caliza Meteorizada Musgosa", - "block.create.mysterious_cuckoo_clock": "Reloj Cuco", - "block.create.natural_scoria": "Escoria Natural", - "block.create.nixie_tube": "Tubo Nixie", - "block.create.nozzle": "Boquilla", - "block.create.oak_window": "Ventana de Roble", - "block.create.oak_window_pane": "Panel de Ventana de Roble", - "block.create.orange_sail": "Vela Naranja", - "block.create.orange_seat": "Asiento Naranja", - "block.create.orange_valve_handle": "Manija de Válvula Naranja", - "block.create.ornate_iron_window": "Ventana Ornamentada", - "block.create.ornate_iron_window_pane": "Panel de Ventana Ornamentada", - "block.create.overgrown_andesite": "Andesita Descuidada", - "block.create.overgrown_dark_scoria": "Escoria Oscura Descuidada", - "block.create.overgrown_diorite": "Diorita Descuidada", - "block.create.overgrown_dolomite": "Dolomita Descuidada", - "block.create.overgrown_gabbro": "Gabro Descuidado", - "block.create.overgrown_granite": "Granito Descuidado", - "block.create.overgrown_limestone": "Caliza Descuidada", - "block.create.overgrown_scoria": "Escoria Descuidada", - "block.create.overgrown_weathered_limestone": "Caliza Meteorizada Descuidada", - "block.create.paved_andesite": "Andesita Pavimentada", - "block.create.paved_andesite_slab": "Losa de Andesita Pavimentada", - "block.create.paved_andesite_stairs": "Escaleras de Andesita Pavimentada", - "block.create.paved_andesite_wall": "Pared de Andesita Pavimentada", - "block.create.paved_dark_scoria": "Escoria Oscura Pavimentada", - "block.create.paved_dark_scoria_slab": "Losa de Escoria Oscura Pavimentada", - "block.create.paved_dark_scoria_stairs": "Escaleras de Escoria Oscura Pavimentada", - "block.create.paved_dark_scoria_wall": "Pared de Escoria Oscura Pavimentada", - "block.create.paved_diorite": "Diorita Pavimentada", - "block.create.paved_diorite_slab": "Losa de Diorita Pavimentada", - "block.create.paved_diorite_stairs": "Escaleras de Diorita Pavimentada", - "block.create.paved_diorite_wall": "Pared de Diorita Pavimentada", - "block.create.paved_dolomite": "Dolomita Pavimentada", - "block.create.paved_dolomite_slab": "Losa de Dolomita Pavimentada", - "block.create.paved_dolomite_stairs": "Escaleras de Dolomita Pavimentada", - "block.create.paved_dolomite_wall": "Pared de Dolomita Pavimentada", - "block.create.paved_gabbro": "Gabro Pavimentado", - "block.create.paved_gabbro_slab": "Losa de Gabro Pavimentado", - "block.create.paved_gabbro_stairs": "Escaleras de Gabro Pavimentado", - "block.create.paved_gabbro_wall": "Pared de Gabro Pavimentado", - "block.create.paved_granite": "Granito Pavimentado", - "block.create.paved_granite_slab": "Losa de Granito Pavimentado", - "block.create.paved_granite_stairs": "Escaleras de Granito Pavimentado", - "block.create.paved_granite_wall": "Pared de Granito Pavimentado", - "block.create.paved_limestone": "Caliza Pavimentada", - "block.create.paved_limestone_slab": "Losa de Caliza Pavimentada", - "block.create.paved_limestone_stairs": "Escaleras de Caliza Pavimentada", - "block.create.paved_limestone_wall": "Pared de Caliza Pavimentada", - "block.create.paved_scoria": "Escoria Pavimentada", - "block.create.paved_scoria_slab": "Losa de Escoria Pavimentada", - "block.create.paved_scoria_stairs": "Escaleras de Escoria Pavimentada", - "block.create.paved_scoria_wall": "Pared de Escoria Pavimentada", - "block.create.paved_weathered_limestone": "Caliza Meteorizada Pavimentada", - "block.create.paved_weathered_limestone_slab": "Losa de Caliza Meteorizada Pavimentada", - "block.create.paved_weathered_limestone_stairs": "Escaleras de Caliza Meteorizada Pavimentada", - "block.create.paved_weathered_limestone_wall": "Pared de Caliza Meteorizada Pavimentada", - "block.create.pink_sail": "Vela Rosa", - "block.create.pink_seat": "Asiento Rosa", - "block.create.pink_valve_handle": "Manija de Válvula Rosa", - "block.create.piston_extension_pole": "Poste de Extensión de Pistón", - "block.create.polished_dark_scoria": "Escoria Oscura Pulida", - "block.create.polished_dark_scoria_slab": "Losa de Escoria Oscura Pulida", - "block.create.polished_dark_scoria_stairs": "Escaleras de Escoria Oscura Pulida", - "block.create.polished_dark_scoria_wall": "Pared de Escoria Oscura Pulida", - "block.create.polished_dolomite": "Dolomita Pulida", - "block.create.polished_dolomite_slab": "Losa de Dolomita Pulida", - "block.create.polished_dolomite_stairs": "Escaleras de Dolomita Pulida", - "block.create.polished_dolomite_wall": "Pared de Dolomita Pulida", - "block.create.polished_gabbro": "Gabro Pulido", - "block.create.polished_gabbro_slab": "Losa de Gabro Pulido", - "block.create.polished_gabbro_stairs": "Escaleras de Gabro Pulido", - "block.create.polished_gabbro_wall": "Pared de Gabro Pulido", - "block.create.polished_limestone": "Caliza Pulida", - "block.create.polished_limestone_slab": "Losa de Caliza Pulida", - "block.create.polished_limestone_stairs": "Escaleras de Caliza Pulida", - "block.create.polished_limestone_wall": "Pared de Caliza Pulida", - "block.create.polished_scoria": "Escoria Pulida", - "block.create.polished_scoria_slab": "Losa de Escoria Pulida", - "block.create.polished_scoria_stairs": "Escaleras de Escoria Pulida", - "block.create.polished_scoria_wall": "Pared de Escoria Pulida", - "block.create.polished_weathered_limestone": "Caliza Meteorizada Pulida", - "block.create.polished_weathered_limestone_slab": "Losa de Escoria Pulida", - "block.create.polished_weathered_limestone_stairs": "Escaleras de Escoria Pulida", - "block.create.polished_weathered_limestone_wall": "Pared de Escoria Pulida", - "block.create.portable_fluid_interface": "Interfaz de Fluidos Portable", - "block.create.portable_storage_interface": "Interfaz de Almacenamiento Portable", - "block.create.powered_latch": "Cerradura Electrica", - "block.create.powered_toggle_latch": "Cerradura Electrica de Palanca", - "block.create.pulley_magnet": "Polea con Imán", - "block.create.pulse_repeater": "Repetidor de Pulso", - "block.create.purple_sail": "Vela Morada", - "block.create.purple_seat": "Asiento Morado", - "block.create.purple_valve_handle": "Manija de Válvula Morada", - "block.create.radial_chassis": "Chasis Radial", - "block.create.red_sail": "Vela Roja", - "block.create.red_seat": "Asiento Rojo", - "block.create.red_valve_handle": "Manija de Válvula Roja", - "block.create.redstone_contact": "Contacto de Redstone", - "block.create.redstone_link": "Enlace de Redstone", - "block.create.refined_radiance_casing": "Carcasa Radiante", - "block.create.reinforced_rail": "Vía Reforzada", - "block.create.rope": "Cuerda", - "block.create.rope_pulley": "Polea con Cuerda", - "block.create.rotation_speed_controller": "Controlador de Velocidad de Rotación", - "block.create.sail_frame": "Marco de Vela", - "block.create.schematic_table": "Mesa de Esquemas", - "block.create.schematicannon": "Esquemacañon", - "block.create.scoria": "Escoria", - "block.create.scoria_bricks": "Ladrillos de Escoria", - "block.create.scoria_bricks_slab": "Losa de Ladrillos de Escoria", - "block.create.scoria_bricks_stairs": "Escaleras de Ladrillos de Escoria", - "block.create.scoria_bricks_wall": "Pared de Ladrillos de Escoria", - "block.create.scoria_cobblestone": "Piedra Labrada de Escoria", - "block.create.scoria_cobblestone_slab": "Losa de Piedra Labrada de Escoria", - "block.create.scoria_cobblestone_stairs": "Escaleras de Piedra Labrada de Escoria", - "block.create.scoria_cobblestone_wall": "Pared de Piedra Labrada de Escoria", - "block.create.scoria_pillar": "Pilar de Escoria", - "block.create.secondary_linear_chassis": "Chasis Lineal Secundario", - "block.create.sequenced_gearshift": "Cambio de Marcha Secuenciado", - "block.create.shadow_steel_casing": "Carcasa Sombría", - "block.create.shaft": "Eje", - "block.create.smart_fluid_pipe": "Tubería de Fluidos Inteligente", - "block.create.speedometer": "Velocímetro", - "block.create.spout": "Canaleta", - "block.create.spruce_window": "Ventana de Abeto", - "block.create.spruce_window_pane": "Panel de Ventana de Abeto", - "block.create.sticky_mechanical_piston": "Pistón Mecánico Pegajoso", - "block.create.stockpile_switch": "Interruptor de Pila", - "block.create.stressometer": "Estresómetro", - "block.create.tiled_glass": "Vidrio de Azulejos", - "block.create.tiled_glass_pane": "Panel de Vidrio de Azulejos", - "block.create.turntable": "Mesa Giratoria", - "block.create.vertical_framed_glass": "Vidrio Enmarcado Vertical", - "block.create.vertical_framed_glass_pane": "Panel de Vidrio Enmarcado Vertical", - "block.create.warped_window": "Ventana Distorsionada", - "block.create.warped_window_pane": "Panel de ventana Distorsionada", - "block.create.water_wheel": "Rueda Hidráulica", - "block.create.weathered_limestone": "Caliza Meteorizada", - "block.create.weathered_limestone_bricks": "Ladrillos de Caliza Meteorizada", - "block.create.weathered_limestone_bricks_slab": "Losa de Caliza Meteorizada", - "block.create.weathered_limestone_bricks_stairs": "Escaleras de Caliza Meteorizada", - "block.create.weathered_limestone_bricks_wall": "Pared de Caliza Meteorizada", - "block.create.weathered_limestone_cobblestone": "Piedra Labrada de Caliza Meteorizada", - "block.create.weathered_limestone_cobblestone_slab": "Losa de Piedra Labrada de Caliza Meteorizada", - "block.create.weathered_limestone_cobblestone_stairs": "Escaleras de Piedra Labrada de Caliza Meteorizada", - "block.create.weathered_limestone_cobblestone_wall": "Pared de Piedra Labrada de Caliza Meteorizada", - "block.create.weathered_limestone_pillar": "Pilar de Caliza Meteorizada", - "block.create.white_sail": "Vela Blanca", - "block.create.white_seat": "Asiento Blanco", - "block.create.white_valve_handle": "Manija de Válvula Blanca", - "block.create.windmill_bearing": "Rodamiento de Molino de Viento", - "block.create.wooden_bracket": "Soporte de Madera", - "block.create.yellow_sail": "Vela Amarilla", - "block.create.yellow_seat": "Asiento Amarillo", - "block.create.yellow_valve_handle": "Manija de Válvula Amarilla", - "block.create.zinc_block": "Bloque de Zinc", - "block.create.zinc_ore": "Mineral de Zinc", - - "entity.create.contraption": "Artefacto", - "entity.create.seat": "Asiento", - "entity.create.stationary_contraption": "Artefacto Estacionario", - "entity.create.super_glue": "Super Pegamento", - - "fluid.create.chocolate": "Chocolate", - "fluid.create.honey": "Miel", - "fluid.create.milk": "Leche", - "fluid.create.potion": "Poción", - "fluid.create.tea": "Té del Constructor", - - "item.create.andesite_alloy": "Aleación de Andesita", - "item.create.attribute_filter": "Filtro por Atributos", - "item.create.bar_of_chocolate": "Barra de Chocolate", - "item.create.belt_connector": "Conector de Correa", - "item.create.blaze_cake": "Pastel de Blaze", - "item.create.blaze_cake_base": "Base de Pastel de Blaze", - "item.create.brass_hand": "Mano de Latón", - "item.create.brass_ingot": "Lingote de Latón", - "item.create.brass_nugget": "Pepita de Latón", - "item.create.brass_sheet": "Lámina de Latón", - "item.create.builders_tea": "Té del Constructor", - "item.create.chest_minecart_contraption": "Artefacto de Vagón con Cofre", - "item.create.chocolate_bucket": "Cubeta de Chocolate", - "item.create.chromatic_compound": "Compuesto Cromático", - "item.create.cinder_flour": "Ceniza Molida", - "item.create.copper_ingot": "Lingote de Cobre", - "item.create.copper_nugget": "Pepita de Cobre", - "item.create.copper_sheet": "Lámina de Cobre", - "item.create.crafter_slot_cover": "Cubierta de Ranura del Crafter", - "item.create.crushed_aluminum_ore": "Mineral de Aluminio Molido", - "item.create.crushed_brass": "Latón Molido", - "item.create.crushed_copper_ore": "Mineral de Cobre Molido", - "item.create.crushed_gold_ore": "Mineral de Oro Molido", - "item.create.crushed_iron_ore": "Mineral de Hierro Molido", - "item.create.crushed_lead_ore": "Mineral de Plomo Molido", - "item.create.crushed_nickel_ore": "Mineral de Nickel Molido", - "item.create.crushed_osmium_ore": "Mineral de Osmio Molido", - "item.create.crushed_platinum_ore": "Mineral de Platino Molido", - "item.create.crushed_quicksilver_ore": "Mineral de Mercurio Molido", - "item.create.crushed_silver_ore": "Mineral de Plata Molido", - "item.create.crushed_tin_ore": "Mineral de Estaño Molido", - "item.create.crushed_uranium_ore": "Mineral de Uranio Molido", - "item.create.crushed_zinc_ore": "Mineral de Zinc Molido", - "item.create.deforester": "Deforestador", - "item.create.dough": "Masa", - "item.create.electron_tube": "Válvula Electrónica", - "item.create.empty_blaze_burner": "Quemador de Blaze Vacío", - "item.create.empty_schematic": "Esquema Vacío", - "item.create.extendo_grip": "Brazo Extensor", - "item.create.extendo_grip": "Brazo Extensor", - "item.create.filter": "Filtro", - "item.create.furnace_minecart_contraption": "Artefacto de Vagón con Horno", - "item.create.goggles": "Gafas de Protección para Ingenieros", - "item.create.golden_sheet": "Lámina de Oro", - "item.create.handheld_blockzapper": "Pistola de Manipulación de Bloques", - "item.create.handheld_worldshaper": "Pistola de Manipulación de Mundo", - "item.create.honey_bucket": "Cubeta de Miel", - "item.create.integrated_circuit": "Circuito Integrado", - "item.create.iron_sheet": "Lámina de Hierro", - "item.create.lapis_sheet": "Lámina de Lapislázuli", - "item.create.minecart_contraption": "Artefacto de Vagón", - "item.create.minecart_coupling": "Acoplamiento de Vagonetas", - "item.create.polished_rose_quartz": "Cuarzo Rosa Pulido", - "item.create.powdered_obsidian": "Polvo de Obsidiana", - "item.create.propeller": "Hélice", - "item.create.red_sand_paper": "Papel de Arena Roja", - "item.create.refined_radiance": "Radiancia Refinada", - "item.create.rose_quartz": "Cuarzo Rosa", - "item.create.sand_paper": "Papel de Arena", - "item.create.schematic": "Esquema", - "item.create.schematic_and_quill": "Esquema y Pluma", - "item.create.shadow_steel": "Acero Sombrío", - "item.create.super_glue": "Super Pegamento", - "item.create.tree_fertilizer": "Fertilizador de Árboles", - "item.create.vertical_gearbox": "Transmisión Vertical", - "item.create.wand_of_symmetry": "Vara de la Simetria", - "item.create.wheat_flour": "Harina de Trigo", - "item.create.whisk": "Batidor", - "item.create.wrench": "Llave Inglesa", - "item.create.zinc_ingot": "Lingote de Zinc", - "item.create.zinc_nugget": "Pepita de Zinc", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.andesite_encased_shaft.tooltip": "EJE EMPOTRADO DE ANDESITA", - "block.create.andesite_encased_shaft.tooltip.summary": "Objeto _exclusivo_ _del_ _Creativo_ .Cubre los ejes _en_ _el_ _mundo_ usando Carcasa de _Andesita_ . Los bloques de carcasa no se consumirán.", - - "block.create.brass_encased_shaft.tooltip": "EJE EMPOTRADO DE LATÓN", - "block.create.brass_encased_shaft.tooltip.summary": "Objeto _exclusivo_ _del_ _Creativo_ .Cubre los ejes _en_ _el_ _mundo_ usando Carcasa de _Latón_ . Los bloques de carcasa no se consumirán.", - - "block.create.wooden_bracket.tooltip": "SOPORTE DE MADERA", - "block.create.wooden_bracket.tooltip.summary": "_Decora_ tus _ejes,_ _ruedas_ _dentadas_ y _tuberías_ con un pequeño y acogedor refuerzo de madera", - - "block.create.metal_bracket.tooltip": "SOPORTE DE METAL", - "block.create.metal_bracket.tooltip.summary": "_Decora_ tus _ejes,_ _ruedas_ _dentadas_ y _tuberías_ con un robusto refuerzo industrial de metal", - - "block.create.andesite_casing.tooltip": "CARCASA DE ANDESITA", - "block.create.andesite_casing.tooltip.summary": "Una simple carcasa para máquinas con una variedad de usos. Segura para la decoración. Se puede usar para cubrir _ejes_ y _correas_ _mecánicas_ .", - - "block.create.andesite_funnel.tooltip": "EMBUDO DE ANDESITA", - "block.create.andesite_funnel.tooltip.summary": "Un componente de transferencia de objetos generales, que hace la transición entre los medios de transporte. Puede ser controlado con una _señal_ _de_ _redstone_ .", - "block.create.andesite_funnel.tooltip.condition1": "Comportamiento General", - "block.create.andesite_funnel.tooltip.behaviour1": "La _cara_ _abierta_ recogerá los _objetos_ en el bloque que tiene delante y los _introducirá_ en cualquier contenedor en el lado opuesto del embudo.", - "block.create.andesite_funnel.tooltip.condition2": "Cuando se monta en correas, depósitos y similares", - "block.create.andesite_funnel.tooltip.behaviour2": "_Recoge_ o _Coloca_ artículos en el componente montado, desde o hacia el _inventario_ _detrás_ de sí mismo. Siempre que el embudo tenga una direccionalidad específica, esta puede ser invertida usando una llave inglesa.", - "block.create.andesite_funnel.tooltip.condition3": "Cuando esta vertical entre dos inventarios", - "block.create.andesite_funnel.tooltip.behaviour3": "_Transferirá_ los objetos _hacia abajo_ , como si fuera una tolva sin buffer.", - - "block.create.andesite_tunnel.tooltip": "TÚNEL DE ANDESITA", - "block.create.andesite_tunnel.tooltip.summary": "Una cubierta protectora para sus _Correas_ y una gran manera de cubrir los agujeros dejados en su pared por ellas.", - "block.create.andesite_tunnel.tooltip.control1": "Click derecho a un lado con la llave inglesa", - "block.create.andesite_tunnel.tooltip.action1": "Ajusta las percianas de la ventana si el túnel tiene una en esa cara.", - - "block.create.brass_funnel.tooltip": "EMBUDO DE LATÓN", - "block.create.brass_funnel.tooltip.summary": "Un componente de transferencia de objetos generales, que hace la transición entre los medios de transporte. Puede ser controlado con una _señal_ _de_ _redstone_ . Viene con un practico _filtro_ .", - "block.create.brass_funnel.tooltip.condition1": "Comportamiento General", - "block.create.brass_funnel.tooltip.behaviour1": "La _cara_ _abierta_ recogerá los _objetos_ en el bloque que tiene delante y los _introducirá_ en cualquier contenedor en el lado opuesto del embudo.", - "block.create.brass_funnel.tooltip.condition2": "Cuando se monta en correas, depósitos y similares", - "block.create.brass_funnel.tooltip.behaviour2": "_Recoge_ o _Coloca_ artículos en el componente montado, desde o hacia el _inventario_ _detrás_ de sí mismo. Siempre que el embudo tenga una direccionalidad específica, esta puede ser invertida usando una llave inglesa.", - "block.create.brass_funnel.tooltip.condition3": "Cuando esta vertical entre dos inventarios", - "block.create.brass_funnel.tooltip.behaviour3": "_Transferirá_ los objetos _hacia abajo_ , como si fuera una tolva sin buffer.", - - "block.create.brass_tunnel.tooltip": "TÚNEL DE LATÓN", - "block.create.brass_tunnel.tooltip.summary": "El _Túnel_ _de_ _Latón_ vienen con un número de opciones de _filtrado_ y _separación_ de objetos para sus _correas_ .", - "block.create.brass_tunnel.tooltip.condition1": "Cuando se colocan uno al lado del otro", - "block.create.brass_tunnel.tooltip.behaviour1": "Los _Túneles_ _de_ _Latón_ se conectan entre sí permitiendo que el contenido de una _correa_ sea redirigido a otra.", - "block.create.brass_tunnel.tooltip.condition2": "Filtraje", - "block.create.brass_tunnel.tooltip.behaviour2": "Los _Túneles_ _de_ _ Latón_ vienen con filtros tanto para la entrada como para la salida. Si un _objeto_ no está permitido desde el filtro de salida de un _Túnel_ será transferido a la salida de otro _Túnel_ conectado.", - "block.create.brass_tunnel.tooltip.condition3": "Dividiendo", - "block.create.brass_tunnel.tooltip.behaviour3": "Los _Túneles_ _de_ _Latón_ de pueden ser configurados para cambiar el método en el que se ordenan los _objetos_ en las _correas_ conectadas.", - "block.create.brass_tunnel.tooltip.control1": "Click derecho a un lado con la llave inglesa", - "block.create.brass_tunnel.tooltip.action1": "Ajusta las percianas de la ventana si el túnel tiene una en esa cara.", - "block.create.brass_tunnel.tooltip.control2": "Girar la rueda del ratón con la llave inglesa en la parte superior", - "block.create.brass_tunnel.tooltip.action2": "Cambia el método de división de los _túneles_ conectados.", - - "block.create.copper_casing.tooltip": "CARCASA DE COBRE", - "block.create.copper_casing.tooltip.summary": "Una simple carcasa para máquinas con una variedad de usos. Segura para la decoración.", - "block.create.copper_casing.tooltip.condition1": "Cuando se usa en una Tubería de Fluidos", - "block.create.copper_casing.tooltip.behaviour1": "Recubre la _Tubería_ _de_ _Fluidos_ con la _Carcasa_ _de_ _Cobre._ Las tuberías recubiertas _bloquearán_ _sus_ _conexiones_ en su lugar, ya no reaccionarán a los cambios de las tuberías vecinas.", - - "block.create.encased_fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS RECUBIERTA", - "block.create.encased_fluid_pipe.tooltip.summary": "Una _Tubería_ _de_ _Fluidos_ recubierta con una _Carcasa_ _de_ _Cobre_", - - "block.create.copper_valve_handle.tooltip": "MANIJA DE VÁLVULA DE COBRE", - "block.create.copper_valve_handle.tooltip.summary": "Una precisa _fuente_ de _Fuerza_ _Rotacional_ que requiere la interacción de los jugadores. ¡Ten cuidado de no desgastarte!", - "block.create.copper_valve_handle.tooltip.condition1": "Cuando se usa", - "block.create.copper_valve_handle.tooltip.behaviour1": "Proporciona _fuerza_ _rotacional_ a un artefacto adjunto. _agáchate_ _para_ _revertir_ la rotación.", - - "block.create.seat.tooltip": "ASIENTO", - "block.create.seat.tooltip.summary": "¡Siéntese y disfrute del paseo! Anclará a un jugador en una _artefacto_ en movimiento. ¡También es Grandioso para las construcciones estáticas! Viene en una variedad de colores.", - "block.create.seat.tooltip.condition1": "Click Derecho en el asiento", - "block.create.seat.tooltip.behaviour1": "Sienta al jugador en el _asiento_ . Presiona el shift izquierdo para salir del _asiento._", - - "block.create.chute.tooltip": "VERTEDOR", - "block.create.chute.tooltip.summary": "_Recoge_ y transporta objetos en vertical o en diagonal. Puede llevar y colocar los objetos en _contenedores._ También puede interactuar con los vertedores desde el lado usando _tolvas_ o _embudos_ _montados._", - "block.create.chute.tooltip.condition1": "Cuando es usado con un ventilador", - "block.create.chute.tooltip.behaviour1": "Los vertedores usados con _ventiladores_ pueden transportar _objetos_ hacia arriba y succionar _objetos_ de _depósitos_ y _correas._", - - "block.create.depot.tooltip": "DEPÓSITO", - "block.create.depot.tooltip.summary": "Un lugar práctico para colocar sus _Objetos._ Proporciona un punto de interacción para varias máquinas", - "block.create.depot.tooltip.condition1": "Click Derecho en un Depósito", - "block.create.depot.tooltip.behaviour1": "Coloca o toma un _objeto_ del _depósito._ Los _bloques_ y _artefactos_ que interactúan con una _correa_ también funcionan en un _depósito._", - - "item.create.blaze_cake.tooltip": "PASTEL DE BLAZE", - "item.create.blaze_cake.tooltip.summary": "Un delicioso regalo para tus grandiosos _quemadores_ _de_ _blaze._ ¡Los enciende a todos!", - - "item.create.empty_blaze_burner.tooltip": "QUEMADOR DE BLAZE VACIO", - "item.create.empty_blaze_burner.tooltip.summary": "Un pequeño hogar de hierro para tus ardientes amigos. Estoy seguro de que podrías darles un buen uso.", - "item.create.empty_blaze_burner.tooltip.condition1": "Cuando es usado en un generador de blaze", - "item.create.empty_blaze_burner.tooltip.behaviour1": "_Captura_ un blaze en el objeto", - - "block.create.fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS", - "block.create.fluid_pipe.tooltip.summary": "Se usa para mover _fluidos._ Necesita una _bomba_ _mecánica_ para mover el fluido.", - "block.create.fluid_pipe.tooltip.condition1": "Transferencia de fluidos", - "block.create.fluid_pipe.tooltip.behaviour1": "Puede conectarse a _contenedores_ _de_ _fluidos_ como _tanques_ o _cuencas._ Los extremos expuestos de las _tuberías_ también pueden drenar o colocar bloques de fluido. ¡Ten cuidado con las fugas!", - "block.create.fluid_pipe.tooltip.control1": "Click Derecho con una Llave Inglesa", - "block.create.fluid_pipe.tooltip.action1": "Coloca una ventana en la tubería si está disponible", - - "block.create.hose_pulley.tooltip": "POLEA CON MANGUERA", - "block.create.hose_pulley.tooltip.summary": "Se utiliza para _colocar_ o _drenar_ grandes _cuerpos_ _de_ _fluido_ en el mundo.", - "block.create.hose_pulley.tooltip.condition1": "Cuando es impulsado por la cinética", - "block.create.hose_pulley.tooltip.behaviour1": "_Sube_ o _baja_ la manguera, La ubicación de la manguera determina hasta qué _altura_ actuará la _extracción_ o el _llenado_ .", - "block.create.hose_pulley.tooltip.condition2": "Cuando los fluidos son extraídos de la polea", - "block.create.hose_pulley.tooltip.behaviour2": "Empieza a _extraer_ bloques de _líquido_ del cuerpo en el que se bajó la punta de la manguera. Los cuerpos de fluido _muy_ _grandes_ serán _considerados_ _infinitos_ .", - "block.create.hose_pulley.tooltip.condition3": "Cuando los fluidos son empujados a la polea", - "block.create.hose_pulley.tooltip.behaviour3": "Comienza a _llenar_ con _fluido_ en el mundo _hasta_ _arriba_ a la _altura_ de la _punta_ _de_ _la_ _manguera_ .", - - "block.create.fluid_tank.tooltip": "TANQUE DE FLUIDOS", - "block.create.fluid_tank.tooltip.summary": "Almacena todos tus _fluidos_ favoritos. Escala en anchura y altura.", - "block.create.fluid_tank.tooltip.condition1": "Click Derecho con una Llave Inglesa", - "block.create.fluid_tank.tooltip.behaviour1": "Cambia la ventana opcional", - - "block.create.creative_fluid_tank.tooltip": "TANQUE DE FLUIDOS DEL CREATIVO", - "block.create.creative_fluid_tank.tooltip.summary": "Este _Tanque_ _de_ _Fluidos_ permite la replicación infinita de cualquier Fluido. Escala en anchura y altura.", - "block.create.creative_fluid_tank.tooltip.condition1": "Cuando hay fluido en el tanque", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Cualquier cosa que _extraiga_ de este tanque proporcionará un _suministro_ _ilimitado_ del fluido especificado. Los fluidos _insertados_ en este tanque serán _eliminados._", - "block.create.creative_fluid_tank.tooltip.condition2": "Click Derecho con una Llave Inglesa", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Cambia la ventana opcional", - - "block.create.fluid_valve.tooltip": "VÁLVULAL DE FLUIDOS", - "block.create.fluid_valve.tooltip.summary": "Detiene el flujo de fluido por una tubería.", - "block.create.fluid_valve.tooltip.condition1": "Flujo controlable", - "block.create.fluid_valve.tooltip.behaviour1": "Aplicando una _fuerza_ _de_ _rotación_ forzará a la _válvula_ a cerrarse, cesando el flujo de _fluidos._ Invierte la dirección de la _fuerza_ _de_ _rotación_ para reabrir la válvula.", - - "block.create.mechanical_pump.tooltip": "BOMBA MECÁNICA", - "block.create.mechanical_pump.tooltip.summary": "Toma la _fuerza_ _de_ _rotación_ y la usa para mover el _fluido_ a lo largo de un _tubo._ Tiene un rango de efecto máximo en ambas direcciones. (16 bloques por defecto)", - "block.create.mechanical_pump.tooltip.condition1": "Flujo de fluidos", - "block.create.mechanical_pump.tooltip.behaviour1": "La _fuerza_ _de_ _rotación_ aplicada crea una presión que fuerza el _fluido_ a través de la red de _tuberías._ Invierte la dirección de la fuerza de rotación para cambiar la dirección en la que fluye el _fluido._", - "block.create.mechanical_pump.tooltip.control1": "Click Derecho con una Llave Inglesa", - "block.create.mechanical_pump.tooltip.action1": "Invierte la dirección de la _bomba,_ cambiando la dirección por defecto del flujo", - - "block.create.smart_fluid_pipe.tooltip": "TUBERÍA DE FLUIDOS INTELIGENTE", - "block.create.smart_fluid_pipe.tooltip.summary": "Una _tubería_ _de_ _fluidos_ con un filtro. Puede especificar que _fluidos_ pasan por ella.", - "block.create.smart_fluid_pipe.tooltip.condition1": "Cuando los fluidos son empujados hacia ella", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Las tuberías inteligentes que reciben un fluido que no coincide con su filtro bloquearán el flujo.", - "block.create.smart_fluid_pipe.tooltip.condition2": "Cuando está adyacente a un recipiente de fluido", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Las tuberías inteligentes que _inicien_ un _flujo_ desde cualquier contenedor sólo extraerán los fluidos que _coincidan_ con su _filtro._", - - "block.create.spout.tooltip": "CANALETA", - "block.create.spout.tooltip.summary": "Un inyector para rellenar sus _objetos_ con _fluidos._", - "block.create.spout.tooltip.condition1": "Transferencia de fluidos", - "block.create.spout.tooltip.behaviour1": "Cuando se coloca un _objeto_ que puede _contener_ _fluidos_ como una _cubeta_ o _botella_ debajo, la canaleta intentará rellenarlo con su propio _fluido_ almacenado.", - "block.create.spout.tooltip.condition2": "Automatización de fluidos", - "block.create.spout.tooltip.behaviour2": "La canaleta colocada sobre una _correa_ o _depósito_ reaccionará automáticamente con un _contenedor_ _de_ _líquido_ que pase por debajo de él.", - - "block.create.item_drain.tooltip": "ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "Un depósito con rejilla para vaciar sus _objetos_ _con_ _fluidos._", - "block.create.item_drain.tooltip.condition1": "Transferencia de fluidos", - "block.create.item_drain.tooltip.behaviour1": "Cuando se inserta un _contenedor_ _de_ _fluidos_ como una _cubeta_ o _botella_ desde el lado, el extractor intentará vaciarlo en su propio _contenedor_ de _fluidos._ El objeto será entonces expulsado por el lado opuesto.", - - "block.create.mechanical_arm.tooltip": "MECHANICAL ARM", - "block.create.mechanical_arm.tooltip.summary": "Un artefacto avanzado para reubicar _objetos._", - "block.create.mechanical_arm.tooltip.condition1": "Transferencia de objetos", - "block.create.mechanical_arm.tooltip.behaviour1": "Puede tomar o colocar artículos en cualquier _inventario_ _accesible,_ como _Correas,_ _Depósitos,_ _Embudos_ y _Crafters_ _Mecánicos._", - "block.create.mechanical_arm.tooltip.control1": "Mientras que este en la mano", - "block.create.mechanical_arm.tooltip.action1": "Click Derecho en un _inventario_ _de_ _objetos_ _accesible_ para establecerlo como _fuente_ del _Brazo_ _Mecánico._ Haga clic derecho dos veces para establecerlo como el _destino._", - "block.create.mechanical_arm.tooltip.control2": "Girar la rueda del ratón con la llave inglesa", - "block.create.mechanical_arm.tooltip.action2": "Establece el criterio de comportamiento para la salida de los _objetos_ por el _Brazo_ _Mecánico._", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "Crea un 'espejo' que refleja perfectamente la colocación de bloques a través de los planos configurados.", - "item.create.wand_of_symmetry.tooltip.condition1": "Cuando esta en la barra de ítems", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Se mantiene activo", - "item.create.wand_of_symmetry.tooltip.control1": "Click Derecho en el suelo", - "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _mueve_ el 'espejo'.", - "item.create.wand_of_symmetry.tooltip.control2": "Click Derecho en el aire", - "item.create.wand_of_symmetry.tooltip.action2": "_Remueve_ el 'espejo' activo", - "item.create.wand_of_symmetry.tooltip.control3": "Click Derecho cuando se esta agachado", - "item.create.wand_of_symmetry.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración_", - - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Novedoso artilugio para colocar o intercambiar bloques a distancia.", - "item.create.handheld_blockzapper.tooltip.control1": "Click Izquierdo a un bloque", - "item.create.handheld_blockzapper.tooltip.action1": "Establece los bloques que serán colocados por la herramienta en el bloque objetivo.", - "item.create.handheld_blockzapper.tooltip.control2": "Click Derecho en un bloque", - "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ o _reemplaza_ el bloque objetivo.", - "item.create.handheld_blockzapper.tooltip.control3": "Click Derecho mientras se está agachado", - "item.create.handheld_blockzapper.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración._", - - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "Una herramienta útil para crear _paisajes_ y _características_ en el _terreno._", - "item.create.handheld_worldshaper.tooltip.control1": "Click Izquierdo a un bloque", - "item.create.handheld_worldshaper.tooltip.action1": "Establece los bloques que serán colocados por la herramienta en el bloque objetivo.", - "item.create.handheld_worldshaper.tooltip.control2": "Click Derecho en un bloque", - "item.create.handheld_worldshaper.tooltip.action2": "Aplica el _Pincel_ y la _Herramienta_ actualmente seleccionados en el lugar objetivo.", - "item.create.handheld_worldshaper.tooltip.control3": "Click Derecho mientras se está agachado", - "item.create.handheld_worldshaper.tooltip.action3": "Abre la _Interfaz_ _de_ _Configuración._", - - "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "Una poderosa combinación de minerales adecuados para acelerar el crecimiento de los tipos de árboles comunes.", - "item.create.tree_fertilizer.tooltip.condition1": "Cuando se usa en un retoño de árbol", - "item.create.tree_fertilizer.tooltip.behaviour1": "Hace crecer los árboles, sin importar el espacio entre ellos.", - - "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "Un _hacha_ _radiante_ capaz de cortar árboles en una fracción de segundo.", - - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "Boioioing! En gran medida, _aumenta_ _la_ _distancia_ _de_ _alcance_ del portador.", - "item.create.extendo_grip.tooltip.condition1": "Cuando está en la mano secundaria", - "item.create.extendo_grip.tooltip.behaviour1": "Aumenta el rango de alcance de los objetos usados en la _mano_ _principal._", - - "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "_Controla_ las _salidas_ y _entradas_ de los dispositivos logísticos con más _precisión,_ comparándolas con un _conjunto_ _de_ _objetos_ o varios _filtros_ _anidados._", - "item.create.filter.tooltip.condition1": "Cuando está en la ranura del filtro", - "item.create.filter.tooltip.behaviour1": "_Controla_ el flujo de objetos según su _configuración._", - "item.create.filter.tooltip.condition2": "Con Click Derecho", - "item.create.filter.tooltip.behaviour2": "Abre la _Interfaz_ _de_ _Configuración._", - - "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "_Controla_ las _salidas_ y _entradas_ de los dispositivos logísticos con más _precisión,_ comparándolas con un _conjunto_ _de_ _atributos_ _de_ _objetos_ y _categorias._", - "item.create.attribute_filter.tooltip.condition1": "Cuando está en la ranura del filtro", - "item.create.attribute_filter.tooltip.behaviour1": "_Controla_ el flujo de objetos según su _configuración._", - "item.create.attribute_filter.tooltip.condition2": "Con Click Derecho", - "item.create.attribute_filter.tooltip.behaviour2": "Abre la _Interfaz_ _de_ _Configuración._", - - "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "Se usa como ingrediente en una receta y para escribir en la _Mesa_ _de_ _Esquemas._", - - "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "Sostiene una estructura para ser posicionada y colocada en el mundo. Posiciona el Holograma como se desee y usa un _Esquemacañon_ para construirlo.", - "item.create.schematic.tooltip.condition1": "Cuando es sostenido", - "item.create.schematic.tooltip.behaviour1": "Se puede posicionar usando las Herramientas en Pantalla.", - "item.create.schematic.tooltip.control1": "Click Derecho mientras se está agachado", - "item.create.schematic.tooltip.action1": "Abre una _interfaz_ para introducir las _coordenadas_ exactas.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "Se usa para guardar una estructura de tu mundo en un archivo .nbt", - "item.create.schematic_and_quill.tooltip.condition1": "Paso 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Selecciona dos esquinas con Click Derecho.", - "item.create.schematic_and_quill.tooltip.condition2": "Paso 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ _+_ _girar_ _rueda_ _del_ _ratón_ en las caras para ajustar el tamaño. Click Derecho de nuevo para Guardar.", - "item.create.schematic_and_quill.tooltip.control1": "Click Derecho", - "item.create.schematic_and_quill.tooltip.action1": "Selecciona una esquina / confirma el guardado.", - "item.create.schematic_and_quill.tooltip.control2": "Manteniendo la tecla Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Selecciona los puntos en _medio_ _del_ _aire._ _Girar_ _rueda_ _del_ _ratón_ para ajustar la distancia.", - "item.create.schematic_and_quill.tooltip.control3": "Click Derecho mientras se está agachado", - "item.create.schematic_and_quill.tooltip.action3": "_Reinicia_ y quita la selección.", - - "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "Dispara bloques para recrear un _esquema_ ya desplegado en el mundo. Utiliza objetos de los inventarios adyacentes y _Pólvora_ como combustible.", - "block.create.schematicannon.tooltip.control1": "Click Derecho sobre él", - "block.create.schematicannon.tooltip.action1": "Abre la interfaz", - - "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "Escribe los esquemas guardados en un _Esquema_ _Vacío._", - "block.create.schematic_table.tooltip.condition1": "Cuando se le da un esquema vacío", - "block.create.schematic_table.tooltip.behaviour1": "Carga un archivo elegido de su carpeta de esquemas.", - - "block.create.shaft.tooltip": "SHAFT", - "block.create.shaft.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta.", - - "block.create.cogwheel.tooltip": "COGWHEEL", - "block.create.cogwheel.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta, y a las _Ruedas_ _Dentadas_ adyacentes.", - - "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", - "block.create.large_cogwheel.tooltip.summary": "Una versión más grande de la _Rueda_ _Dentada,_ que permite _cambiar_ _la_ _Velocidad_ _de_ _Rotación_ cuando se conecta a su Contraparte más pequeña.", - - "block.create.encased_shaft.tooltip": "ENCASED SHAFT", - "block.create.encased_shaft.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta. Adecuado para transmitir la rotación a través de las paredes.", - - "block.create.gearbox.tooltip": "GEARBOX", - "block.create.gearbox.tooltip.summary": "_Transmite_ la _rotación_ en _cuatro_ _direcciones._ Invierte las conexiones rectas.", - - "block.create.gearshift.tooltip": "GEARSHIFT", - "block.create.gearshift.tooltip.summary": "Un control para cambiar la dirección de rotación de los ejes conectados.", - "block.create.gearshift.tooltip.condition1": "Cuando tiene una señal de Redstone", - "block.create.gearshift.tooltip.behaviour1": "_Invierte_ la rotación de salida.", - - "block.create.clutch.tooltip": "CLUTCH", - "block.create.clutch.tooltip.summary": "Un control para activar/desactivar la rotación de los ejes conectados.", - "block.create.clutch.tooltip.condition1": "Cuando tiene una señal de Redstone", - "block.create.clutch.tooltip.behaviour1": "_Deja_ de transmitir la rotación hacia el otro lado.", - - "block.create.encased_chain_drive.tooltip": "ENCASED_CHAIN_DRIVE", - "block.create.encased_chain_drive.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta y a las _Transmisiones_ _de_ _Cadena_ _Empotrada_ adyacentes. Las transmisiones de cadena se conectan en un grupo cuando se colocan juntas por cualquier cara sin un eje. Su orientación no tiene por qué coincidir.", - "block.create.encased_chain_drive.tooltip.condition1": "Cuando se conectan", - "block.create.encased_chain_drive.tooltip.behaviour1": "Los bloques adjuntos transmitirán la _velocidad_ _de_ _rotación_ y el sentido de este componente.", - - "block.create.adjustable_chain_gearshift.tooltip": "ADJUSTABLE CHAIN GEARSHIFT", - "block.create.adjustable_chain_gearshift.tooltip.summary": "_Transmite_ la _rotación_ en una línea recta y a las _Transmisiones_ _de_ _Cadena_ _Empotrada_ adyacentes. Una _señal_ _de_ _redstone_ proporcionada a este bloque controlará el tamaño de la rueda motriz que se acopla a las cadenas de transmisión.", - "block.create.adjustable_chain_gearshift.tooltip.condition1": "Control por Redstone", - "block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Sin_ una señal, las cadenas adyacentes transmitirán la _misma_ _velocidad._ Con una señal a _máxima_ _potencia,_ las cadenas adyacentes transmitirán exactamente el _doble_ _de_ _su_ _velocidad._ Cualquier cosa intermedia dará resultados entre 1-2x su velocidad.", - - "item.create.belt_connector.tooltip": "BELT CONNECTOR", - "item.create.belt_connector.tooltip.summary": "Conecta dos o más _ejes_ con una _Correa_ _Mecánica._ Los ejes conectados tendrán exactamente la misma velocidad y dirección de rotación. La cinta puede actuar como un _transportador_ para _Objetos_ y _Entidades._", - "item.create.belt_connector.tooltip.control1": "Click Derecho en un eje", - "item.create.belt_connector.tooltip.action1": "Selecciona el eje como una polea del cinturón. Ambos ejes seleccionados tienen que _alinearse_ ya sea _Verticalmente,_ _Horizontalmente,_ o _Diagonalmente_ hacia la dirección de la Correa.", - "item.create.belt_connector.tooltip.control2": "Click Derecho mientras se está agachado", - "item.create.belt_connector.tooltip.action2": "_Reinicia_ la primera posición seleccionada para la correa.", - - "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "Un par de gafas para aumentar la visión con _información_ _cinética_ útil.", - "item.create.goggles.tooltip.condition1": "Cuando se usan", - "item.create.goggles.tooltip.behaviour1": "Muestra _indicadores_ _con_ _colores_ correspondientes al _Nivel_ _de_ _Velocidad_ de un componente cinético colocado, así como _Impacto_ _de_ _Estrés_ y _Capacidad_ de los componentes individuales.", - "item.create.goggles.tooltip.condition2": "Al mirar el medidor", - "item.create.goggles.tooltip.behaviour2": "Muestra información detallada sobre la _velocidad_ o el _estrés_ de la red a la que está conectado el medidor.", - - "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "Una herramienta útil para trabajar en artefactos cinéticos. Se puede utilizar para _Rotar,_ _Desmantelar_ y _Configurar_ componentes.", - "item.create.wrench.tooltip.control1": "Click Derecho en un bloqueo cinético", - "item.create.wrench.tooltip.action1": "_Gira_ los componentes hacia o en contra de la cara con la que interactuó.", - "item.create.wrench.tooltip.control2": "Click Derecho mientras se está agachado", - "item.create.wrench.tooltip.action2": "_Desmonta_ los _componentes_ _cinéticos_ y los coloca de nuevo en _tú_ _inventario._" - -} \ No newline at end of file diff --git a/src/main/resources/assets/create/lang/fr_fr.json b/src/main/resources/assets/create/lang/fr_fr.json deleted file mode 100644 index ddc79050d..000000000 --- a/src/main/resources/assets/create/lang/fr_fr.json +++ /dev/null @@ -1,1090 +0,0 @@ -{ - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "Fenêtre en acacia", - "block.create.acacia_window_pane": "Vitre en acacia", - "block.create.adjustable_crate": "Caisse ajustable", - "block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable", - "block.create.adjustable_repeater": "Répéteur réglable", - "block.create.analog_lever": "Levier analogique", - "block.create.andesite_belt_funnel": "Entonnoir en andésite pour tapis roulant", - "block.create.andesite_bricks": "Briques d'andésite", - "block.create.andesite_bricks_slab": "Dalle en briques d'andésite", - "block.create.andesite_bricks_stairs": "Escalier en briques d'andésite", - "block.create.andesite_bricks_wall": "Mur en briques d'andésite", - "block.create.andesite_casing": "Revêtement en andésite", - "block.create.andesite_cobblestone": "Pierres d'andésite", - "block.create.andesite_cobblestone_slab": "Dalles en pierres d'andésite", - "block.create.andesite_cobblestone_stairs": "Escaliers en pierres d'andésite", - "block.create.andesite_cobblestone_wall": "Mur en pierres d'andésite", - "block.create.andesite_encased_shaft": "Rotor dans un revêtement en andésite", - "block.create.andesite_funnel": "Entonnoir en andésite", - "block.create.andesite_pillar": "Pilier en andésite", - "block.create.andesite_tunnel": "Tunnel en andésite", - "block.create.basin": "Bassin", - "block.create.belt": "Tapis roulant", - "block.create.birch_window": "Fenêtre en bouleau", - "block.create.birch_window_pane": "Vitre en bouleau", - "block.create.black_sail": "Voile noire", - "block.create.black_seat": "Siège noir", - "block.create.black_valve_handle": "Vanne noire", - "block.create.blaze_burner": "Brûleur à blaze", - "block.create.blue_sail": "Voile bleue", - "block.create.blue_seat": "Siège bleu", - "block.create.blue_valve_handle": "Vanne bleue", - "block.create.brass_belt_funnel": "Entonnoir en laiton pour tapis roulant", - "block.create.brass_block": "Bloc de laiton", - "block.create.brass_casing": "Revêtement en laiton", - "block.create.brass_encased_shaft": "Rotor dans un revêtement en laiton", - "block.create.brass_funnel": "Entonnoir en laiton", - "block.create.brass_tunnel": "Tunnel en laiton", - "block.create.brown_sail": "Voile brune", - "block.create.brown_seat": "Siège brun", - "block.create.brown_valve_handle": "Vanne brune", - "block.create.cart_assembler": "Assembleur de wagon", - "block.create.chiseled_dark_scoria": "Scoria sombre taillé", - "block.create.chiseled_dolomite": "Dolomite taillée", - "block.create.chiseled_gabbro": "Gabbro taillé", - "block.create.chiseled_limestone": "Calcaire taillé", - "block.create.chiseled_scoria": "Scoria taillé", - "block.create.chiseled_weathered_limestone": "Calcaire altéré taillé", - "block.create.chocolate": "Chocolat", - "block.create.chute": "Glissière", - "block.create.clockwork_bearing": "Roulement mécanique horloger", - "block.create.clutch": "Embrayage", - "block.create.cogwheel": "Roue dentée", - "block.create.content_observer": "Observateur de contenu", - "block.create.controller_rail": "Rails controlleurs", - "block.create.copper_block": "Bloc de cuivre", - "block.create.copper_casing": "Revêtement en cuivre", - "block.create.copper_ore": "Minerai de cuivre", - "block.create.copper_shingles": "Bardeaux de cuivre", - "block.create.copper_tiles": "Tuiles en cuivre", - "block.create.copper_valve_handle": "Vanne en cuivre", - "block.create.creative_crate": "Créateur de schémacanon", - "block.create.creative_fluid_tank": "Réservoir créatif", - "block.create.creative_motor": "Moteur", - "block.create.crushing_wheel": "Roue de concassage", - "block.create.crushing_wheel_controller": "Contrôleur de roue de concassage", - "block.create.cuckoo_clock": "Horloge à coucou", - "block.create.cyan_sail": "Voile cyan", - "block.create.cyan_seat": "Siège cyan", - "block.create.cyan_valve_handle": "Vanne cyan", - "block.create.dark_oak_window": "fenêtre en chêne sombre", - "block.create.dark_oak_window_pane": "Vitre en chêne sombre", - "block.create.dark_scoria": "Scorie sombre", - "block.create.dark_scoria_bricks": "Briques de scorie sombre", - "block.create.dark_scoria_bricks_slab": "Dalles de briques de scorie sombre", - "block.create.dark_scoria_bricks_stairs": "Escaliers de briques de scorie sombre", - "block.create.dark_scoria_bricks_wall": "Muret de briques de scorie sombre", - "block.create.dark_scoria_cobblestone": "Pierres de scorie sombre", - "block.create.deployer": "Déployeur", - "block.create.depot": "Dépot", - "block.create.diorite_bricks": "Briques de diorite", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_bricks": "Briques de dolomite", - "block.create.dolomite_bricks_slab": "Dalle de briques de dolomite", - "block.create.dolomite_bricks_stairs": "Escaliers de briques de dolomite", - "block.create.dolomite_bricks_wall": "Muret de briques de dolomite", - "block.create.dolomite_pillar": "Pillier de dolomite", - "block.create.encased_chain_drive": "Chaine de transmission", - "block.create.encased_fan": "Ventilateur enchâssé", - "block.create.flywheel": "Volant d'inertie", - "block.create.framed_glass": "Grande fenêtre en verre", - "block.create.framed_glass_pane": "Grande vitre encadrée", - "block.create.furnace_engine": "Moteur de four", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Briques de gabbro", - "block.create.gabbro_bricks_stairs": "Escaliers en briques de gabbro", - "block.create.gabbro_bricks_wall": "Muret en briques de gabbro", - "block.create.gearbox": "Boîte à roue dentée", - "block.create.gearshift": "Décaleur de rotation", - "block.create.granite_bricks": "Briques de granite", - "block.create.hand_crank": "Manivelle", - "block.create.horizontal_framed_glass": "Fenêtre en verre horizontale", - "block.create.horizontal_framed_glass_pane": "Vitre encadrée horizontale", - "block.create.large_cogwheel": "Grande roue dentée", - "block.create.limesand": "Chaux", - "block.create.limestone": "Calcaire", - "block.create.limestone_bricks": "Briques de calcaire", - "block.create.limestone_bricks_slab": "Dalle de briques de calcaire", - "block.create.limestone_bricks_stairs": "Escaliers de briques de calcaire", - "block.create.limestone_bricks_wall": "Muret de briques de calcaire", - "block.create.limestone_pillar": "Pillier de calcaire", - "block.create.linear_chassis": "Châssis linéaire", - "block.create.mechanical_bearing": "Roulement mécanique", - "block.create.mechanical_crafter": "Établi mécanique", - "block.create.mechanical_drill": "Perceuse mécanique", - "block.create.mechanical_harvester": "Récolteuse mécanique", - "block.create.mechanical_mixer": "Mixeur mécanique", - "block.create.mechanical_piston": "Piston mécanique", - "block.create.mechanical_piston_head": "Tête de piston mécanique", - "block.create.mechanical_press": "Presse mécanique", - "block.create.mechanical_saw": "Scie mécanique", - "block.create.natural_scoria": "Scorie naturelle", - "block.create.nozzle": "Buse", - "block.create.piston_extension_pole": "Barre d'extension de piston", - "block.create.polished_dark_scoria": "Scorie sombre polie", - "block.create.polished_dolomite": "Dolomite polie", - "block.create.polished_gabbro": "Gabbro poli", - "block.create.polished_limestone": "Calcaire poli", - "block.create.polished_limestone_slab": "Dalle de calcaire polie", - "block.create.polished_scoria": "Scorie polie", - "block.create.polished_scoria_slab": "Dalle de scorie polie", - "block.create.polished_weathered_limestone": "Calcaire altéré polies", - "block.create.polished_weathered_limestone_slab": "Dalle de calcaire altéré", - "block.create.portable_storage_interface": "Interface de stockage portable", - "block.create.powered_latch": "Verrou alimenté", - "block.create.powered_toggle_latch": "Verrou alimenté à bascule", - "block.create.pulley_magnet": "Aimant de poulie", - "block.create.pulse_repeater": "Répéteur d'impulsions", - "block.create.radial_chassis": "Châssis radial", - "block.create.redstone_contact": "Contact de redstone", - "block.create.redstone_link": "Liaison Redstone", - "block.create.rope": "Corde", - "block.create.rope_pulley": "Poulie à corde", - "block.create.rotation_speed_controller": "Contrôleur de vitesse de rotation", - "block.create.schematic_table": "Table à schéma", - "block.create.schematicannon": "Schémacanon", - "block.create.scoria": "Scorie", - "block.create.scoria_bricks": "Briques de scorie", - "block.create.scoria_pillar": "Pillier de scorie", - "block.create.sequenced_gearshift": "Décaleur de rotation séquencé", - "block.create.shaft": "Rotor", - "block.create.speedometer": "Compteur de vitesse", - "block.create.sticky_mechanical_piston": "Piston mécanique collant", - "block.create.stockpile_switch": "Détecteur de stockage", - "block.create.stressometer": "Stressomètre", - "block.create.tiled_glass": "Verre carrelé", - "block.create.tiled_glass_pane": "Vitre carrelé", - "block.create.turntable": "Plaque tournante", - "block.create.vertical_framed_glass": "Fenêtre en verre verticale", - "block.create.vertical_framed_glass_pane": "Vitre encadrée verticale", - "block.create.water_wheel": "Roue à eau", - "block.create.weathered_limestone": "Calcaire altéré", - "block.create.weathered_limestone_bricks": "Briques de Calcaire altéré", - "block.create.weathered_limestone_bricks_slab": "Dalle de briques de Calcaire altéré", - "block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de Calcaire altéré", - "block.create.weathered_limestone_bricks_wall": "Muret de briques de Calcaire altéré", - "block.create.weathered_limestone_pillar": "Pillier de Calcaire altéré", - "block.create.zinc_block": "Bloc de zinc", - "block.create.zinc_ore": "Minerai de zinc", - - "entity.create.contraption": "Engin", - "entity.create.seat": "Siège", - "entity.create.stationary_contraption": "Engin stationnaire", - "entity.create.super_glue": "Colle extra-forte", - - "fluid.create.milk": "Lait", - "fluid.create.potion": "Potion", - "fluid.create.tea": "Thé du constructeur", - - "item.create.andesite_alloy": "Alliage d'andésite", - "item.create.attribute_filter": "Filtre d'attribut", - "item.create.bar_of_chocolate": "Barre de chocolat", - "item.create.belt_connector": "Tapis roulant", - "item.create.blaze_cake": "Cake au blaze", - "item.create.blaze_cake_base": "Base d'un cake au blase", - "item.create.brass_hand": "Main", - "item.create.brass_ingot": "Lingot de laiton", - "item.create.brass_nugget": "Pépite de laiton", - "item.create.brass_sheet": "Plaques de laiton", - "item.create.builders_tea": "Thé du constructeur", - "item.create.chest_minecart_contraption": "Engin de wagonnet avec coffre", - "item.create.chocolate_bucket": "Seau de chocolat", - "item.create.chromatic_compound": "Composé chromatique", - "item.create.cinder_flour": "Farine de braise", - "item.create.copper_ingot": "Lingot de cuivre", - "item.create.copper_nugget": "Pépite de cuivre", - "item.create.copper_sheet": "Plaques de cuivre", - "item.create.crafter_slot_cover": "Couvercle", - "item.create.crushed_aluminum_ore": "Aluminium concassé", - "item.create.crushed_brass": "Laiton concassé", - "item.create.crushed_copper_ore": "Cuivre concassé", - "item.create.crushed_gold_ore": "Or concassé", - "item.create.crushed_iron_ore": "Fer concassé", - "item.create.crushed_lead_ore": "Plomb concassé", - "item.create.crushed_nickel_ore": "Nickel concassé", - "item.create.crushed_osmium_ore": "Osmium concassé", - "item.create.crushed_platinum_ore": "Platinium concassé", - "item.create.crushed_quicksilver_ore": "Vif-argent concassé", - "item.create.crushed_silver_ore": "Argent concassé", - "item.create.crushed_tin_ore": "Etain concassé", - "item.create.crushed_uranium_ore": "Uranium concassé", - "item.create.crushed_zinc_ore": "Zinc concassé", - "item.create.deforester": "Déforesteur", - "item.create.dough": "Pâte", - "item.create.electron_tube": "Tube électronique", - "item.create.empty_blaze_burner": "Brûleur à blaze vide", - "item.create.empty_schematic": "Schéma vide", - "item.create.extendo_grip": "Extendo Grip", - "item.create.filter": "Filtre", - "item.create.furnace_minecart_contraption": "Engin de wagon avec fourneau", - "item.create.goggles": "Lunettes d'ingénieur", - "item.create.golden_sheet": "Feuille d'or", - "item.create.handheld_blockzapper": "Blockzappeur portable", - "item.create.handheld_worldshaper": "Térraformeur portable", - "item.create.honey_bucket": "Seau de miel", - "item.create.integrated_circuit": "Circuit intégré", - "item.create.iron_sheet": "Plaque de Fer", - "item.create.lapis_sheet": "Feuille de lapis", - "item.create.minecart_contraption": "Engin de wagonnet", - "item.create.minecart_coupling": "Lien pour wagonnet", - "item.create.polished_rose_quartz": "Quartz rose poli", - "item.create.powdered_obsidian": "Obsidienne concassée", - "item.create.propeller": "Hélice", - "item.create.red_sand_paper": "Papier de verre rouge", - "item.create.refined_radiance": "Éclat raffiné", - "item.create.rose_quartz": "Quartz rose", - "item.create.sand_paper": "Papier de verre", - "item.create.schematic": "Schéma", - "item.create.schematic_and_quill": "Schéma et plume", - "item.create.shadow_steel": "Acier sombre", - "item.create.super_glue": "Colle extra-forte", - "item.create.tree_fertilizer": "Engrais pour arbres", - "item.create.vertical_gearbox": "Boîte de transfert verticale", - "item.create.wand_of_symmetry": "Bâton de symétrie", - "item.create.wheat_flour": "Farine", - "item.create.whisk": "Fouet", - "item.create.wrench": "Clé", - "item.create.zinc_ingot": "Barre de zinc", - "item.create.zinc_nugget": "Pépite de zinc", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Bienvenue dans Create.", - "advancement.create.root.desc": "Le temps de la redstone est révolu!", - "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.its_alive": "Ça bouge!", - "advancement.create.its_alive.desc": "Regardez vos bremiers composants tourner.", - "advancement.create.shifting_gears": "rotor de transmission", - "advancement.create.shifting_gears.desc": "Connectez une roue dentée à une grande roue dentée afin de changer la vitesse de votre engin", - "advancement.create.overstressed": "Surtension", - "advancement.create.overstressed.desc": "Testez d'abord les limites de la force mécanique", - "advancement.create.lava_wheel": "Roue à aubes... dans de la lave?", - "advancement.create.lava_wheel.desc": "Cela... N'aurait pas dû fonctionner.", - "advancement.create.cuckoo": "C'est déjà l'heure?", - "advancement.create.windmill": "Une brise moyenne...", - "advancement.create.windmill.desc": "Construire un moulin à vent", - "advancement.create.maxed_windmill": "Et une forte brise.", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Palettes", - - "death.attack.create.crush": "%1$s a été concassé.e", - "death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud", - "death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave", - "death.attack.create.mechanical_drill": "%1$s a été empalé par une perceuse mécanique", - "death.attack.create.mechanical_saw": "%1$s a été coupé en deux par une scie mécanique", - "death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée", - - "create.block.deployer.damage_source_name": "un déployeur voyou", - - "create.recipe.crushing": "Ecrasement", - "create.recipe.milling": "Mouture", - "create.recipe.fan_washing": "Lavage", - "create.recipe.fan_washing.fan": "Ventilateur derrière de l'eau", - "create.recipe.fan_smoking": "Fumage", - "create.recipe.fan_smoking.fan": "Ventilateur derrière du feu", - "create.recipe.fan_blasting": "Fonte", - "create.recipe.fan_blasting.fan": "Ventilateur derrière de la lave", - "create.recipe.pressing": "Pressage", - "create.recipe.mixing": "Mixage", - "create.recipe.automatic_brewing": "Alchimie automatisée", - "create.recipe.packing": "Compactage", - "create.recipe.automatic_packing": "Compactage automatisé", - "create.recipe.sawing": "Sciage", - "create.recipe.mechanical_crafting": "Fabrication mécanique", - "create.recipe.block_cutting": "Coupe de bloc", - "create.recipe.blockzapper_upgrade": "Blockzappeur portable", - "create.recipe.sandpaper_polishing": "Polissage au papier de verre", - "create.recipe.mystery_conversion": "Métamorphose chromatique", - "create.recipe.spout_filling": "Remplissage par un bec verseur", - "create.recipe.processing.chance": "%1$s%% de chance", - "create.recipe.heat_requirement.none": "Pas de chauffage requis", - "create.recipe.heat_requirement.heated": "Chauffé", - "create.recipe.heat_requirement.superheated": "Surchauffé", - - "create.generic.range": "Portée", - "create.generic.radius": "Rayon", - "create.generic.width": "Largeur", - "create.generic.height": "Hauteur", - "create.generic.length": "Longueur", - "create.generic.speed": "Vitesse", - "create.generic.delay": "Delai", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Secondes", - "create.generic.unit.minutes": "Minutes", - "create.generic.unit.rpm": "tr/min", - "create.generic.unit.stress": "us", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smS", - "create.generic.clockwise": "dans le sens horaire", - "create.generic.counter_clockwise": "dans le sens anti-horaire", - - "create.action.scroll": "Faire défiler", - "create.action.confirm": "Confirmer", - "create.action.abort": "Abandonner", - "create.action.saveToFile": "Sauvegarder", - "create.action.discard": "Annuler", - - "create.keyinfo.toolmenu": "Focus sur le menu de l'outil", - - "create.gui.scrollInput.defaultTitle": "Choisissez une option:", - "create.gui.scrollInput.scrollToModify": "Faites défiler pour modifier", - "create.gui.scrollInput.scrollToAdjustAmount": "Faites défiler pour ajuster le montant", - "create.gui.scrollInput.scrollToSelect": "Faites défiler pour sélectionner", - "create.gui.scrollInput.shiftScrollsFaster": "Maj pour défiler plus rapidement", - "create.gui.toolmenu.focusKey": "Enfoncez [%1$s] pour focus", - "create.gui.toolmenu.cycle": "[SCROLL] pour cycler", - "create.gui.symmetryWand.mirrorType": "Mirroir", - "create.gui.symmetryWand.orientation": "Orientation", - - "create.symmetry.mirror.plane": "Miroir une fois", - "create.symmetry.mirror.doublePlane": "Rectangulaire", - "create.symmetry.mirror.triplePlane": "Octogonal", - - "create.orientation.orthogonal": "Orthogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Sur Z", - "create.orientation.alongX": "Sur X", - - "create.gui.blockzapper.title": "Blockzappeur portable", - "create.gui.blockzapper.replaceMode": "Mode de remplacement", - "create.gui.blockzapper.searchDiagonal": "Suivez les diagonales", - "create.gui.blockzapper.searchFuzzy": "Ignorer les bordures de matériau", - "create.gui.blockzapper.range": "Plage de propagation", - "create.gui.blockzapper.needsUpgradedAmplifier": "Nécessite un amplificateur amélioré", - "create.gui.blockzapper.patternSection": "Motif", - "create.gui.blockzapper.pattern.solid": "Solide", - "create.gui.blockzapper.pattern.checkered": "Quamechanical_drillage", - "create.gui.blockzapper.pattern.inversecheckered": "Quamechanical_drillage inversé", - "create.gui.blockzapper.pattern.chance25": "25%", - "create.gui.blockzapper.pattern.chance50": "50%", - "create.gui.blockzapper.pattern.chance75": "75%", - "create.gui.terrainzapper.title": "Térraformeur portable", - "create.gui.terrainzapper.placement": "Placement", - "create.gui.terrainzapper.placement.merged": "Fusionner", - "create.gui.terrainzapper.placement.attached": "Attacher", - "create.gui.terrainzapper.placement.inserted": "Inserer", - "create.gui.terrainzapper.brush": "Pinceau", - "create.gui.terrainzapper.brush.cuboid": "Cuboïde", - "create.gui.terrainzapper.brush.sphere": "Sphère", - "create.gui.terrainzapper.brush.cylinder": "Cylindre", - "create.gui.terrainzapper.tool": "Outil", - "create.gui.terrainzapper.tool.fill": "Remplir", - "create.gui.terrainzapper.tool.place": "Placer", - "create.gui.terrainzapper.tool.replace": "Remplacer", - "create.gui.terrainzapper.tool.clear": "Effacer", - "create.gui.terrainzapper.tool.overlay": "Recouvrir", - "create.gui.terrainzapper.tool.flatten": "Applatir", - - "create.terrainzapper.shiftRightClickToSet": "Maj + clic droit pour sélectionner une forme", - - "create.blockzapper.usingBlock": "Utilisation: %1$s", - "create.blockzapper.componentUpgrades": "Mises à niveau des composants:", - "create.blockzapper.component.body": "Corps", - "create.blockzapper.component.amplifier": "Amplifieur", - "create.blockzapper.component.accelerator": "Accélérateur", - "create.blockzapper.component.retriever": "Récupérateur", - "create.blockzapper.component.scope": "Lunette", - "create.blockzapper.componentTier.none": "Aucun", - "create.blockzapper.componentTier.brass": "Laiton", - "create.blockzapper.componentTier.chromatic": "Chromatique", - "create.blockzapper.leftClickToSet": "Clic gauche sur un bloc pour en définir le matériau", - "create.blockzapper.empty": "Plus de blocs!", - - - "create.contraptions.movement_mode": "Mode de mouvement", - "create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt", - "create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ", - "create.contraptions.movement_mode.move_never_place": "Ne placer que Quand l'ancre est détruite", - "create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt", - "create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial", - "create.contraptions.movement_mode.rotate_never_place": "Ne placer que Quand l'ancre est détruite", - - "create.logistics.filter": "Filtre", - "create.logistics.recipe_filter": "Filtre de recettes", - "create.logistics.fluid_filter": "Filtre de fuides", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filtre appliqué à %1$s.", - "create.logistics.filter.apply_click_again": "Filtre appliqué à %1$s, appuiez de nouveau pour copier le montant", - "create.logistics.filter.apply_count": "Montant d'extraction appliqué au filtre", - - "create.gui.goggles.generator_stats": "Statistiques du générateur:", - "create.gui.goggles.kinetic_stats": "Statistiques cinétiques:", - "create.gui.goggles.at_current_speed": "À la vitesse actuelle", - "create.gui.goggles.pole_length": "Longueur de la barre", - "create.gui.gauge.info_header": "Informations sur la jauge:", - "create.gui.speedometer.title": "Vitesse de rotation", - "create.gui.stressometer.title": "Stress du réseau", - "create.gui.stressometer.capacity": "Capacité restante", - "create.gui.stressometer.overstressed": "Surmenée", - "create.gui.stressometer.no_rotation": "Pas de rotation", - "create.gui.contraptions.not_fast_enough": "Il semblerais que ce.t.te %1$s ne tourne _pas_ à la _vitesse_ _suffisante_.", - "create.gui.adjustable_crate.title": "Caisse réglable", - "create.gui.adjustable_crate.storageSpace": "Espace de stockage", - "create.gui.stockpile_switch.title": "Commutateur de stockage", - "create.gui.stockpile_switch.invert_signal": "Inverser le signal", - "create.gui.stockpile_switch.move_to_lower_at": "Bouger sur la ligne du bas à %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Bouger sur la ligne de haut à %1$s%%", - "create.gui.sequenced_gearshift.title": "Décaleur de rotation séquencé", - "create.gui.sequenced_gearshift.instruction": "Instructions", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Tourner", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angle", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Piston", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distance", - "create.gui.sequenced_gearshift.instruction.wait": "Attente", - "create.gui.sequenced_gearshift.instruction.wait.duration": "Durée", - "create.gui.sequenced_gearshift.instruction.end": "Fin", - "create.gui.sequenced_gearshift.speed": "Vitesse, direction", - "create.gui.sequenced_gearshift.speed.forward": "Vitesse d'entrée, normal", - "create.gui.sequenced_gearshift.speed.forward_fast": "Vitesse double, normal", - "create.gui.sequenced_gearshift.speed.back": "Vitesse d'entrée, inversé", - "create.gui.sequenced_gearshift.speed.back_fast": "Vitesse double, inversée", - - "create.schematicAndQuill.dimensions": "Taille du schéma: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Première position définie.", - "create.schematicAndQuill.secondPos": "Seconde position définie.", - "create.schematicAndQuill.noTarget": "Enfoncez [Ctrl] pour sélectionner les blocs d'air.", - "create.schematicAndQuill.abort": "Sélection supprimée.", - "create.schematicAndQuill.title": "Nom du schéma:", - "create.schematicAndQuill.convert": "Enregistrer et déployer immédiatement", - "create.schematicAndQuill.fallbackName": "Mon schéma", - "create.schematicAndQuill.saved": "Sauvegardé en tant que %1$s", - - "create.schematic.invalid": "[!] objet invalide - Utilisez plutôt la table à schéma", - "create.schematic.position": "Position", - "create.schematic.rotation": "Rotation", - "create.schematic.rotation.none": "Aucune", - "create.schematic.rotation.cw90": "Sens horaire 90", - "create.schematic.rotation.cw180": "Sens horaire 180", - "create.schematic.rotation.cw270": "Sens horaire 270", - "create.schematic.mirror": "Mirroir", - "create.schematic.mirror.none": "Aucun", - "create.schematic.mirror.frontBack": "Avant-Arrière", - "create.schematic.mirror.leftRight": "Gauche-Droite", - "create.schematic.tool.deploy": "Déployer", - "create.schematic.tool.move": "Déplacer XZ", - "create.schematic.tool.movey": "Déplacer Y", - "create.schematic.tool.rotate": "Tourner", - "create.schematic.tool.print": "Imprimer", - "create.schematic.tool.flip": "Retourner", - "create.schematic.tool.deploy.description.0": "Déplace la structure vers un emplacement.", - "create.schematic.tool.deploy.description.1": "Clic droit sur le sol pour placer.", - "create.schematic.tool.deploy.description.2": "Maintenez [Ctrl] pour sélectionner à une distance fixe.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Défiler pour changer la distance.", - "create.schematic.tool.move.description.0": "Décale le schéma horizontalement.", - "create.schematic.tool.move.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le pousser.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Décale le schéma verticalement.", - "create.schematic.tool.movey.description.1": "[CTRL]-Défiler pour le déplacer vers le haut / bas.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Fait pivoter le schéma autour de son centre.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Défiler pour faire une rotation de 90 degrés.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Place instantanément la structure dans le monde.", - "create.schematic.tool.print.description.1": "[Clic droit] pour confirmer le placement à l'emplacement actuel.", - "create.schematic.tool.print.description.2": "Cet outil est uniquement pour le mode créatif.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Retourne le schéma le long de la face que vous sélectionnez.", - "create.schematic.tool.flip.description.1": "Pointez sur le schéma et [CTRL]-Défiler pour le retourner.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchronisation...", - "create.schematics.uploadTooLarge": "Votre schéma est trop grand.", - "create.schematics.maxAllowedSize": "La taille de fichier schématique maximale autorisée est:", - - "create.gui.schematicTable.refresh": "Actualiser les fichiers", - "create.gui.schematicTable.open_folder": "Ouvrir le dossier", - "create.gui.schematicTable.title": "Table à schéma", - "create.gui.schematicTable.availableSchematics": "Schémas disponibles", - "create.gui.schematicTable.noSchematics": "Aucun schéma enregistré", - "create.gui.schematicTable.uploading": "Téléchargement...", - "create.gui.schematicTable.finished": "Téléchargement terminé!", - "create.gui.schematicannon.title": "Schémacanon", - "create.gui.schematicannon.listPrinter": "Imprimante de liste de matériaux", - "create.gui.schematicannon.gunpowderLevel": "Poudre à canon à %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Tirs restants: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Avec sauvegarde: %1$s", - "create.gui.schematicannon.optionEnabled": "Actuellement activé", - "create.gui.schematicannon.optionDisabled": "Actuellement désactivé", - "create.gui.schematicannon.showOptions": "Afficher les paramètres d'impression", - "create.gui.schematicannon.option.dontReplaceSolid": "Ne remplacez pas les blocs solides", - "create.gui.schematicannon.option.replaceWithSolid": "Remplacer solide par solide", - "create.gui.schematicannon.option.replaceWithAny": "Remplacer le solide par n'importe quoi", - "create.gui.schematicannon.option.replaceWithEmpty": "Remplacer le solide par rien", - "create.gui.schematicannon.option.skipMissing": "Ignorer les blocs manquants", - "create.gui.schematicannon.option.skipTileEntities": "Protéger les Tile Entities", - "create.gui.schematicannon.slot.gunpowder": "Ajouter de la poudre a canon pour alimenter le canon", - "create.gui.schematicannon.option.skipMissing.description": "Si le canon ne peut pas trouver un bloc requis pour le placement, il continuera au prochain emplacement.", - "create.gui.schematicannon.option.skipTileEntities.description": "Le canon évitera de remplacer les blocs de stockage de données tels que les coffres.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Le canon ne remplacera jamais les blocs solides dans sa zone de travail, seulement non solides et air.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Le canon ne remplacera les blocs solides dans sa zone de travail que si le schéma contient un bloc solide à l'emplacement.", - "create.gui.schematicannon.option.replaceWithAny.description": "Le canon remplacera les blocs solides dans sa zone de travail si le schéma contient un bloc à l'emplacement.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Le canon effacera tous les blocs dans sa zone de travail, y compris ceux remplacés par de l'air.", - - "create.schematicannon.status.idle": "Repos", - "create.schematicannon.status.ready": "Prêt", - "create.schematicannon.status.running": "En cours", - "create.schematicannon.status.finished": "Terminé", - "create.schematicannon.status.paused": "Pausé", - "create.schematicannon.status.stopped": "Arrêté", - "create.schematicannon.status.noGunpowder": "Plus de poudre à canon", - "create.schematicannon.status.targetNotLoaded": "Le bloc n'est pas chargé", - "create.schematicannon.status.targetOutsideRange": "Cible trop lointaine", - "create.schematicannon.status.searching": "Recherche", - "create.schematicannon.status.skipping": "Saut", - "create.schematicannon.status.missingBlock": "Blocs manquants:", - "create.schematicannon.status.placing": "Placement", - "create.schematicannon.status.clearing": "Suppression des blocs", - "create.schematicannon.status.schematicInvalid": "Schéma non valide", - "create.schematicannon.status.schematicNotPlaced": "Schéma non déployé", - "create.schematicannon.status.schematicExpired": "Fichier de schéma arrivé à expiration", - - "create.materialChecklist": "Liste des matériaux", - - "create.gui.filter.deny_list": "Liste noire", - "create.gui.filter.deny_list.description": "Les articles réussissent s'ils ne correspondent à AUCUN des éléments ci-dessus. Une liste noire vide accepte tout.", - "create.gui.filter.allow_list": "Liste blanche", - "create.gui.filter.allow_list.description": "Les éléments réussissent s'ils correspondent à l'un des éléments ci-dessus. Une liste blanche vide rejette tout.", - "create.gui.filter.respect_data": "Respect des données", - "create.gui.filter.respect_data.description": "Les objets ne correspondent que si leur durabilité, leurs enchantements et autres attributs correspondent également.", - "create.gui.filter.ignore_data": "Ignorer les données", - "create.gui.filter.ignore_data.description": "Les éléments correspondent indépendamment de leurs attributs.", - - "create.item_attributes.placeable": "est placeable", - "create.item_attributes.placeable.inverted": "n'est pas plaçable", - "create.item_attributes.consumable": "peut être mangé", - "create.item_attributes.consumable.inverted": "ne peut pas être mangé", - "create.item_attributes.smeltable": "peut être fondu", - "create.item_attributes.smeltable.inverted": "ne peut pas être fondu", - "create.item_attributes.washable": "peut être lavé", - "create.item_attributes.washable.inverted": "ne peut pas être lavé", - "create.item_attributes.smokable": "peut être fumé", - "create.item_attributes.smokable.inverted": "ne peut pas être fumé", - "create.item_attributes.crushable": "peut être concassé", - "create.item_attributes.crushable.inverted": "ne peut pas être concassé", - "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.enchanted": "est enchanté", - "create.item_attributes.enchanted.inverted": "n'est pas enchanté", - "create.item_attributes.damaged": "est endommagé", - "create.item_attributes.damaged.inverted": "n'est pas endomagé", - "create.item_attributes.badly_damaged": "est fortement damaged", - "create.item_attributes.badly_damaged.inverted": "n'est pas fortement endomagé", - "create.item_attributes.not_stackable": "ne peut pas s'empiler", - "create.item_attributes.not_stackable.inverted": "peut être empilé", - "create.item_attributes.equipable": "peut être équipé", - "create.item_attributes.equipable.inverted": "ne peut pas être équipé", - "create.item_attributes.furnace_fuel": "est du combustible", - "create.item_attributes.furnace_fuel.inverted": "n'est pas un combustible", - "create.item_attributes.in_tag": "est étiqueté %1$s", - "create.item_attributes.in_tag.inverted": "n'est pas étiqueté", - "create.item_attributes.in_item_group": "appartient à %1$s", - "create.item_attributes.in_item_group.inverted": "n'appartient pas à %1$s'", - "create.item_attributes.added_by": "a été ajouté par %1$s", - "create.item_attributes.added_by.inverted": "n'a pas été ajouté par %1$s", - "create.item_attributes.has_enchant": "est enchanté %1$s", - "create.item_attributes.has_enchant.inverted": "n'est pas enchenté %1$s", - "create.item_attributes.has_fluid": "contient %1$s", - "create.item_attributes.has_fluid.inverted": "ne contient pas %1$s", - "create.item_attributes.has_name": "est renommé %1$s", - "create.item_attributes.has_name.inverted": "n'est pas renommé %1$s", - "create.item_attributes.book_author": "a été écrit par %1$s", - "create.item_attributes.book_author.inverted": "n'a pas été écrit par %1$s", - "create.item_attributes.book_copy_original": "est originel", - "create.item_attributes.book_copy_original.inverted": "n'est pas originel", - - "create.gui.attribute_filter.no_selected_attributes": "Aucun attribut sélectionné", - "create.gui.attribute_filter.selected_attributes": "Attributs sélectionnés:", - "create.gui.attribute_filter.allow_list_disjunctive": "Liste blanche (n'importe)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Les objets réussissent s'ils possèdent l'un des attributs sélectionnés.", - "create.gui.attribute_filter.allow_list_conjunctive": "Liste blanche (tout)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Les objets ne passent que s'ils ont TOUS les attributs sélectionnés.", - "create.gui.attribute_filter.deny_list": "Liste noire", - "create.gui.attribute_filter.deny_list.description": "Les éléments réussissent s'ils n'ont AUCUN des attributs sélectionnés.", - "create.gui.attribute_filter.add_reference_item": "Ajouter un objet de référence", - - "create.tooltip.holdKey": "Enfoncez [%1$s]", - "create.tooltip.holdKeyOrKey": "Enfoncez [%1$s] ou [%2$s]", - "create.tooltip.keyShift": "Maj", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Vitesse requise: %1$s", - "create.tooltip.speedRequirement.none": "Aucune", - "create.tooltip.speedRequirement.medium": "Modérée", - "create.tooltip.speedRequirement.high": "Rapide", - "create.tooltip.stressImpact": "Impact du stress: %1$s", - "create.tooltip.stressImpact.low": "Faible", - "create.tooltip.stressImpact.medium": "Modéré", - "create.tooltip.stressImpact.high": "Elevé", - "create.tooltip.stressImpact.overstressed": "Surmené", - "create.tooltip.capacityProvided": "Capacité de stress: %1$s", - "create.tooltip.capacityProvided.low": "Petite", - "create.tooltip.capacityProvided.medium": "Moyenne", - "create.tooltip.capacityProvided.high": "Grande", - "create.tooltip.capacityProvided.asGenerator": "(En tant que générateur)", - "create.tooltip.generationSpeed": "Génère à %1$s %2$s", - "create.tooltip.analogStrength": "Force analogique: %1$s/15", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.subtitle.schematicannon_launch_block": "Tir de schémacanon", - "create.subtitle.schematicannon_finish": "Fin de schémacanon", - "create.subtitle.slime_added": "Bruit de slime", - "create.subtitle.mechanical_press_activation": "Activation de la presse mechanique", - "create.subtitle.mechanical_press_item_break": "Cliquetis de métal", - "create.subtitle.blockzapper_place": "Blocs se zappant en place", - "create.subtitle.blockzapper_confirm": "Ding d'affirmation", - "create.subtitle.blockzapper_deny": "Boop de déclin", - "create.subtitle.block_funnel_eat": "Croc d'entonoir", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "OBJET EXEMPLE (juste une indication que cette info-bulle existe)", - "item.create.example_item.tooltip.summary": "Une brève description de l'objet. Les _underscores_ surligne les mots.", - "item.create.example_item.tooltip.condition1": "Quand ceci", - "item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)", - "item.create.example_item.tooltip.condition2": "Et quand cela", - "item.create.example_item.tooltip.behaviour2": "Vous pouvez ajouter autant de comportements que vous le souhaitez", - "item.create.example_item.tooltip.control1": "Quand Ctrl enfoncé", - "item.create.example_item.tooltip.action1": "Ces commandes sont affichées.", - - "item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE", - "item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.", - "item.create.wand_of_symmetry.tooltip.condition1": "Quand positionné dans la barre active", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Reste actif", - "item.create.wand_of_symmetry.tooltip.control1": "Clic droit au sol", - "item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir", - "item.create.wand_of_symmetry.tooltip.control2": "Clic droit dans les airs", - "item.create.wand_of_symmetry.tooltip.action2": "_Retire_ le mirroir actif", - "item.create.wand_of_symmetry.tooltip.control3": "Clic droit en étant accroupi", - "item.create.wand_of_symmetry.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", - - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPEUR", - "item.create.handheld_blockzapper.tooltip.summary": "Nouveau gadget pour placer ou échanger des blocs à distance.", - "item.create.handheld_blockzapper.tooltip.control1": "Clic gauche sur un bloc", - "item.create.handheld_blockzapper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", - "item.create.handheld_blockzapper.tooltip.control2": "Clic droit sur un bloc", - "item.create.handheld_blockzapper.tooltip.action2": "_Place_ ou _remplace_ le bloc ciblé.", - "item.create.handheld_blockzapper.tooltip.control3": "Clic droit en étant accroupi", - "item.create.handheld_blockzapper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_.", - - "item.create.handheld_worldshaper.tooltip": "TERRAFORMEUR", - "item.create.handheld_worldshaper.tooltip.summary": "Outil pratique pour créer des _paysage_ et _caractéristiques_ _de_ _terrain_.", - "item.create.handheld_worldshaper.tooltip.control1": "Clic gauche sur un bloc", - "item.create.handheld_worldshaper.tooltip.action1": "Définit les blocs placés par l'outil sur le bloc ciblé.", - "item.create.handheld_worldshaper.tooltip.control2": "Clic droit sur un bloc", - "item.create.handheld_worldshaper.tooltip.action2": "Applique le _pinceau_ et l'_outil_ actuellement sélectionnés à l'emplacement ciblé.", - "item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi", - "item.create.handheld_worldshaper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_", - - "item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRES", - "item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'rotors communs.", - "item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'rotor", - "item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des rotors _indépendamment_ de leurs _conditions_ _d'emplacement_", - - "item.create.deforester.tooltip": "DÉFORESTEUR", - "item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des rotors en une fraction de seconde.", - - - "item.create.filter.tooltip": "FILTRE", - "item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", - "item.create.filter.tooltip.condition1": "Quand dans l'emplacement de filtre", - "item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", - "item.create.filter.tooltip.condition2": "Clic droit", - "item.create.filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", - - "item.create.attribute_filter.tooltip": "FILTRE D'ATTRIBUTS", - "item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.", - "item.create.attribute_filter.tooltip.condition1": "Quand dans l'emplacement de filtre", - "item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.", - "item.create.attribute_filter.tooltip.condition2": "Clic droit", - "item.create.attribute_filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.", - - "item.create.empty_schematic.tooltip": "SCHÉMA VIDE", - "item.create.empty_schematic.tooltip.summary": "Utilisé comme ingrédient de recette et pour écrire à la _table_ _à_ _schéma_.", - - "item.create.schematic.tooltip": "SCHÉMA", - "item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.", - "item.create.schematic.tooltip.condition1": "Quand tenu en main", - "item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.", - "item.create.schematic.tooltip.control1": "Clic droit en étant accroupi", - "item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.", - - "item.create.schematic_and_quill.tooltip": "SCHÉMA ET PLUME", - "item.create.schematic_and_quill.tooltip.summary": "Utilisé pour enregistrer une structure de votre monde dans un fichier .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Étape 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Sélectionnez deux points d'angle à l'aide du clic droit.", - "item.create.schematic_and_quill.tooltip.condition2": "Étape 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Défilement_ sur les faces pour ajuster la taille. Cliquez à nouveau pour enregistrer.", - "item.create.schematic_and_quill.tooltip.control1": "Clic droit", - "item.create.schematic_and_quill.tooltip.action1": "Sélectionnez un point d'angle / confirmez la sauvegarde.", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl maintenu", - "item.create.schematic_and_quill.tooltip.action2": "Sélectionnez des points _dans_ _les_ _airs_. Faites défiler pour régler la distance.", - "item.create.schematic_and_quill.tooltip.control3": "Clic droit en étant accroupi", - "item.create.schematic_and_quill.tooltip.action3": "_Réinitialise_ et supprime la sélection.", - - "block.create.schematicannon.tooltip": "SCHÉMACANON", - "block.create.schematicannon.tooltip.summary": "Tire des blocs pour recréer un _schéma_ déployé dans le monde. Utilise des objets des inventaires adjacents et de la _poudre_ _à_ _canon_ comme carburant.", - "block.create.schematicannon.tooltip.control1": "Clic droit", - "block.create.schematicannon.tooltip.action1": "Ouvre l'_Interface_", - - "block.create.schematic_table.tooltip": "TABLE À SCHÉMA", - "block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.", - "block.create.schematic_table.tooltip.condition1": "Quand donné un schéma vide", - "block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.", - - "block.create.shaft.tooltip": "ROTOR", - "block.create.shaft.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite.", - - "block.create.cogwheel.tooltip": "ROUE DENTÉE", - "block.create.cogwheel.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.", - - "block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE", - "block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.", - - "block.create.encased_shaft.tooltip": "ROTOR ENCASTRÉ", - "block.create.encased_shaft.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.", - - "block.create.gearbox.tooltip": "BOÎTE DE VITESSES", - "block.create.gearbox.tooltip.summary": "_Relaie_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.", - - "block.create.gearshift.tooltip": "BOÎTE DE VITESSES", - "block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des rotors connectés.", - "block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté", - "block.create.gearshift.tooltip.behaviour1": "_Inverse_ la rotation sortante.", - - "block.create.clutch.tooltip": "EMBRAYAGE", - "block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des rotors connectés.", - "block.create.clutch.tooltip.condition1": "Lorsqu'alimenté", - "block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.", - - - - "item.create.belt_connector.tooltip": "CONNECTEUR DE TAPIS ROULANTS", - "item.create.belt_connector.tooltip.summary": "Connecte deux _rotors_ ou plus à un _tapis_ _roulant_ _mécanique_. Les rotors connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.", - "item.create.belt_connector.tooltip.control1": "Clic droit sur rotor", - "item.create.belt_connector.tooltip.action1": "Sélectionne le rotor comme une poulie de la courroie. Les deux rotors sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.", - "item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi", - "item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.", - - "item.create.goggles.tooltip": "LUNETTES", - "item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.", - "item.create.goggles.tooltip.condition1": "Quand portées", - "item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.", - "item.create.goggles.tooltip.condition2": "Quand vision portée sur une jauge", - "item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.", - - "item.create.wrench.tooltip": "CLÉ", - "item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.", - "item.create.wrench.tooltip.control1": "Clic droit sur un bloc de Create", - "item.create.wrench.tooltip.action1": "_Tourne_ le _composant_ le long de l'axe dépendant de la face avec lequel vous avez interagi.", - "item.create.wrench.tooltip.control2": "Clic droit en étant accroupi", - "item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.", - - "block.create.creative_motor.tooltip": "MOTEUR CRÉATIF", - "block.create.creative_motor.tooltip.summary": "Une source configurable de _force_ _de_ _rotation_.", - - "block.create.water_wheel.tooltip": "ROUE À EAU", - "block.create.water_wheel.tooltip.summary": "Fournit une _force_ _de_ _rotation_ provenant de _courants_ _d'eau_ adjacents.", - - "block.create.encased_fan.tooltip": "VENTILATEUR ENCHÂSSÉ", - "block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.", - "block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.", - "block.create.encased_fan.tooltip.condition2": "Quand tourné", - "block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.", - "block.create.encased_fan.tooltip.condition3": "Quand souffle à travers des blocs spéciaux", - "block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.", - - "block.create.nozzle.tooltip": "BUSE", - "block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ enchâssé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.", - - "block.create.hand_crank.tooltip": "MANIVELLE", - "block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.", - "block.create.hand_crank.tooltip.condition1": "Lorsqu'utilisé", - "block.create.hand_crank.tooltip.behaviour1": "Fournit des _force_ _de_ _rotation_ à un objet attaché. _S'accroupir_ _pour_ _inverser_ la rotation.", - - "block.create.cuckoo_clock.tooltip": "COUCOU", - "block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.", - "block.create.cuckoo_clock.tooltip.condition1": "Quand tourné", - "block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.", - - "block.create.turntable.tooltip": "PLAQUE TOURNANTE", - "block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en énergie cinétique.", - - - "block.create.crushing_wheel.tooltip": "ROUE DE CONCASSAGE", - "block.create.crushing_wheel.tooltip.summary": "Grandes roues rotatives qui _cassent_ n'importe quoi.", - "block.create.crushing_wheel.tooltip.condition1": "Quand fixé à une autre roue de concassage", - "block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.", - - "block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE", - "block.create.mechanical_press.tooltip.summary": "Un piston puissant pour comprimer les objets en dessous. Nécessite une _force_ _de_ _rotation_ constante.", - "block.create.mechanical_press.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.mechanical_press.tooltip.behaviour1": "_Démarre_ pour compresser les éléments déposés en dessous.", - "block.create.mechanical_press.tooltip.condition2": "Lorsqu'au-dessus d'un tapis roulant mécanique", - "block.create.mechanical_press.tooltip.behaviour2": "Compresse _Automatiquement_ les éléments passant sur le tapis roulant.", - - "block.create.basin.tooltip": "BASSIN", - "block.create.basin.tooltip.summary": "Un _objet_ _conteneur_ pratique utilisé dans le traitement avec le _mixeur_ _mécanique_ et la _presse_ _mecanique_. Prend en charge les _comparateur_ _de_ _redstone_.", - - - - "block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE", - "block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).", - "block.create.mechanical_mixer.tooltip.condition1": "Lorsqu'au-dessus d'un bassin", - "block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin Quand tous les ingrédients nécessaires sont présents.", - - "block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE", - "block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.", - "block.create.mechanical_crafter.tooltip.condition1": "Quand tourné", - "block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.", - "block.create.mechanical_crafter.tooltip.control1": "Lorsqu'utilisation de la clé à l'avant", - "block.create.mechanical_crafter.tooltip.action1": "_Fait_ _défiler_ _la_ _direction_ dans laquelle un établi individuel _déplace_ _ses_ _objets_. Pour former une grille de travail, disposer les _tapis_ _roulants_ _dans_ _un_ _flux_ qui déplace tous les articles vers un établi final. Le dernier artisan doit _pointer_ _autrepart_ de la grille.", - "block.create.mechanical_crafter.tooltip.control2": "Lorsqu'utilisation de la clé à l'arrière", - "block.create.mechanical_crafter.tooltip.action2": "_Connecte_ _l'inventaire_ _d'entrée_ des établis adjacents. Utilisez ceci pour _combiner_ les _emplacements_ dans la grille de fabrication et pour _économiser_ _sur_ _le_ _travail_ _d'entrée_.", - - "block.create.furnace_engine.tooltip": "MOTEUR DE FOUR", - "block.create.furnace_engine.tooltip.summary": "Une source puissante de _puissance_ _de_ _rotation_ qui nécessite un _four_ _allumé_ pour fonctionner.", - "block.create.furnace_engine.tooltip.condition1": "Lorsqu'attaché à un four allumé", - "block.create.furnace_engine.tooltip.behaviour1": "_Commence_ _à_ _alimenter_ un _volant_ _d'inertie_ placé devant (à 1m de distance). Utilisez un haut fourneau pour des vitesses plus élevées.", - - "block.create.flywheel.tooltip": "VOLANT D'INERTIE", - "block.create.flywheel.tooltip.summary": "Une grande roue métallique pour _exploiter_ _et_ _stabiliser_ la force générée par un _moteur_ _attaché_. Les volants d'inertie se connectent aux moteurs s'ils sont séparés _d'un_ _mètre_ et tournés à un _angle_ de _90°_ les uns des autres.", - "block.create.flywheel.tooltip.condition1": "Lorsqu'attaché à un moteur en marche", - "block.create.flywheel.tooltip.behaviour1": "Fournit une _force_ _de_ rotation_ à un engin connecté basé sur la force et la vitesse du générateur.", - - "block.create.portable_storage_interface.tooltip": "INTERFACE DE STOCKAGE PORTABLE", - "block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.", - "block.create.portable_storage_interface.tooltip.condition1": "Lorsqu'en mouvement", - "block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement Quand les objets seront échangés.", - - - "block.create.rotation_speed_controller.tooltip": "CONTRÔLEUR DE VITESSE DE ROTATION", - "block.create.rotation_speed_controller.tooltip.summary": "Un _relai_ _configurable_ capable d'accélérer ou de ralentir le composant cible à la vitesse souhaitée.", - "block.create.rotation_speed_controller.tooltip.condition1": "Lorsqu'attaché à une grande roue dentée", - "block.create.rotation_speed_controller.tooltip.behaviour1": "Relaie la force de rotation entrante vers la roue, essayant de faire _correspondre_ la _vitesse_ à laquelle elle est configurée. La _roue_ _dentée_ doit être _attachée_ _au_ _dessus_ du contrôleur.", - - "block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE", - "block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.", - "block.create.mechanical_piston.tooltip.condition1": "Quand tourné", - "block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", - - "block.create.piston_extension_pole.tooltip": "BARRE DE PISTON", - "block.create.piston_extension_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.", - "block.create.piston_extension_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique", - "block.create.piston_extension_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc", - - "block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE", - "block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.", - "block.create.mechanical_bearing.tooltip.condition1": "Quand tourné", - "block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", - - - - - "block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER", - "block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.", - "block.create.clockwork_bearing.tooltip.condition1": "Quand tourné", - "block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.", - - "block.create.sequenced_gearshift.tooltip": "BOÎITE À VITESSES SÉQUENCÉE", - "block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.", - "block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.", - "block.create.sequenced_gearshift.tooltip.condition2": "Clic droit", - "block.create.sequenced_gearshift.tooltip.behaviour2": "Ouvre _l'interface_ _de_ _configuration_", - - "block.create.cart_assembler.tooltip": "ASSEMBLEUR DE WAGON", - "block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _wagon_ _passant_.", - "block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone", - "block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _wagon passant_ et les remet dans le monde.", - - "block.create.rope_pulley.tooltip": "POULIE", - "block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.", - "block.create.rope_pulley.tooltip.condition1": "Quand tourné", - "block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.", - - "block.create.linear_chassis.tooltip": "CHÂSSIS LINÉAIRE", - "block.create.linear_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", - "block.create.linear_chassis.tooltip.condition1": "Quand déplacé", - "block.create.linear_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).", - "block.create.linear_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", - "block.create.linear_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.", - "block.create.linear_chassis.tooltip.control1": "Clic droit avec une boule de slime", - "block.create.linear_chassis.tooltip.action1": "Rend la face _collante_. Quand déplacé, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.", - - "block.create.secondary_linear_chassis.tooltip": "CHÂSSIS LINÉAIRE SECONDAIRE", - "block.create.secondary_linear_chassis.tooltip.summary": "Un deuxième type de _châssis linéaire_ qui ne se connecte pas au premier.", - - "block.create.radial_chassis.tooltip": "CHÂSSIS DE ROTATION", - "block.create.radial_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.", - "block.create.radial_chassis.tooltip.condition1": "Quand déplacé", - "block.create.radial_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).", - "block.create.radial_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé", - "block.create.radial_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.", - "block.create.radial_chassis.tooltip.control1": "Clic droit avec une boule de slime", - "block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Quand le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.", - - "block.create.mechanical_drill.tooltip": "PERCEUSE MÉCANIQUE", - "block.create.mechanical_drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", - "block.create.mechanical_drill.tooltip.condition1": "Quand tourné", - "block.create.mechanical_drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.", - "block.create.mechanical_drill.tooltip.condition2": "Lorsqu'en mouvement", - "block.create.mechanical_drill.tooltip.behaviour2": "Casse les blocs avec lesquels la perceuse entre en collision.", - - "block.create.mechanical_harvester.tooltip": "RÉCOLTEUSE MÉCANIQUE", - "block.create.mechanical_harvester.tooltip.summary": "Un coupe-plantes mécanique adapté à l'automatisation des cultures à moyenne échelle. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.", - "block.create.mechanical_harvester.tooltip.condition1": "Lorsqu'en mouvement", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.", - - "block.create.mechanical_plough.tooltip": "CHARRUE MÉCANIQUE", - "block.create.mechanical_plough.tooltip.summary": "Une charrue mécanique a divers usages. Elle peut être déplacée à l'aide de _pistons mécaniques_, de _roulements_ ou d'autres dispositifs de commande.", - "block.create.mechanical_plough.tooltip.condition1": "Lorsqu’en mouvement", - "block.create.mechanical_plough.tooltip.behaviour1": "_Casse les blocs_ avec lesquels _on ne peut pas entrer en collision_, tels que les torches, les sentiers ou les couches de neige. _Applique_ son _mouvement_ aux _entités_ sans les blesser. _Bêche les blocs de terre_ comme si une houe était utilisée sur ceux-ci.", - - "block.create.mechanical_saw.tooltip": "SCIE MÉCANIQUE", - "block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _rotors_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.", - "block.create.mechanical_saw.tooltip.condition1": "Quand tourné vers le haut", - "block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Quand plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.", - "block.create.mechanical_saw.tooltip.condition2": "Lorsqu'à l'horizontal", - "block.create.mechanical_saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un rotor, _le rotor_ _tombera_ loin de la scie.", - "block.create.mechanical_saw.tooltip.condition3": "Lorsqu'en mouvement", - "block.create.mechanical_saw.tooltip.behaviour3": "_Coupe_ tous les _rotors_ avec lesquels la scie entre en collision.", - - "block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE", - "block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.", - "block.create.stockpile_switch.tooltip.condition1": "Lorsqu'en dessous de la limite de stockage minimum", - "block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_", - - "block.create.content_observer.tooltip": "OBSERVATEUR DE CONTENU", - "block.create.content_observer.tooltip.summary": "_Détecte les objets_ à l'intérieur des _conteneurs_ et des _transporteurs_ correspondant à un _filtre_ configuré. Tant que l'_inventaire_, le _tapis roulant_ ou la _glissière_ observé _contient_ un objet correspondant, ce composant émet un _signal de redstone_. Quand un _entonnoir_ observé _transfère_ un objet correspondant, ce composant émet une _impulsion de redstone_.", - - "block.create.redstone_link.tooltip": "LIEN DE REDSTONE", - "block.create.redstone_link.tooltip.summary": "Terminaux pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, nonobstant raisonnablement loin.", - "block.create.redstone_link.tooltip.condition1": "Quand alimenté", - "block.create.redstone_link.tooltip.behaviour1": "Les liens de la même _fréquence_ configurés en réception produira un signal redstone.", - "block.create.redstone_link.tooltip.control1": "Clic droit avec un objet", - "block.create.redstone_link.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.", - "block.create.redstone_link.tooltip.control2": "Clic droit en étant accroupi", - "block.create.redstone_link.tooltip.action2": "Bascule entre le mode _récepteur_ et _transmetteur_.", - - - "block.create.redstone_contact.tooltip": "CONTACT DE REDSTONE", - "block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec des _pistons_ _mécaniques_ ou _roulements_.", - "block.create.redstone_contact.tooltip.condition1": "Quand tourné vers un autre contact de redstone", - "block.create.redstone_contact.tooltip.behaviour1": "Fournit un _signal_ de _redstone_.", - "block.create.redstone_contact.tooltip.condition2": "Quand en mouvement", - "block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les contacts de redstone fixes qu'il passe.", - - "block.create.adjustable_crate.tooltip": "CAISSE AJUSTABLE", - "block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.", - "block.create.adjustable_crate.tooltip.control1": "Clic droit", - "block.create.adjustable_crate.tooltip.action1": "Ouvre _l'interface_.", - - "block.create.creative_crate.tooltip": "CAISSE CRÉATIVE", - "block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.", - "block.create.creative_crate.tooltip.condition1": "Quand un objet se trouve dans l'emplacement de filtrage", - "block.create.creative_crate.tooltip.behaviour1": "Tout ce qui _extrait_ de ce conteneur aura une _alimentation illimitée_ de l'objet spécifié. Les objets _insérés_ dans cette caisse seront _éliminés_.", - - "block.create.deployer.tooltip": "DÉPLOYEUR", - "block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.", - "block.create.deployer.tooltip.condition1": "Quand tourné", - "block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.", - "block.create.deployer.tooltip.condition2": "Clic droit avec une clé", - "block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.", - "block.create.deployer.tooltip.condition3": "Quand un filtre est attribué", - "block.create.deployer.tooltip.behaviour3": "Le déploiement n'est activé que si l'élément tenu _correspond_ au _filtre._ Les éléments ne correspondant pas ne peuvent pas être insérés ; les éléments tenus correspondant au filtre ne peuvent pas être extraits.", - - "block.create.brass_casing.tooltip": "REVÊTEMENT EN LAITON", - "block.create.brass_casing.tooltip.summary": "Revêtement de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.", - - "block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS", - "block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.", - - "block.create.adjustable_repeater.tooltip": "RÉPÉTEUR RÉGLABLE", - "block.create.adjustable_repeater.tooltip.summary": "Un _répéteur_ _de_ _redstone_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", - - "block.create.adjustable_pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS RÉGLABLE", - "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _répéteur_ _d'impulsions_ avancé avec un _délai_ _configurable_ jusqu'à 30 minutes.", - - "block.create.analog_lever.tooltip": "LEVIER ANALOGIQUE", - "block.create.analog_lever.tooltip.summary": "Un levier avec un _contrôle_ plus _précis_ sur sa _puissance_ _de_ _signal_ émise.", - - "block.create.powered_toggle_latch.tooltip": "LOQUET À BASCULE ALIMENTÉ", - "block.create.powered_toggle_latch.tooltip.summary": "Un levier qui peut être basculé par une _pulsation_ _de_ _redstone_.", - - "block.create.powered_latch.tooltip": "VERROU ALIMENTÉ", - "block.create.powered_latch.tooltip.summary": "Un levier qui peut être contrôlé par un _signal_ _de_ _redstone_. Un signal sur _l'arrière_ _l'active_, un signal sur le _côté_ _va_ _le_ _réinitialiser_.", - - - "block.create.speedometer.tooltip": "COMPTEUR DE VITESSE", - "block.create.speedometer.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.", - "block.create.speedometer.tooltip.condition1": "Quand tourné", - "block.create.speedometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.", - - "block.create.stressometer.tooltip": "STRESSOMÈTRE", - "block.create.stressometer.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.", - "block.create.stressometer.tooltip.condition1": "Quand tourné", - "block.create.stressometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.", - - "item.create.sand_paper.tooltip": "PAPIER DE VERRE", - "item.create.sand_paper.tooltip.summary": "Un papier rugueux qui peut être utilisé pour _polir des matériaux_. Peut être appliqué automatiquement à l'aide du déployeur.", - "item.create.sand_paper.tooltip.condition1": "Quand utilisé", - "item.create.sand_paper.tooltip.behaviour1": "Polit les objets qui se tenus dans la _main secondaire_ ou par terre quand on les _regarde_.", - - "item.create.super_glue.tooltip": "COLLE EXTRA-FORTE", - "item.create.super_glue.tooltip.summary": "Collez un bloc à un autre, et ils seront à jamais inséparables.", - "item.create.super_glue.tooltip.condition1": "Quand utilisé", - "item.create.super_glue.tooltip.behaviour1": "Rend la face _cliquée_ d'un bloc _collante_. Les blocs attachés aux faces collantes seront entraînés par des _pistons mécaniques_, _des roulements_ et d'autres contrôleurs.", - "item.create.super_glue.tooltip.condition2": "Quand tenu en main secondaire", - "item.create.super_glue.tooltip.behaviour2": "Attache automatiquement les blocs placés de la main principale à la _face_ contre laquelle ils ont été _placés_.", - - "item.create.builders_tea.tooltip": "THÉ DU CONSTRUCTEUR", - "item.create.builders_tea.tooltip.summary": "La boisson parfaite pour commencer la journée - _motivante_ et _rasasiante_.", - - "item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ", - "item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.", - - "item.create.shadow_steel.tooltip": "ACIER SOMBRE", - "item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.", - - "item.create.minecart_coupling.tooltip": "LIEN POUR WAGONS", - - "item.create.crafter_slot_cover.tooltip": "COUVERCLE D'EMPLACEMENT", - "item.create.crafter_slot_cover.tooltip.summary": "Utilisé pour marquer un _établi_ _mécanique_ comme un emplacement vide dans une recette. Les établis ne doivent pas nécessairement former une grille carrée complète. C'est utile quand il y a des recettes où les _ingredients_ _sont_ _en_ _diagonale_ les uns aux autres.", - - "create.tooltip.wip": "En cours", - "create.tooltip.workInProgress": "En cours!", - "create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.", - "create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.", - "create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.", - "create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agite les doigts* circulez.", - "create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Croyez-moi, c'est inutile.", - "create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.", - "create.tooltip.randomWipDescription7": "Celui-ci n'est peut-être pas pour vous. Que dire de celui-là?", - "create.tooltip.randomWipDescription8": "Utilisez-le et regrettez immédiatement votre décision.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/main/resources/assets/create/lang/it_it.json b/src/main/resources/assets/create/lang/it_it.json deleted file mode 100644 index 7b4edec9a..000000000 --- a/src/main/resources/assets/create/lang/it_it.json +++ /dev/null @@ -1,1790 +0,0 @@ -{ - - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "Finestra di acacia", - "block.create.acacia_window_pane": "Pannello di finestra di acacia", - "block.create.adjustable_chain_gearshift": "Cambio a catena regolabile", - "block.create.adjustable_crate": "Baule regolabile", - "block.create.adjustable_pulse_repeater": "Ripetitore di impulsi regolabile", - "block.create.adjustable_repeater": "Ripetitore regolabile", - "block.create.analog_lever": "Leva analogica", - "block.create.andesite_belt_funnel": "Imbuto per nastro di andesite", - "block.create.andesite_bricks": "Mattoni di andesite", - "block.create.andesite_bricks_slab": "Lastra di mattoni di andesite", - "block.create.andesite_bricks_stairs": "Scalini di mattoni di andesite", - "block.create.andesite_bricks_wall": "Muretto di mattoni di andesite", - "block.create.andesite_casing": "Involucro di andesite", - "block.create.andesite_cobblestone": "Pietrisco di andesite", - "block.create.andesite_cobblestone_slab": "Lastra di pietrisco di andesite", - "block.create.andesite_cobblestone_stairs": "Scalini di pietrisco di andesite", - "block.create.andesite_cobblestone_wall": "Muretto di pietrisco di andesite", - "block.create.andesite_encased_shaft": "Albero incassato di andesite", - "block.create.andesite_funnel": "Imbuto di andesite", - "block.create.andesite_pillar": "Pilastro di andesite", - "block.create.andesite_tunnel": "Tunnel di andesite", - "block.create.basin": "Bacinella", - "block.create.belt": "Nastro meccanico", - "block.create.birch_window": "Finestra di betulla", - "block.create.birch_window_pane": "Pannello di finestra di betulla", - "block.create.black_sail": "Vela nera", - "block.create.black_seat": "Sedile nero", - "block.create.black_valve_handle": "Maniglia per valvola nera", - "block.create.blaze_burner": "Inceneritore di blaze", - "block.create.blue_sail": "Vela blu", - "block.create.blue_seat": "Sedile blu", - "block.create.blue_valve_handle": "Maniglia per valvola blu", - "block.create.brass_belt_funnel": "Imbuto per nastro di ottone", - "block.create.brass_block": "Blocco di ottone", - "block.create.brass_casing": "Involucro di ottone", - "block.create.brass_encased_shaft": "Albero incassato di ottone", - "block.create.brass_funnel": "Imbuto di ottone", - "block.create.brass_tunnel": "Tunnel di ottone", - "block.create.brown_sail": "Vela marrone", - "block.create.brown_seat": "Sedile marrone", - "block.create.brown_valve_handle": "Maniglia per valvola marrone", - "block.create.cart_assembler": "Assemblatore di carrelli da miniera", - "block.create.chiseled_dark_scoria": "Scoria scura cesellata", - "block.create.chiseled_dolomite": "Dolomite cesellata", - "block.create.chiseled_gabbro": "Gabbro cesellato", - "block.create.chiseled_limestone": "Calcare cesellato", - "block.create.chiseled_scoria": "Scoria cesellata", - "block.create.chiseled_weathered_limestone": "Calcare consumato cesellato", - "block.create.chocolate": "Cioccolato", - "block.create.chute": "Scivolo", - "block.create.clockwork_bearing": "Supporto dell'orologio", - "block.create.clutch": "Frizione", - "block.create.cogwheel": "Ruota dentata", - "block.create.content_observer": "Osservatore dei contenuti", - "block.create.controller_rail": "Binario di controllo", - "block.create.copper_block": "Blocco di rame", - "block.create.copper_casing": "Involucro di rame", - "block.create.copper_ore": "Rame grezzo", - "block.create.copper_shingles": "Tegole di rame", - "block.create.copper_tiles": "Piastrelle di rame", - "block.create.copper_valve_handle": "Maniglia per valvola di rame", - "block.create.creative_crate": "Creatore cannoneschematico", - "block.create.creative_fluid_tank": "Serbatoio per fluidi (creativa)", - "block.create.creative_motor": "Motore (creativa)", - "block.create.crushing_wheel": "Ruota di frantumazione", - "block.create.crushing_wheel_controller": "Telecomando per ruota di frantumazione", - "block.create.cuckoo_clock": "Orologio a cucù", - "block.create.cyan_sail": "Vela ciano", - "block.create.cyan_seat": "Sedile ciano", - "block.create.cyan_valve_handle": "Maniglia per valvola ciano", - "block.create.dark_oak_window": "Finestra di quercia scura", - "block.create.dark_oak_window_pane": "Pannello di finestra di quercia scura", - "block.create.dark_scoria": "Scoria scura", - "block.create.dark_scoria_bricks": "Mattoni di scoria scura", - "block.create.dark_scoria_bricks_slab": "Lastra di mattoni di scoria scura", - "block.create.dark_scoria_bricks_stairs": "Scalini di mattoni di scoria scura", - "block.create.dark_scoria_bricks_wall": "Muretto di mattoni di scoria scura", - "block.create.dark_scoria_cobblestone": "Pietrisco di scoria scura", - "block.create.dark_scoria_cobblestone_slab": "Lastra di pietrisco di scoria scura", - "block.create.dark_scoria_cobblestone_stairs": "Scalini di pietrisco di scoria scura", - "block.create.dark_scoria_cobblestone_wall": "Muretto di pietrisco di scoria scura", - "block.create.dark_scoria_pillar": "Pilastro di scoria scura", - "block.create.deployer": "Installatore", - "block.create.depot": "Deposito", - "block.create.diorite_bricks": "Mattoni di diorite", - "block.create.diorite_bricks_slab": "Lastra di mattoni di diorite", - "block.create.diorite_bricks_stairs": "Scalini di mattoni di diorite", - "block.create.diorite_bricks_wall": "Muretto di mattoni di diorite", - "block.create.diorite_cobblestone": "Pietrisco di diorite", - "block.create.diorite_cobblestone_slab": "Lastra di pietrisco di diorite", - "block.create.diorite_cobblestone_stairs": "Scalini di pietrisco di diorite", - "block.create.diorite_cobblestone_wall": "Muretto di pietrisco di diorite", - "block.create.diorite_pillar": "Pilastro di diorite", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_bricks": "Mattoni di dolomite", - "block.create.dolomite_bricks_slab": "Lastra di mattoni di dolomite", - "block.create.dolomite_bricks_stairs": "Scalini di mattoni di dolomite", - "block.create.dolomite_bricks_wall": "Muretto di mattoni di dolomite", - "block.create.dolomite_cobblestone": "Pietrisco di dolomite", - "block.create.dolomite_cobblestone_slab": "Lastra di pietrisco di dolomite", - "block.create.dolomite_cobblestone_stairs": "Scalini di pietrisco di dolomite", - "block.create.dolomite_cobblestone_wall": "Muretto di pietrisco di dolomite", - "block.create.dolomite_pillar": "Pilastro di dolomite", - "block.create.encased_chain_drive": "Trasmissione a catena incassata", - "block.create.encased_fan": "Ventilatore incassato", - "block.create.encased_fluid_pipe": "Tubo per fluidi incassato", - "block.create.fancy_andesite_bricks": "Mattoni di andesite decorati", - "block.create.fancy_andesite_bricks_slab": "Lastra di mattoni di andesite decorati", - "block.create.fancy_andesite_bricks_stairs": "Scalini di mattoni di andesite decorati", - "block.create.fancy_andesite_bricks_wall": "Muretto di mattoni di andesite decorati", - "block.create.fancy_dark_scoria_bricks": "Mattoni di scoria scura decorati", - "block.create.fancy_dark_scoria_bricks_slab": "Lastra di mattoni di scoria scura decorati", - "block.create.fancy_dark_scoria_bricks_stairs": "Scalini di mattoni di scoria scura decorati", - "block.create.fancy_dark_scoria_bricks_wall": "Muretto di mattoni di scoria scura decorati", - "block.create.fancy_diorite_bricks": "Mattoni di diorite decorati", - "block.create.fancy_diorite_bricks_slab": "Lastra di mattoni di diorite decorati", - "block.create.fancy_diorite_bricks_stairs": "Scalini di mattoni di diorite decorati", - "block.create.fancy_diorite_bricks_wall": "Muretto di mattoni di diorite decorati", - "block.create.fancy_dolomite_bricks": "Mattoni di dolomite decorati", - "block.create.fancy_dolomite_bricks_slab": "Lastra di mattoni di dolomite decorati", - "block.create.fancy_dolomite_bricks_stairs": "Scalini di mattoni di dolomite decorati", - "block.create.fancy_dolomite_bricks_wall": "Muretto di mattoni di dolomite decorati", - "block.create.fancy_gabbro_bricks": "Mattoni di gabbro decorati", - "block.create.fancy_gabbro_bricks_slab": "Lastra di mattoni di gabbro decorati", - "block.create.fancy_gabbro_bricks_stairs": "Scalini di mattoni di gabbro decorati", - "block.create.fancy_gabbro_bricks_wall": "Muretto di mattoni di gabbro decorati", - "block.create.fancy_granite_bricks": "Mattoni di granito decorati", - "block.create.fancy_granite_bricks_slab": "Lastra di mattoni di granito decorati", - "block.create.fancy_granite_bricks_stairs": "Scalini di mattoni di granito decorati", - "block.create.fancy_granite_bricks_wall": "Muretto di mattoni di granito decorati", - "block.create.fancy_limestone_bricks": "Mattoni di calcare decorati", - "block.create.fancy_limestone_bricks_slab": "Lastra di mattoni di calcare decorati", - "block.create.fancy_limestone_bricks_stairs": "Scalini di mattoni di calcare decorati", - "block.create.fancy_limestone_bricks_wall": "Muretto di mattoni di calcare decorati", - "block.create.fancy_scoria_bricks": "Mattoni di scoria decorati", - "block.create.fancy_scoria_bricks_slab": "Lastra di mattoni di scoria decorati", - "block.create.fancy_scoria_bricks_stairs": "Scalini di mattoni di scoria decorati", - "block.create.fancy_scoria_bricks_wall": "Muretto di mattoni di scoria decorati", - "block.create.fancy_weathered_limestone_bricks": "Mattoni di calcare consumato decorati", - "block.create.fancy_weathered_limestone_bricks_slab": "Lastra di mattoni di calcare consumato decorati", - "block.create.fancy_weathered_limestone_bricks_stairs": "Scalini di mattoni di calcare consumato decorati", - "block.create.fancy_weathered_limestone_bricks_wall": "Muretto di mattoni di calcare consumato decorati", - "block.create.fluid_pipe": "Tubo per fluidi", - "block.create.fluid_tank": "Serbatoio per fluidi", - "block.create.fluid_valve": "Valvola per fluidi", - "block.create.flywheel": "Volano", - "block.create.framed_glass": "Finestra di vetro", - "block.create.framed_glass_pane": "Pannello di finestra di vetro", - "block.create.furnace_engine": "Motore fornace", - "block.create.gabbro": "Gabbro", - "block.create.gabbro_bricks": "Mattoni di gabbro", - "block.create.gabbro_bricks_slab": "Lastra di mattoni di gabbro", - "block.create.gabbro_bricks_stairs": "Scalini di mattoni di gabbro", - "block.create.gabbro_bricks_wall": "Muretto di mattoni di gabbro", - "block.create.gabbro_cobblestone": "Pietrisco di gabbro", - "block.create.gabbro_cobblestone_slab": "Lastra di pietrisco di gabbro", - "block.create.gabbro_cobblestone_stairs": "Scalini di pietrisco di gabbro", - "block.create.gabbro_cobblestone_wall": "Muretto di pietrisco di gabbro", - "block.create.gabbro_pillar": "Pilastro di gabbro", - "block.create.gantry_pinion": "Pignone a portale", - "block.create.gantry_shaft": "Albero a portale", - "block.create.gearbox": "Riduttore", - "block.create.gearshift": "Cambio", - "block.create.glass_fluid_pipe": "Tubo per fluidi con vetrata", - "block.create.granite_bricks": "Mattoni di granito", - "block.create.granite_bricks_slab": "Lastra di mattoni di granito", - "block.create.granite_bricks_stairs": "Scalini di mattoni di granito", - "block.create.granite_bricks_wall": "Muretto di mattoni di granito", - "block.create.granite_cobblestone": "Pietrisco di granito", - "block.create.granite_cobblestone_slab": "Lastra di pietrisco di granito", - "block.create.granite_cobblestone_stairs": "Scalini di pietrisco di granito", - "block.create.granite_cobblestone_wall": "Muretto di pietrisco di granito", - "block.create.granite_pillar": "Pilastro di granito", - "block.create.gray_sail": "Vela grigia", - "block.create.gray_seat": "Sedile grigio", - "block.create.gray_valve_handle": "Maniglia per valvola grigia", - "block.create.green_sail": "Vela verde", - "block.create.green_seat": "Sedile verde", - "block.create.green_valve_handle": "Maniglia per valvola verde", - "block.create.hand_crank": "Manovella", - "block.create.honey": "Miele", - "block.create.horizontal_framed_glass": "Finestra di vetro orizzontale", - "block.create.horizontal_framed_glass_pane": "Pannello di finestra di vetro orizzontale", - "block.create.hose_pulley": "Carrucola per tubi", - "block.create.item_drain": "Drenante di oggetti", - "block.create.jungle_window": "Finestra della giungla", - "block.create.jungle_window_pane": "Pannello di finestra della giungla", - "block.create.large_cogwheel": "Ruota dentata grande", - "block.create.layered_andesite": "Andesite stratificata", - "block.create.layered_dark_scoria": "Scoria scura stratificata", - "block.create.layered_diorite": "Diorite stratificata", - "block.create.layered_dolomite": "Dolomite stratificata", - "block.create.layered_gabbro": "Gabbro stratificato", - "block.create.layered_granite": "Granito stratificato", - "block.create.layered_limestone": "Calcare stratificato", - "block.create.layered_scoria": "Scoria stratificata", - "block.create.layered_weathered_limestone": "Calcare consumato stratificato", - "block.create.light_blue_sail": "Vela azzurra", - "block.create.light_blue_seat": "Sedile azzurro", - "block.create.light_blue_valve_handle": "Maniglia per valvola azzurra", - "block.create.light_gray_sail": "Vela grigio chiaro", - "block.create.light_gray_seat": "Sedile grigio chiaro", - "block.create.light_gray_valve_handle": "Maniglia per valvola grigio chiaro", - "block.create.lime_sail": "Vela lime", - "block.create.lime_seat": "Sedile lime", - "block.create.lime_valve_handle": "Maniglia per valvola lime", - "block.create.limesand": "Arenaria calcarea", - "block.create.limestone": "Calcare", - "block.create.limestone_bricks": "Mattoni di calcare", - "block.create.limestone_bricks_slab": "Lastra di mattoni di calcare", - "block.create.limestone_bricks_stairs": "Scalini di mattoni di calcare", - "block.create.limestone_bricks_wall": "Muretto di mattoni di calcare", - "block.create.limestone_cobblestone": "Pietrisco di calcare", - "block.create.limestone_cobblestone_slab": "Lastra di pietrisco di calcare", - "block.create.limestone_cobblestone_stairs": "Scalini di pietrisco di calcare", - "block.create.limestone_cobblestone_wall": "Muretto di pietrisco di calcare", - "block.create.limestone_pillar": "Pilastro di calcare", - "block.create.linear_chassis": "Telaio lineare", - "block.create.lit_blaze_burner": "Inceneritore di blaze acceso", - "block.create.magenta_sail": "Vela magenta", - "block.create.magenta_seat": "Sedile magenta", - "block.create.magenta_valve_handle": "Maniglia per valvola magenta", - "block.create.mechanical_arm": "Braccio meccanico", - "block.create.mechanical_bearing": "Supporto meccanico", - "block.create.mechanical_crafter": "Costruttore meccanico", - "block.create.mechanical_drill": "Trapano meccanico", - "block.create.mechanical_harvester": "Mietitrice meccanica", - "block.create.mechanical_mixer": "Miscelatore meccanico", - "block.create.mechanical_piston": "Pistone meccanico", - "block.create.mechanical_piston_head": "Testa di pistone meccanico", - "block.create.mechanical_plough": "Aratro meccanico", - "block.create.mechanical_press": "Pressa meccanica", - "block.create.mechanical_pump": "Pompa meccanica", - "block.create.mechanical_saw": "Sega meccanica", - "block.create.metal_bracket": "Supporto di metallo", - "block.create.millstone": "Macina", - "block.create.minecart_anchor": "Ancora per carrello da miniera", - "block.create.mossy_andesite": "Andesite muschiosa", - "block.create.mossy_dark_scoria": "Scoria scura muschiosa", - "block.create.mossy_diorite": "Diorite muschiosa", - "block.create.mossy_dolomite": "Dolomite muschiosa", - "block.create.mossy_gabbro": "Gabbro muschioso", - "block.create.mossy_granite": "Granito muschioso", - "block.create.mossy_limestone": "Calcare muschioso", - "block.create.mossy_scoria": "Scoria muschiosa", - "block.create.mossy_weathered_limestone": "Calcare consumato muschioso", - "block.create.mysterious_cuckoo_clock": "Orologio a cucù misterioso", - "block.create.natural_scoria": "Scoria naturale", - "block.create.nixie_tube": "Tubo nixie", - "block.create.nozzle": "Ugello", - "block.create.oak_window": "Finestra di quercia", - "block.create.oak_window_pane": "Pannello di finestra di quercia", - "block.create.orange_sail": "Vela arancione", - "block.create.orange_seat": "Sedile arancione", - "block.create.orange_valve_handle": "Maniglia per valvola arancione", - "block.create.ornate_iron_window": "Finestra di ferro ornata", - "block.create.ornate_iron_window_pane": "Pannello di finestra di ferro ornata", - "block.create.overgrown_andesite": "Andesite coperta", - "block.create.overgrown_dark_scoria": "Scoria scura coperta", - "block.create.overgrown_diorite": "Diorite coperta", - "block.create.overgrown_dolomite": "Dolomite coperta", - "block.create.overgrown_gabbro": "Gabbro coperto", - "block.create.overgrown_granite": "Granito coperto", - "block.create.overgrown_limestone": "Calcare coperto", - "block.create.overgrown_scoria": "Scoria coperta", - "block.create.overgrown_weathered_limestone": "Calcare consumato coperto", - "block.create.paved_andesite": "Andesite lastricata", - "block.create.paved_andesite_slab": "Lastra di andesite lastricata", - "block.create.paved_andesite_stairs": "Scalini di andesite lastricata", - "block.create.paved_andesite_wall": "Muretto di andesite lastricata", - "block.create.paved_dark_scoria": "Scoria scura lastricata", - "block.create.paved_dark_scoria_slab": "Lastra di scoria scura lastricata", - "block.create.paved_dark_scoria_stairs": "Scalini di scoria scura lastricata", - "block.create.paved_dark_scoria_wall": "Muretto di scoria scura lastricata", - "block.create.paved_diorite": "Diorite lastricata", - "block.create.paved_diorite_slab": "Lastra di diorite lastricata", - "block.create.paved_diorite_stairs": "Scalini di diorite lastricata", - "block.create.paved_diorite_wall": "Muretto di diorite lastricata", - "block.create.paved_dolomite": "Dolomite lastricata", - "block.create.paved_dolomite_slab": "Lastra di dolomite lastricata", - "block.create.paved_dolomite_stairs": "Scalini di dolomite lastricata", - "block.create.paved_dolomite_wall": "Muretto di dolomite lastricata", - "block.create.paved_gabbro": "Gabbro lastricato", - "block.create.paved_gabbro_slab": "Lastra di gabbro lastricato", - "block.create.paved_gabbro_stairs": "Scalini di gabbro lastricato", - "block.create.paved_gabbro_wall": "Muretto di gabbro lastricato", - "block.create.paved_granite": "Granito lastricato", - "block.create.paved_granite_slab": "Lastra di granito lastricato", - "block.create.paved_granite_stairs": "Scalini di granito lastricato", - "block.create.paved_granite_wall": "Muretto di granito lastricato", - "block.create.paved_limestone": "Calcare lastricato", - "block.create.paved_limestone_slab": "Lastra di calcare lastricato", - "block.create.paved_limestone_stairs": "Scalini di calcare lastricato", - "block.create.paved_limestone_wall": "Muretto di calcare lastricato", - "block.create.paved_scoria": "Scoria lastricata", - "block.create.paved_scoria_slab": "Lastra di scoria lastricata", - "block.create.paved_scoria_stairs": "Scalini di scoria lastricata", - "block.create.paved_scoria_wall": "Muretto di scoria lastricata", - "block.create.paved_weathered_limestone": "Calcare consumato lastricato", - "block.create.paved_weathered_limestone_slab": "Lastra di calcare consumato lastricato", - "block.create.paved_weathered_limestone_stairs": "Scalini di calcare consumato lastricato", - "block.create.paved_weathered_limestone_wall": "Muretto di calcare consumato lastricato", - "block.create.pink_sail": "Vela rosa", - "block.create.pink_seat": "Sedile rosa", - "block.create.pink_valve_handle": "Maniglia per valvola rosa", - "block.create.piston_extension_pole": "Palo di pistone", - "block.create.polished_dark_scoria": "Scoria scura levigata", - "block.create.polished_dark_scoria_slab": "Lastra di scoria scura levigata", - "block.create.polished_dark_scoria_stairs": "Scalini di scoria scura levigata", - "block.create.polished_dark_scoria_wall": "Muretto di scoria scura levigata", - "block.create.polished_dolomite": "Dolomite levigata", - "block.create.polished_dolomite_slab": "Lastra di dolomite levigata", - "block.create.polished_dolomite_stairs": "Scalini di dolomite levigata", - "block.create.polished_dolomite_wall": "Muretto di dolomite levigata", - "block.create.polished_gabbro": "Gabbro levigato", - "block.create.polished_gabbro_slab": "Lastra di gabbro levigato", - "block.create.polished_gabbro_stairs": "Scalini di gabbro levigato", - "block.create.polished_gabbro_wall": "Muretto di gabbro levigato", - "block.create.polished_limestone": "Calcare levigato", - "block.create.polished_limestone_slab": "Lastra di calcare levigato", - "block.create.polished_limestone_stairs": "Scalini di calcare levigato", - "block.create.polished_limestone_wall": "Muretto di calcare levigato", - "block.create.polished_scoria": "Scoria levigata", - "block.create.polished_scoria_slab": "Lastra di scoria levigata", - "block.create.polished_scoria_stairs": "Scalini di scoria levigata", - "block.create.polished_scoria_wall": "Muretto di scoria levigata", - "block.create.polished_weathered_limestone": "Calcare consumato levigato", - "block.create.polished_weathered_limestone_slab": "Lastra di calcare consumato levigato", - "block.create.polished_weathered_limestone_stairs": "Scalini di calcare consumato levigato", - "block.create.polished_weathered_limestone_wall": "Muretto di calcare consumato levigato", - "block.create.portable_fluid_interface": "Interfaccia per fluidi portatile", - "block.create.portable_storage_interface": "Interfaccia di archiviazione portatile", - "block.create.powered_latch": "Leva alimentata", - "block.create.powered_toggle_latch": "Leva alimentata alterata", - "block.create.pulley_magnet": "Magnete della carrucola", - "block.create.pulse_repeater": "Ripetitore di impulsi", - "block.create.purple_sail": "Vela viola", - "block.create.purple_seat": "Sedile viola", - "block.create.purple_valve_handle": "Maniglia per valvola viola", - "block.create.radial_chassis": "Telaio radiale", - "block.create.red_sail": "Vela rossa", - "block.create.red_seat": "Sedile rosso", - "block.create.red_valve_handle": "Maniglia per valvola rossa", - "block.create.redstone_contact": "Contatto redstone", - "block.create.redstone_link": "Collegamento redstone", - "block.create.refined_radiance_casing": "Involucro radiante", - "block.create.reinforced_rail": "Binario rinforzato", - "block.create.rope": "Corda", - "block.create.rope_pulley": "Carrucola per corde", - "block.create.rotation_speed_controller": "Regolatore di velocità di rotazione", - "block.create.sail_frame": "Telaio per vela", - "block.create.schematic_table": "Banco schematico", - "block.create.schematicannon": "Cannoneschematico", - "block.create.scoria": "Scoria", - "block.create.scoria_bricks": "Mattoni di scoria", - "block.create.scoria_bricks_slab": "Lastra di mattoni di scoria", - "block.create.scoria_bricks_stairs": "Scalini di mattoni di scoria", - "block.create.scoria_bricks_wall": "Muretto di mattoni di scoria", - "block.create.scoria_cobblestone": "Pietrisco di scoria", - "block.create.scoria_cobblestone_slab": "Lastra di pietrisco di scoria", - "block.create.scoria_cobblestone_stairs": "Scalini di pietrisco di scoria", - "block.create.scoria_cobblestone_wall": "Muretto di pietrisco di scoria", - "block.create.scoria_pillar": "Pilastro di scoria", - "block.create.secondary_linear_chassis": "Telaio lineare secondario", - "block.create.sequenced_gearshift": "Cambio sequenziale", - "block.create.shadow_steel_casing": "Involucro ombra", - "block.create.shaft": "Albero", - "block.create.smart_chute": "Scivolo avanzato", - "block.create.smart_fluid_pipe": "Tubo per fluidi avanzato", - "block.create.speedometer": "Tachimetro", - "block.create.spout": "Spruzzo", - "block.create.spruce_window": "Finestra di abete", - "block.create.spruce_window_pane": "Pannello di finestra di abete", - "block.create.sticky_mechanical_piston": "Pistone meccanico appiccicoso", - "block.create.stockpile_switch": "Interruttore accumulatore", - "block.create.stressometer": "Stressometro", - "block.create.tiled_glass": "Vetro piastrellato", - "block.create.tiled_glass_pane": "Pannello di vetro piastrellato", - "block.create.turntable": "Piatto", - "block.create.vertical_framed_glass": "Finestra di vetro verticale", - "block.create.vertical_framed_glass_pane": "Pannello di finestra di vetro verticale", - "block.create.water_wheel": "Ruota idraulica", - "block.create.weathered_limestone": "Calcare consumato", - "block.create.weathered_limestone_bricks": "Mattoni di calcare consumato", - "block.create.weathered_limestone_bricks_slab": "Lastra di mattoni di calcare consumato", - "block.create.weathered_limestone_bricks_stairs": "Scalini di mattoni di calcare consumato", - "block.create.weathered_limestone_bricks_wall": "Muretto di mattoni di calcare consumato", - "block.create.weathered_limestone_cobblestone": "Pietrisco di calcare consumato", - "block.create.weathered_limestone_cobblestone_slab": "Lastra di pietrisco di calcare consumato", - "block.create.weathered_limestone_cobblestone_stairs": "Scalini di pietrisco di calcare consumato", - "block.create.weathered_limestone_cobblestone_wall": "Muretto di pietrisco di calcare consumato", - "block.create.weathered_limestone_pillar": "Pilastro di calcare consumato", - "block.create.white_sail": "Vela bianca", - "block.create.white_seat": "Sedile bianco", - "block.create.white_valve_handle": "Maniglia per valvola bianca", - "block.create.windmill_bearing": "Supporto per mulino a vento", - "block.create.wooden_bracket": "Supporto di legno", - "block.create.yellow_sail": "Vela gialla", - "block.create.yellow_seat": "Sedile giallo", - "block.create.yellow_valve_handle": "Maniglia per valvola gialla", - "block.create.zinc_block": "Blocco di zinco", - "block.create.zinc_ore": "Zinco grezzo", - - "entity.create.contraption": "Contrazione", - "entity.create.seat": "Sedile", - "entity.create.stationary_contraption": "Contrazione stazionaria", - "entity.create.super_glue": "Super colla", - - "fluid.create.milk": "Latte", - "fluid.create.potion": "Pozione", - "fluid.create.tea": "Tè del costruttore", - - "item.create.andesite_alloy": "Lega di andesite", - "item.create.attribute_filter": "Filtro attributi", - "item.create.bar_of_chocolate": "Barretta di cioccolato", - "item.create.belt_connector": "Nastro meccanico", - "item.create.blaze_cake": "Torta per blaze", - "item.create.blaze_cake_base": "Base della torta per blaze", - "item.create.brass_hand": "Mano", - "item.create.brass_ingot": "Lingotto di ottone", - "item.create.brass_nugget": "Pepita di ottone", - "item.create.brass_sheet": "Lamiera di ottone", - "item.create.builders_tea": "Tè del costruttore", - "item.create.chest_minecart_contraption": "Contrazione per carrello da miniera con baule", - "item.create.chocolate_bucket": "Secchio di cioccolata", - "item.create.chromatic_compound": "Composto cromatico", - "item.create.cinder_flour": "Cenere farinosa", - "item.create.copper_ingot": "Lingotto di rame", - "item.create.copper_nugget": "Pepita di rame", - "item.create.copper_sheet": "Lamiera di rame", - "item.create.crafter_slot_cover": "Rivestimento per slot da costruzione", - "item.create.crushed_aluminum_ore": "Alluminio grezzo frantumato", - "item.create.crushed_brass": "Ottone frantumato", - "item.create.crushed_copper_ore": "Rame grezzo frantumato", - "item.create.crushed_gold_ore": "Oro grezzo frantumato", - "item.create.crushed_iron_ore": "Ferro grezzo frantumato", - "item.create.crushed_lead_ore": "Piombo grezzo frantumato", - "item.create.crushed_nickel_ore": "Nichel grezzo frantumato", - "item.create.crushed_osmium_ore": "Osmio grezzo frantumato", - "item.create.crushed_platinum_ore": "Platino grezzo frantumato", - "item.create.crushed_quicksilver_ore": "Mercurio grezzo frantumato", - "item.create.crushed_silver_ore": "Argento grezzo frantumato", - "item.create.crushed_tin_ore": "Stagno grezzo frantumato", - "item.create.crushed_uranium_ore": "Uranio grezzo frantumato", - "item.create.crushed_zinc_ore": "Zinco grezzo frantumato", - "item.create.deforester": "Deforestatore", - "item.create.dough": "Impasto", - "item.create.electron_tube": "Valvola", - "item.create.empty_blaze_burner": "Inceneritore di blaze vuoto", - "item.create.empty_schematic": "Schematica vuota", - "item.create.extendo_grip": "Presa extendo", - "item.create.filter": "Filtro", - "item.create.furnace_minecart_contraption": "Contrazione per carrello da miniera con fornace", - "item.create.goggles": "Occhiali da ingegnere", - "item.create.golden_sheet": "Lamiera d'oro", - "item.create.handheld_blockzapper": "Zapper di blocchi portatile", - "item.create.handheld_worldshaper": "Plasmatore del mondo portatile", - "item.create.honey_bucket": "Secchio di miele", - "item.create.integrated_circuit": "Circuito integrato", - "item.create.iron_sheet": "Lamiera di ferro", - "item.create.lapis_sheet": "Lamiera di lapislazzuli", - "item.create.minecart_contraption": "Contrazione per carrello da miniera", - "item.create.minecart_coupling": "Aggancio per carrelli da miniera", - "item.create.polished_rose_quartz": "Quarzo rosa levigato", - "item.create.powdered_obsidian": "Ossidiana in polvere", - "item.create.propeller": "Elica", - "item.create.red_sand_paper": "Carta vetrata rossa", - "item.create.refined_radiance": "Radiance raffinata", - "item.create.rose_quartz": "Quarzo rosa", - "item.create.sand_paper": "Carta vetrata", - "item.create.schematic": "Schematica", - "item.create.schematic_and_quill": "Schematica e penna d'oca", - "item.create.shadow_steel": "Acciaio oscuro", - "item.create.super_glue": "Super colla", - "item.create.tree_fertilizer": "Fertilizzante per alberi", - "item.create.vertical_gearbox": "Riduttore verticale", - "item.create.wand_of_symmetry": "Asta di simmetria", - "item.create.wheat_flour": "Farina di grano", - "item.create.whisk": "Frusta", - "item.create.wrench": "Chiave inglese", - "item.create.zinc_ingot": "Barra di zinco", - "item.create.zinc_nugget": "Pepita di zinco", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Benvenuti alla Create", - "advancement.create.root.desc": "È ora di iniziare a costruire marchingegni fantastici!", - "advancement.create.andesite_alloy": "Allitterazioni in abbondanza", - "advancement.create.andesite_alloy.desc": "I materiali della Create hanno nomi strani, 'lega di andesite' è uno di quelli.", - "advancement.create.its_alive": "Si muove!", - "advancement.create.its_alive.desc": "Guarda il tuo primo componente cinetico che gira.", - "advancement.create.shifting_gears": "Meccanismi moventi", - "advancement.create.shifting_gears.desc": "Aggancia una ruota dentata grande con una piccola, permettendoti di cambiare la velocità.", - "advancement.create.overstressed": "Sovrastressato", - "advancement.create.overstressed.desc": "Vivi l'esperienza dei limiti dello stress in prima persona.", - "advancement.create.belt": "Nastro trasportatore", - "advancement.create.belt.desc": "Connetti due alberi con un nastro meccanico.", - "advancement.create.tunnel": "Coprilo!", - "advancement.create.tunnel.desc": "Abbellisci il tuo nastro meccanico con un tunnel.", - "advancement.create.splitter_tunnel": "Dividi e conquista", - "advancement.create.splitter_tunnel.desc": "Crea un separatore con una serie di tubi in ottone.", - "advancement.create.chute": "Giù per il tubo", - "advancement.create.chute.desc": "Piazza uno scivolo, la controparte verticale del nastro.", - "advancement.create.upward_chute": "SI VOLAAAA", - "advancement.create.upward_chute.desc": "Fai cadere un oggetto e guardalo salire per uno scivolo.", - "advancement.create.belt_funnel": "Gli imbuti", - "advancement.create.belt_funnel.desc": "Piazza un imbuto laterale su un nastro o di un deposito per creare un genere speciale.", - "advancement.create.belt_funnel_kiss": "Che dolce...", - "advancement.create.belt_funnel_kiss.desc": "Fai in modo che due imbuti montati su un nastro si 'bacino'.", - "advancement.create.fan": "Il dominatore dei venti", - "advancement.create.fan.desc": "Cavalca la corrente d'aria di un ventilatore incassato.", - "advancement.create.fan_lava": "Qui si scioglie", - "advancement.create.fan_lava.desc": "Mettiti in mezzo ad una corrente d'aria che fonde le cose.", - "advancement.create.fan_water": "Lavaggio da brivido", - "advancement.create.fan_water.desc": "Mettiti in mezzo ad una corrente d'aria che lava le cose.", - "advancement.create.fan_smoke": "Coff coff", - "advancement.create.fan_smoke.desc": "Mettiti in mezzo ad una corrente d'aria che affumica le cose.", - "advancement.create.wrench": "Configurazione", - "advancement.create.wrench.desc": "Crea una chiave inglese per aiutarti con le tue macchine.", - "advancement.create.goggles": "Vedo tutto", - "advancement.create.goggles.desc": "Crea degli occhiali da ingegnere per aiutarti a vedere più informazioni sui componenti cinetici.", - "advancement.create.speedometer": "Che velocità!", - "advancement.create.speedometer.desc": "Piazza e alimenta un tachimetro. Guardalo con gli occhiali per leggere il suo esatto valore.", - "advancement.create.stressometer": "Che stress!", - "advancement.create.stressometer.desc": "Piazza e alimenta un tachimetro. Guardalo con gli occhiali per leggere il suo esatto valore.", - "advancement.create.aesthetics": "Esteticamente perfetto", - "advancement.create.aesthetics.desc": "Piazza dei supporti su alberi, tubi e ruote dentate.", - "advancement.create.reinforced": "Rinforzato!", - "advancement.create.reinforced.desc": "Usa degli involucri appropriati su alberi, tubi e nastri meccanici.", - "advancement.create.water_wheel": "Ingegneria idraulica", - "advancement.create.water_wheel.desc": "Piazza una ruota idraulica e prova a farla girare!", - "advancement.create.chocolate_wheel": "Potere... tanto potere", - "advancement.create.chocolate_wheel.desc": "Fai girare una ruota idraulica con del cioccolato fuso.", - "advancement.create.lava_wheel": "Ruota magmatica", - "advancement.create.lava_wheel.desc": "Non dovrebbe funzionare così.", - "advancement.create.cuckoo": "È ora?", - "advancement.create.cuckoo.desc": "Aspetta che un orologio a cucù annunci l'ora di andare a dormire.", - "advancement.create.millstone": "Frantumatore portatile", - "advancement.create.millstone.desc": "Piazza e alimenta una macina.", - "advancement.create.windmill": "Una lieve brezza", - "advancement.create.windmill.desc": "Assembla un mulino a vento.", - "advancement.create.maxed_windmill": "Un vento potente", - "advancement.create.maxed_windmill.desc": "Assembla un mulino a vento con la massima potenza.", - "advancement.create.andesite_casing": "L'era dell'andesite", - "advancement.create.andesite_casing.desc": "Usa della lega di andesite e del legno per creare un involucro basilare.", - "advancement.create.mechanical_drill": "Distruttore statico", - "advancement.create.mechanical_drill.desc": "Piazza e alimenta una trivella meccanica.", - "advancement.create.press": "Come fa la pressa? BONK", - "advancement.create.press.desc": "Alimenta una pressa meccanica e usala per creare delle lamiere.", - "advancement.create.polished_rose_quartz": "Diamanti rosa", - "advancement.create.polished_rose_quartz.desc": "Usa un pezzo di carta vetrata per levigare il quarzo rosa finché non diventa trasparente.", - "advancement.create.electron_tube": "BeEp bOoP", - "advancement.create.electron_tube.desc": "Crea delle valvole, utile nella creazione di macchinari basici.", - "advancement.create.mechanical_saw": "Taglialegna statico", - "advancement.create.mechanical_saw.desc": "Piazza e alimenta una sega meccanica.", - "advancement.create.basin": "Operazione bacinella", - "advancement.create.basin.desc": "Piazza una bacinella e buttaci dentro degli oggetti.", - "advancement.create.mixer": "Facciamo un bel mix", - "advancement.create.mixer.desc": "Piazza un miscelatore meccanico sobra una bacinella, alimentalo e inizia a mischiare alcuni ingredienti.", - "advancement.create.blaze_burner": "Un camino vivente", - "advancement.create.blaze_burner.desc": "Ottieni un inceneritore di blaze.", - "advancement.create.compact": "Compattazione automatica", - "advancement.create.compact.desc": "Usa una pressa e una bacinella per compattare certi oggetti.", - "advancement.create.brass": "L'ottone", - "advancement.create.brass.desc": "Usa il rame e lo zinco frantumati per creare dell'ottone.", - "advancement.create.brass_casing": "L'era dell'ottone", - "advancement.create.brass_casing.desc": "Usa l'ottone e del legno per creare involucri più avanzati.", - "advancement.create.copper_casing": "L'era del rame", - "advancement.create.copper_casing.desc": "Usa delle lamiere di ottone e del legno per creare involucri di ottone.", - "advancement.create.spout": "SPLASH", - "advancement.create.spout.desc": "Guarda mentre un oggetto fluido viene versato con uno spruzzo.", - "advancement.create.spout_potion": "Birrificio mondiale", - "advancement.create.spout_potion.desc": "Guarda mentre uno spruzzo riempie una bottiglia col liquido di una pozione.", - "advancement.create.chocolate": "Viva il cioccolato", - "advancement.create.chocolate.desc": "Ottieni un secchio di cioccolato fuso", - "advancement.create.item_drain": "Svuotamento completo", - "advancement.create.item_drain.desc": "Guarda un oggetto mentre viene svuotato da un drenante di oggetti.", - "advancement.create.chained_item_drain": "Lascialo rotolare", - "advancement.create.chained_item_drain.desc": "Guarda un oggetto rotolare attraverso una serie di drenanti di oggetti concatenati.", - "advancement.create.glass_pipe": "Spiare il flusso", - "advancement.create.glass_pipe.desc": "Guarda mentre un fluido si propaga attraverso un tubo per fluidi con vetrata. Puoi aggiungere una vetrata cliccando con una chiave inglese sui tubi per fluidi dritti.", - "advancement.create.pipe_collision": "Mai incrociare due correnti!", - "advancement.create.pipe_collision.desc": "Guarda mentre due fluidi diversi si incrociano nella tua rete di tubi.", - "advancement.create.pipe_spill": "Ci dev'essere una perdita...", - "advancement.create.pipe_spill.desc": "Guarda mentre l'estremità aperta di un tubo assorbe o piazza dei fluidi nel mondo esterno.", - "advancement.create.hose_pulley": "Spillamento industriale", - "advancement.create.hose_pulley.desc": "Tira giù una carrucola per tubi e guardala drenare o riempire un corpo dal fluido.", - "advancement.create.infinite_water": "Drenare un oceano", - "advancement.create.infinite_water.desc": "Pompa da un corpo d'acqua abbastanza esteso da essere considerato infinito.", - "advancement.create.infinite_lava": "Drenare il nucleo di un pianeta", - "advancement.create.infinite_lava.desc": "Pompa da un corpo di lava abbastanza esteso da essere considerato infinito.", - "advancement.create.infinite_chocolate": "Drenare la Fabbrica di Cioccolato", - "advancement.create.infinite_chocolate.desc": "Pompa da un corpo di cioccolato fuso abbastanza esteso da essere considerato infinito.", - "advancement.create.crafter": "Assemblamento automatico", - "advancement.create.crafter.desc": "Piazza e alimenta dei costruttori meccanici.", - "advancement.create.clockwork_bearing": "Tic toc tic toc", - "advancement.create.clockwork_bearing.desc": "Assembla una struttura montata su un supporto dell'orologio.", - "advancement.create.nixie_tube": "Segni di stile", - "advancement.create.nixie_tube.desc": "Ottieni e piazza un paio di tubi nixie.", - "advancement.create.deployer": "Piazza e attacca", - "advancement.create.deployer.desc": "Piazza e alimenta un installatore, il riflesso perfetto di te stesso.", - "advancement.create.speed_controller": "Gli ingegneri lo odiano", - "advancement.create.speed_controller.desc": "Piazza un regolatore di velocità di rotazione, il dispositivo più avanzato in termini di meccanica.", - "advancement.create.flywheel": "Il cuore della fabbrica", - "advancement.create.flywheel.desc": "Collega un motore ad un volano.", - "advancement.create.overstress_flywheel": "Alti livelli di stress", - "advancement.create.overstress_flywheel.desc": "Sovrastressa un motore fornace.", - "advancement.create.integrated_circuit": "Calcolo complesso", - "advancement.create.integrated_circuit.desc": "Assembla un circuito integrato.", - "advancement.create.mechanical_arm": "Mani occupate!", - "advancement.create.mechanical_arm.desc": "Costruisci un braccio meccanico, seleziona gli input e gli output, piazzalo e alimentalo; poi guardalo mentre fa il lavoro sporco al tuo posto.", - "advancement.create.musical_arm": "DJ, metti su la musica!", - "advancement.create.musical_arm.desc": "Guarda mentre un braccio meccanico attiva un giradischi.", - "advancement.create.arm_many_targets": "Organizzatore seriale", - "advancement.create.arm_many_targets.desc": "Programma un braccio meccanico con 10 o più posizioni di output.", - "advancement.create.arm_blaze_burner": "Combustibili", - "advancement.create.arm_blaze_burner.desc": "Istruisci il tuo braccio meccanico ad alimentare un inceneritore di blaze.", - "advancement.create.fist_bump": "Mano a mano!", - "advancement.create.fist_bump.desc": "Metti uno contro l'altro due installatori.", - "advancement.create.crushing_wheel": "Una coppia di giganti", - "advancement.create.crushing_wheel.desc": "Crea delle ruote di frantumazione per frantumare i materiali.", - "advancement.create.blaze_cake": "Sugar Rush", - "advancement.create.blaze_cake.desc": "Dai una torta di blaze al tuo inceneritore.", - "advancement.create.chromatic_compound": "Minerali bipolari", - "advancement.create.chromatic_compound.desc": "Crea una barra di composto cromatico.", - "advancement.create.shadow_steel": "Il ritorno del Vuoto", - "advancement.create.shadow_steel.desc": "Crea l'acciaio oscuro, una barra di metallo composta dalla non-esistenza.", - "advancement.create.refined_radiance": "Illumina e ispira", - "advancement.create.refined_radiance.desc": "Crea la radiance raffinata, una sostanza cromatica potente.", - "advancement.create.chromatic_age": "L'era cromatica", - "advancement.create.chromatic_age.desc": "Crea involucri di luce e d'ombra.", - "advancement.create.zapper": "Stile nella costruzione", - "advancement.create.zapper.desc": "Crea uno zapper di blocchi. Una pistola laser che ti aiuta a costruire.", - "advancement.create.upgraded_zapper": "Overdrive", - "advancement.create.upgraded_zapper.desc": "Crea e attiva uno zapper di blocchi potenziato al massimo.", - "advancement.create.wand_of_symmetry": "Perfettamente simmetrico", - "advancement.create.wand_of_symmetry.desc": "Crea un'asta di simmetria.", - "advancement.create.deforester": "Deforestazione avanzata", - "advancement.create.deforester.desc": "Crea un deforestatore. Ciao ciao alberelli...", - "advancement.create.extendo_grip": "BOIOIOING", - "advancement.create.extendo_grip.desc": "Procurati una presa extendo.", - "advancement.create.dual_extendo_grip": "Boingaggio estremo", - "advancement.create.dual_extendo_grip.desc": "Brandisci due prese extendo per raggiungere il superuomo.", - "advancement.create.eob": "Fine della beta", - "advancement.create.eob.desc": "Aspettati altri contenuti in futuro. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create: Blocchi", - - "death.attack.create.crush": "%1$s è stato frantumato", - "death.attack.create.fan_fire": "%1$s è stato bruciato dall'aria calda", - "death.attack.create.fan_lava": "%1$s è stato bruciato dal ventilatore di lava", - "death.attack.create.mechanical_drill": "%1$s è stato trafitto dal trapano meccanico", - "death.attack.create.mechanical_saw": "%1$s è stato tagliato a metà dalla sega meccanica", - "death.attack.create.cuckoo_clock_explosion": "%1$s è saltato in aria da un orologio a cucù manomesso", - - "create.block.deployer.damage_source_name": "un disadattato", - "create.block.cart_assembler.invalid": "Piazza il tuo assemblatore di carrelli da miniera su un binario", - - "create.recipe.crushing": "Frantumazione", - "create.recipe.milling": "Macinatura", - "create.recipe.fan_washing": "Lavaggio volumetrico", - "create.recipe.fan_washing.fan": "Ventilatore dietro l'acqua corrente", - "create.recipe.fan_smoking": "Fumo volumetrico", - "create.recipe.fan_smoking.fan": "Ventilatore dietro il fuoco", - "create.recipe.fan_blasting": "Esplosione volumetrica", - "create.recipe.fan_blasting.fan": "Ventilatore dietro la lava", - "create.recipe.pressing": "Pressatura", - "create.recipe.mixing": "Mescolamento", - "create.recipe.automatic_shapeless": "Costruzione informe automatizzata", - "create.recipe.automatic_brewing": "Fermentazione automatica", - "create.recipe.packing": "Compattazione", - "create.recipe.automatic_packing": "Imballaggio automatico", - "create.recipe.sawing": "Sega", - "create.recipe.mechanical_crafting": "Costruzione meccanica", - "create.recipe.automatic_shaped": "Costruzione con forma automatizzata", - "create.recipe.block_cutting": "Taglio di blocchi", - "create.recipe.blockzapper_upgrade": "Zapper di blocchi portatile", - "create.recipe.sandpaper_polishing": "Levigamento da carta vetrata", - "create.recipe.mystery_conversion": "Metamorfosi cromatica", - "create.recipe.spout_filling": "Riempimento da spruzzo", - "create.recipe.draining": "Drenaggio di oggetti", - "create.recipe.processing.chance": "%1$s%% di probabilità", - "create.recipe.heat_requirement.none": "Nessun riscaldamento", - "create.recipe.heat_requirement.heated": "Riscaldamento", - "create.recipe.heat_requirement.superheated": "Super riscaldamento", - - "create.generic.range": "Gamma", - "create.generic.radius": "Raggio", - "create.generic.width": "Larghezza", - "create.generic.height": "Altezza", - "create.generic.length": "Lunghezza", - "create.generic.speed": "Velocità", - "create.generic.delay": "Ritardo", - "create.generic.unit.ticks": "Tick", - "create.generic.unit.seconds": "Secondi", - "create.generic.unit.minutes": "Minuti", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$s mB", - "create.generic.clockwise": "Senso orario", - "create.generic.counter_clockwise": "Senso anti-orario", - - "create.action.scroll": "Scorri", - "create.action.confirm": "Conferma", - "create.action.abort": "Annulla", - "create.action.saveToFile": "Salva", - "create.action.discard": "Scarta", - - "create.keyinfo.toolmenu": "Focalizzazione sul menù degli strumenti", - "create.keyinfo.scrollup": "Simula rotellina del mouse verso su (nel mondo)", - "create.keyinfo.scrolldown": "Simula rotellina del mouse verso giù (nel mondo)", - - "create.gui.scrollInput.defaultTitle": "Scegli un'opzione:", - "create.gui.scrollInput.scrollToModify": "Scorri per modificare", - "create.gui.scrollInput.scrollToAdjustAmount": "Scorri fino a regolare l'importo", - "create.gui.scrollInput.scrollToSelect": "Scorri per selezionare", - "create.gui.scrollInput.shiftScrollsFaster": "Premi shift per scorrere più velocemente", - "create.gui.toolmenu.focusKey": "Premi [%1$s] per aprire il menù", - "create.gui.toolmenu.cycle": "[SCORRI] per navigare", - "create.gui.symmetryWand.mirrorType": "Specchio", - "create.gui.symmetryWand.orientation": "Orientamento", - - "create.symmetry.mirror.plane": "Singola", - "create.symmetry.mirror.doublePlane": "Rettangolare", - "create.symmetry.mirror.triplePlane": "Ottagonale", - - "create.orientation.orthogonal": "Ortogonale", - "create.orientation.diagonal": "Diagonale", - "create.orientation.horizontal": "Orizzontale", - "create.orientation.alongZ": "Lungo Z", - "create.orientation.alongX": "Lungo X", - - "create.gui.blockzapper.title": "Zapper di blocchi", - "create.gui.blockzapper.replaceMode": "Modalità sostituzione", - "create.gui.blockzapper.searchDiagonal": "Segui diagonali", - "create.gui.blockzapper.searchFuzzy": "Ignora i bordi dei materiali", - "create.gui.blockzapper.range": "Gamma diffusione", - "create.gui.blockzapper.needsUpgradedAmplifier": "Richiede aggiornamento dell'amplificatore", - "create.gui.blockzapper.patternSection": "Schema", - "create.gui.blockzapper.pattern.solid": "Solido", - "create.gui.blockzapper.pattern.checkered": "Scacchiera", - "create.gui.blockzapper.pattern.inversecheckered": "Scacchiera invertita", - "create.gui.blockzapper.pattern.chance25": "Riempito al 25%", - "create.gui.blockzapper.pattern.chance50": "Riempito al 50%", - "create.gui.blockzapper.pattern.chance75": "Riempito al 75%", - "create.gui.terrainzapper.title": "Plasmatore del mondo", - "create.gui.terrainzapper.placement": "Piazzamento", - "create.gui.terrainzapper.placement.merged": "Fuso", - "create.gui.terrainzapper.placement.attached": "Attaccato", - "create.gui.terrainzapper.placement.inserted": "Inserito", - "create.gui.terrainzapper.brush": "Pennello", - "create.gui.terrainzapper.brush.cuboid": "Cuboide", - "create.gui.terrainzapper.brush.sphere": "Sferico", - "create.gui.terrainzapper.brush.cylinder": "Cilindrico", - "create.gui.terrainzapper.tool": "Strumento", - "create.gui.terrainzapper.tool.fill": "Riempi", - "create.gui.terrainzapper.tool.place": "Piazza", - "create.gui.terrainzapper.tool.replace": "Sostituisci", - "create.gui.terrainzapper.tool.clear": "Ripulisci", - "create.gui.terrainzapper.tool.overlay": "Ricopri", - "create.gui.terrainzapper.tool.flatten": "Appiattisci", - - "create.terrainzapper.shiftRightClickToSet": "Clic destro e shift per selezionare una forma", - - "create.blockzapper.usingBlock": "In utilizzo: %1$s", - "create.blockzapper.componentUpgrades": "Componenti:", - "create.blockzapper.component.body": "Corpo", - "create.blockzapper.component.amplifier": "Amplificatore", - "create.blockzapper.component.accelerator": "Acceleratore", - "create.blockzapper.component.retriever": "Retriever", - "create.blockzapper.component.scope": "Portata", - "create.blockzapper.componentTier.none": "Nessuno", - "create.blockzapper.componentTier.brass": "Ottone", - "create.blockzapper.componentTier.chromatic": "Cromatico", - "create.blockzapper.leftClickToSet": "Clic sinistro su un blocco per impostare il materiale", - "create.blockzapper.empty": "Fuori dai blocchi!", - - "create.minecart_coupling.two_couplings_max": "I carrelli da miniera non possono avere più di due agganci ciascuno", - "create.minecart_coupling.unloaded": "Parti del tuo treno sembrano essere in mezzo a chunk non caricati", - "create.minecart_coupling.no_loops": "Gli agganci non possono creare un loop", - "create.minecart_coupling.removed": "Agganci rimossi dai carrelli da miniera", - "create.minecart_coupling.too_far": "Carrelli da miniera troppo distanti", - - "create.contraptions.movement_mode": "Modalità movimento", - "create.contraptions.movement_mode.move_place": "Posizionare sempre quando è fermo", - "create.contraptions.movement_mode.move_place_returned": "Posiziona solo nella posizione iniziale", - "create.contraptions.movement_mode.move_never_place": "Posiziona solo quando distrutto", - "create.contraptions.movement_mode.rotate_place": "Ruota sempre quando è fermo", - "create.contraptions.movement_mode.rotate_place_returned": "Ruota solo vicino all'angolo iniziale", - "create.contraptions.movement_mode.rotate_never_place": "Ruota solo quando l'ancora viene distrutta", - "create.contraptions.cart_movement_mode": "Modalità movimento carrello da miniera", - "create.contraptions.cart_movement_mode.rotate": "Rivolta sempre verso il movimento", - "create.contraptions.cart_movement_mode.rotate_paused": "Pausa durante la rotazione", - "create.contraptions.cart_movement_mode.rotation_locked": "Blocca rotazione", - "create.contraptions.windmill.rotation_direction": "Direzione di rotazione", - "create.contraptions.clockwork.clock_hands": "Lancette dell'orologio", - "create.contraptions.clockwork.hour_first": "Prima lancetta delle ore", - "create.contraptions.clockwork.minute_first": "Prima lancetta dei minuti", - "create.contraptions.clockwork.hour_first_24": "Prima lancetta delle 24 ore", - - "create.logistics.filter": "Filtro", - "create.logistics.recipe_filter": "Filtro ricette", - "create.logistics.fluid_filter": "Filtro fluidi", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - "create.logistics.filter.apply": "Filtro applicato a %1$s.", - "create.logistics.filter.apply_click_again": "Filtro applicato a %1$s, clicca di nuovo per copiare.", - "create.logistics.filter.apply_count": "Conteggio estrazione applicato ai filtri.", - - "create.gui.goggles.generator_stats": "Statistiche del generatore:", - "create.gui.goggles.kinetic_stats": "Statistiche cinetiche:", - "create.gui.goggles.at_current_speed": "Alla velocità attuale", - "create.gui.goggles.pole_length": "Lunghezza palo:", - "create.gui.gauge.info_header": "Informazioni sul calibro:", - "create.gui.speedometer.title": "Velocità di rotazione", - "create.gui.stressometer.title": "Stress della rete", - "create.gui.stressometer.capacity": "Capacità rimanente", - "create.gui.stressometer.overstressed": "Sovrastressato", - "create.gui.stressometer.no_rotation": "Nessuna rotazione", - "create.gui.contraptions.not_fast_enough": "Sembra che questo %1$s _non_ stia girando con una _velocità_ _sufficiente_.", - "create.gui.contraptions.network_overstressed": "Sembra che questo marchingegno sia _sovraccarico_. Aggiungi più fonti o _rallenta_ i componenti con un forte _impatto_ _di_ _stress_.", - "create.gui.adjustable_crate.title": "Baule regolabile", - "create.gui.adjustable_crate.storageSpace": "Spazio di immagazzinamento", - "create.gui.stockpile_switch.title": "Interruttore accumulatore", - "create.gui.stockpile_switch.invert_signal": "Inverti segnale", - "create.gui.stockpile_switch.move_to_lower_at": "Muovi giù al %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Muovi su al %1$s%%", - "create.gui.sequenced_gearshift.title": "Cambio sequenziale", - "create.gui.sequenced_gearshift.instruction": "Istruzione", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Gira", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Angolo", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Pistone", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Distanza", - "create.gui.sequenced_gearshift.instruction.wait": "Aspetta", - "create.gui.sequenced_gearshift.instruction.wait.duration": "Durata", - "create.gui.sequenced_gearshift.instruction.end": "Fine", - "create.gui.sequenced_gearshift.speed": "Velocità, direzione", - "create.gui.sequenced_gearshift.speed.forward": "Velocità di ingresso, avanti", - "create.gui.sequenced_gearshift.speed.forward_fast": "Doppia velocità, avanti", - "create.gui.sequenced_gearshift.speed.back": "Velocità di ingresso, invertita", - "create.gui.sequenced_gearshift.speed.back_fast": "Doppia velocità, invertita", - - "create.schematicAndQuill.dimensions": "Dimensione schematica: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Prima posizione impostata.", - "create.schematicAndQuill.secondPos": "Seconda posizione impostata.", - "create.schematicAndQuill.noTarget": "Premi [Ctrl] per selezionare il blocco d'aria.", - "create.schematicAndQuill.abort": "Selezione rimossa.", - "create.schematicAndQuill.title": "Nome schematica:", - "create.schematicAndQuill.convert": "Salva e piazza immediatamente", - "create.schematicAndQuill.fallbackName": "La mia schematica", - "create.schematicAndQuill.saved": "Salvata come %1$s", - - "create.schematic.invalid": "[!] Oggetto non valido - utilizza il banco schematico", - "create.schematic.position": "Posizione", - "create.schematic.rotation": "Rotazione", - "create.schematic.rotation.none": "Nessuna", - "create.schematic.rotation.cw90": "Senso orario 90", - "create.schematic.rotation.cw180": "Senso orario 180", - "create.schematic.rotation.cw270": "Senso orario 270", - "create.schematic.mirror": "Specchio", - "create.schematic.mirror.none": "Nessuno", - "create.schematic.mirror.frontBack": "Fronte-retro", - "create.schematic.mirror.leftRight": "Sinistra-destra", - "create.schematic.tool.deploy": "Installa", - "create.schematic.tool.move": "Muovi XZ", - "create.schematic.tool.movey": "Muovi Y", - "create.schematic.tool.rotate": "Ruota", - "create.schematic.tool.print": "Stampa", - "create.schematic.tool.flip": "Capovolgi", - "create.schematic.tool.deploy.description.0": "Sposta la struttura in una posizione.", - "create.schematic.tool.deploy.description.1": "Clic destro sul terreno per posizionarla.", - "create.schematic.tool.deploy.description.2": "Premi [Ctrl] per selezionare a distanza fissa.", - "create.schematic.tool.deploy.description.3": "[Ctrl] e scorri per cambiare la distanza.", - "create.schematic.tool.move.description.0": "Sposta la schematica in orizzontale.", - "create.schematic.tool.move.description.1": "Indica la schematica e premi [Ctrl] mentre scorri per spingerla.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Sposta la schematica verticalmente.", - "create.schematic.tool.movey.description.1": "[Ctrl] e scorri per spostarla su/giù.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Ruota la schematica attorno al suo centro.", - "create.schematic.tool.rotate.description.1": "[Ctrl] e scorri per ruotarla di 90 gradi.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Posiziona istantaneamente la struttura nel mondo.", - "create.schematic.tool.print.description.1": "Clic destro per confermare la posizione corrente.", - "create.schematic.tool.print.description.2": "Questo strumento è solo per la modalità creativa.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Capovolge la schematica lungo la faccia selezionata.", - "create.schematic.tool.flip.description.1": "Indica la schematica e premi [Ctrl] mentre scorri per capovolgerla.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Sincronizzazione...", - "create.schematics.uploadTooLarge": "La schematica è troppo grande.", - "create.schematics.maxAllowedSize": "La dimensione massima consentita del file schematica è:", - - "create.gui.schematicTable.refresh": "Ricarica file", - "create.gui.schematicTable.open_folder": "Apri cartella", - "create.gui.schematicTable.title": "Banco schematico", - "create.gui.schematicTable.availableSchematics": "Schematiche disponibili", - "create.gui.schematicTable.noSchematics": "Nessuna schematica salvata", - "create.gui.schematicTable.uploading": "Caricamento...", - "create.gui.schematicTable.finished": "Caricamento finito!", - "create.gui.schematicannon.title": "Cannoneschematico", - "create.gui.schematicannon.listPrinter": "Stampante lista dei materiali", - "create.gui.schematicannon.gunpowderLevel": "Polvere da sparo al %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Spari rimanenti: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Con il backup: %1$s", - "create.gui.schematicannon.optionEnabled": "Attualmente abilitato", - "create.gui.schematicannon.optionDisabled": "Attualmente disabilitato", - "create.gui.schematicannon.showOptions": "Mostra impostazioni stampante", - "create.gui.schematicannon.option.dontReplaceSolid": "Non sostituire i blocchi solidi", - "create.gui.schematicannon.option.replaceWithSolid": "Sostituisci solidi con solidi", - "create.gui.schematicannon.option.replaceWithAny": "Sostituisci solidi con qualsiasi", - "create.gui.schematicannon.option.replaceWithEmpty": "Sostituisci solidi col vuoto", - "create.gui.schematicannon.option.skipMissing": "Salta i blocchi mancanti", - "create.gui.schematicannon.option.skipTileEntities": "Proteggi i blocchi entità", - "create.gui.schematicannon.slot.gunpowder": "Aggiungi polvere da sparo per alimentare il cannone", - "create.gui.schematicannon.slot.listPrinter": "Piazza qui i libri per stampare una lista di controllo per la tua schematica", - "create.gui.schematicannon.slot.schematic": "Aggiungi qui la tua schematica. Assicurati che sia piazzata in una posizione specifica.", - "create.gui.schematicannon.option.skipMissing.description": "Se il cannone non riesce a trovare un blocco richiesto per il posizionamento, continuerà nella posizione successiva.", - "create.gui.schematicannon.option.skipTileEntities.description": "Il cannone eviterà di sostituire i blocchi di dati come bauli.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Il cannone non sostituirà mai alcun blocco solido nella sua area di lavoro, solo non solidi e aria.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene un blocco solido nella posizione.", - "create.gui.schematicannon.option.replaceWithAny.description": "Il cannone sostituirà i blocchi solidi nella sua area di lavoro se lo schema contiene qualche blocco nella posizione.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Il cannone eliminerà tutti i blocchi nell'area di lavoro, compresi quelli sostituiti dall'aria.", - - "create.schematicannon.status.idle": "Inattivo", - "create.schematicannon.status.ready": "Pronto", - "create.schematicannon.status.running": "In esecuzione", - "create.schematicannon.status.finished": "Finito", - "create.schematicannon.status.paused": "In pausa", - "create.schematicannon.status.stopped": "Fermo", - "create.schematicannon.status.noGunpowder": "Polvere da sparo mancante", - "create.schematicannon.status.targetNotLoaded": "Il blocco non è caricato", - "create.schematicannon.status.targetOutsideRange": "Obiettivo troppo lontano", - "create.schematicannon.status.searching": "Ricerca", - "create.schematicannon.status.skipping": "Skip", - "create.schematicannon.status.missingBlock": "Blocco mancante:", - "create.schematicannon.status.placing": "Piazzamento", - "create.schematicannon.status.clearing": "Cancellazione blocchi", - "create.schematicannon.status.schematicInvalid": "Schematica non valida", - "create.schematicannon.status.schematicNotPlaced": "Schematica non implementata", - "create.schematicannon.status.schematicExpired": "File schematica scaduto", - - "create.materialChecklist": "Lista di controllo dei materiali", - "create.materialChecklist.blocksNotLoaded": "* Disclaimer *\n\nLa lista dei materiali potrebbe non essere accurata a causa di molti chunk non caricati.", - - "create.gui.filter.deny_list": "Lista nera", - "create.gui.filter.deny_list.description": "Gli oggetti passano se NON corrispondono a nessuno dei precedenti. Una lista nera vuota accetta tutto.", - "create.gui.filter.allow_list": "Lista bianca", - "create.gui.filter.allow_list.description": "Gli oggetti passano se corrispondono a qualcuno dei precedenti. Una lista bianca vuota rifiuta tutto.", - "create.gui.filter.respect_data": "Rispetto dei dati", - "create.gui.filter.respect_data.description": "Gli oggetti corrispondono solo se la loro durata, incantesimi e altri attributi corrispondono.", - "create.gui.filter.ignore_data": "Ignora dati", - "create.gui.filter.ignore_data.description": "Gli oggetti corrispondono indipendentemente dai loro attributi.", - - "create.item_attributes.placeable": "è posizionabile", - "create.item_attributes.placeable.inverted": "non è posizionabile", - "create.item_attributes.consumable": "è commestibile", - "create.item_attributes.consumable.inverted": "non è commestibile", - "create.item_attributes.smeltable": "può essere fuso", - "create.item_attributes.smeltable.inverted": "non può essere fuso", - "create.item_attributes.washable": "può essere lavato", - "create.item_attributes.washable.inverted": "non può essere lavato", - "create.item_attributes.smokable": "può essere affumicato", - "create.item_attributes.smokable.inverted": "non può essere affumicato", - "create.item_attributes.crushable": "può essere frantumato", - "create.item_attributes.crushable.inverted": "non può essere frantumato", - "create.item_attributes.blastable": "è fondibile in un forno fusorio", - "create.item_attributes.blastable.inverted": "non è fondibile in un forno fusorio", - "create.item_attributes.enchanted": "è incantato", - "create.item_attributes.enchanted.inverted": "non è incantato", - "create.item_attributes.damaged": "è danneggiato", - "create.item_attributes.damaged.inverted": "non è danneggiato", - "create.item_attributes.badly_damaged": "è gravemente danneggiato", - "create.item_attributes.badly_damaged.inverted": "non è gravemente danneggiato", - "create.item_attributes.not_stackable": "non è impilabile", - "create.item_attributes.not_stackable.inverted": "è impilabile", - "create.item_attributes.equipable": "può essere equipaggiato", - "create.item_attributes.equipable.inverted": "non può essere equipaggiato", - "create.item_attributes.furnace_fuel": "è un combustibile per fornace", - "create.item_attributes.furnace_fuel.inverted": "non è un combustibile per fornace", - "create.item_attributes.in_tag": "è etichettato %1$s", - "create.item_attributes.in_tag.inverted": "non è etichettato %1$s", - "create.item_attributes.in_item_group": "appartiene a %1$s", - "create.item_attributes.in_item_group.inverted": "non appartiene a '%1$s'", - "create.item_attributes.added_by": "è stato aggiunto da %1$s", - "create.item_attributes.added_by.inverted": "non è stato aggiunto da %1$s", - "create.item_attributes.has_enchant": "è stato incantato con %1$s", - "create.item_attributes.has_enchant.inverted": "non è stato incantato con %1$s", - "create.item_attributes.has_fluid": "contiene %1$s", - "create.item_attributes.has_fluid.inverted": "non contiene %1$s", - "create.item_attributes.has_name": "è stato rinominato in %1$s", - "create.item_attributes.has_name.inverted": "non è stato rinominato in %1$s", - "create.item_attributes.book_author": "è stato autorizzato da %1$s", - "create.item_attributes.book_author.inverted": "non è stato autorizzato da %1$s", - "create.item_attributes.book_copy_original": "è una copia originale", - "create.item_attributes.book_copy_original.inverted": "non è una copia originale", - "create.item_attributes.book_copy_first": "è una copia di prima generazione", - "create.item_attributes.book_copy_first.inverted": "non è una copia di prima generazione", - "create.item_attributes.book_copy_second": "è una copia di seconda generazione", - "create.item_attributes.book_copy_second.inverted": "non è una copia di seconda generazione", - "create.item_attributes.book_copy_tattered": "è in condizioni precarie", - "create.item_attributes.book_copy_tattered.inverted": "non è in condizioni precarie", - "create.item_attributes.astralsorcery_crystal": "ha l'attributo del cristallo %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "non ha l'attributo del cristallo %1$s", - "create.item_attributes.astralsorcery_constellation": "è in sintonia con %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "non è in sintonia con %1$s", - "create.item_attributes.astralsorcery_perk_gem": "ha l'attributo benefico %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "non ha l'attributo benefico %1$s", - "create.item_attributes.astralsorcery_amulet": "migliora %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "non migliora %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "Nessun attributo selezionato", - "create.gui.attribute_filter.selected_attributes": "Attributi selezionati:", - "create.gui.attribute_filter.add_attribute": "Aggiungi attributi alla lista", - "create.gui.attribute_filter.add_inverted_attribute": "Aggiungi attributo opposto alla lista", - "create.gui.attribute_filter.allow_list_disjunctive": "Lista bianca (qualsiasi)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Gli oggetti passano se hanno almeno uno degli attributi selezionati.", - "create.gui.attribute_filter.allow_list_conjunctive": "Lista Bianca (tutti)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Gli oggetti passano solo se hanno TUTTI gli attributi selezionati.", - "create.gui.attribute_filter.deny_list": "Lista nera", - "create.gui.attribute_filter.deny_list.description": "Gli oggetti passano se NON hanno nessuno degli attributi selezionati.", - "create.gui.attribute_filter.add_reference_item": "Aggiungi oggetto di riferimento.", - - "create.tooltip.holdKey": "Premi [%1$s]", - "create.tooltip.holdKeyOrKey": "Premi [%1$s] o [%2$s]", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Velocità richiesta: %1$s", - "create.tooltip.speedRequirement.none": "Nessuna", - "create.tooltip.speedRequirement.medium": "Moderata", - "create.tooltip.speedRequirement.high": "Veloce", - "create.tooltip.stressImpact": "Impatto sullo stress: %1$s", - "create.tooltip.stressImpact.low": "Basso", - "create.tooltip.stressImpact.medium": "Moderato", - "create.tooltip.stressImpact.high": "Alto", - "create.tooltip.stressImpact.overstressed": "Sovrastressato", - "create.tooltip.capacityProvided": "Capacità dello stress: %1$s", - "create.tooltip.capacityProvided.low": "Piccola", - "create.tooltip.capacityProvided.medium": "Media", - "create.tooltip.capacityProvided.high": "Grande", - "create.tooltip.capacityProvided.asGenerator": "(Come generatore)", - "create.tooltip.generationSpeed": "Genera %1$s %2$s", - "create.tooltip.analogStrength": "Forza analogica: %1$s/15", - - "create.mechanical_arm.extract_from": "Prendi oggetti da %1$s", - "create.mechanical_arm.deposit_to": "Deposita oggetti su %1$s", - "create.mechanical_arm.summary": "Il braccio meccanico ha %1$s input e %2$s output.", - "create.mechanical_arm.points_outside_range": "%1$s punti di interazione selezionati rimossi per limiti di gamma.", - - "create.logistics.when_multiple_outputs_available": "Quando disponibili diversi output", - - "create.mechanical_arm.selection_mode.round_robin": "Round Robin", - "create.mechanical_arm.selection_mode.forced_round_robin": "Round Robin forzato", - "create.mechanical_arm.selection_mode.prefer_first": "Preferisci il primo bersaglio", - - "create.tunnel.selection_mode.split": "Diviso", - "create.tunnel.selection_mode.forced_split": "Diviso forzato", - "create.tunnel.selection_mode.round_robin": "Round Robin", - "create.tunnel.selection_mode.forced_round_robin": "Round Robin forzato", - "create.tunnel.selection_mode.prefer_nearest": "Preferisci il più vicino", - "create.tunnel.selection_mode.randomize": "Casuale", - "create.tunnel.selection_mode.synchronize": "Sincronizza input", - - "create.tooltip.chute.header": "Informazioni sullo scivolo", - "create.tooltip.chute.items_move_down": "Gli oggetti si spostano verso il basso", - "create.tooltip.chute.items_move_up": "Gli oggetti si spostano verso l'alto", - "create.tooltip.chute.no_fans_attached": "Nessun ventilatore attaccato", - "create.tooltip.chute.fans_push_up": "I ventilatori spingono da sotto", - "create.tooltip.chute.fans_push_down": "I ventilatori spingono da sopra", - "create.tooltip.chute.fans_pull_up": "I ventilatori tirano da sopra", - "create.tooltip.chute.fans_pull_down": "I ventilatori tirano da sotto", - "create.tooltip.chute.contains": "Contiene: %1$s x%2$s", - - "create.hint.hose_pulley.title": "Buco senza fondo", - "create.hint.hose_pulley": "Il corpo fluido selezionato è considerato infinito.", - "create.hint.mechanical_arm_no_targets.title": "Nessun bersaglio", - "create.hint.mechanical_arm_no_targets": "Sembra che questo _braccio_ _meccanico_ non sia stato assegnato a nessun _bersaglio_. Seleziona nastri, depositi, imbuti e altri blocchi _cliccandoli_ _col_ _destro_ e _tenendo_ _in_ _mano_ il _braccio_ _meccanico_.", - "create.hint.horizontal_funnel.title": "Imbuto orizzontale", - "create.hint.horizontal_funnel": "Non puoi trasferire tra inventari _direttamente_. Prova a mettere un _nastro_ _meccanico_ o un _deposito_ sotto il tuo imbuto per estrarre gli oggetti dagli inventari.", - "create.hint.upward_funnel.title": "Imbuti rivolti verso l'alto", - "create.hint.upward_funnel": "Puoi solo inserire oggetti inseriti da _braccia_, _scivoli_ alimentati da ventilatori, od oggetti _gettati_ in essi. Prova a costruire degli _scivoli_ se stai cercando di muovere gli oggetti _verticalmente_.", - "create.hint.empty_bearing.title": "Aggiorna il supporto", - "create.hint.empty_bearing": "_Clicca_ _col_ _destro_ il supporto con una _mano_ _vuota_ per _attaccarci_ la struttura che ci hai appena costruito davanti.", - "create.hint.full_deployer.title": "Overflow di oggetti dell'installatore", - "create.hint.full_deployer": "Sembra che questo _installatore_ contenga _oggetti_ _eccessivi_ che necessitano di essere _estratti_. Usa una _tramoggia_, un _imbuto_ o altro per liberarlo dall'overflow.", - - "create.gui.config.overlay1": "Ciao :)", - "create.gui.config.overlay2": "Questo overlay è di esempio", - "create.gui.config.overlay3": "Cliccalo o trascinalo col mouse", - "create.gui.config.overlay4": "per muovere questa anteprima", - "create.gui.config.overlay5": "Premi Esc per uscire e", - "create.gui.config.overlay6": "salvare la nuova posizione", - "create.gui.config.overlay7": "Fai /create per resettare", - "create.gui.config.overlay8": "l'overlay alla posizione standard", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Il tick del server è attualmente rallentato di %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Il tick del server è ora rallentato di %s ms >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Il tick del server è tornato alla velocità normale :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: usa /killtps per riportare il tick del server alla velocità normale", - "create.command.killTPSCommand.status.usage.1": "[Create]: usa /killtps avvia per rallentare artificialmente il tick del server", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.subtitle.schematicannon_launch_block": "Tiri del cannoneschematico", - "create.subtitle.schematicannon_finish": "Finiture cannoneschematico", - "create.subtitle.slime_added": "Slime schiacciato", - "create.subtitle.mechanical_press_activation": "Pressa meccanica attiva", - "create.subtitle.mechanical_press_item_break": "Rumori metallici", - "create.subtitle.blockzapper_place": "Posiziona blocchi nello spazio", - "create.subtitle.blockzapper_confirm": "Ding affermativo", - "create.subtitle.blockzapper_deny": "Boop in calo", - "create.subtitle.block_funnel_eat": "CHOMPS a imbuto", - "create.subtitle.blaze_munch": "Il blaze lo gusta felicemente", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "OGGETTO DI ESEMPIO (solo un indicatore che esiste nella descrizione)", - "item.create.example_item.tooltip.summary": "Una breve descrizione dell'oggetto. La _sottolineatura_ evidenzia un termine.", - "item.create.example_item.tooltip.condition1": "Quando questo", - "item.create.example_item.tooltip.behaviour1": "Quindi questo articolo fa questo. (i comportamenti mostrati con shift)", - "item.create.example_item.tooltip.condition2": "E quando questo", - "item.create.example_item.tooltip.behaviour2": "Puoi aggiungere tutti i comportamenti che desideri", - "item.create.example_item.tooltip.control1": "Quando premi Ctrl", - "item.create.example_item.tooltip.action1": "Questi controlli vengono visualizzati.", - - "block.create.andesite_encased_shaft.tooltip": "ALBERO INCASSATO DI ANDESITE", - "block.create.andesite_encased_shaft.tooltip.summary": "Oggetto da _creativa_. Riveste gli alberi usando l'_involucro di andesite_. Gli involucri non vengono consumati.", - - "block.create.brass_encased_shaft.tooltip": "ALBERO INCASSATO DI OTTONE", - "block.create.brass_encased_shaft.tooltip.summary": "Oggetto da _creativa_. Riveste gli alberi usando l'_involucro di ottone_. Gli involucri non vengono consumati.", - - "block.create.wooden_bracket.tooltip": "SUPPORTO DI LEGNO", - "block.create.wooden_bracket.tooltip.summary": "_Decora_ i tuoi _alberi_, _ruote dentate_ e _tubi_ rinforzandoli col legno.", - - "block.create.metal_bracket.tooltip": "SUPPORTO DI METALLO", - "block.create.metal_bracket.tooltip.summary": "_Decora_ i tuoi _alberi_, _ruote dentate_ e _tubi_ rinforzandoli col ferro.", - - "block.create.andesite_casing.tooltip": "INVOLUCRO DI ANDESITE", - "block.create.andesite_casing.tooltip.summary": "Semplice involucro per macchine con una varietà di usi. Utile per decorare. Può essere usato per _rivestire alberi_ e _nastri meccanici_.", - - "block.create.andesite_funnel.tooltip": "IMBUTO DI ANDESITE", - "block.create.andesite_funnel.tooltip.summary": "Un componente generale per trasferimento di oggetti, i quali vengono mossi attraverso mezzi di trasporto. Può essere controllato con un _segnale redstone_.", - "block.create.andesite_funnel.tooltip.condition1": "Comportamento generale", - "block.create.andesite_funnel.tooltip.behaviour1": "La _facciata esposta_ _colleziona oggetti da terra_ nello spazio di blocchi davanti ad essa e li _inserisce_ in un qualsiasi contenitore dal lato opposto dell'imbuto.", - "block.create.andesite_funnel.tooltip.condition2": "Quando montato su cinture, depositi o simili", - "block.create.andesite_funnel.tooltip.behaviour2": "_Colleziona_ o _piazza_ oggetti sul componente montato, dall'_inventario dietro_ ad esso. Quando l'imbuto ha una specifica direzione, può essere invertita con una chiave inglese.", - "block.create.andesite_funnel.tooltip.condition3": "Quando in verticale tra due inventari", - "block.create.andesite_funnel.tooltip.behaviour3": "_Trasferisce_ oggetti _verso il basso_, tipo una tramoggia senza carico.", - - "block.create.andesite_tunnel.tooltip": "TUNNEL DI ANDESITE", - "block.create.andesite_tunnel.tooltip.summary": "Un rivestimento protettivo per _nastri_ _meccanici_! I _tunnel di andesite_ possono dividere un oggetto dallo stack quando un altro nastro o deposito viene piazzato a lato del nastro principale.", - "block.create.andesite_tunnel.tooltip.control1": "Usa la chiave inglese a lato", - "block.create.andesite_tunnel.tooltip.action1": "_Regola la finestra_ se il tunnel la ha su quella facciata.", - - "block.create.brass_funnel.tooltip": "IMBUTO DI OTTONE", - "block.create.brass_funnel.tooltip.summary": "Un componente generale per trasferimento di oggetti, i quali vengono mossi attraverso mezzi di trasporto. Può essere controllato con un _segnale redstone_. È incluso un pratico _filtro_.", - "block.create.brass_funnel.tooltip.condition1": "Comportamento generale", - "block.create.brass_funnel.tooltip.behaviour1": "La _facciata esposta_ _colleziona oggetti da terra_ nello spazio di blocchi davanti ad essa e li _inserisce_ in un qualsiasi contenitore dal lato opposto dell'imbuto.", - "block.create.brass_funnel.tooltip.condition2": "Quando montato su cinture, depositi o simili", - "block.create.brass_funnel.tooltip.behaviour2": "_Colleziona_ o _piazza_ oggetti sul componente montato, dall'_inventario dietro_ ad esso. Quando l'imbuto ha una specifica direzione, può essere invertita con una chiave inglese.", - "block.create.brass_funnel.tooltip.condition3": "Quando in verticale tra due inventari", - "block.create.brass_funnel.tooltip.behaviour3": "_Trasferisce_ oggetti _verso il basso_, tipo una tramoggia senza carico.", - - "block.create.brass_tunnel.tooltip": "TUNNEL DI OTTONE", - "block.create.brass_tunnel.tooltip.summary": "Un rivestimento protettivo per _nastri_ _meccanici_! _I tunnel di ottone_ includono opzioni di _filtraggio_ e _divisione_ per gli oggetti.", - "block.create.brass_tunnel.tooltip.condition1": "Quando piazzato fianco a fianco", - "block.create.brass_tunnel.tooltip.behaviour1": "I _tunnel di ottone_ si connettono l'uno con l'altro permettendo ad un contenuto su _nastro_ di essere ridirezionato verso un altro.", - "block.create.brass_tunnel.tooltip.condition2": "Filtraggio", - "block.create.brass_tunnel.tooltip.behaviour2": "I _tunnel di ottone_ includono filtri per l'_input_ e l'_output_. Se un _oggetto_ non è consentito dall'output filtrato di un _tunnel_ verrà trasferito all'output di un _tunnel_ connesso.", - "block.create.brass_tunnel.tooltip.condition3": "Divisione", - "block.create.brass_tunnel.tooltip.behaviour3": "I _tunnel di ottone_ possono essere configurati per cambiare il metodo con cui gli _oggetti_ sono ordinati sui _nastri_.", - "block.create.brass_tunnel.tooltip.control1": "Con la chiave inglese a lato", - "block.create.brass_tunnel.tooltip.action1": "_Regola la finestra_ se il tunnel la ha su quella facciata.", - "block.create.brass_tunnel.tooltip.control2": "Scorri con la chiave inglese sulla facciata in alto", - "block.create.brass_tunnel.tooltip.action2": "Cambia il metodo di divisione dei _tunnel_ connessi.", - - "block.create.copper_casing.tooltip": "INVOLUCRO DI RAME", - "block.create.copper_casing.tooltip.summary": "Involucro per macchine robusto con una varietà di usi. Utile per decorare.", - "block.create.copper_casing.tooltip.condition1": "Quando usato su un tubo per fluidi", - "block.create.copper_casing.tooltip.behaviour1": "_Riveste_ il _tubo per fluidi_ con l'_involucro di rame_. I tubi per fluidi incassati _bloccano le loro connessioni_, non reagendo più ai cambiamenti dei tubi vicini.", - - "block.create.encased_fluid_pipe.tooltip": "TUBO PER FLUIDI INCASSATO", - "block.create.encased_fluid_pipe.tooltip.summary": "Un _tubo per fluidi_ incassato con l'_involucro di rame_.", - - "block.create.copper_valve_handle.tooltip": "MANIGLIA PER VALVOLA DI RAME", - "block.create.copper_valve_handle.tooltip.summary": "Una _risorsa_ precisa di _forza rotazionale_ che richiede l'interazione dei giocatori.", - "block.create.copper_valve_handle.tooltip.condition1": "Quando utilizzata", - "block.create.copper_valve_handle.tooltip.behaviour1": "Fornisce _forza rotazionale_ a una macchina attaccata. _Abbassati per invertire_ la rotazione.", - - "block.create.seat.tooltip": "SEDILE", - "block.create.seat.tooltip.summary": "Siediti e goditi l'escursione! Ancora un giocatore a una macchina _in movimento_. Perfetto anche per l'arredamento! Dispone di una varietà di colori.", - "block.create.seat.tooltip.condition1": "Clicca col destro sul sedile", - "block.create.seat.tooltip.behaviour1": "Fa sedere il giocatore sul _sedile_. Premi L-Shift per alzarti dal _sedile_.", - - "block.create.chute.tooltip": "SCIVOLO", - "block.create.chute.tooltip.summary": "_Colleziona_ e trasporta oggetti verticalmente o diagonalmente. Può prendere o piazzare oggetti nei loro _contenitori_. Puoi anche interagire con gli scivoli da lato utilizzando _tramogge_ o _imbuti montati_.", - "block.create.chute.tooltip.condition1": "Quando alimentati da ventilatore", - "block.create.chute.tooltip.behaviour1": "Gli scivoli alimentati da _ventilatore_ possono trasferire oggetti _verso l'alto_, e attirare _oggetti_ da _depositi_ e _nastri_.", - - "block.create.depot.tooltip": "DEPOSITO", - "block.create.depot.tooltip.summary": "Un posto pratico dove piazzare i tuoi _oggetti_. Fornisce un punto d'interazione per diversi componenti.", - "block.create.depot.tooltip.condition1": "Clicca col destro sul deposito", - "block.create.depot.tooltip.behaviour1": "Piazza o prendi un _oggetto_ dal _deposito_. _Blocchi_ e _macchine_ che interagiscono con un _nastro_ funzionano anche con un _deposito_.", - - "item.create.blaze_cake.tooltip": "TORTA PER BLAZE", - "item.create.blaze_cake.tooltip.summary": "Un delizioso trattamento per i tuoi _inceneritori di blaze_. Alimentali col fuoco!", - - "item.create.empty_blaze_burner.tooltip": "INCENERITORE DI BLAZE VUOTO", - "item.create.empty_blaze_burner.tooltip.summary": "Una casetta in ferro per i tuoi amici focosi.", - "item.create.empty_blaze_burner.tooltip.condition1": "Quando usato su un blaze o generatore di blaze", - "item.create.empty_blaze_burner.tooltip.behaviour1": "Cattura un _blaze_ nell'inceneritore", - - "block.create.fluid_pipe.tooltip": "TUBO PER FLUIDI", - "block.create.fluid_pipe.tooltip.summary": "Usato per muovere _fluidi_ attraverso i tubi. Necessita di una _pompa meccanica_ per questo.", - "block.create.fluid_pipe.tooltip.condition1": "Trasferimento di fluidi", - "block.create.fluid_pipe.tooltip.behaviour1": "Può collegarsi ai contenitori di fluidi come _serbatoi_ o _bacinelle_. Gli estremi dei _tubi_ esposti possono anche drenare o piazzare blocchi di fluidi. Attento alle perdite!", - "block.create.fluid_pipe.tooltip.control1": "Clic destro con la chiave inglese", - "block.create.fluid_pipe.tooltip.action1": "Se possibile, aggiunge una vetrata al tubo.", - - "block.create.hose_pulley.tooltip": "CARRUCOLA PER TUBI", - "block.create.hose_pulley.tooltip.summary": "Usata per _piazzare_ o _drenare_ vasti corpi fluidi.", - "block.create.hose_pulley.tooltip.condition1": "Quando alimentata da energia cinetica", - "block.create.hose_pulley.tooltip.behaviour1": "Tira su o giù la carrucola, la posizione della carrucola determina fino a dove c'è da _riempire_ o _svuotare_ il corpo.", - "block.create.hose_pulley.tooltip.condition2": "Quando un fluido è tirato dalla carrucola", - "block.create.hose_pulley.tooltip.behaviour2": "Inizia a _prendere blocchi_ di fluidi da dove la carrucola è stata abbassata. _Vasti corpi_ fluidi vengono considerati _infiniti_.", - "block.create.hose_pulley.tooltip.condition3": "Quando un fluido è spinto dalla carrucola", - "block.create.hose_pulley.tooltip.behaviour3": "Inizia a riempire col fluido _fino_ all'_altezza della carrucola_.", - - "block.create.fluid_tank.tooltip": "SERBATOIO PER FLUIDI", - "block.create.fluid_tank.tooltip.summary": "_Immagazzina_ i _fluidi_ che vuoi. Scala in larghezza e altezza.", - "block.create.fluid_tank.tooltip.condition1": "Clic destro con la chiave inglese", - "block.create.fluid_tank.tooltip.behaviour1": "Aggiungi/rimuovi vetrata", - - "block.create.creative_fluid_tank.tooltip": "SERBATOIO PER LIQUIDI (CREATIVA)", - "block.create.creative_fluid_tank.tooltip.summary": "Questo _serbatoio per liquidi_ permette di replicare infinite volte un certo _fluido_. Scala in larghezza e altezza.", - "block.create.creative_fluid_tank.tooltip.condition1": "Quando un fluido è nel serbatoio", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Qualsiasi _estrazione_ da questo serbatoio fornisce un'_alimentazione infinita_ del fluido in questione. I fluidi _inseriti_ in questo serbatoio verranno _svuotati_.", - "block.create.creative_fluid_tank.tooltip.condition2": "Clic destro con la chiave inglese", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Aggiungi/rimuovi vetrata", - - "block.create.fluid_valve.tooltip": "VALVOLA PER FLUIDI", - "block.create.fluid_valve.tooltip.summary": "Regola il flusso di un fluido lungo un tubo.", - "block.create.fluid_valve.tooltip.condition1": "Flusso controllabile", - "block.create.fluid_valve.tooltip.behaviour1": "Applicare una _forza rotazionale_ forza la _valvola_ a chiudersi, cessando lo scorrere di _fluidi_. Inverti la direzione della _forza rotazionale_ per riaprire la valvola.", - - "block.create.mechanical_pump.tooltip": "POMPA MECCANICA", - "block.create.mechanical_pump.tooltip.summary": "Utilizza la _forza rotazionale_ per muovere i _fluidi_ lungo un _tubo_. Ha un massimo raggio d'effetto in entrambe le direzioni. (16 blocchi di default)", - "block.create.mechanical_pump.tooltip.condition1": "Flusso del fluido", - "block.create.mechanical_pump.tooltip.behaviour1": "La _forza rotazionale_ applicata crea una pressione che pompa il _fluido_ in una rete di _tubi_. Inverti la direzione della _forza rotazionale_ per cambiare la direzione in cui il _fluido_ scorre.", - "block.create.mechanical_pump.tooltip.control1": "Clic destro con la chiave inglese", - "block.create.mechanical_pump.tooltip.action1": "Inverte la direzione della _pompa_, cambiando la direzione standard del flusso.", - - "block.create.smart_fluid_pipe.tooltip": "TUBO PER FLUIDI AVANZATO", - "block.create.smart_fluid_pipe.tooltip.summary": "Un _tubo per fluidi_ con filtro. Puoi specificare quali _fluidi_ possono passare.", - "block.create.smart_fluid_pipe.tooltip.condition1": "Quando un fluido è spinto dentro", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Un tubo avanzato che riceve un fluido che non corrisponde al suo filtro ne blocca lo scorrere.", - "block.create.smart_fluid_pipe.tooltip.condition2": "Quando adiacente a un contenitore di fluidi", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "I tubi avanzati che _danno inizio_ ad un _flusso_ da qualsiasi contenitore estraggono solo i fluidi che _corrispondono_ al loro _filtro_.", - - "block.create.spout.tooltip": "SPRUZZO", - "block.create.spout.tooltip.summary": "Uno spruzzo per riempire i tuoi _oggetti per fluidi_.", - "block.create.spout.tooltip.condition1": "Trasferimento di fluidi", - "block.create.spout.tooltip.behaviour1": "Quando un _oggetto contenitore di fluidi_ come un _secchio_ o un'_ampolla_ è piazzato sotto, lo spruzzo lo riempie col _fluido_ al suo interno.", - "block.create.spout.tooltip.condition2": "Automazione di fluidi", - "block.create.spout.tooltip.behaviour2": "Lo spruzzo piazzato su un _nastro_ o un _deposito_ reagisce automaticamente con gli _oggetti contenitori di fluidi_ che ci passano sotto.", - - "block.create.item_drain.tooltip": "DRENANTE DI OGGETTI", - "block.create.item_drain.tooltip.summary": "Come un deposito, ma è grigliato per svuotare gli _oggetti riempiti da fluidi_.", - "block.create.item_drain.tooltip.condition1": "Trasferimento di fluidi", - "block.create.item_drain.tooltip.behaviour1": "Quando un _oggetto contenitore di fluidi_ come un _secchio_ o un'_ampolla_ è inserito a lato, il drenante lo svuota nel suo _contenitore di fluidi_. L'oggetto verrà poi espulso dal lato opposto.", - - "block.create.mechanical_arm.tooltip": "BRACCIO MECCANICO", - "block.create.mechanical_arm.tooltip.summary": "Marchingegno avanzato per trasferire _oggetti_.", - "block.create.mechanical_arm.tooltip.condition1": "Trasferimento di oggetti", - "block.create.mechanical_arm.tooltip.behaviour1": "Può prendere o piazzare oggetti in qualsiasi _inventario accessibile_, come _nastri_, _depositi_, _imbuti_ e _costruttori meccanici_.", - "block.create.mechanical_arm.tooltip.control1": "In mano", - "block.create.mechanical_arm.tooltip.action1": "Clicca col destro su un _inventario accessibile_ per impostarlo come _fonte_ per il _braccio meccanico_. Clicca col destro due volte per impostarlo come _destinazione_.", - "block.create.mechanical_arm.tooltip.control2": "Scorri con la chiave inglese", - "block.create.mechanical_arm.tooltip.action2": "Imposta il criterio di ordinamento per l'output di _oggetti_ del _braccio meccanico_.", - - "item.create.wand_of_symmetry.tooltip": "ASTA DI SIMMETRIA", - "item.create.wand_of_symmetry.tooltip.summary": "Rispecchia perfettamente il posizionamento dei blocchi su piani configurati.", - "item.create.wand_of_symmetry.tooltip.condition1": "Nella hotbar", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Rimane attivo", - "item.create.wand_of_symmetry.tooltip.control1": "Clic destro sul terreno", - "item.create.wand_of_symmetry.tooltip.action1": "_Crea_ o _sposta_ lo specchio", - "item.create.wand_of_symmetry.tooltip.control2": "Clic destro in aria", - "item.create.wand_of_symmetry.tooltip.action2": "_Rimuove_ lo specchio attivo", - "item.create.wand_of_symmetry.tooltip.control3": "Clic destro da accovacciato", - "item.create.wand_of_symmetry.tooltip.action3": "Apre l'_interfaccia_ _di_ _configurazione_", - - "item.create.handheld_blockzapper.tooltip": "ZAPPER DI BLOCCHI PORTATILE", - "item.create.handheld_blockzapper.tooltip.summary": "Nuovo gadget per posizionare o scambiare blocchi a distanza.", - "item.create.handheld_blockzapper.tooltip.control1": "Clic sinistro su un blocco", - "item.create.handheld_blockzapper.tooltip.action1": "Imposta i blocchi posizionati dallo strumento sul blocco selezionato.", - "item.create.handheld_blockzapper.tooltip.control2": "Clic destro su un blocco", - "item.create.handheld_blockzapper.tooltip.action2": "_Piazza_ o _sostituisce_ il blocco selezionato.", - "item.create.handheld_blockzapper.tooltip.control3": "Clic destro da accovacciato", - "item.create.handheld_blockzapper.tooltip.action3": "Apre l'_interfaccia_ _di_ _configurazione_.", - - "item.create.handheld_worldshaper.tooltip": "PLASMATORE DEL MONDO PORTATILE", - "item.create.handheld_worldshaper.tooltip.summary": "Strumento per la creazione di _paesaggi_ e _caratteristiche_ _del_ _terreno_.", - "item.create.handheld_worldshaper.tooltip.control1": "Clic sinistro su un blocco", - "item.create.handheld_worldshaper.tooltip.action1": "Imposta i blocchi posizionati dallo strumento sul blocco selezionato.", - "item.create.handheld_worldshaper.tooltip.control2": "Clic destro su un blocco", - "item.create.handheld_worldshaper.tooltip.action2": "Applica il _pennello_ e lo _strumento_ attualmente selezionati nella posizione selezionata.", - "item.create.handheld_worldshaper.tooltip.control3": "Clic destro da accovacciato", - "item.create.handheld_worldshaper.tooltip.action3": "Apre l'_interfaccia_ _di_ _configurazione_", - - "item.create.tree_fertilizer.tooltip": "FERTILIZZANTE PER ALBERI", - "item.create.tree_fertilizer.tooltip.summary": "Una potente combinazione di minerali adatta ad accelerare la crescita di tipi di alberi comuni.", - "item.create.tree_fertilizer.tooltip.condition1": "Se utilizzato su un arboscello", - "item.create.tree_fertilizer.tooltip.behaviour1": "Fa crescere gli alberi _indipendentemente_ dalle _condizioni_ _di_ _spazio_", - - "item.create.deforester.tooltip": "DEFORESTATORE", - "item.create.deforester.tooltip.summary": "Un'_ascia_ _radiante_ in grado di abbattere alberi in una frazione di secondo.", - - "item.create.extendo_grip.tooltip": "PRESA EXTENDO", - "item.create.extendo_grip.tooltip.summary": "Boioioing! _Incrementa notevolmente la distanza per piazzare_ di chi lo brandisce.", - "item.create.extendo_grip.tooltip.condition1": "Quando in mano secondaria", - "item.create.extendo_grip.tooltip.behaviour1": "Incrementa la _distanza per piazzare_ degli oggetti usati nella _mano primaria_.", - - "item.create.filter.tooltip": "FILTRO", - "item.create.filter.tooltip.summary": "_Controlla_ _gli_ _output_ e gli _input_ dei dispositivi logistici con maggiore _precisione_, confrontandoli con una _serie_ _di_ _oggetti_ o diversi _filtri_ _nidificati_.", - "item.create.filter.tooltip.condition1": "Quando si trova nello slot del filtro", - "item.create.filter.tooltip.behaviour1": "_Controlla_ il flusso degli oggetti in base alla sua _configurazione_.", - "item.create.filter.tooltip.condition2": "Clic destro su di esso", - "item.create.filter.tooltip.behaviour2": "Apre l'_interfaccia_ _di_ _configurazione_.", - - "item.create.attribute_filter.tooltip": "FILTRO ATTRIBUTI", - "item.create.attribute_filter.tooltip.summary": "_Controlla_ _gli_ _output_ e gli _input_ dei dispositivi logistici con maggiore _precisione_, abbinandolo a una _serie_ _di_ _attributi_ e _categorie_ di oggetti.", - "item.create.attribute_filter.tooltip.condition1": "Quando si trova nello slot del filtro", - "item.create.attribute_filter.tooltip.behaviour1": "_Controlla_ il flusso degli oggetti in base alla sua _configurazione_.", - "item.create.attribute_filter.tooltip.condition2": "Clic destro su di esso", - "item.create.attribute_filter.tooltip.behaviour2": "Apre l'_interfaccia_ _di_ _configurazione_.", - - "item.create.empty_schematic.tooltip": "SCHEMATICA VUOTA", - "item.create.empty_schematic.tooltip.summary": "Utilizzato come ingrediente per ricette e per la scrittura al _banco_ _schematico_.", - - "item.create.schematic.tooltip": "SCHEMATICA", - "item.create.schematic.tooltip.summary": "Contiene una struttura da posizionare e collocare nel mondo. Posiziona l'ologramma come desiderato e usa un _Cannoneschematico_ per costruirla.", - "item.create.schematic.tooltip.condition1": "In mano", - "item.create.schematic.tooltip.behaviour1": "Può essere posizionato utilizzando gli strumenti sullo schermo.", - "item.create.schematic.tooltip.control1": "Clic destro da accovacciato", - "item.create.schematic.tooltip.action1": "Apre un'_interfaccia_ per l'immissione di _coordinate_ esatte.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATICA E PENNA D'OCA", - "item.create.schematic_and_quill.tooltip.summary": "Utilizzato per salvare una struttura nel tuo mondo in un file .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Passo 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Seleziona due punti d'angolo usando il clic destro.", - "item.create.schematic_and_quill.tooltip.condition2": "Passo 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "Premi _Ctrl_ e _scorri_ sulle facciate per regolare le dimensioni. Clic destro di nuovo per salvare.", - "item.create.schematic_and_quill.tooltip.control1": "Clic-Destro", - "item.create.schematic_and_quill.tooltip.action1": "Seleziona un punto d'angolo / conferma il salvataggio.", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl premuto", - "item.create.schematic_and_quill.tooltip.action2": "Seleziona i punti a _mezz'aria_. _Scorri_ per regolare la distanza.", - "item.create.schematic_and_quill.tooltip.control3": "Clic destro da accovacciato", - "item.create.schematic_and_quill.tooltip.action3": "_Resetta_ e rimuove la selezione.", - - "block.create.schematicannon.tooltip": "CANNONESCHEMATICO", - "block.create.schematicannon.tooltip.summary": "Spara blocchi per ricreare una _schematica_ distribuita nel mondo. Usa gli oggetti degli inventari adiacenti e della _polvere da sparo_ come combustibile.", - "block.create.schematicannon.tooltip.control1": "Clic destro su di esso", - "block.create.schematicannon.tooltip.action1": "Apre l'_interfaccia_", - - "block.create.schematic_table.tooltip": "BANCO SCHEMATICO", - "block.create.schematic_table.tooltip.summary": "Scrive schematiche salvate su una _schematica_ _vuota_.", - "block.create.schematic_table.tooltip.condition1": "Quando viene fornita una schematica vuota", - "block.create.schematic_table.tooltip.behaviour1": "Carica un file selezionato dalla cartella Schematics.", - - "block.create.shaft.tooltip": "ALBERO", - "block.create.shaft.tooltip.summary": "Fornisce una _rotazione_ _relè_ in linea retta.", - - "block.create.cogwheel.tooltip": "RUOTA DENTATA", - "block.create.cogwheel.tooltip.summary": "Fornisce una _rotazione_ _relè_ in linea retta e su _ruote_ _dentate_ adiacenti.", - - "block.create.large_cogwheel.tooltip": "RUOTA DENTATA GRANDE", - "block.create.large_cogwheel.tooltip.summary": "Una versione più grande della _ruota_ _dentata_, consente di _modificare_ la _velocità_ _di_ _rotazione_ quando è collegato alla sua controparte più piccola.", - - "block.create.encased_shaft.tooltip": "ALBERO INCASSATO", - "block.create.encased_shaft.tooltip.summary": "Fornisce una _rotazione_ _relè_ in linea retta. Adatto per propagare la rotazione attraverso le pareti.", - - "block.create.gearbox.tooltip": "RIDUTTORE", - "block.create.gearbox.tooltip.summary": "Fornisce una _rotazione_ _relè_ in _quatro_ _direzioni_ Inverte le connessioni diritte.", - - "block.create.gearshift.tooltip": "CAMBIO", - "block.create.gearshift.tooltip.summary": "Un controllo per attivare/disattivare la direzione di rotazione per gli alberi collegati.", - "block.create.gearshift.tooltip.condition1": "Quando alimentato", - "block.create.gearshift.tooltip.behaviour1": "_Inverte_ la rotazione in uscita.", - - "block.create.clutch.tooltip": "FRIZIONE", - "block.create.clutch.tooltip.summary": "Un controllo per innestare/disinnestare la rotazione per gli alberi collegati.", - "block.create.clutch.tooltip.condition1": "Quando alimentato", - "block.create.clutch.tooltip.behaviour1": "_Interrompe_ il trasferimento della rotazione dall'altro lato.", - - "block.create.encased_chain_drive.tooltip": "TRASMISSIONE A CATENA INCASSATA", - "block.create.encased_chain_drive.tooltip.summary": "Fornisce una _rotazione_ _relè_ in linea retta e alle _trasmissioni a catena incassate_ adiacenti. Le trasmissioni a catena si collegano in gruppo quando piazzate vicine tra di loro o vicino a qualsiasi facciata senza albero. Il loro orientamento non deve per forza combaciare.", - "block.create.encased_chain_drive.tooltip.condition1": "Quando collegate", - "block.create.encased_chain_drive.tooltip.behaviour1": "I blocchi collegati trasferiscono la _forza rotazionale_ e la direzione di questo componente.", - - "block.create.adjustable_chain_gearshift.tooltip": "CAMBIO A CATENA REGOLABILE", - "block.create.adjustable_chain_gearshift.tooltip.summary": "Fornisce una _rotazione_ _relè_ in una linea retta e alle _trasmissioni a catena incassate_ adiacenti. Un _segnale di redstone analogico_ fornito a questo blocco controlla quale dimensione della ruota di trazione è agganciata con le trasmissioni a catena incassate attaccate.", - "block.create.adjustable_chain_gearshift.tooltip.condition1": "Controllo di redstone", - "block.create.adjustable_chain_gearshift.tooltip.behaviour1": "_Senza_ un segnale, le trasmissioni a catena adiacenti trasferiranno la _stessa velocità_. Con un segnale _a piena potenza_, le trasmissioni a catena adiacenti trasferiranno esattamente _due volte la sua velocità_. Qualsiasi valore in mezzo risulterà in una velocità da 1 a 2 volte la stessa velocità.", - - "item.create.belt_connector.tooltip": "NASTRO MECCANICO", - "item.create.belt_connector.tooltip.summary": "Collega due o più _alberi_ con un _nastro_ _meccanico_. Gli alberi collegati avranno la stessa velocità e direzione di rotazione esatte. Il nastro può fungere da _trasportatore_ per _oggetti_ ed _entità_.", - "item.create.belt_connector.tooltip.control1": "Clic destro su un albero", - "item.create.belt_connector.tooltip.action1": "Seleziona l'albero come una carrucola per nastri. Entrambi gli alberi selezionati devono _allinearsi_ _verticalmente_, _orizzontalmente_ o _diagonalmente_ verso la direzione del nastro.", - "item.create.belt_connector.tooltip.control2": "Clic destro da accovacciato", - "item.create.belt_connector.tooltip.action2": "_Reimposta_ la prima posizione selezionata per il nastro.", - - "item.create.goggles.tooltip": "OCCHIALI DA INGEGNERE", - "item.create.goggles.tooltip.summary": "Un paio di occhiali per migliorare la tua visione con utili _informazioni_ _cinetiche_.", - "item.create.goggles.tooltip.condition1": "Quando indossati", - "item.create.goggles.tooltip.behaviour1": "Mostra gli _indicatori_ _colorati_ corrispondenti al _livello_ _di_ _velocità_ di un componente cinetico posizionato, nonché all'_impatto_ _dello_ _stress_ e la capacità dei singoli componenti.", - "item.create.goggles.tooltip.condition2": "Quando si guarda il calibro", - "item.create.goggles.tooltip.behaviour2": "Mostra informazioni dettagliate sulla _velocità_ o lo _stress_ della rete a cui è collegato il misuratore.", - - "item.create.wrench.tooltip": "CHIAVE INGLESE", - "item.create.wrench.tooltip.summary": "Uno strumento utile per lavorare su congegni cinetici. Può essere usato per _ruotare_, _smontare_ e _configurare_ i componenti.", - "item.create.wrench.tooltip.control1": "Clic destro su un blocco cinetico", - "item.create.wrench.tooltip.action1": "_Ruota_ _i_ _componenti_ verso o lontano dalla facciata con cui hai interagito.", - "item.create.wrench.tooltip.control2": "Clic destro da accovacciato", - "item.create.wrench.tooltip.action2": "_Smonta_ _i_ _componenti_ _cinetici_ e li rimette nel _tuo_ _inventario_.", - - "block.create.creative_motor.tooltip": "MOTORE", - "block.create.creative_motor.tooltip.summary": "Una fonte configurabile di _forza_ _di_ _rotazione_.", - - "block.create.water_wheel.tooltip": "RUOTA IDRAULICA", - "block.create.water_wheel.tooltip.summary": "Fornisce un _forza_ _di_ _rotazione_ prelevata da correnti d'_acqua_ _adiacenti_.", - - "block.create.encased_fan.tooltip": "VENTILATORE INCASSATO", - "block.create.encased_fan.tooltip.summary": "Converte la _forza_ _di_ _rotazione_ in _correnti_ _d'aria_ verso l'esterno o l'interno. Ha una varietà di usi.", - "block.create.encased_fan.tooltip.condition1": "Quando alimentato da redstone", - "block.create.encased_fan.tooltip.behaviour1": "Fornisce _forza_ _di_ _rotazione_ da qualsiasi _fonte_ _di_ _calore_ immediatamente al di sotto di sé. Il ventilatore deve essere rivolto verso il basso.", - "block.create.encased_fan.tooltip.condition2": "Quando in rotazione", - "block.create.encased_fan.tooltip.behaviour2": "_Spinge_ o _tira_ entità, a seconda della velocità di rotazione in entrata.", - "block.create.encased_fan.tooltip.condition3": "Quando soffia attraverso blocchi speciali", - "block.create.encased_fan.tooltip.behaviour3": "_Liquidi_ e particelle di _fuoco_ vengono emessi nel flusso d'aria. Questo può essere usato per _elaborare_ _oggetti_.", - - "block.create.nozzle.tooltip": "UGELLO", - "block.create.nozzle.tooltip.summary": "Attacca la parte anteriore di un _ventilatore_ _incassato_ per distribuire il suo effetto sulle entità in _tutte_ _le_ _direzioni_.", - - "block.create.hand_crank.tooltip": "MANOVELLA", - "block.create.hand_crank.tooltip.summary": "Una semplice _fonte_ di _forza_ _di_ _rotazione_ che richiede l'interazione dei giocatori.", - "block.create.hand_crank.tooltip.condition1": "Quando usata", - "block.create.hand_crank.tooltip.behaviour1": "Fornisce una _forza_ _di_ _rotazione_ a un aggeggio attaccato. _Accovacciati_ _per_ _invertire_ la rotazione.", - - "block.create.cuckoo_clock.tooltip": "OROLOGIO A CUCÙ", - "block.create.cuckoo_clock.tooltip.summary": "Artigianato raffinato per _decorare_ uno spazio e _tener_ _traccia_ _del_ _tempo_.", - "block.create.cuckoo_clock.tooltip.condition1": "Quando in rotazione", - "block.create.cuckoo_clock.tooltip.behaviour1": "Mostra l'_ora_ _corrente_ e suona una melodia due volte al giorno. Si _attiva_ una volta a mezzogiorno e al crepuscolo, non appena i _giocatori_ _possono_ _dormire_.", - - "block.create.turntable.tooltip": "PIATTO", - "block.create.turntable.tooltip.summary": "Assorbe la _forza_ _di_ _rotazione_, girando.", - - "block.create.millstone.tooltip": "MACINA", - "block.create.millstone.tooltip.summary": "Un componente cinetico adatto per la _macinatura_ dei _materiali_ inseriti. Può essere alimentato da una ruota dentata adiacente o collegandosi all'albero nella parte inferiore. I risultati devono essere estratti dal componente.", - "block.create.millstone.tooltip.condition1": "Quando in rotazione", - "block.create.millstone.tooltip.behaviour1": "Inizia ad applicare le _ricette_ di _macinatura_ a tutti gli elementi inseriti dal lato o dalla parte superiore del blocco.", - "block.create.millstone.tooltip.condition2": "Clic destro", - "block.create.millstone.tooltip.behaviour2": "Raccogli manualmente gli output.", - - "block.create.crushing_wheel.tooltip": "RUOTA DI FRANTUMAZIONE", - "block.create.crushing_wheel.tooltip.summary": "Grandi ruote girevoli che _frantumano_ qualsiasi cosa.", - "block.create.crushing_wheel.tooltip.condition1": "Se collegata ad altre ruote di frantumazione", - "block.create.crushing_wheel.tooltip.behaviour1": "Forma una frantumatrice per la lavorazione di una varietà di cose. I denti delle ruote devono connettersi e muoversi con la _stessa_ _velocità_ in _direzioni_ _opposte_.", - - "block.create.mechanical_press.tooltip": "PRESSA MECCANICA", - "block.create.mechanical_press.tooltip.summary": "Un pistone potente per comprimere gli oggetti sottostanti. Richiede una _forza_ _di_ _rotazione_ costante.", - "block.create.mechanical_press.tooltip.condition1": "Quando alimentata da redstone", - "block.create.mechanical_press.tooltip.behaviour1": "_Inizia_ a comprimere gli oggetti rilasciati al di sotto di esso.", - "block.create.mechanical_press.tooltip.condition2": "Quando sopra a un nastro meccanico", - "block.create.mechanical_press.tooltip.behaviour2": "Comprime _automaticamente_ gli oggetti che passano sul nastro.", - "block.create.mechanical_press.tooltip.condition3": "Quando sopra una bacinella", - "block.create.mechanical_press.tooltip.behaviour3": "Inizia a _compattare gli oggetti_ nella bacinella quando sono presenti tutti gli ingredienti.", - - "block.create.basin.tooltip": "BACINELLA", - "block.create.basin.tooltip.summary": "Un pratico _contenitore_ _di_ _oggetti_ utilizzato nella lavorazione con il _miscelatore_ _meccanico_ e la _pressa_ _meccanica_. Supporta i _comparatori di redstone_.", - "block.create.basin.tooltip.condition1": "Auto-output", - "block.create.basin.tooltip.behaviour1": "Quando _inventari aperti_ come nastri, altre bacinelle, depositi, drenanti di oggetti e altri sono _sotto un lato_ di una bacinella, automaticamente ricevono qualsiasi _output di oggetti/fluidi_ creati nella bacinella. Utile per l'automazione.", - - "block.create.blaze_burner.tooltip": "INCENERITORE DI BLAZE", - "block.create.blaze_burner.tooltip.summary": "Un blocco per scaldare una bacinella utilizzando un blaze controllato.", - "block.create.blaze_burner.tooltip.condition1": "Quando piazzato sotto una bacinella", - "block.create.blaze_burner.tooltip.behaviour1": "Fornisce _calore_ per le ricette della bacinella.", - "block.create.blaze_burner.tooltip.condition2": "Quando il combustibile è usato sull'inceneritore", - "block.create.blaze_burner.tooltip.behaviour2": "Incrementa il tempo rimanente che serve a bruciare del tempo che serve a bruciare in una fornace dell'oggetto in questione. Consuma l'oggetto. Usa la _torta per blaze_ per alte temperature.", - - "block.create.reinforced_rail.tooltip": "BINARIO RINFORZATO", - "block.create.reinforced_rail.tooltip.summary": "Un binario in legno stabile, _non richiede supporti_.", - - "block.create.mechanical_mixer.tooltip": "MISCELATORE MECCANICO", - "block.create.mechanical_mixer.tooltip.summary": "Una frusta cinetica per applicare qualsiasi ricetta di creazione informe agli oggetti sottostanti. Richiede una _forza_ _di_ _rotazione_ costante e una _bacinella_ posizionata sotto (con uno spazio in mezzo).", - "block.create.mechanical_mixer.tooltip.condition1": "Quando sopra a una bacinella", - "block.create.mechanical_mixer.tooltip.behaviour1": "Inizia a mescolare gli oggetti nella bacinella ogni volta che sono presenti tutti gli ingredienti necessari.", - - "block.create.mechanical_crafter.tooltip": "COSTRUTTORE MECCANICO", - "block.create.mechanical_crafter.tooltip.summary": "Un assemblatore cinetico per _automatizzare_ qualsiasi ricetta di _creazione_ _con forma_. Posiziona gli _ingredienti_ _in_ _una_ _griglia_ corrispondente alla tua ricetta, e _disponi_ _i_ _loro_ _nastri_ per creare un _flusso_ che esce dalla griglia su uno degli costruttori.", - "block.create.mechanical_crafter.tooltip.condition1": "Quando ruotato", - "block.create.mechanical_crafter.tooltip.behaviour1": "_Inizia_ _il_ _processo_ _di_ _creazione_ non appena a tutti i costruttori della griglia è stato assegnato un oggetto.", - "block.create.mechanical_crafter.tooltip.condition2": "Su segnale di redstone", - "block.create.mechanical_crafter.tooltip.behaviour2": "_Forza_ l'inizio del _processo di creazione_ con tutti gli _oggetti_ attualmente nella griglia.", - "block.create.mechanical_crafter.tooltip.control1": "Con chiave inglese sul davanti", - "block.create.mechanical_crafter.tooltip.action1": "_Rotea_ _nella_ _direzione_ verso cui un singolo costruttore _sposta_ _i_ _suoi_ _oggetti_. Per formare una griglia di lavoro, _disporre_ _i_ _nastri_ _in_ _un_ _flusso_ che sposta tutti gli oggetti verso il costruttore finale. Il costruttore finale deve puntare lontano dalla griglia.", - "block.create.mechanical_crafter.tooltip.control2": "Con chiave inglese dietro", - "block.create.mechanical_crafter.tooltip.action2": "_Collega_ l'_inventario_ _di_ _input_ _ dei costruttori adiacenti. Usa questo per _combinare_ _gli_ _slot_ nella griglia di creazione e _risparmiare_ _sul_ _lavoro_ _di_ _input_.", - - "block.create.furnace_engine.tooltip": "MOTORE FORNACE", - "block.create.furnace_engine.tooltip.summary": "Una potente fonte di _potenza_ _rotazionale_ che richiede un _forno_ _funzionante_ per funzionare.", - "block.create.furnace_engine.tooltip.condition1": "Se collegato alla fornace accesa", - "block.create.furnace_engine.tooltip.behaviour1": "_Inizia_ _ad_ _alimentare_ un _volano_ posto di fronte (a 1 metro di distanza). Utilizza un forno fusorio per velocità più elevate.", - - "block.create.flywheel.tooltip": "VOLANO", - "block.create.flywheel.tooltip.summary": "Una grande ruota di metallo per _imbrigliare_ _e_ _stabilizzare_ la forza generata da un _motore_ _collegato_. I volani si collegano ai motori se sono a _1_ _metro_ di distanza e ad un _angolo_ _di_ _90°_ l'uno dall'altro.", - "block.create.flywheel.tooltip.condition1": "Se collegato a un motore in funzione", - "block.create.flywheel.tooltip.behaviour1": "Fornisce la _forza_ _di_ _rotazione_ a una macchina connessa in base alla forza e alla velocità del generatore.", - - "block.create.portable_storage_interface.tooltip": "INTERFACCIA DI ARCHIVIAZIONE PORTATILE", - "block.create.portable_storage_interface.tooltip.summary": "Un punto di interscambio portatile per _spostare_ _oggetti_ da e verso una _struttura_ mossa da un pistone, supporto, carrello da miniera o carrucola.", - "block.create.portable_storage_interface.tooltip.condition1": "In movimento", - "block.create.portable_storage_interface.tooltip.behaviour1": "Interagisce con i _traspositori_ fissi in modo tale che i traspositori _rivolti_ _lontano_ dall'interfaccia _estraggano_ _gli_ _oggetti_, e i traspositori che puntano l'interfaccia _inseriranno_ _gli_ _oggetti_ dall'inventario allegato. Il congegno si arresterà brevemente quando gli oggetti vengono scambiati.", - "block.create.portable_storage_interface.tooltip.condition2": "Quando alimentata da redstone", - "block.create.portable_storage_interface.tooltip.behaviour2": "_Disinnesca_ qualsiasi collegamento attivo immediatamente.", - - "block.create.portable_fluid_interface.tooltip": "INTERFACCIA PER FLUIDI PORTATILE", - "block.create.portable_fluid_interface.tooltip.summary": "Un punto di interscambio portatile per _spostare_ _fluidi_ a e da una _struttura_ mossa da un pistone, supporto, carrello da miniera o carrucola. Due interfacce che si incontrano devono essere piazzate _con le facciate anteriori che si guardano_ e spaziate di _1-2 blocchi_.", - "block.create.portable_fluid_interface.tooltip.condition1": "In movimento", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Interagisce con le _interfacce di archiviazione portatili_ stazionarie per trasferire i fluidi a o dalla macchina. I tubi che immettono o estraggono dall'_interfaccia stazionaria_ interagiscono _direttamente_ con i serbatoi della macchina. La struttura si fermerà per un attimo per lo scambio di fluidi.", - "block.create.portable_fluid_interface.tooltip.condition2": "Quando alimentata da redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "_Disinnesca_ qualsiasi collegamento attivo immediatamente.", - - "block.create.rotation_speed_controller.tooltip": "REGOLATORE DI VELOCITÀ DI ROTAZIONE", - "block.create.rotation_speed_controller.tooltip.summary": "Un _relè_ _configurabile_ in grado di accelerare o rallentare il componente selezionato a qualsiasi velocità desiderata.", - "block.create.rotation_speed_controller.tooltip.condition1": "Se collegato a una ruota dentata grande", - "block.create.rotation_speed_controller.tooltip.behaviour1": "Inoltra la forza di rotazione in entrata alla ruota, cercando di far _corrispondere_ la _velocità_ con cui è configurata come obbiettivo. La ruota dentata deve essere fissata sulla parte superiore del controllo.", - - "block.create.mechanical_piston.tooltip": "PISTONE MECCANICO", - "block.create.mechanical_piston.tooltip.summary": "Una versione più avanzata del _pistone_. Usa la _forza_ _di_ _rotazione_ per spostare con precisione le strutture attaccate. I _pali_ _di_ _estensione_ _del_ _pistone_ nella parte posteriore definiscono la _gamma_ di questo dispositivo. Senza estensioni, il pistone non si muoverà. Usa _telai_ o _blocchi_ _di_ _slime_ per muovere più di una singola linea di blocchi.", - "block.create.mechanical_piston.tooltip.condition1": "Quando ruotato", - "block.create.mechanical_piston.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La velocità e la direzione sono correlate alla velocità di rotazione in entrata.", - - "block.create.piston_extension_pole.tooltip": "PALO DI PISTONE", - "block.create.piston_extension_pole.tooltip.summary": "Estende la gamma dei _pistoni_ _meccanici_.", - "block.create.piston_extension_pole.tooltip.condition1": "Se collegato al pistone meccanico", - "block.create.piston_extension_pole.tooltip.behaviour1": "Estende la gamma di un pistone di 1 blocco", - - "block.create.mechanical_bearing.tooltip": "SUPPORTO MECCANICO", - "block.create.mechanical_bearing.tooltip.summary": "Utilizzato per ruotare _strutture_ _grandi_ o sfruttare la _forza_ _di_ _rotazione_ dal vento.", - "block.create.mechanical_bearing.tooltip.condition1": "Quando ruotato", - "block.create.mechanical_bearing.tooltip.behaviour1": "Inizia a ruotare i blocchi collegati. Usa _telai_, dello _slime_ o la _super colla_ per muovere più di un singolo blocco.", - - "block.create.windmill_bearing.tooltip": "SUPPORTO PER MULINO A VENTO", - "block.create.windmill_bearing.tooltip.summary": "Usato per imbrigliare la forza rotazionale dal vento. Attacca la tua struttura e guardala girare!", - "block.create.windmill_bearing.tooltip.condition1": "Clic destro", - "block.create.windmill_bearing.tooltip.behaviour1": "Inizia a fornire _forza rotazionale_ generata dalla rotazione della sua struttura attaccata. La struttura deve includere _vele_ adatte o _lana_. Usa _telai_, dello _slime_ o la _super colla_ per muovere più di un singolo blocco.", - - "block.create.sail_frame.tooltip": "TELAIO PER VELA", - "block.create.sail_frame.tooltip.summary": "Un blocco da costruzione utile e fonte di energia cinetica quando parte di una struttura montata su un _supporto per mulino a vento_.", - - "block.create.white_sail.tooltip": "VELA", - "block.create.white_sail.tooltip.summary": "Un blocco da costruzione utile e fonte di energia cinetica quando parte di una struttura montata su un _supporto per mulino a vento_. Dispone di una varietà di colori.", - "block.create.white_sail.tooltip.condition1": "Clic destro con un colorante", - "block.create.white_sail.tooltip.behaviour1": "Cambia colore alla vela.", - - "block.create.clockwork_bearing.tooltip": "SUPPORTO DELL'OROLOGIO", - "block.create.clockwork_bearing.tooltip.summary": "Una versione avanzata del _supporto_ _meccanico_ per ruotare fino a due _lancette_ in base al _tempo_ _di_ _gioco_ corrente.", - "block.create.clockwork_bearing.tooltip.condition1": "Quando ruotato", - "block.create.clockwork_bearing.tooltip.behaviour1": "Inizia a ruotare la struttura collegata verso l'_ora_ _corrente_. Se è presente una seconda struttura, fungerà da _lancetta_ _dei_ _minuti_.", - - "block.create.sequenced_gearshift.tooltip": "CAMBIO SEQUENZIALE", - "block.create.sequenced_gearshift.tooltip.summary": "Un _componente_ _di_ _utilità_ _programmabile_, che può cambiare la sua _capacità di trasmissione_ _rotazionale_ secondo un massimo di _5_ _istruzioni_ _consecutive_. Utilizzalo per alimentare i supporti meccanici, pistoni o carrucole con un maggiore controllo sui tempi e sulla velocità. Può diventare meno preciso a velocità più elevate.", - "block.create.sequenced_gearshift.tooltip.condition1": "Quando alimentato da redstone", - "block.create.sequenced_gearshift.tooltip.behaviour1": "_Inizia_ _l'esecuzione_ delle istruzioni programmate in base alla velocità in input.", - "block.create.sequenced_gearshift.tooltip.condition2": "Clic destro", - "block.create.sequenced_gearshift.tooltip.behaviour2": "Apre l'_interfaccia_ _di_ _configurazione_", - - "block.create.cart_assembler.tooltip": "ASSEMBLATORE DI CARRELLI DA MINIERA", - "block.create.cart_assembler.tooltip.summary": "Monta una struttura connessa su un _carrello_ _da_ _miniera_ di _passaggio_.", - "block.create.cart_assembler.tooltip.condition1": "Quando alimentato da redstone", - "block.create.cart_assembler.tooltip.behaviour1": "Smonta le strutture montate nei _carrelli_ _da_ _miniera_ di _passaggio_ e le rimette nel mondo.", - "block.create.cart_assembler.tooltip.condition2": "Macchine sul carrello", - "block.create.cart_assembler.tooltip.behaviour2": "Due assemblatori di carrelli _connessi da_ una _struttura_, una volta contenuto un carrello, collegheranno la _macchina montata tra_ loro _due_. La struttura si comporterà verosimilmente a un _aggancio per carrelli da miniera_.", - "block.create.cart_assembler.tooltip.control1": "Quando piazzato su un binario", - "block.create.cart_assembler.tooltip.action1": "_Assembla_ sui carrelli che passano _quando alimentato_, _disassembla_ negli altri casi.", - "block.create.cart_assembler.tooltip.control2": "Quando piazzato su un binario alimentato", - "block.create.cart_assembler.tooltip.action2": "Assembla e _accelera_ i carrelli _quando alimentato_, disassembla e li _ferma_ negli altri casi.", - "block.create.cart_assembler.tooltip.control3": "Quando piazzato su un binario rilevatore", - "block.create.cart_assembler.tooltip.action3": "_Assembla_ carrelli _disassemblati_, _disassembla_ carrelli _assemblati_.", - "block.create.cart_assembler.tooltip.control4": "Quando piazzato su un binario attivatore", - "block.create.cart_assembler.tooltip.action4": "_Disassembla_ carrelli quando alimentato.", - - "block.create.rope_pulley.tooltip": "CARRUCOLA PER CORDE", - "block.create.rope_pulley.tooltip.summary": "Sposta i blocchi e le strutture collegati in verticale. Usa _telai_, dello _slime_ o la _super colla_ per muovere più di un singolo blocco.", - "block.create.rope_pulley.tooltip.condition1": "Quando ruotato", - "block.create.rope_pulley.tooltip.behaviour1": "Inizia a spostare la struttura collegata. La velocità e la direzione sono correlate alla velocità di rotazione in input.", - - "block.create.linear_chassis.tooltip": "TELAIO LINEARE", - "block.create.linear_chassis.tooltip.summary": "Un blocco base configurabile che collega le strutture per il movimento.", - "block.create.linear_chassis.tooltip.condition1": "Quando spostato", - "block.create.linear_chassis.tooltip.behaviour1": "_Sposta_ tutti i _telai_ _attaccati_ con lo stesso orientamento e una colonna di blocchi all'interno della sua gamma. I blocchi verranno tirati solo se la faccia del telaio è _appiccicosa_ (vedi con [Ctrl]).", - "block.create.linear_chassis.tooltip.condition2": "Con la chiave inglese", - "block.create.linear_chassis.tooltip.behaviour2": "Configura la _gamma_ per questo telaio. Premi Ctrl per modificare anche la gamma di tutti i blocchi telaio collegati.", - "block.create.linear_chassis.tooltip.control1": "Clic destro con la palla di slime", - "block.create.linear_chassis.tooltip.action1": "_Appiccica_ la facciata cliccata. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", - - "block.create.secondary_linear_chassis.tooltip": "TELAIO LINEARE SECONDARIO", - "block.create.secondary_linear_chassis.tooltip.summary": "Un secondo tipo di _telaio lineare_ che non si collega con gli altri.", - - "block.create.radial_chassis.tooltip": "TELAIO RADIALE", - "block.create.radial_chassis.tooltip.summary": "Un blocco base configurabile che collega le strutture per il movimento.", - "block.create.radial_chassis.tooltip.condition1": "Quando spostato", - "block.create.radial_chassis.tooltip.behaviour1": "_Sposta_ tutti i _telai_ _collegati_ in una colonna, e un cilindro di blocchi attorno a se stesso. I blocchi attorno ad esso vengono spostati solo quando si trovano nella gamma e sono attaccati a un lato appiccicoso (vedi con [Ctrl]).", - "block.create.radial_chassis.tooltip.condition2": "Con la chiave inglese", - "block.create.radial_chassis.tooltip.behaviour2": "Configura la _gamma_ per questo telaio. Premi Ctrl per modificare anche la gamma di tutti i blocchi telaio collegati.", - "block.create.radial_chassis.tooltip.control1": "Clic destro con la palla di slime", - "block.create.radial_chassis.tooltip.action1": "_Appiccica_ la facciata cliccata. Quando viene spostato, il telaio tirerà i blocchi collegati, indipendentemente dalla direzione del movimento.", - - "block.create.mechanical_drill.tooltip": "TRAPANO MECCANICO", - "block.create.mechanical_drill.tooltip.summary": "Un dispositivo meccanico adatto per _rompere_ i _blocchi_. È mobile con _pistoni_, _supporti_ _meccanici_ o altri controlli.", - "block.create.mechanical_drill.tooltip.condition1": "Quando ruotato", - "block.create.mechanical_drill.tooltip.behaviour1": "Funziona per rompere i blocchi in modo _stazionario_. Fa anche _male_ _alle_ _entità_ nella sua area effettiva", - "block.create.mechanical_drill.tooltip.condition2": "In movimento", - "block.create.mechanical_drill.tooltip.behaviour2": "Rompe i blocchi con cui il trapano si scontra.", - - "block.create.mechanical_harvester.tooltip": "MIETITRICE MECCANICA", - "block.create.mechanical_harvester.tooltip.summary": "Una mietitrice meccanica adatta per l'automazione delle colture di medie dimensioni. È mobile con _pistoni_, _supporti_ _meccanici_ o altri controlli.", - "block.create.mechanical_harvester.tooltip.condition1": "In movimento", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Raccoglie_ tutte le _colture_ _mature_ con cui la lama si scontra e ripristina il loro stato iniziale di crescita.", - - "block.create.mechanical_plough.tooltip": "ARATRO MECCANICO", - "block.create.mechanical_plough.tooltip.summary": "Un aratro meccanico ha una varietà di usi. È mobile con _pistoni_, _supporti_ _meccanici_ o altri controlli.", - "block.create.mechanical_plough.tooltip.condition1": "In movimento", - "block.create.mechanical_plough.tooltip.behaviour1": "_Rompe i blocchi_ con cui _non può collidere_, come torce, binari o strati di neve. _Applica_ il suo _movimento_ ad _entità_ senza ferirle. _Ara i blocchi di terra_ come se usassi una zappa.", - - "block.create.mechanical_saw.tooltip": "SEGA MECCANICA", - "block.create.mechanical_saw.tooltip.summary": "Adatto per _tagliare_ _alberi_ in modo efficace e per _tagliare_ _blocchi_ nelle loro controparti carpentate. È mobile con _pistoni_, _supporti_ _meccanici_ o altri controlli.", - "block.create.mechanical_saw.tooltip.condition1": "Di fronte", - "block.create.mechanical_saw.tooltip.behaviour1": "Applica le _ricette_ di _segatura_ e _lavorazione_ _della_ _pietra_ agli oggetti rilasciati o inseriti al suo interno. Quando sono possibili gli output, li scorre ciclicamente a meno che non sia assegnato un _filtro_.", - "block.create.mechanical_saw.tooltip.condition2": "Di fronte in orizzontale", - "block.create.mechanical_saw.tooltip.behaviour2": "_Rompe_ i _tronchi_ di fronte a se. Se il troco supportava un albero da solo, l'albero crollerà lontano dalla sega.", - "block.create.mechanical_saw.tooltip.condition3": "In movimento", - "block.create.mechanical_saw.tooltip.behaviour3": "_Taglia_ tutti gli _alberi_ con cui la sega si scontra.", - - "block.create.stockpile_switch.tooltip": "INTERRUTTORE ACCUMULATORE", - "block.create.stockpile_switch.tooltip.summary": "Attiva/disattiva un segnale redstone in base allo _spazio_ _di_ _stoccaggio_ nel contenitore collegato.", - "block.create.stockpile_switch.tooltip.condition1": "Quando inferiore al limite inferiore", - "block.create.stockpile_switch.tooltip.behaviour1": "Smette di fornire il _segnale_ _redstone_", - - "block.create.content_observer.tooltip": "OSSERVATORE DEI CONTENUTI", - "block.create.content_observer.tooltip.summary": "_Rileva oggetti_ dentro i _contenitori_ ed i _nastri_ corrispondenti ad un _filtro_. Quando l'_inventario_ del blocco, _nastro_ or _scivolo_ contiene un oggetto corrispondente, questo componente emetterà un _segnale redstone_. Quando un _imbuto_ osservato _trasferisce_ un oggetto corrispondente, questo componente emetterà un _segnale redstone_ temporaneo.", - - "block.create.redstone_link.tooltip": "COLLEGAMENTO REDSTONE", - "block.create.redstone_link.tooltip.summary": "Endpoint per connessioni _wireless_ _di_ _redstone_. Le _frequenze_ possono essere assegnate utilizzando qualsiasi oggetto. La gamma del segnale è limitata, sebbene ragionevolmente lontana.", - "block.create.redstone_link.tooltip.condition1": "Quando alimentato", - "block.create.redstone_link.tooltip.behaviour1": "La ricezione di collegamenti della stessa _frequenza_ produrrà un segnale redstone.", - "block.create.redstone_link.tooltip.control1": "Clic destro su un oggetto", - "block.create.redstone_link.tooltip.action1": "Imposta la _frequenza_ su quell'oggetto. È possibile utilizzare un totale di _due_ _oggetti_ _differenti_ in combinazione per definire una frequenza.", - "block.create.redstone_link.tooltip.control2": "Clic destro da accovacciato", - "block.create.redstone_link.tooltip.action2": "Alterna tra la modalità _ricevitore_ e _trasmettitore_.", - - "block.create.nixie_tube.tooltip": "TUBO NIXIE", - "block.create.nixie_tube.tooltip.summary": "Un _display_ per _numeri_ e _testo_ alimentato da redstone.", - "block.create.nixie_tube.tooltip.condition1": "Quando alimentato", - "block.create.nixie_tube.tooltip.behaviour1": "Mostra l'attuale _forza del segnale_ di redstone come valore mostrato.", - "block.create.nixie_tube.tooltip.condition2": "Con targhetta", - "block.create.nixie_tube.tooltip.behaviour2": "Mostra il _contenuto_ della tua _targhetta_ con diversi tubi nixie _collocati_ in _linea_.", - - "block.create.redstone_contact.tooltip": "CONTATTO REDSTONE", - "block.create.redstone_contact.tooltip.summary": "Emette solo un segnale di redstone in coppia. È mobile con _pistoni_, _supporti meccanici_ o altri controlli.", - "block.create.redstone_contact.tooltip.condition1": "Di fronte ad altri contatti", - "block.create.redstone_contact.tooltip.behaviour1": "Fornisce un _segnale_ _redstone_.", - "block.create.redstone_contact.tooltip.condition2": "In movimento", - "block.create.redstone_contact.tooltip.behaviour2": "Attiva tutti i contatti fissi che passa.", - - "block.create.adjustable_crate.tooltip": "BAULE REGOLABILE", - "block.create.adjustable_crate.tooltip.summary": "Questo _contenitore_ _di_ _stoccaggio_ consente il controllo manuale sulla sua capacità. Può contenere fino a _16_ _pile_ di qualsiasi oggetto. Supporta _comparatori_ _redstone_.", - "block.create.adjustable_crate.tooltip.control1": "Clic destro", - "block.create.adjustable_crate.tooltip.action1": "Apre l'_interfaccia_.", - - "block.create.creative_crate.tooltip": "CREATORE CANNONESCHEMATICO", - "block.create.creative_crate.tooltip.summary": "Fornisce una scorta infinita di blocchi ai _cannoneschematici_ adiacenti.", - "block.create.creative_crate.tooltip.condition1": "Quando un oggetto è nel filtro", - "block.create.creative_crate.tooltip.behaviour1": "Qualsiasi _estrazione_ da questo contenitore fornisce _provviste infinite_ dell'oggetto in questione. Gli oggetti _inseriti_ in questo baule verranno _svuotati_.", - - "block.create.deployer.tooltip": "INSTALLATORE", - "block.create.deployer.tooltip.summary": "_Punzoni_, _usi_ e _attivazioni_. Questa macchina proverà a _imitare_ un _giocatore_ il più possibile. Può _prendere_ e _depositare_ _oggetti_ nell'_inventario_ adiacente. Può essere assegnata una pila di oggetti come _filtro_.", - "block.create.deployer.tooltip.condition1": "Quando ruotato", - "block.create.deployer.tooltip.behaviour1": "Allunga il braccio e si _attiva_ nello spazio di un blocco _2_ _metri_ _davanti_ a sé.", - "block.create.deployer.tooltip.condition2": "Clic destro con la chiave inglese", - "block.create.deployer.tooltip.behaviour2": "Attiva/disattiva la modalità di perforazione. In _modalità_ _pugno_, l'Installatore tenterà di usare il suo oggetto per _rompere_ _blocchi_ o _ferire_ _entità_.", - "block.create.deployer.tooltip.condition3": "Quando un filtro è assegnato", - "block.create.deployer.tooltip.behaviour3": "L'installatore non si attiverà finché l'oggetto tenuto non _combaci_ il _filtro_. Gli oggetti non combacianti non possono essere inseriti; gli oggetti branditi combacianti col filtro non possono essere estratti.", - - "block.create.brass_casing.tooltip": "INVOLUCRO DI OTTONE", - "block.create.brass_casing.tooltip.summary": "Involucro per macchine robusto con una varietà di usi. Utile per la decorazione.", - - "block.create.pulse_repeater.tooltip": "RIPETITORE DI IMPULSI", - "block.create.pulse_repeater.tooltip.summary": "Un semplice circuito per tagliare i segnali redstone di passaggio ad una lunghezza di _1_ _tick_.", - - "block.create.adjustable_repeater.tooltip": "RIPETITORE REGOLABILE", - "block.create.adjustable_repeater.tooltip.summary": "Un _ripetitore_ _redstone_ avanzato con un _ritardo_ _configurabile_ fino a 30 minuti.", - - "block.create.adjustable_pulse_repeater.tooltip": "RIPETITORE DI IMPULSI REGOLABILE", - "block.create.adjustable_pulse_repeater.tooltip.summary": "Un _ripetitore_ _di_ _impulsi_ con un _ritardo_ _configurabile_ fino a 30 minuti.", - - "block.create.analog_lever.tooltip": "LEVA ANALOGICA", - "block.create.analog_lever.tooltip.summary": "Una leva con un _controllo_ _più_ _preciso_ sulla _potenza_ _del_ _segnale_ emesso.", - - "block.create.powered_toggle_latch.tooltip": "LEVA ALIMENTATA ALTERATA", - "block.create.powered_toggle_latch.tooltip.summary": "Una leva che può essere attivata/disattivata da un _impulso_ _redstone_.", - - "block.create.powered_latch.tooltip": "LEVA ALIMENTATA", - "block.create.powered_latch.tooltip.summary": "Una leva che può essere controllata dai _segnali_ _redstone. Un segnale sul _retro_ _la_ _abilita_, un _segnale_ _laterale_ _la_ _resetterà_ .", - - "block.create.controller_rail.tooltip": "BINARIO DI CONTROLLO", - "block.create.controller_rail.tooltip.summary": "Un _binario alimentato unidirezionale_ capace di _controllare precisamente_ la _velocità di movimento_ di un carrello da miniera.", - "block.create.controller_rail.tooltip.condition1": "Quando alimentato da redstone", - "block.create.controller_rail.tooltip.behaviour1": "_Accelera o _decelera_ i _carrelli da miniera_ che passano, a seconda della _potenza del segnale_. Propaga il segnale redstone ai binari di controllo adiacenti. Alimentare due binari di controllo con segnali differenti farà in modo che i binari tra di loro interpoleranno il segnale.", - - "block.create.speedometer.tooltip": "TACHIMETRO", - "block.create.speedometer.tooltip.summary": "Misura e visualizza la _velocità_ _di_ _rotazione_ dei componenti cinetici collegati. Supporta _comparatori_ _redstone_.", - "block.create.speedometer.tooltip.condition1": "Quando ruotato", - "block.create.speedometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di velocità. Il _verde_ indica una rotazione lenta, _blu_ moderata e _viola_ veloce. Alcuni componenti meccanici richiedono un livello di velocità sufficiente per funzionare correttamente.", - - "block.create.stressometer.tooltip": "STRESSOMETRO", - "block.create.stressometer.tooltip.summary": "Misura e visualizza lo _stress_ _complessivo_ della rete cinetica collegata. Supporta _comparatori_ _redstone_.", - "block.create.stressometer.tooltip.condition1": "Quando ruotato", - "block.create.stressometer.tooltip.behaviour1": "Indica un colore corrispondente al livello di stress. Le _reti_ _troppo_ _stressate_ cesseranno di muoversi. Lo stress può essere alleviato aggiungendo più _fonti_ _di_ _rotazione_ alla rete.", - - "item.create.sand_paper.tooltip": "CARTA VETRATA", - "item.create.sand_paper.tooltip.summary": "Una superficie di carta ruvida che può essere usata per _levigare_. Può essere applicata automaticamente usando l'installatore.", - "item.create.sand_paper.tooltip.condition1": "Quando utilizzata", - "item.create.sand_paper.tooltip.behaviour1": "Applica una levigatura agli oggetti tenuti in _mano secondaria_ o per _terra_ quando li si _guarda_.", - - "item.create.super_glue.tooltip": "SUPER COLLA", - "item.create.super_glue.tooltip.summary": "Incolla un blocco ad un altro, rendendoli inseparabili.", - "item.create.super_glue.tooltip.condition1": "Quando utilizzata", - "item.create.super_glue.tooltip.behaviour1": "_Appiccica_ la _facciata cliccata_. I blocchi attaccati alle facciate appiccicose verranno _mossi_ insieme a _pistoni meccanici_, _supporti_ e altri controlli.", - "item.create.super_glue.tooltip.condition2": "In mano secondaria", - "item.create.super_glue.tooltip.behaviour2": "_Attacca automaticamente_ i blocchi piazzati dalla mano principale al _lato_ _contro_ cui sono stati _piazzati_.", - - "item.create.builders_tea.tooltip": "TÈ DEL COSTRUTTORE", - "item.create.builders_tea.tooltip.summary": "La bevanda perfetta per iniziare la giornata - _motiva_ e _satura._", - - "item.create.refined_radiance.tooltip": "RADIANCE RAFFINATA", - "item.create.refined_radiance.tooltip.summary": "Un materiale cromatico forgiato dalla _luce_ _assorbita_.", - - "item.create.shadow_steel.tooltip": "ACCIAIO OSCURO", - "item.create.shadow_steel.tooltip.summary": "Un materiale cromatico forgiato _nel_ _vuoto_.", - - "item.create.minecart_coupling.tooltip": "AGGANCIO PER CARRELLI DA MINIERA", - "item.create.minecart_coupling.tooltip.summary": "_Concatena_ i _carrelli da miniera_ le _macchine su carrello_ insieme per formare un treno maestoso.", - "item.create.minecart_coupling.tooltip.condition1": "Quando usato su un carrello da miniera", - "item.create.minecart_coupling.tooltip.behaviour1": "_Concatena_ due carrelli insieme, provando a tenerli uniti a una _distanza costante_ mentre si muovono.", - - "item.create.crafter_slot_cover.tooltip": "RIVESTIMENTO PER SLOT DA COSTRUZIONE", - "item.create.crafter_slot_cover.tooltip.summary": "Utilizzato per coprire uno slot vuoto in un _costruttore_ _meccanico_ in una ricetta. I costruttori non devono necessariamente formare una griglia quadrata completa. Questo è utile quando ci sono ricette in cui gli _ingredienti_ _sono_ _in_ _diagonale_ tra loro.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Si prega di tenere questo oggetto lontano dai bambini.", - "create.tooltip.randomWipDescription1": "Un cucciolo di panda muore ogni volta che usi questo oggetto. Ogni. Volta.", - "create.tooltip.randomWipDescription2": "Da utilizzare a proprio rischio.", - "create.tooltip.randomWipDescription3": "Questo non è l'oggetto che stai cercando, *le dita si muovono* per favore stai in disparte.", - "create.tooltip.randomWipDescription4": "Questo oggetto si autodistruggerà tra 10 secondi. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Credimi, è inutile.", - "create.tooltip.randomWipDescription6": "Utilizzando questo articolo, acconsenti al nostro disclaimer e accetti i suoi termini.", - "create.tooltip.randomWipDescription7": "Questo forse non fa per te. Che ne dici di quello?", - "create.tooltip.randomWipDescription8": "Usalo e rimpiangi immediatamente la tua decisione.", - - "_": "Thank you for translating Create!" - -} diff --git a/src/main/resources/assets/create/lang/ja_jp.json b/src/main/resources/assets/create/lang/ja_jp.json deleted file mode 100644 index 6e05619b5..000000000 --- a/src/main/resources/assets/create/lang/ja_jp.json +++ /dev/null @@ -1,2134 +0,0 @@ -{ - - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "アカシアの窓", - "block.create.acacia_window_pane": "アカシアの窓パネル", - "block.create.adjustable_chain_gearshift": "可変チェーンギアシフト", - "block.create.adjustable_crate": "可変クレート", - "block.create.adjustable_pulse_repeater": "可変パルスリピーター", - "block.create.adjustable_repeater": "可変リピーター", - "block.create.analog_lever": "アナログレバー", - "block.create.andesite_belt_funnel": "安山岩のベルトファンネル", - "block.create.andesite_bricks": "安山岩レンガ", - "block.create.andesite_bricks_slab": "安山岩レンガのハーフブロック", - "block.create.andesite_bricks_stairs": "安山岩レンガの階段", - "block.create.andesite_bricks_wall": "安山岩レンガの壁", - "block.create.andesite_casing": "安山岩ケーシング", - "block.create.andesite_cobblestone": "安山岩の丸石", - "block.create.andesite_cobblestone_slab": "安山岩の丸石のハーフブロック", - "block.create.andesite_cobblestone_stairs": "安山岩の丸石の階段", - "block.create.andesite_cobblestone_wall": "安山岩の丸石の壁", - "block.create.andesite_encased_shaft": "安山岩のケース入りシャフト", - "block.create.andesite_funnel": "安山岩ファンネル", - "block.create.andesite_pillar": "安山岩の柱", - "block.create.andesite_tunnel": "安山岩トンネル", - "block.create.basin": "鉢", - "block.create.belt": "メカニカルベルト", - "block.create.birch_window": "シラカバの窓", - "block.create.birch_window_pane": "シラカバの窓パネル", - "block.create.black_sail": "黒色の帆", - "block.create.black_seat": "黒色のシート", - "block.create.black_valve_handle": "黒色のバルブハンドル", - "block.create.blaze_burner": "ブレイズバーナー", - "block.create.blue_sail": "青色の帆", - "block.create.blue_seat": "青色のシート", - "block.create.blue_valve_handle": "青色のバルブハンドル", - "block.create.brass_belt_funnel": "真鍮のベルトファンネル", - "block.create.brass_block": "真鍮ブロック", - "block.create.brass_casing": "真鍮ケーシング", - "block.create.brass_encased_shaft": "真鍮のケース入りシャフト", - "block.create.brass_funnel": "真鍮ファンネル", - "block.create.brass_tunnel": "真鍮トンネル", - "block.create.brown_sail": "茶色の帆", - "block.create.brown_seat": "茶色のシート", - "block.create.brown_valve_handle": "茶色のバルブハンドル", - "block.create.cart_assembler": "トロッコアセンブラ", - "block.create.chiseled_dark_scoria": "模様入りのダークスコリア", - "block.create.chiseled_dolomite": "模様入りの苦灰岩", - "block.create.chiseled_gabbro": "模様入りの斑れい岩", - "block.create.chiseled_limestone": "模様入りの石灰岩", - "block.create.chiseled_scoria": "模様入りのスコリア", - "block.create.chiseled_weathered_limestone": "模様入りの風化した石灰岩", - "block.create.chocolate": "チョコレート", - "block.create.chute": "シュート", - "block.create.clockwork_bearing": "時計仕掛けのベアリング", - "block.create.clutch": "クラッチ", - "block.create.cogwheel": "歯車", - "block.create.content_observer": "コンテンツオブザーバー", - "block.create.controller_rail": "コントローラーレール", - "block.create.copper_block": "銅ブロック", - "block.create.copper_casing": "銅ケーシング", - "block.create.copper_ore": "銅鉱石", - "block.create.copper_shingles": "銅の屋根板", - "block.create.copper_tiles": "銅のタイル", - "block.create.copper_valve_handle": "銅のバルブハンドル", - "block.create.creative_crate": "クリエティブクレート", - "block.create.creative_fluid_tank": "クリエイティブ液体タンク", - "block.create.creative_motor": "クリエイティブモーター", - "block.create.crimson_window": "真紅の窓", - "block.create.crimson_window_pane": "真紅の窓パネル", - "block.create.crushing_wheel": "破砕ホイール", - "block.create.crushing_wheel_controller": "破砕ホイールコントローラー", - "block.create.cuckoo_clock": "鳩時計", - "block.create.cyan_sail": "水色の帆", - "block.create.cyan_seat": "水色のシート", - "block.create.cyan_valve_handle": "水色のバルブハンドル", - "block.create.dark_oak_window": "ダークオークの窓", - "block.create.dark_oak_window_pane": "ダークオークの窓パネル", - "block.create.dark_scoria": "ダークスコリア", - "block.create.dark_scoria_bricks": "ダークスコリアレンガ", - "block.create.dark_scoria_bricks_slab": "ダークスコリアレンガのハーフブロック", - "block.create.dark_scoria_bricks_stairs": "ダークスコリアレンガの階段", - "block.create.dark_scoria_bricks_wall": "ダークスコリアレンガの壁", - "block.create.dark_scoria_cobblestone": "ダークスコリアの丸石", - "block.create.dark_scoria_cobblestone_slab": "ダークスコリアの丸石のハーフブロック", - "block.create.dark_scoria_cobblestone_stairs": "ダークスコリアの丸石の階段", - "block.create.dark_scoria_cobblestone_wall": "ダークスコリアの丸石の壁", - "block.create.dark_scoria_pillar": "ダークスコリアの柱", - "block.create.deployer": "デプロイヤー", - "block.create.depot": "デポ", - "block.create.diorite_bricks": "閃緑岩レンガ", - "block.create.diorite_bricks_slab": "閃緑岩レンガのハーフブロック", - "block.create.diorite_bricks_stairs": "閃緑岩レンガの階段", - "block.create.diorite_bricks_wall": "閃緑岩レンガの壁", - "block.create.diorite_cobblestone": "閃緑岩の丸石", - "block.create.diorite_cobblestone_slab": "閃緑岩の丸石のハーフブロック", - "block.create.diorite_cobblestone_stairs": "閃緑岩の丸石の階段", - "block.create.diorite_cobblestone_wall": "閃緑岩の丸石の壁", - "block.create.diorite_pillar": "閃緑岩の柱", - "block.create.dolomite": "苦灰岩", - "block.create.dolomite_bricks": "苦灰岩レンガ", - "block.create.dolomite_bricks_slab": "苦灰岩レンガのハーフブロック", - "block.create.dolomite_bricks_stairs": "苦灰岩レンガの階段", - "block.create.dolomite_bricks_wall": "苦灰岩レンガの壁", - "block.create.dolomite_cobblestone": "苦灰岩の丸石", - "block.create.dolomite_cobblestone_slab": "苦灰岩の丸石のハーフブロック", - "block.create.dolomite_cobblestone_stairs": "苦灰岩の丸石の階段", - "block.create.dolomite_cobblestone_wall": "苦灰岩の丸石の壁", - "block.create.dolomite_pillar": "苦灰岩の柱", - "block.create.encased_chain_drive": "ケース入りチェーンドライブ", - "block.create.encased_fan": "ケース入りファン", - "block.create.encased_fluid_pipe": "ケース入り液体パイプ", - "block.create.fancy_andesite_bricks": "装飾された安山岩レンガ", - "block.create.fancy_andesite_bricks_slab": "装飾された安山岩レンガのハーフブロック", - "block.create.fancy_andesite_bricks_stairs": "装飾された安山岩レンガの階段", - "block.create.fancy_andesite_bricks_wall": "装飾された安山岩レンガの壁", - "block.create.fancy_dark_scoria_bricks": "装飾されたダークスコリアレンガ", - "block.create.fancy_dark_scoria_bricks_slab": "装飾されたダークスコリアレンガのハーフブロック", - "block.create.fancy_dark_scoria_bricks_stairs": "装飾されたダークスコリアレンガの階段", - "block.create.fancy_dark_scoria_bricks_wall": "装飾されたダークスコリアレンガの壁", - "block.create.fancy_diorite_bricks": "装飾された閃緑岩レンガ", - "block.create.fancy_diorite_bricks_slab": "装飾された閃緑岩レンガのハーフブロック", - "block.create.fancy_diorite_bricks_stairs": "装飾された閃緑岩レンガの階段", - "block.create.fancy_diorite_bricks_wall": "装飾された閃緑岩レンガの壁", - "block.create.fancy_dolomite_bricks": "装飾された苦灰岩レンガ", - "block.create.fancy_dolomite_bricks_slab": "装飾された苦灰岩レンガのハーフブロック", - "block.create.fancy_dolomite_bricks_stairs": "装飾された苦灰岩レンガの階段", - "block.create.fancy_dolomite_bricks_wall": "装飾された苦灰岩レンガの壁", - "block.create.fancy_gabbro_bricks": "装飾された斑れい岩レンガ", - "block.create.fancy_gabbro_bricks_slab": "装飾された斑れい岩レンガのハーフブロック", - "block.create.fancy_gabbro_bricks_stairs": "装飾された斑れい岩レンガの階段", - "block.create.fancy_gabbro_bricks_wall": "装飾された斑れい岩レンガの壁", - "block.create.fancy_granite_bricks": "装飾された花崗岩レンガ", - "block.create.fancy_granite_bricks_slab": "装飾された花崗岩レンガのハーフブロック", - "block.create.fancy_granite_bricks_stairs": "装飾された花崗岩レンガの階段", - "block.create.fancy_granite_bricks_wall": "装飾された花崗岩レンガの壁", - "block.create.fancy_limestone_bricks": "装飾された石灰岩レンガ", - "block.create.fancy_limestone_bricks_slab": "装飾された石灰岩レンガのハーフブロック", - "block.create.fancy_limestone_bricks_stairs": "装飾された石灰岩レンガの階段", - "block.create.fancy_limestone_bricks_wall": "装飾された石灰岩レンガの壁", - "block.create.fancy_scoria_bricks": "装飾されたスコリアレンガ", - "block.create.fancy_scoria_bricks_slab": "装飾されたスコリアレンガのハーフブロック", - "block.create.fancy_scoria_bricks_stairs": "装飾されたスコリアレンガの階段", - "block.create.fancy_scoria_bricks_wall": "装飾されたスコリアレンガの壁", - "block.create.fancy_weathered_limestone_bricks": "装飾された風化した石灰岩レンガ", - "block.create.fancy_weathered_limestone_bricks_slab": "装飾された風化した石灰岩レンガのハーフブロック", - "block.create.fancy_weathered_limestone_bricks_stairs": "装飾された風化した石灰岩レンガの階段", - "block.create.fancy_weathered_limestone_bricks_wall": "装飾された風化した石灰岩レンガの壁", - "block.create.fluid_pipe": "液体パイプ", - "block.create.fluid_tank": "液体タンク", - "block.create.fluid_valve": "液体バルブ", - "block.create.flywheel": "勢車", - "block.create.framed_glass": "ガラス窓", - "block.create.framed_glass_pane": "ガラス窓板", - "block.create.furnace_engine": "かまどエンジン", - "block.create.gabbro": "斑れい岩", - "block.create.gabbro_bricks": "斑れい岩レンガ", - "block.create.gabbro_bricks_slab": "斑れい岩レンガのハーフブロック", - "block.create.gabbro_bricks_stairs": "斑れい岩レンガの階段", - "block.create.gabbro_bricks_wall": "斑れい岩レンガの壁", - "block.create.gabbro_cobblestone": "斑れい岩の丸石", - "block.create.gabbro_cobblestone_slab": "斑れい岩の丸石のハーフブロック", - "block.create.gabbro_cobblestone_stairs": "斑れい岩の丸石の階段", - "block.create.gabbro_cobblestone_wall": "斑れい岩の丸石の壁", - "block.create.gabbro_pillar": "斑れい岩の柱", - "block.create.gantry_carriage": "ガントリーキャリッジ", - "block.create.gantry_shaft": "ガントリーシャフト", - "block.create.gearbox": "ギアボックス", - "block.create.gearshift": "ギアシフト", - "block.create.glass_fluid_pipe": "ガラスの液体パイプ", - "block.create.granite_bricks": "花崗岩レンガ", - "block.create.granite_bricks_slab": "花崗岩レンガのハーフブロック", - "block.create.granite_bricks_stairs": "花崗岩レンガの階段", - "block.create.granite_bricks_wall": "花崗岩レンガの壁", - "block.create.granite_cobblestone": "花崗岩の丸石", - "block.create.granite_cobblestone_slab": "花崗岩の丸石のハーフブロック", - "block.create.granite_cobblestone_stairs": "花崗岩の丸石の階段", - "block.create.granite_cobblestone_wall": "花崗岩の丸石の壁", - "block.create.granite_pillar": "花崗岩の柱", - "block.create.gray_sail": "灰色の帆", - "block.create.gray_seat": "灰色のシート", - "block.create.gray_valve_handle": "灰色のバルブハンドル", - "block.create.green_sail": "緑色の帆", - "block.create.green_seat": "緑色のシート", - "block.create.green_valve_handle": "緑色のバルブハンドル", - "block.create.hand_crank": "ハンドクランク", - "block.create.honey": "ハチミツ", - "block.create.horizontal_framed_glass": "横型ガラス窓", - "block.create.horizontal_framed_glass_pane": "横型ガラス窓板", - "block.create.hose_pulley": "ホースプーリー", - "block.create.item_drain": "アイテム排液口", - "block.create.jungle_window": "ジャングルの窓", - "block.create.jungle_window_pane": "ジャングルの窓パネル", - "block.create.large_cogwheel": "大きな歯車", - "block.create.layered_andesite": "安山岩の組石", - "block.create.layered_dark_scoria": "ダークスコリアの組石", - "block.create.layered_diorite": "閃緑岩の組石", - "block.create.layered_dolomite": "苦灰岩の組石", - "block.create.layered_gabbro": "斑れい岩の組石", - "block.create.layered_granite": "花崗岩の組石", - "block.create.layered_limestone": "石灰岩の組石", - "block.create.layered_scoria": "スコリアの組石", - "block.create.layered_weathered_limestone": "風化した石灰岩の組石", - "block.create.light_blue_sail": "空色の帆", - "block.create.light_blue_seat": "空色のシート", - "block.create.light_blue_valve_handle": "空色のバルブハンドル", - "block.create.light_gray_sail": "薄灰色の帆", - "block.create.light_gray_seat": "薄灰色のシート", - "block.create.light_gray_valve_handle": "薄灰色のバルブハンドル", - "block.create.lime_sail": "黄緑色の帆", - "block.create.lime_seat": "黄緑色のシート", - "block.create.lime_valve_handle": "黄緑色のバルブハンドル", - "block.create.limesand": "石灰砕砂", - "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩レンガ", - "block.create.limestone_bricks_slab": "石灰岩レンガのハーフブロック", - "block.create.limestone_bricks_stairs": "石灰岩レンガの階段", - "block.create.limestone_bricks_wall": "石灰岩レンガの壁", - "block.create.limestone_cobblestone": "石灰岩の丸石", - "block.create.limestone_cobblestone_slab": "石灰岩の丸石のハーフブロック", - "block.create.limestone_cobblestone_stairs": "石灰岩の丸石の階段", - "block.create.limestone_cobblestone_wall": "石灰岩の丸石の壁", - "block.create.limestone_pillar": "石灰岩の柱", - "block.create.linear_chassis": "リニアシャーシ", - "block.create.lit_blaze_burner": "燃焼中のブレイズバーナー", - "block.create.magenta_sail": "赤紫色の帆", - "block.create.magenta_seat": "赤紫色のシート", - "block.create.magenta_valve_handle": "赤紫色のバルブハンドル", - "block.create.mechanical_arm": "メカニカルアーム", - "block.create.mechanical_bearing": "メカニカルベアリング", - "block.create.mechanical_crafter": "メカニカルクラフター", - "block.create.mechanical_drill": "メカニカルドリル", - "block.create.mechanical_harvester": "メカニカルハーベスター", - "block.create.mechanical_mixer": "メカニカルミキサー", - "block.create.mechanical_piston": "メカニカルピストン", - "block.create.mechanical_piston_head": "メカニカルピストンヘッド", - "block.create.mechanical_plough": "メカニカルプラウ", - "block.create.mechanical_press": "メカニカルプレス", - "block.create.mechanical_pump": "メカニカルポンプ", - "block.create.mechanical_saw": "メカニカルソー", - "block.create.metal_bracket": "金属ブラケット", - "block.create.millstone": "石臼", - "block.create.minecart_anchor": "トロッコアンカー", - "block.create.mossy_andesite": "苔むした安山岩", - "block.create.mossy_dark_scoria": "苔むしたダークスコリア", - "block.create.mossy_diorite": "苔むした閃緑岩", - "block.create.mossy_dolomite": "苔むした苦灰岩", - "block.create.mossy_gabbro": "苔むした斑れい岩", - "block.create.mossy_granite": "苔むした花崗岩", - "block.create.mossy_limestone": "苔むした石灰岩", - "block.create.mossy_scoria": "苔むしたスコリア", - "block.create.mossy_weathered_limestone": "苔むした風化した石灰岩", - "block.create.mysterious_cuckoo_clock": "鳩時計", - "block.create.natural_scoria": "天然スコリア", - "block.create.nixie_tube": "ニキシー管", - "block.create.nozzle": "ノズル", - "block.create.oak_window": "オークの窓", - "block.create.oak_window_pane": "オークの窓パネル", - "block.create.orange_sail": "橙色の帆", - "block.create.orange_seat": "橙色のシート", - "block.create.orange_valve_handle": "橙色のバルブハンドル", - "block.create.ornate_iron_window": "鉄の装飾ガラス", - "block.create.ornate_iron_window_pane": "鉄の装飾ガラスパネル", - "block.create.overgrown_andesite": "生い茂った安山岩", - "block.create.overgrown_dark_scoria": "生い茂ったダークスコリア", - "block.create.overgrown_diorite": "生い茂った閃緑岩", - "block.create.overgrown_dolomite": "生い茂った苦灰岩", - "block.create.overgrown_gabbro": "生い茂った斑れい岩", - "block.create.overgrown_granite": "生い茂った花崗岩", - "block.create.overgrown_limestone": "生い茂った石灰岩", - "block.create.overgrown_scoria": "生い茂ったスコリア", - "block.create.overgrown_weathered_limestone": "生い茂った風化した石灰岩", - "block.create.paved_andesite": "舗装された安山岩", - "block.create.paved_andesite_slab": "舗装された安山岩のハーフブロック", - "block.create.paved_andesite_stairs": "舗装された安山岩の階段", - "block.create.paved_andesite_wall": "舗装された安山岩の壁", - "block.create.paved_dark_scoria": "舗装されたダークスコリア", - "block.create.paved_dark_scoria_slab": "舗装されたダークスコリアのハーフブロック", - "block.create.paved_dark_scoria_stairs": "舗装されたダークスコリアの階段", - "block.create.paved_dark_scoria_wall": "舗装されたダークスコリアの壁", - "block.create.paved_diorite": "舗装された閃緑岩", - "block.create.paved_diorite_slab": "舗装された閃緑岩のハーフブロック", - "block.create.paved_diorite_stairs": "舗装された閃緑岩の階段", - "block.create.paved_diorite_wall": "舗装された閃緑岩の壁", - "block.create.paved_dolomite": "舗装された苦灰岩", - "block.create.paved_dolomite_slab": "舗装された苦灰岩のハーフブロック", - "block.create.paved_dolomite_stairs": "舗装された苦灰岩の階段", - "block.create.paved_dolomite_wall": "舗装された苦灰岩の壁", - "block.create.paved_gabbro": "舗装された斑れい岩", - "block.create.paved_gabbro_slab": "舗装された斑れい岩のハーフブロック", - "block.create.paved_gabbro_stairs": "舗装された斑れい岩の階段", - "block.create.paved_gabbro_wall": "舗装された斑れい岩の壁", - "block.create.paved_granite": "舗装された花崗岩", - "block.create.paved_granite_slab": "舗装された花崗岩のハーフブロック", - "block.create.paved_granite_stairs": "舗装された花崗岩の階段", - "block.create.paved_granite_wall": "舗装された花崗岩の壁", - "block.create.paved_limestone": "舗装された石灰岩", - "block.create.paved_limestone_slab": "舗装された石灰岩のハーフブロック", - "block.create.paved_limestone_stairs": "舗装された石灰岩の階段", - "block.create.paved_limestone_wall": "舗装された石灰岩の壁", - "block.create.paved_scoria": "舗装されたスコリア", - "block.create.paved_scoria_slab": "舗装されたスコリアのハーフブロック", - "block.create.paved_scoria_stairs": "舗装されたスコリアの階段", - "block.create.paved_scoria_wall": "舗装されたスコリアの壁", - "block.create.paved_weathered_limestone": "舗装された風化した石灰岩", - "block.create.paved_weathered_limestone_slab": "舗装された風化した石灰岩のハーフブロック", - "block.create.paved_weathered_limestone_stairs": "舗装された風化した石灰岩の階段", - "block.create.paved_weathered_limestone_wall": "舗装された風化した石灰岩の壁", - "block.create.pink_sail": "桃色の帆", - "block.create.pink_seat": "桃色のシート", - "block.create.pink_valve_handle": "桃色のバルブハンドル", - "block.create.piston_extension_pole": "ピストン延長ポール", - "block.create.polished_dark_scoria": "磨かれたダークスコリア", - "block.create.polished_dark_scoria_slab": "磨かれたダークスコリアのハーフブロック", - "block.create.polished_dark_scoria_stairs": "磨かれたダークスコリアの階段", - "block.create.polished_dark_scoria_wall": "磨かれたダークスコリアの壁", - "block.create.polished_dolomite": "磨かれた苦灰岩", - "block.create.polished_dolomite_slab": "磨かれた苦灰岩のハーフブロック", - "block.create.polished_dolomite_stairs": "磨かれた苦灰岩の階段", - "block.create.polished_dolomite_wall": "磨かれた苦灰岩の壁", - "block.create.polished_gabbro": "磨かれた斑れい岩", - "block.create.polished_gabbro_slab": "磨かれた斑れい岩のハーフブロック", - "block.create.polished_gabbro_stairs": "磨かれた斑れい岩の階段", - "block.create.polished_gabbro_wall": "磨かれた斑れい岩の壁", - "block.create.polished_limestone": "磨かれた石灰岩", - "block.create.polished_limestone_slab": "磨かれた石灰岩のハーフブロック", - "block.create.polished_limestone_stairs": "磨かれた石灰岩の階段", - "block.create.polished_limestone_wall": "磨かれた石灰岩の壁", - "block.create.polished_scoria": "磨かれたスコリア", - "block.create.polished_scoria_slab": "磨かれたスコリアのハーフブロック", - "block.create.polished_scoria_stairs": "磨かれたスコリアの階段", - "block.create.polished_scoria_wall": "磨かれたスコリアの壁", - "block.create.polished_weathered_limestone": "磨かれた風化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨かれた風化石灰岩のハーフブロック", - "block.create.polished_weathered_limestone_stairs": "磨かれた風化した石灰岩の階段", - "block.create.polished_weathered_limestone_wall": "磨かれた風化した石灰岩の壁", - "block.create.portable_fluid_interface": "ポータブル液体インターフェース", - "block.create.portable_storage_interface": "ポータブルストレージインターフェース", - "block.create.powered_latch": "パワードラッチ", - "block.create.powered_toggle_latch": "パワードトグルラッチ", - "block.create.pulley_magnet": "プーリーマグネット", - "block.create.pulse_repeater": "パルスリピーター", - "block.create.purple_sail": "紫色の帆", - "block.create.purple_seat": "紫色のシート", - "block.create.purple_valve_handle": "紫色のバルブハンドル", - "block.create.radial_chassis": "ラジアルシャーシ", - "block.create.red_sail": "赤色の帆", - "block.create.red_seat": "赤色のシート", - "block.create.red_valve_handle": "赤色のバルブハンドル", - "block.create.redstone_contact": "レッドストーンコンタクト", - "block.create.redstone_link": "レッドストーンリンク", - "block.create.refined_radiance_casing": "光輝ケーシング", - "block.create.reinforced_rail": "補強レール", - "block.create.rope": "ロープ", - "block.create.rope_pulley": "ローププーリー", - "block.create.rotation_speed_controller": "回転速度コントローラー", - "block.create.sail_frame": "帆のフレーム", - "block.create.schematic_table": "概略図テーブル", - "block.create.schematicannon": "概略図砲", - "block.create.scoria": "スコリア", - "block.create.scoria_bricks": "スコリアレンガ", - "block.create.scoria_bricks_slab": "スコリアレンガのハーフブロック", - "block.create.scoria_bricks_stairs": "スコリアレンガの階段", - "block.create.scoria_bricks_wall": "スコリアレンガの壁", - "block.create.scoria_cobblestone": "スコリアの丸石", - "block.create.scoria_cobblestone_slab": "スコリアの丸石のハーフブロック", - "block.create.scoria_cobblestone_stairs": "スコリアの丸石の階段", - "block.create.scoria_cobblestone_wall": "スコリアの丸石の壁", - "block.create.scoria_pillar": "スコリアの柱", - "block.create.secondary_linear_chassis": "セカンダリリニアシャーシ", - "block.create.sequenced_gearshift": "シーケンスギアシフト", - "block.create.shadow_steel_casing": "シャドウケーシング", - "block.create.shaft": "シャフト", - "block.create.smart_chute": "スマートシュート", - "block.create.smart_fluid_pipe": "スマート液体パイプ", - "block.create.speedometer": "速度メーター", - "block.create.spout": "アイテム注液口", - "block.create.spruce_window": "マツの窓", - "block.create.spruce_window_pane": "マツの窓パネル", - "block.create.sticker": "スティッカー", - "block.create.sticky_mechanical_piston": "粘着メカニカルピストン", - "block.create.stockpile_switch": "在庫スイッチ", - "block.create.stressometer": "応力メーター", - "block.create.tiled_glass": "タイルガラス", - "block.create.tiled_glass_pane": "タイルガラス板", - "block.create.turntable": "ターンテーブル", - "block.create.vertical_framed_glass": "縦型ガラス窓", - "block.create.vertical_framed_glass_pane": "縦型ガラス窓板", - "block.create.warped_window": "歪んだ窓", - "block.create.warped_window_pane": "歪んだ窓パネル", - "block.create.water_wheel": "水車", - "block.create.weathered_limestone": "風化した石灰岩", - "block.create.weathered_limestone_bricks": "風化した石灰岩レンガ", - "block.create.weathered_limestone_bricks_slab": "風化した石灰岩レンガのハーフブロック", - "block.create.weathered_limestone_bricks_stairs": "風化した石灰岩レンガの階段", - "block.create.weathered_limestone_bricks_wall": "風化した石灰岩レンガの壁", - "block.create.weathered_limestone_cobblestone": "風化した石灰岩の丸石", - "block.create.weathered_limestone_cobblestone_slab": "風化した石灰岩の丸石のハーフブロック", - "block.create.weathered_limestone_cobblestone_stairs": "風化した石灰岩の丸石の階段", - "block.create.weathered_limestone_cobblestone_wall": "風化した石灰岩の丸石の壁", - "block.create.weathered_limestone_pillar": "風化した石灰岩の柱", - "block.create.weighted_ejector": "重量射出機", - "block.create.white_sail": "白色の帆", - "block.create.white_seat": "白色のシート", - "block.create.white_valve_handle": "白色のバルブハンドル", - "block.create.windmill_bearing": "風車ベアリング", - "block.create.wooden_bracket": "木製ブラケット", - "block.create.yellow_sail": "黄色の帆", - "block.create.yellow_seat": "黄色のシート", - "block.create.yellow_valve_handle": "黄色のバルブハンドル", - "block.create.zinc_block": "亜鉛ブロック", - "block.create.zinc_ore": "亜鉛鉱石", - - "entity.create.contraption": "からくり", - "entity.create.gantry_contraption": "ガントリーからくり", - "entity.create.seat": "シート", - "entity.create.stationary_contraption": "付設からくり", - "entity.create.super_glue": "超粘着剤", - - "fluid.create.milk": "牛乳", - "fluid.create.potion": "ポーション", - "fluid.create.tea": "建築家のお茶", - - "item.create.andesite_alloy": "安山岩合金", - "item.create.attribute_filter": "属性フィルター", - "item.create.bar_of_chocolate": "チョコレートバー", - "item.create.belt_connector": "メカニカルベルト", - "item.create.blaze_cake": "ブレイズケーキ", - "item.create.blaze_cake_base": "ブレイズケーキの型", - "item.create.brass_hand": "真鍮の手", - "item.create.brass_ingot": "真鍮インゴット", - "item.create.brass_nugget": "真鍮塊", - "item.create.brass_sheet": "真鍮シート", - "item.create.builders_tea": "建築家のお茶", - "item.create.chest_minecart_contraption": "からくりチェスト付きトロッコ", - "item.create.chocolate_bucket": "チョコレート入りバケツ", - "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", - "item.create.chromatic_compound": "色彩の化合物", - "item.create.cinder_flour": "ネザーラックの粉", - "item.create.copper_ingot": "銅インゴット", - "item.create.copper_nugget": "銅塊", - "item.create.copper_sheet": "銅板", - "item.create.crafter_slot_cover": "クラフタースロットカバー", - "item.create.crushed_aluminum_ore": "砕いたアルミニウム鉱石", - "item.create.crushed_brass": "砕いた真鍮", - "item.create.crushed_copper_ore": "砕いた銅鉱石", - "item.create.crushed_gold_ore": "砕いた金鉱石", - "item.create.crushed_iron_ore": "砕いた鉄鉱石", - "item.create.crushed_lead_ore": "砕いた鉛鉱石", - "item.create.crushed_nickel_ore": "砕いたニッケル鉱石", - "item.create.crushed_osmium_ore": "砕いたオスミウム鉱石", - "item.create.crushed_platinum_ore": "砕いたプラチナ鉱石", - "item.create.crushed_quicksilver_ore": "砕いた水銀鉱石", - "item.create.crushed_silver_ore": "砕いた銀鉱石", - "item.create.crushed_tin_ore": "砕いた錫鉱石", - "item.create.crushed_uranium_ore": "砕いたウラン鉱石", - "item.create.crushed_zinc_ore": "砕いた亜鉛鉱石", - "item.create.deforester": "デフォレスター", - "item.create.dough": "生地", - "item.create.electron_tube": "電子管", - "item.create.empty_blaze_burner": "空のブレイズバーナー", - "item.create.empty_schematic": "空の概略図", - "item.create.extendo_grip": "マジックハンド", - "item.create.filter": "フィルター", - "item.create.furnace_minecart_contraption": "からくりかまど付きトロッコ", - "item.create.goggles": "エンジニアのゴーグル", - "item.create.golden_sheet": "金板", - "item.create.handheld_blockzapper": "携帯型ブロックザッパー", - "item.create.handheld_worldshaper": "携帯型ワールドシェーパー", - "item.create.honey_bucket": "ハチミツ入りバケツ", - "item.create.honeyed_apple": "リンゴのハチミツかけ", - "item.create.integrated_circuit": "集積回路", - "item.create.iron_sheet": "鉄板", - "item.create.lapis_sheet": "ラピスラズリ板", - "item.create.minecart_contraption": "からくり付きトロッコ", - "item.create.minecart_coupling": "トロッコ連結器", - "item.create.polished_rose_quartz": "磨かれたローズクォーツ", - "item.create.powdered_obsidian": "黒曜石の粉", - "item.create.propeller": "プロペラ", - "item.create.red_sand_paper": "赤い紙やすり", - "item.create.refined_radiance": "高貴な光輝", - "item.create.rose_quartz": "ローズクォーツ", - "item.create.sand_paper": "紙やすり", - "item.create.schematic": "概略図", - "item.create.schematic_and_quill": "概略図と羽根ペン", - "item.create.shadow_steel": "シャドウスチール", - "item.create.super_glue": "超粘着剤", - "item.create.sweet_roll": "スイートロール", - "item.create.tree_fertilizer": "樹木の肥料", - "item.create.vertical_gearbox": "垂直ギアボックス", - "item.create.wand_of_symmetry": "対称の杖", - "item.create.wheat_flour": "小麦粉", - "item.create.whisk": "泡立て器", - "item.create.wrench": "レンチ", - "item.create.zinc_ingot": "亜鉛インゴット", - "item.create.zinc_nugget": "亜鉛塊", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Createへようこそ", - "advancement.create.root.desc": "素晴らしいからくり機構を作る時間だ!", - "advancement.create.andesite_alloy": "大いに押韻", - "advancement.create.andesite_alloy.desc": "Createの素材には変な名前がついています、安山岩合金もその一つです", - "advancement.create.its_alive": "こいつ…動くぞ!", - "advancement.create.its_alive.desc": "機械の回転を初めて見る", - "advancement.create.shifting_gears": "ギアシフト!", - "advancement.create.shifting_gears.desc": "大きい歯車と小さい歯車を噛み合わせて回転速度を変更する", - "advancement.create.overstressed": "超過応力", - "advancement.create.overstressed.desc": "応力の限界を肌で感じる", - "advancement.create.belt": "コンブ駆動", - "advancement.create.belt.desc": "2つのシャフトをメカニカルベルトで繋ぐ", - "advancement.create.tunnel": "隠せ!", - "advancement.create.tunnel.desc": "メカニカルベルトをトンネルで装飾する", - "advancement.create.splitter_tunnel": "困難は分割せよ", - "advancement.create.splitter_tunnel.desc": "真鍮トンネルで仕分け機を作る", - "advancement.create.chute": "転がり落ちる", - "advancement.create.chute.desc": "メカニカルベルトの垂直バージョン、シュートを設置する", - "advancement.create.upward_chute": "空への誘い", - "advancement.create.upward_chute.desc": "落ちているアイテムがファンで駆動するシュートに飛んでいく様子を見る", - "advancement.create.belt_funnel": "ファンネルのぶらさがってる、ひらひらしたやつ", - "advancement.create.belt_funnel.desc": "ベルトやデポ等の上に横向きのファンネルを置き、特殊形態にする", - "advancement.create.belt_funnel_kiss": "オウムと羽ばたき", - "advancement.create.belt_funnel_kiss.desc": "2つのベルトに載せたファンネルにキスをさせる", - "advancement.create.fan": "メカニカルエアベンダー", - "advancement.create.fan.desc": "ケース入りファンから出る風に乗る", - "advancement.create.fan_lava": "地熱暖房器具", - "advancement.create.fan_lava.desc": "アイテムを精錬する熱風に巻き込まれる", - "advancement.create.fan_water": "奇妙な洗濯機", - "advancement.create.fan_water.desc": "アイテムを洗浄する涼風に巻き込まれる", - "advancement.create.fan_smoke": "メカニカルふいご", - "advancement.create.fan_smoke.desc": "アイテムを燻製する暖風に巻き込まれる", - "advancement.create.wrench": "便利に設定", - "advancement.create.wrench.desc": "からくり作りに役立つレンチを作る", - "advancement.create.goggles": "応力をこの目で", - "advancement.create.goggles.desc": "機械からより多くの情報を手に入れるために、エンジニアのゴーグルを作る", - "advancement.create.speedometer": "正確な速度は?", - "advancement.create.speedometer.desc": "動作中の速度メーターをゴーグルで見て、正確な値を読み取る", - "advancement.create.stressometer": "正確な応力は?", - "advancement.create.stressometer.desc": "動作中の応力メーターをゴーグルを通して見て、正確な値を読み取る", - "advancement.create.aesthetics": "装飾ブーム!", - "advancement.create.aesthetics.desc": "シャフト、パイプ、歯車に木製ブラケットや金属ブラケットを取り付ける", - "advancement.create.reinforced": "補強ブーム!", - "advancement.create.reinforced.desc": "シャフト、パイプ、メカニカルベルトなどにケーシングブロックを取り付ける", - "advancement.create.water_wheel": "水力を使おう", - "advancement.create.water_wheel.desc": "水車を置いて、回転させよう!", - "advancement.create.chocolate_wheel": "味わい深い原動機", - "advancement.create.chocolate_wheel.desc": "溶けたチョコレートで水車を回す", - "advancement.create.lava_wheel": "マグマ・ホイール", - "advancement.create.lava_wheel.desc": "残念、これは無理だ", - "advancement.create.cuckoo": "今がその時だ", - "advancement.create.cuckoo.desc": "鳩時計が就寝時間を告げるのを目撃する", - "advancement.create.millstone": "ポケット粉砕機", - "advancement.create.millstone.desc": "石臼を置いて、回転させる", - "advancement.create.windmill": "凱風快晴", - "advancement.create.windmill.desc": "風車を組み立てる", - "advancement.create.maxed_windmill": "雄風", - "advancement.create.maxed_windmill.desc": "最強の風車を組み立てる", - "advancement.create.andesite_casing": "安山岩の時代", - "advancement.create.andesite_casing.desc": "安山岩合金と木材を使って、基本のケーシングを作る", - "advancement.create.mechanical_drill": "固定式採掘装置", - "advancement.create.mechanical_drill.desc": "メカニカルドリルを設置して、回転させる", - "advancement.create.press": "プレスで「ドン!」", - "advancement.create.press.desc": "メカニカルプレスを稼働させて、いずれかのシートを作る", - "advancement.create.polished_rose_quartz": "ピンク色のダイヤモンド", - "advancement.create.polished_rose_quartz.desc": "紙やすりでローズクォーツをピカピカになるまで磨く", - "advancement.create.electron_tube": "ピッポッパ", - "advancement.create.electron_tube.desc": "便利な次世代の機械のために電子管を作る", - "advancement.create.mechanical_saw": "固定式伐採装置", - "advancement.create.mechanical_saw.desc": "メカニカルソーを稼働させる", - "advancement.create.basin": "お茶碗の作法", - "advancement.create.basin.desc": "鉢を設置して、アイテムを投げ入れる", - "advancement.create.mixer": "いざ混合", - "advancement.create.mixer.desc": "鉢の上にメカニカルミキサーを設置して、素材をかき混ぜる", - "advancement.create.blaze_burner": "生き生きとしたインテリア", - "advancement.create.blaze_burner.desc": "ブレイズバーナーを手に入れる", - "advancement.create.compact": "自動圧縮", - "advancement.create.compact.desc": "鉢の上にメカニカルプレスを設置して、素材を圧縮する", - "advancement.create.brass": "本物の合金", - "advancement.create.brass.desc": "砕いた銅と砕いた亜鉛を使って真鍮を作る", - "advancement.create.brass_casing": "真鍮の時代", - "advancement.create.brass_casing.desc": "新しく入手した真鍮と木材を使って、次世代のケーシングを作る", - "advancement.create.copper_casing": "銅の時代", - "advancement.create.copper_casing.desc": "銅と木材を使って銅ケーシングを作る", - "advancement.create.spout": "ぱしゃぱしゃ", - "advancement.create.spout.desc": "アイテム注液口が液体を充填している様子を見る", - "advancement.create.spout_potion": "大きな醸造台", - "advancement.create.spout_potion.desc": "アイテム注液口がポーションを瓶に詰めているところを見る", - "advancement.create.chocolate": "夢の世界", - "advancement.create.chocolate.desc": "溶けたチョコレート入りバケツを手に入れる", - "advancement.create.item_drain": "バケツをひっくり返したような", - "advancement.create.item_drain.desc": "アイテム排液口が液体アイテムを空にしている様子を見る", - "advancement.create.chained_item_drain": "鉛筆転がし!", - "advancement.create.chained_item_drain.desc": "自動化したアイテム排液口の上を転がるアイテムを見る", - "advancement.create.glass_pipe": "フロウ・スパイ", - "advancement.create.glass_pipe.desc": "まっすぐな液体パイプにレンチを使って、窓から通る液体を見る", - "advancement.create.pipe_collision": "流れを合流させるな!", - "advancement.create.pipe_collision.desc": "パイプの中で2つの液体がぶつかる様子を見よう", - "advancement.create.pipe_spill": "漏れてる!", - "advancement.create.pipe_spill.desc": "パイプの端を露出させて液体が吹き出しているところを見る", - "advancement.create.hose_pulley": "工業排水", - "advancement.create.hose_pulley.desc": "ホースプーリーを下げて、液体の放出や吸引を見る", - "advancement.create.infinite_water": "海の水ぜんぶ抜く大作戦", - "advancement.create.infinite_water.desc": "無限と言えるほどの大量の水を吸引する", - "advancement.create.infinite_lava": "星の核ぜんぶ抜く大作戦", - "advancement.create.infinite_lava.desc": "無限と言えるほどの大量の溶岩を吸引する", - "advancement.create.infinite_chocolate": "空想に溺れて", - "advancement.create.infinite_chocolate.desc": "無限と言えるほどの大量の溶けたチョコレートを吸引する", - "advancement.create.crafter": "自動作業台", - "advancement.create.crafter.desc": "メカニカルクラフターを設置して、回転力を供給する", - "advancement.create.clockwork_bearing": "時計仕掛け", - "advancement.create.clockwork_bearing.desc": "時計仕掛けのベアリングの上に構造物を組み立てる", - "advancement.create.nixie_tube": "イカした看板", - "advancement.create.nixie_tube.desc": "ニキシー管を手に入れて、設置する", - "advancement.create.deployer": "突く、置く、殴る!", - "advancement.create.deployer.desc": "自分の手と全く同じ動きをするデプロイヤーを設置して、稼働させる", - "advancement.create.speed_controller": "Engineers hate him!", - "advancement.create.speed_controller.desc": "究極の伝動機、回転速度コントローラーを設置する", - "advancement.create.flywheel": "工場の心臓部", - "advancement.create.flywheel.desc": "かまどエンジンを勢車に繋ぐ", - "advancement.create.overstress_flywheel": "ハイレベル応力", - "advancement.create.overstress_flywheel.desc": "かまどエンジンに超過応力をかける", - "advancement.create.integrated_circuit": "複素数の計算", - "advancement.create.integrated_circuit.desc": "集積回路を組み立てる", - "advancement.create.mechanical_arm": "手が離せない!", - "advancement.create.mechanical_arm.desc": "搬入元と搬出先を設定したメカニカルアームを設置して、稼働させ、あなたのために一生懸命労働している様子を見る", - "advancement.create.musical_arm": "お気に入りの曲を流して!", - "advancement.create.musical_arm.desc": "メカニカルアームがジュークボックスを使う様子を見る", - "advancement.create.arm_many_targets": "整理整頓", - "advancement.create.arm_many_targets.desc": "メカニカルアームに10ヶ所以上、搬出先を設定する", - "advancement.create.arm_blaze_burner": "燃料補給", - "advancement.create.arm_blaze_burner.desc": "メカニカルアームにブレイズバーナーの燃料補給をさせる", - "advancement.create.fist_bump": "グータッチだ、兄弟!", - "advancement.create.fist_bump.desc": "2つのデプロイヤーにグータッチさせる", - "advancement.create.crushing_wheel": "巨大な一対", - "advancement.create.crushing_wheel.desc": "より効率的に粉砕するために、破砕ホイールを作る", - "advancement.create.blaze_cake": "シュガー・ラッシュ", - "advancement.create.blaze_cake.desc": "ブレイズバーナーで特別なケーキを焼く", - "advancement.create.chromatic_compound": "二極性化合物", - "advancement.create.chromatic_compound.desc": "色彩の化合物を作る", - "advancement.create.shadow_steel": "奈落からの帰還", - "advancement.create.shadow_steel.desc": "究極の虚無、「シャドウスチール」を作る", - "advancement.create.refined_radiance": "光輝の吹入", - "advancement.create.refined_radiance.desc": "究極の色彩、「高貴な光輝」を作る", - "advancement.create.chromatic_age": "色彩の時代", - "advancement.create.chromatic_age.desc": "光と闇のケーシングを作る", - "advancement.create.zapper": "風格ある建築", - "advancement.create.zapper.desc": "建築に役立つレーザー銃、ブロックザッパーを作る", - "advancement.create.upgraded_zapper": "究極の輝き", - "advancement.create.upgraded_zapper.desc": "ブロックザッパーを最大までアップグレードする", - "advancement.create.wand_of_symmetry": "輝く鏡", - "advancement.create.wand_of_symmetry.desc": "対象の杖を作る", - "advancement.create.deforester": "輝く斧", - "advancement.create.deforester.desc": "デフォレスターを作って、地元の森に別れを告げる", - "advancement.create.extendo_grip": "ビヨヨーン!", - "advancement.create.extendo_grip.desc": "マジックハンドを手に入れる", - "advancement.create.dual_extendo_grip": "究極のビヨンビヨン時代", - "advancement.create.dual_extendo_grip.desc": "二刀流のマジックハンドで超人的なリーチを手に入れる", - "advancement.create.eob": "ベータ版はここまで", - "advancement.create.eob.desc": "今後のコンテンツにもご期待ください <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create Palettes", - - "death.attack.create.crush": "%1$s は破砕ホイールによって処理されました", - "death.attack.create.fan_fire": "%1$s は熱風で焼死した", - "death.attack.create.fan_lava": "%1$s は溶岩ファンによって焼死した", - "death.attack.create.mechanical_drill": "%1$s はメカニカルドリルに突き刺さった", - "death.attack.create.mechanical_saw": "%1$s はメカニカルソーで半分にカットされた", - "death.attack.create.cuckoo_clock_explosion": "%1$s は改ざんされた鳩時計に爆破された", - - "create.block.deployer.damage_source_name": "悪いデプロイヤー", - "create.block.cart_assembler.invalid": "トロッコアセンブラはレールの上にのみ設置できます", - - "create.recipe.crushing": "粉砕", - "create.recipe.milling": "製粉", - "create.recipe.fan_washing": "一括洗浄", - "create.recipe.fan_washing.fan": "水の奥のケース入りファン", - "create.recipe.fan_smoking": "一括燻製", - "create.recipe.fan_smoking.fan": "炎の奥のケース入りファン", - "create.recipe.fan_blasting": "一括精錬", - "create.recipe.fan_blasting.fan": "溶岩の奥のケース入りファン", - "create.recipe.pressing": "プレス", - "create.recipe.mixing": "混合", - "create.recipe.automatic_shapeless": "自動不定形クラフト", - "create.recipe.automatic_brewing": "自動醸造", - "create.recipe.packing": "圧縮", - "create.recipe.automatic_packing": "自動圧縮クラフト", - "create.recipe.sawing": "製材", - "create.recipe.mechanical_crafting": "メカニカルクラフト", - "create.recipe.automatic_shaped": "自動定形クラフト", - "create.recipe.block_cutting": "自動石切", - "create.recipe.wood_cutting": "自動製材", - "create.recipe.blockzapper_upgrade": "携帯型ブロックザッパー", - "create.recipe.sandpaper_polishing": "紙やすりでの研磨", - "create.recipe.mystery_conversion": "神秘の変転", - "create.recipe.spout_filling": "アイテム注液口による注入", - "create.recipe.draining": "アイテムから排液", - "create.recipe.processing.chance": "%1$s%%チャンス", - "create.recipe.heat_requirement.none": "加熱不要", - "create.recipe.heat_requirement.heated": "加熱が必要", - "create.recipe.heat_requirement.superheated": "極度の加熱が必要", - - "create.generic.range": "範囲", - "create.generic.radius": "半径", - "create.generic.width": "幅", - "create.generic.height": "高さ", - "create.generic.length": "長さ", - "create.generic.speed": "回転速度", - "create.generic.delay": "遅延", - "create.generic.unit.ticks": "ティック", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "度", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "時計回り", - "create.generic.counter_clockwise": "反時計回り", - - "create.action.scroll": "スクロール", - "create.action.confirm": "確認", - "create.action.abort": "中止", - "create.action.saveToFile": "保存", - "create.action.discard": "捨てる", - - "create.keyinfo.toolmenu": "ツールメニューをフォーカスする", - "create.keyinfo.scrollup": "マウスホイールアップをシミュレート(この世界で)", - "create.keyinfo.scrolldown": "マウスホイールダウンをシミュレーション(この世界で)", - - "create.gui.scrollInput.defaultTitle": "オプションを選択:", - "create.gui.scrollInput.scrollToModify": "スクロールして変更", - "create.gui.scrollInput.scrollToAdjustAmount": "スクロールして値を調整", - "create.gui.scrollInput.scrollToSelect": "スクロールして選択", - "create.gui.scrollInput.shiftScrollsFaster": "シフトを押してスクロールを加速", - "create.gui.toolmenu.focusKey": "[%1$s] 長押しでフォーカスする", - "create.gui.toolmenu.cycle": "[スクロール] で循環", - "create.gui.symmetryWand.mirrorType": "ミラーの種類", - "create.gui.symmetryWand.orientation": "方向", - - "create.symmetry.mirror.plane": "線対称", - "create.symmetry.mirror.doublePlane": "長方形", - "create.symmetry.mirror.triplePlane": "八角形", - - "create.orientation.orthogonal": "直交", - "create.orientation.diagonal": "対角線", - "create.orientation.horizontal": "横型", - "create.orientation.alongZ": "Z に沿る", - "create.orientation.alongX": "X に沿る", - - "create.gui.blockzapper.title": "携帯型ブロックザッパー", - "create.gui.blockzapper.replaceMode": "置換モード", - "create.gui.blockzapper.searchDiagonal": "対角線にフォロー", - "create.gui.blockzapper.searchFuzzy": "素材の境界を無視", - "create.gui.blockzapper.range": "範囲", - "create.gui.blockzapper.needsUpgradedAmplifier": "増幅アップグレードが必要", - "create.gui.blockzapper.patternSection": "模様", - "create.gui.blockzapper.pattern.solid": "敷き詰め", - "create.gui.blockzapper.pattern.checkered": "市松模様", - "create.gui.blockzapper.pattern.inversecheckered": "逆市松模様", - "create.gui.blockzapper.pattern.chance25": "25%", - "create.gui.blockzapper.pattern.chance50": "50%", - "create.gui.blockzapper.pattern.chance75": "75%", - "create.gui.terrainzapper.title": "携帯型ワールドシェーパー", - "create.gui.terrainzapper.placement": "配置", - "create.gui.terrainzapper.placement.merged": "合併", - "create.gui.terrainzapper.placement.attached": "添える", - "create.gui.terrainzapper.placement.inserted": "挿入", - "create.gui.terrainzapper.brush": "ブラシ", - "create.gui.terrainzapper.brush.cuboid": "直方体", - "create.gui.terrainzapper.brush.sphere": "球体", - "create.gui.terrainzapper.brush.cylinder": "円筒", - "create.gui.terrainzapper.tool": "ツール", - "create.gui.terrainzapper.tool.fill": "埋立", - "create.gui.terrainzapper.tool.place": "設置", - "create.gui.terrainzapper.tool.replace": "置換", - "create.gui.terrainzapper.tool.clear": "削除", - "create.gui.terrainzapper.tool.overlay": "被せる", - "create.gui.terrainzapper.tool.flatten": "なだらかに", - - "create.terrainzapper.shiftRightClickToSet": "シフト-右クリックで形状を選択", - - "create.blockzapper.usingBlock": "使用中: %1$s", - "create.blockzapper.componentUpgrades": "アップグレード部品:", - "create.blockzapper.component.body": "ボディー", - "create.blockzapper.component.amplifier": "範囲", - "create.blockzapper.component.accelerator": "連射", - "create.blockzapper.component.retriever": "回収", - "create.blockzapper.component.scope": "射程", - "create.blockzapper.componentTier.none": "無し", - "create.blockzapper.componentTier.brass": "真鍮", - "create.blockzapper.componentTier.chromatic": "色彩", - "create.blockzapper.leftClickToSet": "ブロックをスニークせず左クリックでブロックを選択", - "create.blockzapper.empty": "ブロック不足!", - - "create.minecart_coupling.two_couplings_max": "トロッコを2つ以上連結させることはできません", - "create.minecart_coupling.unloaded": "列車の一部のあるチャンクがロードされていません", - "create.minecart_coupling.no_loops": "ループ状に連結させることはできません", - "create.minecart_coupling.removed": "トロッコの連結をすべて解除しました", - "create.minecart_coupling.too_far": "トロッコ同士が離れすぎています", - - "create.contraptions.movement_mode": "移動モード", - "create.contraptions.movement_mode.move_place": "停止時に常に配置", - "create.contraptions.movement_mode.move_place_returned": "開始位置のみに配置", - "create.contraptions.movement_mode.move_never_place": "アンカーが破壊されたときにのみ配置", - "create.contraptions.movement_mode.rotate_place": "停止時に常に配置", - "create.contraptions.movement_mode.rotate_place_returned": "初期角度付近のみ配置", - "create.contraptions.movement_mode.rotate_never_place": "アンカーが破壊されたときにのみ配置", - "create.contraptions.cart_movement_mode": "トロッコ移動モード", - "create.contraptions.cart_movement_mode.rotate": "常に動いている方向を向く", - "create.contraptions.cart_movement_mode.rotate_paused": "回転中に一時停止する", - "create.contraptions.cart_movement_mode.rotation_locked": "常に向きを固定する", - "create.contraptions.windmill.rotation_direction": "回転方向", - "create.contraptions.clockwork.clock_hands": "時計の針", - "create.contraptions.clockwork.hour_first": "時針を最初に", - "create.contraptions.clockwork.minute_first": "分針を最初に", - "create.contraptions.clockwork.hour_first_24": "1周24時間時針を最初に", - - "create.logistics.filter": "フィルター", - "create.logistics.recipe_filter": "レシピフィルター", - "create.logistics.fluid_filter": "液体フィルター", - "create.logistics.firstFrequency": "一次周波数", - "create.logistics.secondFrequency": "二次周波数", - "create.logistics.filter.apply": "フィルターを%1$sに適用しました。", - "create.logistics.filter.apply_click_again": "フィルターを%1$sに適用しました。再度クリックすると数量をコピーします", - "create.logistics.filter.apply_count": "搬出カウントをフィルターに適用しました。", - - "create.gui.goggles.generator_stats": "原動機の統計:", - "create.gui.goggles.kinetic_stats": "動力の統計:", - "create.gui.goggles.at_current_speed": "現在の回転速度", - "create.gui.goggles.pole_length": "ポールの長さ:", - "create.gui.goggles.fluid_container": "液体コンテナの情報:", - "create.gui.goggles.fluid_container.capacity": "容量: ", - "create.gui.assembly.exception": "このからくりは組み立ることができません。:", - "create.gui.assembly.exception.unmovableBlock": "移動できないブロック(%4$s)、[%1$s %2$s %3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "[%1$s %2$s %3$s] のブロックがロードされているチャンクにありません。", - "create.gui.assembly.exception.structureTooLarge": "からくりに含まれるブロックが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "このピストンに取り付けられている拡張ポールが多すぎます。\n最大値: %1$s", - "create.gui.assembly.exception.noPistonPoles": "ピストンに延長ポールが不足しています。", - "create.gui.assembly.exception.not_enough_sails": "この構造物は帆ブロックが足りていません。: %1$s\nAが最低でも%2$sコ必要です。", - "create.gui.gauge.info_header": "メーターの情報:", - "create.gui.speedometer.title": "回転速度", - "create.gui.stressometer.title": "ネットワークの応力", - "create.gui.stressometer.capacity": "残りの応力許容量", - "create.gui.stressometer.overstressed": "超過応力", - "create.gui.stressometer.no_rotation": "回転なし", - "create.gui.contraptions.not_fast_enough": "この %1$s は_十分な_回転を_していない_ようです。", - "create.gui.contraptions.network_overstressed": "この仕掛けは_超過応力_のようです。さらに原動機を追加するか、_応力_への影響が大きい機械の回転速度を_下げて_ください。", - "create.gui.adjustable_crate.title": "可変クレート", - "create.gui.adjustable_crate.storageSpace": "収納スペース", - "create.gui.stockpile_switch.title": "在庫スイッチ", - "create.gui.stockpile_switch.invert_signal": "信号を反転", - "create.gui.stockpile_switch.move_to_lower_at": "動作の下限は%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "動作の上限は%1$s%%", - "create.gui.sequenced_gearshift.title": "シーケンスギアシフト", - "create.gui.sequenced_gearshift.instruction": "命令", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "回す角度", - "create.gui.sequenced_gearshift.instruction.turn_angle": "回転", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度分だけ回す", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "ピストン/プーリー/ガントリーを動かすために回す", - "create.gui.sequenced_gearshift.instruction.turn_distance": "ピストン", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "一定時間待つ", - "create.gui.sequenced_gearshift.instruction.delay": "遅延", - "create.gui.sequenced_gearshift.instruction.delay.duration": "待機時間", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "終了", - "create.gui.sequenced_gearshift.instruction.end": "終了", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "レッドストーンパルスを待つ", - "create.gui.sequenced_gearshift.instruction.await": "待機", - "create.gui.sequenced_gearshift.speed": "回転速度, 方向", - "create.gui.sequenced_gearshift.speed.forward": "入力速度, 正転", - "create.gui.sequenced_gearshift.speed.forward_fast": "倍速, 正転", - "create.gui.sequenced_gearshift.speed.back": "入力速度, 反転", - "create.gui.sequenced_gearshift.speed.back_fast": "倍速, 反転", - - "create.schematicAndQuill.dimensions": "概略図サイズ: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "最初の位置セット", - "create.schematicAndQuill.secondPos": "2番目の位置セット", - "create.schematicAndQuill.noTarget": "[Ctrl] を押したままで空気ブロックを選択します", - "create.schematicAndQuill.abort": "選択を削除しました", - "create.schematicAndQuill.title": "概略図名:", - "create.schematicAndQuill.convert": "保存してすぐに適用", - "create.schematicAndQuill.fallbackName": "My Schematic", - "create.schematicAndQuill.saved": "%1$s として保存しました", - - "create.schematic.invalid": "[!] 無効なアイテム-代わりに概略図テーブルを使ってください", - "create.schematic.position": "位置", - "create.schematic.rotation": "回転", - "create.schematic.rotation.none": "無し", - "create.schematic.rotation.cw90": "時計回りに90", - "create.schematic.rotation.cw180": "時計回りに180", - "create.schematic.rotation.cw270": "時計回りに270", - "create.schematic.mirror": "ミラー", - "create.schematic.mirror.none": "無し", - "create.schematic.mirror.frontBack": "正面-背面", - "create.schematic.mirror.leftRight": "左-右", - "create.schematic.tool.deploy": "配置する", - "create.schematic.tool.move": "XZを移動", - "create.schematic.tool.movey": "Yを移動", - "create.schematic.tool.rotate": "回転", - "create.schematic.tool.print": "印刷", - "create.schematic.tool.flip": "裏返し", - "create.schematic.tool.deploy.description.0": "構造物を特定の場所に移動します", - "create.schematic.tool.deploy.description.1": "地面を右クリックして配置します", - "create.schematic.tool.deploy.description.2": "[Ctrl] を押したまま、一定の距離で選択します", - "create.schematic.tool.deploy.description.3": "[Ctrl]-スクロールして距離を変更します", - "create.schematic.tool.move.description.0": "概略図を水平に動かします", - "create.schematic.tool.move.description.1": "概略図を向け、 [Ctrl]-スクロールして押し出します", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "概略図を垂直に動かします", - "create.schematic.tool.movey.description.1": "[Ctrl]-スクロールして上下に移動します", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "概略図をその中心を中心に回転させます", - "create.schematic.tool.rotate.description.1": "[Ctrl]-スクロールして90度回転します", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "構造物を即座にワールドに配置します", - "create.schematic.tool.print.description.1": "[右クリック] して、現在の場所への配置を確認します", - "create.schematic.tool.print.description.2": "このツールはクリエイティブモード専用です", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "選択した面に沿って概略図を反転します", - "create.schematic.tool.flip.description.1": "概略図をポイントし、 [Ctrl]-スクロールして反転します", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "同期しています...", - "create.schematics.uploadTooLarge": "概略図が大きすぎます", - "create.schematics.maxAllowedSize": "最大許容概略図ファイルサイズは:", - - "create.gui.schematicTable.refresh": "ファイルを更新する", - "create.gui.schematicTable.open_folder": "フォルダを開く", - "create.gui.schematicTable.title": "概略図テーブル", - "create.gui.schematicTable.availableSchematics": "利用可能な概略図", - "create.gui.schematicTable.noSchematics": "保存された概略図はありません", - "create.gui.schematicTable.uploading": "アップロードしています...", - "create.gui.schematicTable.finished": "アップロードが完了しました!", - "create.gui.schematicannon.title": "概略図砲", - "create.gui.schematicannon.listPrinter": "材料リストプリンター", - "create.gui.schematicannon.gunpowderLevel": "火薬残量: %1$s%%", - "create.gui.schematicannon.shotsRemaining": "残りショット数: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "バックアップ: %1$s", - "create.gui.schematicannon.optionEnabled": "現在 有効", - "create.gui.schematicannon.optionDisabled": "現在 無効", - "create.gui.schematicannon.showOptions": "プリンターの設定を表示する", - "create.gui.schematicannon.option.dontReplaceSolid": "固体ブロックを置き換えない", - "create.gui.schematicannon.option.replaceWithSolid": "固体を固体に置き換える", - "create.gui.schematicannon.option.replaceWithAny": "固体を任意のものに置き換える", - "create.gui.schematicannon.option.replaceWithEmpty": "空の固体と交換", - "create.gui.schematicannon.option.skipMissing": "不足しているブロックをスキップ", - "create.gui.schematicannon.option.skipTileEntities": "タイルエンティティを保護する", - "create.gui.schematicannon.slot.gunpowder": "火薬を燃料として概略図砲に入れてください。", - "create.gui.schematicannon.slot.listPrinter": "本をここに入れると概略図の材料チェックリストをプリントアウトします。", - "create.gui.schematicannon.slot.schematic": "あなたの概略図をここに入れてください。特定の場所に配置されていることを確認してください。", - "create.gui.schematicannon.option.skipMissing.description": "大砲が配置に必要なブロックを見つけられない場合、次の場所に進みます。", - "create.gui.schematicannon.option.skipTileEntities.description": "大砲は、チェストなどのデータ保持ブロックの交換を回避します。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "大砲は、その作業範囲の固体ブロックを置き換えることはなく、非固体と空気のみを置き換えます。", - "create.gui.schematicannon.option.replaceWithSolid.description": "大砲は、概略図の位置に固体ブロックが含まれている場合にのみ、その作業範囲の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithAny.description": "概略図の場所にブロックが含まれている場合、大砲はその作業範囲の固体ブロックを置き換えます。", - "create.gui.schematicannon.option.replaceWithEmpty.description": "大砲は、空気に置き換えられたものを含め、その作業エリア内のすべてのブロックを一掃します。", - - "create.schematicannon.status.idle": "停止中", - "create.schematicannon.status.ready": "準備完了", - "create.schematicannon.status.running": "稼働中", - "create.schematicannon.status.finished": "完成", - "create.schematicannon.status.paused": "一時停止中", - "create.schematicannon.status.stopped": "停止", - "create.schematicannon.status.noGunpowder": "火薬不足", - "create.schematicannon.status.targetNotLoaded": "ブロックが読み込まれていません", - "create.schematicannon.status.targetOutsideRange": "ターゲットが遠すぎます", - "create.schematicannon.status.searching": "検索中", - "create.schematicannon.status.skipping": "スキップ", - "create.schematicannon.status.missingBlock": "不明なブロック:", - "create.schematicannon.status.placing": "配置中", - "create.schematicannon.status.clearing": "ブロックをクリア中", - "create.schematicannon.status.schematicInvalid": "概略図が無効です", - "create.schematicannon.status.schematicNotPlaced": "配置されていない概略図です", - "create.schematicannon.status.schematicExpired": "概略図ファイルが期限切れです", - - "create.materialChecklist": "素材チェックリスト", - "create.materialChecklist.blocksNotLoaded": "*免責事項*\n\n素材チェックリストは関連するチャンクがロードされていないため、不正確な場合があります。", - - "create.gui.filter.deny_list": "ブラックリスト", - "create.gui.filter.deny_list.description": "上記のいずれにも一致しない場合、アイテムは通り抜けます。空のブラックリストはすべてを受け入れます。", - "create.gui.filter.allow_list": "ホワイトリスト", - "create.gui.filter.allow_list.description": "上記のいずれかに一致した場合、アイテムは通り抜けます。空のホワイトリストはすべてを拒否します。", - "create.gui.filter.respect_data": "データを重視", - "create.gui.filter.respect_data.description": "アイテムは、耐久性、エンチャント、その他の属性も一致する場合にのみ一致します。", - "create.gui.filter.ignore_data": "データを無視", - "create.gui.filter.ignore_data.description": "アイテムは属性に関係なく一致します。", - - "create.item_attributes.placeable": "設置可能か", - "create.item_attributes.placeable.inverted": "設置不可能か", - "create.item_attributes.consumable": "食べられるか", - "create.item_attributes.consumable.inverted": "食べられないか", - "create.item_attributes.smeltable": "精錬可能か", - "create.item_attributes.smeltable.inverted": "精錬不可能か", - "create.item_attributes.washable": "洗浄可能か", - "create.item_attributes.washable.inverted": "洗浄不可能か", - "create.item_attributes.smokable": "燻製器で調理可能か", - "create.item_attributes.smokable.inverted": "燻製器で調理不可能か", - "create.item_attributes.crushable": "粉砕可能か", - "create.item_attributes.crushable.inverted": "粉砕不可能か", - "create.item_attributes.blastable": "溶鉱炉で精錬可能か", - "create.item_attributes.blastable.inverted": "溶鉱炉で精錬不可能か", - "create.item_attributes.enchanted": "エンチャント済みか", - "create.item_attributes.enchanted.inverted": "エンチャントなしか", - "create.item_attributes.damaged": "破損してるか", - "create.item_attributes.damaged.inverted": "破損していないか", - "create.item_attributes.badly_damaged": "ひどく損傷してるか", - "create.item_attributes.badly_damaged.inverted": "ひどく損傷していないか", - "create.item_attributes.not_stackable": "スタック可能か", - "create.item_attributes.not_stackable.inverted": "スタック不可能か", - "create.item_attributes.equipable": "装備可能か", - "create.item_attributes.equipable.inverted": "装備不可能か", - "create.item_attributes.furnace_fuel": "かまどの燃料か", - "create.item_attributes.furnace_fuel.inverted": "かまどの燃料でないか", - "create.item_attributes.in_tag": "%1$sのタグが付けられてるか", - "create.item_attributes.in_tag.inverted": "%1$sのタグがついていないか", - "create.item_attributes.in_item_group": "%1$sに属してるか", - "create.item_attributes.in_item_group.inverted": "%1$sに属していないか", - "create.item_attributes.added_by": "%1$sによって追加されたか", - "create.item_attributes.added_by.inverted": "%1$sによって追加されていないか", - "create.item_attributes.has_enchant": "エンチャントされているか%1$s", - "create.item_attributes.has_enchant.inverted": "エンチャントがされていないか", - "create.item_attributes.color": "%1$sで染められているか", - "create.item_attributes.color.inverted": "%1$sで染められていないか", - "create.item_attributes.max_enchanted": "最大レベルのエンチャントがされているか", - "create.item_attributes.max_enchanted.inverted": "最大レベルのエンチャントがされていないか", - "create.item_attributes.has_fluid": "%1$sを含んでいるか", - "create.item_attributes.has_fluid.inverted": "%1$sを含んでいないか", - "create.item_attributes.has_name": "%1$sの名前が付けられているか", - "create.item_attributes.has_name.inverted": "%1$sの名前が付けられているか", - "create.item_attributes.book_author": "%1$sが署名したか", - "create.item_attributes.book_author.inverted": "%1$sが署名していないか", - "create.item_attributes.book_copy_original": "オリジナルか", - "create.item_attributes.book_copy_original.inverted": "オリジナルでないか", - "create.item_attributes.book_copy_first": "コピーか", - "create.item_attributes.book_copy_first.inverted": "コピーでないか", - "create.item_attributes.book_copy_second": "コピーのコピーか", - "create.item_attributes.book_copy_second.inverted": "コピーのコピーでないか", - "create.item_attributes.book_copy_tattered": "ボロボロか", - "create.item_attributes.book_copy_tattered.inverted": "ボロボロでないか", - "create.item_attributes.astralsorcery_crystal": "%1$s クリスタル属性を持つ", - "create.item_attributes.astralsorcery_crystal.inverted": "%1$s クリスタル属性を持たない", - "create.item_attributes.astralsorcery_constellation": "%1$s に同調している", - "create.item_attributes.astralsorcery_constellation.inverted": "%1$s に同調していない", - "create.item_attributes.astralsorcery_perk_gem": "%1$s 特典属性がある", - "create.item_attributes.astralsorcery_perk_gem.inverted": "%1$s 特典属性がない", - "create.item_attributes.astralsorcery_amulet": "%1$s 改善", - "create.item_attributes.astralsorcery_amulet.inverted": "%1$s 改善されない", - - "create.gui.attribute_filter.no_selected_attributes": "属性が選択されていません", - "create.gui.attribute_filter.selected_attributes": "選択された属性:", - "create.gui.attribute_filter.add_attribute": "属性をリストに追加する", - "create.gui.attribute_filter.add_inverted_attribute": "反属性をリストに追加する", - "create.gui.attribute_filter.allow_list_disjunctive": "ホワイトリスト(いずれか)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "選択した属性のいずれかを持っている場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.allow_list_conjunctive": "ホワイトリスト(全て)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "選択した属性をすべてを持っている場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.deny_list": "ブラックリスト", - "create.gui.attribute_filter.deny_list.description": "選択された属性を持たない場合、アイテムは通り抜けます。", - "create.gui.attribute_filter.add_reference_item": "参照アイテムを追加", - - "create.tooltip.holdForDescription": "説明を表示するには [%1$s] を長押し", - "create.tooltip.holdForControls": "操作方法を確認するには [%1$s] を長押し", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "必要な回転速度: %1$s", - "create.tooltip.speedRequirement.none": "無し", - "create.tooltip.speedRequirement.medium": "中速", - "create.tooltip.speedRequirement.high": "高速", - "create.tooltip.stressImpact": "応力への影響: %1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "超過応力", - "create.tooltip.capacityProvided": "応力許容量: %1$s", - "create.tooltip.capacityProvided.low": "小", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.generationSpeed": "%1$s %2$sを生成", - "create.tooltip.analogStrength": "アナログ強度: %1$s/15", - - "create.mechanical_arm.extract_from": "%1$sからアイテムを取得", - "create.mechanical_arm.deposit_to": "%1$sにアイテムを置く", - "create.mechanical_arm.summary": "メカニカルアームは%1$s個の搬入ブロックと%2$s個の搬出ブロックを持っています。", - "create.mechanical_arm.points_outside_range": "%1$s個の選択ブロックが射程限界のため、除外されました。", - - "create.weighted_ejector.target_set": "ターゲットを選択", - "create.weighted_ejector.target_not_valid": "隣接ブロックへの射出(ターゲットが無効)", - "create.weighted_ejector.no_target": "隣接ブロックへの射出(ターゲットが選択されていない)", - "create.weighted_ejector.targeting": "[%1$s,%2$s,%3$s]へ射出", - "create.weighted_ejector.stack_size": "射出スタック量", - - "create.logistics.when_multiple_outputs_available": "複数の搬出先が利用できるとき:", - - "create.mechanical_arm.selection_mode.round_robin": "順繰り分配", - "create.mechanical_arm.selection_mode.forced_round_robin": "強制順繰り分配", - "create.mechanical_arm.selection_mode.prefer_first": "最初のターゲットを優先", - - "create.tunnel.selection_mode.split": "スタック分割", - "create.tunnel.selection_mode.forced_split": "強制スタック分割", - "create.tunnel.selection_mode.round_robin": "順繰り分配", - "create.tunnel.selection_mode.forced_round_robin": "強制順繰り分配", - "create.tunnel.selection_mode.prefer_nearest": "近い所を優先", - "create.tunnel.selection_mode.randomize": "ランダム", - "create.tunnel.selection_mode.synchronize": "同期", - - "create.tooltip.chute.header": "シュート情報", - "create.tooltip.chute.items_move_down": "アイテムを下方向に移動します", - "create.tooltip.chute.items_move_up": "アイテムを上方向に移動します", - "create.tooltip.chute.no_fans_attached": "ファンは接続されていません", - "create.tooltip.chute.fans_push_up": "下からファンが押しています", - "create.tooltip.chute.fans_push_down": "ファンが上から押しています", - "create.tooltip.chute.fans_pull_up": "ファンが上から吸い込んでいます", - "create.tooltip.chute.fans_pull_down": "ファンが下から吸い込んでいます", - "create.tooltip.chute.contains": "内容物: %1$s x%2$s", - - "create.hint.hose_pulley.title": "底なし搬出", - "create.hint.hose_pulley": "対象となる液体は無限とみなされています。", - "create.hint.mechanical_arm_no_targets.title": "ターゲットが見つかりません", - "create.hint.mechanical_arm_no_targets": "どうやらこの_メカニカルアーム_には_ターゲット_が割り当てられていないようです。_メカニカルアーム_を_手_に持って_右クリック_して、ベルト、デポ、ファンネルなどのブロックを選択します。", - "create.hint.empty_bearing.title": "ベアリングの更新", - "create.hint.empty_bearing": "_素手_でベアリングを_右クリック_して、その前に先ほど作った構造物を_接続_します。", - "create.hint.full_deployer.title": "デプロイヤーのアイテムが溢れています", - "create.hint.full_deployer": "この_デプロイヤー_には、_搬出_する必要がある余分なアイテムが含まれています。_ ホッパー_や_漏斗_などの手段を利用して、溢れないようにしてください。", - - "create.gui.config.overlay1": "やぁ(・∀・)", - "create.gui.config.overlay2": "これはオーバーレイのサンプルです", - "create.gui.config.overlay3": "マウスでクリックまたはドラッグしてください", - "create.gui.config.overlay4": "クリックしてこのプレビューを移動します", - "create.gui.config.overlay5": "ESCを押してこの画面を終了します", - "create.gui.config.overlay6": "それと新しい位置を保存します", - "create.gui.config.overlay7": "オーバーレイのリセットを実行 /作成", - "create.gui.config.overlay8": "クリックして、デフォルトの位置にリセットします。", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]:サーバーティックは現在 %s ms 遅くなっています :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: サーバーティックが %s ms 遅くなりました >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: サーバーティックが通常の速度に戻りました:D", - "create.command.killTPSCommand.status.usage.0": "[Create]: /killtps stopを使用してサーバーのティックを通常の速度に戻します", - "create.command.killTPSCommand.status.usage.1": "[Create]: /killtps start を使用して、サーバーのティックを意図的に遅くします", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "このからくりトロッコは大きすぎて拾えません。", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.cogs": "歯車がゴロゴロと鳴る", - "create.subtitle.slime_added": "スライムがぐしゃっとつぶれる", - "create.subtitle.contraption_disassemble": "からくりが止まる", - "create.subtitle.wrench_rotate": "レンチを使う", - "create.subtitle.mixing": "混ぜる音", - "create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る", - "create.subtitle.blockzapper_confirm": "成功音", - "create.subtitle.depot_slide": "アイテムが滑る", - "create.subtitle.blockzapper_place": "ブロックを発射して設置する", - "create.subtitle.blaze_munch": "ブレイズの咀嚼音", - "create.subtitle.schematicannon_launch_block": "概略図砲が発射する", - "create.subtitle.funnel_flap": "ファンネルがはためく", - "create.subtitle.schematicannon_finish": "概略図砲が作業を終える", - "create.subtitle.scroll_value": "スクロールのカチカチ音", - "create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る", - "create.subtitle.contraption_assemble": "からくりが動く", - "create.subtitle.crafter_craft": "メカニカルクラフターがクラフトする", - "create.subtitle.blockzapper_deny": "失敗音", - "create.subtitle.cranking": "ハンドクランクが回る", - "create.subtitle.crafter_click": "メカニカルクラフターのカチカチ音", - "create.subtitle.wrench_remove": "機械を壊す", - "create.subtitle.depot_plop": "デプロイヤーにアイテムが入れられる", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "アイテムの例(ただ単にこのツールチップが存在することを示すマーカー)", - "item.create.example_item.tooltip.summary": "アイテムの簡単な説明。アンダーバーで用語を強調表示します。", - "item.create.example_item.tooltip.condition1": "これをしたとき", - "item.create.example_item.tooltip.behaviour1": "すると、このアイテムはこのようなことを行います。(シフトを押したときに表示される)", - "item.create.example_item.tooltip.condition2": "そしてこれをしたとき", - "item.create.example_item.tooltip.behaviour2": "好きなだけ挙動を追加できます。", - "item.create.example_item.tooltip.control1": "Ctrlを押したとき", - "item.create.example_item.tooltip.action1": "これらのコントロールが表示されます。", - - "block.create.wooden_bracket.tooltip": "木製ブラケット", - "block.create.wooden_bracket.tooltip.summary": "補強用の温かみのある木の欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", - - "block.create.metal_bracket.tooltip": "金属ブラケット", - "block.create.metal_bracket.tooltip.summary": "補強用の頑丈で工業的な欠片で_シャフト_、_歯車_、そして_パイプ_を_飾ろう_。", - - "block.create.copper_casing.tooltip": "銅ケーシング", - "block.create.copper_casing.tooltip.summary": "様々な用途に使える丈夫なマシンケーシング。飾り付けにも安心してお使いいただけます。", - "block.create.copper_casing.tooltip.condition1": "液体パイプに使ったとき", - "block.create.copper_casing.tooltip.behaviour1": "_液体パイプ_を_銅ケーシング_で_覆います_。ケース入り液体パイプは_接続状態を固定_し、隣にパイプ等を置いても接続が変化しなくなります。", - - "block.create.encased_fluid_pipe.tooltip": "ケース入り液体パイプ", - "block.create.encased_fluid_pipe.tooltip.summary": "銅ケーシングに覆われた液体パイプ", - - "block.create.seat.tooltip": "シート", - "block.create.seat.tooltip.summary": "シートに座って乗り物を楽しもう!移動する_構造物_の上にプレイヤーを固定します。もちろん家具にも使えます。染色することも。", - "block.create.seat.tooltip.condition1": "右クリックしたとき", - "block.create.seat.tooltip.behaviour1": "_シート_の上に座ります。左シフトを押すと_シート_から離れます。", - - "item.create.blaze_cake.tooltip": "ブレイズケーキ", - "item.create.blaze_cake.tooltip.summary": "働き者の_ブレイズバーナー_達に美味しいご馳走を。彼らを燃え上がらせよう(物理)!", - - "block.create.fluid_pipe.tooltip": "液体パイプ", - "block.create.fluid_pipe.tooltip.summary": "_液体_の輸送に使います。_液体_輸送にはメカニカルポンプが必要です。", - "block.create.fluid_pipe.tooltip.condition1": "液体輸送", - "block.create.fluid_pipe.tooltip.behaviour1": "_タンク_や_鉢_などの_液体コンテナ_に繋がります。また、_パイプ_の端が露出しているので液体を吹き出したり設置したりできます。液漏れ注意!", - "block.create.fluid_pipe.tooltip.condition2": "レンチで右クリックしたとき", - "block.create.fluid_pipe.tooltip.behaviour2": "可能ならパイプに窓を設けます。", - - "block.create.hose_pulley.tooltip": "ホースプーリー", - "block.create.hose_pulley.tooltip.summary": "ワールドの大量の_液体_を_吸引_したり、_放出_したりするのに使います。", - "block.create.hose_pulley.tooltip.condition1": "回転力を供給したとき", - "block.create.hose_pulley.tooltip.behaviour1": "ホースを_上げ下げ_して、どの程度の_高さ_まで_吸引_や_放出_を行うか決めます。", - "block.create.hose_pulley.tooltip.condition2": "プーリー本体から液体を吸い込むとき", - "block.create.hose_pulley.tooltip.behaviour2": "ホースの端がおろされた本体から_液体_ブロックを_吸引_し始めます。非常に_大量_の液体は_無限_と_みなされます_。", - "block.create.hose_pulley.tooltip.condition3": "プーリー本体に液体が押しこまれたとき", - "block.create.hose_pulley.tooltip.behaviour3": "ホースの端の_高さ_まで、_液体_の_放出_を始めます。", - - "block.create.fluid_tank.tooltip": "液体タンク", - "block.create.fluid_tank.tooltip.summary": "あなたのお気に入りのあらゆる_液体_を_貯蔵_できます。縦横に並べて大きさを調整できます。", - "block.create.fluid_tank.tooltip.condition1": "レンチで右クリックしたとき", - "block.create.fluid_tank.tooltip.behaviour1": "窓の付けたり、外したりします。", - - "block.create.creative_fluid_tank.tooltip": "クリエイティブ液体タンク", - "block.create.creative_fluid_tank.tooltip.summary": "この_液体タンク_は、あらゆる液体を無限に複製します。縦横に並べて大きさを調整できます。", - "block.create.creative_fluid_tank.tooltip.condition1": "液体がタンクに入っているとき", - "block.create.creative_fluid_tank.tooltip.behaviour1": "このタンクから何かを_取り出す_と、指定された液体が_無限_に_供給_されます。このタンクに_搬入_された液体は_消滅_します。", - "block.create.creative_fluid_tank.tooltip.condition2": "レンチで左クリックしたとき", - "block.create.creative_fluid_tank.tooltip.behaviour2": "窓を付け外しします。", - - "block.create.fluid_valve.tooltip": "液体バルブ", - "block.create.fluid_valve.tooltip.summary": "パイプ内の液体の流れを止めます。", - "block.create.fluid_valve.tooltip.condition1": "液体制御", - "block.create.fluid_valve.tooltip.behaviour1": "_回転力_を加えると_バルブ_は強制的に閉じ、_液体_の流れを止めます。_回転_方向を逆にするとバルブが再び開きます。", - - "block.create.mechanical_pump.tooltip": "メカニカルポンプ", - "block.create.mechanical_pump.tooltip.summary": "_回転力_を使って_パイプ_に沿って_液体_を輸送します。両方向に最大効果範囲があります。(デフォルト16ブロック)", - "block.create.mechanical_pump.tooltip.condition1": "液体輸送", - "block.create.mechanical_pump.tooltip.behaviour1": "_回転力_を加えると_パイプ_を流れる_液体_を移動させる圧力が発生します。_回転方向_を逆にすると、_液体_の流れる方向を切り替えられます。", - "block.create.mechanical_pump.tooltip.control1": "レンチで右クリックしたとき", - "block.create.mechanical_pump.tooltip.action1": "_ポンプ_の方向を反転させ、デフォルトの流れる方向を切り替えます。", - - "block.create.smart_fluid_pipe.tooltip": "スマート液体パイプ", - "block.create.smart_fluid_pipe.tooltip.summary": "フィルター付きの_液体パイプ_。どの_液体_を通過させるか設定できます。", - "block.create.smart_fluid_pipe.tooltip.condition1": "液体を搬入したとき", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "フィルターに合わない液体を搬入したスマート液体パイプは、流れを遮断します。", - "block.create.smart_fluid_pipe.tooltip.condition2": "液体コンテナに隣接しているとき", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "あらゆる容器から_流れ出す_スマート液体パイプは、その_フィルター_に_合った_液体のみを搬入します。", - - "block.create.spout.tooltip": "アイテム注液口", - "block.create.spout.tooltip.summary": "_液体_を注入する注液器。", - "block.create.spout.tooltip.condition1": "液体充填", - "block.create.spout.tooltip.behaviour1": "_バケツ_や_瓶_のような_容器アイテム_を下に置くと、貯蔵された_液体_でそれを満たします。", - "block.create.spout.tooltip.condition2": "液体自動化", - "block.create.spout.tooltip.behaviour2": "_ベルト_や_デポ_の上に置かれたアイテム注液口は、その下を通過する_容器アイテム_に反応します。", - - "block.create.item_drain.tooltip": "アイテム排液口", - "block.create.item_drain.tooltip.summary": "_液体アイテム_を空にする格子の付いたデポ。", - "block.create.item_drain.tooltip.condition1": "液体排液", - "block.create.item_drain.tooltip.behaviour1": "_バケツ_や_ボトル_などの_液体入り容器_を横から搬入すると、アイテム排液口はその_液体入り容器_に空にしようとします。その後、アイテムは反対側に排出されます。", - - "item.create.wand_of_symmetry.tooltip": "対称の杖", - "item.create.wand_of_symmetry.tooltip.summary": "対象の鏡をまたいだ範囲内のブロック設置を完全に複製します。", - "item.create.wand_of_symmetry.tooltip.condition1": "ホットバーにあるとき", - "item.create.wand_of_symmetry.tooltip.behaviour1": "対象の鏡は有効のまま", - "item.create.wand_of_symmetry.tooltip.control1": "地面を右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action1": "対象の鏡を_作成_または_移動_する", - "item.create.wand_of_symmetry.tooltip.control2": "空中を右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action2": "有効な対象の鏡を_削除_", - "item.create.wand_of_symmetry.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.wand_of_symmetry.tooltip.action3": "_設定インターフェース_を開きます。", - - "item.create.handheld_blockzapper.tooltip": "携帯型ブロックザッパー", - "item.create.handheld_blockzapper.tooltip.summary": "離れた場所にブロックを設置または交換する新しいガジェット。", - "item.create.handheld_blockzapper.tooltip.control1": "ブロックを左クリックしたとき", - "item.create.handheld_blockzapper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", - "item.create.handheld_blockzapper.tooltip.control2": "ブロックを右クリックしたとき", - "item.create.handheld_blockzapper.tooltip.action2": "ターゲットブロックを_配置_または_置換_します。", - "item.create.handheld_blockzapper.tooltip.control3": "スニークしながら右クリックしたとき。", - "item.create.handheld_blockzapper.tooltip.action3": "_設定インターフェース_を開きます。", - - "item.create.handheld_worldshaper.tooltip": "携帯型ワールドシェーパー", - "item.create.handheld_worldshaper.tooltip.summary": "特色ある_風景_や_地形_を作成する便利なツール。", - "item.create.handheld_worldshaper.tooltip.control1": "ブロックを左クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action1": "ターゲットのブロックをこのツールに設定します。", - "item.create.handheld_worldshaper.tooltip.control2": "ブロックを右クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action2": "現在選択されている_ブラシ_と_ツール_を目標の場所に適用します。", - "item.create.handheld_worldshaper.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.handheld_worldshaper.tooltip.action3": "_設定インターフェース_を開きます。", - - "item.create.tree_fertilizer.tooltip": "樹木の肥料", - "item.create.tree_fertilizer.tooltip.summary": "一般的な種類の木の成長を早めるのに適したミネラルを配合した強力な肥料。", - "item.create.tree_fertilizer.tooltip.condition1": "苗木に使ったとき", - "item.create.tree_fertilizer.tooltip.behaviour1": "_間隔の条件_に_関係なく_苗木を成長させる", - - "item.create.deforester.tooltip": "デフォレスター", - "item.create.deforester.tooltip.summary": "一瞬で木を切り倒すことができる_輝く斧_。", - - "item.create.extendo_grip.tooltip": "マジックハンド", - "item.create.extendo_grip.tooltip.summary": "ビヨヨーン!着用者の_射程_を大幅に_伸ばし_ます。", - "item.create.extendo_grip.tooltip.condition1": "オフハンドに装備したとき", - "item.create.extendo_grip.tooltip.behaviour1": "_メインハンド_で使うアイテムの_射程_を_伸ばし_ます。", - - "item.create.filter.tooltip": "フィルター", - "item.create.filter.tooltip.summary": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_入れ子になったフィルター_と照合します。", - "item.create.filter.tooltip.condition1": "フィルタースロットにセットしたとき", - "item.create.filter.tooltip.behaviour1": "_設定_に応じてアイテムの流れを_制御_します。", - "item.create.filter.tooltip.condition2": "右クリックしたとき", - "item.create.filter.tooltip.behaviour2": "_設定インターフェース_を開きます。", - - "item.create.attribute_filter.tooltip": "属性フィルター", - "item.create.attribute_filter.tooltip.summary": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、アイテムの_属性_と_カテゴリのセット_と照合します。", - "item.create.attribute_filter.tooltip.condition1": "フィルタースロットにセットしたとき", - "item.create.attribute_filter.tooltip.behaviour1": "_設定_に応じてアイテムの流れを_制御_します。", - "item.create.attribute_filter.tooltip.condition2": "右クリックしたとき", - "item.create.attribute_filter.tooltip.behaviour2": "_設定インターフェース_を開きます。", - - "item.create.empty_schematic.tooltip": "空の概略図", - "item.create.empty_schematic.tooltip.summary": "レシピの材料、および_概略図テーブル_での書き込みに使われます。", - - "item.create.schematic.tooltip": "概略図", - "item.create.schematic.tooltip.summary": "ワールドに設置できる構造物を保持します。ホログラムを必要に応じて配置し、_概略図砲_を使って建築します。", - "item.create.schematic.tooltip.condition1": "持ったとき", - "item.create.schematic.tooltip.behaviour1": "画面上のツールを使ってホログラムを配置します。", - "item.create.schematic.tooltip.control1": "スニークしながら右クリックしたとき", - "item.create.schematic.tooltip.action1": "正確な_座標_を入力する_インターフェース_を開きます", - - "item.create.schematic_and_quill.tooltip": "概略図と羽根ペン", - "item.create.schematic_and_quill.tooltip.summary": "ワールドの構造物を.nbtファイルに保存できます。", - "item.create.schematic_and_quill.tooltip.condition1": "ステップ1", - "item.create.schematic_and_quill.tooltip.behaviour1": "右クリックして2つのコーナーポイントを選択します。", - "item.create.schematic_and_quill.tooltip.condition2": "ステップ2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrlキーを押しながらスクロール_して、サイズを調整します。もう一度右クリックして保存します。", - "item.create.schematic_and_quill.tooltip.control1": "右クリックしたとき", - "item.create.schematic_and_quill.tooltip.action1": "コーナーポイントを選択/保存を確認します。", - "item.create.schematic_and_quill.tooltip.control2": "Ctrlを長押してるとき", - "item.create.schematic_and_quill.tooltip.action2": "_空中_でポイントを選択します。_スクロール_して距離を調整します。", - "item.create.schematic_and_quill.tooltip.control3": "スニークしながら右クリックしたとき", - "item.create.schematic_and_quill.tooltip.action3": "選択を_リセット_して削除します。", - - "block.create.schematicannon.tooltip": "概略図砲", - "block.create.schematicannon.tooltip.summary": "ブロックを撃って、展開された_概略図_をもとにワールドに設置します。隣接する収納ブロックからのアイテムを自動搬入し、_火薬_を燃料とします。", - "block.create.schematicannon.tooltip.condition1": "右クリックしたとき", - "block.create.schematicannon.tooltip.behaviour1": "_インターフェース_を開きます。", - - "block.create.schematic_table.tooltip": "概略図テーブル", - "block.create.schematic_table.tooltip.summary": "保存された構造物を_空の概略図_に書き込みます。", - "block.create.schematic_table.tooltip.condition1": "空の概略図を入れたとき", - "block.create.schematic_table.tooltip.behaviour1": "Schematicsフォルダから選択したファイルをアップロードします。", - - "item.create.goggles.tooltip": "ゴーグル", - "item.create.goggles.tooltip.summary": "有用な_回転力_の_情報_を視界に映す眼鏡。", - "item.create.goggles.tooltip.condition1": "着用したとき", - "item.create.goggles.tooltip.behaviour1": "設置された機械の_回転速度_および、_機械_の_応力への影響_と_許容量_を_色付きのインジケーター_で表示します。", - "item.create.goggles.tooltip.condition2": "計器を見たとき", - "item.create.goggles.tooltip.behaviour2": "計器が接続されているネットワークの_回転速度_または_応力_に関する詳細情報を表示します。", - "item.create.goggles.tooltip.condition3": "液体コンテナを見たとき", - "item.create.goggles.tooltip.behaviour3": "ブロックの_容量_と、その中に貯蔵されている_液体_の詳細情報を表示します。", - - "item.create.wrench.tooltip": "レンチ", - "item.create.wrench.tooltip.summary": "機械いじりに便利な道具。機械の_回転_、_解体_、_設定_に使います。", - "item.create.wrench.tooltip.control1": "機械を右クリックしたとき", - "item.create.wrench.tooltip.action1": "操作した面に向かって、または面から離れるように_機械_を_回転_させます。", - "item.create.wrench.tooltip.control2": "スニークしながら右クリックしたとき", - "item.create.wrench.tooltip.action2": "_機械を分解_し、_インベントリ_に戻します。", - - "block.create.nozzle.tooltip": "ノズル", - "block.create.nozzle.tooltip.summary": "_ケース入りファン_の前面に取り付けて、エンティティへの影響を_全方向_に分散します。", - - "block.create.cuckoo_clock.tooltip": "鳩時計", - "block.create.cuckoo_clock.tooltip.summary": "空間を_彩り_、_時間を刻む_素晴らしい細工。", - "block.create.cuckoo_clock.tooltip.condition1": "回転したとき", - "block.create.cuckoo_clock.tooltip.behaviour1": "_現在の時刻_を表示し、1日に2回曲を再生します。、_正午_と夕暮れに_プレイヤーが眠れる_時間になるとすぐに_再生_します。", - - "block.create.turntable.tooltip": "ターンテーブル", - "block.create.turntable.tooltip.summary": "_回転力_を洗練された乗り物酔いに変えます。", - - "block.create.portable_fluid_interface.tooltip": "ポータブル液体インターフェース", - "block.create.portable_fluid_interface.tooltip.summary": "ピストン、ベアリング、トロッコ、またはプーリーで移動する_構造物_との間で_液体_を_移動_させる可搬式の交換ポイント。2つのインターフェースは、互いに_向かい合って_、_1~2ブロック離す_必要があります。", - "block.create.portable_fluid_interface.tooltip.condition1": "動かしたとき", - "block.create.portable_fluid_interface.tooltip.behaviour1": "設置してある_ポータブル液体インターフェース_と相互作用して、構造物との間で液体を移動させます。_設置してあるインターフェース_に搬入、または搬出するパイプは、構造物のタンクと_直接_相互作用します。液体が交換される間、構造物は一時的に停止します。", - "block.create.portable_fluid_interface.tooltip.condition2": "レッドストーン信号を受けたとき", - "block.create.portable_fluid_interface.tooltip.behaviour2": "アクティブな接続を即座に_切断_します。", - - "block.create.stockpile_switch.tooltip": "在庫スイッチ", - "block.create.stockpile_switch.tooltip.summary": "接続されたコンテナの_空き容量_に基づいてレッドストーン信号を切り替えます。便利なフィルターが付属しています。_コンパレータ―_とは違って、_在庫スイッチ_は、信号が反転される_しきい値_を設定できます。", - "block.create.stockpile_switch.tooltip.condition1": "右クリックしたとき", - "block.create.stockpile_switch.tooltip.behaviour1": "_設定インターフェース_を開きます。", - - "block.create.content_observer.tooltip": "コンテンツオブザーバー", - "block.create.content_observer.tooltip.summary": "設定された_フィルター_に一致する_コンテナ_や_メカニカルベルト_内の_アイテム_を_検出_します。観察している_収納ブロック_、_ベルト_、または_シュート_に一致するアイテムが含まれている場合、このは_レッドストーン信号_を発します。観察された_ファンネル_が一致するアイテムを_運搬_すると、このコンポーネントは_レッドストーンパルス_を発します。", - - "block.create.adjustable_crate.tooltip": "可変クレート", - "block.create.adjustable_crate.tooltip.summary": "この_収納ブロック_は、容量を手動で調整できます。任意のアイテムを_16スタック_まで収納できます。_レッドストーンコンパレーター_に対応しています。", - "block.create.adjustable_crate.tooltip.condition": "右クリックしたとき", - "block.create.adjustable_crate.tooltip.behaviour1": "_インターフェース_を開きます。", - - "block.create.creative_crate.tooltip": "クリエイティブクレート", - "block.create.creative_crate.tooltip.summary": "この_収納ブロック_は、あらゆるアイテムを無限に複製します。隣接する_概略図砲_へブロックを無限に供給します。", - "block.create.creative_crate.tooltip.condition1": "フィルタースロットにアイテムが入っているとき", - "block.create.creative_crate.tooltip.behaviour1": "このクレートから何かを_搬出_すると、指定されたアイテムが_無限_に_搬出_されます。このクレートに_搬入_されたアイテムは_消滅_します。", - - "block.create.controller_rail.tooltip": "コントローラーレール", - "block.create.controller_rail.tooltip.summary": "トロッコの_移動速度_を_細かく制御_できる_一方通行_の_パワード_レール", - "block.create.controller_rail.tooltip.condition1": "レッドストーン信号を受けたとき", - "block.create.controller_rail.tooltip.behaviour1": "通過する_トロッコ_を_信号の強度_に対応した移動速度に_加速_または_減速_します。また、隣接するコントローラレールにレッドストーン信号を伝達します。2つのコントローラレールに強度の異なるレッドストーン信号を供給すると、それらの間のレールはその信号の変化を補間します。", - - "item.create.sand_paper.tooltip": "紙やすり", - "item.create.sand_paper.tooltip.summary": "_素材_を_磨く_のに使える荒い紙。デプロイヤーに自動的で磨かせることもできます。", - "item.create.sand_paper.tooltip.condition1": "使ったとき", - "item.create.sand_paper.tooltip.behaviour1": "_オフハンド_で持っていたり、_視線先_の_ドロップ状態のアイテム_を磨きます。", - - "item.create.builders_tea.tooltip": "建築家のお茶", - "item.create.builders_tea.tooltip.summary": "_やる気_がみなぎる、一日の始まりに最適な飲み物。", - - "item.create.refined_radiance.tooltip": "高貴な光輝", - "item.create.refined_radiance.tooltip.summary": "_吸収した光輝_から鍛造した色彩素材。", - - "item.create.shadow_steel.tooltip": "シャドウスチール", - "item.create.shadow_steel.tooltip.summary": "_奈落の虚無_から鍛造した色彩素材。", - - "item.create.minecart_coupling.tooltip": "トロッコ連結器", - "item.create.minecart_coupling.tooltip.summary": "壮大な列車を作るために_トロッコ_や_からくり車両_を_連結_しよう。", - "item.create.minecart_coupling.tooltip.condition1": "トロッコに使ったとき", - "item.create.minecart_coupling.tooltip.behaviour1": "_2台_のトロッコを連結します。それらは移動中に_一定_の_距離_を保とうします。", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "作業中です!", - "create.tooltip.randomWipDescription0": "お子様の手の届かないところに保管してください。", - "create.tooltip.randomWipDescription1": "赤ちゃんパンダは、このアイテムを使うたびに死にます。そう、いつでもね。", - "create.tooltip.randomWipDescription2": "自己責任。", - "create.tooltip.randomWipDescription3": "これはあなたが探しているアイテムではありません。*人差し指を振って*ちっちっちっ、解散!", - "create.tooltip.randomWipDescription4": "このアイテムは10秒で自爆します。10、9、8 ...", - "create.tooltip.randomWipDescription5": "私を信じて、それは無駄だ。", - "create.tooltip.randomWipDescription6": "このアイテムを使うことにより、お客様は免責事項に同意し、その条件を承諾するものとします。", - "create.tooltip.randomWipDescription7": "これは君に向いていないかもしれない。あれはどう??", - "create.tooltip.randomWipDescription8": "それを使ったことをすぐ後悔するだろう。", - - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "[%1$s] を長押しして思案画面を開く", - "create.ponder.subject": "このシーンの主題", - "create.ponder.pondering": "思案中...", - "create.ponder.identify_mode": "確認モードになっています.\n [%1$s] で一時停止を解除", - "create.ponder.associated": "関連項目", - "create.ponder.close": "閉じる", - "create.ponder.identify": "ブロック名を確認", - "create.ponder.next": "次のシーン", - "create.ponder.previous": "前のシーン", - "create.ponder.replay": "最初から", - "create.ponder.think_back": "戻る", - "create.ponder.slow_text": "熟考(スロー再生)", - "create.ponder.shared.movement_anchors": "シャーシや超粘着剤を使えば大きな構造物も動かせます", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "スニーク +", - "create.ponder.shared.storage_on_contraption": "構造物中の収納ブロックは自動的にドロップを拾います", - "create.ponder.shared.behaviour_modify_wrench": "この挙動はレンチを使って変更できます", - "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "動力源: 16 RPM", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "原動機", - "create.ponder.tag.kinetic_sources.description": "回転力を生み出す機械です", - "create.ponder.tag.contraption_actor": "からくり構造部品", - "create.ponder.tag.contraption_actor.description": "ブロックを動かす機械に取り付けたときに特別な動作をする機械です", - "create.ponder.tag.arm_targets": "メカニカルアームのターゲット", - "create.ponder.tag.arm_targets.description": "メカニカルアームの搬入元または搬出先にできる機械/ブロックです", - "create.ponder.tag.logistics": "輸送機械", - "create.ponder.tag.logistics.description": "アイテムの運搬を補助する機械です", - "create.ponder.tag.movement_anchor": "からくり機械", - "create.ponder.tag.movement_anchor.description": "取り付けたブロック構造物を様々な方法で動かすことができるからくりを作ることができる機械です", - "create.ponder.tag.creative": "クリエイティブ限定", - "create.ponder.tag.creative.description": "サバイバルモードでは通常入手できない機械です", - "create.ponder.tag.kinetic_relays": "伝達機械", - "create.ponder.tag.kinetic_relays.description": "回転力の伝達に役立つ機械です", - "create.ponder.tag.windmill_sails": "風車ベアリング用の帆", - "create.ponder.tag.windmill_sails.description": "風車につける構造物を組み立てたときに帆にカウントされるブロック。どのブロックを使っても同じ効率です", - "create.ponder.tag.contraption_assembly": "ブロック組み立て用品", - "create.ponder.tag.contraption_assembly.description": "アニメーションして動く構造物を組み立てるための道具や機械です", - "create.ponder.tag.decoration": "装飾", - "create.ponder.tag.decoration.description": "主に装飾に使うブロックです", - "create.ponder.tag.kinetic_appliances": "作業機械", - "create.ponder.tag.kinetic_appliances.description": "回転力を利用する機械です", - "create.ponder.tag.redstone": "制御機械", - "create.ponder.tag.redstone.description": "レッドストーン工学に役立つ機械です", - "create.ponder.tag.fluids": "液体制御機械", - "create.ponder.tag.fluids.description": "液体の輸送や利用に役立つ機械です", - - "create.ponder.adjustable_pulse_repeater.header": "可変パルスリピーターによる信号制御", - "create.ponder.adjustable_pulse_repeater.text_1": "可変パルスリピーターは信号を遅延し、短いパルスにして出力します", - "create.ponder.adjustable_pulse_repeater.text_2": "マウスホイールで遅延時間を調整できます", - "create.ponder.adjustable_pulse_repeater.text_3": "最大30分まで遅延時間を調整できます", - - "create.ponder.adjustable_repeater.header": "可変リピーターによる信号制御", - "create.ponder.adjustable_repeater.text_1": "可変リピーターは通常のレッドストーンリピーターと同様の動作をします", - "create.ponder.adjustable_repeater.text_2": "決められた時間だけ遅延します...", - "create.ponder.adjustable_repeater.text_3": "...そして同じ時間だけクールダウンします", - "create.ponder.adjustable_repeater.text_4": "マウスホイールで遅延時間を調整できます", - "create.ponder.adjustable_repeater.text_5": "最大30分まで遅延時間を調整できます", - - "create.ponder.analog_lever.header": "アナログレバーによる信号制御", - "create.ponder.analog_lever.text_1": "アナログレバーはコンパクトに正確なレッドストーン動力を出力できます。", - "create.ponder.analog_lever.text_2": "右クリックでレッドストーン強度を上げられます。", - "create.ponder.analog_lever.text_3": "スニークしながら右クリックでレッドストーン強度を下げられます。", - - "create.ponder.andesite_tunnel.header": "安山岩トンネルの使い方", - "create.ponder.andesite_tunnel.text_1": "安山岩のトンネルは、ベルトを隠せます", - "create.ponder.andesite_tunnel.text_2": "安山岩のトンネルが横につながっていると...", - "create.ponder.andesite_tunnel.text_3": "...通過するアイテムスタックから正確に1つのアイテムを分割します", - "create.ponder.andesite_tunnel.text_4": "残ったものは、そのルートを進み続けます", - - "create.ponder.basin.header": "鉢によるアイテム加工", - "create.ponder.basin.text_1": "鉢には材料となるアイテムや液体を入れられます", - "create.ponder.basin.text_2": "鉢は完成品アイテムを斜め下へ搬出しようとします", - "create.ponder.basin.text_3": "搬出できる機械が存在する場合、鉢には搬出用の蛇口が表示されます", - "create.ponder.basin.text_4": "ここではいくつかの選択肢があります", - "create.ponder.basin.text_5": "搬出したアイテムは下の収納ブロックに入ります", - "create.ponder.basin.text_6": "搬出先がない場合、鉢は完成品アイテムを保持します", - "create.ponder.basin.text_7": "これは、完成品アイテムを材料として再利用する必要がある場合に役立ちます", - "create.ponder.basin.text_8": "完成品アイテムは、鉢から搬出する必要があります", - "create.ponder.basin.text_9": "未処理のアイテムが搬出されないように、フィルターが必要になる場合があります", - - "create.ponder.bearing_modes.header": ":メカニカルベアリングの動作モード", - "create.ponder.bearing_modes.text_1": "止まったとき、ベアリングは格子に沿った近い角度に構造物を配置します", - "create.ponder.bearing_modes.text_2": "通常のブロックに戻らないように設定したり、開始時の角度のみブロックに戻るように設定することもできます", - - "create.ponder.belt_casing.header": "ケース入りベルト", - "create.ponder.belt_casing.text_1": "真鍮か安山岩のケーシングを使ってメカニカルベルトを飾れます", - "create.ponder.belt_casing.text_2": "ケーシングはレンチを使って外せます", - - "create.ponder.belt_connector.header": "メカニカルベルトの使い方", - "create.ponder.belt_connector.text_1": "メカニカルベルトを持って2つのシャフトを右クリックすると、シャフトにベルトコンベアを繋げて設置されます", - "create.ponder.belt_connector.text_2": "誤ったシャフトをクリックしてしまった場合、スニークしながら右クリックでキャンセルできます", - "create.ponder.belt_connector.text_3": "ベルトの何処にでもシャフトを追加できます", - "create.ponder.belt_connector.text_4": "ベルトを介して接続されたシャフトは、同じ速度・方向で回転します", - "create.ponder.belt_connector.text_5": "追加したシャフトは、レンチで取り除けま", - "create.ponder.belt_connector.text_6": "メカニカルベルトは見栄えのために染色できます", - - "create.ponder.belt_directions.header": "メカニカルベルトの有効な向きについて", - "create.ponder.belt_directions.text_1": "ベルトは自由な方向に接続できるわけではありません", - "create.ponder.belt_directions.text_2": "1.水平方向", - "create.ponder.belt_directions.text_3": "2.斜め", - "create.ponder.belt_directions.text_4": "3.垂直方向", - "create.ponder.belt_directions.text_5": "4.垂直方向のシャフトを水平に", - "create.ponder.belt_directions.text_6": "これらはすべて接続可能な方向です。ベルトの長さは2~20ブロックの間で自由に接続できます", - - "create.ponder.belt_transport.header": "メカニカルベルトによる運搬", - "create.ponder.belt_transport.text_1": "ベルトを動かすと、アイテムやエンティティを運べます", - "create.ponder.belt_transport.text_2": "素手で右クリックすると、ベルトからアイテムを取り出せます", - - "create.ponder.blaze_burner.header": "ブレイズバーナーへの餌やり", - "create.ponder.blaze_burner.text_1": "ブレイズバーナーは、鉢で加工するアイテムを加熱できます", - "create.ponder.blaze_burner.text_2": "その為には、ブレイズに燃料を与える必要があります", - "create.ponder.blaze_burner.text_3": "ブレイズケーキを与えると、バーナーはさらに強力な火力を出せます", - "create.ponder.blaze_burner.text_4": "供給作業は、デプロイヤーやメカニカルアームで自動化できます", - - "create.ponder.brass_funnel.header": "真鍮ファンネル", - "create.ponder.brass_funnel.text_1": "安山岩ファンネルでは、1回につき1つのアイテムしか搬出できません", - "create.ponder.brass_funnel.text_2": "真鍮ファンネルは、最大で1スタックのアイテムを搬出できます", - "create.ponder.brass_funnel.text_3": "フィルタースロットを見ながらスクロールすると、取り出すアイテム数を正確に調整できます", - "create.ponder.brass_funnel.text_4": "フィルタースロットにアイテムを設定すると、ファンネルは一致するアイテムのみを運搬できます", - - "create.ponder.brass_tunnel.header": "真鍮トンネルの使い方", - "create.ponder.brass_tunnel.text_1": "真鍮トンネルは、ベルトを隠せます", - "create.ponder.brass_tunnel.text_2": "真鍮トンネルには、搬出入面それぞれにフィルタースロットがあります", - "create.ponder.brass_tunnel.text_3": "搬入側のフィルターは、単純に一致しないアイテムを搬入しないようにします", - "create.ponder.brass_tunnel.text_4": "搬出側のフィルターは、搬出するアイテムを種類別に分類できます", - "create.ponder.brass_tunnel.text_5": "通過するアイテムが複数の口から搬出できる場合は、モードによってどのように搬出されるかが決まります", - "create.ponder.brass_tunnel.text_6": "並べられた複数のベルト上の真鍮製トンネルは接続されます", - "create.ponder.brass_tunnel.text_7": "搬入したアイテムは、接続されているすべての搬出口に分配されます", - "create.ponder.brass_tunnel.text_8": "アイテムをトンネルへ直接搬入することもできます", - - "create.ponder.brass_tunnel_modes.header": "真鍮トンネルのモード", - "create.ponder.brass_tunnel_modes.text_1": "真鍮トンネルはレンチを使って分配モードを変更できます", - "create.ponder.brass_tunnel_modes.text_10": "「同期」は、真鍮製トンネルのデフォルト設定です", - "create.ponder.brass_tunnel_modes.text_11": "アイテムはグループ内の全てのトンネルがアイテムを搬入できる場合のみ通過を許可します", - "create.ponder.brass_tunnel_modes.text_12": "これにより、影響を受ける全てのベルトに同じ割合でアイテムを供給できます", - "create.ponder.brass_tunnel_modes.text_2": "「スタック分割」は、アイテムを通せる搬出口の間でアイテムスタックを均等に分配しようとします", - "create.ponder.brass_tunnel_modes.text_3": "搬出口がアイテムを通せない場合はスキップされます ", - "create.ponder.brass_tunnel_modes.text_4": "「強制スタック分割」は搬出をスキップせず、それができるようになるまで待機します", - "create.ponder.brass_tunnel_modes.text_5": "「順繰り分配」 はスタックを分割せず、それぞれの搬出口から順番に搬出します ", - "create.ponder.brass_tunnel_modes.text_6": "繰り返しになりますが、搬出口がアイテムを通せない場合はスキップされます", - "create.ponder.brass_tunnel_modes.text_7": "「強制順繰り分配」は、搬出をスキップしません", - "create.ponder.brass_tunnel_modes.text_8": "「近い所を優先」アイテムの搬入口に最も近い搬出口から優先して分配します ", - "create.ponder.brass_tunnel_modes.text_9": "「ランダム」は、スタック全体をランダムに選択された搬出口に分配します ", - - "create.ponder.cart_assembler.header": "トロッコアセンブラによる構造物の移動", - "create.ponder.cart_assembler.text_1": "レッドストーン信号を受けたアセンブラは、通過するトロッコに接続された構造物を取り付けます", - "create.ponder.cart_assembler.text_2": "レッドストーン信号を受けていない場合、通過するトロッコの構造物を取り外し、ブロックへ戻します", - "create.ponder.cart_assembler.text_3": "トロッコにレンチを使うと、構造物を付けたまま別の場所へ運べます", - - "create.ponder.cart_assembler_dual.header": "列車を組み立てる", - "create.ponder.cart_assembler_dual.text_1": "2つのトロッコアセンブラが構造物を共有している場合...", - "create.ponder.cart_assembler_dual.text_2": "...どちらかにレッドストーン信号を受けると、列車が組み立てられます", - "create.ponder.cart_assembler_dual.text_3": "トロッコ連結器で接続されたトロッコと同様の動作をします", - - "create.ponder.cart_assembler_modes.header": "からくり付きトロッコの方向設定", - "create.ponder.cart_assembler_modes.text_1": "トロッコの構造物は、トロッコの動きに合わせて回転します", - "create.ponder.cart_assembler_modes.text_2": "アセンブラーが「常に向きを固定する」に設定されている場合、構造物の向きは変わりません", - - "create.ponder.cart_assembler_rails.header": "その他のトロッコとレールの種類", - "create.ponder.cart_assembler_rails.text_1": "通常のレールに設置されたトロッコアセンブラは、通過するカートの動きに影響を与えません", - "create.ponder.cart_assembler_rails.text_2": "パワードレールやコントローラーレールでは、レッドストーン信号を受けるまでトロッコは固定されます", - "create.ponder.cart_assembler_rails.text_3": "他のトロッコをアンカーとして使えます", - "create.ponder.cart_assembler_rails.text_4": "かまど付きトロッコは、構造物の収納ブロックから燃料を確保します", - - "create.ponder.chain_drive.header": "ケース入りチェーンドライブによる回転力の伝達", - "create.ponder.chain_drive.text_1": "チェーンドライブは、一列に並べると回転を伝達します", - "create.ponder.chain_drive.text_2": "この様に接続された全てのシャフトは、回転方向が同じです", - "create.ponder.chain_drive.text_3": "列のどの部分でも90度回転させて設置できます", - - "create.ponder.chain_gearshift.header": "チェーンギアシフトによる回転速度の制御", - "create.ponder.chain_gearshift.text_1": "信号を受けていないチェーンギアシフトは、チェーンドライブと同じように動作します", - "create.ponder.chain_gearshift.text_2": "信号を受けている時は、列内の他のチェーンドライブに伝達される速度が2倍になります", - "create.ponder.chain_gearshift.text_3": "信号を受けているチェーンギアシフトが動力源に無い場合、速度が半分になります", - "create.ponder.chain_gearshift.text_4": "いずれの場合も、列内のチェーンドライブは常に「信号入りチェーンギアシフト」の2倍の速度で動作します", - "create.ponder.chain_gearshift.text_5": "レッドストーン信号の強度で、比率を1と2の間でより正確に調整できます", - "create.ponder.chain_gearshift.text_6": "12 RPM", - - "create.ponder.chute.header": "シュートでの下方向へ運搬", - "create.ponder.chute.text_1": "シュートは、収納ブロックから垂直方向にアイテムを運搬できます", - "create.ponder.chute.text_2": "レンチを使って、窓を付けられます", - "create.ponder.chute.text_3": "シュートを側面に配置すると、斜めに接続されます", - - "create.ponder.chute_upward.header": "シュートでの上方向へ運搬", - "create.ponder.chute_upward.text_1": "シュートの上部または下部にファンを配置すると、アイテムを上方向へ運搬できます", - "create.ponder.chute_upward.text_2": "エンジニアのゴーグルを付けてシュートを見ると、移動方向の情報が表示されます", - "create.ponder.chute_upward.text_3": "ブロックで詰まっている端では、アイテムを側面から搬出入する必要があります", - - "create.ponder.clockwork_bearing.header": "時計仕掛けのベアリングを使った構造物のアニメーション", - "create.ponder.clockwork_bearing.text_1": "時計仕掛けのベアリングは、前面にブロックを取り付けられます", - "create.ponder.clockwork_bearing.text_2": "回転力を受けると、現在の時間に合わせて構造物が回転します", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "ベアリングを右クリックして、構造物のアニメーションを開始・停止します", - "create.ponder.clockwork_bearing.text_6": "時針の前に、2つ目の構造物を追加できます", - "create.ponder.clockwork_bearing.text_7": "2つの構造物が超粘着剤などでくっついていないことを確認してください", - "create.ponder.clockwork_bearing.text_8": "2つ目の構造物は分針として回転します", - - "create.ponder.clutch.header": "クラッチによる回転力の制御", - "create.ponder.clutch.text_1": "クラッチは直線に回転を伝達します", - "create.ponder.clutch.text_2": "レッドストーン信号を受けると、回転の伝達を停止します", - - "create.ponder.cog_speedup.header": "歯車による回転速度変化", - "create.ponder.cog_speedup.text_1": "大小の歯車は斜めに接続できます", - "create.ponder.cog_speedup.text_2": "大きな歯車から歯車に接続すると、伝達される回転速度が2倍になります", - "create.ponder.cog_speedup.text_3": "逆に接続すると、伝達される回転速度が半分になります", - - "create.ponder.cogwheel.header": "歯車による回転力の伝達", - "create.ponder.cogwheel.text_1": "歯車は隣接する歯車へ回転力を伝達します", - "create.ponder.cogwheel.text_2": "このように連結された隣のシャフトは、逆方向に回転します", - - "create.ponder.creative_motor.header": "クリエイティブモーターによる回転力の生成", - "create.ponder.creative_motor.text_1": "クリエイティブモーターは、コンパクトで調整できる原動機です", - "create.ponder.creative_motor.text_2": "背面パネルを見てスクロールすると、モーターの回転速度を変更できます", - - "create.ponder.crushing_wheels.header": "破砕ホイールによるアイテム加工", - "create.ponder.crushing_wheels.text_1": "一対の破砕ホイールは、非常に効果的にアイテムを粉砕できます", - "create.ponder.crushing_wheels.text_2": "動作には、互いに逆方向で回転させる必要があります", - "create.ponder.crushing_wheels.text_3": "上からアイテムを投げ入れたりして、搬入すると加工されます", - "create.ponder.crushing_wheels.text_4": "アイテムを搬出入を自動化することもできます", - - "create.ponder.deployer.header": "デプロイヤーの使い方", - "create.ponder.deployer.text_1": "回転力を供給したデプロイヤーは、プレイヤーの動作を模倣できます", - "create.ponder.deployer.text_10": "前面へアイテムを右クリックして、アイテムを搬出入できます", - "create.ponder.deployer.text_11": "自動でアイテムを搬出入することもできます", - "create.ponder.deployer.text_12": "デプロイヤーはフィルタースロットを持っています", - "create.ponder.deployer.text_13": "フィルターを設定すると、一致するアイテムを持っている時だけ稼働します", - "create.ponder.deployer.text_14": "また、フィルターに一致するアイテムのみが搬入されるようになり...", - "create.ponder.deployer.text_15": "...一致しないアイテムのみが搬出されます", - "create.ponder.deployer.text_2": "動作は、常に前方2ブロックの位置へ行われます", - "create.ponder.deployer.text_3": "真正面のブロックが邪魔になることはありません", - "create.ponder.deployer.text_4": "デプロイヤーは以下の動作に使えます", - "create.ponder.deployer.text_5": "ブロックの設置", - "create.ponder.deployer.text_6": "アイテムの使用", - "create.ponder.deployer.text_7": "ブロックの使用", - "create.ponder.deployer.text_8": "ブロックの収穫", - "create.ponder.deployer.text_9": "モブへの攻撃", - - "create.ponder.deployer_contraption.header": "からくりに組み込んでのデプロイヤーの使い方", - "create.ponder.deployer_contraption.text_1": "からくりの一部として、デプロイヤーを稼働させると...", - "create.ponder.deployer_contraption.text_2": "...稼働した場所ごとに稼働し、からくり内の収納ブロックのアイテムを使用します", - "create.ponder.deployer_contraption.text_3": "フィルタースロットを使って、どのアイテムを使用するか指定できます", - - "create.ponder.deployer_modes.header": "デプロイヤーのモード", - "create.ponder.deployer_modes.text_1": "デフォルトでは、デプロイヤーは右クリックの動作を模倣します", - "create.ponder.deployer_modes.text_2": "レンチを使えば、左クリックの動作を模倣するように設定できます", - - "create.ponder.deployer_redstone.header": "レッドストーン信号によるデプロイヤーの制御", - "create.ponder.deployer_redstone.text_1": "レッドストーン信号を受けている間、デプロイヤーは稼働しません", - "create.ponder.deployer_redstone.text_2": "デプロイヤーは停止する前に、開始したサイクルは終了させます", - "create.ponder.deployer_redstone.text_3": "その為、オフのパルス信号を使って丁度1サイクルだけ稼働させられます", - - "create.ponder.depot.header": "デポの使い方", - "create.ponder.depot.text_1": "デポは動かないメカニカルベルトのようなブロックです", - "create.ponder.depot.text_2": "右クリックして、手動でのアイテム搬出入できます", - "create.ponder.depot.text_3": "メカニカルベルトのように、載せたアイテムを加工できます", - "create.ponder.depot.text_4": "また、メカニカルアームにアイテムを供給することもできます", - - "create.ponder.empty_blaze_burner.header": "空のブレイズバーナーの使い方", - "create.ponder.empty_blaze_burner.text_1": "空のバーナーでブレイズを右クリックし捕獲できます", - "create.ponder.empty_blaze_burner.text_2": "また、ブレイズはスポーンブロックから直接捕獲することもできます", - "create.ponder.empty_blaze_burner.text_3": "これで、様々な機械で利用する理想的な熱源が得られます", - "create.ponder.empty_blaze_burner.text_4": "空のブレイズバーナーは火打石と打ち金を使って火を付ければ装飾にも使えます", - "create.ponder.empty_blaze_burner.text_5": "しかし、これは加工用の熱源には適していません", - - "create.ponder.fan_direction.header": "ケース入りファンの気流", - "create.ponder.fan_direction.text_1": "ケース入りファンは、回転力を利用して気流を生み出します", - "create.ponder.fan_direction.text_2": "気流の強さと方向は、供給される回転力に依存します", - - "create.ponder.fan_processing.header": "ケース付きファンによるアイテム加工", - "create.ponder.fan_processing.text_1": "溶岩を通過した気流は、加熱されます", - "create.ponder.fan_processing.text_2": "この気流に当てられたアイテムは精錬されます", - "create.ponder.fan_processing.text_3": "ただし、食品は焼却されてしまいます", - "create.ponder.fan_processing.text_4": "食品加工には、代わりに火を使った燻製気流を利用する必要があります", - "create.ponder.fan_processing.text_5": "水を通過する気流は、洗浄気流になります", - "create.ponder.fan_processing.text_6": "この気流を使って、いくつかの面白い加工ができます", - "create.ponder.fan_processing.text_7": "ファンの速度は処理速度とは関係がなく、範囲のみが変わります", - "create.ponder.fan_processing.text_8": "ファンでの加工は、デポやベルト上のアイテムにも行われます", - - "create.ponder.fan_source.header": "ケース入りファンによる回転力の生成", - "create.ponder.fan_source.text_1": "ファンを熱源に向けて設置すると、回転力を生成できます", - "create.ponder.fan_source.text_2": "レッドストーン信号を受けると、回転力が生成されます", - - "create.ponder.flywheel.header": "勢車による回転力の生成", - "create.ponder.flywheel.text_1": "かまどエンジンで回転力を生成するには、勢車が必要です", - "create.ponder.flywheel.text_2": "これによって生成される回転力は、非常に大きな応力許容量を持っています", - "create.ponder.flywheel.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", - - "create.ponder.funnel_compat.header": "ファンネルの互換性", - "create.ponder.funnel_compat.text_1": "ファンネルは、他のいくつかの機械とも相性が良いです", - "create.ponder.funnel_compat.text_2": "上向きのメカニカルソー", - "create.ponder.funnel_compat.text_3": "デポ", - "create.ponder.funnel_compat.text_4": "アイテム排液口など", - - "create.ponder.funnel_direction.header": "運搬の方向", - "create.ponder.funnel_direction.text_1": "通常の配置では、収納ブロックからアイテムを搬出ます", - "create.ponder.funnel_direction.text_2": "スニークしながら設置すると、収納ブロックにアイテムを搬入します", - "create.ponder.funnel_direction.text_3": "レンチを使って、設置後にファンネルのモードを変えられます", - "create.ponder.funnel_direction.text_4": "ほとんどの方向で同じことができます", - "create.ponder.funnel_direction.text_5": "ベルト上のファンネルは、ベルトの移動方向に応じて搬入/搬出が決まります", - - "create.ponder.funnel_intro.header": "ファンネルの使い方", - "create.ponder.funnel_intro.text_1": "ファンネルは、収納ブロックのアイテムを運搬するのに使います", - - "create.ponder.funnel_redstone.header": "レッドストーンコントロール", - "create.ponder.funnel_redstone.text_1": "レッドストーン信号によって、ファンネルが動作を防げます", - - "create.ponder.funnel_transfer.header": "直接運搬", - "create.ponder.funnel_transfer.text_1": "ファンネルでは、閉じた収納ブロック間を直接運搬することはできません", - "create.ponder.funnel_transfer.text_2": "この様な場合は、シュートやスマートシュートの方が適しています", - "create.ponder.funnel_transfer.text_3": "また水平方向の運搬も同様で、この場合メカニカルベルトの方が適しています", - - "create.ponder.furnace_engine.header": "かまどエンジンによる回転力の生成", - "create.ponder.furnace_engine.text_1": "かまどエンジンは、取り付けたかまどの稼働中に回転力を生成します", - "create.ponder.furnace_engine.text_2": "この回転力は、非常に大きな応力許容量を持っています", - "create.ponder.furnace_engine.text_3": "溶鉱炉を使うと、エンジンの効率が2倍になります", - - "create.ponder.gantry_carriage.header": "ガントリーキャリッジの使い方", - "create.ponder.gantry_carriage.text_1": "ガントリーキャリッジは、ガントリーシャフトに取り付けてスライドさせられます", - "create.ponder.gantry_carriage.text_2": "ガントリーの仕掛けは、取り付けたブロックを動かせます", - - "create.ponder.gantry_cascaded.header": "立体ガンドリー", - "create.ponder.gantry_cascaded.text_1": "ガントリーシャフトは、超粘着剤を使わずにキャリッジに取り付けられます", - "create.ponder.gantry_cascaded.text_2": "そのガントリーシャフトに取り付けたキャリッジも同様です", - "create.ponder.gantry_cascaded.text_3": "このように、ガントリー機構を立体的に接続すると、複数の移動軸をカバーできます", - - "create.ponder.gantry_direction.header": "ガントリーの移動方向", - "create.ponder.gantry_direction.text_1": "ガントリーシャフトは、向きを反対に設置できます", - "create.ponder.gantry_direction.text_2": "キャリッジの移動方向は、シャフトの向きによって決まります", - "create.ponder.gantry_direction.text_3": "また、シャフトの回転方向にも依存します", - "create.ponder.gantry_direction.text_4": "キャリッジへ伝達する回転力も同じルールが適用されます", - - "create.ponder.gantry_redstone.header": "ガントリーでの回転力の伝播", - "create.ponder.gantry_redstone.text_1": "レッドストーン信号を受けたガントリーシャフトは、キャリッジの移動を停止します", - "create.ponder.gantry_redstone.text_2": "代わりに、その回転力がキャリッジの出力軸から伝達されます", - - "create.ponder.gantry_shaft.header": "ガントリーシャフトの使い方", - "create.ponder.gantry_shaft.text_1": "ガントリーシャフトは、ガントリー機構の基本となるものです。取り付けられたキャリッジはこのシャフトに沿って移動します", - "create.ponder.gantry_shaft.text_2": "ガントリーによるからくりは、取り付けたブロックを動かせます", - - "create.ponder.gearbox.header": "ギアボックスによる回転力の伝達", - "create.ponder.gearbox.text_1": "回転軸の向きを変えようとすると、すぐに機構がかさばってしまいます", - "create.ponder.gearbox.text_2": "これをコンパクトにしたものがギアボックスです", - "create.ponder.gearbox.text_3": "角を曲がったシャフトは鏡映しの方向に回転します", - "create.ponder.gearbox.text_4": "直線方向への接続は、回転方向が逆になります", - - "create.ponder.gearshift.header": "ギアシフトによる回転力の制御", - "create.ponder.gearshift.text_1": "ギアシフトは、直線に回転を伝達します", - "create.ponder.gearshift.text_2": "レッドストーン信号を受けると、回転方向を逆に伝達します", - - "create.ponder.hand_crank.header": "ハンドクランクによる回転力の生成", - "create.ponder.hand_crank.text_1": "ハンドクランクは手動で回転力を生み出す機械です", - "create.ponder.hand_crank.text_2": "右クリックし続けると、反時計回りに回転します", - "create.ponder.hand_crank.text_3": "回転速度は比較的速めです", - "create.ponder.hand_crank.text_4": "スニークしながら右クリックし続けると、時計回りに回転します", - - "create.ponder.large_cogwheel.header": "大きな歯車による回転力の伝達", - "create.ponder.large_cogwheel.text_1": "大きな歯車は、直角に接続できます", - "create.ponder.large_cogwheel.text_2": "回転力の回転軸を変えてに伝達するのに役立ちます", - - "create.ponder.linear_chassis_attachment.header": "リニアシャーシによるブロックの取り付け", - "create.ponder.linear_chassis_attachment.text_1": "リニアシャーシの特定の面は特殊な粘着面にできます", - "create.ponder.linear_chassis_attachment.text_2": "もう一度クリックすると、反対側の面も粘着面になります", - "create.ponder.linear_chassis_attachment.text_3": "素手でスニークしながら右クリックすると粘着剤を剥がせます", - "create.ponder.linear_chassis_attachment.text_4": "リニアシャーシの特殊な粘着面は、ブロックの列をまとめてくっつけることができます", - "create.ponder.linear_chassis_attachment.text_5": "レンチを使って、このシャーシの粘着範囲を正確に調整できます", - "create.ponder.linear_chassis_attachment.text_6": "CTRLを押しながらスクロールすると、接続している全てのシャーシブロックの範囲を調整できます", - "create.ponder.linear_chassis_attachment.text_7": "他の面にブロックを接着するには、超粘着剤を使う必要があります", - "create.ponder.linear_chassis_attachment.text_8": "この仕組みを使えば、どんな形の構造物もからくりとして動かせます", - - "create.ponder.linear_chassis_group.header": "リニアシャーシをグループで動かす", - "create.ponder.linear_chassis_group.text_1": "リニアシャーシは、隣の同じシャーシブロックと接続します", - "create.ponder.linear_chassis_group.text_2": "からくり機械で1つを動かすと、他のリニアシャーシも一緒に動きます", - "create.ponder.linear_chassis_group.text_3": "異なる種類のシャーシや、別の方向を向いているシャーシは接続されません", - - "create.ponder.mechanical_arm.header": "メカニカルアームの設定", - "create.ponder.mechanical_arm.text_1": "メカニカルアームを設置する前に、搬入元と搬出先を設定しなければなりません", - "create.ponder.mechanical_arm.text_2": "特定のブロックをターゲットと設定するには、アームを持ったまま右クリックしましょう", - "create.ponder.mechanical_arm.text_3": "搬入元(青)と搬出先(オレンジ)を切り替えるには、もう1度右クリックします", - "create.ponder.mechanical_arm.text_4": "アームを持ったまま左クリックすると選択が解除されます", - "create.ponder.mechanical_arm.text_5": "設置したメカニカルアームは、設定されたブロックをターゲットにします", - "create.ponder.mechanical_arm.text_6": "範囲内であれば、複数の搬入元と搬出先を設定できます", - "create.ponder.mechanical_arm.text_7": "しかし、あらゆる機械やブロックをターゲットにできるわけではありません", - "create.ponder.mechanical_arm.text_8": "そんな時はファンネルやデポを経由させましょう", - - "create.ponder.mechanical_arm_filtering.header": "メカニカルアームの搬出フィルタリング", - "create.ponder.mechanical_arm_filtering.text_1": "搬入元", - "create.ponder.mechanical_arm_filtering.text_2": "搬出先", - "create.ponder.mechanical_arm_filtering.text_3": "フィルターを使ってアームが搬出入するアイテムを制限したいと思っても", - "create.ponder.mechanical_arm_filtering.text_4": "メカニカルアーム自体には、フィルタリングオプションがありません", - "create.ponder.mechanical_arm_filtering.text_5": "そこで真鍮製ファンネル等をターゲットにした場合、アームにそのフィルターが反映されます", - "create.ponder.mechanical_arm_filtering.text_6": "アームは賢いので、搬出できないアイテムを拾うことはありません", - - "create.ponder.mechanical_arm_modes.header": "メカニカルアームの分配モード", - "create.ponder.mechanical_arm_modes.text_1": "搬入元", - "create.ponder.mechanical_arm_modes.text_2": "搬出先", - "create.ponder.mechanical_arm_modes.text_3": "アームに複数の有効な搬出先が設定されている場合...", - "create.ponder.mechanical_arm_modes.text_4": "...設定に従ってアイテムを分配します", - "create.ponder.mechanical_arm_modes.text_5": "レンチを持ってスクロールすると設定を変えられます", - "create.ponder.mechanical_arm_modes.text_6": "「順繰り分配」は、有効な全ての搬出先へ順番に搬出します", - "create.ponder.mechanical_arm_modes.text_7": "搬出先がそれ以上のアイテムを受け取れない場合、そこへの搬出はスキップされます", - "create.ponder.mechanical_arm_modes.text_8": "「強制順繰り分配」は、搬出をスキップせず、空きがでるまで待機します", - "create.ponder.mechanical_arm_modes.text_9": "「最初のターゲットを優先」は、設定した順番が先の方のターゲットに優先して搬出します", - - "create.ponder.mechanical_arm_redstone.header": "メカニカルアームのレッドストーン制御", - "create.ponder.mechanical_arm_redstone.text_1": "レッドストーン信号を受けると、メカニカルアームは稼働しません", - "create.ponder.mechanical_arm_redstone.text_2": "ただし、停止する前に開始した搬出入が終わるまで稼働し続けます", - "create.ponder.mechanical_arm_redstone.text_3": "それを利用し、反転したパルス信号を使って1回だけ稼働させられます", - - "create.ponder.mechanical_bearing.header": "メカニカルベアリングによる構造物の移動", - "create.ponder.mechanical_bearing.text_1": "メカニカルベアリングは、前方にブロックを取り付けられます", - "create.ponder.mechanical_bearing.text_2": "回転力を供給すると、組み立てた構造物を回転できます", - - "create.ponder.mechanical_crafter.header": "メカニカルクラフターの配置", - "create.ponder.mechanical_crafter.text_1": "メカニカルクラフターは、あらゆるクラフトレシピを自動化できます", - "create.ponder.mechanical_crafter.text_2": "レンチを使えばクラフターがアイテムを移動させるベルトの向きを変えられます", - "create.ponder.mechanical_crafter.text_3": "動かすためにはすべてのベルトが、外にベルトが向いている1つのクラフターへ続いていなければなりません", - "create.ponder.mechanical_crafter.text_4": "完成品は外に向かうベルトが指す方向にある収納ブロックに搬出されます", - "create.ponder.mechanical_crafter.text_5": "メカニカルクラフターを動かすには回転力が必要です", - "create.ponder.mechanical_crafter.text_6": "前面を右クリックすると手動でアイテムを搬入できます", - "create.ponder.mechanical_crafter.text_7": "1つのクラフターに続くベルトの全スロットにアイテムが入ると、クラフトが開始されます", - "create.ponder.mechanical_crafter.text_8": "スロットが埋まっていなくても、レッドストーンパルスを使って強制的にクラフトを開始できます", - - "create.ponder.mechanical_crafter_connect.header": "メカニカルクラフターの搬入口の共有", - "create.ponder.mechanical_crafter_connect.text_1": "アイテムは自動でクラフターに搬入することもできます", - "create.ponder.mechanical_crafter_connect.text_2": "背面でレンチを使うと、メカニカルクラフターが接続されます", - "create.ponder.mechanical_crafter_connect.text_3": "接続された全てのクラフターは、同じ搬入口からアイテムを搬入できるようになります", - - "create.ponder.mechanical_crafter_covers.header": "メカニカルクラフターとスロットカバー", - "create.ponder.mechanical_crafter_covers.text_1": "一部のレシピでは、ベルトの流れの隙間を埋める為に追加のクラフターが必要になります", - "create.ponder.mechanical_crafter_covers.text_2": "スロットカバーを使って、クラフターを空のスロットとして動作するように設定できます", - "create.ponder.mechanical_crafter_covers.text_3": "背面にレンチを使って接続したクラフターは、カバーしたクラフターを無視して同じアイテムを搬入できます", - - "create.ponder.mechanical_drill.header": "メカニカルドリルでブロックを破壊する", - "create.ponder.mechanical_drill.text_1": "メカニカルドリルは回転力を供給すると、目の前のブロックを破壊します", - "create.ponder.mechanical_drill.text_2": "採掘速度は回転速度に依存します", - - "create.ponder.mechanical_drill_contraption.header": "からくりに組み込んでのメカニカルドリルの使い方", - "create.ponder.mechanical_drill_contraption.text_1": "からくりの一部として、メカニカルドリルを動かすと...", - "create.ponder.mechanical_drill_contraption.text_2": "...ドリルは、移動先のブロックを破壊します", - - "create.ponder.mechanical_harvester.header": "からくりに組み込んでのメカニカルハーベスターの使い方", - "create.ponder.mechanical_harvester.text_1": "からくりの一部として、ハーベスターを動かすと...", - "create.ponder.mechanical_harvester.text_2": "...成熟した作物を収穫し、成長をリセットします", - - "create.ponder.mechanical_mixer.header": "メカニカルミキサーによるアイテム加工", - "create.ponder.mechanical_mixer.text_1": "ミキサーと鉢があれば、いくつかのクラフトレシピを自動化できます", - "create.ponder.mechanical_mixer.text_2": "自動化できるのは不定形レシピといくつかの追加レシピです", - "create.ponder.mechanical_mixer.text_3": "レシピの中には、ブレイズバーナーの熱を必要とするものもあります", - "create.ponder.mechanical_mixer.text_4": "フィルタースロットは、2つのレシピが競合する場合に使えます", - - "create.ponder.mechanical_piston.header": "メカニカルピストンによる構造物の移動", - "create.ponder.mechanical_piston.text_1": "メカニカルピストンは、前方にあるブロックを動かせます", - "create.ponder.mechanical_piston.text_2": "移動の速度と方向は、供給する回転力に依存します", - "create.ponder.mechanical_piston.text_3": "粘着性メカニカルピストンは、取り付けられたブロックを引き戻せます", - - "create.ponder.mechanical_piston_modes.header": "メカニカルピストンの動作モード", - "create.ponder.mechanical_piston_modes.text_1": "ピストンの動作が止まると、移動した構造物はブロックへ戻ります", - "create.ponder.mechanical_piston_modes.text_2": "ブロックに戻らないように設定したり、動かし始めた場所でのみブロックに戻るように設定できます", - - "create.ponder.mechanical_plough.header": "からくりに組み込んでのメカニカルプラウの使い方", - "create.ponder.mechanical_plough.text_1": "プラウを組み込んだからくりを動かすと...", - "create.ponder.mechanical_plough.text_2": "...当たり判定のないブロックが破壊されます", - "create.ponder.mechanical_plough.text_3": "さらに、プラウは土を耕やします", - "create.ponder.mechanical_plough.text_4": "また、エンティティを傷つけずに飛ばすこともできます", - - "create.ponder.mechanical_press.header": "メカニカルプレスによるアイテム加工", - "create.ponder.mechanical_press.text_1": "メカニカルプレスは、その下に配置されたアイテムを加工できます", - "create.ponder.mechanical_press.text_2": "加工するアイテムは下に落としたり、プレス機の下にあるデポに置いたり", - "create.ponder.mechanical_press.text_3": "アイテムがベルトへ供給されると...", - "create.ponder.mechanical_press.text_4": "...プレス機が自動的にアイテムを保持し、加工します", - - "create.ponder.mechanical_press_compacting.header": "メカニカルプレスでの圧縮加工", - "create.ponder.mechanical_press_compacting.text_1": "鉢に入れられたアイテムをプレスし、圧縮加工できます", - "create.ponder.mechanical_press_compacting.text_2": "圧縮加工には、2x2、3x3のクラフトレシピに加え、いくつかの追加レシピがあります", - "create.ponder.mechanical_press_compacting.text_3": "これらのレシピの中には、ブレイズバーナーの熱を必要とするものがあります", - "create.ponder.mechanical_press_compacting.text_4": "フィルタースロットは、2つのレシピが競合する場合に使えます", - - "create.ponder.mechanical_saw_breaker.header": "メカニカルソーによる伐採", - "create.ponder.mechanical_saw_breaker.text_1": "メカニカルソーは回転力を供給すると、目の前の木を伐採できます", - "create.ponder.mechanical_saw_breaker.text_2": "木を完全に伐採するには、木と地面を繋ぐ最後の根本を伐採しなければなりません", - - "create.ponder.mechanical_saw_contraption.header": "からくりに組み込んでのメカニカルソーの使い方", - "create.ponder.mechanical_saw_contraption.text_1": "ソーを組み込んだからくりを動かすと...", - "create.ponder.mechanical_saw_contraption.text_2": "...ソーは木を伐採します", - - "create.ponder.mechanical_saw_processing.header": "メカニカルソーでのアイテム加工", - "create.ponder.mechanical_saw_processing.text_1": "上向きのメカニカルソーは、様々なアイテムを加工できます", - "create.ponder.mechanical_saw_processing.text_2": "加工されたアイテムは、常にソーの回転方向とは逆に移動します", - "create.ponder.mechanical_saw_processing.text_3": "ソーはメカニカルベルトと繋げて加工できます", - "create.ponder.mechanical_saw_processing.text_4": "複数の完成品がある場合、フィルタースロットでどの完成品を作るかを指定できます", - "create.ponder.mechanical_saw_processing.text_5": "フィルターがない場合、ソーは全ての加工結果を順番に繰り返します", - - "create.ponder.millstone.header": "石臼でのアイテム加工", - "create.ponder.millstone.text_1": "石臼はアイテムを粉砕加工する機械です", - "create.ponder.millstone.text_2": "歯車を使って、側面から回転力を供給できます", - "create.ponder.millstone.text_3": "上からアイテムを投げ入れてアイテムを搬入できます", - "create.ponder.millstone.text_4": "しばらく待った後、右クリックで完成品を取り出せます", - "create.ponder.millstone.text_5": "加工品を搬出して自動化することもできます", - - "create.ponder.nixie_tube.header": "ニキシー管の使い方", - "create.ponder.nixie_tube.text_1": "ニキシー管は受けたレッドストーン信号の強度を表示します", - "create.ponder.nixie_tube.text_2": "金床で名付けた名札を使って、好きな文字を表示することもできます", - - "create.ponder.piston_pole.header": "ピストン延長ポール", - "create.ponder.piston_pole.text_1": "ポールが無いとメカニカルピストンは動きません", - "create.ponder.piston_pole.text_2": "後ろに付けたポールの長さによって、伸び縮みする長さが決まります", - - "create.ponder.portable_storage_interface.header": "稼働中のからくりとの搬出入", - "create.ponder.portable_storage_interface.text_1": "稼働中のからくりに組み込まれた収納ブロックは、プレイヤーが開くことはできません", - "create.ponder.portable_storage_interface.text_2": "この装置は、からくりを停止することなく、収納ブロックと搬出入できます", - "create.ponder.portable_storage_interface.text_3": "1~2ブロックの間隔をあけて、二つ目のインターフェースを設置しましょう", - "create.ponder.portable_storage_interface.text_4": "両者がすれ違うたびに接続されます", - "create.ponder.portable_storage_interface.text_5": "接続されている間、設置されている方のインターフェースはからくり内全ての収納ブロックのように振る舞います", - "create.ponder.portable_storage_interface.text_6": "アイテムを搬入したり...", - "create.ponder.portable_storage_interface.text_7": "...アイテムを搬出したりできます", - "create.ponder.portable_storage_interface.text_8": "しばらくの間アイテムのやり取りがないと、からくりは稼働を再開します", - - "create.ponder.portable_storage_interface_redstone.header": "レッドストーンによる制御", - "create.ponder.portable_storage_interface_redstone.text_1": "レッドストーン信号を受けている間、設置されたインターフェースは接続を行いません", - - "create.ponder.powered_latch.header": "パワードラッチによる信号制御", - "create.ponder.powered_latch.text_1": "パワードラッチはレッドストーン信号で制御できるレバーです", - "create.ponder.powered_latch.text_2": "後ろからの信号でオンに", - "create.ponder.powered_latch.text_3": "側面からの信号でオフに戻ります", - "create.ponder.powered_latch.text_4": "パワードラッチは、手動でも切り替えられます", - - "create.ponder.powered_toggle_latch.header": "パワードトグルラッチによる信号制御", - "create.ponder.powered_toggle_latch.text_1": "パワードトグルラッチはレッドストーン信号で切り替えできるレバーです", - "create.ponder.powered_toggle_latch.text_2": "後ろからの信号で切り替えできます", - "create.ponder.powered_toggle_latch.text_3": "何度も信号を送るとオンとオフと繰り返します", - "create.ponder.powered_toggle_latch.text_4": "パワードトグルラッチは、手動で切り替えることもできます", - - "create.ponder.pulse_repeater.header": "パルスリピーターによる信号制御", - "create.ponder.pulse_repeater.text_1": "パルスリピーターは、レッドストーン信号を短縮して1tickのパルス信号にします", - - "create.ponder.radial_chassis.header": "ラジアルシャーシによるブロックの取り付け", - "create.ponder.radial_chassis.text_1": "ラジアルシャーシは、同種のシャーシブロックと繋がります", - "create.ponder.radial_chassis.text_2": "からくり機械によって1つが動かされると、他も一緒に動きます", - "create.ponder.radial_chassis.text_3": "ラジアルシャーシの側面を粘着面にできます", - "create.ponder.radial_chassis.text_4": "もう一度クリックすると、他の全ての面も粘着面になります", - "create.ponder.radial_chassis.text_5": "素手でスニークしながら右クリックすると、粘着剤を剥がせます", - "create.ponder.radial_chassis.text_6": "ブロックが粘着面に設置されていると...", - "create.ponder.radial_chassis.text_7": "...その範囲内の繋がっている全てのブロックが取り付けられます", - "create.ponder.radial_chassis.text_8": "レンチを使って、シャーシの範囲の半径を正確に指定できます", - "create.ponder.radial_chassis.text_9": "どの粘着面とも繋がっていないブロックはくっつきません", - - "create.ponder.redstone_contact.header": "レッドストーンコンタクト", - "create.ponder.redstone_contact.text_1": "向かい合ったレッドストーンコンタクトは、レッドストーン信号を出力します", - "create.ponder.redstone_contact.text_2": "これは、片方のコンタクトがからくりの一部である場合でも同様です", - - "create.ponder.redstone_link.header": "レッドストーンリンクの使い方", - "create.ponder.redstone_link.text_1": "レッドストーンリンクは、レッドストーン信号を無線で送受信できます", - "create.ponder.redstone_link.text_2": "モードを切り替えるには、スニークしながら右クリックします", - "create.ponder.redstone_link.text_3": "レンチをもって右クリックでも、モードを切り替えられます", - "create.ponder.redstone_link.text_4": "受信機は、128ブロック以内の送信機のレッドストーン信号を受信します", - "create.ponder.redstone_link.text_5": "2つのスロットにアイテムを設定すると、周波数を設定できます", - "create.ponder.redstone_link.text_6": "周波数が一致するリンク同士のみが送受信を行います", - - "create.ponder.rope_pulley.header": "ローププーリーによる構造物の移動", - "create.ponder.rope_pulley.text_1": "ローププーリーは、回転力を供給するとブロックを垂直に動かせます", - "create.ponder.rope_pulley.text_2": "移動の方向と速度は、供給される回転力に依存します", - - "create.ponder.rope_pulley_attachment.header": "プーリーをからくりの一部として動かす", - "create.ponder.rope_pulley_attachment.text_1": "プーリーがからくりによって動かされると...", - "create.ponder.rope_pulley_attachment.text_2": "...プーリーと接続している構造物も一緒に動かされます", - "create.ponder.rope_pulley_attachment.text_3": "プーリーが稼働している間は動かせないことに注意してください", - - "create.ponder.rope_pulley_modes.header": "ローププーリーの動作モード", - "create.ponder.rope_pulley_modes.text_1": "プーリーの動きが止まると、移動した構造物はブロックに戻ります", - "create.ponder.rope_pulley_modes.text_2": "ブロックに戻らないように設定することも、動かし始めた場所でのみブロックに戻るように設定することもできます", - - "create.ponder.rotation_speed_controller.header": "回転速度コントローラーの使い方", - "create.ponder.rotation_speed_controller.text_1": "コントローラーは、側面の軸から上の大きな歯車に回転を伝達します", - "create.ponder.rotation_speed_controller.text_2": "側面のパネルを見てスクロールすると、伝達する回転速度を調整できます", - - "create.ponder.sail.header": "帆による風車の組み立て", - "create.ponder.sail.text_1": "帆は、風車を作るのに便利なブロックです", - "create.ponder.sail.text_2": "超粘着剤やシャーシなしに、ブロックや帆フレームに取り付けられます", - "create.ponder.sail.text_3": "染料で右クリックして染色できます", - "create.ponder.sail.text_4": "ハサミで右クリックすると、フレームに戻せます", - - "create.ponder.sail_frame.header": "帆フレームによる風車の組み立て", - "create.ponder.sail_frame.text_1": "帆フレームは、風車を作るのに便利なブロックです", - "create.ponder.sail_frame.text_2": "超粘着剤やシャーシなしに、ブロックや帆フレームに取り付けられます", - - "create.ponder.sequenced_gearshift.header": "シーケンスギアシフトによる回転の制御", - "create.ponder.sequenced_gearshift.text_1": "シーケンスギアシフトは、設定されたプログラムに従って回転を伝達します", - "create.ponder.sequenced_gearshift.text_2": "右クリックで設定インターフェースを開けます", - "create.ponder.sequenced_gearshift.text_3": "レッドストーン信号を受けると、設定されたプログラムを実行します", - "create.ponder.sequenced_gearshift.text_4": "終了すると止まり、また次のレッドストーン信号を受けると同じように実行します", - "create.ponder.sequenced_gearshift.text_5": "レッドストーンコンパレータで、現在の進捗を読み取れます", - - "create.ponder.shaft.header": "シャフトによる回転力の伝達", - "create.ponder.shaft.text_1": "シャフトはまっすぐに回転を伝達します", - - "create.ponder.shaft_casing.header": "ケース入りシャフト", - "create.ponder.shaft_casing.text_1": "真鍮製、安山岩製ケーシングを使って、シャフトを装飾できます", - - "create.ponder.smart_chute.header": "スマートシュートによるアイテムのフィルタリング", - "create.ponder.smart_chute.text_1": "スマートシュートは、垂直方向のシュートにフィルター機能を追加したものです", - "create.ponder.smart_chute.text_2": "フィルタースロットを使って、何を搬出入するかを設定できます", - "create.ponder.smart_chute.text_3": "マウスホイールで搬出するスタック量を指定できます", - "create.ponder.smart_chute.text_4": "レッドストーン信号で、スマートシュートを停止させることもできます", - - "create.ponder.speedometer.header": "速度メーターによる動力情報の監視", - "create.ponder.speedometer.text_1": "速度メーターは、接続された機械の現在の回転速度を表示します", - "create.ponder.speedometer.text_2": "エンジニアのゴーグルを装着していると、より詳細な情報を得られます", - "create.ponder.speedometer.text_3": "コンパレータは、速度メーターの測定値に応じたレッドストーン信号を出力します", - - "create.ponder.stabilized_bearings.header": "からくりの角度の固定", - "create.ponder.stabilized_bearings.text_1": "メカニカルベアリングが動いている構造物に組み込まれているとき ...", - "create.ponder.stabilized_bearings.text_2": "...自身の角度を真っ直ぐに保とうとします", - "create.ponder.stabilized_bearings.text_3": "ベアリングにブロックを取り付けると", - "create.ponder.stabilized_bearings.text_4": "ベアリングに取り付けたサブのからくり全体が角度を真っ直ぐに保ったままになります", - - "create.ponder.sticker.header": "スティッカーを使ったブロックの付け外し", - "create.ponder.sticker.text_1": "スティッカーは、ブロックの付け外しをレッドストーン信号で制御できます", - "create.ponder.sticker.text_2": "信号を受けると、状態が切り替わります", - "create.ponder.sticker.text_3": "付けているときは、からくりで動かされるとブロックも一緒に動きます", - "create.ponder.sticker.text_4": "もう一度信号を受けると、ブロックは離れます", - - "create.ponder.stressometer.header": "応力メーターによる動力情報の監視", - "create.ponder.stressometer.text_1": "応力メーターは、接続された動力ネットワークの現在の応力許容量を表示します", - "create.ponder.stressometer.text_2": "エンジニアのゴーグルを装着していると、より詳しい数値を見られます", - "create.ponder.stressometer.text_3": "コンパレータは、応力メーターの測定値に応じたレッドストーン信号を出力します", - - "create.ponder.super_glue.header": "超粘着剤によるブロックの取り付け", - "create.ponder.super_glue.text_1": "超粘着剤は、任意の2つのブロックの間に塗れます", - "create.ponder.super_glue.text_2": "貼り付けたブロックは、からくりに組み込まれると一緒に動きます", - "create.ponder.super_glue.text_3": "超粘着剤をオフハンドで持つと...", - "create.ponder.super_glue.text_4": "...設置したブロックは置いたブロックの面と接着されます", - "create.ponder.super_glue.text_5": "左クリックすれば超粘着剤を剥がせます", - - "create.ponder.valve_handle.header": "バルブハンドルによる回転力の生成", - "create.ponder.valve_handle.text_1": "バルブハンドルは手動で回転力を生み出す原動機です", - "create.ponder.valve_handle.text_2": "右クリックし続けると、反時計回りに回転します", - "create.ponder.valve_handle.text_3": "回転速度はゆっくりですが、正確です", - "create.ponder.valve_handle.text_4": "スニーク状態で右クリックし続けると、時計回りに回転します", - "create.ponder.valve_handle.text_5": "バルブハンドルは、染色できます", - - "create.ponder.water_wheel.header": "水車による回転力の生成", - "create.ponder.water_wheel.text_1": "水車は隣接する水流から回転力を生み出します", - "create.ponder.water_wheel.text_2": "水流を受ける面が多ければ多いほど、水車の回転速度は速くなります", - "create.ponder.water_wheel.text_3": "水車の羽根は水流に逆らわないように設置してください", - "create.ponder.water_wheel.text_4": "逆向きに設置すると、回転速度が落ちてしまいます", - - "create.ponder.weighted_ejector.header": "重量射出機の使い方", - "create.ponder.weighted_ejector.text_1": "射出機を持ちスニークしながら右クリックすると、ターゲットとなる位置を設定できます", - "create.ponder.weighted_ejector.text_10": "スタック数を設定すると、保持しているスタックがその量に達したときのみ射出するようになります", - "create.ponder.weighted_ejector.text_11": "他のエンティティが射出機を踏むと、いつでも射出機が稼働します", - "create.ponder.weighted_ejector.text_2": "設置された射出機は、設定した場所に物体を発射します", - "create.ponder.weighted_ejector.text_3": "ターゲットは、範囲内であれば高さや距離は問いません", - "create.ponder.weighted_ejector.text_4": "ただし、真正面方向以外へは射出できません", - "create.ponder.weighted_ejector.text_5": "有効なターゲットが設定されていない場合、真正面のブロックがターゲットになります", - "create.ponder.weighted_ejector.text_6": "巻き上げるには、回転力を供給する必要があります", - "create.ponder.weighted_ejector.text_7": "上にアイテムを置くと、射出機が稼働します", - "create.ponder.weighted_ejector.text_8": "ターゲットが満杯の収納ブロックの場合、射出機はそのブロックに空きがでるまで待機します", - "create.ponder.weighted_ejector.text_9": "レンチを使って、スタック量を調整できます", - - "create.ponder.weighted_ejector_redstone.header": "レッドストーン信号による重量射出機の制御", - "create.ponder.weighted_ejector_redstone.text_1": "レッドストーン信号を受けている間、射出機は稼働しません", - "create.ponder.weighted_ejector_redstone.text_2": "また、オブザーバーは射出機の稼働を検知できます", - - "create.ponder.weighted_ejector_tunnel.header": "重量射出機によるアイテムスタックの分割", - "create.ponder.weighted_ejector_tunnel.text_1": "真鍮製トンネルと組み合わせて、アイテムスタックを特定の量だけ分割できます", - "create.ponder.weighted_ejector_tunnel.text_2": "まず、側面の搬出口を優先させる為に、真鍮製トンネルを[最寄りを優先] に設定します", - "create.ponder.weighted_ejector_tunnel.text_3": "次に、射出機に分割したいスタック量を設定します", - "create.ponder.weighted_ejector_tunnel.text_4": "設定された量のアイテムスタックは側面の搬出口から搬出され...", - "create.ponder.weighted_ejector_tunnel.text_5": "...残りのアイテムはそのまま搬出されます", - - "create.ponder.windmill_source.header": "風車ベアリングによる回転力の生成", - "create.ponder.windmill_source.text_1": "風車ベアリングは手前にブロックを取り付けられます", - "create.ponder.windmill_source.text_2": "帆とみなされるブロックを十分な数取り付けられていれば、風車として機能します", - "create.ponder.windmill_source.text_3": "右クリックして風車ベアリングを起動すると、回転力を供給し始めます", - "create.ponder.windmill_source.text_4": "回転速度は帆ブロックの数で決まります", - "create.ponder.windmill_source.text_5": "レンチを使って回転方向を変えられます", - "create.ponder.windmill_source.text_6": "いつでもベアリングを右クリックすれば、回転を停止させて構造物を組み立てなおせます", - - "create.ponder.windmill_structure.header": "からくり風車", - "create.ponder.windmill_structure.text_1": "帆とみなされるブロックが8個以上あれば、どのような構造物でも風車として動きます" -} \ No newline at end of file diff --git a/src/main/resources/assets/create/lang/ko_kr.json b/src/main/resources/assets/create/lang/ko_kr.json deleted file mode 100644 index 3e8843be4..000000000 --- a/src/main/resources/assets/create/lang/ko_kr.json +++ /dev/null @@ -1,1805 +0,0 @@ -{ - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.andesite_bricks": "안산안 벽돌", - "block.create.layered_andesite": "층이 있는 안산암", - "block.create.andesite_bricks": "안산암 벽돌", - "block.create.andesite_bricks_slab": "안산암 벽돌 반 블록", - "block.create.andesite_bricks_stairs": "안산암 벽돌 계단", - "block.create.andesite_bricks_wall": "안산암 벽돌 담장", - "block.create.andesite_cobblestone": "안산암 조약돌", - "block.create.andesite_cobblestone_slab": "안산암 조약돌 반 블록", - "block.create.andesite_cobblestone_stairs": "안산암 조약돌 계단", - "block.create.andesite_cobblestone_wall": "안산암 조약돌 담장", - "block.create.andesite_pillar": "안산암 기둥", - "block.create.fancy_andesite_bricks": "장식된 안산암 벽돌", - "block.create.fancy_andesite_bricks_slab": "장식된 안산암 벽돌 반 블록", - "block.create.fancy_andesite_bricks_stairs": "장식된 안산암 벽돌 계단", - "block.create.fancy_andesite_bricks_wall": "장식된 안산암 벽돌 담장", - "block.create.mossy_andesite": "이끼 낀 안산암", - "block.create.overgrown_andesite": "이끼로 뒤덮힌 안산암", - "block.create.paved_andesite": "포장된 안산암", - "block.create.paved_andesite_slab": "포장된 안산암 반 블록", - "block.create.paved_andesite_stairs": "포장된 안산암 계단", - "block.create.paved_andesite_wall": "포장된 안산암 담장", - - "block.create.dark_scoria": "짙은 스코리아", - "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", - "block.create.dark_scoria_tiles": "짙은 스코리아 타일", - "block.create.dark_scoria_tiles_stairs": "짙은 스코리아 타일 계단", - "block.create.dark_scoria_tiles_slab": "짙은 스코리아 타일 반 블록", - "block.create.dark_scoria_bricks": "짙은 스코리아 벽돌", - "block.create.dark_scoria_bricks_stairs": "짙은 스코리아 벽돌 계단", - "block.create.dark_scoria_bricks_slab": "짙은 스코리아 벽돌 반 블록", - "block.create.dark_scoria_bricks_wall": "짙은 스코리아 벽돌 담장", - "block.create.chiseled_dark_scoria": "조각된 짙은 스코리아", - "block.create.dark_scoria_cobblestone": "짙은 스코리아 조약돌", - "block.create.dark_scoria_cobblestone_slab": "짙은 스코리아 조약돌 반 블록", - "block.create.dark_scoria_cobblestone_stairs": "짙은 스코리아 조약돌 계단", - "block.create.dark_scoria_cobblestone_wall": "짙은 스코리아 조약돌 담장", - "block.create.fancy_dark_scoria_bricks": "장식된 짙은 스코리아 벽돌", - "block.create.fancy_dark_scoria_bricks_slab": "장식된 짙은 스코리아 벽돌 반 블록", - "block.create.fancy_dark_scoria_bricks_stairs": "장식된 짙은 스코리아 벽돌 계단", - "block.create.fancy_dark_scoria_bricks_wall": "장식된 짙은 스코리아 벽돌 담장", - "block.create.layered_dark_scoria": "층이 있는 짙은 스코리아", - "block.create.mossy_dark_scoria": "이끼 낀 짙은 스코리아", - "block.create.overgrown_dark_scoria": "이끼가 뒤덮힌 짙은 스코리아", - "block.create.paved_dark_scoria": "포장된 짙은 스코리아", - "block.create.paved_dark_scoria_slab": "포장된 스코리아 반 블록", - "block.create.paved_dark_scoria_stairs": "포장된 짙은 스코리 계단", - "block.create.paved_dark_scoria_wall": "포장된 짙은 스코리아 담장", - "block.create.polished_dark_scoria": "윤나는 짙은 스코리아", - "block.create.polished_dark_scoria_slab": "윤나는 짙은 스코리아 반 블록", - "block.create.polished_dark_scoria_stairs": "윤나는 짙은 스코리아 계단", - "block.create.polished_dark_scoria_wall": "윤나는 짙은 스코리아 담장", - "block.create.dark_scoria_pillar": "짙은 스코리아 기둥", - - "block.create.diorite_bricks": "섬록암 벽돌", - "block.create.diorite_bricks_slab": "섬록암 벽돌 반 블록", - "block.create.diorite_bricks_stairs": "섬록암 벽돌 계단", - "block.create.diorite_bricks_wall": "섬록암 벽돌 담장", - "block.create.diorite_cobblestone": "섬록암 조약돌", - "block.create.diorite_cobblestone_slab": "섬록암 조약돌 반 블록", - "block.create.diorite_cobblestone_stairs": "섬록암 조약돌 계단", - "block.create.diorite_cobblestone_wall": "섬록암 조약돌 담장", - "block.create.diorite_pillar": "섬록암 기둥", - "block.create.fancy_diorite_bricks": "장식된 섬록암 벽돌", - "block.create.fancy_diorite_bricks_slab": "장식된 섬록암 벽돌 반 블록", - "block.create.fancy_diorite_bricks_stairs": "장식된 섬록암 벽돌 계단", - "block.create.fancy_diorite_bricks_wall": "장식된 섬록암 벽돌 담장", - "block.create.layered_diorite": "층이 있는 섬록암", - "block.create.mossy_diorite": "이끼 낀 섬록암", - "block.create.overgrown_diorite": "이끼로 뒤덮힌 섬록암", - "block.create.paved_diorite": "포장된 섬록암", - "block.create.paved_diorite_slab": "포장된 섬록암 반 블록", - "block.create.paved_diorite_stairs": "포장된 섬록암 계단", - "block.create.paved_diorite_wall": "포장된 섬록암 담장", - - "block.create.dolomite_pillar": "백운암 기둥", - "block.create.dolomite": "백운암", - "block.create.dolomite_stairs": "백운암 계단", - "block.create.dolomite_wall": "백운암 담장", - "block.create.dolomite_slab": "백운암 반 블록", - "block.create.dolomite_bricks": "백운암 벽돌", - "block.create.dolomite_bricks_wall": "백운암 벽돌 담장", - "block.create.dolomite_bricks_stairs": "백운암 벽돌 계단", - "block.create.dolomite_bricks_slab": "백운암 벽돌 반 블록", - "block.create.polished_dolomite": "윤나는 백운암", - "block.create.layered_dolomite": "층이 있는 백운암", - "block.create.dolomite_cobblestone": "백운암 조약돌", - "block.create.dolomite_cobblestone_slab": "백운암 조약돌 반 블록", - "block.create.dolomite_cobblestone_stairs": "백운암 조약돌 계단", - "block.create.dolomite_cobblestone_wall": "백운암 조약돌 담장", - "block.create.fancy_dolomite_bricks": "장식된 백운암 벽돌", - "block.create.fancy_dolomite_bricks_slab": "장식된 백운암 벽돌 반 블록", - "block.create.fancy_dolomite_bricks_stairs": "장식된 백운암 벽돌 계단", - "block.create.fancy_dolomite_bricks_wall": "장식된 백운암 벽돌 담장", - "block.create.paved_dolomite": "포장된 백운암", - "block.create.paved_dolomite_slab": "포장된 백운암 반 블록", - "block.create.paved_dolomite_stairs": "포장된 백운암 계단", - "block.create.paved_dolomite_wall": "포장된 백운암 담장", - "block.create.polished_dolomite_slab": "윤나는 백운암 반 블록", - "block.create.polished_dolomite_stairs": "윤나는 백운암 계단", - "block.create.polished_dolomite_wall": "윤나는 백운암 담장", - "block.create.chiseled_dolomite": "조각된 백운암", - "block.create.mossy_dolomite": "이끼낀 백운암", - "block.create.overgrown_dolomite": "이끼로 뒤덮힌 백운암", - "block.create.dolomite_pillar": "백운암 기둥", - - "block.create.gabbro": "반려암", - "block.create.gabbro_stairs": "반려암 계단", - "block.create.gabbro_slab": "반려암 반 블록", - "block.create.gabbro_wall": "반려암 담장", - "block.create.polished_gabbro": "윤나는 반려암", - "block.create.gabbro_bricks": "반려암 벽돌", - "block.create.gabbro_bricks_stairs": "반려암 벽돌 계단", - "block.create.gabbro_bricks_wall": "반려암 벽돌 담장", - "block.create.paved_gabbro_bricks": "포장된 반려암 벽돌", - "block.create.paved_gabbro_bricks_slab": "포장된 반려암 벽돌 반 블록", - "block.create.indented_gabbro": "반려암 겹 타일", - "block.create.indented_gabbro_slab": "반려암 겹 반 블록", - "block.create.slightly_mossy_gabbro_bricks": "이끼 낀 반려암 벽돌", - "block.create.mossy_gabbro_bricks": "이끼로 뒤덮힌 반려암 벽돌", - "block.create.chiseled_gabbro": "조각된 반려암", - "block.create.fancy_gabbro_bricks": "장식된 반려암 벽돌", - "block.create.fancy_gabbro_bricks_slab": "장식된 반려암 벽돌 반 블록", - "block.create.fancy_gabbro_bricks_stairs": "장식된 반려암 벽돌 계단", - "block.create.fancy_gabbro_bricks_wall": "장식된 반려암 벽돌 담장", - "block.create.gabbro_cobblestone": "반려암 조약돌", - "block.create.gabbro_cobblestone_slab": "반려암 조약돌 반 블록", - "block.create.gabbro_cobblestone_stairs": "반려암 조약돌 계단", - "block.create.gabbro_cobblestone_wall": "반려암 조약돌 담장", - "block.create.layered_gabbro": "층이 있는 반려암", - "block.create.mossy_gabbro": "이끼낀 반려암", - "block.create.overgrown_gabbro": "이끼로 뒤덮힌 반려암", - "block.create.paved_gabbro": "포장된 반려암", - "block.create.paved_gabbro_slab": "포장된 반려암 반 블록", - "block.create.paved_gabbro_stairs": "포장된 반려암 계단", - "block.create.paved_gabbro_wall": "포장된 반려암 담장", - "block.create.polished_gabbro": "윤나는 반려암", - "block.create.polished_gabbro_slab": "윤나는 반려암 반 블록", - "block.create.polished_gabbro_stairs": "윤나는 반려암 계단", - "block.create.polished_gabbro_wall": "윤나는 반려암 담장", - "block.create.gabbro_bricks_slab": "반려암 벽돌 반 블록", - "block.create.gabbro_pillar": "반려암 기둥", - - "block.create.granite_bricks": "화강암 벽돌", - "block.create.layered_granite": "층이 있는 화강암", - "block.create.fancy_granite_bricks": "장식된 화강암 벽돌", - "block.create.fancy_granite_bricks_slab": "장식된 화강암 벽돌 반 블록", - "block.create.fancy_granite_bricks_stairs": "장식된 화강암 벽돌 계단", - "block.create.fancy_granite_bricks_wall": "장식된 화강암 벽돌 담장", - "block.create.granite_bricks_slab": "화강함 벽돌 반 블록", - "block.create.granite_bricks_stairs": "화강함 벽돌 계단", - "block.create.granite_bricks_wall": "화강함 벽돌 담장", - "block.create.granite_cobblestone": "화강암 조약돌", - "block.create.granite_cobblestone_slab": "화강암 조약돌 반 블록", - "block.create.granite_cobblestone_stairs": "화강암 조약돌 계단", - "block.create.granite_cobblestone_wall": "화강암 조약돌 담장", - "block.create.granite_pillar": "화강암 기둥", - "block.create.mossy_granite": "이끼 낀 화강암 벽돌", - "block.create.overgrown_granite": "이끼로 뒤덮힌 화강암 벽돌", - "block.create.paved_granite": "포장된 화강암", - "block.create.paved_granite_slab": "포장된 화강암 반 블록", - "block.create.paved_granite_stairs": "포장된 화강암 계단", - "block.create.paved_granite_wall": "포장된 화강암 담장", - - "block.create.limesand": "석회모래", - "block.create.limestone": "석회암", - "block.create.limestone_stairs": "석회암 계단", - "block.create.limestone_slab": "석회암 반 블록", - "block.create.limestone_wall": "석회암 담장", - "block.create.limestone_bricks": "석회암 벽돌", - "block.create.limestone_bricks_stairs": "석회암 벽돌 계단", - "block.create.limestone_bricks_slab": "석회암 벽돌 반 블록", - "block.create.limestone_bricks_wall": "석회암 벽돌 담장", - "block.create.polished_limestone": "윤나는 석회암", - "block.create.polished_limestone_slab": "윤나는 석회암 반 블록", - "block.create.limestone_pillar": "석회암 기둥", - "block.create.layered_limestone": "층이 있는 석회암", - "block.create.chiseled_limestone": "조각된 석회암", - "block.create.fancy_limestone_bricks": "장식된 석회암 벽돌", - "block.create.fancy_limestone_bricks_slab": "장식된 석회암 벽돌 반 블록", - "block.create.fancy_limestone_bricks_stairs": "장식된 석회암 벽돌 계단", - "block.create.fancy_limestone_bricks_wall": "장식된 석회암 벽돌 담장", - "block.create.mossy_limestone": "이끼 낀 석회암", - "block.create.overgrown_limestone": "이끼로 뒤덮힌 석회암", - "block.create.paved_limestone": "포장된 석회암", - "block.create.paved_limestone_slab": "포장된 석회암 반 블록", - "block.create.paved_limestone_stairs": "포장된 석회암 계단", - "block.create.paved_limestone_wall": "포장된 석회암 담장", - "block.create.polished_limestone_stairs": "윤나는 석회암 계단", - "block.create.polished_limestone_wall": "윤나는 석회암 담장", - "block.create.limestone_cobblestone": "석회암 조약돌", - "block.create.limestone_cobblestone_slab": "석회암 조약돌 반 블록", - "block.create.limestone_cobblestone_stairs": "석회암 조약돌 계단", - "block.create.limestone_cobblestone_wall": "석회암 조약돌 담장", - - "block.create.natural_scoria": "자연 스코리아", - "block.create.scoria": "스코리아", - "block.create.scoria_stairs": "스코리아 계단", - "block.create.scoria_slab": "스코리아 반 블록", - "block.create.scoria_wall": "스코리아 담장", - "block.create.scoria_bricks": "스코리아 벽돌", - "block.create.polished_scoria": "윤나는 스코리아", - "block.create.polished_scoria_slab": "윤나는 스코리아 반 블록", - "block.create.scoria_pillar": "스코리아 기둥", - "block.create.layered_scoria": "층이 있는 스코리아", - "block.create.chiseled_scoria": "조각된 스코리아", - "block.create.fancy_scoria_bricks": "장식된 스코리아 벽돌", - "block.create.fancy_scoria_bricks_slab": "장식된 스코리아 벽돌 반 블록", - "block.create.fancy_scoria_bricks_stairs": "장식된 스코리아 벽돌 계단", - "block.create.fancy_scoria_bricks_wall": "장식된 스코리아 벽돌 담장", - "block.create.mossy_scoria": "이끼 낀 스코리아", - "block.create.overgrown_scoria": "이끼로 뒤덮힌 스코리아", - "block.create.paved_scoria": "포장된 스코리아", - "block.create.paved_scoria_slab": "포장된 스코리아 반 블록", - "block.create.paved_scoria_stairs": "포장된 스코리아 계단", - "block.create.paved_scoria_wall": "포장된 스코리아 담장", - "block.create.polished_scoria_stairs": "윤나는 스코리아 계단", - "block.create.polished_scoria_wall": "윤나는 스코리아 담장", - "block.create.scoria_cobblestone": "스코리아 조약돌", - "block.create.scoria_cobblestone_slab": "스코리아 조약돌 반 블록", - "block.create.scoria_cobblestone_stairs": "스코리아 조약돌 계단", - "block.create.scoria_cobblestone_wall": "스코리아 조약돌 담장", - "block.create.scoria_bricks_slab": "스코리아 벽돌 반 블록", - "block.create.scoria_bricks_stairs": "스코리아 벽돌 계단", - "block.create.scoria_bricks_wall": "스코리아 벽돌 담장", - - "block.create.weathered_limestone": "풍화된 석회암", - "block.create.weathered_limestone_stairs": "풍화된 석회암 계단", - "block.create.weathered_limestone_wall": "풍화된 석회암 담장", - "block.create.weathered_limestone_slab": "풍화된 석회암 반 블록", - "block.create.polished_weathered_limestone": "윤나는 풍화된 석회암", - "block.create.polished_weathered_limestone_slab": "윤나는 풍화된 석회암 반 블록", - "block.create.weathered_limestone_bricks": "풍화된 석회암 벽돌", - "block.create.weathered_limestone_bricks_stairs": "풍화된 석회암 벽돌 계단", - "block.create.weathered_limestone_bricks_wall": "풍화된 석회암 벽돌 담장", - "block.create.weathered_limestone_bricks_slab": "풍화된 석회암 벽돌 반 블록", - "block.create.weathered_limestone_pillar": "풍화된 석회암 기둥", - "block.create.layered_weathered_limestone": "층이 있는 풍화된 석회암", - "block.create.chiseled_weathered_limestone": "조각된 풍화된 석회암", - "block.create.fancy_weathered_limestone_bricks": "장식된 풍화된 석회암 벽돌", - "block.create.fancy_weathered_limestone_bricks_slab": "장식된 풍화된 석회암 벽돌 반 블록", - "block.create.fancy_weathered_limestone_bricks_stairs": "장식된 풍화된 석회암 벽돌 계단", - "block.create.fancy_weathered_limestone_bricks_wall": "장식된 풍화된 석회암 벽돌 담장", - "block.create.mossy_weathered_limestone": "이끼 낀 풍화된 석회암", - "block.create.overgrown_weathered_limestone": "이끼로 뒤덮힌 풍화된 석회암", - "block.create.paved_weathered_limestone": "포장된 풍화된 석회암", - "block.create.paved_weathered_limestone_slab": "포장된 풍화된 석회암 반 블록", - "block.create.paved_weathered_limestone_stairs": "포장된 풍화된 석회암 계단", - "block.create.paved_weathered_limestone_wall": "포장된 풍화된 석회암 담장", - "block.create.polished_weathered_limestone_stairs": "윤나는 풍화된 석회암 계단", - "block.create.polished_weathered_limestone_wall": "윤나는 풍화된 석회암 담장", - "block.create.weathered_limestone_cobblestone": "풍화된 석회암 조약돌", - "block.create.weathered_limestone_cobblestone_slab": "풍화된 석회암 조약돌 반 블록", - "block.create.weathered_limestone_cobblestone_stairs": "풍화된 석회암 조약돌 계단", - "block.create.weathered_limestone_cobblestone_wall": "풍화된 석회암 조약돌 담장", - - "block.create.tiled_glass": "타일 유리", - "block.create.framed_glass": "큰 유리", - "block.create.vertical_framed_glass": "수직 유리", - "block.create.horizontal_framed_glass": "수평 유리", - "block.create.oak_window": "참나무 유리창", - "block.create.spruce_window": "가문비나무 유리창", - "block.create.birch_window": "자작나무 유리창", - "block.create.jungle_window": "정글나무 유리창", - "block.create.dark_oak_window": "짙은 참나무 유리창", - "block.create.acacia_window": "아카시아 유리창", - "block.create.ornate_iron_window": "장식된 철 유리창", - - - "block.create.tiled_glass_pane": "타일 유리판", - "block.create.framed_glass_pane": "큰 유리판", - "block.create.vertical_framed_glass_pane": "수직 유리판", - "block.create.horizontal_framed_glass_pane": "수평 유리판", - "block.create.oak_window_pane": "참나무 유리판", - "block.create.spruce_window_pane": "가문비나무 유리판", - "block.create.birch_window_pane": "자작나무 유리판", - "block.create.jungle_window_pane": "정글나무 유리판", - "block.create.dark_oak_window_pane": "짙은 참나무 유리판", - "block.create.acacia_window_pane": "아카시아나무 유리판 ", - "block.create.ornate_iron_window_pane": "장식된 철 유리판", - - "block.create.black_seat": "검은색 좌석", - "block.create.blue_seat": "파란색 좌석", - "block.create.brown_seat": "갈색 좌석", - "block.create.cyan_seat": "청록색 좌석", - "block.create.gray_seat": "회색 좌석", - "block.create.green_seat": "초록색 좌석", - "block.create.light_gray_seat": "회백색 좌석", - "block.create.lime_seat": "연두색 좌석", - "block.create.light_blue_seat": "하늘색 좌석", - "block.create.magenta_seat": "자홍색 좌석", - "block.create.orange_seat": "주황색 좌석", - "block.create.pink_seat": "분홍색 좌석", - "block.create.red_seat": "빨간색 좌석", - "block.create.white_seat": "하얀색 좌석", - "block.create.yellow_seat": "노란색 좌석", - "block.create.purple_seat": "보라색 좌석", - - "block.create.copper_valve_handle": "구리 밸브 손잡이", - "block.create.black_valve_handle": "검은색 밸브 손잡이", - "block.create.blue_valve_handle": "파란색 밸브 손잡이", - "block.create.brown_valve_handle": "갈색 밸브 손잡이", - "block.create.cyan_valve_handle": "청록색 밸브 손잡이", - "block.create.gray_valve_handle": "회색 밸브 손잡이", - "block.create.green_valve_handle": "초록색 밸브 손잡이", - "block.create.light_blue_valve_handle": "하늘색 밸브 손잡이", - "block.create.light_gray_valve_handle": "회백색 밸브 손잡이", - "block.create.lime_valve_handle": "연두색 밸브 손잡이", - "block.create.magenta_valve_handle": "자홍색 밸브 손잡이", - "block.create.orange_valve_handle": "주황색 밸브 손잡이", - "block.create.pink_valve_handle": "분홍색 밸브 손잡이", - "block.create.red_valve_handle": "빨간색 밸브 손잡이", - "block.create.white_valve_handle": "하얀색 밸브 손잡이", - "block.create.yellow_valve_handle": "노란색 밸브 손잡이", - "block.create.purple_valve_handle": "보라색 밸브 손잡이", - - "block.create.encased_fluid_pipe": "구리 케이스를 씌운 파이프", - "block.create.fluid_pipe": "액체 파이프", - "block.create.fluid_tank": "액체 탱크", - "block.create.fluid_valve": "액체 밸브", - "block.create.glass_fluid_pipe": "액체 파이프", - "block.create.mechanical_pump": "펌프", - "block.create.smart_fluid_pipe": "스마트 액체 파이프", - "block.create.creative_fluid_tank": "크리에이티브 탱크", - - "block.create.sail_frame": "풍차 날개 프레임", - "block.create.black_sail": "검은색 날개", - "block.create.blue_sail": "파란색 날개", - "block.create.brown_sail": "갈색 날개", - "block.create.cyan_sail": "청록색 날개", - "block.create.gray_sail": "회색 날개", - "block.create.green_sail": "초록색 날개", - "block.create.light_blue_sail": "하늘색 날개", - "block.create.light_gray_sail": "회백색 날개", - "block.create.lime_sail": "연두색 날개", - "block.create.magenta_sail": "자홍색 날개", - "block.create.orange_sail": "주황색 날개", - "block.create.pink_sail": "분홍색 날개", - "block.create.purple_sail": "보라색 날개", - "block.create.red_sail": "빨간색 날개", - "block.create.white_sail": "하얀색 날개", - "block.create.yellow_sail": "노란색 날개", - - "block.create.creative_motor": "크리에이티브 모터", - "block.create.encased_fan": "선풍기", - "block.create.flywheel": "플라이휠", - "block.create.furnace_engine": "화로 엔진", - "block.create.cogwheel": "톱니바퀴", - "block.create.encased_chain_drive": "케이스를 씌운 축", - "block.create.encased_shaft": "케이스를 씌운 축", - "block.create.belt": "컨베이어 벨트", - "block.create.adjustable_chain_gearshift": "벨트 변속기", - "block.create.gearbox": "기어박스", - "block.create.gearshift": "기어쉬프트", - "block.create.hand_crank": "핸드 크랭크", - "block.create.large_cogwheel": "큰 톱니바퀴", - "block.create.rotation_speed_controller": "회전 속도 컨트롤러", - "block.create.shaft": "축", - "block.create.speedometer": "속도 계측기", - "block.create.stressometer": "피로도 계측기", - "block.create.water_wheel": "물레방아", - "item.create.belt_connector": "기계식 벨트", - "item.create.vertical_gearbox": "수직 기어박스", - "block.create.clutch": "클러치", - "block.create.windmill_bearing": "풍차 베어링", - - "block.create.cart_assembler": "카트 조립기", - "block.create.linear_chassis": "어두운 직선 섀시", - "block.create.mechanical_arm": "기계 팔", - "block.create.mechanical_bearing": "베어링", - "block.create.mechanical_crafter": "기계식 조합기", - "block.create.mechanical_drill": "드릴", - "block.create.mechanical_harvester": "수확기", - "block.create.mechanical_mixer": "믹서", - "block.create.mechanical_piston": "기계식 피스톤", - "block.create.mechanical_piston_head": "기계식 피스톤 머리", - "block.create.mechanical_plough": "쟁기", - "block.create.mechanical_press": "압착기", - "block.create.mechanical_saw": "톱", - "block.create.millstone": "맷돌", - "block.create.minecart_anchor": "광산 수레 정박기", - "block.create.mysterious_cuckoo_clock": "뻐꾸기 시계?", - "block.create.crushing_wheel": "분쇄 휠", - "block.create.crushing_wheel_controller": "분쇄 휠 컨트롤러", - "block.create.cuckoo_clock": "뻐꾸기 시계", - "block.create.clockwork_bearing": "시계 베어링", - "block.create.deployer": "배포기", - "block.create.nozzle": "노즐", - "block.create.blaze_burner": "블레이즈 버너", - "block.create.brass_belt_funnel": "황동 깔때기", - "block.create.brass_block": "황동 블록", - "block.create.brass_casing": "황동 케이스", - "block.create.brass_funnel": "황동 깔때기", - "block.create.brass_tunnel": "황동 터널", - "block.create.pulley_magnet": "도르래 자석", - "block.create.radial_chassis": "원형 섀시", - "block.create.secondary_linear_chassis": "밝은 직선 섀시", - "block.create.sequenced_gearshift": "순서 기어쉬프트", - "block.create.piston_extension_pole": "피스톤 연장 축", - "block.create.portable_fluid_interface": "이동식 액체 인터페이스", - "block.create.portable_storage_interface": "이동식 아이템 인터페이스", - "block.create.content_observer": "정보 감지기", - "block.create.chute": "슈트", - "block.create.basin": "대야", - "block.create.depot": "아이템 거치대", - "block.create.adjustable_crate": "가변 창고", - "block.create.nixie_tube": "디지털 표시증", - "block.create.rope": "밧줄", - "block.create.rope_pulley": "밧줄 도르래", - "block.create.hose_pulley": "호스 도르래", - "block.create.item_drain": "아이템 배수구", - "block.create.schematic_table": "청사진 테이블", - "block.create.schematicannon": "청사진 대포", - "block.create.spout": "수도꼭지", - "block.create.sticky_mechanical_piston": "끈끈이 기계식 피스톤", - "block.create.turntable": "돌림판", - "entity.create.contraption": "장치", - "entity.create.seat": "좌석", - "entity.create.stationary_contraption": "고정된 장치", - "entity.create.super_glue": "강력 접착제", - "block.create.andesite_casing": "안산암 케이스", - "block.create.andesite_funnel": "안산암 깔때기", - "block.create.andesite_belt_funnel": "안산암 깔때기", - "block.create.andesite_tunnel": "안산암 터널", - "block.create.reinforced_rail": "강화된 레일", - "item.create.attribute_filter": "속성 필터 틀", - "item.create.furnace_minecart_contraption": "화로가 실린 광산 수레 장치", - "item.create.chest_minecart_contraption": "상자가 실린 광산 수레 장치", - "item.create.minecart_contraption": "광산 수레 장치", - "item.create.minecart_coupling": "광산 수레 커플링", - "block.create.andesite_encased_shaft": "안산암 케이스를 씌운 축", - "block.create.brass_encased_shaft": "황동 케이스를 씌운 축", - - "block.create.powered_latch": "레드스톤 걸쇠", - "block.create.powered_toggle_latch": "레드스톤 토글 걸쇠", - "block.create.pulse_repeater": "펄스 리피터", - "block.create.redstone_contact": "동형 감지기", - "block.create.redstone_link": "레드스톤 링크", - "block.create.adjustable_pulse_repeater": "가변 펄스 리피터", - "block.create.adjustable_repeater": "가변 리피터", - "block.create.analog_lever": "아날로그 레버", - "block.create.stockpile_switch": "수량 스위치", - "block.create.controller_rail": "방향 레일", - - "block.create.creative_crate": "크리에이티브 창고", - "item.create.deforester": "산림파괴자", - "item.create.extendo_grip": "외장형 연장 팔", - "item.create.handheld_blockzapper": "휴대용 블록발사기", - "item.create.handheld_worldshaper": "휴대용 세계편집기", - "item.create.goggles": "엔지니어의 고글", - "item.create.red_sand_paper": "붉은 사포", - "item.create.sand_paper": "사포", - "item.create.schematic": "청사진", - "item.create.schematic_and_quill": "청사진과 깃펜", - "item.create.empty_schematic": "빈 청사진", - - "block.create.copper_block": "구리 블록", - "block.create.copper_casing": "구리 케이스", - "block.create.copper_ore": "구리 광석", - "block.create.copper_shingles": "구리 판자", - "block.create.copper_tiles": "구리 타일", - "block.create.refined_radiance_casing": "빛나는 케이스", - "block.create.shadow_steel_casing": "그림자 케이스", - "block.create.zinc_block": "아연 블", - "block.create.zinc_ore": "아연 광석", - "item.create.andesite_alloy": "안산암 합금", - "item.create.blaze_cake": "블레이즈 케이크", - "item.create.blaze_cake_base": "블레이즈 케이크 틀", - "item.create.brass_hand": "황동 손", - "item.create.brass_ingot": "황동 주괴", - "item.create.brass_nugget": "황동 조각", - "item.create.brass_sheet": "황동 판", - "item.create.chromatic_compound": "색채 혼합물", - "item.create.cinder_flour": "잿가루", - "item.create.copper_ingot": "구리 주괴", - "item.create.copper_nugget": "구리 조각", - "item.create.copper_sheet": "구리 판", - "item.create.crafter_slot_cover": "조합기 슬롯 덮개", - "item.create.crushed_brass": "분쇄된 황동", - "item.create.crushed_copper_ore": "분쇄된 구리 광석", - "item.create.crushed_gold_ore": "분쇄된 금 광석", - "item.create.crushed_iron_ore": "분쇄된 철 광석", - "item.create.crushed_zinc_ore": "분쇄된 아연 광석", - "item.create.dough": "반죽", - "item.create.electron_tube": "전지 튜브", - "item.create.empty_blaze_burner": "빈 블레이즈 버너", - "item.create.filter": "필터 틀", - "item.create.golden_sheet": "금 판", - "item.create.integrated_circuit": "집적 회로", - "item.create.iron_sheet": "철 판", - "item.create.lapis_sheet": "청금석 판", - "item.create.polished_rose_quartz": "윤나는 장밋빛 석영", - "item.create.powdered_obsidian": "흑요석 가루", - "item.create.propeller": "프로펠러", - "item.create.refined_radiance": "정제된 광채", - "item.create.rose_quartz": "장밋빛 석영", - "item.create.shadow_steel": "그림자 강철", - "item.create.super_glue": "강력 접착제", - "item.create.tree_fertilizer": "나무 비료", - "item.create.wand_of_symmetry": "대칭의 지팡이", - "item.create.wheat_flour": "밀가루", - "item.create.whisk": "혼합기", - "item.create.wrench": "렌치", - "item.create.zinc_ingot": "아연 주괴", - "item.create.zinc_nugget": "아연 조각", - "block.create.metal_bracket": "금속 지지대", - "block.create.wooden_bracket": "나무 지지대", - "block.create.lit_blaze_burner": "불타는 빈 블레이즈 버너", - - "block.create.chocolate": "초콜릿", - "block.create.honey": "꿀", - "fluid.create.chocolate": "초콜릿", - "fluid.create.honey": "꿀", - "fluid.create.milk": "우유", - "fluid.create.potion": "포션", - "fluid.create.tea": "건축가의 차", - "item.create.builders_tea": "건축가의 차", - "item.create.bar_of_chocolate": "초콜릿 바", - "item.create.chocolate_bucket": "초콜릿 양동이", - "item.create.honey_bucket": "꿀 양동이", - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Create모드에 어서오세요", - "advancement.create.root.desc": "멋진 장치들을 만들 시간입니다!", - "advancement.create.andesite_alloy": "합금..?", - "advancement.create.andesite_alloy.desc": "암석으로도 합금을 만들 수 있나요?", - - "advancement.create.its_alive": "살아 움직이는", - "advancement.create.its_alive.desc": "당신의 첫 장치가 움직이는 것을 보세요.", - "advancement.create.shifting_gears": "기어 변환", - "advancement.create.shifting_gears.desc": "크기가 다른 톱니바퀴를 연결하여 장치의 속도를 바꿀 수 있습니다.", - "advancement.create.overstressed": "과부화", - "advancement.create.overstressed.desc": "직접 피로도의 한계를 경험해보세요.", - "advancement.create.belt": "켈프 드라이브", - "advancement.create.belt.desc": "두 축에 컨베이어 벨트를 이으세요.", - "advancement.create.tunnel": "엄폐!", - "advancement.create.tunnel.desc": "터널을 이용해 벨트를 꾸며보세요.", - "advancement.create.splitter_tunnel": "분할 정복 알고리즘", - "advancement.create.splitter_tunnel.desc": "여러 황동 터널을 이용하여 분리기를 만드세요.", - "advancement.create.chute": "쏟아져 내려와", - "advancement.create.chute.desc": "수직 벨트역할을 하는 슈트를 설치하세요.", - "advancement.create.upward_chute": "공중 납치", - "advancement.create.upward_chute.desc": "아이템이 바람을 받은 슈트안에서 날아가는 것을 보세요.", - "advancement.create.belt_funnel": "펄럭거리는 깔기", - "advancement.create.belt_funnel.desc": "깔때기를 벨트나 아이템 거치대에 설치하여 특별한 모양을 만들어 보세요.", - "advancement.create.belt_funnel_kiss": "깔때기는 어떻게 태어나?", - "advancement.create.belt_funnel_kiss.desc": "두 벨트 깔때기를 만나게하세요. 쪽!", - "advancement.create.fan": "바람의 힘을 느껴라", - "advancement.create.fan.desc": "선풍기 바람을 느껴보세요.", - "advancement.create.fan_lava": "지열 난방기", - "advancement.create.fan_lava.desc": "아이템을 녹이는 바람을 느껴보세요.", - "advancement.create.fan_water": "축축한 세척", - "advancement.create.fan_water.desc": "아이템을 씻는 바람을 느껴보세요.", - "advancement.create.fan_smoke": "기계 풀무", - "advancement.create.fan_smoke.desc": "아이템을 굽는 바람을 느껴보세요.", - "advancement.create.wrench": "곡괭이여 잘 있거라", - "advancement.create.wrench.desc": "당신의 장치 설계를 도와줄 렌치를 만드세요.", - "advancement.create.goggles": "피로돋보기", - "advancement.create.goggles.desc": "장치에 대한 운동 정보를 가져다 줄 고글을 만드세요.", - "advancement.create.speedometer": "근데 얼마나 빨라?", - "advancement.create.speedometer.desc": "속도 계측기를 가동하세요. 고글을 통해 수치가 얼마나 되는지 보세요.", - "advancement.create.stressometer": "근데 얼마나 피로해?", - "advancement.create.stressometer.desc": "피로도 계측기를 가동하세요. 고글을 통해 수치가 얼마나 되는지 보세요.", - "advancement.create.aesthetics": "짠! 예술!", - "advancement.create.aesthetics.desc": "축, 파이프, 톱니바퀴에 지지대를 설치하세요.", - "advancement.create.reinforced": "짠! 강화!", - "advancement.create.reinforced.desc": "축, 파이프, 벨트에 적절한 케이스를 씌우세요.", - "advancement.create.water_wheel": "수력 동력화", - "advancement.create.water_wheel.desc": "물레방아를 설치하고 회전하게 만드세요!", - "advancement.create.chocolate_wheel": "초콜릿방아", - "advancement.create.chocolate_wheel.desc": "녹은 초콜릿으로 물레방아를 돌리세요.", - "advancement.create.lava_wheel": "불레방아", - "advancement.create.lava_wheel.desc": "이건 일어나지 않았어야 하는데...", - "advancement.create.cuckoo": "잘자...", - "advancement.create.cuckoo.desc": "뻐꾸기 시계가 잘 시간을 알리는 것을 관찰하세요.", - "advancement.create.millstone": "나만의 작은 분쇄기", - "advancement.create.millstone.desc": "멧돌을 설치하고 가동시키세요.", - "advancement.create.windmill": "선선한 바람", - "advancement.create.windmill.desc": "풍차 베어링을 작동시키세요.", - "advancement.create.maxed_windmill": "강한 바람", - "advancement.create.maxed_windmill.desc": "풍차 베어링을 최대 속력으로 작동시키세요.", - "advancement.create.andesite_casing": "안산암 시대", - "advancement.create.andesite_casing.desc": "안산암과 나무를 이용하여 기본 케이스를 만드세요.", - "advancement.create.mechanical_drill": "굴착기 가동", - "advancement.create.mechanical_drill.desc": "드릴을 설치하고 가동시키세요.", - "advancement.create.press": "'깡!'", - "advancement.create.press.desc": "프레스를 만들고 금속 판을 만들어보세요.", - "advancement.create.polished_rose_quartz": "장밋빛 다이아몬드", - "advancement.create.polished_rose_quartz.desc": "장밋빛 석영을 투명해지도록 열심히 사포질하세요.", - "advancement.create.electron_tube": "삐빅-", - "advancement.create.electron_tube.desc": "전지 튜브를 만드세요. 발전된 장치들에 쓰입니다.", - "advancement.create.mechanical_saw": "벌목기 가동", - "advancement.create.mechanical_saw.desc": "톱을 설치하고 가동시키세요.", - "advancement.create.basin": "대야 시스템", - "advancement.create.basin.desc": "대야를 설치하고 아이템을 던져보세요.", - "advancement.create.mixer": "섞고 돌리고 섞고", - "advancement.create.mixer.desc": "대야 위에 믹서를 설치하고, 가동시켜 재료를 만드세요.", - "advancement.create.blaze_burner": "살아있는 불", - "advancement.create.blaze_burner.desc": "블레이즈 버너를 얻으세요.", - "advancement.create.compact": "자동 압축", - "advancement.create.compact.desc": "대야와 압착기를 이용하서 아이템을 섞어보세요.", - - "advancement.create.brass": "진짜 합금", - "advancement.create.brass.desc": "구리와 아연을 가지고 황동을 만드세요.", - "advancement.create.brass_casing": "황동기 시대", - "advancement.create.brass_casing.desc": "새롭게 얻은 황동과 나무를 가지고 업그레이드된 케이스를 만드세요.", - "advancement.create.copper_casing": "구리 시대", - "advancement.create.copper_casing.desc": "구리 판을 이용해 구리 케이스를 만드세요.", - "advancement.create.spout": "쪼르록", - "advancement.create.spout.desc": "수도꼭지가 아이템에 액체를 채우는 것을 보세요.", - "advancement.create.spout_potion": "대규모 양조", - "advancement.create.spout_potion.desc": "수도꼭지가 병에 포션을 채우는 것을 보세요.", - "advancement.create.chocolate": "상상의 세계", - "advancement.create.chocolate.desc": "양동이에 녹은 초콜릿을 채우세요.", - "advancement.create.item_drain": "회전 배수", - "advancement.create.item_drain.desc": "아이템 배수구가 액체를 비우는 것을 보세요.", - "advancement.create.chained_item_drain": "구른다!", - "advancement.create.chained_item_drain.desc": "아이템이 여러 배수구 위를 굴러가는 것을 보세요.", - "advancement.create.glass_pipe": "액체 엿보기", - "advancement.create.glass_pipe.desc": "액체가 창이 달린 파이프를 지나는 것을 보세요. 직선 파이프에 렌치로 우클릭하면 창문이 생깁니다.", - "advancement.create.pipe_collision": "액체를 만나게하지 마세요!", - "advancement.create.pipe_collision.desc": "파이프 안에서 두 액체를 만나게 하세요.", - "advancement.create.pipe_spill": "누출 사고", - "advancement.create.pipe_spill.desc": "파이프 끝을 열어 액체가 밖으로 나오는 것을 보세요.", - "advancement.create.hose_pulley": "공업 펌프", - "advancement.create.hose_pulley.desc": "호스 도르래를 사용하여 액체를 채우거나 빨아들이세요.", - "advancement.create.infinite_water": "바다를 흡수하다", - "advancement.create.infinite_water.desc": "무한으로 인식되는 물 웅덩이에서 물을 끌어올리세요.", - "advancement.create.infinite_lava": "세계의 핵을 흡수하다", - "advancement.create.infinite_lava.desc": "무한으로 인식되는 용암 웅덩이에서 용암을 끌어올리세요.", - "advancement.create.infinite_chocolate": "상상 속에 잠기다", - "advancement.create.infinite_chocolate.desc": "무한으로 인식되는 초콜릿 웅덩이에서 초콜릿을 끌어올리세요..", - - "advancement.create.crafter": "자동 조합", - "advancement.create.crafter.desc": "기계식 조합기를 설치하고 가동시키세요.", - "advancement.create.clockwork_bearing": "시계 제작", - "advancement.create.clockwork_bearing.desc": "시계 베어링에 구조물을 달고 작동시키세요.", - "advancement.create.nixie_tube": "스타일있게 표시하기", - "advancement.create.nixie_tube.desc": "디지털 표시등을 얻고 설치하세요.", - "advancement.create.deployer": "찌르고, 설치하고, 공격!", - "advancement.create.deployer.desc": "당신의 분신, 배포기를 설치하고 가동시키세요.", - "advancement.create.fist_bump": "하이파이브!", - "advancement.create.fist_bump.desc": "두 배포기를 서로 부딫치게 하세요.", - "advancement.create.crushing_wheel": "한 쌍의 거인들", - "advancement.create.crushing_wheel.desc": "더 많은 재료를 더 효율적으로 갈 분쇄 휠을 만드세요.", - "advancement.create.speed_controller": "엔지니어들이 이 장치를 싫어합니다", - "advancement.create.speed_controller.desc": "궁극의 회전속도 변경장치, 회전 속도 컨트롤러를 설치하세요.", - "advancement.create.flywheel": "공장의 심장", - "advancement.create.flywheel.desc": "화로엔진에 플라이휠을 연결하세요.", - "advancement.create.overstress_flywheel": "정말 높은 피로", - "advancement.create.overstress_flywheel.desc": "화로 엔진을 과부하하세요.", - "advancement.create.integrated_circuit": "복잡한 계산", - "advancement.create.integrated_circuit.desc": "집적 회로를 제작하세요.", - "advancement.create.mechanical_arm": "할일이 많아!", - "advancement.create.mechanical_arm.desc": "기계 팔을 조합하고, 입력부와 출력부를 정하고, 설치한 다음 돌리세요. 그리고 그것이 작동하는 것을 보세요.", - "advancement.create.musical_arm": "볼륨 최대로!", - "advancement.create.musical_arm.desc": "기계 팔이 주크박스를 작동시키는 것을 보세요.", - "advancement.create.arm_many_targets": "정리를 할 수 있는 정도의 능력", - "advancement.create.arm_many_targets.desc": "기계 팔에 10개 이상의 출력부를 설정하세요.", - "advancement.create.arm_blaze_burner": "연료를 줄 수 있는 정도의 능력", - "advancement.create.arm_blaze_burner.desc": "기계 팔이 블레이즈 버너에 연료를 넣도록 하세요.", - "advancement.create.chromatic_compound": "양극성 재료", - "advancement.create.chromatic_compound.desc": "색채 혼합물를 만드세요.", - "advancement.create.shadow_steel": "공허를 받아들이다", - "advancement.create.shadow_steel.desc": "무의 금속, 그림자 강철을 생성하세요.", - "advancement.create.refined_radiance": "빛으로 제련되다", - "advancement.create.refined_radiance.desc": "강력한 색채 물질, 정제된 빛을 생성하세요.", - "advancement.create.chromatic_age": "양극 시대", - "advancement.create.chromatic_age.desc": "빛과 어둠의 케이스를 제작하세요.", - "advancement.create.blaze_cake": "설탕 러시", - "advancement.create.blaze_cake.desc": "블레이즈 버너에게 줄 특별한 케이크를 만드세요.", - "advancement.create.extendo_grip": "띠요오옹!", - "advancement.create.extendo_grip.desc": "외장형 연장 팔을 드세요.", - "advancement.create.dual_extendo_grip": "궁극의 띠용!", - "advancement.create.dual_extendo_grip.desc": "쌍으로 외장형 연장 팔을 들어 인간을 뛰어넘은 사거리를 가지세요.", - - "advancement.create.zapper": "나는 스타일있게 건축해", - "advancement.create.zapper.desc": "당신의 건축을 도와줄 멋진 레이저 건, 휴대용 블록발사기를 만드세요.", - "advancement.create.upgraded_zapper": "화려한 빛이 날 감싸네", - "advancement.create.upgraded_zapper.desc": "완전히 업그레이드된 휴대용 블록발사기를 만들고 써보세요.", - "advancement.create.wand_of_symmetry": "빛나는 건축", - "advancement.create.wand_of_symmetry.desc": "대칭의 지팡이를 만드세요.", - "advancement.create.deforester": "빛나는 벌목", - "advancement.create.deforester.desc": "산림파괴자를 만들고, 숲에게 작별인사를 하세요.", - - "advancement.create.eob": "End of Beta", - "advancement.create.eob.desc": "이후 업데이트를 기다려주세요. <3", - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Create 팔레트", - - "death.attack.create.crush": "%1$s이(가) 분쇄 휠에 의해 가공되었습니다", - "death.attack.create.fan_fire": "%1$s이(가) 뜨거운 바람에 의해 익어버렸습니다", - "death.attack.create.fan_lava": "%1$s이(가) 용암 바람으로 구워졌습니다", - "death.attack.create.mechanical_drill": "%1$s이(가) 드릴에 관통당했습니다", - "death.attack.create.mechanical_saw": "%1$s이(가) 톱날에 반으로 갈라져 죽었습니다", - "death.attack.create.cuckoo_clock_explosion": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다", - - "create.block.deployer.damage_source_name": "배포기", - "create.block.cart_assembler.invalid": "카트조립기를 레일 위에 설치하세요", - - "create.recipe.crushing": "분쇄", - "create.recipe.milling": "맷돌질", - "create.recipe.fan_washing": "세척", - "create.recipe.fan_washing.fan": "물과 선풍기", - "create.recipe.fan_smoking": "훈연", - "create.recipe.fan_smoking.fan": "불과 선풍기", - "create.recipe.fan_blasting": "제련", - "create.recipe.fan_blasting.fan": "용암과 선풍기", - "create.recipe.pressing": "압착", - "create.recipe.mixing": "혼합", - "create.recipe.automatic_shapeless": "무형 자동 조합", - "create.recipe.automatic_brewing": "자동 양조", - "create.recipe.packing": "압축", - "create.recipe.automatic_packing": "자동 압축", - "create.recipe.sawing": "제재", - "create.recipe.mechanical_crafting": "기계 조합", - "create.recipe.automatic_shaped": "유형 자동 조합", - "create.recipe.block_cutting": "블 절단", - "create.recipe.blockzapper_upgrade": "휴대용 블록발사기 업그레이드", - "create.recipe.sandpaper_polishing": "사포질", - "create.recipe.mystery_conversion": "?", - "create.recipe.spout_filling": "채우기", - "create.recipe.draining": "배수", - "create.recipe.processing.chance": "%1$s%% 확률", - "create.recipe.heat_requirement.none": "열이 필요하지 않음", - "create.recipe.heat_requirement.heated": "고온으로 가열됨", - "create.recipe.heat_requirement.superheated": "초고온으로 가열됨", - - "create.generic.range": "범위", - "create.generic.radius": "반지름", - "create.generic.width": "폭", - "create.generic.height": "높이", - "create.generic.length": "길이", - "create.generic.speed": "속도", - "create.generic.delay": "딜레이", - "create.generic.unit.ticks": "틱", - "create.generic.unit.seconds": "초", - "create.generic.unit.minutes": "분", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "시계 방향", - "create.generic.counter_clockwise": "시계 반대 방향", - - "create.action.scroll": "스크롤하세요", - "create.action.confirm": "확인", - "create.action.abort": "중단", - "create.action.saveToFile": "저장", - "create.action.discard": "삭제", - - "create.keyinfo.toolmenu": "메뉴 세부정보 보기", - "create.keyinfo.scrollup": "Simulate Mousewheel Up (inworld)", - "create.keyinfo.scrolldown": "Simulate Mousewheel Down (inworld)", - - "create.gui.scrollInput.defaultTitle": "옵션을 선택하세요:", - "create.gui.scrollInput.scrollToModify": "스크롤로 수정하기", - "create.gui.scrollInput.scrollToAdjustAmount": "스크롤로 수량 조절하기", - "create.gui.scrollInput.scrollToSelect": "스크롤로 선택", - "create.gui.scrollInput.shiftScrollsFaster": "쉬프트-스크롤로 빨리 수정하기", - "create.gui.toolmenu.focusKey": "[%1$s]를 눌러 세부정보 보기", - "create.gui.toolmenu.cycle": "스크롤로 순환", - "create.gui.symmetryWand.mirrorType": "반사", - "create.gui.symmetryWand.orientation": "방위", - - "create.symmetry.mirror.plane": "거울 모드", - "create.symmetry.mirror.doublePlane": "사각형 모드", - "create.symmetry.mirror.triplePlane": "팔각형 모드", - - "create.orientation.orthogonal": "수직으로", - "create.orientation.diagonal": "대각선으로", - "create.orientation.horizontal": "수평으로", - "create.orientation.alongZ": "Z좌표를 따라", - "create.orientation.alongX": "X좌표를 따라", - - "create.gui.blockzapper.title": "휴대용 블록발사기", - "create.gui.blockzapper.replaceMode": "대체 모드", - "create.gui.blockzapper.searchDiagonal": "대각선을 따라", - "create.gui.blockzapper.searchFuzzy": "물질 경계 무시", - "create.gui.blockzapper.range": "범위", - "create.gui.blockzapper.needsUpgradedAmplifier": "업그레이드가 필요합니다", - "create.gui.blockzapper.patternSection": "패턴 설정", - "create.gui.blockzapper.pattern.solid": "원형", - "create.gui.blockzapper.pattern.checkered": "체스판", - "create.gui.blockzapper.pattern.inversecheckered": "반전된 체스판", - "create.gui.blockzapper.pattern.chance25": "랜덤으로 25% 채우기", - "create.gui.blockzapper.pattern.chance50": "랜덤으로 50% 채우기", - "create.gui.blockzapper.pattern.chance75": "랜덤으로 75% 채우기", - "create.gui.terrainzapper.title": "휴대용 세계편집기", - "create.gui.terrainzapper.placement": "설치방식", - "create.gui.terrainzapper.placement.merged": "선택한 블록에", - "create.gui.terrainzapper.placement.attached": "선택한 블록 옆에", - "create.gui.terrainzapper.placement.inserted": "선택한 블록 안에", - "create.gui.terrainzapper.brush": "브러쉬", - "create.gui.terrainzapper.brush.cuboid": "정육면체", - "create.gui.terrainzapper.brush.sphere": "구", - "create.gui.terrainzapper.brush.cylinder": "원통", - "create.gui.terrainzapper.tool": "도구", - "create.gui.terrainzapper.tool.fill": "채우기", - "create.gui.terrainzapper.tool.place": "설치", - "create.gui.terrainzapper.tool.replace": "대체", - "create.gui.terrainzapper.tool.clear": "지우기", - "create.gui.terrainzapper.tool.overlay": "덮어씌우기", - "create.gui.terrainzapper.tool.flatten": "평탄화", - - "create.terrainzapper.shiftRightClickToSet": "쉬프트-우클릭으로 모양 설정하기", - - "create.blockzapper.usingBlock": "현재 블록: %1$s", - "create.blockzapper.componentUpgrades": "부품 업그레이드:", - "create.blockzapper.component.body": "몸통", - "create.blockzapper.component.amplifier": "증폭기", - "create.blockzapper.component.accelerator": "가속기", - "create.blockzapper.component.retriever": "회수기", - "create.blockzapper.component.scope": "스코프", - "create.blockzapper.componentTier.none": "없음", - "create.blockzapper.componentTier.brass": "황동", - "create.blockzapper.componentTier.chromatic": "혼돈의 결정체", - "create.blockzapper.leftClickToSet": "좌클릭으로 블록 설정하기", - "create.blockzapper.empty": "블록이 없습니다!", - - "create.minecart_coupling.two_couplings_max": "광산 수레는 최대 2개의 커플링만 가질 수 있습니다", - "create.minecart_coupling.unloaded": "열차 일부분이 로딩되지 않은 청크에 있는 것 같습니다", - "create.minecart_coupling.no_loops": "커플링은 반복할 수 없습니다", - "create.minecart_coupling.removed": "광산 수레에서 모든 커플링을 제거했습니다.", - "create.minecart_coupling.too_far": "광산 수레들이 너무 멀리 떨어져 있습니다", - - "create.contraptions.movement_mode": "이동 설정", - "create.contraptions.movement_mode.move_place": "멈췄을때 항상 블록을 설치함", - "create.contraptions.movement_mode.move_place_returned": "멈췄을떄 최초 위치에서만 블록을 설치함", - "create.contraptions.movement_mode.move_never_place": "멈춰도 블록을 설치하지 않음", - "create.contraptions.movement_mode.rotate_place": "멈췄을때 항상 블록을 설치함", - "create.contraptions.movement_mode.rotate_place_returned": "멈췄을떄 최초 위치에서만 블록을 설치함", - "create.contraptions.movement_mode.rotate_never_place": "멈춰도 블록을 설치하지 않음", - "create.contraptions.cart_movement_mode": "수레 장치 이동 설정", - "create.contraptions.cart_movement_mode.rotate": "장치가 항상 전방을 향함", - "create.contraptions.cart_movement_mode.rotate_paused": "수레가 회전할때 장치 행동을 멈춤", - "create.contraptions.cart_movement_mode.rotation_locked": "장치가 회전하지 않음", - "create.contraptions.windmill.rotation_direction": "회전 방향", - "create.contraptions.clockwork.clock_hands": "시계 바늘", - "create.contraptions.clockwork.hour_first": "시침 먼저", - "create.contraptions.clockwork.minute_first": "분침 먼저", - "create.contraptions.clockwork.hour_first_24": "24시간 바늘 먼저", - - "create.logistics.filter": "필터", - "create.logistics.recipe_filter": "조합법 필터", - "create.logistics.fluid_filter": "액체 필터", - "create.logistics.firstFrequency": "주파수. #1", - "create.logistics.secondFrequency": "주파수. #2", - "create.logistics.filter.apply": "%1$s에 필터 저장됨", - "create.logistics.filter.apply_click_again": "%1$s에 필터 저장됨 / 다시 눌러 수량 복사하기", - "create.logistics.filter.apply_count": "필터에 추출 횟수를 적용했습니다.", - - "create.gui.goggles.generator_stats": "발동 상태:", - "create.gui.goggles.kinetic_stats": "가동 상태:", - "create.gui.goggles.at_current_speed": "현재 에너지량", - "create.gui.goggles.base_value": "기본 수치", - "create.gui.gauge.info_header": "게이지 정보:", - "create.gui.speedometer.title": "회전 속도", - "create.gui.stressometer.title": "네트워크 부하", - "create.gui.stressometer.capacity": "용량", - "create.gui.stressometer.overstressed": "과부하됨", - "create.gui.stressometer.no_rotation": "회전없음", - "create.gui.contraptions.not_fast_enough": "이 %1$s은(는) 작동하기에 _회전 속도_가 _부족합니다_", - "create.gui.contraptions.network_overstressed": "_과부하!_ _높은 피로도_ _용량_을 가진 발전기를 추가로 설치하거나 _장치 속도_를 _늦추세요_.", - "create.gui.goggles.contraptions.unmovable_block": "움직일 수 없는 블록: (%d, %d, %d)의 \"%s\"", - "create.gui.adjustable_crate.title": "가변 창고 ", - "create.gui.adjustable_crate.storageSpace": "저장 공간", - "create.gui.stockpile_switch.title": "수량 스위치", - "create.gui.stockpile_switch.invert_signal": "신호 반전", - "create.gui.stockpile_switch.move_to_lower_at": "최소 신호 발동 비율:%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "최소 신호 유지 비율:%1$s%%", - "create.gui.sequenced_gearshift.title": "순서 기어쉬프트", - "create.gui.sequenced_gearshift.instruction": "설명", - "create.gui.sequenced_gearshift.instruction.turn_angle": "회전", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "각도", - "create.gui.sequenced_gearshift.instruction.turn_distance": "피스톤", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "거리", - "create.gui.sequenced_gearshift.instruction.wait": "정지", - "create.gui.sequenced_gearshift.instruction.wait.duration": "지속시간", - "create.gui.sequenced_gearshift.instruction.end": "마침", - "create.gui.sequenced_gearshift.speed": "속도, 방향", - "create.gui.sequenced_gearshift.speed.forward": "입력된 속도, 그대로 회전", - "create.gui.sequenced_gearshift.speed.forward_fast": "입력된 속도의 2배, 그대로 회전", - "create.gui.sequenced_gearshift.speed.back": "입력된 속도, 반대로 회전", - "create.gui.sequenced_gearshift.speed.back_fast": "입력된 속도의 2배, 반대로 회전", - - "create.schematicAndQuill.dimensions": "청사진 크기: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "첫번쨰 위치 지정됨.", - "create.schematicAndQuill.secondPos": "두번째 위치 지정됨.", - "create.schematicAndQuill.noTarget": "[Ctrl]을 눌러 공기 블록을 선택하기.", - "create.schematicAndQuill.abort": "위치 제거됨.", - "create.schematicAndQuill.title": "청사진 이름", - "create.schematicAndQuill.convert": "저장하고 바로 설치하기", - "create.schematicAndQuill.fallbackName": "내 청사진", - "create.schematicAndQuill.saved": "%1$s로 저장됨", - - "create.schematic.invalid": "[!] 없는 아이템 - 청사진 테이블을 이용하세요", - "create.schematic.position": "위치", - "create.schematic.rotation": "회전", - "create.schematic.rotation.none": "없음", - "create.schematic.rotation.cw90": "90도 시계방향 회전", - "create.schematic.rotation.cw180": "180도 시계방향 회전", - "create.schematic.rotation.cw270": "270도 시계방향 회전", - "create.schematic.mirror": "거울", - "create.schematic.mirror.none": "없음", - "create.schematic.mirror.frontBack": "전-후", - "create.schematic.mirror.leftRight": "좌-우", - "create.schematic.tool.deploy": "전개", - "create.schematic.tool.move": "X/Z좌표 이동", - "create.schematic.tool.movey": "Y좌표 이동", - "create.schematic.tool.rotate": "회전", - "create.schematic.tool.print": "설치", - "create.schematic.tool.flip": "뒤집기", - "create.schematic.tool.deploy.description.0": "구조물을 해당 위치로 고정합니다.", - "create.schematic.tool.deploy.description.1": "땅에다 우클릭으로 설치합니다.", - "create.schematic.tool.deploy.description.2": "[Ctrl]을 눌러 플레이어-청사진의 거리를 설정합니다.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-스크롤로 거리를 조정합니다.", - "create.schematic.tool.move.description.0": "청사진을 수평 이동시킵니다.", - "create.schematic.tool.move.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "청사진을 수직 이동시킵니다.", - "create.schematic.tool.movey.description.1": "청사진을 보고 [CTRL]-스크롤로 밉니다.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "청사진을 돌립니다.", - "create.schematic.tool.rotate.description.1": "[CTRL]-스크롤로 90도 돌립니다.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "구조물을 즉시 설치합니다.", - "create.schematic.tool.print.description.1": "[우클릭]으로 현재 지점에 설치를 허가합니다.", - "create.schematic.tool.print.description.2": "이 도구는 크리에이티브 모드 전용입니다.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "당신이 보는 면으로 청사진을 뒤집습니다.", - "create.schematic.tool.flip.description.1": "청사진을 보고 [CTRL]-스크롤로 뒤집습니다.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "동기화 중...", - "create.schematics.uploadTooLarge": "청사진이 너무 큽니다!.", - "create.schematics.maxAllowedSize": "최대 청사진 파일 크기는:", - - "create.gui.schematicTable.title": "청사진 테이블", - "create.gui.schematicTable.refresh": "파일 새로고침", - "create.gui.schematicTable.open_folder": "폴더 열기", - "create.gui.schematicTable.availableSchematics": "사용가능한 청사진", - "create.gui.schematicTable.noSchematics": "저장된 청사진 없음", - "create.gui.schematicTable.uploading": "업로딩 중...", - "create.gui.schematicTable.finished": "업로드 완료!", - "create.gui.schematicannon.title": "청사진 대포", - "create.gui.schematicannon.listPrinter": "재료 목록 프린터", - "create.gui.schematicannon.gunpowderLevel": "화약 용량 %1$s%%", - "create.gui.schematicannon.shotsRemaining": "남은 발포 수 : %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "화약 여분: %1$s", - "create.gui.schematicannon.optionEnabled": "현재 활성화 됨", - "create.gui.schematicannon.optionDisabled": "현재 비활성화 됨", - "create.gui.schematicannon.showOptions": "대포 설치 설정 열기", - "create.gui.schematicannon.option.dontReplaceSolid": "온전한 블록을 대체하지 않음", - "create.gui.schematicannon.option.replaceWithSolid": "온전한 블록을 재료로 대체함", - "create.gui.schematicannon.option.replaceWithAny": "온전한 블록을 아무 재료로 대체함", - "create.gui.schematicannon.option.replaceWithEmpty": "온전한 블록을 공기로 채움", - "create.gui.schematicannon.option.skipMissing": "부족한 블록을 무시하고 진행", - "create.gui.schematicannon.option.skipTileEntities": "타일 엔티티를 보호", - "create.gui.schematicannon.slot.gunpowder": "화약을 넣어 대포 연료를 채우세요", - "create.gui.schematicannon.slot.listPrinter": "책을 넣어 건축 재료 체크리스트를 인쇄하세요", - "create.gui.schematicannon.slot.schematic": "여기에 청사진을 넣으세요. 건설 구역이 설정되어 있어야 합니다.", - "create.gui.schematicannon.option.skipMissing.description": "만약 대포가 설치에 필요한 블록을 찾지 못할 경우,건너뛰고 다음 블록 설치를 진행합니다.", - "create.gui.schematicannon.option.skipTileEntities.description": "대포가 상세정보가 든 상자같은 타일 엔티티 설치를 무시합니다.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "대포가 작업구역의 온전한 블록을 대체하지 않습니다.", - "create.gui.schematicannon.option.replaceWithSolid.description": "대포가 작업구역의 온전한 블록을 대포가 가진 재료로 대체합니다.", - "create.gui.schematicannon.option.replaceWithAny.description": "대포가 작업구역의 온전한 블록을 대포가 가진 어떠한 재료로든 대체합니다.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "대포가 작업구역의 블록들을 제거하고 공기로 채웁니다.", - - "create.schematicannon.status.idle": "휴식", - "create.schematicannon.status.ready": "준비됨", - "create.schematicannon.status.running": "가동 중", - "create.schematicannon.status.finished": "완료", - "create.schematicannon.status.paused": "멈춤", - "create.schematicannon.status.stopped": "중단됨", - "create.schematicannon.status.noGunpowder": "화약이 부족함", - "create.schematicannon.status.targetNotLoaded": "블록이 준비되지 않음", - "create.schematicannon.status.targetOutsideRange": "목표가 너무 멀리 떨어져 있습니다.", - "create.schematicannon.status.searching": "검색 중", - "create.schematicannon.status.skipping": "건너뛰는 중", - "create.schematicannon.status.missingBlock": "부족한 블록:", - "create.schematicannon.status.placing": "설치 중", - "create.schematicannon.status.clearing": "블록을 제거하는 중", - "create.schematicannon.status.schematicInvalid": "청사진 없음", - "create.schematicannon.status.schematicNotPlaced": "청사진이 전개되지 않음", - "create.schematicannon.status.schematicExpired": "청사진 파일이 제거됨", - - "create.gui.filter.blacklist": "블랙리스트", - "create.gui.filter.blacklist.description": "위 목록에 맞지않는 아이템이면 통과합니다. 빈 블랙리스트는 모두 통과시킵니다.", - "create.gui.filter.whitelist": "화이트리스트", - "create.gui.filter.whitelist.description": "위 목록에 맞는 아이템이면 통과합니다. 빈 화이트리스트는 모두 통과시키지 않습니다.", - "create.gui.filter.respect_data": "상세정보 일치", - "create.gui.filter.respect_data.description": "위 목록 아이템의 내구도, 마법부여, 그리고 다른 NBT와 일치할 때 통과시킵니다.", - "create.gui.filter.ignore_data": "상세정보 무시", - "create.gui.filter.ignore_data.description": "상세정보와 상관없이 아이템 종류만 일치한다면 통과시킵니다.", - - "create.item_attributes.placeable": "설치할 수 있음", - "create.item_attributes.placeable.inverted": "설치할 수 없음", - "create.item_attributes.consumable": "먹을 수 있음", - "create.item_attributes.consumable.inverted": "먹을 수 없음", - "create.item_attributes.smeltable": "구워질 수 있음", - "create.item_attributes.smeltable.inverted": "구워질 수 없음", - "create.item_attributes.washable": "세척될 수 있음", - "create.item_attributes.washable.inverted": "세척될 수 없음", - "create.item_attributes.smokable": "훈연될 수 있음", - "create.item_attributes.smokable.inverted": "훈연될 수 없음", - "create.item_attributes.crushable": "분쇄될 수 있음", - "create.item_attributes.crushable.inverted": "분쇄될 수 없음", - "create.item_attributes.blastable": "용광로에 녹일 수 있음", - "create.item_attributes.blastable.inverted": "용광로에 녹일 수 없음", - "create.item_attributes.enchanted": "마법부여됨", - "create.item_attributes.enchanted.inverted": "마법부여되지 않음", - "create.item_attributes.damaged": "내구도가 닮", - "create.item_attributes.damaged.inverted": "내구도가 닳지 않음", - "create.item_attributes.badly_damaged": "심각하게 내구도가 닮", - "create.item_attributes.badly_damaged.inverted": "심각하게 내구도가 닳지 않음", - "create.item_attributes.not_stackable": "겹쳐질 수 없음", - "create.item_attributes.not_stackable.inverted": "겹쳐질 수 있음", - "create.item_attributes.equipable": "장착할 수 있음", - "create.item_attributes.equipable.inverted": "장착할 수 없음", - "create.item_attributes.furnace_fuel": "화로 연료로 쓸 수 있음", - "create.item_attributes.furnace_fuel.inverted": "화로 연료로 쓸 수 없음", - "create.item_attributes.in_tag": "%1$s로 등록됨", - "create.item_attributes.in_tag.inverted": "%1$s로 등록되지 않음", - "create.item_attributes.in_item_group": "%1$s탭에 속함", - "create.item_attributes.in_item_group.inverted": "%1$s탭에 속함", - "create.item_attributes.added_by": "%1$s모드가 추가함", - "create.item_attributes.added_by.inverted": "%1$s모드가 추가하지 않음", - - "create.gui.attribute_filter.no_selected_attributes": "속성이 선택되지 않음", - "create.gui.attribute_filter.selected_attributes": "선택된 속성:", - "create.gui.attribute_filter.add_attribute": "리스트에 속성을 추가합니다", - "create.gui.attribute_filter.add_inverted_attribute": "리스트에 반대 속성을 추가합니다.", - "create.gui.attribute_filter.whitelist_disjunctive": "화이트리스트 (최소)", - "create.gui.attribute_filter.whitelist_disjunctive.description": "아이템이 선택된 속성 중 하나라도 가지고 있다면 통과시킵니다.", - "create.gui.attribute_filter.whitelist_conjunctive": "화이트리스트 (모두)", - "create.gui.attribute_filter.whitelist_conjunctive.description": "아이템이 선택된 속성 모두를 가지고 있어야 통과시킵니다.", - "create.gui.attribute_filter.blacklist": "블랙리스트", - "create.gui.attribute_filter.blacklist.description": "아이템이 선택된 속성이 없다면 통과시킵니다.", - "create.gui.attribute_filter.add_reference_item": "참고할 아이템을 추가하기", - - "create.tooltip.holdKey": "[%1$s]를 눌러 설명보기", - "create.tooltip.holdKeyOrKey": "[%1$s] 또는 [%2$s]를 눌러 설명보기", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "회전속도 요구: %1$s", - "create.tooltip.speedRequirement.none": "없음", - "create.tooltip.speedRequirement.medium": "보통", - "create.tooltip.speedRequirement.high": "빠름", - "create.tooltip.stressImpact": "피로도 부하: %1$s", - "create.tooltip.stressImpact.low": "낮음", - "create.tooltip.stressImpact.medium": "보통", - "create.tooltip.stressImpact.high": "높음", - "create.tooltip.stressImpact.overstressed": "과부하됨", - "create.tooltip.capacityProvided": "피로도 용량: %1$s", - "create.tooltip.capacityProvided.low": "적음", - "create.tooltip.capacityProvided.medium": "보통", - "create.tooltip.capacityProvided.high": "큼", - "create.tooltip.capacityProvided.asGenerator": "", - "create.tooltip.generationSpeed": "%1$s %2$s만큼 발전함", - "create.tooltip.analogStrength": "레드스톤 출력: %1$s/15", - - "create.mechanical_arm.extract_from": "%1$s에서 아이템을 가져감", - "create.mechanical_arm.deposit_to": "%1$s에 아이템을 넣음", - "create.mechanical_arm.summary": "이 기계 팔은 %1$s개의 입력부와 %2$s개의 출력부를 가졌습니다.", - "create.mechanical_arm.points_outside_range": "%1$s개의 상호작용 포인트가 거리제한으로 인해 삭제되었습니다.", - - "create.logistics.when_multiple_outputs_available": "다수의 입력부가 존재할 때", - "create.mechanical_arm.selection_mode.round_robin": "순서대로 옮김", - "create.mechanical_arm.selection_mode.forced_round_robin": "순서대로 옮김(강제적)", - "create.mechanical_arm.selection_mode.prefer_first": "첫 포인트 우선", - - "create.tunnel.selection_mode.split": "분리", - "create.tunnel.selection_mode.forced_split": "강제 분리", - "create.tunnel.selection_mode.round_robin": "순차적 배분", - "create.tunnel.selection_mode.forced_round_robin": "강제 순차적 배분", - "create.tunnel.selection_mode.prefer_nearest": "가까운 곳 선호", - "create.tunnel.selection_mode.randomize": "랜덤", - "create.tunnel.selection_mode.synchronize": "입력부 동기화", - - "create.tooltip.chute.header": "슈트 정보", - "create.tooltip.chute.items_move_down": "아이템이 아래로 이동합니다.", - "create.tooltip.chute.items_move_up": "아이템이 위로 이동합니다.", - "create.tooltip.chute.no_fans_attached": "선풍기가 부착되지 않음", - "create.tooltip.chute.fans_push_up": "선풍기가 아래에서 밈", - "create.tooltip.chute.fans_push_down": "선풍기가 위에서 밈", - "create.tooltip.chute.fans_pull_up": "선풍기가 위에서 당김", - "create.tooltip.chute.fans_pull_down": "선풍기가 아래에서 당김", - - "create.hint.mechanical_arm_no_targets.title": "목표 없음", - "create.hint.mechanical_arm_no_targets": "이 _기계 팔_은 _목표_가 설정되지 않은 것 같습니다. _기계 팔을 손에 들고_ 벨트, 아이템 거치대, 깔때기를 _우클릭_하여 목표로 지정하세요.", - "create.hint.horizontal_funnel.title": "깔때기가 수평임", - "create.hint.horizontal_funnel": "깔때기는 더이상 아이템을 _직접_ 이동시킬 수 없습니다. _벨트나 아이템 거치대_위에 깔때기를 설치하여 아이템을 이동시키세요.", - "create.hint.upward_funnel.title": "깔때기가 위를 바라보고 있음", - "create.hint.upward_funnel": "_기계 팔_, 선풍기가 부착된 _슈트_를 이용하거나, 혹은 아이템이 _던져져야만_ 이동시킬 수 있습니다. 아이템을 _수직으로_ 옮기고 싶다면 _슈트_를 사용해보세요.", - "create.hint.empty_bearing.title": "베어링 업데이트_", - "create.hint.empty_bearing": "_맨 손_으로 베어링을 _우클릭_하여 구조물을 _부착_하세요.", - - "create.gui.config.overlay1": "UNLOCALIZED: Hi :)", - "create.gui.config.overlay2": "UNLOCALIZED: This is a sample overlay", - "create.gui.config.overlay3": "UNLOCALIZED: Click or drag with your mouse", - "create.gui.config.overlay4": "UNLOCALIZED: to move this preview", - "create.gui.config.overlay5": "UNLOCALIZED: Press ESC to exit this screen", - "create.gui.config.overlay6": "UNLOCALIZED: and save the new position", - "create.gui.config.overlay7": "UNLOCALIZED: Run /create overlay reset", - "create.gui.config.overlay8": "UNLOCALIZED: to reset to the default position", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Server tick is currently slowed by %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Server tick is slowed by %s ms now >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Server tick is back to regular speed :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: use /killtps stop to bring back server tick to regular speed", - "create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start to artificially slow down the server tick", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함", - "create.subtitle.schematicannon_finish": "청사진 대포가 끝남", - "create.subtitle.slime_added": "슬라임이 철퍽거림", - "create.subtitle.mechanical_press_activation": "압착기가 가동됨", - "create.subtitle.mechanical_press_item_break": "금속이 부딫힘", - "create.subtitle.blockzapper_place": "블록이 순간이동됨", - "create.subtitle.blockzapper_confirm": "확인 효과음", - "create.subtitle.blockzapper_deny": "취소 효과음", - "create.subtitle.block_funnel_eat": "깔때기가 흡입함", - "create.subtitle.blaze_munch": "블레이즈가 행복하게 섭취함", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.andesite_encased_shaft.tooltip": "안산암 케이스 축", - "block.create.andesite_encased_shaft.tooltip.summary": "_크리에이티브_ _전용_ 아이템입니다. 축에 _안산암 케이스_를 씌운 것입니다. 케이스는 소모되지 않습니다.", - - "block.create.brass_encased_shaft.tooltip": "황동 케이스 축", - "block.create.brass_encased_shaft.tooltip.summary": "_크리에이티브_ _전용_ 아이템입니다. 축에 _황동 케이스_를 씌운 것입니다. 케이스는 소모되지 않습니다.", - - "block.create.wooden_bracket.tooltip": "나무 지지대", - "block.create.wooden_bracket.tooltip.summary": "나무를 이용해 _축, 톱니바퀴, 파이프_를 꾸며보세요.", - - "block.create.metal_bracket.tooltip": "금속 지지대", - "block.create.metal_bracket.tooltip.summary": "금속을 이용해 _축, 톱니바퀴, 파이프_를 꾸며보세요.", - - "block.create.andesite_casing.tooltip": "안산암 케이스", - "block.create.andesite_casing.tooltip.summary": "다양한 용도로 쓰일 수 있는 단순한 기계 케이스입니다. 장식용으로 써도 무방합니다. _축_이나 _벨트_에 _씌울 수 있습니다_.", - - "block.create.andesite_funnel.tooltip": "안산암 깔때기", - "block.create.andesite_funnel.tooltip.summary": "저장소간 아이템을 옮기는 일반적인 아이템 수송장치입니다. _레드스톤_ _신호_로 조정할 수 있습니다.", - "block.create.andesite_funnel.tooltip.condition1": "일반적인 사용처", - "block.create.andesite_funnel.tooltip.behaviour1": "_열린 면_은 _앞_에 있는 아이템을 가져오고 깔때기 _반대편_에 있는 _아이템 저장소_에 _옮겨 넣습니다_.", - "block.create.andesite_funnel.tooltip.condition2": "벨트, 아이템 거치대 등에 설치할 때", - "block.create.andesite_funnel.tooltip.behaviour2": "_장착된 장치_에 있는 아이템을 _가져가거나_, 반대편에서 아이템을 _가져옵니다_. 렌치를 이용하여 깔때기의 _방향_을 조정할 수 있습니다.", - "block.create.andesite_funnel.tooltip.condition3": "두 저장소사이에 수직으로 설치할 때", - "block.create.andesite_funnel.tooltip.behaviour3": "_아이템 칸이 없는_ 호퍼처럼 아이템을 _아래로_ 옮깁니다.", - - "block.create.andesite_tunnel.tooltip": "안산암 터널", - "block.create.andesite_tunnel.tooltip.summary": "벨트의 안전한 _덮개_이며, 벨트로 인한 구멍을 메울 훌륭한 수단입니다.", - "block.create.andesite_tunnel.tooltip.control1": "측면에서 렌치로 우클릭", - "block.create.andesite_tunnel.tooltip.action1": "터널에 창문이 존재할경우, _창문_ _셔터_를 조정합니다.", - - "block.create.brass_funnel.tooltip": "황동 깔기", - "block.create.brass_funnel.tooltip.summary": "저장소간 아이템을 옮기는 일반적인 아이템 수송장치입니다. _레드스톤_ _신호_로 조정할 수 있습니다. 필터도 넣을 수 있습니다.", - "block.create.brass_funnel.tooltip.condition1": "일반적인 사용처", - "block.create.brass_funnel.tooltip.behaviour1": "_열린 면_은 _앞_에 있는 아이템을 가져오고 깔때기 _반대편_에 있는 _아이템 저장소_에 _옮겨 넣습니다_.", - "block.create.brass_funnel.tooltip.condition2": "벨트, 아이템 거치대 등에 설치할 때", - "block.create.brass_funnel.tooltip.behaviour2": "_장착된 장치_에 있는 아이템을 _가져가거나_, 반대편에서 아이템을 _가져옵니다_. 렌치를 이용하여 깔때기의 _방향_을 조정할 수 있습니다.", - "block.create.brass_funnel.tooltip.condition3": "두 저장소사이에 수직으로 설치할 때", - "block.create.brass_funnel.tooltip.behaviour3": "_아이템 칸이 없는_ 호퍼처럼 아이템을 _아래로_ 옮깁니다.", - - "block.create.brass_tunnel.tooltip": "황동 터널", - "block.create.brass_tunnel.tooltip.summary": "벨트에 다양한 _필터링_, _분리_ 기능을 탑재해줄 _황동 터널_입니다.", - "block.create.brass_tunnel.tooltip.condition1": "측면에 순서대로 설치했을 때", - "block.create.brass_tunnel.tooltip.behaviour1": "_서로_ _연결된_ 황동 터널은 한 벨트의 아이템을 _다른 벨트로_ 옮길 수 있습니다.", - "block.create.brass_tunnel.tooltip.condition2": "필터링", - "block.create.brass_tunnel.tooltip.behaviour2": "_황동 터널_은 _입력_, _출력_필터를 설정할 수 있습니다. 터널 출력 필터에 _허용되지_ _않은_ 아이템은, _연결된_ _다른_ 터널로 옮겨집니다.", - "block.create.brass_tunnel.tooltip.condition3": "분리", - "block.create.brass_tunnel.tooltip.behaviour3": "_황동_ _터널_은 _연결된_ _벨트_에 아이템이 다양하게 _분배되도록_ 설정할 수 있습니다.", - "block.create.brass_tunnel.tooltip.control1": "측면에서 렌치로 우클릭", - "block.create.brass_tunnel.tooltip.action1": "터널에 창문이 존재할경우, _창문_ _셔터_를 조정합니다.", - "block.create.brass_tunnel.tooltip.control2": "상면에서 렌치로 우클릭", - "block.create.brass_tunnel.tooltip.action2": "연결된 _터널_의 분리 방식을 바꿉니다.", - - "block.create.copper_casing.tooltip": "구리 케이스", - "block.create.copper_casing.tooltip.summary": "다양한 용도로 쓰일 수 있는 견고한 기계 케이스입니다. 장식용으로 써도 무방합니다.", - "block.create.copper_casing.tooltip.condition1": "액체 파이프에 사용할 때", - "block.create.copper_casing.tooltip.behaviour1": "_액체_ _파이프_를 구리 케이스로 _덮습니다._ 케이스를 씌운 파이프는 _연결이 고정_되어, 다른 파이프와 상호작용하지 않습니다.", - - "block.create.encased_fluid_pipe.tooltip": "ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "_구리 케이스_를 씌운 액체 파이프입니다.", - - "block.create.copper_valve_handle.tooltip": "구리 밸브 손잡이", - "block.create.copper_valve_handle.tooltip.summary": "_플레이어의_ _상호작용_이 필요한 정확한 _회전력_의 _근원_입니다. 근육통 주의하세요!", - "block.create.copper_valve_handle.tooltip.condition1": "사용할 때", - "block.create.copper_valve_handle.tooltip.behaviour1": "연결된 장치에 _회전력_을 _제공_합니다. 웅크리면 _반대로_ 회전시킵니다.", - - "block.create.fluid_pipe.tooltip": "FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "_액체_를 수송시킬 때 쓰입니다. 액체를 옮기려면 _펌프_가 필요합니다.", - "block.create.fluid_pipe.tooltip.condition1": "액체 수송", - "block.create.fluid_pipe.tooltip.behaviour1": "_탱크_와 _대야_같은 _액체_ _저장소_에 연결할 수 있습니다. 노출된 파이프 구멍은 액체를 _흡입, 배출_할 수 있습니다. 누수에 주의하세요!", - "block.create.fluid_pipe.tooltip.control1": "렌치로 우클릭", - "block.create.fluid_pipe.tooltip.action1": "가능하면 파이프에 창문을 설치합니다.", - - - "block.create.hose_pulley.tooltip": "HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "세계에 _많은 양_의 액체를 _배출_하거나 _흡수_하는데 쓰입니다.", - "block.create.hose_pulley.tooltip.condition1": "동력을 받을 때", - "block.create.hose_pulley.tooltip.behaviour1": "호스를 올리거나 내립니다. _호스의 위치_로 액체를 _채우거나 빼낼_ 높이가 정해집니다.", - "block.create.hose_pulley.tooltip.condition2": "액체가 도르래에 흡수될 때", - "block.create.hose_pulley.tooltip.behaviour2": "_호스 끝의 높이_에서 액체 블록을 _흡수_하기 시작합니다. _매우 많은 양의 액체_는 무한으로 간주됩니다.", - "block.create.hose_pulley.tooltip.condition3": "액체가 도르래에서 배출 될 때", - "block.create.hose_pulley.tooltip.behaviour3": "_호스 끝의 높이_에서 액체를 _채우기_ 시작합니다.", - - "block.create.fluid_tank.tooltip": "FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "당신이 좋아하는 _액체_를 모두 _저장_하세요. 넓이와 높이를 조정할 수 있습니다.", - "block.create.fluid_tank.tooltip.condition1": "렌치로 우클릭", - "block.create.fluid_tank.tooltip.behaviour1": "창문 설정을 변경합니다.", - - "block.create.creative_fluid_tank.tooltip": "CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "이 액체 탱크는 모든 액체를 _무한정 복제_합니다. 넓이와 높이를 조정할 수 있습니다.", - "block.create.creative_fluid_tank.tooltip.condition1": "탱크에 액체가 들어있을 때", - "block.create.creative_fluid_tank.tooltip.behaviour1": "이 탱크에서 추출되는 액체는 _무한정 공급_됩니다. 이 탱크에 들어가는 액체는 _사라집니다_.", - "block.create.creative_fluid_tank.tooltip.condition2": "렌치로 우클릭", - "block.create.creative_fluid_tank.tooltip.behaviour2": "창문 설정을 변경합니다.", - - "block.create.fluid_valve.tooltip": "FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "파이프 속 액체의 흐름을 멈춥니다.", - "block.create.fluid_valve.tooltip.condition1": "설정가능한 흐름", - "block.create.fluid_valve.tooltip.behaviour1": "_회전력_은 밸브를 닫게만들어, 액체의 흐름을 _중지_시킵니다. _반대_ _방향의_ 회전력은 밸브를 다시 엽니다.", - - "block.create.mechanical_pump.tooltip": "MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "_회전력_을 가지고 액체를 파이프에서 _움직일_ _수_ _있게_ 합니다. 양방향 최대 범위가 있습니다. (기본설정은 16블록)", - "block.create.mechanical_pump.tooltip.condition1": "액체의 흐름", - "block.create.mechanical_pump.tooltip.behaviour1": "_회전력_이 파이프 안의 _액체_를 _움직이게_ 하는 압력을 발생시킵니다. 회전력의 방향을 _반전_시켜, 액체의 흐름을 _바꿀_ _수_ 있습니다.", - "block.create.mechanical_pump.tooltip.control1": "렌치로 우클릭", - "block.create.mechanical_pump.tooltip.action1": "_펌프_의 방향을 반전시켜, 흐름의 _기본_ _방향_을 바꿉니다.", - - "block.create.smart_fluid_pipe.tooltip": "SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "_필터_가 있는 액체 파이프입니다. 어떤 액체가 지나갈 수 있는지 _특정_할 수 있습니다.", - "block.create.smart_fluid_pipe.tooltip.condition1": "액체가 흘러들어올 때", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "_필터에 맞지 않는_ 액체는 멈춥니다.", - "block.create.smart_fluid_pipe.tooltip.condition2": "액체 용기에 접해있을 때", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "_필터에 맞는_ 액체만 빼냅니다.", - - - "block.create.spout.tooltip": "SPOUT", - "block.create.spout.tooltip.summary": "액체 용기를 _리필_해주는 펌프입니다.", - "block.create.spout.tooltip.condition1": "액체 수송", - "block.create.spout.tooltip.behaviour1": "양동이나 물병같이 _액체를_ _담는_ _용기_가 아래에 있다면, 수도꼭지는 _자신이_ _가진_ _액체_로 채웁니다.", - "block.create.spout.tooltip.condition2": "액체 자동화", - "block.create.spout.tooltip.behaviour2": "수도꼭지가 _벨트_나 _아이템 거치대_위에 설치되어있다면, 아래를 지나가는 액체 용기와 _자동으로_ 반응합니다.", - - "block.create.item_drain.tooltip": "ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "액체 용기를 _비우기위해_ 철창을 붙인 아이템 거치대입니다.", - "block.create.item_drain.tooltip.condition1": "액체 수송", - "block.create.item_drain.tooltip.behaviour1": "_양동이나 병같은_ 액체 용기가 옆에서 들어오면, 배수구는 자신의 용기에 액체를 _쏟아낼_ 것입니다. 아이템은 반대편으로 배출됩니다.", - - "block.create.mechanical_arm.tooltip": "MECHANICAL ARM", - "block.create.mechanical_arm.tooltip.summary": "_아이템_ 재배치를 위한 _고급_ _장치_입니다.", - "block.create.mechanical_arm.tooltip.condition1": "아이템 이동", - "block.create.mechanical_arm.tooltip.behaviour1": "_벨트_, _아이템 거치대_, _깔때기_, _기계_ _조합기_와 같은 접근가능한 인벤토리에서 아이템을 _가져오거나_ _놓을_ 수 있습니다.", - "block.create.mechanical_arm.tooltip.control1": "손에 있을 때", - "block.create.mechanical_arm.tooltip.action1": "_접근가능한_ _인벤토리_에 우클릭해서 기계 팔이 아이템을 _가져갈_ _곳_을 설정합니다. 한번 더 우클릭하여 아이템을 _놓을_ _곳_을 설정합니다.", - "block.create.mechanical_arm.tooltip.control2": "렌치를 들고 스크롤", - "block.create.mechanical_arm.tooltip.action2": "_기계_ _팔_이 아이템을 _놓을_ _패턴_을 설정합니다.", - - "block.create.copper_valve_handle.tooltip": "구리 밸브 손잡이", - "block.create.copper_valve_handle.tooltip.summary": "_플레이어의_ _상호작용_이 필요한 정확한 _회전력_의 _근원_입니다. 피곤해지지 않도록 주의하세요!", - "block.create.copper_valve_handle.tooltip.condition1": "사용할 때", - "block.create.copper_valve_handle.tooltip.behaviour1": "연결된 장치에 _회전력_을 _제공_합니다. 웅크리면 _반대로_ 회전시킵니다.", - - "block.create.seat.tooltip": "SEAT", - "block.create.seat.tooltip.summary": "앉아서 드라이브를 즐기세요! _움직이는 장치_에 _플레이어_를 _고정_시킵니다. 가구용으로도 좋습니다! 다양한 색깔이 존재합니다.", - "block.create.seat.tooltip.condition1": "좌석에 우클릭", - "block.create.seat.tooltip.behaviour1": "플레이어가 좌석에 _앉습니다_. _왼쪽 쉬프트_를 눌러 좌석에서 _일어섭니다_.", - - "block.create.chute.tooltip": "슈트", - "block.create.chute.tooltip.summary": "아이템을 _수직, 대각선으로_ 수송합니다. _아이템_ _저장소_에서 아이템을 뺴오거나 넣을 수 있습니다. _호퍼나 벨트_로 슈트의 옆면과 연결할 수 있습니다.", - "block.create.chute.tooltip.condition1": "선풍기 바람을 받을 때", - "block.create.chute.tooltip.behaviour1": "_선풍기_ _바람_을 받은 슈트는 아이템을 _위로_ 수송하거나, _벨트_, _아이템 거치대_에서 아이템을 빨아들일 수 있습니다", - - "block.create.depot.tooltip": "아이템 거치대", - "block.create.depot.tooltip.summary": "아이템을 _간편하게_ 두기에 좋은 블록입니다. 몇몇 장치에 상호작용 포인트를 제공합니다.", - "block.create.depot.tooltip.condition1": "우클릭", - "block.create.depot.tooltip.behaviour1": "_아이템 거치대_에서 아이템을 두거나 가져옵니다. _벨트_에 작용하는 블록, 장치도 _아이템 거치대_와 작용합니다.", - - "item.create.blaze_cake.tooltip": "블레이즈 케이크", - "item.create.blaze_cake.tooltip.summary": "열심히 일하는 _블레이즈_ _버너_의 식사입니다. 그들을 더 화끈하게 만드세요!", - - "item.create.empty_blaze_burner.tooltip": "EMPTY BLAZE BURNER", - "item.create.empty_blaze_burner.tooltip.summary": "불타는 친구를 위한 작은 집입니다. 그들을 _좋은 곳_에 쓸 수 있을 겁니다.", - "item.create.empty_blaze_burner.tooltip.condition1": "블레이즈나 블레이즈 스포너에 사용했을 때", - "item.create.empty_blaze_burner.tooltip.behaviour1": "블레이즈를 _포획_합니다.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "설정된 반사 모드에 따라 블록 설치를 _똑같이_ _재현_합니다.", - "item.create.wand_of_symmetry.tooltip.condition1": "단축바에 있을 때", - "item.create.wand_of_symmetry.tooltip.behaviour1": "활성화 유지", - "item.create.wand_of_symmetry.tooltip.control1": "땅에다 우클릭", - "item.create.wand_of_symmetry.tooltip.action1": "거울을 _생성하거나_ _옮깁니다_.", - "item.create.wand_of_symmetry.tooltip.control2": "공중에 우클릭", - "item.create.wand_of_symmetry.tooltip.action2": "활성화된 거을을 _제거합니다_.", - "item.create.wand_of_symmetry.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.wand_of_symmetry.tooltip.action3": "_설정_ _창_을 엽니다.", - - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "멀리있는 블록을 교체, 설치하는 놀라운 도구입니다.", - "item.create.handheld_blockzapper.tooltip.control1": "블록을 보고 좌클릭", - "item.create.handheld_blockzapper.tooltip.action1": "이 도구로 설치할 블록을 설정합니다.", - "item.create.handheld_blockzapper.tooltip.control2": "블록을 보고 우클릭", - "item.create.handheld_blockzapper.tooltip.action2": "해당 위치에 설정된 블록으로 설치하거나 교체합니다.", - "item.create.handheld_blockzapper.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.handheld_blockzapper.tooltip.action3": "_설정_ _창_을 엽니다.", - - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "_지형경관_을 만들 때 좋은 간편한 도구입니다.", - "item.create.handheld_worldshaper.tooltip.control1": "블록을 보고 좌클릭", - "item.create.handheld_worldshaper.tooltip.action1": "이 도구로 설치할 블록을 설정합니다.", - "item.create.handheld_worldshaper.tooltip.control2": "블록을 보고 우클릭", - "item.create.handheld_worldshaper.tooltip.action2": "해당 위치에 설정된 _브러쉬_ 와 _도구_를 적용합니다.", - "item.create.handheld_worldshaper.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.handheld_worldshaper.tooltip.action3": "_설정_ _창_을 엽니다.", - - "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "일반적인 나무 종류들의 성장을 촉진시킬 강력한 미네랄의 혼합물입니다.", - "item.create.tree_fertilizer.tooltip.condition1": "묘목에 사용했을 때", - "item.create.tree_fertilizer.tooltip.behaviour1": "묘목을 주위 공간과 _상관없이_ 성장시킵니다.", - - "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "수 초 만에 나무를 쓰러뜨리는 _놀라운_ _도끼_입니다.", - - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "띠요오옹! 사용자의 _사거리_를 늘려줍니다.", - "item.create.extendo_grip.tooltip.condition1": "다른 손에 있을 때", - "item.create.extendo_grip.tooltip.behaviour1": "_기존_ _손_에있는 아이템의 사거리를 늘립니다.", - - "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _아이템_ 목록에 따라 _조정_합니다.", - "item.create.filter.tooltip.condition1": "필터 슬롯에 있을 때", - "item.create.filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", - "item.create.filter.tooltip.condition2": "우클릭", - "item.create.filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", - - "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _속성_ 목록에 따라 _조정_합니다.", - "item.create.attribute_filter.tooltip.condition1": "필터 슬롯에 있을 때", - "item.create.attribute_filter.tooltip.behaviour1": "필터 _설정_에 따라 아이템 흐름을 _조정_합니다.", - "item.create.attribute_filter.tooltip.condition2": "우클릭", - "item.create.attribute_filter.tooltip.behaviour2": "_설정_ _창_을 엽니다.", - - "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "조합 재료로 쓰이거나 청사진 테이블에서 청사진을 불러올 때 쓰입니다.", - - "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "세계에 구조물을 _홀로그램으로_ 불러와 지정하고 설치합니다. 지정된 홀로그램은 _청사진_ _대포_의 _작업_ _영역_이 됩니다.", - "item.create.schematic.tooltip.condition1": "들고 있을 떄", - "item.create.schematic.tooltip.behaviour1": "UI의 도구로 _변경/설치_ 할 수 있습니다.", - "item.create.schematic.tooltip.control1": "웅크린 상태에서 우클릭", - "item.create.schematic.tooltip.action1": "정확한 _좌표_ 입력을 위한 창을 엽니다.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "세계에 있는 구조물을 _.nbt파일_로 저장할 때 쓰입니다.", - "item.create.schematic_and_quill.tooltip.condition1": "1단계", - "item.create.schematic_and_quill.tooltip.behaviour1": "_두_ _모서리_를 우클릭으로 선택하세요.", - "item.create.schematic_and_quill.tooltip.condition2": "2단계", - "item.create.schematic_and_quill.tooltip.behaviour2": "면을 바라보고 _Ctrl-스크롤_하여 크기를 조정하세요. 우클릭을 다시 하면 저장됩니다.", - "item.create.schematic_and_quill.tooltip.control1": "우클릭", - "item.create.schematic_and_quill.tooltip.action1": "모서리 선택 / 저장 확인", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl를 누르고 있을 때", - "item.create.schematic_and_quill.tooltip.action2": "_Scroll_를 이용하여 거리를 조정합니다.", - "item.create.schematic_and_quill.tooltip.control3": "웅크린 상태에서 우클릭", - "item.create.schematic_and_quill.tooltip.action3": "선택 영역을 리셋하고 _삭제_합니다.", - - "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "장착된 청사진을 바탕으로 블록들을 _발포_합니다. _화약_을 연료로 사용하고 주변 인벤토리 공간에서 아이템을 사용합니다.", - "block.create.schematicannon.tooltip.control1": "우클릭", - "block.create.schematicannon.tooltip.action1": "창을 엽니다.", - - "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "_빈_ _청사진_에 저장된 청사진을 불러옵니다.", - "block.create.schematic_table.tooltip.condition1": "빈 청사진을 넣을 때", - "block.create.schematic_table.tooltip.behaviour1": "Schematics 폴더에서 선택한 파일을 업로드합니다.", - - "block.create.shaft.tooltip": "SHAFT", - "block.create.shaft.tooltip.summary": "_일직선_으로 _회전_을 전달합니다.", - - "block.create.cogwheel.tooltip": "COGWHEEL", - "block.create.cogwheel.tooltip.summary": " _일직선_이나 _옆_ _톱니바퀴_로 _회전_을 _전달_합니다.", - - "block.create.large_cogwheel.tooltip": "LARGE COGWHEEL", - "block.create.large_cogwheel.tooltip.summary": "큰 톱니바퀴입니다. 작은 톱니바퀴와 맞물렸을때, _회전 속도_가 _변합니다_.", - - "block.create.encased_shaft.tooltip": "ENCASED SHAFT", - "block.create.encased_shaft.tooltip.summary": "_일직선_으로 _회전_을 전달합니다. _벽을_ _넘어_ 회전을 보낼 때 유용합니다.", - - "block.create.gearbox.tooltip": "GEARBOX", - "block.create.gearbox.tooltip.summary": "_전후좌우_로 회전을 보냅니다. 한번 더 조합해서 설정을 바꿀 수 있습니다.", - - "block.create.gearshift.tooltip": "GEARSHIFT", - "block.create.gearshift.tooltip.summary": "연결된 축의 회전 방향을 _변경_합니다.", - "block.create.gearshift.tooltip.condition1": "레드스톤 신호를 받았을 때", - "block.create.gearshift.tooltip.behaviour1": "_출력_ 회전 방향을 _반전_시킵니다.", - - "block.create.clutch.tooltip": "CLUTCH", - "block.create.clutch.tooltip.summary": "연결된 축의 회전을 _끄고_ _킬_ 수 있습니다.", - "block.create.clutch.tooltip.condition1": "레드스톤 신호를 받았을 때", - "block.create.clutch.tooltip.behaviour1": "출력 방향 회전을 _멈춥니다_.", - - "block.create.encased_chain_drive.tooltip": "ENCASED_CHAIN_DRIVE", - "block.create.encased_chain_drive.tooltip.summary": "회전을 _직선으로_, 또는 다른 _케이스를 씌운 벨트_로 전달합니다. 이 블록들은 축이 없는 면에 붙일 때 서로 연결됩니다. 방향이 일치할 필요는 없습니다.", - "block.create.encased_chain_drive.tooltip.condition1": "연결되었을 때", - "block.create.encased_chain_drive.tooltip.behaviour1": "연결된 블록들은 이 축과 같은 회전속도와 방얗을 가집니다.", - - "block.create.adjustable_chain_gearshift.tooltip": "ADJUSTABLE CHAIN GEARSHIFT", - "block.create.adjustable_chain_gearshift.tooltip.summary": "케이스를 씌운 벨트와 같은 역할을 가집니다. 또한 레드스톤 신호 세기에 따라 _회전_ _속도_를 _조정_할 수 있습니다.", - "block.create.adjustable_chain_gearshift.tooltip.condition1": "레드스톤 신호 설정", - "block.create.adjustable_chain_gearshift.tooltip.behaviour1": "신호가 없다면, 인접한 벨트의 회전속도는 그대로 유지 됩니다. 최대 신호라면, 회전 속도가 정확히 2배가 됩니다. 중간 신호는 회전 속도를 1~2배 증가시킬 것입니다.", - - "item.create.belt_connector.tooltip": "BELT CONNECTOR", - "item.create.belt_connector.tooltip.summary": "두 개 이상의 _축_을 벨트로 연결할 수 있습니다. 연결된 축들은 _모두_ _같은_ _속도_와 _방향_을 가집니다. 벨트는 _아이템_이나 _엔티티_를 _옮길_ _수_ _있습니다_.", - "item.create.belt_connector.tooltip.control1": "축에다 우클릭", - "item.create.belt_connector.tooltip.action1": "첫번째 벨트 끝부분을 설정합니다. 두번째 축은 반드시 _수평_이나 _수직_, _대각선_ 방향에 있는 축에 연결해야합니다.", - "item.create.belt_connector.tooltip.control2": "웅크린 상태에서 우클릭", - "item.create.belt_connector.tooltip.action2": "첫번째 벨트 설정을 초기화합니다.", - - "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "_장치 정보_를 착용자의 시야에 띄어주는 안경입니다.", - "item.create.goggles.tooltip.condition1": "장착했을 때", - "item.create.goggles.tooltip.behaviour1": "해당 장치의 _속도_, _피로도_, _용량_을 레벨에 따라 에 따라 색상 UI를 보여줍니다.", - "item.create.goggles.tooltip.condition2": "계측기를 바라볼 때", - "item.create.goggles.tooltip.behaviour2": "계측기가 연결된 네트워크의 _속도_나 _스트레스_의 자세한 정보를 보여줍니다.", - - "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "장치 구성에 유용한 도구입니다. 장치를 _회전_, _설정_, _해체_하는 데 쓰입니다.", - "item.create.wrench.tooltip.control1": "장치에 우클릭", - "item.create.wrench.tooltip.action1": "사용자가 바라보는 _면으로_ 혹은 _반대로_ 장치를 돌립니다.", - "item.create.wrench.tooltip.control2": "웅크린 상태에서 우클릭", - "item.create.wrench.tooltip.action2": "_장치_를 _해체_하고 _즉시_ _인벤토리_로 넣습니다.", - - "block.create.creative_motor.tooltip": "CREATIVE MOTOR", - "block.create.creative_motor.tooltip.summary": "회전 속도를 _조정_할 수 있는 장치입니다.", - - "block.create.water_wheel.tooltip": "WATER WHEEL", - "block.create.water_wheel.tooltip.summary": "인접한 _물의_ _흐름_에서 얻은 회전을 제공합니다.", - - "block.create.encased_fan.tooltip": "ENCASED FAN", - "block.create.encased_fan.tooltip.summary": "회전력을 _바람으로_ 전환합니다. 다양한 용도로 사용 가능합니다.", - "block.create.encased_fan.tooltip.condition1": "레드스톤 신호를 받을 때", - "block.create.encased_fan.tooltip.behaviour1": "장치 아래의 _열_을 _회전력_으로 _바꾸어_ 제공합니다. 날개가 아래를 바라보아야 합니다.", - "block.create.encased_fan.tooltip.condition2": "돌려질 때", - "block.create.encased_fan.tooltip.behaviour2": "들어오는 회적 속도에 따라 엔티티를 밀거나 당깁니다.", - "block.create.encased_fan.tooltip.condition3": "특정 블록을 통해 바람을 보낼 때", - "block.create.encased_fan.tooltip.behaviour3": "공기 흐름에 _액체_ 혹은 _불꽃_ 효과가 _추가_됩니다. 이는 아이템을 _공정_하는데 쓰일 수 있습니다.", - - "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "덮힌 환풍기 _앞_에 붙여 환풍기의 효과를 _전방_으로 _확대_합니다.", - - "block.create.hand_crank.tooltip": "HAND CRANK", - "block.create.hand_crank.tooltip.summary": "간단한 회전력을 제공합니다. 플레이어의 _상호작용_이 필요합니다.", - "block.create.hand_crank.tooltip.condition1": "사용될 때", - "block.create.hand_crank.tooltip.behaviour1": "연결된 장치에 _회전력_을 _제공_합니다. 웅크리면 _반대로_ 회전시킵니다.", - - "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "_시간의_ _흐름_을 알고 공간을 _꾸미는_ 데 좋은 공예품입니다.", - "block.create.cuckoo_clock.tooltip.condition1": "회전할 때", - "block.create.cuckoo_clock.tooltip.behaviour1": "현재 시각을 보여주고 하루에 두 번 울립니다. 점심과 플레이어가 바로 잘 수 있는 저녁에 울립니다.", - - "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "_회전력_으로 _멀미_를 일으킵니다.", - - "block.create.millstone.tooltip": "MILLSTONE", - "block.create.millstone.tooltip.summary": "투입된 _재료_를 _가는_ 데 좋은 장치입니다. 측면 톱니바퀴나 바닥에 축을 이어 작동합니다. 결과물은 직접 빼내야 합니다.", - "block.create.millstone.tooltip.condition1": "회전 할 때", - "block.create.millstone.tooltip.behaviour1": "옆이나 위에서 투입된 아이템을 _맷돌질_합니다.", - "block.create.millstone.tooltip.condition2": "우클릭할때", - "block.create.millstone.tooltip.behaviour2": "결과물을 직접 꺼냅니다.", - - "block.create.crushing_wheel.tooltip": "CRUSHING WHEEL", - "block.create.crushing_wheel.tooltip.summary": "모든 것을 _부숴버리는_ 큰 바퀴입니다.", - "block.create.crushing_wheel.tooltip.condition1": "다른 분쇄 휠과 붙어있을 때", - "block.create.crushing_wheel.tooltip.behaviour1": "다양한 것을 _분쇄_하는 분쇄 기계를 형성합니다. 휠의 이빨이 _같은_ _속력_으로, _반대_ _방향_으로 맞물려야합니다.", - - "block.create.mechanical_press.tooltip": "MECHANICAL PRESS", - "block.create.mechanical_press.tooltip.summary": "아래있는 아이템을 _눌러버리는_ 힘센 피스톤입니다. _지속적인_ _회전력_이 필요합니다.", - "block.create.mechanical_press.tooltip.condition1": "레드스톤 신호를 받았을 때", - "block.create.mechanical_press.tooltip.behaviour1": "_아래 있는_ 아이템을 누르기 시작합니다.", - "block.create.mechanical_press.tooltip.condition2": "컨베이어 벨트 위에 있을 때", - "block.create.mechanical_press.tooltip.behaviour2": "_자동으로_ 벨트 위를 지나가는 아이템을 누릅니다.", - "block.create.mechanical_press.tooltip.condition3": "대야 위에 있을 때", - "block.create.mechanical_press.tooltip.behaviour3": "필요한 재료들이 _들어올_ _때마다_ 아이템을 _압축_시킵니다.", - - "block.create.basin.tooltip": "BASIN", - "block.create.basin.tooltip.summary": "믹서나 압착기와 같이 쓰이는 간편한 _아이템_ _저장소_입니다. 레드스톤 비교기와 호환됩니다.", - "block.create.basin.tooltip.condition1": "자동 배출", - "block.create.basin.tooltip.behaviour1": "벨트, 다른 대야, 아이템 거치대, 아이템 배수구와 같은 열린 인벤토리가 대야 아래 있다면, 아이템/액체 조합 결과가 자동으로 옮겨집니다. 자동화에 유용합니다.", - - "block.create.blaze_burner.tooltip": "BLAZE HEATER", - "block.create.blaze_burner.tooltip.summary": "길들인 _블레이즈_를 통해 _대야_를 달구는 블록입니다.", - "block.create.blaze_burner.tooltip.condition1": "대야 아래 설치 할 때", - "block.create.blaze_burner.tooltip.behaviour1": "대야를 이용한 조합법에 _열_을 제공합니다.", - "block.create.blaze_burner.tooltip.condition2": "연료가 블레이즈 버너에 사용되었을 때", - "block.create.blaze_burner.tooltip.behaviour2": "_불타는_ _시간_을 화로 연료로 사용되는 시간만큼 늘립니다. _특별한_ _연료_로 최고 화력을 얻으세요.", - - "block.create.reinforced_rail.tooltip": "REINFORCED RAIL", - "block.create.reinforced_rail.tooltip.summary": "목재로 안정된 레일입니다. _지지대_가 _필요하지_ _않습니다_.", - - "block.create.mechanical_mixer.tooltip": "MECHANICAL MIXER", - "block.create.mechanical_mixer.tooltip.summary": "아래있는 아이템을 조합할 혼합기입니다. _지속적인_ _회전력_과 한 칸 아래에 _대야_가 필요합니다.", - "block.create.mechanical_mixer.tooltip.condition1": "대야 위에 있을 때", - "block.create.mechanical_mixer.tooltip.behaviour1": "모든 필요한 아이템이 준비될 때마다 대야 안의 아이템을 섞기 시작합니다.", - "block.create.mechanical_mixer.tooltip.control1": "레드스톤 신호를 받았을 때", - "block.create.mechanical_mixer.tooltip.action1": "믹서를 멈춥니다. 재료를 _처음_ 조합할 때 유요합니다.", - - "block.create.mechanical_crafter.tooltip": "MECHANICAL CRAFTER", - "block.create.mechanical_crafter.tooltip.summary": "모든 조합법을 _자동화_할 장치입니다. 조합법대로 여러개를 _격자_로 설치하고, 화살표를 돌려 _한_ _곳으로_ _모이게_ 설정해야합니다.", - "block.create.mechanical_crafter.tooltip.condition1": "회전할 때", - "block.create.mechanical_crafter.tooltip.behaviour1": "모든 조합칸에 있는 아이템들을 조합하기 시작합니다.", - "block.create.mechanical_crafter.tooltip.condition2": "레드스톤 신호를 받을 때", - "block.create.mechanical_crafter.tooltip.behaviour2": "_현재_ _격자_ 안에 있는 아이템들로 _조합_을 _강제로_ 시도합니다.", - "block.create.mechanical_crafter.tooltip.control1": "전면을 렌치로 조정할 때", - "block.create.mechanical_crafter.tooltip.action1": "각 기계식 조합기의 아이템 이동 방향을 설정합니다. 모든 조합기의 방향은 _하나의_ _최종_ _조합기_로 이동해야하며, 최종 조합기는 조합기 _바깥으로_ 아이템을 운송해야합니다.", - "block.create.mechanical_crafter.tooltip.control2": "측면/후면에서 렌치로 조정할 때", - "block.create.mechanical_crafter.tooltip.action2": "인접한 조합기와 입력 공간을 _연결_합니다. 이를 통해 일일히 아이템을 넣는 노력을 줄일 수 있습니다.", - - "block.create.furnace_engine.tooltip": "FURNACE ENGINE", - "block.create.furnace_engine.tooltip.summary": "_화로의_ _작동_을 필요로 하는 강력한 회전 동력원입니다.", - "block.create.furnace_engine.tooltip.condition1": "작동하는 화로에 붙였을 때", - "block.create.furnace_engine.tooltip.behaviour1": "붙어있는(한칸 띄어져있는) _플라이휠_에 동력을 공급합니다. _용광로_는 _두_ _배_의 화력을 냅니다.", - - "block.create.flywheel.tooltip": "FLYWHEEL", - "block.create.flywheel.tooltip.summary": "붙어있는 _화로_ _엔진_에서 생산된 힘을 안정시키고 _동력화_하는 거대한 금속 바퀴입니다. 화로 엔진으로부터 _한_ _칸_ _떨어져_ 설치해야 합니다.", - "block.create.flywheel.tooltip.condition1": "작동하는 엔진에 붙었을 때", - "block.create.flywheel.tooltip.behaviour1": "엔진의 힘에 따라 연결된 장치에 _회전력_을 제공합니다.", - - "block.create.portable_storage_interface.tooltip": "PORTABLE STORAGE INTERFACE", - "block.create.portable_storage_interface.tooltip.summary": "움직이는 피스톤, 베어링, 수레, 밧줄 도르래에서 _아이템을_ _교환하는_ 장치입니다. 두 인터페이스는 _서로 마주보고_ _1-2블록_ 떨어져있어야 합니다.", - "block.create.portable_storage_interface.tooltip.condition1": "움직일 때", - "block.create.portable_storage_interface.tooltip.behaviour1": "_고정된 인터페이스_와 아이템을 주고 받습니다. 고정된 인터페이스에 아이템을 수송하는 것은 _움직이는 장치와 직접 수송하는 것_과 같습니다. 아이템이 이동하는 동안 움직이는 장치는 _멈춥니다_.", - "block.create.portable_storage_interface.tooltip.condition2": "레드스톤 신호를 받을 때", - "block.create.portable_storage_interface.tooltip.behaviour2": "활성화된 연결을 _해제_합니다.", - - "block.create.portable_fluid_interface.tooltip": "PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "움직이는 피스톤, 베어링, 수레, 밧줄 도르래에서 _액체를_ _교환하는_ 휴대용 장치입니다. 두 인터페이스는 _서로 마주보고_ _1-2블록_ 떨어져있어야 합니다.", - "block.create.portable_fluid_interface.tooltip.condition1": "움직일 때", - "block.create.portable_fluid_interface.tooltip.behaviour1": "_고정된 인터페이스_와 액체를 주고 받습니다. 고정된 인터페이스에 액체를 수송하는 것은 _움직이는 장치에 직접 수송하는 것_과 같습니다. 액체가 이동하는 동안 움직이는 장치는 _멈춥니다_", - "block.create.portable_fluid_interface.tooltip.condition2": "레드스톤 신호를 받을 때", - "block.create.portable_fluid_interface.tooltip.behaviour2": "활성화된 연결을 _해제_합니다.", - - "block.create.rotation_speed_controller.tooltip": "ROTATION SPEED CONTROLLER", - "block.create.rotation_speed_controller.tooltip.summary": "해당 톱니바퀴의 속도를 _변경_할 수 있는 컨트롤러입니다.", - "block.create.rotation_speed_controller.tooltip.condition1": "큰 톱니바퀴와 연결되었을 때", - "block.create.rotation_speed_controller.tooltip.behaviour1": "들어오는 회전력을 받아, 대상의 속도를 변경합니다. _큰_ _톱니바퀴_가 컨트롤러 위에 있어야합니다.", - - "block.create.mechanical_piston.tooltip": "MECHANICAL PISTON", - "block.create.mechanical_piston.tooltip.summary": "_피스톤_의 업그레이드 버전입니다. 회전력을 사용해 연결된 구조물을 옮깁니다. _피스톤_ _연장_ _축_을 후면에 붙여 이 장치의 사거리를 늘이거나 줄일 수 있습니다. 축이 없다면 움직이지 않습니다. _섀시_나 _슬라임_ _블록_을 붙여 일직선의 블록들을 움직일 수 있습니다.", - "block.create.mechanical_piston.tooltip.condition1": "회전될 때", - "block.create.mechanical_piston.tooltip.behaviour1": "붙어있는 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도와 방향에 따라 달라집니다.", - - "block.create.piston_extension_pole.tooltip": "PISTON POLE", - "block.create.piston_extension_pole.tooltip.summary": "기계식 피스톤의 _사거리_를 늘려줍니다.", - "block.create.piston_extension_pole.tooltip.condition1": "기계식 피스톤에 연결했을 때", - "block.create.piston_extension_pole.tooltip.behaviour1": "피스톤의 사거리를 한 블록 늘립니다.", - - "block.create.mechanical_bearing.tooltip": "MECHANICAL BEARING", - "block.create.mechanical_bearing.tooltip.summary": "큰 구조물을 _회전_시키거나 _바람으로부터_ 회전력을 얻습니다.", - "block.create.mechanical_bearing.tooltip.condition1": "회전될 때", - "block.create.mechanical_bearing.tooltip.behaviour1": "연결된 블록들을 돌리기 시작합니다. _섀시_나 _슬라임_ _블록_을 이용해 더 많은 블록을 움직이세요.", - - "block.create.windmill_bearing.tooltip": "WINDMILL BEARING", - "block.create.windmill_bearing.tooltip.summary": "_바람_을 _회전력으로 바꾸는 데_ 사용됩니다. 당신의 디자인을 붙이고 도는 걸 감사하세요!", - "block.create.windmill_bearing.tooltip.condition1": "우클릭했을 때", - "block.create.windmill_bearing.tooltip.behaviour1": "_붙여진 구조물_의 _회전_으로 얻어진 회전력을 제공합니다. 구조물은 _날개_나 _양털_을 포함해야합니다. _섀시, 슬라임볼, 강력 접착제_를 이용하여 여러 블록을 움직여보세요.", - - "block.create.sail_frame.tooltip": "SAIL FRAME", - "block.create.sail_frame.tooltip.summary": "유용한 건축 블록이며, _풍차 베어링_에 달아 동력을 만들 수도 있습니다.", - - "block.create.white_sail.tooltip": "SAIL", - "block.create.white_sail.tooltip.summary": "유용한 건축 블록이며, _풍차 베어링_에 달아 동력을 만들 수도 있습니다. 다양한 색깔이 있습니다.", - "block.create.white_sail.tooltip.condition1": "염료를 들고 우클릭", - "block.create.white_sail.tooltip.behaviour1": "날개의 색깔을 바꿉니다.", - - "block.create.clockwork_bearing.tooltip": "CLOCKWORK BEARING", - "block.create.clockwork_bearing.tooltip.summary": "현재 _인게임_ _시간_을 알려주는 _시침_, _분침_을 돌리는 업그레이드된 베어링입니다.", - "block.create.clockwork_bearing.tooltip.condition1": "회전될 때", - "block.create.clockwork_bearing.tooltip.behaviour1": "현재 시간에 맞춰 연결된 구조물을 _시침_으로써 돌리기 시작합니다. _다른_ _종류의_ _섀시_가 있다면, _분침_처럼 돌립니다.", - - "block.create.sequenced_gearshift.tooltip": "SEQUENCED GEARSHIFT", - "block.create.sequenced_gearshift.tooltip.summary": "연속으로 5개의 회전 명령을 내릴 수 있는 _프로그램이_ _가능한_ 장치입니다. 이것으로 베어링, 피스톤, 도르래의 움직임과 타이밍을 정할 수 있습니다. 빠른 속력에는 부정확해질 수 있습니다.", - "block.create.sequenced_gearshift.tooltip.condition1": "레드스톤 신호를 받을 때", - "block.create.sequenced_gearshift.tooltip.behaviour1": "입력 속도에 따른 프로그램된 명령들을 수행하기 시작합니다.", - "block.create.sequenced_gearshift.tooltip.condition2": "우클릭했을 때", - "block.create.sequenced_gearshift.tooltip.behaviour2": "설정 창을 엽니다.", - - "block.create.cart_assembler.tooltip": "CART ASSEMBLER", - "block.create.cart_assembler.tooltip.summary": "레일 위에 설치되었을 때, 지나가는 _광산_ _수레_에 연결된 구조물을 _설치/해체_합니다. [Ctrl]키를 눌러 레일 종류에 따른 작동 방법을 알아보세요.", - "block.create.cart_assembler.tooltip.condition1": "단일 수레 장치", - "block.create.cart_assembler.tooltip.behaviour1": "_한 조립기_만 있다면, 구조물은 _한 수레에만_ 연결됩니다. _렌치_를 이용해 _특정 회전 동작_을 설정하세요.", - "block.create.cart_assembler.tooltip.condition2": "기차 장치", - "block.create.cart_assembler.tooltip.behaviour2": "_구조물로 연결된_ 두 카트 조립기는 _모두_ 수레를 가지고 있을 때 _구조물로 두 수레를 연결_합니다. 구조물은 _광산 수레 커플링_과 유사하게 기능합니다.", - "block.create.cart_assembler.tooltip.control1": "레일 위에 설치되었을 때", - "block.create.cart_assembler.tooltip.action1": "신호를 받았을 때 _조립_하고, 아니라면 _해체_합니다.", - "block.create.cart_assembler.tooltip.control2": "전동 레일 위에 설치되었을 때", - "block.create.cart_assembler.tooltip.action2": "신호를 받았을 때 _조립_하고 _가속_하지만, 아니라면 _해체_하고 _멈춥니다_.", - "block.create.cart_assembler.tooltip.control3": "탐지 레일 위에 설치되었을 때", - "block.create.cart_assembler.tooltip.action3": "해체된 수레를 _조립_하고, 조립된 수레를 _해체_합니다.", - "block.create.cart_assembler.tooltip.control4": "활성화 레일 위에 설치되었을 때", - "block.create.cart_assembler.tooltip.action4": "신호를 받았을 때 _해체_합니다.", - - "block.create.rope_pulley.tooltip": "ROPE PULLEY", - "block.create.rope_pulley.tooltip.summary": "_수직으로_ 붙은 구조물을 움직입니다. _섀시_나 _슬라임_ _블록_을 붙여 일직선의 블록들을 움직일 수 있습니다.", - "block.create.rope_pulley.tooltip.condition1": "회전될 때", - "block.create.rope_pulley.tooltip.behaviour1": "연결된 구조물을 움직이기 시작합니다. 속도와 방향은 들어오는 회전 속도, 방향에 따라 다릅니다.", - - "block.create.linear_chassis.tooltip": "TRANSLATION CHASSIS", - "block.create.linear_chassis.tooltip.summary": "연결된 구조물의 이동을 _도와주는_ 베이스 블록입니다.", - "block.create.linear_chassis.tooltip.condition1": "움직일 때", - "block.create.linear_chassis.tooltip.behaviour1": "섀시의 _기둥_ _방향_으로 붙어있는 모든 블록들을 같은 방향으로 옮깁니다. 블록들은 섀시가 끈끈할 때만 당겨집니다 ([Ctrl]를 누르세요).", - "block.create.linear_chassis.tooltip.condition2": "렌치로 조정할 때", - "block.create.linear_chassis.tooltip.behaviour2": "대상 섀시의 _사거리_를 조정합니다. 또는 CTRL을 눌러 인접한 모든 섀시의 사거리를 조정합니다.", - "block.create.linear_chassis.tooltip.control1": "슬라임 볼로 우클릭", - "block.create.linear_chassis.tooltip.action1": "대상 면을 끈끈하게 만듭니다. 당겨질 때, 섀시는 연결된 _모든_ _블록_을 움직이는 방향에 상관없이 당깁니다.", - - "block.create.secondary_linear_chassis.tooltip": "SECONDARY LINEAR CHASSIS", - "block.create.secondary_linear_chassis.tooltip.summary": "다른 타입의 직선 섀시와 _이어지지_ _않는_ 두번째 종류의 직선 섀시입니다.", - - "block.create.radial_chassis.tooltip": "ROTATION CHASSIS", - "block.create.radial_chassis.tooltip.summary": "연결된 구조물의 이동을 _도와주는_ 베이스 블록입니다.", - "block.create.radial_chassis.tooltip.condition1": "움직일 때", - "block.create.radial_chassis.tooltip.behaviour1": "섀시의 _원_ _방향_으로 붙어있는 모든 블록들을 같은 방향으로 옮깁니다. 블록들이 섀시가 끈끈한 면에 붙어있을 때만 움직입니다 ([Ctrl]를 누르세요).", - "block.create.radial_chassis.tooltip.condition2": "렌치로 조정할 때", - "block.create.radial_chassis.tooltip.behaviour2": "대상 섀시의 _사거리_를 조정합니다. 또는 CTRL을 눌러 인접한 모든 섀시의 사거리를 조정합니다.", - "block.create.radial_chassis.tooltip.control1": "슬라임 볼로 우클릭", - "block.create.radial_chassis.tooltip.action1": "대상 면을 끈끈하게 만듭니다. 당겨질 때, 끈끈한 면에 붙은 _모든_ _블록_을 움직이게 합니다", - - "block.create.mechanical_drill.tooltip": "MECHANICAL mechanical_drill", - "block.create.mechanical_drill.tooltip.summary": "블록을 _파괴하는_ 데 적합한 장치입니다. 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.mechanical_drill.tooltip.condition1": "회전될 때", - "block.create.mechanical_drill.tooltip.behaviour1": "고정되어 블록을 부숩니다. 또한 해당영역의 엔티티에게 피해를 줍니다.", - "block.create.mechanical_drill.tooltip.condition2": "움직일 때", - "block.create.mechanical_drill.tooltip.behaviour2": "드릴이 부딫히는 모든 블록을 부숩니다.", - - "block.create.mechanical_harvester.tooltip": "MECHANICAL mechanical_harvester", - "block.create.mechanical_harvester.tooltip.summary": "중간 크기의 작물 자동화에 적합한 _작물_ _수확기_입니다. 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.mechanical_harvester.tooltip.condition1": "움직일 때", - "block.create.mechanical_harvester.tooltip.behaviour1": "칼날에 닿는 모두 자란 작물을 수확하고 최초 성장 상태로 변경합니다.", - - "block.create.mechanical_plough.tooltip": "MECHANICAL PLOUGH", - "block.create.mechanical_plough.tooltip.summary": "다양한 용도로 쓸 수 있는 _쟁기_입니다. 기계식 피스톤, 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.mechanical_plough.tooltip.condition1": "움직일 때", - "block.create.mechanical_plough.tooltip.behaviour1": "횃불, 눈, 레일 등 _통과되는_ 블록들을 부숩니다. 엔티티를 _해치지_ _않습니다_. _괭이_를 사용한 것처럼 땅도 갑니다.", - - "block.create.mechanical_saw.tooltip": "MECHANICAL mechanical_saw", - "block.create.mechanical_saw.tooltip.summary": "효율적인 _벌목_과 블록을 _제재_하는데 적합합니다. 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.mechanical_saw.tooltip.condition1": "위를 바라볼 때", - "block.create.mechanical_saw.tooltip.behaviour1": "_제재_와 _석재_ _절단_ 조합법을 떨어진/투입된 아이템에 적용합니다. 결과물이 여러 종류고 필터가 적용이 되지 않았다면, 결과물은 _목록_ _순서_대로 배출됩니다.", - "block.create.mechanical_saw.tooltip.condition2": "옆을 바라볼 때", - "block.create.mechanical_saw.tooltip.behaviour2": "앞에 있는 원목을 자릅니다. 나무의 원목이라면, 나무가 쓰러지면서 아이템을 떨굽니다.", - "block.create.mechanical_saw.tooltip.condition3": "움직일 때", - "block.create.mechanical_saw.tooltip.behaviour3": "톱이 만나는 모든 나무를 벱니다.", - - "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "붙어있는 _저장소_에 들어있는 아이템을 기반으로 레드스톤 신호를 보냅니다. 필터도 제공됩니다. _비교기_와 반대로, 수량 스위치는 신호가 반전되는 _임계점_을 조절할 수 있습니다.", - "block.create.stockpile_switch.tooltip.condition1": "우클릭 할 때", - "block.create.stockpile_switch.tooltip.behaviour1": "UI를 엽니다.", - - "block.create.content_observer.tooltip": "CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "저장소나 벨트의 아이템을 등록된 _필터_를 이용해 _탐지_합니다. _인벤토리, 벨트, 슈트_ 안에 해당 아이템을 탐지하는 동안, 레드스톤 신호를 보냅니다. _깔대기_가 해당 아이템을 수송하면, _1틱_의 레드스톤 신호를 보냅니다.", - - "block.create.redstone_link.tooltip": "REDSTONE LINK", - "block.create.redstone_link.tooltip.summary": "_무선_ 레드스톤 단말기입니다. 아무 아이템으로 두 개의 _주파수_를 설정할 수 있습니다. 통신거리는 제한되어 있지만, 그래도 충분히 넓습니다.", - "block.create.redstone_link.tooltip.condition1": "신호를 줄 때", - "block.create.redstone_link.tooltip.behaviour1": "같은 주파주의 다른 단말기에서 레드스톤 신호를 받습니다.", - "block.create.redstone_link.tooltip.control1": "아이템을 들고 우클릭", - "block.create.redstone_link.tooltip.action1": "그 아이템으로 주파수를 설정합니다. 주파수는 최대 두가지 아이템 조합으로 이룰 수 있습니다.", - "block.create.redstone_link.tooltip.control2": "웅크린 상태에서 우클릭", - "block.create.redstone_link.tooltip.action2": "수신/발신 모드로 바꿉니다.", - - "block.create.nixie_tube.tooltip": "NIXIE TUBE", - "block.create.nixie_tube.tooltip.summary": "숫자와 문자를 나타내는 멋진 표시등입니다.", - "block.create.nixie_tube.tooltip.condition1": "레드스톤 신호를 받을 때", - "block.create.nixie_tube.tooltip.behaviour1": "_현재_ 레드스톤 _신호_ _세기_를 표시합니다.", - "block.create.nixie_tube.tooltip.condition2": "이름표를 사용할 때", - "block.create.nixie_tube.tooltip.behaviour2": "한 줄로 놓인 표시등에 _문자_를 표시합니다.", - - "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", - "block.create.redstone_contact.tooltip.summary": "_한_ _쌍_이 _서로_ _바라보고_ 있을 때 레드스톤 신호를 보냅니다. 베어링이나 기계식 피스톤으로 움직여집니다.", - "block.create.redstone_contact.tooltip.condition1": "다른 동형 감지기를 맞댈 때", - "block.create.redstone_contact.tooltip.behaviour1": "레드스톤 신호를 보냅니다.", - "block.create.redstone_contact.tooltip.condition2": "움직일 때", - "block.create.redstone_contact.tooltip.behaviour2": "지나가는 모든 고정된 동형 감지기를 작동시킵니다.", - - "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "이 저장소는 용량을 _직접_ _정할_ 수 있습니다. 아무아이템이나 최대 16스택씩 담을 수 있습니다. 레드스톤 비교기와 호환됩니다.", - "block.create.adjustable_crate.tooltip.control1": "우클릭 했을 때", - "block.create.adjustable_crate.tooltip.action1": "창을 엽니다.", - - "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "이 상자는 아무 아이템을 _무한히_ 저장합니다. 청사진 대포 옆에 놓을 시 준비물을 _전부_ 공급합니다.", - "block.create.creative_crate.tooltip.condition1": "필터에 아이템을 설정할 시", - "block.create.creative_crate.tooltip.behaviour1": "선택된 아이템을 _무한정_으로 _빼낼_ 수 있습니다. 대신 _들어간_ 아이템은 _삭제_됩니다.", - - "block.create.deployer.tooltip": "DEPLOYER", - "block.create.deployer.tooltip.summary": " _때리고_, _사용하고_ _작동시킵니다_. 이 장치는 _플레이어_를 가능한 한 _흉내내려할_ _것입니다_. 주변 인벤토리에서 아이템을 쓰거나 넣을 수 있습니다.", - "block.create.deployer.tooltip.condition1": "회전될 때", - "block.create.deployer.tooltip.behaviour1": "팔을 늘려 한 칸앞에 있는 공간에서 행동합니다.", - "block.create.deployer.tooltip.condition2": "렌치로 우클릭할 때", - "block.create.deployer.tooltip.behaviour2": "_공격_ _모드_로 바꿉니다. 이 상태에서는 배포기가 아이템을 가지고 _부수거나_ _때리려고_ 할 것입니다.", - "block.create.deployer.tooltip.condition3": "필터를 설정했을 때", - "block.create.deployer.tooltip.behaviour3": "_필터_에 맞지 않는 아이템은 사용하지 않습니다. 필터에 맞지 않는 아이템은 빼내거나 넣을 수 없습니다.", - - "block.create.brass_casing.tooltip": "BRASS CASING", - "block.create.brass_casing.tooltip.summary": "다양한 용도로 쓰일 수 있는 단단한 기계 케이스입니다. 장식용으로 써도 무방합니다. _축_이나 _벨트_에 _씌울 수 있습니다_.", - - "block.create.pulse_repeater.tooltip": "PULSE REPEATER", - "block.create.pulse_repeater.tooltip.summary": "_1틱_의 레드스톤 신호를 보내는 간단한 리피터입니다.", - - "block.create.adjustable_repeater.tooltip": "FLEX REPEATER", - "block.create.adjustable_repeater.tooltip.summary": "최대 30분까지 _딜레이_를 설정할 수 있는 업그레이드된 _레드스톤_ _리피터_입니다.", - - "block.create.adjustable_pulse_repeater.tooltip": "FLEX PULSE REPEATER", - "block.create.adjustable_pulse_repeater.tooltip.summary": "최대 30분까지 _딜레이_를 설정할 수 있는 _펄스_ _리피터_입니다.", - - "block.create.analog_lever.tooltip": "ANALOG LEVER", - "block.create.analog_lever.tooltip.summary": "레드스톤 _신호_ _세기_를 자세히 _조정_할 수 있는 레버입니다.", - - "block.create.powered_toggle_latch.tooltip": "POWERED TOGGLE LATCH", - "block.create.powered_toggle_latch.tooltip.summary": "레드스톤 신호로 끄고 켤 수 있는 _레버_입니다.", - - "block.create.powered_latch.tooltip": "POWERED LATCH", - "block.create.powered_latch.tooltip.summary": "레드스톤 신호로 컨트롤 할 수 있는 _레버_입니다. 후면에서 들어오는 신호는 레버를 키고, 측면에서 들어오는 신호는 레버를 초기화합니다.", - - "block.create.controller_rail.tooltip": "CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "_광산 수레_의 _이동속도_를 _세밀하게_ _조정_할 수 있는 _양방향_ _전동 레일_입니다.", - "block.create.controller_rail.tooltip.condition1": "레드스톤 신호를 받을 때", - "block.create.controller_rail.tooltip.behaviour1": "_신호 세기에 따라_ 지나가는 수레를 _가속, 감속_합니다. 레드스톤 신호는 다른 방향 레일에도 전달됩니다. 두 방향레일에 다른 세기를 전달하면 중간 레일들은 두 세기 사이의 신호를 받습니다.", - - "block.create.speedometer.tooltip": "SPEEDOMETER", - "block.create.speedometer.tooltip.summary": "연결된 장치의 _회전_ _속도_를 _계측_하고 _나타냅니다_. 레드스톤 비교기와 호환됩니다.", - "block.create.speedometer.tooltip.condition1": "회전될 때", - "block.create.speedometer.tooltip.behaviour1": "속도에 따라 색깔을 나타냅니다. _초록색_은 _느림_을, _파랑색_은 _보통_, _보라색_은 _빠른_ _속도_를 나타냅니다. 몇몇 장치들은 작동하기 위해 일정수준 이상의 속도가 필요합니다.", - - "block.create.stressometer.tooltip": "STRESSOMETER", - "block.create.stressometer.tooltip.summary": "연결된 네트워크의 _전체_ _피로도_ _수치_를 _계측_하고 _나타냅니다_. 레드스톤 비교기와 호환됩니다.", - "block.create.stressometer.tooltip.condition1": "회전될 때", - "block.create.stressometer.tooltip.behaviour1": "피로도에 따라 색깔을 나타냅니다. _과부화된_ _네트워크_는 움직이는 것을 멈춥니다. 과부하는 네트워크에 _추가_ _피로도_ _용량_을 가진 장치를 설치하면 해결됩니다. ", - - "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "재료들을 _윤내는 데_ 쓰이는 거친 종이입니다. 배포기가 자동으로 쓸 수 있습니다.", - "item.create.sand_paper.tooltip.condition1": "사용할 때", - "item.create.sand_paper.tooltip.behaviour1": "_다른 손_에있는 아이템과 _바닥에 있는 아이템_을 윤냅니다.", - - "item.create.super_glue.tooltip": "SUPER GLUE", - "item.create.super_glue.tooltip.summary": "블록 사이에 풀칠하면, 절대 떨어지지 않습니다.", - "item.create.super_glue.tooltip.condition1": "사용했을 때", - "item.create.super_glue.tooltip.behaviour1": "선택한 블록의 면을 _끈끈하게_ 만듭니다. 끈끈한 면에 붙은 다른 블록은 기계식 피스톤, 베어링 등에 _같이_ _움직이게_ 됩니다.", - "item.create.super_glue.tooltip.condition2": "다른 손에 들고 있을 때", - "item.create.super_glue.tooltip.behaviour2": "블록을 설치할 때 그것이 _설치된_ _곳_에 _자동으로_ 풀칠합니다.", - - "item.create.builders_tea.tooltip": "BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "하루를 시작하기에 좋은 음료입니다. _ 새로운 영감_을 줍니다.", - - "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "_흡수된_ _빛_으로 제련된 색채 혼합물입니다.", - - "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "_공허_에서 제련된 색채 혼합물입니다.", - - "item.create.minecart_coupling.tooltip": "MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "당신의 모든 _수레들을 이어 _멋진 _기차_를 만들어보세요.", - "item.create.minecart_coupling.tooltip.condition1": "광산 수레에 사용할 때", - "item.create.minecart_coupling.tooltip.behaviour1": "_두 수레를 묶어_ 이동할 때 고정된 _거리를 유지하게_ 합니다.", - - "item.create.crafter_slot_cover.tooltip": "SLOT COVER", - "item.create.crafter_slot_cover.tooltip.summary": "기계 조합기에서 _빈_ _슬롯_을 표시하기 위해 쓰입니다. 조합기들은 정사각형 모양을 형성할 필요는 없습니다. 재료가 서로 대각선인 조합법이있을 때 유용합니다.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - "create.tooltip.randomWipDescription0": "Please keep this item away from children.", - "create.tooltip.randomWipDescription1": "A baby panda dies every time you use this item. Every. Time.", - "create.tooltip.randomWipDescription2": "Use at your own risk.", - "create.tooltip.randomWipDescription3": "This is not the item you are looking for, *finger-wiggles* please disperse.", - "create.tooltip.randomWipDescription4": "This item will self-destruct in 10 seconds. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Believe me, it's useless.", - "create.tooltip.randomWipDescription6": "By using this item, you hereby consent to our disclaimer and agree to its terms.", - "create.tooltip.randomWipDescription7": "This one maybe isn't for you. What about that one?", - "create.tooltip.randomWipDescription8": "Use it and regret your decision immediately.", - - "_": "Thank you for translating Create!" -} diff --git a/src/main/resources/assets/create/lang/nl_nl.json b/src/main/resources/assets/create/lang/nl_nl.json deleted file mode 100644 index 8d9108149..000000000 --- a/src/main/resources/assets/create/lang/nl_nl.json +++ /dev/null @@ -1,725 +0,0 @@ -{ - - "_comment": "-------------------------] GAME ELEMENTS [------------------------------------------------", - - "item.create.wand_of_symmetry": "Symmetrie Staf", - "item.create.handheld_blockzapper": "Blokzapper", - "item.create.tree_fertilizer": "Boom mest", - "item.create.empty_schematic": "Lege bouwtekening", - "item.create.andesite_alloy_cube": "Andesiet Legering", - "item.create.blaze_brass_cube": "Blaze Brons", - "item.create.chorus_chrome_cube": "Chorus Chroom", - "item.create.chromatic_compound_cube": "Chromatische Verbinding", - "item.create.shadow_steel_cube": "Schaduw Staal", - "item.create.schematic_and_quill": "Bouwtekening en Veer", - "item.create.schematic": "Bouwtekening", - "item.create.belt_connector": "Mechanische Transportband", - "item.create.goggles": "Ingenieur's Bril", - "item.create.filter": "Filter", - "item.create.rose_quartz": "Roze Kwarts", - "item.create.refined_rose_quartz": "Geraffineerd Roze Kwarts", - "item.create.refined_radiance_cube": "Geraffineerd Glans", - "item.create.iron_sheet": "IJzeren Platen", - "item.create.gold_sheet": "Gouden Platen", - "item.create.propeller": "Propeller", - "item.create.flour": "Bloem", - "item.create.dough": "Deeg", - "item.create.wrench": "Moersleutel", - "item.create.deforester": "Ontbosser", - "item.create.crushed_iron": "Gemalen IJzererts", - "item.create.crushed_gold": "Gemalen Gouderts", - - "item.create.brass_cube": "Bronsstaaf", - "item.create.brass_sheet": "Brons Platen", - "item.create.brass_nugget": "Brons klompje", - "item.create.crushed_brass": "Gemalen Brons", - "item.create.zinc_cube": "Zinkstaaf", - "item.create.zinc_nugget": "Zink Nugget", - "item.create.crushed_zinc": "Gemalen Zink", - "item.create.copper_ingot": "Koperstaaf", - "item.create.copper_nugget": "Koper klompje", - "item.create.crushed_copper": "Gemalen Koper", - - "item.create.logistical_controller_supply": "Voorwerpen Levering", - "item.create.logistical_controller_request": "Voorwerpen Verzoek", - "item.create.logistical_controller_storage": "Voorwerpen Opslag", - "item.create.logistical_controller_calculation": "Ingredienten Berekenaar", - "item.create.logistical_controller_transactions": "Taakbeheer", - "item.create.logistical_dial": "Logistieke Wijzerplaat", - - "item.create.blazing_pickaxe": "Blazeënde Houweel", - "item.create.blazing_shovel": "Blazeënde Schep", - "item.create.blazing_axe": "Blazeënde Bijl", - "item.create.blazing_sword": "Blazeënde Langzwaard", - - "item.create.shadow_steel_pickaxe": "Schaduw Staalen Houweel", - "item.create.shadow_steel_mattock": "Schaduw Staalen Tuin Houweel", - "item.create.shadow_steel_sword": "Schaduw Staalen Zwaard", - - "item.create.rose_quartz_pickaxe": "Verguld Kwartz Pickaxe", - "item.create.rose_quartz_shovel": "Verguld Kwarts Shovel", - "item.create.rose_quartz_axe": "Verguld Kwarts Axe", - "item.create.rose_quartz_sword": "Verguld Kwarts Blade", - - "block.create.cogwheel": "Tandwiel", - "block.create.large_cogwheel": "Groot Tandwiel", - "block.create.turntable": "Draaischijf", - "block.create.gearbox": "Versnellingsbak", - "block.create.gearshift": "Versnellingspook", - "block.create.clutch": "Koppeling", - "block.create.shaft": "Drijfas", - "block.create.encased_belt": "Omhulsde Transportband", - "block.create.encased_shaft": "Omhulsde Drijfas", - "block.create.encased_fan": "Omhulsde Ventilator", - "block.create.motor": "Motor", - "block.create.belt": "Mechanische Transportband", - "block.create.crushing_wheel": "Verpulveraar", - "block.create.mechanical_drill": "Mechanische Boor", - "block.create.mechanical_harvester": "Mechanische Oogster", - "block.create.mechanical_saw": "Mechanische Zaag", - "block.create.water_wheel": "Waterrad", - "block.create.mechanical_press": "Mechanische Pers", - "block.create.mechanical_mixer": "Mechanische Menger", - "block.create.basin": "Bekken", - "block.create.mechanical_crafter": "Mechanische Werkbank", - "block.create.speedometer": "Snelheidsmeter", - "block.create.stressometer": "Stressmeter", - "block.create.cart_assembler": "Kar Assembler", - - "block.create.sticky_mechanical_piston": "Mechanische Zuiger", - "block.create.mechanical_piston": "Mechanische Kleefzuiger", - "block.create.mechanical_piston_head": "Mechanische Zuigerhoofd", - "block.create.piston_extension_pole": "Zuiger Verlengpaal", - "block.create.mechanical_bearing": "Mechanische Lager", - "block.create.linear_chassis": "Lineaar Frame", - "block.create.radial_chassis": "Rotation Frame", - - "block.create.redstone_contact": "Redstone redstone_contact", - "block.create.redstone_link": "Redstone Brug", - "block.create.stockpile_switch": "Voorraad Schakelaar", - "block.create.adjustable_crate": "FlexKrat", - "block.create.extractor": "Extractor", - "block.create.funnel": "Transportband Trechter", - "block.create.linked_extractor": "Gelinkte Extractor", - "block.create.pulse_repeater": "Pulse Versterker", - "block.create.adjustable_repeater": "FlexSterker", - "block.create.belt_observer": "Transportband Observeerder", - "block.create.logistical_casing": "Logistiek Omhulsel", - "block.create.logistical_controller": "Logistieke Controller", - "block.create.logistical_index": "Logistieke Inhoudsopgave", - "block.create.logisticians_table": "Logistieke Tabel", - "block.create.package_funnel": "Pakket Trechter", - "block.create.belt_tunnel": "Transportband Tunnel", - - "block.create.tiled_glass": "Getegeld Glas", - "block.create.tiled_glass_pane": "Getegeld Glazen Paneel", - "block.create.framed_glass": "Ingelijst Glas", - - "block.create.window_in_a_block": "Blok met Glazen Paneel", - "block.create.andesite_bricks": "Andesietstenen", - "block.create.diorite_bricks": "Diorietstenen", - "block.create.granite_bricks": "Granietstenen", - - "block.create.volcanic_rock": "Bazalt", - - "block.create.gabbro": "Gabbro", - "block.create.gabbro_stairs": "Gabbro Trap", - "block.create.gabbro_slab": "Gabbro Plaat", - "block.create.gabbro_wall": "Gabbro Muur", - "block.create.polished_gabbro": "Gepolijste Gabbro", - "block.create.gabbro_bricks": "Gabbrostenen", - "block.create.gabbro_bricks_stairs": "Gabbrostenen Trap", - "block.create.gabbro_bricks_wall": "Gabbrostenen Muur", - "block.create.paved_gabbro_bricks": "Geplaveid Gabbrostenen", - "block.create.paved_gabbro_bricks_slab": "Geplaveid Gabbrostenen Plaat", - "block.create.indented_gabbro": "Uitgetand Gabbro Tegel", - "block.create.indented_gabbro_slab": "Uitgetand Gabbro Plaat", - "block.create.slightly_mossy_gabbro_bricks": "Mossig Gabbrostenen", - "block.create.mossy_gabbro_bricks": "Overwoekerd Gabbrostenen", - - "block.create.weathered_limestone": "Verweerde Kalksteen", - "block.create.weathered_limestone_stairs": "Verweerde Kalksteen trap", - "block.create.weathered_limestone_wall": "Verweerde Kalksteen Muur", - "block.create.weathered_limestone_slab": "Verweerde Kalksteen Plaat", - "block.create.polished_weathered_limestone": "Gepolijste Verweerde Kalksteen", - "block.create.polished_weathered_limestone_slab": "Gepolijste Verweerde Kalksteen Plaat", - "block.create.weathered_limestone_bricks": "Verweerde Kalksteenstenen", - "block.create.weathered_limestone_bricks_stairs": "Verweerde Kalksteenstenen Trap", - "block.create.weathered_limestone_bricks_wall": "Verweerde Kalksteenstenen Muur", - "block.create.weathered_limestone_bricks_slab": "Verweerde Kalksteenstenen Plaat", - "block.create.weathered_limestone_pillar": "Verweerde Kalksteen Pilaar", - - "block.create.dolomite_pillar": "Dolomiet Pilaar", - "block.create.dolomite": "Dolomiet", - "block.create.dolomite_stairs": "Dolomiet Trap", - "block.create.dolomite_wall": "Dolomiet Muur", - "block.create.dolomite_slab": "Dolomiet Plaat", - "block.create.dolomite_bricks": "Dolomietstenen", - "block.create.dolomite_bricks_wall": "Dolomietstenen Muur", - "block.create.dolomite_bricks_stairs": "Dolomietstenen Trap", - "block.create.dolomite_bricks_slab": "Dolomietstenen Plaat", - "block.create.polished_dolomite": "Gepolijste Dolomiet", - - "block.create.limesand": "Kalkzand", - "block.create.limestone": "Kalksteen", - "block.create.limestone_stairs": "Kalksteen Trap", - "block.create.limestone_slab": "Kalksteen Plaat", - "block.create.limestone_wall": "Kalksteen Muur", - "block.create.limestone_bricks": "Kalksteenstenen", - "block.create.limestone_bricks_stairs": "Kalksteenstenen Trap", - "block.create.limestone_bricks_slab": "Kalksteenstenen Plaat", - "block.create.limestone_bricks_wall": "Kalksteenstenen Muur", - "block.create.polished_limestone": "Gepolijste Kalksteen", - "block.create.polished_limestone_slab": "Gepolijste Kalksteen Plaat", - "block.create.limestone_pillar": "Kalksteen Pillar", - - "block.create.schematicannon": "Bouwtekeningkannon", - "block.create.schematic_table": "Bouwtekening Tafel", - "block.create.creative_crate": "Bouwtekeningkannon Creatiefeerder", - - "block.create.cocoa_log": "Cocao Oerwoudstam", - - "block.create.shop_shelf": "Plank", - - "_comment": "-------------------------] UI & MESSAGES [------------------------------------------------", - - "death.attack.create.crush": "%1$s is verwerkd door verpulverende wielen", - "death.attack.create.fan_fire": "%1$s is verbrand door hete lucht", - "death.attack.create.fan_lava": "%1$s is verbrand door een lava ventilator", - "death.attack.create.mechanical_drill": "%1$s is gespietst door een mechanische boor", - - "create.recipe.crushing": "Verpulveren", - "create.recipe.splashing": "Bulk Wassen", - "create.recipe.splashing.fan": "Ventilator achter vloeiend water", - "create.recipe.smoking_via_fan": "Bulk Rook", - "create.recipe.smoking_via_fan.fan": "Ventilator achter vuur", - "create.recipe.blasting_via_fan": "Bulk Smelten", - "create.recipe.blasting_via_fan.fan": "Ventilator achter Lava", - "create.recipe.pressing": "Persen", - "create.recipe.mixing": "Mengen", - "create.recipe.packing": "Compressen", - "create.recipe.mechanical_sawing": "Zagen", - "create.recipe.block_cutting": "Blok Zagen", - "create.recipe.blockzapper_upgrade": "Blokzapper", - "create.recipe.processing.chance": "%1$s%% Kans", - - "create.generic.range": "Omvang", - "create.generic.radius": "Radius", - "create.generic.speed": "Snelheid", - "create.generic.delay": "Vertraging", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Seconden", - "create.generic.unit.minutes": "Minuten", - - "create.action.scroll": "Scroll", - "create.action.confirm": "Bevestigen", - "create.action.abort": "Afbreken", - "create.action.saveToFile": "Opslaan", - "create.action.discard": "Weggooien", - - "create.keyinfo.toolmenu": "Focus Gereedschap Menu", - - "create.gui.scrollInput.defaultTitle": "Kies een optie:", - "create.gui.scrollInput.scrollToModify": "Scroll om aan te passen", - "create.gui.scrollInput.scrollToSelect": "Scroll om te selecteren", - "create.gui.scrollInput.shiftScrollsFaster": "Shift om sneller te Scrollen", - - "create.gui.toolmenu.focusKey": "Hou [%1$s] ingedrukt om te Focusen", - "create.gui.toolmenu.cycle": "[SCROLL] om te Cycleën", - - "create.gui.symmetryWand.mirrorType": "Spiegelen", - "create.gui.symmetryWand.orientation": "Orientatie", - "create.symmetry.mirror.plane": "Spiegel één keer", - "create.symmetry.mirror.doublePlane": "Rechthoekig", - "create.symmetry.mirror.triplePlane": "Achthoekig", - "create.orientation.orthogonal": "Orthogonaal", - "create.orientation.diagonal": "Diagonaal", - "create.orientation.horizontal": "Horizontaal", - "create.orientation.alongZ": "Langs Z-as", - "create.orientation.alongX": "Langs X-as", - - "create.gui.blockzapper.title": "Blokzapper", - "create.gui.blockzapper.replaceMode": "Vervang Modus", - "create.gui.blockzapper.searchDiagonal": "Volg Diagonalen", - "create.gui.blockzapper.searchFuzzy": "Negeer materiaal granzen", - "create.gui.blockzapper.range": "Verspreid bereik", - "create.gui.blockzapper.needsUpgradedAmplifier": "Benodigd een opgewaardeerde versterker", - "create.gui.blockzapper.patternSection": "Patronen", - "create.gui.blockzapper.pattern.solid": "Vast", - "create.gui.blockzapper.pattern.checkered": "Schaakbord", - "create.gui.blockzapper.pattern.inversecheckered": "Omgekeerd Schaakbord", - "create.gui.blockzapper.pattern.chance25": "25% Gedraaid", - "create.gui.blockzapper.pattern.chance50": "50% Gedraaid", - "create.gui.blockzapper.pattern.chance75": "75% Gedraaid", - - "create.blockzapper.usingBlock": "Gebruikt: %1$s", - "create.blockzapper.componentUpgrades": "Component Upgrades:", - "create.blockzapper.component.body": "Lichaam", - "create.blockzapper.component.amplifier": "Versterker", - "create.blockzapper.component.accelerator": "Accelerator", - "create.blockzapper.component.retriever": "Ontvanger", - "create.blockzapper.component.scope": "Omvang", - "create.blockzapper.componentTier.none": "Geen", - "create.blockzapper.componentTier.blazebrass": "Blaze Brons", - "create.blockzapper.componentTier.choruschrome": "Chorus Chroom", - "create.blockzapper.leftClickToSet": "Klik met links op een Blok om een Materiaal te kiezen", - "create.blockzapper.empty": "De Blokken zijn op!", - - "create.logistics.filter": "Filter", - "create.logistics.firstFrequency": "Freq. #1", - "create.logistics.secondFrequency": "Freq. #2", - - "create.gui.adjustable_crate.title": "FlexKrat", - "create.gui.adjustable_crate.storageSpace": "Opslagruimte", - - "create.gui.stockpile_switch.title": "Voorraad Schakelaar", - "create.gui.stockpile_switch.lowerLimit": "Lagere drempel", - "create.gui.stockpile_switch.upperLimit": "Hogere drempel", - "create.gui.stockpile_switch.startAt": "Start Signaal op", - "create.gui.stockpile_switch.startAbove": "Start Signaal boven", - "create.gui.stockpile_switch.stopAt": "Stop Signaal op", - "create.gui.stockpile_switch.stopBelow": "Stop Signaal onder", - - "create.schematicAndQuill.dimensions": "Bouwtekening Groote: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Eerste positie ingesteld.", - "create.schematicAndQuill.secondPos": "Tweede positie ingesteld.", - "create.schematicAndQuill.noTarget": "Houd [Ctrl] ingedrukt om een Lucht block te kiezen.", - "create.schematicAndQuill.abort": "Keuze verwijderd.", - "create.schematicAndQuill.prompt": "Vul een naam in voor de bouwtekening:", - "create.schematicAndQuill.fallbackName": "Mijn Bouwtekening", - "create.schematicAndQuill.saved": "Opgeslagen als %1$s", - - "create.schematic.invalid": "[!] Invalide object - Gebruik inplaats hiervan de Bouwtekening Tafel", - "create.schematic.position": "Positie", - "create.schematic.rotation": "Rotatie", - "create.schematic.rotation.none": "Geen", - "create.schematic.rotation.cw90": "Met de klok mee 90", - "create.schematic.rotation.cw180": "Met de klok mee 180", - "create.schematic.rotation.cw270": "Met de klok mee 270", - "create.schematic.mirror": "Spiegel", - "create.schematic.mirror.none": "Geen", - "create.schematic.mirror.frontBack": "Voor naar achter", - "create.schematic.mirror.leftRight": "Links naar rechts", - - "create.schematic.tool.deploy": "Inzetten", - "create.schematic.tool.move": "Verplaats XZ", - "create.schematic.tool.movey": "Verplaats Y", - "create.schematic.tool.rotate": "Draai", - "create.schematic.tool.print": "Print", - "create.schematic.tool.flip": "Omdraaien", - - "create.schematic.tool.deploy.description.0": "Verplaatst de structuur naar een locatie.", - "create.schematic.tool.deploy.description.1": "Klik met rechts op de grond om te plaatsen.", - "create.schematic.tool.deploy.description.2": "Houd [Ctrl] ingedrukt om op een afstand te selecteren.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Scroll om de afstand te veranderen.", - "create.schematic.tool.move.description.0": "Verschuift de Bouwtekening Horizontaal", - "create.schematic.tool.move.description.1": "Wijs naar de Bouwtekening and [CTRL]-Scroll om hem te duwen.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Verschuift de Bouwtekening Verticaal", - "create.schematic.tool.movey.description.1": "[CTRL]-Scroll om het omhoog/omlaag te bewegen", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Draait de Bouwtekening om zijn midden..", - "create.schematic.tool.rotate.description.1": "[CTRL]-Scroll om te draaien met 90 graden", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Plaats onmiddelijk de structuur in de wereld.", - "create.schematic.tool.print.description.1": "Klik met rechts om het plaatsen in de wereld te bevestigen.", - "create.schematic.tool.print.description.2": "Deze tool is alleen voor de creatieve modus.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Hiermee draait u de Bouwtekening langs het gezicht dat u selecteert.", - "create.schematic.tool.flip.description.1": "Wijs naar de Bouwtekening en [CTRL]-Scroll om hem om te draaien.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchroniseren...", - "create.schematics.uploadTooLarge": "Jouw Bouwtekening is te groot!", - "create.schematics.maxAllowedSize": "De maximum toegestane grote van een Bouwtekings bestand is:", - - "create.gui.schematicTable.title": "Bouwtekening Tafel", - "create.gui.schematicTable.availableSchematics": "Beschikbare Bouwtekeningen", - "create.gui.schematicTable.noSchematics": "Geen Bouwtekeningen opgeslagen", - "create.gui.schematicTable.uploading": "Uploaden...", - "create.gui.schematicTable.finished": "Upload Klaar!", - - "create.gui.schematicannon.title": "Bouwtekeningkannon", - "create.gui.schematicannon.settingsTitle": "Plaatsing Instellingen", - "create.gui.schematicannon.listPrinter": "Materiaal lijst Printer", - "create.gui.schematicannon.gunpowderLevel": "Buskruit op %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Schoten over: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Met backup: %1$s", - "create.gui.schematicannon.optionEnabled": "Momenteel Ingeschakeld", - "create.gui.schematicannon.optionDisabled": "Momenteel Uitgeschakeld", - "create.gui.schematicannon.option.dontReplaceSolid": "Niet vaste blokken vervangen", - "create.gui.schematicannon.option.replaceWithSolid": "Vervang vast met vast", - "create.gui.schematicannon.option.replaceWithAny": "Vervang vast met alles", - "create.gui.schematicannon.option.replaceWithEmpty": "Vervang vast met leeg", - "create.gui.schematicannon.option.skipMissing": "Sla missende blokken over", - "create.gui.schematicannon.option.skipTileEntities": "Bescherm Tile Entities", - - "create.gui.schematicannon.option.skipMissing.description": "Als het Bouwtekeningkannon niet een geschikt blok kan vinden om te plaatsen gaat hij door bij de volgende locatie.", - "create.gui.schematicannon.option.skipTileEntities.description": "Het Bouwtekeningkannon probeert blokken met data zoals kisten te vermijden", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Het Bouwtekeningkannon zal nooit vaste blokken in zijn gebied vervangen, alleen niet-vaste blokken en lucht", - "create.gui.schematicannon.option.replaceWithSolid.description": "Het Bouwtekeningkannon zal alleen vaste blokken in zijn gebied veranderen, als de bouwtekening een vast blok bevat op zijn locatie.", - "create.gui.schematicannon.option.replaceWithAny.description": "Het Bouwtekeningkannon zal vaste blokken in zijn gebied vervangen als, de bouwtekening een blok op bevat op zijn locatie.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Het Bouwtekeningkannon zal alle blokken in zijn gebied vervangen, inclusief blokken vervangen door lucht.", - - "create.schematicannon.status.idle": "IJdel", - "create.schematicannon.status.ready": "Paraat", - "create.schematicannon.status.running": "Draaiend", - "create.schematicannon.status.finished": "Klaar", - "create.schematicannon.status.paused": "Gepauzeerd", - "create.schematicannon.status.stopped": "Gestopt", - "create.schematicannon.status.noGunpowder": "Buskruit op", - "create.schematicannon.status.targetNotLoaded": "Blok is niet geladen", - "create.schematicannon.status.targetOutsideRange": "Doel is te ver weg", - "create.schematicannon.status.searching": "Aan het zoeken", - "create.schematicannon.status.skipping": "Aan het overslaan", - "create.schematicannon.status.missingBlock": "Missende Blok:", - "create.schematicannon.status.placing": "Aan het plaatsen", - "create.schematicannon.status.clearing": "Blokken aan het verwijderen", - "create.schematicannon.status.schematicInvalid": "Bouwtekening niet valide", - "create.schematicannon.status.schematicNotPlaced": "Bouwtekening niet geplaatst", - "create.schematicannon.status.schematicExpired": "Bouwtekening verlopen", - - "create.gui.index.title": "Logistieke Inhoudsopgave", - "create.gui.index.targetAddressSelect": "Ontvangst Adres", - "create.gui.index.confirmOrder": "Bevestig Bestelling", - - "create.logistics.priority": "Prioriteit", - "create.logistics.priority.lowest": "Laagst", - "create.logistics.priority.low": "Laag", - "create.logistics.priority.high": "Hoog", - "create.logistics.priority.highest": "Hoogst", - "create.gui.logistical_controller.active_mode": "Actieve Modus", - "create.gui.logistical_controller.passive_mode": "Passieve Modus", - "create.gui.requester.requestedItemCount": "Gevraagde hoeveelheid ", - "create.gui.storage.passiveModeOnly": "Objecten opslag is alleen passief", - - "create.tooltip.holdKey": "Houd [%1$s] ingedrukt", - "create.tooltip.holdKeyOrKey": "Houd [%1$s] of [%2$s] ingedrukt", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - - "create.tooltip.speedRequirement": "Snelheid eis: %1$s", - "create.tooltip.speedRequirement.none": "Geen", - "create.tooltip.speedRequirement.medium": "Gemiddeld", - "create.tooltip.speedRequirement.high": "Snel", - - "create.tooltip.stressImpact": "Stress Impact: %1$s", - "create.tooltip.stressImpact.low": "Laag", - "create.tooltip.stressImpact.medium": "Gemiddeld", - "create.tooltip.stressImpact.high": "Hoog", - - "create.tooltip.capacityProvided": "Stress Capacity: %1$s", - "create.tooltip.capacityProvided.low": "Klein", - "create.tooltip.capacityProvided.medium": "Gemiddeld", - "create.tooltip.capacityProvided.high": "Groot", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Work in progress!", - - "create.tooltip.randomWipDescription0": "Houdt dit object buiten bereik van kinderen.", - "create.tooltip.randomWipDescription1": "Een baby panda sterft elke keer als je dit object gebruikt.", - "create.tooltip.randomWipDescription2": "Gebruikt dit object op eigen risico.", - "create.tooltip.randomWipDescription3": "Niks te zien hier, vervolg uw weg.", - "create.tooltip.randomWipDescription4": "Dit object zal zichzelf vernietigen in 10 seconden.", - "create.tooltip.randomWipDescription5": "Geloof me, het is nuteloos.", - "create.tooltip.randomWipDescription6": "Door dit object te gebruiken stemt u in met onze disclaimer en gaat u akkoord met de algemene voorwaarden.", - "create.tooltip.randomWipDescription7": "Deze is misschien niet geschikt voor jou.", - "create.tooltip.randomWipDescription8": "Gebruikt het en je zal meteen spijt hebben.", - - "create.mechanical_mixer.min_ingredients": "Min. Ingredieënten", - - "_comment": "-------------------------] ITEM DESCRIPTIONS [------------------------------------------------", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRIE STAF", - "item.create.wand_of_symmetry.tooltip.summary": "Spiegelt uw blokplaatsing perfect over de geconfigureerde vlakken.", - "item.create.wand_of_symmetry.tooltip.condition1": "Waneer in de Actiebalk", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Blijft actief", - "item.create.wand_of_symmetry.tooltip.control1": "R-Klik op de Grond", - "item.create.wand_of_symmetry.tooltip.action1": "_Creëerd_ of _Beweegt_ de Spiegel", - "item.create.wand_of_symmetry.tooltip.control2": "R-Klik in de Lucht", - "item.create.wand_of_symmetry.tooltip.action2": "_Verwijderd_ de actieve Spiegel", - "item.create.wand_of_symmetry.tooltip.control3": "R-Klik terwijl je Sluipt", - "item.create.wand_of_symmetry.tooltip.action3": "Opent de _Configuratie_ _Interface_", - - "item.create.handheld_blockzapper.tooltip": "BLOKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Ongebruikelijke gadget voor het plaatsen en verwissel van blokken over een afstand", - "item.create.handheld_blockzapper.tooltip.control1": "L-Klik op een Blok", - "item.create.handheld_blockzapper.tooltip.action1": "Zet het doelwit blok om naar het geselecteerde blok.", - "item.create.handheld_blockzapper.tooltip.control2": "R-Klik op een Blok", - "item.create.handheld_blockzapper.tooltip.action2": "_Plaatst_ of _Vervangt_ het doelwit blok.", - "item.create.handheld_blockzapper.tooltip.control3": "R-Click while Sneaking", - "item.create.handheld_blockzapper.tooltip.action3": "Opent de _Configuratie_ _Interface_", - - "item.create.tree_fertilizer.tooltip": "BOOM MEST", - "item.create.tree_fertilizer.tooltip.summary": "Een krachtige combinatie van mineralen geschikt voor de meest voorkomende typen bomen.", - "item.create.tree_fertilizer.tooltip.condition1": "Wanneer gebruikt op Kiemplanten", - "item.create.tree_fertilizer.tooltip.behaviour1": "Groeit bomen onafhankelijk van beschikbare ruimte", - - "block.create.cocoa_log.tooltip": "COCAO OURWOUDSTAM", - "block.create.cocoa_log.tooltip.summary": "Een experimenteele oerwoudstam die het automatisch telen van _Cocaobonen_ versimpelt", - "block.create.cocoa_log.tooltip.condition1": "Wanneer rijp", - "block.create.cocoa_log.tooltip.behaviour1": "Groeit _Cocaobonen_ aan alle kanten", - - "item.create.empty_schematic.tooltip": "LEGE BOUWTEKENING", - "item.create.empty_schematic.tooltip.summary": "Bruikbaar als ingredient in recepten en voor het schrijven aan de _BOUWTEKENING_ _TAFEL._", - - "item.create.schematic.tooltip": "BOUWTEKENING", - "item.create.schematic.tooltip.summary": "Holds a structure to be positioned and placed into the world. Position the Hologram as desired and use a _Schematicannon_ to build it.", - "item.create.schematic.tooltip.summary": "Bevat een structuur die gepositioneerd en geplaatst van worden in de wereld. Positineer het Hologram als gewilt en gebruik een _BOUWTEKENINGKANNON_ om het te bouwen.", - "item.create.schematic.tooltip.condition1": "Wanneer ingedrukt", - "item.create.schematic.tooltip.behaviour1": "Kan gepositioneerd worden met de knoppen op het scherm", - "item.create.schematic.tooltip.control1": "R-Klik terwijl je sluipt", - "item.create.schematic.tooltip.action1": "Opent een_Interface_ voor het invullen van preciese _coordinaten._", - - "item.create.schematic_and_quill.tooltip": "BOUWTEKENING EN VEER", - "item.create.schematic_and_quill.tooltip.summary": "Used for saving a Structure in your world to a .nbt file.", - "item.create.schematic_and_quill.tooltip.summary": "Bruikbaar om een contructie in je wereld op te slaan naar een .nbt bestand.", - "item.create.schematic_and_quill.tooltip.condition1": "Stap 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Selecteer twee hoekpunten met R-Klik", - "item.create.schematic_and_quill.tooltip.condition2": "Stap 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Scroll_ op de zijden om de groote aan te passen. R-Klik nogmaals om op te slaan.", - "item.create.schematic_and_quill.tooltip.control1": "R-Klik", - "item.create.schematic_and_quill.tooltip.action1": "Selecteer een hoekpunt / opslaan bevestigen", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl Ingedrukt houden", - "item.create.schematic_and_quill.tooltip.action2": "Selecteer punten in _de lucht._ _Scroll_ om de afstand aan te passen.", - "item.create.schematic_and_quill.tooltip.control3": "R-Klik terwijl je sluipt", - "item.create.schematic_and_quill.tooltip.action3": "_Resets_ en verwijderd de selectie.", - - "block.create.creative_crate.tooltip": "CREATIEF KRAT", - "block.create.creative_crate.tooltip.summary": "Bied een eindloze vooraad blokken aan een aangeloten _Bouwtekeningkannon_", - - "block.create.schematicannon.tooltip": "BOUWTEKENINGKANNON", - "block.create.schematicannon.tooltip.summary": "Schiet blokken om een gepostioneerde _Bouwtekening_ in de Wereld te creëeren. Gebruikt blokken uit naastgelegen inventarissen en _Buskruit_ als brandstof.", - "block.create.schematicannon.tooltip.control1": "Wanneer R-Geklikt", - "block.create.schematicannon.tooltip.action1": "Opent de _Interface_", - - "block.create.schematic_table.tooltip": "BOUWTEKENING TAFEL", - "block.create.schematic_table.tooltip.summary": "Schrijft opgeslagen bouwtekeningen op een _Lege_ _Bouwtekening_", - "block.create.schematic_table.tooltip.condition1": "Wanneer voorzien van een lege Bouwtekening", - "block.create.schematic_table.tooltip.behaviour1": "Uploadt een gekozen bestand uit uw bouwtekeningenmap", - - "block.create.shaft.tooltip": "DRIJFAS", - "block.create.shaft.tooltip.summary": "_Geeft_ _Rotatie_ _door_ in een rechte lijn.", - - "block.create.cogwheel.tooltip": "TANDWIEL", - "block.create.cogwheel.tooltip.summary": "Geeft _Rotatie_ door in een rechte lijn, en naar naastgelegen _Tandwielen._", - - "block.create.large_cogwheel.tooltip": "GROOT TANDWIEL", - "block.create.large_cogwheel.tooltip.summary": "Een grotere versie van het _TANDWIEL,_ waardoor _veranderingen_ in _Rotatiesnelheid_ mogelijk zijn indien verbonden met zijn kleinere tegenhanger.", - - "block.create.encased_shaft.tooltip": "OMHULSDE DRIJFAS", - "block.create.encased_shaft.tooltip.summary": "_Geeft_ _Rotatie_ _door_ in een rechte lijn. Geschikt voor het doorgeven van rotatie door muren.", - - "block.create.gearbox.tooltip": "VERSNELLINGSBAK", - "block.create.gearbox.tooltip.summary": "_Geeft_ _Rotatie_ _door_ in _Vier_ _richtingen._ Keert rechte verbindingen om.", - - "block.create.gearshift.tooltip": "VERSNELLINGSPOOK", - "block.create.gearshift.tooltip.summary": "Een verstelbare _rotatie_ _schakelaar_ voor aangesloten drijfassen.", - "block.create.gearshift.tooltip.condition1": "Wanneer voorzien van kracht", - "block.create.gearshift.tooltip.behaviour1": "_Keert_ de binnenkomende rotatie.", - - "block.create.clutch.tooltip": "KOPPELING", - "block.create.clutch.tooltip.summary": "Een verstelbare _rotatie_ _schakelaar_ for connected shafts.", - "block.create.clutch.tooltip.condition1": "Wanneer voorzien van kracht", - "block.create.clutch.tooltip.behaviour1": "_Stopt_ met het doorgeven van kracht aan de andere kant.", - - "block.create.encased_belt.tooltip": "OMHULSDE TRANSPORTBAND", - "block.create.encased_belt.tooltip.summary": "_Geeft_ _Rotatie_ _door_ aan zichzelf en andere _Omhulsde_ _Transportbanden._", - "block.create.encased_belt.tooltip.condition1": "Wanneer aangesloten", - "block.create.encased_belt.tooltip.behaviour1": "Aangesloten blokken zullen precies _dezelfde_ _Rotatiesnelheid_ en _richting_ hebben. Ze hoeven niet dezelfde kant op te staan.", - - "item.create.belt_connector.tooltip": "TRANSPORTBAND CONNECTOR", - "item.create.belt_connector.tooltip.summary": "Verbind twee _Drijfassen_ met een _Mechanische_ _Transportband._ Verbonden drijfassen zullen dezelfde rotatiesneheid en richting hebben. De Transportband kan ook Entiteiten transporteren", - "item.create.belt_connector.tooltip.control1": "R-Klikken op drijfas", - "item.create.belt_connector.tooltip.action1": "Selecteer de Drijfas als een katrol van de transportband. Beide geselecteerde drijfassen moeten _verticaal_, _horizontaal_ of _diagonaal_ in _één_ _lijn_ staan in de richting van de Transportbanden.", - "item.create.belt_connector.tooltip.control2": "R-Klikken terwijl je sluipt", - "item.create.belt_connector.tooltip.action2": "_Reset_ de eerste geselecteerde positie van de Transportband", - - "item.create.goggles.tooltip": "BRIL", - "item.create.goggles.tooltip.summary": "Een bril om je visie te augmenteren met _kinetische_ _informatie._", - "item.create.goggles.tooltip.condition1": "Wanneer gedragen", - "item.create.goggles.tooltip.behaviour1": "Laat _gekleurde_ _indicaties_ zien die corresponderen met de _Snelheid_ van een geplaatst kinetisch onderdeel.", - - "block.create.motor.tooltip": "MOTOR", - "block.create.motor.tooltip.summary": "Een instelbare bron van _Rotatiekracht_", - - "block.create.water_wheel.tooltip": "WATERRAD", - "block.create.water_wheel.tooltip.summary": "Bied _Rotatiekracht_ van naastgelegen _water_ _stromen._", - - "block.create.encased_fan.tooltip": "OMHULSDE VENTILATOR", - "block.create.encased_fan.tooltip.summary": "Zet _Rotatiekracht_ om naar een _Luchtstroom_ en terug. Heeft een verscheidenheid aan toepassingen.", - "block.create.encased_fan.tooltip.condition1": "Wanneer aangestuurd door Redstone", - "block.create.encased_fan.tooltip.behaviour1": "Bied _Rotatiekracht_ aan van alle _hitte_ _bronnen_ direct onder zichzelf. De ventilator moet naar beneden wijzen.", - "block.create.encased_fan.tooltip.condition2": "Wanneer gedraaid", - "block.create.encased_fan.tooltip.behaviour2": "_Duwt_ of _Trekt_ Entiteiten, afhankelijk van de binnenkomende rotatiesnelheid.", - "block.create.encased_fan.tooltip.condition3": "Bij het doorblazen van speciale blokken", - "block.create.encased_fan.tooltip.behaviour3": "_Vloeitstoffen_ en _Vuur_ zenden deeltjes uit in de luchtstroom. Dit kan gebruikt worden om _objecten_ te _verwerken_", - - "block.create.turntable.tooltip": "DRAAISCHIJF", - "block.create.turntable.tooltip.summary": "Verandert _Rotatiekracht_ in verfijnde bewegingsziekte.", - - "block.create.crushing_wheel.tooltip": "VERPULVERAAR", - "block.create.crushing_wheel.tooltip.summary": "Grote draaibare wielen die alles _verpulveren_ wat hun tegen houdt.", - "block.create.crushing_wheel.tooltip.condition1": "Wanneer aangesloten op een andere Verpulveraar", - "block.create.crushing_wheel.tooltip.behaviour1": "Creëert een verpulverende installatie voor het verwerken van verschillende dingen. De tanden van de wielen moeten met elkaar in redstone_contact staan en beweken met _dezelfde_ _snelheid_ in _tegenovergestelde_ _richting._", - - "block.create.mechanical_press.tooltip": "MECHANISCHE PERS", - "block.create.mechanical_press.tooltip.summary": "Een krachtige zuiger voor het samenpersen van objecten onder zich. Heeft een constante _Rotatiekracht_ nodig.", - "block.create.mechanical_press.tooltip.condition1": "Wanneer aangestuurd door Redstone", - "block.create.mechanical_press.tooltip.behaviour1": "_Begint_ met het samenpersen van objecten onder zich.", - "block.create.mechanical_press.tooltip.condition2": "Wanneer boven een Transportband Connector", - "block.create.mechanical_press.tooltip.behaviour2": "Perst _Automatisch_ langskomende objecten op de transportband.", - - "block.create.mechanical_mixer.tooltip": "MECHANISCHE MIXER", - "block.create.mechanical_mixer.tooltip.summary": "Een kinetische garde voor het toepassen van vormloze recepten op objecten eronder. Vereist constante _Rotatiekracht_ en een _Bekken_ hieronder geplaatst (met een tussenruimte).", - "block.create.mechanical_mixer.tooltip.condition1": "Wanneer boven een Bekken", - "block.create.mechanical_mixer.tooltip.behaviour1": "Begint objecten in het bekken te mengen wanneer alle benodigde ingrediënten aanwezig zijn.", - "block.create.mechanical_mixer.tooltip.condition2": "Wanneer gebruikt met een Sleutel", - "block.create.mechanical_mixer.tooltip.behaviour2": "_Configureert_ de minimale hoeveelheid _totale_ _ingredienten_ voor toegepaste recepten. Gebruik deze optie om _ongewenste_ _recepten_ met vergelijkbare maar minder ingrediënten _te_ _vermijden._", - - "block.create.mechanical_piston.tooltip": "MECHANISCHE ZUIGER", - "block.create.mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Zuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", - "block.create.mechanical_piston.tooltip.condition1": "Wanneer gedraaid", - "block.create.mechanical_piston.tooltip.behaviour1": "Begint de bijgevoegde structuur te verplaatsen. Snelheid en richting correleren met de inkomende rotatiesnelheid.", - - "block.create.sticky_mechanical_piston.tooltip": "MECHANISCHE KLEEFZUIGER", - "block.create.sticky_mechanical_piston.tooltip.summary": "Een meer geavanceerde versie van de _Kleefzuiger,_ die _Rotatiekracht_ gebruikt om gekoppelde constructies nauwkeurig te verplaatsen. _Zuiger_ _Verlgenpaalen_ aan de achterzijde definiëren het _Bereik_ van dit apparaat. Zonder verlengingen zal de zuiger niet bewegen. Gebruik _Lineaar_ _Frame_ om meer dan een enkele rij blokken te verplaatsen.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "Wanneer gedraaid", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Begint de bijgevoegde structuur te verplaatsen. Snelheid en richting correleren met de inkomende rotatiesnelheid.", - - "block.create.piston_extension_pole.tooltip": "ZUIGER VERLENGPAAL", - "block.create.piston_extension_pole.tooltip.summary": "Gebruikt om het bereik van _MECHANISCHE_ _ZUIGERS_ te vergroten.", - "block.create.piston_extension_pole.tooltip.condition1": "Wanneer aangesloten op een Mechanische zuiger", - "block.create.piston_extension_pole.tooltip.behaviour1": "Verlengt het bereik van de zuigers met 1 blok", - - "block.create.mechanical_bearing.tooltip": "MECHANISCHE LAGER", - "block.create.mechanical_bearing.tooltip.summary": "Gebruikt voor het roteren van _grotere_ _structuren_ of het genereren van _Rotatiekracht_ uit wind.", - "block.create.mechanical_bearing.tooltip.condition1": "Wanneer gedraaid", - "block.create.mechanical_bearing.tooltip.behaviour1": "Begint fysiek gekoppelde _ROTATIE_ _FRAME_ te roteren inclusief hun gekoppelde blokken respectievelijk.", - "block.create.mechanical_bearing.tooltip.condition2": "When Powered by Redstone", - "block.create.mechanical_bearing.tooltip.behaviour2": "Begint met het aanbieden van _Rotatiekracht_ uit het roteren van de bijbehorende structuur. De structuur moet geschikte _Zijl_ _Blokken_ bevatten (momenteel een wollen blok).", - - "block.create.linear_chassis.tooltip": "LINEAAR FRAME", - "block.create.linear_chassis.tooltip.summary": "A configurable base for Structures moved by a _Mechanische_ _Zuiger._ These Blocks have to form the first Layer of blocks in front of the Zuiger.", - "block.create.linear_chassis.tooltip.condition1": "Wanneer bewogen door een Mechanische Zuiger", - "block.create.linear_chassis.tooltip.behaviour1": "_Beweegt_ alle _aangesloten_ _Frames_ met dezelfde oriëntatie, en daaraan bevestigde blokken. Wanneer de Zuiger wordt ingetrokken, worden blokken alleen getrokken als het framevlak _Kleverig_ (zie [Ctrl]).", - "block.create.linear_chassis.tooltip.control1": "Wanneer R-Geklikt met een slijmbal", -"block.create.linear_chassis.tooltip.action1": "Maakt het geklikte vlak _Kleverig._ Wanneer de Zuiger zich terugtrekt, zal het frame alle bevestigde blokken in zijn kolom en binnen het geconfigureerde bereik _terugtrekken._", - - "block.create.radial_chassis.tooltip": "ROTATIE FRAME", - "block.create.radial_chassis.tooltip.summary": "Vereist voor het roten van structeren met de _Mechanisch_ _Lager._ ", - "block.create.radial_chassis.tooltip.condition1": "Wanneer gedraaid door een Lager", - "block.create.radial_chassis.tooltip.behaviour1": "_Roteert_ alle blokken bevestigd aan _Klevende-zijden_ (zie [Ctrl]) binnen het geconfigureerde bereik rondom zichzelf. _Zendt_ de rotatie over naar verder bevestigd rotatie frame.", - "block.create.radial_chassis.tooltip.control1": "Wanneer R-Geklikt met een slijmbal", - "block.create.radial_chassis.tooltip.action1": "Maakt het geklikte vlak _Klevend._ Wanneer het frame roteert, worden alle blokken die aan deze zijde zijn bevestigd mee gedraaid.", - - "block.create.mechanical_drill.tooltip": "MECHANISCHE BOOR", - "block.create.mechanical_drill.tooltip.summary": "Een mechanisch apparaat geschikt voor het _breken_ _van_ _blokken_", - "block.create.mechanical_drill.tooltip.condition1": "Wanneer gedraaid", - "block.create.mechanical_drill.tooltip.behaviour1": "Acts as a _stationary_ Block Breaker. Also _hurts_ _entities_ in its effective area.", - "block.create.mechanical_drill.tooltip.behaviour1": "Gedraagd zich als een stationaair blok breker. Doet ook pijn aan alle entiteiten binnen zijn bereik.", - "block.create.mechanical_drill.tooltip.condition2": "Wanneer geduwt door een Mechanische Zuiger", - "block.create.mechanical_drill.tooltip.behaviour2": "Breekt blokken waar de boor mee in redstone_contact komt.", - - "block.create.mechanical_harvester.tooltip": "MECHANISCHE OOGSTER", - "block.create.mechanical_harvester.tooltip.summary": "Een Mechanische plantensnijder geschikt voor middelgrote gewasautomatisering", - "block.create.mechanical_harvester.tooltip.condition1": "Wanneer geduwt door een Mechanische Zuiger", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Oogst_ alle _Rijpe_ _Planten_ dat het mes raakt aan en zet ze terug naar hun oorspronkelijke staat van groei.", - - "block.create.stockpile_switch.tooltip": "VOORRAAD SCHAKELAAR", - "block.create.stockpile_switch.tooltip.summary": "Schakelt een Redstone signaal op basis van de _Opslagruimte_ in de aangesloten Container.", - "block.create.stockpile_switch.tooltip.condition1": "Wanneer onder de laagste limiet", - "block.create.stockpile_switch.tooltip.behaviour1": "Stopt met het aanbieden van _Redstone_ _Kracht_", - "block.create.stockpile_switch.tooltip.condition2": "Wanneer boven de hoogste limiet", - "block.create.stockpile_switch.tooltip.behaviour2": "Start met het aanbieden van _Redstone_ _Kracht_ tot de laagste limiet weer is bereikt", - "block.create.stockpile_switch.tooltip.control1": "Wanneer R-Geklikt", - "block.create.stockpile_switch.tooltip.action1": "Opent de _Configuratie_ _Interface_", - - "block.create.redstone_link.tooltip": "REDSTONE BRUG", - "block.create.redstone_link.tooltip.summary": "Eindpunten voor _Draadloze_ _Redstone-verbindingen._ Kan met elk object _Frequencies_ worden toegewezen. Signaalbereik is beperkt, maar redelijk ver.", - "block.create.redstone_link.tooltip.condition1": "Wanneer aangestuurd", - "block.create.redstone_link.tooltip.behaviour1": "Het ontvangen van verbindingen met dezelfde frequentie levert een Redstone-signaal.", - "block.create.redstone_link.tooltip.control1": "Wanneer R-Geklikt met een object", - "block.create.redstone_link.tooltip.action1": "Stelt de _Frequentie_ in op dat object. Een totaal van _twee_ _verschillende_ _objecten_ kan in combinatie worden gebruikt voor het definiëren van een frequentie", - "block.create.redstone_link.tooltip.control2": "Wanneer R-Geklikt terwijl je sluipt", - "block.create.redstone_link.tooltip.action2": "Schakelt tussen _ontvanger_ en _zender_modus.", - - "block.create.redstone_contact.tooltip": "REDSTONE redstone_contact", - "block.create.redstone_contact.tooltip.summary": "A simple device for advanced Redstone Apparaten.", - "block.create.redstone_contact.tooltip.condition1": "Wanneer gericht op een ander redstone_contact", - "block.create.redstone_contact.tooltip.behaviour1": "Bied een _Redstone_ _Signaal_", - "block.create.redstone_contact.tooltip.condition2": "Wanneer verplaatst door een Mechanische Zuiger", - "block.create.redstone_contact.tooltip.behaviour2": "Activeert alle stationaire voorbijkomende redstone_contacten", - - "block.create.adjustable_crate.tooltip": "FLEXKRAT", - "block.create.adjustable_crate.tooltip.summary": "Met deze _Opslag_ _Container_ kan de capaciteit handmatig worden geregeld. Het kan tot _16_ _Stapels_ van elk item bevatten", - "block.create.adjustable_crate.tooltip.control1": "Wanneer R-Geklikt", - "block.create.adjustable_crate.tooltip.action1": "Opent de _Interface_", - - "block.create.extractor.tooltip": "EXTRACTOR", - "block.create.extractor.tooltip.summary": "_Haalt_ _objecten_ uit een aangesloten _inventaris_ en laat ze op de grond vallen. Laat items niet vallen totdat de ruimte is leeggemaakt. Kan een item-stapel worden toegewezen als een _filter._", - "block.create.extractor.tooltip.condition1": "Wanneer aangestuurd door redstone", - "block.create.extractor.tooltip.behaviour1": "_Pauzeerd_ de Extractor", - "block.create.extractor.tooltip.control1": "R-Klik op Filter Plek", - "block.create.extractor.tooltip.action1": "Wijst momenteel _vastgehouden_ _stapel_ toe als de _Filter._ Extractor zal uitsluitend het object _type_ en _hoevelheid_ van de stapel op de grond gooien.", - - "block.create.linked_extractor.tooltip": "LINKED EXTRACTOR", - "block.create.linked_extractor.tooltip.summary": "_Haalt_ _objecten_ uit een aangesloten _inventaris_ en laat ze op de grond vallen. Laat items niet vallen totdat de ruimte is leeggemaakt. Kan een item-stapel worden toegewezen als een _filter._ Kan op afstand worden bediend via een _Redstone_ _Brug._", - "block.create.linked_extractor.tooltip.condition1": "Wanneer Redstone verbinding actief is", - "block.create.linked_extractor.tooltip.behaviour1": "_Pauzeerd_ de Extractor", - "block.create.linked_extractor.tooltip.control1": "R-Klik op Filter Plek", - "block.create.linked_extractor.tooltip.action1": "Wijst momenteel _vastgehouden_ _stapel_ toe als de _Filter._ Extractor zal uitsluitend het object _type_ en _hoevelheid_ van de stapel op de grond gooien.", - "block.create.linked_extractor.tooltip.control2": "R-Klik op Frequency Plek", - "block.create.linked_extractor.tooltip.action2": "Wijst momenteel _vastgehouden_ _object_ toe als onderdeel van de geluisterde frequentie. Wanneer een zendende _Redstone_ _Brug_ van dezelfde frequentie wordt ingeschakeld, pauzeert deze Extractor.", - - "block.create.funnel.tooltip": "TRANSPORTBAND TRECHTER", - "block.create.funnel.tooltip.summary": "Verzamelt inkomende items op een _Mechanische_ _Transportband_ en plaatst deze indien mogelijk in de bijgevoegde _Inventaris._ Moet zich direct op een transportband bevinden, met de opening tegenover de bewegingsrichting van de transportband. Het inventaris moet op dezelfde hoogte zijn als de trechter.", - - "block.create.belt_observer.tooltip": "TRANSPORTBAND OBSERVEERDER", - "block.create.belt_observer.tooltip.summary": "Detecteert passerende items op een _Mechanische_ _Transportband_ ervoor. Werkt goed met een _Zuiger_ bovenop, waardoor bepaalde items worden verwijderd.", - "block.create.belt_observer.tooltip.condition1": "Wanneer een object overeenkomt met Filter", - "block.create.belt_observer.tooltip.behaviour1": "Biedt een korte _Redstone_ _pulse_ aan alle kanten. Een leeg filter komt overeen met alle passerende objecten.", - "block.create.belt_observer.tooltip.control1": "R-Klik op Filter Plek", - "block.create.belt_observer.tooltip.action1": "Wijst momenteel _vastgehouden_ _stapel_ toe als de _Filter._ Observeerder zal alleen reageren op dit type object.", - - "block.create.pulse_repeater.tooltip": "PULSE VERSTERKER", - "block.create.pulse_repeater.tooltip.summary": "Een eenvoudig circuit voor het knippen van passerende redstone-signalen tot een lengte van _1_ _tick._", - - "block.create.adjustable_repeater.tooltip": "FLEXSTERKER", - "block.create.adjustable_repeater.tooltip.summary": "Een geavanceerde _Redstone_ _Verserker_ met een _configurable_ _Delay_ tot 30 minuten.", - - "block.create.speedometer.tooltip": "SNELHEIDSMETER", - "block.create.speedometer.tooltip.summary": "Meet en toont de _Rotatiesnelheid_ van gekoppelde kinetische componenten.", - "block.create.speedometer.tooltip.condition1": "Wanneer gedraaid", - "block.create.speedometer.tooltip.behaviour1": "Geeft een kleur aan die overeenkomt met het snelheidsniveau. _Groen_ geeft een trage, _Blauw_ gematigde en _Paars_ een snelle rotatie aan. Sommige Mechanische componenten vereisen voldoende snelheid om goed te werken.", - - "block.create.stressometer.tooltip": "STRESSMETER", - "block.create.stressometer.tooltip.summary": "Meet en toont de _algemene_ _stress_ van het bijgevoegde kinetische netwerk.", - "block.create.stressometer.tooltip.condition1": "Wanneer gedraaid", - "block.create.stressometer.tooltip.behaviour1": "Geeft een kleur aan die overeenkomt met het stressniveau. _Overbelaste_ _netwerken_ zullen niet meer bewegen. Stress kan worden verlicht door meer _Rotatie_ _bronnen_ toe te voegen aan het netwerk.", - - "item.create.logistical_controller_calculation.tooltip": "WIP", - "item.create.logistical_controller_request.tooltip": "WIP", - "item.create.logistical_controller_storage.tooltip": "WIP", - "item.create.logistical_controller_supply.tooltip": "WIP", - "item.create.logistical_controller_transactions.tooltip": "WIP", - "block.create.logistical_index.tooltip": "WIP", - "block.create.package_funnel.tooltip": "WIP", - "block.create.logisticians_table.tooltip": "WIP", - "item.create.logistical_dial.tooltip": "WIP", - - "itemGroup.create": "Create" -} diff --git a/src/main/resources/assets/create/lang/pl_pl.json b/src/main/resources/assets/create/lang/pl_pl.json deleted file mode 100644 index 72e6c341d..000000000 --- a/src/main/resources/assets/create/lang/pl_pl.json +++ /dev/null @@ -1,2154 +0,0 @@ -{ - - "_": "->------------------------] Elementy Gry [------------------------<-", - - "block.create.acacia_window": "Akacjowe okno", - "block.create.acacia_window_pane": "Akacjowa szyba okienna", - "block.create.adjustable_chain_gearshift": "Regulowany przekładnik łańcuchowy", - "block.create.adjustable_crate": "Regulowana skrzynka", - "block.create.adjustable_pulse_repeater": "Regulowany przekaźnik pulsu", - "block.create.adjustable_repeater": "Regulowany przekaźnik", - "block.create.analog_lever": "Dźwignia analogowa", - "block.create.andesite_belt_funnel": "Andezytowy lejek taśmowy", - "block.create.andesite_bricks": "Andezytowe cegły", - "block.create.andesite_bricks_slab": "Andezytowa ceglana płyta", - "block.create.andesite_bricks_stairs": "Andezytowe ceglane schody", - "block.create.andesite_bricks_wall": "Andezytowy ceglany murek", - "block.create.andesite_casing": "Andezytowa obudowa", - "block.create.andesite_cobblestone": "Andezytowy bruk", - "block.create.andesite_cobblestone_slab": "Andezytowa brukowa płyta", - "block.create.andesite_cobblestone_stairs": "Andezytowe brukowe schody", - "block.create.andesite_cobblestone_wall": "Andezytowy brukowy murek", - "block.create.andesite_encased_shaft": "Andezytowy izolowany wał", - "block.create.andesite_funnel": "Andezytowy lejek", - "block.create.andesite_pillar": "Andezytowy filar", - "block.create.andesite_tunnel": "Andezytowy tunel", - "block.create.basin": "Tygiel", - "block.create.belt": "Taśma", - "block.create.birch_window": "Brzozowe okno", - "block.create.birch_window_pane": "Brzozowa szyba okienna", - "block.create.black_sail": "Czarny żagiel", - "block.create.black_seat": "Czarne siedzenie", - "block.create.black_valve_handle": "Czarne pokrętło", - "block.create.blaze_burner": "Płomienny palnik", - "block.create.blue_sail": "Niebieski żagiel", - "block.create.blue_seat": "Niebieskie siedzenie", - "block.create.blue_valve_handle": "Niebieskie pokrętło", - "block.create.brass_belt_funnel": "Mosiężny lejek taśmowy", - "block.create.brass_block": "Blok mosiądzu", - "block.create.brass_casing": "Mosiężna obudowa", - "block.create.brass_encased_shaft": "Mosiężny izolowany wał", - "block.create.brass_funnel": "Mosiężny lejek", - "block.create.brass_tunnel": "Mosiężny tunel", - "block.create.brown_sail": "Brązowy żagiel", - "block.create.brown_seat": "Brązowe siedzenie", - "block.create.brown_valve_handle": "Brązowe pokrętło", - "block.create.cart_assembler": "Monter wagoników", - "block.create.chiseled_dark_scoria": "Rzeźbiony ciemny żużel", - "block.create.chiseled_dolomite": "Rzeźbiony dolomit", - "block.create.chiseled_gabbro": "Rzeźbione gabro", - "block.create.chiseled_limestone": "Rzeźbiony wapień", - "block.create.chiseled_scoria": "Rzeźbiony żużel", - "block.create.chiseled_weathered_limestone": "Rzeźbiony zwietrzały wapień", - "block.create.chocolate": "Czekolada", - "block.create.chute": "Zsyp", - "block.create.clockwork_bearing": "Mechanizm zegarowy", - "block.create.clutch": "Sprzęgło", - "block.create.cogwheel": "Koło zębate", - "block.create.content_observer": "Detektor zawartości", - "block.create.controller_rail": "Tory sterujące", - "block.create.copper_backtank": "Miedziany zbiornik w plecaku", - "block.create.copper_block": "Blok miedzi", - "block.create.copper_casing": "Miedziana Obudowa", - "block.create.copper_ore": "Ruda miedzi", - "block.create.copper_shingles": "Miedziane dachówki", - "block.create.copper_tiles": "Miedziane kafelki", - "block.create.copper_valve_handle": "Miedziane pokrętło", - "block.create.creative_crate": "Kreatywna skrzynka", - "block.create.creative_fluid_tank": "Kreatywny zbiornik", - "block.create.creative_motor": "Kreatywny silnik", - "block.create.crimson_window": "Szkarłatne okno", - "block.create.crimson_window_pane": "Szkarłatna szyba okienna", - "block.create.crushing_wheel": "Koło kruszące", - "block.create.crushing_wheel_controller": "Sterownik koła kruszącego", - "block.create.cuckoo_clock": "Zegar z kukułką", - "block.create.cyan_sail": "Błękitny żagiel", - "block.create.cyan_seat": "Błękitne siedzenie", - "block.create.cyan_valve_handle": "Błękitne pokrętło", - "block.create.dark_oak_window": "Ciemnodębowe okno", - "block.create.dark_oak_window_pane": "Ciemnodębowa szyba okienna", - "block.create.dark_scoria": "Ciemny żużel", - "block.create.dark_scoria_bricks": "Ciemne żużlowe cegły", - "block.create.dark_scoria_bricks_slab": "Ciemna żużlowa ceglana płyta", - "block.create.dark_scoria_bricks_stairs": "Ciemne żużlowe ceglane schody", - "block.create.dark_scoria_bricks_wall": "Ciemny żużlowy ceglany murek", - "block.create.dark_scoria_cobblestone": "Ciemny żużlowy bruk", - "block.create.dark_scoria_cobblestone_slab": "Ciemna żużlowa płyta", - "block.create.dark_scoria_cobblestone_stairs": "Ciemne żużlowe schody", - "block.create.dark_scoria_cobblestone_wall": "Ciemny żużlowy murek", - "block.create.dark_scoria_pillar": "Ciemny żużlowy filar", - "block.create.deployer": "Aplikator", - "block.create.depot": "Składnica", - "block.create.diorite_bricks": "Diorytowe cegły", - "block.create.diorite_bricks_slab": "Diorytowa ceglana płyta", - "block.create.diorite_bricks_stairs": "Diorytowe ceglane schody", - "block.create.diorite_bricks_wall": "Diorytowy ceglany murek", - "block.create.diorite_cobblestone": "Diorytowy bruk", - "block.create.diorite_cobblestone_slab": "Diorytowa brukowa płyta", - "block.create.diorite_cobblestone_stairs": "Diorytowe brukowe schody", - "block.create.diorite_cobblestone_wall": "Diorytowy brukowy murek", - "block.create.diorite_pillar": "Diorytowy filar", - "block.create.dolomite": "Dolomit", - "block.create.dolomite_bricks": "Dolomitowe cegły", - "block.create.dolomite_bricks_slab": "Dolomitowa ceglana płyta", - "block.create.dolomite_bricks_stairs": "Dolomitowe ceglane schody", - "block.create.dolomite_bricks_wall": "Dolomitowy ceglany murek", - "block.create.dolomite_cobblestone": "Dolomitowy bruk", - "block.create.dolomite_cobblestone_slab": "Dolomitowa brukowa płyta", - "block.create.dolomite_cobblestone_stairs": "Dolomitowe brukowe schody", - "block.create.dolomite_cobblestone_wall": "Dolomitowy brukowy murek", - "block.create.dolomite_pillar": "Dolomitowy filar", - "block.create.encased_chain_drive": "Izolowany przekaźnik łańcuchowy", - "block.create.encased_fan": "Izolowany wiatrak", - "block.create.encased_fluid_pipe": "Izolowana rura", - "block.create.fancy_andesite_bricks": "Eleganckie andezytowe cegły", - "block.create.fancy_andesite_bricks_slab": "Elegancka andezytowa ceglana płyta", - "block.create.fancy_andesite_bricks_stairs": "Eleganckie andezytowe ceglane schody", - "block.create.fancy_andesite_bricks_wall": "Elegancki andezytowy ceglany murek", - "block.create.fancy_dark_scoria_bricks": "Eleganckie ciemnożużlowe cegły", - "block.create.fancy_dark_scoria_bricks_slab": "Elegancka ciemnożużlowa ceglana płyta", - "block.create.fancy_dark_scoria_bricks_stairs": "Eleganckie ciemnożużlowe ceglane schody", - "block.create.fancy_dark_scoria_bricks_wall": "Elegancki ciemnożużlowy ceglany murek", - "block.create.fancy_diorite_bricks": "Eleganckie diorytowe cegły", - "block.create.fancy_diorite_bricks_slab": "Elegancka diorytowa ceglana płyta", - "block.create.fancy_diorite_bricks_stairs": "Eleganckie diorytowe ceglane schody", - "block.create.fancy_diorite_bricks_wall": "Elegancki diorytowy ceglany murek", - "block.create.fancy_dolomite_bricks": "Eleganckie dolomitowe cegły", - "block.create.fancy_dolomite_bricks_slab": "Elegancka dolomitowa ceglana płyta", - "block.create.fancy_dolomite_bricks_stairs": "Eleganckie dolomitowe ceglane schody", - "block.create.fancy_dolomite_bricks_wall": "Elegancki dolomitowy ceglany murek", - "block.create.fancy_gabbro_bricks": "Eleganckie gabrowe cegły", - "block.create.fancy_gabbro_bricks_slab": "Elegancka gabrowa ceglana płyta", - "block.create.fancy_gabbro_bricks_stairs": "Eleganckie gabrowe ceglane schody", - "block.create.fancy_gabbro_bricks_wall": "Elegancki gabrowy ceglany murek", - "block.create.fancy_granite_bricks": "Eleganckie granitowe cegły", - "block.create.fancy_granite_bricks_slab": "Elegancka granitowa ceglana płyta", - "block.create.fancy_granite_bricks_stairs": "Eleganckie granitowe ceglane schody", - "block.create.fancy_granite_bricks_wall": "Elegancki granitowy ceglany murek", - "block.create.fancy_limestone_bricks": "Eleganckie wapienne cegły", - "block.create.fancy_limestone_bricks_slab": "Elegancka wapienna ceglana płyta", - "block.create.fancy_limestone_bricks_stairs": "Eleganckie wapienne ceglane schody", - "block.create.fancy_limestone_bricks_wall": "Elegancki wapienny ceglany murek", - "block.create.fancy_scoria_bricks": "Eleganckie żużlowe cegły", - "block.create.fancy_scoria_bricks_slab": "Elegancka żużlowa ceglana płyta", - "block.create.fancy_scoria_bricks_stairs": "Eleganckie żużlowe ceglane schody", - "block.create.fancy_scoria_bricks_wall": "Elegancki żużlowy ceglany murek", - "block.create.fancy_weathered_limestone_bricks": "Eleganckie zwietrzałe wapienne cegły", - "block.create.fancy_weathered_limestone_bricks_slab": "Elegancka zwietrzała wapienna ceglana płyta", - "block.create.fancy_weathered_limestone_bricks_stairs": "Eleganckie zwietrzałe wapienne ceglane schody", - "block.create.fancy_weathered_limestone_bricks_wall": "Elegancki zwietrzały wapienny ceglany murek", - "block.create.fluid_pipe": "Rura", - "block.create.fluid_tank": "Zbiornik", - "block.create.fluid_valve": "Zawór", - "block.create.flywheel": "Koło zamachowe", - "block.create.framed_glass": "Oprawione okno", - "block.create.framed_glass_pane": "Oprawiona szyba", - "block.create.furnace_engine": "Silnik spalinowy", - "block.create.gabbro": "Gabro", - "block.create.gabbro_bricks": "Gabrowe cegły", - "block.create.gabbro_bricks_slab": "Gabrowa ceglana płyta", - "block.create.gabbro_bricks_stairs": "Gabrowe ceglane schody", - "block.create.gabbro_bricks_wall": "Gabrowy ceglany murek", - "block.create.gabbro_cobblestone": "Gabrowy bruk", - "block.create.gabbro_cobblestone_slab": "Gabrowa brukowa płyta", - "block.create.gabbro_cobblestone_stairs": "Gabrowe brukowe schody", - "block.create.gabbro_cobblestone_wall": "Gabrowy brukowy murek", - "block.create.gabbro_pillar": "Gabrowy filar", - "block.create.gantry_carriage": "Przenośnik suwnicowy", - "block.create.gantry_shaft": "Suwnica", - "block.create.gearbox": "Przekładnia", - "block.create.gearshift": "Przekładnik", - "block.create.glass_fluid_pipe": "Szklana rura", - "block.create.granite_bricks": "Granitowe cegły", - "block.create.granite_bricks_slab": "Granitowa ceglana płyta", - "block.create.granite_bricks_stairs": "Granitowe ceglane schody", - "block.create.granite_bricks_wall": "Granitowy ceglany murek", - "block.create.granite_cobblestone": "Granitowy bruk", - "block.create.granite_cobblestone_slab": "Granitowa brukowa płyta", - "block.create.granite_cobblestone_stairs": "Granitowe brukowe schody", - "block.create.granite_cobblestone_wall": "Granitowy brukowy murek", - "block.create.granite_pillar": "Granitowy filar", - "block.create.gray_sail": "Szary żagiel", - "block.create.gray_seat": "Szare siedzenie", - "block.create.gray_valve_handle": "Szare pokrętło", - "block.create.green_sail": "Zielony żagiel", - "block.create.green_seat": "Zielone siedzenie", - "block.create.green_valve_handle": "Zielone pokrętło", - "block.create.hand_crank": "Ręczna korba", - "block.create.honey": "Miód", - "block.create.horizontal_framed_glass": "Poziome oprawione szkło", - "block.create.horizontal_framed_glass_pane": "Pozioma oprawiona szyba", - "block.create.hose_pulley": "Krążek z wężem", - "block.create.item_drain": "Odpływ", - "block.create.jungle_window": "Dżunglowe okno", - "block.create.jungle_window_pane": "Dżunglowa szyba okienna", - "block.create.large_cogwheel": "Duże koło zębate", - "block.create.layered_andesite": "Warstwowy andezyt", - "block.create.layered_dark_scoria": "Warstwowy ciemny żużel", - "block.create.layered_diorite": "Warstwowy dioryt", - "block.create.layered_dolomite": "Warstwowy dolomit", - "block.create.layered_gabbro": "Warstwowe gabro", - "block.create.layered_granite": "Warstwowy granit", - "block.create.layered_limestone": "Warstwowy wapień", - "block.create.layered_scoria": "Warstwowy żużel", - "block.create.layered_weathered_limestone": "Warstwowy zwietrzały wapień", - "block.create.light_blue_sail": "Jasnoniebieski żagiel", - "block.create.light_blue_seat": "Jasnoniebieskie siedzenie", - "block.create.light_blue_valve_handle": "Jasnoniebieskie pokrętło", - "block.create.light_gray_sail": "Jasnoszary żagiel", - "block.create.light_gray_seat": "Jasnoszare siedzenie", - "block.create.light_gray_valve_handle": "Jasnoszare pokrętło", - "block.create.lime_sail": "Jasnozielony żagiel", - "block.create.lime_seat": "Jasnozielone siedzenie", - "block.create.lime_valve_handle": "Jasnozielone pokrętło", - "block.create.limesand": "Piasek wapienny", - "block.create.limestone": "Wapień", - "block.create.limestone_bricks": "Wapienne cegły", - "block.create.limestone_bricks_slab": "Wapienna ceglana płyta", - "block.create.limestone_bricks_stairs": "Wapienne ceglane schody", - "block.create.limestone_bricks_wall": "Wapienny ceglany murek", - "block.create.limestone_cobblestone": "Wapienny bruk", - "block.create.limestone_cobblestone_slab": "Wapienna brukowa płyta", - "block.create.limestone_cobblestone_stairs": "Wapienne brukowe schody", - "block.create.limestone_cobblestone_wall": "Wapienny brukowy murek", - "block.create.limestone_pillar": "Wapienny filar", - "block.create.linear_chassis": "Stelaż liniowy", - "block.create.lit_blaze_burner": "Zapalony płomienny palnik", - "block.create.magenta_sail": "Karmazynowy żagiel", - "block.create.magenta_seat": "Karmazynowe siedzenie", - "block.create.magenta_valve_handle": "Karmazynowe pokrętło", - "block.create.mechanical_arm": "Ramie mechaniczne", - "block.create.mechanical_bearing": "Mechaniczne łożysko", - "block.create.mechanical_crafter": "Mechaniczny stół rzemieślniczy", - "block.create.mechanical_drill": "Mechaniczne wiertło", - "block.create.mechanical_harvester": "Mechaniczna żniwiarka", - "block.create.mechanical_mixer": "Mechaniczny mikser", - "block.create.mechanical_piston": "Mechaniczny tłok", - "block.create.mechanical_piston_head": "Głowica mechanicznego tłoka", - "block.create.mechanical_plough": "Mechaniczny pług", - "block.create.mechanical_press": "Mechaniczna prasa", - "block.create.mechanical_pump": "Mechaniczna pompa", - "block.create.mechanical_saw": "Mechaniczna piła", - "block.create.metal_bracket": "Metalowy wspornik", - "block.create.millstone": "Młynek", - "block.create.minecart_anchor": "Kotwica wagonikowa", - "block.create.mossy_andesite": "Omszony andezyt", - "block.create.mossy_dark_scoria": "Zamszony ciemny żużel", - "block.create.mossy_diorite": "Zamszony dioryt", - "block.create.mossy_dolomite": "Zamszony dolomit", - "block.create.mossy_gabbro": "Zamszone gabro", - "block.create.mossy_granite": "Zamszony granit", - "block.create.mossy_limestone": "Zamszony wapień", - "block.create.mossy_scoria": "Zamszony żużel", - "block.create.mossy_weathered_limestone": "Zamszony zwietrzały wapień", - "block.create.mysterious_cuckoo_clock": "Zegar z kukułką", - "block.create.natural_scoria": "Naturalny żużel", - "block.create.nixie_tube": "Lampa cyfrowa", - "block.create.nozzle": "Dysza", - "block.create.oak_window": "Dębowe okno", - "block.create.oak_window_pane": "Dębowa szyba okienna", - "block.create.orange_sail": "Pomarańczowy żagiel", - "block.create.orange_seat": "Pomarańczowe siedzenie", - "block.create.orange_valve_handle": "Pomarańczowe pokrętło", - "block.create.ornate_iron_window": "Ozdobne żelazne okno", - "block.create.ornate_iron_window_pane": "Ozdobna żelazne szyba okienna", - "block.create.overgrown_andesite": "Zarośnięty andezyt", - "block.create.overgrown_dark_scoria": "Zarośnięty ciemny żużel", - "block.create.overgrown_diorite": "Zarośnięty dioryt", - "block.create.overgrown_dolomite": "Zarośnięty dolomit", - "block.create.overgrown_gabbro": "Zarośnięte gabro", - "block.create.overgrown_granite": "Zarośnięty granit", - "block.create.overgrown_limestone": "Zarośnięty wapień", - "block.create.overgrown_scoria": "Zarośnięty żużel", - "block.create.overgrown_weathered_limestone": "Zarośnięty zwietrzały wapień", - "block.create.paved_andesite": "Wygładzony andezyt", - "block.create.paved_andesite_slab": "Wygładzona andezytowa płyta", - "block.create.paved_andesite_stairs": "Wygładzone andezytowe schody", - "block.create.paved_andesite_wall": "Wygładzony andezytowy murek", - "block.create.paved_dark_scoria": "Wygładzony ciemny żużel", - "block.create.paved_dark_scoria_slab": "Wygładzona ciemnożużlowa płyta", - "block.create.paved_dark_scoria_stairs": "Wygładzone ciemnożużlowe schody", - "block.create.paved_dark_scoria_wall": "Wygładzony ciemnożużlowy murek", - "block.create.paved_diorite": "Wygładzony dioryt", - "block.create.paved_diorite_slab": "Wygładzona diorytowa płyta", - "block.create.paved_diorite_stairs": "Wygładzone diorytowe schody", - "block.create.paved_diorite_wall": "Wygładzony diorytowy murek", - "block.create.paved_dolomite": "Wygładzony dolomit", - "block.create.paved_dolomite_slab": "Wygładzona dolomitowa płyta", - "block.create.paved_dolomite_stairs": "Wygładzone dolomitowe schody", - "block.create.paved_dolomite_wall": "Wygładzony dolomitowy murek", - "block.create.paved_gabbro": "Wygładzone gabro", - "block.create.paved_gabbro_slab": "Wygładzona gabrowa płyta", - "block.create.paved_gabbro_stairs": "Wygładzone gabrowe schody", - "block.create.paved_gabbro_wall": "Wygładzony gabrowy murek", - "block.create.paved_granite": "Wygładzony granit", - "block.create.paved_granite_slab": "Wygładzona granitowa płyta", - "block.create.paved_granite_stairs": "Wygładzone granitowe schody", - "block.create.paved_granite_wall": "Wygładzony granitowy murek", - "block.create.paved_limestone": "Wygładzony wapień", - "block.create.paved_limestone_slab": "Wygładzona wapienna płyta", - "block.create.paved_limestone_stairs": "Wygładzone wapienne schody", - "block.create.paved_limestone_wall": "Wygładzony wapienny murek", - "block.create.paved_scoria": "Wygładzony żużel", - "block.create.paved_scoria_slab": "Wygładzona żużlowa płyta", - "block.create.paved_scoria_stairs": "Wygładzone żużlowe schody", - "block.create.paved_scoria_wall": "Wygładzony żużlowy murek", - "block.create.paved_weathered_limestone": "Wygładzony zwietrzały wapień", - "block.create.paved_weathered_limestone_slab": "Wygładzona zwietrzała wapienna płyta", - "block.create.paved_weathered_limestone_stairs": "Wygładzone zwietrzałe wapienne schody", - "block.create.paved_weathered_limestone_wall": "Wygładzony zwietrzały wapienny murek", - "block.create.pink_sail": "Różowy żagiel", - "block.create.pink_seat": "Różowe siedzenie", - "block.create.pink_valve_handle": "Różowe pokrętło", - "block.create.piston_extension_pole": "Przedłużenie tłoka", - "block.create.polished_dark_scoria": "Wypolerowany ciemny żużel", - "block.create.polished_dark_scoria_slab": "Wypolerowana ciemnożużlowa płyta", - "block.create.polished_dark_scoria_stairs": "Wypolerowane ciemnożużlowe schody", - "block.create.polished_dark_scoria_wall": "Wypolerowany ciemnożużlowy murek", - "block.create.polished_dolomite": "Wypolerowany dolomit", - "block.create.polished_dolomite_slab": "Wypolerowana dolomitowa płyta", - "block.create.polished_dolomite_stairs": "Wypolerowane dolomitowe schody", - "block.create.polished_dolomite_wall": "Wypolerowany dolomitowy murek", - "block.create.polished_gabbro": "Wypolerowane gabro", - "block.create.polished_gabbro_slab": "Wypolerowana gabrowa płyta", - "block.create.polished_gabbro_stairs": "Wypolerowane gabrowe schody", - "block.create.polished_gabbro_wall": "Wypolerowany gabrowy murek", - "block.create.polished_limestone": "Wypolerowany wapień", - "block.create.polished_limestone_slab": "Wypolerowana wapienna płyta", - "block.create.polished_limestone_stairs": "Wypolerowane wapienne schody", - "block.create.polished_limestone_wall": "Wypolerowany wapienny murek", - "block.create.polished_scoria": "Wypolerowany żużel", - "block.create.polished_scoria_slab": "Wypolerowana żużlowa płyta", - "block.create.polished_scoria_stairs": "Wypolerowane żużlowe schody", - "block.create.polished_scoria_wall": "Wypolerowany żużlowy murek", - "block.create.polished_weathered_limestone": "Wypolerowany zwietrzały wapień", - "block.create.polished_weathered_limestone_slab": "Wypolerowana zwietrzała wapienna płyta", - "block.create.polished_weathered_limestone_stairs": "Wypolerowane zwietrzałe wapienne schody", - "block.create.polished_weathered_limestone_wall": "Wypolerowany zwietrzały wapienny murek", - "block.create.portable_fluid_interface": "Przenośny interfejs płynów", - "block.create.portable_storage_interface": "Przenośny interfejs magazynu", - "block.create.powered_latch": "Zaawansowany zasilany przełącznik", - "block.create.powered_toggle_latch": "Zasilany przełącznik", - "block.create.pulley_magnet": "Krążek z magnesem", - "block.create.pulse_repeater": "Przekaźnik pulsowy", - "block.create.purple_sail": "Fioletowy żagiel", - "block.create.purple_seat": "Fioletowe siedzenie", - "block.create.purple_valve_handle": "Fioletowe pokrętło", - "block.create.radial_chassis": "Stelaż promienisty", - "block.create.red_sail": "Czerwony żagiel", - "block.create.red_seat": "Czerwone siedzenie", - "block.create.red_valve_handle": "Czerwone pokrętło", - "block.create.redstone_contact": "Przełącznik kontaktowy", - "block.create.redstone_link": "Emiter sygnału", - "block.create.refined_radiance_casing": "Świetlista obudowa", - "block.create.reinforced_rail": "Wzmocnione tory", - "block.create.rope": "Lina", - "block.create.rope_pulley": "Krążek z liną", - "block.create.rotation_speed_controller": "Sterownik prędkości obrotu", - "block.create.sail_frame": "Rama żagla", - "block.create.schematic_table": "Stół do planowania", - "block.create.schematicannon": "Schematoarmata", - "block.create.scoria": "Żużel", - "block.create.scoria_bricks": "Żużlowe cegły", - "block.create.scoria_bricks_slab": "Żużlowa ceglana płyta", - "block.create.scoria_bricks_stairs": "Żużlowe ceglane schody", - "block.create.scoria_bricks_wall": "Żużlowy ceglany murek", - "block.create.scoria_cobblestone": "Żużlowy bruk", - "block.create.scoria_cobblestone_slab": "Żużlowa brukowa płyta", - "block.create.scoria_cobblestone_stairs": "Żużlowe brukowe schody", - "block.create.scoria_cobblestone_wall": "Żużlowy brukowy murek", - "block.create.scoria_pillar": "Żużlowy filar", - "block.create.secondary_linear_chassis": "Drugorzędny liniowy stelaż", - "block.create.sequenced_gearshift": "Przekładnik sekwencjonalny", - "block.create.shadow_steel_casing": "Mroczna obudowa", - "block.create.shaft": "Wał", - "block.create.smart_chute": "Inteligentny Zsyp", - "block.create.smart_fluid_pipe": "Inteligentna rura", - "block.create.speedometer": "Prędkościomierz", - "block.create.spout": "Kanister", - "block.create.spruce_window": "Świerkowe okno", - "block.create.spruce_window_pane": "Świerkowa szyba okienna", - "block.create.sticker": "Przyklejacz", - "block.create.sticky_mechanical_piston": "Lepki mechaniczny tłok", - "block.create.stockpile_switch": "Przełącznik zawartościowy", - "block.create.stressometer": "Miernik obciążenia", - "block.create.tiled_glass": "Kafelkowane szkło", - "block.create.tiled_glass_pane": "Kafelkowana szyba", - "block.create.turntable": "Talerz obrotowy", - "block.create.vertical_framed_glass": "Pionowe oprawione szkło", - "block.create.vertical_framed_glass_pane": "Pionowa oprawiona szyba", - "block.create.warped_window": "Spaczone okno", - "block.create.warped_window_pane": "Spaczona szyba okienna", - "block.create.water_wheel": "Koło wodne", - "block.create.weathered_limestone": "Zwietrzały wapień", - "block.create.weathered_limestone_bricks": "Zwietrzałe wapienne cegły", - "block.create.weathered_limestone_bricks_slab": "Zwietrzała wapienna ceglana płyta", - "block.create.weathered_limestone_bricks_stairs": "Zwietrzałe wapienne ceglane schody", - "block.create.weathered_limestone_bricks_wall": "Zwietrzały wapienny ceglany murek", - "block.create.weathered_limestone_cobblestone": "Zwietrzały wapienny bruk", - "block.create.weathered_limestone_cobblestone_slab": "Zwietrzała wapienna brukowa płyta", - "block.create.weathered_limestone_cobblestone_stairs": "Zwietrzałe wapienne brukowe schody", - "block.create.weathered_limestone_cobblestone_wall": "Zwietrzały wapienny brukowy murek", - "block.create.weathered_limestone_pillar": "Zwietrzały wapienny filar", - "block.create.weighted_ejector": "Wyrzutnia odważnikowa", - "block.create.white_sail": "Biały żagiel", - "block.create.white_seat": "Białe siedzenie", - "block.create.white_valve_handle": "Białe pokrętło", - "block.create.windmill_bearing": "Łożysko wiatraka", - "block.create.wooden_bracket": "Drewniany wspornik", - "block.create.yellow_sail": "Żółty żagiel", - "block.create.yellow_seat": "Żółte siedzenie", - "block.create.yellow_valve_handle": "Żółte pokrętło", - "block.create.zinc_block": "Blok cynku", - "block.create.zinc_ore": "Ruda cynku", - - "entity.create.contraption": "Maszyna", - "entity.create.gantry_contraption": "Maszyna suwnicowa", - "entity.create.seat": "Siedzenie", - "entity.create.stationary_contraption": "Maszyna stacjonarna", - "entity.create.super_glue": "Super Glue", - - "fluid.create.milk": "Mleko", - "fluid.create.potion": "Mikstura", - "fluid.create.tea": "Herbatka Budowniczego", - - "item.create.andesite_alloy": "Stop andezytu", - "item.create.attribute_filter": "Filtr atrybutowy", - "item.create.bar_of_chocolate": "Tabliczka czekolady", - "item.create.belt_connector": "Taśma", - "item.create.blaze_cake": "Płomienne ciasto", - "item.create.blaze_cake_base": "Baza płomiennego ciasta", - "item.create.brass_hand": "Mosiężna dłoń", - "item.create.brass_ingot": "Sztabka mosiądzu", - "item.create.brass_nugget": "Bryłka mosiądzu", - "item.create.brass_sheet": "Arkusz mosiądzu", - "item.create.builders_tea": "Herbatka Budowniczego", - "item.create.chest_minecart_contraption": "Maszyna w wagoniku ze skrzynią", - "item.create.chocolate_bucket": "Wiadro czekolady", - "item.create.chocolate_glazed_berries": "Jagody w czekoladzie", - "item.create.chromatic_compound": "Związek chromatyczny", - "item.create.cinder_flour": "Rozżarzona mąka", - "item.create.copper_backtank": "Miedziany zbiornik w plecaku", - "item.create.copper_ingot": "Sztabka miedzi", - "item.create.copper_nugget": "Bryłka miedzi", - "item.create.copper_sheet": "Arkusz miedzi", - "item.create.crafter_slot_cover": "Przykrywka na slot stołu rzemieślniczego", - "item.create.crushed_aluminum_ore": "Rozkruszona ruda żelaza", - "item.create.crushed_brass": "Rozkruszony mosiądz", - "item.create.crushed_copper_ore": "Rozkruszona ruda miedzi", - "item.create.crushed_gold_ore": "Rozkruszona ruda złota", - "item.create.crushed_iron_ore": "Rozkruszona ruda żelaza", - "item.create.crushed_lead_ore": "Rozkruszona ruda ołowiu", - "item.create.crushed_nickel_ore": "Rozkruszona ruda niklu", - "item.create.crushed_osmium_ore": "Rozkruszona ruda osmu", - "item.create.crushed_platinum_ore": "Rozkruszona ruda platyny", - "item.create.crushed_quicksilver_ore": "Rozkruszona ruda rtęci", - "item.create.crushed_silver_ore": "Rozkruszona ruda srebra", - "item.create.crushed_tin_ore": "Rozkruszona ruda cyny", - "item.create.crushed_uranium_ore": "Rozkruszona ruda uranu", - "item.create.crushed_zinc_ore": "Rozkruszona ruda cynku", - "item.create.diving_boots": "Buty do nurkowania", - "item.create.diving_helmet": "Hełm do nurkowania", - "item.create.deforester": "Wylesiacz", - "item.create.dough": "Ciasto", - "item.create.electron_tube": "Lampa elektronowa", - "item.create.empty_blaze_burner": "Pusty płomienny palnik", - "item.create.empty_schematic": "Pusty schemat", - "item.create.extendo_grip": "Wydłużony Chwytak", - "item.create.filter": "Filtr", - "item.create.furnace_minecart_contraption": "Maszyna w wagoniku z piecem", - "item.create.goggles": "Gogle inżyniera", - "item.create.golden_sheet": "Arkusz złota", - "item.create.handheld_blockzapper": "Ręczny odkładacz", - "item.create.handheld_worldshaper": "Ręczny kształter", - "item.create.honey_bucket": "Wiadro miodu", - "item.create.honeyed_apple": "Jabłko w miodzie", - "item.create.integrated_circuit": "Układ scalony", - "item.create.iron_sheet": "Arkusz żelaza", - "item.create.lapis_sheet": "Arkusz lazurytu", - "item.create.minecart_contraption": "Maszyna w wagoniku", - "item.create.minecart_coupling": "Łącznik wagoników", - "item.create.polished_rose_quartz": "Wypolerowany kwarc różowy", - "item.create.powdered_obsidian": "Sproszkowany obsydian", - "item.create.propeller": "Śmigło", - "item.create.red_sand_paper": "Czerwony papier ścierny", - "item.create.refined_radiance": "Świetlisty materiał", - "item.create.rose_quartz": "Kwarc różowy", - "item.create.sand_paper": "Papier ścierny", - "item.create.schematic": "Schemat", - "item.create.schematic_and_quill": "Schemat z piórem", - "item.create.shadow_steel": "Mroczna stal", - "item.create.super_glue": "Super Glue", - "item.create.sweet_roll": "Słodka bułka", - "item.create.tree_fertilizer": "Nawóz do drzew", - "item.create.vertical_gearbox": "Pionowa przekładnia", - "item.create.wand_of_symmetry": "Różdżka symetrii", - "item.create.wheat_flour": "Mąka pszenna", - "item.create.whisk": "Trzepaczka", - "item.create.wrench": "Klucz", - "item.create.zinc_ingot": "Sztabka cynku", - "item.create.zinc_nugget": "Bryłka cynku", - - - "_": "->------------------------] Postępy [------------------------<-", - - "advancement.create.root": "Witaj w Create", - "advancement.create.root.desc": "Czas, aby zacząć tworzyć wspaniałe Maszyny!", - "advancement.create.andesite_alloy": "Słynne stopy", - "advancement.create.andesite_alloy.desc": "Materiały z Create mają czasami dziwne nazwy, stop andezytu jest jednym z nich.", - "advancement.create.its_alive": "To żyje!", - "advancement.create.its_alive.desc": "Patrz, jak Twój pierwszy ruchomy komponent się obraca.", - "advancement.create.shifting_gears": "Przekładnia", - "advancement.create.shifting_gears.desc": "Połącz duże koło zębate i małe koło zębate, co pozwoli zmienić prędkość obrotu Twojej maszyny.", - "advancement.create.overstressed": "Przeciążenie", - "advancement.create.overstressed.desc": "Doświadcz limitów obciążenia z pierwszej ręki.", - "advancement.create.belt": "Taśma produkcyjna", - "advancement.create.belt.desc": "Połącz dwa wały tworząc taśmociąg.", - "advancement.create.tunnel": "Światełko w tunelu", - "advancement.create.tunnel.desc": "Ulepsz swój taśmociąg dodając tunel.", - "advancement.create.splitter_tunnel": "Dziel i rządź", - "advancement.create.splitter_tunnel.desc": "Stwórz rozdzielacz przy pomocy kilku mosiężnych tuneli.", - "advancement.create.chute": "Czarna dziura", - "advancement.create.chute.desc": "Postaw zsyp - pionową część taśmociągu.", - "advancement.create.upward_chute": "Powietrzne porwanie", - "advancement.create.upward_chute.desc": "Wrzuć przedmiot do zsypu z wiatrakiem.", - "advancement.create.belt_funnel": "Sprzęt produkcyjny", - "advancement.create.belt_funnel.desc": "Postaw lejek lub składnicę na taśmociągu, aby dodać dodatkowe funkcje.", - "advancement.create.belt_funnel_kiss": "Zakochana para", - "advancement.create.belt_funnel_kiss.desc": "Spraw, aby dwa lejki na taśmociągu się pocałowały", - "advancement.create.fan": "Wisząc w powietrzu", - "advancement.create.fan.desc": "Unieś się w powietrze na izolowanym wiatraku.", - "advancement.create.fan_lava": "Ogrzewanie geotermalne", - "advancement.create.fan_lava.desc": "Wpadnij w strumień powietrza zdolnego do topienia metali.", - "advancement.create.fan_water": "Myjnia automatyczna", - "advancement.create.fan_water.desc": "Wpadnij w strumień powietrza przenoszącego krople wody.", - "advancement.create.fan_smoke": "Wędzarnia", - "advancement.create.fan_smoke.desc": "Wpadnij w strumień powietrza z dymem.", - "advancement.create.wrench": "Poręczna konfiguracja", - "advancement.create.wrench.desc": "Wytwórz klucz pomocny w pracy z maszynami.", - "advancement.create.goggles": "Stress-O-Vision", - "advancement.create.goggles.desc": "Wytwórz gogle inżyniera, które pomogą Ci w zdobyciu większej ilości informacji o ruchomych komponentach.", - "advancement.create.speedometer": "Ale że jak szybko?", - "advancement.create.speedometer.desc": "Połóż i wpraw w ruch prędkościomierz. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", - "advancement.create.stressometer": "Ale że jakie obciążenie?", - "advancement.create.stressometer.desc": "Połóż i wpraw w ruch miernik obciążenia. Popatrz na niego przez Twoje gogle, aby poznać dokładną wartość.", - "advancement.create.aesthetics": "Estetyka!", - "advancement.create.aesthetics.desc": "Postaw wsporniki przy wale, rurze i kole zębatym.", - "advancement.create.reinforced": "Wzmocnienie!", - "advancement.create.reinforced.desc": "Użyj pasujących obudów na wale, rurze i kole zębatym.", - "advancement.create.water_wheel": "Energia odnawialna", - "advancement.create.water_wheel.desc": "Postaw koło wodne i spraw, aby zaczęło się kręcić!", - "advancement.create.chocolate_wheel": "Smakowita energia", - "advancement.create.chocolate_wheel.desc": "Wpraw w ruch koło wodne przy pomocy gorącej czekolady.", - "advancement.create.lava_wheel": "Koło magmowe", - "advancement.create.lava_wheel.desc": "To nigdy nie powinno było zadziałać.", - "advancement.create.cuckoo": "To już czas?", - "advancement.create.cuckoo.desc": "Bądź świadkiem tego, jak zegar z kukułką ogłasza porę snu.", - "advancement.create.millstone": "Kieszonkowy rozgniatacz", - "advancement.create.millstone.desc": "Postaw i wpraw w ruch młynek.", - "advancement.create.windmill": "Łagodna bryza", - "advancement.create.windmill.desc": "Skonstruuj działający wiatrak.", - "advancement.create.maxed_windmill": "Silna bryza", - "advancement.create.maxed_windmill.desc": "Skonstruuj wiatrak o maksymalnej sile.", - "advancement.create.andesite_casing": "Epoka andezytu łupanego", - "advancement.create.andesite_casing.desc": "Użyj stopu andezytu, aby wytworzyć podstawową obudowę.", - "advancement.create.mechanical_drill": "Wiertło stacjonarne", - "advancement.create.mechanical_drill.desc": "Postaw i wpraw w ruch mechaniczne wiertło.", - "advancement.create.press": "Prasa nie do końca drukarska", - "advancement.create.press.desc": "Wpraw w ruch prasę i wytłocz kilka metalowych arkuszy.", - "advancement.create.polished_rose_quartz": "Różowe diamenty", - "advancement.create.polished_rose_quartz.desc": "Poleruj różowy kwarc papierem ściernym tak długo, aż będzie przezroczysty.", - "advancement.create.electron_tube": "Beep Boop", - "advancement.create.electron_tube.desc": "Wytwórz kilka lamp elektronowych, przydatnych do konstrukcji mniej prymitywnych maszyn.", - "advancement.create.mechanical_saw": "Siekiera stacjonarna", - "advancement.create.mechanical_saw.desc": "Postaw i wpraw w ruch mechaniczną piłę.", - "advancement.create.basin": "Tygiel kulturowy", - "advancement.create.basin.desc": "Postaw tygiel i wrzuć do niego kilka przedmiotów.", - "advancement.create.mixer": "Pomieszanie z poplątaniem", - "advancement.create.mixer.desc": "Postaw nad tyglem mechaniczny mikser i użyj go do zmieszania przedmiotów na jednolitą masę.", - "advancement.create.blaze_burner": "Żywy ogień", - "advancement.create.blaze_burner.desc": "Zdobądź płomienny palnik.", - "advancement.create.compact": "Zautomatyzowane prasowanie", - "advancement.create.compact.desc": "Użyj prasy i tygla do sprasowania przedmiotów.", - "advancement.create.brass": "Prawdziwe stopy", - "advancement.create.brass.desc": "Zmieszaj sproszkowaną miedź i sproszkowany cynk, tworząc mosiądz.", - "advancement.create.brass_casing": "Epoka brązu", - "advancement.create.brass_casing.desc": "Użyj nowo poznany mosiądz i odrobiny drewna, aby wytworzyć ulepszoną obudowę.", - "advancement.create.copper_casing": "Epoka miedzi", - "advancement.create.copper_casing.desc": "Użyj arkuszy miedzi i odrobiny drewna, aby wytworzyć miedzianą obudowę.", - "advancement.create.spout": "Plum", - "advancement.create.spout.desc": "Patrz jak przedmiot napełnia się płynem przy użyciu kanistra.", - "advancement.create.spout_potion": "Globalny browar", - "advancement.create.spout_potion.desc": "Patrz jak butelka napełnia się miksturą.", - "advancement.create.chocolate": "Świat wyobraźni", - "advancement.create.chocolate.desc": "Zdobądź wiadro płynnej czekolady.", - "advancement.create.item_drain": "Szybki odpływ", - "advancement.create.item_drain.desc": "Patrz jak przedmiot jest opróżniany przy użyciu odpływu.", - "advancement.create.chained_item_drain": "Niech się dzieje!", - "advancement.create.chained_item_drain.desc": "Patrz jak przedmiot toczy się przez wiele połączonych odpływów.", - "advancement.create.glass_pipe": "Płynny podglądacz", - "advancement.create.glass_pipe.desc": "Patrz jak ciecz płynie przez rurę z okienkiem. Użyj klucza na prostej rurze, aby dodać do niej okno.", - "advancement.create.pipe_collision": "Nigdy nie krzyżuj strumieni!", - "advancement.create.pipe_collision.desc": "Patrz jak dwie ciecze spotykają się w Twoim systemie rur.", - "advancement.create.pipe_spill": "Mamy wyciek!", - "advancement.create.pipe_spill.desc": "Patrz jak otwarta część rury stawia lub pochłania ciecze.", - "advancement.create.hose_pulley": "Wyciek przemysłowy", - "advancement.create.hose_pulley.desc": "Obniż krążek z wężem, aby osuszyć lub wypełnić płynem jakiś obszar.", - "advancement.create.infinite_water": "Osuszanie oceanu", - "advancement.create.infinite_water.desc": "Wypompuj trochę wody z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.infinite_lava": "Prosto z jądra Ziemi", - "advancement.create.infinite_lava.desc": "Wypompuj trochę lawy z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.infinite_chocolate": "Tonę we własnej wyobraźni", - "advancement.create.infinite_chocolate.desc": "Wypompuj trochę czekolady z miejsca, które jest wystarczająco duże, że może być uznane za Nieskończone.", - "advancement.create.crafter": "Linia produkcyjna", - "advancement.create.crafter.desc": "Postaw i wpraw w ruch mechaniczny stół rzemieślniczy.", - "advancement.create.clockwork_bearing": "Jaką mamy godzinę?", - "advancement.create.clockwork_bearing.desc": "Skonstruuj strukturę obracającą się na mechanizmie zegarowym.", - "advancement.create.nixie_tube": "Oznaka stylu", - "advancement.create.nixie_tube.desc": "Wytwórz i postaw parę lamp cyfrowych.", - "advancement.create.deployer": "Postaw i zniszcz", - "advancement.create.deployer.desc": "Postaw i wpraw w ruch aplikator, Twoje idealne odbicie.", - "advancement.create.speed_controller": "Inżynierowie go nienawidzą!", - "advancement.create.speed_controller.desc": "Postaw sterownik prędkości obrotu, najlepsze narzędzie do zmiany przekładni.", - "advancement.create.flywheel": "Serce Fabryki", - "advancement.create.flywheel.desc": "Skutecznie podłącz silnik do koła zamachowego.", - "advancement.create.overstress_flywheel": "Wysoki poziom obciążenia", - "advancement.create.overstress_flywheel.desc": "Przeładuj silnik spalinowy.", - "advancement.create.integrated_circuit": "Skomplikowane obliczenia", - "advancement.create.integrated_circuit.desc": "Złóż układ scalony.", - "advancement.create.mechanical_arm": "Ręce pełne roboty", - "advancement.create.mechanical_arm.desc": "Wytwórz ramię mechaniczne, wybierz miejsca wejścia i wyjścia, postaw je i wpraw w ruch. Patrz jak robi wszystko za Ciebie.", - "advancement.create.musical_arm": "Zagraj coś dla mnie!", - "advancement.create.musical_arm.desc": "Patrz jak mechaniczne ramię obsługuje szafę grającą.", - "advancement.create.arm_many_targets": "Organizer", - "advancement.create.arm_many_targets.desc": "Zaprogramuj ramię mechaniczne z przynajmniej dziesięcioma miejscami wyjścia.", - "advancement.create.arm_blaze_burner": "Automatyczny wlot paliwowy", - "advancement.create.arm_blaze_burner.desc": "Poinstruuj ramię mechaniczne, jak napełniać płomienny palnik.", - "advancement.create.fist_bump": "Żółwik!", - "advancement.create.fist_bump.desc": "Spraw, aby dwa aplikatory stuknęły się pięścią.", - "advancement.create.crushing_wheel": "Nierozłączna para", - "advancement.create.crushing_wheel.desc": "Wytwórz parę kół kruszących, aby kruszyły więcej materiałów w krótszym czasie.", - "advancement.create.blaze_cake": "Przypływ energii", - "advancement.create.blaze_cake.desc": "Upiecz dla swojego palnika pyszne ciasto.", - "advancement.create.chromatic_compound": "Minerały dwubiegunowe", - "advancement.create.chromatic_compound.desc": "Wytwórz sztabkę związku chromatycznego.", - "advancement.create.shadow_steel": "Dar otchłani", - "advancement.create.shadow_steel.desc": "Uzyskaj mroczną stal, sztabkę pełną nicości.", - "advancement.create.refined_radiance": "Czysty blask", - "advancement.create.refined_radiance.desc": "Uzyskaj świetlisty materiał, silną substancję chromatyczną.", - "advancement.create.chromatic_age": "Epoka kolorów", - "advancement.create.chromatic_age.desc": "Wytwórz jasną i mroczną obudowę.", - "advancement.create.zapper": "Magiczne budowanie", - "advancement.create.zapper.desc": "Wytwórz ręczny odkładacz - promień pomocny na budowie.", - "advancement.create.upgraded_zapper": "Napromieniowanie", - "advancement.create.upgraded_zapper.desc": "Wytwórz i uruchom maksymalnie ulepszony ręczny odkładacz.", - "advancement.create.wand_of_symmetry": "Symetria.", - "advancement.create.wand_of_symmetry.desc": "Zdobądź różdżkę symetrii.", - "advancement.create.deforester": "Deforestacja", - "advancement.create.deforester.desc": "Wytwórz wylesiacz i pogłęb światowe problemy klimatyczne.", - "advancement.create.extendo_grip": "Dalej dalej ręce Gadżeta!", - "advancement.create.extendo_grip.desc": "Złap w ręce Wydłużony Chwytak.", - "advancement.create.dual_extendo_grip": "Bioniczne modyfikacje", - "advancement.create.dual_extendo_grip.desc": "Użyj dwóch Wydłużonych Chwytaków, aby posiąść nadludzki zasięg.", - "advancement.create.eob": "Koniec Bety", - "advancement.create.eob.desc": "Bądź gotowy na więcej treści w przyszłości. <3", - - - "_": "->------------------------] Interfejs & Komunikaty [------------------------<-", - - "itemGroup.create.base": "Create", - "itemGroup.create.palettes": "Palety Create", - - "death.attack.create.crush": "Gracz %1$s został zgnieciony przez koło kruszące", - "death.attack.create.fan_fire": "Gracz %1$s poparzył się gorącym powietrzem", - "death.attack.create.fan_lava": "Gracz %1$s poparzył się kroplami lawy", - "death.attack.create.mechanical_drill": "Gracz %1$s nabił się na mechaniczne wiertło", - "death.attack.create.mechanical_saw": "Gracz %1$s został przecięty na pół przez mechaniczną piłę", - "death.attack.create.cuckoo_clock_explosion": "Gracz %1$s został wysadzony w powietrze przez uszkodzony zegar z kukułką", - - "create.block.deployer.damage_source_name": "zbuntowany aplikator", - "create.block.cart_assembler.invalid": "Postaw monter wagoników na torze", - - "create.recipe.crushing": "Kruszenie", - "create.recipe.milling": "Mielenie", - "create.recipe.fan_washing": "Hurtowe płukanie", - "create.recipe.fan_washing.fan": "Wiatrak za płynącą wodą", - "create.recipe.fan_smoking": "Hurtowe wędzenie", - "create.recipe.fan_smoking.fan": "Wiatrak za ogniem", - "create.recipe.fan_blasting": "Hurtowe topienie", - "create.recipe.fan_blasting.fan": "Wiatrak za lawą", - "create.recipe.pressing": "Tłoczenie", - "create.recipe.mixing": "Mieszanie", - "create.recipe.deploying": "Aplikowanie", - "create.recipe.automatic_shapeless": "Zautomatyzowanie nieokreślone konstruowanie", - "create.recipe.automatic_brewing": "Zautomatyzowane warzenie", - "create.recipe.packing": "Prasowanie", - "create.recipe.automatic_packing": "Zautomatyzowane pakowanie", - "create.recipe.sawing": "Cięcie", - "create.recipe.mechanical_crafting": "Mechaniczne konstruowanie", - "create.recipe.automatic_shaped": "Zautomatyzowane określone konstruowanie", - "create.recipe.block_cutting": "Cięcie bloków", - "create.recipe.wood_cutting": "Cięcie drewna", - "create.recipe.blockzapper_upgrade": "Ręczny odkładacz", - "create.recipe.sandpaper_polishing": "Polerowanie papierem ściernym", - "create.recipe.mystery_conversion": "Tajemnicza przemiana", - "create.recipe.spout_filling": "Wypełnianie", - "create.recipe.draining": "Osuszanie", - "create.recipe.processing.chance": "%1$s%% szans", - "create.recipe.heat_requirement.none": "Nie wymaga podgrzewania", - "create.recipe.heat_requirement.heated": "Podrzewane", - "create.recipe.heat_requirement.superheated": "Silnie podgrzewane", - - "create.generic.range": "Zasięg", - "create.generic.radius": "Promień", - "create.generic.width": "Szerokość", - "create.generic.height": "Wysokość", - "create.generic.length": "Długość", - "create.generic.speed": "Prędkość", - "create.generic.delay": "Opóźnienie", - "create.generic.unit.ticks": "Tiki", - "create.generic.unit.seconds": "Sekundy", - "create.generic.unit.minutes": "Minuty", - "create.generic.unit.rpm": "Ob/min", - "create.generic.unit.stress": "JO", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smW", - "create.generic.clockwise": "Zgodnie ze wskazówkami zegara", - "create.generic.counter_clockwise": "Przeciwnie do wskazówek zegara", - - "create.action.scroll": "Przewiń", - "create.action.confirm": "Potwierdź", - "create.action.abort": "Przerwij", - "create.action.saveToFile": "Zapisz", - "create.action.discard": "Odrzuć", - - "create.keyinfo.toolmenu": "Menu narzędzi", - "create.keyinfo.scrollup": "Symuluj przewijanie w górę (w świecie)", - "create.keyinfo.scrolldown": "Symuluj przewijanie w dół (w świecie)", - - "create.gui.scrollInput.defaultTitle": "Wybierz opcję:", - "create.gui.scrollInput.scrollToModify": "Przewiń, aby zmodyfikować", - "create.gui.scrollInput.scrollToAdjustAmount": "Przewiń, aby dostosować ilość", - "create.gui.scrollInput.scrollToSelect": "Przewiń, aby wybrać", - "create.gui.scrollInput.shiftScrollsFaster": "Naciśnij Shift, aby przewijać szybciej", - "create.gui.toolmenu.focusKey": "Przytrzymaj [%1$s], aby skupić", - "create.gui.toolmenu.cycle": "[SCROLL] przewijać", - "create.gui.symmetryWand.mirrorType": "Odbicie lustrzane", - "create.gui.symmetryWand.orientation": "Orientacja", - - "create.symmetry.mirror.plane": "Odbij lustrzanie raz", - "create.symmetry.mirror.doublePlane": "Prostokątnie", - "create.symmetry.mirror.triplePlane": "Ośmiokątnie", - - "create.orientation.orthogonal": "ortogonalnie", - "create.orientation.diagonal": "ukośnie", - "create.orientation.horizontal": "poziomo", - "create.orientation.alongZ": "Wzdłuż Z", - "create.orientation.alongX": "Wzdłuż X", - - "create.gui.blockzapper.title": "Ręczny odkładacz", - "create.gui.blockzapper.replaceMode": "Tryb zamiany", - "create.gui.blockzapper.searchDiagonal": "Wzdłuż linii ukośnych", - "create.gui.blockzapper.searchFuzzy": "Ignoruj krawędzie materiałów", - "create.gui.blockzapper.range": "Rozpiętość", - "create.gui.blockzapper.needsUpgradedAmplifier": "Wymaga ulepszonego wzmacniacza", - "create.gui.blockzapper.patternSection": "Wzór", - "create.gui.blockzapper.pattern.solid": "Ciągły", - "create.gui.blockzapper.pattern.checkered": "Szachownica", - "create.gui.blockzapper.pattern.inversecheckered": "Odwrócona szachownica", - "create.gui.blockzapper.pattern.chance25": "Obrót o 25%", - "create.gui.blockzapper.pattern.chance50": "Obrót o 50%", - "create.gui.blockzapper.pattern.chance75": "Obrót o 75%", - "create.gui.terrainzapper.title": "Ręczny kształter", - "create.gui.terrainzapper.searchDiagonal": "Wzdłuż linii ukośnych", - "create.gui.terrainzapper.searchFuzzy": "Ignoruj krawędzie materiałów", - "create.gui.terrainzapper.patternSection": "Wzór", - "create.gui.terrainzapper.pattern.solid": "Ciągły", - "create.gui.terrainzapper.pattern.checkered": "Szachownica", - "create.gui.terrainzapper.pattern.inversecheckered": "Odrócona szachownica", - "create.gui.terrainzapper.pattern.chance25": "Obrót o 25%", - "create.gui.terrainzapper.pattern.chance50": "Obrót o 50%", - "create.gui.terrainzapper.pattern.chance75": "Obrót o 75%", - "create.gui.terrainzapper.placement": "Położenie", - "create.gui.terrainzapper.placement.merged": "Połączony", - "create.gui.terrainzapper.placement.attached": "Przyłączony", - "create.gui.terrainzapper.placement.inserted": "Wstawiony", - "create.gui.terrainzapper.brush": "Pędzel", - "create.gui.terrainzapper.brush.cuboid": "Prostopadłościan", - "create.gui.terrainzapper.brush.sphere": "Kula", - "create.gui.terrainzapper.brush.cylinder": "Walec", - "create.gui.terrainzapper.brush.surface": "Powierzchnia", - "create.gui.terrainzapper.brush.cluster": "Grupa", - "create.gui.terrainzapper.tool": "Narzędzie", - "create.gui.terrainzapper.tool.fill": "Wypełnianie", - "create.gui.terrainzapper.tool.place": "Stawianie", - "create.gui.terrainzapper.tool.replace": "Zamiana", - "create.gui.terrainzapper.tool.clear": "Czyszczenie", - "create.gui.terrainzapper.tool.overlay": "Pokrywanie", - "create.gui.terrainzapper.tool.flatten": "Wypłaszczanie", - - "create.terrainzapper.shiftRightClickToSet": "Shift+Prawe kliknięcie, aby wybrać kształt", - "create.terrainzapper.usingBlock": "Używając: %1$s", - "create.terrainzapper.leftClickToSet": "Kliknij LPM na blok aby ustawić materiał", - - "create.blockzapper.usingBlock": "Używając: %1$s", - "create.blockzapper.componentUpgrades": "Ulepszenia komponentów:", - "create.blockzapper.component.body": "Ciało", - "create.blockzapper.component.amplifier": "Wzmacniacz", - "create.blockzapper.component.accelerator": "Akcelerator", - "create.blockzapper.component.retriever": "Odbieracz", - "create.blockzapper.component.scope": "Teleskop", - "create.blockzapper.componentTier.none": "Brak", - "create.blockzapper.componentTier.brass": "Mosiężny", - "create.blockzapper.componentTier.chromatic": "Chromatyczny", - "create.blockzapper.leftClickToSet": "Kliknij PPM na blok, aby przypisać!", - "create.blockzapper.empty": "Koniec bloków!", - - "create.minecart_coupling.two_couplings_max": "Wagoniki nie mogą mieć więcej niż dwa łączniki każdy", - "create.minecart_coupling.unloaded": "Część twojego pociągu wydaje się być w niezaładowanych Chunkach.", - "create.minecart_coupling.no_loops": "Łączniki nie mogą tworzyć pętli", - "create.minecart_coupling.removed": "Usunięto z wagonika wszystkie łączniki", - "create.minecart_coupling.too_far": "Wagoniki są zbyt daleko od siebie", - - "create.contraptions.movement_mode": "Tryb poruszania", - "create.contraptions.movement_mode.move_place": "Zawsze stawiaj przy zatrzymaniu", - "create.contraptions.movement_mode.move_place_returned": "Stawiaj jedynie w pozycji startu", - "create.contraptions.movement_mode.move_never_place": "Stawiaj jedynie, gdy kotwica jest zniszczona", - "create.contraptions.movement_mode.rotate_place": "Zawsze stawiaj przy zatrzymaniu", - "create.contraptions.movement_mode.rotate_place_returned": "Stawiaj jedynie blisko kąta początkowego", - "create.contraptions.movement_mode.rotate_never_place": "Stawiaj jedynie, gdy kotwica jest zniszczona\n", - "create.contraptions.cart_movement_mode": "Tryb poruszania wagonika", - "create.contraptions.cart_movement_mode.rotate": "Zawsze kieruj w stronę ruchu", - "create.contraptions.cart_movement_mode.rotate_paused": "Zatrzymaj komponenty podczas obrotu", - "create.contraptions.cart_movement_mode.rotation_locked": "Zablokuj obrót", - "create.contraptions.windmill.rotation_direction": "Kierunek obrotu", - "create.contraptions.clockwork.clock_hands": "Wskazówki zegara", - "create.contraptions.clockwork.hour_first": "Najpierw wskazówka godzinowa", - "create.contraptions.clockwork.minute_first": "Najpierw wskazówka minutowa", - "create.contraptions.clockwork.hour_first_24": "Najpierw wskazówka 24-godzinna", - - "create.logistics.filter": "Filtr", - "create.logistics.recipe_filter": "Filtr receptur", - "create.logistics.fluid_filter": "Filtr płynów", - "create.logistics.firstFrequency": "Częst. #1", - "create.logistics.secondFrequency": "Częst. #2", - "create.logistics.filter.apply": "Zastosowano filtr na %1$s.", - "create.logistics.filter.apply_click_again": "Zastosowano filtr na %1$s; kliknij ponownie, aby skopiować ilość.", - "create.logistics.filter.apply_count": "Zastosowano limit wyciągania do filtra.", - - "create.gui.goggles.generator_stats": "Właściwości generatora:", - "create.gui.goggles.kinetic_stats": "Właściwości kinetyczne:", - "create.gui.goggles.at_current_speed": "przy obecnej prędkości", - "create.gui.goggles.pole_length": "Długość przedłużenia:", - "create.gui.goggles.fluid_container": "Informacje o zbiorniku:", - "create.gui.goggles.fluid_container.capacity": "Pojemność:", - "create.gui.assembly.exception": "Nie udało się zmontować maszyny:", - "create.gui.assembly.exception.unmovableBlock": "Nieprzesuwalny bloki (%4$s) na [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "Blok na [%1$s,%2$s,%3$s] nie był w załadowanym Chunku", - "create.gui.assembly.exception.structureTooLarge": "Zbyt dużo bloków w maszynie. Ustawione maksimum to: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "Zbyt dużo przedłużeń tłoka. Ustawione maksimum to: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Brakuje kilku przedłużeń tłoka", - "create.gui.assembly.exception.not_enough_sails": "Przyczepiona struktura nie zawiera wystarczająco żaglo-podobnych bloków: %1$s Wymagane minimum to %2$s", - "create.gui.gauge.info_header": "Informacje miernika:", - "create.gui.speedometer.title": "Prędkość obrotu", - "create.gui.stressometer.title": "Obciążenie systemu", - "create.gui.stressometer.capacity": "Pozostała pojemność", - "create.gui.stressometer.overstressed": "Przeciążenie", - "create.gui.stressometer.no_rotation": "Brak obrotu", - "create.gui.contraptions.not_fast_enough": "Wygląda na to, że %1$s_nie_ obraca się z _wystarczającą_ _prędkością_.", - "create.gui.contraptions.network_overstressed": "Wygląda na to, że ta maszyna jest _przeciążona_. Dodaj więcej źródeł lub _spowolnij_ komponenty z wysoką _wartością_ _obciążenia_.", - "create.gui.adjustable_crate.title": "Regulowana skrzynka", - "create.gui.adjustable_crate.storageSpace": "Pojemność", - "create.gui.stockpile_switch.title": "Przełącznik zawartościowy", - "create.gui.stockpile_switch.invert_signal": "Odwróć sygnał", - "create.gui.stockpile_switch.move_to_lower_at": "Zmień na niższą wartość przy %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Zmień na wyższą wartość przy %1$s%%", - "create.gui.sequenced_gearshift.title": "Przekładnik sekwencjonalny", - "create.gui.sequenced_gearshift.instruction": "Instrukcja", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Obróć o kąt", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Obróć", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Kąt", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "Obróć, aby przesunąć tłok/krążek/przenośnik suwnicowy", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Tłok", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Dystans", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Opóźnienie czasowe", - "create.gui.sequenced_gearshift.instruction.delay": "Opóźn.", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Czas trwania", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "Koniec", - "create.gui.sequenced_gearshift.instruction.end": "Koniec", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Czekaj na kolejny puls", - "create.gui.sequenced_gearshift.instruction.await": "Czekaj", - "create.gui.sequenced_gearshift.speed": "Prędkość, kierunek", - "create.gui.sequenced_gearshift.speed.forward": "Prędkość wejściowa, do przodu", - "create.gui.sequenced_gearshift.speed.forward_fast": "Podwójna prędkość, do przodu", - "create.gui.sequenced_gearshift.speed.back": "Prędkość wejściowa, odwrotnie", - "create.gui.sequenced_gearshift.speed.back_fast": "Podwójna prędkość, odwrotnie", - - "create.schematicAndQuill.dimensions": "Wielkość schematu: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Ustawiono pierwszą pozycję.", - "create.schematicAndQuill.secondPos": "Ustawiono drugą pozycję.", - "create.schematicAndQuill.noTarget": "Trzymaj [Ctrl], aby zaznaczyć bloki powietrza.", - "create.schematicAndQuill.abort": "Usunięto zaznaczenie.", - "create.schematicAndQuill.title": "Nazwa schematu:", - "create.schematicAndQuill.convert": "Zapisz i wyślij natychmiastowo", - "create.schematicAndQuill.fallbackName": "Nowy schemat", - "create.schematicAndQuill.saved": "Zapisano jako %1$s", - - "create.schematic.invalid": "[!] Nieprawidłowy przedmiot - użyj stołu do planowania", - "create.schematic.position": "Pozycja", - "create.schematic.rotation": "Obrót", - "create.schematic.rotation.none": "Brak", - "create.schematic.rotation.cw90": "Zgodnie z zegarem 90", - "create.schematic.rotation.cw180": "Zgodnie z zegarem 180", - "create.schematic.rotation.cw270": "Zgodnie z zegarem 270", - "create.schematic.mirror": "Odbij", - "create.schematic.mirror.none": "Brak", - "create.schematic.mirror.frontBack": "Przód-tył", - "create.schematic.mirror.leftRight": "Prawo-lewo", - "create.schematic.tool.deploy": "Pozycja", - "create.schematic.tool.move": "Przesuń XZ", - "create.schematic.tool.movey": "Przesuń Y", - "create.schematic.tool.rotate": "Obróć", - "create.schematic.tool.print": "Drukuj", - "create.schematic.tool.flip": "Odbij", - "create.schematic.tool.deploy.description.0": "Przesuwa strukturę na pozycję.", - "create.schematic.tool.deploy.description.1": "Kliknij PPM na ziemię, aby postawić.", - "create.schematic.tool.deploy.description.2": "Trzymaj [Ctrl], aby zaznaczyć w określonej odległości.", - "create.schematic.tool.deploy.description.3": "[Ctrl]+Przewijanie, aby zmienić dystans", - "create.schematic.tool.move.description.0": "Przesuwa schemat poziomo.", - "create.schematic.tool.move.description.1": "Wskaż na schemat i [Ctrl]+Przewijaj, aby popchnąć.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Przesuwa schemat pionowo.", - "create.schematic.tool.movey.description.1": "[Ctrl]+Przewijanie, aby przesunąć w górę/dół.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Obraca schemat wokół jego środka.", - "create.schematic.tool.rotate.description.1": "[Ctrl]+Przewijanie, aby obrócić o 90 stopni.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Natychmiastowo stawia strukturę w świecie.", - "create.schematic.tool.print.description.1": "Kliknij PPM, aby potwierdzić ustawienie w obecnej pozycji.", - "create.schematic.tool.print.description.2": "Ta funkcja jest tylko dla trybu kreatywnego.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Odbija schemat w stronę, w jakiej wskazałeś.", - "create.schematic.tool.flip.description.1": "Wskaż na schemat [Ctrl]+Przewijaj, aby odbić", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Synchronizacja...", - "create.schematics.uploadTooLarge": "Twój schemat przekracza limity ustanowione przez serwer.", - "create.schematics.maxAllowedSize": "Maksymalna wielkość schematu to:", - - "create.gui.schematicTable.refresh": "Odśwież pliki", - "create.gui.schematicTable.open_folder": "Otwórz folder", - "create.gui.schematicTable.title": "Stół do planowania", - "create.gui.schematicTable.availableSchematics": "Dostępne schematy", - "create.gui.schematicTable.noSchematics": "Brak zapisanych schematów", - "create.gui.schematicTable.uploading": "Wysyłanie...", - "create.gui.schematicTable.finished": "Wysyłanie zakończone!", - "create.gui.schematicannon.title": "Schematoarmata", - "create.gui.schematicannon.listPrinter": "Drukowanie listy", - "create.gui.schematicannon.gunpowderLevel": "Ilość prochu: %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Pozostałe wystrzały: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Wliczając zapas: %1$s", - "create.gui.schematicannon.optionEnabled": "Obecnie włączone", - "create.gui.schematicannon.optionDisabled": "Obecnie wyłączone\n", - "create.gui.schematicannon.showOptions": "Pokaż ustawienia drukowania", - "create.gui.schematicannon.option.dontReplaceSolid": "Nie zastępuj stałych bloków", - "create.gui.schematicannon.option.replaceWithSolid": "Zastępuj stałe stałymi", - "create.gui.schematicannon.option.replaceWithAny": "Zastępuj stałe dowolnymi", - "create.gui.schematicannon.option.replaceWithEmpty": "Zastępuj stałe pustymi", - "create.gui.schematicannon.option.skipMissing": "Pomijaj brakujące bloki", - "create.gui.schematicannon.option.skipTileEntities": "Chroń byty bloków", - "create.gui.schematicannon.slot.gunpowder": "Dodaj prochu, aby załadować armatę", - "create.gui.schematicannon.slot.listPrinter": "Daj tu książki, aby wydrukować listę", - "create.gui.schematicannon.slot.schematic": "Daj tu swój schemat. Upewnij się, że jest postawiony w odpowiednim miejscu.", - "create.gui.schematicannon.option.skipMissing.description": "Jeśli armata nie znajdzie wymaganego bloku, przejdzie w następne miejsce", - "create.gui.schematicannon.option.skipTileEntities.description": "Armata będzie unikać zastępowania bloków przechowujących dane, takich jak skrzynie.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Armata nigdy nie będzie zastępować jakichkolwiek stałych bloków, jedynie nie-stałe i powietrze.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Armata będzie zastępować stałe bloki jedynie, jeśli schemat zawiera stały blok w tym miejscu.", - "create.gui.schematicannon.option.replaceWithAny.description": "Armata będzie zastępować stałe bloki jedynie, jeśli schemat zawiera dowolny blok w tym miejscu.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Armata usunie wszystkie bloki, wliczając te zastępowane przez powietrze.", - - "create.schematicannon.status.idle": "Niepracująca", - "create.schematicannon.status.ready": "Gotowa", - "create.schematicannon.status.running": "Działająca", - "create.schematicannon.status.finished": "Ukończone", - "create.schematicannon.status.paused": "Wstrzymana", - "create.schematicannon.status.stopped": "Zatrzymana", - "create.schematicannon.status.noGunpowder": "Koniec prochu", - "create.schematicannon.status.targetNotLoaded": "Cel nie jest załadowany", - "create.schematicannon.status.targetOutsideRange": "Cel jest za daleko", - "create.schematicannon.status.searching": "Szukanie", - "create.schematicannon.status.skipping": "Pomijanie", - "create.schematicannon.status.missingBlock": "Brakujący przedmiot:", - "create.schematicannon.status.placing": "Stawianie", - "create.schematicannon.status.clearing": "Usuwanie bloków", - "create.schematicannon.status.schematicInvalid": "Nieprawidłowy schemat", - "create.schematicannon.status.schematicNotPlaced": "Schemat nieustawiony", - "create.schematicannon.status.schematicExpired": "Schemat wygasł", - - "create.materialChecklist": "Lista materiałów", - "create.materialChecklist.blocksNotLoaded": "* Zastrzeżenie *\\n\\n Lista materiałów może być  niedokładna, bo znaczące Chunki nie są załadowane.", - - "create.gui.filter.deny_list": "Lista zabroniona", - "create.gui.filter.deny_list.description": "Przedmioty są przepuszczane, jeśli NIE pasują do żadnego z powyższych. Pusta lista przepuszcza wszystko.", - "create.gui.filter.allow_list": "Lista dozwolona", - "create.gui.filter.allow_list.description": "Przedmioty są przepuszczane, jeśli pasują do któregoś z powyższych. Pusta lista odrzuca wszystko", - "create.gui.filter.respect_data": "Bierz dane pod uwagę", - "create.gui.filter.respect_data.description": "Przedmioty pasują jedynie, jeśli ich wytrzymałość, zaklęcia i inne właściwości również pasują.", - "create.gui.filter.ignore_data": "Ignoruj dane", - "create.gui.filter.ignore_data.description": "Przedmioty pasują  pomimo ich właściwości.", - - "create.item_attributes.placeable": "jest stawialny", - "create.item_attributes.placeable.inverted": "nie jest stawialny", - "create.item_attributes.consumable": "jadalny", - "create.item_attributes.consumable.inverted": "niejadalny", - "create.item_attributes.smeltable": "może zostać przepalony", - "create.item_attributes.smeltable.inverted": "nie może zostać przepalony", - "create.item_attributes.washable": "może zostać opłukany", - "create.item_attributes.washable.inverted": "nie może zostać opłukany", - "create.item_attributes.smokable": "może być wędzony", - "create.item_attributes.smokable.inverted": "nie może być wędzony", - "create.item_attributes.crushable": "może być rozkruszony", - "create.item_attributes.crushable.inverted": "nie może być rozkruszony", - "create.item_attributes.blastable": "może być stopiony w piecu hutniczym", - "create.item_attributes.blastable.inverted": "nie może być stopiony w piecu hutniczym", - "create.item_attributes.enchanted": "jest zaklęty", - "create.item_attributes.enchanted.inverted": "nie jest zaklęty", - "create.item_attributes.damaged": "jest uszkodzony", - "create.item_attributes.damaged.inverted": "nie jest uszkodzony", - "create.item_attributes.badly_damaged": "jest silnie uszkodzony", - "create.item_attributes.badly_damaged.inverted": "nie jest silnie uszkodzony", - "create.item_attributes.not_stackable": "nie może być grupowany", - "create.item_attributes.not_stackable.inverted": "może być grupowany", - "create.item_attributes.equipable": "może zostać założony", - "create.item_attributes.equipable.inverted": "nie może zostać założony", - "create.item_attributes.furnace_fuel": "jest paliwem dla pieca", - "create.item_attributes.furnace_fuel.inverted": "nie jest paliwem dla pieca", - "create.item_attributes.in_tag": "posiada znacznik %1$s", - "create.item_attributes.in_tag.inverted": "nie posiada znacznika %1$s", - "create.item_attributes.in_item_group": "jest w grupie \"%1$s\"", - "create.item_attributes.in_item_group.inverted": "nie jest w grupie \"%1$s\"", - "create.item_attributes.added_by": "dodany przez %1$s", - "create.item_attributes.added_by.inverted": "niedodany przez %1$s", - "create.item_attributes.has_enchant": "posiada zaklęcie %1$s", - "create.item_attributes.has_enchant.inverted": "nie posiada zaklęcia %1$s", - "create.item_attributes.color": "jest zafarbowane, kolor %1$s", - "create.item_attributes.color.inverted": "nie jest zafarbowane, kolor %1$s", - "create.item_attributes.max_enchanted": "jest zaklęte na maksymalny poziom", - "create.item_attributes.max_enchanted.inverted": "nie jest zaklęte na maksymalny poziom", - "create.item_attributes.has_fluid": "zawiera %1$s", - "create.item_attributes.has_fluid.inverted": "nie zawiera %1$s", - "create.item_attributes.has_name": "posiada nazwę %1$s", - "create.item_attributes.has_name.inverted": "nie posiada nazwy %1$s", - "create.item_attributes.book_author": "autorem jest %1$s", - "create.item_attributes.book_author.inverted": "autorem nie jest %1$s", - "create.item_attributes.book_copy_original": "jest oryginałem", - "create.item_attributes.book_copy_original.inverted": "nie jest oryginałem", - "create.item_attributes.book_copy_first": "jest kopią oryginału", - "create.item_attributes.book_copy_first.inverted": "nie jest kopią oryginału", - "create.item_attributes.book_copy_second": "jest kopią kopii", - "create.item_attributes.book_copy_second.inverted": "nie jest kopią kopii", - "create.item_attributes.book_copy_tattered": "jest postrzępiona", - "create.item_attributes.book_copy_tattered.inverted": "nie jest postrzępiona", - "create.item_attributes.astralsorcery_crystal": "posiada właściwości kryształu %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "nie posiada właściwości kryształu %1$s", - "create.item_attributes.astralsorcery_constellation": "jest dopasowany do %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "nie jest dopasowany do %1$s", - "create.item_attributes.astralsorcery_perk_gem": "posiada dodatkową właściwość %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "nie posiada dodatkowej właściwości %1$s", - "create.item_attributes.astralsorcery_amulet": "ulepsza %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "nie ulepsza %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "Brak wybranych właściwości", - "create.gui.attribute_filter.selected_attributes": "Wybrane właściwości:", - "create.gui.attribute_filter.add_attribute": "Dodaj właściwość do listy ", - "create.gui.attribute_filter.add_inverted_attribute": "Dodaj przeciwną właściwość do listy", - "create.gui.attribute_filter.allow_list_disjunctive": "Lista dozwolona (dowolny)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Przedmioty są przepuszczane jedynie, jeśli posiada dowolny z wybranych właściwości.", - "create.gui.attribute_filter.allow_list_conjunctive": "Lista dozwolona (wszystkie)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Przedmioty są przepuszczane jedynie, jeśli posiada WSZYSTKIE z wybranych właściwości.", - "create.gui.attribute_filter.deny_list": "Lista zabroniona", - "create.gui.attribute_filter.deny_list.description": "Przedmioty są przepuszczane jedynie, jeśli nie posiadają ŻADNEGO z wybranych właściwości.", - "create.gui.attribute_filter.add_reference_item": "Dodaj przedmiot źródłowy", - - "create.tooltip.holdForDescription": "Przytrzymaj [%1$s], aby zobaczyć podsumowanie", - "create.tooltip.holdForControls": "Przytrzymaj [%1$s], aby zobaczyć sterowanie", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Wymagana prędkość: %1$s", - "create.tooltip.speedRequirement.none": "Brak", - "create.tooltip.speedRequirement.medium": "Umiarkowana", - "create.tooltip.speedRequirement.high": "Wysoka", - "create.tooltip.stressImpact": "Wpływ na obciążenie: %1$s", - "create.tooltip.stressImpact.low": "Niski", - "create.tooltip.stressImpact.medium": "Umiarkowany\n", - "create.tooltip.stressImpact.high": "Wysoki", - "create.tooltip.stressImpact.overstressed": "Przeciążenie", - "create.tooltip.capacityProvided": "Odporność na obciążenie: %1$s", - "create.tooltip.capacityProvided.low": "Niska", - "create.tooltip.capacityProvided.medium": "Średnia", - "create.tooltip.capacityProvided.high": "Wysoka", - "create.tooltip.generationSpeed": "Wytwarza %1$s %2$s", - "create.tooltip.analogStrength": "Siła analogowa: %1$s/15", - - "create.mechanical_arm.extract_from": "Wyciągaj przedmioty z %1$s", - "create.mechanical_arm.deposit_to": "Wkładaj przedmioty do %1$s", - "create.mechanical_arm.summary": "Mechaniczne ramię ma %1$s wejść i %2$s wyjść.", - "create.mechanical_arm.points_outside_range": "Usunięto %1$s wybranych punktów interakcji z powodu limitów zasięgu", - - "create.weighted_ejector.target_set": "Wybrano cel", - "create.weighted_ejector.target_not_valid": "Wyrzuca do  przylegających bloków (cel był nieprawidłowy)", - "create.weighted_ejector.no_target": "Wyrzuca do  przylegających bloków (nie wybrano celu)", - "create.weighted_ejector.targeting": "Wyrzuca do [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Wielkość wyrzucanego stosu", - - "create.logistics.when_multiple_outputs_available": "Kiedy wybrano wiele wyjść", - - "create.mechanical_arm.selection_mode.round_robin": "Dookoła", - "create.mechanical_arm.selection_mode.forced_round_robin": "Dookoła (wymuszone)", - "create.mechanical_arm.selection_mode.prefer_first": "Preferuj pierwszy cel", - - "create.tunnel.selection_mode.split": "Podziel", - "create.tunnel.selection_mode.forced_split": "Wymuś podział", - "create.tunnel.selection_mode.round_robin": "Dookoła", - "create.tunnel.selection_mode.forced_round_robin": "Dookoła (wymuszone)", - "create.tunnel.selection_mode.prefer_nearest": "Preferuj najbliższe", - "create.tunnel.selection_mode.randomize": "Losowo", - "create.tunnel.selection_mode.synchronize": "Synchronizuj wejścia", - - "create.tooltip.chute.header": "Informacja o zsypie", - "create.tooltip.chute.items_move_down": "Przedmioty w dół", - "create.tooltip.chute.items_move_up": "Przedmioty w górę", - "create.tooltip.chute.no_fans_attached": "Brak przyłączonych wiatraków", - "create.tooltip.chute.fans_push_up": "Wiatraki pchają od dołu", - "create.tooltip.chute.fans_push_down": "Wiatraki pchają od góry", - "create.tooltip.chute.fans_pull_up": "Wiatraki ciągną od góry", - "create.tooltip.chute.fans_pull_down": "Wiatraki ciągną od dołu", - "create.tooltip.chute.contains": "Zawiera: %1$s x%2$s", - - "create.hint.hose_pulley.title": "Niewyczerpany zapas", - "create.hint.hose_pulley": "Wybrane zbiornik cieczy jest uznany za nieskończony", - "create.hint.mechanical_arm_no_targets.title": "Brak celi", - "create.hint.mechanical_arm_no_targets": "Wygląda na to, że żadne _cele_ nie zostały przypisane do tego _mechanicznego_ _ramienia_. Wybierz taśmociągi, składnice, lejki i inne bloki _klikając_ na nie _PPM_, trzymając w _ręce_ _mechaniczne_ _ramię_", - "create.hint.empty_bearing.title": "Aktualizuj łożysko", - "create.hint.empty_bearing": "_Kliknij_ na łożysko _PPM_ pustą ręką, aby _przyczepić_ do niego strukturę zbudowaną z przodu.", - "create.hint.full_deployer.title": "Nadmiar przedmiotów w aplikatorze", - "create.hint.full_deployer": "Wygląda na to, że ten _aplikator_ zawiera _nadmiar_ _przedmiotów_, które muszą zostać _wyciągnięte_. Użyj _leji_, _lejków_ lub innych sposobów, aby uwolnić od przepełnienia.", - - "create.gui.config.overlay1": "Cześć :)", - "create.gui.config.overlay2": "To jest przykładowa nakładka", - "create.gui.config.overlay3": "Kliknij lub przeciągnij myszką", - "create.gui.config.overlay4": "aby przesunąć ten podgląd", - "create.gui.config.overlay5": "Naciśnij ESC, aby opuścić ten ekran", - "create.gui.config.overlay6": "i zapisać nową pozycję", - "create.gui.config.overlay7": "Uruchom \"/create overlay reset\"", - "create.gui.config.overlay8": "aby zresetować pozycję", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Obecne opóźnienie serwera to %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Serwer jest teraz opóźniony o %s >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Serwer wrócił do standardowej prędkości :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: Użyj \"/killtps stop\", aby przywrócić serwer do standardowej prędkości", - "create.command.killTPSCommand.status.usage.1": "[Create]: Użyj \"/killtps start\", aby sztucznie spowolnić serwer\n", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "Ta maszyna w wagoniku jest zbyt duża, aby ją podnieść", - - - "_": "->------------------------] Napisy dla niesłyszących [------------------------<-", - - "create.subtitle.cogs": "Koła zębate terkoczą", - "create.subtitle.slime_added": "Szlam plaska", - "create.subtitle.contraption_disassemble": "Maszyna staje", - "create.subtitle.wrench_rotate": "Klucz skrzypi", - "create.subtitle.mixing": "Dźwięki mieszania", - "create.subtitle.mechanical_press_activation_belt": "Mechaniczna prasa stuka", - "create.subtitle.worldshaper_place": "Kształter strzela", - "create.subtitle.deployer_polish": "Aplikator poleruje", - "create.subtitle.depot_slide": "Przedmiot ślizga się", - "create.subtitle.deny": "Dźwięk odmowy", - "create.subtitle.blaze_munch": "Płomyk szczęśliwie przeżuwa", - "create.subtitle.schematicannon_launch_block": "Schematoarmata strzela", - "create.subtitle.funnel_flap": "Lejek trzepocze", - "create.subtitle.copper_armor_equip": "Sprzęt do nurkowania pobrzękuje", - "create.subtitle.schematicannon_finish": "Schematoarmata skończyła", - "create.subtitle.scroll_value": "Kliknięcie", - "create.subtitle.mechanical_press_activation": "Mechaniczna prasa się uruchamia", - "create.subtitle.contraption_assemble": "Maszyna przesuwa się", - "create.subtitle.crafter_craft": "Mechaniczny stół rzemieślniczy konstruuje", - "create.subtitle.cranking": "Ręczna korba obraca się", - "create.subtitle.crafter_click": "Mechaniczny stół rzemieślniczy stuka", - "create.subtitle.wrench_remove": "Komponent niszczy się", - "create.subtitle.depot_plop": "Przedmiot ląduje", - "create.subtitle.confirm": "Dźwięk potwierdzenia", - - - "_": "->------------------------] Opisy Przedmiotów [------------------------<-", - - "item.create.example_item.tooltip": "PRZYKŁADOWY PRZEDMIOT (jedynie znacznik, że ten dymek istnieje)", - "item.create.example_item.tooltip.summary": "Krótki opis przedmiotu. _Podkreślenia_, ha, podkreślają termin.", - "item.create.example_item.tooltip.condition1": "Kiedy to", - "item.create.example_item.tooltip.behaviour1": "Wtedy ten przedmiot to robi (zachowania pokazują się przy Shifcie)", - "item.create.example_item.tooltip.condition2": "A kiedy to", - "item.create.example_item.tooltip.behaviour2": "Możesz dodać tak wiele zachowań jak chcesz", - "item.create.example_item.tooltip.control1": "Kiedy przyciśnięto Ctrl", - "item.create.example_item.tooltip.action1": "Wyświetla się sterowanie.", - - "block.create.wooden_bracket.tooltip": "DREWNIANY WSPORNIK", - "block.create.wooden_bracket.tooltip.summary": "_Udekoruj_ swoje _wały_, _koła zębate_ i _rury_ drewnianą i przytulną podporą.", - - "block.create.metal_bracket.tooltip": "METALOWY WSPORNIK", - "block.create.metal_bracket.tooltip.summary": "_Udekoruj_ swoje _wały_, _koła zębate_ i _rury_ wytrzymałą, przemysłową podporą.", - - "block.create.copper_casing.tooltip": "MIEDZIANA OBUDOWA", - "block.create.copper_casing.tooltip.summary": "Solidna obudowa dla maszyn, z wieloma zastosowaniami. Przydatna w dekoracji.", - "block.create.copper_casing.tooltip.condition1": "Kiedy użyta na rurze", - "block.create.copper_casing.tooltip.behaviour1": "_Przykrywa_ rurę _miedzianą obudową_.  Połączenia izolowanych rur zostaną _unieruchomione_ i nie będą reagować na zmiany w ich otoczeniu.", - - "block.create.encased_fluid_pipe.tooltip": "IZOLOWANA RURA", - "block.create.encased_fluid_pipe.tooltip.summary": "Rura _przykryta_ miedzianą obudową.", - - "block.create.seat.tooltip": "SIEDZENIE", - "block.create.seat.tooltip.summary": "Usiądź i ciesz się jazdą! Przyczepi gracza do _ruchomej maszyny_.  Również świetne do tworzenia stojących mebli! Dostępne w wielu kolorach.", - "block.create.seat.tooltip.condition1": "Kliknięcie PPM na siedzenie", - "block.create.seat.tooltip.behaviour1": "Sadza gracza na _siedzeniu_. Naciśnij lewy Shift, aby opuścić _siedzenie_.", - - "item.create.blaze_cake.tooltip": "PŁOMIENNE CIASTO", - "item.create.blaze_cake.tooltip.summary": "Pyszna przekąska dla Twoich cięzko pracujących _płomiennych palników_. Rozpala je wszystkie!", - - "block.create.fluid_pipe.tooltip": "RURA", - "block.create.fluid_pipe.tooltip.summary": "Używana do transportu _płynów_. _Mechaniczna pompa_ jest potrzebna, aby wprawić płyny w ruch.", - "block.create.fluid_pipe.tooltip.condition1": "Transport płynów", - "block.create.fluid_pipe.tooltip.behaviour1": "Może połączyć się ze pojemnikami, takimi jak _tygle_ czy _zbiorniki_. Odsłonięte zakończenia rur mogą osuszać lub wypełniać płynami. Uważaj na przecieki!", - "block.create.fluid_pipe.tooltip.condition2": "Kliknięcie PPM z użyciem klucza", - "block.create.fluid_pipe.tooltip.behaviour2": "Tworzy w rurze _okno_, jeśli jest to możliwe.", - - "block.create.hose_pulley.tooltip": "KRĄŻEK Z WĘŻEM", - "block.create.hose_pulley.tooltip.summary": "Używane do _osuszania_ lub _wypełniania_ płynami.", - "block.create.hose_pulley.tooltip.condition1": "Kiedy zasilone siłą obrotową", - "block.create.hose_pulley.tooltip.behaviour1": "_Podnosi_ lub _opuszcza_ wąż; pozycja węża określa, do jakiej _wysokości_ będzie on działał.", - "block.create.hose_pulley.tooltip.condition2": "Kiedy płyny wyciągane są z węża", - "block.create.hose_pulley.tooltip.behaviour2": "Rozpoczyna _osuszanie_ bloków ze zbiornika, do którego opuszczono wąż. Bardzo duże zbiorniki będą uznawane za _nieskończone_.", - "block.create.hose_pulley.tooltip.condition3": "Kiedy płyny pompowane są do węża\n", - "block.create.hose_pulley.tooltip.behaviour3": "Rozpoczyna _wypełnianie_ bloków płynem, aż do wysokości węża.", - - "block.create.fluid_tank.tooltip": "ZBIORNIK", - "block.create.fluid_tank.tooltip.summary": "_Składuje_ wszystkie Twoje ulubione _płyny_. Zmienia rozmiar wraz z wysokością i szerokością.", - "block.create.fluid_tank.tooltip.condition1": "Kliknięcie PPM kluczem", - "block.create.fluid_tank.tooltip.behaviour1": "Tworzy w zbiorniku _okno_, jeśli jest to możliwe.", - - "block.create.creative_fluid_tank.tooltip": "KREATYWNY ZBIORNIK", - "block.create.creative_fluid_tank.tooltip.summary": "Ten _zbiornik_ pozwala na nieskończone powielanie każdego płynu. Zmienia rozmiar wraz z wysokością i szerokością.", - "block.create.creative_fluid_tank.tooltip.condition1": "Kiedy w zbiorniku", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Wszystko, co _wyciąga_ z tego zbiornika będzie dostarczać _nieskończoną ilość_ wybranego płynu. Płyny wpompowane do tego zbiornika będą niszczone.", - "block.create.creative_fluid_tank.tooltip.condition2": "Kliknięcie PPM kluczem", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Tworzy w zbiorniku _okno_, jeśli jest to możliwe.", - - "block.create.fluid_valve.tooltip": "ZAWÓR", - "block.create.fluid_valve.tooltip.summary": "Zatrzymuje przepływ płynu przez rurę", - "block.create.fluid_valve.tooltip.condition1": "Kontrola nad przepływem", - "block.create.fluid_valve.tooltip.behaviour1": "Zastosowanie _siły obrotu_ zamknie _zawór_, zatrzymując przepływ płynu. Odwróć kierunek siły obrotu, aby _otworzyć_ zawór.", - - "block.create.mechanical_pump.tooltip": "MECHANICZNA POMPA", - "block.create.mechanical_pump.tooltip.summary": "Pobiera _siłę obrotu_ i używa jej, aby pompować płyn przez _rurę_. Posiada maksymalny zasięg w obie strony. (domyślnie 16 bloków)", - "block.create.mechanical_pump.tooltip.condition1": "Przepływ", - "block.create.mechanical_pump.tooltip.behaviour1": "Zastosowanie _siły obrotu_ wytwarza ciśnienie, które przepycha _płyn_ przez system _rur_. Odwróć kierunek siły obrotu, aby odwrócić kierunek przepływu.", - "block.create.mechanical_pump.tooltip.control1": "Kliknięcie PPM kluczem", - "block.create.mechanical_pump.tooltip.action1": "Odwraca kierunek _pompowania_.", - - "block.create.smart_fluid_pipe.tooltip": "INTELIGENTA RURA", - "block.create.smart_fluid_pipe.tooltip.summary": "Rura z _filtrem_. Może wybrać, jakie płyny mogą zostać przepuszczone.", - "block.create.smart_fluid_pipe.tooltip.condition1": "Kiedy płyny są wepchnięte", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Inteligentne rury otrzymujące płyn, który nie pasuje do filtra, zablokują przepływ.", - "block.create.smart_fluid_pipe.tooltip.condition2": "Kiedy przylegający do zbiornika", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Inteligentne rury _rozpoczynające_ przepływ z dowolnego zbiornika będą wyciągać jedynie te płyny, które _pasują_ do _filtra_.", - - "block.create.spout.tooltip": "KANISTER", - "block.create.spout.tooltip.summary": "Przydatny do _napełniania_ płynami.", - "block.create.spout.tooltip.condition1": "Transport płynów", - "block.create.spout.tooltip.behaviour1": "Kiedy _pojemnik_, taki jak _wiaderko_ lub _butelka_ jest położona pod spodem, kanister spróbuje napełnić go przechowywanym wewnątrz _płynem_.", - "block.create.spout.tooltip.condition2": "Automatyzacja płynów", - "block.create.spout.tooltip.behaviour2": "Kanister postawiony nad _taśmociągiem_ lub _składnicą_ automatycznie zareaguje na _pojemniki_ przechodzące pod spodem.", - - "block.create.item_drain.tooltip": "ODPŁYW", - "block.create.item_drain.tooltip.summary": "Metalowa kratka do opróżniania _pojemników_ z _płynami_.", - "block.create.item_drain.tooltip.condition1": "Transport płynów", - "block.create.item_drain.tooltip.behaviour1": "Kiedy _pojemnik_, taki jak _wiaderko_ lub _butelka_ jest wsadzony od boku, odpływ spróbuje opróżnić go do własnego zbiornika. Przedmiot będzie następnie wyrzucony drugą stroną.", - - "item.create.wand_of_symmetry.tooltip": "RÓŻDŻKA SYMETRII", - "item.create.wand_of_symmetry.tooltip.summary": "Idealnie odbija lustrzanie bloki wzdłuż wybranych płaszczyzn.", - "item.create.wand_of_symmetry.tooltip.condition1": "Kiedy w pasku szybkiego wyboru", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Pozostaje aktywna", - "item.create.wand_of_symmetry.tooltip.control1": "Kliknięcie PPM na ziemię", - "item.create.wand_of_symmetry.tooltip.action1": "_Tworzy_ lub _przenosi_ lustro", - "item.create.wand_of_symmetry.tooltip.control2": "Kliknięcie PPM w powietrzu", - "item.create.wand_of_symmetry.tooltip.action2": "_Usuwa_ aktywne lustro", - "item.create.wand_of_symmetry.tooltip.control3": "Kliknięcie PPM w czasie skradania", - "item.create.wand_of_symmetry.tooltip.action3": "Otwiera _ustawienia_.", - - "item.create.handheld_blockzapper.tooltip": "RĘCZNY ODKŁADACZ", - "item.create.handheld_blockzapper.tooltip.summary": "Nowatorski gadżet umożliwiający stawianie lub zamianę bloków na odległość.", - "item.create.handheld_blockzapper.tooltip.control1": "Kliknięcie LPM na blok", - "item.create.handheld_blockzapper.tooltip.action1": "Przypisuje do narzędzia wybrany blok.", - "item.create.handheld_blockzapper.tooltip.control2": "Kliknięcie PPM na blok", - "item.create.handheld_blockzapper.tooltip.action2": "_Stawia_ lub _zamienia_ docelowy blok.", - "item.create.handheld_blockzapper.tooltip.control3": "Kliknięcie PPM w czasie skradania\n", - "item.create.handheld_blockzapper.tooltip.action3": "Otwiera _ustawienia_.", - - "item.create.handheld_worldshaper.tooltip": "RĘCZNY KSZTAŁTOWACZ", - "item.create.handheld_worldshaper.tooltip.summary": "Poręczne narzędzie do tworzenia _krajobrazów_ i _cech terenu_.", - "item.create.handheld_worldshaper.tooltip.control1": "Kliknięcie LPM na blok", - "item.create.handheld_worldshaper.tooltip.action1": "Przypisuje do narzędzia wybrany blok.", - "item.create.handheld_worldshaper.tooltip.control2": "Kliknięcie PPM na blok", - "item.create.handheld_worldshaper.tooltip.action2": "Stosuje obecnie wybrany _pędzel_ i _narzędzie_ w docelowej lokalizacji.", - "item.create.handheld_worldshaper.tooltip.control3": "Kliknięcie PPM w czasie skradania", - "item.create.handheld_worldshaper.tooltip.action3": "Otwiera _ustawienia_.", - - "item.create.tree_fertilizer.tooltip": "NAWÓZ DO DRZEW", - "item.create.tree_fertilizer.tooltip.summary": "Silna kombinacja minerałów odpowiednich do nawożenia pospolitych gatunków drzew", - "item.create.tree_fertilizer.tooltip.condition1": "Kiedy użyto na sadzonce", - "item.create.tree_fertilizer.tooltip.behaviour1": "Przyspiesza wzrost drzew, _pomimo dostępnej przestrzeni_.", - - "item.create.deforester.tooltip": "WYLESIACZ", - "item.create.deforester.tooltip.summary": "_Radioaktywna siekiera_ pozwalająca na ścinanie drzew w ułamku sekundy.", - - "item.create.extendo_grip.tooltip": "WYDŁUŻONY CHWYTAK", - "item.create.extendo_grip.tooltip.summary": "Mocno _wydłuża zasięg_ rąk posiadacza.", - "item.create.extendo_grip.tooltip.condition1": "Kiedy w drugiej ręce", - "item.create.extendo_grip.tooltip.behaviour1": "_Wydłuża zasięg_ głównej ręki.", - - "item.create.filter.tooltip": "FILTR", - "item.create.filter.tooltip.summary": "_Kontroluje_ wejścia i wyjścia urządzeń logistycznych z _większą precyzją_, przypasowując przedmioty do listy przedmiotów zawartej w filtrze lub wielu filtrach schowanych jeden w drugi.", - "item.create.filter.tooltip.condition1": "Kiedy w slocie na filtr", - "item.create.filter.tooltip.behaviour1": "_Kontroluje_ przepływ przedmiotów według jego _konfiguracji_.", - "item.create.filter.tooltip.condition2": "Kliknięcie PPM", - "item.create.filter.tooltip.behaviour2": "Otwiera _ustawienia_.", - - "item.create.attribute_filter.tooltip": "FILTR ATRYBUTOWY", - "item.create.attribute_filter.tooltip.summary": "_Kontroluje_ wejścia i wyjścia urządzeń logistycznych z _większą precyzją_, przypasowując przedmioty do listy właściwości przedmiotów zawartej w filtrze.", - "item.create.attribute_filter.tooltip.condition1": "Kiedy w slocie na filtr", - "item.create.attribute_filter.tooltip.behaviour1": "_Kontroluje_ przepływ przedmiotów według jego _konfiguracji_.", - "item.create.attribute_filter.tooltip.condition2": "Kliknięcie PPM", - "item.create.attribute_filter.tooltip.behaviour2": "Otwiera _ustawienia_.", - - "item.create.empty_schematic.tooltip": "PUSTY SCHEMAT", - "item.create.empty_schematic.tooltip.summary": "Używany, jako składnik do receptur i do pisania w _stole do planowania_.", - - "item.create.schematic.tooltip": "SCHEMAT", - "item.create.schematic.tooltip.summary": "Przechowuje strukturę do postawienia w świecie. Ustaw hologram według uznania i użyj _Schematoarmaty_, aby ją zbudować.", - "item.create.schematic.tooltip.condition1": "Kiedy w ręce", - "item.create.schematic.tooltip.behaviour1": "Może zostać _ustawiona_ z użyciem narzędzi wyświetlonych na ekranie.", - "item.create.schematic.tooltip.control1": "Kliknięcie PPM w czasie skradania", - "item.create.schematic.tooltip.action1": "Otwiera _ustawienia_.", - - "item.create.schematic_and_quill.tooltip": "SCHEMAT Z PIÓREM", - "item.create.schematic_and_quill.tooltip.summary": "Używany do zapisania struktury z Twojego świata do pliku .nbt", - "item.create.schematic_and_quill.tooltip.condition1": "Krok 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Zaznacz dwa rogi prawym przyciskiem myszy.", - "item.create.schematic_and_quill.tooltip.condition2": "Krok 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_[Ctrl]+Przewijaj_ patrząc się na ściany, aby dostosować rozmiar. Kliknij znowu PPM, aby zapisać.", - "item.create.schematic_and_quill.tooltip.control1": "Kliknięcie PPM", - "item.create.schematic_and_quill.tooltip.action1": "Wybierz róg/potwierdź zapisanie.", - "item.create.schematic_and_quill.tooltip.control2": "Trzymane w ręce + Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Zaznacz rogi _w powietrzu_. _Przewijaj_, aby dostosować dystans.", - "item.create.schematic_and_quill.tooltip.control3": "Kliknięcie PPM w czasie skradania", - "item.create.schematic_and_quill.tooltip.action3": "_Resetuje_ i usuwa zaznaczenie.", - - "block.create.schematicannon.tooltip": "SCHEMATOARMATA", - "block.create.schematicannon.tooltip.summary": "Strzela blokami, aby odtworzyć wybrany schemat w świecie. Zużywa przedmioty z sąsiadujących bloków, potrzebuje _prochu_ jako paliwo.", - "block.create.schematicannon.tooltip.condition1": "Kliknięcie PPM", - "block.create.schematicannon.tooltip.behaviour1": "Otwiera _interfejs_.", - - "block.create.schematic_table.tooltip": "STÓŁ DO PLANOWANIA", - "block.create.schematic_table.tooltip.summary": "Przypisuje zapisane schematy do _pustego schematu_.", - "block.create.schematic_table.tooltip.condition1": "Kiedy włożono pusty schemat", - "block.create.schematic_table.tooltip.behaviour1": "Pobiera wybrany plik z Twojego folderu ze schematami", - - "item.create.goggles.tooltip": "GOGLE", - "item.create.goggles.tooltip.summary": "Para okularów służąca do rozszerzania Twojej wizji o _przydatne informacje_.", - "item.create.goggles.tooltip.condition1": "Kiedy założone", - "item.create.goggles.tooltip.behaviour1": "Pokazuje _kolorowe wskazówki_ odpowiadające _prędkości obrotu_ komponentu, jak i również ich _wpływ_ oraz _odporność na obciążenie_.", - "item.create.goggles.tooltip.condition2": "Patrząc na miernik", - "item.create.goggles.tooltip.behaviour2": "Pokazuje szczegółowe informacje na temat _prędkości_ lub _obciążenia_ systemu, do którego miernik jest podłączony.", - "item.create.goggles.tooltip.condition3": "Patrząc na zbiorniki", - "item.create.goggles.tooltip.behaviour3": "Pokazuje szczegółowe informacje na temat _pojemności_ zbiornika i wszelkich _płynów_ przechowywanych wewnątrz.", - - "item.create.wrench.tooltip": "KLUCZ", - "item.create.wrench.tooltip.summary": "Przydatne narzędzie do pracy z maszynami. Może być użyty do _obracania_, _rozbiórki_ i _konfiguracji_ komponentów.", - "item.create.wrench.tooltip.control1": "Kliknięcie PPM na ruchomy blok", - "item.create.wrench.tooltip.action1": "_Obraca_ komponenty do- lub od- strony, na którą kliknięto.", - "item.create.wrench.tooltip.control2": "Kliknięcie PPM w czasie skradania", - "item.create.wrench.tooltip.action2": "_Rozmontowuje_ komponenty i wkłada je z powrotem do _Twojego ekwipunku_.", - - "block.create.nozzle.tooltip": "DYSZA", - "block.create.nozzle.tooltip.summary": "Przyczep do przedniej części _izolowanego wiatraka_, aby rozprowadzić jego efekt na _wszystkie strony_.", - - "block.create.cuckoo_clock.tooltip": "ZEGAR Z KUKUŁKĄ", - "block.create.cuckoo_clock.tooltip.summary": "Kunsztowny wytwór do _dekoracji_ przestrzeni mieszkalnej i _mierzenia czasu_.", - "block.create.cuckoo_clock.tooltip.condition1": "Kiedy zasilony siłą obrotową", - "block.create.cuckoo_clock.tooltip.behaviour1": "Pokazuje _obecny czas_ i gra melodyjkę dwa razy dziennie. Aktywuje się raz w _południe_ i raz o zmierzchu, jak tylko _możliwy jest sen_.", - - "block.create.turntable.tooltip": "TALERZ OBROTOWY", - "block.create.turntable.tooltip.summary": "Zamienia _siłę obrotu_ na _chorobę lokomocyjną_.", - - "block.create.portable_fluid_interface.tooltip": "PRZENOŚNY INTERFEJS PŁYNÓW", - "block.create.portable_fluid_interface.tooltip.summary": "Przenośne miejsce wymiany służące do _transportu płynów_ z- i do _struktury_ przesuwanej przez tłok, łożysko, wagonik, lub krążek. Dwa interfejsy muszą być _skierowane w swoją stronę_ i być _od 1 do 2 bloków_ od siebie.", - "block.create.portable_fluid_interface.tooltip.condition1": "W czasie poruszania", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Współpracuje ze stojącymi _przenośnymi interfejsami magazynu_, aby przetransportować płyn z- lub do maszyny. Rury wpychające lub wyciągające ze _stojącego interfejsu_ będą działać na zbiorniki _bezpośrednio w maszynie_. Maszyna na chwile stanie, aby wymienić płyny.", - "block.create.portable_fluid_interface.tooltip.condition2": "Kiedy zasilony przez Redstone", - "block.create.portable_fluid_interface.tooltip.behaviour2": "Natychmiastowo _ucina_ jakiekolwiek aktywne połączenia.", - - "block.create.stockpile_switch.tooltip": "PRZEŁĄCZNIK ZAWARTOŚCIOWY", - "block.create.stockpile_switch.tooltip.summary": "Przełącza sygnał Redstone bazując na _ilości przedmiotów_ przechowywanych w sąsiadującym bloku. Może posiadać filtr. W odróżnieniu od _komparatora_, przełącznik zawartościowy pozwala na konfigurację _progów_, przy których sygnały są odwrotne.", - "block.create.stockpile_switch.tooltip.condition1": "Kliknięcie PPM", - "block.create.stockpile_switch.tooltip.behaviour1": "Otwiera _ustawienia_.", - - "block.create.content_observer.tooltip": "DETEKTOR ZAWARTOŚCI", - "block.create.content_observer.tooltip.summary": "_Wykrywa przedmioty_ zawarte w sąsiadującym _bloku_ lub _taśmociągu_, które pasują do ustalonego filtra. Kiedy obserwowany blok _zawiera_ ten przedmiot, detektor wyśle _sygnał Redstone_.", - - "block.create.adjustable_crate.tooltip": "REGULOWANA SKRZYNKA", - "block.create.adjustable_crate.tooltip.summary": "Ta skrzynia pozwala na _ręczną kontrolę_ jej pojemności. Może pomieścić do _16 stosów_ dowolnego przedmiotu. Działa z _komparatorami_.", - "block.create.adjustable_crate.tooltip.condition1": "Kliknięcie PPM", - "block.create.adjustable_crate.tooltip.behaviour1": "Otwiera _interfejs_.", - - "block.create.creative_crate.tooltip": "SKRZYNKA BEZ DNA", - "block.create.creative_crate.tooltip.summary": "Ta skrzynia pozwala na _nieskończone powielanie_ dowolnego przedmiotu. Postaw obok _Schematoarmaty_, aby usunąć wszelkie wymagania dotyczące materiałów.", - "block.create.creative_crate.tooltip.condition1": "Kiedy przedmiot jest w slocie na filtr", - "block.create.creative_crate.tooltip.behaviour1": "Bloki _wyciągające_ przedmioty z tego bloku będą miały _nieskończony zapas_ wybranego przedmiotu. Przedmioty włożone do tej skrzynki będą _usuwane_.", - - "block.create.controller_rail.tooltip": "TORY STERUJĄCE", - "block.create.controller_rail.tooltip.summary": "_Wielokierunkowy_ zasilany tor pozwalający na _dokładną kontrolę_ nad _prędkością wagonika_.", - "block.create.controller_rail.tooltip.condition1": "Kiedy zasilone przez Redstone", - "block.create.controller_rail.tooltip.behaviour1": "_Przyspiesza_ lub _spowalnia_ przejeżdżające _wagoniki_, bazując na sile sygnału. Przekazuje sygnał do sąsiadujących torów. Zasilenie dwóch połączonych torów innymi siłami sygnału spowoduje, że tory pomiędzy nimi będą miały stopniowo zmieniającą się siłę sygnału.", - - "item.create.sand_paper.tooltip": "PAPIER ŚCIERNY", - "item.create.sand_paper.tooltip.summary": "Szorstki papier używany do _polerowania_ materiałów. Może być automatycznie wykorzystywany z użyciem _aplikatora_.", - "item.create.sand_paper.tooltip.condition1": "Kiedy użyto", - "item.create.sand_paper.tooltip.behaviour1": "_Poleruje_ przedmioty trzymane w _drugiej ręce_ lub _leżące na ziemi_ w linii wzroku.", - - "item.create.builders_tea.tooltip": "HERBATKA BUDOWNICZEGO", - "item.create.builders_tea.tooltip.summary": "Idealny napój na początek dnia - _sycący_ i _motywujący_", - - "item.create.refined_radiance.tooltip": "ŚWIETLISTY MATERIAŁ", - "item.create.refined_radiance.tooltip.summary": "Chromatyczny materiał powstały z _absorbcji światła_.", - - "item.create.shadow_steel.tooltip": "MROCZNA STAL", - "item.create.shadow_steel.tooltip.summary": "Chromatyczny materiał powstały w _otchłani_.", - - "item.create.minecart_coupling.tooltip": "ŁĄCZNIK WAGONIKÓW", - "item.create.minecart_coupling.tooltip.summary": "_Łączy_ wszystkie Twoje _wagoniki_ lub _maszyny torowe_, tworząc majestatyczny pociąg.", - "item.create.minecart_coupling.tooltip.condition1": "Kiedy użyto na wagoniku", - "item.create.minecart_coupling.tooltip.behaviour1": "_Łączy_ dwa wagoniki, próbując utrzymać je w stałej odległości od siebie.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Praca w toku!", - "create.tooltip.randomWipDescription0": "Trzymać z dala od dzieci.", - "create.tooltip.randomWipDescription1": "Mała panda ginie za każdym razem, kiedy patrzysz na ten przedmiot. Za. Każdym. Razem.", - "create.tooltip.randomWipDescription2": "Używaj na własną odpowiedzialność.", - "create.tooltip.randomWipDescription3": "To nie ten przedmiot, którego szukasz, proszę się rozejść.", - "create.tooltip.randomWipDescription4": "Ten przedmiot ulegnie autodestrukcji za 10 sekund. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Uwierz mi, jest bezużyteczny.", - "create.tooltip.randomWipDescription6": "Używając tego przedmiotu, zgadzasz się na warunki umowy.", - "create.tooltip.randomWipDescription7": "Ten przedmiot chyba nie jest dla Ciebie. A może ten?", - "create.tooltip.randomWipDescription8": "Użyj tego i natychmiast będziesz tego żałował.", - - - "_": "->------------------------] Analizowanie [------------------------<-", - - "create.ponder.hold_to_ponder": "Przytrzymaj [%1$s], aby przeanalizować", - "create.ponder.subject": "Temat tej sceny", - "create.ponder.pondering": "Temat analizy:", - "create.ponder.identify_mode": "Tryb identyfikacji aktywny. Naciśnij [%1$s], aby wyłączyć", - "create.ponder.associated": "Powiązane hasła", - "create.ponder.close": "Zamknij", - "create.ponder.identify": "Identyfikacja", - "create.ponder.next": "Następna scena", - "create.ponder.previous": "Poprzednia scena", - "create.ponder.replay": "Powtórka", - "create.ponder.think_back": "Powrót", - "create.ponder.slow_text": "Komfortowe czytanie", - "create.ponder.shared.movement_anchors": "Z pomocą stelaży lub Super Glue, większe struktury mogą być przesuwane.", - "create.ponder.shared.rpm32": "32 Ob/min", - "create.ponder.shared.sneak_and": "Skradanie +", - "create.ponder.shared.storage_on_contraption": "Pojemniki przyłączone do maszyny będą podnosiły przedmioty automatycznie", - "create.ponder.shared.behaviour_modify_wrench": "To zachowanie może być zmodyfikowane przy pomocy klucza", - "create.ponder.shared.rpm8": "8 Ob/min", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "Źródło: 16 Ob/min", - "create.ponder.shared.rpm16": "16 Ob/min", - "create.ponder.tag.kinetic_sources": "Źródła siły obrotowej", - "create.ponder.tag.kinetic_sources.description": "Komponenty, które generują siłę obrotu", - "create.ponder.tag.contraption_actor": "Komponenty aktywne maszyn", - "create.ponder.tag.contraption_actor.description": "Komponenty, które posiadają specjalne zachowanie będąc podłączonymi do maszyny", - "create.ponder.tag.arm_targets": "Cele dla mechanicznego ramienia", - "create.ponder.tag.arm_targets.description": "Komponenty, które mogą być wybrane, jako wejście lub wyjście dla mechanicznego ramienia", - "create.ponder.tag.logistics": "Transport przedmiotów", - "create.ponder.tag.logistics.description": "Komponenty, które pomagają w transporcie przedmiotów", - "create.ponder.tag.movement_anchor": "Komponenty ruchome", - "create.ponder.tag.movement_anchor.description": "Komponenty, które pozwalają na tworzenie ruchomych maszyn, poruszając ją na wiele różnych sposobów.", - "create.ponder.tag.creative": "Tryb kreatywny", - "create.ponder.tag.creative.description": "Komponenty niedostępne na trybie przetrwania", - "create.ponder.tag.kinetic_relays": "Bloki obrotowe", - "create.ponder.tag.kinetic_relays.description": "Komponenty, które pomagają w przekazywaniu siły obrotowej w inne miejsca", - "create.ponder.tag.windmill_sails": "Bloki żaglo-podobne", - "create.ponder.tag.windmill_sails.description": "Bloki, które dokładają się do siły, z jaką obracają się łopaty maszyny wiatrakowej.", - "create.ponder.tag.contraption_assembly": "Bloki do tworzenia maszyn", - "create.ponder.tag.contraption_assembly.description": "Narzędzia i komponenty używane do konstrukcji ruchomych maszyn", - "create.ponder.tag.decoration": "Dekoracje", - "create.ponder.tag.decoration.description": "Komponenty używane głównie do celów estetycznych", - "create.ponder.tag.kinetic_appliances": "Urządzenia obrotowe", - "create.ponder.tag.kinetic_appliances.description": "Komponenty używające siły obrotowej", - "create.ponder.tag.redstone": "Komponenty logiczne", - "create.ponder.tag.redstone.description": "Komponenty przydatne w Redstonie", - "create.ponder.tag.fluids": "Manipulator płynów", - "create.ponder.tag.fluids.description": "Komponenty przydatne przy pracy z płynami", - - "create.ponder.adjustable_pulse_repeater.header": "Kontrola sygnałów z wykorzystaniem regulowanych przekaźników pulsu", - "create.ponder.adjustable_pulse_repeater.text_1": "Regulowane przekaźniki pulsu emitują krótki puls po opóźnieniu", - "create.ponder.adjustable_pulse_repeater.text_2": "Używając rolki w myszce można modyfikować opóźnienie", - "create.ponder.adjustable_pulse_repeater.text_3": "Opóźnienia mogą mieć nawet do 30 minut", - - "create.ponder.adjustable_repeater.header": "Kontrola sygnałów z wykorzystaniem regulowanych przekaźników\n", - "create.ponder.adjustable_repeater.text_1": "Regulowane przekaźniki zachowują się podobnie do zwykłych przekaźników", - "create.ponder.adjustable_repeater.text_2": "Ładują się przez określony czas...", - "create.ponder.adjustable_repeater.text_3": "...i stygną przez ten sam czas", - "create.ponder.adjustable_repeater.text_4": "Używając rolki w myszce można modyfikować czas ładowania", - "create.ponder.adjustable_repeater.text_5": "Czasy ładowania mogą mieć nawet do 30 minut", - - "create.ponder.analog_lever.header": "Kontrola sygnałów z wykorzystaniem dźwigni analogowej", - "create.ponder.analog_lever.text_1": "Dźwignie analogowe są kompaktowymi i dokładnymi źródłami sygnału Redstone", - "create.ponder.analog_lever.text_2": "Kliknij PPM, aby zwiększyć wysyłaną przez nie siłę sygnału ", - "create.ponder.analog_lever.text_3": "Kliknij PPM skradając się, aby zmniejszyć wysyłaną przez nie siłę sygnału ", - - "create.ponder.andesite_tunnel.header": "Używanie andezytowych tuneli", - "create.ponder.andesite_tunnel.text_1": "Andezytowe tunele mogą być użyte do przykrycia Twoich taśmociągów", - "create.ponder.andesite_tunnel.text_2": "Kiedy andezytowy tunel ma połączenie z jego boku...", - "create.ponder.andesite_tunnel.text_3": "...będzie oddzielał dokładnie jeden przedmiot na każde wyjście", - "create.ponder.andesite_tunnel.text_4": "Reszta przedmiotów będzie kontynuowało swoją podróż", - - "create.ponder.basin.header": "Przetwarzanie przedmiotów w tyglu", - "create.ponder.basin.text_1": "Tygiel może przechowywać przedmioty i płyny do późniejszej obróbki", - "create.ponder.basin.text_2": "Po obróbce, tygle spróbują wyrzucić gotowy przedmiot z boku, jeden blok pod spodem", - "create.ponder.basin.text_3": "Jeśli stoi tam odpowiedni komponent, z boku tygla pojawi się wylot", - "create.ponder.basin.text_4": "Jest tu wiele opcji", - "create.ponder.basin.text_5": "Produkty będą pobrane przez poniższy pojemnik", - "create.ponder.basin.text_6": "Bez wylotu, tygiel zachowa produkty przez niego wytworzone", - "create.ponder.basin.text_7": "Może to być przydatne, jeśli przedmioty te muszą być ponownie użyte jako składniki", - "create.ponder.basin.text_8": "Gotowe przedmioty muszą być wyciągnięte z tygla", - "create.ponder.basin.text_9": "Filtr może być przydatny, aby zapobiec wyciąganiu nieprzerobionych przedmiotów", - - "create.ponder.bearing_modes.header": "Tryby ruchu dla mechanicznego łożyska", - "create.ponder.bearing_modes.text_1": "Kiedy zatrzymane, mechaniczne łożysko umieści strukturę w najbliższej możliwej przestrzeni", - "create.ponder.bearing_modes.text_2": "Może zostać ustawiony, aby nigdy nie powracał do stałych bloków, lub tylko blisko kąta, z jakiego zaczął", - - "create.ponder.belt_casing.header": "Przykrywanie taśmociągów", - "create.ponder.belt_casing.text_1": "Mosiężne lub andezytowe obudowy mogą być użyte do dekoracji taśmociągów", - "create.ponder.belt_casing.text_2": "Klucz może zostać użyty do usunięcia obudowy", - - "create.ponder.belt_connector.header": "Używanie taśmociągów", - "create.ponder.belt_connector.text_1": "Kliknięcie PPM na dwa wały połączy je taśmociągiem", - "create.ponder.belt_connector.text_2": "Przypadkowe wybory mogą być anulowane klikając na nie PPM skradając się", - "create.ponder.belt_connector.text_3": "Dodatkowe wały mogą zostać dodane w środku taśmociągu", - "create.ponder.belt_connector.text_4": "Wały połączone taśmociągiem będą się obracały z taką samą prędkością i kierunkiem", - "create.ponder.belt_connector.text_5": "Dodatkowe wały mogą zostać usunięte przy pomocy klucza", - "create.ponder.belt_connector.text_6": "Taśmociągi mogą zostać zabarwione w celach estetycznych", - - "create.ponder.belt_directions.header": "Prawidłowe orientacje taśmociągów", - "create.ponder.belt_directions.text_1": "Taśmociągi nie mogą się łączyć w losowych kierunkach", - "create.ponder.belt_directions.text_2": "1. Mogą się łączyć poziomo", - "create.ponder.belt_directions.text_3": "2. Mogą się łączyć ukośnie", - "create.ponder.belt_directions.text_4": "3. Mogą się łączyć pionowo", - "create.ponder.belt_directions.text_5": "4. I mogą łączyć pionowe wały poziomo", - "create.ponder.belt_directions.text_6": "To są wszystkie możliwe kierunki połączeń. Taśmociągi mogą mieć dowolną długość od 2 do 20 bloków", - - "create.ponder.belt_transport.header": "Używanie taśmociągów w celach logistycznych", - "create.ponder.belt_transport.text_1": "Ruchome taśmociągi będą przesuwały przedmioty lub inne byty", - "create.ponder.belt_transport.text_2": "Kliknij PPM pustą ręką, aby zabrać przedmiot z taśmociągu", - - "create.ponder.blaze_burner.header": "Napełnianie płomiennych palników", - "create.ponder.blaze_burner.text_1": "Płomienne palniki dają ciepło potrzebne do obróbki niektórych przedmiotów w tyglu", - "create.ponder.blaze_burner.text_2": "Aby uzyskać ciepło, płomyk uwięziony wewnątrz musi dostać jakieś łatwopalne przedmioty", - "create.ponder.blaze_burner.text_3": "Z użyciem płomiennego ciasta, palnik może uzyskać szczególnie wysoką temperaturę", - "create.ponder.blaze_burner.text_4": "Dostarczanie płomykowi przedmiotów może zostać zautomatyzowane z użyciem aplikatorów lub mechanicznych ramion", - - "create.ponder.brass_funnel.header": "Mosiężny lej", - "create.ponder.brass_funnel.text_1": "Andezytowe leje mogą pobierać jedynie pojedyncze przedmioty", - "create.ponder.brass_funnel.text_2": "Mosiężne leje mogą pobierać nawet pełne stosy", - "create.ponder.brass_funnel.text_3": "Przewijanie na slocie filtrującym pozwala na precyzyjną kontrolę nad maksymalną wielkością stosu", - "create.ponder.brass_funnel.text_4": "Użycie przedmiotu patrząc na slot filtrujący spowoduje, że lej będzie przesyłał tylko pasujące przedmioty", - - "create.ponder.brass_tunnel.header": "Używanie mosiężnych tuneli", - "create.ponder.brass_tunnel.text_1": "Mosiężne tunele mogą być użyte do przykrycia Twoich taśmociągów", - "create.ponder.brass_tunnel.text_2": "Mosiężne tunele posiadają slot filtrujący na każdej otwartej stronie", - "create.ponder.brass_tunnel.text_3": "Filtry przy wejściach zwyczajnie nie przepuszczają niepasujących przedmiotów", - "create.ponder.brass_tunnel.text_4": "Filtry przy wyjściach mogą być użyte do sortowania przedmiotów", - "create.ponder.brass_tunnel.text_5": "Jeśli przedmiot ma wiele możliwych wyjść, tryb dystrybucji zdecyduje jak mają się zachować", - "create.ponder.brass_tunnel.text_6": "Tunele na przylegających taśmociągach stworzą połączenie", - "create.ponder.brass_tunnel.text_7": "Przybyłe przedmioty będą dystrybuowane na wszystkie połączone wyjścia", - "create.ponder.brass_tunnel.text_8": "Przedmioty mogą być również wrzucone prosto do tunelu", - - "create.ponder.brass_tunnel_modes.header": "Tryby dystrybucji mosiężnego tunelu", - "create.ponder.brass_tunnel_modes.text_1": "Tryb dystrybucji mosiężnego tunelu może zostać wybrany z użyciem klucza", - "create.ponder.brass_tunnel_modes.text_10": "'Synchronizuj wejścia' jest trybem unikalnym dla mosiężnych tuneli", - "create.ponder.brass_tunnel_modes.text_11": "Przedmioty są przepuszczane jedynie, kiedy przed każdym połączonym tunelem czeka przedmiot", - "create.ponder.brass_tunnel_modes.text_12": "Dzięki temu mamy pewność, że każdy taśmociąg przesyła przedmioty z taką samą szybkością", - "create.ponder.brass_tunnel_modes.text_2": "Tryb 'Podziel' będzie starał się rozdzielić przedmioty do każdego wyjścia po równo", - "create.ponder.brass_tunnel_modes.text_3": "Jeśli wyjście nie może już przyjąć więcej przedmiotów, zostanie pominięte", - "create.ponder.brass_tunnel_modes.text_4": "Tryb 'Wymuś podział' nigdy nie pominie żadnego wyjścia, a zamiast tego będzie czekał, aż wszystkie będą wolne", - "create.ponder.brass_tunnel_modes.text_5": "Tryb 'Dookoła' zachowuje wielkość stosu, i rozprowadza je do każdego wyjścia po kolei", - "create.ponder.brass_tunnel_modes.text_6": "Znowu: jeśli wyjście nie może już przyjąć więcej przedmiotów, zostanie pominięte", - "create.ponder.brass_tunnel_modes.text_7": "Tryb 'Dookoła (wymuszony)' nigdy nie pominie żadnego wyjścia", - "create.ponder.brass_tunnel_modes.text_8": "Tryb 'Preferuj najbliższe' priorytetyzuje najbliższe wyjście od wejścia, z którego przybył przedmiot", - "create.ponder.brass_tunnel_modes.text_9": "Tryb 'Losowo' rozdystrybuuje całe stosy do losowych wyjść", - - "create.ponder.cart_assembler.header": "Przesuwanie maszyn z użyciem montera wagoników", - "create.ponder.cart_assembler.text_1": "Zasilony monter wagoników przyczepia dołączone struktury do przejeżdżających wagoników", - "create.ponder.cart_assembler.text_2": "Niezasilony, odczepia struktury on przejeżdżających wagoników", - "create.ponder.cart_assembler.text_3": "Klucz pomoże Ci przenieść gotowy wagonik w inne miejsce", - - "create.ponder.cart_assembler_dual.header": "Konstruowanie wielowagonikowych struktur", - "create.ponder.cart_assembler_dual.text_1": "Jeśli dwa montery wagoników dzielą ze sobą jedną strukturę...", - "create.ponder.cart_assembler_dual.text_2": "...zasilenie dowolnego z nich przyczepi konstrukcję do obu wagoników", - "create.ponder.cart_assembler_dual.text_3": "Wagoniki będą się zachowywać jak te połączone łącznikiem", - - "create.ponder.cart_assembler_modes.header": "Dostosowywanie orientacji maszyn w wagoniku", - "create.ponder.cart_assembler_modes.text_1": "Maszyny w wagoniku obracają się wraz z wagonikiem", - "create.ponder.cart_assembler_modes.text_2": "Jeśli monter jest ustawiony na tryb 'Zablokuj obrót', maszyna nigdy nie zmieni swojej orientacji", - - "create.ponder.cart_assembler_rails.header": "Inne typy wagoników i torów", - "create.ponder.cart_assembler_rails.text_1": "Montery wagoników stojące na zwykłych torach nie zmienią prędkości przejeżdżającego wagonika", - "create.ponder.cart_assembler_rails.text_2": "Jeśli stoi na zasilanych lub sterujących torach, wagonik będzie stał w miejscu tak długo, aż nie zostaną tory zasilone", - "create.ponder.cart_assembler_rails.text_3": "Inne typy wagoników mogą być użyte jako baza dla maszyny", - "create.ponder.cart_assembler_rails.text_4": "Wagoniki z piecem będą ciągle zasilane, pobierając paliwo z doczepionych pojemników", - - "create.ponder.chain_drive.header": "Przekazywanie siły obrotowej z użyciem przekaźników łańcuchowych", - "create.ponder.chain_drive.text_1": "Przekaźniki łańcuchowe przekazują obroty do wszystkich połączonych przekaźników", - "create.ponder.chain_drive.text_2": "Wszystkie wały połączone w ten sposób będą obracać się w tą samą stronę", - "create.ponder.chain_drive.text_3": "Dowolna część w rzędzie może być obrócona o 90 stopni", - - "create.ponder.chain_gearshift.header": "Kontrolowanie prędkości obrotu z użyciem przekładników łańcuchowych", - "create.ponder.chain_gearshift.text_1": "Niezasilone przekładniki łańcuchowe zachowują się dokładnie tak samo jak przekaźniki łańcuchowe", - "create.ponder.chain_gearshift.text_2": "Kiedy zasilone, prędkość przekazywana do pozostałych przekładników jest podwojona", - "create.ponder.chain_gearshift.text_3": "Jeśli zasilony przekładnik nie jest źródłem obrotów, jego prędkość będzie zmniejszona dwukrotnie", - "create.ponder.chain_gearshift.text_4": "W oby przypadkach, pozostałe przekładniki będą pracować z dwukrotnie większą prędkością niż ten, który jest zasilony", - "create.ponder.chain_gearshift.text_5": "Z użyciem sygnałów analogowych, ta różnica może być dostosowana z większą dokładnością - pomiędzy 1 a 2x", - "create.ponder.chain_gearshift.text_6": "12 Ob/min", - - "create.ponder.chute.header": "Transport przedmiotów w dół z użyciem zsypów", - "create.ponder.chute.text_1": "Zsypy mogą transportować przedmioty pionowo z- i do pojemników", - "create.ponder.chute.text_2": "Używając klucza można stworzyć okno", - "create.ponder.chute.text_3": "Stawiając zsyp na bocznej stronie innego zsypu, będzie on skośny", - - "create.ponder.chute_upward.header": "Transport przedmiotów w górę przez zsypy", - "create.ponder.chute_upward.text_1": "Używając izolowanych wiatraków pod zsypem możliwy jest transport przedmiotów w górę zsypu", - "create.ponder.chute_upward.text_2": "Patrzenie na zsyp przez Gogle Inżyniera pokazuje informacje o kierunku funkcjonowania zsypu", - "create.ponder.chute_upward.text_3": "Od 'zablokowanej' strony przedmioty muszą być wkładane/wyciągane od boku", - - "create.ponder.clockwork_bearing.header": "Używanie mechanizmu zegarowego", - "create.ponder.clockwork_bearing.text_1": "Mechanizmy zegarowe przyczepiają do siebie bloki, które mają z przodu", - "create.ponder.clockwork_bearing.text_2": "Po dostarczeniu siły obrotowej, struktura obróci się, pokazując obecną godzinę", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "Kliknij PPM na mechanizm, aby zatrzymać lub rozpocząć obrót struktury", - "create.ponder.clockwork_bearing.text_6": "Przed wskazówką godzinową, można dodać kolejną strukturę", - "create.ponder.clockwork_bearing.text_7": "Upewnij się, że obie struktury nie są ze sobą połączone", - "create.ponder.clockwork_bearing.text_8": "Druga struktura będzie działać jak wskazówka minutowa", - - "create.ponder.clutch.header": "Kontrolowanie obrotu z użyciem sprzęgła", - "create.ponder.clutch.text_1": "Sprzęgło przekazuje obrót w linii prostej", - "create.ponder.clutch.text_2": "Zasilony, przerywa połączenie", - - "create.ponder.cog_speedup.header": "Przekładnia z kół zębatych", - "create.ponder.cog_speedup.text_1": "Duże i małe koła zębate mogą być połączone po ukosie", - "create.ponder.cog_speedup.text_2": "Przekazując z dużego koła na małe, prędkość wzrośnie dwukrotnie", - "create.ponder.cog_speedup.text_3": "Przekazując na odwrót, prędkość spadnie dwukrotnie", - - "create.ponder.cogwheel.header": "Przekazywanie obrotu z użyciem kół zębatych", - "create.ponder.cogwheel.text_1": "Koła zębate przekazują obrót do sąsiadujących kół", - "create.ponder.cogwheel.text_2": "Koła połączone w ten sposób będą obracać się w przeciwnych kierunkach", - - "create.ponder.creative_motor.header": "Generowanie siły obrotowej z użyciem kreatywnego silnika", - "create.ponder.creative_motor.text_1": "Kreatywny silnik to kompaktowe i regulowane źródło siły obrotowej", - "create.ponder.creative_motor.text_2": "Przewijanie patrząc na tylny panel zmienia prędkość obrotu", - - "create.ponder.crushing_wheels.header": "Kruszenie przedmiotów", - "create.ponder.crushing_wheels.text_1": "Para kół kruszących kruszy przedmioty niezwykle efektywnie", - "create.ponder.crushing_wheels.text_2": "Powinny się one kręcić w przeciwnych kierunkach", - "create.ponder.crushing_wheels.text_3": "Przedmioty wrzucone od góry będą kruszone", - "create.ponder.crushing_wheels.text_4": "Przedmioty mogą zostać wrzucone i odebrane automatycznie", - - "create.ponder.deployer.header": "Używanie aplikatora", - "create.ponder.deployer.text_1": "Aplikator może imitować niektóre zachowania gracza, z użyciem siły obrotowej", - "create.ponder.deployer.text_10": "Kliknij PPM jego przód, aby dać mu przedmiot", - "create.ponder.deployer.text_11": "Przedmioty mogą też zostać dostarczone automatycznie", - "create.ponder.deployer.text_12": "Aplikatory posiadają slot filtrujący", - "create.ponder.deployer.text_13": "Kiedy filtr jest skonfigurowany, aplikator użyje tylko pasujących przedmiotów", - "create.ponder.deployer.text_14": "Od teraz jedynie pasujące przedmioty mogą być włożone...", - "create.ponder.deployer.text_15": "...i jedynie niepasujące przedmioty mogą być wyciągnięte", - "create.ponder.deployer.text_2": "Aplikator może używać przedmiotów jedynie 2 bloki przed nim", - "create.ponder.deployer.text_3": "Bloki bezpośrednio przed nim nie ograniczają go", - "create.ponder.deployer.text_4": "Aplikatory mogą:", - "create.ponder.deployer.text_5": "Stawiać bloki,", - "create.ponder.deployer.text_6": "Używać przedmiotów,", - "create.ponder.deployer.text_7": "Aktywować bloki,", - "create.ponder.deployer.text_8": "Kopać bloki", - "create.ponder.deployer.text_9": "i atakować moby", - - "create.ponder.deployer_contraption.header": "Używanie aplikatorów w maszynach", - "create.ponder.deployer_contraption.text_1": "Kiedy aplikatory są przesuwane, jako część ruchomej maszyny...", - "create.ponder.deployer_contraption.text_2": "...aktywują się przy każdym odwiedzonym bloku, pobierając przedmioty z pojemników przyczepionych do maszyny", - "create.ponder.deployer_contraption.text_3": "Slot filtrujący może być użyty do sprecyzowania, jakich przedmiotów używać", - - "create.ponder.deployer_modes.header": "Tryby aplikatora", - "create.ponder.deployer_modes.text_1": "Domyślnie, aplikator imituje prawe kliknięcie", - "create.ponder.deployer_modes.text_2": "Może być przestawiony na lewe kliknięcie używając klucza", - - "create.ponder.deployer_redstone.header": "Kontrolowanie aplikatorów z użyciem Redstone'a", - "create.ponder.deployer_redstone.text_1": "Zasilone przez Redstone, aplikatory nie aktywują się", - "create.ponder.deployer_redstone.text_2": "Przed zatrzymaniem, aplikatory dokończą już zaczętą czynność", - "create.ponder.deployer_redstone.text_3": "Chwilowe wyłączenie sygnału aktywuje więc aplikator dokładnie raz", - - "create.ponder.depot.header": "Używanie składnic", - "create.ponder.depot.text_1": "Składnice działają jak nieruchome elementy taśmociągu", - "create.ponder.depot.text_2": "Kliknij PPM, aby ręcznie położyć lub podnieść z niej przedmiot", - "create.ponder.depot.text_3": "Podobnie jak taśmociągi, składnica może dostarczać przedmioty do obróbki...", - "create.ponder.depot.text_4": "…jak i również dla mechanicznych ramion", - - "create.ponder.empty_blaze_burner.header": "Używanie pustych płomiennych palników", - "create.ponder.empty_blaze_burner.text_1": "Kliknij PPM na Płomyka trzymają w ręce pusty palnik, aby uwięzić go w środku", - "create.ponder.empty_blaze_burner.text_2": "Ewentualnie, Płomyk może być zabrany prosto z jego Spawnera", - "create.ponder.empty_blaze_burner.text_3": "Masz teraz idealne źródło ciepła dla przeróżnych maszyn", - "create.ponder.empty_blaze_burner.text_4": "Dla celów dekoracyjnych, puste palniki można też zapalić krzesiwem", - "create.ponder.empty_blaze_burner.text_5": "Nie będzie on dawał jednak ciepła", - - "create.ponder.fan_direction.header": "Przepływ powietrza przez izolowane wiatraki", - "create.ponder.fan_direction.text_1": "Izolowane wiatraki używają siły obrotowej, aby wytworzyć przepływ powietrza", - "create.ponder.fan_direction.text_2": "Siła i kierunek przepływu zależy od właściwości siły obrotu", - - "create.ponder.fan_processing.header": "Obróbka przedmiotów z użyciem izolowanych wiatraków", - "create.ponder.fan_processing.text_1": "Przepływając przez lawę, powietrze staje się gorące", - "create.ponder.fan_processing.text_2": "Przedmioty, które wpadną na jego drogę będą wytopione", - "create.ponder.fan_processing.text_3": "Wrzucone jedzenie będzie spalone na popiół", - "create.ponder.fan_processing.text_4": "Zamiast lawy można użyć ognia, aby wędzić surowe jedzenie", - "create.ponder.fan_processing.text_5": "Powietrze przepływające przez wodę będzie płukało przedmioty", - "create.ponder.fan_processing.text_6": "W ten sposób z niepozornych przedmiotów można otrzymać przedmioty znacznie bardziej interesujące...", - "create.ponder.fan_processing.text_7": "Prędkość wiatraka nie wpływa na szybkość obróbki, a jedynie na jego zasięg!", - "create.ponder.fan_processing.text_8": "Przepływ powietrza działa również na przedmioty na taśmociągach lub składnicach", - - "create.ponder.fan_source.header": "Generowanie siły obrotowej z użyciem izolowanych wiatraków", - "create.ponder.fan_source.text_1": "Wiatraki skierowane w stronę źródła ciepła generują siłę obrotową", - "create.ponder.fan_source.text_2": "Po zasileniu, wiatraki zaczną przesyłać siłę do przylegających komponentów", - - "create.ponder.flywheel.header": "Generowanie siły obrotowej z użyciem koła zamachowego", - "create.ponder.flywheel.text_1": "Koła zamachowe są wymagane, aby generować siłę obrotową przy pomocy silnika spalinowego", - "create.ponder.flywheel.text_2": "Wyprodukowana w ten sposób siła ma bardzo dużą odporność na obciążenie", - "create.ponder.flywheel.text_3": "Używając pieca hutniczego efektywność silnika spalinowego wzrośnie dwukrotnie", - - "create.ponder.funnel_compat.header": "Kompatybilność lejków", - "create.ponder.funnel_compat.text_1": "Lejki działają też z wieloma innymi komponentami", - "create.ponder.funnel_compat.text_2": "Pionowe piły", - "create.ponder.funnel_compat.text_3": "Składnice", - "create.ponder.funnel_compat.text_4": "Odpływy", - - "create.ponder.funnel_direction.header": "Kierunek transportu", - "create.ponder.funnel_direction.text_1": "Postawiony normalnie, wyciąga przedmioty z pojemnika", - "create.ponder.funnel_direction.text_2": "Postawiony w czasie skradania, wkłada przedmioty do pojemnika", - "create.ponder.funnel_direction.text_3": "Używając klucza, lejek może być odwrócony już po postawieniu", - "create.ponder.funnel_direction.text_4": "Takie same zasady stosują się do większości orientacji", - "create.ponder.funnel_direction.text_5": "Lejki na taśmociągach będą wyciągały/wkładały, bazując na ich kierunku poruszania się", - - "create.ponder.funnel_intro.header": "Używanie lejków", - "create.ponder.funnel_intro.text_1": "Lejki są idealne to transportu przedmiotów z- i do pojemników", - - "create.ponder.funnel_redstone.header": "Kontrola Redstonem", - "create.ponder.funnel_redstone.text_1": "Zasilenie spowoduje, że lejek przestanie działać", - - "create.ponder.funnel_transfer.header": "Bezpośredni transport", - "create.ponder.funnel_transfer.text_1": "Lejki nie mogą bezpośrednio transportować pomiędzy zamkniętymi pojemnikami", - "create.ponder.funnel_transfer.text_2": "Zsypy lub inteligentne zsypy mogą bardziej się do tego nadawać", - "create.ponder.funnel_transfer.text_3": "To samo tyczy się transportu poziomego. Taśmociąg może tutaj pomóc", - - "create.ponder.furnace_engine.header": "Generowanie siły obrotowej z użyciem silnika spalinowego", - "create.ponder.furnace_engine.text_1": "Silniki spalinowe generują siłę obrotową, gdy podłączonym do niego piec jest aktywny", - "create.ponder.furnace_engine.text_2": "Wyprodukowana w ten sposób siła ma bardzo dużą odporność na obciążenie", - "create.ponder.furnace_engine.text_3": "Używając pieca hutniczego efektywność silnika spalinowego wzrośnie dwukrotnie", - - "create.ponder.gantry_carriage.header": "Używanie przenośników suwnicowych", - "create.ponder.gantry_carriage.text_1": "Przenośnik suwnicowy może być zamontowany i przesuwany po suwnicy", - "create.ponder.gantry_carriage.text_2": "Może on przenosić dołączone bloki", - "create.ponder.gantry_cascaded.header": "Kaskadowe suwnice", - - "create.ponder.gantry_cascaded.text_1": "Suwnice można dołączyć do przenośnika suwnicowego bez użycia Super Glue", - "create.ponder.gantry_cascaded.text_2": "To samo tyczy się przenośników zamontowanych na przesuwanej suwnicy", - "create.ponder.gantry_cascaded.text_3": "Dlatego więc system suwnic może posiadać wiele osi ruchu", - - "create.ponder.gantry_direction.header": "Kierunek ruchu przenośnika", - "create.ponder.gantry_direction.text_1": "Suwnice mogą mieć odwrotne orientacje", - "create.ponder.gantry_direction.text_2": "Kierunek ruchu przenośnika zależy od orientacji jego suwnicy", - "create.ponder.gantry_direction.text_3": "…jak i kierunku obrotu suwnicy", - "create.ponder.gantry_direction.text_4": "Te same zasady stosują się do obrotu dołączonych elementów", - - "create.ponder.gantry_redstone.header": "Przenoszenie obrotu przez przenośniki", - "create.ponder.gantry_redstone.text_1": "Zasilone suwnice zatrzymują swoje przenośniki", - "create.ponder.gantry_redstone.text_2": "Zamiast tego, jej obrót przekazywany jest do wyjściowego wała przenośnika", - - "create.ponder.gantry_shaft.header": "Używanie suwnic", - "create.ponder.gantry_shaft.text_1": "Suwnice są podstawą całego mechanizmu suwnicowego. Dołączone przenośniki będą poruszać się wzdłuż suwnic", - "create.ponder.gantry_shaft.text_2": "Mechanizmy suwnicowe mogą przesuwać dołączone bloki", - - "create.ponder.gearbox.header": "Przenoszenie siły obrotowej z użyciem przekładni", - "create.ponder.gearbox.text_1": "Zmiany osi obrotu mogą bardzo szybko stać się bardzo duże", - "create.ponder.gearbox.text_2": "Przekładnia jest bardziej kompaktową wersją tego mechanizmu", - "create.ponder.gearbox.text_3": "Wały dookoła rogów obracają się w lustrzanych kierunkach", - "create.ponder.gearbox.text_4": "Proste połączenie będzie odwrócone", - - "create.ponder.gearshift.header": "Przenoszenie siły obrotowej z użyciem przekładnika", - "create.ponder.gearshift.text_1": "Przekładniki przenoszą obrót w linii prostej", - "create.ponder.gearshift.text_2": "Kiedy zasilone, kierunek obrotu odwraca się", - - "create.ponder.hand_crank.header": "Generowanie siły obrotowej z użyciem ręcznej korby", - "create.ponder.hand_crank.text_1": "Korby mogą być użyte przez gracza, aby ręcznie wprawić komponent w ruch", - "create.ponder.hand_crank.text_2": "Trzymaj PPM, aby obrócić ją odwrotnie niż wskazówki zegara", - "create.ponder.hand_crank.text_3": "Wytwarzana prędkość jest dosyć duża!", - "create.ponder.hand_crank.text_4": "Trzymaj PPM skradając się, aby obrócić ją zgodnie ze wskazówkami zegara", - - "create.ponder.large_cogwheel.header": "Przekazywanie siły obrotowej z użyciem dużych kół zębatych", - "create.ponder.large_cogwheel.text_1": "Duże koła zębate mogą się łączyć ze sobą pod kątem prostym", - "create.ponder.large_cogwheel.text_2": "Pomogą one w przekazywaniu siły obrotowej na inne osie obrotu", - - "create.ponder.linear_chassis_attachment.header": "Dołączanie bloków do stelaża liniowego", - "create.ponder.linear_chassis_attachment.text_1": "Odkryte strony stelaża mogą być oblepione szlamem", - "create.ponder.linear_chassis_attachment.text_2": "Kliknij ponownie, aby oblepić również drugą stronę", - "create.ponder.linear_chassis_attachment.text_3": "Kliknij PPM skradając się, aby usunąć szlam", - "create.ponder.linear_chassis_attachment.text_4": "Lepkie strony zabiorą ze sobą linie bloków przed sobą", - "create.ponder.linear_chassis_attachment.text_5": "Użyj klucza, aby ustawić maksymalny zasięg działania stelaża", - "create.ponder.linear_chassis_attachment.text_6": "Trzymając CTRL i przewijając dostosujesz maksymalny zasięg wszystkich połączonych stelaży", - "create.ponder.linear_chassis_attachment.text_7": "Przyłączanie bloków do innej strony wymaga użycia Super Glue", - "create.ponder.linear_chassis_attachment.text_8": "Z wykorzystaniem tych mechanik, struktury w każdym kształcie mogą tworzyć maszyną", - - "create.ponder.linear_chassis_group.header": "Przesuwanie liniowych stelaży w grupach", - "create.ponder.linear_chassis_group.text_1": "Liniowe stelaże łączą się z identycznymi stelażami obok nich", - "create.ponder.linear_chassis_group.text_2": "Kiedy jeden z nich jest przesunięty, wszystkie inne są ciągnięte za nim", - "create.ponder.linear_chassis_group.text_3": "Stelaże innego typu lub postawione w innym kierunku nie zostaną połączone", - - "create.ponder.mechanical_arm.header": "Ustawianie mechanicznych ramion", - "create.ponder.mechanical_arm.text_1": "Wejścia i wyjścia muszą zostać przypisane do ramienia, zanim będzie można je postawić", - "create.ponder.mechanical_arm.text_2": "Kliknij PPM na blok trzymając ramię, aby przypisać do niego cel", - "create.ponder.mechanical_arm.text_3": "Kliknij ponownie, aby przełączyć pomiędzy wejściem (niebieski) i wyjściem (pomarańczowy)", - "create.ponder.mechanical_arm.text_4": "Kliknij LPM, aby usunąć zaznaczenie", - "create.ponder.mechanical_arm.text_5": "Po postawieniu, mechaniczne ramię będzie operować pomiędzy wybranymi blokami", - "create.ponder.mechanical_arm.text_6": "Mogą one mieć dowolną ilość wejść i wyjść w ich zasięgu", - "create.ponder.mechanical_arm.text_7": "Nie z każdym blokiem zawierającym przedmioty może ono jednak bezpośrednio pracować", - "create.ponder.mechanical_arm.text_8": "Lejki i składnice mogą zapełnić tą lukę", - - "create.ponder.mechanical_arm_filtering.header": "Filtrowanie wyjść z mechanicznego ramienia", - "create.ponder.mechanical_arm_filtering.text_1": "Wejścia", - "create.ponder.mechanical_arm_filtering.text_2": "Wyjścia", - "create.ponder.mechanical_arm_filtering.text_3": "Czasami potrzebne jest ograniczenie celów ramienia przy pomocy filtra", - "create.ponder.mechanical_arm_filtering.text_4": "Mechaniczne ramiona nie posiadają żadnych opcji filtrowanie same w sobie", - "create.ponder.mechanical_arm_filtering.text_5": "Mosiężne lejki ustawione jako cele komunikują ramieniu informacje o swoim filtrze", - "create.ponder.mechanical_arm_filtering.text_6": "Ramię jest wystarczająco mądre, aby nie podnosić przedmiotów, których nie mogłoby odstawić", - - "create.ponder.mechanical_arm_modes.header": "Tryby dystrybucji mechanicznego ramienia", - "create.ponder.mechanical_arm_modes.text_1": "Wejście", - "create.ponder.mechanical_arm_modes.text_2": "Wyjście", - "create.ponder.mechanical_arm_modes.text_3": "Kiedykolwiek ramię musi wybrać pomiędzy wieloma możliwymi wyjściami...", - "create.ponder.mechanical_arm_modes.text_4": "…będzie działać zgodnie z jego ustawieniami", - "create.ponder.mechanical_arm_modes.text_5": "Przewijanie trzymając klucz pozwoli ci na konfigurację", - "create.ponder.mechanical_arm_modes.text_6": "Tryb 'Dookoła' zwyczajnie pozwala na cykl pomiędzy wszystkimi dostępnymi wyjściami", - "create.ponder.mechanical_arm_modes.text_7": "Jeśli wyjście nie może przyjąć więcej przedmiotów, będzie ono pominięte", - "create.ponder.mechanical_arm_modes.text_8": "Tryb 'Dookoła (wymuszony)' nigdy nie pominie żadnego wyjścia i poczeka, aż będzie ono wolne", - "create.ponder.mechanical_arm_modes.text_9": "Tryb 'Preferuj pierwszy cel' priorytetyzuje cele ustawione przed postawieniem jako pierwsze", - - "create.ponder.mechanical_arm_redstone.header": "Kontrolowanie mechanicznych ramion z użyciem Redstone'a", - "create.ponder.mechanical_arm_redstone.text_1": "Kiedy zasilone, mechaniczne ramię przestanie działać", - "create.ponder.mechanical_arm_redstone.text_2": "Przed zatrzymaniem, ramiona dokończą zaczętą już czynność", - "create.ponder.mechanical_arm_redstone.text_3": "Chwilowe wyłączenie sygnału aktywuje więc ramię dokładnie raz", - - "create.ponder.mechanical_bearing.header": "Przesuwanie struktur z użyciem mechanicznego łożyska", - "create.ponder.mechanical_bearing.text_1": "Mechaniczne łożysko przyczepia do siebie blok, który jest przed nim", - "create.ponder.mechanical_bearing.text_2": "W momencie otrzymania siły obrotowej, stworzy on obracającą się maszynę", - - "create.ponder.mechanical_crafter.header": "Ustawianie mechanicznych stołów rzemieślniczych", - "create.ponder.mechanical_crafter.text_1": "Grupa mechanicznych stołów rzemieślniczych może być użyta, aby zautomatyzować każdą recepturę", - "create.ponder.mechanical_crafter.text_2": "Używając klucza, ścieżki stołów mogą zostać ułożone", - "create.ponder.mechanical_crafter.text_3": "Aby układ był poprawny, wszystkie ścieżki muszą prowadzić do jednego wyjścia po dowolnej stronie", - "create.ponder.mechanical_crafter.text_4": "Produkty będą umieszczone w bloku przy wyjściu", - "create.ponder.mechanical_crafter.text_5": "Mechaniczne stoły rzemieślnicze wymagają siły obrotowej, aby pracować", - "create.ponder.mechanical_crafter.text_6": "Kliknij PPM na ich przody, aby ręcznie włożyć tam przedmioty", - "create.ponder.mechanical_crafter.text_7": "Kiedy każdy slot zawiera przedmiot, rozpocznie się proces konstruowania", - "create.ponder.mechanical_crafter.text_8": "Dla receptur, które nie zajmują wszystkich slotów, start konstruowania można rozpocząć zasilając dowolny z nich", - - "create.ponder.mechanical_crafter_connect.header": "Łączenie ekwipunków mechanicznych stołów rzemieślniczych", - "create.ponder.mechanical_crafter_connect.text_1": "Przedmioty mogą być włożone do stołów automatycznie", - "create.ponder.mechanical_crafter_connect.text_2": "Klikając na ich tył kluczem, mechaniczne stoły rzemieślnicze może połączyć ze sobą", - "create.ponder.mechanical_crafter_connect.text_3": "Wszystkie połączone stoły mogą przyjmować teraz przedmioty z jednego miejsca", - - "create.ponder.mechanical_crafter_covers.header": "Przykrywanie slotów mechanicznych stołów rzemieślniczych", - "create.ponder.mechanical_crafter_covers.text_1": "Niektóre receptury wymagają zapełnienia dziury pomiędzy poszczególnymi stołami", - "create.ponder.mechanical_crafter_covers.text_2": "Używając przykrywek na slot, można wyłączyć jeden stół z użytku. Nie będzie on przyjmował przedmiotów, ale będzie łączył sąsiadujące sloty w jedną całość", - "create.ponder.mechanical_crafter_covers.text_3": "Połączone stoły również działają w przypadku przykrycia jednego ze slotów", - - "create.ponder.mechanical_drill.header": "Niszczenie bloków mechanicznym wiertłem", - "create.ponder.mechanical_drill.text_1": "Po otrzymaniu siły obrotowej, mechaniczne wiertło będzie niszczyć bloki bezpośrednio przed nim", - "create.ponder.mechanical_drill.text_2": "Jego prędkość niszczenia zależy od prędkości siły obrotowej", - - "create.ponder.mechanical_drill_contraption.header": "Używanie mechanicznych wierteł w maszynach", - "create.ponder.mechanical_drill_contraption.text_1": "Kiedy wiertła są przesuwane razem z maszyną...", - "create.ponder.mechanical_drill_contraption.text_2": "…zniszczą one bloki na ich drodze", - - "create.ponder.mechanical_harvester.header": "Używanie mechanicznych żniwiarek w maszynach", - "create.ponder.mechanical_harvester.text_1": "Kiedy żniwiarki są przesuwane razem z maszyną...", - "create.ponder.mechanical_harvester.text_2": "…zbiorą one dojrzałe plony na ich drodze", - - "create.ponder.mechanical_mixer.header": "Obróbka przedmiotów z użyciem mechanicznego miksera", - "create.ponder.mechanical_mixer.text_1": "Używając miksera i tygla, niektóre receptury mogą być zautomatyzowane", - "create.ponder.mechanical_mixer.text_2": "Dostępne są wszystkie receptury nieokreślone, plus kilka innych", - "create.ponder.mechanical_mixer.text_3": "Niektóre z nich mogą wymagać użycia płomiennego palnika", - "create.ponder.mechanical_mixer.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", - - "create.ponder.mechanical_piston.header": "Przesuwanie struktur z użyciem mechanicznego tłoka", - "create.ponder.mechanical_piston.text_1": "Mechaniczny tłok może przesuwać znajdujące się przed nim bloki", - "create.ponder.mechanical_piston.text_2": "Prędkość i kierunek ruchu zależy od dostarczonej siły obrotowej", - "create.ponder.mechanical_piston.text_3": "Lepkie mechaniczne tłoki mogą przyciągać doczepione bloki", - - "create.ponder.mechanical_piston_modes.header": "Tryby ruchu mechanicznych tłoków", - "create.ponder.mechanical_piston_modes.text_1": "Kiedy tłok zatrzyma się, przesuwana struktura znów stanie się zwyczajnymi blokami", - "create.ponder.mechanical_piston_modes.text_2": "Można go skonfigurować, aby bloki nigdy nie stawały się stałymi, lub tylko w pozycji początkowej", - - "create.ponder.mechanical_plough.header": "Używanie mechanicznych pługów w maszynach", - "create.ponder.mechanical_plough.text_1": "Kiedy pługi są przesuwane razem z maszyną...", - "create.ponder.mechanical_plough.text_2": "…zniszczą one niesolidne bloki na ich drodze", - "create.ponder.mechanical_plough.text_3": "Dodatkowo, pługi mogą orać pola", - "create.ponder.mechanical_plough.text_4": "…mogą też odrzucać moby bez ranienia ich", - - "create.ponder.mechanical_press.header": "Obróbka przedmiotów z użyciem mechanicznej prasy", - "create.ponder.mechanical_press.text_1": "Mechaniczna prasa może przetwarzać przedmioty znajdujące się pod nią", - "create.ponder.mechanical_press.text_2": "Przedmioty wejściowe mogą być rzucone pod prasę lub położone na składnicy", - "create.ponder.mechanical_press.text_3": "Kiedy przedmioty znajdują się na taśmociągu...", - "create.ponder.mechanical_press.text_4": "…prasa zatrzyma je i przetworzy - wszystko automatycznie", - - "create.ponder.mechanical_press_compacting.header": "Zbijanie przedmiotów z użyciem mechanicznej prasy", - "create.ponder.mechanical_press_compacting.text_1": "Prasowanie przedmiotów znajdujących się w tyglu sprawi, że staną się zbite", - "create.ponder.mechanical_press_compacting.text_2": "Można w ten sposób przetworzyć każdą recepturę, która wypełnia jednym przedmiotem kwadrat 2x2 lub 3x3", - "create.ponder.mechanical_press_compacting.text_3": "Niektóre z nich mogą wymagać użycia płomiennego palnika", - "create.ponder.mechanical_press_compacting.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", - - "create.ponder.mechanical_saw_breaker.header": "Ścinanie drzew z użyciem mechanicznej piły", - "create.ponder.mechanical_saw_breaker.text_1": "Po otrzymaniu siły obrotowej, mechaniczna piła zetnie każde znajdujące się przed nią drzewo", - "create.ponder.mechanical_saw_breaker.text_2": "Aby całkowicie ściąć drzewo, piła musi zniszczyć każdy blok łączący je z ziemią", - - "create.ponder.mechanical_saw_contraption.header": "Używanie mechanicznych pił w maszynach", - "create.ponder.mechanical_saw_contraption.text_1": "Kiedy piły są przesuwane razem z maszyną...", - "create.ponder.mechanical_saw_contraption.text_2": "…zetną one drzewa na ich drodze", - - "create.ponder.mechanical_saw_processing.header": "Obróbka przedmiotów z użyciem mechanicznej piły", - "create.ponder.mechanical_saw_processing.text_1": "Skierowana w górę mechaniczna piła może przetwarzać wiele różnych przedmiotów", - "create.ponder.mechanical_saw_processing.text_2": "Przerabiany przedmiot zawsze przesuwa się przeciwnie do kierunku obrotu piły", - "create.ponder.mechanical_saw_processing.text_3": "Piły mogą współpracować z taśmociągami", - "create.ponder.mechanical_saw_processing.text_4": "Slot filtrujący może być użyty w przypadku dwóch konfliktujących receptur", - "create.ponder.mechanical_saw_processing.text_5": "Bez ustawionego filtra, piła przejdzie przez wszystkie receptury po kolei", - - "create.ponder.millstone.header": "Obróbka przedmiotów w młynku", - "create.ponder.millstone.text_1": "Młynek przetwarza przedmioty mieląc je", - "create.ponder.millstone.text_2": "Może być wprawiony w ruch od boku z użyciem kół zębatych", - "create.ponder.millstone.text_3": "Wrzuć lub włóż przedmiot od góry", - "create.ponder.millstone.text_4": "Po jakimś czasie, produkty mogą być zabrane prawym kliknięciem", - "create.ponder.millstone.text_5": "…lub w zautomatyzowany sposób", - - "create.ponder.nixie_tube.header": "Używanie lamp cyfrowych", - "create.ponder.nixie_tube.text_1": "Kiedy zasilone, lampy cyfrowe wyświetlą siłę sygnału Redstone, jaki otrzymują", - "create.ponder.nixie_tube.text_2": "Używając znaczników i kowadła można wyświetlić własny tekst", - - "create.ponder.piston_pole.header": "Przedłużenia tłoka", - "create.ponder.piston_pole.text_1": "Bez przyłączonych przedłużeń, mechaniczny tłok nie może się wysunąć", - "create.ponder.piston_pole.text_2": "Długość przedłużenia z tyłu ustala maksymalny zasięg tłoka", - - "create.ponder.portable_storage_interface.header": "Używanie przenośnych interfejsów magazynu", - "create.ponder.portable_storage_interface.text_1": "Pojemniki na ruchomych maszynach nie mogą być otwarte przez gracza", - "create.ponder.portable_storage_interface.text_2": "Ten komponent może współpracować z zawartością maszyny bez potrzeby jej zatrzymywania", - "create.ponder.portable_storage_interface.text_3": "Postaw drugi w odstępie od 1 do 2 bloków", - "create.ponder.portable_storage_interface.text_4": "Kiedy będą blisko siebie połączą się", - "create.ponder.portable_storage_interface.text_5": "Kiedy są połączone, stojący interfejs będzie reprezentował wszystkie pojemniki znajdujące się na maszynie", - "create.ponder.portable_storage_interface.text_6": "Przedmioty mogą być wsadzone...", - "create.ponder.portable_storage_interface.text_7": "…lub wyciągnięte z maszyny", - "create.ponder.portable_storage_interface.text_8": "W momencie, kiedy przed dłuższy czas żadne przedmioty nie będą wymieniane, maszyna zostanie odłączone i będzie kontynuowała swoją pracę", - - "create.ponder.portable_storage_interface_redstone.header": "Kontrola Redstonem", - "create.ponder.portable_storage_interface_redstone.text_1": "Zasilenie Redstonem zapobiegnie połączeniu się interfejsów", - - "create.ponder.powered_latch.header": "Kontrola sygnału z użyciem zaawansowanego zasilanego przełącznika", - "create.ponder.powered_latch.text_1": "Zaawansowane zasilane przełączniki to dźwignie, które można kontrolować przez Redstone", - "create.ponder.powered_latch.text_2": "Sygnały otrzymane z tyłu włączają je...", - "create.ponder.powered_latch.text_3": "...a sygnały od boku wyłączają", - "create.ponder.powered_latch.text_4": "Zaawansowane zasilane przełączniki mogą też być przełączone ręcznie", - - "create.ponder.powered_toggle_latch.header": "Kontrola sygnału z użyciem zasilanego przełącznika", - "create.ponder.powered_toggle_latch.text_1": "Zasilane przełączniki to dźwignie, które można kontrolować przez Redstone", - "create.ponder.powered_toggle_latch.text_2": "Sygnały otrzymane z tyłu przełączają je", - "create.ponder.powered_toggle_latch.text_3": "włączone... wyłączone...", - "create.ponder.powered_toggle_latch.text_4": "Zasilane przełączniki mogą też być przełączone ręcznie", - - "create.ponder.pulse_repeater.header": "Kontrola sygnału z użyciem przekaźników pulsowych", - "create.ponder.pulse_repeater.text_1": "Przekaźniki pulsowe skrócą dowolny sygnał do pojedynczego pulsu", - - "create.ponder.radial_chassis.header": "Przyłączanie bloków z użyciem stelaża promienistego", - "create.ponder.radial_chassis.text_1": "Stelaże promieniste łączą się z identycznymi stelażami w jednym rzędzie", - "create.ponder.radial_chassis.text_2": "Kiedy jeden z nich jest przesunięty, wszystkie inne również się przesuwają", - "create.ponder.radial_chassis.text_3": "Boczne ściany stelaży promienistych mogą zostać oblepione szlamem", - "create.ponder.radial_chassis.text_4": "Kliknij ponownie, aby oblepić wszystkie strony", - "create.ponder.radial_chassis.text_5": "Kliknij PPM skradając się, aby usunąć szlam", - "create.ponder.radial_chassis.text_6": "Lepkie strony zabiorą ze sobą przyczepione bloki...", - "create.ponder.radial_chassis.text_7": "...w określonym zasięgu", - "create.ponder.radial_chassis.text_8": "Użyj klucza, aby ustawić maksymalny zasięg działania stelaża", - "create.ponder.radial_chassis.text_9": "Bloki, które nie są w żaden sposób połączone z lepką stroną stelaża nie będą przesuwane", - - "create.ponder.redstone_contact.header": "Przełącznik kontaktowy", - "create.ponder.redstone_contact.text_1": "Przełączniki kontaktowe skierowane w swoją stronę będą emitować sygnał Redstone", - "create.ponder.redstone_contact.text_2": "Działa to też w momencie, kiedy jeden z nich jest częścią ruchomej maszyny", - - "create.ponder.redstone_link.header": "Używanie emiterów sygnału", - "create.ponder.redstone_link.text_1": "Emitery sygnału mogą przesyłać sygnał Redstone bezprzewodowo", - "create.ponder.redstone_link.text_2": "Kliknij PPM skradając się, aby przełączyć na tryb odbierania", - "create.ponder.redstone_link.text_3": "Prawe kliknięcie kluczek robi dokładnie to samo", - "create.ponder.redstone_link.text_4": "Odbiorniki emitują sygnał Redstone nadajników w zasięgu 128 bloków", - "create.ponder.redstone_link.text_5": "Wkładając przedmioty do dwóch slotów można sprecyzować częstotliwość", - "create.ponder.redstone_link.text_6": "Jedynie emitery z pasującymi częstotliwościami będą się ze sobą komunikować", - - "create.ponder.rope_pulley.header": "Przesuwanie struktur z użyciem krążków z liną", - "create.ponder.rope_pulley.text_1": "Krążki z liną mogę przesuwać pionowo bloki z wykorzystaniem siły obrotowej", - "create.ponder.rope_pulley.text_2": "Prędkość i kierunek ruchu zależą od dostarczonej siły obrotowej", - - "create.ponder.rope_pulley_attachment.header": "Przesuwanie krążków jako część maszyny", - "create.ponder.rope_pulley_attachment.text_1": "Kiedy krążek jest częścią ruchomej maszyny...", - "create.ponder.rope_pulley_attachment.text_2": "...przyczepiona do niego struktura również się przesunie", - "create.ponder.rope_pulley_attachment.text_3": "Pamiętaj, że krążki mogą pracować jedynie, jeśli same się nie poruszają", - - "create.ponder.rope_pulley_modes.header": "Tryby ruchu krążków z liną", - "create.ponder.rope_pulley_modes.text_1": "Kiedy krążek przestaje się obracać, przyczepiona do niego struktura staje się z powrotem blokami", - "create.ponder.rope_pulley_modes.text_2": "Można go skonfigurować, aby bloki nigdy nie stawały się stałymi, lub tylko w pozycji początkowej", - - "create.ponder.rotation_speed_controller.header": "Używanie sterownika prędkości obrotu", - "create.ponder.rotation_speed_controller.text_1": "Sterownik prędkości obrotu może przekazywać siłę obrotową z jego osi do dużego koła zębatego ponad nim", - "create.ponder.rotation_speed_controller.text_2": "Patrząc się na jego bok i przewijając można dostosować wyjściową prędkość", - - "create.ponder.sail.header": "Konstruowanie wiatraków z użyciem żagli", - "create.ponder.sail.text_1": "Żagle to bloki przydatne do konstrukcji wiatraków", - "create.ponder.sail.text_2": "Przyłączą się one do innych bloków i żagli, bez potrzeby użycia Super Glue lub stelaży", - "create.ponder.sail.text_3": "Kliknij PPM trzymając barwnik, aby je pomalować", - "create.ponder.sail.text_4": "Kliknij PPM trzymając nożyce, aby usunąć żagiel i zostawić samą ramę", - - "create.ponder.sail_frame.header": "Konstrukcja wiatraków z użyciem ram żagla", - "create.ponder.sail_frame.text_1": "Ramy żagla to bloki przydatne do konstrukcji wiatraków", - "create.ponder.sail_frame.text_2": "Przyłączą się one do innych bloków i ram, bez potrzeby użycia Super Glue lub stelaży", - - "create.ponder.sequenced_gearshift.header": "Kontrolowanie prędkości obrotu z użyciem przekładników sekwencjonalnych", - "create.ponder.sequenced_gearshift.text_1": "Przekładniki sekwencjonalne przekazują obrót poprzez wyznaczoną listę instrukcji", - "create.ponder.sequenced_gearshift.text_2": "Kliknij PPM, aby otworzyć interfejs", - "create.ponder.sequenced_gearshift.text_3": "Kiedy zostanie zasilony Redstonem, rozpocznie wykonywać swoją ustaloną sekwencję", - "create.ponder.sequenced_gearshift.text_4": "Po zakończeniu, czeka na następny sygnał i zaczyna od nowa", - "create.ponder.sequenced_gearshift.text_5": "Komparator może być użyty do odczytania obecnego postępu", - - "create.ponder.shaft.header": "Przekazywanie siły obrotowej z użyciem wałów", - "create.ponder.shaft.text_1": "Wały przekazują siłę obrotową w linii prostej", - - "create.ponder.shaft_casing.header": "Izolowanie wałów", - "create.ponder.shaft_casing.text_1": "Mosiężna lub andezytowa obudowa może być użyta do udekorowania wałów", - - "create.ponder.smart_chute.header": "Sortowanie przedmiotów z użyciem inteligentnych zsypów", - "create.ponder.smart_chute.text_1": "Inteligentny zsyp to pionowy zsyp z dodatkową kontrolą", - "create.ponder.smart_chute.text_2": "Poprzez slot filtrujący można zdecydować, które przedmioty mogą być transportowane", - "create.ponder.smart_chute.text_3": "Użyj rolki w myszce, aby sprecyzować maksymalną wielkość stosu", - "create.ponder.smart_chute.text_4": "Sygnał Redstone zatrzyma działanie inteligentnych zsypów", - - "create.ponder.speedometer.header": "Monitorowanie prędkości obrotu z użyciem prędkościomierza", - "create.ponder.speedometer.text_1": "Prędkościomierz wyświetla obecną prędkość przyłączonych komponentów", - "create.ponder.speedometer.text_2": "Mając na sobie gogle inżyniera, gracz może pozyskać dodatkowe informacje z miernika", - "create.ponder.speedometer.text_3": "Komparatory mogą emitować sygnał Redstone bazując na pomiarach prędkościomierza", - - "create.ponder.stabilized_bearings.header": "Stabilizowanie maszyn", - "create.ponder.stabilized_bearings.text_1": "Kiedy łożyska mechaniczne są częścią ruchomej maszyny...", - "create.ponder.stabilized_bearings.text_2": "...będą utrzymywać swoją obrotową część w pozycji wyjściowej", - "create.ponder.stabilized_bearings.text_3": "Znowu, łożysko przyłączy do siebie bloki znajdujące się przed nim", - "create.ponder.stabilized_bearings.text_4": "Rezultatem tego będzie to, że pod-maszyna będzie utrzymywała się w tej samej pozycji", - - "create.ponder.sticker.header": "Przyczepianie bloków z użyciem przyklejacza", - "create.ponder.sticker.text_1": "Przyklejacze są idealne do kontrolowanego przez Redstone przyczepiania bloków", - "create.ponder.sticker.text_2": "Po otrzymaniu sygnału, zmieni on swoje ułożenie", - "create.ponder.sticker.text_3": "Jeśli jest przesunięty razem z maszyną, przyklejony blok również się przesunie", - "create.ponder.sticker.text_4": "Po ponownym zasileniu blok zostanie odczepiony", - - "create.ponder.stressometer.header": "Monitorowanie obciążenia z użyciem miernika obciążenia", - "create.ponder.stressometer.text_1": "Miernik obciążenia wyświetla odporność na obciążenie systemu, do którego jest podłączony", - "create.ponder.stressometer.text_2": "Mając na sobie gogle inżyniera, gracz może pozyskać dodatkowe informacje z miernika", - "create.ponder.stressometer.text_3": "Komparatory mogą emitować sygnał Redstone bazując na pomiarach miernika", - - "create.ponder.super_glue.header": "Przyklejanie bloków z użycie Super Glue", - "create.ponder.super_glue.text_1": "Super Glue może zostać użyty pomiędzy dwoma blokami", - "create.ponder.super_glue.text_2": "Przyklejone bloki będą przesuwane razem ze strukturą, do której są przyklejone", - "create.ponder.super_glue.text_3": "Kiedy Super Glue jest trzymany w drugiej ręce...", - "create.ponder.super_glue.text_4": "...stawiane bloki będą automatycznie przyklejane", - "create.ponder.super_glue.text_5": "Super Glue może zostać usunięty lewym kliknięciem", - - "create.ponder.valve_handle.header": "Generowanie siły obrotowej z użyciem pokręteł", - "create.ponder.valve_handle.text_1": "Pokrętła mogą być użyte, aby ręcznie wytworzyć siłę obrotową bezpośrednio w miejscu postawienia", - "create.ponder.valve_handle.text_2": "Trzymaj PPM, aby obrócić ją odwrotnie niż wskazówki zegara", - "create.ponder.valve_handle.text_3": "Wytwarzana prędkość jest niewielka, ale pozwala na dokładny obrót", - "create.ponder.valve_handle.text_4": "Trzymaj PPM skradając się, aby obrócić ją zgodnie ze wskazówkami zegara", - "create.ponder.valve_handle.text_5": "Pokrętła mogą być zabarwione dla celów dekoracyjnych", - - "create.ponder.water_wheel.header": "Generowanie siły obrotowej z użyciem kół wodnych", - "create.ponder.water_wheel.text_1": "Koła wodne pobierają energię z prądów wodnych", - "create.ponder.water_wheel.text_2": "Im więcej stron ma dostęp do wody, tym szybciej koło się będzie obracać", - "create.ponder.water_wheel.text_3": "Łopaty koła wodnego powinny być zorientowane przeciwnie do prądu", - "create.ponder.water_wheel.text_4": "Będąc zorientowane z prądem nie będą zbyt efektywne", - - "create.ponder.weighted_ejector.header": "Używanie wyrzutni odważnikowych", - "create.ponder.weighted_ejector.text_1": "Kliknij PPM skradając się i mając w ręce wyrzutnię, aby wybrać jego cel", - "create.ponder.weighted_ejector.text_10": "Od teraz aktywuje się tylko w momencie, jeśli wystarczająca ilość przedmiotów znajdzie się na jego wierzchu", - "create.ponder.weighted_ejector.text_11": "Inne moby zawsze zostaną wyrzucone", - "create.ponder.weighted_ejector.text_2": "Postawiona wyrzutnia będzie strzelała przedmiotami w wybrane miejsce", - "create.ponder.weighted_ejector.text_3": "Cel może być na dowolnej wysokości i odległości w zasięgu wyrzutni", - "create.ponder.weighted_ejector.text_4": "Nie mogą być jednak przesunięte w bok", - "create.ponder.weighted_ejector.text_5": "Jeśli nie wybrano żadnego celu, wyrzuci ona przedmioty na blok bezpośrednio przed sobą", - "create.ponder.weighted_ejector.text_6": "Dostarcz siłę obrotową, aby ją załadować", - "create.ponder.weighted_ejector.text_7": "Przedmioty znajdujące się na jej wierzchu aktywują ją", - "create.ponder.weighted_ejector.text_8": "Jeśli celem jest blok mogący przechowywać przedmioty, wyrzutnia poczeka aż będzie tam miejsce", - "create.ponder.weighted_ejector.text_9": "Używając klucza można wybrać wielkość stosu, jaki ma być wyrzucony", - - "create.ponder.weighted_ejector_redstone.header": "Kontrolowanie wyrzutni odważnikowych z użyciem Redstone'a", - "create.ponder.weighted_ejector_redstone.text_1": "Zasilona Redstonem, wyrzutnia nie aktywuje się", - "create.ponder.weighted_ejector_redstone.text_2": "Ponad to, detektory mogą wykrywać, kiedy wyrzutnia się aktywuje", - - "create.ponder.weighted_ejector_tunnel.header": "Rozdzielanie stosów z użyciem wyrzutni odważnikowych", - "create.ponder.weighted_ejector_tunnel.text_1": "W połączeniu z mosiężnymi tunelami, wyrzutnie mogą", - "create.ponder.weighted_ejector_tunnel.text_2": "Po pierwsze, ustaw tunel na tryb 'Preferuj najbliższy', aby zpriorytetyzować boczne wyjście", - "create.ponder.weighted_ejector_tunnel.text_3": "Wielkość stosu ustawiona na wyrzutni ustala ilość, jaka ma być oddzielona", - "create.ponder.weighted_ejector_tunnel.text_4": "W momencie, kiedy stos o określonym rozmiarze opuści tunel...", - "create.ponder.weighted_ejector_tunnel.text_5": "...pozostała część będzie kontynuować swoją podróż", - - "create.ponder.windmill_source.header": "Generowanie siły obrotowej z użyciem łożysk wiatraka", - "create.ponder.windmill_source.text_1": "Łożysko wiatraka przyczepia do siebie bloki, które znajdują się przed nimi", - "create.ponder.windmill_source.text_2": "Jeśli wystarczająco żaglo-podobnych bloków jest przyłączonych do niego, może działać jak wiatrak", - "create.ponder.windmill_source.text_3": "Po aktywacji prawym kliknięciem, łożysko wiatraka zacznie generować siłę obrotową", - "create.ponder.windmill_source.text_4": "Ilość żagli ustala prędkość obrotu", - "create.ponder.windmill_source.text_5": "Użyj klucza, aby dostosować kierunek obrotu", - "create.ponder.windmill_source.text_6": "Kliknij PPM na łożysko, aby zatrzymać obrót i zmodyfikować dołączoną strukturę", - - "create.ponder.windmill_structure.header": "Wiatraki", - "create.ponder.windmill_structure.text_1": "Każda struktura jest uznawana za wiatrak w momencie, kiedy ma w sobie co najmniej 8 żaglo-podobnych bloków" - -} diff --git a/src/main/resources/assets/create/lang/pt_br.json b/src/main/resources/assets/create/lang/pt_br.json deleted file mode 100644 index aaee8b32c..000000000 --- a/src/main/resources/assets/create/lang/pt_br.json +++ /dev/null @@ -1,608 +0,0 @@ -{ - - "_comment": "-------------------------] GAME ELEMENTS [------------------------------------------------", - - "item.create.wand_of_symmetry": "Varinha de Simetria", - "item.create.handheld_blockzapper": "Blockzapper Portátil", - "item.create.tree_fertilizer": "Fertilizante de Árvore", - "item.create.empty_schematic": "Esquema vazio", - "item.create.andesite_alloy_cube": "Liga de Andesite", - "item.create.blaze_brass_cube": "Latão de Blaze", - "item.create.chorus_chrome_cube": "Coro Cromada", - "item.create.chromatic_compound_cube": "Composto Cromático", - "item.create.shadow_steel_cube": "Aço Sombrio", - "item.create.schematic_and_quill": "Esquema e pena", - "item.create.schematic": "Esquema", - "item.create.belt_connector": "Esteira Mecânica", - "item.create.filter": "Filtro", - "item.create.rose_quartz": "Quartzo Rosa", - "item.create.refined_rose_quartz": "Quartzo Rosa Refinado", - "item.create.refined_radiance_cube": "Esplendor Refinado", - "item.create.iron_sheet": "Placas de Ferro", - "item.create.gold_sheet": "Placas de Outro", - "item.create.propeller": "Hélice", - "item.create.flour": "Farinha de Trigo", - "item.create.dough": "Massa", - - "item.create.blazing_pickaxe": "Picareta Ardente", - "item.create.blazing_shovel": "Pá Ardente", - "item.create.blazing_axe": "Machado Ardente", - "item.create.blazing_sword": "Espada Longa Ardente", - - "item.create.shadow_steel_pickaxe": "Picareta de Aço Sombrio", - "item.create.shadow_steel_mattock": "Enxada de Aço Sombrio", - "item.create.shadow_steel_sword": "Espada de Aço Sombrio", - - "item.create.rose_quartz_pickaxe": "Picareta de Quartzo Dourado", - "item.create.rose_quartz_shovel": "Pá de Quartzo Dourado", - "item.create.rose_quartz_axe": "Machado de Quartzo Dourado", - "item.create.rose_quartz_sword": "Lamina de Quartzo Dourado", - - "block.create.cogwheel": "Roda Dentada", - "block.create.large_cogwheel": "Roda Dentada Grande", - "block.create.turntable": "Mesa giratória", - "block.create.gearbox": "Caixa de Transmissão", - "block.create.gearshift": "Câmbio", - "block.create.clutch": "Embreagem", - "block.create.shaft": "Eixo", - "block.create.encased_belt": "Esteira Revestida", - "block.create.encased_shaft": "Eixo Revestido", - "block.create.encased_fan": "Ventilador Revestida", - "block.create.motor": "Motor", - "block.create.belt": "Esteira Mecânica", - "block.create.crushing_wheel": "Roda de Moer", - "block.create.mechanical_drill": "Furadeira Mecânica", - "block.create.mechanical_harvester": "Coletor Mecânico", - "block.create.water_wheel": "Roda de Água", - "block.create.belt_support": "Suporte da Esteira", - "block.create.mechanical_press": "Prensa Mecânico", - - "block.create.sticky_mechanical_piston": "Pistão Mecânico Grudento", - "block.create.mechanical_piston": "Pistão Mecânico", - "block.create.mechanical_piston_head": "Cabeça do Pistão Mecânico", - "block.create.piston_extension_pole": "Vara de Extensão do Pistão", - "block.create.mechanical_bearing": "Rolamento Mecânico", - "block.create.linear_chassis": "Chassis de Translado", - "block.create.radial_chassis": "Chassis de Rotação", - - "block.create.redstone_contact": "Contato de Redstone", - "block.create.redstone_link": "Conexão de Redstone", - "block.create.stockpile_switch": "Disjuntor de Armazenamento", - "block.create.adjustable_crate": "adjustable_crate", - "block.create.extractor": "Extrator", - "block.create.funnel": "Funil de Esteira", - "block.create.linked_extractor": "Extrator Conectado", - "block.create.pulse_repeater": "Repetidor de Pulso", - "block.create.adjustable_repeater": "Repetidor Flex", - "block.create.belt_observer": "Observador de Esteira", - - "block.create.tiled_glass": "Vidro Entalhado", - "block.create.tiled_glass_pane": "Vidraça Entalhada", - - "block.create.window_in_a_block": "Bloco com Vidraça", - "block.create.andesite_bricks": "Tijolos de Andesite", - "block.create.diorite_bricks": "Tijolos de Diorito", - "block.create.granite_bricks": "Tijolos de Granito", - - "block.create.gabbro": "Gabbro", - "block.create.gabbro_stairs": "Escadas de Gabbro", - "block.create.gabbro_slab": "Lajotas de Gabbro", - "block.create.gabbro_wall": "Muro de Gabbro", - "block.create.polished_gabbro": "Gabbro Polido", - "block.create.gabbro_bricks": "Tijolos de Gabbro", - "block.create.gabbro_bricks_stairs": "Escadas de Tijolos de Gabbro", - "block.create.gabbro_bricks_wall": "Muros de Tijolos de Gabbro", - "block.create.paved_gabbro_bricks": "Tijolos de Gabbros Pavimentados", - "block.create.paved_gabbro_bricks_slab": "Lajotas de Tijolos de Gabbros Pavimentados", - "block.create.indented_gabbro": "Ladrilho Destacado de Gabbro", - "block.create.indented_gabbro_slab": "Lajota Destacada de Gabbro", - "block.create.slightly_mossy_gabbro_bricks": "Tijolos de Gabbros Musgosos", - "block.create.mossy_gabbro_bricks": "Tijolos de Gabbros Musgosos Infestados", - - "block.create.weathered_limestone": "Calcário Resistido", - "block.create.weathered_limestone_stairs": "Escadas de Calcário Resistido", - "block.create.weathered_limestone_wall": " Muro de Calcário Resistido", - "block.create.weathered_limestone_slab": "Lajota de Calcário Resistido", - "block.create.polished_weathered_limestone": "Calcário Polido Resistido", - "block.create.polished_weathered_limestone_slab": "Lajota de Calcário Polido Resistido", - "block.create.weathered_limestone_bricks": "Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_stairs": "Escadas de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_wall": "Muro de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_bricks_slab": "Lajota de Tijolos de Calcário Resistido", - "block.create.weathered_limestone_pillar": "Pilar de Calcário Resistido", - - "block.create.dolomite_pillar": "Pilar de Dolomite", - "block.create.dolomite": "Dolomite", - "block.create.dolomite_stairs": "Escadas de Dolomite", - "block.create.dolomite_wall": "Muro de Dolomite", - "block.create.dolomite_slab": "Lajota de Dolomite", - "block.create.dolomite_bricks": "Tijolos de Dolomite", - "block.create.dolomite_bricks_wall": "Muro de Tijolos de Dolomite", - "block.create.dolomite_bricks_stairs": "Escadas de Tijolos de Dolomite", - "block.create.dolomite_bricks_slab": "Lajotas de Tijolos de Dolomite", - "block.create.polished_dolomite": "Dolomite Polido", - - "block.create.limesand": "Areia Calcária", - "block.create.limestone": "Calcário", - "block.create.limestone_stairs": "Escadas de Calcário", - "block.create.limestone_slab": "Lajotas de Calcário", - "block.create.limestone_wall": "Muro de Calcário", - "block.create.limestone_bricks": "Tijolos de Calcário", - "block.create.limestone_bricks_stairs": "Escadas de Tijolos de Calcário", - "block.create.limestone_bricks_slab": "Lajotas de Tijolos de Calcário", - "block.create.limestone_bricks_wall": "Muro de Tijolos de Calcário", - "block.create.polished_limestone": "Calcário Polido", - "block.create.polished_limestone_slab": "Lajotas de Calcário Polido", - "block.create.limestone_pillar": "Pilar de Calcário", - - "block.create.schematicannon": "Esquemaannon", - "block.create.schematic_table": "Mesa de Esquematizar", - "block.create.creative_crate": "Criativador Esquemaannon", - - "block.create.cocoa_log": "Madeira de Cacao da Selva", - - "block.create.shop_shelf": "Prateleira", - - "_comment": "-------------------------] UI & MESSAGES [------------------------------------------------", - - "death.attack.create.crush": "%1$s foi processado pelas Rodas de Moer", - "death.attack.create.fan_fire": "%1$s foi queimado por ar quente", - "death.attack.create.fan_lava": "%1$s foi queimado pelo ventilador de lava", - "death.attack.create.mechanical_drill": "%1$s foi empalado pela Furadeira Mecânica", - - "create.recipe.crushing": "Moendo", - "create.recipe.splashing": "Lavando em Massa", - "create.recipe.splashing.fan": "Ventilador atras de Água corrente", - "create.recipe.smoking_via_fan": "Fumaceando em Massa", - "create.recipe.smoking_via_fan.fan": "Ventilador atras de Fogo", - "create.recipe.blasting_via_fan": "Fundindo em Massa", - "create.recipe.blasting_via_fan.fan": "Ventilador atras de Lava", - "create.recipe.pressing": "Prensa Mecânica", - "create.recipe.blockzapper_upgrade": "Blockzapper Portátil", - "create.recipe.processing.chance": "%1$s%% de chance", - - "create.generic.range": "Área", - "create.generic.radius": "Raio", - "create.generic.speed": "Velocidade", - "create.generic.delay": "Demorada", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "Segundos", - "create.generic.unit.minutes": "Minutos", - - "create.action.scroll": "Rolar", - "create.action.confirm": "Confirmar", - "create.action.abort": "Abortar", - "create.action.saveToFile": "Salvar", - "create.action.discard": "Descartar", - - "create.keyinfo.toolmenu": "Menu Focal da Ferramenta", - - "create.gui.scrollInput.defaultTitle": "Escolha uma Opção:", - "create.gui.scrollInput.scrollToModify": "Role o mouse para Modificar", - "create.gui.scrollInput.scrollToSelect": "Role o mouse para Selecionar", - "create.gui.scrollInput.shiftRolarsFaster": "Shift para rolar mais rápido", - - "create.gui.toolmenu.focusKey": "Segure [%1$s] para Focar", - "create.gui.toolmenu.cycle": "[SCROLL] para Circular", - - "create.gui.symmetryWand.mirrorType": "Espelhar", - "create.gui.symmetryWand.orientation": "Orientação", - "create.symmetry.mirror.plane": "Espelhar uma vez", - "create.symmetry.mirror.doublePlane": "Retangular", - "create.symmetry.mirror.triplePlane": "Octagonal", - "create.orientation.orthogonal": "Ortogonal", - "create.orientation.diagonal": "Diagonal", - "create.orientation.horizontal": "Horizontal", - "create.orientation.alongZ": "Através de Z", - "create.orientation.alongX": "Através de X", - - "create.gui.blockzapper.title": "Blockzapper Portátil", - "create.gui.blockzapper.replaceMode": "Modo de Substituição", - "create.gui.blockzapper.searchDiagonal": "Seguir as Diagonais", - "create.gui.blockzapper.searchFuzzy": "Ignorar Material nas Bordas", - "create.gui.blockzapper.range": "Raio de Expansão", - "create.gui.blockzapper.patternSection": "Padrões", - "create.gui.blockzapper.pattern.solid": "Sólido", - "create.gui.blockzapper.pattern.checkered": "Xadrez", - "create.gui.blockzapper.pattern.inversecheckered": "Xadrez invertido", - "create.gui.blockzapper.pattern.chance25": "25% de chance", - "create.gui.blockzapper.pattern.chance50": "50% de chance", - "create.gui.blockzapper.pattern.chance75": "75% de chance", - - "create.blockzapper.usingBlock": "Usando: %1$s", - "create.blockzapper.componentUpgrades": "Melhorias do Componente:", - "create.blockzapper.component.body": "Corpo", - "create.blockzapper.component.amplifier": "Amplificador", - "create.blockzapper.component.accelerator": "Acelerador", - "create.blockzapper.component.retriever": "Retornador", - "create.blockzapper.component.scope": "Mira", - "create.blockzapper.componentTier.none": "Nada", - "create.blockzapper.componentTier.blazebrass": "Latão de Blaze", - "create.blockzapper.componentTier.choruschrome": "Coro Cromado", - "create.blockzapper.leftClickToSet": "Botão-Esquerdo em um Bloco para selecionar Material", - "create.blockzapper.empty": "Sem Blocos!", - - "create.logistics.filter": "Filtros", - "create.logistics.firstFrequência": "Freq. #1", - "create.logistics.secondFrequência": "Freq. #2", - - "create.gui.adjustable_crate.title": "adjustable_crate", - "create.gui.adjustable_crate.storageSpace": "Espaço de Armazenamento", - - "create.gui.stockpile_switch.title": "Disjuntor de Armazenamento", - "create.gui.stockpile_switch.lowerLimit": "Limite Mínimo", - "create.gui.stockpile_switch.upperLimit": "Limite Máximo", - "create.gui.stockpile_switch.startAt": "Iniciar Sinal em", - "create.gui.stockpile_switch.startAbove": "Iniciar Sinal acima de", - "create.gui.stockpile_switch.stopAt": "Parar Sinal em", - "create.gui.stockpile_switch.stopBelow": "Parar Sinal abaixo de", - - "create.schematicAndQuill.dimensions": "Tamanho Esquema: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Primeira posição feita.", - "create.schematicAndQuill.secondPos": "Segunda posição feita.", - "create.schematicAndQuill.noTarget": "Seguro [Ctrl] para selecionar Blocos de Ar.", - "create.schematicAndQuill.abort": "Seleção removida.", - "create.schematicAndQuill.prompt": "Informe um nome para o Esquema:", - "create.schematicAndQuill.fallbackName": "Meu Esquema", - "create.schematicAndQuill.saved": "Salvo como %1$s", - - "create.schematic.invalid": "[!] Item Inválido - Use a Mesa de Desenho no lugar", - "create.schematic.position": "Posição", - "create.schematic.rotation": "Rotação", - "create.schematic.rotation.none": "Nada", - "create.schematic.rotation.cw90": "Sentido horário 90", - "create.schematic.rotation.cw180": "Sentido horário 180", - "create.schematic.rotation.cw270": "Sentido horário 270", - "create.schematic.mirror": "Espelhar", - "create.schematic.mirror.none": "Nada", - "create.schematic.mirror.frontBack": "Frente para Trás", - "create.schematic.mirror.leftRight": "Esquerda para Direita", - - "create.schematic.tool.deploy": "Concluir", - "create.schematic.tool.move": "Mover XZ", - "create.schematic.tool.movey": "Mover Y", - "create.schematic.tool.rotate": "Rodar", - "create.schematic.tool.print": "Imprimir", - "create.schematic.tool.flip": "Virar", - - "create.schematic.tool.deploy.description.0": "Move o lugar da estrutura.", - "create.schematic.tool.deploy.description.1": "Botão-direito no chão para colocar.", - "create.schematic.tool.deploy.description.2": "Segure [Ctrl] para selecionar em uma distância fixa.", - "create.schematic.tool.deploy.description.3": "[Ctrl]-Rolar para mudar a distância.", - "create.schematic.tool.move.description.0": "Vira o Esquema Horizontalmente", - "create.schematic.tool.move.description.1": "Aponte ao Esquema e [CTRL]-Rolar para empurrar.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Vira o Esquema Verticalmente", - "create.schematic.tool.movey.description.1": "[CTRL]-Rolar para mover para cima/baixo", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Roda o Esquema em torno do seu centro.", - "create.schematic.tool.rotate.description.1": "[CTRL]-Rolar para rolar 90 Graus", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Coloca estrutura no mundo instantaneamente", - "create.schematic.tool.print.description.1": "[Botão-Direito] para confirmar a posição atual.", - "create.schematic.tool.print.description.2": "Esta ferramenta é para o Modo Criativo apenas.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Gira o Esquema ao longo da face que você selecionar.", - "create.schematic.tool.flip.description.1": "Aponte para o Esquema e [CTRL]-Rolar para virá-lo.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Sincronizando...", - "create.schematics.uploadTooLarge": "Seu esquema é muito grande", - "create.schematics.maxAllowedSize": "O tamanho máximo permitido para o esquema é:", - - "create.gui.schematicTable.title": "Mesa de Desenho", - "create.gui.schematicTable.availableEsquemas": "Esquemas Disponíveis", - "create.gui.schematicTable.noEsquemas": "Nenhum Esquemas salvo", - "create.gui.schematicTable.uploading": "Importando...", - "create.gui.schematicTable.finished": "Envio Concluído!", - - "create.gui.schematicannon.title": "Esquemaannon", - "create.gui.schematicannon.settingsTitle": "Parâmetros de Posicionamento", - "create.gui.schematicannon.listPrinter": "Impressora de Lista de Materiais", - "create.gui.schematicannon.gunpowderLevel": "Pólvora em %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Disparos faltantes: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "Com backup: %1$s", - "create.gui.schematicannon.optionEnabled": "Habilitado Atualmente", - "create.gui.schematicannon.optionDisabled": "Desabilitado Atualmente", - "create.gui.schematicannon.option.dontReplaceSolid": "Não Substituir Blocos Sólidos", - "create.gui.schematicannon.option.replaceWithSolid": "Substituir Blocos Sólidos", - "create.gui.schematicannon.option.replaceWithAny": "Substituir Sólidos com Qualquer", - "create.gui.schematicannon.option.replaceWithEmpty": "Substituir Sólidos com Vazio", - "create.gui.schematicannon.option.skipMissing": "Pulando Blocos faltantes", - "create.gui.schematicannon.option.skipTileEntities": "Proteger Entidades Entalhadas", - - "create.gui.schematicannon.option.skipMissing.description": "Se o Esquemaannon não encontrar o Bloco para colocar, ele irá continuar para a próx. Posição.", - "create.gui.schematicannon.option.skipTileEntities.description": "O Esquemaannon vai evitar substituir blocos que contêm dados como Baus.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "O canhão irá nunca substituir Blocos sólidos na área em trabalho, apenas não-Sólidos e Ar.", - "create.gui.schematicannon.option.replaceWithSolid.description": "O canhão irá apenas substituir Blocos sólidos na área de trabalho, se o Esquema conter um bloco Sólido naquela posição.", - "create.gui.schematicannon.option.replaceWithAny.description": "O canhão irá substituir Blocos sólidos na área de trabalho, se o Esquema conter qualquer Bloco naquela posição.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "O canhão irá limpar todos os blocos na área de trabalho, incluindo os substituídos por Ar.", - - "create.schematicannon.status.idle": "Ocioso", - "create.schematicannon.status.ready": "Pronto", - "create.schematicannon.status.running": "Trabalhando", - "create.schematicannon.status.finished": "Concluído", - "create.schematicannon.status.paused": "Pausado", - "create.schematicannon.status.stopped": "Parada", - "create.schematicannon.status.noPólvora": "Sem Pólvora", - "create.schematicannon.status.targetNotLoaded": "Bloco não carregado", - "create.schematicannon.status.targetOutsideRange": "Alvo está muito Longe", - "create.schematicannon.status.searching": "Procurando", - "create.schematicannon.status.skipping": "Pulando", - "create.schematicannon.status.missingBlock": "Bloco Faltante:", - "create.schematicannon.status.placing": "Colocando", - "create.schematicannon.status.clearing": "Limpando Blocos", - "create.schematicannon.status.schematicInvalid": "Esquema Inválido", - "create.schematicannon.status.schematicNotPlaced": "Esquema não Colocado", - "create.schematicannon.status.schematicExpired": "Arquivo de Esquema Expirado", - - "create.tooltip.holdKey": "Segure [%1$s]", - "create.tooltip.holdKeyOrKey": "Segure [%1$s] or [%2$s]", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - - "_comment": "-------------------------] ITEM DESCRIPTIONS [------------------------------------------------", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "Quando this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And Quando this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "Quando Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "item.create.wand_of_symmetry.tooltip": "VARINHA DE SIMETRIA", - "item.create.wand_of_symmetry.tooltip.summary": "Espelhar perfeitamente a colocação de blocos nos planos configurados.", - "item.create.wand_of_symmetry.tooltip.condition1": "Quando na Hotbar", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Mantem-se Ativo", - "item.create.wand_of_symmetry.tooltip.control1": "B-Direito no Chão", - "item.create.wand_of_symmetry.tooltip.action1": "_Cria_ ou _Move_ o Espelho", - "item.create.wand_of_symmetry.tooltip.control2": "B-Direito no Ar", - "item.create.wand_of_symmetry.tooltip.action2": "_Remove_ o Espelho ativo", - "item.create.wand_of_symmetry.tooltip.control3": "B-Direito enquanto Abaixado", - "item.create.wand_of_symmetry.tooltip.action3": "Abre _Interface_ de _Configuração_", - - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Gadget imaginário para colocar ou substituir blocos a distância.", - "item.create.handheld_blockzapper.tooltip.control1": "B-Esquerdo no Bloco", - "item.create.handheld_blockzapper.tooltip.action1": "Define os blocos colocados pela ferramenta no bloco de destino.", - "item.create.handheld_blockzapper.tooltip.control2": "B-Direito em Bloco", - "item.create.handheld_blockzapper.tooltip.action2": "_Coloca_ ou _Substitui_ o bloco alvo.", - "item.create.handheld_blockzapper.tooltip.control3": "B-Direito equando Abaixado", - "item.create.handheld_blockzapper.tooltip.action3": "Abre _Interface_ de _Configuração_", - - "item.create.tree_fertilizer.tooltip": "FERTILIZANTE DE ARVORE", - "item.create.tree_fertilizer.tooltip.summary": "Uma combinação poderosa de minerais para tipos comuns de arvores", - "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", - - "block.create.cocoa_log.tooltip": "MADEIRA DE COCOA", - "block.create.cocoa_log.tooltip.summary": "Um tronco de selva melhorado para facilitar automação de _Sementes_ _de_ _Cacau_", - "block.create.cocoa_log.tooltip.condition1": "Quando madura", - "block.create.cocoa_log.tooltip.behaviour1": "Cresce _Vagens_ _de_ _Cacau_ em todos os lados", - - "item.create.empty_schematic.tooltip": "ESQUEMA VAZIO", - "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.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.condition1": "Quando Em mãos", - "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.action1": "Abre uma _Interface_ para informar as _Coordenadas_ exatas.", - - "item.create.schematic_and_quill.tooltip": "ESQUEMA E PENA", - "item.create.schematic_and_quill.tooltip.summary": "Usado para salvar uma Estrutura no mundo para um arquivo .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Passo 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Selecione duas coordenadas de extremidade usando B-Direito", - "item.create.schematic_and_quill.tooltip.condition2": "Passo 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl-Rolar_ nas faces para ajustar o tamanho. B-Direito de novo para Salvar.", - "item.create.schematic_and_quill.tooltip.control1": "B-Direito", - "item.create.schematic_and_quill.tooltip.action1": "Selecione um canto / confirmar salvamento", - "item.create.schematic_and_quill.tooltip.control2": "Ctrl Pressionado", - "item.create.schematic_and_quill.tooltip.action2": "Selecione pontos no _meio_ _do_ _ar_. _Rolar_ para ajustar a distância.", - "item.create.schematic_and_quill.tooltip.control3": "B-Direito enquanto Abaixado", - "item.create.schematic_and_quill.tooltip.action3": "_Cancela_ e remove a seleção.", - - "block.create.creative_crate.tooltip": "CRIATIVADOR ESQUEMAANNON", - "block.create.creative_crate.tooltip.summary": "Provê um suprimento infinito de blocos para _Esquemaannons_ próximos", - - "block.create.schematicannon.tooltip": "ESQUEMAANNON", - "block.create.schematicannon.tooltip.summary": "Dispara blocos para recriar um _Esquema_ no Mundo. Usa itens de Inventários adjacentes e _Pólvora_ como combustível.", - "block.create.schematicannon.tooltip.control1": "Quando Apertado com B-Direito", - "block.create.schematicannon.tooltip.action1": "Abre a _Interface_", - - "block.create.schematic_table.tooltip": "MESA DE ESQUEMATIZAR", - "block.create.schematic_table.tooltip.summary": "Escreve Esquemas salvos into um _Esquema_ _Vazio_", - "block.create.schematic_table.tooltip.condition1": "Quando recebe um Esquema Vazio", - "block.create.schematic_table.tooltip.behaviour1": "Importa um Arquivo escolhido da sua Pasta de Esquemas", - - "block.create.shaft.tooltip": "EIXO", - "block.create.shaft.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta.", - - "block.create.cogwheel.tooltip": "RODA DENTADA", - "block.create.cogwheel.tooltip.summary": "_Transmite_ _Rotação_ em uma linha reta, e para _Rodas_ _Dentadas_ adjacentes.", - - "block.create.large_cogwheel.tooltip": "RODA DENTADA GRADE", - "block.create.large_cogwheel.tooltip.summary": "Uma versão maior da _Roda_ _Dentada,_ permitindo mudança na _Velocidade_ de _Rotação_ quando conectada a sua Contraparte.", - - "block.create.encased_shaft.tooltip": "EIXO REVESTIDO", - "block.create.encased_shaft.tooltip.summary": " _Transmite_ _Rotação_ em uma linha reta. Apropriada para propagar Rotação através de Muros.", - - "block.create.gearbox.tooltip": "CAIXA DE TRANSMISSÃO", - "block.create.gearbox.tooltip.summary": "_Transmite_ _Rotação_ em _Quatro_ _direções._ Reverte conexões diretas.", - - "block.create.gearshift.tooltip": "CÂMBIO", - "block.create.gearshift.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para eixos conectados.", - "block.create.gearshift.tooltip.condition1": "Quando Ligado", - "block.create.gearshift.tooltip.behaviour1": "_Inverte_ a rotação de saída.", - - "block.create.clutch.tooltip": "EMBREAGEM", - "block.create.clutch.tooltip.summary": "Um _disjuntor_ de _rotação_ controlável para os eixos conectados.", - "block.create.clutch.tooltip.condition1": "Quando Ligado", - "block.create.clutch.tooltip.behaviour1": "_Para_ de prover rotação para o outro lado.", - - "block.create.encased_belt.tooltip": "ESTEIRA REVESTIDA", - "block.create.encased_belt.tooltip.summary": "_Transmite_ _Rotação_ através de si e para _Esteiras_ _Revestidas_ conectadas.", - "block.create.encased_belt.tooltip.condition1": "Quando Conectadas com outra Esteira Revestida", - "block.create.encased_belt.tooltip.behaviour1": "Bloco Conectado irá ter a mesma velocidade de rotação, na mesma direção. Esteiras Conectadas não precisam estar viradas para mesma direção.", - - "item.create.belt_connector.tooltip": "ESTEIRA MECÂNICA", - "item.create.belt_connector.tooltip.summary": "Conecta dois _Eixos_ com uma _Esteira_ _Mecânica._ Eixos conectados irá ter exatamente a mesma velocidade e direção de rotação. A Esteira pode atuar como um _Transporte_ para _Entidades._", - "item.create.belt_connector.tooltip.control1": "B-Direito em um Eixo", - "item.create.belt_connector.tooltip.action1": "Seleciona o eixo como uma polia da Esteira. Os dois Eixos selecionadas precisam estar _alinhados_ seja na _Vertical,_ _Horizontal_ ou _Diagonal_ na direção da Esteira.", - "item.create.belt_connector.tooltip.control2": "B-Direito enquanto Abaixado", - "item.create.belt_connector.tooltip.action2": "_Cancela_ a seleção da Posição para a Esteira", - - "block.create.belt_support.tooltip": "SUPORTE DA ESTEIRA", - "block.create.belt_support.tooltip.summary": "Apenas um bloco decorativo para montar _Esteiras_ _Mecânicas_ no Chão.", - "block.create.belt_support.tooltip.condition1": "Quando colocado abaixo de uma Esteira", - "block.create.belt_support.tooltip.behaviour1": "Suporta o topo da Esteira, escondendo a parte de baixo.", - - "block.create.motor.tooltip": "MOTOR", - "block.create.motor.tooltip.summary": "Uma fonte de _Força_ _Rotacional_ configurável", - - "block.create.water_wheel.tooltip": "RODA DE ÁGUA", - "block.create.water_wheel.tooltip.summary": "Prove _Força_ _Rotacional_ tirada de _Correntes_ de _Água_ próximas.", - - "block.create.encased_fan.tooltip": "VENTILADO REVESTIDO", - "block.create.encased_fan.tooltip.summary": "Converte _Força_ _Rotacional_ em _Correntes_ de _Ar_ e vice-versa. Muitos usos.", - "block.create.encased_fan.tooltip.condition1": "Quando sobre Fogo", - "block.create.encased_fan.tooltip.behaviour1": "Prove _Força_ _Rotacional_ (precisa ser na vertical)", - "block.create.encased_fan.tooltip.condition2": "Quando Invertido", - "block.create.encased_fan.tooltip.behaviour2": "_Empurra_ Entidades em um lado, _Puxa_ entidades no outro. Força e Velocidade dependem da Rotação de entrada.", - "block.create.encased_fan.tooltip.condition3": "Quando ar flui através de blocos especiais", - "block.create.encased_fan.tooltip.behaviour3": "Processa itens na frente do Bloco: _Água_ alva, _Fogo_ defuma, e _Lava_ derrete o ingrediente.", - - "block.create.turntable.tooltip": "MESA GIRATÓRIA", - "block.create.turntable.tooltip.summary": "Muda a _Força_ _Rotacional_ em uma forma refinada de Enjoo.", - - "block.create.crushing_wheel.tooltip": "RODA DE MOER", - "block.create.crushing_wheel.tooltip.summary": "Grandes rodas giratórias que _esmagam_ qualquer coisa que impeça seu movimento.", - "block.create.crushing_wheel.tooltip.condition1": "Quando conectado a outras Rodas de Moer", - "block.create.crushing_wheel.tooltip.behaviour1": "Forma uma estrutura de esmagamento para processar uma variedade de coisas. Os Dentes da rota precisam estar conectados e se movimentando com a _mesma_ _velocidade_ em _direções_ _opostas._", - - "block.create.mechanical_press.tooltip": "PRENSA MECÂNICA", - "block.create.mechanical_press.tooltip.summary": "Um forte pistão usado para comprimir itens abaixo dele. Precisa de _Força_ _Rotacional_ constante", - "block.create.mechanical_press.tooltip.condition1": "Quando Ligado com Redstone", - "block.create.mechanical_press.tooltip.behaviour1": "_Inicia_ compressão de itens jogados abaixo dele.", - "block.create.mechanical_press.tooltip.condition2": "Quando Sobre uma Esteira Mecânica", - "block.create.mechanical_press.tooltip.behaviour2": "_Automaticamente_ comprime itens que passando na Esteira.", - - "block.create.mechanical_piston.tooltip": "PISTÃO MECÂNICO", - "block.create.mechanical_piston.tooltip.summary": "Uma verão melhorada do _Pistão,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. _Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", - "block.create.mechanical_piston.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", - - "block.create.sticky_mechanical_piston.tooltip": "PISTÃO MECÂNICO GRUDENTO", - "block.create.sticky_mechanical_piston.tooltip.summary": "Uma versão melhorada do _Pistão_ _Grudento,_ usando _Força_ _Rotacional_ para mover estruturas de forma precisa. Varas_ de _Extensão_ do _Pistão_ na traseira definem o _Alcance_ deste Dispositivo. Sem extensões o pistão não se move. Use __Chassis_ de _Translado_ para mover mais de uma linha de blocos.", - "block.create.sticky_mechanical_piston.tooltip.condition1": "Quando Rodado", - "block.create.sticky_mechanical_piston.tooltip.behaviour1": "Começa a mover blocos presos na estrutura. Velocidade e direção diretamente relacionados a Velocidade Rotação de entrada.", - - "block.create.piston_extension_pole.tooltip": "VARA DE EXTENSÃO DO PISTÃO", - "block.create.piston_extension_pole.tooltip.summary": "Aumenta o alcance de _Pistões_ _Mecânicos_", - "block.create.piston_extension_pole.tooltip.condition1": "Quando preso a um Pistão Mecânico", - "block.create.piston_extension_pole.tooltip.behaviour1": "Aumenta a extensão dos pistões em 1 bloco", - - "block.create.mechanical_bearing.tooltip": "ROLAMENTO MECÂNICO", - "block.create.mechanical_bearing.tooltip.summary": "Usado para rotacionar _estruturas_ _grandes_ ou geração de _Força_ _Rotacional_ do vento.", - "block.create.mechanical_bearing.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_bearing.tooltip.behaviour1": "Começa a rotacionar _Chassis_ de _Rotação_ conectados e blocos conectados a eles.", - "block.create.mechanical_bearing.tooltip.condition2": "Quando Ligado por Redstone", - "block.create.mechanical_bearing.tooltip.behaviour2": "Começa a passar _Força_ _Rotacional_ das estruturas conectadas. A estrutura dele incluir _Blocos_ de _Vela_ válidos (atualmente qualquer Bloco de Lã).", - - "block.create.linear_chassis.tooltip": "CHASSIS DE TRANSLADO", - "block.create.linear_chassis.tooltip.summary": "Uma base configurável para Estruturas serem movidas por um _Pistão_ _Mecânico._ Esses Blocos precisam formas uma camada de blocos na frente do Pistão.", - "block.create.linear_chassis.tooltip.condition1": "Quando movido por Pistão Mecânico", - "block.create.linear_chassis.tooltip.behaviour1": "_Move_ todos os _Chassis_ _conectados_ na mesma orientação, e Blocos conectados a frente dele. Quando o Pistão volta, blocos apenas serão puxados se a face do chassis for _Grudenta_ (Ver [Ctrl]).", - "block.create.linear_chassis.tooltip.control1": "Quando clicado com B-Direito com Gosma de Slime", - "block.create.linear_chassis.tooltip.action1": "Torna a face clicada _Grudenta._ Quando o pistão volta, o chassis irá _puxar_ _junto_ todos os Blocos conectados na sua coluna e no Alcance configurado.", - - "block.create.radial_chassis.tooltip": "CHASSIS DE ROTAÇÃO", - "block.create.radial_chassis.tooltip.summary": "Nessário para rotacionar estruturas om um _Rolamento_ _Mecânico._ ", - "block.create.radial_chassis.tooltip.condition1": "Quando Rotacionado por Rolamento", - "block.create.radial_chassis.tooltip.behaviour1": "_Rotaciona_ todos os blocos conectados a lados _Grudentos_ (Veja [Ctrl]) dentro do alcance configurado no seu entorno. _Propaga_ a rotação para outros Chassis de Rotação conectados.", - "block.create.radial_chassis.tooltip.control1": "Quando clicado com B-Direito com Goma de Slime", - "block.create.radial_chassis.tooltip.action1": "Torna face clicada em _Grudenta._ Quando o Chassis girar, todos os blocos conectados nesse lado irão girar junto.", - - "block.create.mechanical_drill.tooltip": "FURADEIRA MECÂNICA", - "block.create.mechanical_drill.tooltip.summary": "Um dispositivo mecânido feito para _quebrar_ _blocos._", - "block.create.mechanical_drill.tooltip.condition1": "Quando Rodado", - "block.create.mechanical_drill.tooltip.behaviour1": "Atua como um Bloco Quebrador _estacionário._ Também _machuca_ _entidades_ na sua área de efeito.", - "block.create.mechanical_drill.tooltip.condition2": "Quando Empurrado por Pistão Mecânico", - "block.create.mechanical_drill.tooltip.behaviour2": "Quebra os Blocos na direção do avanço da broca.", - - "block.create.mechanical_harvester.tooltip": "COLETOR MECÂNICO", - "block.create.mechanical_harvester.tooltip.summary": "Um cortador de plantas mecânico indicado para automação de culturas de médio porte", - "block.create.mechanical_harvester.tooltip.condition1": "Quando Empurrado por Pistão Mecânico", - "block.create.mechanical_harvester.tooltip.behaviour1": "_Colhe_ todas as _safra_ _madura_ que a lâmina passar sobre, e os retorna a estado de crescimento inicial.", - - "block.create.stockpile_switch.tooltip": "DISJUNTOR DE ARMAZENAMENTO", - "block.create.stockpile_switch.tooltip.summary": "Alterna um sinal de Redstone com base no _Espaço_ de _Armazenamento_ do Reciente conectado.", - "block.create.stockpile_switch.tooltip.condition1": "Quando abaixo do Limite Mínimo", - "block.create.stockpile_switch.tooltip.behaviour1": "Para de enviar _Sinal_ de _Redstone_", - "block.create.stockpile_switch.tooltip.condition2": "Quando acima do Limite Máximo", - "block.create.stockpile_switch.tooltip.behaviour2": "Começa a enviar _Sinal_ de _Redstone_ até chegar no Limite Mínio novamente.", - "block.create.stockpile_switch.tooltip.control1": "Quando clicado com B-Direito", - "block.create.stockpile_switch.tooltip.action1": "Abre a _Interface_ de _Configuração_", - - "block.create.redstone_link.tooltip": "CONEXÃO DE REDSTONE", - "block.create.redstone_link.tooltip.summary": "Saida para conexões _Redstone_ _Sem-Fio._ Pode ter _Frequências_ usando qualquer item. Distancia do Sinal é limitada, mas resoavelmente justa.", - "block.create.redstone_link.tooltip.condition1": "Quando Ligado", - "block.create.redstone_link.tooltip.behaviour1": "Recebendo Conexões da mesma _Frequência_ irá gerar um sinal de Redstone.", - "block.create.redstone_link.tooltip.control1": "Quando clicado com B-Direito com um Item", - "block.create.redstone_link.tooltip.action1": "Altera a _Frequência_ para aquele item. Até _dois_ _itens_ _diferentes_ podem ser combinados para definir uma Frequência.", - "block.create.redstone_link.tooltip.control2": "Quando clicado com B-Direito enquanto Abaixado", - "block.create.redstone_link.tooltip.action2": "Muda entre Modo _Receptor_ e _Transmissor_ .", - - "block.create.redstone_contact.tooltip": "CONTATO DE REDSTONE", - "block.create.redstone_contact.tooltip.summary": "Um dispositivo simples para Mecanimos de Redstone avançados.", - "block.create.redstone_contact.tooltip.condition1": "Quando apontando para outro Contato", - "block.create.redstone_contact.tooltip.behaviour1": "Provê um _Sinal_ de _Redstone_", - "block.create.redstone_contact.tooltip.condition2": "Quando movido por Pistão Mecânico", - "block.create.redstone_contact.tooltip.behaviour2": "Ativa todos os Contatos imóveis na passagem", - - "block.create.adjustable_crate.tooltip": "adjustable_crate", - "block.create.adjustable_crate.tooltip.summary": "Este _Recipiente_ de _Armazenamento_ permite controle Manual da sua capacidade. Pode conter até _16_ _Pilhas_ de qualquer Item", - "block.create.adjustable_crate.tooltip.control1": "Quando clicado com B-Direito", - "block.create.adjustable_crate.tooltip.action1": "Abre a _Interface_", - - "block.create.extractor.tooltip": "EXTRATOR", - "block.create.extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ conectado e os joga no chão. Não irá jogar Itens até o espaço ser limpo. Pode ser configurado como para ser um _filtro._", - "block.create.extractor.tooltip.condition1": "Quando Ligado por Redstone", - "block.create.extractor.tooltip.behaviour1": "_Para_ o Extractor", - "block.create.extractor.tooltip.control1": "B-Direito no Espaço de Filtro", - "block.create.extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", - - "block.create.linked_extractor.tooltip": "EXTRATOR CONECTADO", - "block.create.linked_extractor.tooltip.summary": "_Pega_ _itens_ de um _Inventário_ e os joga no chão. Não vai jogar Itens até que o espaço ser limpo. Pode ser configurado como para ser um _filtro._ Pode ser controlado remotamente via _Conexão_ de _Redstone._", - "block.create.linked_extractor.tooltip.condition1": "Quando Conexão de Redstone Ativa", - "block.create.linked_extractor.tooltip.behaviour1": "_Para_ o Extrator", - "block.create.linked_extractor.tooltip.control1": "B-Direito no Espaço de Filtro", - "block.create.linked_extractor.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Extrator irá apenas puxar apenas _tipo_ e _quantidade_ do item filtro.", - "block.create.linked_extractor.tooltip.control2": "B-Direito no Espaço de Frequência", - "block.create.linked_extractor.tooltip.action2": "Configura a _pilha_ atualmente _presente_ como parte da Frequência a ouvir. Quando um _Conexão_ de _Redstone_ transmissor da mesma frequência é ligado, esse Extrator irá parar.", - - "block.create.funnel.tooltip": "FUNIL DE ESTEIRA", - "block.create.funnel.tooltip.summary": "Coleta itens passando numa _Esteira_ _Mecânica_ e os insere no _Inventário_ conetado, se possível. Precisa estar diretamente _sobre_ uma Esteira, com a abertura virada contra o movimento da Esteira. O inventário precisa estar na mesma altura que o funil.", - - "block.create.belt_observer.tooltip": "OBSERVADOR DE ESTEIRA", - "block.create.belt_observer.tooltip.summary": "Detecta os itens passando numa _Esteira_ _Mecânica_ a sua frente. Funciona bem com um _Pistão_ em cima, empurrando certos itens.", - "block.create.belt_observer.tooltip.condition1": "Quando item bate com Filtro", - "block.create.belt_observer.tooltip.behaviour1": "Provê um _Pulso_ curto de _Redstone_ para todos os lados. Um Filtro vazio considera todos os itens passando.", - "block.create.belt_observer.tooltip.control1": "B-Direito em um Espaço de Filtro", - "block.create.belt_observer.tooltip.action1": "Configura a _pilha_ atualmente _presente_ como um _Filtro._ Observador irá reagir apenas a esse tipo de item.", - - "block.create.pulse_repeater.tooltip": "REPETIDOR DE PULSO", - "block.create.pulse_repeater.tooltip.summary": "Um circuito simples para cortar pulsos de Redstone até um comprimento de _1_ _tick._", - - "block.create.adjustable_repeater.tooltip": "REPETIDOR FLEX", - "block.create.adjustable_repeater.tooltip.summary": "Um um _Repetidor_ de _Redstone_ avançado com um _Delay_ _configurável_ de até 30 Minutos.", - - "itemGroup.create": "Create" -} diff --git a/src/main/resources/assets/create/lang/ru_ru.json b/src/main/resources/assets/create/lang/ru_ru.json deleted file mode 100644 index d88a93c3d..000000000 --- a/src/main/resources/assets/create/lang/ru_ru.json +++ /dev/null @@ -1,1497 +0,0 @@ -{ - - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "Акациевое окно", - "block.create.acacia_window_pane": "Панель из акациевого окна", - "block.create.adjustable_chain_gearshift": "Регулируемый цепной механизм", - "block.create.adjustable_crate": "Регулируемый ящик", - "block.create.adjustable_pulse_repeater": "Регулируемый импульсный повторитель", - "block.create.adjustable_repeater": "Регулируемый повторитель", - "block.create.analog_lever": "Аналоговый рычаг", - "block.create.andesite_belt_funnel": "Андезитовая конвейерная воронка", - "block.create.andesite_bricks": "Андезитовый кирпич", - "block.create.andesite_bricks_slab": "Плита из андезитового кирпича", - "block.create.andesite_bricks_stairs": "Ступени из андезитового кирпича", - "block.create.andesite_bricks_wall": "Стена из андезитового кирпича", - "block.create.andesite_casing": "Андезитовый корпус", - "block.create.andesite_cobblestone": "Андезит-булыжник", - "block.create.andesite_cobblestone_slab": "Андезит-булыжниковая плита", - "block.create.andesite_cobblestone_stairs": "Андезит-булыжниковые ступени", - "block.create.andesite_cobblestone_wall": "Андезит-булыжниковая стена", - "block.create.andesite_encased_shaft": "Вал в андезитовом корпусе", - "block.create.andesite_funnel": "Андезитовая воронка", - "block.create.andesite_pillar": "Андезитовая колонна", - "block.create.andesite_tunnel": "Андезитовый туннель", - "block.create.basin": "Чаша", - "block.create.belt": "Конвейер", - "block.create.birch_window": "Берёзовое окно", - "block.create.birch_window_pane": "Панель берёзового окна", - "block.create.black_sail": "Чёрный парус", - "block.create.black_seat": "Чёрное сиденье", - "block.create.black_valve_handle": "Чёрный ручной вентиль", - "block.create.blaze_burner": "Горелка Всполоха", - "block.create.blue_sail": "Синий парус", - "block.create.blue_seat": "Синее сиденье", - "block.create.blue_valve_handle": "Синий ручной вентиль", - "block.create.brass_belt_funnel": "Латунная конвейерная воронка", - "block.create.brass_block": "Латунный блок", - "block.create.brass_casing": "Латунный корпус", - "block.create.brass_encased_shaft": "Вал в латунном корпусе", - "block.create.brass_funnel": "Латунная воронка", - "block.create.brass_tunnel": "Латунный туннель", - "block.create.brown_sail": "Коричневый парус", - "block.create.brown_seat": "Коричневое сиденье", - "block.create.brown_valve_handle": "Коричневый ручной вентиль", - "block.create.cart_assembler": "Сборщик вагонеток", - "block.create.chiseled_dark_scoria": "Резной тёмный пепел", - "block.create.chiseled_dolomite": "Резной доломит", - "block.create.chiseled_gabbro": "Резной габбро", - "block.create.chiseled_limestone": "Резной известняк", - "block.create.chiseled_scoria": "Резной пепел", - "block.create.chiseled_weathered_limestone": "Выветренный резной известняк", - "block.create.chocolate": "Шоколад", - "block.create.chute": "Желоб", - "block.create.clockwork_bearing": "Часовой механизм", - "block.create.clutch": "Сцепление", - "block.create.cogwheel": "Шестерня", - "block.create.content_observer": "Наблюдетель за содержимым", - "block.create.controller_rail": "Контролирующая рельса", - "block.create.copper_block": "Медный блок", - "block.create.copper_casing": "Медный корпус", - "block.create.copper_ore": "Медная руда", - "block.create.copper_shingles": "Медная черепица", - "block.create.copper_tiles": "Медная плитка", - "block.create.copper_valve_handle": "Медный ручной вентиль", - "block.create.creative_crate": "Творческий ящик", - "block.create.creative_fluid_tank": "Творческий жидкостный бак", - "block.create.creative_motor": "Творческий мотор", - "block.create.crimson_window": "Багровое окно", - "block.create.crimson_window_pane": "Панель из багрового окна", - "block.create.crushing_wheel": "Колесо дробления", - "block.create.crushing_wheel_controller": "Контроллер колеса дробления", - "block.create.cuckoo_clock": "Часы с кукушкой", - "block.create.cyan_sail": "Бирюзовый парус", - "block.create.cyan_seat": "Бирюзовое сииденье", - "block.create.cyan_valve_handle": "Бирюзовый ручной вентиль", - "block.create.dark_oak_window": "Окно из тёмного дуба", - "block.create.dark_oak_window_pane": "Панель из окна из тёмного дуб", - "block.create.dark_scoria": "Тёмный пепел", - "block.create.dark_scoria_bricks": "Тёмный пепельный кирпич", - "block.create.dark_scoria_bricks_slab": "Плита из тёмного пепельного кирпича", - "block.create.dark_scoria_bricks_stairs": "Ступени из тёмного пепельного кирпича", - "block.create.dark_scoria_bricks_wall": "Стена из тёмного пепельного кирпича", - "block.create.dark_scoria_cobblestone": "Ступени из тёмного пепел-булыжника", - "block.create.dark_scoria_cobblestone_slab": "Плита из тёмного пепел-булыжника", - "block.create.dark_scoria_cobblestone_stairs": "Ступени из тёмного пепел-булыжника", - "block.create.dark_scoria_cobblestone_wall": "Стена из тёмного пепел-булыжника", - "block.create.dark_scoria_pillar": "Колонна из тёмного пепел-булыжника", - "block.create.deployer": "Автономный активатор", - "block.create.depot": "Депо", - "block.create.diorite_bricks": "Диоритовый кирпич", - "block.create.diorite_bricks_slab": "Плита из диоритового кирпича", - "block.create.diorite_bricks_stairs": "Ступени из диоритового кирпича", - "block.create.diorite_bricks_wall": "Стена из диоритового кирпича", - "block.create.diorite_cobblestone": "Диорит-булыжник", - "block.create.diorite_cobblestone_slab": "Плита из диорит-булыжника", - "block.create.diorite_cobblestone_stairs": "Ступени из диорит-булыжника", - "block.create.diorite_cobblestone_wall": "Стена из диорит-булыжника", - "block.create.diorite_pillar": "Диоритовая колонна", - "block.create.dolomite": "Доломит", - "block.create.dolomite_bricks": "Доломитовый кирпич", - "block.create.dolomite_bricks_slab": "Плита из доломитового кирпича", - "block.create.dolomite_bricks_stairs": "Ступени из доломитового кирпича", - "block.create.dolomite_bricks_wall": "Стена из доломитового кирпича", - "block.create.dolomite_cobblestone": "Доломит-булыжник", - "block.create.dolomite_cobblestone_slab": "Плита доломит-булыжника", - "block.create.dolomite_cobblestone_stairs": "Ступени доломит-булыжника", - "block.create.dolomite_cobblestone_wall": "Стена доломит-булыжника", - "block.create.dolomite_pillar": "Доломитовая колонна", - "block.create.encased_chain_drive": "Цепной привод в корпусе", - "block.create.encased_fan": "Вентилятор в корпусе", - "block.create.encased_fluid_pipe": "Жидкостная труба в корпусе", - "block.create.fancy_andesite_bricks": "Красивый андезитовый кирпич", - "block.create.fancy_andesite_bricks_slab": "Плита из красивого андезитового кирпича", - "block.create.fancy_andesite_bricks_stairs": "Ступени из красивого андезитового кирпича", - "block.create.fancy_andesite_bricks_wall": "Стена из красивого андезитового кирпича", - "block.create.fancy_dark_scoria_bricks": "Красивый тёмный пепельный кирпич", - "block.create.fancy_dark_scoria_bricks_slab": "Плита из красивого тёмного пепельного кирпича", - "block.create.fancy_dark_scoria_bricks_stairs": "Ступени из красивого тёмного пепельного кирпича", - "block.create.fancy_dark_scoria_bricks_wall": "Стена из красивого тёмного пепельного кирпича", - "block.create.fancy_diorite_bricks": "Красивый диоритовый кирпич", - "block.create.fancy_diorite_bricks_slab": "Плита из красивого диоритового кирпича", - "block.create.fancy_diorite_bricks_stairs": "Ступени из красивого диоритового кирпича", - "block.create.fancy_diorite_bricks_wall": "Стена из красивого диоритового кирпича", - "block.create.fancy_dolomite_bricks": "Красивый доломитовый кирпич", - "block.create.fancy_dolomite_bricks_slab": "Плита из красивого доломитового кирпича", - "block.create.fancy_dolomite_bricks_stairs": "Ступени из красивого доломитового кирпича", - "block.create.fancy_dolomite_bricks_wall": "Стена из красивого доломитового кирпича", - "block.create.fancy_gabbro_bricks": "Красивый габбро кирпич", - "block.create.fancy_gabbro_bricks_slab": "Плита из красивого габбро кирпича", - "block.create.fancy_gabbro_bricks_stairs": "Ступени из красивого габбро кирпича", - "block.create.fancy_gabbro_bricks_wall": "Стена из красивого габбро кирпича", - "block.create.fancy_granite_bricks": "Красивый гранитный кирпич", - "block.create.fancy_granite_bricks_slab": "Плита из красивого гранитного кирпича", - "block.create.fancy_granite_bricks_stairs": "Ступени из красивого гранитного кирпича", - "block.create.fancy_granite_bricks_wall": "Стена красивого гранитного кирпича", - "block.create.fancy_limestone_bricks": "Красивый известняковый кирпич", - "block.create.fancy_limestone_bricks_slab": "Плита из красивого известнякового кирпича", - "block.create.fancy_limestone_bricks_stairs": "Ступени из красивого известнякового кирпича", - "block.create.fancy_limestone_bricks_wall": "Стена из красивого известнякового кирпича", - "block.create.fancy_scoria_bricks": "Красивый пепельный кирпич", - "block.create.fancy_scoria_bricks_slab": "Плита из красивого пепельного кирпича", - "block.create.fancy_scoria_bricks_stairs": "Ступени из красивого пепельного кирпича", - "block.create.fancy_scoria_bricks_wall": "Стена из красивого пепельного кирпича", - "block.create.fancy_weathered_limestone_bricks": "Красивый выветренный известняковый кирпич", - "block.create.fancy_weathered_limestone_bricks_slab": "Плита из красивого выветренного известнякового кирпича", - "block.create.fancy_weathered_limestone_bricks_stairs": "Ступени из красивого выветренного известнякового кирпича", - "block.create.fancy_weathered_limestone_bricks_wall": "Стена из красивого выветренного известнякового кирпича", - "block.create.fluid_pipe": "Жидкостная труба", - "block.create.fluid_tank": "Жидкостный бак", - "block.create.fluid_valve": "Жидкостный клапан", - "block.create.flywheel": "Маховик", - "block.create.framed_glass": "Обрамлённое стекло", - "block.create.framed_glass_pane": "Обрамлённая стеклянная панель", - "block.create.furnace_engine": "Печной двигатель", - "block.create.gabbro": "Габбро", - "block.create.gabbro_bricks": "Габбровый кирпич", - "block.create.gabbro_bricks_slab": "Плита из габбро кирпича", - "block.create.gabbro_bricks_stairs": "Ступени из габбро кирпича", - "block.create.gabbro_bricks_wall": "Стена из габбро кирпича", - "block.create.gabbro_cobblestone": "Габбро-булыжник", - "block.create.gabbro_cobblestone_slab": "Плита из габбро-булыжника", - "block.create.gabbro_cobblestone_stairs": "Ступени из габбро-булыжника", - "block.create.gabbro_cobblestone_wall": "Стена из габбро-булыжника", - "block.create.gabbro_pillar": "Габбро колонна", - "block.create.gearbox": "Коробка передач", - "block.create.gearshift": "Реверсивный механизм", - "block.create.glass_fluid_pipe": "Стеклянная жидкостная труба", - "block.create.granite_bricks": "Гранитный кирпич", - "block.create.granite_bricks_slab": "Плита из гранитного кирпича", - "block.create.granite_bricks_stairs": "Ступени из гранитного кирпича", - "block.create.granite_bricks_wall": "Стена из гранитного кирпича", - "block.create.granite_cobblestone": "Гранит-булыжник", - "block.create.granite_cobblestone_slab": "Плита из гранит-булыжника", - "block.create.granite_cobblestone_stairs": "Ступени из гранит-булыжника", - "block.create.granite_cobblestone_wall": "Стена из гранит-булыжника", - "block.create.granite_pillar": "Гранитная колонна", - "block.create.gray_sail": "Серый парус", - "block.create.gray_seat": "Серое сиденье", - "block.create.gray_valve_handle": "Серый ручной вентиль", - "block.create.green_sail": "Зелёный парус", - "block.create.green_seat": "Зелёное сиденье", - "block.create.green_valve_handle": "Зелёный ручной вентиль", - "block.create.hand_crank": "Рукоятка", - "block.create.honey": "Мёд", - "block.create.horizontal_framed_glass": "Горизонтальное обрамлённое стекло", - "block.create.horizontal_framed_glass_pane": "Горизонтальная обрамлённая стеклянная панель", - "block.create.hose_pulley": "Шкив с шлангом", - "block.create.item_drain": "Предметный осушитель", - "block.create.jungle_window": "Окно из тропического дерева", - "block.create.jungle_window_pane": "Панель окна из тропического дерева", - "block.create.large_cogwheel": "Большая шестерня", - "block.create.layered_andesite": "Слоистый андезит", - "block.create.layered_dark_scoria": "Слоистый тёмный пепел", - "block.create.layered_diorite": "Слоистый диорит", - "block.create.layered_dolomite": "Слоистый доломит", - "block.create.layered_gabbro": "Слоистый габбро", - "block.create.layered_granite": "Слоистый гранит", - "block.create.layered_limestone": "Слоистый известняк", - "block.create.layered_scoria": "Слоистый пепел", - "block.create.layered_weathered_limestone": "Слоистый выветренный известняк", - "block.create.light_blue_sail": "Голубой парус", - "block.create.light_blue_seat": "Голубое сиденье", - "block.create.light_blue_valve_handle": "Голубой ручной вентиль", - "block.create.light_gray_sail": "Светло-серый парус", - "block.create.light_gray_seat": "Светло-серое сиденье", - "block.create.light_gray_valve_handle": "Светло-серый ручной вентиль", - "block.create.lime_sail": "Лаймовый парус", - "block.create.lime_seat": "Лаймовое сиденье", - "block.create.lime_valve_handle": "Лаймовый ручной вентиль", - "block.create.limesand": "Известковый песок", - "block.create.limestone": "Известняк", - "block.create.limestone_bricks": "Известняковый кирпич", - "block.create.limestone_bricks_slab": "Плита из известнякового кирпича", - "block.create.limestone_bricks_stairs": "Ступени из известнякового кирпича", - "block.create.limestone_bricks_wall": "Стена из известнякового кирпича", - "block.create.limestone_cobblestone": "Известняк-булыжник", - "block.create.limestone_cobblestone_slab": "Плита из известняк-булыжника", - "block.create.limestone_cobblestone_stairs": "Ступени из известняк-булыжника", - "block.create.limestone_cobblestone_wall": "Стена из известняк-булыжника", - "block.create.limestone_pillar": "Известковая колонна", - "block.create.linear_chassis": "Линейное шасси", - "block.create.lit_blaze_burner": "Зажжёная горелка Всполоха", - "block.create.magenta_sail": "Пурпурный парус", - "block.create.magenta_seat": "Пурпурное сиденье", - "block.create.magenta_valve_handle": "Пурпурный ручной вентиль", - "block.create.mechanical_arm": "Механическая рука", - "block.create.mechanical_bearing": "Механический вращатель", - "block.create.mechanical_crafter": "Механический крафтер", - "block.create.mechanical_drill": "Механическая дрель", - "block.create.mechanical_harvester": "Механический комбайн", - "block.create.mechanical_mixer": "Механический смешиватель", - "block.create.mechanical_piston": "Механический поршень", - "block.create.mechanical_piston_head": "Механическая головка поршня", - "block.create.mechanical_plough": "Механический плуг", - "block.create.mechanical_press": "Механический пресс", - "block.create.mechanical_pump": "Механическая помпа", - "block.create.mechanical_saw": "Механическая пила", - "block.create.metal_bracket": "Металлическая скоба", - "block.create.millstone": "Жернов", - "block.create.minecart_anchor": "Вагонеточный якорь", - "block.create.mossy_andesite": "Замшелый андезит", - "block.create.mossy_dark_scoria": "Замшелый тёмный пепел", - "block.create.mossy_diorite": "Замшелый диорит", - "block.create.mossy_dolomite": "Замшелый доломит", - "block.create.mossy_gabbro": "Замшелый габбро", - "block.create.mossy_granite": "Замшелый гранит", - "block.create.mossy_limestone": "Замшелый известняк", - "block.create.mossy_scoria": "Замшелый пепел", - "block.create.mossy_weathered_limestone": "Замшелый выветренный известняк", - "block.create.mysterious_cuckoo_clock": "Часы с кукушкой", - "block.create.natural_scoria": "Натуральный пепел", - "block.create.nixie_tube": "Газоразрядный индикатор", - "block.create.nozzle": "Форсунка", - "block.create.oak_window": "Дубовое окно", - "block.create.oak_window_pane": "Панель из дубового окна", - "block.create.orange_sail": "Оранжевый парус", - "block.create.orange_seat": "Оранжевое сиденье", - "block.create.orange_valve_handle": "Оранжевый ручной вентиль", - "block.create.ornate_iron_window": "Украшенное железное окно", - "block.create.ornate_iron_window_pane": "Панель из украшенного железного окна", - "block.create.overgrown_andesite": "Заросший андезит", - "block.create.overgrown_dark_scoria": "Заросший тёмный пепел", - "block.create.overgrown_diorite": "Заросший диорит", - "block.create.overgrown_dolomite": "Заросший доломит", - "block.create.overgrown_gabbro": "Заросший габбро", - "block.create.overgrown_granite": "Заросший гранит", - "block.create.overgrown_limestone": "Заросший известняк", - "block.create.overgrown_scoria": "Заросший пепел", - "block.create.overgrown_weathered_limestone": "Заросший выветренный известняк", - "block.create.paved_andesite": "Мощёный андезит", - "block.create.paved_andesite_slab": "Плита из мощёного андезита", - "block.create.paved_andesite_stairs": "Ступени из мощёного андезита", - "block.create.paved_andesite_wall": "Стена из мощёного андезита", - "block.create.paved_dark_scoria": "Мощёный тёмный пепел", - "block.create.paved_dark_scoria_slab": "Плита из мощёного пепла", - "block.create.paved_dark_scoria_stairs": "Ступени из мощёного пепла", - "block.create.paved_dark_scoria_wall": "Стена из мощёного тёмного пепла", - "block.create.paved_diorite": "Мощёный диорит", - "block.create.paved_diorite_slab": "Плита из мощёного диорита", - "block.create.paved_diorite_stairs": "Ступени из мощёного диорита", - "block.create.paved_diorite_wall": "Стена из мощёного диорита", - "block.create.paved_dolomite": "Мощёный доломит", - "block.create.paved_dolomite_slab": "Плита из мощёного доломита", - "block.create.paved_dolomite_stairs": "Ступени из мощёного доломита", - "block.create.paved_dolomite_wall": "Стена из мощёного доломита", - "block.create.paved_gabbro": "Мощёный габбро", - "block.create.paved_gabbro_slab": "Плита из мощёного габбро", - "block.create.paved_gabbro_stairs": "Ступени из мощёного габбро", - "block.create.paved_gabbro_wall": "Стена из мощёного габбро", - "block.create.paved_granite": "Мощёный гранит", - "block.create.paved_granite_slab": "Плита из мощёного гранита", - "block.create.paved_granite_stairs": "Ступени из мощёного гранита", - "block.create.paved_granite_wall": "Стена из мощёного гранита", - "block.create.paved_limestone": "Мощёный известняк", - "block.create.paved_limestone_slab": "Плита из мощёного известняка", - "block.create.paved_limestone_stairs": "Ступени из мощёного известняка", - "block.create.paved_limestone_wall": "Стена из мощёного известняка", - "block.create.paved_scoria": "Мощёный пепел", - "block.create.paved_scoria_slab": "Плита из мощёного пепла", - "block.create.paved_scoria_stairs": "Ступени из мощёного пепла", - "block.create.paved_scoria_wall": "Стена из мощёного пепла", - "block.create.paved_weathered_limestone": "Мощёный выветренный известняк", - "block.create.paved_weathered_limestone_slab": "Плита из мощёного выветренного известняка", - "block.create.paved_weathered_limestone_stairs": "Ступени из мощёного выветренного известняка", - "block.create.paved_weathered_limestone_wall": "Стена из мощёного выветренного известняка", - "block.create.pink_sail": "Розовый парус", - "block.create.pink_seat": "Розовое сиденье", - "block.create.pink_valve_handle": "Розовый ручной вентиль", - "block.create.piston_extension_pole": "Удлинитель поршня", - "block.create.polished_dark_scoria": "Полированный тёмный пепел", - "block.create.polished_dark_scoria_slab": "Плита из полированного тёмного пепла", - "block.create.polished_dark_scoria_stairs": "Ступени из полированного тёмного пепла", - "block.create.polished_dark_scoria_wall": "Стена из полированного тёмного пепла", - "block.create.polished_dolomite": "Полированный доломит", - "block.create.polished_dolomite_slab": "Плита из полированного доломита", - "block.create.polished_dolomite_stairs": "Ступени из полированного доломита", - "block.create.polished_dolomite_wall": "Стена из полированного доломита", - "block.create.polished_gabbro": "Полированный габро", - "block.create.polished_gabbro_slab": "Плита из полированного габро", - "block.create.polished_gabbro_stairs": "Ступени из полированного габро", - "block.create.polished_gabbro_wall": "Стена из полированного габро", - "block.create.polished_limestone": "Полированный известняк", - "block.create.polished_limestone_slab": "Плита из полированного известняка", - "block.create.polished_limestone_stairs": "Ступени из полированного известняка", - "block.create.polished_limestone_wall": "Стена из полированного известняка", - "block.create.polished_scoria": "Полированный пепел", - "block.create.polished_scoria_slab": "Плита из полированного пепла", - "block.create.polished_scoria_stairs": "Ступени из полированного пепла", - "block.create.polished_scoria_wall": "Стена из полированного пепла", - "block.create.polished_weathered_limestone": "Полированный выветренный известняк", - "block.create.polished_weathered_limestone_slab": "Плита из полированного выветренного известняка", - "block.create.polished_weathered_limestone_stairs": "Ступени из полированного выветренного известняка", - "block.create.polished_weathered_limestone_wall": "Стена из полированного выветренного известняка", - "block.create.portable_fluid_interface": "Портативный жидкостный интерфейс", - "block.create.portable_storage_interface": "Портативный интерфейс хранения", - "block.create.powered_latch": "Механизированная защёлка", - "block.create.powered_toggle_latch": "Механизированная рычаг-защёлка", - "block.create.pulley_magnet": "Магнитный шкив", - "block.create.pulse_repeater": "Импульсный повторитель", - "block.create.purple_sail": "Фиолетовый парус", - "block.create.purple_seat": "Фиолетовое сиденье", - "block.create.purple_valve_handle": "Фиолетовый ручной вентиль", - "block.create.radial_chassis": "Радиальное шасси", - "block.create.red_sail": "Красный парус", - "block.create.red_seat": "Красное сиденье", - "block.create.red_valve_handle": "Красный ручной вентиль", - "block.create.redstone_contact": "Контакт сигнала красного камня", - "block.create.redstone_link": "Беспроводной передатчик сигнала красного камня", - "block.create.refined_radiance_casing": "Сияющий корпус", - "block.create.reinforced_rail": "Усиленные рельсы", - "block.create.rope": "Канат", - "block.create.rope_pulley": "Лебёдка", - "block.create.rotation_speed_controller": "Регулятор скорости вращения", - "block.create.sail_frame": "Рама паруса", - "block.create.schematic_table": "Схематичный стол", - "block.create.schematicannon": "Схематичная пушка", - "block.create.scoria": "Пепел", - "block.create.scoria_bricks": "Пепельный кирпич", - "block.create.scoria_bricks_slab": "Плита из пепельного кирпича", - "block.create.scoria_bricks_stairs": "Ступени из пепельного кирпича", - "block.create.scoria_bricks_wall": "Стена из пепельного кирпича", - "block.create.scoria_cobblestone": "Пепел-булыжник", - "block.create.scoria_cobblestone_slab": "Плита из пепел-булыжника", - "block.create.scoria_cobblestone_stairs": "Ступени из пепел-булыжника", - "block.create.scoria_cobblestone_wall": "Стена из пепел-булыжника", - "block.create.scoria_pillar": "Колонна из пепла", - "block.create.secondary_linear_chassis": "Вторичное линейное шасси", - "block.create.sequenced_gearshift": "Последовательный переключатель передач", - "block.create.shadow_steel_casing": "Теневой корпус", - "block.create.shaft": "Вал", - "block.create.smart_chute": "Умный желоб", - "block.create.smart_fluid_pipe": "Умная жидкостная труба", - "block.create.speedometer": "Спидометр", - "block.create.spout": "Дозатор", - "block.create.spruce_window": "Еловое окно", - "block.create.spruce_window_pane": "Панель из елового окна", - "block.create.sticker": "Блок-липучка", - "block.create.sticky_mechanical_piston": "Липкий механический поршень", - "block.create.stockpile_switch": "Настраиваемый компаратор", - "block.create.stressometer": "Динамометр", - "block.create.tiled_glass": "Плиточное стекло", - "block.create.tiled_glass_pane": "Плиточная стеклянная панель", - "block.create.turntable": "Поворотный стол", - "block.create.vertical_framed_glass": "Вертикальное обрамлённое стекло", - "block.create.vertical_framed_glass_pane": "Вертикальная обрамлённая стеклянная панель", - "block.create.warped_window": "Искаженное окно", - "block.create.warped_window_pane": "Панель из искаженного окна", - "block.create.water_wheel": "Водяное колесо", - "block.create.weathered_limestone": "Выветренный известняк", - "block.create.weathered_limestone_bricks": "Выветренный известняковый кирпич", - "block.create.weathered_limestone_bricks_slab": "Плита из выветренного известнякового кирпича", - "block.create.weathered_limestone_bricks_stairs": "Ступени из выветренного известнякового кирпича", - "block.create.weathered_limestone_bricks_wall": "Стена из выветренного известнякового кирпича", - "block.create.weathered_limestone_cobblestone": "Выветренный известняк-булыжник", - "block.create.weathered_limestone_cobblestone_slab": "Плита из известняк-булыжника", - "block.create.weathered_limestone_cobblestone_stairs": "Ступени из известняк-булыжника", - "block.create.weathered_limestone_cobblestone_wall": "Стена из известняк-булыжника", - "block.create.weathered_limestone_pillar": "Колонна из выветренного известняка", - "block.create.weighted_ejector": "Взвешенная катапульта", - "block.create.white_sail": "Белый парус", - "block.create.white_seat": "Белое сиденье", - "block.create.white_valve_handle": "Белый ручной вентиль", - "block.create.windmill_bearing": "Подшипник ветряной мельницы", - "block.create.wooden_bracket": "Деревянная скоба", - "block.create.yellow_sail": "Жёлтый парус", - "block.create.yellow_seat": "Жёлтое сиденье", - "block.create.yellow_valve_handle": "Жёлтый ручной вентиль", - "block.create.zinc_block": "Цинковый блок", - "block.create.zinc_ore": "Цинковая руда", - - "entity.create.contraption": "Штуковина", - "entity.create.seat": "Сиденье", - "entity.create.stationary_contraption": "Стационарная штуковина", - "entity.create.super_glue": "Супер-клей", - - "fluid.create.chocolate": "Шоколад", - "fluid.create.honey": "Мёд", - "fluid.create.milk": "Молоко", - "fluid.create.potion": "Зелье", - "fluid.create.tea": "Чай Строителя", - - "item.create.andesite_alloy": "Андезитовый сплав", - "item.create.attribute_filter": "Фильтр атрибутов", - "item.create.bar_of_chocolate": "Плитка шоколада", - "item.create.belt_connector": "Механический ремень", - "item.create.blaze_cake": "Торт Всполоха", - "item.create.blaze_cake_base": "Основа торта Всполоха", - "item.create.brass_hand": "Латунная рука", - "item.create.brass_ingot": "Латунный слиток", - "item.create.brass_nugget": "Кусочек латуни", - "item.create.brass_sheet": "Латунный лист", - "item.create.builders_tea": "Чай Строителя", - "item.create.chest_minecart_contraption": "Сундуко-вагонеточная штуковина", - "item.create.chocolate_bucket": "Ведро шоколада", - "item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури", - "item.create.chromatic_compound": "Хроматический компаунд", - "item.create.cinder_flour": "Незераковая пыль", - "item.create.copper_ingot": "Медный слиток", - "item.create.copper_nugget": "Кусочек меди", - "item.create.copper_sheet": "Медный лист", - "item.create.crafter_slot_cover": "Крышка на слот крафтера", - "item.create.crushed_aluminum_ore": "Измельчённая алюминиевая руда", - "item.create.crushed_brass": "Дроблёная латунь", - "item.create.crushed_copper_ore": "Дроблёная медная руда", - "item.create.crushed_gold_ore": "Дроблёная золотая руда", - "item.create.crushed_iron_ore": "Дроблёная железная руда", - "item.create.crushed_lead_ore": "Дроблёная свинцовая руда", - "item.create.crushed_nickel_ore": "Дроблёная никелевая руда", - "item.create.crushed_osmium_ore": "Дроблёная осмиевая руда", - "item.create.crushed_platinum_ore": "Дроблёная платиновая руда", - "item.create.crushed_quicksilver_ore": "Дроблёная ртутная руда", - "item.create.crushed_silver_ore": "Дроблёная серебрянная руда", - "item.create.crushed_tin_ore": "Дроблёная оловянная руда", - "item.create.crushed_uranium_ore": "Дроблёная урановая руда", - "item.create.crushed_zinc_ore": "Дроблёная цинковая руда", - "item.create.deforester": "Уничтожитель леса", - "item.create.dough": "Тесто", - "item.create.electron_tube": "Электронная лампа", - "item.create.empty_blaze_burner": "Пустая горелека Всполоха", - "item.create.empty_schematic": "Пустая схематика", - "item.create.extendo_grip": "Удлинённая рука", - "item.create.filter": "Фильтр", - "item.create.furnace_minecart_contraption": "Печно-вагонеточная штуковина", - "item.create.goggles": "Инженерные очки", - "item.create.golden_sheet": "Золотой лист", - "item.create.handheld_blockzapper": "Ручная блоковая пушка", - "item.create.handheld_worldshaper": "Ручной редактор мира", - "item.create.honey_bucket": "Ведро мёда", - "item.create.honeyed_apple": "Яблоко в меду", - "item.create.integrated_circuit": "Интегральная схема", - "item.create.iron_sheet": "Железный лист", - "item.create.lapis_sheet": "Лазуритовый лист", - "item.create.minecart_contraption": "Вагонеточная штуковина", - "item.create.minecart_coupling": "Связыватель вагонеток", - "item.create.polished_rose_quartz": "Полированный розовый кварц", - "item.create.powdered_obsidian": "Порошкообразный обсидиан", - "item.create.propeller": "Пропеллер", - "item.create.red_sand_paper": "Красная наждачная бумага", - "item.create.refined_radiance": "Изысканное сияние", - "item.create.rose_quartz": "Розовый кварц", - "item.create.sand_paper": "Наждачная бумага", - "item.create.schematic": "Схематика", - "item.create.schematic_and_quill": "Схематика и перо", - "item.create.shadow_steel": "Призрачная сталь", - "item.create.super_glue": "Супер-клей", - "item.create.sweet_roll": "Сладкий рулет", - "item.create.tree_fertilizer": "Удобрение для деревьев", - "item.create.vertical_gearbox": "Вертикальная коробка передач", - "item.create.wand_of_symmetry": "Жезл симметрии", - "item.create.wheat_flour": "Пшеничная мука", - "item.create.whisk": "Венчик", - "item.create.wrench": "Гаечный ключ", - "item.create.zinc_ingot": "Цинковый слиток", - "item.create.zinc_nugget": "Кусочек цинка", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "Добро пожаловать в Create", - "advancement.create.root.desc": "Пришло время начать строить некоторые удивительные штуковины!", - "advancement.create.andesite_alloy": "Повторение - мать учения", - "advancement.create.andesite_alloy.desc": "Материалы Create имеют странные названия, одно из них - Андезитовый сплав", - "advancement.create.its_alive": "Оно живое!", - "advancement.create.its_alive.desc": "Смастерите ваш первый кинетический компонент вращения.", - "advancement.create.shifting_gears": "Механизм переключения", - "advancement.create.shifting_gears.desc": "Подсоедините большую шестерню к шестерне, что позволит изменить скорость вращения.", - "advancement.create.overstressed": "Перегрузка", - "advancement.create.overstressed.desc": "Столкнитесь с предельной перегрузкой лицом к лицу.", - "advancement.create.belt": "Передайте за проезд!", - "advancement.create.belt.desc": "Соедините два вала с помощью механического ремня.", - "advancement.create.tunnel": "В укрытие!", - "advancement.create.tunnel.desc": "Украсьте свой конвейер туннелем.", - "advancement.create.splitter_tunnel": "Разделяй и властвуй", - "advancement.create.splitter_tunnel.desc": "Создайте разделитель из группы латунных туннелей.", - "advancement.create.chute": "Упало", - "advancement.create.chute.desc": "Разместите желоб, вертикальный аналог конвейера.", - "advancement.create.upward_chute": "Воздушное похищение", - "advancement.create.upward_chute.desc": "Посмотрите как предмет засасывается в желоб с вентилятором.", - "advancement.create.belt_funnel": "Болтающиеся воронки", - "advancement.create.belt_funnel.desc": "Поместите воронку боком, сверху конвейера или депо, чтобы создать её специальный тип.", - "advancement.create.belt_funnel_kiss": "Механический ужин", - "advancement.create.belt_funnel_kiss.desc": "Заставте две смонтированные на ремнях воронки поцеловаться.", - "advancement.create.fan": "Механический маг воздуха", - "advancement.create.fan.desc": "Оседлайте поток воздуха от Венитлятора.", - "advancement.create.fan_lava": "Геотермальный пространственный нагреватель", - "advancement.create.fan_lava.desc": "Попадите в поток воздуха, плавящего вещи.", - "advancement.create.fan_water": "Сумасшедшая мойка", - "advancement.create.fan_water.desc": "Попадите в поток воздуха, моющего вещи.", - "advancement.create.fan_smoke": "Механические меха", - "advancement.create.fan_smoke.desc": "Попадите в поток воздуха, коптящего вещи.", - "advancement.create.wrench": "Конфигурировать удобно", - "advancement.create.wrench.desc": "Создайте гаечный ключ, чтобы помочь себе в создании изобретений.", - "advancement.create.goggles": "Стресс-о-зрение", - "advancement.create.goggles.desc": "Создайте инженерные очки, чтобы получить больше кинетической информации о компонентах.", - "advancement.create.speedometer": "Так быстро?", - "advancement.create.speedometer.desc": "Поставьте и подключите спидометр. Посмотрите на спидометр через очки, чтобы прочитать точное значение.", - "advancement.create.stressometer": "Так сильно?", - "advancement.create.stressometer.desc": "Поставьте и подключите динамометр. Посмотрите на динамометр через очки, чтобы прочитать точное значение.", - "advancement.create.aesthetics": "Бах! Эстетично!", - "advancement.create.aesthetics.desc": "Разместите скобы на валу, трубе или шестерне.", - "advancement.create.reinforced": "Бах! Усилено!", - "advancement.create.reinforced.desc": "Разместите подходящий блок корпуса на вал, трубу и конвейер.", - "advancement.create.water_wheel": "Гидравлика", - "advancement.create.water_wheel.desc": "Поставьте водяное колесо и попытайтесь заставить его вращаться!", - "advancement.create.chocolate_wheel": "Вкусная сила", - "advancement.create.chocolate_wheel.desc": "Зпустите водяное колесо с помощью раплавленного шоколада.", - "advancement.create.lava_wheel": "Адское колесо", - "advancement.create.lava_wheel.desc": "Это не должно было работать.", - "advancement.create.cuckoo": "Уже?", - "advancement.create.cuckoo.desc": "Станьте свидетелем того, как часы с кукушкой объявляют время сна.", - "advancement.create.millstone": "Карманная дробилка", - "advancement.create.millstone.desc": "Поставьте и приведите в действие жернов", - "advancement.create.windmill": "Ветерок", - "advancement.create.windmill.desc": "Соберите ветряную мельницу.", - "advancement.create.maxed_windmill": "Сильный ветер", - "advancement.create.maxed_windmill.desc": "Соберите ветряную мельницу максимальной силы.", - "advancement.create.andesite_casing": "Андезитовый век", - "advancement.create.andesite_casing.desc": "Используйте немного андезитового сплава и дерева для создания корпуса.", - "advancement.create.mechanical_drill": "Стационарные выключатели", - "advancement.create.mechanical_drill.desc": "Установите и приведите в действие механическую дрель", - "advancement.create.press": "Пресс делает «Бонк!»", - "advancement.create.press.desc": "Приведите механический пресс в действие и используйте его для создания пластин.", - "advancement.create.polished_rose_quartz": "Розовый алмаз", - "advancement.create.polished_rose_quartz.desc": "Используйте кусок наждачной бумаги, чтобы отполировать розовый кварц, пока он не станет прозрачным.", - "advancement.create.electron_tube": "Бип бип", - "advancement.create.electron_tube.desc": "Сделайте несколько электронных ламп, пригодных для изготовления менее примитивных машин.", - "advancement.create.mechanical_saw": "Стационарная рубка", - "advancement.create.mechanical_saw.desc": "Поставьте и подключите механическую пилу", - "advancement.create.basin": "Операция в чаше", - "advancement.create.basin.desc": "Поставьте чашу и попытайтесь бросить в неё предметы.", - "advancement.create.mixer": "Смешать, но не взбалтывать", - "advancement.create.mixer.desc": "Поставьте механический смешиватель над чашей, подключите его и начните смешивать некоторые ингредиенты.", - "advancement.create.blaze_burner": "Живая печка", - "advancement.create.blaze_burner.desc": "Получить Горелку Всполоха", - "advancement.create.compact": "Автоматическое уплотнение", - "advancement.create.compact.desc": "Используйте пресс и чашу для уплотнения некоторых предметов.", - "advancement.create.brass": "Действительный сплав", - "advancement.create.brass.desc": "Используйте дроблёную медь и дроблёный цинк, чтобы создать немного латуни.", - "advancement.create.brass_casing": "Бронзовый век", - "advancement.create.brass_casing.desc": "Используйте только что полученную латунь и немного дерева, чтобы создать более продвинутый корпус.", - "advancement.create.copper_casing": "Медный век", - "advancement.create.copper_casing.desc": "Используйте несколько медных листов для создания медного корпуса.", - "advancement.create.spout": "Буль", - "advancement.create.spout.desc": "Посмотрите как предмет наполняется с помощью Дозатора.", - "advancement.create.spout_potion": "Основательная пивоварня", - "advancement.create.spout_potion.desc": "Посмотрите как Дозатор наполняет бутылку зельем.", - "advancement.create.chocolate": "Сказочный мир", - "advancement.create.chocolate.desc": "Получите ведро расплавленного шоколада.", - "advancement.create.item_drain": "Осушение", - "advancement.create.item_drain.desc": "Посмотрите как жидкость выкачивается из предмета, в Предметном осушителе.", - "advancement.create.chained_item_drain": "Поехали!", - "advancement.create.chained_item_drain.desc": "Наблюдайте за тем как предмет едет через несколько соединённых предметных осушителей.", - "advancement.create.glass_pipe": "Поточный шпион", - "advancement.create.glass_pipe.desc": "Наблюдайте через окно в трубе за тем как распространяется жидкость. Окно появится на трубе при использовании гаечного ключа.", - "advancement.create.pipe_collision": "Никогда не скрещивайте потоки!", - "advancement.create.pipe_collision.desc": "Наблюдайте за тем как две жидкости встречаются в вашей сети труб.", - "advancement.create.pipe_spill": "Протечка!", - "advancement.create.pipe_spill.desc": "Посмотрите как открытый конец трубы забирает или размещает блоки жидкости в мире.", - "advancement.create.hose_pulley": "Промышленный полив", - "advancement.create.hose_pulley.desc": "Опустите шланг и смотрите как он высасывает или заполнят пространство жидкостью.", - "advancement.create.infinite_water": "Осушение океана", - "advancement.create.infinite_water.desc": "Выкачивайте воду из резервуара, считающегося бесконечным.", - "advancement.create.infinite_lava": "Уничтожение ядра", - "advancement.create.infinite_lava.desc": "Выкачивайте лаву из бассейна, считающегося бесконечным.", - "advancement.create.infinite_chocolate": "Утопая в воображении", - "advancement.create.infinite_chocolate.desc": "Выкачивайте раславленный шоколад из резервуара, считающегося бесконечным.", - "advancement.create.crafter": "Автоматизированная сборка", - "advancement.create.crafter.desc": "Поставьте и подключите механический крафтер", - "advancement.create.clockwork_bearing": "Хитрые часы", - "advancement.create.clockwork_bearing.desc": "Соберите структуру, расположенную на часовом механизме.", - "advancement.create.nixie_tube": "Признаки стиля", - "advancement.create.nixie_tube.desc": "Получите и разместите пару Газоразрядных индикаторов.", - "advancement.create.deployer": "Тыкайте, ставьте и атакуйте", - "advancement.create.deployer.desc": "Приведите в действие автономный активатор, идеальное отражение себя.", - "advancement.create.speed_controller": "Его ненавидят инженеры!", - "advancement.create.speed_controller.desc": "Установите регулятор скорости вращения, идеальное устройство для переключения передач.", - "advancement.create.flywheel": "Сердце фабрики", - "advancement.create.flywheel.desc": "Успешно соедините двигатель с маховиком.", - "advancement.create.overstress_flywheel": "Перенапряжение", - "advancement.create.overstress_flywheel.desc": "Подайте слишком большую нагрузку на печной двигатель.", - "advancement.create.integrated_circuit": "Сложные вычисления", - "advancement.create.integrated_circuit.desc": "Создайте Интегральную схему.", - "advancement.create.mechanical_arm": "Золотые руки!", - "advancement.create.mechanical_arm.desc": "Создайте Механическую руку, выбирете входы и выходы, установите в мире и запитайте. Затем смотрите как она делает за вас всю работу.", - "advancement.create.musical_arm": "Сбацай что-нибудь!", - "advancement.create.musical_arm.desc": "Посмотрите как механическая рука меняет пластинки.", - "advancement.create.arm_many_targets": "Организатор", - "advancement.create.arm_many_targets.desc": "Запрограммируйте механическую руку на 10 и больше выходов.", - "advancement.create.arm_blaze_burner": "Поджигатель", - "advancement.create.arm_blaze_burner.desc": "Запрограммируйте механическую руку на кормление Горелки Всполоха.", - "advancement.create.fist_bump": "Брось это, братан!", - "advancement.create.fist_bump.desc": "Сделайте два удара кулаком.", - "advancement.create.crushing_wheel": "Пара гигантов", - "advancement.create.crushing_wheel.desc": "Создайте несколько дробящих колес, чтобы более эффективно разрушать больше материалов.", - "advancement.create.blaze_cake": "Сахарная лихорадка", - "advancement.create.blaze_cake.desc": "Испеките особый торт для вашей Горелки Всполоха.", - "advancement.create.chromatic_compound": "Биполярные минералы", - "advancement.create.chromatic_compound.desc": "Создайте хроматический компаунд", - "advancement.create.shadow_steel": "Возвращение пустоты", - "advancement.create.shadow_steel.desc": "Создайте призрачную сталь, металлический слиток небытия.", - "advancement.create.refined_radiance": "Яркий и вдохновляющий", - "advancement.create.refined_radiance.desc": "Создайте изысканное сияние, мощное хроматическое вещество.", - "advancement.create.chromatic_age": "Хроматический век", - "advancement.create.chromatic_age.desc": "Создайте блоки корпуса из света и тьмы.", - "advancement.create.zapper": "Строительство со стилем", - "advancement.create.zapper.desc": "Создайте ручную блоковую пушку, которая поможет вам строить.", - "advancement.create.upgraded_zapper": "Сияющий овердрайв", - "advancement.create.upgraded_zapper.desc": "Создайте и активируйте полностью модернизированную ручную блоковую пушку.", - "advancement.create.wand_of_symmetry": "Сияющие зеркала", - "advancement.create.wand_of_symmetry.desc": "Создайте жезл симметрии.", - "advancement.create.deforester": "Лучистая рубка", - "advancement.create.deforester.desc": "Создайте уничтожитель леса и попрощайтесь с местным лесом.", - "advancement.create.extendo_grip": "Кипение!", - "advancement.create.extendo_grip.desc": "Возьмите в руки удлинённую руку", - "advancement.create.dual_extendo_grip": "Окончательное выкипание", - "advancement.create.dual_extendo_grip.desc": "Две удлинённых руки для сверхчеловеческого охвата.", - "advancement.create.eob": "Конец бета-версии", - "advancement.create.eob.desc": "Ожидайте больше контента здесь в будущем. <3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "Create: Механизмы", - "itemGroup.create.palettes": "Create: Декор", - - "death.attack.create.crush": "%1$s был передроблен", - "death.attack.create.fan_fire": "%1$s был сожжен до смерти горячим воздухом", - "death.attack.create.fan_lava": "%1$s был сожжен до смерти поклонником лавы", - "death.attack.create.mechanical_drill": "%1$s был пронзен с помощью механической дрели", - "death.attack.create.mechanical_saw": "%1$s был разрезан пополам механической пилой", - "death.attack.create.cuckoo_clock_explosion": "%1$s взорвали подделанные часы с кукушкой", - - "create.block.deployer.damage_source_name": "автономным активатором", - "create.block.cart_assembler.invalid": "Поместите сборщик вагонеток на блок рельс", - - "create.recipe.crushing": "Измельчение", - "create.recipe.milling": "Помол", - "create.recipe.fan_washing": "Массовая промывка", - "create.recipe.fan_washing.fan": "Вентилятор за текущей водой", - "create.recipe.fan_smoking": "Массовое копчение", - "create.recipe.fan_smoking.fan": "Вентилятор за горящим огнём", - "create.recipe.fan_blasting": "Массовое плавление", - "create.recipe.fan_blasting.fan": "Вентилятор за текущей лавой", - "create.recipe.pressing": "Прессование", - "create.recipe.mixing": "Смешивание", - "create.recipe.automatic_shapeless": "Автоматическая бесформенная сборка", - "create.recipe.automatic_brewing": "Автоматическое смешивание", - "create.recipe.packing": "Прессование", - "create.recipe.automatic_packing": "Автоматическая упаковка", - "create.recipe.sawing": "Распиливание", - "create.recipe.mechanical_crafting": "Механическое создание", - "create.recipe.automatic_shaped": "Автоматическая форменная сборка", - "create.recipe.block_cutting": "Резка блока", - "create.recipe.blockzapper_upgrade": "Ручная блоковая пушка", - "create.recipe.sandpaper_polishing": "Полировка наждачной бумагой", - "create.recipe.mystery_conversion": "Хроматический метаморфоз", - "create.recipe.spout_filling": "Заполнение дозатором", - "create.recipe.draining": "Осушение предметов", - "create.recipe.processing.chance": "%1$s%% шанса", - "create.recipe.heat_requirement.none": "Не требует нагрева", - "create.recipe.heat_requirement.heated": "Нагрето", - "create.recipe.heat_requirement.superheated": "Перегрето", - - "create.generic.range": "Диапазон", - "create.generic.radius": "Радиус", - "create.generic.width": "Ширина", - "create.generic.height": "Высота", - "create.generic.length": "Длина", - "create.generic.speed": "Скорость", - "create.generic.delay": "Задержка", - "create.generic.unit.ticks": "тиков", - "create.generic.unit.seconds": "секунд", - "create.generic.unit.minutes": "минут", - "create.generic.unit.rpm": "об./мин.", - "create.generic.unit.stress": "Н*м", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "По часовой стрелке", - "create.generic.counter_clockwise": "Против часовой стрелки", - - "create.action.scroll": "Прокрутка", - "create.action.confirm": "Подтвердить", - "create.action.abort": "Прервать", - "create.action.saveToFile": "Сохранить", - "create.action.discard": "Отказаться", - - "create.keyinfo.toolmenu": "Меню инструмента фокусировки", - "create.keyinfo.scrollup": "Имитация движения мыши вверх (в мире)", - "create.keyinfo.scrolldown": "Имитация движения мыши вниз (в мире)", - - "create.gui.scrollInput.defaultTitle": "Выбрать опцию:", - "create.gui.scrollInput.scrollToModify": "Прокрутите, чтобы изменить", - "create.gui.scrollInput.scrollToAdjustAmount": "Прокрутите, чтобы настроить количество", - "create.gui.scrollInput.scrollToSelect": "Прокрутите, чтобы выбрать", - "create.gui.scrollInput.shiftScrollsFaster": "Нажмите Shift для быстрой прокрутки", - "create.gui.toolmenu.focusKey": "Удерживайте [%1$s] для смены задач", - "create.gui.toolmenu.cycle": "[Прокрутка] для переключения", - "create.gui.symmetryWand.mirrorType": "Зеркало", - "create.gui.symmetryWand.orientation": "Ориентация", - - "create.symmetry.mirror.plane": "Одинарное", - "create.symmetry.mirror.doublePlane": "Двойное", - "create.symmetry.mirror.triplePlane": "Тройное", - - "create.orientation.orthogonal": "Перпендикуляр.", - "create.orientation.diagonal": "Диагональ.", - "create.orientation.horizontal": "Горизонталь.", - "create.orientation.alongZ": "Вдоль Z", - "create.orientation.alongX": "Вдоль X", - - "create.gui.blockzapper.title": "Ручная блоковая пушка", - "create.gui.blockzapper.replaceMode": "Режим замены", - "create.gui.blockzapper.searchDiagonal": "Следовать по диагонали", - "create.gui.blockzapper.searchFuzzy": "Игнорировать границы материала", - "create.gui.blockzapper.range": "Диапазон распространения", - "create.gui.blockzapper.needsUpgradedAmplifier": "Требуется модернизированный усилитель", - "create.gui.blockzapper.patternSection": "Шаблон", - "create.gui.blockzapper.pattern.solid": "Всё", - "create.gui.blockzapper.pattern.checkered": "Шахматная доска", - "create.gui.blockzapper.pattern.inversecheckered": "Перевернутая шахматная доска", - "create.gui.blockzapper.pattern.chance25": "25% крен", - "create.gui.blockzapper.pattern.chance50": "50% крен", - "create.gui.blockzapper.pattern.chance75": "75% крен", - "create.gui.terrainzapper.title": "Ручной редактор мира", - "create.gui.terrainzapper.placement": "Размещение", - "create.gui.terrainzapper.placement.merged": "Слитый", - "create.gui.terrainzapper.placement.attached": "Прикреплённый", - "create.gui.terrainzapper.placement.inserted": "Вставленный", - "create.gui.terrainzapper.brush": "Обычный", - "create.gui.terrainzapper.brush.cuboid": "Куб", - "create.gui.terrainzapper.brush.sphere": "Сфера", - "create.gui.terrainzapper.brush.cylinder": "Цилиндр", - "create.gui.terrainzapper.tool": "Инструмент", - "create.gui.terrainzapper.tool.fill": "Заполнить", - "create.gui.terrainzapper.tool.place": "Поставить", - "create.gui.terrainzapper.tool.replace": "Заменить", - "create.gui.terrainzapper.tool.clear": "Очистить", - "create.gui.terrainzapper.tool.overlay": "Наложение", - "create.gui.terrainzapper.tool.flatten": "Выравнивание", - - "create.terrainzapper.shiftRightClickToSet": "ПКМ крадучись, чтобы выбрать форму", - - "create.blockzapper.usingBlock": "С помощью: %1$s", - "create.blockzapper.componentUpgrades": "Обновления компонентов:", - "create.blockzapper.component.body": "Корпус", - "create.blockzapper.component.amplifier": "Усилитель", - "create.blockzapper.component.accelerator": "Ускоритель", - "create.blockzapper.component.retriever": "Поисковик", - "create.blockzapper.component.scope": "Объем", - "create.blockzapper.componentTier.none": "Нет", - "create.blockzapper.componentTier.brass": "Латунный", - "create.blockzapper.componentTier.chromatic": "Хроматический", - "create.blockzapper.leftClickToSet": "Щелкните ЛКМ по блоку, чтобы выбрать материал", - "create.blockzapper.empty": "Вне блоков!", - - "create.minecart_coupling.two_couplings_max": "Вагонетки могут иметь только две связи", - "create.minecart_coupling.unloaded": "Кажется, часть вашего поезда в незагруженных чанках", - "create.minecart_coupling.no_loops": "Связыватели не могут образовывать петлю", - "create.minecart_coupling.removed": "Убраны все связи между вагонетками", - "create.minecart_coupling.too_far": "Вагонетки слишком далеко друг от друга", - - "create.contraptions.movement_mode": "Режим движения", - "create.contraptions.movement_mode.move_place": "Всегда ставить при остановке", - "create.contraptions.movement_mode.move_place_returned": "Ставить только в исходное положение", - "create.contraptions.movement_mode.move_never_place": "Ставить только, когда якорь уничтожен", - "create.contraptions.movement_mode.rotate_place": "Всегда ставить при остановке", - "create.contraptions.movement_mode.rotate_place_returned": "Только место возле начального угла", - "create.contraptions.movement_mode.rotate_never_place": "Только место, когда якорь уничтожен", - "create.contraptions.cart_movement_mode": "Режим движения вагонетки", - "create.contraptions.cart_movement_mode.rotate": "Всегда лицом к движению", - "create.contraptions.cart_movement_mode.rotate_paused": "Пауза во время вращения", - "create.contraptions.cart_movement_mode.rotation_locked": "Блокировка вращения", - "create.contraptions.windmill.rotation_direction": "Направление вращения", - "create.contraptions.clockwork.clock_hands": "Стрелки часов", - "create.contraptions.clockwork.hour_first": "Сначала часовая стрелка", - "create.contraptions.clockwork.minute_first": "Сначала минутная стрелка", - "create.contraptions.clockwork.hour_first_24": "Сначала 24-часовая стрелка", - - "create.logistics.filter": "Фильтр", - "create.logistics.recipe_filter": "Фильтр рецепта", - "create.logistics.fluid_filter": "Фильтр жидкости", - "create.logistics.firstFrequency": "Частота #1", - "create.logistics.secondFrequency": "Частота #2", - "create.logistics.filter.apply": "Фильтр применён к %1$s.", - "create.logistics.filter.apply_click_again": "Фильтр применён к %1$s, кликните еще раз чтобы скопировать количество.", - "create.logistics.filter.apply_count": "Применено извлекаемое количество к фильтру.", - - "create.gui.goggles.generator_stats": "Статистика генератора:", - "create.gui.goggles.kinetic_stats": "Кинетическая статистика:", - "create.gui.goggles.at_current_speed": "На текущей скорости", - "create.gui.goggles.pole_length": "Длина поршня", - "create.gui.goggles.fluid_container": "Информация о жидкостном контейнере:", - "create.gui.goggles.fluid_container.capacity": "Ёмкость: ", - "create.gui.assembly.exception": "Невозможно собрать эту штуковину:", - "create.gui.assembly.exception.unmovableBlock": "Несдвигаемый блок (%4$s) на [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "Блок на [%1$s,%2$s,%3$s] не был в загруженном чанке", - "create.gui.assembly.exception.structureTooLarge": "Штуковина состоит из слишком большого количества Блоков.\nТекущий максимум: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "Слишком много Удлинителей прикреплено к этому Поршню.\nThe configured maximum is: %1$s", - "create.gui.assembly.exception.noPistonPoles": "Поршню нехватает Удлинителей", - "create.gui.assembly.exception.not_enough_sails": "Присоединённая структура не содержит достаточно парусопободных блоков: %1$s\nМинимум из %2$s необходим", - "create.gui.gauge.info_header": "Калибровочная информация:", - "create.gui.speedometer.title": "Скорость вращения", - "create.gui.stressometer.title": "Сетевой момент", - "create.gui.stressometer.capacity": "Оставшаяся емкость", - "create.gui.stressometer.overstressed": "Перегрузка", - "create.gui.stressometer.no_rotation": "Нет вращения", - "create.gui.contraptions.not_fast_enough": "Похоже, что этот %1$s _не_ вращается с_достаточной_ _скоростью_.", - "create.gui.contraptions.network_overstressed": "Похоже, что эта штуковина _перегружена_. Добавьте больше источников или _замедлите_ _скорость_ компонентов с высоким _влиянием_ на _момент_.", - "create.gui.adjustable_crate.title": "Регулируемый ящик", - "create.gui.adjustable_crate.storageSpace": "Ёмкость", - "create.gui.stockpile_switch.title": "Настраиваемый компаратор", - "create.gui.stockpile_switch.invert_signal": "Инвертировать сигнал", - "create.gui.stockpile_switch.move_to_lower_at": "Двигаться к нижней линии при %1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "Двигаться к верхней линии при %1$s%%", - "create.gui.sequenced_gearshift.title": "Последовательное переключение передач", - "create.gui.sequenced_gearshift.instruction": "Инструкция", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "Повернуть на угол", - "create.gui.sequenced_gearshift.instruction.turn_angle": "Повернуть", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "Угол", - "create.gui.sequenced_gearshift.instruction.turn_distance": "Поршень", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "Расстояние", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "Временная задержка", - "create.gui.sequenced_gearshift.instruction.delay": "Задержка", - "create.gui.sequenced_gearshift.instruction.delay.duration": "Длительность", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "Конец", - "create.gui.sequenced_gearshift.instruction.end": "Конец", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "Ожидать нового Импульса Редстоун Сигнала", - "create.gui.sequenced_gearshift.instruction.await": "Ожидать", - "create.gui.sequenced_gearshift.speed": "Скорость, Направление", - "create.gui.sequenced_gearshift.speed.forward": "Скорость ввода, вперед", - "create.gui.sequenced_gearshift.speed.forward_fast": "Двойная скорость, вперед", - "create.gui.sequenced_gearshift.speed.back": "Скорость ввода, реверс", - "create.gui.sequenced_gearshift.speed.back_fast": "Двойная скорость, реверс", - - "create.schematicAndQuill.dimensions": "Размер схематики: %1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "Первая позиция установлена.", - "create.schematicAndQuill.secondPos": "Вторая позиция установлена.", - "create.schematicAndQuill.noTarget": "Удерживайте [Ctrl], чтобы выбрать воздушные блоки.", - "create.schematicAndQuill.abort": "Выделение убрано", - "create.schematicAndQuill.title": "Имя схематики:", - "create.schematicAndQuill.convert": "Сохранить и развернуть немедленно", - "create.schematicAndQuill.fallbackName": "Моя схематика", - "create.schematicAndQuill.saved": "Сохранено как %1$s", - - "create.schematic.invalid": "[!] Недопустимый предмет — вместо этого используйте схематичный стол", - "create.schematic.position": "Позиция", - "create.schematic.rotation": "Вращение", - "create.schematic.rotation.none": "Нет", - "create.schematic.rotation.cw90": "По час. стрелке 90", - "create.schematic.rotation.cw180": "По час. стрелке 180", - "create.schematic.rotation.cw270": "По час. стрелке 270", - "create.schematic.mirror": "Зеркало", - "create.schematic.mirror.none": "Нет", - "create.schematic.mirror.frontBack": "Спереди-сзади", - "create.schematic.mirror.leftRight": "Влево-вправо", - "create.schematic.tool.deploy": "Развернуть", - "create.schematic.tool.move": "Подвинуть XZ", - "create.schematic.tool.movey": "Подвинуть Y", - "create.schematic.tool.rotate": "Вращать", - "create.schematic.tool.print": "Печать", - "create.schematic.tool.flip": "Перевернуть", - "create.schematic.tool.deploy.description.0": "Перемещает структуру в локации.", - "create.schematic.tool.deploy.description.1": "Щелкните ПКМ на земле, чтобы разместить.", - "create.schematic.tool.deploy.description.2": "Удерживайте [Ctrl], чтобы выбрать фиксированное расстояние.", - "create.schematic.tool.deploy.description.3": "[Ctrl] и прокрутка, чтобы изменить расстояние.", - "create.schematic.tool.move.description.0": "Сдвинуть схему по горизонтали.", - "create.schematic.tool.move.description.1": "Наведите курсор на схему и нажмите [CTRL] и прокрутка, чтобы нажать на нее.", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "Сдвигает схему по вертикали.", - "create.schematic.tool.movey.description.1": "[CTRL] и прокрутка - переместить вверх/вниз.", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "Вращает схематику вокруг ее центра.", - "create.schematic.tool.rotate.description.1": "[CTRL] и прокрутка вращать на 90 градусов.", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "Мгновенно размещает структуру в мире.", - "create.schematic.tool.print.description.1": "[ПКМ], чтобы подтвердить размещение в текущем местоположении.", - "create.schematic.tool.print.description.2": "Этот инструмент предназначен только для творческого режима.", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "Переверните схему вдоль выбранного лица.", - "create.schematic.tool.flip.description.1": "Наведите курсор на схему и [CTRL] + прокрутка, чтобы перевернуть ее.", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "Синхронизация..", - "create.schematics.uploadTooLarge": "Ваша схематика слишком велика.", - "create.schematics.maxAllowedSize": "Максимально допустимый размер файла:", - - "create.gui.schematicTable.refresh": "Обновить файлы", - "create.gui.schematicTable.open_folder": "Открыть папку", - "create.gui.schematicTable.title": "Схематичный стол", - "create.gui.schematicTable.availableSchematics": "Доступные схемы", - "create.gui.schematicTable.noSchematics": "Схемы не сохранены", - "create.gui.schematicTable.uploading": "Загрузка ...", - "create.gui.schematicTable.finished": "Загрузка завершена!", - "create.gui.schematicannon.title": "Схематичная пушка", - "create.gui.schematicannon.listPrinter": "Список материалов", - "create.gui.schematicannon.gunpowderLevel": "Порох на %1$s%%", - "create.gui.schematicannon.shotsRemaining": "Выстрелов осталось: %1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "С резервной копией: %1$s", - "create.gui.schematicannon.optionEnabled": "В настоящее время включен", - "create.gui.schematicannon.optionDisabled": "В настоящее время отключен", - "create.gui.schematicannon.showOptions": "Показать настройки печати", - "create.gui.schematicannon.option.dontReplaceSolid": "Не заменять целые блоки", - "create.gui.schematicannon.option.replaceWithSolid": "Заменять целые блоки целыми блоками", - "create.gui.schematicannon.option.replaceWithAny": "Заменять целые блоки чем угодно", - "create.gui.schematicannon.option.replaceWithEmpty": "Заменять целые блоки пустотой", - "create.gui.schematicannon.option.skipMissing": "Пропускать отсутствующие блоки", - "create.gui.schematicannon.option.skipTileEntities": "Защитить имущество", - "create.gui.schematicannon.slot.gunpowder": "Добавьте порох чтобы запитать пушку", - "create.gui.schematicannon.slot.listPrinter": "Положите книгу чтобы создать список предметов для схематики", - "create.gui.schematicannon.slot.schematic": "Положите свою схематику здесь. Убедитесь что она размещена в правильном месте", - "create.gui.schematicannon.option.skipMissing.description": "Если пушка не может найти требуемый блок, она будет строить в следующем месте.", - "create.gui.schematicannon.option.skipTileEntities.description": "Пушка не будет заменять блоки хранения данных, такие как сундуки.", - "create.gui.schematicannon.option.dontReplaceSolid.description": "Пушка никогда не заменит целые блоки, только не целые и воздух.", - "create.gui.schematicannon.option.replaceWithSolid.description": "Пушка будет заменять целый блок только в случае, если в схеме в этом месте расположен целый блок.", - "create.gui.schematicannon.option.replaceWithAny.description": "Пушка будет заменять целые блоки, если в схеме в этом месте есть что-либо.", - "create.gui.schematicannon.option.replaceWithEmpty.description": "Пушка отчистит все блоки, включая замену на воздух.", - - "create.schematicannon.status.idle": "Бездействует", - "create.schematicannon.status.ready": "Готова", - "create.schematicannon.status.running": "Работает", - "create.schematicannon.status.finished": "Закончила", - "create.schematicannon.status.paused": "Приостановлена", - "create.schematicannon.status.stopped": "Остановлена", - "create.schematicannon.status.noGunpowder": "Требуется порох", - "create.schematicannon.status.targetNotLoaded": "Цель не загружена", - "create.schematicannon.status.targetOutsideRange": "Цель слишком далеко", - "create.schematicannon.status.searching": "Поиск", - "create.schematicannon.status.skipping": "Пропуск", - "create.schematicannon.status.missingBlock": "Требует блок:", - "create.schematicannon.status.placing": "Стройка", - "create.schematicannon.status.clearing": "Очистка", - "create.schematicannon.status.schematicInvalid": "Неверная схема", - "create.schematicannon.status.schematicNotPlaced": "Схема не загружена", - "create.schematicannon.status.schematicExpired": "Срок действия файла схемы истек", - - "create.materialChecklist": "Список материалов", - "create.materialChecklist.blocksNotLoaded": "* Дисклеймер *\n\nСписок материалов может быть неточным из-за незагруженных чанков.", - - "create.gui.filter.deny_list": "Чёрный список", - "create.gui.filter.deny_list.description": "Предметы проходят, если они не соответствуют ни одному из вышеперечисленных. Пустой черный список принимает все.", - "create.gui.filter.allow_list": "Белый список", - "create.gui.filter.allow_list.description": "Предметы проходят, если они соответствуют любому из вышеперечисленных. Пустой белый список отвергает все.", - "create.gui.filter.respect_data": "Использование данных", - "create.gui.filter.respect_data.description": "Предметы совпадают только в том случае, если их прочность, чары и другие атрибуты совпадают.", - "create.gui.filter.ignore_data": "Игнорирование данных", - "create.gui.filter.ignore_data.description": "Предметы совпадают независимо от их атрибутов.", - - "create.item_attributes.placeable": "можно разместить", - "create.item_attributes.placeable.inverted": "нельзя разместить", - "create.item_attributes.consumable": "можно съесть", - "create.item_attributes.consumable.inverted": "нельзя съесть", - "create.item_attributes.smeltable": "можно расплавить", - "create.item_attributes.smeltable.inverted": "нельзя расплавить", - "create.item_attributes.washable": "можно промыть", - "create.item_attributes.washable.inverted": "нельзя промыть", - "create.item_attributes.smokable": "можно прокоптить", - "create.item_attributes.smokable.inverted": "нельзя прокоптить", - "create.item_attributes.crushable": "можно измельчить", - "create.item_attributes.crushable.inverted": "нельзя разместить", - "create.item_attributes.blastable": "плавится в доменной печи", - "create.item_attributes.blastable.inverted": "не плавится в доменной печи", - "create.item_attributes.enchanted": "зачарован", - "create.item_attributes.enchanted.inverted": "не зачарован", - "create.item_attributes.damaged": "повреждён", - "create.item_attributes.damaged.inverted": "не повреждён", - "create.item_attributes.badly_damaged": "сильно повреждён", - "create.item_attributes.badly_damaged.inverted": "не сильно повреждён", - "create.item_attributes.not_stackable": "не может складываться", - "create.item_attributes.not_stackable.inverted": "складывается", - "create.item_attributes.equipable": "может быть надет", - "create.item_attributes.equipable.inverted": "не может быть надет", - "create.item_attributes.furnace_fuel": "является топливом", - "create.item_attributes.furnace_fuel.inverted": "не является топливом", - "create.item_attributes.in_tag": "помечен %1$s", - "create.item_attributes.in_tag.inverted": "не помечен %1$s", - "create.item_attributes.in_item_group": "принадлежит %1$s", - "create.item_attributes.in_item_group.inverted": "не принадлежит '%1$s'", - "create.item_attributes.added_by": "был добавлен %1$s", - "create.item_attributes.added_by.inverted": "не был добавлен %1$s", - "create.item_attributes.has_enchant": "зачарован на %1$s", - "create.item_attributes.has_enchant.inverted": "не зачарован на %1$s", - "create.item_attributes.color": "Покрашено в %1$s", - "create.item_attributes.color.inverted": "Не покрашено в %1$s", - "create.item_attributes.max_enchanted": "Зачаровано за максимальный уровень", - "create.item_attributes.max_enchanted.inverted": "Не зачаровано за максимальный уровень", - "create.item_attributes.has_fluid": "содержит %1$s", - "create.item_attributes.has_fluid.inverted": "не содержит %1$s", - "create.item_attributes.has_name": "имеет нестандартное имя %1$s", - "create.item_attributes.has_name.inverted": "не имеет нестандартное имя%1$s", - "create.item_attributes.book_author": "подписана %1$s", - "create.item_attributes.book_author.inverted": "неподписана %1$s", - "create.item_attributes.book_copy_original": "оригинал", - "create.item_attributes.book_copy_original.inverted": "не оригинал", - "create.item_attributes.book_copy_first": "копия первого порядка", - "create.item_attributes.book_copy_first.inverted": "не копия первого порядка", - "create.item_attributes.book_copy_second": "копия второго порядка", - "create.item_attributes.book_copy_second.inverted": "не копия второго порядка", - "create.item_attributes.book_copy_tattered": "полный беспорядок", - "create.item_attributes.book_copy_tattered.inverted": "не полный беспорядок", - "create.item_attributes.astralsorcery_crystal": "имеет характеристики кристалла %1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "не имеет характеристики кристалла %1$s", - "create.item_attributes.astralsorcery_constellation": "настроено на %1$s", - "create.item_attributes.astralsorcery_constellation.inverted": "не настроено на %1$s", - "create.item_attributes.astralsorcery_perk_gem": "имеет характеристики перка %1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "не имеет характеристики перка %1$s", - "create.item_attributes.astralsorcery_amulet": "исправляет %1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "не исправляет %1$s", - - "create.gui.attribute_filter.no_selected_attributes": "Атрибуты не выбраны", - "create.gui.attribute_filter.selected_attributes": "Выбранные атрибуты:", - "create.gui.attribute_filter.add_attribute": "Добавлены атрибуты", - "create.gui.attribute_filter.add_inverted_attribute": "Добавлены противоположные атрибуты в список", - "create.gui.attribute_filter.allow_list_disjunctive": "Белый список (любой)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "Предметы проходят, если у них есть какой-либо из выбранных атрибутов.", - "create.gui.attribute_filter.allow_list_conjunctive": "Белый список (все)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "Предметы проходят, только если они имеют ВСЕ выбранные атрибуты.", - "create.gui.attribute_filter.deny_list": "Чёрный список", - "create.gui.attribute_filter.deny_list.description": "Предметы проходят, если они НЕ имеют ни одного из выбранных атрибутов.", - "create.gui.attribute_filter.add_reference_item": "Добавить предмет", - - "create.tooltip.holdForDescription": "Удерживайте [%1$s] для Сводки", - "create.tooltip.holdForControls": "Удерживайте [%1$s] для Управления", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "Требование к скорости: %1$s", - "create.tooltip.speedRequirement.none": "Нет", - "create.tooltip.speedRequirement.medium": "Умеренная", - "create.tooltip.speedRequirement.high": "Быстрая", - "create.tooltip.stressImpact": "Требование к крутящему моменту: %1$s", - "create.tooltip.stressImpact.low": "Низкий", - "create.tooltip.stressImpact.medium": "Средний", - "create.tooltip.stressImpact.high": "Высокий", - "create.tooltip.stressImpact.overstressed": "Перегрузка", - "create.tooltip.capacityProvided": "Ёмкостный крутящий момент: %1$s", - "create.tooltip.capacityProvided.low": "Маленький", - "create.tooltip.capacityProvided.medium": "Средний", - "create.tooltip.capacityProvided.high": "Большой", - "create.tooltip.generationSpeed": "Создаёт %1$s %2$s", - "create.tooltip.analogStrength": "Аналоговая сила: %1$s/15", - - "create.mechanical_arm.extract_from": "Берёт предметы из %1$s", - "create.mechanical_arm.deposit_to": "Складывает предметы в %1$s", - "create.mechanical_arm.summary": "Механическая рука имеет %1$s вход(ов) и %2$s выход(ов).", - "create.mechanical_arm.points_outside_range": "%1$s выбранные точки взаимодействия удалены из-за ограничений диапазона.", - - "create.weighted_ejector.target_set": "Цель выбрана", - "create.weighted_ejector.target_not_valid": "Бросает до близлежащего блока (Неподходящая Цель)", - "create.weighted_ejector.no_target": "Бросает до близлежащего блока (Цель не была Выбрана)", - "create.weighted_ejector.targeting": "Бросает до [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "Размер Бросаемого Стака", - - "create.logistics.when_multiple_outputs_available": "Когда доступно несколько выходов", - - "create.mechanical_arm.selection_mode.round_robin": "По кругу", - "create.mechanical_arm.selection_mode.forced_round_robin": "Принудительно по кругу", - "create.mechanical_arm.selection_mode.prefer_first": "Предпочтительна первичная цель", - - "create.tunnel.selection_mode.split": "Разделить", - "create.tunnel.selection_mode.forced_split": "Принудительно разделить", - "create.tunnel.selection_mode.round_robin": "По кругу", - "create.tunnel.selection_mode.forced_round_robin": "Принудительно по кругу", - "create.tunnel.selection_mode.prefer_nearest": "Придпочтительно ближайшее", - "create.tunnel.selection_mode.randomize": "Случайно", - "create.tunnel.selection_mode.synchronize": "Синхронизировать входы", - - "create.tooltip.chute.header": "Инвормация о желобе", - "create.tooltip.chute.items_move_down": "Предметы двигаются вниз", - "create.tooltip.chute.items_move_up": "Предметы двигаются вверх", - "create.tooltip.chute.no_fans_attached": "Нет подключеных вентиляторов", - "create.tooltip.chute.fans_push_up": "Вентилятор толкает снизу", - "create.tooltip.chute.fans_push_down": "Вентилятор толкает сверху", - "create.tooltip.chute.fans_pull_up": "Вентилятор тянет сверху", - "create.tooltip.chute.fans_pull_down": "Вентилятор тянет снизу", - "create.tooltip.chute.contains": "Содержит: %1$s x%2$s", - - "create.hint.hose_pulley.title": "Безграничное снабжение", - "create.hint.hose_pulley": "Целевой водный резервуар считается бесконечным.", - "create.hint.mechanical_arm_no_targets.title": "Нет целей", - "create.hint.mechanical_arm_no_targets": "Кажется, эта _Механическая рука_ не имеет никаких целей. Выберите _ремни_, _депо_, _воронки_, или другие блоки, с помощью _правого клика_, удерживая _Механическую руку_.", - "create.hint.empty_bearing.title": "Обновить подшипник", - "create.hint.empty_bearing": "_Правый клик_ по подшипнику _пустой рукой_, чтобы _присоединить_ к нему структуру, которую вы только что построили перед ним.", - "create.hint.full_deployer.title": "Переполнение автономного активатора", - "create.hint.full_deployer": "Похоже, этот _автономный активатор_ содержит _лишние_ _предметы_, которые необходимо _извлечь_. Используйте _воронку_ или _другие способы_, чтобы освободить его от переполнения.", - - "create.gui.config.overlay1": "Привет :)", - "create.gui.config.overlay2": "Это образец оверлея", - "create.gui.config.overlay3": "Кликни и тащи с помощью мыши", - "create.gui.config.overlay4": "чтобы переместить его", - "create.gui.config.overlay5": "Нажми ESC чтобы выйти", - "create.gui.config.overlay6": "и сохранить новую позицию", - "create.gui.config.overlay7": "Введи /create overlay reset", - "create.gui.config.overlay8": "чтобы сбросить позицию до стандартной", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: Тики сервера в настоящее время замедлены на %s мс :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: Тики сервера теперь замедлены на %s мс >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: Тики сервера вернулись в норму :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: используйте /killtps stop , чтобы вернуть тик сервера на обычную скорость", - "create.command.killTPSCommand.status.usage.1": "[Create]: используйте /killtps start <Время тика>, чтобы искусственно замедлить тик сервера", - "create.command.killTPSCommand.argument.tickTime": "Время тика", - - "create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки", - "create.subtitle.schematicannon_finish": "Схематичная пушка закончила работу", - "create.subtitle.slime_added": "Намазывание слизи", - "create.subtitle.mechanical_press_activation": "Механический пресс активирован", - "create.subtitle.mechanical_press_item_break": "Лязг металла", - "create.subtitle.blockzapper_place": "Блок запрыгивает на место", - "create.subtitle.blockzapper_confirm": "Утвердительный динь", - "create.subtitle.blockzapper_deny": "Тихий буп", - "create.subtitle.block_funnel_eat": "Воронкообразный чмопс", - "create.subtitle.blaze_munch": "Всполох радостно жуёт", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item. _Underscores_ highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this. (behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "WOODEN BRACKET", - "block.create.wooden_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя уютное деревянное укрепление.", - - "block.create.metal_bracket.tooltip": "METAL BRACKET", - "block.create.metal_bracket.tooltip.summary": "_Украсьте_ ваши _валы, шестерни_ и _трубы_, используя прочное индустриальное укрепление.", - - "block.create.copper_casing.tooltip": "COPPER CASING", - "block.create.copper_casing.tooltip.summary": "Прочный машинный корпус для разнообразного использования. Безопасно для украшения.", - "block.create.copper_casing.tooltip.condition1": "При использовании на жидкостной трубе", - "block.create.copper_casing.tooltip.behaviour1": "Покрывает _жидкостную трубу_ _корпусом_. Трубы в корпусе _закрепят свои соединения_ и не будут соединятся с другими трубами, расположенными по соседству.", - - "block.create.encased_fluid_pipe.tooltip": "ENCASED FLUID PIPE", - "block.create.encased_fluid_pipe.tooltip.summary": "_Труба_ в _Медном корпусе_.", - - "block.create.seat.tooltip": "SEAT", - "block.create.seat.tooltip.summary": "Присядьте и насладитесь поездкой! Привязывает игроков к собранным _устройствам_. Отлично выглядит как простая мебель! Можно окрасить в разные цвета.", - "block.create.seat.tooltip.condition1": "ПКМ по сиденью", - "block.create.seat.tooltip.behaviour1": "Сажает игрока на _Сиденье_. Нажмите _кнопку_ _приседания_ чтобы слезть.", - - "item.create.blaze_cake.tooltip": "BLAZE CAKE", - "item.create.blaze_cake.tooltip.summary": "Вкусное угощения для вашей трудяги _Горелки Всполоха_. Зажигает их всех!", - - "block.create.fluid_pipe.tooltip": "FLUID PIPE", - "block.create.fluid_pipe.tooltip.summary": "Используется для транспортировки _жидкостей_. Требует _Механическую помпу_ для движения _жидкости_.", - "block.create.fluid_pipe.tooltip.condition1": "Транспортировка жидкости", - "block.create.fluid_pipe.tooltip.behaviour1": "Может соединяться с _жидкостными контейнерами_, такими как _бак_ или _чаша_. Открытые части _трубы_ могут собирать или размещать блоки жидкости в мире. Опасайтесь протечек!", - "block.create.fluid_pipe.tooltip.condition2": "ПКМ _Ключом_", - "block.create.fluid_pipe.tooltip.behaviour2": "Устанавливает окно на трубе если возможно", - - "block.create.hose_pulley.tooltip": "HOSE PULLEY", - "block.create.hose_pulley.tooltip.summary": "Используется для _размещения_ или _удаления_ больших _жидкостных резервуаров_ в мире.", - "block.create.hose_pulley.tooltip.condition1": "Когда управляется кинетически", - "block.create.hose_pulley.tooltip.behaviour1": "_Поднимает_ или _опускает_ шланг, расположение которого определяет максимальную высоту _сбора_ или _размещения_ жидкости.", - "block.create.hose_pulley.tooltip.condition2": "Когда жидкости вытягиваются из шланга", - "block.create.hose_pulley.tooltip.behaviour2": "Начинает _собирать_ блоки жидкости из резервуара, в который опущен шланг. Очень _большие резервуары_ жидкости будут считаться _бесконечными_.", - "block.create.hose_pulley.tooltip.condition3": "Когда жидкости закачиваются в шланг", - "block.create.hose_pulley.tooltip.behaviour3": "Начинает _заполнять_ жидкостью мир, до уровня расположения конца шланга.", - - "block.create.fluid_tank.tooltip": "FLUID TANK", - "block.create.fluid_tank.tooltip.summary": "_Хранит_ ваши любимые _жидкости_. Скалируется в высоту и ширину.", - "block.create.fluid_tank.tooltip.condition1": "Правый клик с гаечным ключом", - "block.create.fluid_tank.tooltip.behaviour1": "Переключает опциональное отображение окна", - - "block.create.creative_fluid_tank.tooltip": "CREATIVE FLUID TANK", - "block.create.creative_fluid_tank.tooltip.summary": "Этот _Жидкостный бак_ позволяет иметь бесконечную репликацию любой жидкости. Скалируется в высоту и ширину.", - "block.create.creative_fluid_tank.tooltip.condition1": "Когда жидкость в баке", - "block.create.creative_fluid_tank.tooltip.behaviour1": "Всё что _извлекает_ из бака, будет снабжаться _бесконечным запасом_ жидкости. Жидкости _закачивающиеся_ в бак будут _удаляться_.", - "block.create.creative_fluid_tank.tooltip.condition2": "Правый клик с гаечным ключом", - "block.create.creative_fluid_tank.tooltip.behaviour2": "Переключает опциональное отображение окна.", - - "block.create.fluid_valve.tooltip": "FLUID VALVE", - "block.create.fluid_valve.tooltip.summary": "Останавливает поток жидкости по трубе.", - "block.create.fluid_valve.tooltip.condition1": "Контролируемый поток", - "block.create.fluid_valve.tooltip.behaviour1": "Приложенная _Вращательная сила_ заставит _клапан_ закрыться, останавливая поток _жидкости_. Измените направление _вращательной силы_, чтобы снова открыть клапан.", - - "block.create.mechanical_pump.tooltip": "MECHANICAL PUMP", - "block.create.mechanical_pump.tooltip.summary": "Принимает _Вращательную силу_ и использует ее для перемещения _жидкости_ вдоль _труб_. Имеет максимальный диапазон действия в обоих направлениях. (По умолчанию 16 блоков)", - "block.create.mechanical_pump.tooltip.condition1": "Поток жидкости", - "block.create.mechanical_pump.tooltip.behaviour1": "Приложенная _вращательная сила_ создает давление, которое заставляет _жидкость_ проходить через сеть _труб_. Измените направление _вращательной силы_, чтобы изменить направление потока _жидкости_.", - "block.create.mechanical_pump.tooltip.control1": "Правый клик с гаечным ключом", - "block.create.mechanical_pump.tooltip.action1": "Изменяет направление _помпы_, меняя направление потока жидкости", - - "block.create.smart_fluid_pipe.tooltip": "SMART FLUID PIPE", - "block.create.smart_fluid_pipe.tooltip.summary": "_Жидкостная труба_ с фильтром. Можно настроить какие _жидкости_ могу пройти.", - "block.create.smart_fluid_pipe.tooltip.condition1": "При закачивании жидкостей внутрь", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "Умные трубы заблокируют поток жидкости, если она не соответствует фильтру.", - "block.create.smart_fluid_pipe.tooltip.condition2": "Когда подключена к жидкостному контейнеру", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "Умные трубы _будут_ создавать _поток_ только той жидкости, что _соответствует_ _фильтру_.", - - "block.create.spout.tooltip": "SPOUT", - "block.create.spout.tooltip.summary": "Форсунка для пополнения предметов, имеющих возможность хранить жидкость.", - "block.create.spout.tooltip.condition1": "Транспортировка жидкости", - "block.create.spout.tooltip.behaviour1": "Когда предмет, _с возможностью содержать жидкость_, такой как _ведро_ или _бутылочка_, размещён под дозатором, дозатор будет пытаться заполнить предмет содержащейся в нём _жидкостью_.", - "block.create.spout.tooltip.condition2": "Автоматизация жидкости", - "block.create.spout.tooltip.behaviour2": "Дозатор расположеный над _конвейером_ или _депо_ будет автоматически взаимодействовать с _предметами, которые могут содержать жидкость_, которые проходят под ним.", - - "block.create.item_drain.tooltip": "ITEM DRAIN", - "block.create.item_drain.tooltip.summary": "Депо с решёткой, которое может выкачивать _жидкость_ из ваших _предметов_", - "block.create.item_drain.tooltip.condition1": "Транспортировка жидкости", - "block.create.item_drain.tooltip.behaviour1": "Когда _предмет с жидкостью_, такой как _ведро_ или _бутылочка_ вставлены с боку, предметный осушитель будет автоматически извлекать жидкость, в свой собственный _бак_. Предмет будет выброшен с противоположной стороны.", - - "item.create.wand_of_symmetry.tooltip": "SYMMETRY WAND", - "item.create.wand_of_symmetry.tooltip.summary": "Идеально отражает размещаемые блоки по настроенным плоскостям.", - "item.create.wand_of_symmetry.tooltip.condition1": "На панели быстрого доступа", - "item.create.wand_of_symmetry.tooltip.behaviour1": "Остаётся активным", - "item.create.wand_of_symmetry.tooltip.control1": "ПКМ на землю", - "item.create.wand_of_symmetry.tooltip.action1": "_Создаёт_ или _Перемещает_ зеркало", - "item.create.wand_of_symmetry.tooltip.control2": "ПКМ в воздух", - "item.create.wand_of_symmetry.tooltip.action2": "_Убирает_ зеркало", - "item.create.wand_of_symmetry.tooltip.control3": "ПКМ крадучись", - "item.create.wand_of_symmetry.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", - - "item.create.handheld_blockzapper.tooltip": "BLOCKZAPPER", - "item.create.handheld_blockzapper.tooltip.summary": "Новейшее устройство для размещения или замены блоков на расстоянии.", - "item.create.handheld_blockzapper.tooltip.control1": "ЛКМ на блок", - "item.create.handheld_blockzapper.tooltip.action1": "Устанавливает выбранный блок как материал.", - "item.create.handheld_blockzapper.tooltip.control2": "ПКМ на блок", - "item.create.handheld_blockzapper.tooltip.action2": "_Размещает_ или _Замещает_ блок.", - "item.create.handheld_blockzapper.tooltip.control3": "ПКМ крадучись", - "item.create.handheld_blockzapper.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", - - "item.create.handheld_worldshaper.tooltip": "HANDHELD WORLDSHAPER", - "item.create.handheld_worldshaper.tooltip.summary": "Удобный инструмент для создания _ландшафтов_ и _рельефа_ _местности_.", - "item.create.handheld_worldshaper.tooltip.control1": "ЛКМ на блок", - "item.create.handheld_worldshaper.tooltip.action1": "Устанавливает блоки, помещенные инструментом, в целевой блок.", - "item.create.handheld_worldshaper.tooltip.control2": "ПКМ на блок", - "item.create.handheld_worldshaper.tooltip.action2": "Применяет выбранную _кисть_ и _инструмент_ в выбранном месте.", - "item.create.handheld_worldshaper.tooltip.control3": "ПКМ крадучись", - "item.create.handheld_worldshaper.tooltip.action3": "Открывает _интерфейс_ _конфигурации_", - - "item.create.tree_fertilizer.tooltip": "TREE FERTILIZER", - "item.create.tree_fertilizer.tooltip.summary": "Мощная комбинация минералов подходит для ускорения роста распространенных типов деревьев.", - "item.create.tree_fertilizer.tooltip.condition1": "При использовании на саженце", - "item.create.tree_fertilizer.tooltip.behaviour1": "Выращивает деревья,_независимо_ от _условий_ _их_ _расположения_", - - "item.create.deforester.tooltip": "DEFORESTER", - "item.create.deforester.tooltip.summary": "_Уничтожитель_ _леса_, способен рубить деревья за доли секунды.", - - "item.create.extendo_grip.tooltip": "EXTENDO GRIP", - "item.create.extendo_grip.tooltip.summary": "Бойоиоинг! Значительно _увеличивает_ _досягаемость_ владельца.", - "item.create.extendo_grip.tooltip.condition1": "Находясь в другой руке", - "item.create.extendo_grip.tooltip.behaviour1": "Увеличьте _расстояние_ _досягаемости_ предметов, используемых в _главной_ _руке_.", - - "item.create.filter.tooltip": "FILTER", - "item.create.filter.tooltip.summary": "Управляет_ _выходами_ и входами логистических устройств с _большей_ _точностью_, _сопоставляя_ их со _списком_ _предметов_ или несколькими _вложенными_ _фильтрами_.", - "item.create.filter.tooltip.condition1": "Когда в слоте фильтра", - "item.create.filter.tooltip.behaviour1": "_Управляет_ потоком предметов в соответствии с его _конфигурацией_.", - "item.create.filter.tooltip.condition2": "При ПКМ", - "item.create.filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", - - "item.create.attribute_filter.tooltip": "ATTRIBUTE FILTER", - "item.create.attribute_filter.tooltip.summary": "_Управляет_ _выходами_ и _входами_ логистических устройств с _большей_ _точностью_, сопоставляя их с набором _атрибутов_ и _категорий предметов_.", - "item.create.attribute_filter.tooltip.condition1": "Когда в слоте фильтра", - "item.create.attribute_filter.tooltip.behaviour1": "_Управляет_ потоком предметов в соответствии с его _конфигурацией_.", - "item.create.attribute_filter.tooltip.condition2": "ПКМ", - "item.create.attribute_filter.tooltip.behaviour2": "Открывает _интерфейс_ _конфигурации_.", - - "item.create.empty_schematic.tooltip": "EMPTY SCHEMATIC", - "item.create.empty_schematic.tooltip.summary": "Используется в качестве ингредиента рецепта и для записи в _Схематичный столе_", - - "item.create.schematic.tooltip": "SCHEMATIC", - "item.create.schematic.tooltip.summary": "Содержит структуру, которая будет позиционироваться и помещаться в мир. Расположите голограмму по своему усмотрению и используйте _схематичную пушку_ для ее построения.", - "item.create.schematic.tooltip.condition1": "При удерживании", - "item.create.schematic.tooltip.behaviour1": "Может быть позиционирован с помощью инструментов на экране.", - "item.create.schematic.tooltip.control1": "ПКМ крадучись", - "item.create.schematic.tooltip.action1": "Открывает _интерфейс_ для ввода _точных_ _координат_.", - - "item.create.schematic_and_quill.tooltip": "SCHEMATIC AND QUILL", - "item.create.schematic_and_quill.tooltip.summary": "Используется для сохранения структуры в вашем мире в файл .nbt.", - "item.create.schematic_and_quill.tooltip.condition1": "Шаг 1", - "item.create.schematic_and_quill.tooltip.behaviour1": "Выберите две угловые точки, используя ПКМ.", - "item.create.schematic_and_quill.tooltip.condition2": "Шаг 2", - "item.create.schematic_and_quill.tooltip.behaviour2": "_Ctrl_ и _прокрутка_ на голограмме для изменения размера. Нажмите ПКМ, чтобы сохранить.", - "item.create.schematic_and_quill.tooltip.control1": "ПКМ", - "item.create.schematic_and_quill.tooltip.action1": "Выберите угловые точки / подтвердите сохранение.", - "item.create.schematic_and_quill.tooltip.control2": "Удержание Ctrl", - "item.create.schematic_and_quill.tooltip.action2": "Выберите точки в воздухе. Прокрутка для настройки расстояния.", - "item.create.schematic_and_quill.tooltip.control3": "ПКМ крадучись", - "item.create.schematic_and_quill.tooltip.action3": "_Сбрасывает_ и _удаляет_ выделение.", - - "block.create.schematicannon.tooltip": "SCHEMATICANNON", - "block.create.schematicannon.tooltip.summary": "_Ставит блоки_ для воссоздания _схематики_ в мире. Использует предметы из _соседнего_ _инвентаря_ и _порох_ в качестве _топлива_.", - "block.create.schematicannon.tooltip.condition1": "ПКМ", - "block.create.schematicannon.tooltip.behaviour1": "Открывает _Интерфейс_", - - "block.create.schematic_table.tooltip": "SCHEMATIC TABLE", - "block.create.schematic_table.tooltip.summary": "Записывает сохраненные схематики в _пустые_ _схематики_.", - "block.create.schematic_table.tooltip.condition1": "Когда дана пустая схема", - "block.create.schematic_table.tooltip.behaviour1": "Загружает выбранный файл из вашей папки Schematics.", - - "item.create.goggles.tooltip": "GOGGLES", - "item.create.goggles.tooltip.summary": "Очки для улучшения зрения с помощью полезной кинетической информации.", - "item.create.goggles.tooltip.condition1": "При ношении", - "item.create.goggles.tooltip.behaviour1": "Показывает _цветные_ _индикаторы_, соответствующие _уровню_ _скорости_ размещённого кинетического компонента, а также воздействию момента и мощности отдельных компонентов.", - "item.create.goggles.tooltip.condition2": "При взгляде на датчик", - "item.create.goggles.tooltip.behaviour2": "Показывает подробную информацию о скорости или моменте сети, к которой подключён датчик.", - "item.create.goggles.tooltip.condition3": "При взгляде на жидкостные контейнеры", - "item.create.goggles.tooltip.behaviour3": "Показывает детализированную информацию о _Ёмкости_ блока и о хранящейся в нём хранится _Жидкости_.", - - "item.create.wrench.tooltip": "WRENCH", - "item.create.wrench.tooltip.summary": "Полезный _инструмент_ для работы с _кинетическими_ штуковинами. Может использоваться для _поворота_, _демонтажа_ и _настройки_ компонентов.", - "item.create.wrench.tooltip.control1": "ПКМ по кинетическому блоку", - "item.create.wrench.tooltip.action1": "_Поворачивает_ _компонент_ с которым вы взаимодействуете _к_ _лицу_ или _от_ _лица_.", - "item.create.wrench.tooltip.control2": "ПКМ крадучись", - "item.create.wrench.tooltip.action2": "Разбирает кинетические компоненты и помещает их обратно в ваш инвентарь.", - - "block.create.nozzle.tooltip": "NOZZLE", - "block.create.nozzle.tooltip.summary": "Прикрепите к передней части _вентилятора_, чтобы распределить его влияние на сущностей _во_ _всех_ _направлениях_.", - - "block.create.cuckoo_clock.tooltip": "CUCKOO CLOCK", - "block.create.cuckoo_clock.tooltip.summary": "_Прекрасное_ _мастерство_ для _украшения_ пространства и _отслеживания_ _времени_.", - "block.create.cuckoo_clock.tooltip.condition1": "При вращении", - "block.create.cuckoo_clock.tooltip.behaviour1": "Показывает текущее время и напевает мелодию два раза в день. _Активируется_ _один_ _раз_ в _полдень_ и в _сумерках_, как только _игроки_ _могут_ _спать_.", - - "block.create.turntable.tooltip": "TURNTABLE", - "block.create.turntable.tooltip.summary": "Преобразует _силу_ _вращения_ прямиком в морскую болезнь.", - - "block.create.portable_fluid_interface.tooltip": "PORTABLE FLUID INTERFACE", - "block.create.portable_fluid_interface.tooltip.summary": "Переносная точка обмена для _перемещения жидкостей_ из или в конструкцию, перемещаемую _поршнем_, _подшипником_, _вагонеткой_ или _лебёдкой_. Два смежных интерфейса должны располагаться _лицом друг_ _к другу_, на расстоянии _1-2 блока друг от друга_.", - "block.create.portable_fluid_interface.tooltip.condition1": "При движении", - "block.create.portable_fluid_interface.tooltip.behaviour1": "Взаимодействует со стационарными _переносными интерфейсами хранения_ для передачи жидкостей в устройство или из него. Трубы, вставленые в _Стационарный интерфейс_, будут напрямую взаимодействовать с резервуарами на устройстве. Конструкция на короткое время остановится для обмена жидкостями.", - "block.create.portable_fluid_interface.tooltip.condition2": "При получении сигнала редстоуна", - "block.create.portable_fluid_interface.tooltip.behaviour2": "Немедленно _разрывает_ текущие соединения.", - - "block.create.stockpile_switch.tooltip": "stockpile_switch", - "block.create.stockpile_switch.tooltip.summary": "Подаёт сигнал красного камня в зависимости от _заполниности_ _прикреплённого_ _ящика_.", - "block.create.stockpile_switch.tooltip.condition1": "Когда ниже нижнего предела", - "block.create.stockpile_switch.tooltip.behaviour1": "Не подаёт _сигнал_ _красного_ _камня_.", - - "block.create.content_observer.tooltip": "CONTENT OBSERVER", - "block.create.content_observer.tooltip.summary": "_Обнаруживает элементы_ внутри _контейнеров_ и _конвейеров_, соответствующие настроенному _фильтру_. Если наблюдаемый инвентарь, ремень или шланг содержит совпадающий элемент, этот компонент излучает сигнал красного камня. Когда наблюдаемая _ воронка передает_ соответствующий предмет, этот компонент испускает _импульс_.", - - "block.create.adjustable_crate.tooltip": "ADJUSTABLE CRATE", - "block.create.adjustable_crate.tooltip.summary": "Этот контейнер для хранения позволяет вручную контролировать его емкость. Он может вместить до 16 стэков любого предмета. Поддерживает компараторы.", - "block.create.adjustable_crate.tooltip.condition1": "ПКМ", - "block.create.adjustable_crate.tooltip.behaviour1": "Открывает _Интерфейс_.", - - "block.create.creative_crate.tooltip": "THE ENDLESS CRATE", - "block.create.creative_crate.tooltip.summary": "Этот _контейнер_ для _хранения_ позволяющий _бесконечную_ _дублировать_ любой предмет. Поместите рядом со схематичной пушкой, чтобы удалить любые требования к материалу.", - "block.create.creative_crate.tooltip.condition1": "Когда предмет в слоте фильтра", - "block.create.creative_crate.tooltip.behaviour1": "Все, что извлечено из этого контейнера, обеспечит бесконечную поставку указанного предмета. Предметы, _вставленные_ в этот ящик, будут _аннулированы_.", - - "block.create.controller_rail.tooltip": "CONTROLLER RAIL", - "block.create.controller_rail.tooltip.summary": "_Все-направленные запитанные рельсы_, позволяющие _точную настройку_ _скорости_ вагонеток.", - "block.create.controller_rail.tooltip.condition1": "Когда запитано редстоун-сигналом", - "block.create.controller_rail.tooltip.behaviour1": "_Ускоряет_ или _замедляет_ _прошедшие вагонетки_, на велечину зависящую от _силы сигнала_. Распространая сигнал красного камня на соседние контролирующие рельсы. Питание двух контроллирующих рельс с разной мощностью приведет к тому, что дорожки между ними будут интерполировать свой сигнал.", - - "item.create.sand_paper.tooltip": "SAND PAPER", - "item.create.sand_paper.tooltip.summary": "Грубая бумага, которую можно использовать для _полировки материалов_. Может применяться автоматически с помощью автономного активатора.", - "item.create.sand_paper.tooltip.condition1": "Когда используется", - "item.create.sand_paper.tooltip.behaviour1": "Полирует предметы во _второй руке_, или лежащие _на полу_, если _смотреть на них_", - - "item.create.builders_tea.tooltip": "BUILDERS TEA", - "item.create.builders_tea.tooltip.summary": "Идеальный напиток для начала дня. _Мотивирует и насыщает_.", - - "item.create.refined_radiance.tooltip": "REFINED RADIANCE", - "item.create.refined_radiance.tooltip.summary": "Хроматический материал, _добытый_ _из_ _поглощенного_ _света_.", - - "item.create.shadow_steel.tooltip": "SHADOW STEEL", - "item.create.shadow_steel.tooltip.summary": "Хроматический материал, _добытый_ _в_ _пустоте_.", - - "item.create.minecart_coupling.tooltip": "MINECART COUPLING", - "item.create.minecart_coupling.tooltip.summary": "_Соединяет_ ваши _вагонетки_ или _Перевозочные устройства_ вместе, чтобы создать великолепный поезд.", - "item.create.minecart_coupling.tooltip.condition1": "При использовании на вагонетке", - "item.create.minecart_coupling.tooltip.behaviour1": "_Соединяет_ две вагонетки вместе, пытаясь держать их на _определенной дистанции_ при движении.", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "Работа продолжается!", - "create.tooltip.randomWipDescription0": "Пожалуйста держите этот предмет подальше от детей!", - "create.tooltip.randomWipDescription1": "Маленькая панда умирает каждый раз, когда вы используете этот предмет. Каждый. Раз.", - "create.tooltip.randomWipDescription2": "Используйте на свой страх и риск.", - "create.tooltip.randomWipDescription3": "Это не тот предмет, который вы ищете, *шевелит пальцами* пожалуйста, ускорьтесь.", - "create.tooltip.randomWipDescription4": "Этот предмет самоуничтожится через 10 секунд. 10, 9, 8...", - "create.tooltip.randomWipDescription5": "Поверьте мне, это бесполезно.", - "create.tooltip.randomWipDescription6": "Используя этот пункт, вы тем самым соглашаетесь с нашим отказом от ответственности и соглашаетесь с его условиями.", - "create.tooltip.randomWipDescription7": "Этот, возможно, но не для тебя. Как насчет этого?", - "create.tooltip.randomWipDescription8": "Используя его, вы немедленно пожалеете о своем решении.", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "Удерживайте [%1$s] для Размышления", - "create.ponder.subject": "Субъект этой сцены", - "create.ponder.pondering": "Размышляем о...", - "create.ponder.identify_mode": "Режим Идентификации включён.\nУбрать паузу: [%1$s]", - "create.ponder.associated": "Связанные статьи", - "create.ponder.close": "Закрыть", - "create.ponder.identify": "Определить", - "create.ponder.next": "Следующая сцена", - "create.ponder.previous": "Предыдущая сцена", - "create.ponder.replay": "Воспроизвести снова", - "create.ponder.think_back": "Подумать о предыдущем", - "create.ponder.slow_text": "Удобное чтение", - "create.ponder.shared.movement_anchors": "С помощью Суперклея или Шасси, более крупные структуры могут быть сдивинуты.", - "create.ponder.shared.rpm32": "32 об./мин.", - "create.ponder.shared.sneak_and": "Красться +", - "create.ponder.shared.storage_on_contraption": "Присоединённые к Штуковине инвентари будут подбирать вещи автоматически", - "create.ponder.shared.behaviour_modify_wrench": "Это поведение может быть изменено Ключом", - "create.ponder.shared.rpm8": "8 об./мин.", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "Источник: 16 об./мин.", - "create.ponder.shared.rpm16": "16 об./мин.", - "create.ponder.tag.kinetic_sources": "Кинетические источники", - "create.ponder.tag.kinetic_sources.description": "Компоненты, генерирующие Силу Вращения", - "create.ponder.tag.contraption_actor.description": "Компоненты, проявляющие особое поведение когда прикреплены к двигающейся штуковине", - "create.ponder.tag.arm_targets": "Цели для Механической Руки", - "create.ponder.tag.arm_targets.description": "Компоненты, которые могут быть выбраны входами или выходами для Механической Руки", - "create.ponder.tag.logistics": "Транспортировка Предметов", - "create.ponder.tag.logistics.description": "Компоненты, помогающие перемещать предметы", - "create.ponder.tag.movement_anchor": "Опоры Движения", - "create.ponder.tag.movement_anchor.description": "Компоненты, позволяющие создавать двигающиеся штуковины, оживляя прикрепленную структуру разными способами", - "create.ponder.tag.creative": "Творческий режим", - "create.ponder.tag.creative.description": "Компоненты обычычно недоступные в Режиме Выживания", - "create.ponder.tag.kinetic_relays": "Кинетические блоки", - "create.ponder.tag.kinetic_relays.description": "Компоненты, помогающие передавать Силу Вращения куда-нибудь", - "create.ponder.tag.windmill_sails": "Паруса для Мельничных Подшипников", - "create.ponder.tag.windmill_sails.description": "Блоки, число которых увеличивает силу Мельницы. Каждый из этих блоков имеет одинаковую эффективность в деле.", - "create.ponder.tag.contraption_assembly": "Приспособления для присоединения блоков", - "create.ponder.tag.contraption_assembly.description": "Инструменты и Компоненты используемые для сборки структур передвигаемых как движущиеся Штуковины", - "create.ponder.tag.decoration": "Эстетика", - "create.ponder.tag.decoration.description": "Компоненты, чаще всего используемые для декоративных целей", - "create.ponder.tag.kinetic_appliances": "Кинетические Приборы", - "create.ponder.tag.kinetic_appliances.description": "Компоненты, использующие Силу Вращения", - "create.ponder.tag.redstone": "Логические Компоненты", - "create.ponder.tag.redstone.description": "Компоненты, помогающие с конструироваением Редстоун Схем", - "create.ponder.tag.fluids": "Жидкостные Манипуляторы", - "create.ponder.tag.fluids.description": "Компоненты, помогающие перемещать и использовать Жидкости", - - "create.ponder.adjustable_pulse_repeater.header": "Управлении сигналами с помощью Регулируемого импульсного повторителя", - "create.ponder.adjustable_pulse_repeater.text_1": "Регулируемые импульсные повторители испускают короткий импульс с задержкой", - "create.ponder.adjustable_pulse_repeater.text_2": "Используя колесо мыши, время зарядки может быть настроено", - "create.ponder.adjustable_pulse_repeater.text_3": "Настраиваемая задержка может достигать 30 минут", - - "create.ponder.adjustable_repeater.header": "Управлении сигналами с помощью Регулируемого повторителя", - "create.ponder.adjustable_repeater.text_1": "Регулируемые повторители ведут себя схожим образом с обычными Повторителями", - "create.ponder.adjustable_repeater.text_2": "Они заряжаются за заданное время...", - "create.ponder.adjustable_repeater.text_3": "...и разряжаются за столько же времени", - "create.ponder.adjustable_repeater.text_4": "Используя колесо мыши, время зарядки может быть настроено", - "create.ponder.adjustable_repeater.text_5": "Настраиваемая задержка может достигать 30 минут", - - "create.ponder.analog_lever.header": "Управлении сигналами используя Аналоговый Рычаг", - "create.ponder.analog_lever.text_1": "Аналоговый Рычаг создан как компактный и точный источник Редстоун Сигнала", - "create.ponder.analog_lever.text_2": "ПКМ чтобы увеличить силу выходного сигнала", - "create.ponder.analog_lever.text_3": "ПКМ Крадучись чтобы уменьшить силу выходного сигнала снова", - - "_": "Thank you for translating Create!" - -} diff --git a/src/main/resources/assets/create/lang/zh_cn.json b/src/main/resources/assets/create/lang/zh_cn.json deleted file mode 100644 index 342ee9146..000000000 --- a/src/main/resources/assets/create/lang/zh_cn.json +++ /dev/null @@ -1,2525 +0,0 @@ -{ - - - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "金合欢窗户", - "block.create.acacia_window_pane": "金合欢窗户板", - "block.create.adjustable_chain_gearshift": "可调节链式传动箱", - "block.create.adjustable_crate": "可调节板条箱", - "block.create.adjustable_pulse_repeater": "可调节脉冲中继器", - "block.create.adjustable_repeater": "可调节中继器", - "block.create.analog_lever": "模拟拉杆", - "block.create.andesite_belt_funnel": "安山岩传送带漏斗", - "block.create.andesite_bricks": "安山岩砖", - "block.create.andesite_bricks_slab": "安山岩砖台阶", - "block.create.andesite_bricks_stairs": "安山岩砖楼梯", - "block.create.andesite_bricks_wall": "安山岩砖墙", - "block.create.andesite_casing": "安山机壳", - "block.create.andesite_cobblestone": "安山岩圆石", - "block.create.andesite_cobblestone_slab": "安山岩圆石台阶", - "block.create.andesite_cobblestone_stairs": "安山岩圆石楼梯", - "block.create.andesite_cobblestone_wall": "安山岩圆石墙", - "block.create.andesite_encased_shaft": "安山传动杆箱", - "block.create.andesite_funnel": "安山岩漏斗", - "block.create.andesite_pillar": "竖纹安山岩", - "block.create.andesite_tunnel": "安山岩隧道", - "block.create.basin": "工作盆", - "block.create.belt": "传送带", - "block.create.birch_window": "白桦窗户", - "block.create.birch_window_pane": "白桦窗户板", - "block.create.black_sail": "黑色风帆", - "block.create.black_seat": "黑色坐垫", - "block.create.black_valve_handle": "黑色阀门手轮", - "block.create.blaze_burner": "烈焰人燃烧室", - "block.create.blue_sail": "蓝色风帆", - "block.create.blue_seat": "蓝色坐垫", - "block.create.blue_valve_handle": "蓝色阀门手轮", - "block.create.brass_belt_funnel": "黄铜传送带漏斗", - "block.create.brass_block": "黄铜块", - "block.create.brass_casing": "黄铜机壳", - "block.create.brass_encased_shaft": "黄铜传动杆箱", - "block.create.brass_funnel": "黄铜漏斗", - "block.create.brass_tunnel": "黄铜隧道", - "block.create.brown_sail": "棕色风帆", - "block.create.brown_seat": "棕色坐垫", - "block.create.brown_valve_handle": "棕色阀门手轮", - "block.create.cart_assembler": "矿车装配站", - "block.create.chiseled_dark_scoria": "錾制深色熔渣", - "block.create.chiseled_dolomite": "錾制白云岩", - "block.create.chiseled_gabbro": "錾制辉长岩", - "block.create.chiseled_limestone": "錾制石灰岩", - "block.create.chiseled_scoria": "錾制熔渣", - "block.create.chiseled_weathered_limestone": "錾制风化石灰岩", - "block.create.chocolate": "巧克力", - "block.create.chute": "溜槽", - "block.create.clockwork_bearing": "时钟轴承", - "block.create.clutch": "离合器", - "block.create.cogwheel": "齿轮", - "block.create.content_observer": "物品侦测器", - "block.create.controller_rail": "控制铁轨", - "block.create.copper_block": "铜块", - "block.create.copper_casing": "铜机壳", - "block.create.copper_ore": "铜矿石", - "block.create.copper_shingles": "铜砖块", - "block.create.copper_tiles": "铜砖块", - "block.create.copper_valve_handle": "铜阀门手轮", - "block.create.creative_crate": "创造板条箱", - "block.create.creative_fluid_tank": "创造流体储罐", - "block.create.creative_motor": "创造马达", - "block.create.crimson_window": "绯红窗户", - "block.create.crimson_window_pane": "绯红窗户板", - "block.create.crushing_wheel": "粉碎轮", - "block.create.crushing_wheel_controller": "粉碎轮控制器", - "block.create.cuckoo_clock": "布谷鸟闹钟", - "block.create.cyan_sail": "青色风帆", - "block.create.cyan_seat": "青色坐垫", - "block.create.cyan_valve_handle": "青色阀门手轮", - "block.create.dark_oak_window": "深色橡木窗户", - "block.create.dark_oak_window_pane": "深色橡木窗户板", - "block.create.dark_scoria": "深色熔渣", - "block.create.dark_scoria_bricks": "深色熔渣砖", - "block.create.dark_scoria_bricks_slab": "深色熔渣砖台阶", - "block.create.dark_scoria_bricks_stairs": "深色熔渣砖楼梯", - "block.create.dark_scoria_bricks_wall": "深色熔渣砖墙", - "block.create.dark_scoria_cobblestone": "深色熔渣圆石", - "block.create.dark_scoria_cobblestone_slab": "深色熔渣圆石台阶", - "block.create.dark_scoria_cobblestone_stairs": "深色熔渣圆石楼梯", - "block.create.dark_scoria_cobblestone_wall": "深色熔渣圆石墙", - "block.create.dark_scoria_pillar": "竖纹深色熔渣", - "block.create.deployer": "机械手", - "block.create.depot": "置物台", - "block.create.diorite_bricks": "闪长岩砖", - "block.create.diorite_bricks_slab": "闪长岩砖台阶", - "block.create.diorite_bricks_stairs": "闪长岩砖楼梯", - "block.create.diorite_bricks_wall": "闪长岩砖墙", - "block.create.diorite_cobblestone": "闪长岩圆石", - "block.create.diorite_cobblestone_slab": "闪长岩圆石台阶", - "block.create.diorite_cobblestone_stairs": "闪长岩圆石楼梯", - "block.create.diorite_cobblestone_wall": "闪长岩圆石墙", - "block.create.diorite_pillar": "竖纹闪长岩", - "block.create.dolomite": "白云岩", - "block.create.dolomite_bricks": "白云岩砖", - "block.create.dolomite_bricks_slab": "白云岩砖台阶", - "block.create.dolomite_bricks_stairs": "白云岩砖楼梯", - "block.create.dolomite_bricks_wall": "白云岩砖墙", - "block.create.dolomite_cobblestone": "白云岩圆石", - "block.create.dolomite_cobblestone_slab": "白云岩圆石台阶", - "block.create.dolomite_cobblestone_stairs": "白云岩圆石楼梯", - "block.create.dolomite_cobblestone_wall": "白云岩圆石墙", - "block.create.dolomite_pillar": "竖纹白云岩", - "block.create.encased_chain_drive": "链式传动箱", - "block.create.encased_fan": "鼓风机", - "block.create.encased_fluid_pipe": "流体管道箱", - "block.create.fancy_andesite_bricks": "方纹安山岩砖", - "block.create.fancy_andesite_bricks_slab": "方纹安山岩砖台阶", - "block.create.fancy_andesite_bricks_stairs": "方纹安山岩砖楼梯", - "block.create.fancy_andesite_bricks_wall": "方纹安山岩砖墙", - "block.create.fancy_dark_scoria_bricks": "方纹深色熔渣砖", - "block.create.fancy_dark_scoria_bricks_slab": "方纹深色熔渣砖台阶", - "block.create.fancy_dark_scoria_bricks_stairs": "方纹深色熔渣砖楼梯", - "block.create.fancy_dark_scoria_bricks_wall": "方纹深色熔渣砖墙", - "block.create.fancy_diorite_bricks": "方纹闪长岩砖", - "block.create.fancy_diorite_bricks_slab": "方纹闪长岩砖台阶", - "block.create.fancy_diorite_bricks_stairs": "方纹闪长岩砖楼梯", - "block.create.fancy_diorite_bricks_wall": "方纹闪长岩砖墙", - "block.create.fancy_dolomite_bricks": "方纹白云岩砖", - "block.create.fancy_dolomite_bricks_slab": "方纹白云岩砖台阶", - "block.create.fancy_dolomite_bricks_stairs": "方纹白云岩砖楼梯", - "block.create.fancy_dolomite_bricks_wall": "方纹白云岩砖墙", - "block.create.fancy_gabbro_bricks": "方纹辉长岩砖", - "block.create.fancy_gabbro_bricks_slab": "方纹辉长岩砖台阶", - "block.create.fancy_gabbro_bricks_stairs": "方纹辉长岩砖楼梯", - "block.create.fancy_gabbro_bricks_wall": "方纹辉长岩砖墙", - "block.create.fancy_granite_bricks": "方纹花岗岩砖", - "block.create.fancy_granite_bricks_slab": "方纹花岗岩砖台阶", - "block.create.fancy_granite_bricks_stairs": "方纹花岗岩砖楼梯", - "block.create.fancy_granite_bricks_wall": "方纹花岗岩砖墙", - "block.create.fancy_limestone_bricks": "方纹石灰岩砖", - "block.create.fancy_limestone_bricks_slab": "方纹石灰岩砖台阶", - "block.create.fancy_limestone_bricks_stairs": "方纹石灰岩砖楼梯", - "block.create.fancy_limestone_bricks_wall": "方纹石灰岩砖墙", - "block.create.fancy_scoria_bricks": "方纹熔渣砖", - "block.create.fancy_scoria_bricks_slab": "方纹熔渣砖台阶", - "block.create.fancy_scoria_bricks_stairs": "方纹熔渣砖楼梯", - "block.create.fancy_scoria_bricks_wall": "方纹熔渣砖墙", - "block.create.fancy_weathered_limestone_bricks": "方纹风化石灰岩砖", - "block.create.fancy_weathered_limestone_bricks_slab": "方纹风化石灰岩砖台阶", - "block.create.fancy_weathered_limestone_bricks_stairs": "方纹风化石灰岩砖楼梯", - "block.create.fancy_weathered_limestone_bricks_wall": "方纹风化石灰岩砖墙", - "block.create.fluid_pipe": "流体管道", - "block.create.fluid_tank": "流体储罐", - "block.create.fluid_valve": "流体阀门", - "block.create.flywheel": "飞轮", - "block.create.framed_glass": "边框玻璃", - "block.create.framed_glass_pane": "边框玻璃板", - "block.create.furnace_engine": "熔炉引擎", - "block.create.gabbro": "辉长岩", - "block.create.gabbro_bricks": "辉长岩砖", - "block.create.gabbro_bricks_slab": "辉长岩砖台阶", - "block.create.gabbro_bricks_stairs": "辉长岩砖楼梯", - "block.create.gabbro_bricks_wall": "辉长岩砖墙", - "block.create.gabbro_cobblestone": "辉长岩圆石", - "block.create.gabbro_cobblestone_slab": "辉长岩圆石台阶", - "block.create.gabbro_cobblestone_stairs": "辉长岩圆石楼梯", - "block.create.gabbro_cobblestone_wall": "辉长岩圆石墙", - "block.create.gabbro_pillar": "竖纹辉长岩", - "block.create.gantry_carriage": "起重机取物器", - "block.create.gantry_shaft": "起重机杆", - "block.create.gearbox": "十字齿轮箱", - "block.create.gearshift": "反转齿轮箱", - "block.create.glass_fluid_pipe": "玻璃流体管道", - "block.create.granite_bricks": "花岗岩砖", - "block.create.granite_bricks_slab": "花岗岩砖台阶", - "block.create.granite_bricks_stairs": "花岗岩砖楼梯", - "block.create.granite_bricks_wall": "花岗岩砖墙", - "block.create.granite_cobblestone": "花岗岩圆石", - "block.create.granite_cobblestone_slab": "花岗岩圆石台阶", - "block.create.granite_cobblestone_stairs": "花岗岩圆石楼梯", - "block.create.granite_cobblestone_wall": "花岗岩圆石墙", - "block.create.granite_pillar": "竖纹花岗岩", - "block.create.gray_sail": "灰色风帆", - "block.create.gray_seat": "灰色坐垫", - "block.create.gray_valve_handle": "灰色阀门手轮", - "block.create.green_sail": "绿色风帆", - "block.create.green_seat": "绿色坐垫", - "block.create.green_valve_handle": "绿色阀门手轮", - "block.create.hand_crank": "手摇曲柄", - "block.create.honey": "蜂蜜", - "block.create.horizontal_framed_glass": "竖直边框玻璃", - "block.create.horizontal_framed_glass_pane": "竖直边框玻璃板", - "block.create.hose_pulley": "软管滑轮", - "block.create.item_drain": "分液池", - "block.create.jungle_window": "丛林窗户", - "block.create.jungle_window_pane": "丛林窗户板", - "block.create.large_cogwheel": "大齿轮", - "block.create.layered_andesite": "层叠安山岩", - "block.create.layered_dark_scoria": "层叠深色熔渣", - "block.create.layered_diorite": "层叠闪长岩", - "block.create.layered_dolomite": "层叠白云岩", - "block.create.layered_gabbro": "层叠辉长岩", - "block.create.layered_granite": "层叠花岗岩", - "block.create.layered_limestone": "层叠石灰岩", - "block.create.layered_scoria": "层叠熔渣", - "block.create.layered_weathered_limestone": "层叠风化石灰岩", - "block.create.light_blue_sail": "淡蓝色风帆", - "block.create.light_blue_seat": "淡蓝色坐垫", - "block.create.light_blue_valve_handle": "淡蓝色阀门手轮", - "block.create.light_gray_sail": "淡灰色风帆", - "block.create.light_gray_seat": "淡灰色坐垫", - "block.create.light_gray_valve_handle": "淡灰色阀门手轮", - "block.create.lime_sail": "黄绿色风帆", - "block.create.lime_seat": "黄绿色坐垫", - "block.create.lime_valve_handle": "黄绿色阀门手轮", - "block.create.limesand": "石灰沙", - "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩砖", - "block.create.limestone_bricks_slab": "石灰岩砖台阶", - "block.create.limestone_bricks_stairs": "石灰岩砖楼梯", - "block.create.limestone_bricks_wall": "石灰岩砖墙", - "block.create.limestone_cobblestone": "石灰岩圆石", - "block.create.limestone_cobblestone_slab": "石灰岩圆石台阶", - "block.create.limestone_cobblestone_stairs": "石灰岩圆石楼梯", - "block.create.limestone_cobblestone_wall": "石灰岩圆石墙", - "block.create.limestone_pillar": "竖纹石灰岩", - "block.create.linear_chassis": "机壳底盘", - "block.create.lit_blaze_burner": "烈焰人燃烧室(已点燃)", - "block.create.magenta_sail": "品红色风帆", - "block.create.magenta_seat": "品红色坐垫", - "block.create.magenta_valve_handle": "品红色阀门手轮", - "block.create.mechanical_arm": "动力臂", - "block.create.mechanical_bearing": "动力轴承", - "block.create.mechanical_crafter": "动力合成器", - "block.create.mechanical_drill": "动力钻头", - "block.create.mechanical_harvester": "动力收割机", - "block.create.mechanical_mixer": "动力搅拌器", - "block.create.mechanical_piston": "动力活塞", - "block.create.mechanical_piston_head": "动力活塞头", - "block.create.mechanical_plough": "动力犁", - "block.create.mechanical_press": "动力辊压机", - "block.create.mechanical_pump": "动力泵", - "block.create.mechanical_saw": "动力锯", - "block.create.metal_bracket": "金属支架", - "block.create.millstone": "石磨", - "block.create.minecart_anchor": "矿车锚", - "block.create.mossy_andesite": "生苔安山岩", - "block.create.mossy_dark_scoria": "生苔深色熔渣", - "block.create.mossy_diorite": "生苔闪长岩", - "block.create.mossy_dolomite": "生苔白云岩", - "block.create.mossy_gabbro": "生苔辉长岩", - "block.create.mossy_granite": "生苔花岗岩", - "block.create.mossy_limestone": "生苔石灰岩", - "block.create.mossy_scoria": "生苔熔渣", - "block.create.mossy_weathered_limestone": "生苔风化石灰岩", - "block.create.mysterious_cuckoo_clock": "布谷鸟闹钟", - "block.create.natural_scoria": "天然熔渣", - "block.create.nixie_tube": "辉光管", - "block.create.nozzle": "分散网", - "block.create.oak_window": "橡木窗户", - "block.create.oak_window_pane": "橡木窗户板", - "block.create.orange_sail": "橙色风帆", - "block.create.orange_seat": "橙色坐垫", - "block.create.orange_valve_handle": "橙色阀门手轮", - "block.create.ornate_iron_window": "华丽铁窗户", - "block.create.ornate_iron_window_pane": "华丽铁窗户板", - "block.create.overgrown_andesite": "生草安山岩", - "block.create.overgrown_dark_scoria": "生草深色熔渣", - "block.create.overgrown_diorite": "生草闪长岩", - "block.create.overgrown_dolomite": "生草白云岩", - "block.create.overgrown_gabbro": "生草辉长岩", - "block.create.overgrown_granite": "生草花岗岩", - "block.create.overgrown_limestone": "生草石灰岩", - "block.create.overgrown_scoria": "生草熔渣", - "block.create.overgrown_weathered_limestone": "生草风化石灰岩", - "block.create.paved_andesite": "安山岩铺路石", - "block.create.paved_andesite_slab": "安山岩铺路石台阶", - "block.create.paved_andesite_stairs": "安山岩铺路石楼梯", - "block.create.paved_andesite_wall": "安山岩铺路石墙", - "block.create.paved_dark_scoria": "深色熔渣铺路石", - "block.create.paved_dark_scoria_slab": "深色熔渣铺路石台阶", - "block.create.paved_dark_scoria_stairs": "深色熔渣铺路石楼梯", - "block.create.paved_dark_scoria_wall": "深色熔渣铺路石墙", - "block.create.paved_diorite": "闪长岩铺路石", - "block.create.paved_diorite_slab": "闪长岩铺路石台阶", - "block.create.paved_diorite_stairs": "闪长岩铺路石楼梯", - "block.create.paved_diorite_wall": "闪长岩铺路石墙", - "block.create.paved_dolomite": "白云岩铺路石", - "block.create.paved_dolomite_slab": "白云岩铺路石台阶", - "block.create.paved_dolomite_stairs": "白云岩铺路石楼梯", - "block.create.paved_dolomite_wall": "白云岩铺路石墙", - "block.create.paved_gabbro": "辉长岩铺路石", - "block.create.paved_gabbro_slab": "辉长岩铺路石台阶", - "block.create.paved_gabbro_stairs": "辉长岩铺路石楼梯", - "block.create.paved_gabbro_wall": "辉长岩铺路石墙", - "block.create.paved_granite": "花岗岩铺路石", - "block.create.paved_granite_slab": "花岗岩铺路石台阶", - "block.create.paved_granite_stairs": "花岗岩铺路石楼梯", - "block.create.paved_granite_wall": "花岗岩铺路石墙", - "block.create.paved_limestone": "石灰岩铺路石", - "block.create.paved_limestone_slab": "石灰岩铺路石台阶", - "block.create.paved_limestone_stairs": "石灰岩铺路石楼梯", - "block.create.paved_limestone_wall": "石灰岩铺路石墙", - "block.create.paved_scoria": "熔渣铺路石", - "block.create.paved_scoria_slab": "熔渣铺路石台阶", - "block.create.paved_scoria_stairs": "熔渣铺路石楼梯", - "block.create.paved_scoria_wall": "熔渣铺路石墙", - "block.create.paved_weathered_limestone": "风化石灰岩铺路石", - "block.create.paved_weathered_limestone_slab": "风化石灰岩铺路石台阶", - "block.create.paved_weathered_limestone_stairs": "风化石灰岩铺路石楼梯", - "block.create.paved_weathered_limestone_wall": "风化石灰岩铺路石墙", - "block.create.pink_sail": "粉红色风帆", - "block.create.pink_seat": "粉红色坐垫", - "block.create.pink_valve_handle": "粉红色阀门手轮", - "block.create.piston_extension_pole": "活塞杆", - "block.create.polished_dark_scoria": "磨制深色熔渣", - "block.create.polished_dark_scoria_slab": "磨制深色熔渣台阶", - "block.create.polished_dark_scoria_stairs": "磨制深色熔渣楼梯", - "block.create.polished_dark_scoria_wall": "磨制深色熔渣墙", - "block.create.polished_dolomite": "磨制白云岩", - "block.create.polished_dolomite_slab": "磨制白云岩台阶", - "block.create.polished_dolomite_stairs": "磨制白云岩楼梯", - "block.create.polished_dolomite_wall": "磨制白云岩墙", - "block.create.polished_gabbro": "磨制辉长岩", - "block.create.polished_gabbro_slab": "磨制辉长岩台阶", - "block.create.polished_gabbro_stairs": "磨制辉长岩楼梯", - "block.create.polished_gabbro_wall": "磨制辉长岩墙", - "block.create.polished_limestone": "磨制石灰岩", - "block.create.polished_limestone_slab": "磨制石灰岩台阶", - "block.create.polished_limestone_stairs": "磨制石灰岩楼梯", - "block.create.polished_limestone_wall": "磨制石灰岩墙", - "block.create.polished_scoria": "磨制熔渣", - "block.create.polished_scoria_slab": "磨制熔渣台阶", - "block.create.polished_scoria_stairs": "磨制熔渣楼梯", - "block.create.polished_scoria_wall": "磨制熔渣墙", - "block.create.polished_weathered_limestone": "磨制风化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨制风化石灰岩台阶", - "block.create.polished_weathered_limestone_stairs": "磨制风化石灰岩楼梯", - "block.create.polished_weathered_limestone_wall": "磨制风化石灰岩墙", - "block.create.portable_fluid_interface": "移动式流体接口", - "block.create.portable_storage_interface": "移动式存储接口", - "block.create.powered_latch": "锁存器", - "block.create.powered_toggle_latch": "转换锁存器", - "block.create.pulley_magnet": "滑轮磁铁", - "block.create.pulse_repeater": "脉冲中继器", - "block.create.purple_sail": "紫色风帆", - "block.create.purple_seat": "紫色坐垫", - "block.create.purple_valve_handle": "紫色阀门手轮", - "block.create.radial_chassis": "旋转底盘", - "block.create.red_sail": "红色风帆", - "block.create.red_seat": "红色坐垫", - "block.create.red_valve_handle": "红色阀门手轮", - "block.create.redstone_contact": "接触式红石信号发生器", - "block.create.redstone_link": "无线红石信号终端", - "block.create.refined_radiance_casing": "光辉机壳", - "block.create.reinforced_rail": "强化铁轨", - "block.create.rope": "绳索", - "block.create.rope_pulley": "绳索滑轮", - "block.create.rotation_speed_controller": "转速控制器", - "block.create.sail_frame": "风帆框架", - "block.create.schematic_table": "蓝图桌", - "block.create.schematicannon": "蓝图加农炮", - "block.create.scoria": "熔渣", - "block.create.scoria_bricks": "熔渣砖", - "block.create.scoria_bricks_slab": "熔渣砖台阶", - "block.create.scoria_bricks_stairs": "熔渣砖楼梯", - "block.create.scoria_bricks_wall": "熔渣砖墙", - "block.create.scoria_cobblestone": "熔渣圆石", - "block.create.scoria_cobblestone_slab": "熔渣圆石台阶", - "block.create.scoria_cobblestone_stairs": "熔渣圆石楼梯", - "block.create.scoria_cobblestone_wall": "熔渣圆石墙", - "block.create.scoria_pillar": "竖纹熔渣", - "block.create.secondary_linear_chassis": "机壳底盘2号", - "block.create.sequenced_gearshift": "可编程齿轮箱", - "block.create.shadow_steel_casing": "暗影机壳", - "block.create.shaft": "传动杆", - "block.create.smart_chute": "智能溜槽", - "block.create.smart_fluid_pipe": "智能流体管道", - "block.create.speedometer": "速度表", - "block.create.spout": "注液器", - "block.create.spruce_window": "云杉窗户", - "block.create.spruce_window_pane": "云杉窗户板", - "block.create.sticker": "黏着器", - "block.create.sticky_mechanical_piston": "黏性动力活塞", - "block.create.stockpile_switch": "存量转换器", - "block.create.stressometer": "应力表", - "block.create.tiled_glass": "十字玻璃窗", - "block.create.tiled_glass_pane": "十字玻璃窗户板", - "block.create.turntable": "转盘", - "block.create.vertical_framed_glass": "竖直边框玻璃", - "block.create.vertical_framed_glass_pane": "竖直边框玻璃板", - "block.create.warped_window": "诡异木窗户", - "block.create.warped_window_pane": "诡异木窗户板", - "block.create.water_wheel": "水车", - "block.create.weathered_limestone": "风化石灰岩", - "block.create.weathered_limestone_bricks": "风化石灰岩砖", - "block.create.weathered_limestone_bricks_slab": "风化石灰岩砖台阶", - "block.create.weathered_limestone_bricks_stairs": "风化石灰岩砖楼梯", - "block.create.weathered_limestone_bricks_wall": "风化石灰岩砖墙", - "block.create.weathered_limestone_cobblestone": "风化石灰岩圆石", - "block.create.weathered_limestone_cobblestone_slab": "风化石灰岩圆石台阶", - "block.create.weathered_limestone_cobblestone_stairs": "风化石灰岩圆石楼梯", - "block.create.weathered_limestone_cobblestone_wall": "风化石灰岩圆石墙", - "block.create.weathered_limestone_pillar": "竖纹风化石灰岩", - "block.create.weighted_ejector": "弹射置物台", - "block.create.white_sail": "白色风帆", - "block.create.white_seat": "白色坐垫", - "block.create.white_valve_handle": "白色阀门手轮", - "block.create.windmill_bearing": "风车轴承", - "block.create.wooden_bracket": "木质支架", - "block.create.yellow_sail": "黄色风帆", - "block.create.yellow_seat": "黄色坐垫", - "block.create.yellow_valve_handle": "黄色阀门手轮", - "block.create.zinc_block": "锌块", - "block.create.zinc_ore": "锌矿石", - - "entity.create.contraption": "装置", - "entity.create.gantry_contraption": "起重机装置", - "entity.create.seat": "坐垫", - "entity.create.stationary_contraption": "固定装置", - "entity.create.super_glue": "强力胶", - - "fluid.create.chocolate": "巧克力", - "fluid.create.honey": "蜂蜜", - "fluid.create.milk": "牛奶", - "fluid.create.potion": "药水", - "fluid.create.tea": "茶", - - "item.create.andesite_alloy": "安山合金", - "item.create.attribute_filter": "属性过滤器", - "item.create.bar_of_chocolate": "巧克力棒", - "item.create.belt_connector": "传送带", - "item.create.blaze_cake": "烈焰蛋糕", - "item.create.blaze_cake_base": "烈焰蛋糕胚", - "item.create.brass_hand": "黄铜手部零件", - "item.create.brass_ingot": "黄铜锭", - "item.create.brass_nugget": "黄铜粒", - "item.create.brass_sheet": "黄铜板", - "item.create.builders_tea": "建造工茶饮", - "item.create.chest_minecart_contraption": "装配过的动力矿车", - "item.create.chocolate_bucket": "巧克力桶", - "item.create.chocolate_glazed_berries": "巧克力包层浆果", - "item.create.chromatic_compound": "异彩化合物", - "item.create.cinder_flour": "下界面粉", - "item.create.copper_ingot": "铜锭", - "item.create.copper_nugget": "铜粒", - "item.create.copper_sheet": "铜板", - "item.create.crafter_slot_cover": "合成器盖板", - "item.create.crushed_aluminum_ore": "粉碎铝矿石", - "item.create.crushed_brass": "粉碎黄铜", - "item.create.crushed_copper_ore": "粉碎铜矿石", - "item.create.crushed_gold_ore": "粉碎金矿石", - "item.create.crushed_iron_ore": "粉碎铁矿石", - "item.create.crushed_lead_ore": "粉碎铅矿石", - "item.create.crushed_nickel_ore": "粉碎镍矿石", - "item.create.crushed_osmium_ore": "粉碎锇矿石", - "item.create.crushed_platinum_ore": "粉碎铂矿石", - "item.create.crushed_quicksilver_ore": "粉碎水银矿石", - "item.create.crushed_silver_ore": "粉碎银矿石", - "item.create.crushed_tin_ore": "粉碎锡矿石", - "item.create.crushed_uranium_ore": "粉碎铀矿石", - "item.create.crushed_zinc_ore": "粉碎锌矿石", - "item.create.deforester": "树林毁灭者", - "item.create.dough": "面团", - "item.create.electron_tube": "电子管", - "item.create.empty_blaze_burner": "空的烈焰人燃烧室", - "item.create.empty_schematic": "空白蓝图", - "item.create.extendo_grip": "伸缩机械手", - "item.create.filter": "过滤器", - "item.create.furnace_minecart_contraption": "装配过的动力矿车", - "item.create.goggles": "工程师护目镜", - "item.create.golden_sheet": "金板", - "item.create.handheld_blockzapper": "手持式方块放置器", - "item.create.handheld_worldshaper": "手持式环境塑形器", - "item.create.honey_bucket": "蜂蜜桶", - "item.create.honeyed_apple": "蜜渍苹果", - "item.create.integrated_circuit": "集成电路板", - "item.create.iron_sheet": "铁板", - "item.create.lapis_sheet": "青金石板", - "item.create.minecart_contraption": "装配过的矿车", - "item.create.minecart_coupling": "矿车连轴器", - "item.create.polished_rose_quartz": "磨制玫瑰石英", - "item.create.powdered_obsidian": "黑曜石粉末", - "item.create.propeller": "扇叶", - "item.create.red_sand_paper": "红沙砂纸", - "item.create.refined_radiance": "光辉石", - "item.create.rose_quartz": "玫瑰石英", - "item.create.sand_paper": "砂纸", - "item.create.schematic": "蓝图", - "item.create.schematic_and_quill": "蓝图与笔", - "item.create.shadow_steel": "暗影钢", - "item.create.super_glue": "强力胶", - "item.create.sweet_roll": "甜甜卷", - "item.create.tree_fertilizer": "树木肥料", - "item.create.vertical_gearbox": "竖直十字齿轮箱", - "item.create.wand_of_symmetry": "对称之杖", - "item.create.wheat_flour": "小麦粉", - "item.create.whisk": "搅拌器", - "item.create.wrench": "扳手", - "item.create.zinc_ingot": "锌锭", - "item.create.zinc_nugget": "锌粒", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "欢迎来到机械动力", - "advancement.create.root.desc": "是时候来制作一些超赞的机械结构了!", - "advancement.create.andesite_alloy": "头韵狂魔(Alliterations Aplenty)", - "advancement.create.andesite_alloy.desc": "机械动力的材料名字都很古怪,安山合金(Andesite Alloy)就是其中之一。", - "advancement.create.its_alive": "鲜活的机械生命", - "advancement.create.its_alive.desc": "首次激活齿轮结构的旋转。", - "advancement.create.shifting_gears": "换挡,加速,起飞!", - "advancement.create.shifting_gears.desc": "将大齿轮连接到小齿轮上,可以改变结构的转速。", - "advancement.create.overstressed": "过载", - "advancement.create.overstressed.desc": "首次使能量网络过载。", - "advancement.create.belt": "海带传动", - "advancement.create.belt.desc": "用传送带连接两个传动杆", - "advancement.create.tunnel": "找掩护!", - "advancement.create.tunnel.desc": "用隧道装饰传送带。", - "advancement.create.splitter_tunnel": "分而治之", - "advancement.create.splitter_tunnel.desc": "用黄铜隧道设计一个分流器。", - "advancement.create.chute": "轰然倒塌", - "advancement.create.chute.desc": "放置一个溜槽(垂直版本的传送带)。", - "advancement.create.upward_chute": "空中劫持", - "advancement.create.upward_chute.desc": "目睹抛出的物品飞入带风扇的溜槽。", - "advancement.create.belt_funnel": "漏斗垂帘", - "advancement.create.belt_funnel.desc": "将侧向漏斗放在传送带或置物台的顶部,并观察到特殊材质的漏斗。", - "advancement.create.belt_funnel_kiss": "鹦鹉和垂翼", - "advancement.create.belt_funnel_kiss.desc": "让两个安装在传送带上的漏斗深情相吻。", - "advancement.create.fan": "动力御气师", - "advancement.create.fan.desc": "飘在鼓风机吹出的气流上", - "advancement.create.fan_lava": "地热取暖", - "advancement.create.fan_lava.desc": "被熔炼气流烤的酥脆。", - "advancement.create.fan_water": "奇妙的洗涤流程", - "advancement.create.fan_water.desc": "被洗涤气流洗了个澡。", - "advancement.create.fan_smoke": "动力风箱", - "advancement.create.fan_smoke.desc": "被烟熏气流熏得满脸黑。", - "advancement.create.wrench": "细节调整", - "advancement.create.wrench.desc": "做出一个方便调整方块的扳手", - "advancement.create.goggles": "应力,一目了然", - "advancement.create.goggles.desc": "做出一个能看到机器动能信息的工程师护目镜", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一个速度表,并且带上工程师护目镜来读取速度数据", - "advancement.create.stressometer": "精密的应力控制", - "advancement.create.stressometer.desc": "放置一个应力表,并且带上工程师护目镜来读取应力数据", - "advancement.create.aesthetics": "美观,即是一切!", - "advancement.create.aesthetics.desc": "将支架放在传动杆,管道和齿轮上。", - "advancement.create.reinforced": "Boom~ 加强!", - "advancement.create.reinforced.desc": "在传动杆,管道和传送带上使用机壳加固。", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一个水车并且让它开始旋转", - "advancement.create.chocolate_wheel": "味美动力", - "advancement.create.chocolate_wheel.desc": "用熔融巧克力驱动水车。", - "advancement.create.lava_wheel": "风火轮", - "advancement.create.lava_wheel.desc": "它本不应该起作用的......", - "advancement.create.cuckoo": "到点了吗?", - "advancement.create.cuckoo.desc": "目睹布谷鸟钟宣布就寝时间。", - "advancement.create.millstone": "便携式粉碎机", - "advancement.create.millstone.desc": "放置一个石磨并且为其供能", - "advancement.create.windmill": "微风吹拂", - "advancement.create.windmill.desc": "组装风车。", - "advancement.create.maxed_windmill": "强风肆虐", - "advancement.create.maxed_windmill.desc": "组装最大强度的风车。", - "advancement.create.andesite_casing": "安山纪元", - "advancement.create.andesite_casing.desc": "使用安山合金和木头来合成一个安山机壳", - "advancement.create.mechanical_drill": "坚如磐石,势如破竹", - "advancement.create.mechanical_drill.desc": "放置一个动力钻头并且为其供能", - "advancement.create.press": "'Duang!'", - "advancement.create.press.desc": "使用辊压机来辊压一些板子", - "advancement.create.polished_rose_quartz": "粉色钻石", - "advancement.create.polished_rose_quartz.desc": "用砂纸将玫瑰石英打磨至透明", - "advancement.create.electron_tube": "哔~~ 哔~~", - "advancement.create.electron_tube.desc": "制作一个可用于合成高级机器的电子管", - "advancement.create.mechanical_saw": "一刀两断", - "advancement.create.mechanical_saw.desc": "放置一个动力锯并且为其供能", - "advancement.create.basin": "快到碗里来", - "advancement.create.basin.desc": "放置一个工作盆,并且往里面放些东西", - "advancement.create.mixer": "均匀搅拌", - "advancement.create.mixer.desc": "将搅拌机放在工作盆上方,并且使其搅拌盆内物品", - "advancement.create.blaze_burner": "活炉", - "advancement.create.blaze_burner.desc": "获得一个烈焰人燃烧室。", - "advancement.create.compact": "快乐压缩", - "advancement.create.compact.desc": "使用辊压机在工作盆中压缩一些物品", - "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用粉碎锌矿石和粉碎铜矿石来制作粉碎黄铜", - "advancement.create.brass_casing": "黄铜纪元", - "advancement.create.brass_casing.desc": "用黄铜和木头制作一个黄铜机壳", - "advancement.create.copper_casing": "铜之纪元", - "advancement.create.copper_casing.desc": "使用铜和木头制作一个铜制机壳", - "advancement.create.spout": "哗啦啦", - "advancement.create.spout.desc": "观察注液器灌满物品。", - "advancement.create.spout_potion": "全球啤酒厂", - "advancement.create.spout_potion.desc": "观察注液器注入药水到玻璃瓶。", - "advancement.create.chocolate": "幻想世界", - "advancement.create.chocolate.desc": "获取一桶熔融巧克力。", - "advancement.create.item_drain": "滚筒排液", - "advancement.create.item_drain.desc": "观察流体物品被分液池抽空。", - "advancement.create.chained_item_drain": "翻滚吧!", - "advancement.create.chained_item_drain.desc": "观察物品穿过多个链状分布的分液池。", - "advancement.create.glass_pipe": "流之观察者", - "advancement.create.glass_pipe.desc": "透过带窗的流体管道观察流体在管道中流淌。使用扳手可打开直线流体管道的窗户。", - "advancement.create.pipe_collision": "Never cross the Streams!", - "advancement.create.pipe_collision.desc": "观察两种流体在管道网络中相会。", - "advancement.create.pipe_spill": "漏水啦!", - "advancement.create.pipe_spill.desc": "观察管道的开口端将流体排放或放置到世界中。", - "advancement.create.hose_pulley": "工业泄漏", - "advancement.create.hose_pulley.desc": "放下一个软管滑轮,观察它排干或填充一大片液体。", - "advancement.create.infinite_water": "排干海洋", - "advancement.create.infinite_water.desc": "从大到足以被认为是无限的水源中抽水。", - "advancement.create.infinite_lava": "汲取行星核心", - "advancement.create.infinite_lava.desc": "从广阔的熔岩湖中抽出熔岩。", - "advancement.create.infinite_chocolate": "幻想沉溺", - "advancement.create.infinite_chocolate.desc": "从大到足以被被视为无限的巧克力海中抽取巧克力。", - "advancement.create.crafter": "自动化装配", - "advancement.create.crafter.desc": "放置一些机械合成台并且为其供能", - "advancement.create.clockwork_bearing": "巧械时钟", - "advancement.create.clockwork_bearing.desc": "组装安装在发条轴承上的结构。", - "advancement.create.nixie_tube": "花样符号", - "advancement.create.nixie_tube.desc": "获取并放下一对辉光管。", - "advancement.create.deployer": "我就指着你了咋地?", - "advancement.create.deployer.desc": "放置并且功能一个机械手。这可是你右手的完美复制品", - "advancement.create.speed_controller": "工程师讨厌他!", - "advancement.create.speed_controller.desc": "放置一个转速控制器,这是换档的终极装置。", - "advancement.create.flywheel": "工厂之心", - "advancement.create.flywheel.desc": "将引擎成功连接到飞轮。", - "advancement.create.overstress_flywheel": "高压", - "advancement.create.overstress_flywheel.desc": "过载熔炉引擎。", - "advancement.create.integrated_circuit": "复杂运算", - "advancement.create.integrated_circuit.desc": "组装集成电路。", - "advancement.create.mechanical_arm": "忙碌的手!", - "advancement.create.mechanical_arm.desc": "制作机械臂,选择输入和输出,放置并给予它动力,然后看着它为你完成所有工作。", - "advancement.create.musical_arm": "没人能在我的 BGM 里打败我!", - "advancement.create.musical_arm.desc": "使用动力臂播放唱片。", - "advancement.create.arm_many_targets": "掌控全局", - "advancement.create.arm_many_targets.desc": "配置一个有十个或更多输出位置的机械臂。", - "advancement.create.arm_blaze_burner": "熊熊燃烧", - "advancement.create.arm_blaze_burner.desc": "指导机械臂给烈焰人燃烧室投食。", - "advancement.create.fist_bump": "来碰个拳,哥们~", - "advancement.create.fist_bump.desc": "使两个机械手互相碰拳", - "advancement.create.crushing_wheel": "一对大家伙", - "advancement.create.crushing_wheel.desc": "制作一些能更快粉碎物品的粉碎轮", - "advancement.create.blaze_cake": "糖份超标", - "advancement.create.blaze_cake.desc": "给烈焰人燃烧室烤一份特别蛋糕。", - "advancement.create.chromatic_compound": "两极材料", - "advancement.create.chromatic_compound.desc": "制作一个异彩化合物", - "advancement.create.shadow_steel": "虚空归来者", - "advancement.create.shadow_steel.desc": "制作一些暗影钢", - "advancement.create.refined_radiance": "明亮而启灵", - "advancement.create.refined_radiance.desc": "制作一个光辉石", - "advancement.create.chromatic_age": "异彩纪元", - "advancement.create.chromatic_age.desc": "创造出光与影的机壳。", - "advancement.create.zapper": "讲究的建筑师", - "advancement.create.zapper.desc": "制作一个非常方便的手持方块放置器", - "advancement.create.upgraded_zapper": "来自异世界的超频", - "advancement.create.upgraded_zapper.desc": "制作一个完全升级的手持方块放置器", - "advancement.create.wand_of_symmetry": "简单的镜面几何学", - "advancement.create.wand_of_symmetry.desc": "制作一个对称之杖", - "advancement.create.deforester": "超时空砍伐", - "advancement.create.deforester.desc": "制作一个森林毁灭者,然后跟你后院的树林说再见吧", - "advancement.create.extendo_grip": "biu biu biu!", - "advancement.create.extendo_grip.desc": "获得一个伸缩机械手", - "advancement.create.dual_extendo_grip": "biu——biu——biu——", - "advancement.create.dual_extendo_grip.desc": "双持伸缩机械手,超人般的触碰距离。", - "advancement.create.eob": "Beta 版结束", - "advancement.create.eob.desc": "期待未来会有更多的内容。<3", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "机械动力", - "itemGroup.create.palettes": "机械动力建筑方块", - - "death.attack.create.crush": "%1$s被压扁了", - "death.attack.create.fan_fire": "%1$s试图接受热风的洗礼", - "death.attack.create.fan_lava": "%1$s在接受热风的洗礼中浴火焚身", - "death.attack.create.mechanical_drill": "%1$s被钻头钻的坏掉了", - "death.attack.create.mechanical_saw": "%1$s被圆锯切成了两截", - "death.attack.create.cuckoo_clock_explosion": "%1$s被布谷鸟钟炸得粉身碎骨", - - "create.block.deployer.damage_source_name": "二五仔机械手", - "create.block.cart_assembler.invalid": "请将矿车装配器放置在铁轨上", - - "create.recipe.crushing": "粉碎", - "create.recipe.milling": "研磨", - "create.recipe.fan_washing": "批量洗涤", - "create.recipe.fan_washing.fan": "在水后放置鼓风机", - "create.recipe.fan_smoking": "批量烟熏", - "create.recipe.fan_smoking.fan": "在火焰后放置鼓风机", - "create.recipe.fan_blasting": "批量熔炼", - "create.recipe.fan_blasting.fan": "在熔岩后放置鼓风机", - "create.recipe.pressing": "金属压片", - "create.recipe.mixing": "混合搅拌", - "create.recipe.automatic_shapeless": "自动搅拌", - "create.recipe.automatic_brewing": "自动酿造", - "create.recipe.packing": "压块塑形", - "create.recipe.automatic_packing": "自动打包", - "create.recipe.sawing": "板材切割", - "create.recipe.mechanical_crafting": "自动合成", - "create.recipe.automatic_shaped": "自动合成", - "create.recipe.block_cutting": "方块切割", - "create.recipe.wood_cutting": "木材切割", - "create.recipe.blockzapper_upgrade": "手持式方块放置器", - "create.recipe.sandpaper_polishing": "砂纸打磨", - "create.recipe.mystery_conversion": "神秘转化", - "create.recipe.spout_filling": "注液", - "create.recipe.draining": "分液", - "create.recipe.processing.chance":"%1$s%%概率", - "create.recipe.heat_requirement.none": "无需加热", - "create.recipe.heat_requirement.heated": "加热", - "create.recipe.heat_requirement.superheated": "超级加热", - - "create.generic.range": "范围", - "create.generic.radius": "半径", - "create.generic.width": "宽度", - "create.generic.height": "高度", - "create.generic.length": "长度", - "create.generic.speed": "速度", - "create.generic.delay": "延时", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分钟", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "°", - "create.generic.unit.millibuckets":"%1$smB", - "create.generic.clockwise": "顺时针方向", - "create.generic.counter_clockwise": "逆时针方向", - - "create.action.scroll": "滚轮", - "create.action.confirm": "确认", - "create.action.abort": "退出", - "create.action.saveToFile": "保存", - "create.action.discard": "放弃", - - "create.keyinfo.toolmenu": "工具菜单", - "create.keyinfo.scrollup": "(游戏中)向上鼠标滚轮", - "create.keyinfo.scrolldown": "(游戏中)向下鼠标滚轮", - - "create.gui.scrollInput.defaultTitle": "选择一个选项:", - "create.gui.scrollInput.scrollToModify": "滚动修改", - "create.gui.scrollInput.scrollToAdjustAmount": "滚动修改数量", - "create.gui.scrollInput.scrollToSelect": "滚动选择", - "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滚动更快", - "create.gui.toolmenu.focusKey": "按住 [%1$s] 鼠标滚轮选择", - "create.gui.toolmenu.cycle": "[SCROLL] 循环", - "create.gui.symmetryWand.mirrorType": "镜子类型", - "create.gui.symmetryWand.orientation": "方向", - - "create.symmetry.mirror.plane": "镜像", - "create.symmetry.mirror.doublePlane": "矩形", - "create.symmetry.mirror.triplePlane": "八角", - - "create.orientation.orthogonal": "垂直", - "create.orientation.diagonal": "对角线", - "create.orientation.horizontal": "水平", - "create.orientation.alongZ": "以z轴对齐", - "create.orientation.alongX": "以x轴对齐", - - "create.gui.blockzapper.title": "手持式方块放置机", - "create.gui.blockzapper.replaceMode": "替换模式", - "create.gui.blockzapper.searchDiagonal": "对角线延伸", - "create.gui.blockzapper.searchFuzzy": "忽视种类分界", - "create.gui.blockzapper.range": "延伸范围", - "create.gui.blockzapper.needsUpgradedAmplifier": "需要升级范围扩大器", - "create.gui.blockzapper.patternSection": "模式", - "create.gui.blockzapper.pattern.solid": "实心", - "create.gui.blockzapper.pattern.checkered": "棋盘", - "create.gui.blockzapper.pattern.inversecheckered": "反转棋盘", - "create.gui.blockzapper.pattern.chance25": "25% ", - "create.gui.blockzapper.pattern.chance50": "50% ", - "create.gui.blockzapper.pattern.chance75": "75% ", - "create.gui.terrainzapper.title": "手持式环境塑形器", - "create.gui.terrainzapper.placement": "放置模式", - "create.gui.terrainzapper.placement.merged": "结合", - "create.gui.terrainzapper.placement.attached": "依附", - "create.gui.terrainzapper.placement.inserted": "插入", - "create.gui.terrainzapper.brush": "塑形类型", - "create.gui.terrainzapper.brush.cuboid": "矩形体", - "create.gui.terrainzapper.brush.sphere": "球体", - "create.gui.terrainzapper.brush.cylinder": "圆柱体", - "create.gui.terrainzapper.tool": "填充类型", - "create.gui.terrainzapper.tool.fill": "填充", - "create.gui.terrainzapper.tool.place": "复写", - "create.gui.terrainzapper.tool.replace": "替换", - "create.gui.terrainzapper.tool.clear": "清除", - "create.gui.terrainzapper.tool.overlay": "覆盖", - "create.gui.terrainzapper.tool.flatten": "平整", - - "create.terrainzapper.shiftRightClickToSet": "Shift+鼠标右击以设置塑形类型", - - "create.blockzapper.usingBlock": "使用:%1$s", - "create.blockzapper.componentUpgrades": "组件升级:", - "create.blockzapper.component.body": "放置器机体", - "create.blockzapper.component.amplifier": "范围扩大器", - "create.blockzapper.component.accelerator": "射击加速器", - "create.blockzapper.component.retriever": "物品回捡器", - "create.blockzapper.component.scope": "距离观察镜", - "create.blockzapper.componentTier.none": "无", - "create.blockzapper.componentTier.brass": "黄铜", - "create.blockzapper.componentTier.chromatic": "异彩化合物", - "create.blockzapper.leftClickToSet": "左击方块将其设定为放置方块", - "create.blockzapper.empty": "方块不足!", - - "create.minecart_coupling.two_couplings_max": "矿车无法被连接两个以上的矿车连轴器", - "create.minecart_coupling.unloaded": "有一部分火车存在于未加载区块中", - "create.minecart_coupling.no_loops": "矿车连轴器不能连成一个环", - "create.minecart_coupling.removed": "从矿车上移除所有矿车连轴器", - "create.minecart_coupling.too_far": "矿车距离你太远了", - - "create.contraptions.movement_mode": "运动模式", - "create.contraptions.movement_mode.move_place": "停止时总是将装置方块化", - "create.contraptions.movement_mode.move_place_returned": "停止时只在初始位置才将装置方块化", - "create.contraptions.movement_mode.move_never_place": "只有在动力方块摧毁后才将装置方块化", - "create.contraptions.movement_mode.rotate_place": "停止时总是将装置方块化", - "create.contraptions.movement_mode.rotate_place_returned": "停止时只在接近初始角度才将装置方块化", - "create.contraptions.movement_mode.rotate_never_place": "只有在旋转轴摧毁后才将装置方块化", - "create.contraptions.cart_movement_mode": "矿车运动模式", - "create.contraptions.cart_movement_mode.rotate": "装置与矿车保持相同方向", - "create.contraptions.cart_movement_mode.rotate_paused": "矿车转向时机器停止工作", - "create.contraptions.cart_movement_mode.rotation_locked": "装置方向保持不变", - "create.contraptions.windmill.rotation_direction": "旋转方向", - "create.contraptions.clockwork.clock_hands": "钟表指针", - "create.contraptions.clockwork.hour_first": "时针优先", - "create.contraptions.clockwork.minute_first": "分针优先", - "create.contraptions.clockwork.hour_first_24": "24小时制优先", - - "create.logistics.filter": "过滤器", - "create.logistics.recipe_filter": "配方过滤器", - "create.logistics.fluid_filter": "流体过滤器", - "create.logistics.firstFrequency": "频道. #1", - "create.logistics.secondFrequency": "频道. #2", - "create.logistics.filter.apply": "已将过滤应用于%1$s。", - "create.logistics.filter.apply_click_again": "已将过滤应用于%1$s,再次点击可将手持物品数量复制到过滤器上。", - "create.logistics.filter.apply_count": "已将提取数量应用至过滤器。", - - "create.gui.goggles.generator_stats": "应力发生器状态:", - "create.gui.goggles.kinetic_stats": "动力学状态:", - "create.gui.goggles.at_current_speed": "当前速度应力值", - "create.gui.goggles.pole_length": "活塞杆长度:", - "create.gui.goggles.fluid_container": "流体容器信息:", - "create.gui.goggles.fluid_container.capacity": "容量:", - "create.gui.assembly.exception": "无法组装该结构:", - "create.gui.assembly.exception.unmovableBlock": "无法移动的方块:(%4$s)位于 [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "位于 [%1$s,%2$s,%3$s] 的方块未处于加载区块", - "create.gui.assembly.exception.structureTooLarge": "结构中的方块数量过多。\n配置中的最大数量限制为:%1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞加装的活塞杆数量过多。\n配置中的最大数量限制为:%1$s", - "create.gui.assembly.exception.noPistonPoles": "活塞缺失部分活塞杆", - "create.gui.assembly.exception.not_enough_sails": "相接的结构所包含的类风帆方块的数量不足。%1$s\n最低需要 %2$s 个方块", - "create.gui.goggles.base_value": "应力基础值", - "create.gui.gauge.info_header": "仪表信息:", - "create.gui.speedometer.title": "旋转速度", - "create.gui.stressometer.title": "网络应力", - "create.gui.stressometer.capacity": "剩余应力量", - "create.gui.stressometer.overstressed": "应力过载", - "create.gui.stressometer.no_rotation": "无旋转", - "create.gui.contraptions.not_fast_enough": "显然%1$s没有达到足够的工作转速。", - "create.gui.contraptions.network_overstressed": "显然装置过载,减速网络中的高应力消耗装置或者添加更多的应力发生装置", - "create.gui.adjustable_crate.title": "板条箱", - "create.gui.adjustable_crate.storageSpace": "储存空间", - "create.gui.stockpile_switch.title": "储存开关", - "create.gui.stockpile_switch.invert_signal": "反转信号", - "create.gui.stockpile_switch.move_to_lower_at": "移至下线%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "移至上线%1$s%%", - "create.gui.sequenced_gearshift.title": "可编程齿轮箱", - "create.gui.sequenced_gearshift.instruction": "指令", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "以特定的角度进行旋转", - "create.gui.sequenced_gearshift.instruction.turn_angle": "旋转", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "开始驱动活塞/软管滑轮/起重机", - "create.gui.sequenced_gearshift.instruction.turn_distance": "驱动活塞", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距离", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "时间延迟", - "create.gui.sequenced_gearshift.instruction.delay": "延迟", - "create.gui.sequenced_gearshift.instruction.delay.duration": "时长", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "结束", - "create.gui.sequenced_gearshift.instruction.wait": "等待", - "create.gui.sequenced_gearshift.instruction.wait.duration": "间隔", - "create.gui.sequenced_gearshift.instruction.end": "停止", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "等待新的红石脉冲", - "create.gui.sequenced_gearshift.instruction.await": "等待", - "create.gui.sequenced_gearshift.speed": "速度,速度方向", - "create.gui.sequenced_gearshift.speed.forward": "一倍速,正向", - "create.gui.sequenced_gearshift.speed.forward_fast": "两倍速,正向", - "create.gui.sequenced_gearshift.speed.back": "一倍速,反向", - "create.gui.sequenced_gearshift.speed.back_fast": "两倍速,反向", - - "create.schematicAndQuill.dimensions": "蓝图尺寸:%1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "第一个位置。", - "create.schematicAndQuill.secondPos": "第二个位置。", - "create.schematicAndQuill.noTarget": "按住Ctrl选择空气方块。", - "create.schematicAndQuill.abort": "删除选择。", - "create.schematicAndQuill.title": "蓝图名:", - "create.schematicAndQuill.convert": "立即保存并部署", - "create.schematicAndQuill.fallbackName": "我的蓝图", - "create.schematicAndQuill.saved": "另存为%1$s", - - "create.schematic.invalid":"[!] 无效的项目", - "create.schematic.position": "位置", - "create.schematic.rotation": "旋转", - "create.schematic.rotation.none": "无", - "create.schematic.rotation.cw90": "顺时针90", - "create.schematic.rotation.cw180": "顺时针180", - "create.schematic.rotation.cw270": "顺时针270", - "create.schematic.mirror": "镜像", - "create.schematic.mirror.none": "无", - "create.schematic.mirror.frontBack": "前后", - "create.schematic.mirror.leftRight": "左右", - "create.schematic.tool.deploy": "部署", - "create.schematic.tool.move": "移动 XZ", - "create.schematic.tool.movey": "移动 Y", - "create.schematic.tool.rotate": "旋转", - "create.schematic.tool.print": "打印", - "create.schematic.tool.flip": "翻转", - "create.schematic.tool.deploy.description.0": "将结构移到某个位置。", - "create.schematic.tool.deploy.description.1": "在地面上单击鼠标右击以放置。", - "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距离选择。", - "create.schematic.tool.deploy.description.3": "按住Ctrl鼠标滚动更改距离。", - "create.schematic.tool.move.description.0": "水平移动蓝图", - "create.schematic.tool.move.description.1": "选定蓝图,然后按住Ctrl鼠标滚动移动。", - "create.schematic.tool.move.description.2":"", - "create.schematic.tool.move.description.3":"", - "create.schematic.tool.movey.description.0": "垂直移动蓝图", - "create.schematic.tool.movey.description.1": "按住Ctrl鼠标滚动上下移动", - "create.schematic.tool.movey.description.2":"", - "create.schematic.tool.movey.description.3":"", - "create.schematic.tool.rotate.description.0": "围绕蓝图中心旋转蓝图。", - "create.schematic.tool.rotate.description.1": "按住Ctrl鼠标滚动旋转90度", - "create.schematic.tool.rotate.description.2":"", - "create.schematic.tool.rotate.description.3":"", - "create.schematic.tool.print.description.0": "立即将结构放置在世界上", - "create.schematic.tool.print.description.1": "右击确认当前位置。", - "create.schematic.tool.print.description.2": "该工具仅适用于创造模式。", - "create.schematic.tool.print.description.3":"", - "create.schematic.tool.flip.description.0": "沿你选择的面翻转蓝图。", - "create.schematic.tool.flip.description.1": "指向蓝图,然后按住Ctrl鼠标滚动将其翻转。", - "create.schematic.tool.flip.description.2":"", - "create.schematic.tool.flip.description.3":"", - - "create.schematics.synchronizing": "正在同步..", - "create.schematics.uploadTooLarge": "你的蓝图太大", - "create.schematics.maxAllowedSize": "允许的最大蓝图文件大小为:", - - "create.gui.schematicTable.refresh": "刷新文件", - "create.gui.schematicTable.open_folder": "打开文件夹", - "create.gui.schematicTable.title": "蓝图桌", - "create.gui.schematicTable.availableSchematics": "可用蓝图", - "create.gui.schematicTable.noSchematics": "没有保存的蓝图", - "create.gui.schematicTable.uploading": "正在上传...", - "create.gui.schematicTable.finished": "上传完成!", - "create.gui.schematicannon.title": "蓝图加农炮", - "create.gui.schematicannon.listPrinter": "物品清单打印机", - "create.gui.schematicannon.gunpowderLevel": "火药%1$s%%", - "create.gui.schematicannon.shotsRemaining": "燃料余量:%1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "燃料储备:%1$s", - "create.gui.schematicannon.optionEnabled": "当前启用", - "create.gui.schematicannon.optionDisabled": "当前禁用", - "create.gui.schematicannon.showOptions": "显示蓝图加农炮设置", - "create.gui.schematicannon.option.dontReplaceSolid": "不要替换方块", - "create.gui.schematicannon.option.replaceWithSolid": "用固体方块替换工作区域内的方块", - "create.gui.schematicannon.option.replaceWithAny": "用任何方块替换工作区域内的方块", - "create.gui.schematicannon.option.replaceWithEmpty": "用空气替换工作区域内的方块", - "create.gui.schematicannon.option.skipMissing": "绕过缺少的方块", - "create.gui.schematicannon.option.skipTileEntities": "保护存储方块", - "create.gui.schematicannon.slot.gunpowder": "向蓝图加农炮添加火药以提供动力", - "create.gui.schematicannon.slot.listPrinter": "在此处放置书以打印蓝图所需的材料清单", - "create.gui.schematicannon.slot.schematic": "在此处添加你的蓝图,务必确保其已经被部署在了特点位置", - "create.gui.schematicannon.option.skipMissing.description": "如果缺失材料,蓝图加农炮将忽略当前缺失材料并且使用其他已有材料继续工作", - "create.gui.schematicannon.option.skipTileEntities.description": "蓝图将避免更换存储方块,如箱子。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "蓝图加农炮将不会替换工作范围内的任何固体方块。", - "create.gui.schematicannon.option.replaceWithSolid.description": "蓝图加农炮会使用所提供的固体方块来替换工作区域内的其他固体方块", - "create.gui.schematicannon.option.replaceWithAny.description": "蓝图加农炮会使用任何所提供的方块来替换工作区域内的固体方块", - "create.gui.schematicannon.option.replaceWithEmpty.description": "蓝图加农炮将清理和替换工作区域内所有原本的方块。", - - "create.schematicannon.status.idle": "闲置", - "create.schematicannon.status.ready": "准备", - "create.schematicannon.status.running": "运行", - "create.schematicannon.status.finished": "完成", - "create.schematicannon.status.paused": "已暂停", - "create.schematicannon.status.stopped": "停止", - "create.schematicannon.status.noGunpowder": "火药消耗完毕", - "create.schematicannon.status.targetNotLoaded": "方块未加载", - "create.schematicannon.status.targetOutsideRange": "定位目标太远", - "create.schematicannon.status.searching": "搜索", - "create.schematicannon.status.skipping": "跳过", - "create.schematicannon.status.missingBlock": "缺少方块:", - "create.schematicannon.status.placing": "建筑中", - "create.schematicannon.status.clearing": "清除方块中", - "create.schematicannon.status.schematicInvalid": "蓝图无效", - "create.schematicannon.status.schematicNotPlaced": "蓝图未部署", - "create.schematicannon.status.schematicExpired": "蓝图文件已过期", - - "create.materialChecklist": "材料清单", - "create.materialChecklist.blocksNotLoaded": "*免责声明* \n\n由于未加载相关区块,材料清单可能不正确。", - - "create.gui.filter.deny_list": "黑名单", - "create.gui.filter.deny_list.description": "只通过不在黑名单中的物品,如果黑名单为空,所有物品都可以通过", - "create.gui.filter.allow_list": "白名单", - "create.gui.filter.allow_list.description": "只通过在白名单中的物品,如果白名单为空,所有物品都无法通过", - "create.gui.filter.respect_data": "匹配物品属性", - "create.gui.filter.respect_data.description": "只有物品的耐久、附魔等其他属性相同时才可以匹配", - "create.gui.filter.ignore_data": "忽视物品属性", - "create.gui.filter.ignore_data.description": "匹配时忽视物品的耐久、附魔等其他属性", - - "create.item_attributes.placeable": "可放置", - "create.item_attributes.placeable.inverted": "不可放置", - "create.item_attributes.consumable": "可食用", - "create.item_attributes.consumable.inverted": "不可食用", - "create.item_attributes.smeltable": "可被熔炉烧制", - "create.item_attributes.smeltable.inverted": "不可被熔炉烧制", - "create.item_attributes.washable": "可被洗涤", - "create.item_attributes.washable.inverted": "不可被洗涤", - "create.item_attributes.smokable": "可被烟熏", - "create.item_attributes.smokable.inverted": "不可被烟熏", - "create.item_attributes.crushable": "可被粉碎", - "create.item_attributes.crushable.inverted": "不可被粉碎", - "create.item_attributes.blastable": "可被高炉冶炼", - "create.item_attributes.blastable.inverted": "不可被高炉冶炼", - "create.item_attributes.enchanted": "已被附魔", - "create.item_attributes.enchanted.inverted": "未被附魔", - "create.item_attributes.damaged": "已损坏", - "create.item_attributes.damaged.inverted": "未损坏", - "create.item_attributes.badly_damaged": "严重受损", - "create.item_attributes.badly_damaged.inverted": "未严重受损", - "create.item_attributes.not_stackable": "无法堆叠", - "create.item_attributes.not_stackable.inverted": "可堆叠", - "create.item_attributes.equipable": "可装备", - "create.item_attributes.equipable.inverted": "不可装备", - "create.item_attributes.furnace_fuel": "可作为燃料", - "create.item_attributes.furnace_fuel.inverted": "不可作为燃料", - "create.item_attributes.in_tag": "标签是%1$s", - "create.item_attributes.in_tag.inverted": "标签不是%1$s", - "create.item_attributes.in_item_group": "属于%1$s", - "create.item_attributes.in_item_group.inverted": "不属于%1$s", - "create.item_attributes.added_by": "由%1$s添加", - "create.item_attributes.added_by.inverted": "不是由%1$s添加", - "create.item_attributes.has_enchant": "有附魔效果%1$s", - "create.item_attributes.has_enchant.inverted": "没有附魔效果%1$s", - "create.item_attributes.color": "染色为%1$s", - "create.item_attributes.color.inverted": "未被染成%1$s", - "create.item_attributes.max_enchanted": "已达到最高附魔等", - "create.item_attributes.max_enchanted.inverted": "并未达到最高附魔等级", - "create.item_attributes.has_fluid": "包含%1$s", - "create.item_attributes.has_fluid.inverted": "不包含%1$s", - "create.item_attributes.has_name": "有自定义名称%1$s", - "create.item_attributes.has_name.inverted": "没有自定义名称%1$s", - "create.item_attributes.book_author": "由%1$s编写", - "create.item_attributes.book_author.inverted": "不是由%1$s编写", - "create.item_attributes.book_copy_original": "是初版", - "create.item_attributes.book_copy_original.inverted": "不是初版", - "create.item_attributes.book_copy_first": "是第一代拷贝", - "create.item_attributes.book_copy_first.inverted": "不是第一代拷贝", - "create.item_attributes.book_copy_second": "是第二代拷贝", - "create.item_attributes.book_copy_second.inverted": "不是第二代拷贝", - "create.item_attributes.book_copy_tattered": "拷贝次数已不可查", - "create.item_attributes.book_copy_tattered.inverted": "不是拷贝次数已不可查", - "create.item_attributes.astralsorcery_crystal": "有水晶石属性%1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "没有水晶石属性%1$s", - "create.item_attributes.astralsorcery_constellation": "与%1$s共鸣", - "create.item_attributes.astralsorcery_constellation.inverted": "不与%1$s共鸣", - "create.item_attributes.astralsorcery_perk_gem": "带有有星能力属性%1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "不带有星能力属性%1$s", - "create.item_attributes.astralsorcery_amulet": "璀璨棱镜增强%1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "璀璨棱镜未增强%1$s", - - "create.gui.attribute_filter.no_selected_attributes": "没有标记任何属性", - "create.gui.attribute_filter.selected_attributes": "已选择的属性:", - "create.gui.attribute_filter.add_attribute": "向列表中添加属性", - "create.gui.attribute_filter.add_inverted_attribute": "向列表中添加相反属性", - "create.gui.attribute_filter.allow_list_disjunctive": "任意匹配白名单(任何)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "只要有其中一项属性符合,就可以通过", - "create.gui.attribute_filter.allow_list_conjunctive": "全匹配白名单(全部)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "只有所有属性都匹配才可以通过", - "create.gui.attribute_filter.deny_list": "黑名单", - "create.gui.attribute_filter.deny_list.description": "只要没有上述属性,就可以通过", - "create.gui.attribute_filter.add_reference_item": "添加参考物品", - - "create.tooltip.holdForDescription": "按住 [%1$s] 可查看概要", - "create.tooltip.holdForControls": "按住 [%1$s] 可查看控制方法", - "create.tooltip.holdKey": "按住 [%1$s]", - "create.tooltip.holdKeyOrKey": "按住 [%1$s] 或 [%2$s]", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "需求转速:%1$s", - "create.tooltip.speedRequirement.none": "无", - "create.tooltip.speedRequirement.medium": "适当", - "create.tooltip.speedRequirement.high": "快", - "create.tooltip.stressImpact": "应力影响:%1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "过载", - "create.tooltip.capacityProvided": "应力量:%1$s", - "create.tooltip.capacityProvided.low": "小", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.capacityProvided.asGenerator":"(作为应力发生器)", - "create.tooltip.generationSpeed": "产生于%1$s %2$s", - "create.tooltip.analogStrength": "模拟信号强度:%1$s/15", - - "create.mechanical_arm.extract_from": "从%1$s中拿取物品", - "create.mechanical_arm.deposit_to": "向%1$s存储物品", - "create.mechanical_arm.summary": "动力臂当前有%1$s个输入,%2$s个输出。", - "create.mechanical_arm.points_outside_range":"由于距离限制,选定的交互点%1$s已被移除。", - - "create.weighted_ejector.target_set": "目标已选取", - "create.weighted_ejector.target_not_valid": "弹射至临近方块(目标无效)", - "create.weighted_ejector.no_target": "弹射至临近方块(未选择目标)", - "create.weighted_ejector.targeting": "弹射至[%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "弹射物品堆数量", - - "create.logistics.when_multiple_outputs_available": "当多个输出可用时", - - "create.mechanical_arm.selection_mode.round_robin": "轮询调度", - "create.mechanical_arm.selection_mode.forced_round_robin": "强制轮询调度", - "create.mechanical_arm.selection_mode.prefer_first": "第一目标优先", - - "create.tunnel.selection_mode.split": "分流", - "create.tunnel.selection_mode.forced_split": "强制分流", - "create.tunnel.selection_mode.round_robin": "轮询调度", - "create.tunnel.selection_mode.forced_round_robin": "强制轮询调度", - "create.tunnel.selection_mode.prefer_nearest": "最近优先", - "create.tunnel.selection_mode.randomize": "随机", - "create.tunnel.selection_mode.synchronize": "同步输入", - - "create.tooltip.chute.header": "溜槽信息", - "create.tooltip.chute.items_move_down": "物品下行", - "create.tooltip.chute.items_move_up": "物品上行", - "create.tooltip.chute.no_fans_attached": "未安装鼓风机", - "create.tooltip.chute.fans_push_up": "鼓风机从下方进行推动", - "create.tooltip.chute.fans_push_down": "鼓风机从上方进行推动", - "create.tooltip.chute.fans_pull_up": "鼓风机从上方进行吸引", - "create.tooltip.chute.fans_pull_down": "鼓风机从下方进行吸引", - "create.tooltip.chute.contains": "内含物品:%1$s x%2$s", - - "create.hint.hose_pulley.title": "无限供应", - "create.hint.hose_pulley": "目标液体对象被视为无限量的。", - "create.hint.mechanical_arm_no_targets.title": "没有目标", - "create.hint.mechanical_arm_no_targets": "看起来这个_动力臂_没有被分配给任何_目标_。在手持机械臂的同时,右击选取传送带、置物台、漏斗或其他设备来设置目标。", - "create.hint.horizontal_funnel.title": "水平漏斗", - "create.hint.horizontal_funnel": "无法_直接_在两个物品栏间移动物品。请使用传送带或者置物台来从物品栏中提取物品。", - "create.hint.upward_funnel.title": "漏斗向上", - "create.hint.upward_funnel": "只可以传送由_动力臂_,鼓风机驱动的_溜槽_或者被投掷的物品。请试着做一些溜槽来垂直运输物品。", - "create.hint.empty_bearing.title": "更新轴承", - "create.hint.empty_bearing": "_空手右击_轴承来_激活_你新建造的结构。", - "create.hint.full_deployer.title": "机械手物品溢出", - "create.hint.full_deployer": "_机械手_包含_过剩的物品,_需要被_提取。你需要_使用_料斗,__漏斗_或其他方法将溢出释放出来。", - - "create.gui.config.overlay1": "Hi :)", - "create.gui.config.overlay2": "这是一个实例层", - "create.gui.config.overlay3": "点击拖拽你的鼠标", - "create.gui.config.overlay4": "来将它移动到前方", - "create.gui.config.overlay5": "ESC退出当前界面", - "create.gui.config.overlay6": "并保存新的位置", - "create.gui.config.overlay7": "输入/create overlay reset", - "create.gui.config.overlay8": "重置到默认位置", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 服务器每秒tick速被降低为 %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 服务器现在每秒tick速被降低为 >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 服务器恢复到正常速度 :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 来让服务器的TPS速度变回正常", - "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 来手动降低服务器TPS速度", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "这一矿车装置似乎太大了,无法变为拾捡状态", - - "create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射", - "create.subtitle.schematicannon_finish": "蓝图加农炮:叮", - "create.subtitle.slime_added": "粘液:挤碎声", - "create.subtitle.mechanical_press_activation": "辊压机:工作中", - "create.subtitle.mechanical_press_item_break": "金属碰撞", - "create.subtitle.blockzapper_place": "放置方块", - "create.subtitle.blockzapper_confirm": "选择方块", - "create.subtitle.blockzapper_deny": "放置失败", - "create.subtitle.block_funnel_eat": "漏斗:吞食", - "create.subtitle.blaze_munch": "烈焰人:咀嚼", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item._Underscores_highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this。(behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.andesite_encased_shaft.tooltip": "安山传动杆箱", - "block.create.andesite_encased_shaft.tooltip.summary": "_创造模式_才可获得这一物品。用_安山机壳_包裹放置在_世界中_的传动杆即可获得,机壳不会被消耗。", - - "block.create.brass_encased_shaft.tooltip": "黄铜传动杆箱", - "block.create.brass_encased_shaft.tooltip.summary": "_创造模式_才可获得这一物品。用_黄铜机壳_包裹放置在_世界中_的传动杆即可获得,机壳不会被消耗。", - - "block.create.wooden_bracket.tooltip": "木质支架", - "block.create.wooden_bracket.tooltip.summary": "用这种给人温馨感的木质支架_装饰_你的_传动杆_,_齿轮_和_管道_吧。", - - "block.create.metal_bracket.tooltip": "金属支架", - "block.create.metal_bracket.tooltip.summary": "用这种工业风格的金属支架_装饰_你的_传动杆_,_齿轮_和_管道_吧。", - - "block.create.andesite_casing.tooltip": "安山机壳", - "block.create.andesite_casing.tooltip.summary": "具有多种用途的简单机壳,可用于加固并装饰_传动杆_,_传送带_", - - "block.create.andesite_funnel.tooltip": "安山漏斗", - "block.create.andesite_funnel.tooltip.summary": "一种常用的传输设备,配合各种物流结构传输物品,可由_红石信号_控制。", - "block.create.andesite_funnel.tooltip.condition1": "一般行为", - "block.create.andesite_funnel.tooltip.behaviour1": "开口的面会吸收面前一格内的_掉落物_,并_传输_到它与吸收位置的方向相反的_容器_里。", - "block.create.andesite_funnel.tooltip.condition2": "当装配在传送带、置物台等类似的组件上时", - "block.create.andesite_funnel.tooltip.behaviour2": "会在此组件上_收集_或_放置_物品,并将其背后的物品栏视为缓存,向其中_放入_或从其中_抽出_物品,无论何时,只要该漏斗面朝特定的方向,你都可以通过扳手来翻转它的面朝方向。", - "block.create.andesite_funnel.tooltip.condition3": "当被垂直放置于两个容器之间时", - "block.create.andesite_funnel.tooltip.behaviour3": "仅向下垂直传输物品,类似一个没有缓冲槽的漏斗。", - - "block.create.andesite_tunnel.tooltip": "安山隧道", - "block.create.andesite_tunnel.tooltip.summary": "这种美观大方且兼具保护能力的遮掩物专为_传送带_而设计。_安山隧道_可以从主传送带上的一堆物品中抽取出一个物品,并将该物品放置到侧面的传送带或者置物台上。", - "block.create.andesite_tunnel.tooltip.control1": "扳手右击侧面时", - "block.create.andesite_tunnel.tooltip.action1": "如果传送带隧道串联的数量达到三个或以上,可在位于中间的隧道侧面上开启关闭百叶窗。", - - "block.create.brass_funnel.tooltip": "黄铜漏斗", - "block.create.brass_funnel.tooltip.summary": "一种常用的传输设备,配合各种物流结构传输物品,可由_红石信号_控制,并附带_过滤槽_。", - "block.create.brass_funnel.tooltip.condition1": "一般行为", - "block.create.brass_funnel.tooltip.behaviour1": "开口的面会吸收面前一格内的_掉落物_,并_传输_到它与吸收位置的方向相反的_容器_里。", - "block.create.brass_funnel.tooltip.condition2": "当装配在传送带、置物台等类似的组件上时", - "block.create.brass_funnel.tooltip.behaviour2": "会在此组件上_收集_或_放置_物品,并将其背后的物品栏视为缓存,向其中_放入_或从其中_抽出_物品,无论何时,只要该漏斗面朝特定的方向,你都可以通过扳手来翻转它的面朝方向。", - "block.create.brass_funnel.tooltip.condition3": "垂直放置于两个容器之间时", - "block.create.brass_funnel.tooltip.behaviour3": "向下垂直传输物品,类似一个没有缓冲槽的漏斗。", - - "block.create.brass_tunnel.tooltip": "黄铜隧道", - "block.create.brass_tunnel.tooltip.summary": "这种美观大方且兼具保护能力的遮掩物专为_传送带_而设计。不仅如此,_黄铜隧道_还带有物品_过滤_以及_分流_的配置选项。", - "block.create.brass_tunnel.tooltip.condition1": "当它们并排放置时", - "block.create.brass_tunnel.tooltip.behaviour1": "紧挨着的_黄铜隧道_可以让传送带路线上穿过的物品_重定向_到与其并排的传送带路线上。", - "block.create.brass_tunnel.tooltip.condition2": "过滤", - "block.create.brass_tunnel.tooltip.behaviour2": "_黄铜隧道_的_输入_方向和_输出_方向都带有过滤插槽。如果进入的物品不满足隧道输出端的过滤条件,则该物品会从并排的其他隧道出口传出。", - "block.create.brass_tunnel.tooltip.condition3": "分配", - "block.create.brass_tunnel.tooltip.behaviour3": "_黄铜隧道_可以为并排的传送带路线提供多个物品分配的方案。", - "block.create.brass_tunnel.tooltip.control1": "扳手右击侧面时", - "block.create.brass_tunnel.tooltip.action1": "如果传送带隧道串联的数量达到三个或以上,可在位于中间的隧道侧面上开启关闭百叶窗。", - "block.create.brass_tunnel.tooltip.control2": "手持扳手在隧道顶部滚动鼠标滚轮", - "block.create.brass_tunnel.tooltip.action2": "更改_隧道_的分配模式。", - - "block.create.copper_casing.tooltip": "铜机壳", - "block.create.copper_casing.tooltip.summary": "具有多种用途的坚固机壳,可用于装饰。", - "block.create.copper_casing.tooltip.condition1": "在流体管道上使用时", - "block.create.copper_casing.tooltip.behaviour1": "将管道包裹进机壳,加壳的管道会与临近的管道区分开来,防止它们自动连接到一起。", - - "block.create.encased_fluid_pipe.tooltip": "流体管道箱", - "block.create.encased_fluid_pipe.tooltip.summary": "用铜机壳加固后的流体管道。", - - "block.create.copper_valve_handle.tooltip": "铜阀门手轮", - "block.create.copper_valve_handle.tooltip.summary": "精确的动力来源,需要玩家手动操作。注意不要让自己太累!", - "block.create.copper_valve_handle.tooltip.condition1": "右击使用时", - "block.create.copper_valve_handle.tooltip.behaviour1": "为连接的设备提供动力。潜行状态下反向旋转。", - - "block.create.seat.tooltip": "坐垫", - "block.create.seat.tooltip.summary": "坐下来享受旅程吧!坐垫将会把玩家固定在一个移动装置上。也可以用来作为居家装饰,毕竟他有许多颜色。", - "block.create.seat.tooltip.condition1": "右击坐垫", - "block.create.seat.tooltip.behaviour1": "会使得玩家坐在_坐垫_上,L-Shift可离开_坐垫_。", - - "block.create.chute.tooltip": "溜槽", - "block.create.chute.tooltip.summary": "用于_收集_并_垂直_或_对角_进行物品_传输_。可以从_容器_中抽取也可向_容器_输入。它的侧面可以被_漏斗_、_侧装漏斗_等传输设备交互", - "block.create.chute.tooltip.condition1": "当被上方的鼓风机通风时", - "block.create.chute.tooltip.behaviour1": "由_鼓风机_驱动的_溜槽_可由下向上传输_物品_,可以从_置物台_或者_传送带_上吸取物品。", - - "block.create.depot.tooltip": "置物台", - "block.create.depot.tooltip.summary": "一个方便的放置物品的地方。它为多台机器提供了一个交互点", - "block.create.depot.tooltip.condition1": "右击置物台", - "block.create.depot.tooltip.behaviour1": "可以在_置物台_放置或取出物品。可以与_传送带_交互的方块或装置也可以与_置物台_交互。", - - "item.create.blaze_cake.tooltip": "烈焰蛋糕", - "item.create.blaze_cake.tooltip.summary": "为辛勤劳作的_烈焰人_精心准备的美味。让他们兴奋起来吧!", - - "item.create.empty_blaze_burner.tooltip": "空的烈焰人燃烧室", - "item.create.empty_blaze_burner.tooltip.summary": "你火热的朋友的一个小小的铁质的家。我相信你会好好利用他们的!", - "item.create.empty_blaze_burner.tooltip.condition1": "当对着烈焰人或烈焰人刷怪笼使用时", - "item.create.empty_blaze_burner.tooltip.behaviour1": "将烈焰人_捕获_至物品中", - - "block.create.fluid_pipe.tooltip": "流体管道", - "block.create.fluid_pipe.tooltip.summary": "用于传输_流体_。需要一个_动力泵_来提供压强。", - "block.create.fluid_pipe.tooltip.condition1": "转移流体", - "block.create.fluid_pipe.tooltip.behaviour1": "可以与_流体容器_如_储罐_或_工作盆_相连_。裸露的_管道_末端也可以排放或抽取流体。注意别漏水了!", - "block.create.fluid_pipe.tooltip.control1": "使用扳手右击", - "block.create.fluid_pipe.tooltip.action1": "如果可能的话,在管道侧面开启/关闭窗口。", - - "block.create.hose_pulley.tooltip": "软管滑轮", - "block.create.hose_pulley.tooltip.summary": "用于在_世界_中放置或排放大量的液体。", - "block.create.hose_pulley.tooltip.condition1": "接入动力时", - "block.create.hose_pulley.tooltip.behaviour1": "升高或降低软管,软管的位置决定了抽取或填充液体的高度。", - "block.create.hose_pulley.tooltip.condition2": "当软管滑轮抽取流体时", - "block.create.hose_pulley.tooltip.behaviour2": "开始从软管末端将其从中取出_流体方块_。巨大的流体湖将被认定是_无限_的", - "block.create.hose_pulley.tooltip.condition3": "当流体从软管滑轮中排出时", - "block.create.hose_pulley.tooltip.behaviour3": "开始向世界填充流体,直到达到_软管末端_的高度。", - - "block.create.fluid_tank.tooltip": "流体储罐", - "block.create.fluid_tank.tooltip.summary": "_存储_任意_流体_,根据整体结构的宽和高决定其储存容量", - "block.create.fluid_tank.tooltip.condition1": "使用扳手右击", - "block.create.fluid_tank.tooltip.behaviour1": "打开或关闭窗户", - - "block.create.creative_fluid_tank.tooltip": "创造流体储罐", - "block.create.creative_fluid_tank.tooltip.summary": "此流体储罐能够_无限的复制_任何流体,根据整体结构的宽和高决定其储存容量", - "block.create.creative_fluid_tank.tooltip.condition1": "罐中装有流体时", - "block.create.creative_fluid_tank.tooltip.behaviour1": "任意的_流体提取设备_能够从中提取无穷无尽的指定流体,流体的导入功能同时也会无效。", - "block.create.creative_fluid_tank.tooltip.condition2": "使用扳手右击", - "block.create.creative_fluid_tank.tooltip.behaviour2": "打开或关闭窗户", - - "block.create.fluid_valve.tooltip": "流体阀门", - "block.create.fluid_valve.tooltip.summary": "阻止流体沿管道向前流动。", - "block.create.fluid_valve.tooltip.condition1": "控制流量", - "block.create.fluid_valve.tooltip.behaviour1": "施加的_旋转力_将迫使阀门关闭,从而阻止流体流动。_逆转旋转方向_以重新打开阀门。", - - "block.create.mechanical_pump.tooltip": "动力泵", - "block.create.mechanical_pump.tooltip.summary": "_接入动力_,能迫使流体_沿管道指定方向移动_。在两个方向上都有_最大的作用范围_。(默认为16个方块距离)", - "block.create.mechanical_pump.tooltip.condition1": "流体流向", - "block.create.mechanical_pump.tooltip.behaviour1": "_接入动力_后会产生压力,迫使流体通过管道。_反转动力_的方向以切换流体_流向_。", - "block.create.mechanical_pump.tooltip.control1": "扳手右击时", - "block.create.mechanical_pump.tooltip.action1": "反转泵的方向,从而改变默认的流体流向", - - "block.create.smart_fluid_pipe.tooltip": "智能流体管道", - "block.create.smart_fluid_pipe.tooltip.summary": "带有过滤器的_流体管道_。可以指定其只流通特定的_流体_。", - "block.create.smart_fluid_pipe.tooltip.condition1": "当流体进入时", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "进入的流体与_过滤器_不匹配时,智能管道将_阻止_其通过。", - "block.create.smart_fluid_pipe.tooltip.condition2": "与流体容器相邻时", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "_智能管道_会开始从_相邻的任何容器_中抽取与其过滤器匹配的流体。", - - "block.create.spout.tooltip": "注液器", - "block.create.spout.tooltip.summary": "一种用于_装罐_的机器。", - "block.create.spout.tooltip.condition1": "流体传输", - "block.create.spout.tooltip.behaviour1": "当下方放置类似_玻璃瓶_,_桶_这样的流体容器物品时,注液器会试图将自身存储的液体注入到下方的_流体容器物品_中。", - "block.create.spout.tooltip.condition2": "流体自动化", - "block.create.spout.tooltip.behaviour2": "注液器位于_传送带_或者_置物台_上方时,将自动为流水线上的_流体容器物品_进行_注液_。", - - "block.create.item_drain.tooltip": "分液池", - "block.create.item_drain.tooltip.summary": "一种用于_抽空流体容器物品_的置物台", - "block.create.item_drain.tooltip.condition1": "流体传输", - "block.create.item_drain.tooltip.behaviour1": "当从侧面导入诸如_桶_或_瓶子_之类的_流体容器物品_时,_分液池_将尝试将物品内的液体倒入其_自身的液体物品栏_中。空的_流体容器物品_将被弹出至_另一侧_。", - - "block.create.mechanical_arm.tooltip": "动力臂", - "block.create.mechanical_arm.tooltip.summary": "移动_物品_的高级装置", - "block.create.mechanical_arm.tooltip.condition1": "转移物品", - "block.create.mechanical_arm.tooltip.behaviour1": "可以从任意_可够到的设备_中拿取或放置物品,比如说_传送带_,_置物台_,_漏斗_以及_动力合成器_。", - "block.create.mechanical_arm.tooltip.control1": "手持时", - "block.create.mechanical_arm.tooltip.action1": "右击一个_可使用的容器_来将其设置为_动力臂_的_输入端_。右键双击将其设置为_动力臂_的_输出端_。", - "block.create.mechanical_arm.tooltip.control2": "手持扳手滚动滚轮", - "block.create.mechanical_arm.tooltip.action2": "调整_动力臂_输出物品时的调度模式。", - - "item.create.wand_of_symmetry.tooltip": "对称之杖", - "item.create.wand_of_symmetry.tooltip.summary": "完美地镜面复制工作区域内的方块到另一边", - "item.create.wand_of_symmetry.tooltip.condition1": "当在快捷栏时", - "item.create.wand_of_symmetry.tooltip.behaviour1": "持续进行镜面复制。", - "item.create.wand_of_symmetry.tooltip.control1": "当右击地面时", - "item.create.wand_of_symmetry.tooltip.action1": "_创建_或_移动_镜面。", - "item.create.wand_of_symmetry.tooltip.control2": "当右击空气时", - "item.create.wand_of_symmetry.tooltip.action2": "_删除_镜面。", - "item.create.wand_of_symmetry.tooltip.control3": "当潜行右击时", - "item.create.wand_of_symmetry.tooltip.action3": "打开_配置界面_。", - - "item.create.handheld_blockzapper.tooltip": "手持式方块放置器", - "item.create.handheld_blockzapper.tooltip.summary": "新颖的小工具,可以远距离放置或更换方块。", - "item.create.handheld_blockzapper.tooltip.control1": "当左击方块时", - "item.create.handheld_blockzapper.tooltip.action1": "将工具放置的方块设置为该方块。", - "item.create.handheld_blockzapper.tooltip.control2": "当右击方块时", - "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替换_目标方块。", - "item.create.handheld_blockzapper.tooltip.control3": "当潜行右击时", - "item.create.handheld_blockzapper.tooltip.action3": "打开_配置界面_。", - - "item.create.handheld_worldshaper.tooltip": "手持式环境塑形器", - "item.create.handheld_worldshaper.tooltip.summary": "_创造_大陆和山脉的手持工具", - "item.create.handheld_worldshaper.tooltip.control1": "当左击方块时", - "item.create.handheld_worldshaper.tooltip.action1": "将工具放置的方块设置为该方块。", - "item.create.handheld_worldshaper.tooltip.control2": "当右击方块时", - "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替换_目标方块。", - "item.create.handheld_worldshaper.tooltip.control3": "当潜行右击时", - "item.create.handheld_worldshaper.tooltip.action3": "打开工具的_配置界面_。", - - "item.create.tree_fertilizer.tooltip": "树木肥料", - "item.create.tree_fertilizer.tooltip.summary": "由多种矿物质复合而成的强大生长剂,能够加速普通树种的生长速度。", - "item.create.tree_fertilizer.tooltip.condition1": "在树苗上使用时", - "item.create.tree_fertilizer.tooltip.behaviour1": "使得该树_无视_它的_生长空间条件_,立刻长大。", - - "item.create.deforester.tooltip": "树林毁灭者", - "item.create.deforester.tooltip.summary": "一把_光辉四溢的斧子_,能够瞬间砍倒一棵树", - - "item.create.extendo_grip.tooltip": "伸缩机械手", - "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_。", - "item.create.extendo_grip.tooltip.condition1": "放置于副手栏时", - "item.create.extendo_grip.tooltip.behaviour1": "增加_主手_所使用物品的_接触距离_。", - - "item.create.filter.tooltip": "过滤器", - "item.create.filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品或者数个_相嵌套的过滤器_相匹配。", - "item.create.filter.tooltip.condition1": "放置于过滤插槽中时", - "item.create.filter.tooltip.behaviour1": "根据_过滤器_的配置,来_决定_物品流是否能够通过。", - "item.create.filter.tooltip.condition2": "当右击时", - "item.create.filter.tooltip.behaviour2": "打开_配置面板_。", - - "item.create.attribute_filter.tooltip": "属性过滤器", - "item.create.attribute_filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品_属性_以及_分类_相匹配。", - "item.create.attribute_filter.tooltip.condition1": "放置于过滤插槽中时", - "item.create.attribute_filter.tooltip.behaviour1": "根据_过滤器_的配置,来_决定_物品流是否能够通过。", - "item.create.attribute_filter.tooltip.condition2": "当右击时", - "item.create.attribute_filter.tooltip.behaviour2": "打开_配置面板_。", - - "item.create.empty_schematic.tooltip": "空白蓝图", - "item.create.empty_schematic.tooltip.summary": "可作为合成材料或在_蓝图桌_使用", - - "item.create.schematic.tooltip": "蓝图", - "item.create.schematic.tooltip.summary": "可将结构部署并放置到世界中,将蓝图全息影像部署完毕后,使用_蓝图加农炮_进行结构建造。", - "item.create.schematic.tooltip.condition1": "当手持蓝图时", - "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具调整位置", - "item.create.schematic.tooltip.control1": "当潜行右击时", - "item.create.schematic.tooltip.action1": "打开一个用于输入_精确坐标_的界面。", - - "item.create.schematic_and_quill.tooltip": "蓝图与笔", - "item.create.schematic_and_quill.tooltip.summary": "用于将世界中的结构保存到 .nbt 文件。", - "item.create.schematic_and_quill.tooltip.condition1": "第一步", - "item.create.schematic_and_quill.tooltip.behaviour1": "手持蓝图与笔右击选择两个对角点", - "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "对准选定区域,按住 Ctrl 键并滑动鼠标滚轮,可以调整选区的大小,右击保存。", - "item.create.schematic_and_quill.tooltip.control1": "右击", - "item.create.schematic_and_quill.tooltip.action1": "选取一个对角点/确认保存。", - "item.create.schematic_and_quill.tooltip.control2": "按住 Ctrl ", - "item.create.schematic_and_quill.tooltip.action2": "可在_空中_选择点,_滑动滚轮_可调整距离。", - "item.create.schematic_and_quill.tooltip.control3": "当潜行右击时", - "item.create.schematic_and_quill.tooltip.action3": "_重置_并删除选区。", - - "block.create.schematicannon.tooltip": "蓝图加农炮", - "block.create.schematicannon.tooltip.summary": "发射方块,重新构建已在世界中部署的_蓝图_,会使用相邻箱子中的物品进行填充,_火药_作为燃料。", - "block.create.schematicannon.tooltip.control1": "当右击时", - "block.create.schematicannon.tooltip.action1": "打开_界面_", - - "block.create.schematic_table.tooltip": "蓝图桌", - "block.create.schematic_table.tooltip.summary": "将保存的蓝图图写入_空白蓝图_", - "block.create.schematic_table.tooltip.condition1": "放入空白蓝图时", - "block.create.schematic_table.tooltip.behaviour1": "可从 Schematics 文件夹中上传所选文件。", - - "block.create.shaft.tooltip": "传动杆", - "block.create.shaft.tooltip.summary": "将_旋转_进行直线传递。", - - "block.create.cogwheel.tooltip": "齿轮", - "block.create.cogwheel.tooltip.summary": "将_旋转_进行直线传递,或者传递旋转到临近的_齿轮_上", - - "block.create.large_cogwheel.tooltip": "大齿轮", - "block.create.large_cogwheel.tooltip.summary": "大号齿轮传动结构,连接到_齿轮_时改变其_转速_。", - - "block.create.encased_shaft.tooltip": "传动杆箱", - "block.create.encased_shaft.tooltip.summary": "将_旋转_进行直线传递,适合用于需要穿墙传递旋转的情景。", - - "block.create.gearbox.tooltip": "十字齿轮箱", - "block.create.gearbox.tooltip.summary": "将_旋转转送_到_四个方向上_,同时反转直线方向上的旋转方向。", - - "block.create.gearshift.tooltip": "反转齿轮箱", - "block.create.gearshift.tooltip.summary": "用于反转传动杆_旋转方向_的开关。", - "block.create.gearshift.tooltip.condition1": "当提供红石信号时", - "block.create.gearshift.tooltip.behaviour1": "_更改_旋转方向。", - - "block.create.clutch.tooltip": "离合器", - "block.create.clutch.tooltip.summary": "可用于控制与其相连的传动杆的转动/停转。", - "block.create.clutch.tooltip.condition1": "当提供红石信号时", - "block.create.clutch.tooltip.behaviour1": "_停止_另一侧的旋转。", - - "block.create.encased_chain_drive.tooltip": "链式传动箱", - "block.create.encased_chain_drive.tooltip.summary": "将动能_传递_给直线上或侧面相贴的_链式传动箱_,相邻的链式传动箱会结合在一起,前提是接触面没有传动杆. 它们的朝向不必一致。", - "block.create.encased_chain_drive.tooltip.condition1": "互相连接时", - "block.create.encased_chain_drive.tooltip.behaviour1": "_链式传动箱组_中的_链式传动箱_将以相同的速度旋转。", - - "block.create.adjustable_chain_gearshift.tooltip": "可调节链式传动箱", - "block.create.adjustable_chain_gearshift.tooltip.summary": "将动能_传递_给直线上或侧面相贴的_链式传动箱_,向其通入_红石信号_,可以控制它与其它链式传动箱相接的是何种大小的齿轮。", - "block.create.adjustable_chain_gearshift.tooltip.condition1": "红石控制", - "block.create.adjustable_chain_gearshift.tooltip.behaviour1": "没有红石信号时,_链式传动箱组_中的_链式传动箱_将以相同的速度旋转。通入满值红石信号时,_链式传动箱组_中除自身以外的_链式传动箱_将以两倍的速度旋转。介于两者之间的任何结果都将使其速度提高1-2倍。", - - "item.create.belt_connector.tooltip": "传送带", - "item.create.belt_connector.tooltip.summary": "用_传送带_连接两个或多个_传动杆_,连接的传动杆将具有完全相同的转速和方向。传送带可以_传输实体_和_物品_。", - "item.create.belt_connector.tooltip.control1": "当右击传动杆时", - "item.create.belt_connector.tooltip.action1": "选择传动杆作为传送带的传输点,选定的两个传动杆都必须相互_垂直_,_水平_或_对角平齐_。", - "item.create.belt_connector.tooltip.control2": "当潜行右击时", - "item.create.belt_connector.tooltip.action2": "_重置_传送带的第一个选定位置", - - "item.create.goggles.tooltip": "工程师护目镜", - "item.create.goggles.tooltip.summary": "一副可以扩增显示_动力学信息_的实用眼镜。", - "item.create.goggles.tooltip.condition1": "当装备时", - "item.create.goggles.tooltip.behaviour1": "根据对应动力组件的_转速等级_,显示它的_颜色指示器_,也会显示这个组件的_应力影响_以及_应力量_。", - "item.create.goggles.tooltip.condition2": "当看向仪表时", - "item.create.goggles.tooltip.behaviour2": "将会显示与仪表相连的网络的_转速_、_应力_等详细信息。", - "item.create.goggles.tooltip.condition3": "当看向流体容器时", - "item.create.goggles.tooltip.behaviour3": "显示出方块的_容量_细节,以及其中包含的所有_流体_。", - - "item.create.wrench.tooltip": "扳手", - "item.create.wrench.tooltip.summary": "操控动力组件的使用工具。可用于_旋转_,_拆除_以及_配置_组件。", - "item.create.wrench.tooltip.control1": "当右击_动力方块_时", - "item.create.wrench.tooltip.action1": "以点击的面为轴心_旋转_点击的方块", - "item.create.wrench.tooltip.control2": "当潜行右击时", - "item.create.wrench.tooltip.action2": "会_拆除动力组件_并将其移动到你的背包中。", - - "block.create.creative_motor.tooltip": "创造马达", - "block.create.creative_motor.tooltip.summary": "可以配置的_动力_来源", - - "block.create.water_wheel.tooltip": "水车", - "block.create.water_wheel.tooltip.summary": "从相邻的_流动水_中获得_动力_。", - - "block.create.encased_fan.tooltip": "鼓风机", - "block.create.encased_fan.tooltip.summary": "有多种用途,主要可以将_动力_和_风力_进行互相转换。", - "block.create.encased_fan.tooltip.condition1": "当被红石信号激活后", - "block.create.encased_fan.tooltip.behaviour1": "可将鼓风机下方的_热能_(火、熔岩等)转化成_动能_,需要将鼓风机面朝下方摆放。", - "block.create.encased_fan.tooltip.condition2": "接入动力时", - "block.create.encased_fan.tooltip.behaviour2": "根据旋转方向_推动_或者_吸引_实体,强度和速度取决于给予的动力。", - "block.create.encased_fan.tooltip.condition3": "当对着特定方块吹风时", - "block.create.encased_fan.tooltip.behaviour3": "微量的_液体_以及_火焰_会被吹入气流中,这种气流可以用于_处理物品_。", - - "block.create.nozzle.tooltip": "分散网", - "block.create.nozzle.tooltip.summary": "依附在鼓风机上,能够将鼓风机的效果分散到_各个方向_。", - - "block.create.hand_crank.tooltip": "手摇曲柄", - "block.create.hand_crank.tooltip.summary": "一种简单的动力源,需要_人工转动_,注意不要让自己太累!", - "block.create.hand_crank.tooltip.condition1": "当使用时", - "block.create.hand_crank.tooltip.behaviour1": "向依附的结构提供_动力_,_潜行_时将会提供_反向_的旋转力", - - "block.create.cuckoo_clock.tooltip": "布谷鸟闹钟", - "block.create.cuckoo_clock.tooltip.summary": "精致的工艺品,能够记录时间", - "block.create.cuckoo_clock.tooltip.condition1": "接入动力时", - "block.create.cuckoo_clock.tooltip.behaviour1": "显示_当前时间_并且一天会咕咕两次。_中午_咕咕一次,_黄昏可以睡觉_的时候咕咕一次 ", - - "block.create.turntable.tooltip": "转盘", - "block.create.turntable.tooltip.summary": "让旋转力给你带来一场刺激的旋转风车体验。", - - "block.create.millstone.tooltip": "石磨", - "block.create.millstone.tooltip.summary": "一个能_研磨物品_的动能装置,可以被临近的_齿轮_供能,或者可以在底部用传动杆供能,成品必须被提取出石磨", - "block.create.millstone.tooltip.condition1": "当接入动力时", - "block.create.millstone.tooltip.behaviour1": "开始根据_研磨配方_来处理被放入的物品,物品可以从侧面和上面放入。", - "block.create.millstone.tooltip.condition2": "当右击时", - "block.create.millstone.tooltip.behaviour2": "手动取出研磨后的产物。", - - "block.create.crushing_wheel.tooltip": "粉碎轮", - "block.create.crushing_wheel.tooltip.summary": "一对能够_粉碎一切_的粉碎轮。向两个粉碎轮提供_向内_且_相反的转速_后开始工作", - "block.create.crushing_wheel.tooltip.condition1": "当两个粉碎轮一起运作时", - "block.create.crushing_wheel.tooltip.behaviour1": "_粉碎物品_并获得相应产物(建议配合jei查看)", - - "block.create.mechanical_press.tooltip": "动力辊压机", - "block.create.mechanical_press.tooltip.summary": "一个强力的活塞式机器,用于压制其下方的物品。", - "block.create.mechanical_press.tooltip.condition1": "当提供红石信号时", - "block.create.mechanical_press.tooltip.behaviour1": "_压制_其下方的物品。", - "block.create.mechanical_press.tooltip.condition2": "在传送带上方时", - "block.create.mechanical_press.tooltip.behaviour2": "_自动压缩_经过传送带的物品。", - "block.create.mechanical_press.tooltip.condition3": "在工作盆上方时", - "block.create.mechanical_press.tooltip.behaviour3": "开始_压缩_配方中允许压缩的物品。", - - "block.create.basin.tooltip": "工作盆", - "block.create.basin.tooltip.summary": "一种方便的_物品容器_,常常与_辊压机_和_搅拌机_配合使用,可以被_红石比较器_检测。其上自带有一个过滤槽,你可以指定该工作盆用于制作何种产物。", - "block.create.basin.tooltip.condition1": "自动输出", - "block.create.basin.tooltip.behaviour1": "当有开放式物品栏(例如传送带,其他的工作盆,置物台等)位于工作盆的一侧下方时,它们将自动接收在工作盆中产出的任何物品/流体并输出。这对自动化很有帮助。", - - "block.create.blaze_burner.tooltip": "烈焰人燃烧室", - "block.create.blaze_burner.tooltip.summary": "一个用于加热_工作盆_的设备,由烈焰人来驱动。", - "block.create.blaze_burner.tooltip.condition1": "放置于工作盆下方时", - "block.create.blaze_burner.tooltip.behaviour1": "为工作盆配方_提供热量_。", - "block.create.blaze_burner.tooltip.condition2": "对烈焰人燃烧室使用可燃物时", - "block.create.blaze_burner.tooltip.behaviour2": "_消耗_可燃物,并根据该物品在_熔炉中的燃烧时间_来延长_烈焰加热器的燃烧时间_,使用_烈焰蛋糕_投喂将提供_更高的温度_。", - - "block.create.reinforced_rail.tooltip": "强化铁轨", - "block.create.reinforced_rail.tooltip.summary": "牢固稳定的铁轨,下方不需要_方块支撑_。", - - "block.create.mechanical_mixer.tooltip": "动力搅拌器", - "block.create.mechanical_mixer.tooltip.summary": "这种动力搅拌器提供了一些可自动合成的,多原料无序合成的配方。它需要稳定且足够快的转速,并且下方需要放置_工作盆_(中间需要一格高)。", - "block.create.mechanical_mixer.tooltip.condition1": "当位于工作盆上方", - "block.create.mechanical_mixer.tooltip.behaviour1": "一旦盆内含有了所有必要的原料,搅拌器就会开始搅拌。若想要屏蔽掉那些不需要的配方,你可以在盆上添加过滤,或者在必要原料齐全之前停止向搅拌器供应动力。", - - "block.create.mechanical_crafter.tooltip": "动力合成器", - "block.create.mechanical_crafter.tooltip.summary": "这种动力组装装置可以_自动化_任何_有序合成_配方。根据想要合成的物品的_合成表尺寸_来摆放_相应数量_的动力合成器,并且用扳手调整物品在合成器里的_传动方向_以让他们收束在一起合成并输出", - "block.create.mechanical_crafter.tooltip.condition1": "接入动力时", - "block.create.mechanical_crafter.tooltip.behaviour1": "当机器中_所有_的物品槽都有物品时,将会启动所有的合成器进行工作。", - "block.create.mechanical_crafter.tooltip.condition2": "通入红石脉冲", - "block.create.mechanical_crafter.tooltip.behaviour2": "强制启动当前网格中所有给定的_材料_的_合成_", - "block.create.mechanical_crafter.tooltip.control1": "当在机器前方使用扳手时", - "block.create.mechanical_crafter.tooltip.action1": "将会改变物品移动的方向。要合成一个物品,所有原料必须被_移动到一起_,并且在阵列的_外缘_被弹出机器", - "block.create.mechanical_crafter.tooltip.control2": "当侧方或者后方使用扳手时", - "block.create.mechanical_crafter.tooltip.action2": "连接相邻的合成器的物品栏,这样_相同_的物品就会自动进入所有相互连接的合成器", - - "block.create.furnace_engine.tooltip": "熔炉引擎", - "block.create.furnace_engine.tooltip.summary": "一种强力的_旋转动能_的来源,但是需要_正在工作_的_熔炉_才能正常运作。", - "block.create.furnace_engine.tooltip.condition1": "当连接到正在燃烧的熔炉", - "block.create.furnace_engine.tooltip.behaviour1": "将会带动_相连_的_飞轮_(需要间隔一格),用高炉速度更快。", - - "block.create.flywheel.tooltip": "飞轮", - "block.create.flywheel.tooltip.summary": "一种大型的金属轮,能将_熔炉引擎_提供的动能稳定化输出,需要与_熔炉引擎_间隔一个方块。", - "block.create.flywheel.tooltip.condition1": "当连接正在输出的熔炉引擎", - "block.create.flywheel.tooltip.behaviour1": "将会提供相应的_旋转动能_。", - - "block.create.portable_storage_interface.tooltip": "移动存储接口", - "block.create.portable_storage_interface.tooltip.summary": "为动力活塞、装配矿车、旋转轴承、滑轮_等运动结构_设计的_物流接口_,_运动结构_和_固定结构_之间的物品交换站,两个接口会面时将_自动对接_,且必须彼此隔开 1-2 个方块。", - "block.create.portable_storage_interface.tooltip.condition1": "装配在运动结构上时", - "block.create.portable_storage_interface.tooltip.behaviour1": "移动到能够满足与_固定结构_上的_移动式存储接口_对接的条件后,运动结构会_短暂地停下_,开始对接,并直接与_运动结构上的_存储容器_交互,进行物品的_输入输出_。", - "block.create.portable_storage_interface.tooltip.condition2": "通入红石信号时时", - "block.create.portable_storage_interface.tooltip.behaviour2": "立即断开任何处于激活状态的连接。", - - "block.create.portable_fluid_interface.tooltip": "移动流体接口", - "block.create.portable_fluid_interface.tooltip.summary": "为动力活塞、装配矿车、旋转轴承、滑轮_等运动结构_设计的_流体接口_,_运动结构_和_固定结构_之间的流体交换站,两个接口会面时将_自动对接_,且必须彼此隔开 1-2 个方块。", - "block.create.portable_fluid_interface.tooltip.condition1": "装配在运动结构上时", - "block.create.portable_fluid_interface.tooltip.behaviour1": "移动到能够满足与_固定结构_上的_移动式流体接口_对接的条件后,运动结构会_短暂地停下_,开始对接,并直接与_运动结构_上的_流体储罐_交互,进行流体的_导入导出_。", - "block.create.portable_fluid_interface.tooltip.condition2": "通入红石信号时时", - "block.create.portable_fluid_interface.tooltip.behaviour2": "立即断开任何处于激活状态的连接。", - - "block.create.rotation_speed_controller.tooltip": "转速控制器", - "block.create.rotation_speed_controller.tooltip.summary": "一个可以变换所连接齿轮旋转速度的元件", - "block.create.rotation_speed_controller.tooltip.condition1": "接入大齿轮时", - "block.create.rotation_speed_controller.tooltip.behaviour1": "通过_鼠标滚轮_调整接入动力的_转速_,传递给连接的_大齿轮_,连接的大齿轮需要放置在其上方。", - - "block.create.mechanical_piston.tooltip": "动力活塞", - "block.create.mechanical_piston.tooltip.summary": "活塞的高级版本,使用_旋转动能_精确地移动其前方的方块,背面可放置活塞杆延长活塞范围,没有活塞杆将不会工作,使用_底盘_或者_粘液块_可以移动多行方块。", - "block.create.mechanical_piston.tooltip.condition1": "推拉活塞时", - "block.create.mechanical_piston.tooltip.behaviour1": "活塞的_速度_和_方向_与所接受_转速_的_大小_以及_方向_相关。", - - "block.create.piston_extension_pole.tooltip": "活塞杆", - "block.create.piston_extension_pole.tooltip.summary": "用于增加_动力活塞_的移动范围", - "block.create.piston_extension_pole.tooltip.condition1": "当连接到动力活塞时", - "block.create.piston_extension_pole.tooltip.behaviour1": "活塞的移动范围将扩大", - - "block.create.mechanical_bearing.tooltip": "动力轴承", - "block.create.mechanical_bearing.tooltip.summary": "使用旋转力旋转_大型结构_。", - "block.create.mechanical_bearing.tooltip.condition1": "接入动力时", - "block.create.mechanical_bearing.tooltip.behaviour1": "开始使相接的方块旋转。使用_机壳底盘_,_粘液球_或者_强力胶_将方块连接在一起,可以使得动力轴承带动更多的方块。", - - "block.create.windmill_bearing.tooltip": "风车轴承", - "block.create.windmill_bearing.tooltip.summary": "借助_风的力量_创造_动力_。设计你的独特风车,让其肆意旋转吧!", - "block.create.windmill_bearing.tooltip.condition1": "右击时", - "block.create.windmill_bearing.tooltip.behaviour1": "启动轴承,提供由其_附加结构_的旋转产生的动力。结构必须包括合适的_风帆_或_羊毛_。使用_机壳底盘_,_粘液块_或_强力胶_可以带动更多方块旋转。", - - "block.create.sail_frame.tooltip": "风帆框架", - "block.create.sail_frame.tooltip.summary": "实用的建筑方块,而将其安装于_风车轴承_上并组成特定结构时,它又能产出动力学能量。", - - "block.create.white_sail.tooltip": "风帆", - "block.create.white_sail.tooltip.summary": "可用于_组装风车_的结构方块,不俗的动力来源,有多种颜色。", - "block.create.white_sail.tooltip.condition1": "使用染料右击时", - "block.create.white_sail.tooltip.behaviour1": "改变颜色。", - - "block.create.clockwork_bearing.tooltip": "时钟轴承", - "block.create.clockwork_bearing.tooltip.summary": "一种高级的机械轴承,可以根据当前游戏内时间旋转两个不同的指针", - "block.create.clockwork_bearing.tooltip.condition1": "接入动力时", - "block.create.clockwork_bearing.tooltip.behaviour1": "旋转第一个连接的结构作为时针,第二个连接的结构作为分针", - - "block.create.sequenced_gearshift.tooltip": "可编程齿轮箱", - "block.create.sequenced_gearshift.tooltip.summary": "一种可编程的组件,可以根据内部的指令设计旋转的_方向_,_速度_,以及_距离_。此组件可以有效配合活塞和轴承等使用。最高可让其按_顺序_执行_ 5 条指令_。在高转速时工作精度可能会下降。", - "block.create.sequenced_gearshift.tooltip.condition1": "当通入红石信号时", - "block.create.sequenced_gearshift.tooltip.behaviour1": "在接入动能的情况下,执行指令。", - "block.create.sequenced_gearshift.tooltip.condition2": "当右击时", - "block.create.sequenced_gearshift.tooltip.behaviour2": "将打开_配置界面_", - - "block.create.cart_assembler.tooltip": "矿车装配站", - "block.create.cart_assembler.tooltip.summary": "当放置于铁轨上时,将会_装配_或者_卸载_穿越它的矿车运动结构。按下 [Ctrl] 可以查阅它在不同轨道上的行为。", - "block.create.cart_assembler.tooltip.condition1": "单个矿车结构", - "block.create.cart_assembler.tooltip.behaviour1": "只有_单个_矿车装置,整个结构在旋转时会以这_单个_矿车为基点。使用_扳手_可以指定结构的_旋转行为_。", - "block.create.cart_assembler.tooltip.condition2": "连接矿车结构", - "block.create.cart_assembler.tooltip.behaviour2": "由_一整个结构所相连_的两个矿车装置,这_两个矿车_会被这_架设于它们之间的结构连接起来。这一结构的行为类似于_矿车联轴器_。", - "block.create.cart_assembler.tooltip.control1": "放置于轨道上时", - "block.create.cart_assembler.tooltip.action1": "通入红石信号时_装配_经过的矿车,未激活时_卸载_经过的矿车。", - "block.create.cart_assembler.tooltip.control2": "放置于充能铁轨上时", - "block.create.cart_assembler.tooltip.action2": "通入红石信号时_装配_并加速矿车,未激活时_卸载_并停住经过的矿车。", - "block.create.cart_assembler.tooltip.control3": "放置在探测铁轨上时", - "block.create.cart_assembler.tooltip.action3": "_装配未装配_过的矿车,_卸载装配_过的矿车。", - "block.create.cart_assembler.tooltip.control4": "放置在激活铁轨上时", - "block.create.cart_assembler.tooltip.action4": "通入红石信号时_卸载_矿车。", - - "block.create.rope_pulley.tooltip": "绳索滑轮", - "block.create.rope_pulley.tooltip.summary": "带动与其相接的_方块_以及_垂直方向上的结构_。你可以利用使用_底盘_、_粘液球_或_强力胶_来移动更多的方块。", - "block.create.rope_pulley.tooltip.condition1": "接入动力时", - "block.create.rope_pulley.tooltip.behaviour1": "根据输入的转速的大小以及方向,移动链接的结构。", - - "block.create.linear_chassis.tooltip": "机壳底盘", - "block.create.linear_chassis.tooltip.summary": "一种可配置的基础方块,用于连接运动结构。", - "block.create.linear_chassis.tooltip.condition1": "被移动时", - "block.create.linear_chassis.tooltip.behaviour1": "_带动_所有_相接的底盘_,以及上方一定范围内的柱形方块进行同方向移动。上方的方块想要被_带动_,底盘上面的面必须是_有黏性的_。(详参 Ctrl)", - "block.create.linear_chassis.tooltip.condition2": "手持扳手查看时", - "block.create.linear_chassis.tooltip.behaviour2": "配置可连接方块的_范围_。按住 _Ctrl_ 可以同时配置相连的其他底盘。", - "block.create.linear_chassis.tooltip.control1": "当用粘液球右击时", - "block.create.linear_chassis.tooltip.action1": "使得被使用面具有_黏性_。当移动时,无论具体的移动方向如何,底盘都会_带动_与该面相接的方块。", - - "block.create.secondary_linear_chassis.tooltip": "机壳底盘2号", - "block.create.secondary_linear_chassis.tooltip.summary": "第二种_机壳底盘_,不会与第一种机壳底盘互相连接。", - - "block.create.radial_chassis.tooltip": "旋转底盘", - "block.create.radial_chassis.tooltip.summary": "一种可配置的基础方块,用于连接运动结构。", - "block.create.radial_chassis.tooltip.condition1": "当被旋转时", - "block.create.radial_chassis.tooltip.behaviour1": "_带动_所有_附着于它_的,位于_其上方成柱形_的方块。侧面所附着的方块必需在一定的范围内且附着的面必须是有黏性的,方可被带动。(详参 Ctrl)", - "block.create.radial_chassis.tooltip.condition2": "手持扳手查看时", - "block.create.radial_chassis.tooltip.behaviour2": "配置可连接方块的_范围_。按住_Ctrl_可以同时配置相连的其他底盘。", - "block.create.radial_chassis.tooltip.control1": "当用粘液球右击时", - "block.create.radial_chassis.tooltip.action1": "使旋转底盘的这一面_具有黏性_。所有该方向上与其相连的方块会与其_一同移动_。", - - "block.create.mechanical_drill.tooltip": "动力钻头", - "block.create.mechanical_drill.tooltip.summary": "用于_破坏方块_的装置,可以被_动力活塞_和_动力轴承_等移动设备带动", - "block.create.mechanical_drill.tooltip.condition1": "当接入动力时", - "block.create.mechanical_drill.tooltip.behaviour1": "_原地_破坏正前方的方块,且_伤害_在一定范围内生物及玩家。", - "block.create.mechanical_drill.tooltip.condition2": "当移动时", - "block.create.mechanical_drill.tooltip.behaviour2": "横向或纵向沿路破坏其所_碰到_的方块。", - - "block.create.mechanical_harvester.tooltip": "动力收割机", - "block.create.mechanical_harvester.tooltip.summary": "适用于中型作物自动化的收割机,可以被_动力活塞_和_动力轴承_等带动。", - "block.create.mechanical_harvester.tooltip.condition1": "当移动时", - "block.create.mechanical_harvester.tooltip.behaviour1": "当收割机移动至_成熟作物_时,_收割_作物并将作物变为初始生长状态。", - - "block.create.mechanical_plough.tooltip": "动力犁", - "block.create.mechanical_plough.tooltip.summary": "犁是一个非常有用的多功能方块,它可以被_动力活塞_和_动力轴承_等带动", - "block.create.mechanical_plough.tooltip.condition1": "当移动时", - "block.create.mechanical_plough.tooltip.behaviour1": "可以打掉无碰撞体积的一些_附着方块_,比如火把和雪等。可以在不伤害实体的情况下移动它们。能像_锄头_一样翻土耕田。", - - "block.create.mechanical_saw.tooltip": "动力锯", - "block.create.mechanical_saw.tooltip.summary": "可以用于_砍树_,也可以用于_切割方块_,可以被_动力活塞_和_动力轴承_等带动", - "block.create.mechanical_saw.tooltip.condition1": "当向上放置时", - "block.create.mechanical_saw.tooltip.behaviour1": "对掉落或放置在其上方的方块应用_板材切割_以及_石材切割配方_。当可能出现多种产物时,它会进行循环输出,除非使用_过滤器_指定其输出产物。", - "block.create.mechanical_saw.tooltip.condition2": "当水平放置时", - "block.create.mechanical_saw.tooltip.behaviour2": "可以破坏其面前的_原木_。如果这些原木支撑着_一整颗树_,这棵_树_会被锯子_砍倒_。", - "block.create.mechanical_saw.tooltip.condition3": "当移动时", - "block.create.mechanical_saw.tooltip.behaviour3": "将会_砍倒_碰撞到的树。", - - "block.create.stockpile_switch.tooltip": "存量转换器", - "block.create.stockpile_switch.tooltip.summary": "根据连接的容器中_储存物品_的数量切换红石信号强度。自带有过滤槽,与_比较器_不同的是,你可以配置_存量转换器_信号反转的_阈值_。", - "block.create.stockpile_switch.tooltip.condition1": "当右击时", - "block.create.stockpile_switch.tooltip.behaviour1": "打开_配置界面_。", - - "block.create.content_observer.tooltip": "物品侦测器", - "block.create.content_observer.tooltip.summary": "检测_容器_和_传送带_中过滤器匹配的物品。当在_物品栏_,_传送带_或者_溜槽所容物_中侦测到匹配的物品时,此组件将发出_红石信号_。当观察到的漏斗_转移匹配的物品_时,此组件将发出_红石脉冲_。", - - "block.create.redstone_link.tooltip": "无线红石信号终端", - "block.create.redstone_link.tooltip.summary": "无线红石信号终端,可以使用_任何物品_编辑终端_频道_。虽然距离挺远,但是终归是有限的。", - "block.create.redstone_link.tooltip.condition1": "当启用时", - "block.create.redstone_link.tooltip.behaviour1": "接收相同_频道_提供的_红石信号_。", - "block.create.redstone_link.tooltip.control1": "当手持方块右击方块时", - "block.create.redstone_link.tooltip.action1": "手持_任意物品_为其设置_频道_,可以使用两种物品组合设置_频道_。", - "block.create.redstone_link.tooltip.control2": "当潜行右击时", - "block.create.redstone_link.tooltip.action2": "在_发射模式_和_接收模式_之间切换。", - - "block.create.nixie_tube.tooltip": "辉光管", - "block.create.nixie_tube.tooltip.summary": "一个精致,且有红石能量激活的_数值_和_文本_显示器。", - "block.create.nixie_tube.tooltip.condition1": "通入红石信号时时", - "block.create.nixie_tube.tooltip.behaviour1": "直观的显示当前_红石信号_的强度", - "block.create.nixie_tube.tooltip.condition2": "被命名牌命名时", - "block.create.nixie_tube.tooltip.behaviour2": "在_沿直线排列_多个辉光管上显示_命名牌内容_。", - - "block.create.redstone_contact.tooltip": "接触式红石信号发生器", - "block.create.redstone_contact.tooltip.summary": "一种用于高级红石装置的设备。只能两两工作。可以被_动力活塞_和_动力轴承_等控制类机器带动。", - "block.create.redstone_contact.tooltip.condition1": "当正对面放置也放置相互朝向的接触信号发生器时", - "block.create.redstone_contact.tooltip.behaviour1": "发出_红石信号_。", - "block.create.redstone_contact.tooltip.condition2": "当移动时", - "block.create.redstone_contact.tooltip.behaviour2": "会使所有与其接触的发生器发出红石信号。", - - "block.create.adjustable_crate.tooltip": "可调节板条箱", - "block.create.adjustable_crate.tooltip.summary": "该箱子支持玩家对其容量进行调整,最大可以容纳_16组_物品。支持_红石比较器_。", - "block.create.adjustable_crate.tooltip.control1": "当右击时", - "block.create.adjustable_crate.tooltip.action1": "打开箱子", - - "block.create.creative_crate.tooltip": "创造板条箱", - "block.create.creative_crate.tooltip.summary": "这种_储存容器_可以无限地复制任何物品。它还可以移除附近的_蓝图加农炮_的材料需求。", - "block.create.creative_crate.tooltip.condition1": "当标记了物品时", - "block.create.creative_crate.tooltip.behaviour1": "任何从容器中_提取_的物品都是_无限量的_,而任何_放置_到容器中的物品都会被_送入虚空_", - - "block.create.deployer.tooltip": "机械手", - "block.create.deployer.tooltip.summary": "_攻击_,_使用_,以及_激活_。这个机器会竭尽所能地_模仿_一个_玩家_的行为。它可以将物品从其自身的_物品栏_中_拿取_出来,或者将物品_存入_其中。", - "block.create.deployer.tooltip.condition1": "接入动能时", - "block.create.deployer.tooltip.behaviour1": "机械手可伸长_两个方块_的距离,取出_缓存区_的物品并使用。", - "block.create.deployer.tooltip.condition2": "当使用扳手右击时", - "block.create.deployer.tooltip.behaviour2": "启用拳头模式,在拳头模式之下,机械手将会试图使用手中的物品_破坏方块_,或者_攻击实体_。", - "block.create.deployer.tooltip.condition3": "配有过滤器时", - "block.create.deployer.tooltip.behaviour3": "只有在机械手手持的物品与_过滤器_物品相_匹配_时才会激活。不匹配的物品无法被其持有;匹配且持有在机械手上的物品无法被提取。", - - "block.create.brass_casing.tooltip": "黄铜机壳", - "block.create.brass_casing.tooltip.summary": "一种坚固的机壳,有多种用途。可以用来包装_传动杆_以及_传送带_。", - - "block.create.pulse_repeater.tooltip": "脉冲中继器", - "block.create.pulse_repeater.tooltip.summary": "一个简单的电路元件,将通过的红石信号变为 1 tick。", - - "block.create.adjustable_repeater.tooltip": "可调节中继器", - "block.create.adjustable_repeater.tooltip.summary": "高级中继器,最大可设置 30 分钟延迟。", - - "block.create.adjustable_pulse_repeater.tooltip": "可调节脉冲中继器", - "block.create.adjustable_pulse_repeater.tooltip.summary": "一种单次 1 tick 的红石脉冲器,可以调节延时至30 min。", - - "block.create.analog_lever.tooltip": "模拟拉杆", - "block.create.analog_lever.tooltip.summary": "一种可以调节任意信号强度的推杆。", - - "block.create.powered_toggle_latch.tooltip": "转换锁存器", - "block.create.powered_toggle_latch.tooltip.summary": "一种拉杆,在红石电路中可以用作转换锁存器。", - - "block.create.powered_latch.tooltip": "锁存器", - "block.create.powered_latch.tooltip.summary": "一种拉杆,在红石电路中用作锁存器,从后方输入将会启用这个拉杆,从侧边输入将会重置这个拉杆。", - - "block.create.controller_rail.tooltip": "控制铁轨", - "block.create.controller_rail.tooltip.summary": "一种_汇流的,受红石信号影响的_铁轨,可以_较好地控制_经过矿车的_移动速度_。", - "block.create.controller_rail.tooltip.condition1": "通入红石信号时时", - "block.create.controller_rail.tooltip.behaviour1": "根据信号强度_加速_或_减速_经过的矿车。还会将红石信号传递到相邻的控制铁轨。向两个控制铁轨通入不同等级的红石信号,两者中间的轨道会受到以此为区间的连续等级的红石信号的激活。", - - "block.create.speedometer.tooltip": "速度表", - "block.create.speedometer.tooltip.summary": "测量并展示连接网络的_旋转速度_,支持使用_红石比较器_。", - "block.create.speedometer.tooltip.condition1": "接入动力时", - "block.create.speedometer.tooltip.behaviour1": "将会用颜色展示速度的大小,_绿色_为慢速、_蓝色_为中速、_紫色_为快速。一些动力组件需要足够的速度等级方能正常工作。", - - "block.create.stressometer.tooltip": "应力表", - "block.create.stressometer.tooltip.summary": "测量并展示连接网络的_应力值_,支持使用_红石比较器_。", - "block.create.stressometer.tooltip.condition1": "接入动力时", - "block.create.stressometer.tooltip.behaviour1": "将会用颜色展示承受的应力。如果_网络过载_则会瘫痪,必须_减少使用机器_或者_增加动力源_。", - - "item.create.sand_paper.tooltip": "砂纸", - "item.create.sand_paper.tooltip.summary": "用来_打磨_物品的砂纸,可以用_机械手_来实现自动化。", - "item.create.sand_paper.tooltip.condition1": "使用时", - "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_准心所指_的物品。", - - "item.create.super_glue.tooltip": "强力胶", - "item.create.super_glue.tooltip.summary": "让两个方块互相_粘在一起_,他们将再也无法分开了。", - "item.create.super_glue.tooltip.condition1": "右击使用时", - "item.create.super_glue.tooltip.behaviour1": "有强力胶的方块的_那一面_会变得有黏性。和此面相邻的方块在被_动力活塞_或者_动力轴承_等方块驱动的时候会被一同带动", - "item.create.super_glue.tooltip.condition2": "在副手上时", - "item.create.super_glue.tooltip.behaviour2": "主手放置的方块会被_直接_粘在所放置的方块上", - - "item.create.builders_tea.tooltip": "建造工茶饮", - "item.create.builders_tea.tooltip.summary": "饮下这杯完美茶饮,开启神清气爽的一天。可以回复_饥饿值_并获得_急迫_效果。", - - "item.create.refined_radiance.tooltip": "光辉石", - "item.create.refined_radiance.tooltip.summary": "一种用_光辉_锻造的化合物材料。", - - "item.create.shadow_steel.tooltip": "暗影钢", - "item.create.shadow_steel.tooltip.summary": "一种用_虚空_锻造的化合物材料。", - - "item.create.minecart_coupling.tooltip": "矿车连轴器", - "item.create.minecart_coupling.tooltip.summary": "将多个_矿车_或运输结构链接在一起,构成雄伟的火车。", - "item.create.minecart_coupling.tooltip.condition1": "作用与矿车时", - "item.create.minecart_coupling.tooltip.behaviour1": "将两个矿车耦合在一起,在移动时将它们保持_恒定的距离_。", - - "item.create.crafter_slot_cover.tooltip": "合成器盖板", - "item.create.crafter_slot_cover.tooltip.summary": "用来标记_动力合成器_以不放入物品。在制造与桶类似的斜向合成表时非常有用。", - - "create.tooltip.wip": "WIP", - "create.tooltip.workInProgress": "这东西还没有做完!", - "create.tooltip.randomWipDescription0": "别把这玩意给熊孩子", - "create.tooltip.randomWipDescription1": "每次你使用这个东西,都会让一只无辜的熊猫丢掉性命,每!一!次!", - "create.tooltip.randomWipDescription2": "使用后果自负", - "create.tooltip.randomWipDescription3": "(摇手指)这可不是你在找的物品,走开吧", - "create.tooltip.randomWipDescription4": "自爆模式已启动,10,9,8..。", - "create.tooltip.randomWipDescription5": "相信我,你现在已经没有回头路了。", - "create.tooltip.randomWipDescription6": "如果你使用这个东西,那么本作者与它造成的任何后果没有责任。", - "create.tooltip.randomWipDescription7": "这玩意不是给你用的,换个吧", - "create.tooltip.randomWipDescription8": "试试就逝世。", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "按住 [%1$s] 开始思索", - "create.ponder.subject": "情景主题", - "create.ponder.pondering": "思索...", - "create.ponder.identify_mode": "名称显示模式开,[%1$s]来继续思索", - "create.ponder.associated": "关联词条", - "create.ponder.close": "思索结束", - "create.ponder.identify": "显示方块名称", - "create.ponder.next": "下一情景", - "create.ponder.previous": "前一情景", - "create.ponder.replay": "重放", - "create.ponder.think_back": "回想", - "create.ponder.slow_text": "舒适阅读", - "create.ponder.shared.movement_anchors": "有了底盘和强力胶,移动起大型结构轻轻松松。", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "潜行 +", - "create.ponder.shared.storage_on_contraption": "与装置相接的存储空间,会自动将装置遇到的掉落物拾取到空间内。", - "create.ponder.shared.behaviour_modify_wrench": "可以用扳手调整它的行为。", - "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "动力源:16 R", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "动力源", - "create.ponder.tag.kinetic_sources.description": "能够发生动力的组件。", - "create.ponder.tag.contraption_actor": "装置执行组件", - "create.ponder.tag.contraption_actor.description": "能在移动的装置上执行特殊功能的组件", - "create.ponder.tag.arm_targets": "机械臂的工作目标", - "create.ponder.tag.arm_targets.description": "该组件可做为机械臂的输入或者输出点。", - "create.ponder.tag.logistics": "物品运输", - "create.ponder.tag.logistics.description": "该组件可以协助物品运输", - "create.ponder.tag.movement_anchor": "运动源泉", - "create.ponder.tag.movement_anchor.description": "有了它,运动装置才得以可能,它可以以数种方式使相接的结构运动起来。", - "create.ponder.tag.creative": "创造模式", - "create.ponder.tag.creative.description": "总有些东西是生存模式得不到的。", - "create.ponder.tag.kinetic_relays": "动力方块", - "create.ponder.tag.kinetic_relays.description": "用于传递旋转力的组件。", - "create.ponder.tag.windmill_sails": "风车轴承的帆", - "create.ponder.tag.windmill_sails.description": "在进行风车组装时会被算入风车旋转力的方块,这些方块的效能都是一样的。", - "create.ponder.tag.contraption_assembly": "方块连接物件", - "create.ponder.tag.contraption_assembly.description": "将各个组件连接以便同时运动的物件", - "create.ponder.tag.decoration": "装饰", - "create.ponder.tag.decoration.description": "装饰是这些组件的常见用法。", - "create.ponder.tag.kinetic_appliances": "动力设备", - "create.ponder.tag.kinetic_appliances.description": "这些组件可以利用旋转力进行工作。", - "create.ponder.tag.redstone": "逻辑组件", - "create.ponder.tag.redstone.description": "这些组件会在红石工程中发挥大用处。", - "create.ponder.tag.fluids": "流体操纵器械", - "create.ponder.tag.fluids.description": "这些组件可以用于传递流体,以及利用流体进行工作。", - - "create.ponder.adjustable_pulse_repeater.header": "使用可调节脉冲中继器控制信号发送", - "create.ponder.adjustable_pulse_repeater.text_1": "可调节脉冲中继器在一段延时之后会发出一道短时脉冲", - "create.ponder.adjustable_pulse_repeater.text_2": "滑动滚轮即可更改延时时间", - "create.ponder.adjustable_pulse_repeater.text_3": "延时配置范围的上限为 30 分钟", - - "create.ponder.adjustable_repeater.header": "使用可调节中继器控制信号发送", - "create.ponder.adjustable_repeater.text_1": "可调节中继器与常规的中继器的行为较为相似", - "create.ponder.adjustable_repeater.text_2": "它们会进行一段时间的充能,时长为设定的时间...", - "create.ponder.adjustable_repeater.text_3": "...然后以同样的时长逐渐退出充能状态", - "create.ponder.adjustable_repeater.text_4": "滑动滚轮即可更改充能时间", - "create.ponder.adjustable_repeater.text_5": "延时配置范围的上限为 30 分钟", - - "create.ponder.analog_lever.header": "使用模拟拉杆控制信号发送", - "create.ponder.analog_lever.text_1": "要想使得红石信号源信号强度精确且占地面积小,模拟拉杆不可少。", - "create.ponder.analog_lever.text_2": "右击可以提升输出模拟信号的强度", - "create.ponder.analog_lever.text_3": "潜行右击将会减少输出模拟信号的强度", - - "create.ponder.andesite_tunnel.header": "安山隧道用法", - "create.ponder.andesite_tunnel.text_1": "安山隧道可用于遮掩传送带", - "create.ponder.andesite_tunnel.text_2": "只要在漏斗的侧边加装上安山隧道...", - "create.ponder.andesite_tunnel.text_3": "...路过的所有物品堆都会被精准地拣出一个物品", - "create.ponder.andesite_tunnel.text_4": "剩下的物品则不受影响,继续前进", - - "create.ponder.basin.header": "工作盆内物品处理", - "create.ponder.basin.text_1": "一个可以对放入的物品以及流体进行处理的盆", - "create.ponder.basin.text_2": "处理完毕后,工作盆会尝试从它的底面进行产物输出", - "create.ponder.basin.text_3": "若在正确的位置上放置了有效的组件,工作盆会显示出一个输出龙头", - "create.ponder.basin.text_4": "有多种设备可以引发工作盆的这一行为", - "create.ponder.basin.text_5": "产物会被输出到盆下方的存储空间内", - "create.ponder.basin.text_6": "如果没有显示出输出龙头,那么盆内的产物将会一直留存在盆内", - "create.ponder.basin.text_7": "这在产物需要作为新一轮处理的原料时相当有用", - "create.ponder.basin.text_8": "需要输出的产物仍需从盆内取出", - "create.ponder.basin.text_9": "若是加装过滤,那么你便无需担心会将未被处理的物品抽取出来了", - - "create.ponder.bearing_modes.header": "动力轴承的运动模式", - "create.ponder.bearing_modes.text_1": "当结构停止时,轴承会控制结构以特定的角度停在最近的与格相对齐之处", - "create.ponder.bearing_modes.text_2": "你可以调整整个结构永不方块化,或者仅在结构的起始位置方块化", - - "create.ponder.belt_casing.header": "带机壳的传送带", - "create.ponder.belt_casing.text_1": "你可以用黄铜或者安山机壳装饰你的传送带", - "create.ponder.belt_casing.text_2": "使用扳手即可移除机壳", - - "create.ponder.belt_connector.header": "传送带用法", - "create.ponder.belt_connector.text_1": "手持传送带右击两根传动杆,可以将两根杆连接起来。", - "create.ponder.belt_connector.text_2": "如果不小心选错了,潜行右击即可取消选择", - "create.ponder.belt_connector.text_3": "你也可以在传送带的中间加装额外的传动杆", - "create.ponder.belt_connector.text_4": "通过传送带相连的传动杆,会以相同的转速以及方向进行旋转", - "create.ponder.belt_connector.text_5": "加装的传动杆可以用扳手拆下来", - "create.ponder.belt_connector.text_6": "传送带亦可染色", - - "create.ponder.belt_directions.header": "传送带的有效连接方向", - "create.ponder.belt_directions.text_1": "传送带的连接方向并不是任意的", - "create.ponder.belt_directions.text_2": "1. 可以水平连接", - "create.ponder.belt_directions.text_3": "2. 可以对角连接", - "create.ponder.belt_directions.text_4": "3. 可以垂直连接", - "create.ponder.belt_directions.text_5": "4. 还可以水平连接竖直放置的传动杆", - "create.ponder.belt_directions.text_6": "以上为所有可能的连接方向。传送带的连接范围为 2 到 20 格", - - "create.ponder.belt_transport.header": "在物流中使用传送带", - "create.ponder.belt_transport.text_1": "运动的传送带可以运输物品以及其他实体", - "create.ponder.belt_transport.text_2": "空手右击传送带,即可将其上的物品拿下来。", - - "create.ponder.blaze_burner.header": "烈焰人燃烧室补喂", - "create.ponder.blaze_burner.text_1": "烈焰人燃烧室可以为工作盆的物品处理提供热量", - "create.ponder.blaze_burner.text_2": "因而,你需要喂给室内的烈焰人一些可燃物品", - "create.ponder.blaze_burner.text_3": "如果喂给了它烈焰蛋糕,它还能达到更强的热力等级", - "create.ponder.blaze_burner.text_4": "你可以用机械手或者机械臂进行自动化补喂", - - "create.ponder.brass_funnel.header": "黄铜漏斗", - "create.ponder.brass_funnel.text_1": "安山岩漏斗一次只能提取出一个物品。", - "create.ponder.brass_funnel.text_2": "黄铜漏斗可以一次提取一组物品。", - "create.ponder.brass_funnel.text_3": "对着过滤槽滑动滚轮,还可以精确调节黄铜漏斗的提取数量。", - "create.ponder.brass_funnel.text_4": "对着过滤槽使用某个物品,可以限制漏斗的行为,使其只传输匹配的物品。", - - "create.ponder.brass_tunnel.header": "黄铜隧道用法", - "create.ponder.brass_tunnel.text_1": "黄铜隧道可以遮掩住你的传送带", - "create.ponder.brass_tunnel.text_2": "隧道的每一个开口面都有过滤槽", - "create.ponder.brass_tunnel.text_3": "在输入处的过滤槽仅会阻挡住不匹配的物品", - "create.ponder.brass_tunnel.text_4": "输出处的过滤槽可用于以种类为依据的物品整理", - "create.ponder.brass_tunnel.text_5": "如果有数种匹配的物品通过,那么隧道的分配模式将会决定这些物品何去何从", - "create.ponder.brass_tunnel.text_6": "连接了平行传送带的黄铜隧道,会将隧道、传送带组成一个组", - "create.ponder.brass_tunnel.text_7": "输入组内的物品会被分配到所有组内连接的对象中", - "create.ponder.brass_tunnel.text_8": "在这一情况下,你仍可以将物品直接输入到隧道方块中", - - "create.ponder.brass_tunnel_modes.header": "黄铜隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_1": "使用扳手即可调节隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_10": "“同步输入”是黄铜隧道的一种特殊设定", - "create.ponder.brass_tunnel_modes.text_11": "只有在组内全部的隧道都有一个等待通过的物品时,物品才能通过此隧道", - "create.ponder.brass_tunnel_modes.text_12": "这确保了所有受影响的传送带能够以相同的速率进行物品补给", - "create.ponder.brass_tunnel_modes.text_2": "“分流”会尝试将物品堆分流传输到可用的输出端", - "create.ponder.brass_tunnel_modes.text_3": "如果某个输出端无法容纳更多的物品,那么此出口不纳入分流的运算中", - "create.ponder.brass_tunnel_modes.text_4": "“强制分流”不会跳过某个输出端,而是一直等待着此输出端能够容纳更多物品,才会继续物品传输", - "create.ponder.brass_tunnel_modes.text_5": "“轮询调度”会保持物品堆完整,循环检索各个输出口,满足条件后将物品堆全部送入 ", - "create.ponder.brass_tunnel_modes.text_6": "与分流类似,如果输出口无法容纳更多物品,那它会被跳过", - "create.ponder.brass_tunnel_modes.text_7": "“强制轮询调度”不会跳过输出口", - "create.ponder.brass_tunnel_modes.text_8": "“最近优先”会将物品优先送入距离输入口更近的输出口", - "create.ponder.brass_tunnel_modes.text_9": "“随机”会随机选择一个输出口,一次性送入所有物品", - - "create.ponder.cart_assembler.header": "使用矿车装配站组装运动结构", - "create.ponder.cart_assembler.text_1": "矿车装配站会将它所连接的结构安装到矿车上", - "create.ponder.cart_assembler.text_2": "若没有通入红石信号,它会将矿车装置解散为方块的形式", - "create.ponder.cart_assembler.text_3": "对着矿车使用你的扳手,装置会变为可搬运的形式", - - "create.ponder.cart_assembler_dual.header": "组装连接结构", - "create.ponder.cart_assembler_dual.text_1": "若两个装配矿车分享了同一个结构", - "create.ponder.cart_assembler_dual.text_2": "给其中的任意一方的矿车装配站通入红石信号,都会创建出连接装置", - "create.ponder.cart_assembler_dual.text_3": "两辆矿车的此时行为与用矿车连轴器连接在一起时十分相似", - - "create.ponder.cart_assembler_modes.header": "矿车装置的方向设定", - "create.ponder.cart_assembler_modes.text_1": "矿车装置会随着矿车的运动而发生转向", - "create.ponder.cart_assembler_modes.text_2": "如果装配结构的方向锁定了,那么结构的方向将不再改变", - - "create.ponder.cart_assembler_rails.header": "另外几种矿车以及铁轨", - "create.ponder.cart_assembler_rails.text_1": "放置在普通轨道上的矿车装配站并不会影响路过矿车装置的运动", - "create.ponder.cart_assembler_rails.text_2": "如果放置在充能或控制铁轨上且没有通入红石信号,那么路过的矿车将会停在此处", - "create.ponder.cart_assembler_rails.text_3": "另外的几种矿车可以当作锚来使用", - "create.ponder.cart_assembler_rails.text_4": "熔炉矿车会试图始终保持燃烧状态,并试图从路过的存储空间内抽取燃料", - - "create.ponder.chain_drive.header": "使用链式传动箱传动旋转力", - "create.ponder.chain_drive.text_1": "同一行上的链式传动箱会相互间传递旋转", - "create.ponder.chain_drive.text_2": "所有以此种方式连接的传动杆都会以相同的方向进行旋转", - "create.ponder.chain_drive.text_3": "同一行的传动箱内的任意一个传动箱,旋转 90 度之后仍可以正常工作", - - "create.ponder.chain_gearshift.header": "利用可调节链式传动箱进行转速调节", - "create.ponder.chain_gearshift.text_1": "未充能的可调节链式传动箱与普通链式传动箱无异", - "create.ponder.chain_gearshift.text_2": "当被充能时,它将会把旋转力以双倍转速传动至其他链式传动箱", - "create.ponder.chain_gearshift.text_3": "若被充能的可调节传动箱并不是动力输入端,则它会减半转速", - "create.ponder.chain_gearshift.text_4": "在这两种情况中,同一组的其他链式传动箱的转速都为被充能的可调节链式传动箱的两倍", - "create.ponder.chain_gearshift.text_5": "转速的倍率可在 x1 和 x2 间根据红石信号的强弱来精确调整", - "create.ponder.chain_gearshift.text_6": "12 RPM", - - "create.ponder.chute.header": "使用溜槽向下运输物品", - "create.ponder.chute.text_1": "溜槽可在两个存储空间之间垂直传送物品", - "create.ponder.chute.text_2": "使用扳手右击可以在溜槽上设置观察窗", - "create.ponder.chute.text_3": "对着另一个溜槽的侧面放置另一个溜槽,将会放置下一个呈对角状的溜槽", - - "create.ponder.chute_upward.header": "使用溜槽向上运输物品", - "create.ponder.chute_upward.text_1": "在溜槽上或下方使用鼓风机时,物品会根据风的方向向上或下移动", - "create.ponder.chute_upward.text_2": "佩戴工程师护目镜时,你可以看见物品的移动方向", - "create.ponder.chute_upward.text_3": "在溜槽“被挡住的”底端,物品只能从侧边进行提取或输入", - - "create.ponder.clockwork_bearing.header": "使用时钟轴承来移动结构", - "create.ponder.clockwork_bearing.text_1": "时钟轴承黏附其正前方的方块", - "create.ponder.clockwork_bearing.text_2": "当接受旋转力时,其附着结构会根据游戏内时间来进行旋转", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "右击可以来激活/停止结构运动", - "create.ponder.clockwork_bearing.text_6": "在时针前方可添加第二个结构", - "create.ponder.clockwork_bearing.text_7": "请确保这两个结构没有互相被例如强力胶等方式黏附", - "create.ponder.clockwork_bearing.text_8": "第二个结构将会作为分针进行旋转", - - "create.ponder.clutch.header": "使用离合器控制旋转力", - "create.ponder.clutch.text_1": "离合器能将旋转力直线传递", - "create.ponder.clutch.text_2": "当被红石充能,离合器会断开动力传递", - - "create.ponder.cog_speedup.header": "使用齿轮来换挡变速", - "create.ponder.cog_speedup.text_1": "大齿轮与小齿轮可以斜向传递动力", - "create.ponder.cog_speedup.text_2": "从大齿轮传递动力至小齿轮时,转速翻倍", - "create.ponder.cog_speedup.text_3": "从小齿轮传递动力至大齿轮时,转速减半", - - "create.ponder.cogwheel.header": "使用齿轮来传递旋转力", - "create.ponder.cogwheel.text_1": "齿轮会将动力传递至临近的齿轮", - "create.ponder.cogwheel.text_2": "以此方式连接的齿轮,旋转方向相反", - - "create.ponder.creative_motor.header": "使用创造马达发生旋转", - "create.ponder.creative_motor.text_1": "创造马达不仅能够手动调配输出旋转力,而且体积相当小巧", - "create.ponder.creative_motor.text_2": "对其背侧面板滚动滑轮,可以改变马达的输出旋转转速", - - "create.ponder.crushing_wheels.header": "使用粉碎轮处理物品", - "create.ponder.crushing_wheels.text_1": "一对粉碎轮,磨物快又准", - "create.ponder.crushing_wheels.text_2": "接入的旋转必须使得这两个轮子从上到下啮合转动", - "create.ponder.crushing_wheels.text_3": "扔入或者放入的物品都会被粉碎处理", - "create.ponder.crushing_wheels.text_4": "你也可以使用自动化方案进行物品的输入以及拾取", - - "create.ponder.deployer.header": "使用机械手", - "create.ponder.deployer.text_1": "接入旋转力,机械手便可以模仿玩家的交互行为", - "create.ponder.deployer.text_10": "对着机械手的前部右击,即可将手上的物品给予它使用", - "create.ponder.deployer.text_11": "物品也可以自动化输入到机械手内", - "create.ponder.deployer.text_12": "机械手附带一个过滤槽", - "create.ponder.deployer.text_13": "当设定了过滤后,只有当它的手中物品与过滤相匹配时,它才会工作", - "create.ponder.deployer.text_14": "只有与过滤匹配的物品才可输入...", - "create.ponder.deployer.text_15": "...只有不匹配的物品方可被抽取出来", - "create.ponder.deployer.text_2": "它只会与它正前方两格处的位置进行交互", - "create.ponder.deployer.text_3": "放在在它面前的方块不会阻拦它的工作", - "create.ponder.deployer.text_4": "机械手可以:", - "create.ponder.deployer.text_5": "放置方块", - "create.ponder.deployer.text_6": "使用物品", - "create.ponder.deployer.text_7": "激活方块", - "create.ponder.deployer.text_8": "采收方块", - "create.ponder.deployer.text_9": "以及攻击生物", - - "create.ponder.deployer_contraption.header": "在装置上使用机械手", - "create.ponder.deployer_contraption.text_1": "当机械手在移动的结构上时...", - "create.ponder.deployer_contraption.text_2": "机械手会对每一个经过的方块使用装置中任意容器内的物品", - "create.ponder.deployer_contraption.text_3": "可以通过过滤槽来指定其从存储空间中抽取的物品", - - "create.ponder.deployer_modes.header": "机械手的模式", - "create.ponder.deployer_modes.text_1": "在默认情况下,机械手模仿玩家的右击交互", - "create.ponder.deployer_modes.text_2": "使用扳手可以将模式调整为模仿玩家的左击交互", - - "create.ponder.deployer_redstone.header": "使用红石控制机械手", - "create.ponder.deployer_redstone.text_1": "当被红石充能时,机械手会停止工作", - "create.ponder.deployer_redstone.text_2": "在停止工作前,机械手会完成当前正在进行的工作周期", - "create.ponder.deployer_redstone.text_3": "因此,通入单次负红石脉冲可以精确控制机械手,使其每次只进行单个周期的工作", - - "create.ponder.depot.header": "使用置物台", - "create.ponder.depot.text_1": "置物台可以被当成一个“静止的”传送带原件使用", - "create.ponder.depot.text_2": "右击可以手动放置或取下物品", - "create.ponder.depot.text_3": "与传送带一样,它也可以将其内的物品转送到其他设备中进行加工...", - "create.ponder.depot.text_4": "...同时物品也可以被机械手存取", - - "create.ponder.empty_blaze_burner.header": "使用空的烈焰人燃烧室", - "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰人燃烧室右击烈焰人来抓取烈焰人", - "create.ponder.empty_blaze_burner.text_2": "或者,也可以通过右击烈焰人刷怪笼来填充激活烈焰人燃烧室", - "create.ponder.empty_blaze_burner.text_3": "这样,你便有了一个可供部分机器加工的热源", - "create.ponder.empty_blaze_burner.text_4": "如果是为了美观,空的烈焰人燃烧室也可以被打火石点燃", - "create.ponder.empty_blaze_burner.text_5": "但是,这样的热源不足以给机器提加工供足够的热量", - - "create.ponder.fan_direction.header": "鼓风机的气流", - "create.ponder.fan_direction.text_1": "鼓风机使用旋转力来制造气流", - "create.ponder.fan_direction.text_2": "流速以及方向由所接收旋转力的强弱以及方向而定", - - "create.ponder.fan_processing.header": "使用鼓风机加工物品", - "create.ponder.fan_processing.text_1": "当气流吹过熔岩时,气流会被加热", - "create.ponder.fan_processing.text_2": "热气流中的物品会被冶炼", - "create.ponder.fan_processing.text_3": "但在气流中的食物会被直接烧成灰", - "create.ponder.fan_processing.text_4": "而想要烹饪食物,必须要通过吹过火焰的气流来烟熏食物", - "create.ponder.fan_processing.text_5": "当气流吹过水后,便可用于洗涤物品", - "create.ponder.fan_processing.text_6": "这种加工方法可以做到不少有趣的事情", - "create.ponder.fan_processing.text_7": "鼓风机的转速对加工的速度没有影响,只影响气流的吹拂距离", - "create.ponder.fan_processing.text_8": "而那些放置在置物台或者传送带上的物品,鼓风机也是可以处理的", - - "create.ponder.fan_source.header": "使用鼓风机来产生旋转力", - "create.ponder.fan_source.text_1": "如鼓风机的扇叶向下朝着热源放置,鼓风机可以借此产生旋转力", - "create.ponder.fan_source.text_2": "当鼓风机接受红石信号后,它便会向外供给旋转力", - - "create.ponder.flywheel.header": "使用飞轮来产生旋转力", - "create.ponder.flywheel.text_1": "飞轮和熔炉引擎必须配套使用,方可产生旋转力", - "create.ponder.flywheel.text_2": "如此产生的旋转力具有非常大的应力值", - "create.ponder.flywheel.text_3": "使用高炉会使得引擎的效率翻倍", - - "create.ponder.funnel_compat.header": "漏斗的兼容性", - "create.ponder.funnel_compat.text_1": "漏斗可以与一些其他组件互动", - "create.ponder.funnel_compat.text_2": "动力锯", - "create.ponder.funnel_compat.text_3": "置物台", - "create.ponder.funnel_compat.text_4": "分液池", - - "create.ponder.funnel_direction.header": "物流方向", - "create.ponder.funnel_direction.text_1": "直接放置时,漏斗会将物品从容器中取出", - "create.ponder.funnel_direction.text_2": "潜行时放置时,漏斗会将物品置入容器中", - "create.ponder.funnel_direction.text_3": "使用扳手可以改变漏斗的存/取模式", - "create.ponder.funnel_direction.text_4": "对大多数朝向放置的漏斗都具有此特性", - "create.ponder.funnel_direction.text_5": "在传送带末端放置的漏斗会根据传送带的传动方向存/取物品", - - "create.ponder.funnel_intro.header": "使用漏斗", - "create.ponder.funnel_intro.text_1": "用漏斗来存取物品栏内的物品,可谓又快又好", - - "create.ponder.funnel_redstone.header": "红石信号控制", - "create.ponder.funnel_redstone.text_1": "红石信号会使漏斗停止工作", - - "create.ponder.funnel_transfer.header": "直接运输", - "create.ponder.funnel_transfer.text_1": "漏斗无法将物品传输到非开放式的物品栏中", - "create.ponder.funnel_transfer.text_2": "溜槽和智能溜槽更适用于这样的场景", - "create.ponder.funnel_transfer.text_3": "水平传输也是如此,也许传送带更方便快捷", - - "create.ponder.furnace_engine.header": "使用熔炉引擎生产旋转力", - "create.ponder.furnace_engine.text_1": "熔炉引擎会在与其相连熔炉工作时生产旋转力", - "create.ponder.furnace_engine.text_2": "如此产生的旋转力具有非常大的应力值", - "create.ponder.furnace_engine.text_3": "使用高炉会使得引擎的效率翻倍", - - "create.ponder.gantry_carriage.header": "使用起重机取物器", - "create.ponder.gantry_carriage.text_1": "起重机取物器可以被放置在起重机杆上,并且可以沿着起重机杆运动", - "create.ponder.gantry_carriage.text_2": "起重机可以移动其黏附的方块", - - "create.ponder.gantry_cascaded.header": "串联起重机", - "create.ponder.gantry_cascaded.text_1": "无需强力胶,取物器便可与起重机杆相连", - "create.ponder.gantry_cascaded.text_2": "即使是在移动的起重机杆上也是如此", - "create.ponder.gantry_cascaded.text_3": "因此,起重机系统可以串联起来,如此可以影响到多轴向的运动", - - "create.ponder.gantry_direction.header": "起重机移动方向", - "create.ponder.gantry_direction.text_1": "起重机杆可以有相反的方向", - "create.ponder.gantry_direction.text_2": "取物器的移动方向取决于起重机杆的方向", - "create.ponder.gantry_direction.text_3": "......以及起重机杆的旋转方向", - "create.ponder.gantry_direction.text_4": "在旋转传递中,此规则同样适用", - - "create.ponder.gantry_redstone.header": "起重机的力传递", - "create.ponder.gantry_redstone.text_1": "被红石信号激活的起重机,将不会移动其上的取物器", - "create.ponder.gantry_redstone.text_2": "作为替代,杆上的旋转力会传递到取物器的输出杆上", - - "create.ponder.gantry_shaft.header": "使用起重机杆", - "create.ponder.gantry_shaft.text_1": "起重机杆组成了起重机结构的基础。与其相接的载物器可以沿着杆进行移动。", - "create.ponder.gantry_shaft.text_2": "起重机结构可以移动与其相接的方块。", - - "create.ponder.gearbox.header": "使用十字齿轮箱传递旋转力", - "create.ponder.gearbox.text_1": "更改旋转轴,很容易使得整个旋转体系变得臃肿不堪", - "create.ponder.gearbox.text_2": "十字齿轮箱则是替代方案,它的体积更为小巧紧", - "create.ponder.gearbox.text_3": "侧边连接的传动杆,旋转方向与输入端一致", - "create.ponder.gearbox.text_4": "直线连接的传动杆,旋转方向会被反转", - - "create.ponder.gearshift.header": "使用反转齿轮箱控制旋转力", - "create.ponder.gearshift.text_1": "反转齿轮箱可以直线传输旋转", - "create.ponder.gearshift.text_2": "通入红石信号后,输出端的旋转方向会被反转", - - "create.ponder.hand_crank.header": "使用手摇曲柄产生旋转力", - "create.ponder.hand_crank.text_1": "玩家可以使用手摇曲柄来手动产生旋转力", - "create.ponder.hand_crank.text_2": "按住右键可以逆时针旋转它", - "create.ponder.hand_crank.text_3": "它产生的转速相对较高", - "create.ponder.hand_crank.text_4": "潜行长按右键可以顺时针旋转它", - - "create.ponder.large_cogwheel.header": "使用大齿轮传递旋转力", - "create.ponder.large_cogwheel.text_1": "大齿轮可以以特定的角度相互连接", - "create.ponder.large_cogwheel.text_2": "可以利用大齿轮变更旋转轴向", - - "create.ponder.linear_chassis_attachment.header": "使用机壳底盘黏合方块", - "create.ponder.linear_chassis_attachment.text_1": "它的开放面可以变为黏性面", - "create.ponder.linear_chassis_attachment.text_2": "再次点击黏性面,可以将它的相反面也变得具有黏性", - "create.ponder.linear_chassis_attachment.text_3": "空手潜行右击可以移除此面的黏性物", - "create.ponder.linear_chassis_attachment.text_4": "黏性面可以将此面前方的一长条方块黏住", - "create.ponder.linear_chassis_attachment.text_5": "使用扳手可以精确控制底盘的影响范围", - "create.ponder.linear_chassis_attachment.text_6": "按住 Ctrl 滑动滚轮,你可以一次性调节所有底盘的影响范围", - "create.ponder.linear_chassis_attachment.text_7": "若想让底盘的其他面也能粘方块,你需要用到强力胶", - "create.ponder.linear_chassis_attachment.text_8": "利用这些机制,任何形状的机制都可以像装置那样移动", - - "create.ponder.linear_chassis_group.header": "成组移动机壳底盘", - "create.ponder.linear_chassis_group.text_1": "相邻的机壳底盘可以相互连接在一起", - "create.ponder.linear_chassis_group.text_2": "其中的一个底盘若被移动,其余的底盘也会跟着移动", - "create.ponder.linear_chassis_group.text_3": "不同种类的底盘,或者是朝向不一致的底盘,将不会相连", - - "create.ponder.mechanical_arm.header": "配置动力臂", - "create.ponder.mechanical_arm.text_1": "你得在放置动力臂之前就配置好它的输入以及输出端", - "create.ponder.mechanical_arm.text_2": "手持动力臂右击某个存储空间,可以将其指定为目标", - "create.ponder.mechanical_arm.text_3": "再次右击可以将其在输入端(蓝色)以及输出端(橙色)之间切换", - "create.ponder.mechanical_arm.text_4": "左击此组件可以移除选择", - "create.ponder.mechanical_arm.text_5": "将动力臂放下来后,它会将此前选择的方块作为目标", - "create.ponder.mechanical_arm.text_6": "在有效范围内,机械臂可以有任意数量的输出以及输入端", - "create.ponder.mechanical_arm.text_7": "然而,并不是所有的存储空间可以被直接交互", - "create.ponder.mechanical_arm.text_8": "在此情况下,漏斗和置物台可以解决此问题", - - "create.ponder.mechanical_arm_filtering.header": "过滤动力臂的输出端", - "create.ponder.mechanical_arm_filtering.text_1": "输入", - "create.ponder.mechanical_arm_filtering.text_2": "输出", - "create.ponder.mechanical_arm_filtering.text_3": "有时,你会想着利用某种过滤限制动力臂的目标", - "create.ponder.mechanical_arm_filtering.text_4": "动力臂自身并不提供任何过滤选项", - "create.ponder.mechanical_arm_filtering.text_5": "然而,若将黄铜漏斗作为目标,则漏斗的过滤槽则可以应用至动力臂上", - "create.ponder.mechanical_arm_filtering.text_6": "动力臂足够智能,它不会去拿取那些它无法分配的物品", - - "create.ponder.mechanical_arm_modes.header": "动力臂的分配模式", - "create.ponder.mechanical_arm_modes.text_1": "输入", - "create.ponder.mechanical_arm_modes.text_2": "输出", - "create.ponder.mechanical_arm_modes.text_3": "若动力臂必须在数个有效的输出端之间作出选择...", - "create.ponder.mechanical_arm_modes.text_4": "...它会依照自己的设定选择特定的行为", - "create.ponder.mechanical_arm_modes.text_5": "手持扳手对其滑动滚轮,可以改变其配置", - "create.ponder.mechanical_arm_modes.text_6": "轮询调度模式很好理解,即循环输出至所有有效的输出端", - "create.ponder.mechanical_arm_modes.text_7": "如果某个输出端无法容纳更多物品,则它会被跳过", - "create.ponder.mechanical_arm_modes.text_8": "强制轮询调度不会跳过任何输出端,动力臂会一直等待,直到输出端有空位容纳物品输入", - "create.ponder.mechanical_arm_modes.text_9": "最近优先模式会使得动力臂先将物品输出至更早被选择的输出端", - - "create.ponder.mechanical_arm_redstone.header": "利用红石信号控制动力臂", - "create.ponder.mechanical_arm_redstone.text_1": "通入红石信号后,动力臂会停止工作", - "create.ponder.mechanical_arm_redstone.text_2": "在停止工作前,它会完成当前正在进行的工作周期", - "create.ponder.mechanical_arm_redstone.text_3": "因此,通入单次负红石脉冲可以精确控制动力臂,使其每次只进行单个周期的工作", - - "create.ponder.mechanical_bearing.header": "使用动力轴承移动结构", - "create.ponder.mechanical_bearing.text_1": "动力轴承会与其前方的方块黏合在一起", - "create.ponder.mechanical_bearing.text_2": "接收到旋转力后,它会将这一黏合结构组装为旋转装置", - - "create.ponder.mechanical_crafter.header": "设置动力合成器", - "create.ponder.mechanical_crafter.text_1": "动力合成器阵列可用于自动化任何合成配方的制作", - "create.ponder.mechanical_crafter.text_2": "使用扳手可以调控合成器的合成通路", - "create.ponder.mechanical_crafter.text_3": "所有的合成通路必须汇集到任意一侧的一个出口,整套合成器方可算是设置正确", - "create.ponder.mechanical_crafter.text_4": "输出产物会被放入位于出口的存储空间中", - "create.ponder.mechanical_crafter.text_5": "动力合成器的运转需要旋转力的供应", - "create.ponder.mechanical_crafter.text_6": "右击合成器正面,可以手动放入物品", - "create.ponder.mechanical_crafter.text_7": "一旦合成通路上的所有合成槽位都有了物品,合成就会开始", - "create.ponder.mechanical_crafter.text_8": "而对于那些没有完全占满所有合成器槽位的配方,你可以通入红石信号强制开启合成", - - "create.ponder.mechanical_crafter_connect.header": "为合成器连接物品栏", - "create.ponder.mechanical_crafter_connect.text_1": "合成器可以自动接受向其输入的物品", - "create.ponder.mechanical_crafter_connect.text_2": "对其背面使用扳手,可以连接合成器", - "create.ponder.mechanical_crafter_connect.text_3": "所有相连的合成器可以访问同一个位置的输入", - - "create.ponder.mechanical_crafter_covers.header": "盖住动力合成器的合成槽", - "create.ponder.mechanical_crafter_covers.text_1": "有些配方需要额外的合成器,来补足合成通路上的间隙", - "create.ponder.mechanical_crafter_covers.text_2": "使用合成槽盖板,合成器会在合成进行时的行为就如同一个空的合成槽位", - "create.ponder.mechanical_crafter_covers.text_3": "被盖住的合成器并不会阻断共享输入端的影响", - - "create.ponder.mechanical_drill.header": "使用动力钻头破坏方块", - "create.ponder.mechanical_drill.text_1": "当向其通入旋转力后,动力钻头会破坏它面前的方块", - "create.ponder.mechanical_drill.text_2": "它的挖掘速度取决于通入的旋转力转速", - - "create.ponder.mechanical_drill_contraption.header": "在装置中使用动力钻头", - "create.ponder.mechanical_drill_contraption.text_1": "在运动装置中使用动力钻头时...", - "create.ponder.mechanical_drill_contraption.text_2": "...它会破坏掉它撞上的方块", - - "create.ponder.mechanical_harvester.header": "在装置中使用动力收割机", - "create.ponder.mechanical_harvester.text_1": "在运动装置中使用动力收割机时...", - "create.ponder.mechanical_harvester.text_2": "它会采收其路径上的作物,并重置这些作物的生长进度", - - "create.ponder.mechanical_mixer.header": "使用动力搅拌器处理物品", - "create.ponder.mechanical_mixer.text_1": "使用搅拌器和工作盆,你可以自动化某些合成配方", - "create.ponder.mechanical_mixer.text_2": "有效配方包括各种无序合成配方,以及一些额外的配方", - "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰人燃烧室提供热量", - "create.ponder.mechanical_mixer.text_4": "过滤槽可用于解决两个配方相互冲突的情况", - - "create.ponder.mechanical_piston.header": "使用动力活塞移动结构", - "create.ponder.mechanical_piston.text_1": "动力活塞可以移动它前方的方块", - "create.ponder.mechanical_piston.text_2": "移动速度和方向取决于通入活塞的旋转力", - "create.ponder.mechanical_piston.text_3": "黏性动力活塞可以将相接的方块拉回来", - - "create.ponder.mechanical_piston_modes.header": "动力活塞的移动模式", - "create.ponder.mechanical_piston_modes.text_1": "一旦活塞停下,被移动的结构就会回退到方块状态", - "create.ponder.mechanical_piston_modes.text_2": "你也可以将其配置为从不方块化,或者只在起始位置方块化", - - "create.ponder.mechanical_plough.header": "在装置中使用动力犁", - "create.ponder.mechanical_plough.text_1": "在运动装置中使用动力犁时...", - "create.ponder.mechanical_plough.text_2": "...它会破坏掉那些不具有固体碰撞箱的方块", - "create.ponder.mechanical_plough.text_3": "此外,动力犁可以耕地", - "create.ponder.mechanical_plough.text_4": "...它也可以在不伤害实体的情况下推动它们", - - "create.ponder.mechanical_press.header": "使用动力辊轧机处理物品", - "create.ponder.mechanical_press.text_1": "动力辊轧机可以处理位于其下方的物品", - "create.ponder.mechanical_press.text_2": "在其下方丢入物品,或者将物品放在置物台上,都算作有效的物品输入", - "create.ponder.mechanical_press.text_3": "若物品被输入时正位于传送带上...", - "create.ponder.mechanical_press.text_4": "辊轧机会使物品停下,然后自动处理这一物品", - - "create.ponder.mechanical_press_compacting.header": "使用动力辊轧机压缩物品", - "create.ponder.mechanical_press_compacting.text_1": "对放置于工作盆内的物品进行辊轧,可以将这些物品压缩在一起", - "create.ponder.mechanical_press_compacting.text_2": "压缩意指任何同种物品填满了 2x2 或者 3x3 网格的配方,以及一些额外的配方", - "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰人燃烧室提供热量", - "create.ponder.mechanical_press_compacting.text_4": "过滤槽可用于解决两个配方相互冲突的情况", - - "create.ponder.mechanical_saw_breaker.header": "使用动力锯伐木", - "create.ponder.mechanical_saw_breaker.text_1": "向其通入旋转力后,动力锯可以直接砍伐掉它面前的树木", - "create.ponder.mechanical_saw_breaker.text_2": "想要一次性砍掉整棵树,锯子必须破坏掉树与地面连接的最后一个方块", - - "create.ponder.mechanical_saw_contraption.header": "在装置中使用动力锯", - "create.ponder.mechanical_saw_contraption.text_1": "若在运动装置中使用动力锯...", - "create.ponder.mechanical_saw_contraption.text_2": "...它会将撞到它的树木破坏掉", - - "create.ponder.mechanical_saw_processing.header": "使用动力锯处理物品", - "create.ponder.mechanical_saw_processing.text_1": "面向朝上的动力锯可以将物品处理为其变种", - "create.ponder.mechanical_saw_processing.text_2": "处理过后的物品的弹出方向始终与通入锯中的旋转转向相反", - "create.ponder.mechanical_saw_processing.text_3": "锯子可以", - "create.ponder.mechanical_saw_processing.text_4": "若输入原料有多种可能产物,你可以用动力锯上的过滤槽指定只产出某种产物", - "create.ponder.mechanical_saw_processing.text_5": "若没有使用过滤槽,动力锯会在各产物中按顺序循环输出", - - "create.ponder.millstone.header": "使用石磨处理物品", - "create.ponder.millstone.text_1": "石磨会对输入的物品进行磨制", - "create.ponder.millstone.text_2": "在其侧边使用齿轮与其相耦合,方可为其通入动力", - "create.ponder.millstone.text_3": "顶部可以丢入或者塞入物品", - "create.ponder.millstone.text_4": "一段时间过后,右击石磨可以拿出其中的产物", - "create.ponder.millstone.text_5": "产物的提取也是可以自动化的", - - "create.ponder.nixie_tube.header": "使用辉光管", - "create.ponder.nixie_tube.text_1": "通入红石信号后,辉光管会显示出红石信号的强度", - "create.ponder.nixie_tube.text_2": "使用命名牌在铁砧上为其命名,可以自定义它的显示文本", - - "create.ponder.piston_pole.header": "活塞延长杆", - "create.ponder.piston_pole.text_1": "若无相接的延长杆,动力活塞无法移动其他方块", - "create.ponder.piston_pole.text_2": "在其背面安装的延长杆长度,决定了活塞的推动范围", - - "create.ponder.portable_storage_interface.header": "装置存储交换", - "create.ponder.portable_storage_interface.text_1": "玩家无法与运动装置内的存储空间进行交互", - "create.ponder.portable_storage_interface.text_2": "这一组件可以在不停止装置的情况下与装置内的存储空间进行交互", - "create.ponder.portable_storage_interface.text_3": "放置第二个接口时,记得要与装置接口相隔 1 格或者 2 格的距离", - "create.ponder.portable_storage_interface.text_4": "当它们彼此经过时,它们会连接在一起", - "create.ponder.portable_storage_interface.text_5": "连接状态下,固定侧接口便会作为整个装置的存储空间代理", - "create.ponder.portable_storage_interface.text_6": "物品会被输入到装置内...", - "create.ponder.portable_storage_interface.text_7": "...或是从装置中提取出来", - "create.ponder.portable_storage_interface.text_8": "物品交换完毕后,装置仍然会停留在原地一小会,然后才会继续前行", - - "create.ponder.portable_storage_interface_redstone.header": "红石控制", - "create.ponder.portable_storage_interface_redstone.text_1": "通入红石信号可以阻止固定侧接口的连接行为", - - "create.ponder.powered_latch.header": "使用锁存器控制信号", - "create.ponder.powered_latch.text_1": "锁存器是一种可以用红石信号控制的拉杆", - "create.ponder.powered_latch.text_2": "后方输入的信号会将其设为开启状态", - "create.ponder.powered_latch.text_3": "侧边输入的信号会将其设为关闭状态", - "create.ponder.powered_latch.text_4": "你也可以手动切换其状态", - - "create.ponder.powered_toggle_latch.header": "使用转换锁存器控制信号", - "create.ponder.powered_toggle_latch.text_1": "转换锁存器是一种可以用红石信号控制的拉杆", - "create.ponder.powered_toggle_latch.text_2": "后方信号输入可以改变它的状态", - "create.ponder.powered_toggle_latch.text_3": "...开启或者是关闭", - "create.ponder.powered_toggle_latch.text_4": "你也可以手动切换其状态", - - "create.ponder.pulse_repeater.header": "使用脉冲中继器控制信号", - "create.ponder.pulse_repeater.text_1": "脉冲中继器会将所有通入的红石信号缩减为一次脉冲", - - "create.ponder.radial_chassis.header": "使用旋转底盘黏着方块", - "create.ponder.radial_chassis.text_1": "同一行上的旋转底盘会相互连接在一起", - "create.ponder.radial_chassis.text_2": "当其中的一个底盘被装置带动时,其余的底盘也会被带动", - "create.ponder.radial_chassis.text_3": "底盘的侧边可以变为黏性面", - "create.ponder.radial_chassis.text_4": "再次点击黏性面,可以让其所有面都变得带黏性", - "create.ponder.radial_chassis.text_5": "空手潜行右击可以移除其上的黏性物", - "create.ponder.radial_chassis.text_6": "若有物品与底盘的黏性面相接触...", - "create.ponder.radial_chassis.text_7": "...底盘便会与同层且位于半径内的所有可及方块黏着在一起", - "create.ponder.radial_chassis.text_8": "使用扳手可以精确指定底盘的影响范围", - "create.ponder.radial_chassis.text_9": "黏性面一侧的不可及方块不会被黏着", - - "create.ponder.redstone_contact.header": "接触式红石信号发生器", - "create.ponder.redstone_contact.text_1": "当两个接触式红石信号发生器面对面时,它们会发出红石信号", - "create.ponder.redstone_contact.text_2": "并且,若有一方位于运动装置上,此特性也能正常生效", - - "create.ponder.redstone_link.header": "使用无线红石信号终端", - "create.ponder.redstone_link.text_1": "无线红石信号终端可以无线传输红石信号", - "create.ponder.redstone_link.text_2": "潜行右击可以改变其接收模式", - "create.ponder.redstone_link.text_3": "手持扳手右击也可以", - "create.ponder.redstone_link.text_4": "接收端会发出由传输端发来的信号,有效距离为 128 格", - "create.ponder.redstone_link.text_5": "在它们所带的槽位中放上物品,可以为它们指定频道", - "create.ponder.redstone_link.text_6": "只有频道相互匹配的终端方可互通", - - "create.ponder.rope_pulley.header": "使用绳索滑轮移动结构", - "create.ponder.rope_pulley.text_1": "绳索滑轮在接受旋转力时可以垂直移动方块结构", - "create.ponder.rope_pulley.text_2": "移动的方向及速度取决于提供的转速", - - "create.ponder.rope_pulley_attachment.header": "绳索滑轮与装置一同运动", - "create.ponder.rope_pulley_attachment.text_1": "当绳索滑轮本身在装置中被带动时...", - "create.ponder.rope_pulley_attachment.text_2": "...它附着在滑轮上的结构会被滑轮拉着一同移动", - "create.ponder.rope_pulley_attachment.text_3": "注意,只有绳索滑轮停止工作时才能被移动", - - "create.ponder.rope_pulley_modes.header": "绳索滑轮的运动模式", - "create.ponder.rope_pulley_modes.text_1": "当绳索滑轮停止运动时,它所附属的移动结构便会方块化", - "create.ponder.rope_pulley_modes.text_2": "你可以调整整个结构永不方块化,或者仅在结构的初始位置方块化", - - "create.ponder.rotation_speed_controller.header": "使用转速控制器", - "create.ponder.rotation_speed_controller.text_1": "转速控制器将旋转力从其转轴传递至它上方的大齿轮", - "create.ponder.rotation_speed_controller.text_2": "在其侧面滚动鼠标滚轮,可以调节输出转速", - - "create.ponder.sail.header": "使用风帆来组装风车", - "create.ponder.sail.text_1": "风帆是制作风车的趁手材料", - "create.ponder.sail.text_2": "无需强力胶等黏附手段,它们便可自行互相连结", - "create.ponder.sail.text_3": "手持染料右击可对其染色", - "create.ponder.sail.text_4": "手持剪刀右击可剪除帆布,使其变回风帆框架", - - "create.ponder.sail_frame.header": "使用风帆框架来组装风车", - "create.ponder.sail_frame.text_1": "风帆框架是制作风车的趁手材料", - "create.ponder.sail_frame.text_2": "无需强力胶等黏附手段,它们便可自行互相连结", - - "create.ponder.sequenced_gearshift.header": "使用可编程齿轮箱来控制转速", - "create.ponder.sequenced_gearshift.text_1": "可编程齿轮箱能够根据玩家设置的预设时序表来传递旋转", - "create.ponder.sequenced_gearshift.text_2": "对其右击可以打开设置面板", - "create.ponder.sequenced_gearshift.text_3": "接受红石信号时,它会开始执行其内部已配置好的时序指令表", - "create.ponder.sequenced_gearshift.text_4": "当完成时序指令表后,它会进入待机状态,再次接受红石信号后,它才会再次执行时序指令表内容", - "create.ponder.sequenced_gearshift.text_5": "红石比较器可以读取当前时序指令表完成进度", - - "create.ponder.shaft.header": "使用传动杆传递旋转力", - "create.ponder.shaft.text_1": "传动杆能直线传递旋转力", - - "create.ponder.shaft_casing.header": "传动杆箱", - "create.ponder.shaft_casing.text_1": "安山或黄铜机壳,装饰传动杆的好伙伴", - - "create.ponder.smart_chute.header": "使用智能溜槽过滤物品", - "create.ponder.smart_chute.text_1": "智能溜槽是垂直溜槽的升级控制版", - "create.ponder.smart_chute.text_2": "当在其过滤槽内指定了物品后,溜槽只会传输这一指定标记的物品", - "create.ponder.smart_chute.text_3": "使用鼠标滚轮可以指定被过滤的物品数量", - "create.ponder.smart_chute.text_4": "通入红石信号,智能溜槽将会完全暂停工作", - - "create.ponder.speedometer.header": "使用速度表来监测转速", - "create.ponder.speedometer.text_1": "速度表能显示相接组件的转速", - "create.ponder.speedometer.text_2": "当佩戴工程师护目镜时,可以看到仪表所显示的更详细的数据", - "create.ponder.speedometer.text_3": "红石比较器可以根据速度表的数值输出不同强弱的红石信号", - - "create.ponder.stabilized_bearings.header": "装置固定朝向", - "create.ponder.stabilized_bearings.text_1": "当动力轴承在结构被带动时...", - "create.ponder.stabilized_bearings.text_2": "...它会确保它转盘的垂直朝向不变", - "create.ponder.stabilized_bearings.text_3": "跟默认的一样,动力轴承会黏着它前方的方块", - "create.ponder.stabilized_bearings.text_4": "这种情况下,它所黏着的子结构的垂直朝向也不会改变", - - "create.ponder.sticker.header": "使用黏着器来黏附方块", - "create.ponder.sticker.text_1": "你可以用红石信号来控制黏着器的行为", - "create.ponder.sticker.text_2": "当接受红石信号时,黏着器会黏着前方的方块", - "create.ponder.sticker.text_3": "如果黏着器以装置的形式移动,那么被黏着的方块也会一同移动", - "create.ponder.sticker.text_4": "再次接受红石信号时,它会断开与方块的黏连", - - "create.ponder.stressometer.header": "使用应力表来监测应力", - "create.ponder.stressometer.text_1": "应力表能显示当前动能网络内的应力信息", - "create.ponder.stressometer.text_2": "当佩戴工程师护目镜时,可以看到仪表所显示的更详细的数据", - "create.ponder.stressometer.text_3": "红石比较器可以根据应力表的数值输出不同强弱的红石信号", - - "create.ponder.super_glue.header": "使用强力胶来黏附方块", - "create.ponder.super_glue.text_1": "强力胶可以在任意两个方块间使用", - "create.ponder.super_glue.text_2": "当被粘合的方块被组装为装置时,他们会一起运动", - "create.ponder.super_glue.text_3": "当强力胶在副手时...", - "create.ponder.super_glue.text_4": "...新放置的方块会自动被黏附在所放置方块的面上", - "create.ponder.super_glue.text_5": "左击可以清除强力胶", - - "create.ponder.valve_handle.header": "使用阀门手轮产生旋转力", - "create.ponder.valve_handle.text_1": "玩家可以手动使用阀门手轮来产生旋转力", - "create.ponder.valve_handle.text_2": "右击可使它逆时针旋转", - "create.ponder.valve_handle.text_3": "它的转速慢而精确", - "create.ponder.valve_handle.text_4": "潜行右击可使它顺时针旋转", - "create.ponder.valve_handle.text_5": "可以通过染色来美化阀门手轮", - - "create.ponder.water_wheel.header": "使用水车产生旋转力", - "create.ponder.water_wheel.text_1": "水车利用临近的水流来进行应力发生", - "create.ponder.water_wheel.text_2": "水车接触水流的面越多,它的转速越高", - "create.ponder.water_wheel.text_3": "水车叶片应逆着水流方向摆放", - "create.ponder.water_wheel.text_4": "如果顺着水流摆放,它的效率则会降低", - - "create.ponder.weighted_ejector.header": "使用弹射置物台", - "create.ponder.weighted_ejector.text_1": "手持弹射置物台时,潜行时右击可以设置弹射目标位置", - "create.ponder.weighted_ejector.text_10": "现在,只有等被放置的物品数量等于所设定数量时,弹射置物台才会弹射物品", - "create.ponder.weighted_ejector.text_11": "当其他实体站在弹射置物台上时会被直接弹射", - "create.ponder.weighted_ejector.text_2": "现在,放置下的弹射置物台会将物品弹射至目标位置", - "create.ponder.weighted_ejector.text_3": "限制范围内的任意距离和高度均可作为有效目标地点", - "create.ponder.weighted_ejector.text_4": "但是,目标位置与置物台的连线,必须垂直于置物台的侧面", - "create.ponder.weighted_ejector.text_5": "如果没有设置有效目标位置,弹射置物台会直接将其前方一格设为默认目标位置", - "create.ponder.weighted_ejector.text_6": "提供旋转力可为其蓄力", - "create.ponder.weighted_ejector.text_7": "蓄力完毕后,放置在它上方的物品会被立刻弹射出去", - "create.ponder.weighted_ejector.text_8": "如果目标为容器,则弹射置物台会等待容器有位置后再弹射物品", - "create.ponder.weighted_ejector.text_9": "使用扳手可以调整弹射所要求的物品数量", - - "create.ponder.weighted_ejector_redstone.header": "使用红石控制弹射置物台", - "create.ponder.weighted_ejector_redstone.text_1": "当被红石充能时,弹射置物台停止工作", - "create.ponder.weighted_ejector_redstone.text_2": "此外,置物台弹射的瞬间可以被侦测器侦测", - - "create.ponder.weighted_ejector_tunnel.header": "使用弹射置物台来分流物品", - "create.ponder.weighted_ejector_tunnel.text_1": "与黄铜隧道搭配使用时,弹射置物台可以将物品以特定数量进行分流", - "create.ponder.weighted_ejector_tunnel.text_2": "首先,将黄铜隧道调整为“最近优先”模式,从而让它优先侧面输出", - "create.ponder.weighted_ejector_tunnel.text_3": "置物台上所设置的物品数量则为被分流出去的物品数量", - "create.ponder.weighted_ejector_tunnel.text_4": "当所设置的物品数量被分流出去后...", - "create.ponder.weighted_ejector_tunnel.text_5": "...剩余的物品则会继续前进", - - "create.ponder.windmill_source.header": "使用风车轴承产生旋转力", - "create.ponder.windmill_source.text_1": "在风车轴承会黏附它前方的方块", - "create.ponder.windmill_source.text_2": "如果有足够多的风帆方块黏附于其上,那么整体结构便可被视为风车", - "create.ponder.windmill_source.text_3": "右击启动后,风车轴承会开始产生旋转力", - "create.ponder.windmill_source.text_4": "产生的转速取决于风帆方块的数量", - "create.ponder.windmill_source.text_5": "使用扳手可以调整风车的旋转方向", - "create.ponder.windmill_source.text_6": "任何时候右击轴承,都可以将其停止,这样方便于你修改风车的结构", - - "create.ponder.windmill_structure.header": "风车装置", - "create.ponder.windmill_structure.text_1": "任何有至少 8 个风帆方块的结构,都被视为一个有效的风车", - - - "_": "Thank you for translating Create!" - -} diff --git a/src/main/resources/assets/create/lang/zh_tw.json b/src/main/resources/assets/create/lang/zh_tw.json deleted file mode 100644 index 45c124d4c..000000000 --- a/src/main/resources/assets/create/lang/zh_tw.json +++ /dev/null @@ -1,2125 +0,0 @@ -{ - "_": "for create 0.3.1c", - - "_": "->------------------------] Game Elements [------------------------<-", - - "block.create.acacia_window": "相思木窗戶", - "block.create.acacia_window_pane": "相思木窗戶片", - "block.create.adjustable_chain_gearshift": "可調式鏈式變速箱", - "block.create.adjustable_crate": "可調式板條箱", - "block.create.adjustable_pulse_repeater": "可調式脈衝中繼器", - "block.create.adjustable_repeater": "可調式中繼器", - "block.create.analog_lever": "可調式拉桿", - "block.create.andesite_belt_funnel": "安山岩輸送帶漏斗", - "block.create.andesite_bricks": "安山岩磚", - "block.create.andesite_bricks_slab": "安山岩半磚", - "block.create.andesite_bricks_stairs": "安山岩樓梯", - "block.create.andesite_bricks_wall": "安山岩牆", - "block.create.andesite_casing": "安山岩機殼", - "block.create.andesite_cobblestone": "碎安山岩", - "block.create.andesite_cobblestone_slab": "碎安山岩半磚", - "block.create.andesite_cobblestone_stairs": "碎安山岩樓梯", - "block.create.andesite_cobblestone_wall": "碎安山岩牆", - "block.create.andesite_encased_shaft": "安山傳動軸箱", - "block.create.andesite_funnel": "安山岩漏斗", - "block.create.andesite_pillar": "豎紋安山岩", - "block.create.andesite_tunnel": "安山岩物品隧道", - "block.create.basin": "作業盆", - "block.create.belt": "輸送帶", - "block.create.birch_window": "白樺木窗戶", - "block.create.birch_window_pane": "白樺木窗戶片", - "block.create.black_sail": "黑色風帆", - "block.create.black_seat": "黑色坐墊", - "block.create.black_valve_handle": "黑色閥門開關", - "block.create.blaze_burner": "烈焰使者動力爐", - "block.create.blue_sail": "藍色風帆", - "block.create.blue_seat": "藍色坐墊", - "block.create.blue_valve_handle": "藍色閥門開關", - "block.create.brass_belt_funnel": "黃銅輸送帶漏斗", - "block.create.brass_block": "黃銅磚", - "block.create.brass_casing": "黃銅機殼", - "block.create.brass_encased_shaft": "黃銅傳動軸箱", - "block.create.brass_funnel": "黃銅漏斗", - "block.create.brass_tunnel": "黃銅物品隧道", - "block.create.brown_sail": "棕色風帆", - "block.create.brown_seat": "棕色坐墊", - "block.create.brown_valve_handle": "棕色閥門開關", - "block.create.cart_assembler": "礦車裝修站", - "block.create.chiseled_dark_scoria": "鏨製黑火成岩", - "block.create.chiseled_dolomite": "鏨製白雲石", - "block.create.chiseled_gabbro": "鏨製輝長岩", - "block.create.chiseled_limestone": "鏨製石灰岩", - "block.create.chiseled_scoria": "鏨製火成岩", - "block.create.chiseled_weathered_limestone": "鏨製風化石灰岩", - "block.create.chocolate": "巧克力", - "block.create.chute": "滑道", - "block.create.clockwork_bearing": "時鐘軸承", - "block.create.clutch": "離合器", - "block.create.cogwheel": "齒輪", - "block.create.content_observer": "物品偵測器", - "block.create.controller_rail": "控制鐵軌", - "block.create.copper_block": "銅磚", - "block.create.copper_casing": "銅機殼", - "block.create.copper_ore": "銅礦石", - "block.create.copper_shingles": "塊狀銅磚", - "block.create.copper_tiles": "菱形銅磚", - "block.create.copper_valve_handle": "銅製閥門開關", - "block.create.creative_crate": "創造板條箱", - "block.create.creative_fluid_tank": "創造液體儲存罐", - "block.create.creative_motor": "創造馬達", - "block.create.crimson_window": "赤紅窗戶", - "block.create.crimson_window_pane": "赤紅窗戶片", - "block.create.crushing_wheel": "粉碎輪", - "block.create.crushing_wheel_controller": "粉碎輪控制器", - "block.create.cuckoo_clock": "布穀鳥鐘", - "block.create.cyan_sail": "藍綠色風帆", - "block.create.cyan_seat": "藍綠色坐墊", - "block.create.cyan_valve_handle": "藍綠色閥門開關", - "block.create.dark_oak_window": "黑橡木窗戶", - "block.create.dark_oak_window_pane": "黑橡木窗戶片", - "block.create.dark_scoria": "黑火成岩", - "block.create.dark_scoria_bricks": "黑火成岩磚", - "block.create.dark_scoria_bricks_slab": "黑火成岩半磚", - "block.create.dark_scoria_bricks_stairs": "黑火成岩樓梯", - "block.create.dark_scoria_bricks_wall": "黑火成岩牆", - "block.create.dark_scoria_cobblestone": "黑火成岩碎石", - "block.create.dark_scoria_cobblestone_slab": "黑火成岩碎石半磚", - "block.create.dark_scoria_cobblestone_stairs": "黑火成岩碎石樓梯", - "block.create.dark_scoria_cobblestone_wall": "黑火成岩碎石牆", - "block.create.dark_scoria_pillar": "豎紋黑火成岩", - "block.create.deployer": "機器手", - "block.create.depot": "置物臺", - "block.create.diorite_bricks": "閃長岩磚", - "block.create.diorite_bricks_slab": "閃長岩半磚", - "block.create.diorite_bricks_stairs": "閃長岩樓梯", - "block.create.diorite_bricks_wall": "閃長岩牆", - "block.create.diorite_cobblestone": "碎閃長岩", - "block.create.diorite_cobblestone_slab": "碎閃長岩半磚", - "block.create.diorite_cobblestone_stairs": "碎閃長岩樓梯", - "block.create.diorite_cobblestone_wall": "碎閃長岩牆", - "block.create.diorite_pillar": "豎紋閃長岩", - "block.create.dolomite": "白雲石", - "block.create.dolomite_bricks": "白雲石磚", - "block.create.dolomite_bricks_slab": "白雲石半磚", - "block.create.dolomite_bricks_stairs": "白雲石樓梯", - "block.create.dolomite_bricks_wall": "白雲石牆", - "block.create.dolomite_cobblestone": "碎白雲石", - "block.create.dolomite_cobblestone_slab": "碎白雲石半磚", - "block.create.dolomite_cobblestone_stairs": "碎白雲石樓梯", - "block.create.dolomite_cobblestone_wall": "碎白雲石牆", - "block.create.dolomite_pillar": "豎紋白雲石", - "block.create.encased_chain_drive": "鏈式傳動箱", - "block.create.encased_fan": "鼓風機", - "block.create.encased_fluid_pipe": "液體管道箱", - "block.create.fancy_andesite_bricks": "方紋安山岩磚", - "block.create.fancy_andesite_bricks_slab": "方紋安山岩半磚", - "block.create.fancy_andesite_bricks_stairs": "方紋安山岩樓梯", - "block.create.fancy_andesite_bricks_wall": "方紋安山岩牆", - "block.create.fancy_dark_scoria_bricks": "方紋黑火成岩", - "block.create.fancy_dark_scoria_bricks_slab": "方紋黑火成岩半磚", - "block.create.fancy_dark_scoria_bricks_stairs": "方紋黑火成岩樓梯", - "block.create.fancy_dark_scoria_bricks_wall": "方紋黑火成岩牆", - "block.create.fancy_diorite_bricks": "方紋閃長岩", - "block.create.fancy_diorite_bricks_slab": "方紋閃長岩半磚", - "block.create.fancy_diorite_bricks_stairs": "方紋閃長岩樓梯", - "block.create.fancy_diorite_bricks_wall": "方紋閃長岩牆", - "block.create.fancy_dolomite_bricks": "方紋白雲石", - "block.create.fancy_dolomite_bricks_slab": "方紋白雲石半磚", - "block.create.fancy_dolomite_bricks_stairs": "方紋白雲石樓梯", - "block.create.fancy_dolomite_bricks_wall": "方紋白雲石牆", - "block.create.fancy_gabbro_bricks": "方紋輝長岩", - "block.create.fancy_gabbro_bricks_slab": "方紋輝長岩半磚", - "block.create.fancy_gabbro_bricks_stairs": "方紋輝長岩樓梯", - "block.create.fancy_gabbro_bricks_wall": "方紋輝長岩牆", - "block.create.fancy_granite_bricks": "方紋花崗岩", - "block.create.fancy_granite_bricks_slab": "方紋花崗岩半磚", - "block.create.fancy_granite_bricks_stairs": "方紋花崗岩樓梯", - "block.create.fancy_granite_bricks_wall": "方紋花崗岩牆", - "block.create.fancy_limestone_bricks": "方紋石灰岩", - "block.create.fancy_limestone_bricks_slab": "方紋石灰岩半磚", - "block.create.fancy_limestone_bricks_stairs": "方紋石灰岩樓梯", - "block.create.fancy_limestone_bricks_wall": "方紋石灰岩牆", - "block.create.fancy_scoria_bricks": "方紋火成岩", - "block.create.fancy_scoria_bricks_slab": "方紋火成岩半磚", - "block.create.fancy_scoria_bricks_stairs": "方紋火成岩樓梯", - "block.create.fancy_scoria_bricks_wall": "方紋火成岩牆", - "block.create.fancy_weathered_limestone_bricks": "方紋風化石灰岩", - "block.create.fancy_weathered_limestone_bricks_slab": "方紋風化石灰岩半磚", - "block.create.fancy_weathered_limestone_bricks_stairs": "方紋風化石灰岩樓梯", - "block.create.fancy_weathered_limestone_bricks_wall": "方紋風化石灰岩牆", - "block.create.fluid_pipe": "液體管道", - "block.create.fluid_tank": "液體儲存罐", - "block.create.fluid_valve": "液體閥門", - "block.create.flywheel": "飛輪", - "block.create.framed_glass": "邊框玻璃", - "block.create.framed_glass_pane": "邊框玻璃片", - "block.create.furnace_engine": "熔煉引擎", - "block.create.gabbro": "輝長岩", - "block.create.gabbro_bricks": "輝長岩磚", - "block.create.gabbro_bricks_slab": "輝長岩半磚", - "block.create.gabbro_bricks_stairs": "輝長岩樓梯", - "block.create.gabbro_bricks_wall": "輝長岩牆", - "block.create.gabbro_cobblestone": "碎輝長岩", - "block.create.gabbro_cobblestone_slab": "碎輝長岩半磚", - "block.create.gabbro_cobblestone_stairs": "碎輝長岩樓梯", - "block.create.gabbro_cobblestone_wall": "碎輝長岩牆", - "block.create.gabbro_pillar": "豎紋輝長岩", - "block.create.gantry_carriage": "門式起重機", - "block.create.gantry_shaft": "門式起重機滑道", - "block.create.gearbox": "齒輪箱", - "block.create.gearshift": "變速箱", - "block.create.glass_fluid_pipe": "玻璃液體管道", - "block.create.granite_bricks": "花崗岩", - "block.create.granite_bricks_slab": "花崗岩半磚", - "block.create.granite_bricks_stairs": "花崗岩樓梯", - "block.create.granite_bricks_wall": "花崗岩牆", - "block.create.granite_cobblestone": "碎花崗岩", - "block.create.granite_cobblestone_slab": "碎花崗岩半磚", - "block.create.granite_cobblestone_stairs": "碎花崗岩樓梯", - "block.create.granite_cobblestone_wall": "碎花崗岩牆", - "block.create.granite_pillar": "豎紋花崗岩", - "block.create.gray_sail": "灰色風帆", - "block.create.gray_seat": "灰色坐墊", - "block.create.gray_valve_handle": "灰色閥門開關", - "block.create.green_sail": "綠色風帆", - "block.create.green_seat": "綠色坐墊", - "block.create.green_valve_handle": "綠色閥門開關", - "block.create.hand_crank": "手搖把手", - "block.create.honey": "蜂蜜", - "block.create.horizontal_framed_glass": "豎直邊框玻璃", - "block.create.horizontal_framed_glass_pane": "豎直邊框玻璃片", - "block.create.hose_pulley": "軟管滑輪", - "block.create.item_drain": "分液池", - "block.create.jungle_window": "叢林木窗戶", - "block.create.jungle_window_pane": "叢林木窗戶片", - "block.create.large_cogwheel": "大齒輪", - "block.create.layered_andesite": "疊層安山岩", - "block.create.layered_dark_scoria": "疊層黑火成岩", - "block.create.layered_diorite": "疊層閃長岩", - "block.create.layered_dolomite": "疊層白雲石", - "block.create.layered_gabbro": "疊層輝長岩", - "block.create.layered_granite": "疊層花崗岩", - "block.create.layered_limestone": "疊層石灰岩", - "block.create.layered_scoria": "疊層火成岩", - "block.create.layered_weathered_limestone": "疊層風化石灰岩", - "block.create.light_blue_sail": "淡藍色風帆", - "block.create.light_blue_seat": "淡藍色坐墊", - "block.create.light_blue_valve_handle": "淡藍色閥門開關", - "block.create.light_gray_sail": "淡灰色風帆", - "block.create.light_gray_seat": "淡灰色坐墊", - "block.create.light_gray_valve_handle": "淡灰色閥門開關", - "block.create.lime_sail": "黃綠色風帆", - "block.create.lime_seat": "黃綠色坐墊", - "block.create.lime_valve_handle": "黃綠色閥門開關", - "block.create.limesand": "石灰沙", - "block.create.limestone": "石灰岩", - "block.create.limestone_bricks": "石灰岩", - "block.create.limestone_bricks_slab": "石灰岩半磚", - "block.create.limestone_bricks_stairs": "石灰岩樓梯", - "block.create.limestone_bricks_wall": "石灰岩牆", - "block.create.limestone_cobblestone": "碎石灰岩", - "block.create.limestone_cobblestone_slab": "碎石灰岩半磚", - "block.create.limestone_cobblestone_stairs": "碎石灰岩樓梯", - "block.create.limestone_cobblestone_wall": "碎石灰岩牆", - "block.create.limestone_pillar": "豎紋石灰岩", - "block.create.linear_chassis": "機殼底盤", - "block.create.lit_blaze_burner": "烈焰使者動力爐(已啟動)", - "block.create.magenta_sail": "洋紅色風帆", - "block.create.magenta_seat": "洋紅色坐墊", - "block.create.magenta_valve_handle": "洋紅色閥門開關", - "block.create.mechanical_arm": "機械手臂", - "block.create.mechanical_bearing": "機械軸承", - "block.create.mechanical_crafter": "機械合成器", - "block.create.mechanical_drill": "機械鑽頭", - "block.create.mechanical_harvester": "機械收割機", - "block.create.mechanical_mixer": "機械攪拌器", - "block.create.mechanical_piston": "機械活塞", - "block.create.mechanical_piston_head": "機械活塞頭", - "block.create.mechanical_plough": "機械犁", - "block.create.mechanical_press": "機械液壓機", - "block.create.mechanical_pump": "機械幫浦", - "block.create.mechanical_saw": "機械切割機", - "block.create.metal_bracket": "金屬支架", - "block.create.millstone": "石磨", - "block.create.minecart_anchor": "礦車錨", - "block.create.mossy_andesite": "青苔安山岩", - "block.create.mossy_dark_scoria": "青苔黑火成岩", - "block.create.mossy_diorite": "青苔閃長岩", - "block.create.mossy_dolomite": "青苔白雲石", - "block.create.mossy_gabbro": "青苔輝長岩", - "block.create.mossy_granite": "青苔花崗岩", - "block.create.mossy_limestone": "青苔石灰岩", - "block.create.mossy_scoria": "青苔火成岩", - "block.create.mossy_weathered_limestone": "青苔風化石灰岩", - "block.create.mysterious_cuckoo_clock": "神秘布穀鳥鐘", - "block.create.natural_scoria": "天然火成岩", - "block.create.nixie_tube": "真空管顯示器", - "block.create.nozzle": "鼓風機噴嘴", - "block.create.oak_window": "橡木窗戶", - "block.create.oak_window_pane": "橡木窗戶片", - "block.create.orange_sail": "橙色風帆", - "block.create.orange_seat": "橙色坐墊", - "block.create.orange_valve_handle": "橙色閥門開關", - "block.create.ornate_iron_window": "華麗鐵窗戶", - "block.create.ornate_iron_window_pane": "華麗鐵窗戶片", - "block.create.overgrown_andesite": "長草的安山岩", - "block.create.overgrown_dark_scoria": "長草的黑火成岩", - "block.create.overgrown_diorite": "長草的閃長岩", - "block.create.overgrown_dolomite": "長草的白雲石", - "block.create.overgrown_gabbro": "長草的輝長岩", - "block.create.overgrown_granite": "長草的花崗岩", - "block.create.overgrown_limestone": "長草的石灰岩", - "block.create.overgrown_scoria": "長草的火成岩", - "block.create.overgrown_weathered_limestone": "長草的風化石灰岩", - "block.create.paved_andesite": "安山岩鋪路石", - "block.create.paved_andesite_slab": "安山岩鋪路石半磚", - "block.create.paved_andesite_stairs": "安山岩鋪路石樓梯", - "block.create.paved_andesite_wall": "安山岩鋪路石牆", - "block.create.paved_dark_scoria": "黑火成岩鋪路石", - "block.create.paved_dark_scoria_slab": "黑火成岩鋪路石半磚", - "block.create.paved_dark_scoria_stairs": "黑火成岩鋪路石樓梯", - "block.create.paved_dark_scoria_wall": "黑火成岩鋪路石牆", - "block.create.paved_diorite": "閃長岩鋪路石", - "block.create.paved_diorite_slab": "閃長岩鋪路石半磚", - "block.create.paved_diorite_stairs": "閃長岩鋪路石樓梯", - "block.create.paved_diorite_wall": "閃長岩鋪路石牆", - "block.create.paved_dolomite": "白雲石鋪路石", - "block.create.paved_dolomite_slab": "白雲石鋪路石半磚", - "block.create.paved_dolomite_stairs": "白雲石鋪路石樓梯", - "block.create.paved_dolomite_wall": "白雲石鋪路石牆", - "block.create.paved_gabbro": "輝長岩鋪路石", - "block.create.paved_gabbro_slab": "輝長岩鋪路石半磚", - "block.create.paved_gabbro_stairs": "輝長岩鋪路石樓梯", - "block.create.paved_gabbro_wall": "輝長岩鋪路石牆", - "block.create.paved_granite": "花崗岩鋪路石", - "block.create.paved_granite_slab": "花崗岩鋪路石半磚", - "block.create.paved_granite_stairs": "花崗岩鋪路石樓梯", - "block.create.paved_granite_wall": "花崗岩鋪路石牆", - "block.create.paved_limestone": "石灰岩鋪路石", - "block.create.paved_limestone_slab": "石灰岩鋪路石半磚", - "block.create.paved_limestone_stairs": "石灰岩鋪路石樓梯", - "block.create.paved_limestone_wall": "石灰岩鋪路石牆", - "block.create.paved_scoria": "火成岩鋪路石", - "block.create.paved_scoria_slab": "火成岩鋪路石半磚", - "block.create.paved_scoria_stairs": "火成岩鋪路石樓梯", - "block.create.paved_scoria_wall": "火成岩鋪路石牆", - "block.create.paved_weathered_limestone": "風化石灰岩鋪路石", - "block.create.paved_weathered_limestone_slab": "風化石灰岩鋪路石半磚", - "block.create.paved_weathered_limestone_stairs": "風化石灰岩鋪路石樓梯", - "block.create.paved_weathered_limestone_wall": "風化石灰岩鋪路石牆", - "block.create.pink_sail": "粉紅色風帆", - "block.create.pink_seat": "粉紅色坐墊", - "block.create.pink_valve_handle": "粉紅色閥門開關", - "block.create.piston_extension_pole": "活塞桿", - "block.create.polished_dark_scoria": "磨製黑火成岩", - "block.create.polished_dark_scoria_slab": "磨製黑火成岩半磚", - "block.create.polished_dark_scoria_stairs": "磨製黑火成岩樓梯", - "block.create.polished_dark_scoria_wall": "磨製黑火成岩牆", - "block.create.polished_dolomite": "磨製白雲石", - "block.create.polished_dolomite_slab": "磨製白雲石半磚", - "block.create.polished_dolomite_stairs": "磨製白雲石樓梯", - "block.create.polished_dolomite_wall": "磨製白雲石牆", - "block.create.polished_gabbro": "磨製輝長岩", - "block.create.polished_gabbro_slab": "磨製輝長岩半磚", - "block.create.polished_gabbro_stairs": "磨製輝長岩樓梯", - "block.create.polished_gabbro_wall": "磨製輝長岩牆", - "block.create.polished_limestone": "磨製石灰岩", - "block.create.polished_limestone_slab": "磨製石灰岩半磚", - "block.create.polished_limestone_stairs": "磨製石灰岩樓梯", - "block.create.polished_limestone_wall": "磨製石灰岩牆", - "block.create.polished_scoria": "磨製火成岩", - "block.create.polished_scoria_slab": "磨製火成岩半磚", - "block.create.polished_scoria_stairs": "磨製火成岩樓梯", - "block.create.polished_scoria_wall": "磨製火成岩牆", - "block.create.polished_weathered_limestone": "磨製風化石灰岩", - "block.create.polished_weathered_limestone_slab": "磨製風化石灰岩半磚", - "block.create.polished_weathered_limestone_stairs": "磨製風化石灰岩樓梯", - "block.create.polished_weathered_limestone_wall": "磨製風化石灰岩牆", - "block.create.portable_fluid_interface": "移動式液體口", - "block.create.portable_storage_interface": "移動式物品口", - "block.create.powered_latch": "閂鎖器", - "block.create.powered_toggle_latch": "T型正反器", - "block.create.pulley_magnet": "滑輪磁鐵", - "block.create.pulse_repeater": "脈衝中繼器", - "block.create.purple_sail": "紫色風帆", - "block.create.purple_seat": "紫色坐墊", - "block.create.purple_valve_handle": "紫色閥門開關", - "block.create.radial_chassis": "旋轉底盤", - "block.create.red_sail": "紅色風帆", - "block.create.red_seat": "紅色坐墊", - "block.create.red_valve_handle": "紅色閥門開關", - "block.create.redstone_contact": "接觸式紅石訊號產生器", - "block.create.redstone_link": "無限紅石訊號機", - "block.create.refined_radiance_casing": "光輝機殼", - "block.create.reinforced_rail": "強化鐵軌", - "block.create.rope": "繩索", - "block.create.rope_pulley": "滑輪繩索", - "block.create.rotation_speed_controller": "轉速控制器", - "block.create.sail_frame": "風帆框架", - "block.create.schematic_table": "藍圖桌", - "block.create.schematicannon": "藍圖加農炮", - "block.create.scoria": "火成岩", - "block.create.scoria_bricks": "火成岩磚", - "block.create.scoria_bricks_slab": "火成岩半磚", - "block.create.scoria_bricks_stairs": "火成岩樓梯", - "block.create.scoria_bricks_wall": "火成岩牆", - "block.create.scoria_cobblestone": "碎火成岩", - "block.create.scoria_cobblestone_slab": "碎火成岩半磚", - "block.create.scoria_cobblestone_stairs": "碎火成岩樓梯", - "block.create.scoria_cobblestone_wall": "碎火成岩牆", - "block.create.scoria_pillar": "豎紋火成岩", - "block.create.secondary_linear_chassis": "機殼底盤2號", - "block.create.sequenced_gearshift": "可程式化齒輪箱", - "block.create.shadow_steel_casing": "暗影機殼", - "block.create.shaft": "傳動軸", - "block.create.smart_chute": "智慧滑道", - "block.create.smart_fluid_pipe": "智慧液體管道", - "block.create.speedometer": "速度計", - "block.create.spout": "液體灌注器", - "block.create.spruce_window": "雲杉木窗戶", - "block.create.spruce_window_pane": "雲杉木窗戶片", - "block.create.sticker": "方塊黏著器", - "block.create.sticky_mechanical_piston": "黏性機械活塞", - "block.create.stockpile_switch": "存量偵測器", - "block.create.stressometer": "動能錶", - "block.create.tiled_glass": "十字玻璃窗", - "block.create.tiled_glass_pane": "十字玻璃窗戶片", - "block.create.turntable": "轉盤", - "block.create.vertical_framed_glass": "豎直邊框玻璃", - "block.create.vertical_framed_glass_pane": "豎直邊框玻璃片", - "block.create.warped_window": "扭曲蕈木窗戶", - "block.create.warped_window_pane": "扭曲蕈木窗戶片", - "block.create.water_wheel": "水車", - "block.create.weathered_limestone": "風化石灰岩", - "block.create.weathered_limestone_bricks": "風化石灰岩磚", - "block.create.weathered_limestone_bricks_slab": "風化石灰岩半磚", - "block.create.weathered_limestone_bricks_stairs": "風化石灰岩樓梯", - "block.create.weathered_limestone_bricks_wall": "風化石灰岩牆", - "block.create.weathered_limestone_cobblestone": "碎風化石灰岩", - "block.create.weathered_limestone_cobblestone_slab": "碎風化石灰岩半磚", - "block.create.weathered_limestone_cobblestone_stairs": "碎風化石灰岩樓梯", - "block.create.weathered_limestone_cobblestone_wall": "碎風化石灰岩牆", - "block.create.weathered_limestone_pillar": "豎紋風化石灰岩", - "block.create.weighted_ejector": "物品彈射器", - "block.create.white_sail": "白色風帆", - "block.create.white_seat": "白色坐墊", - "block.create.white_valve_handle": "白色閥門開關", - "block.create.windmill_bearing": "風車軸承", - "block.create.wooden_bracket": "木製支架", - "block.create.yellow_sail": "黃色風帆", - "block.create.yellow_seat": "黃色坐墊", - "block.create.yellow_valve_handle": "黃色閥門開關", - "block.create.zinc_block": "鋅磚", - "block.create.zinc_ore": "鋅礦石", - - "entity.create.contraption": "結構", - "entity.create.gantry_contraption": "門式結構", - "entity.create.seat": "坐墊", - "entity.create.stationary_contraption": "固定結構", - "entity.create.super_glue": "強力膠", - - "fluid.create.milk": "牛奶", - "fluid.create.potion": "藥水", - "fluid.create.tea": "茶", - - "item.create.andesite_alloy": "安山合金", - "item.create.attribute_filter": "屬性過濾器", - "item.create.bar_of_chocolate": "巧克力棒", - "item.create.belt_connector": "輸送帶", - "item.create.blaze_cake": "熔岩蛋糕", - "item.create.blaze_cake_base": "熔岩蛋糕胚", - "item.create.brass_hand": "黃銅手部零件", - "item.create.brass_ingot": "黃銅錠", - "item.create.brass_nugget": "黃銅粒", - "item.create.brass_sheet": "黃銅板", - "item.create.builders_tea": "工人茶", - "item.create.chest_minecart_contraption": "裝修過的機械礦車", - "item.create.chocolate_bucket": "巧克力桶", - "item.create.chocolate_glazed_berries": "巧克力甜莓", - "item.create.chromatic_compound": "異彩化合物", - "item.create.cinder_flour": "地獄麵粉", - "item.create.copper_ingot": "銅錠", - "item.create.copper_nugget": "銅粒", - "item.create.copper_sheet": "銅板", - "item.create.crafter_slot_cover": "合成器蓋板", - "item.create.crushed_aluminum_ore": "碎狀鋁礦石", - "item.create.crushed_brass": "碎狀黃銅", - "item.create.crushed_copper_ore": "碎狀銅礦石", - "item.create.crushed_gold_ore": "碎狀金礦石", - "item.create.crushed_iron_ore": "碎狀鐵礦石", - "item.create.crushed_lead_ore": "碎狀鉛礦石", - "item.create.crushed_nickel_ore": "碎狀鎳礦石", - "item.create.crushed_osmium_ore": "碎狀鋨礦石", - "item.create.crushed_platinum_ore": "碎狀白金礦石", - "item.create.crushed_quicksilver_ore": "碎狀水銀礦石", - "item.create.crushed_silver_ore": "碎狀銀礦石", - "item.create.crushed_tin_ore": "碎狀錫礦石", - "item.create.crushed_uranium_ore": "碎狀鈾礦石", - "item.create.crushed_zinc_ore": "碎狀鋅礦石", - "item.create.deforester": "連根拔樹斧", - "item.create.dough": "麵團", - "item.create.electron_tube": "真空管", - "item.create.empty_blaze_burner": "空的烈焰使者動力爐", - "item.create.empty_schematic": "空白藍圖", - "item.create.extendo_grip": "伸縮機械手", - "item.create.filter": "過濾器", - "item.create.furnace_minecart_contraption": "裝配過的機械礦車", - "item.create.goggles": "MR護目鏡", - "item.create.golden_sheet": "金板", - "item.create.handheld_blockzapper": "方塊放置器", - "item.create.handheld_worldshaper": "地形雕塑器", - "item.create.honey_bucket": "蜂蜜桶", - "item.create.honeyed_apple": "蜂蜜蘋果", - "item.create.integrated_circuit": "IC板", - "item.create.iron_sheet": "鐵板", - "item.create.lapis_sheet": "青金石板", - "item.create.minecart_contraption": "裝修過的礦車", - "item.create.minecart_coupling": "礦車連結器", - "item.create.polished_rose_quartz": "磨製玫瑰石英", - "item.create.powdered_obsidian": "黑曜石粉末", - "item.create.propeller": "扇葉", - "item.create.red_sand_paper": "紅砂紙", - "item.create.refined_radiance": "光輝石", - "item.create.rose_quartz": "玫瑰石英", - "item.create.sand_paper": "砂紙", - "item.create.schematic": "藍圖", - "item.create.schematic_and_quill": "藍圖與筆", - "item.create.shadow_steel": "暗影鋼", - "item.create.super_glue": "強力膠", - "item.create.sweet_roll": "甜捲捲", - "item.create.tree_fertilizer": "樹木肥料", - "item.create.vertical_gearbox": "豎直齒輪箱", - "item.create.wand_of_symmetry": "對稱杖", - "item.create.wheat_flour": "小麥粉", - "item.create.whisk": "攪拌器", - "item.create.wrench": "扳手", - "item.create.zinc_ingot": "鋅錠", - "item.create.zinc_nugget": "鋅粒", - - - "_": "->------------------------] Advancements [------------------------<-", - - "advancement.create.root": "感謝你安裝機械動力模組,強烈建議您安裝JEI配合本模組遊玩", - "advancement.create.root.desc": "該來製作一些超棒的機械結構了!", - "advancement.create.andesite_alloy": "原始人類的合金替代品", - "advancement.create.andesite_alloy.desc": "機械動力有著許多的材料和合金,但受限於技術,原始的人類們暫時只能製作出安山合金", - "advancement.create.its_alive": "鮮活的機械生命", - "advancement.create.its_alive.desc": "首次使齒輪結構的旋轉。", - "advancement.create.shifting_gears": "換檔,加速,起飛!", - "advancement.create.shifting_gears.desc": "將大齒輪連接到小齒輪上,機械結構的轉速將會翻倍", - "advancement.create.overstressed": "過載", - "advancement.create.overstressed.desc": "首次使動能網路過載。", - "advancement.create.belt": "流水線作業", - "advancement.create.belt.desc": "用輸送帶連接兩個傳動軸", - "advancement.create.tunnel": "尋找掩護!", - "advancement.create.tunnel.desc": "在輸送帶上放上物品隧道。", - "advancement.create.splitter_tunnel": "分而治之", - "advancement.create.splitter_tunnel.desc": "用黃銅物品隧道設計一個分流器。", - "advancement.create.chute": "轟然倒塌", - "advancement.create.chute.desc": "放置一個滑道(垂直版本的輸送帶)。", - "advancement.create.upward_chute": "空中攔截", - "advancement.create.upward_chute.desc": "目睹拋出的物品飛入裝有風扇的滑道。", - "advancement.create.belt_funnel": "漏斗的垂簾", - "advancement.create.belt_funnel.desc": "將側向漏斗放在輸送帶或置物臺的上方。", - "advancement.create.belt_funnel_kiss": "比翼雙飛", - "advancement.create.belt_funnel_kiss.desc": "使兩個安裝在輸送帶上的漏斗相連。", - "advancement.create.fan": "機械氣槍", - "advancement.create.fan.desc": "飄浮在鼓風機吹出的氣流上", - "advancement.create.fan_lava": "空間加熱器", - "advancement.create.fan_lava.desc": "感受熔煉物品的氣流。", - "advancement.create.fan_water": "奇怪的洗滌", - "advancement.create.fan_water.desc": "被洗滌的氣流所吸引。", - "advancement.create.fan_smoke": "機械波紋管", - "advancement.create.fan_smoke.desc": "感受煙燻氣流。", - "advancement.create.wrench": "細部調整", - "advancement.create.wrench.desc": "做出一個方便調整方塊的板手", - "advancement.create.goggles": "動能,一目了然", - "advancement.create.goggles.desc": "做出一個能看到機械動能訊息的MR護目鏡", - "advancement.create.speedometer": "精密的速度控制", - "advancement.create.speedometer.desc": "放置一個速度計,並且戴上MR護目鏡來讀取數據", - "advancement.create.stressometer": "精密的動能控制", - "advancement.create.stressometer.desc": "放置一個動能錶,並且戴上MR護目鏡來讀取數據", - "advancement.create.aesthetics": "繁榮與美學!", - "advancement.create.aesthetics.desc": "將支架放在傳動軸,管道和齒輪上。", - "advancement.create.reinforced": "超級加固!", - "advancement.create.reinforced.desc": "在傳動軸,管道和輸送帶上使用機殼加固。", - "advancement.create.water_wheel": "治水", - "advancement.create.water_wheel.desc": "放置一個水車並讓它開始旋轉", - "advancement.create.chocolate_wheel": "美味的動能源", - "advancement.create.chocolate_wheel.desc": "用融化的巧克力驅動水車。", - "advancement.create.lava_wheel": "風火輪", - "advancement.create.lava_wheel.desc": "它不應該有用的..。", - "advancement.create.cuckoo": "是時候了?", - "advancement.create.cuckoo.desc": "目睹布穀鳥鐘報就寢時間。", - "advancement.create.millstone": "攜帶式粉碎機", - "advancement.create.millstone.desc": "放置一個石磨並且為其供能", - "advancement.create.windmill": "微風拂過", - "advancement.create.windmill.desc": "組裝風車。", - "advancement.create.maxed_windmill": "強風襲來", - "advancement.create.maxed_windmill.desc": "組裝最大動能的風車。", - "advancement.create.andesite_casing": "安山時代", - "advancement.create.andesite_casing.desc": "使用安山合金和木頭來合成一個安山機殼", - "advancement.create.mechanical_drill": "堅若磐石", - "advancement.create.mechanical_drill.desc": "放置一個機械鑽頭並且為其供能", - "advancement.create.press": "'噹!'", - "advancement.create.press.desc": "使用液壓機來壓製一些板子", - "advancement.create.polished_rose_quartz": "粉紅鑽石", - "advancement.create.polished_rose_quartz.desc": "用砂紙將玫瑰石英磨至透明", - "advancement.create.electron_tube": "嗶~~嗶~~", - "advancement.create.electron_tube.desc": "製作一個可用來合成高級機器的真空管", - "advancement.create.mechanical_saw": "一刀兩斷", - "advancement.create.mechanical_saw.desc": "放置一個切割機並且為其供能", - "advancement.create.basin": "快到碗裡來", - "advancement.create.basin.desc": "放置一個作業盆,並且往裡面放些東西", - "advancement.create.mixer": "充分攪拌", - "advancement.create.mixer.desc": "將攪拌機放在作業盆上方,並且使其攪拌盆內的物品", - "advancement.create.blaze_burner": "活生生的壁爐", - "advancement.create.blaze_burner.desc": "獲得一個烈焰使者動力爐。", - "advancement.create.compact": "快樂壓縮", - "advancement.create.compact.desc": "使用液壓機在作業盆中壓製一些物品", - "advancement.create.brass": "真正的合金", - "advancement.create.brass.desc": "使用粉碎鋅礦石和粉碎銅礦石來製作粉碎黃銅", - "advancement.create.brass_casing": "黃銅時代", - "advancement.create.brass_casing.desc": "用黃銅和木頭製作一個黃銅機殼", - "advancement.create.copper_casing": "銅時代", - "advancement.create.copper_casing.desc": "使用銅和木頭製作一個銅製機殼", - "advancement.create.spout": "裝填!", - "advancement.create.spout.desc": "觀察注液器灌滿物品。", - "advancement.create.spout_potion": "國際級啤酒大廠", - "advancement.create.spout_potion.desc": "觀察注液器注入藥水到玻璃瓶。", - "advancement.create.chocolate": "夢裡的世界", - "advancement.create.chocolate.desc": "獲取一桶熔融巧克力。", - "advancement.create.item_drain": "滾筒洗衣機", - "advancement.create.item_drain.desc": "觀察液體物品被分液池抽空。", - "advancement.create.chained_item_drain": "讓我們一起搖滾!", - "advancement.create.chained_item_drain.desc": "看著物品穿過多個分液池。", - "advancement.create.glass_pipe": "偷窺液體", - "advancement.create.glass_pipe.desc": "透過窗戶觀察液體在管道中流動。使用板手可打開直線液體管道的窗戶。", - "advancement.create.pipe_collision": "永不交會的溪流!", - "advancement.create.pipe_collision.desc": "觀察兩種液體在您的管道中會合", - "advancement.create.pipe_spill": "漏水啦!", - "advancement.create.pipe_spill.desc": "觀察管道的末端將液體排放到到外面。", - "advancement.create.hose_pulley": "工業排放", - "advancement.create.hose_pulley.desc": "放下一個軟管滑輪,觀察它排乾或充滿液體。", - "advancement.create.infinite_water": "抽取海洋", - "advancement.create.infinite_water.desc": "從足以被認為是無限的水源中抽水。", - "advancement.create.infinite_lava": "吸取行星的核心", - "advancement.create.infinite_lava.desc": "從廣闊的岩漿湖中抽出岩漿。", - "advancement.create.infinite_chocolate": "淹沒在幻想中", - "advancement.create.infinite_chocolate.desc": "從廣闊的巧克力海中抽出巧克力。", - "advancement.create.crafter": "自動化流水作業", - "advancement.create.crafter.desc": "放置一些機械合成臺並且為其供能", - "advancement.create.clockwork_bearing": "時差", - "advancement.create.clockwork_bearing.desc": "組裝安裝在發條軸承上的結構。", - "advancement.create.nixie_tube": "風格的跡象", - "advancement.create.nixie_tube.desc": "獲得真空管顯示器並放置。", - "advancement.create.deployer": "指爽沒?", - "advancement.create.deployer.desc": "放置並且啟動一個機械手。這可是你右手完美的複製品", - "advancement.create.speed_controller": "攻城屍討厭他!", - "advancement.create.speed_controller.desc": "放置一個轉速控制器,這是換檔的終極裝置。", - "advancement.create.flywheel": "工廠之心", - "advancement.create.flywheel.desc": "將引擎成功連接到飛輪。", - "advancement.create.overstress_flywheel": "壓力過大", - "advancement.create.overstress_flywheel.desc": "超載熔爐引擎。", - "advancement.create.integrated_circuit": "複雜的運算", - "advancement.create.integrated_circuit.desc": "合成IC板。", - "advancement.create.mechanical_arm": "忙碌的手!", - "advancement.create.mechanical_arm.desc": "製作機械手臂,選擇輸入和輸出,放置並給它動能; 然後看著它完成所有你交代的工作。", - "advancement.create.musical_arm": "沒人能在我的BGM裡打敗我!", - "advancement.create.musical_arm.desc": "使用機械手臂播放唱片。", - "advancement.create.arm_many_targets": "你是要累死我?", - "advancement.create.arm_many_targets.desc": "配置一隻有十個或更多輸出位置的機械手臂。", - "advancement.create.arm_blaze_burner": "燃燒吧!烈焰使者!", - "advancement.create.arm_blaze_burner.desc": "指揮機械手臂給烈焰使者動力爐投食。", - "advancement.create.fist_bump": "朋友,來擊拳", - "advancement.create.fist_bump.desc": "使兩個機械手互相碰拳", - "advancement.create.crushing_wheel": "一對大傢伙", - "advancement.create.crushing_wheel.desc": "製作一對能更快粉碎物品的粉碎輪", - "advancement.create.blaze_cake": "糖份超標", - "advancement.create.blaze_cake.desc": "幫烈焰使者動力爐烤一份特別的蛋糕。", - "advancement.create.chromatic_compound": "兩極材料", - "advancement.create.chromatic_compound.desc": "製作一個異彩化合物", - "advancement.create.shadow_steel": "自虛空的歸來的寶石", - "advancement.create.shadow_steel.desc": "製作暗影鋼", - "advancement.create.refined_radiance": "閃耀著純白的聖光", - "advancement.create.refined_radiance.desc": "製作光輝石", - "advancement.create.chromatic_age": "繽紛時代", - "advancement.create.chromatic_age.desc": "創造出光與影的機殼。", - "advancement.create.zapper": "專業的建築師", - "advancement.create.zapper.desc": "製作一個非常方便的方塊放置器", - "advancement.create.upgraded_zapper": "來自異世界的超頻", - "advancement.create.upgraded_zapper.desc": "製作一個完全升級的方塊放置器", - "advancement.create.wand_of_symmetry": "簡單的鏡面幾何學", - "advancement.create.wand_of_symmetry.desc": "製作一個對稱杖", - "advancement.create.deforester": "超時空砍伐", - "advancement.create.deforester.desc": "製作一個連根拔樹斧,然後跟你後院的樹林道別吧", - "advancement.create.extendo_grip": "piu piu piu!", - "advancement.create.extendo_grip.desc": "拿到一個伸縮機械手", - "advancement.create.dual_extendo_grip": "piu——piu——piu——", - "advancement.create.dual_extendo_grip.desc": "雙持伸縮機械手進一步加長觸碰距離", - "advancement.create.eob": "Beta版結束", - "advancement.create.eob.desc": "期待日後的更新。", - - - "_": "->------------------------] UI & Messages [------------------------<-", - - "itemGroup.create.base": "動力機械", - "itemGroup.create.palettes": "動力機械建築與裝飾方塊", - - "death.attack.create.crush": "%1$s被壓扁了", - "death.attack.create.fan_fire": "%1$s想接受熱風的洗禮", - "death.attack.create.fan_lava": "%1$s想接受熱風的洗禮但走火入魔", - "death.attack.create.mechanical_drill": "%1$s被鑽頭鑽爆腦袋", - "death.attack.create.mechanical_saw": "%1$s被鋸切成了兩半", - "death.attack.create.cuckoo_clock_explosion": "%1$s 被布穀鳥鐘炸得粉身碎骨", - - "create.block.deployer.damage_source_name": "機械手", - "create.block.cart_assembler.invalid": "將您的礦車裝修站放在鐵軌上", - - "create.recipe.crushing": "粉碎", - "create.recipe.milling": "研磨", - "create.recipe.fan_washing": "批次洗滌", - "create.recipe.fan_washing.fan": "在水後放置鼓風機", - "create.recipe.fan_smoking": "批次煙燻", - "create.recipe.fan_smoking.fan": "在火焰後放置鼓風機", - "create.recipe.fan_blasting": "批次融煉", - "create.recipe.fan_blasting.fan": "在熔岩後放置鼓風機", - "create.recipe.pressing": "金屬壓片", - "create.recipe.mixing": "混合攪拌", - "create.recipe.automatic_shapeless": "自動攪拌", - "create.recipe.automatic_brewing": "自動釀造", - "create.recipe.packing": "壓塊塑形", - "create.recipe.automatic_packing": "自動打包", - "create.recipe.sawing": "板材切割", - "create.recipe.mechanical_crafting": "自動合成", - "create.recipe.automatic_shaped": "自動合成", - "create.recipe.block_cutting": "方塊切割", - "create.recipe.wood_cutting": "木材切割", - "create.recipe.blockzapper_upgrade": "方塊放置器升級", - "create.recipe.sandpaper_polishing": "砂紙打磨", - "create.recipe.mystery_conversion": "神秘轉化", - "create.recipe.spout_filling": "注液", - "create.recipe.draining": "分液", - "create.recipe.processing.chance": "%1$s%%概率", - "create.recipe.heat_requirement.none": "不需要加熱", - "create.recipe.heat_requirement.heated": "普通加熱", - "create.recipe.heat_requirement.superheated": "超級加熱", - - "create.generic.range": "範圍", - "create.generic.radius": "半徑", - "create.generic.width": "寬", - "create.generic.height": "高", - "create.generic.length": "長", - "create.generic.speed": "速度", - "create.generic.delay": "延時", - "create.generic.unit.ticks": "Ticks", - "create.generic.unit.seconds": "秒", - "create.generic.unit.minutes": "分", - "create.generic.unit.rpm": "RPM", - "create.generic.unit.stress": "su", - "create.generic.unit.degrees": "度", - "create.generic.unit.millibuckets": "%1$smB", - "create.generic.clockwise": "順時鐘方向", - "create.generic.counter_clockwise": "逆時鐘方向", - - "create.action.scroll": "滾輪", - "create.action.confirm": "確認", - "create.action.abort": "退出", - "create.action.saveToFile": "離開", - "create.action.discard": "放棄", - - "create.keyinfo.toolmenu": "選單", - "create.keyinfo.scrollup": "(遊戲中)向上滑鼠滾輪", - "create.keyinfo.scrolldown": "(遊戲中)向下滑鼠滾輪", - - "create.gui.scrollInput.defaultTitle": "選擇一個選項:", - "create.gui.scrollInput.scrollToModify": "滾動修改", - "create.gui.scrollInput.scrollToAdjustAmount": "滾動修改數量", - "create.gui.scrollInput.scrollToSelect": "滾動選擇", - "create.gui.scrollInput.shiftScrollsFaster": "按住Shift滾動更快", - "create.gui.toolmenu.focusKey": "按住 [%1$s] 滑鼠滾輪選擇", - "create.gui.toolmenu.cycle": "[SCROLL] 循環", - "create.gui.symmetryWand.mirrorType": "鏡子類型", - "create.gui.symmetryWand.orientation": "方向", - - "create.symmetry.mirror.plane": "鏡像", - "create.symmetry.mirror.doublePlane": "矩形", - "create.symmetry.mirror.triplePlane": "八角", - - "create.orientation.orthogonal": "垂直", - "create.orientation.diagonal": "對角線", - "create.orientation.horizontal": "水平", - "create.orientation.alongZ": "以z軸對齊", - "create.orientation.alongX": "以x軸對齊", - - "create.gui.blockzapper.title": "方塊放置機", - "create.gui.blockzapper.replaceMode": "替換模式", - "create.gui.blockzapper.searchDiagonal": "對角線延伸", - "create.gui.blockzapper.searchFuzzy": "忽視種類分界", - "create.gui.blockzapper.range": "延伸範圍", - "create.gui.blockzapper.needsUpgradedAmplifier": "需要升級範圍擴大器", - "create.gui.blockzapper.patternSection": "模式", - "create.gui.blockzapper.pattern.solid": "實心", - "create.gui.blockzapper.pattern.checkered": "棋盤", - "create.gui.blockzapper.pattern.inversecheckered": "反轉棋盤", - "create.gui.blockzapper.pattern.chance25": "25% ", - "create.gui.blockzapper.pattern.chance50": "50% ", - "create.gui.blockzapper.pattern.chance75": "75% ", - "create.gui.terrainzapper.title": "地形雕塑器", - "create.gui.terrainzapper.placement": "放置模式", - "create.gui.terrainzapper.placement.merged": "結合", - "create.gui.terrainzapper.placement.attached": "依附", - "create.gui.terrainzapper.placement.inserted": "插入", - "create.gui.terrainzapper.brush": "雕塑類型", - "create.gui.terrainzapper.brush.cuboid": "矩形體", - "create.gui.terrainzapper.brush.sphere": "球體", - "create.gui.terrainzapper.brush.cylinder": "圓柱體", - "create.gui.terrainzapper.tool": "填充類型", - "create.gui.terrainzapper.tool.fill": "填充", - "create.gui.terrainzapper.tool.place": "覆寫", - "create.gui.terrainzapper.tool.replace": "替換", - "create.gui.terrainzapper.tool.clear": "清除", - "create.gui.terrainzapper.tool.overlay": "覆蓋", - "create.gui.terrainzapper.tool.flatten": "平整", - - "create.terrainzapper.shiftRightClickToSet": "Shift+滑鼠右鍵 以設定雕塑類型", - - "create.blockzapper.usingBlock": "使用:%1$s", - "create.blockzapper.componentUpgrades": "零件升級:", - "create.blockzapper.component.body": "放置器機體", - "create.blockzapper.component.amplifier": "範圍擴大器", - "create.blockzapper.component.accelerator": "射擊加速器", - "create.blockzapper.component.retriever": "物品撿回器", - "create.blockzapper.component.scope": "距離觀察鏡", - "create.blockzapper.componentTier.none": "無", - "create.blockzapper.componentTier.brass": "黃銅", - "create.blockzapper.componentTier.chromatic": "異彩化合物", - "create.blockzapper.leftClickToSet": "左鍵點擊方塊以設定方塊種類", - "create.blockzapper.empty": "方塊不足!", - - "create.minecart_coupling.two_couplings_max": "礦車無法被連接兩個以上的礦車連結器", - "create.minecart_coupling.unloaded": "有一部份礦車存在於未讀取區塊中", - "create.minecart_coupling.no_loops": "礦車連結器不能連成一個環", - "create.minecart_coupling.removed": "從礦車上移除所有礦車連結器", - "create.minecart_coupling.too_far": "礦車距離你太遠了", - - "create.contraptions.movement_mode": "運動模式", - "create.contraptions.movement_mode.move_place": "停止時實體化方塊", - "create.contraptions.movement_mode.move_place_returned": "只在初始位置實體化方塊", - "create.contraptions.movement_mode.move_never_place": "只有在機械方塊摧毀後才實體化方塊", - "create.contraptions.movement_mode.rotate_place": "停止時實體化方塊", - "create.contraptions.movement_mode.rotate_place_returned": "只在接近初始角度實體化方塊", - "create.contraptions.movement_mode.rotate_never_place": "只有在旋轉軸摧毀後才實體化方塊", - "create.contraptions.cart_movement_mode": "礦車運動模式", - "create.contraptions.cart_movement_mode.rotate": "結構與礦車保持相同方向", - "create.contraptions.cart_movement_mode.rotate_paused": "礦車轉向時機器停止工作", - "create.contraptions.cart_movement_mode.rotation_locked": "結構方向保持不變", - "create.contraptions.windmill.rotation_direction": "旋轉方向", - "create.contraptions.clockwork.clock_hands": "鐘錶指針", - "create.contraptions.clockwork.hour_first": "時針優先", - "create.contraptions.clockwork.minute_first": "分針優先", - "create.contraptions.clockwork.hour_first_24": "24小時制優先", - - "create.logistics.filter": "過濾器", - "create.logistics.recipe_filter": "配方過濾器", - "create.logistics.fluid_filter": "液體過濾器", - "create.logistics.firstFrequency": "頻道. #1", - "create.logistics.secondFrequency": "頻道. #2", - "create.logistics.filter.apply": "將過濾器應用來%1$s。", - "create.logistics.filter.apply_click_again": "將過濾器應用來%1$s,再次點擊以復制數量。", - "create.logistics.filter.apply_count": "使用提取計數過濾。", - - "create.gui.goggles.generator_stats": "產能器狀態:", - "create.gui.goggles.kinetic_stats": "機械狀態:", - "create.gui.goggles.at_current_speed": "目前動能值", - "create.gui.goggles.pole_length": "活塞桿長度:", - "create.gui.goggles.fluid_container": "液體容器資訊:", - "create.gui.goggles.fluid_container.capacity": "容量: ", - "create.gui.assembly.exception": "該結構無法組合:", - "create.gui.assembly.exception.unmovableBlock": "無法移動的方塊 (%4$s) 位於 [%1$s,%2$s,%3$s]", - "create.gui.assembly.exception.chunkNotLoaded": "位於 [%1$s,%2$s,%3$s] 方塊屬未載入區塊", - "create.gui.assembly.exception.structureTooLarge": "結構中的方塊數量過多.\nThe 可放置的數量最大為: %1$s", - "create.gui.assembly.exception.tooManyPistonPoles": "活塞的活塞桿數量過多\nThe 可放置的數量最大為: %1$s", - "create.gui.assembly.exception.noPistonPoles": "這個活塞遺失了一些活塞桿", - "create.gui.assembly.exception.not_enough_sails": "結構中所需的風帆類方塊數量不足: %1$s\n最少需要的數量為: %2$s", - "create.gui.gauge.info_header": "儀表訊息:", - "create.gui.speedometer.title": "旋轉速度", - "create.gui.stressometer.title": "網路動能", - "create.gui.stressometer.capacity": "剩餘動能量", - "create.gui.stressometer.overstressed": "動能過載", - "create.gui.stressometer.no_rotation": "無旋轉", - "create.gui.contraptions.not_fast_enough": "看起來%1$s 沒有達到足夠的工作轉速。", - "create.gui.contraptions.network_overstressed": "裝置似乎過載,減少高動能消耗的裝置或者增加更多更多動能", - "create.gui.adjustable_crate.title": "板條箱", - "create.gui.adjustable_crate.storageSpace": "儲存空間", - "create.gui.stockpile_switch.title": "儲存開關", - "create.gui.stockpile_switch.invert_signal": "反轉訊號", - "create.gui.stockpile_switch.move_to_lower_at": "移至下線%1$s%%", - "create.gui.stockpile_switch.move_to_upper_at": "移至上線%1$s%%", - "create.gui.sequenced_gearshift.title": "可程式化齒輪箱", - "create.gui.sequenced_gearshift.instruction": "指令", - "create.gui.sequenced_gearshift.instruction.turn_angle.descriptive": "以特定角度旋轉", - "create.gui.sequenced_gearshift.instruction.turn_angle": "旋轉", - "create.gui.sequenced_gearshift.instruction.turn_angle.angle": "角度", - "create.gui.sequenced_gearshift.instruction.turn_distance.descriptive": "帶動 活塞/滑輪/門式起重機", - "create.gui.sequenced_gearshift.instruction.turn_distance": "驅動活塞", - "create.gui.sequenced_gearshift.instruction.turn_distance.distance": "距離", - "create.gui.sequenced_gearshift.instruction.delay.descriptive": "延遲時間", - "create.gui.sequenced_gearshift.instruction.delay": "延遲", - "create.gui.sequenced_gearshift.instruction.delay.duration": "間隔", - "create.gui.sequenced_gearshift.instruction.end.descriptive": "結束", - "create.gui.sequenced_gearshift.instruction.end": "停止", - "create.gui.sequenced_gearshift.instruction.await.descriptive": "等待新的紅石脈衝", - "create.gui.sequenced_gearshift.instruction.await": "等待", - "create.gui.sequenced_gearshift.speed": "速度,速度方向", - "create.gui.sequenced_gearshift.speed.forward": "一倍速,正向", - "create.gui.sequenced_gearshift.speed.forward_fast": "兩倍速,正向", - "create.gui.sequenced_gearshift.speed.back": "一倍速,反向", - "create.gui.sequenced_gearshift.speed.back_fast": "兩倍速,反向", - - "create.schematicAndQuill.dimensions": "藍圖尺寸:%1$sx%2$sx%3$s", - "create.schematicAndQuill.firstPos": "第一個位置。", - "create.schematicAndQuill.secondPos": "第二個位置。", - "create.schematicAndQuill.noTarget": "按住Ctrl選擇空氣方塊。", - "create.schematicAndQuill.abort": "刪除選擇。", - "create.schematicAndQuill.title": "藍圖名:", - "create.schematicAndQuill.convert": "立即存檔並發佈", - "create.schematicAndQuill.fallbackName": "我的藍圖", - "create.schematicAndQuill.saved": "另存為%1$s", - - "create.schematic.invalid": "[!] 無效的項目", - "create.schematic.position": "位置", - "create.schematic.rotation": "旋轉", - "create.schematic.rotation.none": "無", - "create.schematic.rotation.cw90": "順時鐘90", - "create.schematic.rotation.cw180": "順時鐘180", - "create.schematic.rotation.cw270": "順時鐘270", - "create.schematic.mirror": "鏡像", - "create.schematic.mirror.none": "無", - "create.schematic.mirror.frontBack": "前後", - "create.schematic.mirror.leftRight": "左右", - "create.schematic.tool.deploy": "發佈", - "create.schematic.tool.move": "移動 XZ", - "create.schematic.tool.movey": "移動 Y", - "create.schematic.tool.rotate": "旋轉", - "create.schematic.tool.print": "列印", - "create.schematic.tool.flip": "翻轉", - "create.schematic.tool.deploy.description.0": "將結構移到某個位置。", - "create.schematic.tool.deploy.description.1": "在地面上點擊滑鼠右鍵以放置。", - "create.schematic.tool.deploy.description.2": "按住Ctrl以固定距離選擇。", - "create.schematic.tool.deploy.description.3": "按住Ctrl滑鼠滾動更改距離。", - "create.schematic.tool.move.description.0": "水平移動藍圖", - "create.schematic.tool.move.description.1": "選定藍圖,然後按住Ctrl滑鼠滾動。", - "create.schematic.tool.move.description.2": "", - "create.schematic.tool.move.description.3": "", - "create.schematic.tool.movey.description.0": "垂直移動藍圖", - "create.schematic.tool.movey.description.1": "按住Ctrl滑鼠滾動上下移動", - "create.schematic.tool.movey.description.2": "", - "create.schematic.tool.movey.description.3": "", - "create.schematic.tool.rotate.description.0": "圍繞藍圖中心旋轉藍圖。", - "create.schematic.tool.rotate.description.1": "按住Ctrl滑鼠滾動旋轉90度", - "create.schematic.tool.rotate.description.2": "", - "create.schematic.tool.rotate.description.3": "", - "create.schematic.tool.print.description.0": "立即將結構放置在世界上", - "create.schematic.tool.print.description.1": "右鍵點擊確認目前位置。", - "create.schematic.tool.print.description.2": "該工具僅能用於創造模式。", - "create.schematic.tool.print.description.3": "", - "create.schematic.tool.flip.description.0": "沿你選擇的面翻轉藍圖。", - "create.schematic.tool.flip.description.1": "指向藍圖,然後按住Ctrl滑鼠滾動將其翻轉。", - "create.schematic.tool.flip.description.2": "", - "create.schematic.tool.flip.description.3": "", - - "create.schematics.synchronizing": "正在同步..", - "create.schematics.uploadTooLarge": "你的藍圖太大", - "create.schematics.maxAllowedSize": "允許的最大藍圖文件大小為:", - - "create.gui.schematicTable.refresh": "重新整理文件", - "create.gui.schematicTable.open_folder": "打開資料夾", - "create.gui.schematicTable.title": "藍圖桌", - "create.gui.schematicTable.availableSchematics": "可用藍圖", - "create.gui.schematicTable.noSchematics": "沒有存檔的藍圖", - "create.gui.schematicTable.uploading": "正在上傳...", - "create.gui.schematicTable.finished": "上傳完成!", - "create.gui.schematicannon.title": "藍圖加農炮", - "create.gui.schematicannon.listPrinter": "物品清單列印機", - "create.gui.schematicannon.gunpowderLevel": "火藥%1$s%%", - "create.gui.schematicannon.shotsRemaining": "發射進度:%1$s", - "create.gui.schematicannon.shotsRemainingWithBackup": "備份:%1$s", - "create.gui.schematicannon.optionEnabled": "目前啟用", - "create.gui.schematicannon.optionDisabled": "目前停用", - "create.gui.schematicannon.showOptions": "顯示藍圖加農炮設定", - "create.gui.schematicannon.option.dontReplaceSolid": "不要替換方塊", - "create.gui.schematicannon.option.replaceWithSolid": "用固體方塊替換工作區域內的方塊", - "create.gui.schematicannon.option.replaceWithAny": "用任何方塊替換工作區域內的方塊", - "create.gui.schematicannon.option.replaceWithEmpty": "用空氣替換工作區域內的方塊", - "create.gui.schematicannon.option.skipMissing": "繞過缺少的方塊", - "create.gui.schematicannon.option.skipTileEntities": "保護儲存方塊", - "create.gui.schematicannon.slot.gunpowder": "向藍圖加農炮添加火藥以提供動能", - "create.gui.schematicannon.slot.listPrinter": "在此處放置書以列印藍圖所需的材料清單", - "create.gui.schematicannon.slot.schematic": "在此處添加你的藍圖,務必確保其已被部放置在特定位置", - "create.gui.schematicannon.option.skipMissing.description": "如果材料不夠,藍圖大炮將忽略目前不夠的材料並且使用其他已有材料繼續工作", - "create.gui.schematicannon.option.skipTileEntities.description": "藍圖將避免更換儲存方塊,如箱子。", - "create.gui.schematicannon.option.dontReplaceSolid.description": "藍圖加農炮將不會替換工作範圍內的任何固體方塊。", - "create.gui.schematicannon.option.replaceWithSolid.description": "藍圖加農炮會使用所提供的固體方塊來替換工作區域內的其他固體方塊", - "create.gui.schematicannon.option.replaceWithAny.description": "藍圖加農炮會使用任何所提供的方塊來替換工作區域內的固體方塊", - "create.gui.schematicannon.option.replaceWithEmpty.description": "藍圖加農炮將清理和替換工作區域內所有原本的方塊。", - - "create.schematicannon.status.idle": "閒置", - "create.schematicannon.status.ready": "準備", - "create.schematicannon.status.running": "啟動", - "create.schematicannon.status.finished": "完成", - "create.schematicannon.status.paused": "已暫停", - "create.schematicannon.status.stopped": "停止", - "create.schematicannon.status.noGunpowder": "火藥消耗完畢", - "create.schematicannon.status.targetNotLoaded": "方塊未讀取", - "create.schematicannon.status.targetOutsideRange": "定位目標太遠", - "create.schematicannon.status.searching": "搜尋", - "create.schematicannon.status.skipping": "跳過", - "create.schematicannon.status.missingBlock": "缺少方塊:", - "create.schematicannon.status.placing": "建築中", - "create.schematicannon.status.clearing": "清除方塊中", - "create.schematicannon.status.schematicInvalid": "藍圖無效", - "create.schematicannon.status.schematicNotPlaced": "藍圖未發佈", - "create.schematicannon.status.schematicExpired": "藍圖文件已過期", - - "create.materialChecklist": "材料清單", - "create.materialChecklist.blocksNotLoaded": "*免責聲明* \n\n由於未讀取相關區塊,材料清單可能不正確。", - - "create.gui.filter.deny_list": "黑名單", - "create.gui.filter.deny_list.description": "只通過不在黑名單中的物品,如果黑名單為空,所有物品都可以通過", - "create.gui.filter.allow_list": "白名單", - "create.gui.filter.allow_list.description": "只通過在白名單中的物品,如果白名單為空,所有物品都無法通過", - "create.gui.filter.respect_data": "比對物品屬性", - "create.gui.filter.respect_data.description": "只有物品的耐久、附魔等其他屬性相同時才可以比對", - "create.gui.filter.ignore_data": "忽略物品屬性", - "create.gui.filter.ignore_data.description": "配對時忽略物品的耐久、附魔等其他屬性", - - "create.item_attributes.placeable": "可放置", - "create.item_attributes.placeable.inverted": "不可放置", - "create.item_attributes.consumable": "可食用", - "create.item_attributes.consumable.inverted": "不可食用", - "create.item_attributes.smeltable": "可被熔爐融煉", - "create.item_attributes.smeltable.inverted": "不可被熔爐融煉", - "create.item_attributes.washable": "可被篩洗", - "create.item_attributes.washable.inverted": "不可被篩洗", - "create.item_attributes.smokable": "可被煙熏", - "create.item_attributes.smokable.inverted": "不可被煙熏", - "create.item_attributes.crushable": "可被粉碎", - "create.item_attributes.crushable.inverted": "不可被粉碎", - "create.item_attributes.blastable": "可被高爐融煉", - "create.item_attributes.blastable.inverted": "不可被高爐融煉", - "create.item_attributes.enchanted": "已被附魔", - "create.item_attributes.enchanted.inverted": "未被附魔", - "create.item_attributes.damaged": "已損壞", - "create.item_attributes.damaged.inverted": "未損壞", - "create.item_attributes.badly_damaged": "嚴重受損", - "create.item_attributes.badly_damaged.inverted": "未嚴重受損", - "create.item_attributes.not_stackable": "無法堆疊", - "create.item_attributes.not_stackable.inverted": "可堆疊", - "create.item_attributes.equipable": "可裝備", - "create.item_attributes.equipable.inverted": "不可裝備", - "create.item_attributes.furnace_fuel": "是燃料", - "create.item_attributes.furnace_fuel.inverted": "不是燃料", - "create.item_attributes.in_tag": "標籤是%1$s", - "create.item_attributes.in_tag.inverted": "標籤不是%1$s", - "create.item_attributes.in_item_group": "屬於%1$s", - "create.item_attributes.in_item_group.inverted": "不屬於%1$s", - "create.item_attributes.added_by": "由%1$s添加", - "create.item_attributes.added_by.inverted": "不是由%1$s添加", - "create.item_attributes.has_enchant": "有附魔效果%1$s", - "create.item_attributes.has_enchant.inverted": "沒有附魔效果%1$s", - "create.item_attributes.color": "已被染色成 %1$s", - "create.item_attributes.color.inverted": "未被染色成 %1$s", - "create.item_attributes.max_enchanted": "已達到最高附魔等級", - "create.item_attributes.max_enchanted.inverted": "未達到最高附魔等級", - "create.item_attributes.has_fluid": "包含%1$s", - "create.item_attributes.has_fluid.inverted": "不包含%1$s", - "create.item_attributes.has_name": "有自定義名稱%1$s", - "create.item_attributes.has_name.inverted": "沒有自定義名稱%1$s", - "create.item_attributes.book_author": "由%1$s編寫", - "create.item_attributes.book_author.inverted": "未由%1$s編寫", - "create.item_attributes.book_copy_original": "是原創的", - "create.item_attributes.book_copy_original.inverted": "不是原創的", - "create.item_attributes.book_copy_first": "是第一份複製", - "create.item_attributes.book_copy_first.inverted": "不是第一份複製", - "create.item_attributes.book_copy_second": "是第二份複製", - "create.item_attributes.book_copy_second.inverted": "不是第二份複製", - "create.item_attributes.book_copy_tattered": "是第三份複製", - "create.item_attributes.book_copy_tattered.inverted": "不是第三份複製", - "create.item_attributes.astralsorcery_crystal": "具有晶體屬性%1$s", - "create.item_attributes.astralsorcery_crystal.inverted": "不具有晶體屬性%1$s", - "create.item_attributes.astralsorcery_constellation": "與%1$s調諧", - "create.item_attributes.astralsorcery_constellation.inverted": "未與%1$s調諧", - "create.item_attributes.astralsorcery_perk_gem": "具有特殊屬性%1$s", - "create.item_attributes.astralsorcery_perk_gem.inverted": "不具有特殊屬性%1$s", - "create.item_attributes.astralsorcery_amulet": "提升%1$s", - "create.item_attributes.astralsorcery_amulet.inverted": "不提升%1$s", - - "create.gui.attribute_filter.no_selected_attributes": "沒有標記任何屬性", - "create.gui.attribute_filter.selected_attributes": "已選擇的屬性:", - "create.gui.attribute_filter.add_attribute": "向列表中添加屬性", - "create.gui.attribute_filter.add_inverted_attribute": "向列表中添加相反屬性", - "create.gui.attribute_filter.allow_list_disjunctive": "任意比對白名單(任何)", - "create.gui.attribute_filter.allow_list_disjunctive.description": "只要有其中一項屬性符合,就可以通過", - "create.gui.attribute_filter.allow_list_conjunctive": "全部比對白名單(全部)", - "create.gui.attribute_filter.allow_list_conjunctive.description": "只有所有屬性都相符才可以通過", - "create.gui.attribute_filter.deny_list": "黑名單", - "create.gui.attribute_filter.deny_list.description": "只要沒有上述屬性,就可以通過", - "create.gui.attribute_filter.add_reference_item": "添加參考物品", - - "create.tooltip.holdForDescription": "按住 [%1$s] 來讀取物品概要", - "create.tooltip.holdForControls": "按住 [%1$s] 來讀取控制方法", - "create.tooltip.keyShift": "Shift", - "create.tooltip.keyCtrl": "Ctrl", - "create.tooltip.speedRequirement": "需求速度:%1$s", - "create.tooltip.speedRequirement.none": "無", - "create.tooltip.speedRequirement.medium": "適當", - "create.tooltip.speedRequirement.high": "快", - "create.tooltip.stressImpact": "動能消耗:%1$s", - "create.tooltip.stressImpact.low": "低", - "create.tooltip.stressImpact.medium": "中", - "create.tooltip.stressImpact.high": "高", - "create.tooltip.stressImpact.overstressed": "過載", - "create.tooltip.capacityProvided": "動能生產量:%1$s", - "create.tooltip.capacityProvided.low": "小", - "create.tooltip.capacityProvided.medium": "中", - "create.tooltip.capacityProvided.high": "大", - "create.tooltip.generationSpeed": "產生%1$s %2$s", - "create.tooltip.analogStrength": "調節強度:%1$s/15", - - "create.mechanical_arm.extract_from": "從%1$s 拿取物品", - "create.mechanical_arm.deposit_to": "向%1$s 儲存物品", - "create.mechanical_arm.summary": "機械手臂有%1$s 輸入以及 %2$s 輸出。", - "create.mechanical_arm.points_outside_range": "%1$s 由於距離限制,選定的交互點被移除。", - - "create.weighted_ejector.target_set": "已選取目的地", - "create.weighted_ejector.target_not_valid": "彈射到鄰近的方塊 (目的地無效)", - "create.weighted_ejector.no_target": "彈射到鄰近的方塊 (未選取目的地)", - "create.weighted_ejector.targeting": "彈射到 [%1$s,%2$s,%3$s]", - "create.weighted_ejector.stack_size": "彈射物品數量", - - "create.logistics.when_multiple_outputs_available": "當多個輸出可用時", - - "create.mechanical_arm.selection_mode.round_robin": "輪詢調度", - "create.mechanical_arm.selection_mode.forced_round_robin": "強制輪詢調度", - "create.mechanical_arm.selection_mode.prefer_first": "第一目標優先", - - "create.tunnel.selection_mode.split": "分攤", - "create.tunnel.selection_mode.forced_split": "強制分攤", - "create.tunnel.selection_mode.round_robin": "輪詢調度", - "create.tunnel.selection_mode.forced_round_robin": "強制輪詢調度", - "create.tunnel.selection_mode.prefer_nearest": "最近優先", - "create.tunnel.selection_mode.randomize": "隨機", - "create.tunnel.selection_mode.synchronize": "同步輸入", - - "create.tooltip.chute.header": "滑道訊息", - "create.tooltip.chute.items_move_down": "物品向下移動", - "create.tooltip.chute.items_move_up": "物品向上移動", - "create.tooltip.chute.no_fans_attached": "未安裝鼓風機", - "create.tooltip.chute.fans_push_up": "鼓風機從下方進行推動", - "create.tooltip.chute.fans_push_down": "鼓風機從上方進行推動", - "create.tooltip.chute.fans_pull_up": "鼓風機從下方進行吸引", - "create.tooltip.chute.fans_pull_down": "鼓風機從上方進行吸引", - "create.tooltip.chute.contains": "物品: %1$s x%2$s", - - "create.hint.hose_pulley.title": "無限供應", - "create.hint.hose_pulley": "目標液體為無限供應", - "create.hint.mechanical_arm_no_targets.title": "沒有目標", - "create.hint.mechanical_arm_no_targets": "看起來這個_機械手臂_沒有被分配任何_目標_。在手持機械手臂的同時,右鍵選取輸送帶、置物臺、漏斗或其他設備來設定目標。", - "create.hint.empty_bearing.title": "更新軸承", - "create.hint.empty_bearing": "_空手右鍵_軸承來_添加_你新建造的結構。", - "create.hint.full_deployer.title": "機械手物品溢出", - "create.hint.full_deployer": "_機械手_包含_過剩的物品_需要被_取出._使用漏斗_或其他方法將溢出解決。", - - "create.gui.config.overlay1": "嗨 :)", - "create.gui.config.overlay2": "這是一個實例層", - "create.gui.config.overlay3": "點擊拖拽你的滑鼠", - "create.gui.config.overlay4": "來將它移動到前方", - "create.gui.config.overlay5": "ESC退出目前介面", - "create.gui.config.overlay6": "並儲存新的位置", - "create.gui.config.overlay7": "輸入/create overlay reset", - "create.gui.config.overlay8": "重置到預設位置", - - "create.command.killTPSCommand": "killtps", - "create.command.killTPSCommand.status.slowed_by.0": "[Create]: 伺服器每秒TICK被降為 %s ms :o", - "create.command.killTPSCommand.status.slowed_by.1": "[Create]: 伺服器現在每秒TICK被降為 >:)", - "create.command.killTPSCommand.status.slowed_by.2": "[Create]: 伺服器現在不延遲了,TPS正常 :D", - "create.command.killTPSCommand.status.usage.0": "[Create]: 用 /killtps stop 來讓伺服器的TPS速度恢復正常", - "create.command.killTPSCommand.status.usage.1": "[Create]: 用 /killtps start 來手動降低伺服器TPS", - "create.command.killTPSCommand.argument.tickTime": "tickTime", - - "create.contraption.minecart_contraption_too_big": "這個礦車結構太大了而無法撿取", - - - "_": "->------------------------] Subtitles [------------------------<-", - - "create.subtitle.schematicannon_launch_block": "藍圖大炮發射", - "create.subtitle.schematicannon_finish": "藍圖大炮完成任務", - "create.subtitle.slime_added": "黏液擠壓", - "create.subtitle.mechanical_press_activation_belt": "液壓機工作", - "create.subtitle.mechanical_press_activation": "液壓機工作", - "create.subtitle.blockzapper_deny": "放置失敗", - "create.subtitle.blockzapper_confirm": "選擇方塊", - "create.subtitle.blockzapper_place": "放置方塊", - "create.subtitle.blaze_munch": "烈焰使者開心地吃著", - - - "_": "->------------------------] Item Descriptions [------------------------<-", - - "item.create.example_item.tooltip": "EXAMPLE ITEM (just a marker that this tooltip exists)", - "item.create.example_item.tooltip.summary": "A brief description of the item._Underscores_highlight a term.", - "item.create.example_item.tooltip.condition1": "When this", - "item.create.example_item.tooltip.behaviour1": "Then this item does this。(behaviours show on shift)", - "item.create.example_item.tooltip.condition2": "And When this", - "item.create.example_item.tooltip.behaviour2": "You can add as many behaviours as you like", - "item.create.example_item.tooltip.control1": "When Ctrl pressed", - "item.create.example_item.tooltip.action1": "These controls are displayed.", - - "block.create.wooden_bracket.tooltip": "木製支架", - "block.create.wooden_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_。", - - "block.create.metal_bracket.tooltip": "金屬支架", - "block.create.metal_bracket.tooltip.summary": "用來裝飾_傳動軸_,_齒輪_和_管道_。", - - "block.create.copper_casing.tooltip": "銅製機殼", - "block.create.copper_casing.tooltip.summary": "具備多種用途的堅固機殼,也可用於裝飾。", - "block.create.copper_casing.tooltip.condition1": "對液體管道使用時", - "block.create.copper_casing.tooltip.behaviour1": "會把管道裝入機殼,裝進機殼的管道會與其他管道分開,以免它們自動相連。", - - "block.create.encased_fluid_pipe.tooltip": "液體管道箱", - "block.create.encased_fluid_pipe.tooltip.summary": "用銅機殼加固后的液體管道。", - - "block.create.seat.tooltip": "坐墊", - "block.create.seat.tooltip.summary": "坐下來享受旅程吧!坐墊將會把玩家固定在一個移動裝置上。也可以用來作為居家裝飾,畢竟他有許多顏色。", - "block.create.seat.tooltip.condition1": "對坐墊右鍵", - "block.create.seat.tooltip.behaviour1": "玩家將坐在_坐墊_上,Left-Shift可離開_坐墊_。", - - "item.create.blaze_cake.tooltip": "熔岩蛋糕", - "item.create.blaze_cake.tooltip.summary": "對辛苦的_烈焰使者_的美味款待。讓他們興奮起來吧!", - - "block.create.fluid_pipe.tooltip": "液體管道", - "block.create.fluid_pipe.tooltip.summary": "用來傳輸_液體_。需要一個_機械泵_來提供壓強。", - "block.create.fluid_pipe.tooltip.condition1": "轉移液體", - "block.create.fluid_pipe.tooltip.behaviour1": "可以與_液體容器_如_儲存罐_或_作業盆_相連_。裸露的_管道_末端也可以排放或抽取液體。注意別漏水了!", - "block.create.fluid_pipe.tooltip.condition2": "使用扳手對其右鍵時", - "block.create.fluid_pipe.tooltip.behaviour2": "在狀況許可的情況下在管道上安裝透明窗", - - "block.create.hose_pulley.tooltip": "軟管滑輪", - "block.create.hose_pulley.tooltip.summary": "用來在_世界_中放置或排放大量的液體。", - "block.create.hose_pulley.tooltip.condition1": "接入機械時", - "block.create.hose_pulley.tooltip.behaviour1": "升高或降低軟管,軟管的位置決定了抽取或填充液體的高度。", - "block.create.hose_pulley.tooltip.condition2": "當軟管滑輪抽取液體時", - "block.create.hose_pulley.tooltip.behaviour2": "開始從軟管末端將其從中取出_液體方塊_。巨大的液體湖將被認定是_無限_的", - "block.create.hose_pulley.tooltip.condition3": "當液體從軟管滑輪中排出時", - "block.create.hose_pulley.tooltip.behaviour3": "開始向世界填充液體,直到達到_軟管末端_的高度。", - - "block.create.fluid_tank.tooltip": "液體儲存罐", - "block.create.fluid_tank.tooltip.summary": "_儲存_任意_液體_", - "block.create.fluid_tank.tooltip.condition1": "使用扳手右鍵", - "block.create.fluid_tank.tooltip.behaviour1": "改變可選窗口", - - "block.create.creative_fluid_tank.tooltip": "創造液體儲存罐", - "block.create.creative_fluid_tank.tooltip.summary": "此液體儲存罐能夠_無限的復制_任何液體。", - "block.create.creative_fluid_tank.tooltip.condition1": "罐中裝有液體時", - "block.create.creative_fluid_tank.tooltip.behaviour1": "任意的_液體提取設備_能夠從中提取無窮無盡的指定液體,液體的導入功能同時也會無效。", - "block.create.creative_fluid_tank.tooltip.condition2": "扳手右擊時", - "block.create.creative_fluid_tank.tooltip.behaviour2": "打開關閉窗戶", - - "block.create.fluid_valve.tooltip": "液體閥門", - "block.create.fluid_valve.tooltip.summary": "阻止液體沿管道向前流動。", - "block.create.fluid_valve.tooltip.condition1": "控制流量", - "block.create.fluid_valve.tooltip.behaviour1": "施加的_動能_將迫使閥門關閉,從而阻止液體流動。_逆轉旋轉方向_以重新打開閥門。", - - "block.create.mechanical_pump.tooltip": "機械泵", - "block.create.mechanical_pump.tooltip.summary": "_接入機械_,能迫使液體_沿管道指定方向移動_。在兩個方向上都有_最大的作用範圍_。(默認為16個方塊距離)", - "block.create.mechanical_pump.tooltip.condition1": "液體流向", - "block.create.mechanical_pump.tooltip.behaviour1": "_接入機械_后會產生壓力,迫使液體通過管道。_反轉機械_的方向以切換液體_流向_。", - "block.create.mechanical_pump.tooltip.control1": "扳手右鍵時", - "block.create.mechanical_pump.tooltip.action1": "反轉泵的方向,從而改變默認的液體流向", - - "block.create.smart_fluid_pipe.tooltip": "智慧液體管道", - "block.create.smart_fluid_pipe.tooltip.summary": "帶有過濾器的_液體管道_。可以指定通過哪個_液體_。", - "block.create.smart_fluid_pipe.tooltip.condition1": "當液體進入時", - "block.create.smart_fluid_pipe.tooltip.behaviour1": "進入的液體與_過濾器_不匹配時,智慧管道將_阻止_其通過。", - "block.create.smart_fluid_pipe.tooltip.condition2": "與_液體容器相鄰_時", - "block.create.smart_fluid_pipe.tooltip.behaviour2": "從_任何容器_開始流動的_智慧管道_只會抽取與其過濾器匹配的液體。", - - "block.create.spout.tooltip": "注液器", - "block.create.spout.tooltip.summary": "一種用來_裝罐_的機器。", - "block.create.spout.tooltip.condition1": "液體傳輸", - "block.create.spout.tooltip.behaviour1": "當下方放置類似_玻璃瓶_,_桶_這樣的液體容器物品時,注液器將試圖將自身儲存的液體注入到下方的_液體容器物品_中。", - "block.create.spout.tooltip.condition2": "液體自動化", - "block.create.spout.tooltip.behaviour2": "注液器位於_輸送帶_或者_置物臺_上方時,將自動為流水線上的_液體容器物品_進行_注入_。", - - "block.create.item_drain.tooltip": "分液池", - "block.create.item_drain.tooltip.summary": "一種用來_抽空液體容器物品_的置物臺", - "block.create.item_drain.tooltip.condition1": "液體傳輸", - "block.create.item_drain.tooltip.behaviour1": "當從側面導入諸如_桶_或_瓶子_之類的_液體容器物品_時,_分液池_將嘗試將其倒入其_自身的液體庫存_中。空的_液體容器物品_將被彈出至_另一側_。", - - "item.create.wand_of_symmetry.tooltip": "對稱杖", - "item.create.wand_of_symmetry.tooltip.summary": "完美地鏡面復制工作區域內的方塊放置於破壞", - "item.create.wand_of_symmetry.tooltip.condition1": "當在熱鍵欄時", - "item.create.wand_of_symmetry.tooltip.behaviour1": "持續進行鏡面復制", - "item.create.wand_of_symmetry.tooltip.control1": "當右鍵地面時", - "item.create.wand_of_symmetry.tooltip.action1": "_創建_或_移動_鏡子", - "item.create.wand_of_symmetry.tooltip.control2": "當右鍵空氣時", - "item.create.wand_of_symmetry.tooltip.action2": "_刪除_鏡子", - "item.create.wand_of_symmetry.tooltip.control3": "當潛行右鍵時", - "item.create.wand_of_symmetry.tooltip.action3": "打開_gui介面_", - - "item.create.handheld_blockzapper.tooltip": "方塊放置器", - "item.create.handheld_blockzapper.tooltip.summary": "新穎的小工具,可以遠距離放置或更換方塊。", - "item.create.handheld_blockzapper.tooltip.control1": "當左鍵方塊時", - "item.create.handheld_blockzapper.tooltip.action1": "設定放置此方塊。", - "item.create.handheld_blockzapper.tooltip.control2": "當右鍵方塊時", - "item.create.handheld_blockzapper.tooltip.action2": "_放置_或_替換_目標方塊。", - "item.create.handheld_blockzapper.tooltip.control3": "當潛行右鍵時", - "item.create.handheld_blockzapper.tooltip.action3": "打開_gui介面_", - - "item.create.handheld_worldshaper.tooltip": "環境塑形器", - "item.create.handheld_worldshaper.tooltip.summary": "_大面積_更改地形的手持工具", - "item.create.handheld_worldshaper.tooltip.control1": "當左鍵方塊時", - "item.create.handheld_worldshaper.tooltip.action1": "設定放置此方塊", - "item.create.handheld_worldshaper.tooltip.control2": "當右鍵方塊時", - "item.create.handheld_worldshaper.tooltip.action2": "_放置_或_替換_目標方塊", - "item.create.handheld_worldshaper.tooltip.control3": "當潛行右鍵時", - "item.create.handheld_worldshaper.tooltip.action3": "打開工具的_gui介面_", - - "item.create.tree_fertilizer.tooltip": "樹木肥料", - "item.create.tree_fertilizer.tooltip.summary": "適用來常見樹木的快速肥料", - "item.create.tree_fertilizer.tooltip.condition1": "在樹苗上使用時", - "item.create.tree_fertilizer.tooltip.behaviour1": "無論_生長時間_多少,直接長大", - - "item.create.deforester.tooltip": "連根拔樹斧", - "item.create.deforester.tooltip.summary": "_連根拔樹斧_,從最根砍樹時,能夠瞬間連根拔起一棵樹", - - "item.create.extendo_grip.tooltip": "伸縮機械手", - "item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_觸碰距離_。", - "item.create.extendo_grip.tooltip.condition1": "放置於副手欄時", - "item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的觸碰距離,與_主手_的伸縮機械手攜同使用,可進一步增加_觸碰距離_。", - - "item.create.filter.tooltip": "過濾器", - "item.create.filter.tooltip.summary": "將物品更精確地進行_篩選分類_,可以同時_篩選_多個物品或者將已標記的_過濾器_放在另一個_過濾器_里_嵌套_使用。", - "item.create.filter.tooltip.condition1": "放置於過濾插槽中時", - "item.create.filter.tooltip.behaviour1": "根據_過濾器_的設定,來_決定_物品是否能夠通過", - "item.create.filter.tooltip.condition2": "當右鍵時", - "item.create.filter.tooltip.behaviour2": "打開_設定面板_", - - "item.create.attribute_filter.tooltip": "屬性過濾器", - "item.create.attribute_filter.tooltip.summary": "比起普通過濾器,_屬性過濾器_可以根據不同物品的_屬性_來進行過濾", - "item.create.attribute_filter.tooltip.condition1": "放置於過濾插槽中時", - "item.create.attribute_filter.tooltip.behaviour1": "根據_過濾器_的配置,來_決定_物品是否能夠通過", - "item.create.attribute_filter.tooltip.condition2": "當右鍵時", - "item.create.attribute_filter.tooltip.behaviour2": "打開_配置面板_", - - "item.create.empty_schematic.tooltip": "空白藍圖", - "item.create.empty_schematic.tooltip.summary": "可作為合成材料或在_藍圖桌_使用", - - "item.create.schematic.tooltip": "藍圖", - "item.create.schematic.tooltip.summary": "將工程結構的_設計圖_放置於_世界中_,並使用_藍圖加農炮_進行構建。", - "item.create.schematic.tooltip.condition1": "當設計圖存在時", - "item.create.schematic.tooltip.behaviour1": "可以使用屏幕上的工具調整位置", - "item.create.schematic.tooltip.control1": "當潛行右鍵時", - "item.create.schematic.tooltip.action1": "打開一個用來輸入_精確坐標_的介面。", - - "item.create.schematic_and_quill.tooltip": "藍圖與筆", - "item.create.schematic_and_quill.tooltip.summary": "用來將世界中的結構存到.nbt文件。", - "item.create.schematic_and_quill.tooltip.condition1": "第一步", - "item.create.schematic_and_quill.tooltip.behaviour1": "手持藍圖與右鍵旋轉兩個點", - "item.create.schematic_and_quill.tooltip.condition2": "第二步", - "item.create.schematic_and_quill.tooltip.behaviour2": "按住Ctrl滑鼠滾輪選擇選區大小,右鍵空白處存檔。", - "item.create.schematic_and_quill.tooltip.control1": "右鍵", - "item.create.schematic_and_quill.tooltip.action1": "選取點/確認存檔", - "item.create.schematic_and_quill.tooltip.control2": "按住Ctrl滑鼠滾輪", - "item.create.schematic_and_quill.tooltip.action2": "在_空中_選擇點滾動以調整距離。", - "item.create.schematic_and_quill.tooltip.control3": "當潛行右鍵時", - "item.create.schematic_and_quill.tooltip.action3": "_重置_並刪除選區。", - - "block.create.schematicannon.tooltip": "藍圖加農炮", - "block.create.schematicannon.tooltip.summary": "通過發射方塊以在世界中重新構建已部署的_全息圖_,使用相鄰箱子中的物品及_火藥_作為燃料。", - "block.create.schematicannon.tooltip.condition1": "當你對加農砲右鍵時", - "block.create.schematicannon.tooltip.behaviour1": "打開加農砲的設定介面", - - "block.create.schematic_table.tooltip": "藍圖桌", - "block.create.schematic_table.tooltip.summary": "將保存的藍圖圖寫入_空白藍圖_", - "block.create.schematic_table.tooltip.condition1": "放入空白藍圖時", - "block.create.schematic_table.tooltip.behaviour1": "從Schematics文件夾上傳所選文件", - - "item.create.goggles.tooltip": "MR護目鏡", - "item.create.goggles.tooltip.summary": "一副特殊的眼鏡,能夠讓你看見_動能_的信息。", - "item.create.goggles.tooltip.condition1": "當裝備後", - "item.create.goggles.tooltip.behaviour1": "將會顯示該機械元件的_速度_、_動能_等數值。", - "item.create.goggles.tooltip.condition2": "當裝備後看向儀表時", - "item.create.goggles.tooltip.behaviour2": "將會顯示該儀表所連接網路的_速度_、_動能_等數值。", - "item.create.goggles.tooltip.condition3": "當裝備後看向液體容器時", - "item.create.goggles.tooltip.behaviour3": "將會顯示儲存在該容器內的 _液體_ 以及其 _容量_ 等資訊。", - - "item.create.wrench.tooltip": "板手", - "item.create.wrench.tooltip.summary": "一種常用的工具,能夠調整_動能_的_方向_、_配置_等。", - "item.create.wrench.tooltip.control1": "當右鍵點擊_動能元件_時", - "item.create.wrench.tooltip.action1": "以點擊的面為軸心_旋轉_點擊的方塊", - "item.create.wrench.tooltip.control2": "當潛行右鍵時", - "item.create.wrench.tooltip.action2": "將物品_取下_並移動到你的背包中。", - - "block.create.nozzle.tooltip": "分散網", - "block.create.nozzle.tooltip.summary": "依附在鼓風機上,能夠將鼓風機的效果_分散_各個方向。", - - "block.create.cuckoo_clock.tooltip": "布穀鳥鐘", - "block.create.cuckoo_clock.tooltip.summary": "精美的布穀鳥鐘,能夠報時", - "block.create.cuckoo_clock.tooltip.condition1": "連接機械時", - "block.create.cuckoo_clock.tooltip.behaviour1": "顯示_現在時間_且一天會報時_兩次_。中午一次,黃昏可以睡覺時一次 ", - - "block.create.turntable.tooltip": "轉盤", - "block.create.turntable.tooltip.summary": "讓旋轉機械給你帶來一場刺激的旋轉風車體驗。", - - "block.create.portable_fluid_interface.tooltip": "移動液體接口", - "block.create.portable_fluid_interface.tooltip.summary": "為機械活塞、裝配礦車、旋轉軸承、滑輪_等移動結構_設計的_液體接口_,_移動結構_和_固定結構_之間的液體交換站,兩個會面的接口必須彼此面對且彼此隔開1-2個方塊。", - "block.create.portable_fluid_interface.tooltip.condition1": "裝配在移動結構上時", - "block.create.portable_fluid_interface.tooltip.behaviour1": "移動到能夠滿足與_固定結構_上的_移動式液體接口_對接的條件后,移動結構會_短暫地停下_,開始對接,並直接與_移動結構上的_液體儲存罐_交互,進行液體的_導入導出_。", - "block.create.portable_fluid_interface.tooltip.condition2": "被紅石激活時", - "block.create.portable_fluid_interface.tooltip.behaviour2": "立即終止任何活動的連接。", - - "block.create.stockpile_switch.tooltip": "存量偵測器", - "block.create.stockpile_switch.tooltip.summary": "根據連接的容器_儲存空間_的占用情況切換紅石訊號強度。", - "block.create.stockpile_switch.tooltip.condition1": "低於_下線_或高於_上線_時", - "block.create.stockpile_switch.tooltip.behaviour1": "提供紅石訊號", - - "block.create.content_observer.tooltip": "物品偵測器", - "block.create.content_observer.tooltip.summary": "偵測_容器_和_輸送帶_中過濾器匹配的物品。當觀察到包含匹配的物品時,此組件將發出_紅石訊號_。當觀察到的漏斗_轉移匹配的物品_時,此組件將發出_紅石脈沖_。", - - "block.create.adjustable_crate.tooltip": "可調節板條箱", - "block.create.adjustable_crate.tooltip.summary": "這個箱子可以調整容量,最大可以收納_16組_物品。", - "block.create.adjustable_crate.tooltip.condition1": "當你對箱子按右鍵時", - "block.create.adjustable_crate.tooltip.behaviour1": "打開箱子的設定介面", - - "block.create.creative_crate.tooltip": "創造板條箱", - "block.create.creative_crate.tooltip.summary": "這個容器可以給臨近的_藍圖大炮_提供無限物品以及燃料 (創造專用物品)", - "block.create.creative_crate.tooltip.condition1": "當標記了物品時", - "block.create.creative_crate.tooltip.behaviour1": "容器將會從虛空中提供_無限量_的標記物品,並且任何放置到容器中的物品都會被_送入虛空_", - - "block.create.controller_rail.tooltip": "控制鐵軌", - "block.create.controller_rail.tooltip.summary": "單向電動導軌,能夠精細控制礦車的移動速度。", - "block.create.controller_rail.tooltip.condition1": "被紅石激活時", - "block.create.controller_rail.tooltip.behaviour1": "根據訊號強度_加速_或_減速_經過的礦車。將紅石強度傳播到相鄰的控制鐵軌。", - - "item.create.sand_paper.tooltip": "紅砂紙", - "item.create.sand_paper.tooltip.summary": "用來_打磨_物品的砂紙,可以用_機械手_來實現自動化。", - "item.create.sand_paper.tooltip.condition1": "使用時", - "item.create.sand_paper.tooltip.behaviour1": "打磨_副手_上或者_準心所指_的物品。", - - "item.create.builders_tea.tooltip": "工人茶", - "item.create.builders_tea.tooltip.summary": "神清氣爽的一天,從這杯完美茶飲開始。恢復復_饑餓值_並獲得_加速_效果。", - - "item.create.refined_radiance.tooltip": "光輝石", - "item.create.refined_radiance.tooltip.summary": "一種用_光輝_鍛造的化合物材料。", - - "item.create.shadow_steel.tooltip": "暗影鋼", - "item.create.shadow_steel.tooltip.summary": "一種用_虛空_鍛造的化合物材料。", - - "item.create.minecart_coupling.tooltip": "礦車連軸器", - "item.create.minecart_coupling.tooltip.summary": "將多個_礦車_或運輸結構鏈接在一起,構成雄偉的火車。", - "item.create.minecart_coupling.tooltip.condition1": "作用與礦車時", - "item.create.minecart_coupling.tooltip.behaviour1": "將兩個礦車耦合在一起,在移動時將它們保持_恒定的距離_。", - - "create.tooltip.wip": "半成品", - "create.tooltip.workInProgress": "尚在製作中!", - "create.tooltip.randomWipDescription0": "禁止將此物品給屁孩。", - "create.tooltip.randomWipDescription1": "每~一~次~你使用此物品時,就會使一隻小熊貓死亡。", - "create.tooltip.randomWipDescription2": "使用此物品請自負後果。", - "create.tooltip.randomWipDescription3": "快走開,這不是你要找的東西(搖手指", - "create.tooltip.randomWipDescription4": "啟動自爆模式,10、9、8...。", - "create.tooltip.randomWipDescription5": "你已經沒有退路了。", - "create.tooltip.randomWipDescription6": "作者我將不負任何你使用此物所造成的責任。", - "create.tooltip.randomWipDescription7": "這東西不是給你用的,再找找吧!", - "create.tooltip.randomWipDescription8": "用了就死定了。", - - - "_": "->------------------------] Ponder Content [------------------------<-", - - "create.ponder.hold_to_ponder": "按住 [%1$s] 來思考此物品", - "create.ponder.subject": "本場景的主題", - "create.ponder.pondering": "思考有關於...", - "create.ponder.identify_mode": "暫停模式已啟動\n按 [%1$s] 來取消暫停模式", - "create.ponder.associated": "相關物品", - "create.ponder.close": "關閉", - "create.ponder.identify": "暫停", - "create.ponder.next": "下個場景", - "create.ponder.previous": "上個場景", - "create.ponder.replay": "重放", - "create.ponder.think_back": "返回", - "create.ponder.slow_text": "降低文字顯示速度", - "create.ponder.shared.movement_anchors": "有了機殼底盤和強力膠就可以移動大型結構", - "create.ponder.shared.rpm32": "32 RPM", - "create.ponder.shared.sneak_and": "潛行 +", - "create.ponder.shared.storage_on_contraption": "與結構相連的儲物空間會自動撿取物品", - "create.ponder.shared.behaviour_modify_wrench": "使用扳手來調整這個動作", - "create.ponder.shared.rpm8": "8 RPM", - "create.ponder.shared.ctrl_and": "Ctrl +", - "create.ponder.shared.rpm16_source": "轉速: 16 RPM", - "create.ponder.shared.rpm16": "16 RPM", - "create.ponder.tag.kinetic_sources": "動能產生裝置", - "create.ponder.tag.kinetic_sources.description": "該裝置能夠產生動能", - "create.ponder.tag.contraption_actor": "Contraption Actors", - "create.ponder.tag.contraption_actor.description": "Components which expose special behaviour when attached to a moving contraption", - "create.ponder.tag.arm_targets": "機械手臂的目標物", - "create.ponder.tag.arm_targets.description": "該裝置可作為機械手臂的工作目標", - "create.ponder.tag.logistics": "傳輸物品", - "create.ponder.tag.logistics.description": "該裝置用於物品的傳輸", - "create.ponder.tag.movement_anchor": "Movement Anchors", - "create.ponder.tag.movement_anchor.description": "Components which allow the creation of moving contraptions, animating an attached structure in a variety of ways", - "create.ponder.tag.creative": "創造模式", - "create.ponder.tag.creative.description": "該裝置無法在生存模式中獲得", - "create.ponder.tag.kinetic_relays": "動能傳遞方塊", - "create.ponder.tag.kinetic_relays.description": "該裝置用於傳遞動能", - "create.ponder.tag.windmill_sails": "風車軸承的帆", - "create.ponder.tag.windmill_sails.description": "建造風車時用於產生動能的帆,每個帆對風車產生的效果都是同等的", - "create.ponder.tag.contraption_assembly": "方塊連接物件", - "create.ponder.tag.contraption_assembly.description": "此物件用於連接各個零件以便組成一個成品", - "create.ponder.tag.decoration": "裝飾", - "create.ponder.tag.decoration.description": "這些零件通常用於裝飾", - "create.ponder.tag.kinetic_appliances": "動能利用裝置", - "create.ponder.tag.kinetic_appliances.description": "這些裝置利用動能運作", - "create.ponder.tag.redstone": "邏輯控制裝置", - "create.ponder.tag.redstone.description": "這些裝置會在紅石電路中發揮用處", - "create.ponder.tag.fluids": "液體控制裝置", - "create.ponder.tag.fluids.description": "這些裝置可傳輸並利用液體", - - "create.ponder.adjustable_pulse_repeater.header": "使用可調式脈衝中繼器來控制訊號", - "create.ponder.adjustable_pulse_repeater.text_1": "可調式脈衝中繼器每次運作時會產生一個短脈衝", - "create.ponder.adjustable_pulse_repeater.text_2": "使用滑鼠滾輪來設定啟動後到產生脈衝的延遲", - "create.ponder.adjustable_pulse_repeater.text_3": "延遲可設定到最大30分鐘", - - "create.ponder.adjustable_repeater.header": "使用可調式中繼器來控制訊號", - "create.ponder.adjustable_repeater.text_1": "可調式中繼器就像一般的中繼器", - "create.ponder.adjustable_repeater.text_2": "收到訊號後在設定好的時間過後才啟動...", - "create.ponder.adjustable_repeater.text_3": "...訊號停止後也需要相隔同樣的時間過後才會停止", - "create.ponder.adjustable_repeater.text_4": "使用滑鼠滾輪來設定延遲", - "create.ponder.adjustable_repeater.text_5": "延遲可設定到最大30分鐘", - - "create.ponder.analog_lever.header": "使用可調式拉桿來控制訊號", - "create.ponder.analog_lever.text_1": "可調式拉桿是一種小巧而輕準的紅石能源", - "create.ponder.analog_lever.text_2": "右鍵來增加其紅石訊號輸出", - "create.ponder.analog_lever.text_3": "潛行並右鍵來減少其紅石訊號輸出", - - "create.ponder.andesite_tunnel.header": "使用安山岩物品隧道", - "create.ponder.andesite_tunnel.text_1": "安山岩物品隧道可以覆蓋在輸送帶上", - "create.ponder.andesite_tunnel.text_2": "當安山岩物品隧道側邊連接到另一條輸送帶時...", - "create.ponder.andesite_tunnel.text_3": "...隧道將會從經過的整組物品中拿出一個丟到另一條輸送帶上", - "create.ponder.andesite_tunnel.text_4": "剩餘物品則按照原路輸出", - - "create.ponder.basin.header": "在作業盆中處理物品", - "create.ponder.basin.text_1": "作業盆可以放入物品或液體來進行處理", - "create.ponder.basin.text_2": "在每次的處理完成後, 作業盆會試著輸出成品到他的側面下方", - "create.ponder.basin.text_3": "當側面下方有一個有效的容器或設備, 作業盆側面會出現一個輸出嘴", - "create.ponder.basin.text_4": "有很多的容器或設備可以觸發上述現象", - "create.ponder.basin.text_5": "作業盆輸出的成品會被儲存到該容器或設備內", - "create.ponder.basin.text_6": "如果側面沒有出現輸出嘴, 則作業盆內的成品則不會輸出", - "create.ponder.basin.text_7": "這個原理用在產生的成品為下一輪處理的原料時相當有用", - "create.ponder.basin.text_8": "期望的成品將會從作業盆中輸出", - "create.ponder.basin.text_9": "加裝過濾器可防止未被處理的物品輸出", - - "create.ponder.bearing_modes.header": "機械軸承的工作模式", - "create.ponder.bearing_modes.text_1": "當機械軸承停止時,它會控制整個結構停在最近的垂直線上並實體化", - "create.ponder.bearing_modes.text_2": "你可以控制它不要實體化,或是在結構起始位置才實體化", - - "create.ponder.belt_casing.header": "包裹住輸送帶", - "create.ponder.belt_casing.text_1": "安山岩機殼或黃銅機殼可以用來裝飾輸送帶", - "create.ponder.belt_casing.text_2": "使用扳手可以移除機殼", - - "create.ponder.belt_connector.header": "使用輸送帶", - "create.ponder.belt_connector.text_1": "手持輸送帶對兩根傳動軸右鍵以安裝輸送帶", - "create.ponder.belt_connector.text_2": "不小心點到傳動軸的話可以用潛行+右鍵來取消選取", - "create.ponder.belt_connector.text_3": "輸送帶間只要有空間就能安裝額外的傳動軸", - "create.ponder.belt_connector.text_4": "相同輸送帶接出來的傳動軸轉速及轉向會相同", - "create.ponder.belt_connector.text_5": "使用扳手可以移除已安裝的傳動軸", - "create.ponder.belt_connector.text_6": "輸送帶可以被各種染料染色", - - "create.ponder.belt_directions.header": "輸送帶正確的安裝方向", - "create.ponder.belt_directions.text_1": "輸送帶不可以隨意聯結", - "create.ponder.belt_directions.text_2": "1. 輸送帶可以水平連結", - "create.ponder.belt_directions.text_3": "2. 輸送帶可以對角連結", - "create.ponder.belt_directions.text_4": "3. 輸送帶可以垂直連結", - "create.ponder.belt_directions.text_5": "4. 也可以連結在垂直的傳動軸上", - "create.ponder.belt_directions.text_6": "這些都是可以使用的連接方式,輸送帶可以放置的長度為2~20格", - - "create.ponder.belt_transport.header": "將輸送帶用於後勤", - "create.ponder.belt_transport.text_1": "被啟動的輸送帶能運送物品及實體", - "create.ponder.belt_transport.text_2": "空手對輸送帶上的物品右鍵即可從輸送帶上取下物品", - - "create.ponder.blaze_burner.header": "餵食烈焰使者動力爐", - "create.ponder.blaze_burner.text_1": "烈焰使者動力爐可以用來加熱作業盆", - "create.ponder.blaze_burner.text_2": "你需要餵食可以燃燒的物品來加熱作業盆", - "create.ponder.blaze_burner.text_3": "餵食熔岩蛋糕可以讓烈焰使者動力爐加熱到另一個更高的境界", - "create.ponder.blaze_burner.text_4": "使用機械手或機械手臂來將餵食自動化", - - "create.ponder.brass_funnel.header": "黃銅漏斗", - "create.ponder.brass_funnel.text_1": "安山岩漏斗每次只能傳輸一個物品", - "create.ponder.brass_funnel.text_2": "但黃銅漏斗每次可以傳輸整組物品", - "create.ponder.brass_funnel.text_3": "對漏斗上的過濾格使用滾輪可以調整每次輸出物品的數量", - "create.ponder.brass_funnel.text_4": "手持物品對漏斗上的過濾格右鍵可以限制漏斗只輸出該物品", - - "create.ponder.brass_tunnel.header": "使用黃銅隧道", - "create.ponder.brass_tunnel.text_1": "黃銅隧道必須裝設在輸送帶上", - "create.ponder.brass_tunnel.text_2": "黃銅隧道輸出入口上都有過濾格", - "create.ponder.brass_tunnel.text_3": "在輸入口上的過濾器會阻擋不相符的物品", - "create.ponder.brass_tunnel.text_4": "在輸出口上的過濾器可依種類整理排列物品", - "create.ponder.brass_tunnel.text_5": "如果數種與過濾相符的物品通過隧道, 隧道的分配模式將決定如何處理這些物品", - "create.ponder.brass_tunnel.text_6": "在平行相鄰的輸送帶上,相鄰的黃銅隧道將會成為一組", - "create.ponder.brass_tunnel.text_7": "輸入該組內的物品將會採用該組隧道的分配模式輸送", - "create.ponder.brass_tunnel.text_8": "在這個情況下, 物品也能被直接輸入到隧道方塊", - - "create.ponder.brass_tunnel_modes.header": "黃銅隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_1": "使用扳手來調整隧道的分配模式", - "create.ponder.brass_tunnel_modes.text_10": "'同步輸入' 是一種黃銅隧道的特殊設定", - "create.ponder.brass_tunnel_modes.text_11": "當同組內的所有隧道都有一個可通過的物品時,所有隧道才可輸出物品", - "create.ponder.brass_tunnel_modes.text_12": "這確保了同組隧道所在的輸送帶都能以同一速率輸出物品", - "create.ponder.brass_tunnel_modes.text_2": "'分流輸出' 此模式會將物品輸出到該組隧道可用的輸出口", - "create.ponder.brass_tunnel_modes.text_3": "如果該組隧道內某個輸出口無法再輸出物品,則該輸出口會被跳過", - "create.ponder.brass_tunnel_modes.text_4": "'強制分流輸出' 模式不會跳過某個無法輸出物品的輸出口, 直到該輸出口可以輸出物品", - "create.ponder.brass_tunnel_modes.text_5": "'輪詢輸入' 模式將會保持整組物品完整性, 然後在有輸出口可以輸出時才輸入物品", - "create.ponder.brass_tunnel_modes.text_6": "如果該組隧道內某個輸出口無法再輸出物品,則該輸出口會被跳過", - "create.ponder.brass_tunnel_modes.text_7": "'強制輪詢輸入' 模式不會跳過某個無法輸出物品的輸出口, 直到該輸出口可以輸出物品", - "create.ponder.brass_tunnel_modes.text_8": "'鄰近優先' 模式會將物品輸出到該組隧道離物品輸入口最近的出口", - "create.ponder.brass_tunnel_modes.text_9": "'隨機輸出' 模式會隨機選擇同組隧道的一個輸出口輸出", - - "create.ponder.cart_assembler.header": "使用礦車裝修站裝修礦車來移動結構", - "create.ponder.cart_assembler.text_1": "礦車裝修站會將所有連接到礦車的結構裝在礦車上", - "create.ponder.cart_assembler.text_2": "如果沒有紅時訊號,它會將礦車結構分解成方塊", - "create.ponder.cart_assembler.text_3": "對礦車結構使用扳手可以將礦車變成物品", - - "create.ponder.cart_assembler_dual.header": "雙礦車結構", - "create.ponder.cart_assembler_dual.text_1": "當兩台礦車在同一礦車結構上", - "create.ponder.cart_assembler_dual.text_2": "任一礦車裝修站收到紅石訊號時,會形成完整的一個礦車結構", - "create.ponder.cart_assembler_dual.text_3": "整個礦車結構會類似於用礦車連結器連接兩個礦車結構", - - "create.ponder.cart_assembler_modes.header": "礦車結構的方向設定", - "create.ponder.cart_assembler_modes.text_1": "礦車結構會隨著礦車方向改變", - "create.ponder.cart_assembler_modes.text_2": "如果在裝修站鎖定其方向,則結構方向不會隨礦車方向改變", - - "create.ponder.cart_assembler_rails.header": "其他種類的礦車和鐵軌", - "create.ponder.cart_assembler_rails.text_1": "放在普通鐵軌上的礦車裝修站不會影響礦車的動作", - "create.ponder.cart_assembler_rails.text_2": "如果裝修站在沒有紅石訊號的動力鐵軌或控制鐵軌上,則礦車會停下直到鐵軌收到紅石訊號", - "create.ponder.cart_assembler_rails.text_3": "有幾種礦車可以當作錨來使用", - "create.ponder.cart_assembler_rails.text_4": "熔爐礦車會盡可能維持熔煉狀態,並會拿取鄰近儲存結構上的燃料", - - "create.ponder.chain_drive.header": "使用鏈式傳動箱傳遞動能", - "create.ponder.chain_drive.text_1": "同一排上的鏈式傳動箱會互相傳遞動能", - "create.ponder.chain_drive.text_2": "所有傳動軸此時會朝相同方向旋轉", - "create.ponder.chain_drive.text_3": "任一個鏈式傳動箱被旋轉90度時所有鏈式傳動箱仍可正常運作", - - "create.ponder.chain_gearshift.header": "使用可調式鏈式變速箱來調整轉速", - "create.ponder.chain_gearshift.text_1": "未被控制的可調式鏈式變速箱與鏈式傳動箱無異", - "create.ponder.chain_gearshift.text_2": "當可調式鏈式變速箱被啟動後,它會把轉速提升兩倍傳至其他鏈式傳動箱", - "create.ponder.chain_gearshift.text_3": "當被啟動的可調式鏈式變速箱並不是動能輸入端,則它會把轉速減半", - "create.ponder.chain_gearshift.text_4": "上述兩種狀況中,其他鏈式傳動箱都會被可調式鏈式變速箱提升兩倍的轉速", - "create.ponder.chain_gearshift.text_5": "利用紅石訊號的強弱可以調整轉速倍率為x1或x2", - "create.ponder.chain_gearshift.text_6": "12 RPM", - - "create.ponder.chute.header": "使用滑道向下輸送物品", - "create.ponder.chute.text_1": "滑道可以在兩個垂直的儲物空間中輸送物品", - "create.ponder.chute.text_2": "使用扳手可以讓它產生一個觀景窗", - "create.ponder.chute.text_3": "在滑道的側面放置另一個滑道,會產生一個斜狀的滑道", - - "create.ponder.chute_upward.header": "使用滑道向上輸送物品", - "create.ponder.chute_upward.text_1": "在滑道上方或下方使用鼓風機時,物品會根據被向上或向下吹", - "create.ponder.chute_upward.text_2": "裝備MR護目鏡以觀測物品的傳輸方向", - "create.ponder.chute_upward.text_3": "如滑道底端被擋住,則物品只能由側邊進行輸出入", - - "create.ponder.clockwork_bearing.header": "使用時鐘軸承來建造時鐘結構", - "create.ponder.clockwork_bearing.text_1": "時鐘軸承會黏住其前方方塊產生一個時針結構", - "create.ponder.clockwork_bearing.text_2": "在輸入動能後,該結構會依照遊戲時間來旋轉", - "create.ponder.clockwork_bearing.text_3": "3:00", - "create.ponder.clockwork_bearing.text_4": "4:00", - "create.ponder.clockwork_bearing.text_5": "對軸承右鍵會使結構啟動或停止", - "create.ponder.clockwork_bearing.text_6": "在時針結構的前方可再增加一組分針結構", - "create.ponder.clockwork_bearing.text_7": "你必須確保時針分針結構間未被使用強力膠之類的相連零件", - "create.ponder.clockwork_bearing.text_8": "分針結構此時將正常運作", - - "create.ponder.clutch.header": "使用離合器控制動能", - "create.ponder.clutch.text_1": "離合器能將動能直線傳遞", - "create.ponder.clutch.text_2": "當離合器被啟動,離合器會中斷動能傳遞", - - "create.ponder.cog_speedup.header": "使用大小齒輪來變速", - "create.ponder.cog_speedup.text_1": "大齒輪與小齒輪可以斜向傳遞動能", - "create.ponder.cog_speedup.text_2": "從大齒輪傳遞動能至小齒輪時,轉速加倍", - "create.ponder.cog_speedup.text_3": "從小齒輪傳遞動能至大齒輪時,轉速減半", - - "create.ponder.cogwheel.header": "使用齒輪來傳遞動能", - "create.ponder.cogwheel.text_1": "齒輪會將動力傳遞至臨近的齒輪", - "create.ponder.cogwheel.text_2": "以此方式連接的齒輪,旋轉方向相反", - - "create.ponder.creative_motor.header": "使用創造馬達產生動能", - "create.ponder.creative_motor.text_1": "創造馬達不僅能夠手動設定輸出動能,而且體積相當小巧", - "create.ponder.creative_motor.text_2": "對其背後面板滾動滾輪,可以改變馬達的轉速", - - "create.ponder.crushing_wheels.header": "使用粉碎輪處理物品", - "create.ponder.crushing_wheels.text_1": "一對粉碎輪,磨物快又準", - "create.ponder.crushing_wheels.text_2": "接入的動能必須使這兩個輪子契合轉動", - "create.ponder.crushing_wheels.text_3": "扔入或者放入的物品都會被粉碎處理", - "create.ponder.crushing_wheels.text_4": "你也可以使用自動化進行物品的輸入以及撿取", - - "create.ponder.deployer.header": "使用機械手", - "create.ponder.deployer.text_1": "在機械手獲得動能後能夠模仿玩家的各種行為", - "create.ponder.deployer.text_10": "對機械手手部右鍵,即可將手上的物品給它使用", - "create.ponder.deployer.text_11": "物品也可以自動化輸入到機械手內", - "create.ponder.deployer.text_12": "機械手附帶一個過濾格", - "create.ponder.deployer.text_13": "當設定了過濾後,只有當它的手中物品與過濾格相符時,它才會工作", - "create.ponder.deployer.text_14": "只有與過濾格相符的物品才可輸入...", - "create.ponder.deployer.text_15": "...不符的物品可被取出來", - "create.ponder.deployer.text_2": "它只會與它正前方兩格處的位置進行互動", - "create.ponder.deployer.text_3": "放在在它面前的方塊不會阻攔它的工作", - "create.ponder.deployer.text_4": "機械手可以:", - "create.ponder.deployer.text_5": "放置方塊", - "create.ponder.deployer.text_6": "使用物品", - "create.ponder.deployer.text_7": "啟動方塊", - "create.ponder.deployer.text_8": "採收方塊", - "create.ponder.deployer.text_9": "以及攻擊生物", - - "create.ponder.deployer_contraption.header": "在裝置上使用機械手", - "create.ponder.deployer_contraption.text_1": "當機械手在移動的結構上時...", - "create.ponder.deployer_contraption.text_2": "機械手會對每一個經過的方塊使用裝置中任意容器內的物品", - "create.ponder.deployer_contraption.text_3": "可以透過過濾格來指定其從存儲空間中抽取的物品", - - "create.ponder.deployer_modes.header": "機械手的工作模式", - "create.ponder.deployer_modes.text_1": "在設設情況下,機械手模仿玩家的右鍵", - "create.ponder.deployer_modes.text_2": "使用扳手可以將模式調整為模仿玩家的左鍵", - - "create.ponder.deployer_redstone.header": "使用紅石控制機械手", - "create.ponder.deployer_redstone.text_1": "當機械手收到紅時訊號時會停止工作", - "create.ponder.deployer_redstone.text_2": "在停止工作前,機械手會完成目前手頭上的工作", - "create.ponder.deployer_redstone.text_3": "因此,輸入脈衝訊號可以使其每次只進行一個週期的工作", - - "_": "m", - - "create.ponder.depot.header": "使用置物台", - "create.ponder.depot.text_1": "置物台可以被當成一個“靜止的”傳送帶原件使用", - "create.ponder.depot.text_2": "右擊可以手動放置或取下物品", - "create.ponder.depot.text_3": "與傳送帶一樣,它也可以將其內的物品轉送到其他設備中進行加工...", - "create.ponder.depot.text_4": "...同時物品也可以被機械手存取", - - "create.ponder.empty_blaze_burner.header": "使用空的烈焰人燃燒室", - "create.ponder.empty_blaze_burner.text_1": "手持空的烈焰人燃燒室右擊烈焰人來抓取烈焰人", - "create.ponder.empty_blaze_burner.text_2": "或者,也可以透過右擊烈焰人刷怪籠來填充啟動烈焰人燃燒室", - "create.ponder.empty_blaze_burner.text_3": "這樣,你便有了一個可供部分機器加工的熱源", - "create.ponder.empty_blaze_burner.text_4": "如果是為了美觀,空的烈焰人燃燒室也可以被打火石點燃", - "create.ponder.empty_blaze_burner.text_5": "但是,這樣的熱源不足以給機器提加工供足夠的熱量", - - "create.ponder.fan_direction.header": "鼓風機的氣流", - "create.ponder.fan_direction.text_1": "鼓風機使用動能來製造氣流", - "create.ponder.fan_direction.text_2": "流速以及方向由所接收動能的強弱以及方向而定", - - "create.ponder.fan_processing.header": "使用鼓風機加工物品", - "create.ponder.fan_processing.text_1": "當氣流吹過熔岩時,氣流會被加熱", - "create.ponder.fan_processing.text_2": "熱氣流中的物品會被冶煉", - "create.ponder.fan_processing.text_3": "但在氣流中的食物會被直接燒成灰", - "create.ponder.fan_processing.text_4": "而想要烹飪食物,必須要透過吹過火焰的氣流來煙燻食物", - "create.ponder.fan_processing.text_5": "當氣流吹過水後,便可用於洗滌物品", - "create.ponder.fan_processing.text_6": "這種加工方法可以做到不少有趣的事情", - "create.ponder.fan_processing.text_7": "鼓風機的轉速對加工的速度沒有影響,只影響氣流的吹拂距離", - "create.ponder.fan_processing.text_8": "而那些放置在置物台或者傳送帶上的物品,鼓風機也是可以處理的", - - "create.ponder.fan_source.header": "使用鼓風機來產生動能", - "create.ponder.fan_source.text_1": "如鼓風機的扇葉向下朝著熱源放置,鼓風機可以藉此產生動能", - "create.ponder.fan_source.text_2": "當鼓風機接受紅石訊號後,它便會向外供給動能", - - "create.ponder.flywheel.header": "使用飛輪來產生動能", - "create.ponder.flywheel.text_1": "飛輪和熔爐引擎必須配套使用,方可產生動能", - "create.ponder.flywheel.text_2": "如此產生的動能具有非常大的應力值", - "create.ponder.flywheel.text_3": "使用高爐會使得引擎的效率翻倍", - - "create.ponder.funnel_compat.header": "漏斗的相容性", - "create.ponder.funnel_compat.text_1": "漏斗可以與一些其他組件互動", - "create.ponder.funnel_compat.text_2": "動力鋸", - "create.ponder.funnel_compat.text_3": "置物台", - "create.ponder.funnel_compat.text_4": "分液池", - - "create.ponder.funnel_direction.header": "物流方向", - "create.ponder.funnel_direction.text_1": "直接放置時,漏斗會將物品從容器中取出", - "create.ponder.funnel_direction.text_2": "潛行時放置時,漏斗會將物品置入容器中", - "create.ponder.funnel_direction.text_3": "使用扳手可以改變漏斗的存/取模式", - "create.ponder.funnel_direction.text_4": "對大多數朝向放置的漏斗都具有此特性", - "create.ponder.funnel_direction.text_5": "在傳送帶末端放置的漏斗會根據傳送帶的傳動方向存/取物品", - - "create.ponder.funnel_intro.header": "使用漏斗", - "create.ponder.funnel_intro.text_1": "用漏斗來存取物品欄內的物品,可謂又快又好", - - "create.ponder.funnel_redstone.header": "紅石訊號控制", - "create.ponder.funnel_redstone.text_1": "紅石訊號會使漏斗停止工作", - - "create.ponder.funnel_transfer.header": "直接運輸", - "create.ponder.funnel_transfer.text_1": "漏斗無法將物品傳輸到非開放式的物品欄中", - "create.ponder.funnel_transfer.text_2": "溜槽和智慧溜槽更適用於這樣的場景", - "create.ponder.funnel_transfer.text_3": "水平傳輸也是如此,也許傳送帶更方便快捷", - - "create.ponder.furnace_engine.header": "使用熔爐引擎生產動能", - "create.ponder.furnace_engine.text_1": "熔爐引擎會在與其相連熔爐工作時生產動能", - "create.ponder.furnace_engine.text_2": "如此產生的動能具有非常大的應力值", - "create.ponder.furnace_engine.text_3": "使用高爐會使得引擎的效率翻倍", - - "create.ponder.gantry_carriage.header": "使用起重機取物器", - "create.ponder.gantry_carriage.text_1": "起重機取物器可以被放置在起重機杆上,並且可以沿著起重機杆運動", - "create.ponder.gantry_carriage.text_2": "起重機可以移動其黏附的方塊", - - "create.ponder.gantry_cascaded.header": "串聯起重機", - "create.ponder.gantry_cascaded.text_1": "無需強力膠,取物器便可與起重機杆相連", - "create.ponder.gantry_cascaded.text_2": "即使是在移動的起重機杆上也是如此", - "create.ponder.gantry_cascaded.text_3": "因此,起重機系統可以串聯起來,如此可以影響到多軸向的運動", - - "create.ponder.gantry_direction.header": "起重機移動方向", - "create.ponder.gantry_direction.text_1": "起重機杆可以有相反的方向", - "create.ponder.gantry_direction.text_2": "取物器的移動方向取決於起重機杆的方向", - "create.ponder.gantry_direction.text_3": "......以及起重機杆的旋轉方向", - "create.ponder.gantry_direction.text_4": "在旋轉傳遞中,此規則同樣適用", - - "create.ponder.gantry_redstone.header": "起重機的力傳遞", - "create.ponder.gantry_redstone.text_1": "被紅石訊號啟動的起重機,將不會移動其上的取物器", - "create.ponder.gantry_redstone.text_2": "作為替代,杆上的動能會傳遞到取物器的輸出杆上", - - "create.ponder.gantry_shaft.header": "使用起重機杆", - "create.ponder.gantry_shaft.text_1": "起重機杆組成了起重機結構的基礎。與其相接的載物器可以沿著杆進行移動。", - "create.ponder.gantry_shaft.text_2": "起重機結構可以移動與其相接的方塊。", - - "create.ponder.gearbox.header": "使用十字齒輪箱傳遞動能", - "create.ponder.gearbox.text_1": "更改旋轉軸,很容易使得整個旋轉體系變得臃腫不堪", - "create.ponder.gearbox.text_2": "十字齒輪箱則是替代方案,它的體積更為小巧緊", - "create.ponder.gearbox.text_3": "側邊連接的傳動桿,旋轉方向與輸入端一致", - "create.ponder.gearbox.text_4": "直線連接的傳動桿,旋轉方向會被反轉", - - "create.ponder.gearshift.header": "使用反轉齒輪箱控制動能", - "create.ponder.gearshift.text_1": "反轉齒輪箱可以直線傳輸旋轉", - "create.ponder.gearshift.text_2": "通入紅石訊號後,輸出端的旋轉方向會被反轉", - - "create.ponder.hand_crank.header": "使用手搖把手產生動能", - "create.ponder.hand_crank.text_1": "玩家可以使用手搖把手來手動產生動能", - "create.ponder.hand_crank.text_2": "按住右鍵可以逆時針旋轉它", - "create.ponder.hand_crank.text_3": "它產生的轉速相對較高", - "create.ponder.hand_crank.text_4": "潛行長按右鍵可以順時針旋轉它", - - "create.ponder.large_cogwheel.header": "使用大齒輪傳遞動能", - "create.ponder.large_cogwheel.text_1": "大齒輪可以以特定的角度相互連接", - "create.ponder.large_cogwheel.text_2": "可以利用大齒輪變更旋轉軸向", - - "create.ponder.linear_chassis_attachment.header": "使用機殼底盤黏合方塊", - "create.ponder.linear_chassis_attachment.text_1": "它的開放面可以變為黏性面", - "create.ponder.linear_chassis_attachment.text_2": "再次點擊黏性面,可以將它的相反面也變得具有黏性", - "create.ponder.linear_chassis_attachment.text_3": "空手潛行右擊可以移除此面的黏性物", - "create.ponder.linear_chassis_attachment.text_4": "黏性面可以將此面前方的一長條方塊黏住", - "create.ponder.linear_chassis_attachment.text_5": "使用扳手可以精確控制底盤的影響範圍", - "create.ponder.linear_chassis_attachment.text_6": "按住 Ctrl 滑動滾輪,你可以一次性調節所有底盤的影響範圍", - "create.ponder.linear_chassis_attachment.text_7": "若想讓底盤的其他面也能黏方塊,你需要用到強力膠", - "create.ponder.linear_chassis_attachment.text_8": "利用這些機制,任何形狀的機制都可以像裝置那樣移動", - - "create.ponder.linear_chassis_group.header": "成組移動機殼底盤", - "create.ponder.linear_chassis_group.text_1": "相鄰的機殼底盤可以相互連接在一起", - "create.ponder.linear_chassis_group.text_2": "其中的一個底盤若被移動,其餘的底盤也會跟著移動", - "create.ponder.linear_chassis_group.text_3": "不同種類的底盤,或者是朝向不一致的底盤,將不會相連", - - "create.ponder.mechanical_arm.header": "設定動力臂", - "create.ponder.mechanical_arm.text_1": "你得在放置動力臂之前就設定好它的輸入以及輸出端", - "create.ponder.mechanical_arm.text_2": "手持動力臂右擊某個存儲空間,可以將其指定為目標", - "create.ponder.mechanical_arm.text_3": "再次右擊可以將其在輸入端(藍色)以及輸出端(橙色)之間切換", - "create.ponder.mechanical_arm.text_4": "左擊此組件可以移除選擇", - "create.ponder.mechanical_arm.text_5": "將動力臂放下來後,它會將此前選擇的方塊作為目標", - "create.ponder.mechanical_arm.text_6": "在有效範圍內,機械手臂可以有任意數量的輸出以及輸入端", - "create.ponder.mechanical_arm.text_7": "然而,並不是所有的存儲空間可以被直接互動", - "create.ponder.mechanical_arm.text_8": "在此情況下,漏斗和置物台可以解決此問題", - - "create.ponder.mechanical_arm_filtering.header": "過濾動力臂的輸出端", - "create.ponder.mechanical_arm_filtering.text_1": "輸入", - "create.ponder.mechanical_arm_filtering.text_2": "輸出", - "create.ponder.mechanical_arm_filtering.text_3": "有時,你會想著利用某種過濾限煞車力臂的目標", - "create.ponder.mechanical_arm_filtering.text_4": "動力臂自身並不提供任何過濾選項", - "create.ponder.mechanical_arm_filtering.text_5": "然而,若將黃銅漏斗作為目標,則漏斗的過濾槽則可以應用至動力臂上", - "create.ponder.mechanical_arm_filtering.text_6": "動力臂足夠智慧,它不會去拿取那些它無法分配的物品", - - "create.ponder.mechanical_arm_modes.header": "動力臂的分配模式", - "create.ponder.mechanical_arm_modes.text_1": "輸入", - "create.ponder.mechanical_arm_modes.text_2": "輸出", - "create.ponder.mechanical_arm_modes.text_3": "若動力臂必須在數個有效的輸出端之間作出選擇...", - "create.ponder.mechanical_arm_modes.text_4": "...它會依照自己的設定選擇特定的行為", - "create.ponder.mechanical_arm_modes.text_5": "手持扳手對其滑動滾輪,可以改變其設定", - "create.ponder.mechanical_arm_modes.text_6": "輪詢調度模式很好理解,即循環輸出至所有有效的輸出端", - "create.ponder.mechanical_arm_modes.text_7": "如果某個輸出端無法容納更多物品,則它會被跳過", - "create.ponder.mechanical_arm_modes.text_8": "強制輪詢調度不會跳過任何輸出端,動力臂會一直等待,直到輸出端有空位容納物品輸入", - "create.ponder.mechanical_arm_modes.text_9": "最近優先模式會使得動力臂先將物品輸出至更早被選擇的輸出端", - - "create.ponder.mechanical_arm_redstone.header": "利用紅石訊號控制動力臂", - "create.ponder.mechanical_arm_redstone.text_1": "通入紅石訊號後,動力臂會停止工作", - "create.ponder.mechanical_arm_redstone.text_2": "在停止工作前,它會完成目前正在進行的工作週期", - "create.ponder.mechanical_arm_redstone.text_3": "因此,通入單次負紅石脈衝可以精確控制動力臂,使其每次只進行單個週期的工作", - - "create.ponder.mechanical_bearing.header": "使用動力軸承移動結構", - "create.ponder.mechanical_bearing.text_1": "動力軸承會與其前方的方塊黏合在一起", - "create.ponder.mechanical_bearing.text_2": "接收到動能後,它會將這一黏合結構組裝為旋轉裝置", - - "create.ponder.mechanical_crafter.header": "設置動力合成器", - "create.ponder.mechanical_crafter.text_1": "動力合成器陣列可用於自動化任何合成配方的製作", - "create.ponder.mechanical_crafter.text_2": "使用扳手可以調控合成器的合成通路", - "create.ponder.mechanical_crafter.text_3": "所有的合成通路必須匯集到任意一側的一個出口,整套合成器方可算是設置正確", - "create.ponder.mechanical_crafter.text_4": "輸出產物會被放入位於出口的存儲空間中", - "create.ponder.mechanical_crafter.text_5": "動力合成器的運轉需要動能的供應", - "create.ponder.mechanical_crafter.text_6": "右擊合成器正面,可以手動放入物品", - "create.ponder.mechanical_crafter.text_7": "一旦合成通路上的所有合成槽位都有了物品,合成就會開始", - "create.ponder.mechanical_crafter.text_8": "而對於那些沒有完全占滿所有合成器槽位的配方,你可以通入紅石訊號強制開啟合成", - - "create.ponder.mechanical_crafter_connect.header": "為合成器連接物品欄", - "create.ponder.mechanical_crafter_connect.text_1": "合成器可以自動接受向其輸入的物品", - "create.ponder.mechanical_crafter_connect.text_2": "對其背面使用扳手,可以連接合成器", - "create.ponder.mechanical_crafter_connect.text_3": "所有相連的合成器可以訪問同一個位置的輸入", - - "create.ponder.mechanical_crafter_covers.header": "蓋住動力合成器的合成槽", - "create.ponder.mechanical_crafter_covers.text_1": "有些配方需要額外的合成器,來補足合成通路上的間隙", - "create.ponder.mechanical_crafter_covers.text_2": "使用合成槽蓋板,合成器會在合成進行時的行為就如同一個空的合成槽位", - "create.ponder.mechanical_crafter_covers.text_3": "被蓋住的合成器並不會阻斷共享輸入端的影響", - - "create.ponder.mechanical_drill.header": "使用機械鑽頭破壞方塊", - "create.ponder.mechanical_drill.text_1": "當向其通入動能後,機械鑽頭會破壞它面前的方塊", - "create.ponder.mechanical_drill.text_2": "它的挖掘速度取決於通入的動能轉速", - - "create.ponder.mechanical_drill_contraption.header": "在裝置中使用機械鑽頭", - "create.ponder.mechanical_drill_contraption.text_1": "在運動裝置中使用機械鑽頭時...", - "create.ponder.mechanical_drill_contraption.text_2": "...它會破壞掉它撞上的方塊", - - "create.ponder.mechanical_harvester.header": "在裝置中使用動力收割機", - "create.ponder.mechanical_harvester.text_1": "在運動裝置中使用動力收割機時...", - "create.ponder.mechanical_harvester.text_2": "它會採收其路徑上的作物,並重設這些作物的生長進度", - - "create.ponder.mechanical_mixer.header": "使用動力攪拌器處理物品", - "create.ponder.mechanical_mixer.text_1": "使用攪拌器和工作盆,你可以自動化某些合成配方", - "create.ponder.mechanical_mixer.text_2": "有效配方包括各種無序合成配方,以及一些額外的配方", - "create.ponder.mechanical_mixer.text_3": "一些配方可能需要使用烈焰人燃燒室提供熱量", - "create.ponder.mechanical_mixer.text_4": "過濾槽可用於解決兩個配方相互衝突的情況", - - "create.ponder.mechanical_piston.header": "使用動力活塞移動結構", - "create.ponder.mechanical_piston.text_1": "動力活塞可以移動它前方的方塊", - "create.ponder.mechanical_piston.text_2": "移動速度和方向取決於通入活塞的動能", - "create.ponder.mechanical_piston.text_3": "黏性動力活塞可以將相接的方塊拉回來", - - "create.ponder.mechanical_piston_modes.header": "動力活塞的移動模式", - "create.ponder.mechanical_piston_modes.text_1": "一旦活塞停下,被移動的結構就會回退到方塊狀態", - "create.ponder.mechanical_piston_modes.text_2": "你也可以將其設定為從不方塊化,或者只在起始位置方塊化", - - "create.ponder.mechanical_plough.header": "在裝置中使用動力犁", - "create.ponder.mechanical_plough.text_1": "在運動裝置中使用動力犁時...", - "create.ponder.mechanical_plough.text_2": "...它會破壞掉那些不具有固體碰撞箱的方塊", - "create.ponder.mechanical_plough.text_3": "此外,動力犁可以耕地", - "create.ponder.mechanical_plough.text_4": "...它也可以在不傷害實體的情況下推動它們", - - "create.ponder.mechanical_press.header": "使用機械液壓機處理物品", - "create.ponder.mechanical_press.text_1": "機械液壓機可以處理位於其下方的物品", - "create.ponder.mechanical_press.text_2": "在其下方丟入物品,或者將物品放在置物台上,都算作有效的物品輸入", - "create.ponder.mechanical_press.text_3": "若物品被輸入時正位於傳送帶上...", - "create.ponder.mechanical_press.text_4": "輥軋機會使物品停下,然後自動處理這一物品", - - "create.ponder.mechanical_press_compacting.header": "使用機械液壓機壓縮物品", - "create.ponder.mechanical_press_compacting.text_1": "對放置於工作盆內的物品進行輥軋,可以將這些物品壓縮在一起", - "create.ponder.mechanical_press_compacting.text_2": "壓縮意指任何同種物品填滿了 2x2 或者 3x3 網格的配方,以及一些額外的配方", - "create.ponder.mechanical_press_compacting.text_3": "一些配方可能需要烈焰人燃燒室提供熱量", - "create.ponder.mechanical_press_compacting.text_4": "過濾槽可用於解決兩個配方相互衝突的情況", - - "create.ponder.mechanical_saw_breaker.header": "使用動力鋸伐木", - "create.ponder.mechanical_saw_breaker.text_1": "向其通入動能後,動力鋸可以直接砍伐掉它面前的樹木", - "create.ponder.mechanical_saw_breaker.text_2": "想要一次性砍掉整棵樹,鋸子必須破壞掉樹與地面連接的最後一個方塊", - - "create.ponder.mechanical_saw_contraption.header": "在裝置中使用動力鋸", - "create.ponder.mechanical_saw_contraption.text_1": "若在運動裝置中使用動力鋸...", - "create.ponder.mechanical_saw_contraption.text_2": "...它會將撞到它的樹木破壞掉", - - "create.ponder.mechanical_saw_processing.header": "使用動力鋸處理物品", - "create.ponder.mechanical_saw_processing.text_1": "面向朝上的動力鋸可以將物品處理為其變種", - "create.ponder.mechanical_saw_processing.text_2": "處理過後的物品的彈出方向始終與通入鋸中的旋轉轉向相反", - "create.ponder.mechanical_saw_processing.text_3": "鋸子可以", - "create.ponder.mechanical_saw_processing.text_4": "若輸入原料有多種可能產物,你可以用動力鋸上的過濾槽指定只產出某種產物", - "create.ponder.mechanical_saw_processing.text_5": "若沒有使用過濾槽,動力鋸會在各產物中按順序循環輸出", - - "create.ponder.millstone.header": "使用石磨處理物品", - "create.ponder.millstone.text_1": "石磨會對輸入的物品進行磨製", - "create.ponder.millstone.text_2": "在其側邊使用齒輪與其相耦合,方可為其通入動力", - "create.ponder.millstone.text_3": "頂部可以丟入或者塞入物品", - "create.ponder.millstone.text_4": "一段時間過後,右擊石磨可以拿出其中的產物", - "create.ponder.millstone.text_5": "產物的提取也是可以自動化的", - - "create.ponder.nixie_tube.header": "使用真空管顯示器", - "create.ponder.nixie_tube.text_1": "通入紅石訊號後,真空管顯示器會顯示出紅石訊號的強度", - "create.ponder.nixie_tube.text_2": "使用命名牌在鐵砧上為其命名,可以自訂它的顯示文本", - - "create.ponder.piston_pole.header": "活塞延長杆", - "create.ponder.piston_pole.text_1": "若無相接的延長杆,動力活塞無法移動其他方塊", - "create.ponder.piston_pole.text_2": "在其背面安裝的延長杆長度,決定了活塞的推動範圍", - - "create.ponder.portable_storage_interface.header": "裝置存儲交換", - "create.ponder.portable_storage_interface.text_1": "玩家無法與運動裝置內的存儲空間進行互動", - "create.ponder.portable_storage_interface.text_2": "這一組件可以在不停止裝置的情況下與裝置內的存儲空間進行互動", - "create.ponder.portable_storage_interface.text_3": "放置第二個介面時,記得要與裝置介面相隔 1 格或者 2 格的距離", - "create.ponder.portable_storage_interface.text_4": "當它們彼此經過時,它們會連接在一起", - "create.ponder.portable_storage_interface.text_5": "連接狀態下,固定側介面便會作為整個裝置的存儲空間代理", - "create.ponder.portable_storage_interface.text_6": "物品會被輸入到裝置內...", - "create.ponder.portable_storage_interface.text_7": "...或是從裝置中提取出來", - "create.ponder.portable_storage_interface.text_8": "物品交換完畢後,裝置仍然會停留在原地一小會,然後才會繼續前行", - - "create.ponder.portable_storage_interface_redstone.header": "紅石控制", - "create.ponder.portable_storage_interface_redstone.text_1": "通入紅石訊號可以阻止固定側介面的連接行為", - - "create.ponder.powered_latch.header": "使用閂鎖器控制訊號", - "create.ponder.powered_latch.text_1": "閂鎖器是一種可以用紅石訊號控制的拉杆", - "create.ponder.powered_latch.text_2": "後方輸入的訊號會將其設為開啟狀態", - "create.ponder.powered_latch.text_3": "側邊輸入的訊號會將其設為關閉狀態", - "create.ponder.powered_latch.text_4": "你也可以手動切換其狀態", - - "create.ponder.powered_toggle_latch.header": "使用T型正反器控制訊號", - "create.ponder.powered_toggle_latch.text_1": "T型正反器是一種可以用紅石訊號控制的拉杆", - "create.ponder.powered_toggle_latch.text_2": "後方訊號輸入可以改變它的狀態", - "create.ponder.powered_toggle_latch.text_3": "...開啟或者是關閉", - "create.ponder.powered_toggle_latch.text_4": "你也可以手動切換其狀態", - - "create.ponder.pulse_repeater.header": "使用脈衝中繼器控制訊號", - "create.ponder.pulse_repeater.text_1": "脈衝中繼器會將所有通入的紅石訊號縮減為一次脈衝", - - "create.ponder.radial_chassis.header": "使用旋轉底盤黏著方塊", - "create.ponder.radial_chassis.text_1": "同一行上的旋轉底盤會相互連接在一起", - "create.ponder.radial_chassis.text_2": "當其中的一個底盤被裝置帶動時,其餘的底盤也會被帶動", - "create.ponder.radial_chassis.text_3": "底盤的側邊可以變為黏性面", - "create.ponder.radial_chassis.text_4": "再次點擊黏性面,可以讓其所有面都變得帶黏性", - "create.ponder.radial_chassis.text_5": "空手潛行右擊可以移除其上的黏性物", - "create.ponder.radial_chassis.text_6": "若有物品與底盤的黏性面相接觸...", - "create.ponder.radial_chassis.text_7": "...底盤便會與同層且位於半徑內的所有可及方塊黏著在一起", - "create.ponder.radial_chassis.text_8": "使用扳手可以精確指定底盤的影響範圍", - "create.ponder.radial_chassis.text_9": "黏性面一側的不可及方塊不會被黏著", - - "create.ponder.redstone_contact.header": "接觸式紅石訊號發生器", - "create.ponder.redstone_contact.text_1": "當兩個接觸式紅石訊號發生器面對面時,它們會發出紅石訊號", - "create.ponder.redstone_contact.text_2": "並且,若有一方位於運動裝置上,此特性也能正常生效", - - "create.ponder.redstone_link.header": "使用無線紅石訊號機", - "create.ponder.redstone_link.text_1": "無線紅石訊號機可以無線傳輸紅石訊號", - "create.ponder.redstone_link.text_2": "潛行右擊可以改變其接收模式", - "create.ponder.redstone_link.text_3": "手持扳手右擊也可以", - "create.ponder.redstone_link.text_4": "接收端會發出由傳輸端發來的訊號,有效距離為 128 格", - "create.ponder.redstone_link.text_5": "在它們所帶的槽位中放上物品,可以為它們指定頻道", - "create.ponder.redstone_link.text_6": "只有頻道相互匹配的機方可互通", - - "create.ponder.rope_pulley.header": "使用繩索滑輪移動結構", - "create.ponder.rope_pulley.text_1": "繩索滑輪在接受動能時可以垂直移動方塊結構", - "create.ponder.rope_pulley.text_2": "移動的方向及速度取決於提供的轉速", - - "create.ponder.rope_pulley_attachment.header": "繩索滑輪與裝置一同運動", - "create.ponder.rope_pulley_attachment.text_1": "當繩索滑輪本身在裝置中被帶動時...", - "create.ponder.rope_pulley_attachment.text_2": "...它附著在滑輪上的結構會被滑輪拉著一同移動", - "create.ponder.rope_pulley_attachment.text_3": "注意,只有繩索滑輪停止工作時才能被移動", - - "create.ponder.rope_pulley_modes.header": "繩索滑輪的運動模式", - "create.ponder.rope_pulley_modes.text_1": "當繩索滑輪停止運動時,它所附屬的移動結構便會方塊化", - "create.ponder.rope_pulley_modes.text_2": "你可以調整整個結構永不方塊化,或者僅在結構的初始位置方塊化", - - "create.ponder.rotation_speed_controller.header": "使用轉速控制器", - "create.ponder.rotation_speed_controller.text_1": "轉速控制器將動能從其轉軸傳遞至它上方的大齒輪", - "create.ponder.rotation_speed_controller.text_2": "在其側面滾動滑鼠滾輪,可以調節輸出轉速", - - "create.ponder.sail.header": "使用風帆來組裝風車", - "create.ponder.sail.text_1": "風帆是製作風車的趁手材料", - "create.ponder.sail.text_2": "無需強力膠等黏附手段,它們便可自行互相連結", - "create.ponder.sail.text_3": "手持染料右擊可對其染色", - "create.ponder.sail.text_4": "手持剪刀右擊可剪除帆布,使其變迴風帆框架", - - "create.ponder.sail_frame.header": "使用風帆框架來組裝風車", - "create.ponder.sail_frame.text_1": "風帆框架是製作風車的趁手材料", - "create.ponder.sail_frame.text_2": "無需強力膠等黏附手段,它們便可自行互相連結", - - "create.ponder.sequenced_gearshift.header": "使用可編程齒輪箱來控制轉速", - "create.ponder.sequenced_gearshift.text_1": "可編程齒輪箱能夠根據玩家設置的預設時序表來傳遞旋轉", - "create.ponder.sequenced_gearshift.text_2": "對其右擊可以打開設置面板", - "create.ponder.sequenced_gearshift.text_3": "接受紅石訊號時,它會開始執行其內部已設定好的時序指令表", - "create.ponder.sequenced_gearshift.text_4": "當完成時序指令表後,它會進入待機狀態,再次接受紅石訊號後,它才會再次執行時序指令表內容", - "create.ponder.sequenced_gearshift.text_5": "紅石比較器可以讀取目前時序指令表完成進度", - - "create.ponder.shaft.header": "使用傳動軸來傳送動能", - "create.ponder.shaft.text_1": "傳動軸可以直線傳送動能", - - "create.ponder.shaft_casing.header": "包裹傳動軸", - "create.ponder.shaft_casing.text_1": "黃銅及安山岩機殼可以用來裝飾傳動軸", - - "create.ponder.smart_chute.header": "使用智慧滑道來過濾物品", - "create.ponder.smart_chute.text_1": "智慧滑道是一種可以被控制的滑道", - "create.ponder.smart_chute.text_2": "當在其過濾槽內指定了物品後,溜槽只會傳輸這一指定標記的物品", - "create.ponder.smart_chute.text_3": "使用滑鼠滾輪可以指定被過濾的物品數量", - "create.ponder.smart_chute.text_4": "通入紅石訊號,智慧溜槽將會完全暫停工作", - - "create.ponder.speedometer.header": "使用速度計來監測轉速", - "create.ponder.speedometer.text_1": "速度計能顯示相接組件的轉速", - "create.ponder.speedometer.text_2": "當佩戴MR護目鏡時,可以看到儀表所顯示的更詳細的數據", - "create.ponder.speedometer.text_3": "紅石比較器可以根據速度計的數值輸出不同強弱的紅石訊號", - - "create.ponder.stabilized_bearings.header": "裝置固定朝向", - "create.ponder.stabilized_bearings.text_1": "當動力軸承在結構被帶動時...", - "create.ponder.stabilized_bearings.text_2": "...它會確保它轉盤的垂直朝向不變", - "create.ponder.stabilized_bearings.text_3": "跟預設的一樣,動力軸承會黏著它前方的方塊", - "create.ponder.stabilized_bearings.text_4": "這種情況下,它所黏著的子結構的垂直朝向也不會改變", - - "create.ponder.sticker.header": "使用方塊黏著器來黏取方塊", - "create.ponder.sticker.text_1": "方塊黏著器是一個很棒的裝置,他受控於紅石訊號", - "create.ponder.sticker.text_2": "當接收到訊號時,他會黏起面前的一個方塊", - "create.ponder.sticker.text_3": "如果此時方塊黏著器被移動,被黏到的方塊會跟著移動", - "create.ponder.sticker.text_4": "再次接收到訊號後,黏著器會放下它面前的方塊", - - "create.ponder.stressometer.header": "使用動能錶來監測應力", - "create.ponder.stressometer.text_1": "動能錶能顯示目前動能網路內的應力訊息", - "create.ponder.stressometer.text_2": "當佩戴MR護目鏡時,可以看到儀表所顯示的更詳細的數據", - "create.ponder.stressometer.text_3": "紅石比較器可以根據動能錶的數值輸出不同強弱的紅石訊號", - - "create.ponder.super_glue.header": "使用強力膠來黏附方塊", - "create.ponder.super_glue.text_1": "強力膠可以在任意兩個方塊間使用", - "create.ponder.super_glue.text_2": "當被黏合的方塊被組裝為裝置時,他們會一起運動", - "create.ponder.super_glue.text_3": "當強力膠在副手時...", - "create.ponder.super_glue.text_4": "...新放置的方塊會自動被黏附在所放置方塊的面上", - "create.ponder.super_glue.text_5": "左擊可以清除強力膠", - - "create.ponder.valve_handle.header": "使用閥門手輪產生動能", - "create.ponder.valve_handle.text_1": "玩家可以手動使用閥門手輪來產生動能", - "create.ponder.valve_handle.text_2": "右擊可使它逆時針旋轉", - "create.ponder.valve_handle.text_3": "它的轉速慢而精確", - "create.ponder.valve_handle.text_4": "潛行右擊可使它順時針旋轉", - "create.ponder.valve_handle.text_5": "可以透過染色來美化閥門手輪", - - "create.ponder.water_wheel.header": "使用水車產生動能", - "create.ponder.water_wheel.text_1": "水車利用臨近的水流來進行應力發生", - "create.ponder.water_wheel.text_2": "水車接觸水流的麵越多,它的轉速越高", - "create.ponder.water_wheel.text_3": "水車葉片應逆著水流方向擺放", - "create.ponder.water_wheel.text_4": "如果順著水流擺放,它的效率則會降低", - - "create.ponder.weighted_ejector.header": "使用彈射置物台", - "create.ponder.weighted_ejector.text_1": "手持彈射置物台時,潛行時右擊可以設置彈射目標位置", - "create.ponder.weighted_ejector.text_10": "現在,只有等被放置的物品數量等於所設定數量時,彈射置物台才會彈射物品", - "create.ponder.weighted_ejector.text_11": "當其他實體站在彈射置物台上時會被直接彈射", - "create.ponder.weighted_ejector.text_2": "現在,放置下的彈射置物台會將物品彈射至目標位置", - "create.ponder.weighted_ejector.text_3": "限制範圍內的任意距離和高度均可作為有效目標地點", - "create.ponder.weighted_ejector.text_4": "但是,目標位置與置物台的連線,必須垂直於置物台的側面", - "create.ponder.weighted_ejector.text_5": "如果沒有設置有效目標位置,彈射置物台會直接將其前方一格設為默認目標位置", - "create.ponder.weighted_ejector.text_6": "提供動能可為其蓄力", - "create.ponder.weighted_ejector.text_7": "蓄力完畢後,放置在它上方的物品會被立刻彈射出去", - "create.ponder.weighted_ejector.text_8": "如果目標為容器,則彈射置物台會等待容器有位置後再彈射物品", - "create.ponder.weighted_ejector.text_9": "使用扳手可以調整彈射所要求的物品數量", - - "create.ponder.weighted_ejector_redstone.header": "使用紅石控制彈射置物台", - "create.ponder.weighted_ejector_redstone.text_1": "當被紅石充能時,彈射置物台停止工作", - "create.ponder.weighted_ejector_redstone.text_2": "此外,置物台彈射的瞬間可以被偵測器偵測", - "create.ponder.weighted_ejector_tunnel.header": "使用彈射置物台來分流物品", - "create.ponder.weighted_ejector_tunnel.text_1": "與黃銅隧道搭配使用時,彈射置物台可以將物品以特定數量進行分流", - "create.ponder.weighted_ejector_tunnel.text_2": "首先,將黃銅隧道調整為“最近優先”模式,從而讓它優先側面輸出", - "create.ponder.weighted_ejector_tunnel.text_3": "置物台上所設置的物品數量則為被分流出去的物品數量", - "create.ponder.weighted_ejector_tunnel.text_4": "當所設置的物品數量被分流出去後...", - "create.ponder.weighted_ejector_tunnel.text_5": "...剩餘的物品則會繼續前進", - - "create.ponder.windmill_source.header": "使用風車軸承產生動能", - "create.ponder.windmill_source.text_1": "風車軸承會黏著它面前的方塊結構", - "create.ponder.windmill_source.text_2": "如果黏著的方塊結構包含足夠的風帆方塊即為風車", - "create.ponder.windmill_source.text_3": "右鍵啟動風車後,風車開始提供動能", - "create.ponder.windmill_source.text_4": "產生的動能將取決於所黏風帆方塊之數量", - "create.ponder.windmill_source.text_5": "使用扳手來調整其旋轉方向", - "create.ponder.windmill_source.text_6": "對風車軸承右鍵可使其停止方便你維修風車", - - "create.ponder.windmill_structure.header": "風車結構", - "create.ponder.windmill_structure.text_1": "任一包含至少8個風帆方塊的結構即為有效的風車", - - "_": "Thank you for translating Create!" - -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/analog_lever/block.json b/src/main/resources/assets/create/models/block/analog_lever/block.json deleted file mode 100644 index 31fc05c5a..000000000 --- a/src/main/resources/assets/create/models/block/analog_lever/block.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "4": "create:block/analog_lever", - "particle": "block/lever" - }, - "elements": [ - { - "from": [5, 0, 4], - "to": [11, 3, 12], - "faces": { - "north": {"uv": [0, 0, 3, 6], "rotation": 270, "texture": "#4"}, - "east": {"uv": [3, 6, 11, 9], "texture": "#4"}, - "south": {"uv": [11, 0, 14, 6], "rotation": 90, "texture": "#4"}, - "west": {"uv": [3, 6, 11, 9], "texture": "#4"}, - "up": {"uv": [3, 0, 11, 6], "rotation": 90, "texture": "#4"}, - "down": {"uv": [3, 10, 11, 16], "rotation": 90, "texture": "#4", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "lever", - "origin": [8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/analog_lever/handle.json b/src/main/resources/assets/create/models/block/analog_lever/handle.json deleted file mode 100644 index 10b6a24b3..000000000 --- a/src/main/resources/assets/create/models/block/analog_lever/handle.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "1": "block/lever", - "particle": "block/lever" - }, - "elements": [ - { - "from": [7, 0, -2], - "to": [9, 2, 8], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [7, 6, 9, 8], "rotation": 180, "texture": "#1"}, - "east": {"uv": [7, 6, 9, 16], "rotation": 90, "texture": "#1"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "west": {"uv": [7, 6, 9, 16], "rotation": 270, "texture": "#1"}, - "up": {"uv": [7, 6, 9, 16], "texture": "#1"}, - "down": {"uv": [7, 6, 9, 16], "rotation": 180, "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "lever", - "origin": [8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/analog_lever/indicator.json b/src/main/resources/assets/create/models/block/analog_lever/indicator.json deleted file mode 100644 index caefea8b3..000000000 --- a/src/main/resources/assets/create/models/block/analog_lever/indicator.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "4": "create:block/analog_lever", - "particle": "block/lever" - }, - "elements": [ - { - "from": [4.99, 1, 3.99], - "to": [11.01, 2, 12.01], - "shade": false, - "faces": { - "north": {"uv": [2, 10, 3, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [3, 9, 11.02, 10], "texture": "#4"}, - "south": {"uv": [11, 10, 12, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [3, 9, 11.02, 10], "texture": "#4"} - } - } - ], - "groups": [ - { - "name": "lever", - "origin": [8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/analog_lever/item.json b/src/main/resources/assets/create/models/block/analog_lever/item.json deleted file mode 100644 index 855add131..000000000 --- a/src/main/resources/assets/create/models/block/analog_lever/item.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "1": "block/lever", - "4": "create:block/analog_lever", - "particle": "block/lever" - }, - "elements": [ - { - "from": [5, 0, 4], - "to": [11, 3, 12], - "faces": { - "north": {"uv": [0, 0, 3, 6], "rotation": 270, "texture": "#4"}, - "east": {"uv": [3, 6, 11, 9], "texture": "#4"}, - "south": {"uv": [11, 0, 14, 6], "rotation": 90, "texture": "#4"}, - "west": {"uv": [3, 6, 11, 9], "texture": "#4"}, - "up": {"uv": [3, 0, 11, 6], "rotation": 90, "texture": "#4"}, - "down": {"uv": [3, 10, 11, 16], "rotation": 90, "texture": "#4", "cullface": "down"} - } - }, - { - "from": [7, 0, -2], - "to": [9, 2, 8], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [7, 6, 9, 8], "rotation": 180, "texture": "#1"}, - "east": {"uv": [7, 6, 9, 16], "rotation": 90, "texture": "#1"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#1"}, - "west": {"uv": [7, 6, 9, 16], "rotation": 270, "texture": "#1"}, - "up": {"uv": [7, 6, 9, 16], "texture": "#1"}, - "down": {"uv": [7, 6, 9, 16], "rotation": 180, "texture": "#1"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 1.75, 2.25], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 1.75, 2.25], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [74.25, -1.5, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [74.25, -1.5, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.75, 0.75, 0.75] - }, - "head": { - "translation": [0, 14.5, 0] - }, - "fixed": { - "rotation": [-90, 0, 0], - "translation": [0, 0, -5.25], - "scale": [0.75, 0.75, 0.75] - } - }, - "groups": [ - { - "name": "lever", - "origin": [8, 8, 8], - "children": [0, 1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/basin/basin_canal.bbmodel b/src/main/resources/assets/create/models/block/basin/basin_canal.bbmodel deleted file mode 100644 index 63122598a..000000000 --- a/src/main/resources/assets/create/models/block/basin/basin_canal.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"basin","parent":"block/block","ambientocclusion":true,"front_gui_light":false,"resolution":{"width":16,"height":16},"elements":[{"name":"Side1","from":[0,2,0],"to":[2,16,16],"autouv":0,"color":2,"locked":false,"origin":[8,24,8],"faces":{"north":{"uv":[14,0,16,14],"texture":0},"east":{"uv":[0,0,16,14],"texture":0},"south":{"uv":[0,0,2,14],"texture":0},"west":{"uv":[0,0,16,14],"texture":0},"up":{"uv":[0,0,2,16],"texture":1},"down":{"uv":[0,0,2,16],"texture":1}},"uuid":"e372420e-1abe-a2b9-ae96-df6b128888ad"},{"name":"BasinBottom","from":[2,0,2],"to":[14,2,14],"autouv":0,"color":0,"locked":false,"origin":[8,25,8],"faces":{"north":{"uv":[2,14,14,16],"texture":0},"east":{"uv":[2,14,14,16],"texture":0},"south":{"uv":[2,14,14,16],"texture":0},"west":{"uv":[2,14,14,16],"texture":0},"up":{"uv":[2,2,14,14],"texture":1},"down":{"uv":[2,2,14,14],"texture":1}},"uuid":"e82556b1-3f66-7c35-71b2-f33c0c4c1385"},{"name":"Side4","from":[2,2,0],"to":[14,16,2],"autouv":0,"color":1,"locked":false,"origin":[8,24,8],"faces":{"north":{"uv":[2,0,14,14],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[2,0,14,14],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[2,0,14,2],"texture":1},"down":{"uv":[2,14,14,16],"texture":1}},"uuid":"2e5cfd25-7f80-2f04-e080-b005bc67fecb"},{"name":"Side2","from":[2,2,14],"to":[14,16,16],"autouv":0,"color":4,"locked":false,"origin":[8,24,8],"faces":{"north":{"uv":[2,0,14,14],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[2,0,14,14],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[2,14,14,16],"texture":1},"down":{"uv":[2,0,14,2],"texture":1}},"uuid":"e007a6de-4ee0-52db-0763-61d4c3ab8a3f"},{"name":"Side3","from":[14,2,0],"to":[16,16,16],"autouv":0,"color":5,"locked":false,"origin":[8,40,8],"faces":{"north":{"uv":[0,0,2,14],"texture":0},"east":{"uv":[0,0,16,14],"texture":0},"south":{"uv":[14,0,16,14],"texture":0},"west":{"uv":[0,0,16,14],"texture":0},"up":{"uv":[14,0,16,16],"texture":1},"down":{"uv":[14,0,16,16],"texture":1}},"uuid":"c5b067a4-6114-bb79-a5bf-1321988a497c"},{"name":"Side2","from":[0,-14,-16],"to":[2,0,0],"autouv":0,"color":2,"locked":false,"origin":[8,8,-8],"faces":{"north":{"uv":[14,0,16,14],"texture":0},"east":{"uv":[0,0,16,14],"texture":0},"south":{"uv":[0,0,2,14],"texture":0},"west":{"uv":[0,0,16,14],"texture":0},"up":{"uv":[0,0,2,16],"texture":1},"down":{"uv":[0,0,2,16],"texture":1}},"uuid":"b641f651-2872-3ebc-e9e3-2dfbbb10e8e4"},{"name":"BasinBottom","from":[2,-16,-14],"to":[14,-14,-2],"autouv":0,"color":0,"locked":false,"origin":[8,9,-8],"faces":{"north":{"uv":[2,14,14,16],"texture":0},"east":{"uv":[2,14,14,16],"texture":0},"south":{"uv":[2,14,14,16],"texture":0},"west":{"uv":[2,14,14,16],"texture":0},"up":{"uv":[2,2,14,14],"texture":1},"down":{"uv":[2,2,14,14],"texture":1}},"uuid":"07500784-c31b-dc51-7e03-f0ec55ee6028"},{"name":"Side5","from":[2,-14,-16],"to":[14,0,-14],"autouv":0,"color":1,"locked":false,"origin":[8,8,-8],"faces":{"north":{"uv":[2,0,14,14],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[2,0,14,14],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[2,0,14,2],"texture":1},"down":{"uv":[2,14,14,16],"texture":1}},"uuid":"dd76fad0-e0ed-1147-e7bd-3870f72987da"},{"name":"Side3","from":[2,-14,-2],"to":[14,0,0],"autouv":0,"color":4,"locked":false,"origin":[8,8,-8],"faces":{"north":{"uv":[2,0,14,14],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[2,0,14,14],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[2,14,14,16],"texture":1},"down":{"uv":[2,0,14,2],"texture":1}},"uuid":"32636eab-627e-34f5-7be6-2a31400bd957"},{"name":"Side4","from":[14,-14,-16],"to":[16,0,0],"autouv":0,"color":5,"locked":false,"origin":[8,24,-8],"faces":{"north":{"uv":[0,0,2,14],"texture":0},"east":{"uv":[0,0,16,14],"texture":0},"south":{"uv":[14,0,16,14],"texture":0},"west":{"uv":[0,0,16,14],"texture":0},"up":{"uv":[14,0,16,16],"texture":1},"down":{"uv":[14,0,16,16],"texture":1}},"uuid":"06344246-e61c-e8fd-c700-dae02563797e"},{"name":"cube","from":[3,0,0],"to":[4,2,2],"autouv":0,"color":6,"locked":false,"origin":[11,8,8],"faces":{"north":{"uv":[0,0,10,2],"texture":2},"east":{"uv":[14,10,16,12],"texture":2},"south":{"uv":[14,10,16,11],"rotation":90,"texture":2},"west":{"uv":[14,10,16,12],"rotation":90,"texture":2},"up":{"uv":[14,10,15,12],"rotation":180,"texture":2},"down":{"uv":[15,10,16,12],"texture":2}},"uuid":"41346be7-9b03-225c-14be-3be6e1719311"},{"name":"cube","from":[3,0,-1],"to":[4,10,0],"autouv":0,"color":6,"locked":false,"origin":[11,8,7],"faces":{"north":{"uv":[6,12,16,13],"rotation":90,"texture":2},"east":{"uv":[6,12,16,13],"rotation":90,"texture":2},"south":{"uv":[6,12,16,13],"rotation":90,"texture":2},"west":{"uv":[6,12,16,13],"rotation":90,"texture":2},"up":{"uv":[6,12,7,13],"texture":2},"down":{"uv":[15,12,16,13],"texture":2}},"uuid":"fa4b61d1-8e47-aa7d-207c-025608871716"},{"name":"cube","from":[5,1,-6],"to":[11,2,3],"autouv":0,"color":4,"locked":false,"rotation":[-22.5,0,0],"origin":[8,9,-1],"faces":{"north":{"uv":[9,7,15,8],"texture":2},"east":{"uv":[0,0,9,1],"texture":2},"south":{"uv":[9,7,15,8],"texture":2},"west":{"uv":[0,0,9,1],"texture":2},"up":{"uv":[1,0,7,9],"texture":2},"down":{"uv":[1,0,7,9],"rotation":180,"texture":2}},"uuid":"c4b10bec-d6bb-cac8-b369-d588c98601ce"},{"name":"cube","from":[4,1,-6],"to":[5,9,3],"autouv":0,"color":4,"locked":false,"rotation":[-22.5,0,0],"origin":[8,9,-1],"faces":{"north":{"uv":[15,0,16,8],"texture":2},"east":{"uv":[0,0,8,9],"rotation":90,"texture":2},"south":{"uv":[8,0,9,8],"texture":2},"west":{"uv":[0,0,8,9],"rotation":90,"texture":2},"up":{"uv":[0,0,1,9],"rotation":180,"texture":2},"down":{"uv":[0,0,1,9],"texture":2}},"uuid":"655e4f5c-68aa-c6ca-ea54-6ee2f1eb0cbf"},{"name":"cube","from":[11,1,-6],"to":[12,9,3],"autouv":0,"color":4,"locked":false,"rotation":[-22.5,0,0],"origin":[15,9,-1],"faces":{"north":{"uv":[8,0,9,8],"texture":2},"east":{"uv":[0,0,8,9],"rotation":270,"texture":2},"south":{"uv":[15,0,16,8],"texture":2},"west":{"uv":[0,0,8,9],"rotation":90,"texture":2},"up":{"uv":[0,0,1,9],"rotation":180,"texture":2},"down":{"uv":[0,0,1,9],"texture":2}},"uuid":"cf5d8d2d-6849-5958-087c-a48f1ab945e5"},{"name":"cube","from":[5,8,-6],"to":[11,9,3],"autouv":0,"color":4,"locked":false,"rotation":[-22.5,0,0],"origin":[8,9,-1],"faces":{"north":{"uv":[9,0,15,1],"texture":2},"east":{"uv":[0,0,9,1],"texture":2},"south":{"uv":[9,0,15,1],"texture":2},"west":{"uv":[0,0,9,1],"texture":2},"up":{"uv":[1,0,7,9],"rotation":180,"texture":2},"down":{"uv":[1,0,7,9],"texture":2}},"uuid":"1655c96c-ae98-f14d-527c-6052c1fab719"},{"name":"cube","from":[5,2,-4],"to":[11,8,2],"autouv":0,"color":4,"locked":false,"rotation":[-22.5,0,0],"origin":[8,9,-1],"faces":{"north":{"uv":[9,1,15,7],"texture":2},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[9,1,15,7],"texture":2},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"a2eb892a-15a7-46c2-d526-c062c9c151ba"},{"name":"cube","from":[12,0,-1],"to":[13,10,0],"autouv":0,"color":6,"locked":false,"origin":[20,8,7],"faces":{"north":{"uv":[6,12,16,13],"rotation":90,"texture":2},"east":{"uv":[6,12,16,13],"rotation":90,"texture":2},"south":{"uv":[6,12,16,13],"rotation":90,"texture":2},"west":{"uv":[6,12,16,13],"rotation":90,"texture":2},"up":{"uv":[6,12,7,13],"texture":2},"down":{"uv":[15,12,16,13],"texture":2}},"uuid":"baaf226d-53b0-814c-ca53-75621435fc45"},{"name":"cube","from":[4,9,-1],"to":[12,10,0],"autouv":0,"color":6,"locked":false,"origin":[12,8,7],"faces":{"north":{"uv":[8,9,16,10],"texture":2},"east":{"uv":[0,0,0,0],"rotation":90,"texture":null},"south":{"uv":[8,9,16,10],"texture":2},"west":{"uv":[0,0,0,0],"rotation":90,"texture":null},"up":{"uv":[8,9,16,10],"texture":2},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"7aebcd85-9ae9-b4b0-9af3-a8a96d6e3709"},{"name":"cube","from":[12,0,0],"to":[13,2,2],"autouv":0,"color":6,"locked":false,"origin":[20,8,8],"faces":{"north":{"uv":[0,0,10,2],"texture":2},"east":{"uv":[14,10,16,12],"texture":2},"south":{"uv":[14,10,16,11],"rotation":90,"texture":2},"west":{"uv":[14,10,16,12],"rotation":90,"texture":2},"up":{"uv":[14,10,15,12],"rotation":180,"texture":2},"down":{"uv":[15,10,16,12],"texture":2}},"uuid":"25e35b80-a713-fd17-aac6-033104233acd"},{"name":"cube","from":[4,0,-1],"to":[12,1,2],"autouv":0,"color":6,"locked":false,"origin":[12,8,7],"faces":{"north":{"uv":[7,15,15,16],"texture":2},"east":{"uv":[14,10,16,12],"texture":2},"south":{"uv":[8,14,9,15],"rotation":90,"texture":2},"west":{"uv":[14,10,16,12],"rotation":90,"texture":2},"up":{"uv":[11,10,12,11],"rotation":180,"texture":2},"down":{"uv":[7,13,15,16],"texture":2}},"uuid":"18b2aeec-e7d6-9262-7e3d-995f9d7320ac"}],"outliner":[{"name":"Basins","uuid":"4822b3b4-2c19-aadd-c096-85534b94f809","export":true,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"Basin top","uuid":"ef36da1c-a925-5b8d-5f56-b9b2136ca98f","export":true,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["e372420e-1abe-a2b9-ae96-df6b128888ad","e82556b1-3f66-7c35-71b2-f33c0c4c1385","2e5cfd25-7f80-2f04-e080-b005bc67fecb","e007a6de-4ee0-52db-0763-61d4c3ab8a3f","c5b067a4-6114-bb79-a5bf-1321988a497c"]},{"name":"Basin bottom","uuid":"52077833-3587-b2ad-4a2a-8a61173f4d54","export":true,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["b641f651-2872-3ebc-e9e3-2dfbbb10e8e4","07500784-c31b-dc51-7e03-f0ec55ee6028","dd76fad0-e0ed-1147-e7bd-3870f72987da","32636eab-627e-34f5-7be6-2a31400bd957","06344246-e61c-e8fd-c700-dae02563797e"]}]},{"name":"Canal","uuid":"c916ca14-dcb2-5442-2b8a-1fa3ea05e167","export":true,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"Frame","uuid":"1dfe7732-4e1a-7674-3237-0ecf68c5c60e","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["41346be7-9b03-225c-14be-3be6e1719311","25e35b80-a713-fd17-aac6-033104233acd","18b2aeec-e7d6-9262-7e3d-995f9d7320ac","fa4b61d1-8e47-aa7d-207c-025608871716","7aebcd85-9ae9-b4b0-9af3-a8a96d6e3709","baaf226d-53b0-814c-ca53-75621435fc45"]},"c4b10bec-d6bb-cac8-b369-d588c98601ce","1655c96c-ae98-f14d-527c-6052c1fab719","a2eb892a-15a7-46c2-d526-c062c9c151ba","cf5d8d2d-6849-5958-087c-a48f1ab945e5","655e4f5c-68aa-c6ca-ea54-6ee2f1eb0cbf"]}],"textures":[{"path":"C:\\Users\\krypp\\Desktop\\create 1.15.2\\assets\\create\\textures\\block\\basin_side.png","name":"basin_side.png","folder":"block","namespace":"create","id":"1","particle":false,"mode":"bitmap","saved":true,"uuid":"a20a92f6-149c-8147-a096-ebf6df449714","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB4UlEQVQ4T2VTy27bMBAcAhVF2bAlpacATr/BQFs7pzy+I0Bv6cXH9Fd8aT4p7U8UObVoTMe1JUoHFrMUJSchIOxyuTuaHXLV19tbn2gNrswYsVzjNO19OnvnZF/VdR9vmwbq5uaLH49SEISBaJkVgRnfHxyYRys/6Hx1cXHlnatRFCWqqpJD7tPUIMsyiXHPFXMYt3YjOWq5PPfGZAA88ryA66hOJtMXLXDTNK4/j8BqPp97rQ3KskQqfSsMxR5N00BrxoPPtd1a1J0WarE490VRyIExRpIJlCQJ2rZFkmi0bdPb3W4nuQSo6wrq8vLas4BtaK07FsBoNMbhcBCgJHknPtkNbXhYawlw5SkGPzKIYvHvchMdE+5ZHER2AwOKmOel9DidFkjT8CZIfWgj6Ri81UEYeB/650cBh76DDjxXircQRIwMnKugFoulL8sTOWAbQXH6ursBMtHY7/+JRhRRxFMKm80T1Le7O//w42cnYigOtxEAuEiRf2VRLKb9/Okj1Gq18tbu8Pj4S0C4yIKCRfs69vxsMZt9QFFMoOIwxTngQHFgjgeLADFGezwzKr5XAv192vZaHL/jOAvUiP77kxzf7++ltgdgK0T+/WfTD08siAKz+Gx2KlO6Xq+l9j+hVCuQux00ywAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\krypp\\Desktop\\create 1.15.2\\assets\\create\\textures\\block\\basin.png","name":"basin.png","folder":"block","namespace":"create","id":"12","particle":true,"mode":"bitmap","saved":true,"uuid":"e8bd46f1-4674-7125-0c6a-15be8f476bed","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABmElEQVQ4T41TyU7DMBB9dpykS8oFKIhFwMfBpcdy4sJXcuHAIhaxHgJp3cR2jGaiJG0poiNFHsfxy7w388TZ6akPowgU3U6HV4p+HDd5nUzyvHmnZzOYooAYjUb+8fGFD8Iw5LXXbYFoP9Wz5qIxpskPDnZbgKJo0ZUKIQUAIaCURFkCZenhnIVzrqqwn2BnZxPifDz2d/dPmEwydLsdKBUgzw1fEEIgigI452Gt4XOtC863t7Yw2OgvAhAFIYA4jvhDKQW89/AenNPfCdRayxUcH+1XAG9vn0jTFKUvIYSsLvxBgconIKpgONyEuLy48LcPz0i/vhAEci0KQRBgY5AsAaQpfKXbvxSiUDGFk8O9toKpniDPC1DlURyy8iSoMQ4lbUBCWhayanV/ESDLMuiZhpSSdaDH2gJKKb5YB7W46sJ2S+Hq+obVdc6srQEBL3Th/eODJ3EdDX61sR4k4vyfBr1egiz7bieRvPD6+smTSJEkA2g9XaEBQbfRjHJtptpItZnIQPOmWmUoNtO8nZctvWzrVXb+ARkgOfimiFHjAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\krypp\\Documents\\Pixel Art\\Create Mod\\basin\\Basin Canal\\Basin Canal.png","name":"Basin Canal.png","folder":"Basin Canal","namespace":"","id":"2","particle":false,"mode":"bitmap","saved":true,"uuid":"4459ee5f-e243-a1a9-b39e-fd8adcac4b69","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABc0lEQVQ4T4VTTU/CQBB9TWi3WiGIMdGYcFD4J0iFhMQDB5Mm3PDSYzlx8Q/I3+FifwrxB5B4kNja3ZKsmdElwdBlLrMfndf33sw6syTR30WBUim4ngcKsz7xfd7b7p1+/0EL4cP3fXieB6UUFxVFASkLdLt3SNN0d86XAH/b6/XgjEaPmoqD4AxlqeC6HmcCIpDrq0u8pSmklKaWsxAC9wQQRRNNB1Toui7KsuSc5zkAjWazjuVyeRBgOBzCCcOB9jzBiOYvZq2URKdzawcYj5+YgRDE4Jc+5Sz7YqrnzbpdAnnQaDRYszHRZPKg3b6xmxjHsV6t3kEyyEwqojD0qZXWNh6bg9fFYs/9/xuHrbbELEmYgRkw7tjfwBG7owBhOGB5RhatSR5l8u4oQBzHB8d8vf7gDlUCvMznyKTcM5DeSJZLBKcCqtQIAlENEEUTq3nmspIBAWw2n9hut6yXdNdqtR0onbdaF9UMnqdTpmsLkvIDiqLjULkp6X8AAAAASUVORK5CYII="}]} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/basin/block.json b/src/main/resources/assets/create/models/block/basin/block.json deleted file mode 100644 index aa5e251cd..000000000 --- a/src/main/resources/assets/create/models/block/basin/block.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/basin_side", - "12": "create:block/basin", - "particle": "create:block/basin" - }, - "elements": [ - { - "name": "Side1", - "from": [0, 2, 0], - "to": [2, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "north": {"uv": [14, 0, 16, 14], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 14], "texture": "#1"}, - "south": {"uv": [0, 0, 2, 14], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 14], "texture": "#1"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#12"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#12"} - } - }, - { - "name": "BasinBottom", - "from": [2, 0, 2], - "to": [14, 2, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 25, 8]}, - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#1"}, - "east": {"uv": [2, 14, 14, 16], "texture": "#1"}, - "south": {"uv": [2, 14, 14, 16], "texture": "#1"}, - "west": {"uv": [2, 14, 14, 16], "texture": "#1"}, - "up": {"uv": [2, 2, 14, 14], "texture": "#12"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#12"} - } - }, - { - "name": "Side4", - "from": [2, 2, 0], - "to": [14, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 14], "texture": "#1"}, - "south": {"uv": [2, 0, 14, 14], "texture": "#1"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#12"}, - "down": {"uv": [2, 14, 14, 16], "texture": "#12"} - } - }, - { - "name": "Side2", - "from": [2, 2, 14], - "to": [14, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 14], "texture": "#1"}, - "south": {"uv": [2, 0, 14, 14], "texture": "#1"}, - "up": {"uv": [2, 14, 14, 16], "texture": "#12"}, - "down": {"uv": [2, 0, 14, 2], "texture": "#12"} - } - }, - { - "name": "Side3", - "from": [14, 2, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 40, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 14], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 14], "texture": "#1"}, - "south": {"uv": [14, 0, 16, 14], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 14], "texture": "#1"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#12"}, - "down": {"uv": [14, 0, 16, 16], "texture": "#12"} - } - } - ], - "groups": [ - { - "name": "Basin", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/basin/block_directional.json b/src/main/resources/assets/create/models/block/basin/block_directional.json deleted file mode 100644 index 6a6e9a8ba..000000000 --- a/src/main/resources/assets/create/models/block/basin/block_directional.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/basin_side", - "2": "create:block/basin_canal", - "12": "create:block/basin", - "particle": "create:block/basin" - }, - "elements": [ - { - "name": "Side1", - "from": [14, 2, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 14], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 14], "texture": "#1"}, - "south": {"uv": [14, 0, 16, 14], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 14], "texture": "#1"}, - "up": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#12"}, - "down": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#12"} - } - }, - { - "name": "BasinBottom", - "from": [2, 0, 2], - "to": [14, 2, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 25, 8]}, - "faces": { - "north": {"uv": [2, 14, 14, 16], "texture": "#1"}, - "east": {"uv": [2, 14, 14, 16], "texture": "#1"}, - "south": {"uv": [2, 14, 14, 16], "texture": "#1"}, - "west": {"uv": [2, 14, 14, 16], "texture": "#1"}, - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#12"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#12"} - } - }, - { - "name": "Side4", - "from": [2, 2, 14], - "to": [14, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 14], "texture": "#1"}, - "south": {"uv": [2, 0, 14, 14], "texture": "#1"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#12"}, - "down": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#12"} - } - }, - { - "name": "Side2", - "from": [2, 2, 0], - "to": [14, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 14], "texture": "#1"}, - "south": {"uv": [2, 0, 14, 14], "texture": "#1"}, - "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#12"}, - "down": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#12"} - } - }, - { - "name": "Side3", - "from": [0, 2, 0], - "to": [2, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 40, 8]}, - "faces": { - "north": {"uv": [14, 0, 16, 14], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 14], "texture": "#1"}, - "south": {"uv": [0, 0, 2, 14], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 14], "texture": "#1"}, - "up": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#12"}, - "down": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#12"} - } - }, - { - "from": [12, 0, 14], - "to": [13, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 8, 8]}, - "faces": { - "north": {"uv": [14, 10, 16, 11], "rotation": 90, "texture": "#2"}, - "east": {"uv": [14, 10, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 10, 2], "texture": "#2"}, - "west": {"uv": [14, 10, 16, 12], "texture": "#2"}, - "up": {"uv": [14, 10, 15, 12], "texture": "#2"}, - "down": {"uv": [15, 10, 16, 12], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [3, 0, 14], - "to": [4, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-4, 8, 8]}, - "faces": { - "north": {"uv": [14, 10, 16, 11], "rotation": 90, "texture": "#2"}, - "east": {"uv": [14, 10, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 10, 2], "texture": "#2"}, - "west": {"uv": [14, 10, 16, 12], "texture": "#2"}, - "up": {"uv": [14, 10, 15, 12], "texture": "#2"}, - "down": {"uv": [15, 10, 16, 12], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [4, 0, 14], - "to": [12, 1, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 9]}, - "faces": { - "north": {"uv": [8, 14, 9, 15], "rotation": 90, "texture": "#2"}, - "east": {"uv": [14, 10, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [7, 15, 15, 16], "texture": "#2"}, - "west": {"uv": [14, 10, 16, 12], "texture": "#2"}, - "up": {"uv": [11, 10, 12, 11], "texture": "#2"}, - "down": {"uv": [7, 13, 15, 16], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [12, 0, 16], - "to": [13, 10, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 8, 9]}, - "faces": { - "north": {"uv": [6, 12, 16, 13], "rotation": 90, "texture": "#2"}, - "east": {"uv": [6, 12, 16, 13], "rotation": 90, "texture": "#2"}, - "south": {"uv": [6, 12, 16, 13], "rotation": 90, "texture": "#2"}, - "west": {"uv": [6, 12, 16, 13], "rotation": 90, "texture": "#2"}, - "up": {"uv": [6, 12, 7, 13], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15, 12, 16, 13], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [4, 9, 16], - "to": [12, 10, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 9]}, - "faces": { - "north": {"uv": [8, 9, 16, 10], "texture": "#2"}, - "south": {"uv": [8, 9, 16, 10], "texture": "#2"}, - "up": {"uv": [8, 9, 16, 10], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [3, 0, 16], - "to": [4, 10, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [-4, 8, 9]}, - "faces": { - "north": {"uv": [6, 12, 16, 13], "rotation": 90, "texture": "#2"}, - "east": {"uv": [6, 12, 16, 13], "rotation": 90, "texture": "#2"}, - "south": {"uv": [6, 12, 16, 13], "rotation": 90, "texture": "#2"}, - "west": {"uv": [6, 12, 16, 13], "rotation": 90, "texture": "#2"}, - "up": {"uv": [6, 12, 7, 13], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15, 12, 16, 13], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [5, 1, 13], - "to": [11, 2, 22], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 9, 17]}, - "faces": { - "north": {"uv": [9, 7, 15, 8], "texture": "#2"}, - "east": {"uv": [0, 0, 9, 1], "texture": "#2"}, - "south": {"uv": [9, 7, 15, 8], "texture": "#2"}, - "west": {"uv": [0, 0, 9, 1], "texture": "#2"}, - "up": {"uv": [1, 0, 7, 9], "rotation": 180, "texture": "#2"}, - "down": {"uv": [1, 0, 7, 9], "texture": "#2"} - } - }, - { - "from": [5, 8, 13], - "to": [11, 9, 22], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 9, 17]}, - "faces": { - "north": {"uv": [9, 0, 15, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 9, 1], "texture": "#2"}, - "south": {"uv": [9, 0, 15, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 9, 1], "texture": "#2"}, - "up": {"uv": [1, 0, 7, 9], "texture": "#2"}, - "down": {"uv": [1, 0, 7, 9], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [5, 2, 14], - "to": [11, 8, 20], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 9, 17]}, - "faces": { - "north": {"uv": [9, 1, 15, 7], "texture": "#2"}, - "south": {"uv": [9, 1, 15, 7], "texture": "#2"} - } - }, - { - "from": [4, 1, 13], - "to": [5, 9, 22], - "rotation": {"angle": 22.5, "axis": "x", "origin": [1, 9, 17]}, - "faces": { - "north": {"uv": [15, 0, 16, 8], "texture": "#2"}, - "east": {"uv": [0, 0, 8, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#2"}, - "west": {"uv": [0, 0, 8, 9], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 1, 9], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 9], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [11, 1, 13], - "to": [12, 9, 22], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 9, 17]}, - "faces": { - "north": {"uv": [8, 0, 9, 8], "texture": "#2"}, - "east": {"uv": [0, 0, 8, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#2"}, - "west": {"uv": [0, 0, 8, 9], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 1, 9], "texture": "#2"}, - "down": {"uv": [0, 0, 1, 9], "rotation": 180, "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "Basins", - "origin": [8, 8, 8], - "children": [ - { - "name": "Basin top", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4] - } - ] - }, - { - "name": "Canal", - "origin": [8, 8, 8], - "children": [ - { - "name": "Frame", - "origin": [8, 8, 8], - "children": [5, 6, 7, 8, 9, 10] - }, 11, 12, 13, 14, 15] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bearing/block.json b/src/main/resources/assets/create/models/block/bearing/block.json deleted file mode 100644 index 5fe9ff4cb..000000000 --- a/src/main/resources/assets/create/models/block/bearing/block.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "textures": { - "particle": "#side", - "gearbox": "#back", - "bearing_side": "#side", - "brass_casing": "#nook" - }, - "elements": [ - { - "name": "Indicator", - "from": [ 6, 10, 16 ], - "to": [ 10, 12, 17 ], - "faces": { - "north": { "texture": "#brass_casing", "uv": [ 3, 0, 7, 2 ] }, - "east": { "texture": "#brass_casing", "uv": [ 7, 14, 8, 16 ] }, - "south": { "texture": "#brass_casing", "uv": [ 6, 14, 10, 16 ] }, - "west": { "texture": "#brass_casing", "uv": [ 8, 14, 9, 16 ] }, - "up": { "texture": "#brass_casing", "uv": [ 6, 1, 10, 2 ] }, - "down": { "texture": "#brass_casing", "uv": [ 6, 0, 10, 1 ] } - } - }, - { - "name": "Side", - "from": [ 0, 0, 0 ], - "to": [ 2, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 13, 4, 16, 16 ] }, - "east": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 0, 4, 2, 16 ] }, - "west": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 0, 0, 2, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Side", - "from": [ 14, 0, 0 ], - "to": [ 16, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 0, 4, 2, 16 ] }, - "east": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 14, 4, 16, 16 ] }, - "west": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 14, 0, 16, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 14, 0, 16, 16 ] } - } - }, - { - "name": "Side", - "from": [ 2, 0, 0 ], - "to": [ 14, 12, 2 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 2, 0, 14, 2 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 14, 14, 16 ] } - } - }, - { - "name": "Side", - "from": [ 2, 0, 14 ], - "to": [ 14, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 2, 14, 14, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 0, 14, 2 ] } - } - }, - { - "name": "Core", - "from": [ 2, 1, 2 ], - "to": [ 14, 12, 14 ], - "faces": { - "up": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bearing/item.json b/src/main/resources/assets/create/models/block/bearing/item.json deleted file mode 100644 index c5b343fbc..000000000 --- a/src/main/resources/assets/create/models/block/bearing/item.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "parent": "block/block", - "textures": { - "particle": "#side", - "bearing_top": "#top", - "gearbox": "#back", - "bearing_side": "#side" - }, - "elements": [ - { - "name": "Side", - "from": [ 0, 0, 0 ], - "to": [ 2, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 13, 4, 16, 16 ] }, - "east": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 0, 4, 2, 16 ] }, - "west": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 0, 0, 2, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Side", - "from": [ 14, 0, 0 ], - "to": [ 16, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 0, 4, 2, 16 ] }, - "east": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 14, 4, 16, 16 ] }, - "west": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 14, 0, 16, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 14, 0, 16, 16 ] } - } - }, - { - "name": "Side", - "from": [ 2, 0, 0 ], - "to": [ 14, 12, 2 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 2, 0, 14, 2 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 14, 14, 16 ] } - } - }, - { - "name": "Side", - "from": [ 2, 0, 14 ], - "to": [ 14, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 2, 14, 14, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 0, 14, 2 ] } - } - }, - { - "name": "Core", - "from": [ 2, 1, 2 ], - "to": [ 14, 12, 14 ], - "faces": { - "up": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] } - } - }, - { - "name": "Top", - "from": [ 0, 12, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 0, 0, 16, 4 ] }, - "east": { "texture": "#bearing_side", "uv": [ 0, 0, 16, 4 ] }, - "south": { "texture": "#bearing_side", "uv": [ 0, 0, 16, 4 ] }, - "west": { "texture": "#bearing_side", "uv": [ 0, 0, 16, 4 ] }, - "up": { "texture": "#bearing_top", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#bearing_top", "uv": [ 0, 0, 16, 16 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bearing/top.json b/src/main/resources/assets/create/models/block/bearing/top.json deleted file mode 100644 index b8cfe38cc..000000000 --- a/src/main/resources/assets/create/models/block/bearing/top.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "bearing_top": "create:block/bearing_top", - "particle": "create:block/mechanical_bearing_side", - "bearing_side": "create:block/mechanical_bearing_side", - "brass_casing": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Cube", - "from": [6, 12, 16], - "to": [10, 14, 17], - "faces": { - "north": {"uv": [3, 0, 7, 2], "texture": "#brass_casing"}, - "east": {"uv": [7, 0, 8, 2], "texture": "#brass_casing"}, - "south": {"uv": [6, 0, 10, 2], "texture": "#brass_casing"}, - "west": {"uv": [8, 0, 9, 2], "texture": "#brass_casing"}, - "up": {"uv": [6, 0, 10, 1], "texture": "#brass_casing"}, - "down": {"uv": [6, 1, 10, 2], "texture": "#brass_casing"} - } - }, - { - "name": "Top", - "from": [0, 12, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#bearing_side"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#bearing_side"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#bearing_side"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#bearing_side"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#bearing_top"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bearing_top"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bearing/top_wooden.json b/src/main/resources/assets/create/models/block/bearing/top_wooden.json deleted file mode 100644 index 05a0397c7..000000000 --- a/src/main/resources/assets/create/models/block/bearing/top_wooden.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/bearing/top", - "textures": { - "bearing_top": "create:block/bearing_top_wooden", - "particle": "create:block/windmill_bearing_side", - "bearing_side": "create:block/windmill_bearing_side", - "brass_casing": "create:block/andesite_casing" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/diagonal_end.json b/src/main/resources/assets/create/models/block/belt/diagonal_end.json deleted file mode 100644 index 02bd2d2d7..000000000 --- a/src/main/resources/assets/create/models/block/belt/diagonal_end.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/belt_diagonal", - "particle": "create:block/belt_diagonal" - }, - "elements": [ - { - "name": "Bottom", - "from": [0.9, 3, 1], - "to": [15.1, 5, 6.8], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [1, 6, 15, 7], "rotation": 180, "texture": "#0"}, - "east": {"uv": [14, 0, 16, 6], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 0, 2, 6], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 0, 15, 6], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 0, 15, 6], "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [2.9, 5, 2], - "to": [13.1, 6, 6.8], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [3, 0, 4, 5], "rotation": 270, "texture": "#0"}, - "west": {"uv": [12, 0, 13, 5], "rotation": 90, "texture": "#0"}, - "up": {"uv": [3, 0, 13, 5], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top", - "from": [0.9, 11, 1], - "to": [15.1, 13, 10.1], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [1, 5, 15, 6], "rotation": 180, "texture": "#0"}, - "east": {"uv": [14, 6, 16, 15], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 6, 2, 15], "rotation": 270, "texture": "#0"}, - "up": {"uv": [1, 6, 15, 15], "texture": "#0"}, - "down": {"uv": [1, 6, 15, 15], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top", - "from": [2.9, 10, 2], - "to": [13.1, 11, 10.1], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [3, 7, 4, 15], "rotation": 90, "texture": "#0"}, - "west": {"uv": [12, 7, 13, 15], "rotation": 270, "texture": "#0"}, - "down": {"uv": [3, 7, 13, 15], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Side", - "from": [1, 4, 0], - "to": [15, 12, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [1, 8, 15, 16], "rotation": 180, "texture": "#0"}, - "east": {"uv": [14, 8, 16, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [1, 8, 15, 16], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 8, 2, 16], "rotation": 180, "texture": "#0"}, - "up": {"uv": [1, 4, 15, 5], "texture": "#0"}, - "down": {"uv": [1, 7, 15, 8], "texture": "#0"} - } - }, - { - "name": "Side", - "from": [2.9, 6, 2], - "to": [13.1, 10, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [3, 10, 4, 14], "rotation": 180, "texture": "#0"}, - "south": {"uv": [3, 10, 13, 14], "rotation": 180, "texture": "#0"}, - "west": {"uv": [12, 10, 13, 14], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Bottom Diagonal", - "from": [1, 3, 9.25], - "to": [15, 5, 19.328], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [14, 5, 16, 15], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 4, 2, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 4, 15, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 4, 15, 14], "texture": "#0"} - } - }, - { - "name": "Bottom Diagonal", - "from": [3, 5, 9.25], - "to": [13, 6, 19.328], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [3, 4, 4, 14], "rotation": 270, "texture": "#0"}, - "west": {"uv": [12, 4, 13, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [3, 4, 13, 14], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top Diagonal", - "from": [1, 11, 5.9], - "to": [15, 13, 19.328], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [14, 3, 16, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 3, 2, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [1, 3, 15, 16], "texture": "#0"}, - "down": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top Diagonal", - "from": [3, 10, 6.9], - "to": [13, 11, 19.328], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [3, 4, 4, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [12, 4, 13, 16], "rotation": 270, "texture": "#0"}, - "down": {"uv": [3, 4, 13, 16], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/diagonal_middle.json b/src/main/resources/assets/create/models/block/belt/diagonal_middle.json deleted file mode 100644 index 2855a73c1..000000000 --- a/src/main/resources/assets/create/models/block/belt/diagonal_middle.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/belt_diagonal", - "particle": "create:block/belt_diagonal" - }, - "elements": [ - { - "name": "Top Diagonal First", - "from": [3, 10, -3.305], - "to": [13, 11, 8.02], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [3, 4, 4, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [12, 4, 13, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [1, 0, 15, 10], "texture": "#0"}, - "down": {"uv": [3, 4, 13, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top Diagonal First", - "from": [1, 11, -3.3], - "to": [15, 13, 8.02], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [14, 4, 16, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 4, 2, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [1, 4, 15, 16], "texture": "#0"}, - "down": {"uv": [1, 4, 15, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top Diagonal", - "from": [3, 10, 8], - "to": [13, 11, 19.325], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [3, 4, 4, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [12, 4, 13, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [1, 3, 15, 16], "texture": "#0"}, - "down": {"uv": [3, 4, 13, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top Diagonal", - "from": [1, 11, 8], - "to": [15, 13, 19.325], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [14, 4, 16, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 4, 2, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [1, 4, 15, 16], "texture": "#0"}, - "down": {"uv": [1, 4, 15, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Bottom Diagonal First", - "from": [3, -3.305, 5], - "to": [13, 8.02, 6], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [1, 0, 15, 10], "rotation": 180, "texture": "#0"}, - "east": {"uv": [3, 4, 4, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [3, 4, 13, 16], "rotation": 180, "texture": "#0"}, - "west": {"uv": [12, 4, 13, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Bottom Diagonal First", - "from": [1, -3.3, 3], - "to": [15, 8.02, 5], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [1, 4, 15, 16], "rotation": 180, "texture": "#0"}, - "east": {"uv": [14, 4, 16, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [1, 4, 15, 16], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 4, 2, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Bottom Diagonal", - "from": [3, 8, 5], - "to": [13, 19.325, 6], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"}, - "east": {"uv": [3, 4, 4, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [3, 4, 13, 16], "rotation": 180, "texture": "#0"}, - "west": {"uv": [12, 4, 13, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Bottom Diagonal", - "from": [1, 8, 3], - "to": [15, 19.325, 5], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [1, 4, 15, 16], "rotation": 180, "texture": "#0"}, - "east": {"uv": [14, 4, 16, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [1, 4, 15, 16], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 4, 2, 16], "rotation": 180, "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "Top", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3] - }, - { - "name": "Bottom", - "origin": [8, 8, 8], - "children": [4, 5, 6, 7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/diagonal_start.json b/src/main/resources/assets/create/models/block/belt/diagonal_start.json deleted file mode 100644 index 0ae5d7615..000000000 --- a/src/main/resources/assets/create/models/block/belt/diagonal_start.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/belt_diagonal", - "particle": "create:block/belt_diagonal" - }, - "elements": [ - { - "name": "Top", - "from": [0.9, 11, 9.2], - "to": [15.1, 13, 15], - "faces": { - "east": {"uv": [14, 0, 16, 6], "rotation": 90, "texture": "#0"}, - "south": {"uv": [1, 6, 15, 7], "texture": "#0"}, - "west": {"uv": [0, 0, 2, 6], "rotation": 270, "texture": "#0"}, - "up": {"uv": [1, 0, 15, 6], "texture": "#0"}, - "down": {"uv": [1, 0, 15, 6], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top", - "from": [2.9, 10, 9.2], - "to": [13.1, 11, 14], - "faces": { - "east": {"uv": [3, 0, 4, 5], "rotation": 90, "texture": "#0"}, - "west": {"uv": [12, 0, 13, 5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [3, 0, 13, 4.8], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [0.9, 3, 5.9], - "to": [15.1, 5, 15], - "faces": { - "east": {"uv": [14, 6, 16, 15], "rotation": 270, "texture": "#0"}, - "south": {"uv": [1, 5, 15, 6], "texture": "#0"}, - "west": {"uv": [0, 6, 2, 15], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 6, 15, 15], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 6, 15, 15], "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [2.9, 5, 5.9], - "to": [13.1, 6, 14], - "faces": { - "east": {"uv": [3, 7, 4, 15], "rotation": 270, "texture": "#0"}, - "west": {"uv": [12, 7, 13, 15], "rotation": 90, "texture": "#0"}, - "up": {"uv": [3, 7, 13, 15], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Side", - "from": [1, 4, 14], - "to": [15, 12, 16], - "faces": { - "north": {"uv": [1, 8, 15, 16], "texture": "#0"}, - "east": {"uv": [14, 8, 16, 16], "texture": "#0"}, - "south": {"uv": [1, 8, 15, 16], "texture": "#0"}, - "west": {"uv": [0, 8, 2, 16], "texture": "#0"}, - "up": {"uv": [1, 7, 15, 8], "texture": "#0"}, - "down": {"uv": [1, 4, 15, 5], "texture": "#0"} - } - }, - { - "name": "Side", - "from": [2.9, 6, 13], - "to": [13.1, 10, 14], - "faces": { - "north": {"uv": [3, 10, 13, 14], "texture": "#0"}, - "east": {"uv": [3, 10, 4, 14], "texture": "#0"}, - "west": {"uv": [12, 10, 13, 14], "texture": "#0"} - } - }, - { - "name": "Top Diagonal", - "from": [1, 11, -3.325], - "to": [15, 13, 6.8], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [14, 4, 16, 14], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 4, 2, 14], "rotation": 270, "texture": "#0"}, - "up": {"uv": [1, 4, 15, 14], "texture": "#0"}, - "down": {"uv": [1, 4, 15, 14], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Top Diagonal", - "from": [3, 10, -3.325], - "to": [13, 11, 6.8], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [3, 4, 4, 14], "rotation": 90, "texture": "#0"}, - "west": {"uv": [12, 4, 13, 14], "rotation": 270, "texture": "#0"}, - "down": {"uv": [3, 4, 13, 14], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Bottom Diagonal", - "from": [1, 3, -3.325], - "to": [15, 5, 10.1], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [14, 3, 16, 16], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 3, 2, 16], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 3, 15, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 3, 15, 16], "texture": "#0"} - } - }, - { - "name": "Bottom Diagonal", - "from": [3, 5, -3.325], - "to": [13, 6, 10.1], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [2, 3, 3, 16], "rotation": 270, "texture": "#0"}, - "west": {"uv": [13, 3, 14, 16], "rotation": 90, "texture": "#0"}, - "up": {"uv": [3, 3, 13, 16], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/end.json b/src/main/resources/assets/create/models/block/belt/end.json deleted file mode 100644 index d8f167443..000000000 --- a/src/main/resources/assets/create/models/block/belt/end.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Top", - "from": [1, 11, 0], - "to": [15, 13, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [0, 1, 2, 16], "rotation": 270, "texture": "#0"}, - "south": {"uv": [1, 0, 15, 1], "rotation": 180, "texture": "#0"}, - "west": {"uv": [14, 1, 16, 16], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 1, 15, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 1, 15, 16], "texture": "#0"} - } - }, - { - "name": "Top", - "from": [3, 10, 0], - "to": [13, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [3, 2, 4, 16], "rotation": 270, "texture": "#0"}, - "west": {"uv": [12, 2, 13, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [3, 2, 13, 16], "texture": "#0"} - } - }, - { - "name": "Side", - "from": [1.1, 4, 14], - "to": [14.9, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [1, 8, 15, 16], "rotation": 180, "texture": "#0"}, - "east": {"uv": [0, 8, 2, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [1, 8, 15, 16], "rotation": 180, "texture": "#0"}, - "west": {"uv": [14, 8, 16, 16], "rotation": 180, "texture": "#0"}, - "up": {"uv": [1, 0, 15, 1], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 7, 15, 8], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Side", - "from": [3, 6, 13], - "to": [13, 10, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [3, 10, 13, 14], "rotation": 180, "texture": "#0"}, - "east": {"uv": [12, 10, 13, 14], "rotation": 180, "texture": "#0"}, - "west": {"uv": [3, 10, 4, 14], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/end_bottom.json b/src/main/resources/assets/create/models/block/belt/end_bottom.json deleted file mode 100644 index 1947f8302..000000000 --- a/src/main/resources/assets/create/models/block/belt/end_bottom.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/belt_offset" - }, - "elements": [ - { - "name": "Bottom", - "from": [1, 3, 0], - "to": [15, 5, 15], - "faces": { - "east": {"uv": [0, 0, 2, 15], "rotation": 90, "texture": "#1"}, - "south": {"uv": [1, 15, 15, 16], "rotation": 180, "texture": "#1"}, - "west": {"uv": [14, 0, 16, 15], "rotation": 270, "texture": "#1"}, - "up": {"uv": [1, 0, 15, 15], "texture": "#1"}, - "down": {"uv": [1, 0, 15, 15], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [3, 5, 0], - "to": [13, 6, 14], - "faces": { - "east": {"uv": [3, 0, 4, 14], "rotation": 90, "texture": "#1"}, - "west": {"uv": [12, 0, 13, 14], "rotation": 270, "texture": "#1"}, - "up": {"uv": [3, 0, 13, 14], "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/middle.json b/src/main/resources/assets/create/models/block/belt/middle.json deleted file mode 100644 index 3db35509a..000000000 --- a/src/main/resources/assets/create/models/block/belt/middle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Top", - "from": [1, 11, 0], - "to": [15, 13, 16], - "faces": { - "east": {"uv": [0, 0, 2, 16], "rotation": 270, "texture": "#0"}, - "west": {"uv": [14, 0, 16, 16], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 0, 15, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 0, 15, 16], "texture": "#0"} - } - }, - { - "name": "Top", - "from": [3, 10, 0], - "to": [13, 11, 16], - "faces": { - "east": {"uv": [12, 0, 13, 16], "rotation": 270, "texture": "#0"}, - "west": {"uv": [3, 0, 4, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [3, 0, 13, 16], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/middle_bottom.json b/src/main/resources/assets/create/models/block/belt/middle_bottom.json deleted file mode 100644 index 64454f09c..000000000 --- a/src/main/resources/assets/create/models/block/belt/middle_bottom.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/belt_offset" - }, - "elements": [ - { - "name": "Bottom", - "from": [1, 3, 0], - "to": [15, 5, 16], - "faces": { - "east": {"uv": [0, 0, 2, 16], "rotation": 90, "texture": "#1"}, - "west": {"uv": [14, 0, 16, 16], "rotation": 270, "texture": "#1"}, - "up": {"uv": [1, 0, 15, 16], "texture": "#1"}, - "down": {"uv": [1, 0, 15, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [3, 5, 0], - "to": [13, 6, 16], - "faces": { - "east": {"uv": [12, 0, 13, 16], "rotation": 90, "texture": "#1"}, - "west": {"uv": [3, 0, 4, 16], "rotation": 270, "texture": "#1"}, - "up": {"uv": [3, 0, 13, 16], "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/particle.json b/src/main/resources/assets/create/models/block/belt/particle.json deleted file mode 100644 index abb3be97e..000000000 --- a/src/main/resources/assets/create/models/block/belt/particle.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "textures": { - "particle": "create:block/belt" - }, - "elements": [ - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/start.json b/src/main/resources/assets/create/models/block/belt/start.json deleted file mode 100644 index c262e4bb5..000000000 --- a/src/main/resources/assets/create/models/block/belt/start.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/belt" - }, - "elements": [ - { - "name": "Top", - "from": [3, 10, 2], - "to": [13, 11, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [3, 0, 4, 14], "rotation": 270, "texture": "#0"}, - "west": {"uv": [12, 0, 13, 14], "rotation": 90, "texture": "#0"}, - "down": {"uv": [3, 0, 13, 14], "texture": "#0"} - } - }, - { - "name": "Top", - "from": [1, 11, 1], - "to": [15, 13, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [1, 15, 15, 16], "texture": "#0"}, - "east": {"uv": [0, 0, 2, 15], "rotation": 270, "texture": "#0"}, - "west": {"uv": [14, 0, 16, 15], "rotation": 90, "texture": "#0"}, - "up": {"uv": [1, 0, 15, 15], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 0, 15, 15], "texture": "#0"} - } - }, - { - "name": "Side", - "from": [1.1, 4, 0], - "to": [14.9, 12, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [1, 0, 15, 8], "texture": "#0"}, - "east": {"uv": [0, 0, 2, 8], "texture": "#0"}, - "south": {"uv": [1, 0, 15, 8], "texture": "#0"}, - "west": {"uv": [14, 0, 16, 8], "texture": "#0"}, - "up": {"uv": [1, 15, 15, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 8, 15, 9], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Side", - "from": [3, 6, 2], - "to": [13, 10, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [3, 6, 4, 10], "texture": "#0"}, - "south": {"uv": [3, 2, 13, 6], "texture": "#0"}, - "west": {"uv": [12, 6, 13, 10], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt/start_bottom.json b/src/main/resources/assets/create/models/block/belt/start_bottom.json deleted file mode 100644 index bacf34a55..000000000 --- a/src/main/resources/assets/create/models/block/belt/start_bottom.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/belt_offset" - }, - "elements": [ - { - "name": "Bottom", - "from": [1, 3, 1], - "to": [15, 5, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [1, 0, 15, 1], "texture": "#1"}, - "east": {"uv": [0, 1, 2, 16], "rotation": 90, "texture": "#1"}, - "west": {"uv": [14, 1, 16, 16], "rotation": 270, "texture": "#1"}, - "up": {"uv": [1, 1, 15, 16], "texture": "#1"}, - "down": {"uv": [1, 1, 15, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [3, 5, 2], - "to": [13, 6, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [12, 2, 13, 16], "rotation": 90, "texture": "#1"}, - "west": {"uv": [3, 2, 4, 16], "rotation": 270, "texture": "#1"}, - "up": {"uv": [3, 2, 13, 16], "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json deleted file mode 100644 index fba079751..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_end.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [1.1, 4, 2], - "to": [14.9, 11, 12], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [4, 5, 14, 12], "texture": "#8"}, - "west": {"uv": [2, 5, 12, 12], "texture": "#8"} - } - }, - { - "name": "Casing", - "from": [1.1, 11, 6], - "to": [14.9, 13, 10], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [6, 3, 10, 5], "texture": "#8"}, - "west": {"uv": [6, 3, 10, 5], "texture": "#8"} - } - }, - { - "name": "Top Diagonal", - "from": [-0.1, 2, 11.303], - "to": [16.1, 11, 19.328], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [8, 8, 12.025, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, - "up": {"uv": [12, 0, 16, 8], "rotation": 90, "texture": "#4"}, - "down": {"uv": [12, 0, 16, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [0, 0, 0], - "to": [16, 3, 4], - "faces": { - "north": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, - "east": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, - "up": {"uv": [8, 3, 16, 5], "texture": "#4"}, - "down": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [0, 3, 0], - "to": [1, 11, 4], - "faces": { - "north": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, - "east": {"uv": [6, 8, 8, 12], "texture": "#4"}, - "south": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, - "west": {"uv": [0, 8, 2, 12], "texture": "#4"}, - "up": {"uv": [0, 7.5, 2, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [15, 3, 0], - "to": [16, 11, 4], - "faces": { - "north": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, - "east": {"uv": [2, 8, 0, 12], "texture": "#4"}, - "south": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, - "west": {"uv": [8, 8, 6, 12], "texture": "#4"}, - "up": {"uv": [0, 8, 2, 7.5], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 4], - "to": [16, 5, 12], - "faces": { - "east": {"uv": [2, 11, 6, 13.5], "texture": "#4"}, - "west": {"uv": [2, 11, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 6], "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 90, "texture": "#4"} - } - } - ], - "groups": [0, 1, 2, - { - "name": "horizontal_start", - "origin": [8, 8, 8], - "children": [3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json deleted file mode 100644 index 30eacb4eb..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_middle.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/brass_casing_belt", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Top Diagonal", - "from": [-0.1, 2, -3.325], - "to": [16.1, 11, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [9.5, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [8, 8, 14.5, 12.5], "texture": "#4"}, - "up": {"uv": [9.5, 0, 16, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [9.5, 0, 16, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Top Diagonal", - "from": [-0.1, 2, 10], - "to": [16.1, 11, 19.3], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [8, 8, 13, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [11, 8, 16, 12.5], "texture": "#4"}, - "up": {"uv": [8, 0, 12.5, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 12.5, 8], "rotation": 270, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json deleted file mode 100644 index 51ce62cfd..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_pulley.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [1.1, 5, 2], - "to": [14.9, 11, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Casing", - "from": [1.1, 11, 6], - "to": [14.9, 13, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [6, 3, 10, 5], "texture": "#8"}, - "west": {"uv": [6, 3, 10, 5], "texture": "#8"} - } - }, - { - "name": "Left", - "from": [0, 0, 0], - "to": [16, 10, 5], - "faces": { - "north": {"uv": [8, 0, 13, 8], "rotation": 90, "texture": "#4"}, - "east": {"uv": [5.5, 3, 8, 8], "texture": "#4"}, - "south": {"uv": [8, 1.5, 16, 6.5], "texture": "#4"}, - "west": {"uv": [0, 3, 2.5, 8], "texture": "#4"}, - "down": {"uv": [13.5, 0, 16, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 5], - "to": [16, 5, 11], - "faces": { - "east": {"uv": [2.5, 5.5, 5.5, 8], "texture": "#4"}, - "west": {"uv": [2.5, 5.5, 5.5, 8], "texture": "#4"}, - "up": {"uv": [8, 2.5, 16, 5.5], "texture": "#4"}, - "down": {"uv": [10.5, 0, 13.5, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Top Diagonal", - "from": [-0.1, 2, -3.325], - "to": [16.1, 11, 4.7], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, - "up": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Top Diagonal", - "from": [-0.1, 2, 11.275], - "to": [16.1, 11, 19.3], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, - "up": {"uv": [8, 0, 12, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 12, 8], "rotation": 270, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json b/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json deleted file mode 100644 index bbc8e8963..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/diagonal_start.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [1.1, 5, 2], - "to": [14.9, 11, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Casing", - "from": [1.1, 11, 6], - "to": [14.9, 13, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [6, 3, 10, 5], "texture": "#8"}, - "west": {"uv": [6, 3, 10, 5], "texture": "#8"} - } - }, - { - "name": "Top Diagonal", - "from": [-0.1, 2, -3.325], - "to": [16.1, 11, 4.7], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "east": {"uv": [12, 8, 16, 12.5], "texture": "#4"}, - "south": {"uv": [8, 8, 16, 12.5], "texture": "#4"}, - "west": {"uv": [8, 8, 12, 12.5], "texture": "#4"}, - "up": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [12, 0, 16, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [0, 0, 12], - "to": [16, 3, 16], - "faces": { - "east": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, - "south": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, - "west": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, - "up": {"uv": [8, 3, 16, 5], "rotation": 180, "texture": "#4"}, - "down": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [15, 3, 12], - "to": [16, 11, 16], - "faces": { - "north": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, - "east": {"uv": [0, 8, 2, 12], "texture": "#4"}, - "south": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, - "west": {"uv": [6, 8, 8, 12], "texture": "#4"}, - "up": {"uv": [0, 7.5, 2, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [0, 3, 12], - "to": [1, 11, 16], - "faces": { - "north": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, - "east": {"uv": [8, 8, 6, 12], "texture": "#4"}, - "south": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, - "west": {"uv": [2, 8, 0, 12], "texture": "#4"}, - "up": {"uv": [0, 8, 2, 7.5], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Right", - "from": [0, 0, 0], - "to": [16, 11, 5], - "faces": { - "north": {"uv": [8, 0, 13.5, 8], "rotation": 90, "texture": "#4"}, - "east": {"uv": [5.5, 2.5, 8, 8], "texture": "#4"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 8, 2.5, 13.5], "texture": "#4"}, - "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 5], - "to": [16, 5, 12], - "faces": { - "east": {"uv": [2, 11, 5.5, 13.5], "texture": "#4"}, - "west": {"uv": [2.5, 11, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 5.5], "rotation": 180, "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} - } - } - ], - "groups": [0, 1, 2, - { - "name": "horizontal_start", - "origin": [8, 8, 8], - "children": [3, 4, 5, 6, 7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json deleted file mode 100644 index 9e1bd4f0e..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_end.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [1, 5, 2], - "to": [15, 11, 14], - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Left", - "from": [0, 0, 12], - "to": [16, 3, 16], - "faces": { - "east": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, - "south": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, - "west": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, - "up": {"uv": [8, 3, 16, 5], "rotation": 180, "texture": "#4"}, - "down": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [15, 3, 12], - "to": [16, 11, 16], - "faces": { - "north": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, - "east": {"uv": [0, 8, 2, 12], "texture": "#4"}, - "south": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, - "west": {"uv": [6, 8, 8, 12], "texture": "#4"}, - "up": {"uv": [0, 7.5, 2, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [0, 3, 12], - "to": [1, 11, 16], - "faces": { - "north": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, - "east": {"uv": [8, 8, 6, 12], "texture": "#4"}, - "south": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, - "west": {"uv": [2, 8, 0, 12], "texture": "#4"}, - "up": {"uv": [0, 8, 2, 7.5], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Right", - "from": [0, 0, 0], - "to": [16, 11, 4], - "faces": { - "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "east": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, - "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 4], - "to": [16, 4, 12], - "faces": { - "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 6], "rotation": 180, "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json deleted file mode 100644 index d72517e08..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_middle.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_casing_belt", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [0, 0, 0], - "to": [16, 11, 16], - "faces": { - "north": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, - "east": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, - "west": {"uv": [0, 8, 8, 13.5], "texture": "#3"}, - "up": {"uv": [0, 0, 8, 8], "rotation": 90, "texture": "#3"}, - "down": {"uv": [8, 0, 16, 8], "rotation": 90, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json deleted file mode 100644 index a0d43fd8c..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_pulley.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [1, 5, 2], - "to": [15, 11, 14], - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Right", - "from": [0, 0, 0], - "to": [16, 11, 4], - "faces": { - "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "east": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, - "up": {"uv": [6, 0, 8, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [8, 0, 10, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Right", - "from": [0, 0, 12], - "to": [16, 11, 16], - "faces": { - "north": {"uv": [8, 8, 0, 13.5], "texture": "#4"}, - "east": {"uv": [8, 8, 6, 13.5], "texture": "#4"}, - "south": {"uv": [8, 8, 0, 13.5], "texture": "#4"}, - "west": {"uv": [2, 8, 0, 13.5], "texture": "#4"}, - "up": {"uv": [8, 0, 6, 8], "rotation": 270, "texture": "#4"}, - "down": {"uv": [10, 0, 8, 8], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 4], - "to": [16, 4, 12], - "faces": { - "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 6], "rotation": 180, "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 270, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json b/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json deleted file mode 100644 index 042448aab..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/horizontal_start.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [1, 5, 2], - "to": [15, 11, 14], - "faces": { - "east": {"uv": [2, 5, 14, 11], "texture": "#8"}, - "west": {"uv": [2, 5, 14, 11], "texture": "#8"} - } - }, - { - "name": "Left", - "from": [0, 0, 0], - "to": [16, 3, 4], - "faces": { - "north": {"uv": [0, 12, 8, 13.5], "texture": "#4"}, - "east": {"uv": [6, 12, 8, 13.5], "texture": "#4"}, - "west": {"uv": [0, 12, 2, 13.5], "texture": "#4"}, - "up": {"uv": [8, 3, 16, 5], "texture": "#4"}, - "down": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [0, 3, 0], - "to": [1, 11, 4], - "faces": { - "north": {"uv": [7.5, 8, 8, 12], "texture": "#4"}, - "east": {"uv": [6, 8, 8, 12], "texture": "#4"}, - "south": {"uv": [0, 8, 0.5, 12], "texture": "#4"}, - "west": {"uv": [0, 8, 2, 12], "texture": "#4"}, - "up": {"uv": [0, 7.5, 2, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Left", - "from": [15, 3, 0], - "to": [16, 11, 4], - "faces": { - "north": {"uv": [8, 8, 7.5, 12], "texture": "#4"}, - "east": {"uv": [2, 8, 0, 12], "texture": "#4"}, - "south": {"uv": [0.5, 8, 0, 12], "texture": "#4"}, - "west": {"uv": [8, 8, 6, 12], "texture": "#4"}, - "up": {"uv": [0, 8, 2, 7.5], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Right", - "from": [0, 0, 12], - "to": [16, 11, 16], - "faces": { - "north": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "east": {"uv": [0, 8, 2, 13.5], "texture": "#4"}, - "south": {"uv": [0, 8, 8, 13.5], "texture": "#4"}, - "west": {"uv": [6, 8, 8, 13.5], "texture": "#4"}, - "up": {"uv": [6, 0, 8, 8], "rotation": 90, "texture": "#4"}, - "down": {"uv": [8, 0, 10, 8], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Down", - "from": [0, 0, 4], - "to": [16, 4, 12], - "faces": { - "east": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "west": {"uv": [2, 11.5, 6, 13.5], "texture": "#4"}, - "up": {"uv": [8, 2, 16, 6], "texture": "#4"}, - "down": {"uv": [10, 0, 14, 8], "rotation": 90, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json deleted file mode 100644 index c35d0e2ec..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/sideways_end.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [5, 0, 0], - "to": [11, 16, 4], - "faces": { - "north": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 0, 8, 8], "texture": "#3"}, - "south": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [0, 0, 2, 8], "texture": "#3"}, - "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"}, - "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [5, 15, 12], - "to": [11, 16, 16], - "faces": { - "north": {"uv": [8, 12.5, 8.5, 15.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0, 2, 0.5], "texture": "#3"}, - "south": {"uv": [8, 12.5, 8.5, 15.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 0, 8, 0.5], "texture": "#3"}, - "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"}, - "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [2, 14, 2], - "to": [5, 16, 14], - "faces": { - "north": {"uv": [6.5, 12.5, 8, 13.5], "texture": "#3"}, - "east": {"uv": [0, 13.5, 6, 14.5], "texture": "#3"}, - "south": {"uv": [0, 12.5, 1.5, 13.5], "texture": "#3"}, - "west": {"uv": [1, 12.5, 7, 13.5], "texture": "#3"}, - "up": {"uv": [0, 13.5, 6, 15], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 13.5, 6, 15], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [2, 0, 2], - "to": [5, 2, 14], - "faces": { - "north": {"uv": [6.5, 13.5, 8, 12.5], "texture": "#3"}, - "east": {"uv": [0, 14.5, 6, 13.5], "texture": "#3"}, - "south": {"uv": [0, 13.5, 1.5, 12.5], "texture": "#3"}, - "west": {"uv": [1, 13.5, 7, 12.5], "texture": "#3"}, - "up": {"uv": [6, 13.5, 0, 15], "rotation": 90, "texture": "#3"}, - "down": {"uv": [6, 13.5, 0, 15], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [11, 14, 2], - "to": [14, 16, 14], - "faces": { - "north": {"uv": [8, 12.5, 6.5, 13.5], "texture": "#3"}, - "east": {"uv": [7, 12.5, 1, 13.5], "texture": "#3"}, - "south": {"uv": [1.5, 12.5, 0, 13.5], "texture": "#3"}, - "west": {"uv": [6, 13.5, 0, 14.5], "texture": "#3"}, - "up": {"uv": [0, 15, 6, 13.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 15, 6, 13.5], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [11, 0, 2], - "to": [14, 2, 14], - "faces": { - "north": {"uv": [8, 13.5, 6.5, 12.5], "texture": "#3"}, - "east": {"uv": [7, 13.5, 1, 12.5], "texture": "#3"}, - "south": {"uv": [1.5, 13.5, 0, 12.5], "texture": "#3"}, - "west": {"uv": [6, 14.5, 0, 13.5], "texture": "#3"}, - "up": {"uv": [6, 15, 0, 13.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [6, 15, 0, 13.5], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [5, 0, 12], - "to": [11, 1, 16], - "faces": { - "north": {"uv": [8.5, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0.5, 2, 0], "texture": "#3"}, - "south": {"uv": [8.5, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 0.5, 8, 0], "texture": "#3"}, - "up": {"uv": [10, 12.5, 8, 15.5], "rotation": 270, "texture": "#3"}, - "down": {"uv": [10, 12.5, 8, 15.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [5, 1, 2], - "to": [11, 15, 14], - "faces": { - "up": {"uv": [2, 5, 14, 11], "rotation": 90, "texture": "#8"}, - "down": {"uv": [2, 5, 14, 11], "rotation": 90, "texture": "#8"} - } - } - ], - "groups": [ - { - "name": "horizontal_middle", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - }, - { - "name": "horizontal_start", - "origin": [8, 8, 8], - "children": [7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json deleted file mode 100644 index 9886764c4..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/sideways_middle.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_casing_belt", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [5, 0, 0], - "to": [11, 16, 16], - "faces": { - "north": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0, 8, 8], "rotation": 270, "texture": "#3"}, - "south": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [0, 0, 8, 8], "texture": "#3"}, - "up": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "horizontal_middle", - "origin": [8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json deleted file mode 100644 index 0f8653d94..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/sideways_pulley.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [5, 0, 0], - "to": [11, 16, 4], - "faces": { - "north": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 0, 8, 8], "texture": "#3"}, - "south": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [0, 0, 2, 8], "texture": "#3"}, - "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"}, - "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [5, 0, 12], - "to": [11, 16, 16], - "faces": { - "north": {"uv": [8, 15.5, 16, 12.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [8, 0, 6, 8], "texture": "#3"}, - "south": {"uv": [8, 15.5, 16, 12.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [2, 0, 0, 8], "texture": "#3"}, - "up": {"uv": [10, 12.5, 8, 15.5], "rotation": 270, "texture": "#3"}, - "down": {"uv": [10, 12.5, 8, 15.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [2, 14, 2], - "to": [5, 16, 14], - "faces": { - "north": {"uv": [6.5, 12.5, 8, 13.5], "texture": "#3"}, - "east": {"uv": [0, 13.5, 6, 14.5], "texture": "#3"}, - "south": {"uv": [0, 12.5, 1.5, 13.5], "texture": "#3"}, - "west": {"uv": [1, 12.5, 7, 13.5], "texture": "#3"}, - "up": {"uv": [0, 13.5, 6, 15], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 13.5, 6, 15], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [2, 0, 2], - "to": [5, 2, 14], - "faces": { - "north": {"uv": [6.5, 13.5, 8, 12.5], "texture": "#3"}, - "east": {"uv": [0, 14.5, 6, 13.5], "texture": "#3"}, - "south": {"uv": [0, 13.5, 1.5, 12.5], "texture": "#3"}, - "west": {"uv": [1, 13.5, 7, 12.5], "texture": "#3"}, - "up": {"uv": [6, 13.5, 0, 15], "rotation": 90, "texture": "#3"}, - "down": {"uv": [6, 13.5, 0, 15], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [11, 14, 2], - "to": [14, 16, 14], - "faces": { - "north": {"uv": [8, 12.5, 6.5, 13.5], "texture": "#3"}, - "east": {"uv": [7, 12.5, 1, 13.5], "texture": "#3"}, - "south": {"uv": [1.5, 12.5, 0, 13.5], "texture": "#3"}, - "west": {"uv": [6, 13.5, 0, 14.5], "texture": "#3"}, - "up": {"uv": [0, 15, 6, 13.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 15, 6, 13.5], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [11, 0, 2], - "to": [14, 2, 14], - "faces": { - "north": {"uv": [8, 13.5, 6.5, 12.5], "texture": "#3"}, - "east": {"uv": [7, 13.5, 1, 12.5], "texture": "#3"}, - "south": {"uv": [1.5, 13.5, 0, 12.5], "texture": "#3"}, - "west": {"uv": [6, 14.5, 0, 13.5], "texture": "#3"}, - "up": {"uv": [6, 15, 0, 13.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [6, 15, 0, 13.5], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [5, 1, 2], - "to": [11, 15, 14], - "faces": { - "up": {"uv": [2, 5, 14, 11], "rotation": 90, "texture": "#8"}, - "down": {"uv": [2, 5, 14, 11], "rotation": 90, "texture": "#8"} - } - } - ], - "groups": [ - { - "name": "horizontal_middle", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - }, - { - "name": "horizontal_start", - "origin": [8, 8, 8], - "children": [6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json b/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json deleted file mode 100644 index b4409d0bb..000000000 --- a/src/main/resources/assets/create/models/block/belt_casing/sideways_start.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_casing_belt", - "8": "create:block/gearbox", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Casing", - "from": [5, 0, 12], - "to": [11, 16, 16], - "faces": { - "north": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0, 2, 8], "texture": "#3"}, - "south": {"uv": [8, 12.5, 16, 15.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 0, 8, 8], "texture": "#3"}, - "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [5, 15, 0], - "to": [11, 16, 4], - "faces": { - "north": {"uv": [8, 12.5, 8.5, 15.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 0, 8, 0.5], "texture": "#3"}, - "south": {"uv": [8, 12.5, 8.5, 15.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [0, 0, 2, 0.5], "texture": "#3"}, - "up": {"uv": [8, 12.5, 10, 15.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [8, 12.5, 10, 15.5], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [11, 14, 2], - "to": [14, 16, 14], - "faces": { - "north": {"uv": [0, 12.5, 1.5, 13.5], "texture": "#3"}, - "east": {"uv": [1, 12.5, 7, 13.5], "texture": "#3"}, - "south": {"uv": [6.5, 12.5, 8, 13.5], "texture": "#3"}, - "west": {"uv": [0, 13.5, 6, 14.5], "texture": "#3"}, - "up": {"uv": [0, 13.5, 6, 15], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 13.5, 6, 15], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [11, 0, 2], - "to": [14, 2, 14], - "faces": { - "north": {"uv": [0, 13.5, 1.5, 12.5], "texture": "#3"}, - "east": {"uv": [1, 13.5, 7, 12.5], "texture": "#3"}, - "south": {"uv": [6.5, 13.5, 8, 12.5], "texture": "#3"}, - "west": {"uv": [0, 14.5, 6, 13.5], "texture": "#3"}, - "up": {"uv": [6, 13.5, 0, 15], "rotation": 270, "texture": "#3"}, - "down": {"uv": [6, 13.5, 0, 15], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [2, 14, 2], - "to": [5, 16, 14], - "faces": { - "north": {"uv": [1.5, 12.5, 0, 13.5], "texture": "#3"}, - "east": {"uv": [6, 13.5, 0, 14.5], "texture": "#3"}, - "south": {"uv": [8, 12.5, 6.5, 13.5], "texture": "#3"}, - "west": {"uv": [7, 12.5, 1, 13.5], "texture": "#3"}, - "up": {"uv": [0, 15, 6, 13.5], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 15, 6, 13.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [2, 0, 2], - "to": [5, 2, 14], - "faces": { - "north": {"uv": [1.5, 13.5, 0, 12.5], "texture": "#3"}, - "east": {"uv": [6, 14.5, 0, 13.5], "texture": "#3"}, - "south": {"uv": [8, 13.5, 6.5, 12.5], "texture": "#3"}, - "west": {"uv": [7, 13.5, 1, 12.5], "texture": "#3"}, - "up": {"uv": [6, 15, 0, 13.5], "rotation": 270, "texture": "#3"}, - "down": {"uv": [6, 15, 0, 13.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [5, 0, 0], - "to": [11, 1, 4], - "faces": { - "north": {"uv": [8.5, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 0.5, 8, 0], "texture": "#3"}, - "south": {"uv": [8.5, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [0, 0.5, 2, 0], "texture": "#3"}, - "up": {"uv": [10, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [10, 12.5, 8, 15.5], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Casing", - "from": [5, 1, 2], - "to": [11, 15, 14], - "faces": { - "up": {"uv": [2, 5, 14, 11], "rotation": 270, "texture": "#8"}, - "down": {"uv": [2, 5, 14, 11], "rotation": 270, "texture": "#8"} - } - } - ], - "groups": [ - { - "name": "horizontal_middle", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - }, - { - "name": "horizontal_start", - "origin": [8, 8, 8], - "children": [7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json b/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json deleted file mode 100644 index 447d36f7a..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_connected.json +++ /dev/null @@ -1,232 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/brass_funnel_neutral", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [14, -3, 5], - "to": [16, 0, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [8, 8, 9, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"} - } - }, - { - "name": "LeftWall", - "from": [0, -3, 5], - "to": [2, 0, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "LeftWall", - "from": [0, 0, 5], - "to": [16, 16, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [8, 0, 16, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 8, 3], "texture": "#7"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 5], - "to": [16, -3, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 5], - "to": [1, -3, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "down": {"uv": [1, 0, 0, 6], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 11], - "to": [16, -2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 11]}, - "faces": { - "east": {"uv": [5, 14.5, 7.5, 16], "texture": "#7"}, - "south": {"uv": [7.5, 13, 8, 14.5], "texture": "#7"}, - "west": {"uv": [5.5, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 0, 1, 5], "texture": "#particle"}, - "down": {"uv": [0, 0, 1, 5], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 11], - "to": [1, -2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 11]}, - "faces": { - "east": {"uv": [8, 14.5, 5.5, 16], "texture": "#7"}, - "south": {"uv": [8, 13, 7.5, 14.5], "texture": "#7"}, - "west": {"uv": [7.5, 14.5, 5, 16], "texture": "#7"}, - "up": {"uv": [1, 0, 0, 5], "texture": "#particle"}, - "down": {"uv": [1, 0, 0, 5], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 0], - "to": [16, -2, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [8, 13, 7.5, 14.5], "texture": "#7"}, - "east": {"uv": [7.5, 14.5, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 14.5, 5.5, 16], "texture": "#7"}, - "up": {"uv": [0, 5, 1, 0], "texture": "#particle"}, - "down": {"uv": [0, 5, 1, 0], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 0], - "to": [1, -2, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 5]}, - "faces": { - "north": {"uv": [7.5, 13, 8, 14.5], "texture": "#7"}, - "east": {"uv": [5.5, 14.5, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 14.5, 7.5, 16], "texture": "#7"}, - "up": {"uv": [1, 5, 0, 0], "texture": "#particle"}, - "down": {"uv": [1, 5, 0, 0], "texture": "#particle"} - } - }, - { - "name": "BackExtension", - "from": [3, -2, 10], - "to": [13, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [9, 6, 16, 8], "rotation": 90, "texture": "#3"}, - "west": {"uv": [9, 6, 16, 8], "rotation": 270, "texture": "#3"}, - "up": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"} - } - }, - { - "name": "BackExtension", - "from": [3, -2, 2], - "to": [13, 13, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 10]}, - "faces": { - "east": {"uv": [9, 8, 16, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [9, 8, 16, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [9.5, 4, 14.5, 2], "texture": "#3"} - } - }, - { - "name": "MidExtension", - "from": [2, -2, 8], - "to": [14, 14, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "MidExtension", - "from": [2, -2, 4], - "to": [14, 14, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [8, 6, 16, 0], "rotation": 270, "texture": "#3"}, - "east": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"}, - "up": {"uv": [8, 0, 6, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, -2.1], - "to": [13.9, 13.95, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 10]}, - "faces": { - "north": {"uv": [15, 1, 9, 9], "texture": "#7"}, - "east": {"uv": [0, 4, 16, 0], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 16, 16, 4], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 4, 16, 0], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 4, 12, 0], "texture": "#6"}, - "down": {"uv": [0, 4, 12, 0], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "north": {"uv": [0, 4, 16, 16], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "RearBackPlate", - "from": [1, -5, 0], - "to": [15, -2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, - "faces": { - "north": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 0, 15, 16], "texture": "#particle"}, - "down": {"uv": [1, 0, 15, 16], "texture": "#particle"} - } - } - ], - "groups": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8] - }, - { - "name": "Extension", - "origin": [9, -4, 8], - "children": [9, 10, 11, 12] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [13, 14, 15] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json deleted file mode 100644 index 073985dd2..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ /dev/null @@ -1,200 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/brass_funnel_neutral", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [14, -3, 0], - "to": [16, 0, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [14, 10, 16, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [2, 0, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 10, 2, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [14, 0, 0], - "to": [16, 16, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2"} - } - }, - { - "name": "LeftWall", - "from": [0, 0, 0], - "to": [2, 16, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, 10, 0], - "to": [14, 16, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 0]}, - "faces": { - "north": {"uv": [9, 13, 15, 16], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 0], - "to": [16, -3, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [0, 9.5, 0.5, 10.5], "texture": "#7"}, - "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 0], - "to": [1, -3, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]}, - "faces": { - "north": {"uv": [7.5, 9.5, 8, 10.5], "texture": "#7"}, - "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} - } - }, - { - "name": "BackExtension", - "from": [3, -2, 10], - "to": [13, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [9, 6, 16, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 0.5, 8, 6.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [9, 6, 16, 8], "rotation": 270, "texture": "#3"}, - "up": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"} - } - }, - { - "name": "MidExtension", - "from": [2, -2, 6], - "to": [14, 14, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "north": {"uv": [0, 6, 6, 14], "texture": "#3"}, - "east": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "north": {"uv": [0, 4, 16, 16], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "RearBackPlate", - "from": [1, -5, 5], - "to": [15, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, - "faces": { - "north": {"uv": [1, 13, 15, 16], "texture": "#particle"}, - "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 5, 15, 16], "texture": "#particle"}, - "down": {"uv": [1, 0, 15, 11], "texture": "#particle"} - } - }, - { - "name": "BackPlateLeft", - "from": [15, -5, 6], - "to": [16, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [0, 14.5, 5, 16], "texture": "#7"}, - "south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 14.5, 5.5, 15], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 10], "texture": "#particle"} - } - }, - { - "name": "BackPlateLeft", - "from": [0, -5, 6], - "to": [1, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"}, - "west": {"uv": [5, 14.5, 0, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 5.5, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 10], "texture": "#particle"} - } - } - ], - "groups": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - }, - { - "name": "Extension", - "origin": [9, -4, 8], - "children": [7, 8] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [9, 10, 11, 12] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json deleted file mode 100644 index d59a3ae68..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "2_2": "create:block/brass_funnel_pull", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [14, -2, 6], - "to": [16.05, 1, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_2"}, - "down": {"uv": [14, 0, 16, 6], "texture": "#2_2"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, -2, 6], - "to": [2, 1, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_2"}, - "down": {"uv": [0, 0, 2, 6], "texture": "#2_2"} - } - }, - { - "name": "LeftWall", - "from": [14, 1, 6], - "to": [16.05, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_2"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2_2"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, 1, 6], - "to": [2, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2_2"} - } - }, - { - "name": "Top", - "from": [2, 11, 6], - "to": [14, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2_2"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, - "faces": { - "north": {"uv": [0, 6, 6, 14], "texture": "#3"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Back", - "from": [2.1, 2.9, 11.9], - "to": [13.9, 13.95, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 22]}, - "faces": { - "east": {"uv": [5, 1, 16, 3], "rotation": 270, "texture": "#5"}, - "west": {"uv": [5, 3, 16, 1], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 3, 12, 1], "texture": "#6"} - } - }, - { - "name": "RearBackPlate", - "from": [0.05, -5, 13], - "to": [15.95, -2, 15.95], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, - "faces": { - "north": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "east": {"uv": [6.5, 14.5, 8, 16], "texture": "#7"}, - "south": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "west": {"uv": [0, 14.5, 1.5, 16], "texture": "#7"}, - "up": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "down": {"uv": [0, 13, 8, 14.5], "texture": "#7"} - } - }, - { - "name": "RearBackPlate", - "from": [2, 9.9, 9], - "to": [14, 11.9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, - "faces": { - "down": {"uv": [2, 6, 14, 13], "texture": "#2_2"} - } - }, - { - "from": [1, 8, 11], - "to": [15, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, - "faces": { - "east": {"uv": [1, 6.5, 4.5, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 4.5, 7.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "block_retracted", - "origin": [8, 8, 8], - "children": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [5, 6, 7, 8] - } - ] - }, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json deleted file mode 100644 index 4fbd350ed..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "2_1": "create:block/brass_funnel_push", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [14, -2, 6], - "to": [16.05, 1, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_1"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2_1"}, - "down": {"uv": [14, 0, 16, 6], "texture": "#2_1"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, -2, 6], - "to": [2, 1, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_1"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2_1"}, - "down": {"uv": [0, 0, 2, 6], "texture": "#2_1"} - } - }, - { - "name": "LeftWall", - "from": [14, 1, 6], - "to": [16.05, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_1"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_1"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2_1"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, 1, 6], - "to": [2, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_1"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_1"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2_1"} - } - }, - { - "name": "Top", - "from": [2, 11, 6], - "to": [14, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2_1"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2_1"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, - "faces": { - "north": {"uv": [0, 6, 6, 14], "texture": "#3"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Back", - "from": [2.1, 2.9, 11.9], - "to": [13.9, 13.95, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 22]}, - "faces": { - "east": {"uv": [5, 1, 16, 3], "rotation": 270, "texture": "#5"}, - "west": {"uv": [5, 3, 16, 1], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 3, 12, 1], "texture": "#6"} - } - }, - { - "name": "RearBackPlate", - "from": [0.05, -5, 13], - "to": [15.95, -2, 15.95], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, - "faces": { - "north": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "east": {"uv": [6.5, 14.5, 8, 16], "texture": "#7"}, - "south": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "west": {"uv": [0, 14.5, 1.5, 16], "texture": "#7"}, - "up": {"uv": [0, 13, 8, 14.5], "texture": "#7"}, - "down": {"uv": [0, 13, 8, 14.5], "texture": "#7"} - } - }, - { - "name": "RearBackPlate", - "from": [2, 9.9, 9], - "to": [14, 11.9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, - "faces": { - "down": {"uv": [2, 6, 14, 13], "texture": "#2_1"} - } - }, - { - "from": [1, 8, 11], - "to": [15, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, - "faces": { - "east": {"uv": [1, 6.5, 4.5, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 4.5, 7.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "block_retracted", - "origin": [8, 8, 8], - "children": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [5, 6, 7, 8] - } - ] - }, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json deleted file mode 100644 index 6336e2bd4..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "texture_size": [32, 32], - "textures": { - "2": "create:block/brass_funnel_neutral", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [14, -3, 8], - "to": [16, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [14, 10, 16, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [0, -3, 8], - "to": [2, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 10, 2, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [14, 0, 8], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2"} - } - }, - { - "name": "LeftWall", - "from": [0, 0, 8], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, 10, 8], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 8]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, -2, 12], - "to": [14, 10, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -14, 8]}, - "faces": { - "north": {"uv": [0, 8, 6, 14], "texture": "#3"}, - "south": {"uv": [9, 3, 15, 9.5], "texture": "#7"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 8], - "to": [16, -3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 0.5, 10.5], "texture": "#7"}, - "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 8], - "to": [1, -3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7.5, 9.5, 8, 10.5], "texture": "#7"}, - "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, - "faces": { - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "RearBackPlate", - "from": [1, -5, 10], - "to": [15, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, - "faces": { - "north": {"uv": [1, 13, 15, 16], "texture": "#particle"}, - "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 10, 15, 16], "texture": "#particle"} - } - }, - { - "name": "BackPlateLeft", - "from": [15, -5, 14], - "to": [16, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [0, 14.5, 1, 16], "texture": "#7"}, - "south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"}, - "west": {"uv": [7, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} - } - }, - { - "name": "BackPlateLeft", - "from": [0, -5, 14], - "to": [1, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [8, 14.5, 7, 16], "texture": "#7"}, - "south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"}, - "west": {"uv": [1, 14.5, 0, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} - } - }, - { - "from": [1, -2, 14], - "to": [15, 15, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]}, - "faces": { - "east": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 6.5, 6], "rotation": 90, "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [8, 9, 10, 11] - } - ] - }, 12] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/flap.json b/src/main/resources/assets/create/models/block/belt_funnel/flap.json deleted file mode 100644 index 2cc22b0b7..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/flap.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "4": "create:block/brass_funnel_back" - }, - "elements": [ - { - "name": "F4", - "from": [11, -3, 9], - "to": [14, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, - "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#4"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#4"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#4"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#4"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#4"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_pulley.json b/src/main/resources/assets/create/models/block/belt_pulley.json deleted file mode 100644 index df86f499c..000000000 --- a/src/main/resources/assets/create/models/block/belt_pulley.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "2": "block/dark_oak_log", - "3": "block/dark_oak_log_top", - "particle": "block/dark_oak_log" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#1"} - } - }, - { - "name": "Pulley", - "from": [4, 2, 5], - "to": [8, 14, 11], - "faces": { - "north": {"uv": [5, 2, 9, 14], "texture": "#2"}, - "south": {"uv": [5, 2, 9, 14], "texture": "#2"}, - "west": {"uv": [5, 2, 11, 14], "texture": "#2"}, - "up": {"uv": [0, 5, 4, 11], "texture": "#3"}, - "down": {"uv": [0, 5, 4, 11], "texture": "#3"} - } - }, - { - "name": "Pulley", - "from": [8, 2, 5], - "to": [12, 14, 11], - "faces": { - "north": {"uv": [5, 2, 9, 14], "texture": "#2"}, - "east": {"uv": [5, 2, 11, 14], "texture": "#2"}, - "south": {"uv": [5, 2, 9, 14], "texture": "#2"}, - "up": {"uv": [12, 5, 16, 11], "texture": "#3"}, - "down": {"uv": [12, 5, 16, 11], "texture": "#3"} - } - }, - { - "name": "Pulley", - "from": [5, 2, 4], - "to": [11, 14, 5], - "faces": { - "north": {"uv": [5, 2, 11, 14], "texture": "#2"}, - "east": {"uv": [5, 2, 6, 14], "texture": "#2"}, - "west": {"uv": [5, 2, 6, 14], "texture": "#2"}, - "up": {"uv": [8, 15, 14, 16], "texture": "#3"}, - "down": {"uv": [6, 15, 12, 16], "texture": "#3"} - } - }, - { - "name": "Pulley", - "from": [5, 2, 11], - "to": [11, 14, 12], - "faces": { - "east": {"uv": [6, 2, 5, 14], "texture": "#2"}, - "south": {"uv": [11, 2, 5, 14], "texture": "#2"}, - "west": {"uv": [6, 2, 5, 14], "texture": "#2"}, - "up": {"uv": [3, 1, 9, 0], "texture": "#3"}, - "down": {"uv": [4, 1, 10, 0], "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/cross.json b/src/main/resources/assets/create/models/block/belt_tunnel/cross.json deleted file mode 100644 index 4f161e41a..000000000 --- a/src/main/resources/assets/create/models/block/belt_tunnel/cross.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [2, 10, 0], - "to": [14, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "south": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "texture": "#2"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "LeftT", - "from": [0, -3, 14], - "to": [2, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftT", - "from": [0, -3, 0], - "to": [2, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "RightT", - "from": [14, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "RightT", - "from": [14, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 2, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftTRail", - "from": [0, -5, 15], - "to": [1, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, - "faces": { - "north": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "LeftTRail", - "from": [0, -5, 0], - "to": [1, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "RIghtTRail", - "from": [15, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, - "faces": { - "north": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "RIghtTRail", - "from": [15, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "TTop", - "from": [2, 10, 14], - "to": [14, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "south": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "texture": "#2"} - } - }, - { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, - "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "Cover", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json deleted file mode 100644 index a79b4102f..000000000 --- a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "4": "create:block/brass_tunnel" - }, - "elements": [ - { - "name": "F4", - "from": [11, -3, 1], - "to": [14, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, - "faces": { - "north": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#4"}, - "east": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#4"}, - "south": {"uv": [9.5, 16, 16, 14.5], "rotation": 90, "texture": "#4"}, - "west": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 270, "texture": "#4"}, - "down": {"uv": [9.5, 14.5, 10, 16], "rotation": 270, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/item.json b/src/main/resources/assets/create/models/block/belt_tunnel/item.json deleted file mode 100644 index 387034dcc..000000000 --- a/src/main/resources/assets/create/models/block/belt_tunnel/item.json +++ /dev/null @@ -1,256 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "RightWall", - "from": [0, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9], "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftRail", - "from": [0, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "RightRail", - "from": [0, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, - "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "F1", - "from": [0.5, -2.5, 2], - "to": [1.5, 10.5, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 2]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F2", - "from": [0.5, -2.5, 5], - "to": [1.5, 10.5, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 5]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F3", - "from": [0.5, -2.5, 8], - "to": [1.5, 10.5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 8]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F4", - "from": [0.5, -2.5, 11], - "to": [1.5, 10.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-38.5, -5.5, 11]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F5", - "from": [14.5, -2.5, 11], - "to": [15.5, 10.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -5.5, 11]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F6", - "from": [14.5, -2.5, 8], - "to": [15.5, 10.5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -5.5, 8]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F7", - "from": [14.5, -2.5, 5], - "to": [15.5, 10.5, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -5.5, 5]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - }, - { - "name": "F8", - "from": [14.5, -2.5, 2], - "to": [15.5, 10.5, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -5.5, 2]}, - "faces": { - "north": {"uv": [9.5, 15.5, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [9.5, 14.5, 16, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [9.5, 14.5, 16, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9.5, 14.5, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [15.5, 14.5, 16, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [15.5, 14.5, 16, 16], "texture": "#2"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3.25, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 135, 0], - "translation": [0, 1, 0], - "scale": [0.5, 0.5, 0.5] - }, - "head": { - "rotation": [0, 90, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "Cover", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - }, - { - "name": "Flap", - "origin": [8, 8, 8], - "children": [7, 8, 9, 10, 11, 12, 13, 14] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json deleted file mode 100644 index ba208112f..000000000 --- a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "RightWall", - "from": [0, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9], "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftRail", - "from": [0, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "RightRail", - "from": [0, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, - "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3.25, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1, 0], - "scale": [0.5, 0.5, 0.5] - }, - "head": { - "rotation": [0, 90, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "Cover", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json deleted file mode 100644 index c95cbabae..000000000 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "LeftT", - "from": [0, -3, 14], - "to": [2, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "RightT", - "from": [14, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftRail", - "from": [0, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "LeftTRail", - "from": [0, -5, 15], - "to": [1, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, - "faces": { - "north": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "RIghtTRail", - "from": [15, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, - "faces": { - "north": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "TTop", - "from": [2, 10, 14], - "to": [14, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "south": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "texture": "#2"} - } - }, - { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, - "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "Cover", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json deleted file mode 100644 index 8946156e8..000000000 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/brass_tunnel_top", - "2": "create:block/brass_tunnel", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [0, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 8, 9.5], "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#1"} - } - }, - { - "name": "LeftT", - "from": [14, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 2, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "RightT", - "from": [0, -3, 0], - "to": [2, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 14, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "LeftRail", - "from": [0, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "LeftTRail", - "from": [15, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "RIghtTRail", - "from": [0, -5, 0], - "to": [1, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "FrontTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "TTop", - "from": [2, 10, 0], - "to": [14, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "north": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "south": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "BackTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -24, 8]}, - "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 90, "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "Cover", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/window.json b/src/main/resources/assets/create/models/block/belt_tunnel/window.json deleted file mode 100644 index 0d65fed25..000000000 --- a/src/main/resources/assets/create/models/block/belt_tunnel/window.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/brass_tunnel", - "3": "create:block/brass_tunnel_top_window", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [0, -3, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [-9, -24, 8]}, - "faces": { - "north": {"uv": [8, 0, 16, 9.5], "texture": "#2"}, - "east": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 16, 9.5], "texture": "#2"}, - "west": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "TopPiece", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -24, 8]}, - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "RightWall", - "from": [0, -3, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [8, 0, 16, 9.5], "texture": "#2"}, - "east": {"uv": [0, 9.5, 9.5, 10.5], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 16, 9], "texture": "#2"}, - "west": {"uv": [0, 10.5, 9.5, 11.5], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "LeftRail", - "from": [0, -5, 0], - "to": [16, -3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 8]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"} - } - }, - { - "name": "RightRail", - "from": [0, -5, 15], - "to": [16, -3, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -24, 23]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "east": {"uv": [0, 12.5, 0.5, 13.5], "texture": "#2"}, - "south": {"uv": [0, 11.5, 8, 12.5], "texture": "#2"}, - "west": {"uv": [7.5, 12.5, 8, 13.5], "texture": "#2"} - } - }, - { - "name": "FrontTop", - "from": [0, 10, 2], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "west": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "BackTop", - "from": [14, 10, 2], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, -8, 8]}, - "faces": { - "east": {"uv": [10, 9.5, 16, 12.5], "texture": "#2"}, - "west": {"uv": [0, 13, 6, 16], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [10, 13.5, 16, 14.5], "rotation": 270, "texture": "#2"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3.25, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1, 0], - "scale": [0.5, 0.5, 0.5] - }, - "head": { - "rotation": [0, 90, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "Cover", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/blaze_burner/blaze/fading.json b/src/main/resources/assets/create/models/block/blaze_burner/blaze/fading.json deleted file mode 100644 index d6f517fad..000000000 --- a/src/main/resources/assets/create/models/block/blaze_burner/blaze/fading.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/blaze_smouldering", - "particle": "create:block/blaze_smouldering" - }, - "elements": [ - { - "name": "Blaze 3", - "from": [5, 6, 5], - "to": [11, 12, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 7]}, - "faces": { - "north": {"uv": [6, 0, 12, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 6, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 6, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 6, 6], "texture": "#2"}, - "up": {"uv": [0, 6, 6, 12], "texture": "#2"}, - "down": {"uv": [6, 6, 12, 12], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/blaze_burner/blaze/kindled.json b/src/main/resources/assets/create/models/block/blaze_burner/blaze/kindled.json deleted file mode 100644 index 5300221b8..000000000 --- a/src/main/resources/assets/create/models/block/blaze_burner/blaze/kindled.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/blaze_kindled", - "particle": "create:block/blaze_kindled" - }, - "elements": [ - { - "name": "Blaze 4", - "from": [4, 6, 4], - "to": [12, 14, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 6, 6]}, - "faces": { - "north": {"uv": [8, 0, 16, 8], "texture": "#2"}, - "east": {"uv": [0, 0, 8, 8], "texture": "#2"}, - "south": {"uv": [0, 0, 8, 8], "texture": "#2"}, - "west": {"uv": [0, 0, 8, 8], "texture": "#2"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#2"}, - "down": {"uv": [8, 8, 16, 16], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/blaze_burner/blaze/seething.json b/src/main/resources/assets/create/models/block/blaze_burner/blaze/seething.json deleted file mode 100644 index a7ba42fbd..000000000 --- a/src/main/resources/assets/create/models/block/blaze_burner/blaze/seething.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "1": "create:block/blaze_seething" - }, - "elements": [ - { - "name": "Blaze 5", - "from": [4, 6, 4], - "to": [12, 14, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 6, 6]}, - "faces": { - "north": {"uv": [8, 0, 16, 8], "texture": "#1"}, - "east": {"uv": [0, 0, 8, 8], "texture": "#1"}, - "south": {"uv": [0, 0, 8, 8], "texture": "#1"}, - "west": {"uv": [0, 0, 8, 8], "texture": "#1"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#1"}, - "down": {"uv": [8, 8, 16, 16], "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/blaze_burner/blaze/smouldering.json b/src/main/resources/assets/create/models/block/blaze_burner/blaze/smouldering.json deleted file mode 100644 index e831fdbfb..000000000 --- a/src/main/resources/assets/create/models/block/blaze_burner/blaze/smouldering.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/blaze_smouldering", - "particle": "create:block/blaze_smouldering" - }, - "elements": [ - { - "name": "Blaze", - "from": [6, 6, 6], - "to": [10, 10, 10], - "faces": { - "north": {"uv": [0, 12, 4, 16], "texture": "#2"}, - "east": {"uv": [8, 12, 4, 16], "texture": "#2"}, - "south": {"uv": [4, 12, 8, 16], "texture": "#2"}, - "west": {"uv": [4, 12, 8, 16], "texture": "#2"}, - "up": {"uv": [8, 12, 12, 16], "texture": "#2"}, - "down": {"uv": [12, 12, 16, 16], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/blaze_burner/block.json b/src/main/resources/assets/create/models/block/blaze_burner/block.json deleted file mode 100644 index c42a49e1e..000000000 --- a/src/main/resources/assets/create/models/block/blaze_burner/block.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/blaze_burner_inner", - "2": "create:block/blaze_burner_side", - "3": "create:block/dark_metal_block", - "particle": "create:block/dark_metal_block" - }, - "elements": [ - { - "name": "Brazier Sides 1", - "from": [2, 5, 2], - "to": [14, 14, 14], - "faces": { - "north": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "east": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "south": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "west": {"uv": [0, 6, 12, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 2", - "from": [2, 5, 14], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 3", - "from": [1, 5, 2], - "to": [2, 14, 14], - "faces": { - "east": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 4", - "from": [2, 5, 1], - "to": [14, 14, 2], - "faces": { - "south": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 5", - "from": [14, 5, 2], - "to": [15, 14, 14], - "faces": { - "west": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1", - "from": [2, 14, 13], - "to": [14, 17, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]}, - "faces": { - "south": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 2", - "from": [2, 14, 2], - "to": [3, 17, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]}, - "faces": { - "west": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 3", - "from": [2, 14, 2], - "to": [14, 17, 3], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]}, - "faces": { - "north": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 4", - "from": [13, 14, 2], - "to": [14, 17, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]}, - "faces": { - "east": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [2, 14, 14], - "to": [14, 17, 15], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]}, - "faces": { - "north": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [1, 14, 2], - "to": [2, 17, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]}, - "faces": { - "east": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [2, 14, 1], - "to": [14, 17, 2], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]}, - "faces": { - "south": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [14, 14, 2], - "to": [15, 17, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]}, - "faces": { - "west": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Base", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 8, 0.5]}, - "faces": { - "north": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "south": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "west": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#3", "cullface": "down"} - } - }, - { - "name": "Brazier bottom", - "from": [2, 4, 2], - "to": [14, 5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 8, 2.5]}, - "faces": { - "north": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "east": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "south": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "west": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "up": {"uv": [2, 2, 14, 14], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "Brazier", - "origin": [0.5, 0.5, 0.5], - "children": [ - { - "name": "Brazier Sides", - "origin": [0.5, 0.5, 0.5], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "Brazier Spikes", - "origin": [0.5, 0.5, 0.5], - "children": [5, 6, 7, 8, 9, 10, 11, 12] - }, 13, 14] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/blaze_burner/block_with_blaze.json b/src/main/resources/assets/create/models/block/blaze_burner/block_with_blaze.json deleted file mode 100644 index 8e20426fb..000000000 --- a/src/main/resources/assets/create/models/block/blaze_burner/block_with_blaze.json +++ /dev/null @@ -1,191 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/blaze_burner_inner", - "2": "create:block/blaze_burner_side", - "3": "create:block/dark_metal_block", - "particle": "create:block/dark_metal_block", - "2_2": "create:block/blaze_kindled" - }, - "elements": [ - { - "name": "Brazier Sides 1", - "from": [2, 5, 2], - "to": [14, 14, 14], - "faces": { - "north": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "east": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "south": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "west": {"uv": [0, 6, 12, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 2", - "from": [2, 5, 14], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 3", - "from": [1, 5, 2], - "to": [2, 14, 14], - "faces": { - "east": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 4", - "from": [2, 5, 1], - "to": [14, 14, 2], - "faces": { - "south": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 5", - "from": [14, 5, 2], - "to": [15, 14, 14], - "faces": { - "west": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1", - "from": [2, 14, 13], - "to": [14, 17, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]}, - "faces": { - "south": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 2", - "from": [2, 14, 2], - "to": [3, 17, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]}, - "faces": { - "west": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 3", - "from": [2, 14, 2], - "to": [14, 17, 3], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]}, - "faces": { - "north": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 4", - "from": [13, 14, 2], - "to": [14, 17, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]}, - "faces": { - "east": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [2, 14, 14], - "to": [14, 17, 15], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]}, - "faces": { - "north": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [1, 14, 2], - "to": [2, 17, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]}, - "faces": { - "east": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [2, 14, 1], - "to": [14, 17, 2], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]}, - "faces": { - "south": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [14, 14, 2], - "to": [15, 17, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]}, - "faces": { - "west": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Base", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 8, 0.5]}, - "faces": { - "north": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2", "cullface": "west"}, - "east": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2", "cullface": "west"}, - "south": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2", "cullface": "west"}, - "west": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#3", "cullface": "down"} - } - }, - { - "name": "Brazier bottom", - "from": [2, 4, 2], - "to": [14, 5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 8, 2.5]}, - "faces": { - "north": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "east": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "south": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "west": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "up": {"uv": [2, 2, 14, 14], "texture": "#1"} - } - }, - { - "name": "Blaze 4", - "from": [4, 6, 4], - "to": [12, 14, 12], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [8, 0, 16, 8], "texture": "#2_2"}, - "east": {"uv": [0, 0, 8, 8], "texture": "#2_2"}, - "south": {"uv": [0, 0, 8, 8], "texture": "#2_2"}, - "west": {"uv": [0, 0, 8, 8], "texture": "#2_2"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#2_2"}, - "down": {"uv": [8, 8, 16, 16], "texture": "#2_2"} - } - } - ], - "groups": [ - { - "name": "Brazier", - "origin": [0.5, 0.5, 0.5], - "children": [ - { - "name": "Brazier Sides", - "origin": [0.5, 0.5, 0.5], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "Brazier Spikes", - "origin": [0.5, 0.5, 0.5], - "children": [5, 6, 7, 8, 9, 10, 11, 12] - }, 13, 14] - }, - { - "name": "kindled", - "origin": [8, 8, 8], - "children": [15] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/blaze_burner/block_with_fire.json b/src/main/resources/assets/create/models/block/blaze_burner/block_with_fire.json deleted file mode 100644 index 317fa360b..000000000 --- a/src/main/resources/assets/create/models/block/blaze_burner/block_with_fire.json +++ /dev/null @@ -1,202 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/blaze_burner_inner", - "2": "create:block/blaze_burner_side", - "3": "create:block/dark_metal_block", - "particle": "create:block/dark_metal_block", - "fire": "block/campfire_fire" - }, - "elements": [ - { - "name": "Brazier Sides 1", - "from": [2, 5, 2], - "to": [14, 14, 14], - "faces": { - "north": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "east": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "south": {"uv": [0, 6, 12, 15], "texture": "#2"}, - "west": {"uv": [0, 6, 12, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 2", - "from": [2, 5, 14], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 3", - "from": [1, 5, 2], - "to": [2, 14, 14], - "faces": { - "east": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 4", - "from": [2, 5, 1], - "to": [14, 14, 2], - "faces": { - "south": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Sides 5", - "from": [14, 5, 2], - "to": [15, 14, 14], - "faces": { - "west": {"uv": [12, 6, 0, 15], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1", - "from": [2, 14, 13], - "to": [14, 17, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]}, - "faces": { - "south": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 2", - "from": [2, 14, 2], - "to": [3, 17, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]}, - "faces": { - "west": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 3", - "from": [2, 14, 2], - "to": [14, 17, 3], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]}, - "faces": { - "north": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 4", - "from": [13, 14, 2], - "to": [14, 17, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]}, - "faces": { - "east": {"uv": [0, 3, 12, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [2, 14, 14], - "to": [14, 17, 15], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 14]}, - "faces": { - "north": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [1, 14, 2], - "to": [2, 17, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [2, 14, 8]}, - "faces": { - "east": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [2, 14, 1], - "to": [14, 17, 2], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 2]}, - "faces": { - "south": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Brazier Spikes 1b", - "from": [14, 14, 2], - "to": [15, 17, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [14, 14, 8]}, - "faces": { - "west": {"uv": [12, 3, 0, 6], "texture": "#2"} - } - }, - { - "name": "Base", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 8, 0.5]}, - "faces": { - "north": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "east": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "south": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "west": {"uv": [12, 0, 16, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#3", "cullface": "down"} - } - }, - { - "name": "Brazier bottom", - "from": [2, 4, 2], - "to": [14, 5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [2.5, 8, 2.5]}, - "faces": { - "north": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "east": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "south": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "west": {"uv": [0, 15, 12, 16], "texture": "#2"}, - "up": {"uv": [2, 2, 14, 14], "texture": "#1"} - } - }, - { - "from": [0.8, 1, 8], - "to": [15.2, 17, 8], - "shade": false, - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8], "rescale": true}, - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#fire"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#fire"} - } - }, - { - "from": [8, 1, 0.8], - "to": [8, 17, 15.2], - "shade": false, - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8], "rescale": true}, - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#fire"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#fire"} - } - } - ], - "display": { - "head": { - "translation": [0, 10.5, 0] - } - }, - "groups": [ - { - "name": "Brazier", - "origin": [0.5, 0.5, 0.5], - "children": [ - { - "name": "Brazier Sides", - "origin": [0.5, 0.5, 0.5], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "Brazier Spikes", - "origin": [0.5, 0.5, 0.5], - "children": [5, 6, 7, 8, 9, 10, 11, 12] - }, 13, 14] - }, - { - "name": "campfire", - "origin": [8, 8, 8], - "children": [15, 16] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/block.json b/src/main/resources/assets/create/models/block/block.json deleted file mode 100644 index ac628b827..000000000 --- a/src/main/resources/assets/create/models/block/block.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "block/block", - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 0.625, 0.625, 0.625 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bracket/cog/ground.json b/src/main/resources/assets/create/models/block/bracket/cog/ground.json deleted file mode 100644 index cb04e2b39..000000000 --- a/src/main/resources/assets/create/models/block/bracket/cog/ground.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "#plate", - "5": "#bracket", - "particle": "#plate" - }, - "elements": [ - { - "from": [11.9, 3, 2], - "to": [14, 6, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, -24]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [4.1, 3, 2], - "to": [11.9, 13, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 4.5, -24]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "east": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "west": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "up": {"uv": [8, 6, 16, 10], "texture": "#5"} - } - }, - { - "from": [2, 3, 2], - "to": [4.1, 6, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 4.5, -24]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [2, 10, 2], - "to": [4.1, 13, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 11.5, -24]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [12.5, 6, 3.5], - "to": [13.5, 14, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, -16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 10, 2], - "to": [14, 13, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 11.5, -24]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [2.5, 6, 3.5], - "to": [3.5, 14, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, -16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 3, 10], - "to": [14, 6, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, -16]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [4.1, 3, 10], - "to": [11.9, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 4.5, -16]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "east": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "west": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "up": {"uv": [8, 6, 16, 10], "texture": "#5"} - } - }, - { - "from": [2, 3, 10], - "to": [4.1, 6, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 4.5, -16]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [2, 10, 10], - "to": [4.1, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 11.5, -16]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [12.5, 6, 11.5], - "to": [13.5, 14, 12.5], - "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, -8]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 10, 10], - "to": [14, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 11.5, -16]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [2.5, 6, 11.5], - "to": [3.5, 14, 12.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, -8]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [1, 0, 1], - "to": [15, 3, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.5, 8]}, - "faces": { - "north": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "east": {"uv": [0, 13, 5, 16], "rotation": 180, "texture": "#5"}, - "south": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "west": {"uv": [0, 13, 5, 16], "texture": "#5"}, - "up": {"uv": [9, 2, 14, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [9, 2, 14, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [1, 0, 10], - "to": [15, 3, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.5, 8]}, - "faces": { - "north": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "east": {"uv": [0, 13, 5, 16], "texture": "#5"}, - "south": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "west": {"uv": [0, 13, 5, 16], "rotation": 180, "texture": "#5"}, - "up": {"uv": [9, 2, 14, 16], "rotation": 270, "texture": "#4"}, - "down": {"uv": [9, 2, 14, 16], "rotation": 270, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bracket/cog/wall.json b/src/main/resources/assets/create/models/block/bracket/cog/wall.json deleted file mode 100644 index 46a608c9f..000000000 --- a/src/main/resources/assets/create/models/block/bracket/cog/wall.json +++ /dev/null @@ -1,206 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "texture_size": [32, 32], - "textures": { - "4": "#plate", - "5": "#bracket", - "particle": "#plate" - }, - "elements": [ - { - "from": [3, 2, 2], - "to": [6, 4.1, 6], - "faces": { - "north": {"uv": [8, 3, 10, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 4.1, 2], - "to": [13, 11.9, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 90, "texture": "#5"}, - "east": {"uv": [8, 6, 16, 10], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 270, "texture": "#5"}, - "up": {"uv": [7, 0, 8, 10], "rotation": 90, "texture": "#5"}, - "down": {"uv": [7, 0, 8, 10], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 11.9, 2], - "to": [6, 14, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "up": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [10, 11.9, 2], - "to": [13, 14, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "up": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [6, 2.5, 3.5], - "to": [14, 3.5, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -4, 8]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 7, 15, 8], "rotation": 90, "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 8, 15, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [10, 2, 2], - "to": [13, 4.1, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -2, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [6, 12.5, 3.5], - "to": [14, 13.5, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 7, 15, 8], "rotation": 90, "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 8, 15, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [3, 2, 10], - "to": [6, 4.1, 14], - "faces": { - "north": {"uv": [8, 3, 10, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 4.1, 10], - "to": [13, 11.9, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 90, "texture": "#5"}, - "east": {"uv": [8, 6, 16, 10], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 270, "texture": "#5"}, - "up": {"uv": [7, 0, 8, 10], "rotation": 90, "texture": "#5"}, - "down": {"uv": [7, 0, 8, 10], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 11.9, 10], - "to": [6, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "up": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [10, 11.9, 10], - "to": [13, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "up": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [6, 2.5, 11.5], - "to": [14, 3.5, 12.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -4, 8]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 7, 15, 8], "rotation": 90, "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 8, 15, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [10, 2, 10], - "to": [13, 4.1, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -2, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [6, 12.5, 11.5], - "to": [14, 13.5, 12.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 7, 15, 8], "rotation": 90, "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 8, 15, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [0, 1, 1], - "to": [3, 15, 6], - "faces": { - "north": {"uv": [0, 10, 14, 13], "rotation": 270, "texture": "#5"}, - "east": {"uv": [9, 2, 14, 16], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 10, 14, 13], "rotation": 90, "texture": "#5"}, - "west": {"uv": [9, 2, 14, 16], "rotation": 180, "texture": "#4"}, - "up": {"uv": [0, 13, 5, 16], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 13, 5, 16], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [0, 1, 10], - "to": [3, 15, 15], - "faces": { - "north": {"uv": [0, 10, 14, 13], "rotation": 270, "texture": "#5"}, - "east": {"uv": [9, 2, 14, 16], "texture": "#4"}, - "south": {"uv": [0, 10, 14, 13], "rotation": 90, "texture": "#5"}, - "west": {"uv": [9, 2, 14, 16], "texture": "#4"}, - "up": {"uv": [0, 13, 5, 16], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 13, 5, 16], "rotation": 90, "texture": "#5"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bracket/item.json b/src/main/resources/assets/create/models/block/bracket/item.json deleted file mode 100644 index 7026004ef..000000000 --- a/src/main/resources/assets/create/models/block/bracket/item.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "#plate", - "5": "#bracket", - "particle": "#plate" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 3, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [1.5, 0, 1.5]}, - "faces": { - "north": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "east": {"uv": [0, 13, 14, 16], "texture": "#5"}, - "south": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "west": {"uv": [0, 13, 14, 16], "texture": "#5"}, - "up": {"uv": [0, 2, 14, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 2, 14, 16], "rotation": 270, "texture": "#4"} - } - }, - { - "from": [11.9, 3, 6], - "to": [14, 6, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [4.1, 3, 6], - "to": [11.9, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 4.5, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "east": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "west": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "up": {"uv": [8, 6, 16, 10], "texture": "#5"} - } - }, - { - "from": [2, 3, 6], - "to": [4.1, 6, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 4.5, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [2, 10, 6], - "to": [4.1, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 11.5, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [12.5, 6, 7.5], - "to": [13.5, 14, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, 16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 10, 6], - "to": [14, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 11.5, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [2.5, 6, 7.5], - "to": [3.5, 14, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, 16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bracket/pipe/ground.json b/src/main/resources/assets/create/models/block/bracket/pipe/ground.json deleted file mode 100644 index 6ba942bb8..000000000 --- a/src/main/resources/assets/create/models/block/bracket/pipe/ground.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "#plate", - "5": "#bracket", - "particle": "#plate" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 3, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [1.5, 0, 1.5]}, - "faces": { - "north": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "east": {"uv": [0, 13, 14, 16], "texture": "#5"}, - "south": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "west": {"uv": [0, 13, 14, 16], "texture": "#5"}, - "up": {"uv": [0, 2, 14, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 2, 14, 16], "rotation": 270, "texture": "#4"} - } - }, - { - "from": [11.9, 3, 6], - "to": [14, 6, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [4.1, 11, 6], - "to": [11.9, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 4.5, 8]}, - "faces": { - "north": {"uv": [8, 8, 16, 10], "rotation": 180, "texture": "#5"}, - "south": {"uv": [8, 6, 16, 8], "rotation": 180, "texture": "#5"}, - "up": {"uv": [8, 6, 16, 10], "texture": "#5"}, - "down": {"uv": [8, 6, 16, 10], "texture": "#5"} - } - }, - { - "from": [4.1, 3, 6], - "to": [11.9, 5, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [10, -3.5, 8]}, - "faces": { - "north": {"uv": [8, 8, 16, 10], "rotation": 180, "texture": "#5"}, - "south": {"uv": [8, 6, 16, 8], "rotation": 180, "texture": "#5"}, - "up": {"uv": [8, 6, 16, 10], "texture": "#5"} - } - }, - { - "from": [2, 3, 6], - "to": [4.1, 6, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 4.5, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [2, 10, 6], - "to": [4.1, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 11.5, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [12.5, 6, 7.5], - "to": [13.5, 14, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, 16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 10, 6], - "to": [14, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 11.5, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [2.5, 6, 7.5], - "to": [3.5, 14, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, 16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bracket/pipe/wall.json b/src/main/resources/assets/create/models/block/bracket/pipe/wall.json deleted file mode 100644 index 99e579880..000000000 --- a/src/main/resources/assets/create/models/block/bracket/pipe/wall.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "#plate", - "5": "#bracket", - "particle": "#plate" - }, - "elements": [ - { - "from": [0, 1, 1], - "to": [3, 15, 15], - "faces": { - "north": {"uv": [0, 10, 14, 13], "rotation": 270, "texture": "#5"}, - "east": {"uv": [0, 2, 14, 16], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 10, 14, 13], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 2, 14, 16], "texture": "#4"}, - "up": {"uv": [0, 13, 14, 16], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 13, 14, 16], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 2, 6], - "to": [6, 4.1, 10], - "faces": { - "north": {"uv": [8, 3, 10, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [11, 4.1, 6], - "to": [13, 11.9, 10], - "faces": { - "north": {"uv": [8, 8, 16, 10], "rotation": 90, "texture": "#5"}, - "east": {"uv": [8, 6, 16, 10], "rotation": 90, "texture": "#5"}, - "south": {"uv": [8, 6, 16, 8], "rotation": 270, "texture": "#5"}, - "west": {"uv": [8, 6, 16, 10], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 4.1, 6], - "to": [5, 11.9, 10], - "faces": { - "north": {"uv": [8, 8, 16, 10], "rotation": 90, "texture": "#5"}, - "east": {"uv": [8, 6, 16, 10], "rotation": 90, "texture": "#5"}, - "south": {"uv": [8, 6, 16, 8], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [3, 11.9, 6], - "to": [6, 14, 10], - "faces": { - "north": {"uv": [10, 3, 8, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "up": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [10, 11.9, 6], - "to": [13, 14, 10], - "faces": { - "north": {"uv": [10, 3, 8, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "up": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [6, 2.5, 7.5], - "to": [14, 3.5, 8.5], - "faces": { - "north": {"uv": [15, 8, 16, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 7, 15, 8], "rotation": 90, "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 8, 15, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [10, 2, 6], - "to": [13, 4.1, 10], - "faces": { - "north": {"uv": [8, 3, 10, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [6, 12.5, 7.5], - "to": [14, 13.5, 8.5], - "faces": { - "north": {"uv": [15, 8, 16, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 7, 15, 8], "rotation": 90, "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 8, 15, 16], "rotation": 90, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bracket/shaft/ground.json b/src/main/resources/assets/create/models/block/bracket/shaft/ground.json deleted file mode 100644 index 7026004ef..000000000 --- a/src/main/resources/assets/create/models/block/bracket/shaft/ground.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "#plate", - "5": "#bracket", - "particle": "#plate" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 3, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [1.5, 0, 1.5]}, - "faces": { - "north": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "east": {"uv": [0, 13, 14, 16], "texture": "#5"}, - "south": {"uv": [0, 10, 14, 13], "texture": "#5"}, - "west": {"uv": [0, 13, 14, 16], "texture": "#5"}, - "up": {"uv": [0, 2, 14, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 2, 14, 16], "rotation": 270, "texture": "#4"} - } - }, - { - "from": [11.9, 3, 6], - "to": [14, 6, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [4.1, 3, 6], - "to": [11.9, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 4.5, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "east": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "west": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "up": {"uv": [8, 6, 16, 10], "texture": "#5"} - } - }, - { - "from": [2, 3, 6], - "to": [4.1, 6, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 4.5, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [2, 10, 6], - "to": [4.1, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 11.5, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [12.5, 6, 7.5], - "to": [13.5, 14, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, 16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 10, 6], - "to": [14, 13, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 11.5, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [2.5, 6, 7.5], - "to": [3.5, 14, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, 16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [14, 8, 15, 16], "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [15, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [14, 7, 15, 8], "texture": "#4"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/bracket/shaft/wall.json b/src/main/resources/assets/create/models/block/bracket/shaft/wall.json deleted file mode 100644 index 6fabc5b7f..000000000 --- a/src/main/resources/assets/create/models/block/bracket/shaft/wall.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "#plate", - "5": "#bracket", - "particle": "#plate" - }, - "elements": [ - { - "from": [0, 1, 1], - "to": [3, 15, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 14.5, 1.5]}, - "faces": { - "north": {"uv": [0, 10, 14, 13], "rotation": 270, "texture": "#5"}, - "east": {"uv": [0, 2, 14, 16], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 10, 14, 13], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 2, 14, 16], "texture": "#4"}, - "up": {"uv": [0, 13, 14, 16], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 13, 14, 16], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 2, 6], - "to": [6, 4.1, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [4.5, 8, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 4.1, 6], - "to": [13, 11.9, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [4.5, 6, 8]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 90, "texture": "#5"}, - "east": {"uv": [8, 6, 16, 10], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 270, "texture": "#5"}, - "up": {"uv": [7, 0, 8, 10], "rotation": 90, "texture": "#5"}, - "down": {"uv": [7, 0, 8, 10], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [3, 11.9, 6], - "to": [6, 14, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [4.5, 13, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "up": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [10, 11.9, 6], - "to": [13, 14, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [11.5, 13, 8]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "texture": "#5"}, - "up": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [6, 2.5, 7.5], - "to": [14, 3.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [14, -4, 16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 7, 15, 8], "rotation": 90, "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 8, 15, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [10, 2, 6], - "to": [13, 4.1, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [11.5, -2, 8]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "rotation": 270, "texture": "#5"}, - "east": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [10, 1, 14, 3], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10, 3, 14, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [6, 12.5, 7.5], - "to": [14, 13.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [14, 6, 16]}, - "faces": { - "north": {"uv": [15, 8, 16, 16], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 7, 15, 8], "rotation": 90, "texture": "#4"}, - "south": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [15, 8, 16, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 8, 15, 16], "rotation": 90, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block.json b/src/main/resources/assets/create/models/block/cart_assembler/block.json deleted file mode 100644 index e0ea99754..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/bearing_top", - "5": "create:block/mechanical_bearing_side", - "clutch_off": "create:block/clutch_off", - "rail": "block/powered_rail", - "translation_chassis_side": "create:block/cart_assembler_side", - "particle": "create:block/cart_assembler_side" - }, - "elements": [ - { - "name": "Rail", - "from": [0, 1, 0], - "to": [16, 1, 16], - "faces": { - "up": {"uv": [0, 0, 16, 16], "texture": "#rail"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#rail"} - } - }, - { - "name": "Side", - "from": [13.875, 0.062, 1.125], - "to": [17.875, 13.937, 14.875], - "faces": { - "north": {"uv": [1, 4, 15, 0], "rotation": 90, "texture": "#translation_chassis_side"}, - "east": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#translation_chassis_side"}, - "south": {"uv": [1, 0, 15, 4], "rotation": 90, "texture": "#translation_chassis_side"}, - "west": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#translation_chassis_side"}, - "up": {"uv": [5, 1, 9, 15], "texture": "#translation_chassis_side"}, - "down": {"uv": [2, 1, 6, 15], "texture": "#translation_chassis_side"} - } - }, - { - "name": "Side", - "from": [-1.875, 0.062, 1.125], - "to": [2.125, 13.937, 14.875], - "faces": { - "north": {"uv": [1, 0, 15, 4], "rotation": 90, "texture": "#translation_chassis_side"}, - "east": {"uv": [1, 15, 15, 1], "rotation": 90, "texture": "#translation_chassis_side"}, - "south": {"uv": [1, 4, 15, 0], "rotation": 90, "texture": "#translation_chassis_side"}, - "west": {"uv": [1, 15, 15, 1], "rotation": 90, "texture": "#translation_chassis_side"}, - "up": {"uv": [9, 1, 5, 15], "texture": "#translation_chassis_side"}, - "down": {"uv": [6, 1, 2, 15], "texture": "#translation_chassis_side"} - } - }, - { - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#5"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#5"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#5"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#5"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#4"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#translation_chassis_side"} - } - }, - { - "from": [2, 10, 1], - "to": [14, 12, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 22, 10]}, - "faces": { - "north": {"uv": [2, 7, 14, 9], "texture": "#clutch_off"}, - "south": {"uv": [2, 7, 14, 9], "texture": "#clutch_off"}, - "down": {"uv": [2, 1, 14, 15], "texture": "#translation_chassis_side"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_activator_rail.json b/src/main/resources/assets/create/models/block/cart_assembler/block_activator_rail.json deleted file mode 100644 index 27a107f80..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_activator_rail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "rail": "block/activator_rail" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_activator_rail_powered.json b/src/main/resources/assets/create/models/block/cart_assembler/block_activator_rail_powered.json deleted file mode 100644 index 157de2851..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_activator_rail_powered.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "clutch_off": "create:block/clutch_on", - "rail": "block/activator_rail_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_controller_rail.json b/src/main/resources/assets/create/models/block/cart_assembler/block_controller_rail.json deleted file mode 100644 index 4f1399dab..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_controller_rail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "rail": "create:block/controller_rail" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_controller_rail_powered.json b/src/main/resources/assets/create/models/block/cart_assembler/block_controller_rail_powered.json deleted file mode 100644 index c4666ebba..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_controller_rail_powered.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "clutch_off": "create:block/clutch_on", - "rail": "create:block/controller_rail_powered" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_detector_rail.json b/src/main/resources/assets/create/models/block/cart_assembler/block_detector_rail.json deleted file mode 100644 index 501988d3e..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_detector_rail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "rail": "block/detector_rail" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_detector_rail_powered.json b/src/main/resources/assets/create/models/block/cart_assembler/block_detector_rail_powered.json deleted file mode 100644 index e17faee3e..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_detector_rail_powered.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "clutch_off": "create:block/clutch_on", - "rail": "block/detector_rail_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail.json b/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail.json deleted file mode 100644 index 92572dcdd..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "rail": "block/powered_rail" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_powered.json b/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_powered.json deleted file mode 100644 index 04f11d8c9..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_powered_rail_powered.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "clutch_off": "create:block/clutch_on", - "rail": "block/powered_rail_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_regular.json b/src/main/resources/assets/create/models/block/cart_assembler/block_regular.json deleted file mode 100644 index d5c44417c..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_regular.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "rail": "block/rail" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/block_regular_powered.json b/src/main/resources/assets/create/models/block/cart_assembler/block_regular_powered.json deleted file mode 100644 index 132b8ead6..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/block_regular_powered.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/cart_assembler/block", - "textures": { - "clutch_off": "create:block/clutch_on", - "rail": "block/rail" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/item.json b/src/main/resources/assets/create/models/block/cart_assembler/item.json deleted file mode 100644 index cb19247f7..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/item.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/bearing_top", - "5": "create:block/mechanical_bearing_side", - "clutch_off": "create:block/clutch_off", - "translation_chassis_side": "create:block/cart_assembler_side", - "particle": "create:block/cart_assembler_side" - }, - "elements": [ - { - "name": "Side", - "from": [13.875, 0.062, 1.125], - "to": [17.875, 13.937, 14.875], - "faces": { - "north": {"uv": [1, 4, 15, 0], "rotation": 90, "texture": "#translation_chassis_side"}, - "east": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#translation_chassis_side"}, - "south": {"uv": [1, 0, 15, 4], "rotation": 90, "texture": "#translation_chassis_side"}, - "west": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#translation_chassis_side"}, - "up": {"uv": [5, 1, 9, 15], "texture": "#translation_chassis_side"}, - "down": {"uv": [2, 1, 6, 15], "texture": "#translation_chassis_side"} - } - }, - { - "name": "Side", - "from": [-1.875, 0.062, 1.125], - "to": [2.125, 13.937, 14.875], - "faces": { - "north": {"uv": [1, 0, 15, 4], "rotation": 90, "texture": "#translation_chassis_side"}, - "east": {"uv": [1, 15, 15, 1], "rotation": 90, "texture": "#translation_chassis_side"}, - "south": {"uv": [1, 4, 15, 0], "rotation": 90, "texture": "#translation_chassis_side"}, - "west": {"uv": [1, 15, 15, 1], "rotation": 90, "texture": "#translation_chassis_side"}, - "up": {"uv": [9, 1, 5, 15], "texture": "#translation_chassis_side"}, - "down": {"uv": [6, 1, 2, 15], "texture": "#translation_chassis_side"} - } - }, - { - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#5"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#5"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#5"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#5"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#4"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#translation_chassis_side"} - } - }, - { - "from": [2, 10, 1], - "to": [14, 12, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 22, 10]}, - "faces": { - "north": {"uv": [2, 7, 14, 9], "texture": "#clutch_off"}, - "south": {"uv": [2, 7, 14, 9], "texture": "#clutch_off"}, - "down": {"uv": [2, 1, 14, 15], "texture": "#translation_chassis_side"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cart_assembler/minecart_anchor.json b/src/main/resources/assets/create/models/block/cart_assembler/minecart_anchor.json deleted file mode 100644 index 6be0bc082..000000000 --- a/src/main/resources/assets/create/models/block/cart_assembler/minecart_anchor.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "translation_chassis_side": "create:block/cart_assembler_side" - }, - "elements": [ - { - "name": "Top", - "from": [ 0, 12, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "north": { "texture": "#translation_chassis_side", "uv": [ 0, 0, 16, 4 ] }, - "east": { "texture": "#translation_chassis_side", "uv": [ 0, 0, 4, 16 ], "rotation": 90 }, - "south": { "texture": "#translation_chassis_side", "uv": [ 0, 0, 16, 4 ] }, - "west": { "texture": "#translation_chassis_side", "uv": [ 12, 0, 16, 16 ], "rotation": 270 }, - "up": { "texture": "#translation_chassis_side", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#translation_chassis_side", "uv": [ 0, 0, 16, 16 ] } - } - }, - { - "name": "Inner", - "from": [ 4, 4, 4 ], - "to": [ 12, 12, 12 ], - "faces": { - "north": { "texture": "#translation_chassis_side", "uv": [ 4, 8, 12, 16 ] }, - "east": { "texture": "#translation_chassis_side", "uv": [ 4, 8, 12, 16 ] }, - "south": { "texture": "#translation_chassis_side", "uv": [ 4, 8, 12, 16 ] }, - "west": { "texture": "#translation_chassis_side", "uv": [ 4, 8, 12, 16 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block.json b/src/main/resources/assets/create/models/block/chute/block.json deleted file mode 100644 index d1bb640b4..000000000 --- a/src/main/resources/assets/create/models/block/chute/block.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "13": "create:block/chute", - "particle": "block/hopper_outside" - }, - "elements": [ - { - "from": [3, 8, 1], - "to": [13, 16, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, -3]}, - "faces": { - "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "up": {"uv": [1, 0, 6, 1], "texture": "#13"}, - "down": {"uv": [1, 6, 6, 7], "texture": "#13"} - } - }, - { - "from": [3, 8, 13], - "to": [13, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 19]}, - "faces": { - "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "up": {"uv": [1, 0, 6, 1], "rotation": 180, "texture": "#13"}, - "down": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [1, 8, 1], - "to": [3, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, - "faces": { - "north": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, - "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "south": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, - "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "up": {"uv": [0, 0, 1, 7], "texture": "#13"}, - "down": {"uv": [0, 0, 1, 7], "texture": "#13"} - } - }, - { - "from": [13, 8, 1], - "to": [15, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, - "faces": { - "north": {"uv": [8.5, 0, 9.5, 4], "texture": "#13"}, - "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "south": {"uv": [14.5, 0, 15.5, 4], "texture": "#13"}, - "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "up": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"}, - "down": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [13, 0, 2], - "to": [14, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, - "faces": { - "north": {"uv": [9, 4, 9.5, 8], "texture": "#13"}, - "east": {"uv": [9, 4, 15, 8], "texture": "#13"}, - "south": {"uv": [14.5, 4, 15, 8], "texture": "#13"}, - "west": {"uv": [9, 4, 15, 8], "texture": "#13"}, - "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [2, 0, 2], - "to": [3, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, - "faces": { - "north": {"uv": [14.5, 4, 15, 8], "texture": "#13"}, - "east": {"uv": [9, 4, 15, 8], "texture": "#13"}, - "south": {"uv": [9, 4, 9.5, 8], "texture": "#13"}, - "west": {"uv": [9, 4, 15, 8], "texture": "#13"}, - "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [3, 0, 13], - "to": [13, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20]}, - "faces": { - "north": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, - "south": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, - "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} - } - }, - { - "from": [3, 0, 2], - "to": [13, 8, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]}, - "faces": { - "north": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, - "south": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, - "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} - } - }, - { - "from": [3, 13, 3], - "to": [13, 14, 13], - "faces": { - "up": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"}, - "down": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"} - } - } - ], - "groups": [ - { - "name": "ChuteTop", - "origin": [9, 16, -7], - "children": [0, 1, 2, 3] - }, - { - "name": "ChuteBase", - "origin": [8, 8, -7], - "children": [4, 5, 6, 7] - }, 8] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_diagonal.json b/src/main/resources/assets/create/models/block/chute/block_diagonal.json deleted file mode 100644 index d2bdace75..000000000 --- a/src/main/resources/assets/create/models/block/chute/block_diagonal.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/chute", - "1": "create:block/chute_diagonal", - "particle": "block/hopper_inside" - }, - "elements": [ - { - "from": [1.1, -11, 2], - "to": [14.9, 0, 16], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 0, 16]}, - "faces": { - "north": {"uv": [8.5, 8.5, 15.5, 14], "texture": "#1"}, - "east": {"uv": [8.5, 8.5, 15.5, 14], "texture": "#1"}, - "south": {"uv": [8.5, 8.5, 15.5, 14], "texture": "#1"}, - "west": {"uv": [8.5, 8.5, 15.5, 14], "texture": "#1"}, - "up": {"uv": [8.5, 8.5, 15.5, 15.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [8.5, 8.5, 15.5, 15.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [4, -16, -2], - "to": [12, -4.4, 0], - "rotation": {"angle": 45, "axis": "x", "origin": [8, -16, 0]}, - "faces": { - "east": {"uv": [6, 8.5, 7, 14.5], "texture": "#1"}, - "south": {"uv": [2, 8.5, 6, 14.5], "texture": "#1"}, - "west": {"uv": [1, 8.5, 2, 14.5], "texture": "#1"}, - "down": {"uv": [0, 0, 8, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [2.1, -16, -7], - "to": [13.9, -4.4, -2], - "rotation": {"angle": 45, "axis": "x", "origin": [8, -16, 0]}, - "faces": { - "east": {"uv": [9, 1, 11.5, 7], "texture": "#1"}, - "south": {"uv": [9, 1, 15, 7], "texture": "#1"}, - "west": {"uv": [12.5, 1, 15, 7], "texture": "#1"}, - "down": {"uv": [9, 12.5, 15, 15], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [2.1, -16, -13], - "to": [13.9, -4.4, -7], - "rotation": {"angle": 45, "axis": "x", "origin": [8, -16, 0]}, - "faces": { - "north": {"uv": [9, 1, 15, 7], "texture": "#1"}, - "east": {"uv": [11.5, 1, 15, 7], "texture": "#1"}, - "west": {"uv": [9, 1, 12.5, 7], "texture": "#1"}, - "down": {"uv": [9, 9, 15, 12], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_diagonal_intersection.json b/src/main/resources/assets/create/models/block/chute/block_diagonal_intersection.json deleted file mode 100644 index 8dc512a03..000000000 --- a/src/main/resources/assets/create/models/block/chute/block_diagonal_intersection.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/chute", - "1": "create:block/chute_diagonal", - "particle": "block/hopper_inside" - }, - "elements": [ - { - "from": [1.1, -11, 2], - "to": [14.9, 0, 16], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 0, 16]}, - "faces": { - "north": {"uv": [8.5, 8.5, 15.5, 14], "texture": "#1"}, - "east": {"uv": [8.5, 8.5, 15.5, 14], "texture": "#1"}, - "south": {"uv": [8.5, 8.5, 15.5, 14], "texture": "#1"}, - "west": {"uv": [8.5, 8.5, 15.5, 14], "texture": "#1"}, - "up": {"uv": [8.5, 8.5, 15.5, 15.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [8.5, 8.5, 15.5, 15.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [4, -16, -2], - "to": [12, -4.4, 0], - "rotation": {"angle": 45, "axis": "x", "origin": [8, -16, 0]}, - "faces": { - "east": {"uv": [6, 8.5, 7, 14.5], "texture": "#1"}, - "south": {"uv": [2, 8.5, 6, 14.5], "texture": "#1"}, - "west": {"uv": [1, 8.5, 2, 14.5], "texture": "#1"}, - "down": {"uv": [0, 0, 8, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [2.1, -16, -7], - "to": [13.9, -4.4, -2], - "rotation": {"angle": 45, "axis": "x", "origin": [8, -16, 0]}, - "faces": { - "east": {"uv": [9, 1, 11.5, 7], "texture": "#1"}, - "south": {"uv": [9, 1, 15, 7], "texture": "#1"}, - "west": {"uv": [12.5, 1, 15, 7], "texture": "#1"}, - "down": {"uv": [9, 12.5, 15, 15], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [2.1, -16, -13], - "to": [13.9, -4.4, -7], - "rotation": {"angle": 45, "axis": "x", "origin": [8, -16, 0]}, - "faces": { - "north": {"uv": [9, 1, 15, 7], "texture": "#1"}, - "east": {"uv": [11.5, 1, 15, 7], "texture": "#1"}, - "west": {"uv": [9, 1, 12.5, 7], "texture": "#1"}, - "down": {"uv": [9, 9, 15, 12], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [0, 0, 0], - "to": [3, 16, 16], - "faces": { - "north": {"uv": [6.5, 0, 8, 8], "texture": "#1"}, - "east": {"uv": [8, 0, 16, 8], "texture": "#0"}, - "south": {"uv": [0, 0, 1.5, 8], "texture": "#1"}, - "west": {"uv": [0, 0, 8, 8], "texture": "#1"}, - "up": {"uv": [8, 8, 9.5, 16], "texture": "#0"}, - "down": {"uv": [14.5, 8, 16, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [13, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 1.5, 8], "texture": "#1"}, - "east": {"uv": [0, 0, 8, 8], "texture": "#1"}, - "south": {"uv": [6.5, 0, 8, 8], "texture": "#1"}, - "west": {"uv": [8, 0, 16, 8], "texture": "#0"}, - "up": {"uv": [8, 8, 9.5, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [14.5, 8, 16, 16], "texture": "#0"} - } - }, - { - "from": [3, 0, 0], - "to": [13, 16, 3], - "faces": { - "north": {"uv": [1.5, 0, 6.5, 8], "texture": "#1"}, - "east": {"uv": [6.5, 0, 8, 8], "texture": "#1"}, - "south": {"uv": [9.5, 0, 14.5, 8], "texture": "#0"}, - "west": {"uv": [0, 0, 1.5, 8], "texture": "#1"}, - "up": {"uv": [14.5, 9.5, 16, 14.5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [14.5, 9.5, 16, 14.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [3, 0, 13], - "to": [13, 16, 16], - "faces": { - "north": {"uv": [9.5, 0, 14.5, 8], "texture": "#0"}, - "east": {"uv": [0, 0, 1.5, 8], "texture": "#1"}, - "south": {"uv": [1.5, 0, 6.5, 8], "texture": "#1"}, - "west": {"uv": [6.5, 0, 8, 8], "texture": "#1"}, - "up": {"uv": [14.5, 9.5, 16, 14.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [14.5, 9.5, 16, 14.5], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [3, 8, 3], - "to": [13, 14, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [11, -6, 11]}, - "faces": { - "up": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#0"}, - "down": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#0"} - } - } - ], - "groups": [0, 1, 2, 3, - { - "name": "intersection", - "origin": [8, 8, 8], - "children": [4, 5, 6, 7, 8] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_intersection.json b/src/main/resources/assets/create/models/block/chute/block_intersection.json deleted file mode 100644 index 0c2f7f382..000000000 --- a/src/main/resources/assets/create/models/block/chute/block_intersection.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/chute", - "1": "create:block/chute_diagonal", - "particle": "block/hopper_inside" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [3, 16, 16], - "faces": { - "north": {"uv": [6.5, 0, 8, 8], "texture": "#1"}, - "east": {"uv": [8, 0, 16, 8], "texture": "#0"}, - "south": {"uv": [0, 0, 1.5, 8], "texture": "#1"}, - "west": {"uv": [0, 0, 8, 8], "texture": "#1"}, - "up": {"uv": [8, 8, 9.5, 16], "texture": "#0"}, - "down": {"uv": [14.5, 8, 16, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [13, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 1.5, 8], "texture": "#1"}, - "east": {"uv": [0, 0, 8, 8], "texture": "#1"}, - "south": {"uv": [6.5, 0, 8, 8], "texture": "#1"}, - "west": {"uv": [8, 0, 16, 8], "texture": "#0"}, - "up": {"uv": [8, 8, 9.5, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [14.5, 8, 16, 16], "texture": "#0"} - } - }, - { - "from": [3, 0, 0], - "to": [13, 16, 3], - "faces": { - "north": {"uv": [1.5, 0, 6.5, 8], "texture": "#1"}, - "east": {"uv": [6.5, 0, 8, 8], "texture": "#1"}, - "south": {"uv": [9.5, 0, 14.5, 8], "texture": "#0"}, - "west": {"uv": [0, 0, 1.5, 8], "texture": "#1"}, - "up": {"uv": [14.5, 9.5, 16, 14.5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [14.5, 9.5, 16, 14.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [3, 0, 13], - "to": [13, 16, 16], - "faces": { - "north": {"uv": [9.5, 0, 14.5, 8], "texture": "#0"}, - "east": {"uv": [0, 0, 1.5, 8], "texture": "#1"}, - "south": {"uv": [1.5, 0, 6.5, 8], "texture": "#1"}, - "west": {"uv": [6.5, 0, 8, 8], "texture": "#1"}, - "up": {"uv": [14.5, 9.5, 16, 14.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [14.5, 9.5, 16, 14.5], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [3, 8, 3], - "to": [13, 14, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [11, -6, 11]}, - "faces": { - "up": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#0"}, - "down": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute/block_windowed.json b/src/main/resources/assets/create/models/block/chute/block_windowed.json deleted file mode 100644 index fecf23214..000000000 --- a/src/main/resources/assets/create/models/block/chute/block_windowed.json +++ /dev/null @@ -1,303 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "13": "create:block/chute", - "particle": "block/hopper_outside" - }, - "elements": [ - { - "from": [13, 13, 1], - "to": [15, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, - "faces": { - "north": {"uv": [8.5, 0, 9.5, 1.5], "texture": "#13"}, - "east": {"uv": [8.5, 0, 15.5, 1.5], "texture": "#13"}, - "south": {"uv": [14.5, 0, 15.5, 1.5], "texture": "#13"}, - "west": {"uv": [8.5, 0, 15.5, 1.5], "texture": "#13"}, - "up": {"uv": [6, 0, 7, 7], "texture": "#13"}, - "down": {"uv": [6, 0, 7, 7], "texture": "#13"} - } - }, - { - "from": [3, 13, 13], - "to": [13, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, - "faces": { - "north": {"uv": [9.5, 0, 14.5, 1.5], "texture": "#13"}, - "south": {"uv": [9.5, 0, 14.5, 1.5], "texture": "#13"}, - "up": {"uv": [1, 6, 6, 7], "texture": "#13"}, - "down": {"uv": [1, 6, 6, 7], "texture": "#13"} - } - }, - { - "from": [12, 8, 13], - "to": [13, 13, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 9]}, - "faces": { - "north": {"uv": [9.5, 1.5, 10, 4], "texture": "#13"}, - "east": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "south": {"uv": [14, 1.5, 14.5, 4], "texture": "#13"}, - "west": {"uv": [13, 1.5, 14, 4], "texture": "#13"}, - "down": {"uv": [5.5, 0, 6, 1], "texture": "#13"} - } - }, - { - "from": [12, 8, 1], - "to": [13, 13, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 7]}, - "faces": { - "north": {"uv": [9.5, 1.5, 10, 4], "texture": "#13"}, - "east": {"uv": [16, 0, 9, 4], "texture": "#13"}, - "south": {"uv": [10, 1.5, 9.5, 4], "texture": "#13"}, - "west": {"uv": [14, 1.5, 13, 4], "texture": "#13"}, - "down": {"uv": [5.5, 1, 6, 0], "texture": "#13"} - } - }, - { - "from": [13, 8, 12], - "to": [15, 13, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 9]}, - "faces": { - "north": {"uv": [10, 1.5, 11, 4], "texture": "#13"}, - "east": {"uv": [8.5, 1.5, 10, 4], "texture": "#13"}, - "south": {"uv": [14.5, 1.5, 15.5, 4], "texture": "#13"}, - "west": {"uv": [14, 1.5, 15.5, 4], "texture": "#13"}, - "up": {"uv": [1, 6, 6, 7], "texture": "#13"}, - "down": {"uv": [6, 0, 7, 1.5], "texture": "#13"} - } - }, - { - "from": [13, 8, 1], - "to": [15, 13, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, 7]}, - "faces": { - "north": {"uv": [8.5, 1.5, 9.5, 4], "texture": "#13"}, - "east": {"uv": [14, 1.5, 15.5, 4], "texture": "#13"}, - "south": {"uv": [13, 1.5, 14, 4], "texture": "#13"}, - "west": {"uv": [15.5, 1.5, 14, 4], "texture": "#13"}, - "up": {"uv": [1, 7, 6, 6], "texture": "#13"}, - "down": {"uv": [6, 1.5, 7, 0], "texture": "#13"} - } - }, - { - "from": [1, 13, 1], - "to": [3, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, - "faces": { - "north": {"uv": [14.5, 0, 15.5, 1.5], "texture": "#13"}, - "east": {"uv": [8.5, 0, 15.5, 1.5], "texture": "#13"}, - "south": {"uv": [8.5, 0, 9.5, 1.5], "texture": "#13"}, - "west": {"uv": [8.5, 0, 15.5, 1.5], "texture": "#13"}, - "up": {"uv": [6, 0, 7, 7], "rotation": 180, "texture": "#13"}, - "down": {"uv": [6, 0, 7, 7], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [3, 13, 1], - "to": [13, 16, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, - "faces": { - "north": {"uv": [9.5, 0, 14.5, 1.5], "texture": "#13"}, - "south": {"uv": [9.5, 0, 14.5, 1.5], "texture": "#13"}, - "up": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"}, - "down": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [3, 8, 1], - "to": [4, 13, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 7]}, - "faces": { - "north": {"uv": [14, 1.5, 14.5, 4], "texture": "#13"}, - "east": {"uv": [13, 1.5, 14, 4], "texture": "#13"}, - "south": {"uv": [9.5, 1.5, 10, 4], "texture": "#13"}, - "west": {"uv": [9, 0, 16, 4], "texture": "#13"}, - "down": {"uv": [5.5, 0, 6, 1], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [3, 8, 13], - "to": [4, 13, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 9]}, - "faces": { - "north": {"uv": [10, 1.5, 9.5, 4], "texture": "#13"}, - "east": {"uv": [14, 1.5, 13, 4], "texture": "#13"}, - "south": {"uv": [9.5, 1.5, 10, 4], "texture": "#13"}, - "west": {"uv": [16, 0, 9, 4], "texture": "#13"}, - "down": {"uv": [5.5, 1, 6, 0], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [1, 8, 1], - "to": [3, 13, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 7]}, - "faces": { - "north": {"uv": [14.5, 1.5, 15.5, 4], "texture": "#13"}, - "east": {"uv": [14, 1.5, 15.5, 4], "texture": "#13"}, - "south": {"uv": [10, 1.5, 11, 4], "texture": "#13"}, - "west": {"uv": [8.5, 1.5, 10, 4], "texture": "#13"}, - "up": {"uv": [1, 6, 6, 7], "rotation": 180, "texture": "#13"}, - "down": {"uv": [6, 0, 7, 1.5], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [1, 8, 12], - "to": [3, 13, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 9]}, - "faces": { - "north": {"uv": [13, 1.5, 14, 4], "texture": "#13"}, - "east": {"uv": [15.5, 1.5, 14, 4], "texture": "#13"}, - "south": {"uv": [8.5, 1.5, 9.5, 4], "texture": "#13"}, - "west": {"uv": [14, 1.5, 15.5, 4], "texture": "#13"}, - "up": {"uv": [1, 7, 6, 6], "rotation": 180, "texture": "#13"}, - "down": {"uv": [6, 1.5, 7, 0], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [13, 0, 2], - "to": [14, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, - "faces": { - "north": {"uv": [0, 9.5, 0.5, 13.5], "texture": "#13"}, - "east": {"uv": [0, 9.5, 6, 13.5], "texture": "#13"}, - "south": {"uv": [5.5, 9.5, 6, 13.5], "texture": "#13"}, - "west": {"uv": [0, 9.5, 6, 13.5], "texture": "#13"}, - "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [2, 0, 2], - "to": [3, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, - "faces": { - "north": {"uv": [5.5, 9.5, 6, 13.5], "texture": "#13"}, - "east": {"uv": [0, 9.5, 6, 13.5], "texture": "#13"}, - "south": {"uv": [0, 9.5, 0.5, 13.5], "texture": "#13"}, - "west": {"uv": [0, 9.5, 6, 13.5], "texture": "#13"}, - "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [3, 0, 13], - "to": [13, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20]}, - "faces": { - "north": {"uv": [0.5, 9.5, 5.5, 13.5], "texture": "#13"}, - "south": {"uv": [0.5, 9.5, 5.5, 13.5], "texture": "#13"}, - "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} - } - }, - { - "from": [3, 0, 2], - "to": [13, 8, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]}, - "faces": { - "north": {"uv": [0.5, 9.5, 5.5, 13.5], "texture": "#13"}, - "south": {"uv": [0.5, 9.5, 5.5, 13.5], "texture": "#13"}, - "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} - } - }, - { - "from": [2, 8, 2], - "to": [14, 13, 3], - "faces": { - "north": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "east": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} - } - }, - { - "from": [13, 8, 2], - "to": [14, 13, 14], - "faces": { - "north": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "east": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} - } - }, - { - "from": [2, 8, 13], - "to": [14, 13, 14], - "faces": { - "north": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "east": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} - } - }, - { - "from": [2, 8, 2], - "to": [3, 13, 14], - "faces": { - "north": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "east": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "south": {"uv": [0, 7, 6, 9.5], "texture": "#13"}, - "west": {"uv": [0, 7, 6, 9.5], "texture": "#13"} - } - }, - { - "from": [3, 13, 3], - "to": [13, 14, 13], - "faces": { - "up": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"}, - "down": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3.25, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1, 0], - "scale": [0.5, 0.5, 0.5] - }, - "head": { - "rotation": [0, 90, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "ChuteTop", - "origin": [9, 16, -7], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] - }, - { - "name": "ChuteBase", - "origin": [8, 8, -7], - "children": [12, 13, 14, 15] - }, - { - "name": "windows", - "origin": [8, 8, 8], - "children": [16, 17, 18, 19] - }, 20] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/clutch/block.json b/src/main/resources/assets/create/models/block/clutch/block.json deleted file mode 100644 index 09b9f4215..000000000 --- a/src/main/resources/assets/create/models/block/clutch/block.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/gearshift/block", - "textures": { - "0": "create:block/clutch_off", - "particle": "create:block/clutch_off" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/clutch/block_powered.json b/src/main/resources/assets/create/models/block/clutch/block_powered.json deleted file mode 100644 index 1f014b711..000000000 --- a/src/main/resources/assets/create/models/block/clutch/block_powered.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/clutch/block", - "textures": { - "0": "create:block/clutch_on", - "particle": "create:block/clutch_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/clutch/item.json b/src/main/resources/assets/create/models/block/clutch/item.json deleted file mode 100644 index 102f2202d..000000000 --- a/src/main/resources/assets/create/models/block/clutch/item.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/clutch_off", - "1": "create:block/gearbox", - "particle": "create:block/axis", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"} - } - }, - { - "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "south": {"uv": [1, 2, 15, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "name": "SideWest", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#0"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#0"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#0"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#0"} - } - }, - { - "name": "SideEast", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#0"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#0"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#0"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#0"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} - } - } - ], - "groups": [0, 1, 2, 3, 4, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cogwheel.json b/src/main/resources/assets/create/models/block/cogwheel.json deleted file mode 100644 index a18d1655d..000000000 --- a/src/main/resources/assets/create/models/block/cogwheel.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/large_wheels", - "texture_size": [32, 32], - "textures": { - "0": "create:block/axis", - "3": "create:block/axis_top", - "particle": "block/stripped_spruce_log", - "1_2": "create:block/cogwheel" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#3"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#3"} - } - }, - { - "name": "Gear", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear2", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear3", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear4", - "from": [6.5, 6.5, -1], - "to": [9.5, 9.5, 17], - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "east": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "south": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "west": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"} - } - }, - { - "name": "GearCaseInner", - "from": [2, 7, 2], - "to": [14, 9, 14], - "faces": { - "north": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "east": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "south": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "west": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "up": {"uv": [4, 0, 10, 6], "texture": "#1_2"}, - "down": {"uv": [4, 0, 10, 6], "texture": "#1_2"} - } - }, - { - "name": "GearCaseOuter", - "from": [4, 6, 4], - "to": [12, 10, 12], - "faces": { - "north": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "east": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "south": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "west": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "up": {"uv": [0, 0, 4, 4], "texture": "#1_2"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#1_2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cogwheel_shaftless.json b/src/main/resources/assets/create/models/block/cogwheel_shaftless.json deleted file mode 100644 index 0d0f2c346..000000000 --- a/src/main/resources/assets/create/models/block/cogwheel_shaftless.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/large_wheels", - "texture_size": [32, 32], - "textures": { - "particle": "create:block/cogwheel", - "1_2": "create:block/cogwheel" - }, - "elements": [ - { - "name": "Gear", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear2", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear3", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear4", - "from": [6.5, 6.5, -1], - "to": [9.5, 9.5, 17], - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "east": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "south": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "west": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"} - } - }, - { - "name": "GearCaseInner", - "from": [2, 7, 2], - "to": [14, 9, 14], - "faces": { - "north": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "east": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "south": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "west": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "up": {"uv": [4, 0, 10, 6], "texture": "#1_2"}, - "down": {"uv": [4, 0, 10, 6], "texture": "#1_2"} - } - }, - { - "name": "GearCaseOuter", - "from": [4, 6, 4], - "to": [12, 10, 12], - "faces": { - "north": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "east": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "south": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "west": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "up": {"uv": [0, 0, 4, 4], "texture": "#1_2"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#1_2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/connected_glass_pane/noside.json b/src/main/resources/assets/create/models/block/connected_glass_pane/noside.json deleted file mode 100644 index af16ff940..000000000 --- a/src/main/resources/assets/create/models/block/connected_glass_pane/noside.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#pane" - }, - "elements": [ - { "from": [ 7, 0, 7 ], - "to": [ 9, 16, 9 ], - "faces": { - "north": { "uv": [ 9, 0, 7, 16 ], "texture": "#pane" } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/block/connected_glass_pane/noside_alt.json b/src/main/resources/assets/create/models/block/connected_glass_pane/noside_alt.json deleted file mode 100644 index 771d69420..000000000 --- a/src/main/resources/assets/create/models/block/connected_glass_pane/noside_alt.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#pane" - }, - "elements": [ - { "from": [ 7, 0, 7 ], - "to": [ 9, 16, 9 ], - "faces": { - "east": { "uv": [ 7, 0, 9, 16 ], "texture": "#pane" } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/block/connected_glass_pane/post.json b/src/main/resources/assets/create/models/block/connected_glass_pane/post.json deleted file mode 100644 index 039229cbe..000000000 --- a/src/main/resources/assets/create/models/block/connected_glass_pane/post.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#pane" - }, - "elements": [ - { "from": [ 7, 0, 7 ], - "to": [ 9, 16, 9 ], - "faces": { - "down": { "uv": [ 7, 7, 9, 9 ], "texture": "#edge", "cullface": "down" }, - "up": { "uv": [ 7, 7, 9, 9 ], "texture": "#edge", "cullface": "up" } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/block/connected_glass_pane/side.json b/src/main/resources/assets/create/models/block/connected_glass_pane/side.json deleted file mode 100644 index 8d409abb3..000000000 --- a/src/main/resources/assets/create/models/block/connected_glass_pane/side.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#pane" - }, - "elements": [ - { "from": [ 7, 0, 0 ], - "to": [ 9, 16, 7 ], - "faces": { - "down": { "uv": [ 7, 0, 9, 7 ], "texture": "#edge", "cullface": "down" }, - "up": { "uv": [ 7, 0, 9, 7 ], "texture": "#edge", "cullface": "up" }, - "north": { "uv": [ 7, 0, 9, 16 ], "texture": "#edge", "cullface": "north" }, - "west": { "uv": [ 16, 0, 9, 16 ], "texture": "#pane" }, - "east": { "uv": [ 9, 0, 16, 16 ], "texture": "#pane" } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/block/connected_glass_pane/side_alt.json b/src/main/resources/assets/create/models/block/connected_glass_pane/side_alt.json deleted file mode 100644 index 487efacf7..000000000 --- a/src/main/resources/assets/create/models/block/connected_glass_pane/side_alt.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#pane" - }, - "elements": [ - { "from": [ 7, 0, 9 ], - "to": [ 9, 16, 16 ], - "faces": { - "down": { "uv": [ 7, 0, 9, 7 ], "texture": "#edge", "cullface": "down" }, - "up": { "uv": [ 7, 0, 9, 7 ], "texture": "#edge", "cullface": "up" }, - "south": { "uv": [ 7, 0, 9, 16 ], "texture": "#edge", "cullface": "south" }, - "west": { "uv": [ 7, 0, 0, 16 ], "texture": "#pane" }, - "east": { "uv": [ 0, 0, 7, 16 ], "texture": "#pane" } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/block/content_observer/block.json b/src/main/resources/assets/create/models/block/content_observer/block.json deleted file mode 100644 index 4e3ce8d38..000000000 --- a/src/main/resources/assets/create/models/block/content_observer/block.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/brass_casing_inner", - "8": "create:block/content_observer", - "9": "create:block/content_observer_inner", - "10": "create:block/filtered_detector_top", - "brass_casing": "create:block/brass_casing", - "particle": "create:block/brass_casing_side", - "1_brass_casing": "create:block/brass_casing_side", - "end": "create:block/filtered_detector_front" - }, - "elements": [ - { - "name": "Bottom Plate", - "from": [0, 0, 0], - "to": [16, 6, 16], - "faces": { - "north": {"uv": [0, 10, 16, 16], "texture": "#8"}, - "east": {"uv": [0, 10, 16, 16], "texture": "#8"}, - "south": {"uv": [0, 10, 16, 16], "texture": "#8"}, - "west": {"uv": [0, 10, 16, 16], "texture": "#8"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#9"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#brass_casing"} - } - }, - { - "name": "Center", - "from": [0.9, 2, 0.9], - "to": [15.1, 14, 15.1], - "faces": { - "north": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 0, 14, 14], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 14, 14], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Indicator", - "from": [3.1, 3.1, -1.9], - "to": [12.9, 12.9, 1.1], - "faces": { - "north": {"uv": [0, 0, 10, 10], "texture": "#end"}, - "east": {"uv": [10, 0, 13, 10], "texture": "#end"}, - "west": {"uv": [10, 0, 13, 10], "texture": "#end"}, - "up": {"uv": [10, 0, 13, 10], "rotation": 90, "texture": "#end"}, - "down": {"uv": [10, 0, 13, 10], "rotation": 270, "texture": "#end"} - } - }, - { - "name": "Top Plate", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#1_brass_casing"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#1_brass_casing"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#1_brass_casing"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#1_brass_casing"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#brass_casing"} - } - } - ], - "display": { - "gui": { - "rotation": [30, -135, 0], - "scale": [0.625, 0.625, 0.625] - } - }, - "groups": [ - { - "name": "stockpile_switch", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/content_observer/block_powered.json b/src/main/resources/assets/create/models/block/content_observer/block_powered.json deleted file mode 100644 index 7ae7927b3..000000000 --- a/src/main/resources/assets/create/models/block/content_observer/block_powered.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/content_observer/block", - "textures": { - "8": "create:block/content_observer_powered", - "9": "create:block/content_observer_inner_powered" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north.json deleted file mode 100644 index 4dbb5f511..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_north.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#rail", - "rail": "create:block/controller_rail_base", - "tint": "create:block/controller_rail_tint" - }, - "elements": [ - { "from": [ 0, 9, 0 ], - "to": [ 16, 9, 16 ], - "rotation": { - "origin": [ 8, 9, 8 ], - "axis": "x", - "angle": 45, - "rescale": true - }, - "faces": { - "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" } - } - }, - { "from": [ 0, 9, 0 ], - "to": [ 16, 9, 16 ], - "rotation": { - "origin": [ 8, 9, 8 ], - "axis": "x", - "angle": 45, - "rescale": true - }, - "faces": { - "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south.json b/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south.json deleted file mode 100644 index 14521ede3..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_ascending_south.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#rail", - "rail": "create:block/controller_rail_base", - "tint": "create:block/controller_rail_tint" - }, - "elements": [ - { "from": [ 0, 9, 0 ], - "to": [ 16, 9, 16 ], - "rotation": { - "origin": [ 8, 9, 8 ], - "axis": "x", - "angle": -45, - "rescale": true - }, - "faces": { - "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" } - } - }, - { "from": [ 0, 9, 0 ], - "to": [ 16, 9, 16 ], - "rotation": { - "origin": [ 8, 9, 8 ], - "axis": "x", - "angle": -45, - "rescale": true - }, - "faces": { - "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/controller_rail/block_north_south.json b/src/main/resources/assets/create/models/block/controller_rail/block_north_south.json deleted file mode 100644 index bc7fc347c..000000000 --- a/src/main/resources/assets/create/models/block/controller_rail/block_north_south.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#rail", - "rail": "create:block/controller_rail_base", - "tint": "create:block/controller_rail_tint" - }, - "elements": [ - { "from": [ 0, 1, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#rail" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rail" } - } - }, - { "from": [ 0, 1, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#tint", "tintindex": 0 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#tint", "tintindex": 0 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/block.json b/src/main/resources/assets/create/models/block/copper_backtank/block.json deleted file mode 100644 index 00e3af846..000000000 --- a/src/main/resources/assets/create/models/block/copper_backtank/block.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/copper_backtank", - "particle": "create:block/copper_backtank" - }, - "elements": [ - { - "from": [5, 0, 5], - "to": [11, 4, 11], - "faces": { - "north": {"uv": [8.5, 4, 11.5, 6], "texture": "#0"}, - "east": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, - "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "west": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, - "down": {"uv": [4.5, 6.5, 7.5, 9.5], "texture": "#0"} - } - }, - { - "from": [5, 10, 5], - "to": [11, 12, 11], - "faces": { - "north": {"uv": [8.5, 0, 11.5, 1], "texture": "#0"}, - "east": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, - "south": {"uv": [0.5, 0, 3.5, 1], "texture": "#0"}, - "west": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, - "up": {"uv": [0.5, 6.5, 3.5, 9.5], "texture": "#0"} - } - }, - { - "from": [4, 4, 4], - "to": [12, 10, 12], - "faces": { - "north": {"uv": [8, 1, 12, 4], "texture": "#0"}, - "east": {"uv": [4, 1, 8, 4], "texture": "#0"}, - "south": {"uv": [0, 1, 4, 4], "texture": "#0"}, - "west": {"uv": [4, 1, 8, 4], "texture": "#0"}, - "up": {"uv": [0, 6, 4, 10], "texture": "#0"}, - "down": {"uv": [4, 6, 8, 10], "texture": "#0"} - } - }, - { - "from": [4, 4, 9], - "to": [12, 10, 11], - "faces": { - "south": {"uv": [0, 12.5, 1, 13], "texture": "#0"} - } - }, - { - "from": [5, 2, 3], - "to": [11, 11, 5], - "faces": { - "north": {"uv": [1, 11.5, 4, 16], "texture": "#0"}, - "east": {"uv": [5, 11.5, 4, 16], "texture": "#0"}, - "south": {"uv": [0, 0, 6, 9], "texture": "#0"}, - "west": {"uv": [4, 11.5, 5, 16], "texture": "#0"}, - "up": {"uv": [1, 10.5, 4, 11.5], "texture": "#0"}, - "down": {"uv": [0, 11.5, 1, 14.5], "rotation": 90, "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "Tank", - "origin": [0, 0, 0], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "Axle", - "origin": [8, 8, 8], - "children": [] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/block_cogs.json b/src/main/resources/assets/create/models/block/copper_backtank/block_cogs.json deleted file mode 100644 index e69634e11..000000000 --- a/src/main/resources/assets/create/models/block/copper_backtank/block_cogs.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/copper_backtank", - "particle": "create:block/copper_backtank" - }, - "elements": [ - { - "from": [5, 4, 10.5], - "to": [7, 9, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, - "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, - "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, - "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, - "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} - } - }, - { - "from": [5, 4, 10.5], - "to": [7, 9, 11.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, - "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, - "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, - "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, - "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} - } - }, - { - "from": [5, 6, 8.5], - "to": [7, 7, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, - "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} - } - }, - { - "from": [5, 6, 8.5], - "to": [7, 7, 13.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, - "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} - } - }, - { - "from": [9, 4, 10.5], - "to": [11, 9, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, - "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, - "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, - "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, - "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [9, 4, 10.5], - "to": [11, 9, 11.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, - "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, - "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, - "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, - "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [9, 6, 8.5], - "to": [11, 7, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, - "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} - } - }, - { - "from": [9, 6, 8.5], - "to": [11, 7, 13.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, - "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "Gears", - "origin": [1, 2.5, 0.5], - "children": [0, 1, 2, 3, 4, 5, 6, 7] - }, - { - "name": "Axle", - "origin": [8, 8, 8], - "children": [] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json b/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json deleted file mode 100644 index 53bfa1a20..000000000 --- a/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/copper_backtank", - "particle": "create:block/copper_backtank" - }, - "elements": [ - { - "from": [6.5, 12, 6.5], - "to": [9.5, 13, 9.5], - "faces": { - "north": {"uv": [14.5, 4, 16, 4.5], "texture": "#0"}, - "east": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, - "south": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, - "west": {"uv": [14.5, 3, 16, 3.5], "texture": "#0"} - } - }, - { - "from": [6, 13, 6], - "to": [10, 16, 10], - "faces": { - "north": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, - "east": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, - "south": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, - "west": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, - "up": {"uv": [14, 0, 16, 2], "texture": "#0"}, - "down": {"uv": [15.5, 5, 16, 5.5], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "Axle", - "origin": [8, 8, 8], - "children": [] - }, 0, 1] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/item.json b/src/main/resources/assets/create/models/block/copper_backtank/item.json deleted file mode 100644 index ce9a790e2..000000000 --- a/src/main/resources/assets/create/models/block/copper_backtank/item.json +++ /dev/null @@ -1,205 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_backtank", - "particle": "create:block/copper_backtank" - }, - "elements": [ - { - "from": [5, 4, 10.5], - "to": [7, 9, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, - "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, - "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, - "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, - "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} - } - }, - { - "from": [5, 4, 10.5], - "to": [7, 9, 11.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, - "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, - "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, - "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, - "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} - } - }, - { - "from": [5, 6, 8.5], - "to": [7, 7, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, - "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} - } - }, - { - "from": [5, 6, 8.5], - "to": [7, 7, 13.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, - "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} - } - }, - { - "from": [9, 4, 10.5], - "to": [11, 9, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, - "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, - "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, - "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, - "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [9, 4, 10.5], - "to": [11, 9, 11.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, - "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, - "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, - "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, - "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [9, 6, 8.5], - "to": [11, 7, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, - "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} - } - }, - { - "from": [9, 6, 8.5], - "to": [11, 7, 13.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, - "faces": { - "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, - "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, - "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} - } - }, - { - "from": [5, 0, 5], - "to": [11, 4, 11], - "faces": { - "north": {"uv": [8.5, 4, 11.5, 6], "texture": "#0"}, - "east": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, - "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, - "west": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, - "down": {"uv": [4.5, 6.5, 7.5, 9.5], "texture": "#0"} - } - }, - { - "from": [5, 10, 5], - "to": [11, 12, 11], - "faces": { - "north": {"uv": [8.5, 0, 11.5, 1], "texture": "#0"}, - "east": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, - "south": {"uv": [0.5, 0, 3.5, 1], "texture": "#0"}, - "west": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, - "up": {"uv": [0.5, 6.5, 3.5, 9.5], "texture": "#0"} - } - }, - { - "from": [4, 4, 4], - "to": [12, 10, 12], - "faces": { - "north": {"uv": [8, 1, 12, 4], "texture": "#0"}, - "east": {"uv": [4, 1, 8, 4], "texture": "#0"}, - "south": {"uv": [0, 1, 4, 4], "texture": "#0"}, - "west": {"uv": [4, 1, 8, 4], "texture": "#0"}, - "up": {"uv": [0, 6, 4, 10], "texture": "#0"}, - "down": {"uv": [4, 6, 8, 10], "texture": "#0"} - } - }, - { - "from": [4, 4, 9], - "to": [12, 10, 11], - "faces": { - "south": {"uv": [0, 12.5, 1, 13], "texture": "#0"} - } - }, - { - "from": [5, 2, 3], - "to": [11, 11, 5], - "faces": { - "north": {"uv": [1, 11.5, 4, 16], "texture": "#0"}, - "east": {"uv": [5, 11.5, 4, 16], "texture": "#0"}, - "south": {"uv": [0, 0, 6, 9], "texture": "#0"}, - "west": {"uv": [4, 11.5, 5, 16], "texture": "#0"}, - "up": {"uv": [1, 10.5, 4, 11.5], "texture": "#0"}, - "down": {"uv": [0, 11.5, 1, 14.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [6.5, 12, 6.5], - "to": [9.5, 13, 9.5], - "faces": { - "north": {"uv": [14.5, 4, 16, 4.5], "texture": "#0"}, - "east": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, - "south": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, - "west": {"uv": [14.5, 3, 16, 3.5], "texture": "#0"} - } - }, - { - "from": [6, 13, 6], - "to": [10, 16, 10], - "faces": { - "north": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, - "east": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, - "south": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, - "west": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, - "up": {"uv": [14, 0, 16, 2], "texture": "#0"}, - "down": {"uv": [15.5, 5, 16, 5.5], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "Gears", - "origin": [1, 2.5, 0.5], - "children": [0, 1, 2, 3, 4, 5, 6, 7] - }, - { - "name": "Tank", - "origin": [0, 0, 0], - "children": [8, 9, 10, 11, 12] - }, - { - "name": "Axle", - "origin": [8, 8, 8], - "children": [] - }, 13, 14] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/crate/bottom.json b/src/main/resources/assets/create/models/block/crate/bottom.json deleted file mode 100644 index 36ead3ace..000000000 --- a/src/main/resources/assets/create/models/block/crate/bottom.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "#side", - "4": "#crate", - "particle": "#casing" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 16, 15], - "faces": { - "north": {"uv": [8.5, 8, 15.5, 16], "texture": "#0"}, - "east": {"uv": [8.5, 8, 15.5, 16], "texture": "#0"}, - "south": {"uv": [8.5, 8, 15.5, 16], "texture": "#0"}, - "west": {"uv": [8.5, 8, 15.5, 16], "texture": "#0"}, - "down": {"uv": [8.5, 8.5, 15.5, 15.5], "rotation": 270, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/crate/left.json b/src/main/resources/assets/create/models/block/crate/left.json deleted file mode 100644 index f1e327587..000000000 --- a/src/main/resources/assets/create/models/block/crate/left.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "#side", - "1": "#crate", - "particle": "#casing" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 14, 16], - "faces": { - "north": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#1"}, - "east": {"uv": [8, 0.5, 15.5, 7.5], "texture": "#0"}, - "west": {"uv": [0.5, 0.5, 8, 7.5], "texture": "#0"}, - "up": {"uv": [0.5, 0.5, 8, 7.5], "rotation": 90, "texture": "#1"}, - "down": {"uv": [0.5, 0.5, 8, 7.5], "rotation": 270, "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/crate/right.json b/src/main/resources/assets/create/models/block/crate/right.json deleted file mode 100644 index 8d7a73675..000000000 --- a/src/main/resources/assets/create/models/block/crate/right.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "#side", - "1": "#crate", - "particle": "#casing" - }, - "elements": [ - { - "from": [1, 0, 0], - "to": [15, 14, 15], - "faces": { - "east": {"uv": [0.5, 0.5, 8, 7.5], "texture": "#0"}, - "south": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#1"}, - "west": {"uv": [8, 0.5, 15.5, 7.5], "texture": "#0"}, - "up": {"uv": [8, 0.5, 15.5, 7.5], "rotation": 90, "texture": "#1"}, - "down": {"uv": [8, 0.5, 15.5, 7.5], "rotation": 270, "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/crate/single.json b/src/main/resources/assets/create/models/block/crate/single.json deleted file mode 100644 index acc71e720..000000000 --- a/src/main/resources/assets/create/models/block/crate/single.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "#crate", - "particle": "#casing" - }, - "elements": [ - { - "name": "Crate", - "from": [1, 0, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#2"}, - "east": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#2"}, - "south": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#2"}, - "west": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#2"}, - "up": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#2"}, - "down": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/crate/top.json b/src/main/resources/assets/create/models/block/crate/top.json deleted file mode 100644 index ce2106e66..000000000 --- a/src/main/resources/assets/create/models/block/crate/top.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "#side", - "2": "#crate", - "particle": "#casing" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0"}, - "east": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0"}, - "south": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0"}, - "west": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0"}, - "up": {"uv": [8.5, 8.5, 15.5, 15.5], "rotation": 90, "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/creative_motor/block.json b/src/main/resources/assets/create/models/block/creative_motor/block.json deleted file mode 100644 index 5c1420dae..000000000 --- a/src/main/resources/assets/create/models/block/creative_motor/block.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/creative_casing", - "6": "create:block/creative_motor", - "7": "create:block/gearbox", - "8": "block/polished_andesite", - "9": "create:block/andesite_bricks", - "particle": "#5" - }, - "elements": [ - { - "name": "Back", - "from": [3, 3, 0.1], - "to": [13, 13, 2.1], - "faces": { - "north": {"uv": [0, 0, 10, 10], "texture": "#6"}, - "east": {"uv": [3, 0, 13, 2], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 0, 10, 10], "texture": "#6"}, - "west": {"uv": [3, 0, 13, 2], "rotation": 270, "texture": "#5"}, - "up": {"uv": [3, 0, 13, 2], "texture": "#5"}, - "down": {"uv": [3, 0, 13, 2], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Back", - "from": [3, 3, 12], - "to": [13, 13, 14], - "faces": { - "north": {"uv": [10, 0, 0, 10], "texture": "#6"}, - "east": {"uv": [3, 2, 13, 0], "rotation": 90, "texture": "#5"}, - "south": {"uv": [10, 0, 0, 10], "texture": "#6"}, - "west": {"uv": [3, 2, 13, 0], "rotation": 270, "texture": "#5"}, - "up": {"uv": [3, 2, 13, 0], "texture": "#5"}, - "down": {"uv": [3, 2, 13, 0], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Between Rims", - "from": [5, 5, 9], - "to": [11, 11, 13], - "faces": { - "north": {"uv": [14, 4, 20, 10], "texture": "#6"}, - "east": {"uv": [10, 6, 16, 10], "rotation": 270, "texture": "#6"}, - "south": {"uv": [10, 0, 16, 6], "texture": "#6"}, - "west": {"uv": [10, 6, 16, 10], "rotation": 90, "texture": "#6"}, - "up": {"uv": [10, 6, 16, 10], "rotation": 180, "texture": "#6"}, - "down": {"uv": [10, 6, 16, 10], "texture": "#6"} - } - }, - { - "name": "Between Rims", - "from": [3.5, 3.5, 3], - "to": [12.5, 12.5, 6], - "faces": { - "east": {"uv": [3, 10, 12, 13], "rotation": 270, "texture": "#6"}, - "west": {"uv": [3, 10, 12, 13], "rotation": 90, "texture": "#6"}, - "up": {"uv": [3, 10, 12, 13], "rotation": 180, "texture": "#6"}, - "down": {"uv": [3, 10, 12, 13], "texture": "#6"} - } - }, - { - "name": "Body", - "from": [4, 4, 2], - "to": [12, 12, 11], - "faces": { - "north": {"uv": [0, 4, 8, 14], "rotation": 180, "texture": "#5"}, - "east": {"uv": [4, 3, 12, 12], "rotation": 270, "texture": "#5"}, - "south": {"uv": [3, 3, 11, 11], "rotation": 180, "texture": "#5"}, - "west": {"uv": [4, 3, 12, 12], "rotation": 90, "texture": "#5"}, - "up": {"uv": [4, 3, 12, 12], "rotation": 180, "texture": "#5"}, - "down": {"uv": [4, 3, 12, 12], "rotation": 180, "texture": "#5"} - } - }, - { - "from": [2, 12, 0], - "to": [4, 14, 15], - "faces": { - "north": {"uv": [14, 10, 16, 12], "texture": "#6"}, - "east": {"uv": [14, 0, 16, 15], "rotation": 270, "texture": "#7"}, - "south": {"uv": [14, 10, 16, 12], "rotation": 90, "texture": "#6"}, - "west": {"uv": [0, 1, 2, 16], "rotation": 270, "texture": "#7"}, - "up": {"uv": [1, 0, 16, 2], "rotation": 90, "texture": "#7"}, - "down": {"uv": [0, 14, 15, 16], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [2, 2, 0], - "to": [4, 4, 15], - "faces": { - "north": {"uv": [14, 12, 16, 10], "texture": "#6"}, - "east": {"uv": [16, 0, 14, 15], "rotation": 270, "texture": "#7"}, - "south": {"uv": [16, 10, 14, 12], "rotation": 90, "texture": "#6"}, - "west": {"uv": [2, 1, 0, 16], "rotation": 270, "texture": "#7"}, - "up": {"uv": [15, 14, 0, 16], "rotation": 90, "texture": "#7"}, - "down": {"uv": [16, 0, 1, 2], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [12, 12, 0], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, - "east": {"uv": [0, 16, 2, 1], "rotation": 270, "texture": "#7"}, - "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, - "west": {"uv": [14, 15, 16, 0], "rotation": 270, "texture": "#7"}, - "up": {"uv": [1, 2, 16, 0], "rotation": 90, "texture": "#7"}, - "down": {"uv": [0, 16, 15, 14], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [12, 2, 0], - "to": [14, 4, 15], - "faces": { - "north": {"uv": [16, 12, 14, 10], "texture": "#6"}, - "east": {"uv": [2, 16, 0, 1], "rotation": 270, "texture": "#7"}, - "south": {"uv": [16, 12, 14, 10], "rotation": 90, "texture": "#6"}, - "west": {"uv": [16, 15, 14, 0], "rotation": 270, "texture": "#7"}, - "up": {"uv": [15, 16, 0, 14], "rotation": 90, "texture": "#7"}, - "down": {"uv": [16, 2, 1, 0], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [1, 0, 3], - "to": [15, 3, 10], - "faces": { - "north": {"uv": [0, 0, 14, 3], "texture": "#9"}, - "east": {"uv": [8, 0, 15, 3], "texture": "#9"}, - "south": {"uv": [1, 0, 15, 3], "texture": "#9"}, - "west": {"uv": [8, 0, 15, 3], "texture": "#9"}, - "up": {"uv": [1, 4, 15, 11], "texture": "#8"}, - "down": {"uv": [1, 4, 15, 11], "texture": "#8"} - } - } - ], - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/creative_motor/block_vertical.json b/src/main/resources/assets/create/models/block/creative_motor/block_vertical.json deleted file mode 100644 index c76210cca..000000000 --- a/src/main/resources/assets/create/models/block/creative_motor/block_vertical.json +++ /dev/null @@ -1,125 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/creative_casing", - "6": "create:block/creative_motor", - "7": "create:block/gearbox", - "8": "block/polished_andesite", - "9": "create:block/andesite_bricks", - "particle": "#5" - }, - "elements": [ - { - "name": "Back", - "from": [3, 12, 3], - "to": [13, 14, 13], - "faces": { - "north": {"uv": [3, 2, 13, 0], "rotation": 180, "texture": "#5"}, - "east": {"uv": [3, 2, 13, 0], "rotation": 180, "texture": "#5"}, - "south": {"uv": [3, 2, 13, 0], "rotation": 180, "texture": "#5"}, - "west": {"uv": [3, 2, 13, 0], "rotation": 180, "texture": "#5"}, - "up": {"uv": [10, 0, 0, 10], "texture": "#6"}, - "down": {"uv": [10, 0, 0, 10], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Between Rims", - "from": [5, 9, 5], - "to": [11, 13, 11], - "faces": { - "north": {"uv": [10, 6, 16, 10], "texture": "#6"}, - "east": {"uv": [10, 6, 16, 10], "texture": "#6"}, - "south": {"uv": [10, 6, 16, 10], "texture": "#6"}, - "west": {"uv": [10, 6, 16, 10], "texture": "#6"}, - "up": {"uv": [10, 0, 16, 6], "texture": "#6"}, - "down": {"uv": [14, 4, 20, 10], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Between Rims", - "from": [3.5, 5, 3.5], - "to": [12.5, 8, 12.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [3, 10, 12, 13], "texture": "#6"}, - "east": {"uv": [3, 10, 12, 13], "texture": "#6"}, - "south": {"uv": [3, 10, 12, 13], "texture": "#6"}, - "west": {"uv": [3, 10, 12, 13], "texture": "#6"} - } - }, - { - "name": "Body", - "from": [4, 2, 4], - "to": [12, 11, 12], - "faces": { - "north": {"uv": [4, 3, 12, 12], "texture": "#5"}, - "east": {"uv": [4, 3, 12, 12], "texture": "#5"}, - "south": {"uv": [4, 3, 12, 12], "texture": "#5"}, - "west": {"uv": [4, 3, 12, 12], "texture": "#5"}, - "up": {"uv": [3, 3, 11, 11], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 4, 8, 14], "texture": "#5"} - } - }, - { - "from": [2, 0, 12], - "to": [4, 15, 14], - "faces": { - "north": {"uv": [1, 14, 16, 16], "rotation": 90, "texture": "#7"}, - "east": {"uv": [0, 0, 2, 15], "rotation": 180, "texture": "#7"}, - "south": {"uv": [0, 0, 15, 2], "rotation": 270, "texture": "#7"}, - "west": {"uv": [14, 1, 16, 16], "texture": "#7"}, - "up": {"uv": [16, 12, 14, 10], "texture": "#6"}, - "down": {"uv": [16, 12, 14, 10], "rotation": 270, "texture": "#6"} - } - }, - { - "from": [2, 0, 2], - "to": [4, 15, 4], - "faces": { - "north": {"uv": [0, 2, 15, 0], "rotation": 270, "texture": "#7"}, - "east": {"uv": [2, 0, 0, 15], "rotation": 180, "texture": "#7"}, - "south": {"uv": [1, 16, 16, 14], "rotation": 90, "texture": "#7"}, - "west": {"uv": [16, 1, 14, 16], "texture": "#7"}, - "up": {"uv": [16, 10, 14, 12], "texture": "#6"}, - "down": {"uv": [14, 12, 16, 10], "rotation": 270, "texture": "#6"} - } - }, - { - "from": [12, 0, 12], - "to": [14, 15, 14], - "faces": { - "north": {"uv": [1, 16, 16, 14], "rotation": 90, "texture": "#7"}, - "east": {"uv": [16, 1, 14, 16], "texture": "#7"}, - "south": {"uv": [0, 2, 15, 0], "rotation": 270, "texture": "#7"}, - "west": {"uv": [2, 0, 0, 15], "rotation": 180, "texture": "#7"}, - "up": {"uv": [14, 12, 16, 10], "texture": "#6"}, - "down": {"uv": [16, 10, 14, 12], "rotation": 270, "texture": "#6"} - } - }, - { - "from": [12, 0, 2], - "to": [14, 15, 4], - "faces": { - "north": {"uv": [0, 0, 15, 2], "rotation": 270, "texture": "#7"}, - "east": {"uv": [14, 1, 16, 16], "texture": "#7"}, - "south": {"uv": [1, 14, 16, 16], "rotation": 90, "texture": "#7"}, - "west": {"uv": [0, 0, 2, 15], "rotation": 180, "texture": "#7"}, - "up": {"uv": [14, 10, 16, 12], "texture": "#6"}, - "down": {"uv": [14, 10, 16, 12], "rotation": 270, "texture": "#6"} - } - }, - { - "from": [3, 0.2, 3], - "to": [13, 4, 13], - "faces": { - "north": {"uv": [5, 0, 15, 4], "texture": "#9"}, - "east": {"uv": [5, 0, 15, 4], "texture": "#9"}, - "south": {"uv": [5, 0, 15, 4], "texture": "#9"}, - "west": {"uv": [5, 0, 15, 4], "texture": "#9"}, - "up": {"uv": [11, 14, 1, 4], "rotation": 90, "texture": "#8"}, - "down": {"uv": [10, 10, 0, 0], "rotation": 180, "texture": "#6"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/creative_motor/item.json b/src/main/resources/assets/create/models/block/creative_motor/item.json deleted file mode 100644 index da44299a2..000000000 --- a/src/main/resources/assets/create/models/block/creative_motor/item.json +++ /dev/null @@ -1,167 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/creative_casing", - "6": "create:block/creative_motor", - "7": "create:block/gearbox", - "8": "block/polished_andesite", - "9": "create:block/andesite_bricks", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top", - "particle": "#5" - }, - "elements": [ - { - "name": "Back", - "from": [3, 3, 0.1], - "to": [13, 13, 2.1], - "faces": { - "north": {"uv": [0, 0, 10, 10], "texture": "#6"}, - "east": {"uv": [3, 0, 13, 2], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 0, 10, 10], "texture": "#6"}, - "west": {"uv": [3, 0, 13, 2], "rotation": 270, "texture": "#5"}, - "up": {"uv": [3, 0, 13, 2], "texture": "#5"}, - "down": {"uv": [3, 0, 13, 2], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Back", - "from": [3, 3, 12], - "to": [13, 13, 14], - "faces": { - "north": {"uv": [10, 0, 0, 10], "texture": "#6"}, - "east": {"uv": [3, 2, 13, 0], "rotation": 90, "texture": "#5"}, - "south": {"uv": [10, 0, 0, 10], "texture": "#6"}, - "west": {"uv": [3, 2, 13, 0], "rotation": 270, "texture": "#5"}, - "up": {"uv": [3, 2, 13, 0], "texture": "#5"}, - "down": {"uv": [3, 2, 13, 0], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Between Rims", - "from": [5, 5, 9], - "to": [11, 11, 13], - "faces": { - "north": {"uv": [14, 4, 20, 10], "texture": "#6"}, - "east": {"uv": [10, 6, 16, 10], "rotation": 90, "texture": "#6"}, - "south": {"uv": [10, 0, 16, 6], "texture": "#6"}, - "west": {"uv": [10, 6, 16, 10], "rotation": 270, "texture": "#6"}, - "up": {"uv": [10, 6, 16, 10], "texture": "#6"}, - "down": {"uv": [10, 6, 16, 10], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Between Rims", - "from": [3.5, 3.5, 3], - "to": [12.5, 12.5, 6], - "faces": { - "east": {"uv": [3, 10, 12, 13], "rotation": 270, "texture": "#6"}, - "west": {"uv": [3, 10, 12, 13], "rotation": 90, "texture": "#6"}, - "up": {"uv": [3, 10, 12, 13], "rotation": 180, "texture": "#6"}, - "down": {"uv": [3, 10, 12, 13], "texture": "#6"} - } - }, - { - "name": "Body", - "from": [4, 4, 2], - "to": [12, 12, 11], - "faces": { - "north": {"uv": [0, 4, 8, 14], "rotation": 180, "texture": "#5"}, - "east": {"uv": [4, 3, 12, 12], "rotation": 90, "texture": "#5"}, - "south": {"uv": [3, 3, 11, 11], "rotation": 180, "texture": "#5"}, - "west": {"uv": [4, 3, 12, 12], "rotation": 90, "texture": "#5"}, - "up": {"uv": [4, 3, 12, 12], "rotation": 180, "texture": "#5"}, - "down": {"uv": [4, 3, 12, 12], "rotation": 180, "texture": "#5"} - } - }, - { - "from": [2, 12, 0], - "to": [4, 14, 15], - "faces": { - "north": {"uv": [14, 10, 16, 12], "texture": "#6"}, - "east": {"uv": [14, 1, 16, 16], "rotation": 270, "texture": "#7"}, - "south": {"uv": [14, 10, 16, 12], "rotation": 90, "texture": "#6"}, - "west": {"uv": [0, 0, 2, 15], "rotation": 270, "texture": "#7"}, - "up": {"uv": [0, 0, 15, 2], "rotation": 90, "texture": "#7"}, - "down": {"uv": [1, 14, 16, 16], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [2, 2, 0], - "to": [4, 4, 15], - "faces": { - "north": {"uv": [14, 12, 16, 10], "texture": "#6"}, - "east": {"uv": [16, 1, 14, 16], "rotation": 270, "texture": "#7"}, - "south": {"uv": [16, 10, 14, 12], "rotation": 90, "texture": "#6"}, - "west": {"uv": [2, 0, 0, 15], "rotation": 270, "texture": "#7"}, - "up": {"uv": [16, 14, 1, 16], "rotation": 90, "texture": "#7"}, - "down": {"uv": [15, 0, 0, 2], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [12, 12, 0], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [16, 10, 14, 12], "texture": "#6"}, - "east": {"uv": [0, 15, 2, 0], "rotation": 270, "texture": "#7"}, - "south": {"uv": [14, 12, 16, 10], "rotation": 90, "texture": "#6"}, - "west": {"uv": [14, 16, 16, 1], "rotation": 270, "texture": "#7"}, - "up": {"uv": [0, 2, 15, 0], "rotation": 90, "texture": "#7"}, - "down": {"uv": [1, 16, 16, 14], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [12, 2, 0], - "to": [14, 4, 15], - "faces": { - "north": {"uv": [16, 12, 14, 10], "texture": "#6"}, - "east": {"uv": [2, 15, 0, 0], "rotation": 270, "texture": "#7"}, - "south": {"uv": [16, 12, 14, 10], "rotation": 90, "texture": "#6"}, - "west": {"uv": [16, 16, 14, 1], "rotation": 270, "texture": "#7"}, - "up": {"uv": [16, 16, 1, 14], "rotation": 90, "texture": "#7"}, - "down": {"uv": [15, 2, 0, 0], "rotation": 90, "texture": "#7"} - } - }, - { - "from": [1, 0, 3], - "to": [15, 3, 10], - "faces": { - "north": {"uv": [0, 0, 14, 3], "texture": "#9"}, - "east": {"uv": [8, 0, 15, 3], "texture": "#9"}, - "south": {"uv": [1, 0, 15, 3], "texture": "#9"}, - "west": {"uv": [8, 0, 15, 3], "texture": "#9"}, - "up": {"uv": [1, 4, 15, 11], "texture": "#8"}, - "down": {"uv": [1, 4, 15, 11], "texture": "#8"} - } - }, - { - "name": "Axis", - "from": [6, 6, 6], - "to": [10, 10, 16], - "shade": false, - "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 10], "rotation": 270, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 10], "rotation": 90, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 10], "rotation": 180, "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 10], "texture": "#1_0"} - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "scale": [0.625, 0.625, 0.625] - } - }, - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [10] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/crushing_wheel.json b/src/main/resources/assets/create/models/block/crushing_wheel.json deleted file mode 100644 index 021c59f45..000000000 --- a/src/main/resources/assets/create/models/block/crushing_wheel.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/large_wheels", - "textures": { - "6": "create:block/crushing_wheel_body", - "spruce_log_top": "create:block/smooth_dark_log_top", - "axis_top": "create:block/axis_top", - "axis": "create:block/axis", - "crushing_wheel": "create:block/crushing_wheel", - "particle": "block/polished_andesite" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#axis_top"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#axis_top"} - } - }, - { - "name": "B1", - "from": [2, 1.95, -8], - "to": [9, 14.05, 7], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [7.5, 6, 11, 12], "texture": "#6"}, - "east": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "south": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "up": {"uv": [0, 9.5, 7.5, 13], "rotation": 270, "texture": "#6"}, - "down": {"uv": [0, 9.5, 7.5, 13], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "B2", - "from": [2, 1.9, -8], - "to": [10, 14.1, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"}, - "east": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "south": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 270, "texture": "#6"}, - "down": {"uv": [0, 6, 7.5, 9.5], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "B3", - "from": [2, 1.95, -8], - "to": [9, 14.05, 7], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [11, 0, 14.5, 6], "texture": "#6"}, - "east": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "south": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "up": {"uv": [0, 6, 7.5, 9.5], "rotation": 270, "texture": "#6"}, - "down": {"uv": [0, 6, 7.5, 9.5], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "B4", - "from": [2, 1.9, -8], - "to": [10, 14.1, 7], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8.05, 8]}, - "faces": { - "north": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"}, - "east": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "south": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 270, "texture": "#6"}, - "down": {"uv": [8.5, 12.5, 16, 16], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "B5", - "from": [-8, 1.95, 7], - "to": [7, 14.05, 14], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "east": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "south": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "west": {"uv": [7.5, 6, 11, 12], "texture": "#6"}, - "up": {"uv": [0, 9.5, 7.5, 13], "rotation": 180, "texture": "#6"}, - "down": {"uv": [0, 9.5, 7.5, 13], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "B6", - "from": [-8, 1.9, 6], - "to": [7, 14.1, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "east": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "south": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "west": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"}, - "up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 180, "texture": "#6"}, - "down": {"uv": [0, 6, 7.5, 9.5], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "B7", - "from": [-8, 1.95, 7], - "to": [7, 14.05, 14], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "east": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "south": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "west": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "up": {"uv": [0, 6, 7.5, 9.5], "rotation": 180, "texture": "#6"}, - "down": {"uv": [0, 6, 7.5, 9.5], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "B8", - "from": [-8, 1.9, 6], - "to": [7, 14.1, 14], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "east": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "south": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "west": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"}, - "up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 180, "texture": "#6"}, - "down": {"uv": [8.5, 12.5, 16, 16], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "B9", - "from": [7, 1.95, 9], - "to": [14, 14.05, 24], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "east": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "south": {"uv": [7.5, 6, 11, 12], "texture": "#6"}, - "west": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "up": {"uv": [0, 9.5, 7.5, 13], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 9.5, 7.5, 13], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "B10", - "from": [6, 1.9, 9], - "to": [14, 14.1, 24], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "east": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "south": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"}, - "west": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "up": {"uv": [0, 6, 7.5, 10], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 6, 7.5, 9.5], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "B11", - "from": [7, 1.95, 9], - "to": [14, 14.05, 24], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "east": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "south": {"uv": [7.5, 6, 11, 12], "texture": "#6"}, - "west": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "up": {"uv": [8.5, 12.5, 16, 16], "rotation": 90, "texture": "#6"}, - "down": {"uv": [8.5, 12.5, 16, 16], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "B12", - "from": [6, 1.9, 9], - "to": [14, 14.1, 24], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "east": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "south": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"}, - "west": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 6, 7.5, 9.5], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "B13", - "from": [9, 1.95, 2], - "to": [24, 14.05, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "east": {"uv": [7.5, 6, 11, 12], "texture": "#6"}, - "south": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "west": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "up": {"uv": [0, 9.5, 7.5, 13], "texture": "#6"}, - "down": {"uv": [0, 9.5, 7.5, 13], "texture": "#6"} - } - }, - { - "name": "B14", - "from": [9, 1.9, 2], - "to": [24, 14.1, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "east": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"}, - "south": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "west": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "up": {"uv": [0, 7.5, 7.5, 11.5], "texture": "#6"}, - "down": {"uv": [0, 6, 7.5, 9.5], "texture": "#6"} - } - }, - { - "name": "B15", - "from": [9, 1.95, 2], - "to": [24, 14.05, 9], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "east": {"uv": [11, 0, 14.5, 6], "texture": "#6"}, - "south": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "west": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "up": {"uv": [8.5, 12.5, 16, 16], "texture": "#6"}, - "down": {"uv": [8.5, 12.5, 16, 16], "texture": "#6"} - } - }, - { - "name": "B16", - "from": [2, 1.9, -8], - "to": [10, 14.1, 7], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 7.95, 8]}, - "faces": { - "north": {"uv": [3.5, 0, 7.5, 6], "texture": "#6"}, - "east": {"uv": [0, 0, 7.5, 6], "texture": "#6"}, - "south": {"uv": [7.5, 0, 11, 6], "texture": "#6"}, - "west": {"uv": [1.5, 6, 7.5, 0], "rotation": 180, "texture": "#6"}, - "up": {"uv": [0, 6.5, 7.5, 10.5], "rotation": 270, "texture": "#6"}, - "down": {"uv": [0, 6, 7.5, 9.5], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "AxisCoat", - "from": [4, 1, 4], - "to": [12, 15, 12], - "shade": false, - "faces": { - "north": {"uv": [4, 1, 12, 15], "texture": "#spruce_log_top"}, - "east": {"uv": [4, 1, 12, 15], "texture": "#spruce_log_top"}, - "south": {"uv": [4, 1, 12, 15], "texture": "#spruce_log_top"}, - "west": {"uv": [4, 1, 12, 15], "texture": "#spruce_log_top"}, - "up": {"uv": [4, 4, 12, 12], "texture": "#spruce_log_top"}, - "down": {"uv": [4, 4, 12, 12], "texture": "#spruce_log_top"} - } - }, - { - "name": "Cover", - "from": [-4, 1.85, -4], - "to": [20, 14.15, 20], - "faces": { - "up": {"uv": [2, 2, 14, 14], "texture": "#crushing_wheel"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#crushing_wheel"} - } - } - ], - "groups": [ - { - "name": "crushing_wheel", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/ctblock.json b/src/main/resources/assets/create/models/block/ctblock.json deleted file mode 100644 index 7607a59ae..000000000 --- a/src/main/resources/assets/create/models/block/ctblock.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "parent": "block/block", - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#sheet", "cullface": "north"}, - "east": {"uv": [0, 0, 2, 2], "texture": "#sheet", "cullface": "east"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#sheet", "cullface": "south"}, - "west": {"uv": [0, 0, 2, 2], "texture": "#sheet", "cullface": "west"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#sheet", "cullface": "up"}, - "down": {"uv": [0, 0, 2, 2], "texture": "#sheet", "cullface": "down"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cuckoo_clock/block.json b/src/main/resources/assets/create/models/block/cuckoo_clock/block.json deleted file mode 100644 index e748a2587..000000000 --- a/src/main/resources/assets/create/models/block/cuckoo_clock/block.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "block/stripped_oak_log", - "2": "block/spruce_log", - "3": "create:block/cuckoo_clock", - "4": "block/spruce_log_top", - "particle": "block/stripped_spruce_log" - }, - "elements": [ - { - "name": "Base", - "from": [1, 0, 1], - "to": [15, 2, 15], - "faces": { - "north": {"uv": [0, 0, 14, 2], "texture": "#2"}, - "east": {"uv": [0, 0, 14, 2], "texture": "#2"}, - "south": {"uv": [0, 0, 14, 2], "texture": "#2"}, - "west": {"uv": [0, 0, 14, 2], "texture": "#2"}, - "up": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 0, 14, 14], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "LowerBody", - "from": [3, 2, 2], - "to": [13, 6, 14], - "faces": { - "north": {"uv": [11, 5, 16, 7], "texture": "#3"}, - "east": {"uv": [0, 3, 6, 5], "texture": "#3"}, - "south": {"uv": [11, 3, 16, 5], "texture": "#3"}, - "west": {"uv": [0, 3, 6, 5], "texture": "#3"} - } - }, - { - "name": "MidBody", - "from": [2, 6, 2], - "to": [14, 12, 14], - "faces": { - "north": {"uv": [10, 0, 16, 3], "texture": "#3"}, - "east": {"uv": [0, 5, 6, 8], "texture": "#3"}, - "south": {"uv": [0, 0, 6, 3], "texture": "#3"}, - "west": {"uv": [0, 5, 6, 8], "texture": "#3"}, - "down": {"uv": [0, 10, 6, 16], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "UpperMidBody", - "from": [3, 12, 2], - "to": [13, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [6, 4, 11, 5], "texture": "#3"}, - "south": {"uv": [0, 9, 5, 10], "texture": "#3"} - } - }, - { - "name": "TopBody", - "from": [5, 14, 2], - "to": [11, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [7, 3, 10, 4], "texture": "#3"}, - "south": {"uv": [1, 8, 4, 9], "texture": "#3"} - } - }, - { - "name": "RoofLeft", - "from": [13, 10, 1], - "to": [15, 20, 15], - "rotation": {"angle": 45, "axis": "z", "origin": [14, 12, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 10], "texture": "#1"}, - "east": {"uv": [0, 0, 14, 10], "texture": "#1"}, - "south": {"uv": [0, 0, 2, 10], "texture": "#1"}, - "west": {"uv": [0, 0, 14, 10], "texture": "#1"}, - "up": {"uv": [0, 0, 14, 2], "rotation": 90, "texture": "#1"}, - "down": {"uv": [0, 0, 14, 2], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "RoofRight", - "from": [1, 10, 1], - "to": [3, 20, 15], - "rotation": {"angle": -45, "axis": "z", "origin": [2, 12, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 10], "texture": "#1"}, - "east": {"uv": [0, 0, 14, 10], "texture": "#1"}, - "south": {"uv": [0, 0, 2, 10], "texture": "#1"}, - "west": {"uv": [0, 0, 14, 10], "texture": "#1"}, - "up": {"uv": [0, 0, 14, 2], "rotation": 90, "texture": "#1"}, - "down": {"uv": [0, 0, 14, 2], "rotation": 270, "texture": "#1"} - } - }, - { - "name": "RoofCenter", - "from": [7, 16, 0.75], - "to": [9, 19, 15.25], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 3], "texture": "#2"}, - "east": {"uv": [0, 0, 14.5, 3], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 14.5, 3], "texture": "#2"}, - "up": {"uv": [0, 0, 14.5, 2], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 14.5, 2], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "Clock", - "from": [4.5, 2.5, 1.75], - "to": [11.5, 9.5, 1.75], - "faces": { - "north": {"uv": [6, 5, 9.5, 8.5], "texture": "#3"} - } - }, - { - "name": "ClockCenter", - "from": [7.475, 5.475, 1.45], - "to": [8.525, 6.525, 2.3], - "faces": { - "north": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "east": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "south": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "west": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "up": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"}, - "down": {"uv": [9, 9.5, 9.5, 10], "rotation": 270, "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "shaft_half", - "origin": [8, 8, 8], - "children": [] - }, - { - "name": "Creeper", - "origin": [6, 17, 12], - "children": [] - }, - { - "name": "Door", - "origin": [8, 8, 8], - "children": [] - }, - { - "name": "MovingClock", - "origin": [2, 6, 8], - "children": [] - }, - { - "name": "CuckooClock", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cuckoo_clock/creeper.json b/src/main/resources/assets/create/models/block/cuckoo_clock/creeper.json deleted file mode 100644 index 89abd9544..000000000 --- a/src/main/resources/assets/create/models/block/cuckoo_clock/creeper.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/cube", - "textures": { - "3": "create:block/cuckoo_clock" - }, - "elements": [ - { - "name": "CreeperFront", - "from": [-3.5, 11, 7.5], - "to": [-3, 11.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 18, 12]}, - "faces": { - "north": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "east": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "south": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "west": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "up": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "down": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"} - } - }, - { - "name": "CreeperBody", - "from": [-3, 11.5, 7.5], - "to": [-2.5, 12.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 17, 12]}, - "faces": { - "north": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "east": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "south": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "west": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "up": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "down": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"} - } - }, - { - "name": "CreeperHead", - "from": [-3.25, 12.5, 7.5], - "to": [-2.25, 13.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 17, 12]}, - "faces": { - "north": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "east": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "south": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "west": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "up": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"}, - "down": {"uv": [8.5, 9.5, 9, 10], "texture": "#3"} - } - }, - { - "name": "CreeperBack", - "from": [-2.5, 11, 7.5], - "to": [-2, 11.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 17, 12]}, - "faces": { - "north": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "east": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "south": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "west": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "up": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"}, - "down": {"uv": [8.5, 9, 9, 9.5], "texture": "#3"} - } - }, - { - "name": "Platform", - "from": [-4, 10.175, 7], - "to": [3, 11, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [6.5, 18, 11.75]}, - "faces": { - "north": {"uv": [12.5, 7.5, 16, 8], "texture": "#3"}, - "east": {"uv": [13, 7.5, 13.5, 8.5], "rotation": 90, "texture": "#3"}, - "south": {"uv": [12.5, 7.5, 16, 8], "texture": "#3"}, - "west": {"uv": [13, 7.5, 13.5, 8.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [12.5, 7.5, 16, 8.5], "texture": "#3"}, - "down": {"uv": [12.5, 7.5, 16, 8.5], "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "Creeper", - "origin": [6, 17, 12], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cuckoo_clock/hour_hand.json b/src/main/resources/assets/create/models/block/cuckoo_clock/hour_hand.json deleted file mode 100644 index 2b736c843..000000000 --- a/src/main/resources/assets/create/models/block/cuckoo_clock/hour_hand.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "3": "create:block/cuckoo_clock" - }, - "elements": [ - { - "name": "ClockHourHand", - "from": [1.6, 6, 7.5], - "to": [2.15, 7.75, 8.5], - "rotation": {"angle": 0, "axis": "x", "origin": [2, 6, 8]}, - "faces": { - "north": {"uv": [9, 9.5, 9.5, 10], "rotation": 270, "texture": "#3"}, - "east": {"uv": [9, 9.5, 9.5, 10], "rotation": 180, "texture": "#3"}, - "south": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"}, - "west": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "up": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"}, - "down": {"uv": [9, 9.5, 9.5, 10], "rotation": 270, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cuckoo_clock/item.json b/src/main/resources/assets/create/models/block/cuckoo_clock/item.json deleted file mode 100644 index 9ad34983d..000000000 --- a/src/main/resources/assets/create/models/block/cuckoo_clock/item.json +++ /dev/null @@ -1,247 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "block/stripped_oak_log", - "2": "block/spruce_log", - "3": "create:block/cuckoo_clock", - "4": "block/spruce_log_top", - "particle": "block/stripped_spruce_log" - }, - "elements": [ - { - "name": "LeftDoor", - "from": [1.5, 10, 6], - "to": [2.5, 14, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 11, 6]}, - "faces": { - "north": {"uv": [7.5, 10.5, 8, 12.5], "texture": "#3"}, - "east": {"uv": [3, 12, 4, 14], "texture": "#3"}, - "south": {"uv": [1.5, 12.5, 2, 14.5], "texture": "#3"}, - "west": {"uv": [7.5, 10.5, 8.5, 12.5], "texture": "#3"}, - "up": {"uv": [7.5, 10.5, 8.5, 11], "rotation": 90, "texture": "#3"}, - "down": {"uv": [7.5, 12, 8.5, 12.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "RightDoor", - "from": [1.5, 10, 8], - "to": [2.5, 14, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 10, 10]}, - "faces": { - "north": {"uv": [1.5, 12.5, 2, 14.5], "texture": "#3"}, - "east": {"uv": [3, 12, 4, 14], "texture": "#3"}, - "south": {"uv": [9, 10.5, 9.5, 12.5], "texture": "#3"}, - "west": {"uv": [8.5, 10.5, 9.5, 12.5], "texture": "#3"}, - "up": {"uv": [8.5, 10.5, 9.5, 11], "rotation": 90, "texture": "#3"}, - "down": {"uv": [8.5, 12, 9.5, 12.5], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "ClockHourHand", - "from": [1.6, 5.5, 8], - "to": [2.15, 6.5, 9.75], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 6, 8]}, - "faces": { - "north": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"}, - "east": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"}, - "south": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"}, - "west": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"}, - "up": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"}, - "down": {"uv": [9, 9.5, 9.5, 10], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "ClockMinuteHand", - "from": [1.6, 6, 7.5], - "to": [2.15, 8.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 6, 8]}, - "faces": { - "north": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "east": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "south": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "west": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "up": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "down": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"} - } - }, - { - "name": "Base", - "from": [1, 0, 1], - "to": [15, 2, 15], - "faces": { - "north": {"uv": [0, 0, 14, 2], "texture": "#2"}, - "east": {"uv": [0, 0, 14, 2], "texture": "#2"}, - "south": {"uv": [0, 0, 14, 2], "texture": "#2"}, - "west": {"uv": [0, 0, 14, 2], "texture": "#2"}, - "up": {"uv": [1, 1, 15, 15], "texture": "#4"}, - "down": {"uv": [0, 0, 14, 14], "texture": "#2"} - } - }, - { - "name": "LowerBody", - "from": [2, 2, 3], - "to": [14, 6, 13], - "faces": { - "north": {"uv": [0, 3, 6, 5], "texture": "#3"}, - "east": {"uv": [11, 3, 16, 5], "texture": "#3"}, - "south": {"uv": [0, 3, 6, 5], "texture": "#3"}, - "west": {"uv": [11, 5, 16, 7], "texture": "#3"} - } - }, - { - "name": "MidBody", - "from": [2, 6, 2], - "to": [14, 12, 14], - "faces": { - "north": {"uv": [0, 5, 6, 8], "texture": "#3"}, - "east": {"uv": [0, 0, 6, 3], "texture": "#3"}, - "south": {"uv": [0, 5, 6, 8], "texture": "#3"}, - "west": {"uv": [10, 0, 16, 3], "texture": "#3"}, - "down": {"uv": [0, 10, 6, 16], "texture": "#3"} - } - }, - { - "name": "UpperMidBody", - "from": [2, 12, 3], - "to": [14, 14, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "east": {"uv": [0, 9, 5, 10], "texture": "#3"}, - "west": {"uv": [6, 4, 11, 5], "texture": "#3"} - } - }, - { - "name": "TopBody", - "from": [2, 14, 5], - "to": [14, 16, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "east": {"uv": [1, 8, 4, 9], "texture": "#3"}, - "west": {"uv": [7, 3, 10, 4], "texture": "#3"} - } - }, - { - "name": "RoofLeft", - "from": [1, 10, 1], - "to": [15, 20, 3], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 2]}, - "faces": { - "north": {"uv": [0, 0, 14, 10], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 10], "texture": "#1"}, - "south": {"uv": [0, 0, 14, 10], "texture": "#1"}, - "west": {"uv": [0, 0, 2, 10], "texture": "#1"}, - "up": {"uv": [0, 0, 14, 2], "texture": "#1"}, - "down": {"uv": [0, 0, 14, 2], "texture": "#1"} - } - }, - { - "name": "RoofRight", - "from": [1, 10, 13], - "to": [15, 20, 15], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 12, 14]}, - "faces": { - "north": {"uv": [0, 0, 14, 10], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 10], "texture": "#1"}, - "south": {"uv": [0, 0, 14, 10], "texture": "#1"}, - "west": {"uv": [0, 0, 2, 10], "texture": "#1"}, - "up": {"uv": [0, 0, 14, 2], "texture": "#1"}, - "down": {"uv": [0, 0, 14, 2], "texture": "#1"} - } - }, - { - "name": "RoofCenter", - "from": [0.75, 16, 7], - "to": [15.25, 19, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [0, 0, 14.5, 3], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 3], "texture": "#2"}, - "south": {"uv": [0, 0, 14.5, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 3], "texture": "#2"}, - "up": {"uv": [0, 0, 14.5, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 14.5, 2], "texture": "#2"} - } - }, - { - "name": "Clock", - "from": [1.75, 2.5, 4.5], - "to": [1.75, 9.5, 11.5], - "faces": { - "west": {"uv": [6, 5, 9.5, 8.5], "texture": "#3"} - } - }, - { - "name": "ClockCenter", - "from": [1.45, 5.475, 7.475], - "to": [2.3, 6.525, 8.525], - "faces": { - "north": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "east": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "south": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "west": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "up": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"}, - "down": {"uv": [9, 9.5, 9.5, 10], "texture": "#3"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 135, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, -90, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "shaft_half", - "origin": [8, 8, 8], - "children": [] - }, - { - "name": "Creeper", - "origin": [6, 17, 12], - "children": [] - }, - { - "name": "Door", - "origin": [8, 8, 8], - "children": [0, 1] - }, - { - "name": "MovingClock", - "origin": [2, 6, 8], - "children": [2, 3] - }, - { - "name": "CuckooClock", - "origin": [8, 8, 8], - "children": [4, 5, 6, 7, 8, 9, 10, 11, 12, 13] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cuckoo_clock/left_door.json b/src/main/resources/assets/create/models/block/cuckoo_clock/left_door.json deleted file mode 100644 index ca42dbff4..000000000 --- a/src/main/resources/assets/create/models/block/cuckoo_clock/left_door.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "3": "create:block/cuckoo_clock" - }, - "elements": [ - { - "name": "LeftDoor", - "from": [1.5, 10, 6], - "to": [2.5, 14, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 11, 6]}, - "faces": { - "north": {"uv": [7.5, 10.5, 8, 12.5], "texture": "#3"}, - "east": {"uv": [3, 12, 4, 14], "texture": "#3"}, - "south": {"uv": [1.5, 12.5, 2, 14.5], "texture": "#3"}, - "west": {"uv": [7.5, 10.5, 8.5, 12.5], "texture": "#3"}, - "up": {"uv": [7.5, 10.5, 8.5, 11], "rotation": 90, "texture": "#3"}, - "down": {"uv": [7.5, 12, 8.5, 12.5], "rotation": 270, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cuckoo_clock/minute_hand.json b/src/main/resources/assets/create/models/block/cuckoo_clock/minute_hand.json deleted file mode 100644 index 0494373c4..000000000 --- a/src/main/resources/assets/create/models/block/cuckoo_clock/minute_hand.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "3": "create:block/cuckoo_clock" - }, - "elements": [ - { - "name": "ClockMinuteHand", - "from": [1.6, 6, 7.5], - "to": [2.15, 8.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 6, 8]}, - "faces": { - "north": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "east": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "south": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "west": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "up": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"}, - "down": {"uv": [9, 8.5, 9.5, 10], "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cuckoo_clock/pig.json b/src/main/resources/assets/create/models/block/cuckoo_clock/pig.json deleted file mode 100644 index 4cb13904f..000000000 --- a/src/main/resources/assets/create/models/block/cuckoo_clock/pig.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/cube", - "textures": { - "3": "create:block/cuckoo_clock" - }, - "elements": [ - { - "name": "PigLeftFront", - "from": [-3, 11, 7.25], - "to": [-2.5, 11.5, 7.75], - "rotation": {"angle": 0, "axis": "z", "origin": [6.5, 18, 11.75]}, - "faces": { - "north": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "east": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "south": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "west": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "up": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "down": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"} - } - }, - { - "name": "PigRightFront", - "from": [-3, 11, 8.25], - "to": [-2.5, 11.5, 8.75], - "rotation": {"angle": 0, "axis": "z", "origin": [6.5, 18, 11.75]}, - "faces": { - "north": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "east": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "south": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "west": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "up": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "down": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"} - } - }, - { - "name": "PigBody", - "from": [-3, 11.5, 7.25], - "to": [-1.25, 12.5, 8.75], - "rotation": {"angle": 0, "axis": "z", "origin": [6.5, 18, 11.75]}, - "faces": { - "north": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "east": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "south": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "west": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "up": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "down": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"} - } - }, - { - "name": "PigHead", - "from": [-4, 11.75, 7.5], - "to": [-3, 12.75, 8.5], - "rotation": {"angle": 0, "axis": "z", "origin": [6.5, 18, 11.75]}, - "faces": { - "north": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "east": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "south": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "west": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "up": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"}, - "down": {"uv": [8, 9.5, 8.5, 10], "texture": "#3"} - } - }, - { - "name": "PigLeftBack", - "from": [-1.75, 11, 7.25], - "to": [-1.25, 11.5, 7.75], - "rotation": {"angle": 0, "axis": "z", "origin": [6.5, 18, 11.75]}, - "faces": { - "north": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "east": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "south": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "west": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "up": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "down": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"} - } - }, - { - "name": "PigRightBack", - "from": [-1.75, 11, 8.25], - "to": [-1.25, 11.5, 8.75], - "rotation": {"angle": 0, "axis": "z", "origin": [6.5, 18, 11.75]}, - "faces": { - "north": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "east": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "south": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "west": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "up": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"}, - "down": {"uv": [8, 9, 8.5, 9.5], "texture": "#3"} - } - }, - { - "name": "Platform", - "from": [-4, 10.175, 7], - "to": [3, 11, 9], - "rotation": {"angle": 0, "axis": "z", "origin": [6.5, 18, 11.75]}, - "faces": { - "north": {"uv": [12.5, 7.5, 16, 8], "texture": "#3"}, - "east": {"uv": [13, 7.5, 13.5, 8.5], "rotation": 90, "texture": "#3"}, - "south": {"uv": [12.5, 7.5, 16, 8], "texture": "#3"}, - "west": {"uv": [13, 7.5, 13.5, 8.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [12.5, 7.5, 16, 8.5], "texture": "#3"}, - "down": {"uv": [12.5, 7.5, 16, 8.5], "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "Pig", - "origin": [6, 17, 12], - "children": [0, 1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/cuckoo_clock/right_door.json b/src/main/resources/assets/create/models/block/cuckoo_clock/right_door.json deleted file mode 100644 index 36d8a5591..000000000 --- a/src/main/resources/assets/create/models/block/cuckoo_clock/right_door.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "3": "create:block/cuckoo_clock" - }, - "elements": [ - { - "name": "RightDoor", - "from": [1.5, 10, 8], - "to": [2.5, 14, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 10, 10]}, - "faces": { - "north": {"uv": [1.5, 12.5, 2, 14.5], "texture": "#3"}, - "east": {"uv": [3, 12, 4, 14], "texture": "#3"}, - "south": {"uv": [9, 10.5, 9.5, 12.5], "texture": "#3"}, - "west": {"uv": [8.5, 10.5, 9.5, 12.5], "texture": "#3"}, - "up": {"uv": [8.5, 10.5, 9.5, 11], "rotation": 90, "texture": "#3"}, - "down": {"uv": [8.5, 12, 9.5, 12.5], "rotation": 270, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/deployer/hand_holding.json b/src/main/resources/assets/create/models/block/deployer/hand_holding.json deleted file mode 100644 index 0548e608e..000000000 --- a/src/main/resources/assets/create/models/block/deployer/hand_holding.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "18": "create:block/deployer", - "mechanical_press_head": "create:block/mechanical_press_head", - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "Cap", - "from": [5, 5, 12], - "to": [11, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -1]}, - "faces": { - "north": {"uv": [10, 6, 16, 12], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#mechanical_press_pole"}, - "south": {"uv": [10, 6, 16, 12], "texture": "#mechanical_press_pole"}, - "west": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#mechanical_press_pole"}, - "up": {"uv": [0, 14, 6, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [0, 14, 6, 16], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "from": [6, 6, 14], - "to": [10, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 5]}, - "faces": { - "north": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "east": {"uv": [3, 0, 5, 4], "rotation": 180, "texture": "#mechanical_press_head"}, - "south": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "west": {"uv": [3, 0, 5, 4], "texture": "#mechanical_press_head"}, - "up": {"uv": [3, 0, 5, 4], "rotation": 270, "texture": "#mechanical_press_head"}, - "down": {"uv": [3, 0, 5, 4], "rotation": 90, "texture": "#mechanical_press_head"} - } - }, - { - "from": [5, 7, 15], - "to": [11, 11, 18], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 9, 5]}, - "faces": { - "north": {"uv": [6, 1, 10, 7], "rotation": 90, "texture": "#18"}, - "east": {"uv": [1, 4, 4, 8], "texture": "#18"}, - "south": {"uv": [6, 1, 10, 7], "rotation": 90, "texture": "#18"}, - "west": {"uv": [1, 4, 4, 8], "texture": "#18"}, - "up": {"uv": [1, 2, 4, 8], "rotation": 270, "texture": "#18"}, - "down": {"uv": [1, 2, 4, 8], "rotation": 90, "texture": "#18"} - } - }, - { - "from": [11, 6, 16], - "to": [13, 8, 19], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 9, 5]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "east": {"uv": [0, 2, 2, 5], "rotation": 90, "texture": "#18"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "west": {"uv": [0, 2, 2, 5], "rotation": 90, "texture": "#18"}, - "up": {"uv": [0, 2, 2, 5], "texture": "#18"}, - "down": {"uv": [0, 2, 2, 5], "rotation": 180, "texture": "#18"} - } - }, - { - "from": [5, 5, 15], - "to": [11, 7, 18], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 9, 5]}, - "faces": { - "north": {"uv": [0, 1, 2, 7], "rotation": 90, "texture": "#18"}, - "east": {"uv": [1, 4, 4, 6], "texture": "#18"}, - "south": {"uv": [0, 1, 2, 7], "rotation": 90, "texture": "#18"}, - "west": {"uv": [1, 4, 4, 6], "texture": "#18"}, - "up": {"uv": [1, 2, 4, 8], "rotation": 270, "texture": "#18"}, - "down": {"uv": [1, 2, 4, 8], "rotation": 90, "texture": "#18"} - } - }, - { - "from": [7, 11, 16], - "to": [9, 13, 20], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 4]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "east": {"uv": [1, 4, 5, 6], "texture": "#18"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "west": {"uv": [1, 4, 5, 6], "texture": "#18"}, - "up": {"uv": [0, 3, 2, 7], "texture": "#18"}, - "down": {"uv": [0, 3, 2, 7], "texture": "#18"} - } - }, - { - "from": [9, 11, 16], - "to": [11, 13, 21], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 4]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "east": {"uv": [0, 2, 2, 7], "rotation": 90, "texture": "#18"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "west": {"uv": [1, 4, 6, 6], "texture": "#18"}, - "up": {"uv": [0, 2, 2, 7], "texture": "#18"}, - "down": {"uv": [0, 3, 2, 8], "texture": "#18"} - } - }, - { - "from": [5, 11, 16], - "to": [7, 13, 20], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 4]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "east": {"uv": [1, 4, 5, 6], "texture": "#18"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "west": {"uv": [0, 3, 2, 7], "rotation": 90, "texture": "#18"}, - "up": {"uv": [0, 3, 2, 7], "texture": "#18"}, - "down": {"uv": [0, 3, 2, 7], "texture": "#18"} - } - } - ], - "groups": [ - { - "name": "head", - "origin": [8, 8, 8], - "children": [0, - { - "name": "Open", - "origin": [8, 8, 8], - "children": [1, 2, 3, 4, 5, 6, 7] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/deployer/hand_pointing.json b/src/main/resources/assets/create/models/block/deployer/hand_pointing.json deleted file mode 100644 index b0b91369a..000000000 --- a/src/main/resources/assets/create/models/block/deployer/hand_pointing.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "18": "create:block/deployer", - "mechanical_press_head": "create:block/mechanical_press_head", - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "Cap", - "from": [5, 5, 12], - "to": [11, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -1]}, - "faces": { - "north": {"uv": [10, 6, 16, 12], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#mechanical_press_pole"}, - "south": {"uv": [10, 6, 16, 12], "texture": "#mechanical_press_pole"}, - "west": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#mechanical_press_pole"}, - "up": {"uv": [0, 14, 6, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [0, 14, 6, 16], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "from": [4, 5, 17], - "to": [6, 10, 21], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 8, 2, 13], "texture": "#18"}, - "east": {"uv": [0, 0, 4, 5], "texture": "#18"}, - "south": {"uv": [0, 1, 2, 6], "texture": "#18"}, - "west": {"uv": [0, 8, 4, 13], "texture": "#18"}, - "up": {"uv": [0, 0, 2, 4], "texture": "#18"}, - "down": {"uv": [0, 4, 2, 8], "texture": "#18"} - } - }, - { - "from": [6, 5, 17], - "to": [8, 10, 21], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 8, 2, 13], "texture": "#18"}, - "east": {"uv": [4, 8, 0, 13], "texture": "#18"}, - "south": {"uv": [0, 1, 2, 6], "texture": "#18"}, - "west": {"uv": [0, 8, 4, 13], "texture": "#18"}, - "up": {"uv": [0, 0, 2, 4], "texture": "#18"}, - "down": {"uv": [0, 4, 2, 8], "texture": "#18"} - } - }, - { - "from": [6, 6, 14], - "to": [10, 9.95, 18], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 5]}, - "faces": { - "north": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "east": {"uv": [3, 0, 7, 4], "texture": "#mechanical_press_head"}, - "south": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "west": {"uv": [3, 0, 7, 4], "texture": "#mechanical_press_head"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#mechanical_press_head"}, - "down": {"uv": [4, 8, 8, 12], "rotation": 90, "texture": "#mechanical_press_head"} - } - }, - { - "from": [8, 8, 19], - "to": [10, 10, 25], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "east": {"uv": [2, 3, 4, 9], "rotation": 270, "texture": "#18"}, - "south": {"uv": [0, 1, 2, 3], "texture": "#18"}, - "west": {"uv": [4, 2, 6, 8], "rotation": 90, "texture": "#18"}, - "up": {"uv": [0, 0, 2, 6], "texture": "#18"}, - "down": {"uv": [0, 3, 2, 9], "texture": "#18"} - } - }, - { - "from": [8, 7, 17], - "to": [12, 10, 19], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 0, 4, 3], "texture": "#18"}, - "east": {"uv": [0, 1, 2, 4], "rotation": 180, "texture": "#18"}, - "south": {"uv": [0, 8, 3, 12], "rotation": 270, "texture": "#18"}, - "west": {"uv": [0, 0, 2, 3], "texture": "#18"}, - "up": {"uv": [2, 0, 0, 4], "rotation": 270, "texture": "#18"}, - "down": {"uv": [0, 2, 2, 6], "rotation": 270, "texture": "#18"} - } - }, - { - "from": [5, 7, 15], - "to": [11, 10, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 2, 3, 8], "rotation": 270, "texture": "#18"}, - "east": {"uv": [1, 4, 3, 7], "texture": "#18"}, - "south": {"uv": [0, 0, 6, 3], "texture": "#18"}, - "west": {"uv": [1, 4, 3, 7], "texture": "#18"}, - "up": {"uv": [1, 2, 3, 8], "rotation": 270, "texture": "#18"}, - "down": {"uv": [1, 2, 3, 8], "rotation": 90, "texture": "#18"} - } - } - ], - "groups": [ - { - "name": "head", - "origin": [8, 8, 8], - "children": [0, - { - "name": "Pointing", - "origin": [8, 8, 8], - "children": [1, 2, 3, 4, 5, 6] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/deployer/hand_punching.json b/src/main/resources/assets/create/models/block/deployer/hand_punching.json deleted file mode 100644 index 2cde3a6ae..000000000 --- a/src/main/resources/assets/create/models/block/deployer/hand_punching.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "18": "create:block/deployer", - "mechanical_press_head": "create:block/mechanical_press_head", - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "Cap", - "from": [5, 5, 12], - "to": [11, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -1]}, - "faces": { - "north": {"uv": [10, 6, 16, 12], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#mechanical_press_pole"}, - "south": {"uv": [10, 6, 16, 12], "texture": "#mechanical_press_pole"}, - "west": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#mechanical_press_pole"}, - "up": {"uv": [0, 14, 6, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [0, 14, 6, 16], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "from": [6, 6, 14], - "to": [10.05, 9.95, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "east": {"uv": [4, 0, 7, 4], "texture": "#mechanical_press_head"}, - "south": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "west": {"uv": [3, 0, 6, 4], "texture": "#mechanical_press_head"}, - "up": {"uv": [3, 0, 6, 4], "rotation": 270, "texture": "#mechanical_press_head"}, - "down": {"uv": [4, 8, 7, 12], "rotation": 270, "texture": "#mechanical_press_head"} - } - }, - { - "from": [5, 5, 16], - "to": [9, 7, 20], - "rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 7]}, - "faces": { - "north": {"uv": [0, 8, 2, 12], "rotation": 90, "texture": "#18"}, - "east": {"uv": [0, 4, 2, 8], "rotation": 270, "texture": "#18"}, - "south": {"uv": [0, 1, 2, 5], "rotation": 270, "texture": "#18"}, - "west": {"uv": [0, 0, 2, 4], "rotation": 270, "texture": "#18"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#18"}, - "down": {"uv": [0, 8, 4, 12], "rotation": 270, "texture": "#18"} - } - }, - { - "from": [5, 7, 17], - "to": [9, 9, 21], - "rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 7]}, - "faces": { - "north": {"uv": [0, 8, 2, 12], "rotation": 90, "texture": "#18"}, - "east": {"uv": [0, 4, 2, 8], "rotation": 270, "texture": "#18"}, - "south": {"uv": [0, 1, 2, 5], "rotation": 270, "texture": "#18"}, - "west": {"uv": [0, 0, 2, 4], "rotation": 270, "texture": "#18"}, - "up": {"uv": [0, 8, 4, 12], "rotation": 270, "texture": "#18"}, - "down": {"uv": [0, 8, 4, 12], "rotation": 270, "texture": "#18"} - } - }, - { - "from": [5, 9, 17], - "to": [10, 11, 21], - "rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 7]}, - "faces": { - "north": {"uv": [0, 8, 2, 13], "rotation": 90, "texture": "#18"}, - "east": {"uv": [0, 4, 2, 8], "rotation": 270, "texture": "#18"}, - "south": {"uv": [0, 1, 2, 6], "rotation": 270, "texture": "#18"}, - "west": {"uv": [0, 0, 2, 4], "rotation": 270, "texture": "#18"}, - "up": {"uv": [0, 8, 4, 13], "rotation": 90, "texture": "#18"}, - "down": {"uv": [0, 8, 4, 13], "rotation": 270, "texture": "#18"} - } - }, - { - "from": [8, 6, 17], - "to": [11, 10, 19], - "rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 3], "rotation": 90, "texture": "#18"}, - "east": {"uv": [0, 0, 2, 4], "texture": "#18"}, - "south": {"uv": [0, 4, 3, 8], "rotation": 180, "texture": "#18"}, - "west": {"uv": [0, 0, 2, 4], "rotation": 180, "texture": "#18"}, - "up": {"uv": [0, 0, 2, 3], "rotation": 90, "texture": "#18"}, - "down": {"uv": [0, 0, 2, 3], "rotation": 270, "texture": "#18"} - } - }, - { - "from": [9, 8, 15], - "to": [11, 10, 17], - "rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 8]}, - "faces": { - "north": {"uv": [0, 2, 2, 4], "rotation": 90, "texture": "#18"}, - "east": {"uv": [0, 2, 2, 4], "rotation": 90, "texture": "#18"}, - "south": {"uv": [0, 8, 2, 10], "rotation": 180, "texture": "#18"}, - "west": {"uv": [0, 0, 1, 2], "rotation": 180, "texture": "#18"}, - "up": {"uv": [0, 0, 2, 2], "rotation": 90, "texture": "#18"}, - "down": {"uv": [0, 0, 1, 2], "rotation": 270, "texture": "#18"} - } - }, - { - "from": [5, 7, 15], - "to": [10, 11, 17], - "rotation": {"angle": 0, "axis": "x", "origin": [7, 8, 8]}, - "faces": { - "north": {"uv": [6, 1, 10, 6], "rotation": 90, "texture": "#18"}, - "east": {"uv": [0, 6, 3, 8], "rotation": 90, "texture": "#18"}, - "south": {"uv": [0, 0, 3, 4], "rotation": 270, "texture": "#18"}, - "west": {"uv": [0, 2, 2, 6], "texture": "#18"}, - "up": {"uv": [0, 0, 2, 5], "rotation": 90, "texture": "#18"}, - "down": {"uv": [1, 4, 3, 8], "rotation": 270, "texture": "#18"} - } - } - ], - "groups": [ - { - "name": "head", - "origin": [8, 8, 8], - "children": [0, - { - "name": "Item", - "origin": [8, 8, 8], - "children": [1, 2, 3, 4, 5, 6, 7] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/deployer/horizontal.json b/src/main/resources/assets/create/models/block/deployer/horizontal.json deleted file mode 100644 index 7b8184d80..000000000 --- a/src/main/resources/assets/create/models/block/deployer/horizontal.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "6": "create:block/piston_bottom", - "7": "create:block/piston_inner", - "particle": "create:block/gearbox_top", - "gearbox_top": "create:block/gearbox_top", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 16, 2], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#6"}, - "east": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#gearbox_top"}, - "south": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#gearbox_top"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#gearbox_top"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#andesite_casing_short"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#andesite_casing_short"} - } - }, - { - "name": "Inner", - "from": [1, 2, 2], - "to": [15, 14, 12], - "faces": { - "north": {"uv": [0, 0, 12, 14], "rotation": 270, "texture": "#gearbox"}, - "east": {"uv": [2, 4, 14, 14], "rotation": 270, "texture": "#gearbox"}, - "south": {"uv": [2, 1, 14, 15], "rotation": 90, "texture": "#7"}, - "west": {"uv": [2, 4, 14, 14], "rotation": 90, "texture": "#gearbox"} - } - }, - { - "name": "Side", - "from": [0, 0, 2], - "to": [16, 2, 12], - "faces": { - "east": {"uv": [0, 2, 2, 12], "rotation": 270, "texture": "#gearbox_top"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#andesite_casing_short"}, - "west": {"uv": [14, 0, 16, 10], "rotation": 90, "texture": "#gearbox_top"}, - "up": {"uv": [0, 0, 16, 10], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [0, 4, 16, 14], "texture": "#andesite_casing_short"} - } - }, - { - "name": "Side2", - "from": [0, 14, 2], - "to": [16, 16, 12], - "faces": { - "east": {"uv": [14, 2, 16, 12], "rotation": 270, "texture": "#gearbox_top"}, - "south": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 2, 10], "rotation": 90, "texture": "#gearbox_top"}, - "up": {"uv": [0, 4, 16, 14], "rotation": 180, "texture": "#andesite_casing_short"}, - "down": {"uv": [0, 0, 16, 10], "texture": "#gearbox_top"} - } - } - ], - "groups": [ - { - "name": "body", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/deployer/item.json b/src/main/resources/assets/create/models/block/deployer/item.json deleted file mode 100644 index 2dba7845a..000000000 --- a/src/main/resources/assets/create/models/block/deployer/item.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "6": "create:block/piston_bottom", - "7": "create:block/piston_inner", - "18": "create:block/deployer", - "gearbox_top": "create:block/gearbox_top", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short", - "mechanical_press_pole": "create:block/mechanical_press_pole", - "mechanical_press_head": "create:block/mechanical_press_head", - "particle": "create:block/axis" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 16, 2], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#6"}, - "east": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#gearbox_top"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#andesite_casing_short"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#gearbox_top"} - } - }, - { - "name": "Inner", - "from": [2, 1, 2], - "to": [14, 15, 12], - "faces": { - "north": {"uv": [0, 0, 12, 14], "texture": "#gearbox"}, - "south": {"uv": [2, 1, 14, 15], "texture": "#7"}, - "up": {"uv": [2, 4, 14, 14], "rotation": 180, "texture": "#gearbox"}, - "down": {"uv": [2, 4, 14, 14], "texture": "#gearbox"} - } - }, - { - "name": "Side", - "from": [14, 0, 2], - "to": [16, 16, 12], - "faces": { - "east": {"uv": [0, 4, 16, 14], "rotation": 270, "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 16, 10], "rotation": 90, "texture": "#gearbox_top"}, - "up": {"uv": [0, 2, 2, 12], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [14, 0, 16, 10], "texture": "#gearbox_top"} - } - }, - { - "name": "Side2", - "from": [0, 0, 2], - "to": [2, 16, 12], - "faces": { - "east": {"uv": [0, 0, 16, 10], "rotation": 270, "texture": "#gearbox_top"}, - "south": {"uv": [0, 0, 16, 2], "rotation": 90, "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 4, 16, 14], "rotation": 90, "texture": "#andesite_casing_short"}, - "up": {"uv": [14, 2, 16, 12], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [0, 0, 2, 10], "texture": "#gearbox_top"} - } - }, - { - "name": "Pole1Core", - "from": [6, 6, 4], - "to": [10, 10, 12], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 10]}, - "faces": { - "east": {"uv": [1, 6, 5, 14], "rotation": 90, "texture": "#mechanical_press_pole"}, - "west": {"uv": [1, 6, 5, 14], "rotation": 270, "texture": "#mechanical_press_pole"}, - "up": {"uv": [1, 6, 5, 14], "texture": "#mechanical_press_pole"}, - "down": {"uv": [6, 6, 10, 14], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Core", - "from": [6, 6, -9], - "to": [10, 10, 4], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 10]}, - "faces": { - "north": {"uv": [11, 6, 15, 10], "rotation": 270, "texture": "#mechanical_press_pole"}, - "east": {"uv": [1, 0, 5, 13], "rotation": 90, "texture": "#mechanical_press_pole"}, - "west": {"uv": [1, 0, 5, 13], "rotation": 270, "texture": "#mechanical_press_pole"}, - "up": {"uv": [1, 0, 5, 13], "texture": "#mechanical_press_pole"}, - "down": {"uv": [1, 0, 5, 13], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Cap", - "from": [5, 5, 12], - "to": [11, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -1]}, - "faces": { - "north": {"uv": [10, 6, 16, 12], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#mechanical_press_pole"}, - "south": {"uv": [10, 6, 16, 12], "texture": "#mechanical_press_pole"}, - "west": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#mechanical_press_pole"}, - "up": {"uv": [0, 14, 6, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [0, 14, 6, 16], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "from": [4, 5, 17], - "to": [6, 10, 21], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 8, 2, 13], "texture": "#18"}, - "east": {"uv": [0, 0, 4, 5], "texture": "#18"}, - "south": {"uv": [0, 1, 2, 6], "texture": "#18"}, - "west": {"uv": [0, 8, 4, 13], "texture": "#18"}, - "up": {"uv": [0, 0, 2, 4], "texture": "#18"}, - "down": {"uv": [0, 4, 2, 8], "texture": "#18"} - } - }, - { - "from": [6, 5, 17], - "to": [8, 10, 21], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 8, 2, 13], "texture": "#18"}, - "east": {"uv": [4, 8, 0, 13], "texture": "#18"}, - "south": {"uv": [0, 1, 2, 6], "texture": "#18"}, - "west": {"uv": [0, 8, 4, 13], "texture": "#18"}, - "up": {"uv": [0, 0, 2, 4], "texture": "#18"}, - "down": {"uv": [0, 4, 2, 8], "texture": "#18"} - } - }, - { - "from": [6, 6, 14], - "to": [10, 9, 18], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 5]}, - "faces": { - "north": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "east": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "south": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "west": {"uv": [0, 0, 4, 3], "texture": "#mechanical_press_head"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#mechanical_press_head"}, - "down": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#mechanical_press_head"} - } - }, - { - "from": [8, 8, 19], - "to": [10, 10, 25], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#18"}, - "east": {"uv": [2, 3, 4, 9], "rotation": 270, "texture": "#18"}, - "south": {"uv": [0, 1, 2, 3], "texture": "#18"}, - "west": {"uv": [4, 2, 6, 8], "rotation": 90, "texture": "#18"}, - "up": {"uv": [0, 0, 2, 6], "texture": "#18"}, - "down": {"uv": [0, 3, 2, 9], "texture": "#18"} - } - }, - { - "from": [8, 7, 17], - "to": [12, 10, 19], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 0, 4, 3], "texture": "#18"}, - "east": {"uv": [0, 1, 2, 4], "rotation": 180, "texture": "#18"}, - "south": {"uv": [0, 8, 3, 12], "rotation": 270, "texture": "#18"}, - "west": {"uv": [0, 0, 2, 3], "texture": "#18"}, - "up": {"uv": [2, 0, 0, 4], "rotation": 270, "texture": "#18"}, - "down": {"uv": [0, 2, 2, 6], "rotation": 270, "texture": "#18"} - } - }, - { - "from": [5, 7, 15], - "to": [11, 10, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 5]}, - "faces": { - "north": {"uv": [0, 2, 3, 8], "rotation": 270, "texture": "#18"}, - "east": {"uv": [1, 4, 3, 7], "texture": "#18"}, - "south": {"uv": [0, 0, 6, 3], "texture": "#18"}, - "west": {"uv": [1, 4, 3, 7], "texture": "#18"}, - "up": {"uv": [1, 2, 3, 8], "rotation": 270, "texture": "#18"}, - "down": {"uv": [1, 2, 3, 8], "rotation": 90, "texture": "#18"} - } - }, - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#1"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "body", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3] - }, - { - "name": "pole", - "origin": [8, 8, 8], - "children": [ - { - "name": "head", - "origin": [8, 8, 8], - "children": [4, 5] - } - ] - }, - { - "name": "hand_pointing", - "origin": [8, 8, 8], - "children": [ - { - "name": "head", - "origin": [8, 8, 8], - "children": [6, - { - "name": "Pointing", - "origin": [8, 8, 8], - "children": [7, 8, 9, 10, 11, 12] - } - ] - } - ] - }, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [13] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/deployer/pole.json b/src/main/resources/assets/create/models/block/deployer/pole.json deleted file mode 100644 index 1da1b7ffc..000000000 --- a/src/main/resources/assets/create/models/block/deployer/pole.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "Pole1Core", - "from": [6, 6, 4], - "to": [10, 10, 12], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 10]}, - "faces": { - "east": {"uv": [1, 6, 5, 14], "rotation": 90, "texture": "#mechanical_press_pole"}, - "west": {"uv": [1, 6, 5, 14], "rotation": 270, "texture": "#mechanical_press_pole"}, - "up": {"uv": [1, 6, 5, 14], "texture": "#mechanical_press_pole"}, - "down": {"uv": [6, 6, 10, 14], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Core", - "from": [6, 6, -9], - "to": [10, 10, 4], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 10]}, - "faces": { - "north": {"uv": [11, 6, 15, 10], "rotation": 270, "texture": "#mechanical_press_pole"}, - "east": {"uv": [1, 0, 5, 13], "rotation": 90, "texture": "#mechanical_press_pole"}, - "west": {"uv": [1, 0, 5, 13], "rotation": 270, "texture": "#mechanical_press_pole"}, - "up": {"uv": [1, 0, 5, 13], "texture": "#mechanical_press_pole"}, - "down": {"uv": [1, 0, 5, 13], "rotation": 180, "texture": "#mechanical_press_pole"} - } - } - ], - "groups": [ - { - "name": "head", - "origin": [8, 8, 8], - "children": [0, 1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/deployer/vertical.json b/src/main/resources/assets/create/models/block/deployer/vertical.json deleted file mode 100644 index 3dda75643..000000000 --- a/src/main/resources/assets/create/models/block/deployer/vertical.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "6": "create:block/piston_bottom", - "7": "create:block/piston_inner", - "gearbox_top": "create:block/gearbox_top", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short", - "particle": "create:block/gearbox_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 16, 2], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#6"}, - "east": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#gearbox_top"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#andesite_casing_short"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#gearbox_top"} - } - }, - { - "name": "Inner", - "from": [2, 1, 2], - "to": [14, 15, 12], - "faces": { - "north": {"uv": [0, 0, 12, 14], "texture": "#gearbox"}, - "south": {"uv": [2, 1, 14, 15], "texture": "#7"}, - "up": {"uv": [2, 4, 14, 14], "rotation": 180, "texture": "#gearbox"}, - "down": {"uv": [2, 4, 14, 14], "texture": "#gearbox"} - } - }, - { - "name": "Side", - "from": [14, 0, 2], - "to": [16, 16, 12], - "faces": { - "east": {"uv": [0, 4, 16, 14], "rotation": 270, "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 16, 10], "rotation": 90, "texture": "#gearbox_top"}, - "up": {"uv": [0, 2, 2, 12], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [14, 0, 16, 10], "texture": "#gearbox_top"} - } - }, - { - "name": "Side2", - "from": [0, 0, 2], - "to": [2, 16, 12], - "faces": { - "east": {"uv": [0, 0, 16, 10], "rotation": 270, "texture": "#gearbox_top"}, - "south": {"uv": [0, 0, 16, 2], "rotation": 90, "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 4, 16, 14], "rotation": 90, "texture": "#andesite_casing_short"}, - "up": {"uv": [14, 2, 16, 12], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [0, 0, 2, 10], "texture": "#gearbox_top"} - } - } - ], - "groups": [ - { - "name": "body", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/depot/block.json b/src/main/resources/assets/create/models/block/depot/block.json deleted file mode 100644 index 85bde5e9f..000000000 --- a/src/main/resources/assets/create/models/block/depot/block.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/depot_side", - "2": "create:block/depot_top", - "3": "create:block/andesite_casing", - "particle": "create:block/andesite_casing" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 11, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 10.5, 0.5]}, - "faces": { - "north": {"uv": [0, 5, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 5, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 5, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 5, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#3"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#3"} - } - }, - { - "from": [1, 11, 1], - "to": [15, 13, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -2, 9]}, - "faces": { - "north": {"uv": [1, 14, 15, 16], "texture": "#2"}, - "east": {"uv": [1, 14, 15, 16], "texture": "#2"}, - "south": {"uv": [1, 14, 15, 16], "texture": "#2"}, - "west": {"uv": [1, 14, 15, 16], "texture": "#2"}, - "up": {"uv": [1, 0, 15, 14], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/diodes/adjustable_pulse_repeater.json b/src/main/resources/assets/create/models/block/diodes/adjustable_pulse_repeater.json deleted file mode 100644 index 6481341d8..000000000 --- a/src/main/resources/assets/create/models/block/diodes/adjustable_pulse_repeater.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "top": "create:block/diodes/adjustable_pulse_repeater/idle", - "torch": "minecraft:block/redstone_torch_off", - "smooth_stone": "minecraft:block/smooth_stone", - "particle": "#top" - }, - "elements": [ - { - "name": "Top", - "from": [ 5, 2.1, 5 ], - "to": [ 11, 3.1, 11 ], - "faces": { - "north": { "texture": "#top", "uv": [ 5, 5, 11, 6 ], "rotation": 180 }, - "east": { "texture": "#top", "uv": [ 10, 5, 11, 11 ], "rotation": 90 }, - "south": { "texture": "#top", "uv": [ 5, 10, 11, 11 ] }, - "west": { "texture": "#top", "uv": [ 5, 11, 6, 5 ], "rotation": 90 }, - "up": { "texture": "#top", "uv": [ 5, 5, 11, 11 ] } - } - }, - { - "name": "circuit", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 16 ], - "faces": { - "north": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#top", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 16 ] } - } - }, - { - "name": "Front Torch", - "from": [ 6, 2, 2 ], - "to": [ 10, 8, 4 ], - "faces": { - "north": { "texture": "#torch", "uv": [ 6, 5, 10, 11 ] }, - "south": { "texture": "#torch", "uv": [ 6, 5, 10, 11 ] } - } - }, - { - "name": "Front Torch", - "from": [ 7, 2, 1 ], - "to": [ 9, 8, 5 ], - "faces": { - "east": { "texture": "#torch", "uv": [ 6, 5, 10, 11 ] }, - "west": { "texture": "#torch", "uv": [ 6, 5, 10, 11 ] } - } - }, - { - "name": "Front Torch Top", - "from": [ 7, 6, 2 ], - "to": [ 9, 7, 4 ], - "faces": { - "up": { "texture": "#torch", "uv": [ 7, 6, 9, 8 ] } - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [ 270, 0, 0 ], - "translation": [ 0, 0, -3], - "scale":[ 0.5, 0.5, 0.5 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/diodes/adjustable_repeater.json b/src/main/resources/assets/create/models/block/diodes/adjustable_repeater.json deleted file mode 100644 index cf137e612..000000000 --- a/src/main/resources/assets/create/models/block/diodes/adjustable_repeater.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "top": "create:block/diodes/adjustable_repeater/idle", - "smooth_stone": "minecraft:block/smooth_stone", - "torch": "minecraft:block/redstone_torch_off", - "particle": "#top" - }, - "elements": [ - { - "name": "Top", - "from": [ 5, 2.1, 5 ], - "to": [ 11, 3.1, 11 ], - "faces": { - "north": { "texture": "#top", "uv": [ 5, 5, 11, 6 ], "rotation": 180 }, - "east": { "texture": "#top", "uv": [ 10, 5, 11, 11 ], "rotation": 90 }, - "south": { "texture": "#top", "uv": [ 5, 10, 11, 11 ] }, - "west": { "texture": "#top", "uv": [ 5, 11, 6, 5 ], "rotation": 90 }, - "up": { "texture": "#top", "uv": [ 5, 5, 11, 11 ] } - } - }, - { - "name": "circuit", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 16 ], - "faces": { - "north": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#top", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 16 ] } - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [ 270, 0, 0 ], - "translation": [ 0, 0, -3], - "scale":[ 0.5, 0.5, 0.5 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/diodes/indicator.json b/src/main/resources/assets/create/models/block/diodes/indicator.json deleted file mode 100644 index 504b39f81..000000000 --- a/src/main/resources/assets/create/models/block/diodes/indicator.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "textures": { - "flexpeater_off": "create:block/diodes/adjustable_repeater/idle" - }, - "elements": [ - { - "name": "Light", - "from": [ 3.96875, 1.96875, 3.96875 ], - "to": [ 12.03125, 3, 12.03125 ], - "faces": { - "north": { "texture": "#flexpeater_off", "uv": [ 4, 4, 12, 5 ], "rotation": 180 }, - "east": { "texture": "#flexpeater_off", "uv": [ 11, 4, 12, 12 ], "rotation": 90 }, - "south": { "texture": "#flexpeater_off", "uv": [ 4, 11, 12, 12 ] }, - "west": { "texture": "#flexpeater_off", "uv": [ 4, 12, 5, 4 ], "rotation": 90 }, - "up": { "texture": "#flexpeater_off", "uv": [ 4, 4, 12, 12 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/diodes/latch_off.json b/src/main/resources/assets/create/models/block/diodes/latch_off.json deleted file mode 100644 index 4e8ce60be..000000000 --- a/src/main/resources/assets/create/models/block/diodes/latch_off.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "top": "create:block/diodes/powered_toggle_latch/idle", - "torch": "minecraft:block/redstone_torch_off", - "smooth_stone": "minecraft:block/smooth_stone", - "particle": "minecraft:block/smooth_stone", - "base": "minecraft:block/cobblestone", - "lever": "minecraft:block/lever" - }, - "elements": [ - { - "name": "Top", - "from": [3, 2, 4], - "to": [13, 3, 12], - "faces": { - "north": {"uv": [3, 4, 13, 5], "rotation": 180, "texture": "#top"}, - "east": {"uv": [12, 4, 13, 12], "rotation": 90, "texture": "#top"}, - "south": {"uv": [3, 11, 13, 12], "texture": "#top"}, - "west": {"uv": [3, 4, 4, 12], "rotation": 90, "texture": "#top"}, - "up": {"uv": [3, 4, 13, 12], "texture": "#top"} - } - }, - { - "name": "circuit", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#smooth_stone"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#smooth_stone"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#smooth_stone"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#smooth_stone"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#smooth_stone"} - } - }, - { - "name": "Front Torch", - "from": [6, 2, 1], - "to": [10, 8, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [6, 5, 10, 11], "texture": "#torch"}, - "south": {"uv": [6, 5, 10, 11], "texture": "#torch"} - } - }, - { - "name": "Front Torch", - "from": [7, 2, 0], - "to": [9, 8, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "east": {"uv": [6, 5, 10, 11], "texture": "#torch"}, - "west": {"uv": [6, 5, 10, 11], "texture": "#torch"} - } - }, - { - "name": "Front Torch Top", - "from": [7, 6, 1], - "to": [9, 7, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "up": {"uv": [7, 6, 9, 8], "texture": "#torch"} - } - }, - { - "from": [4, 2, 5], - "to": [12, 5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [4, 0, 12, 3], "texture": "#base"}, - "east": {"uv": [5, 0, 11, 3], "texture": "#base"}, - "south": {"uv": [4, 0, 12, 3], "texture": "#base"}, - "west": {"uv": [5, 0, 11, 3], "texture": "#base"}, - "up": {"uv": [5, 4, 11, 12], "rotation": 90, "texture": "#base"}, - "down": {"uv": [5, 4, 11, 12], "rotation": 270, "texture": "#base", "cullface": "down"} - } - }, - { - "from": [11.24264, 4.75736, 7], - "to": [13.24264, 14.75736, 9], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [7, 6, 9, 16], "texture": "#lever"}, - "east": {"uv": [7, 6, 9, 16], "texture": "#lever"}, - "south": {"uv": [7, 6, 9, 16], "texture": "#lever"}, - "west": {"uv": [7, 6, 9, 16], "texture": "#lever"}, - "up": {"uv": [7, 6, 9, 8], "rotation": 90, "texture": "#lever"} - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [ 270, 0, 0 ], - "translation": [ 0, 0, -3], - "scale":[ 0.5, 0.5, 0.5 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/diodes/latch_on.json b/src/main/resources/assets/create/models/block/diodes/latch_on.json deleted file mode 100644 index 6d4c4797f..000000000 --- a/src/main/resources/assets/create/models/block/diodes/latch_on.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "top": "create:block/diodes/powered_toggle_latch/idle", - "5": "create:block/diodes/powered_toggle_latch/powered_powering", - "torch": "minecraft:block/redstone_torch", - "smooth_stone": "minecraft:block/smooth_stone", - "particle": "minecraft:block/smooth_stone", - "base": "minecraft:block/cobblestone", - "lever": "minecraft:block/lever" - }, - "elements": [ - { - "name": "Top", - "from": [3, 2, 4], - "to": [13, 3, 12], - "faces": { - "north": {"uv": [3, 4, 13, 5], "rotation": 180, "texture": "#5"}, - "east": {"uv": [12, 4, 13, 12], "rotation": 90, "texture": "#5"}, - "south": {"uv": [3, 11, 13, 12], "texture": "#5"}, - "west": {"uv": [3, 4, 4, 12], "rotation": 90, "texture": "#5"}, - "up": {"uv": [3, 4, 13, 12], "texture": "#5"}, - "down": {"uv": [0, 0, 10, 8], "texture": "#5"} - } - }, - { - "name": "circuit", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#smooth_stone"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#smooth_stone"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#smooth_stone"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#smooth_stone"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#smooth_stone"} - } - }, - { - "name": "Front Torch", - "from": [6, 2, 1], - "to": [10, 8, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [6, 5, 10, 11], "texture": "#torch"}, - "south": {"uv": [6, 5, 10, 11], "texture": "#torch"} - } - }, - { - "name": "Front Torch", - "from": [7, 2, 0], - "to": [9, 8, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "east": {"uv": [6, 5, 10, 11], "texture": "#torch"}, - "west": {"uv": [6, 5, 10, 11], "texture": "#torch"} - } - }, - { - "name": "Front Torch Top", - "from": [7, 6, 1], - "to": [9, 7, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "up": {"uv": [7, 6, 9, 8], "texture": "#torch"} - } - }, - { - "from": [4, 2, 5], - "to": [12, 5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [4, 0, 12, 3], "texture": "#base"}, - "east": {"uv": [5, 0, 11, 3], "texture": "#base"}, - "south": {"uv": [4, 0, 12, 3], "texture": "#base"}, - "west": {"uv": [5, 0, 11, 3], "texture": "#base"}, - "up": {"uv": [5, 4, 11, 12], "rotation": 90, "texture": "#base"}, - "down": {"uv": [5, 4, 11, 12], "rotation": 270, "texture": "#base", "cullface": "down"} - } - }, - { - "from": [7, 3, 7], - "to": [9, 13, 9], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 3, 8]}, - "faces": { - "north": {"uv": [7, 6, 9, 16], "texture": "#lever"}, - "east": {"uv": [7, 6, 9, 16], "texture": "#lever"}, - "south": {"uv": [7, 6, 9, 16], "texture": "#lever"}, - "west": {"uv": [7, 6, 9, 16], "texture": "#lever"}, - "up": {"uv": [7, 6, 9, 8], "rotation": 90, "texture": "#lever"} - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [ 270, 0, 0 ], - "translation": [ 0, 0, -3], - "scale":[ 0.5, 0.5, 0.5 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/diodes/pulse_repeater.json b/src/main/resources/assets/create/models/block/diodes/pulse_repeater.json deleted file mode 100644 index 315d2fed2..000000000 --- a/src/main/resources/assets/create/models/block/diodes/pulse_repeater.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "top": "create:block/diodes/pulse_repeater/idle", - "torch": "minecraft:block/redstone_torch_off", - "smooth_stone": "minecraft:block/smooth_stone", - "particle": "#top" - }, - "elements": [ - { - "name": "circuit", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 16 ], - "faces": { - "north": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#top", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#smooth_stone", "uv": [ 0, 0, 16, 16 ] } - } - }, - { - "name": "Front Torch", - "from": [ 6, 2, 3 ], - "to": [ 10, 8, 5 ], - "faces": { - "north": { "texture": "#torch", "uv": [ 6, 5, 10, 11 ] }, - "south": { "texture": "#torch", "uv": [ 6, 5, 10, 11 ] } - } - }, - { - "name": "Front Torch", - "from": [ 7, 2, 2 ], - "to": [ 9, 8, 6 ], - "faces": { - "east": { "texture": "#torch", "uv": [ 6, 5, 10, 11 ] }, - "west": { "texture": "#torch", "uv": [ 6, 5, 10, 11 ] } - } - }, - { - "name": "Front Torch Top", - "from": [ 7, 6, 3 ], - "to": [ 9, 7, 5 ], - "faces": { - "up": { "texture": "#torch", "uv": [ 7, 6, 9, 8 ] } - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [ 270, 0, 0 ], - "translation": [ 0, 0, -3], - "scale":[ 0.5, 0.5, 0.5 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_chain_drive/end_horizontal.json b/src/main/resources/assets/create/models/block/encased_chain_drive/end_horizontal.json deleted file mode 100644 index 3219bac7f..000000000 --- a/src/main/resources/assets/create/models/block/encased_chain_drive/end_horizontal.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "side": "create:block/encased_chain_drive", - "2": "create:block/encased_chain_drive_end", - "particle": "#side" - }, - "elements": [ - { - "name": "Base", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [14, 16, 16, 0], "rotation": 90, "texture": "#side"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#2"}, - "south": {"uv": [0, 16, 2, 0], "rotation": 270, "texture": "#side"}, - "west": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#side"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#side"} - } - }, - { - "name": "Core", - "from": [1, 2, 0], - "to": [15, 14, 14], - "faces": { - "east": {"uv": [2, 2, 16, 14], "texture": "#2"}, - "west": {"uv": [2, 2, 16, 14], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "Side", - "from": [0, 2, 14], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [2, 16, 14, 0], "rotation": 270, "texture": "#side"}, - "east": {"uv": [2, 0, 14, 2], "rotation": 270, "texture": "#side"}, - "south": {"uv": [2, 0, 14, 16], "rotation": 90, "texture": "#side"}, - "west": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#side"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [14, 16, 16, 0], "rotation": 90, "texture": "#side"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#2"}, - "south": {"uv": [14, 16, 16, 0], "rotation": 270, "texture": "#side"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#2"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#side"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#side"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_chain_drive/end_vertical.json b/src/main/resources/assets/create/models/block/encased_chain_drive/end_vertical.json deleted file mode 100644 index 680acf4bb..000000000 --- a/src/main/resources/assets/create/models/block/encased_chain_drive/end_vertical.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "side": "create:block/encased_chain_drive", - "2": "create:block/encased_chain_drive_end", - "particle": "#side" - }, - "elements": [ - { - "name": "Core", - "from": [2, 1, 2], - "to": [14, 15, 16], - "faces": { - "up": {"uv": [2, 2, 16, 14], "rotation": 90, "texture": "#2"}, - "down": {"uv": [2, 2, 16, 14], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "Side", - "from": [0, 0, 0], - "to": [2, 16, 16], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#side"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "south": {"uv": [0, 0, 2, 16], "texture": "#side"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 16, 16, 14], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "Side", - "from": [14, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#side"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "south": {"uv": [14, 0, 16, 16], "texture": "#side"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 2, 16, 0], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "Side", - "from": [2, 0, 0], - "to": [14, 16, 2], - "faces": { - "north": {"uv": [2, 0, 14, 16], "texture": "#side"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "south": {"uv": [2, 0, 14, 16], "texture": "#side"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#side"}, - "down": {"uv": [2, 14, 14, 16], "texture": "#side"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_chain_drive/item.json b/src/main/resources/assets/create/models/block/encased_chain_drive/item.json deleted file mode 100644 index 3b28a84f6..000000000 --- a/src/main/resources/assets/create/models/block/encased_chain_drive/item.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "side": "create:block/encased_chain_drive", - "1": "create:block/gearbox", - "particle": "#side", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Base", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "east": {"uv": [14, 0, 16, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 0, 2, 16], "rotation": 270, "texture": "#side"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#side"} - } - }, - { - "name": "Core", - "from": [2, 2, 1], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#1"}, - "south": {"uv": [2, 2, 14, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "west": {"uv": [14, 0, 16, 16], "rotation": 270, "texture": "#side"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#side"} - } - }, - { - "name": "SIde", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#1"}, - "east": {"uv": [2, 0, 14, 16], "rotation": 270, "texture": "#side"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#1"}, - "west": {"uv": [2, 0, 14, 16], "rotation": 270, "texture": "#side"} - } - }, - { - "name": "Side", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#1"}, - "east": {"uv": [2, 0, 14, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#1"}, - "west": {"uv": [2, 0, 14, 16], "rotation": 270, "texture": "#side"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} - } - } - ], - "groups": [0, 1, 2, 3, 4, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_chain_drive/middle_horizontal.json b/src/main/resources/assets/create/models/block/encased_chain_drive/middle_horizontal.json deleted file mode 100644 index 7398cfa5f..000000000 --- a/src/main/resources/assets/create/models/block/encased_chain_drive/middle_horizontal.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "side": "create:block/encased_chain_drive", - "1": "create:block/encased_chain_drive_middle", - "particle": "#side" - }, - "elements": [ - { - "name": "Base", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [14, 16, 16, 0], "rotation": 90, "texture": "#side"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 16, 2, 0], "rotation": 270, "texture": "#side"}, - "west": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#side"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#side"} - } - }, - { - "name": "Core", - "from": [1, 2, 0], - "to": [15, 14, 16], - "faces": { - "east": {"uv": [0, 2, 16, 14], "texture": "#1"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [14, 16, 16, 0], "rotation": 90, "texture": "#side"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "south": {"uv": [14, 16, 16, 0], "rotation": 270, "texture": "#side"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#side"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#side"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_chain_drive/middle_vertical.json b/src/main/resources/assets/create/models/block/encased_chain_drive/middle_vertical.json deleted file mode 100644 index 0f8115050..000000000 --- a/src/main/resources/assets/create/models/block/encased_chain_drive/middle_vertical.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "side": "create:block/encased_chain_drive", - "1": "create:block/encased_chain_drive_middle", - "particle": "#side" - }, - "elements": [ - { - "name": "Base", - "from": [14, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [14, 16, 16, 0], "rotation": 180, "texture": "#side"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "south": {"uv": [0, 16, 2, 0], "rotation": 180, "texture": "#side"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#1"}, - "down": {"uv": [0, 0, 16, 2], "rotation": 90, "texture": "#1"} - } - }, - { - "name": "Core", - "from": [2, 1, 0], - "to": [14, 15, 16], - "faces": { - "up": {"uv": [0, 2, 16, 14], "rotation": 270, "texture": "#1"}, - "down": {"uv": [0, 2, 16, 14], "rotation": 90, "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 0, 0], - "to": [2, 16, 16], - "faces": { - "north": {"uv": [14, 16, 16, 0], "rotation": 180, "texture": "#side"}, - "east": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#side"}, - "south": {"uv": [14, 16, 16, 0], "rotation": 180, "texture": "#side"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#1"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_chain_drive/single.json b/src/main/resources/assets/create/models/block/encased_chain_drive/single.json deleted file mode 100644 index 31cebc43c..000000000 --- a/src/main/resources/assets/create/models/block/encased_chain_drive/single.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "side": "create:block/encased_chain_drive", - "1": "create:block/gearbox", - "particle": "#side" - }, - "elements": [ - { - "name": "Base", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "east": {"uv": [14, 0, 16, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 0, 2, 16], "rotation": 270, "texture": "#side"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#side"} - } - }, - { - "name": "Core", - "from": [2, 2, 1], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#1"}, - "south": {"uv": [2, 2, 14, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "east": {"uv": [0, 0, 2, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "west": {"uv": [14, 0, 16, 16], "rotation": 270, "texture": "#side"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#side"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#side"} - } - }, - { - "name": "SIde", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#1"}, - "east": {"uv": [2, 0, 14, 16], "rotation": 270, "texture": "#side"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#1"}, - "west": {"uv": [2, 0, 14, 16], "rotation": 270, "texture": "#side"} - } - }, - { - "name": "Side", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#1"}, - "east": {"uv": [2, 0, 14, 16], "rotation": 90, "texture": "#side"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#1"}, - "west": {"uv": [2, 0, 14, 16], "rotation": 270, "texture": "#side"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_fan/block.json b/src/main/resources/assets/create/models/block/encased_fan/block.json deleted file mode 100644 index 1dce214f0..000000000 --- a/src/main/resources/assets/create/models/block/encased_fan/block.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "back": "create:block/gearbox", - "fan_casing": "create:block/fan_casing", - "particle": "create:block/fan_side", - "fan_side": "create:block/fan_side" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 16, 2], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#fan_side"}, - "east": {"uv": [14, 0, 16, 16], "texture": "#fan_side"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#fan_side"}, - "west": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#fan_side"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#fan_casing"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#fan_casing"} - } - }, - { - "name": "Top", - "from": [0, 0, 14], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#fan_side"}, - "east": {"uv": [0, 0, 2, 16], "texture": "#fan_side"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#fan_side"}, - "west": {"uv": [14, 0, 16, 16], "texture": "#fan_side"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#fan_casing"}, - "down": {"uv": [0, 0, 16, 2], "texture": "#fan_casing"} - } - }, - { - "name": "Side", - "from": [0, 0, 2], - "to": [2, 16, 14], - "faces": { - "east": {"uv": [2, 0, 14, 16], "texture": "#fan_side"}, - "west": {"uv": [14, 0, 2, 16], "texture": "#fan_side"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#fan_casing"}, - "down": {"uv": [0, 2, 2, 14], "texture": "#fan_casing"} - } - }, - { - "name": "Side", - "from": [14, 0, 2], - "to": [16, 16, 14], - "faces": { - "east": {"uv": [2, 0, 14, 16], "texture": "#fan_side"}, - "west": {"uv": [14, 0, 2, 16], "texture": "#fan_side"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#fan_casing"}, - "down": {"uv": [14, 2, 16, 14], "texture": "#fan_casing"} - } - }, - { - "name": "Lattice", - "from": [2, 15, 2], - "to": [14, 15, 14], - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#fan_casing"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#fan_casing"} - } - }, - { - "name": "Back", - "from": [2, 1, 2], - "to": [14, 7, 14], - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#back"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#back"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_fan/item.json b/src/main/resources/assets/create/models/block/encased_fan/item.json deleted file mode 100644 index fe80c3a0e..000000000 --- a/src/main/resources/assets/create/models/block/encased_fan/item.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/gearbox", - "fan_casing": "create:block/fan_casing", - "particle": "create:block/fan_side", - "fan_side": "create:block/fan_side", - "axis_top": "create:block/axis_top", - "fan_blades": "create:block/fan_blades", - "axis": "create:block/axis" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#fan_casing"}, - "east": {"uv": [14, 0, 16, 16], "rotation": 90, "texture": "#fan_side"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#fan_casing"}, - "west": {"uv": [14, 0, 16, 16], "rotation": 90, "texture": "#fan_side"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#fan_side"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#fan_side"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#fan_casing"}, - "east": {"uv": [0, 0, 2, 16], "rotation": 90, "texture": "#fan_side"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#fan_casing"}, - "west": {"uv": [14, 0, 16, 16], "rotation": 270, "texture": "#fan_side"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#fan_side"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#fan_side"} - } - }, - { - "name": "Side", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#fan_casing"}, - "east": {"uv": [2, 0, 14, 16], "rotation": 90, "texture": "#fan_side"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#fan_casing"}, - "west": {"uv": [14, 0, 2, 16], "rotation": 270, "texture": "#fan_side"} - } - }, - { - "name": "Side", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#fan_casing"}, - "east": {"uv": [2, 0, 14, 16], "rotation": 90, "texture": "#fan_side"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#fan_casing"}, - "west": {"uv": [14, 0, 2, 16], "rotation": 270, "texture": "#fan_side"} - } - }, - { - "name": "Lattice", - "from": [2, 2, 1], - "to": [14, 14, 1], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#fan_casing"}, - "south": {"uv": [2, 2, 14, 14], "texture": "#fan_casing"} - } - }, - { - "name": "Back", - "from": [2, 2, 9], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#2"}, - "south": {"uv": [2, 2, 14, 14], "texture": "#2"} - } - }, - { - "name": "Shaft", - "from": [6, 6, 1.2], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "texture": "#axis_top"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#axis"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#axis_top"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#axis"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "down": {"uv": [6, 0, 10, 16], "texture": "#axis"} - } - }, - { - "name": "Fan", - "from": [1, 1, 4], - "to": [15, 15, 12], - "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [1, 1, 15, 15], "texture": "#fan_blades"}, - "south": {"uv": [1, 1, 15, 15], "texture": "#fan_blades"} - } - } - ], - "groups": [0, 1, 2, 3, 4, 5, - { - "name": "encased_fan_inner", - "origin": [8, 8, 8], - "children": [6, 7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_fan/propeller.json b/src/main/resources/assets/create/models/block/encased_fan/propeller.json deleted file mode 100644 index b50ef7caf..000000000 --- a/src/main/resources/assets/create/models/block/encased_fan/propeller.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "axis_top": "create:block/axis_top", - "fan_blades": "create:block/fan_blades", - "axis": "create:block/axis" - }, - "elements": [ - { - "name": "Shaft", - "from": [6, 6, 1.2], - "to": [10, 10, 8], - "faces": { - "north": {"uv": [6, 6, 10, 10], "texture": "#axis_top"}, - "east": {"uv": [6, 0, 10, 6.8], "rotation": 90, "texture": "#axis"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#axis_top"}, - "west": {"uv": [6, 0, 10, 6.8], "rotation": 90, "texture": "#axis"}, - "up": {"uv": [6, 0, 10, 6.8], "rotation": 90, "texture": "#axis"}, - "down": {"uv": [6, 0, 10, 6.8], "rotation": 90, "texture": "#axis"} - } - }, - { - "name": "Fan", - "from": [1, 1, 4], - "to": [15, 15, 12], - "rotation": {"angle": 22.5, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [1, 1, 15, 15], "texture": "#fan_blades"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_flat.json b/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_flat.json deleted file mode 100644 index d084586f1..000000000 --- a/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_flat.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/copper_casing", - "particle": "create:block/copper_casing" - }, - "elements": [ - { - "from": [0, 0, 15], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_open.json b/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_open.json deleted file mode 100644 index 0d555e7e4..000000000 --- a/src/main/resources/assets/create/models/block/encased_fluid_pipe/block_open.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/encased_pipe", - "particle": "create:block/encased_pipe" - }, - "elements": [ - { - "from": [0, 0, 15], - "to": [16, 16, 16], - "faces": { - "south": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/block.json b/src/main/resources/assets/create/models/block/encased_shaft/block.json deleted file mode 100644 index 6a0feeea1..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/block.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "#opening", - "particle": "#casing" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 16, 2], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#casing"}, - "east": {"uv": [14, 0, 16, 16], "texture": "#casing"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#casing"}, - "west": {"uv": [0, 0, 2, 16], "texture": "#casing"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#casing"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#casing"} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "up": {"uv": [1, 2, 15, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [1, 2, 15, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 0, 14], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#casing"}, - "east": {"uv": [0, 0, 2, 16], "texture": "#casing"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#casing"}, - "west": {"uv": [14, 0, 16, 16], "texture": "#casing"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#casing"}, - "down": {"uv": [0, 0, 16, 2], "texture": "#casing"} - } - }, - { - "name": "SideWest", - "from": [0, 0, 2], - "to": [2, 16, 14], - "faces": { - "east": {"uv": [2, 0, 14, 16], "texture": "#casing"}, - "west": {"uv": [2, 0, 14, 16], "texture": "#casing"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#casing"}, - "down": {"uv": [0, 2, 2, 14], "texture": "#casing"} - } - }, - { - "name": "SideEast", - "from": [14, 0, 2], - "to": [16, 16, 14], - "faces": { - "east": {"uv": [2, 0, 14, 16], "texture": "#casing"}, - "west": {"uv": [2, 0, 14, 16], "texture": "#casing"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#casing"}, - "down": {"uv": [14, 2, 16, 14], "texture": "#casing"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/block_andesite.json b/src/main/resources/assets/create/models/block/encased_shaft/block_andesite.json deleted file mode 100644 index 450c8930a..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/block_andesite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/encased_shaft/block", - "textures": { - "casing": "create:block/andesite_casing", - "opening": "create:block/gearbox" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/block_brass.json b/src/main/resources/assets/create/models/block/encased_shaft/block_brass.json deleted file mode 100644 index 8d9795e98..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/block_brass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/encased_shaft/block", - "textures": { - "casing": "create:block/brass_casing", - "opening": "create:block/brass_gearbox" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/item.json b/src/main/resources/assets/create/models/block/encased_shaft/item.json deleted file mode 100644 index 91d41a757..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/item.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "#casing", - "1": "#opening", - "particle": "#casing", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "south": {"uv": [1, 2, 15, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "SideWest", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#0"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#0"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#0"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#0"} - } - }, - { - "name": "SideEast", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#0"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#0"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#0"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#0"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} - } - } - ], - "groups": [0, 1, 2, 3, 4, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/item_andesite.json b/src/main/resources/assets/create/models/block/encased_shaft/item_andesite.json deleted file mode 100644 index ecee85bb5..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/item_andesite.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/encased_shaft/item", - "textures": { - "casing": "create:block/andesite_casing", - "opening": "create:block/gearbox" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/encased_shaft/item_brass.json b/src/main/resources/assets/create/models/block/encased_shaft/item_brass.json deleted file mode 100644 index 84c4f08bf..000000000 --- a/src/main/resources/assets/create/models/block/encased_shaft/item_brass.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/encased_shaft/item", - "textures": { - "casing": "create:block/brass_casing", - "opening": "create:block/brass_gearbox" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/block_end.json b/src/main/resources/assets/create/models/block/fluid_pipe/block_end.json deleted file mode 100644 index 0b922ee40..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/block_end.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4, 12, 4], - "to": [12, 16, 12], - "faces": { - "north": {"uv": [0, 6, 4, 8], "rotation": 0, "texture": "#0"}, - "east": {"uv": [0, 6, 4, 8], "rotation": 0, "texture": "#0"}, - "south": {"uv": [0, 6, 4, 8], "rotation": 0, "texture": "#0"}, - "west": {"uv": [0, 6, 4, 8], "rotation": 0, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/casing.json b/src/main/resources/assets/create/models/block/fluid_pipe/casing.json deleted file mode 100644 index dad29e032..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/casing.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [2, 2, 2], - "to": [14, 14, 14], - "faces": { - "north": {"uv": [0, 0, 6, 6], "texture": "#0"}, - "east": {"uv": [0, 0, 6, 6], "texture": "#0"}, - "south": {"uv": [0, 0, 6, 6], "texture": "#0"}, - "west": {"uv": [0, 0, 6, 6], "texture": "#0"}, - "up": {"uv": [0, 0, 6, 6], "texture": "#0"}, - "down": {"uv": [0, 0, 6, 6], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/core_x.json b/src/main/resources/assets/create/models/block/fluid_pipe/core_x.json deleted file mode 100644 index d07c8dd0f..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/core_x.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4, 4, 4], - "to": [12, 12, 12], - "faces": { - "east": {"uv": [1, 1, 5, 5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [1, 1, 5, 5], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/core_y.json b/src/main/resources/assets/create/models/block/fluid_pipe/core_y.json deleted file mode 100644 index 5a527d649..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/core_y.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4, 4, 4], - "to": [12, 12, 12], - "faces": { - "up": {"uv": [1, 1, 5, 5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [1, 1, 5, 5], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/core_z.json b/src/main/resources/assets/create/models/block/fluid_pipe/core_z.json deleted file mode 100644 index eecf66667..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/core_z.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4, 4, 4], - "to": [12, 12, 12], - "faces": { - "north": {"uv": [1, 1, 5, 5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [1, 1, 5, 5], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/down.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/down.json deleted file mode 100644 index 5da83c4d1..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/down.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/pipe_drain", - "particle": "create:block/fluid_pipe", - "1_0": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4.5, -3.9, 4.5], - "to": [11.5, -0.9, 11.5], - "faces": { - "north": {"uv": [0, 0, 7, 3], "texture": "#0"}, - "east": {"uv": [0, 0, 7, 3], "texture": "#0"}, - "south": {"uv": [0, 0, 7, 3], "texture": "#0"}, - "west": {"uv": [0, 0, 7, 3], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "down": {"uv": [0, 3, 7, 10], "texture": "#0"} - } - }, - { - "from": [3.1, -1.1, 3.1], - "to": [12.9, 1, 12.9], - "faces": { - "north": {"uv": [6, 5, 11, 6], "rotation": 180, "texture": "#1_0"}, - "east": {"uv": [11, 6, 6, 5], "texture": "#1_0"}, - "south": {"uv": [6, 5, 11, 6], "rotation": 180, "texture": "#1_0"}, - "west": {"uv": [11, 6, 6, 5], "texture": "#1_0"}, - "up": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#1_0"}, - "down": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#1_0"} - } - } - ], - "groups": [0, - { - "name": "up", - "origin": [8, 8, 8], - "children": [1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/east.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/east.json deleted file mode 100644 index 70b1659c3..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/east.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/pipe_drain", - "particle": "create:block/fluid_pipe", - "1_0": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [16.9, 4.5, 4.5], - "to": [19.9, 11.5, 11.5], - "faces": { - "north": {"uv": [0, 0, 7, 3], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 3, 7, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 0, 7, 3], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "up": {"uv": [0, 0, 7, 3], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 0, 7, 3], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [15, 3.1, 3.1], - "to": [17.1, 12.9, 12.9], - "faces": { - "north": {"uv": [11, 6, 6, 5], "rotation": 90, "texture": "#1_0"}, - "east": {"uv": [6, 0, 11, 5], "rotation": 270, "texture": "#1_0"}, - "south": {"uv": [11, 6, 6, 5], "rotation": 270, "texture": "#1_0"}, - "west": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#1_0"}, - "up": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#1_0"}, - "down": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#1_0"} - } - } - ], - "groups": [0, - { - "name": "up", - "origin": [8, 8, 8], - "children": [1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/north.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/north.json deleted file mode 100644 index ebf01b1b8..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/north.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/pipe_drain", - "particle": "create:block/fluid_pipe", - "1_0": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4.5, 4.5, -3.9], - "to": [11.5, 11.5, -0.9], - "faces": { - "north": {"uv": [0, 3, 7, 10], "rotation": 180, "texture": "#0"}, - "east": {"uv": [0, 0, 7, 3], "rotation": 270, "texture": "#0"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "west": {"uv": [0, 0, 7, 3], "rotation": 90, "texture": "#0"}, - "up": {"uv": [0, 0, 7, 3], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 0, 7, 3], "texture": "#0"} - } - }, - { - "from": [3.1, 3.1, -1.1], - "to": [12.9, 12.9, 1], - "faces": { - "north": {"uv": [6, 0, 11, 5], "rotation": 270, "texture": "#1_0"}, - "east": {"uv": [11, 6, 6, 5], "rotation": 270, "texture": "#1_0"}, - "south": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#1_0"}, - "west": {"uv": [11, 6, 6, 5], "rotation": 90, "texture": "#1_0"}, - "up": {"uv": [6, 5, 11, 6], "texture": "#1_0"}, - "down": {"uv": [6, 5, 11, 6], "rotation": 180, "texture": "#1_0"} - } - } - ], - "groups": [0, - { - "name": "up", - "origin": [8, 8, 8], - "children": [1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/south.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/south.json deleted file mode 100644 index df3dd6fc1..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/south.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/pipe_drain", - "particle": "create:block/fluid_pipe", - "1_0": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4.5, 4.5, 16.9], - "to": [11.5, 11.5, 19.9], - "faces": { - "north": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#0"}, - "east": {"uv": [0, 0, 7, 3], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 3, 7, 10], "texture": "#0"}, - "west": {"uv": [0, 0, 7, 3], "rotation": 270, "texture": "#0"}, - "up": {"uv": [0, 0, 7, 3], "texture": "#0"}, - "down": {"uv": [0, 0, 7, 3], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [3.1, 3.1, 15], - "to": [12.9, 12.9, 17.1], - "faces": { - "north": {"uv": [6, 0, 11, 5], "rotation": 270, "texture": "#1_0"}, - "east": {"uv": [11, 6, 6, 5], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#1_0"}, - "west": {"uv": [11, 6, 6, 5], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 5, 11, 6], "rotation": 180, "texture": "#1_0"}, - "down": {"uv": [6, 5, 11, 6], "texture": "#1_0"} - } - } - ], - "groups": [0, - { - "name": "up", - "origin": [8, 8, 8], - "children": [1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/up.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/up.json deleted file mode 100644 index 327970657..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/up.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/pipe_drain", - "particle": "create:block/fluid_pipe", - "1_0": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4.5, 16.9, 4.5], - "to": [11.5, 19.9, 11.5], - "faces": { - "north": {"uv": [0, 0, 7, 3], "rotation": 180, "texture": "#0"}, - "east": {"uv": [0, 0, 7, 3], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 0, 7, 3], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 0, 7, 3], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 3, 7, 10], "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#0"} - } - }, - { - "from": [3.1, 15, 3.1], - "to": [12.9, 17.1, 12.9], - "faces": { - "north": {"uv": [6, 5, 11, 6], "texture": "#1_0"}, - "east": {"uv": [11, 6, 6, 5], "rotation": 180, "texture": "#1_0"}, - "south": {"uv": [6, 5, 11, 6], "texture": "#1_0"}, - "west": {"uv": [11, 6, 6, 5], "rotation": 180, "texture": "#1_0"}, - "up": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#1_0"}, - "down": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#1_0"} - } - } - ], - "groups": [0, - { - "name": "up", - "origin": [8, 8, 8], - "children": [1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/drain/west.json b/src/main/resources/assets/create/models/block/fluid_pipe/drain/west.json deleted file mode 100644 index 0ae3c2d7d..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/drain/west.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/pipe_drain", - "particle": "create:block/fluid_pipe", - "1_0": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [-3.9, 4.5, 4.5], - "to": [-0.9, 11.5, 11.5], - "faces": { - "north": {"uv": [0, 0, 7, 3], "rotation": 270, "texture": "#0"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "south": {"uv": [0, 0, 7, 3], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 3, 7, 10], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 0, 7, 3], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 7, 3], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [-1.1, 3.1, 3.1], - "to": [1, 12.9, 12.9], - "faces": { - "north": {"uv": [11, 6, 6, 5], "rotation": 270, "texture": "#1_0"}, - "east": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [11, 6, 6, 5], "rotation": 90, "texture": "#1_0"}, - "west": {"uv": [6, 0, 11, 5], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 5, 11, 6], "rotation": 270, "texture": "#1_0"}, - "down": {"uv": [6, 5, 11, 6], "rotation": 270, "texture": "#1_0"} - } - } - ], - "groups": [0, - { - "name": "up", - "origin": [8, 8, 8], - "children": [1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/item.json b/src/main/resources/assets/create/models/block/fluid_pipe/item.json deleted file mode 100644 index 3860db36a..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/item.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [4, 4, 4], - "to": [12, 12, 12], - "faces": { - "north": {"uv": [4, 12, 8, 16], "rotation": 180, "texture": "#1"}, - "east": {"uv": [4, 12, 8, 16], "rotation": 180, "texture": "#1"}, - "south": {"uv": [4, 12, 8, 16], "rotation": 180, "texture": "#1"}, - "west": {"uv": [4, 12, 8, 16], "rotation": 180, "texture": "#1"}, - "up": {"uv": [4, 12, 8, 16], "rotation": 270, "texture": "#1"}, - "down": {"uv": [4, 12, 8, 16], "rotation": 90, "texture": "#1"} - } - }, - { - "from": [4, 4, 0], - "to": [12, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]}, - "faces": { - "east": {"uv": [0, 8, 4, 6], "rotation": 270, "texture": "#1"}, - "west": {"uv": [0, 8, 4, 6], "rotation": 90, "texture": "#1"}, - "up": {"uv": [0, 8, 4, 6], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0, 8, 4, 6], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [4, 4, 12], - "to": [12, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 16]}, - "faces": { - "east": {"uv": [0, 6, 4, 8], "rotation": 270, "texture": "#1"}, - "west": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#1"}, - "up": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [3, 3, 0], - "to": [13, 13, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]}, - "faces": { - "north": {"uv": [6, 0, 11, 5], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 6, 11, 5], "rotation": 90, "texture": "#1"}, - "south": {"uv": [6, 0, 11, 5], "rotation": 180, "texture": "#1"}, - "west": {"uv": [6, 6, 11, 5], "rotation": 90, "texture": "#1"}, - "up": {"uv": [6, 6, 11, 5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [6, 6, 11, 5], "texture": "#1"} - } - }, - { - "from": [3, 3, 14], - "to": [13, 13, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 16]}, - "faces": { - "north": {"uv": [11, 0, 6, 5], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#1"}, - "south": {"uv": [11, 0, 6, 5], "rotation": 180, "texture": "#1"}, - "west": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#1"}, - "up": {"uv": [6, 5, 11, 6], "rotation": 180, "texture": "#1"}, - "down": {"uv": [6, 5, 11, 6], "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/down.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/down.json deleted file mode 100644 index 5b7108e2b..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/down.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [3.1, -1.1, 3.1], - "to": [12.9, 1, 12.9], - "faces": { - "north": {"uv": [6, 6, 11, 5], "texture": "#0"}, - "east": {"uv": [11, 5, 6, 6], "rotation": 180, "texture": "#0"}, - "south": {"uv": [6, 6, 11, 5], "texture": "#0"}, - "west": {"uv": [11, 5, 6, 6], "rotation": 180, "texture": "#0"}, - "up": {"uv": [11, 0, 6, 5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [11, 0, 6, 5], "rotation": 90, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/east.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/east.json deleted file mode 100644 index e1083fa1d..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/east.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [15, 3.1, 3.1], - "to": [17.1, 12.9, 12.9], - "faces": { - "north": {"uv": [6, 6, 11, 5], "rotation": 90, "texture": "#0"}, - "east": {"uv": [11, 0, 6, 5], "texture": "#0"}, - "south": {"uv": [6, 6, 11, 5], "rotation": 270, "texture": "#0"}, - "west": {"uv": [11, 0, 6, 5], "texture": "#0"}, - "up": {"uv": [11, 5, 6, 6], "rotation": 90, "texture": "#0"}, - "down": {"uv": [11, 5, 6, 6], "rotation": 90, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/north.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/north.json deleted file mode 100644 index 01fccd96e..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/north.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [3.1, 3.1, -1.1], - "to": [12.9, 12.9, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -5]}, - "faces": { - "north": {"uv": [6, 0, 11, 5], "texture": "#0"}, - "east": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#0"}, - "south": {"uv": [6, 0, 11, 5], "texture": "#0"}, - "west": {"uv": [6, 5, 11, 6], "rotation": 270, "texture": "#0"}, - "up": {"uv": [6, 5, 11, 6], "texture": "#0"}, - "down": {"uv": [6, 5, 11, 6], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/south.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/south.json deleted file mode 100644 index 232f4f172..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/south.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [3.1, 3.1, 15], - "to": [12.9, 12.9, 17.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 21]}, - "faces": { - "north": {"uv": [6, 0, 11, 5], "texture": "#0"}, - "east": {"uv": [6, 5, 11, 6], "rotation": 270, "texture": "#0"}, - "south": {"uv": [6, 0, 11, 5], "texture": "#0"}, - "west": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#0"}, - "up": {"uv": [11, 6, 6, 5], "texture": "#0"}, - "down": {"uv": [11, 6, 6, 5], "rotation": 180, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/up.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/up.json deleted file mode 100644 index 3e6661e40..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/up.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [3.1, 15, 3.1], - "to": [12.9, 17.1, 12.9], - "faces": { - "north": {"uv": [6, 5, 11, 6], "texture": "#0"}, - "east": {"uv": [11, 6, 6, 5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [6, 5, 11, 6], "texture": "#0"}, - "west": {"uv": [11, 6, 6, 5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [6, 0, 11, 5], "rotation": 90, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/rim/west.json b/src/main/resources/assets/create/models/block/fluid_pipe/rim/west.json deleted file mode 100644 index 5b164d994..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/rim/west.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/fluid_pipe", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [-1.1, 3.1, 3.1], - "to": [1, 12.9, 12.9], - "faces": { - "north": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#0"}, - "east": {"uv": [6, 0, 11, 5], "texture": "#0"}, - "south": {"uv": [6, 5, 11, 6], "rotation": 270, "texture": "#0"}, - "west": {"uv": [6, 0, 11, 5], "texture": "#0"}, - "up": {"uv": [11, 6, 6, 5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [11, 6, 6, 5], "rotation": 90, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/window.json b/src/main/resources/assets/create/models/block/fluid_pipe/window.json deleted file mode 100644 index ee5187561..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/window.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/glass_fluid_pipe", - "particle": "#0" - }, - "elements": [ - { - "name": "Outer", - "from": [4, 0, 4], - "to": [12, 16, 12], - "shade": false, - "faces": { - "north": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Inner", - "from": [4, 0, 11.9], - "to": [12, 16, 11.9], - "shade": false, - "faces": { - "north": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Inner", - "from": [4.1, 0, 4], - "to": [4.1, 16, 12], - "shade": false, - "faces": { - "east": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Inner", - "from": [4, 0, 4.1], - "to": [12, 16, 4.1], - "shade": false, - "faces": { - "south": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Inner", - "from": [11.9, 0, 4], - "to": [11.9, 16, 12], - "shade": false, - "faces": { - "west": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [4, 0, 4], - "to": [6, 16, 6], - "faces": { - "east": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 8, 16, 10], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [4, 0, 10], - "to": [6, 16, 12], - "faces": { - "north": {"uv": [0, 10, 16, 8], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 16, 16, 14], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [10, 0, 4], - "to": [12, 16, 6], - "faces": { - "south": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 8, 16, 10], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [10, 0, 10], - "to": [12, 16, 12], - "faces": { - "north": {"uv": [0, 16, 16, 14], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 10, 16, 8], "rotation": 90, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_pipe/window_alt.json b/src/main/resources/assets/create/models/block/fluid_pipe/window_alt.json deleted file mode 100644 index 6670d228d..000000000 --- a/src/main/resources/assets/create/models/block/fluid_pipe/window_alt.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/glass_fluid_pipe", - "particle": "#0" - }, - "elements": [ - { - "name": "Outer", - "from": [4, 0, 4], - "to": [12, 16, 12], - "shade": false, - "faces": { - "north": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Inner", - "from": [4, 0, 11.5], - "to": [12, 16, 11.5], - "shade": false, - "faces": { - "north": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Inner", - "from": [4, 0, 4.5], - "to": [12, 16, 4.5], - "shade": false, - "faces": { - "south": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Inner", - "from": [4.5, 0, 4], - "to": [4.5, 16, 12], - "shade": false, - "faces": { - "east": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Inner", - "from": [11.5, 0, 4], - "to": [11.5, 16, 12], - "shade": false, - "faces": { - "west": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom.json deleted file mode 100644 index b7ca78d34..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "Lid", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "north"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "east"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "south"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 0], - "to": [16, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, -23]}, - "faces": { - "north": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideRight", - "from": [15, 4, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "east": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "east"}, - "west": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 15], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "south"}, - "south": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 0], - "to": [1, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "east": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "west"}, - "west": {"uv": [0, 0, 16, 12], "texture": "#1", "cullface": "west"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window.json deleted file mode 100644 index bb8bc0859..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 4, 0], - "to": [4, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "north"}, - "east": {"uv": [12, 0, 13, 12], "texture": "#1", "cullface": "north"}, - "south": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideRight", - "from": [15, 4, 0], - "to": [16, 16, 4], - "faces": { - "east": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "east"}, - "south": {"uv": [12, 0, 13, 12], "texture": "#1", "cullface": "east"}, - "west": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideRight", - "from": [12, 4, 15], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "south"}, - "south": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "south"}, - "west": {"uv": [12, 0, 13, 12], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 12], - "to": [1, 16, 16], - "faces": { - "north": {"uv": [12, 0, 13, 12], "texture": "#1", "cullface": "west"}, - "east": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "west"}, - "west": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "west"} - } - }, - { - "name": "Window", - "from": [4, 4, 1], - "to": [12, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "north"}, - "south": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "north"} - } - }, - { - "name": "Window", - "from": [15, 4, 4], - "to": [15, 16, 12], - "faces": { - "east": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "east"}, - "west": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "east"} - } - }, - { - "name": "Window", - "from": [4, 4, 15], - "to": [12, 16, 15], - "faces": { - "north": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "south"}, - "south": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "south"} - } - }, - { - "name": "Window", - "from": [1, 4, 4], - "to": [1, 16, 12], - "faces": { - "east": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "west"}, - "west": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "west"} - } - }, - { - "name": "SideLeft", - "from": [12, 4, 0], - "to": [16, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "north"}, - "south": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "north"}, - "west": {"uv": [3, 0, 4, 12], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideLeft", - "from": [15, 4, 12], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [3, 0, 4, 12], "texture": "#1", "cullface": "east"}, - "east": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "east"}, - "west": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideLeft", - "from": [0, 4, 15], - "to": [4, 16, 16], - "faces": { - "north": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "south"}, - "east": {"uv": [3, 0, 4, 12], "texture": "#1", "cullface": "south"}, - "south": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideLeft", - "from": [0, 4, 0], - "to": [1, 16, 4], - "faces": { - "east": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "west"}, - "south": {"uv": [3, 0, 4, 12], "texture": "#1", "cullface": "west"}, - "west": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "west"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "north"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "east"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "south"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_ne.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_ne.json deleted file mode 100644 index b8292e6a9..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_ne.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [15, 4, 0], - "to": [16, 16, 12], - "faces": { - "east": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "south": {"uv": [12, 0, 13, 12], "texture": "#1"}, - "west": {"uv": [0, 0, 12, 12], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [0, 4, 1], - "to": [4, 16, 1], - "faces": { - "north": {"uv": [0, 4, 4, 16], "texture": "#3"}, - "south": {"uv": [4, 4, 8, 16], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [15, 4, 12], - "to": [15, 16, 16], - "faces": { - "east": {"uv": [4, 4, 8, 16], "texture": "#3"}, - "west": {"uv": [0, 4, 4, 16], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [4, 4, 0], - "to": [16, 16, 1], - "faces": { - "north": {"uv": [0, 0, 12, 12], "texture": "#1"}, - "south": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "west": {"uv": [3, 0, 4, 12], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-23, 8, 8]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_nw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_nw.json deleted file mode 100644 index eba200f6d..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_nw.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 4, 0], - "to": [12, 16, 1], - "faces": { - "north": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "east": {"uv": [12, 0, 13, 12], "texture": "#1"}, - "south": {"uv": [0, 0, 12, 12], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [1, 4, 12], - "to": [1, 16, 16], - "faces": { - "east": {"uv": [4, 4, 8, 16], "texture": "#3"}, - "west": {"uv": [0, 4, 4, 16], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [12, 4, 1], - "to": [16, 16, 1], - "faces": { - "north": {"uv": [4, 4, 8, 16], "texture": "#3"}, - "south": {"uv": [0, 4, 4, 16], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [0, 4, 0], - "to": [1, 16, 12], - "faces": { - "east": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "south": {"uv": [3, 0, 4, 12], "texture": "#1"}, - "west": {"uv": [0, 0, 12, 12], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 39]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_se.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_se.json deleted file mode 100644 index 818121858..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_se.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [4, 4, 15], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 12, 12], "texture": "#1"}, - "south": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "west": {"uv": [12, 0, 13, 12], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [15, 4, 0], - "to": [15, 16, 4], - "faces": { - "east": {"uv": [0, 4, 4, 16], "texture": "#3"}, - "west": {"uv": [4, 4, 8, 16], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [0, 4, 15], - "to": [4, 16, 15], - "faces": { - "north": {"uv": [0, 4, 4, 16], "texture": "#3"}, - "south": {"uv": [4, 4, 8, 16], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [15, 4, 4], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [3, 0, 4, 12], "texture": "#1"}, - "east": {"uv": [0, 0, 12, 12], "texture": "#1"}, - "west": {"uv": [4, 0, 16, 12], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_sw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_sw.json deleted file mode 100644 index 1ad709653..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_sw.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 4, 4], - "to": [1, 16, 16], - "faces": { - "north": {"uv": [12, 0, 13, 12], "texture": "#1"}, - "east": {"uv": [0, 0, 12, 12], "texture": "#1"}, - "west": {"uv": [4, 0, 16, 12], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [12, 4, 15], - "to": [16, 16, 15], - "faces": { - "north": {"uv": [4, 4, 8, 16], "texture": "#3"}, - "south": {"uv": [0, 4, 4, 16], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [1, 4, 0], - "to": [1, 16, 4], - "faces": { - "east": {"uv": [0, 4, 4, 16], "texture": "#3"}, - "west": {"uv": [4, 4, 8, 16], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [0, 4, 15], - "to": [12, 16, 16], - "faces": { - "north": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "east": {"uv": [3, 0, 4, 12], "texture": "#1"}, - "south": {"uv": [0, 0, 12, 12], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [39, 8, 8]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle.json deleted file mode 100644 index 7815ab94b..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_tank", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 0, 0], - "to": [16, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, -23]}, - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "north"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideRight", - "from": [15, 0, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "east"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideRight", - "from": [0, 0, 15], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "south"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideRight", - "from": [0, 0, 0], - "to": [1, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "east": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "west"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "west"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window.json deleted file mode 100644 index 5f62b589c..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 0, 0], - "to": [4, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "north"}, - "east": {"uv": [12, 0, 13, 16], "texture": "#1", "cullface": "north"}, - "south": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideRight", - "from": [15, 0, 0], - "to": [16, 16, 4], - "faces": { - "east": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "east"}, - "south": {"uv": [12, 0, 13, 16], "texture": "#1", "cullface": "east"}, - "west": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideRight", - "from": [12, 0, 15], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "south"}, - "south": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "south"}, - "west": {"uv": [12, 0, 13, 16], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideRight", - "from": [0, 0, 12], - "to": [1, 16, 16], - "faces": { - "north": {"uv": [12, 0, 13, 16], "texture": "#1", "cullface": "west"}, - "east": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "west"}, - "west": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "west"} - } - }, - { - "name": "Window", - "from": [4, 0, 1], - "to": [12, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "north"}, - "south": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "north"} - } - }, - { - "name": "Window", - "from": [15, 0, 4], - "to": [15, 16, 12], - "faces": { - "east": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "east"}, - "west": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "east"} - } - }, - { - "name": "Window", - "from": [4, 0, 15], - "to": [12, 16, 15], - "faces": { - "north": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "south"}, - "south": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "south"} - } - }, - { - "name": "Window", - "from": [1, 0, 4], - "to": [1, 16, 12], - "faces": { - "east": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "west"}, - "west": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "west"} - } - }, - { - "name": "SideLeft", - "from": [12, 0, 0], - "to": [16, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "north"}, - "south": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "north"}, - "west": {"uv": [3, 0, 4, 16], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideLeft", - "from": [15, 0, 12], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [3, 0, 4, 16], "texture": "#1", "cullface": "east"}, - "east": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "east"}, - "west": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideLeft", - "from": [0, 0, 15], - "to": [4, 16, 16], - "faces": { - "north": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "south"}, - "east": {"uv": [3, 0, 4, 16], "texture": "#1", "cullface": "south"}, - "south": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideLeft", - "from": [0, 0, 0], - "to": [1, 16, 4], - "faces": { - "east": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "west"}, - "south": {"uv": [3, 0, 4, 16], "texture": "#1", "cullface": "west"}, - "west": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "west"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_ne.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_ne.json deleted file mode 100644 index bca53a94d..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_ne.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [15, 0, 0], - "to": [16, 16, 12], - "faces": { - "east": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "south": {"uv": [12, 0, 13, 16], "texture": "#1"}, - "west": {"uv": [0, 0, 12, 16], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [0, 0, 1], - "to": [4, 16, 1], - "faces": { - "north": {"uv": [8, 0, 12, 16], "texture": "#3"}, - "south": {"uv": [12, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [15, 0, 12], - "to": [15, 16, 16], - "faces": { - "east": {"uv": [12, 0, 16, 16], "texture": "#3"}, - "west": {"uv": [8, 0, 12, 16], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [4, 0, 0], - "to": [16, 16, 1], - "faces": { - "north": {"uv": [0, 0, 12, 16], "texture": "#1"}, - "south": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "west": {"uv": [3, 0, 4, 16], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_nw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_nw.json deleted file mode 100644 index 56e4f161f..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_nw.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 0, 0], - "to": [12, 16, 1], - "faces": { - "north": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "east": {"uv": [12, 0, 13, 16], "texture": "#1"}, - "south": {"uv": [0, 0, 12, 16], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [1, 0, 12], - "to": [1, 16, 16], - "faces": { - "east": {"uv": [12, 0, 16, 16], "texture": "#3"}, - "west": {"uv": [8, 0, 12, 16], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [12, 0, 1], - "to": [16, 16, 1], - "faces": { - "north": {"uv": [12, 0, 16, 16], "texture": "#3"}, - "south": {"uv": [8, 0, 12, 16], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [0, 0, 0], - "to": [1, 16, 12], - "faces": { - "east": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "south": {"uv": [3, 0, 4, 16], "texture": "#1"}, - "west": {"uv": [0, 0, 12, 16], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_se.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_se.json deleted file mode 100644 index 2ae7111a1..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_se.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [4, 0, 15], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 12, 16], "texture": "#1"}, - "south": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "west": {"uv": [12, 0, 13, 16], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [15, 0, 0], - "to": [15, 16, 4], - "faces": { - "east": {"uv": [8, 0, 12, 16], "texture": "#3"}, - "west": {"uv": [12, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [0, 0, 15], - "to": [4, 16, 15], - "faces": { - "north": {"uv": [8, 0, 12, 16], "texture": "#3"}, - "south": {"uv": [12, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [15, 0, 4], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [3, 0, 4, 16], "texture": "#1"}, - "east": {"uv": [0, 0, 12, 16], "texture": "#1"}, - "west": {"uv": [4, 0, 16, 16], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_sw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_sw.json deleted file mode 100644 index 44ff9e1a0..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_sw.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 0, 4], - "to": [1, 16, 16], - "faces": { - "north": {"uv": [12, 0, 13, 16], "texture": "#1"}, - "east": {"uv": [0, 0, 12, 16], "texture": "#1"}, - "west": {"uv": [4, 0, 16, 16], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [12, 0, 15], - "to": [16, 16, 15], - "faces": { - "north": {"uv": [12, 0, 16, 16], "texture": "#3"}, - "south": {"uv": [8, 0, 12, 16], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [1, 0, 0], - "to": [1, 16, 4], - "faces": { - "east": {"uv": [8, 0, 12, 16], "texture": "#3"}, - "west": {"uv": [12, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [0, 0, 15], - "to": [12, 16, 16], - "faces": { - "north": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "east": {"uv": [3, 0, 4, 16], "texture": "#1"}, - "south": {"uv": [0, 0, 12, 16], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single.json deleted file mode 100644 index fff031667..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single.json +++ /dev/null @@ -1,119 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "Lid", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "north"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "east"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "south"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - }, - { - "name": "SideRight", - "from": [15, 4, 0], - "to": [16, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "east": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "east"}, - "west": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 15], - "to": [16, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "north": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "south"}, - "south": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 0], - "to": [1, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 12, 8]}, - "faces": { - "east": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "west"}, - "west": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "west"} - } - }, - { - "name": "Lid", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "north"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "east"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "south"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 0], - "to": [16, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "north"}, - "south": {"uv": [0, 4, 16, 12], "texture": "#1", "cullface": "north"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [] - }, - { - "name": "block_middle", - "origin": [8, 8, 8], - "children": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [] - } - ] - }, - { - "name": "block_bottom", - "origin": [8, 8, 8], - "children": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3] - } - ] - }, - { - "name": "block_top", - "origin": [8, 8, 8], - "children": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [4, 5] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window.json deleted file mode 100644 index 3b21d585d..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "4": "create:block/fluid_tank_window_single", - "particle": "#1" - }, - "elements": [ - { - "name": "Lid", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "north"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "east"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "south"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 0], - "to": [4, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "north"}, - "east": {"uv": [12, 4, 13, 12], "texture": "#1", "cullface": "north"}, - "south": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideRight", - "from": [15, 4, 0], - "to": [16, 12, 4], - "faces": { - "east": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "east"}, - "south": {"uv": [12, 4, 13, 12], "texture": "#1", "cullface": "east"}, - "west": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideRight", - "from": [12, 4, 15], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "south"}, - "south": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "south"}, - "west": {"uv": [12, 4, 13, 12], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideRight", - "from": [0, 4, 12], - "to": [1, 12, 16], - "faces": { - "north": {"uv": [12, 4, 13, 12], "texture": "#1", "cullface": "west"}, - "east": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "west"}, - "west": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "west"} - } - }, - { - "name": "Window", - "from": [4, 4, 1], - "to": [12, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 8, 8], "texture": "#4", "cullface": "north"}, - "south": {"uv": [0, 0, 8, 8], "texture": "#4", "cullface": "north"} - } - }, - { - "name": "Window", - "from": [15, 4, 4], - "to": [15, 12, 12], - "faces": { - "east": {"uv": [0, 0, 8, 8], "texture": "#4", "cullface": "east"}, - "west": {"uv": [0, 0, 8, 8], "texture": "#4", "cullface": "east"} - } - }, - { - "name": "Window", - "from": [4, 4, 15], - "to": [12, 12, 15], - "faces": { - "north": {"uv": [0, 0, 8, 8], "texture": "#4", "cullface": "south"}, - "south": {"uv": [0, 0, 8, 8], "texture": "#4", "cullface": "south"} - } - }, - { - "name": "Window", - "from": [1, 4, 4], - "to": [1, 12, 12], - "faces": { - "east": {"uv": [0, 0, 8, 8], "texture": "#4", "cullface": "west"}, - "west": {"uv": [0, 0, 8, 8], "texture": "#4", "cullface": "west"} - } - }, - { - "name": "SideLeft", - "from": [12, 4, 0], - "to": [16, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "north"}, - "south": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "north"}, - "west": {"uv": [3, 4, 4, 12], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideLeft", - "from": [15, 4, 12], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [3, 4, 4, 12], "texture": "#1", "cullface": "east"}, - "east": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "east"}, - "west": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideLeft", - "from": [0, 4, 15], - "to": [4, 12, 16], - "faces": { - "north": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "south"}, - "east": {"uv": [3, 4, 4, 12], "texture": "#1", "cullface": "south"}, - "south": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideLeft", - "from": [0, 4, 0], - "to": [1, 12, 4], - "faces": { - "east": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "west"}, - "south": {"uv": [3, 4, 4, 12], "texture": "#1", "cullface": "west"}, - "west": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "west"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "north"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "east"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "south"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_ne.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_ne.json deleted file mode 100644 index 796adf27f..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_ne.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "4": "create:block/fluid_tank_window_single", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [15, 4, 0], - "to": [16, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "south": {"uv": [12, 4, 13, 12], "texture": "#1"}, - "west": {"uv": [0, 4, 12, 12], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [0, 4, 1], - "to": [4, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 8], "texture": "#4"}, - "south": {"uv": [4, 0, 8, 8], "texture": "#4"} - } - }, - { - "name": "Window", - "from": [15, 4, 12], - "to": [15, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [4, 0, 8, 8], "texture": "#4"}, - "west": {"uv": [0, 0, 4, 8], "texture": "#4"} - } - }, - { - "name": "SideLeft", - "from": [4, 4, 0], - "to": [16, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 4, 12, 12], "texture": "#1"}, - "south": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "west": {"uv": [3, 4, 4, 12], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-23, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-23, 8, 8]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "block_bottom_centered_window", - "origin": [8, 8, 8], - "children": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [5] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_nw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_nw.json deleted file mode 100644 index 555cbf4ac..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_nw.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "4": "create:block/fluid_tank_window_single", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 4, 0], - "to": [12, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "east": {"uv": [12, 4, 13, 12], "texture": "#1"}, - "south": {"uv": [0, 4, 12, 12], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [1, 4, 12], - "to": [1, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [4, 0, 8, 8], "texture": "#4"}, - "west": {"uv": [0, 0, 4, 8], "texture": "#4"} - } - }, - { - "name": "Window", - "from": [12, 4, 1], - "to": [16, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [4, 0, 8, 8], "texture": "#4"}, - "south": {"uv": [0, 0, 4, 8], "texture": "#4"} - } - }, - { - "name": "SideLeft", - "from": [0, 4, 0], - "to": [1, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "south": {"uv": [3, 4, 4, 12], "texture": "#1"}, - "west": {"uv": [0, 4, 12, 12], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 39]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 39]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "block_bottom_centered_window", - "origin": [8, 8, 8], - "children": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [5] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_se.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_se.json deleted file mode 100644 index 8987474f8..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_se.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "4": "create:block/fluid_tank_window_single", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [4, 4, 15], - "to": [16, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 4, 12, 12], "texture": "#1"}, - "south": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "west": {"uv": [12, 4, 13, 12], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [15, 4, 0], - "to": [15, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [0, 0, 4, 8], "texture": "#4"}, - "west": {"uv": [4, 0, 8, 8], "texture": "#4"} - } - }, - { - "name": "Window", - "from": [0, 4, 15], - "to": [4, 12, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 8], "texture": "#4"}, - "south": {"uv": [4, 0, 8, 8], "texture": "#4"} - } - }, - { - "name": "SideLeft", - "from": [15, 4, 4], - "to": [16, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [3, 4, 4, 12], "texture": "#1"}, - "east": {"uv": [0, 4, 12, 12], "texture": "#1"}, - "west": {"uv": [4, 4, 16, 12], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "block_bottom_centered_window", - "origin": [8, 8, 8], - "children": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [5] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_sw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_sw.json deleted file mode 100644 index 84fc2e862..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_sw.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "4": "create:block/fluid_tank_window_single", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 4, 4], - "to": [1, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [12, 4, 13, 12], "texture": "#1"}, - "east": {"uv": [0, 4, 12, 12], "texture": "#1"}, - "west": {"uv": [4, 4, 16, 12], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [12, 4, 15], - "to": [16, 12, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [4, 0, 8, 8], "texture": "#4"}, - "south": {"uv": [0, 0, 4, 8], "texture": "#4"} - } - }, - { - "name": "Window", - "from": [1, 4, 0], - "to": [1, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [0, 0, 4, 8], "texture": "#4"}, - "west": {"uv": [4, 0, 8, 8], "texture": "#4"} - } - }, - { - "name": "SideLeft", - "from": [0, 4, 15], - "to": [12, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "east": {"uv": [3, 4, 4, 12], "texture": "#1"}, - "south": {"uv": [0, 4, 12, 12], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [39, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [39, 8, 8]}, - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "block_bottom_centered_window", - "origin": [8, 8, 8], - "children": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [5] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top.json deleted file mode 100644 index c82bca162..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "Lid", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "north"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "east"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "south"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "SideRight", - "from": [0, 0, 0], - "to": [16, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "north"}, - "south": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideRight", - "from": [15, 0, 0], - "to": [16, 12, 16], - "faces": { - "east": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "east"}, - "west": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideRight", - "from": [0, 0, 15], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "south"}, - "south": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideRight", - "from": [0, 0, 0], - "to": [1, 12, 16], - "faces": { - "east": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "west"}, - "west": {"uv": [0, 4, 16, 16], "texture": "#1", "cullface": "west"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window.json deleted file mode 100644 index 9c1e436a8..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "Lid", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "north"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "east"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "south"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "SideRight", - "from": [0, 0, 0], - "to": [4, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "north"}, - "east": {"uv": [12, 4, 13, 16], "texture": "#1", "cullface": "north"}, - "south": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideRight", - "from": [15, 0, 0], - "to": [16, 12, 4], - "faces": { - "east": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "east"}, - "south": {"uv": [12, 4, 13, 16], "texture": "#1", "cullface": "east"}, - "west": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideRight", - "from": [12, 0, 15], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "south"}, - "south": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "south"}, - "west": {"uv": [12, 4, 13, 16], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideRight", - "from": [0, 0, 12], - "to": [1, 12, 16], - "faces": { - "north": {"uv": [12, 4, 13, 16], "texture": "#1", "cullface": "west"}, - "east": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "west"}, - "west": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "west"} - } - }, - { - "name": "Window", - "from": [4, 0, 1], - "to": [12, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "north"}, - "south": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "north"} - } - }, - { - "name": "Window", - "from": [15, 0, 4], - "to": [15, 12, 12], - "faces": { - "east": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "east"}, - "west": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "east"} - } - }, - { - "name": "Window", - "from": [4, 0, 15], - "to": [12, 12, 15], - "faces": { - "north": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "south"}, - "south": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "south"} - } - }, - { - "name": "Window", - "from": [1, 0, 4], - "to": [1, 12, 12], - "faces": { - "east": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "west"}, - "west": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "west"} - } - }, - { - "name": "SideLeft", - "from": [12, 0, 0], - "to": [16, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "north"}, - "south": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "north"}, - "west": {"uv": [3, 4, 4, 16], "texture": "#1", "cullface": "north"} - } - }, - { - "name": "SideLeft", - "from": [15, 0, 12], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [3, 4, 4, 16], "texture": "#1", "cullface": "east"}, - "east": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "east"}, - "west": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "east"} - } - }, - { - "name": "SideLeft", - "from": [0, 0, 15], - "to": [4, 12, 16], - "faces": { - "north": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "south"}, - "east": {"uv": [3, 4, 4, 16], "texture": "#1", "cullface": "south"}, - "south": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "south"} - } - }, - { - "name": "SideLeft", - "from": [0, 0, 0], - "to": [1, 12, 4], - "faces": { - "east": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "west"}, - "south": {"uv": [3, 4, 4, 16], "texture": "#1", "cullface": "west"}, - "west": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "west"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_ne.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_ne.json deleted file mode 100644 index ea6698cc5..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_ne.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [15, 0, 0], - "to": [16, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "south": {"uv": [12, 4, 13, 16], "texture": "#1"}, - "west": {"uv": [0, 4, 12, 16], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [0, 0, 1], - "to": [4, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 12], "texture": "#3"}, - "south": {"uv": [4, 0, 8, 12], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [15, 0, 12], - "to": [15, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [4, 0, 8, 12], "texture": "#3"}, - "west": {"uv": [0, 0, 4, 12], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [4, 0, 0], - "to": [16, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 4, 12, 16], "texture": "#1"}, - "south": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "west": {"uv": [3, 4, 4, 16], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-23, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_nw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_nw.json deleted file mode 100644 index aac6384ff..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_nw.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 0, 0], - "to": [12, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "east": {"uv": [12, 4, 13, 16], "texture": "#1"}, - "south": {"uv": [0, 4, 12, 16], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [1, 0, 12], - "to": [1, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [4, 0, 8, 12], "texture": "#3"}, - "west": {"uv": [0, 0, 4, 12], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [12, 0, 1], - "to": [16, 12, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [4, 0, 8, 12], "texture": "#3"}, - "south": {"uv": [0, 0, 4, 12], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [0, 0, 0], - "to": [1, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "south": {"uv": [3, 4, 4, 16], "texture": "#1"}, - "west": {"uv": [0, 4, 12, 16], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 39]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_se.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_se.json deleted file mode 100644 index bfa61d2f8..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_se.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [4, 0, 15], - "to": [16, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 4, 12, 16], "texture": "#1"}, - "south": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "west": {"uv": [12, 4, 13, 16], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [15, 0, 0], - "to": [15, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [0, 0, 4, 12], "texture": "#3"}, - "west": {"uv": [4, 0, 8, 12], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [0, 0, 15], - "to": [4, 12, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 12], "texture": "#3"}, - "south": {"uv": [4, 0, 8, 12], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [15, 0, 4], - "to": [16, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [3, 4, 4, 16], "texture": "#1"}, - "east": {"uv": [0, 4, 12, 16], "texture": "#1"}, - "west": {"uv": [4, 4, 16, 16], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_sw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_sw.json deleted file mode 100644 index 7e7d07038..000000000 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_sw.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/copper_casing", - "1": "create:block/fluid_tank", - "3": "create:block/fluid_tank_window", - "particle": "create:block/fluid_tank" - }, - "elements": [ - { - "name": "SideRight", - "from": [0, 0, 4], - "to": [1, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [12, 4, 13, 16], "texture": "#1"}, - "east": {"uv": [0, 4, 12, 16], "texture": "#1"}, - "west": {"uv": [4, 4, 16, 16], "texture": "#1"} - } - }, - { - "name": "Window", - "from": [12, 0, 15], - "to": [16, 12, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [4, 0, 8, 12], "texture": "#3"}, - "south": {"uv": [0, 0, 4, 12], "texture": "#3"} - } - }, - { - "name": "Window", - "from": [1, 0, 0], - "to": [1, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "east": {"uv": [0, 0, 4, 12], "texture": "#3"}, - "west": {"uv": [4, 0, 8, 12], "texture": "#3"} - } - }, - { - "name": "SideLeft", - "from": [0, 0, 15], - "to": [12, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "east": {"uv": [3, 4, 4, 16], "texture": "#1"}, - "south": {"uv": [0, 4, 12, 16], "texture": "#1"} - } - }, - { - "name": "Bottom", - "from": [0, 12, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [39, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#1"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "tank", - "origin": [8, 8, -23], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_valve/block_horizontal_closed.json b/src/main/resources/assets/create/models/block/fluid_valve/block_horizontal_closed.json deleted file mode 100644 index 2bfe51234..000000000 --- a/src/main/resources/assets/create/models/block/fluid_valve/block_horizontal_closed.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/fluid_valve", - "3": "create:block/fluid_pipe", - "particle": "create:block/oxidized/copper_block_0" - }, - "elements": [ - { - "name": "ValveCenter", - "from": [2, 2, 2], - "to": [14, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, - "faces": { - "north": {"uv": [0, 0, 6, 6], "texture": "#3"}, - "east": {"uv": [6, 0, 12, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 6, 6], "texture": "#2"}, - "west": {"uv": [6, 0, 12, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "from": [4, 14, 4], - "to": [12, 16, 12], - "faces": { - "north": {"uv": [0, 6, 4, 7], "texture": "#3"}, - "east": {"uv": [0, 6, 4, 7], "texture": "#3"}, - "south": {"uv": [0, 6, 4, 7], "texture": "#3"}, - "west": {"uv": [0, 6, 4, 7], "texture": "#3"} - } - }, - { - "from": [4, 0, 4], - "to": [12, 2, 12], - "faces": { - "north": {"uv": [0, 7, 4, 6], "texture": "#3"}, - "east": {"uv": [0, 7, 4, 6], "texture": "#3"}, - "south": {"uv": [0, 7, 4, 6], "texture": "#3"}, - "west": {"uv": [0, 7, 4, 6], "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_valve/block_horizontal_open.json b/src/main/resources/assets/create/models/block/fluid_valve/block_horizontal_open.json deleted file mode 100644 index 3a705864b..000000000 --- a/src/main/resources/assets/create/models/block/fluid_valve/block_horizontal_open.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/fluid_valve", - "3": "create:block/fluid_pipe", - "particle": "create:block/oxidized/copper_block_0" - }, - "elements": [ - { - "name": "ValveCenter", - "from": [2, 2, 2], - "to": [14, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, - "faces": { - "north": {"uv": [0, 0, 6, 6], "texture": "#3"}, - "east": {"uv": [6, 0, 12, 6], "texture": "#2"}, - "south": {"uv": [0, 6, 6, 12], "texture": "#2"}, - "west": {"uv": [6, 0, 12, 6], "texture": "#2"}, - "up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "from": [4, 14, 4], - "to": [12, 16, 12], - "faces": { - "north": {"uv": [0, 6, 4, 7], "texture": "#3"}, - "east": {"uv": [0, 6, 4, 7], "texture": "#3"}, - "south": {"uv": [0, 6, 4, 7], "texture": "#3"}, - "west": {"uv": [0, 6, 4, 7], "texture": "#3"} - } - }, - { - "from": [4, 0, 4], - "to": [12, 2, 12], - "faces": { - "north": {"uv": [0, 7, 4, 6], "texture": "#3"}, - "east": {"uv": [0, 7, 4, 6], "texture": "#3"}, - "south": {"uv": [0, 7, 4, 6], "texture": "#3"}, - "west": {"uv": [0, 7, 4, 6], "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_valve/block_vertical_closed.json b/src/main/resources/assets/create/models/block/fluid_valve/block_vertical_closed.json deleted file mode 100644 index db7e80b05..000000000 --- a/src/main/resources/assets/create/models/block/fluid_valve/block_vertical_closed.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/fluid_valve", - "3": "create:block/fluid_pipe", - "particle": "create:block/oxidized/copper_block_0" - }, - "elements": [ - { - "name": "ValveCenter", - "from": [2, 2, 2], - "to": [14, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, - "faces": { - "north": {"uv": [0, 0, 6, 6], "texture": "#3"}, - "east": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"} - } - }, - { - "from": [0, 4, 4], - "to": [2, 12, 12], - "faces": { - "north": {"uv": [0, 6, 4, 7], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 6, 4, 7], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 6, 4, 7], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 6, 4, 7], "rotation": 270, "texture": "#3"} - } - }, - { - "from": [14, 4, 4], - "to": [16, 12, 12], - "faces": { - "north": {"uv": [0, 7, 4, 6], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 7, 4, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 7, 4, 6], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 7, 4, 6], "rotation": 270, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_valve/block_vertical_open.json b/src/main/resources/assets/create/models/block/fluid_valve/block_vertical_open.json deleted file mode 100644 index c4a17315a..000000000 --- a/src/main/resources/assets/create/models/block/fluid_valve/block_vertical_open.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/fluid_valve", - "3": "create:block/fluid_pipe", - "particle": "create:block/oxidized/copper_block_0" - }, - "elements": [ - { - "name": "ValveCenter", - "from": [2, 2, 2], - "to": [14, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, - "faces": { - "north": {"uv": [0, 0, 6, 6], "texture": "#3"}, - "east": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 6, 6, 12], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [6, 0, 12, 6], "rotation": 90, "texture": "#2"} - } - }, - { - "from": [0, 4, 4], - "to": [2, 12, 12], - "faces": { - "north": {"uv": [0, 6, 4, 7], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 6, 4, 7], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 6, 4, 7], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 6, 4, 7], "rotation": 270, "texture": "#3"} - } - }, - { - "from": [14, 4, 4], - "to": [16, 12, 12], - "faces": { - "north": {"uv": [0, 7, 4, 6], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 7, 4, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 7, 4, 6], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 7, 4, 6], "rotation": 270, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_valve/item.json b/src/main/resources/assets/create/models/block/fluid_valve/item.json deleted file mode 100644 index 576eb104c..000000000 --- a/src/main/resources/assets/create/models/block/fluid_valve/item.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/fluid_valve", - "3": "create:block/fluid_pipe", - "4": "create:block/pump", - "1_1": "create:block/axis_top", - "1_0": "create:block/axis", - "particle": "create:block/oxidized/copper_block_0" - }, - "elements": [ - { - "name": "ValveCenter", - "from": [2, 2, 2], - "to": [14, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [24, 11, 11]}, - "faces": { - "north": {"uv": [6, 0, 12, 6], "texture": "#2"}, - "east": {"uv": [0, 0, 6, 6], "texture": "#3"}, - "south": {"uv": [6, 0, 12, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 6, 6], "texture": "#3"}, - "up": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "shade": false, - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} - } - }, - { - "from": [2.5, 14.1, 9.5], - "to": [4.5, 15.1, 11.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [12, 2, 13, 4], "rotation": 270, "texture": "#4"}, - "east": {"uv": [12, 2, 14, 3], "rotation": 180, "texture": "#4"}, - "south": {"uv": [12, 3, 14, 4], "texture": "#4"}, - "west": {"uv": [12, 3, 14, 4], "rotation": 180, "texture": "#4"}, - "up": {"uv": [12, 2, 14, 4], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 2, 12, 4], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [2.5, 14.1, 11.5], - "to": [6.5, 15.1, 13.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [12, 0, 13, 4], "rotation": 90, "texture": "#4"}, - "east": {"uv": [14, 0, 16, 1], "rotation": 180, "texture": "#4"}, - "south": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"}, - "west": {"uv": [12, 3, 14, 4], "texture": "#4"}, - "up": {"uv": [14, 0, 16, 4], "rotation": 90, "texture": "#4"}, - "down": {"uv": [16, 0, 14, 4], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [9.5, 14.1, 2.5], - "to": [11.5, 15.1, 4.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [14, 3, 12, 4], "rotation": 180, "texture": "#4"}, - "east": {"uv": [14, 3, 12, 4], "texture": "#4"}, - "south": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"}, - "west": {"uv": [12, 4, 13, 2], "rotation": 270, "texture": "#4"}, - "up": {"uv": [14, 2, 12, 4], "rotation": 180, "texture": "#4"}, - "down": {"uv": [12, 2, 14, 4], "texture": "#4"} - } - }, - { - "from": [11.5, 14.1, 2.5], - "to": [13.5, 15.1, 6.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [14, 3, 12, 4], "texture": "#4"}, - "east": {"uv": [15, 4, 16, 0], "rotation": 90, "texture": "#4"}, - "south": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"}, - "west": {"uv": [12, 4, 13, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [16, 0, 14, 4], "rotation": 180, "texture": "#4"}, - "down": {"uv": [14, 0, 16, 4], "texture": "#4"} - } - }, - { - "name": "Center", - "from": [6.5, 14, 6.5], - "to": [9.5, 16, 9.5], - "faces": { - "north": {"uv": [6, 8.5, 7.5, 9.5], "texture": "#2"}, - "east": {"uv": [6, 8.5, 7.5, 9.5], "texture": "#2"}, - "south": {"uv": [6, 8.5, 7.5, 9.5], "texture": "#2"}, - "west": {"uv": [6, 8.5, 7.5, 9.5], "texture": "#2"}, - "up": {"uv": [6, 10, 7.5, 11.5], "texture": "#2"} - } - }, - { - "name": "WestPointer", - "from": [7, 14, 9], - "to": [9, 15, 13], - "faces": { - "east": {"uv": [9.5, 9.5, 7.5, 10], "texture": "#2"}, - "south": {"uv": [7, 9.5, 7.5, 10], "texture": "#2"}, - "west": {"uv": [9.5, 9.5, 7.5, 10], "texture": "#2"}, - "up": {"uv": [9.5, 8.5, 7.5, 9.5], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "WestPointer", - "from": [7, 14, 3], - "to": [9, 15, 7], - "faces": { - "north": {"uv": [7.5, 9.5, 7, 10], "texture": "#2"}, - "east": {"uv": [9.5, 9.5, 7.5, 10], "texture": "#2"}, - "west": {"uv": [9.5, 9.5, 7.5, 10], "texture": "#2"}, - "up": {"uv": [9.5, 8.5, 7.5, 9.5], "rotation": 90, "texture": "#2"} - } - }, - { - "from": [-1, 3, 3], - "to": [2, 13, 13], - "faces": { - "north": {"uv": [6, 5, 11, 6.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [6, 5, 11, 6.5], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 0, 11, 5], "texture": "#3"}, - "up": {"uv": [6, 5, 11, 6.5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [6, 5, 11, 6.5], "rotation": 90, "texture": "#3"} - } - }, - { - "from": [14, 3, 3], - "to": [17, 13, 13], - "faces": { - "north": {"uv": [6, 6.5, 11, 5], "rotation": 270, "texture": "#3"}, - "east": {"uv": [11, 0, 6, 5], "texture": "#3"}, - "south": {"uv": [6, 6.5, 11, 5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 6.5, 11, 5], "rotation": 90, "texture": "#3"}, - "down": {"uv": [6, 6.5, 11, 5], "rotation": 90, "texture": "#3"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 135, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [0, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [1] - }, - { - "name": "Pointer", - "origin": [7.5, 14, 8], - "children": [ - { - "name": "arrow", - "origin": [8, 8, 8], - "children": [2, 3] - }, - { - "name": "arrow", - "origin": [8, 8, 8], - "children": [4, 5] - }, 6, 7, 8] - }, 9, 10] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/fluid_valve/pointer.json b/src/main/resources/assets/create/models/block/fluid_valve/pointer.json deleted file mode 100644 index eb686e2a8..000000000 --- a/src/main/resources/assets/create/models/block/fluid_valve/pointer.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "create:block/fluid_valve", - "4": "create:block/pump" - }, - "elements": [ - { - "from": [2.5, 14.1, 9.5], - "to": [4.5, 15.1, 11.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [12, 2, 13, 4], "rotation": 270, "texture": "#4"}, - "east": {"uv": [12, 2, 14, 3], "rotation": 180, "texture": "#4"}, - "south": {"uv": [12, 3, 14, 4], "texture": "#4"}, - "west": {"uv": [12, 3, 14, 4], "rotation": 180, "texture": "#4"}, - "up": {"uv": [12, 2, 14, 4], "rotation": 90, "texture": "#4"}, - "down": {"uv": [14, 2, 12, 4], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [2.5, 14.1, 11.5], - "to": [6.5, 15.1, 13.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [12, 0, 13, 4], "rotation": 90, "texture": "#4"}, - "east": {"uv": [14, 0, 16, 1], "rotation": 180, "texture": "#4"}, - "south": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"}, - "west": {"uv": [12, 3, 14, 4], "texture": "#4"}, - "up": {"uv": [14, 0, 16, 4], "rotation": 90, "texture": "#4"}, - "down": {"uv": [16, 0, 14, 4], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [9.5, 14.1, 2.5], - "to": [11.5, 15.1, 4.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [14, 3, 12, 4], "rotation": 180, "texture": "#4"}, - "east": {"uv": [14, 3, 12, 4], "texture": "#4"}, - "south": {"uv": [14, 2, 12, 3], "rotation": 180, "texture": "#4"}, - "west": {"uv": [12, 4, 13, 2], "rotation": 270, "texture": "#4"}, - "up": {"uv": [14, 2, 12, 4], "rotation": 180, "texture": "#4"}, - "down": {"uv": [12, 2, 14, 4], "texture": "#4"} - } - }, - { - "from": [11.5, 14.1, 2.5], - "to": [13.5, 15.1, 6.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [14, 3, 12, 4], "texture": "#4"}, - "east": {"uv": [15, 4, 16, 0], "rotation": 90, "texture": "#4"}, - "south": {"uv": [16, 0, 14, 1], "rotation": 180, "texture": "#4"}, - "west": {"uv": [12, 4, 13, 0], "rotation": 90, "texture": "#4"}, - "up": {"uv": [16, 0, 14, 4], "rotation": 180, "texture": "#4"}, - "down": {"uv": [14, 0, 16, 4], "texture": "#4"} - } - }, - { - "name": "Center", - "from": [6.5, 14, 6.5], - "to": [9.5, 16, 9.5], - "faces": { - "north": {"uv": [6, 8.5, 7.5, 9.5], "texture": "#2"}, - "east": {"uv": [6, 8.5, 7.5, 9.5], "texture": "#2"}, - "south": {"uv": [6, 8.5, 7.5, 9.5], "texture": "#2"}, - "west": {"uv": [6, 8.5, 7.5, 9.5], "texture": "#2"}, - "up": {"uv": [6, 10, 7.5, 11.5], "texture": "#2"} - } - }, - { - "name": "WestPointer", - "from": [7, 14, 9], - "to": [9, 15, 13], - "faces": { - "east": {"uv": [9.5, 9.5, 7.5, 10], "texture": "#2"}, - "south": {"uv": [7, 9.5, 7.5, 10], "texture": "#2"}, - "west": {"uv": [9.5, 9.5, 7.5, 10], "texture": "#2"}, - "up": {"uv": [9.5, 8.5, 7.5, 9.5], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "WestPointer", - "from": [7, 14, 3], - "to": [9, 15, 7], - "faces": { - "north": {"uv": [7.5, 9.5, 7, 10], "texture": "#2"}, - "east": {"uv": [9.5, 9.5, 7.5, 10], "texture": "#2"}, - "west": {"uv": [9.5, 9.5, 7.5, 10], "texture": "#2"}, - "up": {"uv": [9.5, 8.5, 7.5, 9.5], "rotation": 90, "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/casing_left.json b/src/main/resources/assets/create/models/block/flywheel/casing_left.json deleted file mode 100644 index dac493187..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/casing_left.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "5": "create:block/brass_casing", - "7": "create:block/brass_gearbox", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [1, 0, 0], - "to": [12, 16, 16], - "faces": { - "north": {"uv": [0, 10, 8, 15.5], "rotation": 270, "texture": "#0"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "south": {"uv": [8, 15.5, 16, 10], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "up": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"}, - "down": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [0, 0, 0], - "to": [1, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]}, - "faces": { - "north": {"uv": [15, 14, 16, 16], "texture": "#5"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#5"}, - "south": {"uv": [0, 14, 1, 16], "texture": "#5"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#5"}, - "up": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [0, 14, 0], - "to": [1, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#5"}, - "east": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#5"}, - "south": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "up": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [0, 2, 0], - "to": [1, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 1], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#5"}, - "south": {"uv": [2, 1, 14, 2], "rotation": 90, "texture": "#5"}, - "west": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#5"}, - "up": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 14, 1, 16], "texture": "#5"} - } - }, - { - "from": [0, 2, 14], - "to": [1, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [2, 1, 14, 2], "rotation": 270, "texture": "#5"}, - "east": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#5"}, - "south": {"uv": [2, 0, 14, 1], "rotation": 270, "texture": "#5"}, - "west": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 14, 1, 16], "texture": "#5"}, - "down": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"} - } - }, - { - "from": [10.9, 3, 3], - "to": [19.9, 13, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [11.5, 0, 16, 5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [11, 5, 16, 10], "texture": "#0"}, - "south": {"uv": [11.5, 0, 16, 5], "texture": "#0"}, - "west": {"uv": [11, 5, 16, 10], "texture": "#0"}, - "up": {"uv": [11.5, 0, 16, 5], "texture": "#0"}, - "down": {"uv": [11.5, 0, 16, 5], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/casing_none.json b/src/main/resources/assets/create/models/block/flywheel/casing_none.json deleted file mode 100644 index ff52149d8..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/casing_none.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "5": "create:block/brass_casing", - "7": "create:block/brass_gearbox", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [1, 0, 0], - "to": [12, 16, 16], - "faces": { - "north": {"uv": [8, 10.5, 16, 16], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "south": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "up": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"}, - "down": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [0, 0, 0], - "to": [1, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]}, - "faces": { - "north": {"uv": [15, 14, 16, 16], "texture": "#5"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#5"}, - "south": {"uv": [0, 14, 1, 16], "texture": "#5"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#5"}, - "up": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [0, 14, 0], - "to": [1, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#5"}, - "east": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#5"}, - "south": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "up": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [0, 2, 0], - "to": [1, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 1], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#5"}, - "south": {"uv": [2, 1, 14, 2], "rotation": 90, "texture": "#5"}, - "west": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#5"}, - "up": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 14, 1, 16], "texture": "#5"} - } - }, - { - "from": [0, 2, 14], - "to": [1, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [2, 1, 14, 2], "rotation": 270, "texture": "#5"}, - "east": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#5"}, - "south": {"uv": [2, 0, 14, 1], "rotation": 270, "texture": "#5"}, - "west": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 14, 1, 16], "texture": "#5"}, - "down": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"} - } - }, - { - "from": [10.9, 3, 3], - "to": [19.9, 13, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [11.5, 0, 16, 5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [11, 5, 16, 10], "texture": "#0"}, - "south": {"uv": [11.5, 0, 16, 5], "texture": "#0"}, - "west": {"uv": [11, 5, 16, 10], "texture": "#0"}, - "up": {"uv": [11.5, 0, 16, 5], "texture": "#0"}, - "down": {"uv": [11.5, 0, 16, 5], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/casing_right.json b/src/main/resources/assets/create/models/block/flywheel/casing_right.json deleted file mode 100644 index 706c95184..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/casing_right.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "5": "create:block/brass_casing", - "7": "create:block/brass_gearbox", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [1, 0, 0], - "to": [12, 16, 16], - "faces": { - "north": {"uv": [8, 10.5, 16, 16], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "south": {"uv": [0, 15.5, 8, 10], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "up": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"}, - "down": {"uv": [8, 10.5, 16, 16], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [0, 0, 0], - "to": [1, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]}, - "faces": { - "north": {"uv": [15, 14, 16, 16], "texture": "#5"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#5"}, - "south": {"uv": [0, 14, 1, 16], "texture": "#5"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#5"}, - "up": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [0, 14, 0], - "to": [1, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#5"}, - "east": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#5"}, - "south": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "up": {"uv": [0, 0, 16, 1], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 1, 16, 2], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [0, 2, 0], - "to": [1, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [2, 0, 14, 1], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#5"}, - "south": {"uv": [2, 1, 14, 2], "rotation": 90, "texture": "#5"}, - "west": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#5"}, - "up": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 14, 1, 16], "texture": "#5"} - } - }, - { - "from": [0, 2, 14], - "to": [1, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, - "faces": { - "north": {"uv": [2, 1, 14, 2], "rotation": 270, "texture": "#5"}, - "east": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#5"}, - "south": {"uv": [2, 0, 14, 1], "rotation": 270, "texture": "#5"}, - "west": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 14, 1, 16], "texture": "#5"}, - "down": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"} - } - }, - { - "from": [10.9, 3, 3], - "to": [19.9, 13, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [11.5, 0, 16, 5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [11, 5, 16, 10], "texture": "#0"}, - "south": {"uv": [11.5, 0, 16, 5], "texture": "#0"}, - "west": {"uv": [11, 5, 16, 10], "texture": "#0"}, - "up": {"uv": [11.5, 0, 16, 5], "texture": "#0"}, - "down": {"uv": [11.5, 0, 16, 5], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/flywheel.bbmodel b/src/main/resources/assets/create/models/block/flywheel/flywheel.bbmodel deleted file mode 100644 index a1c9455f2..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/flywheel.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"item","resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[22,6,6],"to":[32,10,10],"autouv":0,"color":0,"origin":[-5,8,8],"faces":{"north":{"uv":[2,7,7,9],"texture":0},"east":{"uv":[0,7,2,9],"texture":0},"south":{"uv":[2,7,7,9],"texture":0},"west":{"uv":[0,7,2,9],"texture":0},"up":{"uv":[2,7,7,9],"texture":0},"down":{"uv":[2,7,7,9],"texture":0}},"uuid":"50a686cc-3204-b7bf-1566-d1ef05844c60"},{"name":"cube","from":[7,7,7],"to":[23,9,9],"autouv":0,"color":4,"rotation":[0,0,-22.5],"origin":[23,8,8],"faces":{"north":{"uv":[0,9,8,10],"rotation":180,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[0,9,8,10],"rotation":180,"texture":0},"west":{"uv":[0,0,0,0],"rotation":180,"texture":null},"up":{"uv":[0,9,8,10],"rotation":180,"texture":0},"down":{"uv":[0,9,8,10],"rotation":180,"texture":0}},"uuid":"b575be0b-21f0-8150-9d24-be88ac50d1df"},{"name":"cube","from":[3,3,-3.9000000000000004],"to":[13,13,5.1],"autouv":0,"color":5,"origin":[8,8,1.0999999999999996],"faces":{"north":{"uv":[11,5,16,10],"texture":0},"east":{"uv":[11.5,0,16,5],"texture":0},"south":{"uv":[11,5,16,10],"texture":0},"west":{"uv":[11.5,0,16,5],"rotation":180,"texture":0},"up":{"uv":[11.5,0,16,5],"rotation":270,"texture":0},"down":{"uv":[11.5,0,16,5],"rotation":90,"texture":0}},"uuid":"2f1e2920-2ea2-8af4-3221-eb3bc7043169"},{"name":"cube","from":[0,0,4],"to":[16,16,15],"autouv":0,"color":5,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16],"texture":5},"east":{"uv":[0,15.5,8,10],"rotation":270,"texture":0},"south":{"uv":[0,0,16,16],"texture":5},"west":{"uv":[8,10.5,16,16],"rotation":90,"texture":0},"up":{"uv":[8,10.5,16,16],"rotation":180,"texture":0},"down":{"uv":[8,10.5,16,16],"texture":0}},"uuid":"b0cd1b60-1f63-cbfa-eb62-4b456dfe2734"},{"name":"spoke","from":[6,-8,-0.8999999999999995],"to":[10,3,3.1000000000000005],"autouv":0,"color":0,"rotation":[0,0,-45],"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"east":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"south":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"west":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":270,"texture":null}},"uuid":"cb470bb9-82ea-3186-ac3f-e6cd886649bc"},{"name":"cube","from":[-0.5,23.5,-1.8500000000000005],"to":[16.5,28.5,4.049999999999998],"autouv":0,"color":4,"rotation":[0,0,-45],"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"texture":0},"east":{"uv":[8.5,0,11.5,2.5],"texture":0},"south":{"uv":[0,0,8.5,2.5],"texture":0},"west":{"uv":[8.5,0,11.5,2.5],"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"texture":0}},"uuid":"63aed4d8-2ff2-0746-1545-6a76e0d97a9c"},{"name":"cube","from":[-0.5,23.5,-1.9000000000000012],"to":[16.5,28.5,4.099999999999999],"autouv":0,"color":4,"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"texture":0},"east":{"uv":[8.5,0,11.5,2],"texture":0},"south":{"uv":[0,0,8.5,2.5],"texture":0},"west":{"uv":[8.5,0,11.5,2.5],"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"texture":0}},"uuid":"6fce1c92-91b6-6314-3bcc-81af1da4fcde"},{"name":"cube","from":[14.75,7,11.549999999999997],"to":[30.75,9,13.449999999999996],"autouv":0,"color":7,"rotation":[0,0,-22.5],"origin":[15,8,21],"faces":{"north":{"uv":[0,9,8,10],"rotation":180,"texture":0},"east":{"uv":[0,0,0,0],"rotation":270,"texture":null},"south":{"uv":[0,9,8,10],"rotation":180,"texture":0},"west":{"uv":[0,0,0,0],"rotation":270,"texture":null},"up":{"uv":[0,9,8,10],"rotation":180,"texture":0},"down":{"uv":[0,9,8,10],"rotation":180,"texture":0}},"uuid":"206f3d87-1379-a949-ead0-500086d5bbe2"},{"name":"cube","from":[29,1,11.5],"to":[32,3,13.5],"autouv":0,"color":4,"origin":[8,8,17],"faces":{"north":{"uv":[6.5,9,8,10],"rotation":180,"texture":0},"east":{"uv":[0,9,1.5,10],"rotation":180,"texture":0},"south":{"uv":[0,9,1.5,10],"rotation":180,"texture":0},"west":{"uv":[0,9,1.5,10],"rotation":180,"texture":0},"up":{"uv":[0,9,1.5,10],"rotation":180,"texture":0},"down":{"uv":[0,9,1.5,10],"rotation":180,"texture":0}},"uuid":"0af1e6ff-4a9e-283a-2942-84d3ec8b5836"},{"name":"cube","from":[23.5,-0.5,-1.9000000000000012],"to":[28.5,16.5,4.099999999999999],"autouv":0,"color":4,"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":270,"texture":0},"east":{"uv":[0,2.5,8.5,5.5],"rotation":90,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":90,"texture":0},"west":{"uv":[0,2.5,8.5,5.5],"rotation":90,"texture":0},"up":{"uv":[8.5,0,11.5,2.5],"rotation":90,"texture":0},"down":{"uv":[8.5,0,11.5,2],"rotation":90,"texture":0}},"uuid":"a5520e2b-ba0a-b510-e5ea-f1a950a16250"},{"name":"cube","from":[-0.5,-12.5,-1.8500000000000005],"to":[16.5,-7.5,4.049999999999998],"autouv":0,"color":4,"rotation":[0,0,45],"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"east":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"west":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0}},"uuid":"2f5b7526-cca3-7518-3496-d1b0bbe08e75"},{"name":"cube","from":[-12.5,-0.5,-1.8500000000000005],"to":[-7.5,16.5,4.049999999999998],"autouv":0,"color":4,"rotation":[0,0,-45],"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":90,"texture":0},"east":{"uv":[0,2.5,8.5,5.5],"rotation":270,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":270,"texture":0},"west":{"uv":[0,2.5,8.5,5.5],"rotation":270,"texture":0},"up":{"uv":[8.5,0,11.5,2.5],"rotation":270,"texture":0},"down":{"uv":[8.5,0,11.5,2.5],"rotation":270,"texture":0}},"uuid":"429976b8-16fe-3f5c-55db-9aab4c9fbebc"},{"name":"cube","from":[-12.5,-0.5,-1.9000000000000012],"to":[-7.5,16.5,4.099999999999999],"autouv":0,"color":4,"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":90,"texture":0},"east":{"uv":[0,2.5,8.5,5.5],"rotation":270,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":270,"texture":0},"west":{"uv":[0,2.5,8.5,5.5],"rotation":270,"texture":0},"up":{"uv":[8.5,0,11.5,2],"rotation":270,"texture":0},"down":{"uv":[8.5,0,11.5,2.5],"rotation":270,"texture":0}},"uuid":"50806591-41a8-f2bc-7a1d-e43b23b96408"},{"name":"cube","from":[-0.5,-12.5,-1.8500000000000005],"to":[16.5,-7.5,4.049999999999998],"autouv":0,"color":4,"rotation":[0,0,-45],"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"east":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"west":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0}},"uuid":"801950a3-dd0a-627f-7246-561bcad27e88"},{"name":"cube","from":[-0.5,-12.5,-1.9000000000000012],"to":[16.5,-7.5,4.099999999999999],"autouv":0,"color":4,"origin":[8,8,1.0999999999999988],"faces":{"north":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"east":{"uv":[8.5,0,11.5,2.5],"rotation":180,"texture":0},"south":{"uv":[0,0,8.5,2.5],"rotation":180,"texture":0},"west":{"uv":[8.5,0,11.5,2],"rotation":180,"texture":0},"up":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0},"down":{"uv":[0,2.5,8.5,5.5],"rotation":180,"texture":0}},"uuid":"b991a213-a5c0-1951-d6f3-229a0c14d9c5"},{"name":"cube","from":[0,0,15],"to":[16,2,16],"autouv":0,"color":3,"origin":[24,8,8],"faces":{"north":{"uv":[0,0,16,2],"texture":4},"east":{"uv":[0,14,1,16],"texture":4},"south":{"uv":[0,14,16,16],"texture":4},"west":{"uv":[15,14,16,16],"texture":4},"up":{"uv":[0,1,16,2],"texture":4},"down":{"uv":[0,0,16,1],"texture":4}},"uuid":"7883be7c-2f95-da04-1f6b-6eb29690cc04"},{"name":"cube","from":[0,14,15],"to":[16,16,16],"autouv":0,"color":3,"origin":[8,8,16],"faces":{"north":{"uv":[0,0,16,2],"rotation":180,"texture":4},"east":{"uv":[15,14,16,16],"rotation":180,"texture":4},"south":{"uv":[0,14,16,16],"rotation":180,"texture":4},"west":{"uv":[0,14,1,16],"rotation":180,"texture":4},"up":{"uv":[0,0,16,1],"rotation":180,"texture":4},"down":{"uv":[0,1,16,2],"rotation":180,"texture":4}},"uuid":"af3517df-2487-59e1-2d3b-ac71c65b47eb"},{"name":"cube","from":[0,2,15],"to":[2,14,16],"autouv":0,"color":3,"origin":[8,8,16],"faces":{"north":{"uv":[0,0,12,2],"rotation":270,"texture":4},"east":{"uv":[2,1,14,2],"rotation":90,"texture":4},"south":{"uv":[2,14,14,16],"rotation":90,"texture":4},"west":{"uv":[2,0,14,1],"rotation":90,"texture":4},"up":{"uv":[15,14,16,16],"rotation":90,"texture":4},"down":{"uv":[0,14,1,16],"rotation":90,"texture":4}},"uuid":"3236180d-0eb5-9846-f6df-71338b95b172"},{"name":"cube","from":[14,2,15],"to":[16,14,16],"autouv":0,"color":3,"origin":[8,8,16],"faces":{"north":{"uv":[0,0,12,2],"rotation":90,"texture":4},"east":{"uv":[2,0,14,1],"rotation":270,"texture":4},"south":{"uv":[2,14,14,16],"rotation":270,"texture":4},"west":{"uv":[2,1,14,2],"rotation":270,"texture":4},"up":{"uv":[0,14,1,16],"rotation":270,"texture":4},"down":{"uv":[15,14,16,16],"rotation":270,"texture":4}},"uuid":"ffb4c72b-0971-aa72-e873-312bea4c432f"},{"name":"spoke","from":[-8,6,-0.8999999999999995],"to":[3,10,3.1000000000000005],"autouv":0,"color":0,"rotation":[0,0,-45],"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"down":{"uv":[9,4.5,11,10],"rotation":270,"texture":0}},"uuid":"1dba4685-5282-a030-17a2-2f9374e8c6a1"},{"name":"spoke","from":[-8,6,-0.8999999999999995],"to":[3,10,3.1000000000000005],"autouv":0,"color":0,"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"down":{"uv":[9,4.5,11,10],"rotation":270,"texture":0}},"uuid":"b7cb6152-0be0-b1df-252e-0cab5138efdf"},{"name":"spoke","from":[13,6,-0.8999999999999995],"to":[24,10,3.1000000000000005],"autouv":0,"color":0,"rotation":[0,0,-45],"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"down":{"uv":[9,4.5,11,10],"rotation":90,"texture":0}},"uuid":"1b7cc7a0-6cc9-31a9-143f-94aee22489b4"},{"name":"spoke","from":[6,13,-0.8999999999999995],"to":[10,24,3.1000000000000005],"autouv":0,"color":0,"rotation":[0,0,-45],"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"texture":0},"east":{"uv":[9,4.5,11,10],"texture":0},"south":{"uv":[9,4.5,11,10],"texture":0},"west":{"uv":[9,4.5,11,10],"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":270,"texture":null}},"uuid":"e65ae52f-ddd5-8121-f730-88b35ea0fb5a"},{"name":"spoke","from":[13,6,-0.8999999999999995],"to":[24,10,3.1000000000000005],"autouv":0,"color":0,"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":270,"texture":0},"east":{"uv":[0,0,0,0],"rotation":180,"texture":null},"south":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[9,4.5,11,10],"rotation":90,"texture":0},"down":{"uv":[9,4.5,11,10],"rotation":90,"texture":0}},"uuid":"d7980b7f-ef13-e3e1-ab0d-537ffccff639"},{"name":"spoke","from":[6,-8,-0.8999999999999995],"to":[10,3,3.1000000000000005],"autouv":0,"color":0,"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"east":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"south":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"west":{"uv":[9,4.5,11,10],"rotation":180,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":270,"texture":null}},"uuid":"841862c5-48f4-a81f-17fb-497457cbe793"},{"name":"spoke","from":[6,13,-0.8999999999999995],"to":[10,24,3.1000000000000005],"autouv":0,"color":0,"origin":[8,8,1.1000000000000005],"faces":{"north":{"uv":[9,4.5,11,10],"texture":0},"east":{"uv":[9,4.5,11,10],"texture":0},"south":{"uv":[9,4.5,11,10],"texture":0},"west":{"uv":[9,4.5,11,10],"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":270,"texture":null}},"uuid":"29d0cc13-9e08-c9ca-7219-6f1c06816a16"}],"outliner":[{"name":"transmission","uuid":"29aace9e-9299-b75e-5ed5-db8534b5fcbd","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[-8,8,8],"children":["0af1e6ff-4a9e-283a-2942-84d3ec8b5836","206f3d87-1379-a949-ead0-500086d5bbe2","50a686cc-3204-b7bf-1566-d1ef05844c60","b575be0b-21f0-8150-9d24-be88ac50d1df","b0cd1b60-1f63-cbfa-eb62-4b456dfe2734","7883be7c-2f95-da04-1f6b-6eb29690cc04","af3517df-2487-59e1-2d3b-ac71c65b47eb","3236180d-0eb5-9846-f6df-71338b95b172","ffb4c72b-0971-aa72-e873-312bea4c432f"]},{"name":"wheel","uuid":"a3567eb7-af40-11f6-7e9b-dab5508c4ff5","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[24,8,8],"children":["2f1e2920-2ea2-8af4-3221-eb3bc7043169","6fce1c92-91b6-6314-3bcc-81af1da4fcde","b991a213-a5c0-1951-d6f3-229a0c14d9c5","a5520e2b-ba0a-b510-e5ea-f1a950a16250","50806591-41a8-f2bc-7a1d-e43b23b96408","63aed4d8-2ff2-0746-1545-6a76e0d97a9c","801950a3-dd0a-627f-7246-561bcad27e88","2f5b7526-cca3-7518-3496-d1b0bbe08e75","429976b8-16fe-3f5c-55db-9aab4c9fbebc","cb470bb9-82ea-3186-ac3f-e6cd886649bc","e65ae52f-ddd5-8121-f730-88b35ea0fb5a","b7cb6152-0be0-b1df-252e-0cab5138efdf","d7980b7f-ef13-e3e1-ab0d-537ffccff639","1dba4685-5282-a030-17a2-2f9374e8c6a1","841862c5-48f4-a81f-17fb-497457cbe793","1b7cc7a0-6cc9-31a9-143f-94aee22489b4","29d0cc13-9e08-c9ca-7219-6f1c06816a16"]}],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\steam_engine_wheel.png","name":"steam_engine_wheel.png","folder":"block","namespace":"create","id":"0","particle":true,"mode":"bitmap","saved":true,"uuid":"00cbd3bd-665f-44c1-56df-1cd7fc617269","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAHLUlEQVRYR61XaYwURRT++u7pmV3YXQhHCBgFPHZBEVDjTYxnFI9EQdQYSMCIJqIx3lExoEAQFY9EMEGDgcR4ofEOYoJRVBAWXG5UPDhnjzn6mL7KvOrt3p5xMIH4fkx11/H6q/e+91WN8N27d7NKxYemyaCWMQYyQRB4X9mqQJEk3hfP8YIAQcDgeQHvH9Cc5Wtr+2VRwbwF7+OGm8/j8xzH5+3nH2/EE4/chM/WfwuBAPyy5yBURUF30YLvezA0BZLMAKbAcjxkDQEslGHaLkIGyLIIWRCQy2XQ2VPA+eNOAfkwba+qf0C/Fixb9jkHUHE9lK0CimWg/fu9mDXrKmzq+BnCO69OY4WSw5EVTROHj5ZAQRg2OAdAB2MBJMlHGGo4lO+C74cY1NKIhpwOUQAKZQvDhw4A+SgUrap+Q83h7ZXrOICSaaNsmnDcCMDtd0zCjl87IgD7DxxFY8aApisoliwwuAgDCaIkQ1cl2I4LQZQgieARMXQNqiqhZLqwKw5GnzQY5COj6lX9zbn+CYAjnQW4XgWeLyYAdv++HcLix69giqLCsk2AqVAUhlwmg+5SEZpioOJZUKQMj5Dr+ZBEEX4YImQe5wmZrsogH2WTUtTXP2zgoCQFhzvLEBDwNHVs3IcZ06/Elh2bowgQmRRF4qTy/BCeH0CRI+LVe477qM139+DRhV9HSGrs5SdvZKtXfcNTUCyZYBDRVTB5BG6ddil+O7AzAtBTtDgJC2UbigS+SwgBJ16ahPQsiCIkUYAIIJvVse/PQ5i3dH1dAG8unMqWLf8CV103Aa7vgIUSuooRgFkzr8SWnVsgrFxyCwuomgQgCEMIgohy2QKPriCBsRAZTeT99OFCuYyK50ESFeR7OiFLxjEBLJ8/ha1Y8SUHYNomGFNwpKuA3Zv3Y/r0K9Cxtz0CQJ2DBzYj8Cm3DIViiaeEjD5KoaPfCqXI88AEBl3RkMsa2LrrDyxZvqFuBNIAyqaDnoIF23Oxb+tffQCWL7iJ9ZRK6J/LgRH/fSAI/LqpqA0/kTAGsOjRq7mCxWLz5AtfCWkAB/M9sB0PQRAkAH7atgnCcw9PYkYmm1SBpsowdLluFaTJR6CJsGQUAQKQFhtNLiWUDEi9ACiKiDBgiN+54tZj74n0EYC02DQ12Ljw7HO5Kz8I4XoMlu3CtCocAKV6z/7t/y+AtNgMbLIxdvQEzFv0PgfRmJUjMF4UjUQJT2S39dZQBNJiM7jFQevI8RzAKUNz8N0oXWRHixUOgCvhM/ePjchTCWHZPpr7q1X+qZ9kgSzs9UHzXlyxsyp9BCDfbUJTRVDb0s9G28izsPSVTzCwUUO37SKrKlAlgT8nSkgAzjptAg7nS+jYu40DoHdFjr5qOdGRSwSkM8H3Az6vHoC02hEHxrdOxEuvrEFTRoUbRKEnABSBRAmfuLeNjRjSCqfiYvf+7ejXoIDeOWtlAZbj8rM/bTTv5bd2VUXgmfsvZ2m1owgQgBeWRgDIZFXkqSAAiRLOmjqSGRk5KY1KJQC9x3asEqoHIK12Jw8LMaF1IhY8/0FCvPQmEiWcdNmk6u3VMMx13aRHVVXQe7pdt3YdjwRFIK12o0YI1am0PRw4UuS+JEmAIiuRFE++4XpmGAZc14PcewKGIYPvu9D1DK9XsffYtSwLqpaBKDCIogh6/+jDNQmAtNoRgLS5XghVEUFtbEfyDoQ5009LIlAv3HQWkIlS1NYqWTxOYyeyXnhsdhuLFYsYn+8qw/UD0L1M1+TkXtBVtDiAQS0NCIMQoiTih62b0JBVcNH46NJ5vOs3tG+EQFUwevgYzH9jE3fiOA7Pc601NjbyMTJd1/HgneN4DomwxPYlSz+KQNjRnHREGrLRjSptt027JLoTkg4MH9KKhxav/dek/+pY9OBl/EqVy8oYMeR0vPb6p3y6kdGrljXn+ipK13Qc6CzzcQLAlXDunDHs1JPOxAML18IPAsiSxNtjGY2TzZ9zCdp3buHCNXrEWDy7ONJ8MuIFAYk/3lX2Ueo2+8Z1CffdOzm6E1IKSDKffu3HZEIcaterToWqqDz8dITdM6UVv/69A9mMzCX3vXfWJ7sjR3Qypi1OA4EiQFOnXBzdCR+/p42dfcZEzJ27GpIuIXACiNSGDA1GX+5KVuSQaoGckYNYOcedXr2e+6H1qdynAaXX8yogEj3/0poEcCcGwLKrdxDlN4NRuR4+75rrL+QkoipIk5DG0nmn3aYtHrt68gV9JJzYdg4efmpVMu+QS/+K6tuopoD/f5w543K072rnHKhdn9750JbIl1OJqiMGROv5rZiqgDT7kadXJyE76PWD71cjjyPQgjwvtdl3XcvLMA0g/nBcipROTkpdqqqO9HoO4MxTx/cdv7YHh26mdAT3/vu1HB9BSOLUy/KUlrc0af/S/ONZn1xI4oCntZq0u9ZqtXzYEKNqyvGu/wfoI6jojiEvZgAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\axis.png","name":"axis.png","folder":"block","namespace":"create","id":"1","particle":false,"mode":"bitmap","saved":true,"uuid":"11fa98c7-e27a-e24b-c2d5-5354841d3e37","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAo0lEQVQ4T6WTIQ4EIQxFO4IRIECAgLshMBwKO+fCggWDZVOSSVbMJjulkpTH/+X3gB/lvZ/WWhhjQO8drus6nlofD7ExhDCFEOsOGcAYA+cc5JzfK4gxTnxdKQW1VhrgPE/QWu8pQAulFEgpvRvit4XWGg2AFjjnQAJgDqSUawYkC3eQUAEJgEEyxiwLpBxsA/AXMERYW0FCCyTAvUxkwL/r/AGRGnYRGJZooQAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\axis_top.png","name":"axis_top.png","folder":"block","namespace":"create","id":"2","particle":false,"mode":"bitmap","saved":true,"uuid":"279bd0dd-96c2-3792-e8c9-19b78bfa04b1","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA6UlEQVQ4T2NMDFP8z8DAwPDpyzcGPh4uOD1/1X1GkDghwAgywMLIguHtu/cMLEx/Gd58fMPw+u0HBpIMMDc0Y3j16hXDlx8fGGQklRjOXzlHmgGWZg4Md+5eANusp6bOcOnWTeINCPYS/29jZMjw+etPuHcv3rzGsHbbS+LDABaIIBoWkEQbgCuU09LS/gsICDD8+vWL4du3bwyzZs3C6iKcziwoKPgvJSXF8OPHD4YvX74wdHV1kWZAWVnZfx4eHobfv38zfP78mWHChAmkGRAbG/tfUlKSfC8QSoEweaKiCp9howYwMAAAZ+5uEWwI6EAAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\furnace_cylinder.png","name":"furnace_cylinder.png","folder":"block","namespace":"create","id":"1_1","particle":false,"mode":"bitmap","saved":true,"uuid":"22db08fc-cd87-a68b-b384-8c82a249326f","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAIWklEQVRYR51XWWxcZxX+7jaLM9PsceK4sTOeOLbH4yXjrUsqHkirSggKVIhXXngAVCXwgIQqtQkIXioeQEKAhBAPLEKiDzxEDY3yECcgaB3HdjyJZ8ZjO3ZiJ44ntme964/Oub7XYydUwC+N7v6f73zf2UY6/40Oga1lO+6ppslwbAG6VmTJe+wfvfd2P6DvPmuZpuM//vnvZnhj6Qff6hZnUyP8oFKz8aRQgmHZgBAIBVVoqoLMwh28embYf2dldROOEMgupKHrNr587nP+xrQH71WpoaEhxEcBCeWKzg7Rd3cyU/j1n3LbAFKJQfz0Z391P6zWnvH0ra/E0NM+gMnMp4g1J5FfmsLRg+24m5+GaTk499LLGB37JxzHYQPsGQA627qEJEn864wlMJmZwi9/n3UBvPudbtFyrBO/+e1V7NujolhzaSqWqz6Qr77dhkQ8hVJF53ubpRpURUJmPo2aYeNsagi30rfwxiuvsRHDsmBaAtWqyd9YlsNA0vkJdLV17wRw6UKPaG/pwU8++BDBYACKQvq7IA5ENKiqjNSrhxlAuWpACIFiWfcBEK0jvQOYyt7C2TNnfQCGacM0bFi2DccBg5qcGcdgcgBj07fgx4DHwC9+dZmNNoRDbMQwTJhVC4oi4Qtvx9AdP4NKzYRuWPwLBVSkZ6dY11RXP7KLEzjTMcJ6m5YJ07Jh24L3Iu9Ny8JUZgIdJ7uRWUhvA/AY+PEHH/qUU+QTkAMRlelLnW1Ed7yP6SZKHUcg0hDA5MyEDyD/YBI97cMcEwSADFu2gGnaW3HgID07iVTiOQzQ5n/58ygerpV8EPUx8KW3YkjE+1CumiwDreieICbu3fYBzC5NItk+xAYN0+RgJPCGaUGSZGiqhOnsJE61JHYyQBL0dw7i4sU/QgkpsGu2e3QEonvCbOzzbzQxgMJGFaQtlYZwKMCU0nudsSSWHk2j9/Qge10zDH6PZBCOQEBTEQyoGL87hvaWXRJQHahPQzf4VJ+JQsnC6282IdHWj+XVIqeWIgMBLYDpnAugvbULq08z6Dk1yDJVqrobAw5FBBAKBhAIqBib/hfHAKWvH4QUA4PdQ/j+e3/wjXqe042mgxEkh/cygIePN/kdCkxN1bYBtHShsJlDoi2FYtlAuVpj3cm4JEvQNA2qIuPTO59gKJnCWHr8+QA8w14xIjloffFrcQ7CdP42Du07hSfrWS5It++Os8eJtm48Lc76Xgc1maXwGJAkoFyxUSxZGO4dwFj61nYhIgb6OgagqW4dr1RN1AyLzymgaN1fSf9HBghAT3uSGaFAq9QMTj9iiY5+Saxj7pOpse1STAB87gEYdQ0jUNdc6D5d1z9//GS7bDeE3bjxGlh9Y6P7XnOjc+offi94XjfMPY7xZrquIxgM1uPj81KphHMDGzvu13QH8lYzrAdOLxFoqoahoOsAnbtsW5De/XaPSLZ3sWYUZEuP5pFZacWeaBSKosC2bf/oWVwvFPBa8jFIOlqaSt5z69kBirSvX15joiMVqo//fhPS++f7xOnWDkzfS+PQoRcx/2AOMyst2HfgAEzTZOPylmt0TevR8jIzMNg9gsz8IzigiudgfzSMhrCGp8UqxJaXVA8oJWiPcEhDZE+AjR/aF8WVG9ch/fC7fSLW3AnDpCZTxtxSHhPzjb5RT4rdOrgAhjGdW+Gqd3BvAzeymmHCsh3uG5osw7Qd2MJBJBxAQyjAZVxVJRw9uBeXr28BONWSRLVGZVbH3GIGq2aKvaf89bxeX19HNBrF8vIyRkdHuY2/0k8MPGEAVJppHqjoBl8bhoOArEBSJAgIBDUV4ZDKIEmaw/siuHx9FNKlC73cjglxtWYgvzjDAApra1BUFbblpqR3XqlWce3aNR9A7v4ap5wsSxzpOs0CDtEOyJAQDgbYIO8hywyA1vEjL+Djf9yEdPE8AUiiXDNhWTay83fxsNKD4uYmcrOzO5iPx+PY2NjYwUB+qcAzA9FOABzhUi5L5DkQ0jQGQLoT/VQbHEfC6ZMHceXGDUjvvdMrTrd2o1Q1QZ/cm0vjYbkHlUoFMzMzOwG0tcFjwCvhi482ePOqbrIEFGxknEqvN5YROxT5NsWD7XbJrvgRV4L33+kV1CKLFYPpuZefZgAkwcL9+88A2NjcZAYIwFByCIvLReimCcM2YQsBRZKgSC7NNNB6i4yTYS7PEpCIN+Kj0RuQLp3vE20nurBR1JnKmS0GisUicrncDgDNzc3sJcWAByCdf8zvEP30fUBTmHoKRAJDi407rvcEbm80jKYjEReAm4ZdKKxXuWXSoJlZOQEBBaZhcCYUSyVEIxHebDcDlAXENeW9otLgIbMklH40C3BwsvbuxEzyUD1obdrvAvjR9/pF7HgXnqxXOFUIwPhc4zNpWE9FvQTZhTWO+BCnmMQU8892WBqujZQRJA3Fh0xHCSePH9iS4EKfaG1qx3rRRECTkF2YwXi+0e8BVPfJ4O5C5AVhZm4VJOoLkSAXGN20YVlUB9x0pDGdlirL0BSSR/BQ23HyiJeGfaLlWBtyc1k0H48hu5BD+sGL3Au8svtZAOYfFNx0C6ocA1SSqaWTEUlx05A8J1koPSkQKWP6Tje5AEiCpsMn2Rh1p9nFHO4tb/cCajxXr159hgGqhC/3jaCwWeHZnwKM6KUZYrOo8yQkZAfRcBABVWVgVGl1i5qbhETsKP528wYVoqSgTkgakXarazWkl46xBNSOaT2PAQLwUu8wVgtlTisKOirnum6xccoGyphgUN0qPtux0RBSceLYfnxEhWi3tv/tNQGgOuDm+//ejgnclZs3/38A3/x6XHhTEOf6rr/2ux2RFdfX+smIrv8Nut9XyvRF8YQAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_casing.png","name":"brass_casing.png","folder":"block","namespace":"create","id":"5","particle":false,"mode":"bitmap","saved":true,"uuid":"03f2b83c-2540-b890-0fa9-1048ec09c3c0","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB0UlEQVQ4T2PMjVf/zwAFrKxMMCZe+vfvf3B5xrQIlf+Brg5wgW8//oLZ3779YODi4gDTIPDj1x+4GiEBHjB75+HDDIwZ0ar/XS2tGJq71oMFudiYwTQLKyPDn9//wTQyAImBQFqqB8OJS2cgBtgamzF0T9jMoCwFMfnPL4QTQfxff/8zsDEjDHr96SfCAFAYWOibMEydto1BlI8drBgfABn0/vsvhoBgG4b7j28yMIIMMNYyZJi3YBeDICcb2ICPX3/BvQF2EdTZ/NxsYJeAXBASYYtqwKzZOxlACkDg+fvvDJKCnCgOARkKkwexMQxAdwFI8ddfv8GGcLOxgtkgmmgvwAwAOR/EhrkApxewuQDZDzAXgMRAhqWlujOcvXYeEoiaSroMSxbvhccCLBC//foLThewtIDshaQEN4QBagpaDKtXHYTHAqFoBMVCfLwzw5U7lyEJSVtZh2H1aogB2BIOzEAWNiZwIoMZcP7GRVQDYEkXFu/4XJKd5cVw+OwpiAF6aroMrCysDKwsjAzffvxi+Pv3PwMzMyOcBucRTnawed++/wTT/LycDAdPnWQA50aIAha4hX///WdgZmJkANEgAMvm//7+h4uBxH/+/MsAAPTFDuFjKTIFAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_gearbox.png","name":"brass_gearbox.png","folder":"block","namespace":"create","id":"7","particle":false,"mode":"bitmap","saved":true,"uuid":"c8e5c536-6dcc-dc5c-680c-9d18e67c9b7d","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACLElEQVQ4T42TzWsTQRjGn9mPfGwToyVtSMEoVivGVtFoP8SCIFURAhY9FDykCA2i+Fd404sXPSiIoCdz8BAQKngoOZjWxqIWURAKKTRYRbGrm+xuNlveWXeTaBQfWN6Zd2Z+O+/HsGuZvTZ+SZYFd/hPa5oNb51lp3bbkxMnPIdWs/hY02pQlAC3pJpR9/Z0bw3x8WyhAHb54h57YuwYrt94wp2KT+RWkhnqps1tq8hHys6cQfHNogMYTw3j5q08+vscct1oXpHmhmXDJzogySeg8qXaBFAORg8ewe07TxGPBvlhrXsQXSEHRmKM4YeqQvm6zOffqgbOnT+OldUPYARIJQ/h/oNn6IkEsBFKolwuQ1VVfFpf5wdivb0Ih8NIJBIc8nlDx4Wp8XbA3XuziHT5IG4/ilelEtYqlbbY++JxDI+MQF95ge8/jT8BdINtQR9YYhT5fB6W5VTDlSiKSKfTsMvFv4fwv4COIbg3EHaMYb5Y7BjC4VQK1upLHkJ25jRK75acJO7bNYRHD5+jZ4ufV6BTEqPRKGKxGE8iVeHS9KkmYGBnErnHczwHJIL4AwEIgsA/KqNpmhDXFvk6hZDJnMTyx7dOI+3vH0Qu1wS0Nk5rIqmJSNRIBFh6/7od4Lau265tZfhtcvXKWRRKCw7gwMAQZEmGLDFoNQOWZUMUmWfprBL0O+FVdW4j4SDmFubBX6OzQfL+YTVsiAIDWZL7zBuW7fnIr+sWNgGA/hThYohg9gAAAABJRU5ErkJggg=="},{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\MC Block Textures\\furnace_front.png","name":"furnace_front.png","folder":"MC Block Textures","namespace":"minecraft","id":"6","particle":false,"mode":"bitmap","saved":true,"uuid":"3895c9c0-992f-69b9-72eb-ef854cb1a475","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABy0lEQVQ4T32Tz0sCURDHx5uw/gITY1MwBEPLW3jQlQhPCWmXJPwD/A/Cq3+Af4EHu0keJbCTRGgepJuldJAEbUlsQV0XvBkzy3uuIM7lvTdv5zMz33lrukml1mCwP0WBA6eTe/DMDP3szL4xIeBQFOkbu91O63w+pz1bd/nk8RhUVQWTFIutj30+ED0eEEURZFkGm80Go9GIILi3WCywXC5pxXsG/ur3gVfg9Xop+3O9Dj+ybOyK749EEa6SSVgsFgT5lWUdcBIMUiYM/uz1dgYz52koBDFJAmzhezjUW0AHEqvVKg92OBxboNlsxs+FQgHeOx0dwCowAjDLLmPVMQAXEStAAd1uN8WZzeadgNVqRf7JZEJivrVamxZQAyaOpqo0FawK94LVujVW9KNxEe/zeZhOp+ByufYKaLzEMT9WKroGd9ksv8PysdTBYLAF8/v91Bre4aooCjyUyzrgOp0GQRCoN1S31W6DUXUk4VSkaBTOIxHSStM0eKrVdMBlIkHZXhoNeG0297ZxEY8DvptAILABoAOngONhtu8dFItFetqYkB7SbSZDYymVSlTqPsPWcrkcVUAaIOAsHIaPbpfHGX9nI8z4a7OYfw4q+2WVMkrOAAAAAElFTkSuQmCC"},{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\MC Block Textures\\furnace_side.png","name":"furnace_side.png","folder":"MC Block Textures","namespace":"minecraft","id":"8","particle":false,"mode":"bitmap","saved":true,"uuid":"178a3ef8-0486-c590-9946-223b61cd6838","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABnElEQVQ4T4VTQUsCURAeb8K6Cm5CLAp2S0lCCC/6F9Iuec//EP4bu0l/QrrYQQskDLfOLktiK+i64M34ZpvXKzTnsm/mffPNzDf7Ylf1+pY0+/R9OrIsFYEvhrj4gomBwDRNMkyTcalUipbLJeVyOVqtVnwWkzv4YRBQEASkCOxslmzbZuzzcMiEAJ0WixwTMhCL/+44EcGxbXNFsUQioUhQFcTr9Zqvp9Opwj4NBr87SCaTit1zXUJXMg5IQfI2maj463hMsVq1uj3J5zlRdJDWJQlV0QkK4PzheYyHoGqEQqHAQc/zVFX4OomIzDjXjUREB9VajdklwXEcNSfEA/iiUlE6iIiP/X5EcFYqcYswzIwRYNBgXzJwGIVHuG23aT6fUyaTUZs4dIAW991uRHDZaJBhGJwTj8dps9nwd5f5vk+WZRG+d51ONMJNqxVt4ZvkUHXcz2Yzeuj1IoLrZpPV1g1kYRjuJEUc/wQTYITzcpnS6bRa2T4yJMlaF4sFvYxGP/+BvmMoLFv5O47+uNQWdNB/zxk4/anD/wJPDv7ZTcB8KgAAAABJRU5ErkJggg=="},{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\MC Block Textures\\furnace_top.png","name":"furnace_top.png","folder":"MC Block Textures","namespace":"minecraft","id":"9","particle":false,"mode":"bitmap","saved":true,"uuid":"467cb437-a46b-4f88-1e88-7b712905e30d","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABdElEQVQ4T5WTMU8CQRCFh1oOCizMBRKs9Ij8AmgMlRTERn4xFqAdhtMacrGQAg5rzLeXtxkIjdPAzr15++bNbO15Mjmai5/t1q5brZjhrCCvszA1CJIkiaCrJLFOpxPO+/3eis3GyBHNZtMajYat12v7LUsry9IiQdpuW5qmAVgURfW72dh9r2f1et0Oh0Mo9ORfeV4R3KSpZVkWQICJ98XCPCk5kaCEiAR3WRak6SYvHbCUeeLdbmcfy6XVhoPB8aHfDz2pV/4jHSKAvv/P1Sqc6R9DowfqNc/z0KdakXQVgiPw47soKgWD4TDKVJ94orhEitGvs1lF8DKd+lWIU9DIzhVRzLe3+bxq4XE0OiGQCpIUI1c7ICDFRCBgCt5p3XDugxaIQgyPU7jtdsPMkSXnvQe61fvDJWEP8OBpPDa5DDNjFKFXIWW+jZMW2D6CYr0BbR15duLiKvOYKAIgs2gFiXzzC8Z/MGDDHvznOaPCP3XOf4rhB+gyEDqQAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_block.png","name":"brass_block.png","folder":"block","namespace":"create","id":"10","particle":false,"mode":"bitmap","saved":true,"uuid":"a8ef7d1b-65c5-0db5-120d-dad3d9c754cf","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVQ4T1WTS2/TQBDH/961Y8dJ6iRqKaAKJApVgYqHeHwWPgEnLtw58a24cagQKg+1oaioFIHEQ6oqItEQ196X0ezETpjLrmZ3fzPzn9ng+dNbFRasKB2EYEcr4o3SDs4BSSyaPfnzM4OAAHc27yMK+XJeWL9qrf1aKAsZMLBQxq/DfhdpIvFie5sBD7Ye4vDbCWxVwdkKa6sZxqc5rOXkSmUgggBRKNHPEu9b7nf+B3w8OvYH9WPaT/ISkZDQjrNaGXSgjfPZZt0OXu68QvDsyVZ1d/Mefp2c+ktJHCIvlH9kTeUBUSRZk5ZEmkRcam6wfzRiwPUrtzH+k/sL1jqfemlZA7JeO/F+Mi6LRfn682AO+HtWeuc0V5Az1ajm2qQUDVxrLuPL9wMW8dL5G9CmQqFUE5lSJ1uEaG29BmRZN8HocDQHjCe5P6AupG2uk7oiA06XHtddGmYdiADY/bTLgOX+BuxM6VosWpWxcNZBSAFnnAd4oVsh0rg1BwyW1oGZNv2lBNpwqiRcrlSjQyyjRp+iNPhx/JkzGPTW4SoaYYFFwHSqAAFEkvWoxZ1MS6+NB1AbV4fX/IRR5Fq4k99TOEpZVsjStofQYNGMUBfXzvXx5sM7Blxc2UCatPxBqQ0oMj2OWyGcc0iSCEoxnMaahqmXxtjZf8+AyxduziIHPkL9B3pdnnvquzYaaTtGPpuXrNfG6723CB4/ulql7bARyjpWOoqEb2ltYjZc5Kvv0Nk/rK1Cjidok2MAAAAASUVORK5CYII="}],"display":{"thirdperson_righthand":{"rotation":[75,-67,0],"translation":[0,2.5,-2],"scale":[0.375,0.375,0.375]},"thirdperson_lefthand":{"rotation":[75,-67,0],"translation":[0,2.5,-2],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,-91,0],"scale":[0.4,0.4,0.4]},"firstperson_lefthand":{"rotation":[0,-91,0],"scale":[0.4,0.4,0.4]},"ground":{"rotation":[90,0,0],"translation":[0,2,0],"scale":[0.25,0.25,0.25]},"gui":{"rotation":[30,225,0],"translation":[-0.25,0.75,0],"scale":[0.35,0.35,0.35]},"fixed":{"scale":[0.45,0.45,0.45]}}} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/item.json b/src/main/resources/assets/create/models/block/flywheel/item.json deleted file mode 100644 index 8d77ecbc4..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/item.json +++ /dev/null @@ -1,381 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "5": "create:block/brass_casing", - "7": "create:block/brass_gearbox", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [29, 1, 11.5], - "to": [32, 3, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 17]}, - "faces": { - "north": {"uv": [6.5, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "east": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 9, 1.5, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [14.75, 7, 11.55], - "to": [30.75, 9, 13.45], - "rotation": {"angle": -22.5, "axis": "z", "origin": [15, 8, 21]}, - "faces": { - "north": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [22, 6, 6], - "to": [32, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-5, 8, 8]}, - "faces": { - "north": {"uv": [2, 7, 7, 9], "texture": "#0"}, - "east": {"uv": [0, 7, 2, 9], "texture": "#0"}, - "south": {"uv": [2, 7, 7, 9], "texture": "#0"}, - "west": {"uv": [0, 7, 2, 9], "texture": "#0"}, - "up": {"uv": [2, 7, 7, 9], "texture": "#0"}, - "down": {"uv": [2, 7, 7, 9], "texture": "#0"} - } - }, - { - "from": [7, 7, 7], - "to": [23, 9, 9], - "rotation": {"angle": -22.5, "axis": "z", "origin": [23, 8, 8]}, - "faces": { - "north": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [0, 0, 4], - "to": [16, 16, 15], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "east": {"uv": [0, 15.5, 8, 10], "rotation": 270, "texture": "#0"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "west": {"uv": [8, 10.5, 16, 16], "rotation": 90, "texture": "#0"}, - "up": {"uv": [8, 10.5, 16, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [8, 10.5, 16, 16], "texture": "#0"} - } - }, - { - "from": [0, 0, 15], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [24, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#5"}, - "east": {"uv": [0, 14, 1, 16], "texture": "#5"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#5"}, - "west": {"uv": [15, 14, 16, 16], "texture": "#5"}, - "up": {"uv": [0, 1, 16, 2], "texture": "#5"}, - "down": {"uv": [0, 0, 16, 1], "texture": "#5"} - } - }, - { - "from": [0, 14, 15], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 16]}, - "faces": { - "north": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#5"}, - "east": {"uv": [15, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "south": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#5"}, - "west": {"uv": [0, 14, 1, 16], "rotation": 180, "texture": "#5"}, - "up": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 1, 16, 2], "rotation": 180, "texture": "#5"} - } - }, - { - "from": [0, 2, 15], - "to": [2, 14, 16], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 16]}, - "faces": { - "north": {"uv": [0, 0, 12, 2], "rotation": 270, "texture": "#5"}, - "east": {"uv": [2, 1, 14, 2], "rotation": 90, "texture": "#5"}, - "south": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#5"}, - "west": {"uv": [2, 0, 14, 1], "rotation": 90, "texture": "#5"}, - "up": {"uv": [15, 14, 16, 16], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 14, 1, 16], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [14, 2, 15], - "to": [16, 14, 16], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 16]}, - "faces": { - "north": {"uv": [0, 0, 12, 2], "rotation": 90, "texture": "#5"}, - "east": {"uv": [2, 0, 14, 1], "rotation": 270, "texture": "#5"}, - "south": {"uv": [2, 14, 14, 16], "rotation": 270, "texture": "#5"}, - "west": {"uv": [2, 1, 14, 2], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 14, 1, 16], "rotation": 270, "texture": "#5"}, - "down": {"uv": [15, 14, 16, 16], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [3, 3, -3.9], - "to": [13, 13, 5.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [11, 5, 16, 10], "texture": "#0"}, - "east": {"uv": [11.5, 0, 16, 5], "texture": "#0"}, - "south": {"uv": [11, 5, 16, 10], "texture": "#0"}, - "west": {"uv": [11.5, 0, 16, 5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [11.5, 0, 16, 5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [11.5, 0, 16, 5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [-0.5, 23.5, -1.9], - "to": [16.5, 28.5, 4.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"}, - "east": {"uv": [8.5, 0, 11.5, 2], "texture": "#0"}, - "south": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"}, - "west": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "texture": "#0"} - } - }, - { - "from": [-0.5, -12.5, -1.9], - "to": [16.5, -7.5, 4.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [8.5, 0, 11.5, 2], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [23.5, -0.5, -1.9], - "to": [28.5, 16.5, 4.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"}, - "east": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}, - "up": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [8.5, 0, 11.5, 2], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [-12.5, -0.5, -1.9], - "to": [-7.5, 16.5, 4.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "south": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "up": {"uv": [8.5, 0, 11.5, 2], "rotation": 270, "texture": "#0"}, - "down": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [-0.5, 23.5, -1.85], - "to": [16.5, 28.5, 4.05], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"}, - "east": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"}, - "south": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"}, - "west": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "texture": "#0"} - } - }, - { - "from": [-0.5, -12.5, -1.85], - "to": [16.5, -7.5, 4.05], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [-0.5, -12.5, -1.85], - "to": [16.5, -7.5, 4.05], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [-12.5, -0.5, -1.85], - "to": [-7.5, 16.5, 4.05], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "south": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "up": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 270, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [6, -8, -0.9], - "to": [10, 3, 3.1], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "east": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [6, 13, -0.9], - "to": [10, 24, 3.1], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "east": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [-8, 6, -0.9], - "to": [3, 10, 3.1], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "up": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "down": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [13, 6, -0.9], - "to": [24, 10, 3.1], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "up": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "down": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [-8, 6, -0.9], - "to": [3, 10, 3.1], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "up": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "down": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [6, -8, -0.9], - "to": [10, 3, 3.1], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "east": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [13, 6, -0.9], - "to": [24, 10, 3.1], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "up": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "down": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [6, 13, -0.9], - "to": [10, 24, 3.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 1.1]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "east": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -67, 0], - "translation": [0, 2.5, -2], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -67, 0], - "translation": [0, 2.5, -2], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -91, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -91, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "rotation": [90, 0, 0], - "translation": [0, 2, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [-0.25, 0.75, 0], - "scale": [0.35, 0.35, 0.35] - }, - "fixed": { - "scale": [0.45, 0.45, 0.45] - } - }, - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8] - }, - { - "name": "wheel", - "origin": [24, 8, 8], - "children": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/lower_rotating_connector.json b/src/main/resources/assets/create/models/block/flywheel/lower_rotating_connector.json deleted file mode 100644 index 835b0cb69..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/lower_rotating_connector.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [2.55, 7, 6.75], - "to": [4.45, 9, 22.75], - "rotation": {"angle": 22.5, "axis": "x", "origin": [-5, 8, 7]}, - "faces": { - "east": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 9, 8, 10], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 9, 8, 10], "rotation": 90, "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/lower_sliding_connector.json b/src/main/resources/assets/create/models/block/flywheel/lower_sliding_connector.json deleted file mode 100644 index 16194017a..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/lower_sliding_connector.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [2.5, 1, 21], - "to": [4.5, 3, 29], - "rotation": {"angle": 0, "axis": "y", "origin": [-1, 8, 8]}, - "faces": { - "north": {"uv": [0, 9, 1, 10], "rotation": 270, "texture": "#0"}, - "east": {"uv": [0, 9, 4, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 9, 1, 10], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 9, 4, 10], "texture": "#0"}, - "up": {"uv": [0, 9, 4, 10], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 9, 4, 10], "rotation": 270, "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/upper_rotating_connector.json b/src/main/resources/assets/create/models/block/flywheel/upper_rotating_connector.json deleted file mode 100644 index a6e4b99a0..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/upper_rotating_connector.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [7, 7, 7], - "to": [9, 9, 23], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 8, 23]}, - "faces": { - "east": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 9, 8, 10], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 9, 8, 10], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 9, 8, 10], "rotation": 90, "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/upper_sliding_connector.json b/src/main/resources/assets/create/models/block/flywheel/upper_sliding_connector.json deleted file mode 100644 index 177150784..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/upper_sliding_connector.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [6, 6, 22], - "to": [10, 10, 32], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -5]}, - "faces": { - "north": {"uv": [0, 7, 2, 9], "texture": "#0"}, - "east": {"uv": [2, 7, 7, 9], "texture": "#0"}, - "south": {"uv": [0, 7, 2, 9], "texture": "#0"}, - "west": {"uv": [2, 7, 7, 9], "texture": "#0"}, - "up": {"uv": [2, 7, 7, 9], "rotation": 90, "texture": "#0"}, - "down": {"uv": [2, 7, 7, 9], "rotation": 270, "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/flywheel/wheel.json b/src/main/resources/assets/create/models/block/flywheel/wheel.json deleted file mode 100644 index 997dd77e1..000000000 --- a/src/main/resources/assets/create/models/block/flywheel/wheel.json +++ /dev/null @@ -1,221 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/steam_engine_wheel", - "particle": "create:block/steam_engine_wheel" - }, - "elements": [ - { - "from": [11.9, 23.5, -0.5], - "to": [17.9, 28.5, 16.5], - "rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"}, - "east": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"}, - "south": {"uv": [8.5, 0, 11.5, 2], "texture": "#0"}, - "west": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [11.9, -12.5, -0.5], - "to": [17.9, -7.5, 16.5], - "rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [8.5, 0, 11.5, 2], "rotation": 180, "texture": "#0"}, - "east": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [11.9, -0.5, 23.5], - "to": [17.9, 16.5, 28.5], - "rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"}, - "south": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"}, - "up": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [8.5, 0, 11.5, 2], "texture": "#0"} - } - }, - { - "from": [11.9, -0.5, -12.5], - "to": [17.9, 16.5, -7.5], - "rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "east": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"}, - "up": {"uv": [8.5, 0, 11.5, 2], "texture": "#0"}, - "down": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [11.95, 23.5, -0.5], - "to": [17.85, 28.5, 16.5], - "rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"}, - "east": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"}, - "south": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"}, - "west": {"uv": [0, 0, 8.5, 2.5], "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"} - } - }, - { - "from": [11.95, -12.5, -0.5], - "to": [17.85, -7.5, 16.5], - "rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [11.95, -12.5, -0.5], - "to": [17.85, -7.5, 16.5], - "rotation": {"angle": -45, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 0, 8.5, 2.5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [11.95, -0.5, -12.5], - "to": [17.85, 16.5, -7.5], - "rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "east": {"uv": [0, 0, 8.5, 2.5], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 2.5, 8.5, 5.5], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 0, 8.5, 2.5], "rotation": 270, "texture": "#0"}, - "up": {"uv": [8.5, 0, 11.5, 2.5], "texture": "#0"}, - "down": {"uv": [8.5, 0, 11.5, 2.5], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [12.9, -8, 6], - "to": [16.9, 3, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "east": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [12.9, 13, 6], - "to": [16.9, 24, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "east": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [12.9, 6, -8], - "to": [16.9, 10, 3], - "rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "east": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "up": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "down": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [12.9, 6, 13], - "to": [16.9, 10, 24], - "rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "east": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "up": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [9, 4.5, 11, 10], "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [12.9, 6, -8], - "to": [16.9, 10, 3], - "rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "east": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "up": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "down": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [12.9, -8, 6], - "to": [16.9, 3, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "east": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [12.9, 6, 13], - "to": [16.9, 10, 24], - "rotation": {"angle": 45, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "east": {"uv": [9, 4.5, 11, 10], "rotation": 270, "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "rotation": 90, "texture": "#0"}, - "up": {"uv": [9, 4.5, 11, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [9, 4.5, 11, 10], "texture": "#0"} - } - }, - { - "name": "spoke", - "from": [12.9, 13, 6], - "to": [16.9, 24, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [14.9, 8, 8]}, - "faces": { - "north": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "east": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "south": {"uv": [9, 4.5, 11, 10], "texture": "#0"}, - "west": {"uv": [9, 4.5, 11, 10], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "transmission", - "origin": [-8, 8, 8], - "children": [] - }, - { - "name": "wheel", - "origin": [24, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json deleted file mode 100644 index 23c63640f..000000000 --- a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json +++ /dev/null @@ -1,150 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "2_2": "create:block/brass_funnel_pull" - }, - "elements": [ - { - "name": "LeftWall", - "from": [14, 1, 6], - "to": [16.05, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2_2"}, - "up": {"uv": [0, 0, 2, 6], "rotation": 180, "texture": "#2_2"}, - "down": {"uv": [14, 0, 16, 6], "texture": "#2_2"} - } - }, - { - "name": "LeftWall", - "from": [-0.05, 1, 6], - "to": [2, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2_2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 6, 16, 0], "rotation": 90, "texture": "#2_2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2_2"}, - "down": {"uv": [0, 0, 2, 6], "texture": "#2_2"} - } - }, - { - "name": "Top", - "from": [2, 11, 6], - "to": [14, 17, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 15, 12]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, - "down": {"uv": [9, 13, 15, 16], "rotation": 180, "texture": "#7"} - } - }, - { - "name": "Top", - "from": [0.05, -1, 12], - "to": [15.95, 1, 15.95], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 17]}, - "faces": { - "north": {"uv": [0, 11.5, 8, 12.5], "rotation": 180, "texture": "#7"}, - "east": {"uv": [16, 11, 15, 13], "rotation": 270, "texture": "#7"}, - "south": {"uv": [0, 13.5, 8, 14.5], "texture": "#7"}, - "west": {"uv": [9, 11, 8, 13], "rotation": 90, "texture": "#7"}, - "up": {"uv": [8, 11, 16, 13], "texture": "#7"}, - "down": {"uv": [8, 11, 16, 13], "rotation": 180, "texture": "#7"} - } - }, - { - "name": "Top", - "from": [0, 1, 14], - "to": [16, 1.9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13.9, 17]}, - "faces": { - "north": {"uv": [0, 7, 0.5, 15], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 13, 6, 13.5], "texture": "#7"}, - "south": {"uv": [0, 13, 8, 13.5], "texture": "#7"}, - "west": {"uv": [8, 13, 7, 13.5], "texture": "#7"}, - "up": {"uv": [8, 11, 16, 13], "texture": "#7"}, - "down": {"uv": [8, 11, 16, 13], "rotation": 180, "texture": "#7"} - } - }, - { - "from": [1, 8, 11], - "to": [15, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 21]}, - "faces": { - "east": {"uv": [1, 6.5, 4.5, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 11.5, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 4.5, 7.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6.5, 0, 8, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Back", - "from": [2.1, 1.9, 14], - "to": [13.9, 13.95, 18.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, - "faces": { - "north": {"uv": [0, 7.5, 6, 13.5], "texture": "#3"}, - "east": {"uv": [0, 0, 12, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [6, 8, 12, 14], "texture": "#3"}, - "west": {"uv": [0, 0, 12, 4], "rotation": 270, "texture": "#6"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Back", - "from": [2.1, 2.9, 11.9], - "to": [13.9, 13.95, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 22]}, - "faces": { - "east": {"uv": [2.5, 0.5, 8, 1.5], "rotation": 270, "texture": "#5"}, - "west": {"uv": [2.5, 1.5, 8, 0.5], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 1.5, 6, 0.5], "texture": "#6"} - } - }, - { - "name": "RearBackPlate", - "from": [2, 9.9, 10], - "to": [14, 11.9, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 6.9, 8]}, - "faces": { - "down": {"uv": [0, 11.5, 6, 14], "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "block_retracted", - "origin": [8, 8, 8], - "children": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [6, 7, 8] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical.json b/src/main/resources/assets/create/models/block/funnel/block_vertical.json deleted file mode 100644 index e72ebfa9d..000000000 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "7": "create:block/brass_funnel_plating", - "8": "create:block/brass_storage_block", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_closed", - "2_2": "create:block/brass_funnel_pull" - }, - "elements": [ - { - "name": "LeftWall", - "from": [0, 4, 0], - "to": [2, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [14, 0, 16, 6], "texture": "#2_2"}, - "south": {"uv": [0, 0, 2, 6], "texture": "#2_2"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#2_2"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#8"}, - "down": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "LeftWall", - "from": [14, 4, 0], - "to": [16, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [2, 0, 0, 6], "rotation": 180, "texture": "#2_2"}, - "east": {"uv": [0, 6, 16, 0], "rotation": 180, "texture": "#2_2"}, - "south": {"uv": [14, 0, 16, 6], "texture": "#2_2"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Top", - "from": [2, 4, 0], - "to": [14, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#8"}, - "down": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Top", - "from": [2, 4, 14], - "to": [14, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 18]}, - "faces": { - "south": {"uv": [14, 0, 2, 6], "texture": "#2_2"}, - "up": {"uv": [2, 16, 14, 14], "rotation": 180, "texture": "#8"}, - "down": {"uv": [14, 14, 16, 2], "rotation": 270, "texture": "#8"} - } - }, - { - "from": [1, 1, 1], - "to": [15, 4, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -6, 10]}, - "faces": { - "north": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "east": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "south": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "west": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#8"} - } - }, - { - "from": [1, 5, 2], - "to": [2, 10, 14], - "rotation": {"angle": 22.5, "axis": "z", "origin": [2, 10, 8]}, - "faces": { - "east": {"uv": [2, 2, 14, 7], "texture": "#9"} - } - }, - { - "from": [14, 5, 2], - "to": [15, 10, 14], - "rotation": {"angle": -22.5, "axis": "z", "origin": [14, 10, 8]}, - "faces": { - "west": {"uv": [2, 2, 14, 7], "texture": "#9"} - } - }, - { - "from": [2, 5, 14], - "to": [14, 10, 15], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 14]}, - "faces": { - "north": {"uv": [2, 2, 14, 7], "texture": "#9"} - } - }, - { - "from": [2, 5, 1], - "to": [14, 10, 2], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 2]}, - "faces": { - "south": {"uv": [2, 2, 14, 7], "texture": "#9"} - } - }, - { - "from": [3, 5, 3], - "to": [13, 6, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 13, 11]}, - "faces": { - "up": {"uv": [3, 3, 13, 13], "texture": "#10"} - } - }, - { - "name": "Back", - "from": [1.925, -1.95, 1.925], - "to": [14.075, 2, 14.075], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0.025, 8]}, - "faces": { - "north": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "east": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "south": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "west": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "down": {"uv": [6, 8, 12, 14], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "Back", - "from": [2.1, 2, 2.05], - "to": [13.9, 4.1, 13.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -6, 24.1]}, - "faces": { - "east": {"uv": [2.5, 1.5, 8, 0.5], "texture": "#5"}, - "west": {"uv": [2.5, 0.5, 8, 1.5], "rotation": 180, "texture": "#5"} - } - }, - { - "from": [5.05, -0.95, 0.05], - "to": [10.95, 4, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, - "faces": { - "north": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#7"}, - "east": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#7"}, - "west": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#7"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "texture": "#7"} - } - }, - { - "from": [5.05, -0.95, 14], - "to": [10.95, 4, 15.95], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, - "faces": { - "east": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#7"}, - "south": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#7"}, - "west": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#7"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "rotation": 180, "texture": "#7"} - } - }, - { - "from": [14, -0.95, 5.05], - "to": [15.95, 4, 10.95], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, - "faces": { - "north": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#7"}, - "east": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#7"}, - "south": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#7"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "rotation": 270, "texture": "#7"} - } - }, - { - "from": [0.05, -0.95, 5.05], - "to": [2, 4, 10.95], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, - "faces": { - "north": {"uv": [4.5, 0.5, 5.5, 3], "texture": "#7"}, - "south": {"uv": [2.5, 0.5, 3.5, 3], "texture": "#7"}, - "west": {"uv": [2.5, 0.5, 5.5, 3], "texture": "#7"}, - "down": {"uv": [2.5, 11.5, 5.5, 12.5], "rotation": 90, "texture": "#7"} - } - } - ], - "groups": [ - { - "name": "block_retracted", - "origin": [8, 8, 8], - "children": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [10, 11] - } - ] - } - ] - }, - { - "name": "Item Filter", - "origin": [8, 0, 8], - "children": [12, 13, 14, 15] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json deleted file mode 100644 index 6d16d099c..000000000 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "8": "create:block/brass_storage_block", - "9": "create:block/brass_funnel_slope", - "10": "create:block/funnel_closed", - "2_2": "create:block/brass_funnel_pull" - }, - "elements": [ - { - "name": "LeftWall", - "from": [0, 4, 0], - "to": [2, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [14, 0, 16, 6], "texture": "#2_2"}, - "south": {"uv": [0, 0, 2, 6], "texture": "#2_2"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#2_2"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#8"}, - "down": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "LeftWall", - "from": [14, 4, 0], - "to": [16, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [2, 0, 0, 6], "rotation": 180, "texture": "#2_2"}, - "east": {"uv": [0, 6, 16, 0], "rotation": 180, "texture": "#2_2"}, - "south": {"uv": [14, 0, 16, 6], "texture": "#2_2"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Top", - "from": [2, 4, 0], - "to": [14, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 2]}, - "faces": { - "north": {"uv": [2, 0, 14, 6], "texture": "#2_2"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#8"}, - "down": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Top", - "from": [2, 4, 14], - "to": [14, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 18]}, - "faces": { - "south": {"uv": [14, 0, 2, 6], "texture": "#2_2"}, - "up": {"uv": [2, 16, 14, 14], "rotation": 180, "texture": "#8"}, - "down": {"uv": [14, 14, 16, 2], "rotation": 270, "texture": "#8"} - } - }, - { - "from": [1, 1, 1], - "to": [15, 4, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -6, 10]}, - "faces": { - "north": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "east": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "south": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "west": {"uv": [1, 0, 15, 3], "texture": "#5"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#8"} - } - }, - { - "from": [1, 5, 2], - "to": [2, 10, 14], - "rotation": {"angle": 22.5, "axis": "z", "origin": [2, 10, 8]}, - "faces": { - "east": {"uv": [2, 2, 14, 7], "texture": "#9"} - } - }, - { - "from": [14, 5, 2], - "to": [15, 10, 14], - "rotation": {"angle": -22.5, "axis": "z", "origin": [14, 10, 8]}, - "faces": { - "west": {"uv": [2, 2, 14, 7], "texture": "#9"} - } - }, - { - "from": [2, 5, 14], - "to": [14, 10, 15], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 14]}, - "faces": { - "north": {"uv": [2, 2, 14, 7], "texture": "#9"} - } - }, - { - "from": [2, 5, 1], - "to": [14, 10, 2], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 2]}, - "faces": { - "south": {"uv": [2, 2, 14, 7], "texture": "#9"} - } - }, - { - "from": [3, 5, 3], - "to": [13, 6, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 13, 11]}, - "faces": { - "up": {"uv": [3, 3, 13, 13], "texture": "#10"} - } - }, - { - "name": "Back", - "from": [1.925, -1.95, 1.925], - "to": [14.075, 2, 14.075], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 0.025, 8]}, - "faces": { - "north": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "east": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "south": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "west": {"uv": [2, 12, 14, 16], "texture": "#9"}, - "down": {"uv": [6, 8, 12, 14], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "Back", - "from": [2.1, 2, 2.05], - "to": [13.9, 4.1, 13.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -6, 24.1]}, - "faces": { - "east": {"uv": [2.5, 1.5, 8, 0.5], "texture": "#5"}, - "west": {"uv": [2.5, 0.5, 8, 1.5], "rotation": 180, "texture": "#5"} - } - } - ], - "groups": [ - { - "name": "block_retracted", - "origin": [8, 8, 8], - "children": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [10, 11] - } - ] - } - ] - }, - { - "name": "Item Filter", - "origin": [8, 0, 8], - "children": [] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/flap.json b/src/main/resources/assets/create/models/block/funnel/flap.json deleted file mode 100644 index 94b2a6bb9..000000000 --- a/src/main/resources/assets/create/models/block/funnel/flap.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "4": "create:block/brass_funnel_back" - }, - "elements": [ - { - "name": "F4", - "from": [11, 0, 9], - "to": [14, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, - "faces": { - "north": {"uv": [14, 8.5, 12.5, 13.5], "texture": "#4"}, - "east": {"uv": [13.5, 8.5, 14, 13.5], "texture": "#4"}, - "south": {"uv": [12.5, 8.5, 14, 13.5], "texture": "#4"}, - "west": {"uv": [12.5, 8.5, 13, 13.5], "texture": "#4"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#4"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/funnel/item.json b/src/main/resources/assets/create/models/block/funnel/item.json deleted file mode 100644 index 8a9560327..000000000 --- a/src/main/resources/assets/create/models/block/funnel/item.json +++ /dev/null @@ -1,305 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "texture_size": [32, 32], - "textures": { - "2": "create:block/brass_funnel_neutral", - "3": "create:block/brass_funnel_back", - "5": "create:block/brass_funnel_tall", - "6": "create:block/brass_funnel", - "7": "create:block/brass_funnel_plating", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "LeftWall", - "from": [14, -3, 8], - "to": [16, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 8, 1, 9.5], "texture": "#7"}, - "east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 8, 16, 9.5], "texture": "#7"}, - "west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}, - "down": {"uv": [14, 10, 16, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [0, -3, 8], - "to": [2, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7, 8, 8, 9.5], "texture": "#7"}, - "east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 7.5, 9, 9], "texture": "#7"}, - "west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 10, 2, 16], "texture": "#particle"} - } - }, - { - "name": "LeftWall", - "from": [14, 0, 8], - "to": [16, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 0, 1, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [15, 0, 16, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [14, 0, 16, 6], "texture": "#2"} - } - }, - { - "name": "LeftWall", - "from": [0, 0, 8], - "to": [2, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7, 0, 8, 8], "texture": "#7"}, - "east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"}, - "south": {"uv": [8, 0, 9, 8], "texture": "#7"}, - "west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"}, - "up": {"uv": [16, 0, 14, 6], "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, 10, 8], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 8]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#7"}, - "south": {"uv": [9, 0, 15, 3], "texture": "#7"}, - "up": {"uv": [2, 0, 14, 6], "texture": "#2"}, - "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "Top", - "from": [2, -2, 12], - "to": [14, 10, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [6, -14, 8]}, - "faces": { - "north": {"uv": [0, 8, 6, 14], "texture": "#3"}, - "south": {"uv": [9, 3, 15, 9.5], "texture": "#7"} - } - }, - { - "name": "LeftBottom", - "from": [15, -5, 8], - "to": [16, -3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 0.5, 10.5], "texture": "#7"}, - "east": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "west": {"uv": [5, 15, 8, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} - } - }, - { - "name": "LeftBottom", - "from": [0, -5, 8], - "to": [1, -3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7.5, 9.5, 8, 10.5], "texture": "#7"}, - "east": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "west": {"uv": [8, 15, 5, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 1, 6], "texture": "#particle"} - } - }, - { - "name": "Back", - "from": [2.1, -2.1, 14], - "to": [13.9, 13.95, 18.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]}, - "faces": { - "east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [9, 1, 15, 9], "texture": "#7"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 0, 12, 4], "texture": "#6"}, - "down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "RearBackPlate", - "from": [1, -5, 10], - "to": [15, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]}, - "faces": { - "north": {"uv": [1, 13, 15, 16], "texture": "#particle"}, - "south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"}, - "up": {"uv": [1, 10, 15, 16], "texture": "#particle"}, - "down": {"uv": [8.5, 13, 15.5, 16], "texture": "#7"} - } - }, - { - "name": "BackPlateLeft", - "from": [15, -5, 14], - "to": [16, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [0, 14.5, 1, 16], "texture": "#7"}, - "south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"}, - "west": {"uv": [7, 14.5, 8, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} - } - }, - { - "name": "BackPlateLeft", - "from": [0, -5, 14], - "to": [1, -2, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, - "faces": { - "east": {"uv": [8, 14.5, 7, 16], "texture": "#7"}, - "south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"}, - "west": {"uv": [1, 14.5, 0, 16], "texture": "#7"}, - "up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 1, 2], "texture": "#particle"} - } - }, - { - "from": [1, -2, 14], - "to": [15, 15, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]}, - "faces": { - "east": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"}, - "south": {"uv": [8, 0, 16, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 0, 6.5, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "F4", - "from": [11, -3, 9], - "to": [14, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, - "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#3"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#3"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#3"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#3"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#3"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#3"} - } - }, - { - "name": "F5", - "from": [8, -3, 9], - "to": [11, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-27.5, -7.5, 9]}, - "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#3"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#3"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#3"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#3"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#3"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#3"} - } - }, - { - "name": "F6", - "from": [5, -3, 9], - "to": [8, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-30.5, -7.5, 9]}, - "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#3"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#3"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#3"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#3"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#3"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#3"} - } - }, - { - "name": "F7", - "from": [2, -3, 9], - "to": [5, 10, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [-33.5, -7.5, 9]}, - "faces": { - "north": {"uv": [14, 8.5, 12.5, 15], "texture": "#3"}, - "east": {"uv": [13.5, 8.5, 14, 15], "texture": "#3"}, - "south": {"uv": [12.5, 8.5, 14, 15], "texture": "#3"}, - "west": {"uv": [12.5, 8.5, 13, 15], "texture": "#3"}, - "up": {"uv": [12.5, 8.5, 14, 9], "texture": "#3"}, - "down": {"uv": [12.5, 14.5, 14, 15], "texture": "#3"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, -1.5], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [1, 1, 0], - "scale": [0.5, 0.5, 0.5] - }, - "head": { - "translation": [0, -14, 3.25] - }, - "fixed": { - "translation": [0, 1.5, -3], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "BeltFunnel", - "origin": [9, -4, 8], - "children": [ - { - "name": "FrontSection", - "origin": [9, -4, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7] - }, - { - "name": "Base", - "origin": [9, -4, 8], - "children": [8, 9, 10, 11] - } - ] - }, 12, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [13] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [14] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [15] - }, - { - "name": "flap", - "origin": [8, 8, 8], - "children": [16] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/furnace_engine/block.json b/src/main/resources/assets/create/models/block/furnace_engine/block.json deleted file mode 100644 index dde47cc73..000000000 --- a/src/main/resources/assets/create/models/block/furnace_engine/block.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "5": "create:block/brass_casing", - "1_1": "create:block/furnace_cylinder", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "Ring", - "from": [0, 0, 2], - "to": [16, 16, 7], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#5"}, - "east": {"uv": [0, 7, 2.5, 15], "texture": "#1_1"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#5"}, - "west": {"uv": [0, 7, 2.5, 15], "texture": "#1_1"}, - "up": {"uv": [0, 7, 2.5, 15], "rotation": 90, "texture": "#1_1"}, - "down": {"uv": [0, 7, 2.5, 15], "rotation": 270, "texture": "#1_1"} - } - }, - { - "name": "Cylinder", - "from": [1, 1, 0], - "to": [15, 15, 16], - "faces": { - "north": {"uv": [8, 0, 15, 7], "texture": "#1_1"}, - "east": {"uv": [0, 0, 8, 7], "rotation": 180, "texture": "#1_1"}, - "south": {"uv": [8, 0, 15, 7], "texture": "#1_1"}, - "west": {"uv": [0, 0, 8, 7], "texture": "#1_1"}, - "up": {"uv": [0, 0, 8, 7], "rotation": 90, "texture": "#1_1"}, - "down": {"uv": [0, 0, 8, 7], "rotation": 270, "texture": "#1_1"} - } - }, - { - "from": [1.5, 0, 7], - "to": [5.5, 4, 16], - "faces": { - "east": {"uv": [2.5, 7, 7, 9], "rotation": 180, "texture": "#1_1"}, - "west": {"uv": [2.5, 7, 7, 9], "rotation": 180, "texture": "#1_1"}, - "up": {"uv": [2.5, 7, 7, 9], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [2.5, 7, 7, 9], "rotation": 90, "texture": "#1_1"} - } - }, - { - "from": [10.5, 0, 7], - "to": [14.5, 4, 16], - "faces": { - "east": {"uv": [7, 7, 2.5, 9], "rotation": 180, "texture": "#1_1"}, - "west": {"uv": [7, 7, 2.5, 9], "rotation": 180, "texture": "#1_1"}, - "up": {"uv": [2.5, 9, 7, 7], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [2.5, 9, 7, 7], "rotation": 90, "texture": "#1_1"} - } - }, - { - "name": "LowerPort", - "from": [1.5, 0.1, -0.9], - "to": [5.5, 4.1, 2.1], - "faces": { - "north": {"uv": [2.5, 13, 4.5, 15], "texture": "#1_1"}, - "east": {"uv": [3, 13, 4.5, 15], "texture": "#1_1"}, - "south": {"uv": [10, 0, 14, 4], "texture": "#1_1"}, - "west": {"uv": [3, 13, 4.5, 15], "rotation": 180, "texture": "#1_1"}, - "up": {"uv": [3, 13, 4.5, 15], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [3, 13, 4.5, 15], "rotation": 90, "texture": "#1_1"} - } - }, - { - "name": "LowerPort", - "from": [10.5, 0.1, -0.9], - "to": [14.5, 4.1, 2.1], - "faces": { - "north": {"uv": [4.5, 13, 2.5, 15], "texture": "#1_1"}, - "east": {"uv": [4.5, 13, 3, 15], "rotation": 180, "texture": "#1_1"}, - "south": {"uv": [14, 0, 10, 4], "texture": "#1_1"}, - "west": {"uv": [4.5, 13, 3, 15], "texture": "#1_1"}, - "up": {"uv": [3, 15, 4.5, 13], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [3, 15, 4.5, 13], "rotation": 90, "texture": "#1_1"} - } - }, - { - "name": "Port", - "from": [4, 4, -1.8], - "to": [12, 12, 0.2], - "faces": { - "north": {"uv": [2.5, 9, 6.5, 13], "texture": "#1_1"}, - "east": {"uv": [5.5, 9, 6.5, 13], "texture": "#1_1"}, - "west": {"uv": [5.5, 9, 6.5, 13], "rotation": 180, "texture": "#1_1"}, - "up": {"uv": [5.5, 9, 6.5, 13], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [5.5, 9, 6.5, 13], "rotation": 90, "texture": "#1_1"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 135, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 135, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "SteamCylinder", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/furnace_engine/frame.json b/src/main/resources/assets/create/models/block/furnace_engine/frame.json deleted file mode 100644 index 2966a5a63..000000000 --- a/src/main/resources/assets/create/models/block/furnace_engine/frame.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "particle": "create:block/steam_engine_wheel", - "1_1": "create:block/furnace_cylinder" - }, - "elements": [ - { - "name": "Cylinder", - "from": [1.1, 1.1, -1.9], - "to": [14.9, 14.9, 0.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [8, 0, 15, 7], "texture": "#1_1"}, - "east": {"uv": [14, 0, 15, 7], "texture": "#1_1"}, - "south": {"uv": [7, 7, 16, 16], "texture": "#1_1"}, - "west": {"uv": [14, 0, 15, 7], "rotation": 180, "texture": "#1_1"}, - "up": {"uv": [14, 0, 15, 7], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [14, 0, 15, 7], "rotation": 90, "texture": "#1_1"} - } - }, - { - "from": [-0.9, 12, -0.9], - "to": [16.9, 16.1, 16.9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [7, 7, 16, 9], "texture": "#1_1"}, - "east": {"uv": [7, 7, 16, 9], "texture": "#1_1"}, - "south": {"uv": [7, 7, 16, 9], "texture": "#1_1"}, - "west": {"uv": [7, 7, 16, 9], "texture": "#1_1"}, - "up": {"uv": [7, 7, 16, 16], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [7, 7, 16, 16], "rotation": 90, "texture": "#1_1"} - } - }, - { - "from": [-0.9, 8, -0.9], - "to": [16.9, 12, 16.9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [7, 14, 16, 16], "texture": "#1_1"}, - "east": {"uv": [7, 14, 16, 16], "texture": "#1_1"}, - "south": {"uv": [7, 14, 16, 16], "texture": "#1_1"}, - "west": {"uv": [7, 14, 16, 16], "texture": "#1_1"}, - "up": {"uv": [7, 7, 16, 16], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [7, 7, 16, 16], "rotation": 90, "texture": "#1_1"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -67, 0], - "translation": [0, 2.5, -2], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -67, 0], - "translation": [0, 2.5, -2], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -91, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -91, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "rotation": [90, 0, 0], - "translation": [0, 2, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [-0.25, 0.75, 0], - "scale": [0.35, 0.35, 0.35] - }, - "fixed": { - "scale": [0.45, 0.45, 0.45] - } - }, - "groups": [ - { - "name": "SteamCylinder", - "origin": [8, 8, 8], - "children": [0, 1, 2] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/furnace_engine/item.json b/src/main/resources/assets/create/models/block/furnace_engine/item.json deleted file mode 100644 index 3ec9466c0..000000000 --- a/src/main/resources/assets/create/models/block/furnace_engine/item.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "5": "create:block/brass_casing", - "1_1": "create:block/furnace_cylinder" - }, - "elements": [ - { - "name": "Ring", - "from": [0, 0, 9], - "to": [16, 16, 14], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#5"}, - "east": {"uv": [0, 7, 2.5, 15], "texture": "#1_1"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#5"}, - "west": {"uv": [0, 7, 2.5, 15], "texture": "#1_1"}, - "up": {"uv": [0, 7, 2.5, 15], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [0, 7, 2.5, 15], "rotation": 90, "texture": "#1_1"} - } - }, - { - "name": "Cylinder", - "from": [1, 1, 0], - "to": [15, 15, 16], - "faces": { - "north": {"uv": [8, 0, 15, 7], "texture": "#1_1"}, - "east": {"uv": [0, 0, 8, 7], "texture": "#1_1"}, - "south": {"uv": [8, 0, 15, 7], "texture": "#1_1"}, - "west": {"uv": [0, 0, 8, 7], "rotation": 180, "texture": "#1_1"}, - "up": {"uv": [0, 0, 8, 7], "rotation": 270, "texture": "#1_1"}, - "down": {"uv": [0, 0, 8, 7], "rotation": 90, "texture": "#1_1"} - } - }, - { - "from": [10.5, 0, 0], - "to": [14.5, 4, 9], - "faces": { - "east": {"uv": [2.5, 7, 7, 9], "rotation": 180, "texture": "#1_1"}, - "west": {"uv": [2.5, 7, 7, 9], "rotation": 180, "texture": "#1_1"}, - "up": {"uv": [2.5, 7, 7, 9], "rotation": 90, "texture": "#1_1"}, - "down": {"uv": [2.5, 7, 7, 9], "rotation": 270, "texture": "#1_1"} - } - }, - { - "name": "LowerPort", - "from": [10.5, 0.1, 13.9], - "to": [14.5, 4.1, 16.9], - "faces": { - "north": {"uv": [10, 0, 14, 4], "texture": "#1_1"}, - "east": {"uv": [3, 13, 4.5, 15], "rotation": 180, "texture": "#1_1"}, - "south": {"uv": [2.5, 13, 4.5, 15], "texture": "#1_1"}, - "west": {"uv": [3, 13, 4.5, 15], "texture": "#1_1"}, - "up": {"uv": [3, 13, 4.5, 15], "rotation": 90, "texture": "#1_1"}, - "down": {"uv": [3, 13, 4.5, 15], "rotation": 270, "texture": "#1_1"} - } - }, - { - "name": "LowerPort", - "from": [1.5, 0.1, 13.9], - "to": [5.5, 4.1, 16.9], - "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]}, - "faces": { - "north": {"uv": [14, 0, 10, 4], "texture": "#1_1"}, - "east": {"uv": [4.5, 13, 3, 15], "texture": "#1_1"}, - "south": {"uv": [4.5, 13, 2.5, 15], "texture": "#1_1"}, - "west": {"uv": [4.5, 13, 3, 15], "rotation": 180, "texture": "#1_1"}, - "up": {"uv": [3, 15, 4.5, 13], "rotation": 90, "texture": "#1_1"}, - "down": {"uv": [3, 15, 4.5, 13], "rotation": 270, "texture": "#1_1"} - } - }, - { - "name": "Port", - "from": [4, 4, 15.8], - "to": [12, 12, 17.8], - "faces": { - "east": {"uv": [5.5, 9, 6.5, 13], "rotation": 180, "texture": "#1_1"}, - "south": {"uv": [2.5, 9, 6.5, 13], "texture": "#1_1"}, - "west": {"uv": [5.5, 9, 6.5, 13], "texture": "#1_1"}, - "up": {"uv": [5.5, 9, 6.5, 13], "rotation": 90, "texture": "#1_1"}, - "down": {"uv": [5.5, 9, 6.5, 13], "rotation": 270, "texture": "#1_1"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 135, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 135, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "SteamCylinder", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gantry_carriage/horizontal.json b/src/main/resources/assets/create/models/block/gantry_carriage/horizontal.json deleted file mode 100644 index a35a3b443..000000000 --- a/src/main/resources/assets/create/models/block/gantry_carriage/horizontal.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "8": "create:block/bearing_top_wooden", - "9": "create:block/windmill_bearing_side", - "10": "create:block/pinion", - "particle": "create:block/andesite_casing", - "opening": "create:block/gearbox" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 16, 4], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#8"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#9"}, - "south": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#8"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#9"}, - "up": {"uv": [0, 8, 16, 12], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 8, 16, 12], "texture": "#10"} - } - }, - { - "name": "Bottom", - "from": [6, 0, -4], - "to": [10, 16, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]}, - "faces": { - "north": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "up": {"uv": [6, 12, 10, 16], "rotation": 180, "texture": "#10"}, - "down": {"uv": [6, 12, 10, 16], "texture": "#10"} - } - }, - { - "name": "Bottom", - "from": [0, 6, -4], - "to": [16, 10, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]}, - "faces": { - "north": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "east": {"uv": [10, 12, 14, 16], "rotation": 270, "texture": "#10"}, - "west": {"uv": [6, 12, 10, 16], "rotation": 90, "texture": "#10"}, - "up": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 12], - "faces": { - "north": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#opening"}, - "east": {"uv": [1, 4, 15, 14], "rotation": 270, "texture": "#opening"}, - "south": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#opening"}, - "west": {"uv": [1, 4, 15, 14], "rotation": 90, "texture": "#opening"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#opening"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#opening"} - } - }, - { - "name": "Top", - "from": [0, 0, 12], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#8"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#9"}, - "south": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#8"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#9"}, - "up": {"uv": [0, 0, 16, 4], "rotation": 180, "texture": "#9"}, - "down": {"uv": [0, 0, 16, 4], "texture": "#9"} - } - }, - { - "name": "SideWest", - "from": [0, 14, 4], - "to": [16, 16, 12], - "faces": { - "east": {"uv": [14, 0, 16, 8], "rotation": 270, "texture": "#10"}, - "west": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 0, 16, 8], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 0, 16, 8], "texture": "#10"} - } - }, - { - "name": "SideEast", - "from": [0, 0, 4], - "to": [16, 2, 12], - "faces": { - "east": {"uv": [0, 0, 2, 8], "rotation": 270, "texture": "#10"}, - "west": {"uv": [14, 0, 16, 8], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 0, 16, 8], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 0, 16, 8], "texture": "#10"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 2.25, 0], - "scale": [0.45, 0.45, 0.45] - } - }, - "groups": [ - { - "name": "item_andesite", - "origin": [8, 8, 8], - "children": [] - }, - { - "name": "item", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gantry_carriage/item.json b/src/main/resources/assets/create/models/block/gantry_carriage/item.json deleted file mode 100644 index 1e2349978..000000000 --- a/src/main/resources/assets/create/models/block/gantry_carriage/item.json +++ /dev/null @@ -1,346 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "3": "create:block/cogwheel", - "8": "create:block/bearing_top_wooden", - "9": "create:block/windmill_bearing_side", - "10": "create:block/pinion", - "11": "create:block/axis_top", - "particle": "create:block/andesite_casing", - "opening": "create:block/gearbox" - }, - "elements": [ - { - "name": "Gear", - "from": [10.5, -10, 6.5], - "to": [13.5, 8, 9.5], - "rotation": {"angle": -22.5, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear2", - "from": [10.5, -2.5, -1], - "to": [13.5, 0.5, 17], - "rotation": {"angle": 22.5, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "south": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 180, "texture": "#3"}, - "up": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear3", - "from": [10.5, -10, 6.5], - "to": [13.5, 8, 9.5], - "rotation": {"angle": 22.5, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear4", - "from": [10.5, -2.5, -1], - "to": [13.5, 0.5, 17], - "rotation": {"angle": -22.5, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "south": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "up": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "GearCaseInner", - "from": [11, -7, 2], - "to": [13, 5, 14], - "rotation": {"angle": -22.5, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 7], "rotation": 90, "texture": "#3"}, - "east": {"uv": [4, 0, 10, 6], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"}, - "west": {"uv": [4, 0, 10, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "GearCaseOuter", - "from": [10, -5, 4], - "to": [14, 3, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [0, 4, 4, 6], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear", - "from": [2.5, -10, 6.5], - "to": [5.5, 8, 9.5], - "rotation": {"angle": -22.5, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear3", - "from": [2.5, -2.5, -1], - "to": [5.5, 0.5, 17], - "rotation": {"angle": 22.5, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "south": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 180, "texture": "#3"}, - "up": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear4", - "from": [2.5, -10, 6.5], - "to": [5.5, 8, 9.5], - "rotation": {"angle": 22.5, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear5", - "from": [2.5, -2.5, -1], - "to": [5.5, 0.5, 17], - "rotation": {"angle": -22.5, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "south": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "up": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "GearCaseInner", - "from": [3, -7, 2], - "to": [5, 5, 14], - "rotation": {"angle": -22.5, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 7], "rotation": 90, "texture": "#3"}, - "east": {"uv": [4, 0, 10, 6], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"}, - "west": {"uv": [4, 0, 10, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "GearCaseOuter", - "from": [2, -5, 4], - "to": [6, 3, 12], - "rotation": {"angle": -22.5, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [0, 4, 4, 6], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 4, 16], - "faces": { - "north": {"uv": [0, 8, 16, 12], "texture": "#10"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#9"}, - "south": {"uv": [0, 8, 16, 12], "texture": "#10"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#9"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#8"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#8"} - } - }, - { - "name": "Bottom", - "from": [6, -4, 0], - "to": [10, 0, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [6, 12, 10, 16], "texture": "#10"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [6, 12, 10, 16], "texture": "#10"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [0, -4, 6], - "to": [16, 0, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "east": {"uv": [10, 12, 14, 16], "texture": "#10"}, - "south": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [6, 12, 10, 16], "texture": "#10"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Core", - "from": [1, 2, 1], - "to": [15, 12, 15], - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#opening"}, - "east": {"uv": [1, 4, 15, 14], "texture": "#opening"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#opening"}, - "west": {"uv": [1, 4, 15, 14], "texture": "#opening"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#opening"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#opening"} - } - }, - { - "name": "Top", - "from": [0, 12, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#9"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#9"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#9"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#9"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#8"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "SideWest", - "from": [0, 4, 0], - "to": [16, 12, 2], - "faces": { - "north": {"uv": [0, 0, 16, 8], "texture": "#10"}, - "east": {"uv": [14, 0, 16, 8], "texture": "#10"}, - "south": {"uv": [0, 0, 16, 8], "texture": "#10"}, - "west": {"uv": [0, 0, 2, 8], "texture": "#10"} - } - }, - { - "name": "SideEast", - "from": [0, 4, 14], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [0, 0, 16, 8], "texture": "#10"}, - "east": {"uv": [0, 0, 2, 8], "texture": "#10"}, - "south": {"uv": [0, 0, 16, 8], "texture": "#10"}, - "west": {"uv": [14, 0, 16, 8], "texture": "#10"} - } - }, - { - "name": "Axis", - "from": [0, 6, 6], - "to": [16, 10, 10], - "faces": { - "north": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "east": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#11"}, - "south": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [6, 6, 10, 10], "texture": "#11"}, - "up": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 135, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 2.25, 0], - "scale": [0.45, 0.45, 0.45] - } - }, - "groups": [ - { - "name": "cogwheel_shaftless", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - }, - { - "name": "cogwheel_shaftless", - "origin": [8, 8, 8], - "children": [6, 7, 8, 9, 10, 11] - }, - { - "name": "item_andesite", - "origin": [8, 8, 8], - "children": [] - }, - { - "name": "item", - "origin": [8, 8, 8], - "children": [12, 13, 14, 15, 16, 17, 18, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [19] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gantry_carriage/vertical.json b/src/main/resources/assets/create/models/block/gantry_carriage/vertical.json deleted file mode 100644 index 9c7ed51bf..000000000 --- a/src/main/resources/assets/create/models/block/gantry_carriage/vertical.json +++ /dev/null @@ -1,153 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "8": "create:block/bearing_top_wooden", - "9": "create:block/windmill_bearing_side", - "10": "create:block/pinion", - "particle": "create:block/andesite_casing", - "opening": "create:block/gearbox" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 16, 4], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#8"}, - "east": {"uv": [0, 8, 16, 12], "rotation": 270, "texture": "#10"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#8"}, - "west": {"uv": [0, 8, 16, 12], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 0, 16, 4], "rotation": 180, "texture": "#9"}, - "down": {"uv": [0, 0, 16, 4], "texture": "#9"} - } - }, - { - "name": "Bottom", - "from": [0, 6, -4], - "to": [16, 10, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]}, - "faces": { - "north": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "east": {"uv": [6, 12, 10, 16], "rotation": 270, "texture": "#10"}, - "west": {"uv": [6, 12, 10, 16], "rotation": 90, "texture": "#10"}, - "up": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [6, 0, -4], - "to": [10, 16, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]}, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "up": {"uv": [10, 12, 14, 16], "rotation": 180, "texture": "#10"}, - "down": {"uv": [6, 12, 10, 16], "texture": "#10"} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 12], - "faces": { - "north": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#opening"}, - "east": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#opening"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#opening"}, - "west": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#opening"}, - "up": {"uv": [1, 4, 15, 14], "rotation": 180, "texture": "#opening"}, - "down": {"uv": [1, 4, 15, 14], "texture": "#opening"} - } - }, - { - "name": "Top", - "from": [0, 0, 12], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#8"}, - "east": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#9"}, - "south": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#8"}, - "west": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#9"}, - "up": {"uv": [0, 0, 16, 4], "rotation": 180, "texture": "#9"}, - "down": {"uv": [0, 0, 16, 4], "texture": "#9"} - } - }, - { - "name": "SideWest", - "from": [0, 0, 4], - "to": [2, 16, 12], - "faces": { - "east": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#10"}, - "west": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#10"}, - "up": {"uv": [14, 0, 16, 8], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 0, 2, 8], "texture": "#10"} - } - }, - { - "name": "SideEast", - "from": [14, 0, 4], - "to": [16, 16, 12], - "faces": { - "east": {"uv": [0, 0, 16, 8], "rotation": 270, "texture": "#10"}, - "west": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 0, 2, 8], "rotation": 180, "texture": "#10"}, - "down": {"uv": [14, 0, 16, 8], "texture": "#10"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 2.25, 0], - "scale": [0.45, 0.45, 0.45] - } - }, - "groups": [ - { - "name": "item_andesite", - "origin": [8, 8, 8], - "children": [] - }, - { - "name": "item", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gantry_carriage/wheels.json b/src/main/resources/assets/create/models/block/gantry_carriage/wheels.json deleted file mode 100644 index 7c54b4893..000000000 --- a/src/main/resources/assets/create/models/block/gantry_carriage/wheels.json +++ /dev/null @@ -1,224 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/cogwheel", - "particle": "create:block/andesite_casing" - }, - "elements": [ - { - "name": "Gear", - "from": [10.5, -10, 6.5], - "to": [13.5, 8, 9.5], - "rotation": {"angle": 0, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear2", - "from": [10.5, -2.5, -1], - "to": [13.5, 0.5, 17], - "rotation": {"angle": 45, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "south": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 180, "texture": "#3"}, - "up": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear3", - "from": [10.5, -10, 6.5], - "to": [13.5, 8, 9.5], - "rotation": {"angle": 45, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear4", - "from": [10.5, -2.5, -1], - "to": [13.5, 0.5, 17], - "rotation": {"angle": 0, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "south": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "up": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "GearCaseInner", - "from": [11, -7, 2], - "to": [13, 5, 14], - "rotation": {"angle": 0, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 7], "rotation": 90, "texture": "#3"}, - "east": {"uv": [4, 0, 10, 6], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"}, - "west": {"uv": [4, 0, 10, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "GearCaseOuter", - "from": [10, -5, 4], - "to": [14, 3, 12], - "rotation": {"angle": 0, "axis": "x", "origin": [12, -1, 8]}, - "faces": { - "north": {"uv": [0, 4, 4, 6], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear", - "from": [2.5, -10, 6.5], - "to": [5.5, 8, 9.5], - "rotation": {"angle": 0, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear3", - "from": [2.5, -2.5, -1], - "to": [5.5, 0.5, 17], - "rotation": {"angle": 45, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "south": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 180, "texture": "#3"}, - "up": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear4", - "from": [2.5, -10, 6.5], - "to": [5.5, 8, 9.5], - "rotation": {"angle": 45, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "Gear5", - "from": [2.5, -2.5, -1], - "to": [5.5, 0.5, 17], - "rotation": {"angle": 0, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "south": {"uv": [5.5, 7.5, 7, 9], "rotation": 270, "texture": "#3"}, - "west": {"uv": [7, 6, 16, 7.5], "texture": "#3"}, - "up": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [7, 7.5, 16, 9], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "GearCaseInner", - "from": [3, -7, 2], - "to": [5, 5, 14], - "rotation": {"angle": 0, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 7], "rotation": 90, "texture": "#3"}, - "east": {"uv": [4, 0, 10, 6], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"}, - "west": {"uv": [4, 0, 10, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 6, 6, 7], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "GearCaseOuter", - "from": [2, -5, 4], - "to": [6, 3, 12], - "rotation": {"angle": 0, "axis": "x", "origin": [4, -1, 8]}, - "faces": { - "north": {"uv": [0, 4, 4, 6], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 4, 4, 6], "rotation": 270, "texture": "#3"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1.5, 0], - "scale": [0.5, 0.5, 0.5] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 2.25, 0], - "scale": [0.45, 0.45, 0.45] - } - }, - "groups": [ - { - "name": "cogwheel_shaftless", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - }, - { - "name": "cogwheel_shaftless", - "origin": [8, 8, 8], - "children": [6, 7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gantry_shaft/block_end.json b/src/main/resources/assets/create/models/block/gantry_shaft/block_end.json deleted file mode 100644 index 23c06e41f..000000000 --- a/src/main/resources/assets/create/models/block/gantry_shaft/block_end.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "2": "create:block/gantry_shaft", - "3": "create:block/cogwheel", - "particle": "#2" - }, - "elements": [ - { - "from": [4, 11, 4], - "to": [12, 14, 12], - "faces": { - "north": {"uv": [14.5, 0, 16, 4], "rotation": 270, "texture": "#3"}, - "east": {"uv": [14.5, 0, 16, 4], "rotation": 90, "texture": "#3"}, - "south": {"uv": [14.5, 0, 16, 4], "rotation": 90, "texture": "#3"}, - "west": {"uv": [14.5, 0, 16, 4], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 0, 4, 4], "texture": "#3"}, - "down": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#3"} - } - }, - { - "from": [5, 0, 5], - "to": [11, 11, 11], - "shade": false, - "faces": { - "north": {"uv": [0, 5, 6, 16], "texture": "#2"}, - "east": {"uv": [6, 5, 12, 16], "texture": "#2"}, - "south": {"uv": [0, 5, 6, 16], "texture": "#2"}, - "west": {"uv": [6, 5, 12, 16], "texture": "#2"} - } - }, - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "rack", - "origin": [8, 8, 8], - "children": [ - { - "name": "end", - "origin": [8, 8, 8], - "children": [0, 1, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [2] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gantry_shaft/block_middle.json b/src/main/resources/assets/create/models/block/gantry_shaft/block_middle.json deleted file mode 100644 index cc9ee7946..000000000 --- a/src/main/resources/assets/create/models/block/gantry_shaft/block_middle.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/gantry_shaft", - "particle": "#2" - }, - "elements": [ - { - "from": [5, 0, 5], - "to": [11, 16, 11], - "shade": false, - "faces": { - "north": {"uv": [0, 0, 6, 16], "texture": "#2"}, - "east": {"uv": [6, 0, 12, 16], "texture": "#2"}, - "south": {"uv": [0, 0, 6, 16], "texture": "#2"}, - "west": {"uv": [6, 0, 12, 16], "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "rack", - "origin": [8, 8, 8], - "children": [ - { - "name": "middle", - "origin": [8, 8, 8], - "children": [0, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gantry_shaft/block_single.json b/src/main/resources/assets/create/models/block/gantry_shaft/block_single.json deleted file mode 100644 index 495caf396..000000000 --- a/src/main/resources/assets/create/models/block/gantry_shaft/block_single.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "2": "create:block/gantry_shaft", - "3": "create:block/cogwheel", - "particle": "#2" - }, - "elements": [ - { - "from": [4, 2, 4], - "to": [12, 5, 12], - "faces": { - "north": {"uv": [14.5, 0, 16, 4], "rotation": 270, "texture": "#3"}, - "east": {"uv": [14.5, 0, 16, 4], "rotation": 270, "texture": "#3"}, - "south": {"uv": [14.5, 0, 16, 4], "rotation": 90, "texture": "#3"}, - "west": {"uv": [14.5, 0, 16, 4], "rotation": 90, "texture": "#3"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#3"} - } - }, - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#1"} - } - }, - { - "from": [4, 11, 4], - "to": [12, 14, 12], - "faces": { - "north": {"uv": [14.5, 0, 16, 4], "rotation": 270, "texture": "#3"}, - "east": {"uv": [14.5, 0, 16, 4], "rotation": 270, "texture": "#3"}, - "south": {"uv": [14.5, 0, 16, 4], "rotation": 90, "texture": "#3"}, - "west": {"uv": [14.5, 0, 16, 4], "rotation": 90, "texture": "#3"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#3"} - } - }, - { - "from": [5, 5, 5], - "to": [11, 11, 11], - "shade": false, - "faces": { - "north": {"uv": [0, 5, 6, 11], "rotation": 180, "texture": "#2"}, - "east": {"uv": [6, 5, 12, 11], "rotation": 180, "texture": "#2"}, - "south": {"uv": [0, 5, 6, 11], "rotation": 180, "texture": "#2"}, - "west": {"uv": [6, 5, 12, 11], "rotation": 180, "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "rack", - "origin": [8, 8, 8], - "children": [ - { - "name": "end", - "origin": [8, 8, 8], - "children": [0, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [] - } - ] - }, - { - "name": "middle", - "origin": [8, 8, 8], - "children": [ - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [1] - } - ] - }, - { - "name": "start", - "origin": [8, 8, 8], - "children": [2, 3, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gantry_shaft/block_start.json b/src/main/resources/assets/create/models/block/gantry_shaft/block_start.json deleted file mode 100644 index 15ab79845..000000000 --- a/src/main/resources/assets/create/models/block/gantry_shaft/block_start.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "2": "create:block/gantry_shaft", - "3": "create:block/cogwheel", - "particle": "#2" - }, - "elements": [ - { - "from": [4, 2, 4], - "to": [12, 5, 12], - "faces": { - "north": {"uv": [14.5, 0, 16, 4], "rotation": 270, "texture": "#3"}, - "east": {"uv": [14.5, 0, 16, 4], "rotation": 90, "texture": "#3"}, - "south": {"uv": [14.5, 0, 16, 4], "rotation": 90, "texture": "#3"}, - "west": {"uv": [14.5, 0, 16, 4], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 0, 4, 4], "texture": "#3"}, - "down": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#3"} - } - }, - { - "from": [5, 5, 5], - "to": [11, 16, 11], - "shade": false, - "faces": { - "north": {"uv": [0, 0, 6, 11], "texture": "#2"}, - "east": {"uv": [6, 0, 12, 11], "texture": "#2"}, - "south": {"uv": [0, 0, 6, 11], "texture": "#2"}, - "west": {"uv": [6, 0, 12, 11], "texture": "#2"} - } - }, - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "rack", - "origin": [8, 8, 8], - "children": [ - { - "name": "start", - "origin": [8, 8, 8], - "children": [0, 1, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [2] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gauge/base.json b/src/main/resources/assets/create/models/block/gauge/base.json deleted file mode 100644 index 00db43e7e..000000000 --- a/src/main/resources/assets/create/models/block/gauge/base.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/gauge", - "particle": "create:block/gauge" - }, - "elements": [ - { - "name": "GaugeBody", - "from": [2, 2, 1], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [0, 10, 6, 16], "texture": "#2"}, - "east": {"uv": [9, 10, 16, 16], "texture": "#2"}, - "south": {"uv": [0, 10, 6, 16], "texture": "#2"}, - "west": {"uv": [9, 10, 16, 16], "texture": "#2"}, - "up": {"uv": [9, 10, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [9, 10, 16, 16], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "GuageBase", - "from": [1, 0, 0], - "to": [15, 2, 16], - "faces": { - "north": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "east": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "south": {"uv": [0, 9, 7, 10], "texture": "#2"}, - "west": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "up": {"uv": [0, 0, 8, 7], "rotation": 270, "texture": "#2"}, - "down": {"uv": [0, 0, 8, 7], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gauge/base_wall.json b/src/main/resources/assets/create/models/block/gauge/base_wall.json deleted file mode 100644 index 32a8003ba..000000000 --- a/src/main/resources/assets/create/models/block/gauge/base_wall.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/gauge", - "particle": "create:block/gauge" - }, - "elements": [ - { - "name": "GaugeBody", - "from": [2, 2, 1], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [0, 10, 6, 16], "texture": "#2"}, - "east": {"uv": [9, 10, 16, 16], "texture": "#2"}, - "south": {"uv": [0, 10, 6, 16], "texture": "#2"}, - "west": {"uv": [9, 10, 16, 16], "texture": "#2"}, - "up": {"uv": [9, 10, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [9, 10, 16, 16], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "GuageBase", - "from": [0, 1, 0], - "to": [2, 15, 16], - "faces": { - "north": {"uv": [0, 9, 8, 10], "rotation": 270, "texture": "#2"}, - "east": {"uv": [0, 0, 8, 7], "texture": "#2"}, - "south": {"uv": [0, 9, 7, 10], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 0, 8, 7], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 9, 8, 10], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 9, 8, 10], "rotation": 90, "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gauge/dial.json b/src/main/resources/assets/create/models/block/gauge/dial.json deleted file mode 100644 index 1d42dd4ca..000000000 --- a/src/main/resources/assets/create/models/block/gauge/dial.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "textures": { - "2": "create:block/gauge" - }, - "elements": [ - { - "name": "GaugeDial", - "from": [15.75, 5.25, 5.75], - "to": [16.45, 6.25, 10.75], - "rotation": {"angle": 0, "axis": "x", "origin": [16, 5.75, 5.75]}, - "faces": { - "north": {"uv": [13.5, 4, 14, 4.5], "rotation": 180, "texture": "#2"}, - "east": {"uv": [13.5, 4, 16, 4.5], "rotation": 180, "texture": "#2"}, - "south": {"uv": [15.5, 4, 16, 4.5], "rotation": 180, "texture": "#2"}, - "west": {"uv": [13.5, 4, 16, 4.5], "texture": "#2"}, - "up": {"uv": [13.5, 4, 16, 4.5], "rotation": 90, "texture": "#2"}, - "down": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gauge/indicator.json b/src/main/resources/assets/create/models/block/gauge/indicator.json deleted file mode 100644 index 8a84fef5c..000000000 --- a/src/main/resources/assets/create/models/block/gauge/indicator.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "textures": { - "2": "create:block/gauge" - }, - "elements": [ - { - "name": "GaugeColorBar", - "from": [14.5, 2.9, 2.9], - "to": [15.5, 13.1, 13.1], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "north": {"uv": [0, 8.5, 5, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 8.5, 5, 9], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "up": {"uv": [0, 8, 5, 8.5], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 8, 5, 8.5], "rotation": 90, "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gauge/speedometer/head.json b/src/main/resources/assets/create/models/block/gauge/speedometer/head.json deleted file mode 100644 index df0e7a4a2..000000000 --- a/src/main/resources/assets/create/models/block/gauge/speedometer/head.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "textures": { - "2": "create:block/gauge" - }, - "elements": [ - { - "name": "Gauge", - "from": [16.075, 4, 4], - "to": [16.075, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "east": {"uv": [8, 0, 12, 4], "texture": "#2"} - } - }, - { - "name": "GaugeButton", - "from": [15.5, 5.2, 5.2], - "to": [16.5, 6.3, 6.3], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "east": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "south": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "west": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "up": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "down": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"} - } - }, - { - "name": "GuageMetalBack", - "from": [14, 3, 3], - "to": [16, 13, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "north": {"uv": [13, 5, 14, 10], "texture": "#2"}, - "east": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "south": {"uv": [13, 5, 14, 10], "texture": "#2"}, - "west": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "up": {"uv": [9, 5, 10, 10], "texture": "#2"}, - "down": {"uv": [9, 5, 10, 10], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gauge/speedometer/item.json b/src/main/resources/assets/create/models/block/gauge/speedometer/item.json deleted file mode 100644 index 4df920337..000000000 --- a/src/main/resources/assets/create/models/block/gauge/speedometer/item.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "2": "create:block/gauge", - "particle": "create:block/gauge" - }, - "elements": [ - { - "name": "GaugeBody", - "from": [2, 2, 1], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [0, 10, 6, 16], "texture": "#2"}, - "east": {"uv": [9, 10, 16, 16], "texture": "#2"}, - "south": {"uv": [0, 10, 6, 16], "texture": "#2"}, - "west": {"uv": [9, 10, 16, 16], "texture": "#2"}, - "up": {"uv": [9, 10, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [5, 5, 12, 10], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "GuageBase", - "from": [1, 0, 0], - "to": [15, 2, 16], - "faces": { - "north": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "east": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "south": {"uv": [0, 9, 7, 10], "texture": "#2"}, - "west": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "up": {"uv": [0, 0, 8, 7], "rotation": 270, "texture": "#2"}, - "down": {"uv": [0, 0, 8, 7], "texture": "#2"} - } - }, - { - "name": "Gauge", - "from": [16.075, 4, 4], - "to": [16.075, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "east": {"uv": [8, 0, 12, 4], "texture": "#2"} - } - }, - { - "name": "GaugeButton", - "from": [15.5, 5.2, 5.2], - "to": [16.5, 6.3, 6.3], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "east": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "south": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "west": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "up": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "down": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"} - } - }, - { - "name": "GaugeDial", - "from": [15.75, 5.75, 5.25], - "to": [16.45, 10.75, 6.25], - "rotation": {"angle": 0, "axis": "x", "origin": [16, 5.75, 5.75]}, - "faces": { - "north": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"}, - "east": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"}, - "south": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"}, - "west": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"}, - "up": {"uv": [15.5, 4, 16, 4.5], "rotation": 180, "texture": "#2"}, - "down": {"uv": [13.5, 4, 14, 4.5], "texture": "#2"} - } - }, - { - "name": "GuageMetalBack", - "from": [14, 3, 3], - "to": [16, 13, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "north": {"uv": [13, 5, 14, 10], "texture": "#2"}, - "east": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "south": {"uv": [13, 5, 14, 10], "texture": "#2"}, - "west": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "up": {"uv": [9, 5, 10, 10], "texture": "#2"}, - "down": {"uv": [9, 5, 10, 10], "texture": "#2"} - } - }, - { - "name": "GaugeColorBar", - "from": [14.5, 2.9, 2.9], - "to": [15.5, 13.1, 13.1], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "north": {"uv": [0, 8.5, 5, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 8.5, 5, 9], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "up": {"uv": [0, 8, 5, 8.5], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 8, 5, 8.5], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -165, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 23, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 89, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "Gauge", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - }, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gauge/stressometer/head.json b/src/main/resources/assets/create/models/block/gauge/stressometer/head.json deleted file mode 100644 index 1d6329f81..000000000 --- a/src/main/resources/assets/create/models/block/gauge/stressometer/head.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "textures": { - "2": "create:block/gauge" - }, - "elements": [ - { - "name": "Gauge", - "from": [16.075, 4, 4], - "to": [16.075, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "east": {"uv": [12, 0, 16, 4], "texture": "#2"} - } - }, - { - "name": "GaugeButton", - "from": [15.5, 5.2, 5.2], - "to": [16.5, 6.3, 6.3], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "east": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "south": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "west": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "up": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "down": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"} - } - }, - { - "name": "GuageMetalBack", - "from": [14, 3, 3], - "to": [16, 13, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "north": {"uv": [13, 5, 14, 10], "texture": "#2"}, - "east": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "south": {"uv": [13, 5, 14, 10], "texture": "#2"}, - "west": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "up": {"uv": [9, 5, 10, 10], "texture": "#2"}, - "down": {"uv": [9, 5, 10, 10], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gauge/stressometer/item.json b/src/main/resources/assets/create/models/block/gauge/stressometer/item.json deleted file mode 100644 index 38582a770..000000000 --- a/src/main/resources/assets/create/models/block/gauge/stressometer/item.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "2": "create:block/gauge", - "particle": "create:block/gauge" - }, - "elements": [ - { - "name": "GaugeBody", - "from": [2, 2, 1], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [0, 10, 6, 16], "texture": "#2"}, - "east": {"uv": [9, 10, 16, 16], "texture": "#2"}, - "south": {"uv": [0, 10, 6, 16], "texture": "#2"}, - "west": {"uv": [9, 10, 16, 16], "texture": "#2"}, - "up": {"uv": [9, 10, 16, 16], "rotation": 90, "texture": "#2"}, - "down": {"uv": [5, 5, 12, 10], "rotation": 270, "texture": "#2"} - } - }, - { - "name": "GuageBase", - "from": [1, 0, 0], - "to": [15, 2, 16], - "faces": { - "north": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "east": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "south": {"uv": [0, 9, 7, 10], "texture": "#2"}, - "west": {"uv": [0, 9, 8, 10], "texture": "#2"}, - "up": {"uv": [0, 0, 8, 7], "rotation": 270, "texture": "#2"}, - "down": {"uv": [0, 0, 8, 7], "texture": "#2"} - } - }, - { - "name": "Gauge", - "from": [16.075, 4, 4], - "to": [16.075, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "east": {"uv": [12, 0, 16, 4], "texture": "#2"} - } - }, - { - "name": "GaugeButton", - "from": [15.5, 5.2, 5.2], - "to": [16.5, 6.3, 6.3], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 8]}, - "faces": { - "north": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "east": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "south": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "west": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "up": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"}, - "down": {"uv": [0, 9.5, 0.5, 10], "texture": "#2"} - } - }, - { - "name": "GaugeDial", - "from": [15.75, 5.75, 5.25], - "to": [16.45, 10.75, 6.25], - "rotation": {"angle": 0, "axis": "x", "origin": [16, 5.75, 5.75]}, - "faces": { - "north": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"}, - "east": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"}, - "south": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"}, - "west": {"uv": [13.5, 4, 16, 4.5], "rotation": 270, "texture": "#2"}, - "up": {"uv": [15.5, 4, 16, 4.5], "rotation": 180, "texture": "#2"}, - "down": {"uv": [13.5, 4, 14, 4.5], "texture": "#2"} - } - }, - { - "name": "GuageMetalBack", - "from": [14, 3, 3], - "to": [16, 13, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "north": {"uv": [13, 5, 14, 10], "texture": "#2"}, - "east": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "south": {"uv": [13, 5, 14, 10], "texture": "#2"}, - "west": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "up": {"uv": [9, 5, 10, 10], "texture": "#2"}, - "down": {"uv": [9, 5, 10, 10], "texture": "#2"} - } - }, - { - "name": "GaugeColorBar", - "from": [14.5, 2.9, 2.9], - "to": [15.5, 13.1, 13.1], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "north": {"uv": [0, 8.5, 5, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 8.5, 5, 9], "rotation": 90, "texture": "#2"}, - "west": {"uv": [9, 5, 14, 10], "texture": "#2"}, - "up": {"uv": [0, 8, 5, 8.5], "rotation": 90, "texture": "#2"}, - "down": {"uv": [0, 8, 5, 8.5], "rotation": 90, "texture": "#2"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -165, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 23, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 89, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "Gauge", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - }, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gearbox/block.json b/src/main/resources/assets/create/models/block/gearbox/block.json deleted file mode 100644 index e3fe13736..000000000 --- a/src/main/resources/assets/create/models/block/gearbox/block.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/andesite_casing", - "1": "create:block/gearbox", - "particle": "create:block/andesite_casing" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "east": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "south": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "west": {"uv": [1, 2, 15, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gearbox/item.json b/src/main/resources/assets/create/models/block/gearbox/item.json deleted file mode 100644 index cd7ada680..000000000 --- a/src/main/resources/assets/create/models/block/gearbox/item.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/andesite_casing", - "1": "create:block/gearbox", - "particle": "create:block/axis", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "east": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "south": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "west": {"uv": [1, 2, 15, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} - } - }, - { - "name": "Axis", - "from": [0, 6, 6], - "to": [16, 10, 10], - "faces": { - "north": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "east": {"uv": [6, 6, 10, 10], "rotation": 270, "texture": "#1_1"}, - "south": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "west": {"uv": [6, 6, 10, 10], "rotation": 270, "texture": "#1_1"}, - "up": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"} - } - } - ], - "groups": [0, 1, 2, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [3] - }, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gearbox/item_vertical.json b/src/main/resources/assets/create/models/block/gearbox/item_vertical.json deleted file mode 100644 index c76ff5ce0..000000000 --- a/src/main/resources/assets/create/models/block/gearbox/item_vertical.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "gearbox_top": "create:block/andesite_casing", - "gearbox": "create:block/gearbox", - "particle": "create:block/axis" - }, - "elements": [ - { - "name": "Side", - "from": [0, 0, 0], - "to": [2, 16, 16], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#gearbox_top"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#gearbox_top"}, - "south": {"uv": [0, 0, 2, 16], "texture": "#gearbox_top"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#gearbox_top"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#gearbox_top"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#gearbox_top"} - } - }, - { - "name": "Side", - "from": [14, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#gearbox_top"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#gearbox_top"}, - "south": {"uv": [14, 0, 16, 16], "texture": "#gearbox_top"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#gearbox_top"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#gearbox_top"}, - "down": {"uv": [14, 0, 16, 16], "texture": "#gearbox_top"} - } - }, - { - "name": "Center", - "from": [2, 1, 1], - "to": [14, 15, 15], - "faces": { - "north": {"uv": [2, 1, 14, 15], "texture": "#gearbox"}, - "south": {"uv": [2, 1, 14, 15], "texture": "#gearbox"}, - "up": {"uv": [2, 1, 14, 15], "texture": "#gearbox"}, - "down": {"uv": [2, 1, 14, 15], "texture": "#gearbox"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#1"} - } - } - ], - "groups": [0, 1, 2, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [3] - }, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gearshift/block.json b/src/main/resources/assets/create/models/block/gearshift/block.json deleted file mode 100644 index 01d833677..000000000 --- a/src/main/resources/assets/create/models/block/gearshift/block.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/gearshift_off", - "1": "create:block/gearbox", - "particle": "create:block/gearshift_off" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 16, 2], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#0"}, - "east": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#0"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#0"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#1"} - } - }, - { - "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 14], - "faces": { - "up": {"uv": [1, 2, 15, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [1, 2, 15, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 0, 14], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#0"}, - "south": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#0"}, - "west": {"uv": [0, 0, 16, 2], "rotation": 90, "texture": "#0"}, - "up": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0, 0, 16, 2], "texture": "#1"} - } - }, - { - "name": "SideWest", - "from": [0, 0, 2], - "to": [2, 16, 14], - "faces": { - "east": {"uv": [0, 2, 16, 14], "rotation": 270, "texture": "#1"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 90, "texture": "#0"}, - "up": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 2, 2, 14], "texture": "#0"} - } - }, - { - "name": "SideEast", - "from": [14, 0, 2], - "to": [16, 16, 14], - "faces": { - "east": {"uv": [0, 2, 16, 14], "rotation": 270, "texture": "#0"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 90, "texture": "#1"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#0"}, - "down": {"uv": [14, 2, 16, 14], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gearshift/block_powered.json b/src/main/resources/assets/create/models/block/gearshift/block_powered.json deleted file mode 100644 index c8d00afe2..000000000 --- a/src/main/resources/assets/create/models/block/gearshift/block_powered.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/gearshift/block", - "textures": { - "0": "create:block/gearshift_on", - "particle": "create:block/gearshift_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/gearshift/item.json b/src/main/resources/assets/create/models/block/gearshift/item.json deleted file mode 100644 index 13d81d0df..000000000 --- a/src/main/resources/assets/create/models/block/gearshift/item.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/gearshift_off", - "1": "create:block/gearbox", - "particle": "create:block/axis", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#0"} - } - }, - { - "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [1, 2, 15, 14], "texture": "#1"}, - "south": {"uv": [1, 2, 15, 14], "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "name": "SideWest", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#0"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#0"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#0"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#0"} - } - }, - { - "name": "SideEast", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#0"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#0"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#0"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#0"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} - } - } - ], - "groups": [0, 1, 2, 3, 4, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/goggles.json b/src/main/resources/assets/create/models/block/goggles.json deleted file mode 100644 index b91727c27..000000000 --- a/src/main/resources/assets/create/models/block/goggles.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/brass_casing", - "1": "block/black_stained_glass", - "2": "create:item/goggles_model", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "frame", - "from": [11, 7, 3], - "to": [12, 8, 4], - "faces": { - "north": {"uv": [8, 1, 9, 2], "texture": "#0"}, - "east": {"uv": [10, 0, 11, 1], "texture": "#0"}, - "south": {"uv": [11, 8, 12, 9], "texture": "#0"}, - "west": {"uv": [4, 0, 5, 1], "texture": "#0"}, - "up": {"uv": [9, 1, 10, 2], "texture": "#0"}, - "down": {"uv": [10, 0, 11, 1], "texture": "#0"} - } - }, - { - "name": "frame", - "from": [4, 7, 3], - "to": [5, 8, 4], - "faces": { - "north": {"uv": [14, 1, 15, 2], "texture": "#0"}, - "east": {"uv": [10, 0, 11, 1], "texture": "#0"}, - "south": {"uv": [11, 8, 12, 9], "texture": "#0"}, - "west": {"uv": [4, 0, 5, 1], "texture": "#0"}, - "up": {"uv": [9, 1, 10, 2], "texture": "#0"}, - "down": {"uv": [10, 0, 11, 1], "texture": "#0"} - } - }, - { - "name": "frame", - "from": [9, 8, 3], - "to": [11, 9, 4], - "faces": { - "north": {"uv": [3, 1, 5, 2], "texture": "#0"}, - "east": {"uv": [6, 0, 7, 1], "texture": "#0"}, - "south": {"uv": [7, 0, 9, 1], "texture": "#0"}, - "west": {"uv": [7, 0, 8, 1], "texture": "#0"}, - "up": {"uv": [6, 1, 8, 2], "texture": "#0"}, - "down": {"uv": [7, 0, 9, 1], "texture": "#0"} - } - }, - { - "name": "frame", - "from": [7, 7, 3], - "to": [9, 8, 4], - "faces": { - "north": {"uv": [7, 1, 9, 2], "texture": "#0"}, - "east": {"uv": [6, 0, 7, 1], "texture": "#0"}, - "south": {"uv": [7, 0, 9, 1], "texture": "#0"}, - "west": {"uv": [7, 0, 8, 1], "texture": "#0"}, - "up": {"uv": [6, 1, 8, 2], "texture": "#0"}, - "down": {"uv": [7, 0, 9, 1], "texture": "#0"} - } - }, - { - "name": "frame", - "from": [5, 8, 3], - "to": [7, 9, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, - "faces": { - "north": {"uv": [10, 1, 12, 2], "texture": "#0"}, - "east": {"uv": [6, 0, 7, 1], "texture": "#0"}, - "south": {"uv": [7, 0, 9, 1], "texture": "#0"}, - "west": {"uv": [7, 0, 8, 1], "texture": "#0"}, - "up": {"uv": [10, 1, 12, 2], "texture": "#0"}, - "down": {"uv": [7, 0, 9, 1], "texture": "#0"} - } - }, - { - "name": "frame", - "from": [9, 6, 3], - "to": [11, 7, 4], - "faces": { - "north": {"uv": [13, 14, 15, 15], "texture": "#0"}, - "east": {"uv": [6, 0, 7, 1], "texture": "#0"}, - "south": {"uv": [7, 0, 9, 1], "texture": "#0"}, - "west": {"uv": [7, 0, 8, 1], "texture": "#0"}, - "up": {"uv": [7, 0, 9, 1], "texture": "#0"}, - "down": {"uv": [7, 0, 9, 1], "texture": "#0"} - } - }, - { - "name": "frame", - "from": [5, 6, 3], - "to": [7, 7, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [4, 8, 8]}, - "faces": { - "north": {"uv": [13, 14, 15, 15], "texture": "#0"}, - "east": {"uv": [6, 0, 7, 1], "texture": "#0"}, - "south": {"uv": [7, 0, 9, 1], "texture": "#0"}, - "west": {"uv": [7, 0, 8, 1], "texture": "#0"}, - "up": {"uv": [7, 0, 9, 1], "texture": "#0"}, - "down": {"uv": [7, 0, 9, 1], "texture": "#0"} - } - }, - { - "name": "glass", - "from": [5, 7, 3.3], - "to": [11, 8, 3.3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7.8]}, - "faces": { - "north": {"uv": [1, 0, 7, 1], "texture": "#1"}, - "east": {"uv": [11, 0, 11.2, 1], "texture": "#1"}, - "south": {"uv": [1, 0, 7, 1], "texture": "#1"}, - "west": {"uv": [11, 0, 11.2, 1], "texture": "#1"}, - "up": {"uv": [11, 0, 17, 0.2], "texture": "#1"}, - "down": {"uv": [11, 0, 17, 0.2], "texture": "#1"} - } - }, - { - "name": "strap", - "from": [3.9, 0, 4], - "to": [12.1, 8, 12.1], - "faces": { - "east": {"uv": [8, 0, 16, 8], "texture": "#2"}, - "south": {"uv": [0, 0, 8, 8], "texture": "#2"}, - "west": {"uv": [8, 8, 16, 16], "texture": "#2"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 1.5], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 1.5], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1.25, 0], - "scale": [0.5, 0.5, 0.5] - }, - "gui": { - "rotation": [21, -180, 0], - "translation": [0, 3, 0], - "scale": [1.5, 1.5, 1.5] - }, - "head": { - "translation": [0, 5.75, 0], - "scale": [1.6, 1.6, 1.6] - }, - "fixed": { - "translation": [0, 1.5, 4] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hand_crank/block.json b/src/main/resources/assets/create/models/block/hand_crank/block.json deleted file mode 100644 index 04ef87a0b..000000000 --- a/src/main/resources/assets/create/models/block/hand_crank/block.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "particle": "create:block/axis" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 5, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 5], "rotation": 180, "texture": "#0"}, - "east": {"uv": [6, 0, 10, 5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [6, 0, 10, 5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [6, 0, 10, 5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "shaft_half", - "origin": [8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hand_crank/handle.json b/src/main/resources/assets/create/models/block/hand_crank/handle.json deleted file mode 100644 index df816830a..000000000 --- a/src/main/resources/assets/create/models/block/hand_crank/handle.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "2": "create:block/andesite_casing_short", - "3": "create:block/smooth_dark_log_top", - "particle": "create:block/axis" - }, - "elements": [ - { - "name": "Connector", - "from": [5, 5, 11], - "to": [11, 11, 14], - "faces": { - "north": {"uv": [5, 5, 11, 11], "texture": "#3"}, - "east": {"uv": [13, 6, 16, 12], "texture": "#3"}, - "south": {"uv": [5, 5, 11, 11], "texture": "#3"}, - "west": {"uv": [0, 3, 3, 9], "texture": "#3"}, - "up": {"uv": [6, 0, 12, 3], "texture": "#3"}, - "down": {"uv": [6, 13, 12, 16], "texture": "#3"} - } - }, - { - "name": "Arm", - "from": [-2, 6, 10], - "to": [14, 10, 13], - "faces": { - "north": {"uv": [0, 6, 16, 10], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 3], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 6, 16, 10], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 3], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 6, 16, 9], "texture": "#2"}, - "down": {"uv": [0, 6, 16, 9], "texture": "#2"} - } - }, - { - "name": "Connector", - "from": [0, 7, 9], - "to": [2, 9, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "east": {"uv": [0, 0, 1, 2], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 2], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 2, 1], "texture": "#2"} - } - }, - { - "name": "Grip", - "from": [-0.5, 6.5, 3], - "to": [2.5, 9.5, 9], - "rotation": {"angle": 45, "axis": "z", "origin": [1, 8, 9]}, - "faces": { - "north": {"uv": [6, 11, 9, 14], "rotation": 90, "texture": "#0"}, - "east": {"uv": [7, 1, 10, 7], "rotation": 90, "texture": "#0"}, - "south": {"uv": [7, 5, 10, 8], "texture": "#0"}, - "west": {"uv": [7, 1, 10, 7], "rotation": 90, "texture": "#0"}, - "up": {"uv": [7, 1, 10, 7], "texture": "#0"}, - "down": {"uv": [7, 1, 10, 7], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "shaft_half", - "origin": [8, 8, 8], - "children": [0] - }, 1, 2, 3] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hand_crank/item.json b/src/main/resources/assets/create/models/block/hand_crank/item.json deleted file mode 100644 index 5a8af5816..000000000 --- a/src/main/resources/assets/create/models/block/hand_crank/item.json +++ /dev/null @@ -1,123 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "2": "create:block/andesite_casing_short", - "4": "create:block/smooth_dark_log_top", - "particle": "create:block/axis" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 6, 11], - "to": [10, 10, 16], - "shade": false, - "faces": { - "east": {"uv": [6, 0, 10, 5], "rotation": 270, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "west": {"uv": [6, 0, 10, 5], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6, 0, 10, 5], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6, 0, 10, 5], "texture": "#0"} - } - }, - { - "name": "Connector", - "from": [5, 5, 11], - "to": [11, 11, 14], - "faces": { - "north": {"uv": [5, 5, 11, 11], "texture": "#4"}, - "east": {"uv": [13, 5, 16, 11], "texture": "#4"}, - "south": {"uv": [5, 5, 11, 11], "texture": "#4"}, - "west": {"uv": [0, 5, 3, 11], "texture": "#4"}, - "up": {"uv": [5, 0, 11, 3], "texture": "#4"}, - "down": {"uv": [4, 13, 10, 16], "texture": "#4"} - } - }, - { - "name": "Arm", - "from": [-2, 6, 10], - "to": [14, 10, 13], - "faces": { - "north": {"uv": [0, 6, 16, 10], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 3], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 6, 16, 10], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 3], "rotation": 90, "texture": "#2"}, - "up": {"uv": [0, 6, 16, 9], "texture": "#2"}, - "down": {"uv": [0, 6, 16, 9], "texture": "#2"} - } - }, - { - "name": "Connector", - "from": [0, 7, 9], - "to": [2, 9, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "east": {"uv": [0, 0, 1, 2], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 2], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "down": {"uv": [0, 0, 2, 1], "texture": "#2"} - } - }, - { - "name": "Grip", - "from": [-0.5, 6.5, 3], - "to": [2.5, 9.5, 9], - "rotation": {"angle": 45, "axis": "z", "origin": [1, 8, 9]}, - "faces": { - "north": {"uv": [6, 11, 9, 14], "rotation": 90, "texture": "#0"}, - "east": {"uv": [7, 1, 10, 7], "rotation": 90, "texture": "#0"}, - "south": {"uv": [7, 5, 10, 8], "texture": "#0"}, - "west": {"uv": [7, 1, 10, 7], "rotation": 90, "texture": "#0"}, - "up": {"uv": [7, 1, 10, 7], "texture": "#0"}, - "down": {"uv": [7, 1, 10, 7], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 180, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 180, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [-0.5, -1.25, 0], - "scale": [0.75, 0.75, 0.75] - }, - "head": { - "rotation": [90, 0, 0], - "translation": [0, 14.5, 0] - }, - "fixed": { - "translation": [0, 0, -3.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "shaft_half", - "origin": [8, 8, 8], - "children": [0] - }, 1, 2, 3, 4] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hose_pulley/block.json b/src/main/resources/assets/create/models/block/hose_pulley/block.json deleted file mode 100644 index 78baefdcc..000000000 --- a/src/main/resources/assets/create/models/block/hose_pulley/block.json +++ /dev/null @@ -1,271 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/copper_gearbox", - "8": "create:block/copper_plating", - "9": "create:block/fluid_pipe", - "particle": "create:block/copper_plating" - }, - "elements": [ - { - "name": "side", - "from": [14, 2, 2], - "to": [15, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [2, 2, 14, 14], "texture": "#4"}, - "west": {"uv": [2, 2, 14, 14], "texture": "#4"}, - "down": {"uv": [2, 11, 14, 12], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "side", - "from": [1, 2, 2], - "to": [2, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [14, 2, 2, 14], "texture": "#8"}, - "west": {"uv": [14, 2, 2, 14], "texture": "#8"}, - "down": {"uv": [2, 12, 14, 11], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "side", - "from": [-1.1, 2.9, 2.9], - "to": [1, 13.1, 13.1], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -7, 7]}, - "faces": { - "north": {"uv": [11, 5, 6, 6], "rotation": 90, "texture": "#9"}, - "south": {"uv": [11, 5, 6, 6], "rotation": 270, "texture": "#9"}, - "west": {"uv": [11, 0, 6, 5], "texture": "#9"}, - "up": {"uv": [11, 5, 6, 6], "rotation": 270, "texture": "#9"}, - "down": {"uv": [11, 5, 6, 6], "rotation": 270, "texture": "#9"} - } - }, - { - "name": "side_frame", - "from": [14, 2, 14], - "to": [16, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#8"}, - "east": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#8"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#8"}, - "west": {"uv": [14, 2, 16, 14], "texture": "#8"}, - "up": {"uv": [0, 14, 2, 16], "rotation": 270, "texture": "#8"}, - "down": {"uv": [0, 0, 2, 2], "rotation": 90, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 2, 14], - "to": [2, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [2, 2, 0, 14], "texture": "#8"}, - "east": {"uv": [16, 2, 14, 14], "texture": "#8"}, - "south": {"uv": [16, 2, 14, 14], "texture": "#8"}, - "west": {"uv": [16, 2, 14, 14], "rotation": 180, "texture": "#8"}, - "up": {"uv": [0, 16, 2, 14], "rotation": 270, "texture": "#8"}, - "down": {"uv": [0, 2, 2, 0], "rotation": 90, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [14, 2, 0], - "to": [16, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [16, 2, 14, 14], "texture": "#8"}, - "east": {"uv": [16, 2, 14, 14], "rotation": 180, "texture": "#8"}, - "south": {"uv": [2, 2, 0, 14], "texture": "#8"}, - "west": {"uv": [2, 2, 0, 14], "rotation": 180, "texture": "#8"}, - "up": {"uv": [2, 14, 0, 16], "rotation": 270, "texture": "#8"}, - "down": {"uv": [2, 0, 0, 2], "rotation": 90, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 2, 0], - "to": [2, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#8"}, - "east": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#8"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#8"}, - "west": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#8"}, - "up": {"uv": [2, 16, 0, 14], "rotation": 270, "texture": "#8"}, - "down": {"uv": [2, 2, 0, 0], "rotation": 90, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [14, 0, 0], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [0, 14, 2, 16], "texture": "#8"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#8"}, - "south": {"uv": [14, 14, 16, 16], "texture": "#8"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#8"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [14, 14, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 16, 2, 14], "texture": "#8"}, - "east": {"uv": [0, 16, 16, 14], "texture": "#8"}, - "south": {"uv": [14, 16, 16, 14], "texture": "#8"}, - "west": {"uv": [0, 16, 16, 14], "texture": "#8"}, - "up": {"uv": [0, 16, 16, 14], "rotation": 90, "texture": "#8"}, - "down": {"uv": [0, 16, 16, 14], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 0, 0], - "to": [2, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [2, 14, 0, 16], "texture": "#8"}, - "east": {"uv": [16, 14, 0, 16], "texture": "#8"}, - "south": {"uv": [16, 14, 14, 16], "texture": "#8"}, - "west": {"uv": [16, 14, 0, 16], "texture": "#8"}, - "up": {"uv": [0, 16, 16, 14], "rotation": 90, "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 14, 0], - "to": [2, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [2, 16, 0, 14], "texture": "#8"}, - "east": {"uv": [16, 16, 0, 14], "texture": "#8"}, - "south": {"uv": [16, 16, 14, 14], "texture": "#8"}, - "west": {"uv": [16, 16, 0, 14], "texture": "#8"}, - "up": {"uv": [0, 16, 16, 14], "rotation": 270, "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "front", - "from": [2, 1, 13], - "to": [14, 3, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#8"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "south": {"uv": [2, 14, 14, 16], "texture": "#8"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#8"}, - "down": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#8"} - } - }, - { - "name": "front", - "from": [2, 1, 1], - "to": [14, 3, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [14, 14, 2, 16], "texture": "#8"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "south": {"uv": [14, 14, 2, 16], "rotation": 180, "texture": "#8"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "up": {"uv": [2, 2, 14, 0], "texture": "#8"}, - "down": {"uv": [2, 16, 14, 14], "rotation": 180, "texture": "#8"} - } - }, - { - "name": "front", - "from": [2, 13, 1], - "to": [14, 15, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [14, 16, 2, 14], "texture": "#8"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "south": {"uv": [14, 2, 2, 0], "texture": "#8"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "up": {"uv": [14, 15, 2, 13], "texture": "#8"}, - "down": {"uv": [14, 2, 2, 0], "rotation": 180, "texture": "#8"} - } - }, - { - "name": "front", - "from": [2, 13, 13], - "to": [14, 15, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [2, 2, 14, 0], "texture": "#8"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "south": {"uv": [2, 16, 14, 14], "texture": "#8"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "up": {"uv": [14, 13, 2, 15], "texture": "#8"}, - "down": {"uv": [14, 0, 2, 2], "texture": "#8"} - } - }, - { - "name": "top", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [2, 1, 14, 3], "rotation": 180, "texture": "#8"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "south": {"uv": [2, 13, 14, 15], "texture": "#8"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "up": {"uv": [2, 2, 14, 14], "texture": "#8"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#8"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [] - }, - { - "name": "rope_half_magnet", - "origin": [8, 8, 8], - "children": [] - }, 15] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hose_pulley/item.json b/src/main/resources/assets/create/models/block/hose_pulley/item.json deleted file mode 100644 index 2554a770b..000000000 --- a/src/main/resources/assets/create/models/block/hose_pulley/item.json +++ /dev/null @@ -1,381 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "4": "create:block/copper_gearbox", - "5": "create:block/hose_pulley_rope", - "6": "create:block/hose_pulley_magnet", - "8": "create:block/copper_plating", - "9": "create:block/fluid_pipe", - "particle": "create:block/copper_plating" - }, - "elements": [ - { - "name": "coil", - "from": [4, 4, 2], - "to": [12, 12, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "east": {"uv": [2, 1, 14, 9], "texture": "#5"}, - "west": {"uv": [2, 1, 14, 9], "rotation": 180, "texture": "#5"}, - "up": {"uv": [2, 1, 14, 9], "rotation": 270, "texture": "#5"}, - "down": {"uv": [2, 1, 14, 9], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "coil", - "from": [3.5, 3.5, 3], - "to": [12.5, 12.5, 7], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "north": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "east": {"uv": [0, 3, 4, 12], "rotation": 180, "texture": "#5"}, - "south": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "west": {"uv": [0, 3, 4, 12], "texture": "#5"}, - "up": {"uv": [0, 3, 4, 12], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 3, 4, 12], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "coil", - "from": [3.5, 3.5, 9], - "to": [12.5, 12.5, 13], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, -4]}, - "faces": { - "north": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "east": {"uv": [0, 3, 4, 12], "rotation": 180, "texture": "#5"}, - "south": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "west": {"uv": [0, 3, 4, 12], "texture": "#5"}, - "up": {"uv": [0, 3, 4, 12], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 3, 4, 12], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "side", - "from": [2, 2, 14], - "to": [14, 14, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#4"}, - "south": {"uv": [2, 2, 14, 14], "texture": "#4"}, - "down": {"uv": [2, 11, 14, 12], "texture": "#4"} - } - }, - { - "name": "side", - "from": [2, 2, 1], - "to": [14, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [14, 2, 2, 14], "texture": "#8"}, - "south": {"uv": [14, 2, 2, 14], "texture": "#8"}, - "down": {"uv": [2, 12, 14, 11], "texture": "#4"} - } - }, - { - "name": "side", - "from": [3, 3, -1], - "to": [13, 13, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [9, -7, 7]}, - "faces": { - "north": {"uv": [11, 0, 6, 5], "texture": "#9"}, - "east": {"uv": [11, 5, 6, 6], "rotation": 90, "texture": "#9"}, - "west": {"uv": [11, 5, 6, 6], "rotation": 270, "texture": "#9"}, - "up": {"uv": [11, 5, 6, 6], "texture": "#9"}, - "down": {"uv": [11, 5, 6, 6], "rotation": 180, "texture": "#9"} - } - }, - { - "name": "side_frame", - "from": [0, 2, 14], - "to": [2, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#8"}, - "east": {"uv": [0, 2, 2, 14], "texture": "#8"}, - "south": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#8"}, - "west": {"uv": [14, 2, 16, 14], "texture": "#8"}, - "up": {"uv": [0, 14, 2, 16], "texture": "#8"}, - "down": {"uv": [0, 0, 2, 2], "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 2, 0], - "to": [2, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [16, 2, 14, 14], "rotation": 180, "texture": "#8"}, - "east": {"uv": [2, 2, 0, 14], "texture": "#8"}, - "south": {"uv": [16, 2, 14, 14], "texture": "#8"}, - "west": {"uv": [16, 2, 14, 14], "texture": "#8"}, - "up": {"uv": [0, 16, 2, 14], "texture": "#8"}, - "down": {"uv": [0, 2, 2, 0], "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [14, 2, 14], - "to": [16, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [2, 2, 0, 14], "rotation": 180, "texture": "#8"}, - "east": {"uv": [16, 2, 14, 14], "texture": "#8"}, - "south": {"uv": [16, 2, 14, 14], "rotation": 180, "texture": "#8"}, - "west": {"uv": [2, 2, 0, 14], "texture": "#8"}, - "up": {"uv": [2, 14, 0, 16], "texture": "#8"}, - "down": {"uv": [2, 0, 0, 2], "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [14, 2, 0], - "to": [16, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#8"}, - "east": {"uv": [14, 2, 16, 14], "texture": "#8"}, - "south": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#8"}, - "west": {"uv": [0, 2, 2, 14], "texture": "#8"}, - "up": {"uv": [2, 16, 0, 14], "texture": "#8"}, - "down": {"uv": [2, 2, 0, 0], "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 0, 14], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#8"}, - "east": {"uv": [0, 14, 2, 16], "texture": "#8"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#8"}, - "west": {"uv": [14, 14, 16, 16], "texture": "#8"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 14, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 16, 16, 14], "texture": "#8"}, - "east": {"uv": [0, 16, 2, 14], "texture": "#8"}, - "south": {"uv": [0, 16, 16, 14], "texture": "#8"}, - "west": {"uv": [14, 16, 16, 14], "texture": "#8"}, - "up": {"uv": [0, 16, 16, 14], "rotation": 180, "texture": "#8"}, - "down": {"uv": [0, 16, 16, 14], "rotation": 180, "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 0, 0], - "to": [16, 2, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [16, 14, 0, 16], "texture": "#8"}, - "east": {"uv": [2, 14, 0, 16], "texture": "#8"}, - "south": {"uv": [16, 14, 0, 16], "texture": "#8"}, - "west": {"uv": [16, 14, 14, 16], "texture": "#8"}, - "up": {"uv": [0, 16, 16, 14], "rotation": 180, "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#8"} - } - }, - { - "name": "side_frame", - "from": [0, 14, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [16, 16, 0, 14], "texture": "#8"}, - "east": {"uv": [2, 16, 0, 14], "texture": "#8"}, - "south": {"uv": [16, 16, 0, 14], "texture": "#8"}, - "west": {"uv": [16, 16, 14, 14], "texture": "#8"}, - "up": {"uv": [0, 16, 16, 14], "texture": "#8"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#8"} - } - }, - { - "name": "front", - "from": [1, 1, 2], - "to": [3, 3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "east": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#8"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "west": {"uv": [2, 14, 14, 16], "texture": "#8"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 270, "texture": "#8"}, - "down": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#8"} - } - }, - { - "name": "front", - "from": [13, 1, 2], - "to": [15, 3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "east": {"uv": [14, 14, 2, 16], "texture": "#8"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "west": {"uv": [14, 14, 2, 16], "rotation": 180, "texture": "#8"}, - "up": {"uv": [2, 2, 14, 0], "rotation": 90, "texture": "#8"}, - "down": {"uv": [2, 16, 14, 14], "rotation": 90, "texture": "#8"} - } - }, - { - "name": "front", - "from": [13, 13, 2], - "to": [15, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "east": {"uv": [14, 16, 2, 14], "texture": "#8"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "west": {"uv": [14, 2, 2, 0], "texture": "#8"}, - "up": {"uv": [14, 15, 2, 13], "rotation": 90, "texture": "#8"}, - "down": {"uv": [14, 2, 2, 0], "rotation": 90, "texture": "#8"} - } - }, - { - "name": "front", - "from": [1, 13, 2], - "to": [3, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "east": {"uv": [2, 2, 14, 0], "texture": "#8"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "west": {"uv": [2, 16, 14, 14], "texture": "#8"}, - "up": {"uv": [14, 13, 2, 15], "rotation": 90, "texture": "#8"}, - "down": {"uv": [14, 0, 2, 2], "rotation": 270, "texture": "#8"} - } - }, - { - "name": "Axis", - "from": [6, 6, 8], - "to": [10, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 16]}, - "faces": { - "east": {"uv": [6, 8, 10, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "west": {"uv": [6, 8, 10, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [6, 8, 10, 16], "texture": "#0"}, - "down": {"uv": [6, 8, 10, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "rope", - "from": [6, 2, 6], - "to": [10, 8, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 13, 8]}, - "faces": { - "north": {"uv": [12, 10, 16, 16], "texture": "#6"}, - "east": {"uv": [12, 10, 16, 16], "texture": "#6"}, - "south": {"uv": [12, 10, 16, 16], "texture": "#6"}, - "west": {"uv": [12, 10, 16, 16], "texture": "#6"}, - "up": {"uv": [12, 0, 16, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "drain 1", - "from": [4.5, 0, 4.5], - "to": [11.5, 2, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6.75, 14, 6]}, - "faces": { - "north": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "east": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "south": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "west": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "down": {"uv": [0, 2, 7, 9], "texture": "#6"} - } - }, - { - "name": "drain 2", - "from": [4.5, 2, 4.5], - "to": [11.5, 3, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6.75, 16, 6]}, - "faces": { - "north": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "east": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "south": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "west": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "up": {"uv": [0, 2, 7, 9], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 9, 7, 16], "texture": "#6"} - } - }, - { - "name": "drain 3", - "from": [5.5, 2, 5.5], - "to": [10.5, 5, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 16, 7]}, - "faces": { - "north": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "east": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "south": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "west": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "up": {"uv": [1, 3, 6, 8], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "top", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "east": {"uv": [2, 1, 14, 3], "rotation": 180, "texture": "#8"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#8"}, - "west": {"uv": [2, 13, 14, 15], "texture": "#8"}, - "up": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#8"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#8"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [18] - }, - { - "name": "rope_half_magnet", - "origin": [8, 8, 8], - "children": [19, 20, 21, 22] - }, 23] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hose_pulley/pulley_magnet.json b/src/main/resources/assets/create/models/block/hose_pulley/pulley_magnet.json deleted file mode 100644 index 65a249d9c..000000000 --- a/src/main/resources/assets/create/models/block/hose_pulley/pulley_magnet.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "6": "create:block/hose_pulley_magnet", - "particle": "create:block/oxidized/copper_block_0" - }, - "elements": [ - { - "name": "rope", - "from": [6, 2, 6], - "to": [10, 16, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 13, 8]}, - "faces": { - "north": {"uv": [12, 2, 16, 16], "texture": "#6"}, - "east": {"uv": [12, 2, 16, 16], "texture": "#6"}, - "south": {"uv": [12, 2, 16, 16], "texture": "#6"}, - "west": {"uv": [12, 2, 16, 16], "texture": "#6"}, - "up": {"uv": [12, 0, 16, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "drain 1", - "from": [4.5, 0, 4.5], - "to": [11.5, 2, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6.75, 14, 6]}, - "faces": { - "north": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "east": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "south": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "west": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "down": {"uv": [0, 2, 7, 9], "texture": "#6"} - } - }, - { - "name": "drain 2", - "from": [4.5, 2, 4.5], - "to": [11.5, 3, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6.75, 16, 6]}, - "faces": { - "north": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "east": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "south": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "west": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "up": {"uv": [0, 2, 7, 9], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 9, 7, 16], "texture": "#6"} - } - }, - { - "name": "drain 3", - "from": [5.5, 2, 5.5], - "to": [10.5, 5, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 16, 7]}, - "faces": { - "north": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "east": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "south": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "west": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "up": {"uv": [1, 3, 6, 8], "rotation": 90, "texture": "#6"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "rope_half_magnet", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hose_pulley/rope.json b/src/main/resources/assets/create/models/block/hose_pulley/rope.json deleted file mode 100644 index 2995519fd..000000000 --- a/src/main/resources/assets/create/models/block/hose_pulley/rope.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/rope_pulley/rope", - "textures": { - "5": "create:block/hose_pulley_rope", - "particle": "create:block/hose_pulley_rope" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hose_pulley/rope_coil.json b/src/main/resources/assets/create/models/block/hose_pulley/rope_coil.json deleted file mode 100644 index f4d01993a..000000000 --- a/src/main/resources/assets/create/models/block/hose_pulley/rope_coil.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/hose_pulley_rope" - }, - "elements": [ - { - "name": "coil", - "from": [4, 4, 2], - "to": [12, 12, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "east": {"uv": [2, 1, 14, 9], "texture": "#5"}, - "west": {"uv": [2, 1, 14, 9], "rotation": 180, "texture": "#5"}, - "up": {"uv": [2, 1, 14, 9], "rotation": 270, "texture": "#5"}, - "down": {"uv": [2, 1, 14, 9], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "coil", - "from": [3.5, 3.5, 3], - "to": [12.5, 12.5, 7], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "north": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "east": {"uv": [0, 3, 4, 12], "rotation": 180, "texture": "#5"}, - "south": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "west": {"uv": [0, 3, 4, 12], "texture": "#5"}, - "up": {"uv": [0, 3, 4, 12], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 3, 4, 12], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "coil", - "from": [3.5, 3.5, 9], - "to": [12.5, 12.5, 13], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, -4]}, - "faces": { - "north": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "east": {"uv": [0, 3, 4, 12], "rotation": 180, "texture": "#5"}, - "south": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "west": {"uv": [0, 3, 4, 12], "texture": "#5"}, - "up": {"uv": [0, 3, 4, 12], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 3, 4, 12], "rotation": 270, "texture": "#5"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hose_pulley/rope_half.json b/src/main/resources/assets/create/models/block/hose_pulley/rope_half.json deleted file mode 100644 index facd4b8b8..000000000 --- a/src/main/resources/assets/create/models/block/hose_pulley/rope_half.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/rope_pulley/rope_half", - "textures": { - "5": "create:block/hose_pulley_rope", - "particle": "create:block/hose_pulley_rope" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/hose_pulley/rope_half_magnet.json b/src/main/resources/assets/create/models/block/hose_pulley/rope_half_magnet.json deleted file mode 100644 index 665d0ab7e..000000000 --- a/src/main/resources/assets/create/models/block/hose_pulley/rope_half_magnet.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "6": "create:block/hose_pulley_magnet", - "particle": "create:block/oxidized/copper_block_0" - }, - "elements": [ - { - "name": "rope", - "from": [6, 2, 6], - "to": [10, 8, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 13, 8]}, - "faces": { - "north": {"uv": [12, 10, 16, 16], "texture": "#6"}, - "east": {"uv": [12, 10, 16, 16], "texture": "#6"}, - "south": {"uv": [12, 10, 16, 16], "texture": "#6"}, - "west": {"uv": [12, 10, 16, 16], "texture": "#6"}, - "up": {"uv": [12, 0, 16, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "drain 1", - "from": [4.5, 0, 4.5], - "to": [11.5, 2, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6.75, 14, 6]}, - "faces": { - "north": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "east": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "south": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "west": {"uv": [0, 0, 7, 2], "texture": "#6"}, - "down": {"uv": [0, 2, 7, 9], "texture": "#6"} - } - }, - { - "name": "drain 2", - "from": [4.5, 2, 4.5], - "to": [11.5, 3, 11.5], - "rotation": {"angle": 0, "axis": "y", "origin": [6.75, 16, 6]}, - "faces": { - "north": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "east": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "south": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "west": {"uv": [0, 1, 7, 2], "texture": "#6"}, - "up": {"uv": [0, 2, 7, 9], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 9, 7, 16], "texture": "#6"} - } - }, - { - "name": "drain 3", - "from": [5.5, 2, 5.5], - "to": [10.5, 5, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 16, 7]}, - "faces": { - "north": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "east": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "south": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "west": {"uv": [7, 2, 10, 7], "rotation": 270, "texture": "#6"}, - "up": {"uv": [1, 3, 6, 8], "rotation": 90, "texture": "#6"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "rope_half_magnet", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/item_drain.json b/src/main/resources/assets/create/models/block/item_drain.json deleted file mode 100644 index 60751792d..000000000 --- a/src/main/resources/assets/create/models/block/item_drain.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/item_drain_side", - "1": "create:block/item_drain_top", - "2": "create:block/copper_casing", - "3": "create:block/pump", - "particle": "create:block/item_drain_side" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#2"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#2"} - } - }, - { - "from": [0, 2, 0], - "to": [16, 13, 2], - "faces": { - "north": {"uv": [0, 3, 16, 14], "texture": "#0"}, - "east": {"uv": [14, 3, 16, 14], "texture": "#0"}, - "south": {"uv": [0, 3, 16, 14], "texture": "#0"}, - "west": {"uv": [0, 3, 2, 14], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 2], "texture": "#1"} - } - }, - { - "from": [0, 2, 14], - "to": [16, 13, 16], - "faces": { - "north": {"uv": [0, 3, 16, 14], "texture": "#0"}, - "east": {"uv": [0, 3, 2, 14], "texture": "#0"}, - "south": {"uv": [0, 3, 16, 14], "texture": "#0"}, - "west": {"uv": [14, 3, 16, 14], "texture": "#0"}, - "up": {"uv": [0, 14, 16, 16], "texture": "#1"} - } - }, - { - "from": [14, 2, 2], - "to": [16, 13, 14], - "faces": { - "east": {"uv": [2, 3, 14, 14], "texture": "#0"}, - "west": {"uv": [2, 3, 14, 14], "texture": "#0"}, - "up": {"uv": [14, 2, 16, 14], "texture": "#1"} - } - }, - { - "from": [0, 2, 2], - "to": [2, 13, 14], - "faces": { - "east": {"uv": [2, 3, 14, 14], "texture": "#0"}, - "west": {"uv": [2, 3, 14, 14], "texture": "#0"}, - "up": {"uv": [0, 2, 2, 14], "texture": "#1"} - } - }, - { - "from": [2, 12, 2], - "to": [14, 13, 14], - "faces": { - "up": {"uv": [2, 2, 14, 14], "texture": "#1"} - } - }, - { - "from": [2, 4, 2], - "to": [14, 5, 14], - "faces": { - "up": {"uv": [0, 0, 12, 12], "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/large_cogwheel.json b/src/main/resources/assets/create/models/block/large_cogwheel.json deleted file mode 100644 index c21f61a1b..000000000 --- a/src/main/resources/assets/create/models/block/large_cogwheel.json +++ /dev/null @@ -1,229 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/large_wheels", - "texture_size": [32, 32], - "textures": { - "0": "create:block/axis", - "3": "create:block/axis_top", - "particle": "block/stripped_spruce_log", - "4": "create:block/large_cogwheel" - }, - "elements": [ - { - "name": "GearCaseInnerRotated", - "from": [-2, 6.9, -2], - "to": [18, 8.9, 18], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "east": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "south": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "west": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#4"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#4"} - } - }, - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#3"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#3"} - } - }, - { - "name": "Gear2", - "from": [-7, 6.5, 6.5], - "to": [23, 9.5, 9.5], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "south": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "texture": "#4"} - } - }, - { - "name": "Gear3", - "from": [-7, 6.5, 6.5], - "to": [23, 9.5, 9.5], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "south": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "texture": "#4"} - } - }, - { - "name": "Gear4", - "from": [6.5, 6.5, -7], - "to": [9.5, 9.5, 23], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "east": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "west": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "GearCaseInner", - "from": [-2, 7, -2], - "to": [18, 9, 18], - "faces": { - "north": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "east": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "south": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "west": {"uv": [0, 10, 10, 11], "texture": "#4"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#4"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#4"} - } - }, - { - "name": "GearCaseOuter", - "from": [1, 5.5, 1], - "to": [15, 10.5, 15], - "faces": { - "north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "up": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"}, - "down": {"uv": [1.5, 1.5, 8.5, 8.5], "texture": "#4"} - } - }, - { - "name": "GearCaseOuter", - "from": [-1, 5.5, 1], - "to": [1, 10.5, 15], - "faces": { - "north": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "up": {"uv": [7, 15, 14, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [7, 15, 14, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "GearCaseOuter", - "from": [15, 5.5, 1], - "to": [17, 10.5, 15], - "faces": { - "north": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "up": {"uv": [0, 15, 7, 16], "rotation": 270, "texture": "#4"}, - "down": {"uv": [0, 15, 7, 16], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "GearCaseOuter", - "from": [1, 5.5, -1], - "to": [15, 10.5, 1], - "faces": { - "north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"}, - "up": {"uv": [7, 14, 14, 15], "rotation": 180, "texture": "#4"}, - "down": {"uv": [0, 14, 7, 15], "texture": "#4"} - } - }, - { - "name": "GearCaseOuter", - "from": [1, 5.5, 15], - "to": [15, 10.5, 17], - "faces": { - "north": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "east": {"uv": [10, 6, 12.5, 7], "rotation": 90, "texture": "#4"}, - "south": {"uv": [10, 0, 12.5, 7], "rotation": 90, "texture": "#4"}, - "west": {"uv": [10, 0, 12.5, 1], "rotation": 90, "texture": "#4"}, - "up": {"uv": [0, 14, 7, 15], "texture": "#4"}, - "down": {"uv": [7, 14, 14, 15], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "Gear", - "from": [6.5, 6.5, -7], - "to": [9.5, 9.5, 23], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "east": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "west": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Gear5", - "from": [-7, 6.5, 6.5], - "to": [23, 9.5, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "south": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "texture": "#4"} - } - }, - { - "name": "Gear6", - "from": [6.5, 6.5, -7], - "to": [9.5, 9.5, 23], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "east": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "west": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "Gear7", - "from": [-7, 6.5, 6.5], - "to": [23, 9.5, 9.5], - "faces": { - "north": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "east": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "south": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "west": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "texture": "#4"} - } - }, - { - "name": "Gear8", - "from": [6.5, 6.5, -7], - "to": [9.5, 9.5, 23], - "faces": { - "north": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "east": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "south": {"uv": [10, 9.5, 11.5, 11], "texture": "#4"}, - "west": {"uv": [0, 12.5, 15, 14], "texture": "#4"}, - "up": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 11, 15, 12.5], "rotation": 90, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/large_wheels.json b/src/main/resources/assets/create/models/block/large_wheels.json deleted file mode 100644 index 1f4be8293..000000000 --- a/src/main/resources/assets/create/models/block/large_wheels.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "parent": "block/block", - "display": { - "gui": { - "rotation": [ 30, 225, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 0.5, 0.5, 0.5 ] - }, - "fixed": { - "rotation": [ 90, 0, 0 ], - "translation": [ 0, 0, 0], - "scale":[ 0.5, 0.5, 0.5 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/machine_base/Machine Base and Inserter.bbmodel b/src/main/resources/assets/create/models/block/machine_base/Machine Base and Inserter.bbmodel deleted file mode 100644 index 51d2ccf85..000000000 --- a/src/main/resources/assets/create/models/block/machine_base/Machine Base and Inserter.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"Machine Chassis","parent":"create:item/placement_handgun","ambientocclusion":true,"resolution":{"width":16,"height":16},"elements":[{"name":"Gear","from":[-1,2.5,6.5],"to":[17,9.5,9.5],"autouv":0,"color":3,"rotation":[0,-22.5,0],"origin":[8,8,8],"faces":{"north":{"uv":[6,0,13,16],"rotation":90,"texture":0},"east":{"uv":[1,3,4,10],"texture":0},"south":{"uv":[0,0,16,7],"texture":0},"west":{"uv":[5,10,8,17],"texture":0},"up":{"uv":[0,0,16,3],"texture":0},"down":{"uv":[0,0,16,3],"texture":0}},"uuid":"1905c090-f257-78f2-e59c-ffe918b14a6e"},{"name":"Gear2","from":[-1,2.5,6.5],"to":[17,9.5,9.5],"autouv":0,"color":0,"rotation":[0,22.5,0],"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,7],"texture":0},"east":{"uv":[0,0,3,7],"texture":0},"south":{"uv":[0,0,16,7],"texture":0},"west":{"uv":[0,0,3,7],"texture":0},"up":{"uv":[0,0,16,3],"texture":0},"down":{"uv":[0,0,16,3],"texture":0}},"uuid":"823f7142-61f4-fcf3-5a47-4d39cda0f8c1"},{"name":"Gear3","from":[6.5,2.5,-1],"to":[9.5,9.5,17],"autouv":0,"color":4,"rotation":[0,22.5,0],"origin":[8,8,8],"faces":{"north":{"uv":[0,0,3,7],"texture":0},"east":{"uv":[0,0,16,7],"texture":0},"south":{"uv":[0,0,3,7],"texture":0},"west":{"uv":[0,0,16,7],"texture":0},"up":{"uv":[0,0,16,3],"rotation":90,"texture":0},"down":{"uv":[0,0,16,3],"rotation":270,"texture":0}},"uuid":"6c318c38-143d-178e-692d-3c59e8b111f6"},{"name":"Gear4","from":[6.5,2.5,-1],"to":[9.5,9.5,17],"autouv":0,"color":4,"rotation":[0,-22.5,0],"origin":[8,8,8],"faces":{"north":{"uv":[0,0,3,7],"texture":0},"east":{"uv":[0,0,16,7],"texture":0},"south":{"uv":[0,0,3,7],"texture":0},"west":{"uv":[0,0,16,7],"texture":0},"up":{"uv":[0,0,3,16],"texture":0},"down":{"uv":[0,0,3,16],"texture":0}},"uuid":"42484d2a-90a8-ed5f-30e5-52096a3ae9d9"},{"name":"GearCaseInner","from":[2,3,2],"to":[14,9,14],"autouv":0,"color":6,"rotation":[0,-22.5,0],"origin":[8,8,8],"faces":{"north":{"uv":[2,0,14,6],"texture":0},"east":{"uv":[2,0,14,6],"texture":0},"south":{"uv":[2,0,14,6],"texture":0},"west":{"uv":[2,0,14,6],"texture":0},"up":{"uv":[2,2,14,14],"texture":1},"down":{"uv":[2,2,14,14],"texture":1}},"uuid":"de109695-e2ef-8329-2496-311b6c1d3724"},{"name":"GearCaseOuter","from":[4,2,4],"to":[12,10,12],"autouv":0,"color":3,"rotation":[0,-22.5,0],"origin":[8,8,8],"faces":{"north":{"uv":[0,0,8,8],"texture":0},"east":{"uv":[0,0,8,8],"texture":0},"south":{"uv":[0,0,8,8],"texture":0},"west":{"uv":[0,0,8,8],"texture":0},"up":{"uv":[4,4,12,12],"texture":1},"down":{"uv":[4,4,12,12],"texture":1}},"uuid":"ac3d1937-3280-d7b2-efa6-80d82de37fee"},{"name":"Bottom","from":[2,1,2],"to":[14,2,14],"autouv":0,"color":1,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[2,2,14,14],"texture":2},"down":{"uv":[2,2,14,14],"texture":7}},"uuid":"423b8e43-70f1-1551-6e08-8bc372be0a4b"},{"name":"OuterSides","from":[0,2,0],"to":[16,10,16],"autouv":0,"color":2,"origin":[7.9,8,8],"faces":{"north":{"uv":[0,6,16,14],"texture":6},"east":{"uv":[0,6,16,14],"texture":6},"south":{"uv":[0,6,16,14],"texture":6},"west":{"uv":[0,6,16,14],"texture":6},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"7f1870f0-b13d-f0a0-9356-ea6a25789a1c"},{"name":"Top","from":[0,10,0],"to":[16,12,16],"autouv":0,"color":1,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,2],"texture":2},"east":{"uv":[0,0,16,2],"texture":2},"south":{"uv":[0,0,16,2],"texture":2},"west":{"uv":[0,0,16,2],"texture":2},"up":{"uv":[0,0,16,16],"texture":5},"down":{"uv":[0,0,16,16],"texture":2}},"uuid":"5a02fd03-1e4e-7cf1-8358-2eee20106b58"},{"name":"Contact","from":[1,11,1],"to":[4,13,4],"autouv":0,"color":1,"visibility":false,"origin":[8,8,8],"faces":{"north":{"uv":[13,0,16,2],"texture":2},"east":{"uv":[13,2,16,4],"texture":2},"south":{"uv":[0,2,3,4],"texture":2},"west":{"uv":[0,0,3,2],"texture":2},"up":{"uv":[0,0,3,3],"texture":2},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"647fcc36-1b31-a78e-511c-964bb6605dfc"},{"name":"REFBLOCK","from":[0,0,-16],"to":[16,16,0],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"462fffe5-b914-920e-4aaa-b47eb8a2d429"},{"name":"Axis","from":[6,0,22],"to":[10,16,26],"autouv":0,"color":3,"shade":false,"rotation":[0,-45,0],"origin":[8,8,24],"faces":{"north":{"uv":[6,0,10,16],"texture":3},"east":{"uv":[6,0,10,16],"texture":3},"south":{"uv":[6,0,10,16],"texture":3},"west":{"uv":[6,0,10,16],"texture":3},"up":{"uv":[6,6,10,10],"texture":4},"down":{"uv":[6,6,10,10],"texture":4}},"uuid":"8f373853-4cbc-bb1a-e87a-b2e1e02ca6a9"},{"name":"Gear","from":[-1,6.5,22],"to":[17,9.5,25],"autouv":0,"color":6,"rotation":[0,-45,0],"origin":[8,8,24],"faces":{"north":{"uv":[6,0,9,16],"rotation":90,"texture":0},"east":{"uv":[1,3,4,6],"texture":0},"south":{"uv":[0,0,16,3],"texture":0},"west":{"uv":[5,10,8,13],"texture":0},"up":{"uv":[0,0,16,3],"texture":0},"down":{"uv":[0,0,16,3],"texture":0}},"uuid":"c6ee8086-a847-13c0-615c-1e09e7ebb0e1"},{"name":"Gear2","from":[-1.2720779386421448,6.5,22.272077938642152],"to":[16.727922061357855,9.5,25.272077938642152],"autouv":0,"color":5,"origin":[8,8,24],"faces":{"north":{"uv":[0,0,16,3],"texture":0},"east":{"uv":[0,0,3,3],"texture":0},"south":{"uv":[0,0,16,3],"texture":0},"west":{"uv":[0,0,3,3],"texture":0},"up":{"uv":[0,0,16,3],"texture":0},"down":{"uv":[0,0,16,3],"texture":0}},"uuid":"ac653a51-86d8-499e-704a-ebcd3368143f"},{"name":"Gear3","from":[6.727922061357848,6.5,15.272077938642152],"to":[9.727922061357848,9.5,33.272077938642155],"autouv":0,"color":4,"origin":[8,8,24],"faces":{"north":{"uv":[0,0,3,3],"texture":0},"east":{"uv":[0,0,16,3],"texture":0},"south":{"uv":[0,0,3,3],"texture":0},"west":{"uv":[0,0,16,3],"texture":0},"up":{"uv":[0,0,16,3],"rotation":90,"texture":0},"down":{"uv":[0,0,16,3],"rotation":270,"texture":0}},"uuid":"56f01dca-86b2-4c12-53d9-3a71e521689d"},{"name":"Gear4","from":[6.5,6.5,15],"to":[9.5,9.5,33],"autouv":0,"color":3,"rotation":[0,-45,0],"origin":[8,8,24],"faces":{"north":{"uv":[0,0,3,3],"texture":0},"east":{"uv":[0,0,16,3],"texture":0},"south":{"uv":[0,0,3,3],"texture":0},"west":{"uv":[0,0,16,3],"texture":0},"up":{"uv":[0,0,3,16],"texture":0},"down":{"uv":[0,0,3,16],"texture":0}},"uuid":"3f2ccdae-f4cc-abf4-8ee1-12c71622ee83"},{"name":"GearCaseOuter","from":[4,6,20],"to":[12,10,28],"autouv":0,"color":0,"rotation":[0,-45,0],"origin":[8,8,24],"faces":{"north":{"uv":[0,0,8,4],"texture":0},"east":{"uv":[0,0,8,4],"texture":0},"south":{"uv":[0,0,8,4],"texture":0},"west":{"uv":[0,0,8,4],"texture":0},"up":{"uv":[4,4,12,12],"texture":1},"down":{"uv":[4,4,12,12],"texture":1}},"uuid":"c2dbee1a-8b6e-0567-51d7-9455d7ee2414"},{"name":"TopAxis","from":[5,10,5],"to":[11,13,11],"autouv":0,"color":3,"shade":false,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,6,3],"texture":4},"east":{"uv":[0,0,6,3],"texture":4},"south":{"uv":[0,0,6,3],"texture":4},"west":{"uv":[0,0,6,3],"texture":4},"up":{"uv":[0,0,6,6],"texture":4},"down":{"uv":[6,6,12,12],"texture":4}},"uuid":"4cf832d7-69a0-2705-891b-bca6dbae7cbe"},{"name":"Contact","from":[12,11,1],"to":[15,13,4],"autouv":0,"color":1,"visibility":false,"origin":[8,8,8],"faces":{"north":{"uv":[16,0,13,2],"texture":2},"east":{"uv":[3,0,0,2],"texture":2},"south":{"uv":[3,2,0,4],"texture":2},"west":{"uv":[16,2,13,4],"texture":2},"up":{"uv":[3,0,0,3],"texture":2},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"d7ea5c76-c0ae-f0e0-3255-ea547a566e0c"},{"name":"Contact","from":[1,11,12],"to":[4,13,15],"autouv":0,"color":1,"visibility":false,"origin":[8,8,8],"faces":{"north":{"uv":[3,2,0,4],"texture":2},"east":{"uv":[16,2,13,4],"texture":2},"south":{"uv":[16,0,13,2],"texture":2},"west":{"uv":[3,0,0,2],"texture":2},"up":{"uv":[0,3,3,0],"texture":2},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"abf44d5e-7e73-1d61-4cb9-bf139c1bacfc"},{"name":"Contact","from":[12,11,12],"to":[15,13,15],"autouv":0,"color":1,"visibility":false,"origin":[8,8,8],"faces":{"north":{"uv":[0,2,3,4],"texture":2},"east":{"uv":[0,0,3,2],"texture":2},"south":{"uv":[13,0,16,2],"texture":2},"west":{"uv":[13,2,16,4],"texture":2},"up":{"uv":[3,3,0,0],"texture":2},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"32908b97-60cc-1939-df29-5cd4c6017b42"},{"name":"lower arm","from":[0.5147186257614296,10.414213562373092,4],"to":[3.5147186257614296,26.414213562373092,7.5],"autouv":1,"color":3,"rotation":[0,0,-45],"origin":[9,9,8],"faces":{"north":{"uv":[0,0,16,3],"rotation":90},"east":{"uv":[0,0,16,3.5],"rotation":270},"south":{"uv":[0,0,16,3],"rotation":270},"west":{"uv":[0,0,16,3.5],"rotation":270},"up":{"uv":[0,0,3.5,3],"rotation":270},"down":{"uv":[0,0,3.5,3],"rotation":270}},"uuid":"69955f9d-14dc-bf36-f6e2-88a0e6366fe3"},{"name":"lower arm","from":[0.5147186257614296,10.414213562373092,8.5],"to":[3.5147186257614296,26.414213562373092,12],"autouv":1,"color":3,"rotation":[0,0,-45],"origin":[9,9,8],"faces":{"north":{"uv":[0,0,16,3],"rotation":90},"east":{"uv":[0,0,16,3.5],"rotation":270},"south":{"uv":[0,0,16,3],"rotation":270},"west":{"uv":[0,0,16,3.5],"rotation":270},"up":{"uv":[0,0,3.5,3],"rotation":270},"down":{"uv":[0,0,3.5,3],"rotation":270}},"uuid":"996c1021-e4de-c8b1-7fe3-6a6c5d5a3f79"},{"name":"upper arm","from":[-12.778174593052022,23.263455967290597,4.5],"to":[3.2218254069479784,26.263455967290597,7.5],"autouv":1,"color":3,"rotation":[0,0,-45],"origin":[10,9,8],"faces":{"north":{"uv":[0,0,16,3]},"east":{"uv":[0,0,3,3]},"south":{"uv":[0,0,16,3]},"west":{"uv":[0,0,3,3]},"up":{"uv":[0,0,16,3]},"down":{"uv":[0,0,16,3]}},"uuid":"51a7133c-9d16-30f0-6e6f-a99c2e53e281"},{"name":"upper arm","from":[-12.778174593052022,23.263455967290597,8.5],"to":[3.2218254069479784,26.263455967290597,11.5],"autouv":1,"color":3,"rotation":[0,0,-45],"origin":[10,9,8],"faces":{"north":{"uv":[0,0,16,3]},"east":{"uv":[0,0,3,3]},"south":{"uv":[0,0,16,3]},"west":{"uv":[0,0,3,3]},"up":{"uv":[0,0,16,3]},"down":{"uv":[0,0,16,3]}},"uuid":"d7382243-eeb5-aa2b-4bc4-bab54db4b3f8"},{"name":"REFBLOCK","from":[0,16,-16],"to":[16,32,0],"autouv":1,"color":4,"origin":[8,8,8],"faces":{"north":{"uv":[0,0,16,16]},"east":{"uv":[0,0,16,16]},"south":{"uv":[0,0,16,16]},"west":{"uv":[0,0,16,16]},"up":{"uv":[0,0,16,16]},"down":{"uv":[0,0,16,16]}},"uuid":"9db39fec-8637-bf91-05fd-04a5303f0470"},{"name":"end","from":[3,35,3],"to":[6,38,13],"autouv":1,"color":3,"origin":[10,9,8],"faces":{"north":{"uv":[0,0,3,3]},"east":{"uv":[0,0,10,3]},"south":{"uv":[0,0,3,3]},"west":{"uv":[0,0,10,3]},"up":{"uv":[0,0,3,10]},"down":{"uv":[0,0,3,10]}},"uuid":"3b54d886-f636-f749-1cb5-787a968e787d"},{"name":"end","from":[1,35,6],"to":[3,38,10],"autouv":1,"color":3,"origin":[10,9,8],"faces":{"north":{"uv":[0,0,2,3]},"east":{"uv":[0,0,4,3]},"south":{"uv":[0,0,2,3]},"west":{"uv":[0,0,4,3]},"up":{"uv":[0,0,2,4]},"down":{"uv":[0,0,2,4]}},"uuid":"fcf47c50-de00-5e48-9654-f16b7d0877fe"},{"name":"end","from":[-1,33.5,5],"to":[1,39.5,11],"autouv":1,"color":3,"origin":[10,9,8],"faces":{"north":{"uv":[0,0,2,6]},"east":{"uv":[0,0,6,6]},"south":{"uv":[0,0,2,6]},"west":{"uv":[0,0,6,6]},"up":{"uv":[0,0,2,6]},"down":{"uv":[0,0,2,6]}},"uuid":"d6f1ea29-2e6b-7d1e-6587-d02083c05b0e"},{"name":"claw","from":[7.43304936202237,40.00516006524515,5.25],"to":[12.43304936202237,42.00516006524515,10.75],"autouv":1,"color":3,"rotation":[0,0,22.5],"origin":[10,9,8],"faces":{"north":{"uv":[0,0,5,2]},"east":{"uv":[0,0,5.5,2]},"south":{"uv":[0,0,5,2]},"west":{"uv":[0,0,5.5,2]},"up":{"uv":[0,0,5,5.5]},"down":{"uv":[0,0,5,5.5]}},"uuid":"2201f5b2-bdb9-fdee-348d-9801bbe6eac5"},{"name":"claw","from":[-13.614539418057566,26.808214222875627,5.25],"to":[-8.614539418057566,28.808214222875627,10.75],"autouv":1,"color":3,"rotation":[0,0,-22.5],"origin":[10,9,8],"faces":{"north":{"uv":[0,0,5,2]},"east":{"uv":[0,0,5.5,2]},"south":{"uv":[0,0,5,2]},"west":{"uv":[0,0,5.5,2]},"up":{"uv":[0,0,5,5.5]},"down":{"uv":[0,0,5,5.5]}},"uuid":"3239715e-bdae-5800-7503-3c576eb98739"},{"name":"Cog","from":[5.5,34.5,7],"to":[6.5,39.5,9],"autouv":0,"color":1,"origin":[10,9,8],"faces":{"north":{"uv":[6,7,8,12],"texture":0},"east":{"uv":[5,3,7,8],"texture":0},"south":{"uv":[4,4,5,9],"texture":0},"west":{"uv":[4,6,6,11],"texture":0},"up":{"uv":[4,6,5,8],"texture":0},"down":{"uv":[5,6,6,8],"texture":0}},"uuid":"99a6933b-b579-d749-7778-9ef6fee23041"},{"name":"Cog","from":[26.47056274847714,29.12741699796952,7],"to":[27.47056274847714,34.12741699796952,9],"autouv":0,"color":2,"rotation":[0,0,45],"origin":[10,9,8],"faces":{"north":{"uv":[6,7,8,12],"texture":0},"east":{"uv":[5,3,7,8],"texture":0},"south":{"uv":[4,4,5,9],"texture":0},"west":{"uv":[4,6,6,11],"texture":0},"up":{"uv":[4,6,5,8],"texture":0},"down":{"uv":[5,6,6,8],"texture":0}},"uuid":"8d081da0-26ec-3c52-f18c-da8ddd5ddf16"},{"name":"Cog","from":[-13.127416997969522,23.470562748477136,7],"to":[-12.127416997969522,28.470562748477136,9],"autouv":0,"color":2,"rotation":[0,0,-45],"origin":[10,8.999999999999996,8],"faces":{"north":{"uv":[6,7,8,12],"texture":0},"east":{"uv":[5,3,7,8],"texture":0},"south":{"uv":[4,4,5,9],"texture":0},"west":{"uv":[4,6,6,11],"texture":0},"up":{"uv":[4,6,5,8],"texture":0},"down":{"uv":[5,6,6,8],"texture":0}},"uuid":"81874aab-e270-05b9-97d3-f471bfdff409"},{"name":"Cog","from":[3.5,36.5,7],"to":[8.5,37.5,9],"autouv":0,"color":6,"origin":[10,9,8],"faces":{"north":{"uv":[6,7,8,12],"texture":0},"east":{"uv":[5,3,7,4],"texture":0},"south":{"uv":[4,4,9,5],"texture":0},"west":{"uv":[4,6,6,7],"texture":0},"up":{"uv":[4,6,5,8],"texture":0},"down":{"uv":[5,6,6,8],"texture":0}},"uuid":"0abb5bc9-e0ca-71da-f729-cb21b300b0bc"},{"name":"Cog","from":[15.75,23,7],"to":[16.75,28,9],"autouv":0,"color":1,"origin":[9.25,9,8],"faces":{"north":{"uv":[6,7,8,12],"texture":0},"east":{"uv":[5,3,7,8],"texture":0},"south":{"uv":[4,4,5,9],"texture":0},"west":{"uv":[4,6,6,11],"texture":0},"up":{"uv":[4,6,5,8],"texture":0},"down":{"uv":[5,6,6,8],"texture":0}},"uuid":"670bed5e-9c37-ff05-42d8-e57125ce8c4a"},{"name":"Cog","from":[25.36700935788387,13.217514421272199,7],"to":[26.36700935788387,18.2175144212722,9],"autouv":0,"color":2,"rotation":[0,0,45],"origin":[9.25,9,8],"faces":{"north":{"uv":[6,7,8,12],"texture":0},"east":{"uv":[5,3,7,8],"texture":0},"south":{"uv":[4,4,5,9],"texture":0},"west":{"uv":[4,6,6,11],"texture":0},"up":{"uv":[4,6,5,8],"texture":0},"down":{"uv":[5,6,6,8],"texture":0}},"uuid":"91471084-8513-c0e4-cd91-b64cb898acc6"},{"name":"Cog","from":[2.0324855787277976,23.117009357883873,7],"to":[3.0324855787277976,28.117009357883873,9],"autouv":0,"color":2,"rotation":[0,0,-45],"origin":[9.25,9.000000000000004,8],"faces":{"north":{"uv":[6,7,8,12],"texture":0},"east":{"uv":[5,3,7,8],"texture":0},"south":{"uv":[4,4,5,9],"texture":0},"west":{"uv":[4,6,6,11],"texture":0},"up":{"uv":[4,6,5,8],"texture":0},"down":{"uv":[5,6,6,8],"texture":0}},"uuid":"0846472a-3752-34a2-a08f-e44dfe5b9cfa"},{"name":"Cog","from":[13.75,25,7],"to":[18.75,26,9],"autouv":0,"color":6,"origin":[9.25,9,8],"faces":{"north":{"uv":[6,7,8,12],"texture":0},"east":{"uv":[5,3,7,4],"texture":0},"south":{"uv":[4,4,9,5],"texture":0},"west":{"uv":[4,6,6,7],"texture":0},"up":{"uv":[4,6,5,8],"texture":0},"down":{"uv":[5,6,6,8],"texture":0}},"uuid":"15f2e19b-685d-d514-dcc4-0a1839215b4a"},{"name":"base","from":[3,12,3],"to":[13,16,13],"autouv":1,"color":3,"origin":[9,13,8],"faces":{"north":{"uv":[0,0,10,4]},"east":{"uv":[0,0,10,4]},"south":{"uv":[0,0,10,4]},"west":{"uv":[0,0,10,4]},"up":{"uv":[0,0,10,10]},"down":{"uv":[0,0,10,10]}},"uuid":"541c285f-7c99-7ab6-1c9b-09d49183212c"},{"name":"GearCaseInner","from":[2,7,18],"to":[14,9,30],"autouv":0,"color":3,"rotation":[0,-45,0],"origin":[8,8,24],"faces":{"north":{"uv":[0,0,12,2],"texture":0},"east":{"uv":[0,0,12,2],"texture":0},"south":{"uv":[0,0,12,2],"texture":0},"west":{"uv":[0,0,12,2],"texture":0},"up":{"uv":[2,2,14,14],"texture":1},"down":{"uv":[2,2,14,14],"texture":1}},"uuid":"df9d8203-7b13-6153-b8db-dc3ed5df6771"},{"name":"BottomRim","from":[0,0,14],"to":[16,2,16],"autouv":0,"color":1,"origin":[8,8,8],"faces":{"north":{"uv":[0,14,16,16],"texture":2},"east":{"uv":[0,14,2,16],"texture":2},"south":{"uv":[0,14,16,16],"texture":2},"west":{"uv":[14,14,16,16],"texture":2},"up":{"uv":[0,14,16,16],"texture":5},"down":{"uv":[0,0,16,2],"texture":2}},"uuid":"7010d2fe-6642-9350-63c5-d8e944c1925c"},{"name":"BottomRim","from":[0,0,0],"to":[16,2,2],"autouv":0,"color":1,"origin":[8,8,8],"faces":{"north":{"uv":[16,14,0,16],"texture":2},"east":{"uv":[2,14,0,16],"texture":2},"south":{"uv":[16,14,0,16],"texture":2},"west":{"uv":[16,14,14,16],"texture":2},"up":{"uv":[0,16,16,14],"texture":5},"down":{"uv":[0,2,16,0],"texture":2}},"uuid":"b10722de-6ec9-97b8-374d-258b8d4fdcdd"},{"name":"BottomRim","from":[0,0,2],"to":[2,2,14],"autouv":0,"color":1,"origin":[8,8,8],"faces":{"north":{"uv":[0,14,2,16],"texture":2},"east":{"uv":[0,14,12,16],"texture":2},"south":{"uv":[0,14,2,16],"texture":2},"west":{"uv":[2,14,14,16],"texture":2},"up":{"uv":[0,2,2,14],"texture":5},"down":{"uv":[0,2,2,14],"texture":2}},"uuid":"a5f55847-dcf7-adb2-8d91-80b33feadb27"},{"name":"BottomRim","from":[14,0,2],"to":[16,2,14],"autouv":0,"color":1,"origin":[8,8,8],"faces":{"north":{"uv":[2,14,0,16],"texture":2},"east":{"uv":[14,14,2,16],"texture":2},"south":{"uv":[2,14,0,16],"texture":2},"west":{"uv":[12,14,0,16],"texture":2},"up":{"uv":[2,2,0,14],"texture":5},"down":{"uv":[2,2,0,14],"texture":2}},"uuid":"e123f2ef-bc61-0e9d-71fd-218a42b08f1d"},{"name":"BottomAxis","from":[6,0,6],"to":[10,8,10],"autouv":0,"color":3,"shade":false,"origin":[8,8,24],"faces":{"north":{"uv":[6,0,10,16],"texture":3},"east":{"uv":[6,0,10,16],"texture":3},"south":{"uv":[6,0,10,16],"texture":3},"west":{"uv":[6,0,10,8],"texture":3},"up":{"uv":[6,6,10,10],"texture":4},"down":{"uv":[6,6,10,10],"texture":4}},"uuid":"aabac259-41aa-1403-a2a8-28aeb93690d2"}],"outliner":["462fffe5-b914-920e-4aaa-b47eb8a2d429","9db39fec-8637-bf91-05fd-04a5303f0470",{"name":"REFCOGWHEEL","uuid":"a8e42248-94eb-fe60-2fea-4d9969bc2fe6","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["8f373853-4cbc-bb1a-e87a-b2e1e02ca6a9","c6ee8086-a847-13c0-615c-1e09e7ebb0e1","ac653a51-86d8-499e-704a-ebcd3368143f","56f01dca-86b2-4c12-53d9-3a71e521689d","3f2ccdae-f4cc-abf4-8ee1-12c71622ee83","df9d8203-7b13-6153-b8db-dc3ed5df6771","c2dbee1a-8b6e-0567-51d7-9455d7ee2414"]},{"name":"MachineBase","uuid":"d9bb133c-fbb5-9c95-4015-86e4d0705018","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"MachineBaseCogwheel","uuid":"f68f50f0-a8e3-4c4d-b327-ec5f840bea15","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["aabac259-41aa-1403-a2a8-28aeb93690d2","4cf832d7-69a0-2705-891b-bca6dbae7cbe","1905c090-f257-78f2-e59c-ffe918b14a6e","823f7142-61f4-fcf3-5a47-4d39cda0f8c1","6c318c38-143d-178e-692d-3c59e8b111f6","42484d2a-90a8-ed5f-30e5-52096a3ae9d9","de109695-e2ef-8329-2496-311b6c1d3724","ac3d1937-3280-d7b2-efa6-80d82de37fee"]},"7f1870f0-b13d-f0a0-9356-ea6a25789a1c","423b8e43-70f1-1551-6e08-8bc372be0a4b","5a02fd03-1e4e-7cf1-8358-2eee20106b58","7010d2fe-6642-9350-63c5-d8e944c1925c","a5f55847-dcf7-adb2-8d91-80b33feadb27","e123f2ef-bc61-0e9d-71fd-218a42b08f1d","b10722de-6ec9-97b8-374d-258b8d4fdcdd","647fcc36-1b31-a78e-511c-964bb6605dfc","abf44d5e-7e73-1d61-4cb9-bf139c1bacfc","d7ea5c76-c0ae-f0e0-3255-ea547a566e0c","32908b97-60cc-1939-df29-5cd4c6017b42"]},{"name":"Inserter","uuid":"118af4c6-e725-fc56-13a1-7421a3f2a2cb","export":true,"isOpen":true,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"UpperTinyCogwheel","uuid":"973793aa-c179-88a1-8712-33e7930c2719","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["99a6933b-b579-d749-7778-9ef6fee23041","8d081da0-26ec-3c52-f18c-da8ddd5ddf16","81874aab-e270-05b9-97d3-f471bfdff409","0abb5bc9-e0ca-71da-f729-cb21b300b0bc"]},{"name":"LowerTinyCogwheel","uuid":"8c52c093-e3a1-1cfb-9140-47193a57dd9f","export":true,"isOpen":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["670bed5e-9c37-ff05-42d8-e57125ce8c4a","91471084-8513-c0e4-cd91-b64cb898acc6","0846472a-3752-34a2-a08f-e44dfe5b9cfa","15f2e19b-685d-d514-dcc4-0a1839215b4a"]},"541c285f-7c99-7ab6-1c9b-09d49183212c","69955f9d-14dc-bf36-f6e2-88a0e6366fe3","996c1021-e4de-c8b1-7fe3-6a6c5d5a3f79","51a7133c-9d16-30f0-6e6f-a99c2e53e281","d7382243-eeb5-aa2b-4bc4-bab54db4b3f8","3b54d886-f636-f749-1cb5-787a968e787d","fcf47c50-de00-5e48-9654-f16b7d0877fe","d6f1ea29-2e6b-7d1e-6587-d02083c05b0e","2201f5b2-bdb9-fdee-348d-9801bbe6eac5","3239715e-bdae-5800-7503-3c576eb98739"]}],"textures":[{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\block\\stripped_spruce_log.png","name":"stripped_spruce_log.png","folder":"block","namespace":"minecraft","id":"1","particle":false,"mode":"bitmap","saved":true,"uuid":"3e6951bc-5117-a3b7-c747-89c127ca4461","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABiklEQVQ4T12Tu07DQBBFx69sHIgipQAkCsQHUPApNPRUfDaioKGIFJngrF9BZ8xN4mzjxLtz5u694+Tt5ekwK3Irs8yWeWZFlljdHixPzX9vYmesMs38uQyJff5E/81KANwtFlYPva1D7oVVHAHdYP6e4k3b2E2YWVkkvs//pu1GwOPqyrtCZ5MiqUFB3ffeDQBQIF+/cQS8vz4f7hfBAS61GGUDOO+2Lmau6js2xvkJgE1JlGzvWOa278za/uQJhZyv+s7aYRgVyJCH63C8H4dQABCA1AFgFWlqu9iMHpACBXjAVZDJQipLXQGyT/c8SdwbB6zmwZ3mAN2qrvdNQYntdh5snpsDdM0JgE7EyDrPXrkDkBcAjh5IgYZFKUgRzqOAyJgXJTHxgCuwJFumykSKPrY7k1caIp9EUmCMNW26NwMl03gKQFIoosY9EEAK5D5mCSBFl7Oy3ccTQPI5pPgEUYwC6CNzwOXXiMM4z/O8UNMK3I2sO5sowAM2NP+KT4Ue8/+w6Wvk3R8qiEVpS5vUkAAAAABJRU5ErkJggg=="},{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\block\\stripped_spruce_log_top.png","name":"stripped_spruce_log_top.png","folder":"block","namespace":"minecraft","id":"2","particle":false,"mode":"bitmap","saved":true,"uuid":"547a1f40-3900-ba19-36a0-7ae1033b776b","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABd0lEQVQ4T4VTXUsCURCd69quaGREGQkLuxBYBD1VWFREVD87gnoI6lUwCBQEJRHJMHE3lxtnltG7m+m8zN2Ze8+eMx/q7szTRESTSUTZrIUjG77FLMsipWZ3tCbSOs6rm6qrL/fd6WUcxkFIOcdmv1ZYoa/vH84jZtpjvU3q+sTVVwcu1VtdzjlOnn3RIRoEsTcNMVilXKD7WocUJJxXygxw6G9xMpyouYwk2OgOyS+t0kOtRer21NPH/iZ1BiEHQXuRQUZ/MKR8zqbXZm8mAcGNYgwAMJEBL7R3ijbXAQxwngJUd7f5EYKwZveTvNJ6goiZF7YsAUUEwGgcJhgATJjgjDxomxJeGr1ZDZYBCIM/EqSI8wBMDcIAMQHjGqCNR16yC0I9CEY8FzILaQmJIpoMlrVRusA1kEmUNpqjnAays5qHTACe3z+SADK60vdFTBKTeLFXnt6VSZRlQuK/hXp6a8dFxHpGUUSytniUXm/5g7nmmQzRL1QsAdCcJPRPAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\gearbox_top.png","name":"gearbox_top.png","folder":"block","namespace":"create","id":"3","particle":true,"mode":"bitmap","saved":true,"uuid":"769ae22a-d9d6-8f14-6113-bc24d17b1726","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABsUlEQVQ4T4VTO0vDYBQ9oSFpqvbhoyAuWl/4nMTNsX/AzYKLgn/AwT/iqqtbJ7c66SYKQqvgq7qo0EETLE0TWiP3+7hf0lbqWb7Xzcm599yr7e7tBugD13XVq2VZoHN01YhgOjeDhuvBMHQR3G7/wPddDA0m0QoC6Jom7m3HhjWQQkz7gR6LoXJbhiKonB2JINNMiDVlAo4n1yjojjCxtolq9UESzC+u4Ob0EKtTY+LRb8k/Mpqej7hpqPNLrY7ZjS08V58kQTqTxmelhKnsICi4H4jo06kjux4hoBrULk8wnJIEH44kYfksezxlCCWkgFJwm99hDR4vTkABhNeajclsukMIkfI77YeX87C/7LAG7+fHHQoomJXQvtH0kYhLBZyCcGH/YD8YyYz2pNBNwAo4hYX8Dm6uL8Mith9LPQqiObACuiMyckEpsOJDeLsqKhdYuuc1RF9wMf9MgTsx6sJ/NpILHUWM2kgfdzcOExp6IJqMCKgG93dlaIXtQpDLzaFeLqrWZd/7KVGdSATLSytimBjJjOyBVjOcRDpzTMKSA6KGiQ48tjSqjO5RjsZxzC/QoQop2JNI4QAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\axis.png","name":"axis.png","folder":"block","namespace":"create","id":"0","particle":false,"mode":"bitmap","saved":true,"uuid":"03921008-db13-4513-b083-67ecb591d234","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAo0lEQVQ4T6WTIQ4EIQxFO4IRIECAgLshMBwKO+fCggWDZVOSSVbMJjulkpTH/+X3gB/lvZ/WWhhjQO8drus6nlofD7ExhDCFEOsOGcAYA+cc5JzfK4gxTnxdKQW1VhrgPE/QWu8pQAulFEgpvRvit4XWGg2AFjjnQAJgDqSUawYkC3eQUAEJgEEyxiwLpBxsA/AXMERYW0FCCyTAvUxkwL/r/AGRGnYRGJZooQAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\axis_top.png","name":"axis_top.png","folder":"block","namespace":"create","id":"2_3","particle":false,"mode":"bitmap","saved":true,"uuid":"93881392-e691-e030-2786-3235d8e529c1","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA6UlEQVQ4T2NMDFP8z8DAwPDpyzcGPh4uOD1/1X1GkDghwAgywMLIguHtu/cMLEx/Gd58fMPw+u0HBpIMMDc0Y3j16hXDlx8fGGQklRjOXzlHmgGWZg4Md+5eANusp6bOcOnWTeINCPYS/29jZMjw+etPuHcv3rzGsHbbS+LDABaIIBoWkEQbgCuU09LS/gsICDD8+vWL4du3bwyzZs3C6iKcziwoKPgvJSXF8OPHD4YvX74wdHV1kWZAWVnZfx4eHobfv38zfP78mWHChAmkGRAbG/tfUlKSfC8QSoEweaKiCp9howYwMAAAZ+5uEWwI6EAAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\machine_base_top.png","name":"machine_base_top.png","folder":"block","namespace":"create","id":"7","particle":false,"mode":"bitmap","saved":true,"uuid":"19fc75c2-df24-68b0-0917-3a76f56d0ec3","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB60lEQVQ4T41TPU/bUBQ9L7GcmHwQF6gSZ0GGgvhIB4SydeQPdAOJpUj8AQb+CCusbEzdYKKb1UqJEhDErcWCjRhoLAgOJLGrd40dG6qIKz295+f7znv3nHPZ1vaWhxHhOE74V5Ik8O/ozDjAjDqLR+cJoihQ8mDg4vnZQS6bR9/zIDBG+227DSkzjiRzISSTaJ41EAI0T/YpKZUao3k8BdhP/hwNvsejvPoVhtHyAeYXK6h936PDVr9ECZ1OB6IoIpPNIpFI0ODPn5euCfjTl3X8MX77AAW5gLvmMR3WdZ0AnG4X/V4PSUEAYwxSOu3fXC5jZcrGx2oEgHNwqx3i4lGB3mrBtCy6LRqcOKVUQrFYxJz8QCU43fshB/qPQ9y4ZdTrdZim+V9dFEXB50oFJcHCh+U1tP+2hxyYpwe4clVomgbLsuB5b9XlANVqFdMJg0ogFXZ2d7wJeZJKeC+A3DOwsPYNtV/akMSBfhwCvKcErkL4Aimdw/XPI9ipWdRrtZEkRlWIGYlU6MRljKkQkXEmb8dJDGTkBrm8yyD9kpzN5cgDfLiuS3iqcEVG4hxcnjfANjY3PFWdw0PjKLRuYNdRTRY6kQMsL1WomYLIywVa9rtxMwU5Y5LfICEHZN0X53HHBfG6laN5Qc4/6/EPKX0MmrgAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\andesite_frame.png","name":"andesite_frame.png","folder":"block","namespace":"create","id":"9","particle":false,"mode":"bitmap","saved":true,"uuid":"c68c20b5-b0a3-763b-f94f-9d6f4e59914a","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABBklEQVQ4T2NMTkv+z4AHfP/+HS7LycnJAOIj04wgA5SVVBi+ff/JwMbGAlb89+8/hl+/vjPw8vAx/Pn/n4GFkREs/uHjBwZObn4GZsZ/DCzMzAxXrl5mgBtQVVEJUUUkqKlv+H/v3i2IAepaugxlBQUkGdDW0f7/7r07EAMEBAUYejt7yTcAFAbkeOH7j8/kh0FxefH/D+8/UBYG4FgAmSQsKEKyF7omTPh/4ewpygIR7gJODl6GlsYGkmOBooSEEojkRCMoDG5eu8zAGBUb9V9JSY0sL4BTIsgAHW1dcGaCAT5BATDzzw9ETgTxYWq4ONnB8vAwAHFg2RaUVWEAPSsjq4OpAQAHwacazb45jAAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\gearbox.png","name":"gearbox.png","folder":"block","namespace":"create","id":"8","particle":false,"mode":"bitmap","saved":true,"uuid":"6ef4d314-266a-0264-181f-6b0bc80dc040","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACFklEQVQ4T41Tz08TQRh9222nLJZut+hC8SJFMVIgBtSbRy4mjYk3SbxI4j/AwX/EK1y5cak3jAe9tI0oaauJIBUS7MLyaxsat912WTOzmekuB/W7zH4z376Z9973SUuvljz8JWzbFqeKooDmwVWiABPZ2/htd0BIlBW77iUcx8ZQIome5yEqSWzfalpQrqmQpUtEZRm1r1UIgNq7FVYUjw+yVY0DzY6/BoPu0bj54Bnq9W0f4O7UDLbevsHs+A126PT8G3m0Ow4G4kTkP80W7jx+jt36Dx8gpaVwVtvAuJ4ALd52buHQMEAIQVJVIUkSZFnGJNljQGfNFvRHAQCqgVleQ1pNoHiUYj+WSyUcmSa7dUTXkRkdZd9P7yugL6AU7PZFX4Odj2vIqASbp8OoVipoGEaIxlgmg1wuh4e6BaPpID29AOvc6mvQ+LDKXvD5XEehUIDruiEASiGfz2NOMwUF5sLy62VvWLsuKPwPAKVwb+EltjbLfRHdnQ32gi/WCErF4j8pUBfEC5SBIfz6tM5cqFyMoXFwgL39/ZCIc/PzODk+xpMpOUyBdyJ3gdr4fldGLBaDlk4jEokwG7vdLmaTh8xGSiEkYtBGqtzVxuFqkqjHmoxr8P1bFdLii0Uvm51Eq7ouWpe3a7iJw5noRAownZthw8QjqaXYZ6/dn0Sa85pBxR8QMUw04WNLR5XH1VEO1vGaP/PTGCku2qCJAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\bearing_side.png","name":"bearing_side.png","folder":"block","namespace":"create","id":"10","particle":false,"mode":"bitmap","saved":true,"uuid":"6e2eea84-5b28-8396-6859-21d0bb456ada","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB9klEQVQ4T21Sv2/TQBT+Lgnns9O6SWBgACRKJUuhGZnYAkwRExNRkZAisTAwVIK5fwNiRQwMLMDCyMzQCgkpZaBABkCIBeSGxr+wfejd9Rzb6pOsd8/ve9+99+5jo9FIAkCappBSIssy5enL85xS4JyDMabOxgyWDYdD2ev1KknLsoo4juPiTP8pJu/7PsIwBOv3+4rAFJ1UQAxlUooLAs/z1Ah1qxdQvkxu8Gxyb3IigQFQm8Zs21Ztl70iuLS+gSCMwXlLYbMsR5KEWF1xkUqJ1vEC/UMfdnsNTZaj1Wxi/+MUBcH+22dqzrPuKfya/1NEaxYgJTBPqgPSKOtXb2M2O9AEXn+A+d5z9VxkUVyrqC2owQBncAtfZ180gdN28O7VUwghEIRRAc9yvZ7Vtl2hiKIINycP8f3HN01w/twFvHi8o5bj2KIC7q3ovZAJS+Dn7yMQwbXxA2R5XCXgjAO8gWaDKaK/C/0CFKvlRpnyiUxwY+s+gkWgCS5ueHj9ZEeNQFa+1dz+5ygtOjEjHHz+BLb9aFue7p5BMH0JM7MtllKmqjBayplySZLAvbKFD+93dQedbgeL6RsIYeFwiS1udDlAUjA5esbN63e1DsZ3xnLz8kAJyZjb7ahjGi1VSLHBOLbusBCSavNYsvQSxuoyLuMM5j8oWO8EfjMOHAAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\bearing_top.png","name":"bearing_top.png","folder":"block","namespace":"create","id":"11","particle":false,"mode":"bitmap","saved":true,"uuid":"79e1f951-4b03-b9d8-0c37-988058c1568d","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABs0lEQVQ4T42Ty07CQBSGT9OCXFXA2kAIKKDVtRt3JCx4Ahe+gjvf1UQlAgoSCDaASMu1pOY/MrUNmNjNzJme+eY/N6lcLjuyLJOiKFTcH9CeEqBYJEjmdEkLe7VlExHVhgfsv1gsSAIg5Qxx7n6BQIBWqxXbf+3x71NRSapUKs6hbVC92eAL8WiYJiOL9JJGtbbB9nQ2p0g4xCs+7DUtQ2YoTdLdzZXT/1hSv9+liTXzXRC2u44skkOyC9COgz+A4cihTqflAqAgnoiyredUV4n3gdOTArkAKHh9azI5GVOoY5iu5FL2iAF5Le47Pz/TKZmQSLq/vXbaXcsHaPUnbj4AHJo2g7HiQy6gIJeJ/obw9PDIsoUj5OJVcQnnAHOSrRmVCkV/CPXnF858d2DyK16A2AMAKNZL/WI7BMTrBeA1Lwy5yaoxVoUycgjIQc9YchW88kU/iGqIftgJQBLRB7sAvrA2DQaV2Wye0uqmD0QjQa5IFsf6PvZ1pOgP+CEE7oNqterE5j1fGb3lgmSRfdHSAsCzIABikv47SPDnWcAwYTRt2yY9Of7XODe+Uuy/Xq/pG8XQXFoUkMDOAAAAAElFTkSuQmCC"}]} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/base.json b/src/main/resources/assets/create/models/block/mechanical_arm/base.json deleted file mode 100644 index 48be783ef..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/base.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/mechanical_arm", - "particle": "create:block/crafter_top" - }, - "elements": [ - { - "name": "Base", - "from": [-5, -2, -5], - "to": [5, 2, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [5, 9.5, 7, 14.5], "rotation": 270, "texture": "#5"}, - "east": {"uv": [5, 9.5, 7, 14.5], "rotation": 270, "texture": "#5"}, - "south": {"uv": [5, 9.5, 7, 14.5], "rotation": 270, "texture": "#5"}, - "west": {"uv": [5, 9.5, 7, 14.5], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 9.5, 5, 14.5], "texture": "#5"}, - "down": {"uv": [0, 9.5, 5, 14.5], "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "inserter", - "origin": [8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/block.json b/src/main/resources/assets/create/models/block/mechanical_arm/block.json deleted file mode 100644 index 0031d075b..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/block.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/brass_casing_belt", - "6": "create:block/crafter_top", - "7": "create:block/brass_block", - "particle": "create:block/crafter_top" - }, - "elements": [ - { - "name": "Base", - "from": [0, 0, 0], - "to": [16, 6, 16], - "faces": { - "north": {"uv": [8, 12.5, 16, 15.5], "texture": "#2"}, - "east": {"uv": [8, 12.5, 16, 15.5], "texture": "#2"}, - "south": {"uv": [8, 12.5, 16, 15.5], "texture": "#2"}, - "west": {"uv": [8, 12.5, 16, 15.5], "texture": "#2"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#6"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/claw_base.json b/src/main/resources/assets/create/models/block/mechanical_arm/claw_base.json deleted file mode 100644 index 8baf4a55d..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/claw_base.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/mechanical_arm", - "particle": "create:block/crafter_top" - }, - "elements": [ - { - "name": "ClawBase", - "from": [-3, -3, -1], - "to": [3, 3, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0.5, 4]}, - "faces": { - "north": {"uv": [12, 0, 15, 3], "texture": "#5"}, - "east": {"uv": [12, 0, 13, 3], "texture": "#5"}, - "south": {"uv": [12, 0, 15, 3], "texture": "#5"}, - "west": {"uv": [14, 0, 15, 3], "texture": "#5"}, - "up": {"uv": [12, 0, 13, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [12, 0, 15, 1], "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "inserter", - "origin": [8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/claw_grip.json b/src/main/resources/assets/create/models/block/mechanical_arm/claw_grip.json deleted file mode 100644 index 151af411b..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/claw_grip.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/mechanical_arm", - "particle": "create:block/crafter_top" - }, - "elements": [ - { - "name": "ClawTop", - "from": [-2.5, -1, -4], - "to": [2.5, 1, 1], - "rotation": {"angle": 0, "axis": "x", "origin": [-2.5, -3.5, 1]}, - "faces": { - "north": {"uv": [9.5, 1.5, 12, 2.5], "rotation": 180, "texture": "#5"}, - "east": {"uv": [9.5, 0, 12, 1], "rotation": 180, "texture": "#5"}, - "south": {"uv": [9.5, 0, 12, 1], "rotation": 180, "texture": "#5"}, - "west": {"uv": [9.5, 0, 12, 1], "rotation": 180, "texture": "#5"}, - "up": {"uv": [9.5, 0, 12, 2.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [9.5, 0, 12, 2.5], "rotation": 180, "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "inserter", - "origin": [8, 8, 8], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/cog.json b/src/main/resources/assets/create/models/block/mechanical_arm/cog.json deleted file mode 100644 index 75668cf1d..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/cog.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "texture_size": [32, 32], - "textures": { - "5": "create:block/mechanical_arm" - }, - "elements": [ - { - "name": "GearCaseOuter", - "from": [4, 5.5, 4], - "to": [12, 10.5, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]}, - "faces": { - "north": {"uv": [7.5, 0, 9.5, 4], "rotation": 90, "texture": "#5"}, - "east": {"uv": [7.5, 0, 9.5, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [7.5, 0, 9.5, 4], "rotation": 90, "texture": "#5"}, - "west": {"uv": [7.5, 0, 9.5, 4], "rotation": 90, "texture": "#5"}, - "up": {"uv": [1, 1, 5, 5], "texture": "#5"}, - "down": {"uv": [1, 1, 5, 5], "texture": "#5"} - } - }, - { - "name": "Gear5", - "from": [6.5, 6, -1], - "to": [9.5, 10, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "east": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "south": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "west": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "up": {"uv": [0, 6, 9, 7.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 6, 9, 7.5], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Gear6", - "from": [6.5, 6, -1], - "to": [9.5, 10, 17], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "east": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "south": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "west": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "up": {"uv": [0, 6, 9, 7.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 6, 9, 7.5], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [-1, 6, 6.5], - "to": [17, 10, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "east": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "south": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "west": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "up": {"uv": [0, 6, 9, 7.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 6, 9, 7.5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [-1, 6, 6.5], - "to": [17, 10, 9.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6, 8]}, - "faces": { - "north": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "east": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "south": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "west": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "up": {"uv": [0, 6, 9, 7.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 6, 9, 7.5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "GearCaseInner", - "from": [2, 6.5, 2], - "to": [14, 9.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 8]}, - "faces": { - "north": {"uv": [5.5, 0, 7, 6], "rotation": 90, "texture": "#5"}, - "east": {"uv": [5.5, 0, 7, 6], "rotation": 90, "texture": "#5"}, - "south": {"uv": [5.5, 0, 7, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [5.5, 0, 7, 6], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "inserter", - "origin": [8, 8, 8], - "children": [ - { - "name": "cogwheel", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/compiled.bbmodel b/src/main/resources/assets/create/models/block/mechanical_arm/compiled.bbmodel deleted file mode 100644 index 45a4e4344..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/compiled.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"compiled","parent":"block/block","ambientocclusion":true,"front_gui_light":false,"resolution":{"width":16,"height":16},"elements":[{"name":"Base","from":[3,10,3],"to":[13,14,13],"autouv":0,"color":6,"locked":false,"origin":[8,18,5],"faces":{"north":{"uv":[5,9.5,7,14.5],"rotation":270,"texture":0},"east":{"uv":[5,9.5,7,14.5],"rotation":270,"texture":0},"south":{"uv":[5,9.5,7,14.5],"rotation":270,"texture":0},"west":{"uv":[5,9.5,7,14.5],"rotation":270,"texture":0},"up":{"uv":[0,9.5,5,14.5],"texture":0},"down":{"uv":[0,9.5,5,14.5],"texture":0}},"uuid":"6d46d5ed-a06e-dcfb-24b2-50bbccddd037"},{"name":"LowerBody","from":[6,12,3.5],"to":[10,26,6.5],"autouv":0,"color":5,"locked":false,"rotation":[45,0,0],"origin":[8,12,5],"faces":{"north":{"uv":[9,14,16,16],"rotation":90,"texture":0},"east":{"uv":[9,4,10.5,11],"texture":0},"south":{"uv":[9,14,16,16],"rotation":90,"texture":0},"west":{"uv":[9,4,10.5,11],"texture":0},"up":{"uv":[14.5,9,16,11],"rotation":90,"texture":0},"down":{"uv":[14.5,9,16,11],"rotation":90,"texture":0}},"uuid":"0982ba47-6570-8477-51a6-280015787534"},{"name":"ConnectorMid","from":[7,26,4],"to":[9,30,6],"autouv":0,"color":5,"locked":false,"rotation":[45,0,0],"origin":[8,12,5],"faces":{"north":{"uv":[15,0,16,2],"texture":0},"east":{"uv":[15,0,16,2],"texture":0},"south":{"uv":[15,0,16,2],"texture":0},"west":{"uv":[15,0,16,2],"texture":0},"up":{"uv":[15,0,16,1],"texture":0},"down":{"uv":[15,0,16,2],"texture":0}},"uuid":"055dd18c-332b-5f36-7230-982f290f77f5"},{"name":"UpperBody","from":[4.5,27,-10],"to":[11.5,31,1],"autouv":0,"color":5,"locked":false,"rotation":[45,0,0],"origin":[8,12,5],"faces":{"north":{"uv":[11,9,14.5,11],"texture":0},"east":{"uv":[14,3.5,16,9],"rotation":270,"texture":0},"south":{"uv":[11,9,14.5,11],"texture":0},"west":{"uv":[14,3.5,16,9],"rotation":270,"texture":0},"up":{"uv":[10.5,3.5,14,9],"texture":0},"down":{"uv":[10.5,3.5,14,9],"texture":0}},"uuid":"414e9433-b0fc-548a-727e-0e3bee8cb216"},{"name":"Head","from":[4,32.5,4],"to":[12,36.5,8],"autouv":0,"color":2,"locked":false,"origin":[8,18,8],"faces":{"north":{"uv":[7,9.5,9,13.5],"rotation":90,"texture":0},"east":{"uv":[7,13.5,9,15.5],"texture":0},"south":{"uv":[7,9.5,9,13.5],"rotation":90,"texture":0},"west":{"uv":[7,13.5,9,15.5],"texture":0},"up":{"uv":[7,9.5,9,13.5],"rotation":90,"texture":0},"down":{"uv":[7,9.5,9,13.5],"rotation":270,"texture":0}},"uuid":"37122138-cf83-4a9c-72ab-dffccbb57f9d"},{"name":"ClawConnector","from":[6.5,33.5,3],"to":[9.5,35.5,4],"autouv":0,"color":2,"locked":false,"origin":[8,18,8],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[10.5,2.5,11,3.5],"texture":0},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[11.5,2.5,12,3.5],"texture":0},"up":{"uv":[10.5,3,12,3.5],"rotation":180,"texture":0},"down":{"uv":[10.5,2.5,12,3],"texture":0}},"uuid":"8d036d0c-e281-7dbd-a93f-3311b05592f9"},{"name":"ClawBase","from":[5,31.5,1],"to":[11,37.5,3],"autouv":0,"color":2,"locked":false,"origin":[8,18,8],"faces":{"north":{"uv":[12,0,15,3],"texture":0},"east":{"uv":[12,0,13,3],"texture":0},"south":{"uv":[12,0,15,3],"texture":0},"west":{"uv":[14,0,15,3],"texture":0},"up":{"uv":[12,0,13,3],"rotation":90,"texture":0},"down":{"uv":[12,0,15,1],"texture":0}},"uuid":"c0c15acc-1e55-0b65-c1db-7588d4d92234"},{"name":"ClawTop","from":[5.5,36.5,-3],"to":[10.5,38.5,2],"autouv":0,"color":2,"locked":false,"rotation":[-22.5,0,0],"origin":[8,37.5,2],"faces":{"north":{"uv":[9.5,1.5,12,2.5],"rotation":180,"texture":0},"east":{"uv":[9.5,0,12,1],"rotation":180,"texture":0},"south":{"uv":[9.5,0,12,1],"rotation":180,"texture":0},"west":{"uv":[9.5,0,12,1],"rotation":180,"texture":0},"up":{"uv":[9.5,0,12,2.5],"rotation":180,"texture":0},"down":{"uv":[9.5,0,12,2.5],"rotation":180,"texture":0}},"uuid":"f2d31269-2cc7-08f8-4565-9333c8551e3a"},{"name":"ClawBottom","from":[5.5,30.5,-3],"to":[10.5,32.5,2],"autouv":0,"color":2,"locked":false,"rotation":[22.5,0,0],"origin":[8,31.5,2],"faces":{"north":{"uv":[9.5,0,12,1],"rotation":180,"texture":0},"east":{"uv":[9.5,1.5,12,2.5],"rotation":180,"texture":0},"south":{"uv":[9.5,1.5,12,2.5],"rotation":180,"texture":0},"west":{"uv":[9.5,1.5,12,2.5],"rotation":180,"texture":0},"up":{"uv":[9.5,0,12,2.5],"rotation":180,"texture":0},"down":{"uv":[9.5,0,12,2.5],"rotation":180,"texture":0}},"uuid":"d12675f3-335e-90be-8583-28dd1ca77646"},{"name":"ConnectorR","from":[5,28,0],"to":[7,30,6],"autouv":0,"color":5,"locked":false,"rotation":[45,0,0],"origin":[8,12,5],"faces":{"north":{"uv":[0,0,0,0],"rotation":90,"texture":null},"east":{"uv":[15,0,16,3],"rotation":90,"texture":0},"south":{"uv":[15,0,16,1],"rotation":90,"texture":0},"west":{"uv":[15,0,16,3],"rotation":90,"texture":0},"up":{"uv":[15,0,16,3],"texture":0},"down":{"uv":[15,0,16,3],"rotation":180,"texture":0}},"uuid":"4baeae8a-26e1-d014-ee79-e4f0adcf95e8"},{"name":"Gear5","from":[6.5,6,-1],"to":[9.5,10,17],"autouv":0,"color":5,"locked":false,"origin":[8,6,8],"faces":{"north":{"uv":[7.5,4,9,6],"texture":0},"east":{"uv":[0,7.5,9,9.5],"texture":0},"south":{"uv":[7.5,4,9,6],"texture":0},"west":{"uv":[0,7.5,9,9.5],"texture":0},"up":{"uv":[0,6,9,7.5],"rotation":270,"texture":0},"down":{"uv":[0,6,9,7.5],"rotation":270,"texture":0}},"uuid":"21e5241b-7965-f57d-4f53-8b47d370fc2f"},{"name":"Gear6","from":[6.5,6,-1],"to":[9.5,10,17],"autouv":0,"color":5,"locked":false,"rotation":[0,45,0],"origin":[8,6,8],"faces":{"north":{"uv":[7.5,4,9,6],"texture":0},"east":{"uv":[0,7.5,9,9.5],"texture":0},"south":{"uv":[7.5,4,9,6],"texture":0},"west":{"uv":[0,7.5,9,9.5],"texture":0},"up":{"uv":[0,6,9,7.5],"rotation":270,"texture":0},"down":{"uv":[0,6,9,7.5],"rotation":270,"texture":0}},"uuid":"9475d70c-face-e6ff-eaaf-2987cd436ecf"},{"name":"Gear7","from":[-1,6,6.5],"to":[17,10,9.5],"autouv":0,"color":4,"locked":false,"rotation":[0,45,0],"origin":[8,6,8],"faces":{"north":{"uv":[0,7.5,9,9.5],"texture":0},"east":{"uv":[7.5,4,9,6],"texture":0},"south":{"uv":[0,7.5,9,9.5],"texture":0},"west":{"uv":[7.5,4,9,6],"texture":0},"up":{"uv":[0,6,9,7.5],"rotation":180,"texture":0},"down":{"uv":[0,6,9,7.5],"rotation":180,"texture":0}},"uuid":"f75c4d49-2da3-9e7e-7af8-a9e10af7a566"},{"name":"Gear7","from":[-1,6,6.5],"to":[17,10,9.5],"autouv":0,"color":7,"locked":false,"origin":[8,6,8],"faces":{"north":{"uv":[0,7.5,9,9.5],"texture":0},"east":{"uv":[7.5,4,9,6],"texture":0},"south":{"uv":[0,7.5,9,9.5],"texture":0},"west":{"uv":[7.5,4,9,6],"texture":0},"up":{"uv":[0,6,9,7.5],"rotation":180,"texture":0},"down":{"uv":[0,6,9,7.5],"rotation":180,"texture":0}},"uuid":"76731245-0f21-d016-a76a-d685a9773cfc"},{"name":"GearCaseInner","from":[2,6.5,2],"to":[14,9.5,14],"autouv":0,"color":0,"locked":false,"origin":[8,6.5,8],"faces":{"north":{"uv":[6,0,7.5,6],"rotation":90,"texture":0},"east":{"uv":[6,0,7.5,6],"rotation":90,"texture":0},"south":{"uv":[6,0,7.5,6],"rotation":90,"texture":0},"west":{"uv":[6,0,7.5,6],"rotation":90,"texture":0},"up":{"uv":[0,0,6,6],"rotation":180,"texture":0},"down":{"uv":[0,0,6,6],"rotation":180,"texture":0}},"uuid":"85179096-a233-0992-bb2d-b7c244a5fa48"},{"name":"GearCaseOuter","from":[4,6,4],"to":[12,10,12],"autouv":0,"color":2,"locked":false,"origin":[8,8,8],"faces":{"north":{"uv":[7.5,0,9.5,4],"rotation":90,"texture":0},"east":{"uv":[7.5,0,9.5,4],"rotation":90,"texture":0},"south":{"uv":[7.5,0,9.5,4],"rotation":90,"texture":0},"west":{"uv":[7.5,0,9.5,4],"rotation":90,"texture":0},"up":{"uv":[0,0,0,0],"rotation":90,"texture":null},"down":{"uv":[0,0,0,0],"rotation":90,"texture":null}},"uuid":"2ca69cc4-e48d-3f93-2564-4993b4270296"},{"name":"ConnectorR","from":[9,28,0],"to":[11,30,6],"autouv":0,"color":5,"locked":false,"rotation":[45,0,0],"origin":[12,12,5],"faces":{"north":{"uv":[0,0,0,0],"rotation":90,"texture":null},"east":{"uv":[15,0,16,3],"rotation":90,"texture":0},"south":{"uv":[15,0,16,1],"rotation":90,"texture":0},"west":{"uv":[15,0,16,3],"rotation":90,"texture":0},"up":{"uv":[15,0,16,3],"texture":0},"down":{"uv":[15,0,16,3],"rotation":180,"texture":0}},"uuid":"66fb07f1-8ea6-0123-5e0e-48ef7475ea2a"},{"name":"Base","from":[2,0,2],"to":[14,6,14],"autouv":0,"color":2,"locked":false,"origin":[8,8,8],"faces":{"north":{"uv":[2,0,14,6],"texture":1},"east":{"uv":[2,0,14,6],"texture":1},"south":{"uv":[2,0,14,6],"texture":1},"west":{"uv":[2,0,14,6],"texture":1},"up":{"uv":[2,2,14,14],"texture":2},"down":{"uv":[2,2,14,14],"texture":1}},"uuid":"88843599-a7d8-79be-470c-8f4be9ed1041"}],"outliner":[{"name":"inserter","uuid":"8ff1d931-e549-0361-38d6-b1e3384c03db","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["6d46d5ed-a06e-dcfb-24b2-50bbccddd037","0982ba47-6570-8477-51a6-280015787534","055dd18c-332b-5f36-7230-982f290f77f5","4baeae8a-26e1-d014-ee79-e4f0adcf95e8","66fb07f1-8ea6-0123-5e0e-48ef7475ea2a","414e9433-b0fc-548a-727e-0e3bee8cb216","37122138-cf83-4a9c-72ab-dffccbb57f9d","88843599-a7d8-79be-470c-8f4be9ed1041","c0c15acc-1e55-0b65-c1db-7588d4d92234","f2d31269-2cc7-08f8-4565-9333c8551e3a","d12675f3-335e-90be-8583-28dd1ca77646","8d036d0c-e281-7dbd-a93f-3311b05592f9",{"name":"cogwheel","uuid":"6c2ae39a-a31c-0a55-d63e-f12ed3a9a470","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["2ca69cc4-e48d-3f93-2564-4993b4270296","21e5241b-7965-f57d-4f53-8b47d370fc2f","9475d70c-face-e6ff-eaaf-2987cd436ecf","f75c4d49-2da3-9e7e-7af8-a9e10af7a566","76731245-0f21-d016-a76a-d685a9773cfc","85179096-a233-0992-bb2d-b7c244a5fa48"]}]}],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forgespace 1.15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\mechanical_arm.png","name":"mechanical_arm.png","folder":"block","namespace":"create","id":"5","particle":false,"mode":"bitmap","saved":true,"uuid":"3f34cbe0-5622-4ce1-967c-d632b62ff75d","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAGPUlEQVRYR6VXS2wbVRQ9M/Z4bI9duyZNP6Sg/pM2pLRp06oJUIHUIpaskFggPmLFAvYICcQaFlRIILFgwZINSCA2UEFbhYQ2TZrUxE3qpElTkjqOnfFvPJ4ZdO90ppOpnTbt3fh955133j3nPQuffdRjwRM1zYQo2g0hSURdN2Gadr1SbSCVDHE5X6jj5ZOnEAwIqFR1LC6ruDAZhizL3F8qlSBJEnRdRyqVQr1eh6Zp3B8KhSAIArcJBOD5zmOQgvaqlZrBvzRRLWtcTiVjiIYD+O3CBQZA438fvMQAimoNEIDs/DjS/x1y51IhFouhVqshHA6vAUUgCAAFAzje3YfMzF0YlgXTsNCxNYH8agVGw0IyYU9uSyouABpPYAjA7MIKQqEAFnMZjM3t511blk1qJBJhAM6GHFDEQD6f57EugImpRR7oLE7lsByE3jCZnURMwfmhS9iSkkEAfvnzL5w51Y/5pQJovdzKlAuAFqCgnToLeUFRn6qqNoCPP+i2jnT2YuHuKk+iRSu1OnTTQDwSRjQs2UdTaWB8agyJuAQaf354EK8O9GNmYQVa3UCpMsMAnKCPOzunsheUA4CPgAB07T6MfLHCVBqGCcOwoBk6RNh5EQ4FEZVDuPrvVcSUIGj88LXLONPfj8ytHIiC1dIMPvlyjA/21+/es/LFKiamRpFZ6mwJivLMBVCq2glXrtQRCNgJIgqiW65pDcwv3uBkJACXr19BX3cv5heLiMhBLBenXQA/fPGmRYurZR1ffT9pf6xFcA48s+0g9IaFGknF0HmoJAYgBQNcJjVQmQAk4xJo/NiNUXRs3Yd8MXtPrgY+PzfOi7WSdql8X8Ykb6ozA1tT+zjb6Ri8QQxQPpDMOtqTTDsdAY2fnkuzCihB0zeXkJ2f5KmaZqBje5Sl6pe2k8TURxumOgPYsWU/ouEQL1QsVVl+qWSUd67VG5yI8aiMofErnIQ0Pn1zAq+9+AJyhTIms9dQVHWcPHwM6ZujzEgzaQ+O/sM+Qn3kH1RnAM9utw1ECgq8Y0rCuCIDArmcnRuJeIQnEAAaP5a5itPHTyJfrOFOLo27eQ193UcxOXvNBeCXdiZ73QWQvZ0H1YX339hrRSNBl3nDtE0kIAoQAwIbk9PmUEzjqa1r9yHkClNs13Sex5/rZQYomkl7diHDSUx95B9UF3765h33LhAFQBQFtkm2WF842iZTMU26I+xLQonK+GPoEicl+QEBemQAjmab+QCM+wqSQzZLpmVyjkiSrRDKkQO72h8A0Mxbsrf/dWVM61Fd+Pnbd9fchuWKfebNgnbqDe/YiyPD6Nnfgzu5SWaAAPi9JTs36RpZrlAC1VsegbNQg3KA3PHelUzt/iMgG7+1kMGenV1YUad5ajNvmZ27wXcJ9eXUEqgurHcEfituJdOCmuVrfNfTXVhZnXIB5FXbVyiRoxEJ6ekJF0BFq3Nd+PHcW1at3niALprot+LUpmhTmZISSIbde3swt5hmRZCCnMW9KnLUpes2pcLXn75u0QeeJOjMyYhO953CSHqYLXk9O6aXVXub/c4Qzp7YtSYJmwEhhijoVnSC2rz1roMyzg4M4OLIoAuglR0TC85YBtCWjGBkrjkHPTtM3Fkuc6ciC0huUrBcrIEAeOsOgOHxIb4VnUuuWR7Qt8i26cZ0AWTyChRFWSuzchl7EqoLYFsqitVSFSYCDMBbJwDkkGFZZAAfvt1ptcoD7yJrGGgGwMvA9qcUdkqHAW99oznUMEwEA+LGGHgYAGIloYSgRCQUVitIboquweW0las6iuU659ATMeA9AlqJALQlwqjWNMSViPv0dlCQganlKiLhEHJFbS2AR8kBPwPeJHQAJJQglIj8EAY0FMu2ijbEgD8JvfzSedK5ypIA+o+zHgMNE9B0634ObI7LmC7Gm+aRVwV+Gfp9YaOJyEb00pGdDzWiVh/uaI/zxUSqIBk64VhvMCjAMsGPFyrTO8P/wFn3ybzejgi4Nyd6exUMHD3Bi9DFlMuXUG8Y/J9BDgVQqtb5c+2pGCzTgiAK+HvsMt1vjxd+5l45vRmHD/TyS5hBVHVWBYWuG1DpnXGPa/r3LQUlXJ8ee3wAftj+y4cuKCfosev8G/a2L+Vq+B/J62LZxEErigAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forgespace 1.15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\crafter_top.png","name":"crafter_top.png","folder":"block","namespace":"create","id":"6","particle":true,"mode":"bitmap","saved":true,"uuid":"439b418c-0774-f6c0-685a-89bab4fb8645","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB6UlEQVQ4T31TTUuUURR+7vs1zTulFbY2+jAyTUIRjQQhLHGl5EJwMRI4SOKvcGebNrUwiCBXzqJFIBi0GGaTg4P0QRQILVy6Mpm3eT/uXDn3eu+8o+LZnHPPPfe5z3PuuWwpf0fg2FzX0uG5Po4bZp8VZm6JqbFRkwjqXMZBUIfvX5CerB4lpubq5Ysy3iyXwRZmb4ux4YdYXvkok75nS++4DEkspD9plC/Mj+Pr920FMNI/iJevPqGzw0fEBTybIUoaiLmA61hm7dlK4v5h2ASgHgz1DeD1mw1ca8s0AbhqTZw09RIYWS2KMfnsEf7u/QEjgP7uB3j3/rOkLPVH3Eg5a0256ZmRVoDVt5stDLRuLSndh/1/4WkAYpDzXFOnqRPtdHyuBAKgYq31ZPc1UBAmZzO4kvXMmVrIkcuoJyVLSyEJhfmnqP7aUU28e6MXax++mPenQDdUz0G6wW05B8/nnjQBuq53o7heQpoB3aiN5oIYaWkHtQj5/GP83P2hBunezR4UiyV4lt2qXwg5TGTysBDwHAskgQB2fn9rBdA3arqnZjiVWHwxgXK1ogDud/XCdVy4DkNQj8C5gG0z4+mcn82oIfsfSt9+KYtSZQvyN6oCx+DzhoBtMZCX9I+/eYMLk6N8GHIcAeOKA+EH1HCkAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forgespace 1.15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\brass_block.png","name":"brass_block.png","folder":"block","namespace":"create","id":"7","particle":false,"mode":"bitmap","saved":true,"uuid":"df481770-d0d0-d9cf-75fc-6c19827d222c","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVQ4T1WTS2/TQBDH/961Y8dJ6iRqKaAKJApVgYqHeHwWPgEnLtw58a24cagQKg+1oaioFIHEQ6oqItEQ196X0ezETpjLrmZ3fzPzn9ng+dNbFRasKB2EYEcr4o3SDs4BSSyaPfnzM4OAAHc27yMK+XJeWL9qrf1aKAsZMLBQxq/DfhdpIvFie5sBD7Ye4vDbCWxVwdkKa6sZxqc5rOXkSmUgggBRKNHPEu9b7nf+B3w8OvYH9WPaT/ISkZDQjrNaGXSgjfPZZt0OXu68QvDsyVZ1d/Mefp2c+ktJHCIvlH9kTeUBUSRZk5ZEmkRcam6wfzRiwPUrtzH+k/sL1jqfemlZA7JeO/F+Mi6LRfn682AO+HtWeuc0V5Az1ajm2qQUDVxrLuPL9wMW8dL5G9CmQqFUE5lSJ1uEaG29BmRZN8HocDQHjCe5P6AupG2uk7oiA06XHtddGmYdiADY/bTLgOX+BuxM6VosWpWxcNZBSAFnnAd4oVsh0rg1BwyW1oGZNv2lBNpwqiRcrlSjQyyjRp+iNPhx/JkzGPTW4SoaYYFFwHSqAAFEkvWoxZ1MS6+NB1AbV4fX/IRR5Fq4k99TOEpZVsjStofQYNGMUBfXzvXx5sM7Blxc2UCatPxBqQ0oMj2OWyGcc0iSCEoxnMaahqmXxtjZf8+AyxduziIHPkL9B3pdnnvquzYaaTtGPpuXrNfG6723CB4/ulql7bARyjpWOoqEb2ltYjZc5Kvv0Nk/rK1Cjidok2MAAAAASUVORK5CYII="}],"display":{"thirdperson_righthand":{"rotation":[75,-149,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"thirdperson_lefthand":{"rotation":[75,-149,0],"translation":[0,2.5,0],"scale":[0.375,0.375,0.375]},"firstperson_righthand":{"rotation":[0,-55,0],"scale":[0.4,0.4,0.4]},"firstperson_lefthand":{"rotation":[0,-55,0],"scale":[0.4,0.4,0.4]},"ground":{"translation":[0,1,1.25],"scale":[0.25,0.25,0.25]},"gui":{"rotation":[30,45,0],"translation":[2.5,-0.5,0],"scale":[0.625,0.625,0.625]},"fixed":{"rotation":[0,180,0],"translation":[0,1.75,-4.5],"scale":[0.5,0.5,0.5]}}} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_in.json b/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_in.json deleted file mode 100644 index 7996d1e8a..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_in.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/marker_flag" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [1, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, - "faces": { - "north": {"uv": [1, 0, 2, 16], "texture": "#4"}, - "east": {"uv": [0, 0, 1, 16], "texture": "#4"}, - "south": {"uv": [1, 0, 2, 16], "texture": "#4"}, - "west": {"uv": [0, 0, 1, 16], "texture": "#4"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#4"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#4"} - } - }, - { - "from": [0.4, 7.5, 1], - "to": [0.4, 15.5, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, - "faces": { - "east": {"uv": [16, 0, 8, 8], "texture": "#4", "tintindex": 0}, - "west": {"uv": [8, 0, 16, 8], "texture": "#4", "tintindex": 0} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_out.json b/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_out.json deleted file mode 100644 index 6dae60cdb..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/flag/long_out.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/marker_flag" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [1, 16, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, - "faces": { - "north": {"uv": [1, 0, 2, 16], "texture": "#4"}, - "east": {"uv": [0, 0, 1, 16], "texture": "#4"}, - "south": {"uv": [1, 0, 2, 16], "texture": "#4"}, - "west": {"uv": [0, 0, 1, 16], "texture": "#4"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#4"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#4"} - } - }, - { - "from": [0.4, 7.5, 1], - "to": [0.4, 15.5, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, - "faces": { - "east": {"uv": [16, 8, 8, 16], "texture": "#4", "tintindex": 0}, - "west": {"uv": [8, 8, 16, 16], "texture": "#4", "tintindex": 0} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_in.json b/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_in.json deleted file mode 100644 index 84f72eb0c..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_in.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/marker_flag" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [1, 8, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, - "faces": { - "north": {"uv": [1, 8, 2, 16], "texture": "#4"}, - "east": {"uv": [0, 0, 1, 8], "texture": "#4"}, - "south": {"uv": [1, 0, 2, 8], "texture": "#4"}, - "west": {"uv": [0, 0, 1, 8], "texture": "#4"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#4"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#4"} - } - }, - { - "from": [0.4, -0.5, 1], - "to": [0.4, 7.5, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, - "faces": { - "east": {"uv": [16, 0, 8, 8], "texture": "#4", "tintindex": 0}, - "west": {"uv": [8, 0, 16, 8], "texture": "#4", "tintindex": 0} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_out.json b/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_out.json deleted file mode 100644 index 24223d31a..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/flag/short_out.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "4": "create:block/marker_flag" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [1, 8, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, - "faces": { - "north": {"uv": [1, 8, 2, 16], "texture": "#4"}, - "east": {"uv": [0, 0, 1, 8], "texture": "#4"}, - "south": {"uv": [1, 0, 2, 8], "texture": "#4"}, - "west": {"uv": [0, 0, 1, 8], "texture": "#4"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#4"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#4"} - } - }, - { - "from": [0.4, -0.5, 1], - "to": [0.4, 7.5, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -3, 10]}, - "faces": { - "east": {"uv": [16, 8, 8, 16], "texture": "#4", "tintindex": 0}, - "west": {"uv": [8, 8, 16, 16], "texture": "#4", "tintindex": 0} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/head.json b/src/main/resources/assets/create/models/block/mechanical_arm/head.json deleted file mode 100644 index 0f031f46f..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/head.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/mechanical_arm", - "particle": "create:block/crafter_top" - }, - "elements": [ - { - "name": "Head", - "from": [-4, -2, -2], - "to": [4, 2, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0.5, 0]}, - "faces": { - "north": {"uv": [7, 9.5, 9, 13.5], "rotation": 90, "texture": "#5"}, - "east": {"uv": [7, 13.5, 9, 15.5], "texture": "#5"}, - "south": {"uv": [7, 9.5, 9, 13.5], "rotation": 90, "texture": "#5"}, - "west": {"uv": [7, 13.5, 9, 15.5], "texture": "#5"}, - "up": {"uv": [7, 9.5, 9, 13.5], "rotation": 90, "texture": "#5"}, - "down": {"uv": [7, 9.5, 9, 13.5], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "ClawConnector", - "from": [-1.5, -1, -3], - "to": [1.5, 1, -2], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0.5, 0]}, - "faces": { - "east": {"uv": [10.5, 2.5, 11, 3.5], "texture": "#5"}, - "west": {"uv": [11.5, 2.5, 12, 3.5], "texture": "#5"}, - "up": {"uv": [10.5, 3, 12, 3.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10.5, 2.5, 12, 3], "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "inserter", - "origin": [8, 8, 8], - "children": [0, 1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/item.json b/src/main/resources/assets/create/models/block/mechanical_arm/item.json deleted file mode 100644 index d02438478..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/item.json +++ /dev/null @@ -1,312 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/brass_casing_belt", - "5": "create:block/mechanical_arm", - "6": "create:block/crafter_top", - "7": "create:block/brass_block", - "particle": "create:block/crafter_top" - }, - "elements": [ - { - "name": "Base", - "from": [3, -6, 3], - "to": [13, -2, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, 5]}, - "faces": { - "north": {"uv": [5, 9.5, 7, 14.5], "rotation": 270, "texture": "#5"}, - "east": {"uv": [5, 9.5, 7, 14.5], "rotation": 270, "texture": "#5"}, - "south": {"uv": [5, 9.5, 7, 14.5], "rotation": 270, "texture": "#5"}, - "west": {"uv": [5, 9.5, 7, 14.5], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 9.5, 5, 14.5], "texture": "#5"}, - "down": {"uv": [0, 9.5, 5, 14.5], "texture": "#5"} - } - }, - { - "name": "LowerBody", - "from": [6, -4, 3.5], - "to": [10, 10, 6.5], - "rotation": {"angle": 45, "axis": "x", "origin": [8, -4, 5]}, - "faces": { - "north": {"uv": [9, 14, 16, 16], "rotation": 90, "texture": "#5"}, - "east": {"uv": [9, 4, 10.5, 11], "texture": "#5"}, - "south": {"uv": [9, 14, 16, 16], "rotation": 90, "texture": "#5"}, - "west": {"uv": [9, 4, 10.5, 11], "texture": "#5"}, - "up": {"uv": [14.5, 9, 16, 11], "rotation": 90, "texture": "#5"}, - "down": {"uv": [14.5, 9, 16, 11], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "ConnectorMid", - "from": [7, 10, 4], - "to": [9, 14, 6], - "rotation": {"angle": 45, "axis": "x", "origin": [8, -4, 5]}, - "faces": { - "north": {"uv": [15, 0, 16, 2], "texture": "#5"}, - "east": {"uv": [15, 0, 16, 2], "texture": "#5"}, - "south": {"uv": [15, 0, 16, 2], "texture": "#5"}, - "west": {"uv": [15, 0, 16, 2], "texture": "#5"}, - "up": {"uv": [15, 0, 16, 1], "texture": "#5"}, - "down": {"uv": [15, 0, 16, 2], "texture": "#5"} - } - }, - { - "name": "ConnectorR", - "from": [5, 7.02944, 12], - "to": [7, 9.02944, 18], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 8, 17]}, - "faces": { - "east": {"uv": [15, 0, 16, 3], "rotation": 90, "texture": "#5"}, - "south": {"uv": [15, 0, 16, 1], "rotation": 90, "texture": "#5"}, - "west": {"uv": [15, 0, 16, 3], "rotation": 90, "texture": "#5"}, - "up": {"uv": [15, 0, 16, 3], "texture": "#5"}, - "down": {"uv": [15, 0, 16, 3], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "ConnectorR", - "from": [9, 7.02944, 12], - "to": [11, 9.02944, 18], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 8, 17]}, - "faces": { - "east": {"uv": [15, 0, 16, 3], "rotation": 90, "texture": "#5"}, - "south": {"uv": [15, 0, 16, 1], "rotation": 90, "texture": "#5"}, - "west": {"uv": [15, 0, 16, 3], "rotation": 90, "texture": "#5"}, - "up": {"uv": [15, 0, 16, 3], "texture": "#5"}, - "down": {"uv": [15, 0, 16, 3], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "UpperBody", - "from": [4.5, 6.02944, 2], - "to": [11.5, 10.02944, 13], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 8, 17]}, - "faces": { - "north": {"uv": [11, 9, 14.5, 11], "texture": "#5"}, - "east": {"uv": [14, 3.5, 16, 9], "rotation": 270, "texture": "#5"}, - "south": {"uv": [11, 9, 14.5, 11], "texture": "#5"}, - "west": {"uv": [14, 3.5, 16, 9], "rotation": 270, "texture": "#5"}, - "up": {"uv": [10.5, 3.5, 14, 9], "texture": "#5"}, - "down": {"uv": [10.5, 3.5, 14, 9], "texture": "#5"} - } - }, - { - "name": "Head", - "from": [4, 11.59915, 0.63821], - "to": [12, 15.59915, 4.63821], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 14, 3]}, - "faces": { - "north": {"uv": [7, 9.5, 9, 13.5], "rotation": 90, "texture": "#5"}, - "east": {"uv": [7, 13.5, 9, 15.5], "texture": "#5"}, - "south": {"uv": [7, 9.5, 9, 13.5], "rotation": 90, "texture": "#5"}, - "west": {"uv": [7, 13.5, 9, 15.5], "texture": "#5"}, - "up": {"uv": [7, 9.5, 9, 13.5], "rotation": 90, "texture": "#5"}, - "down": {"uv": [7, 9.5, 9, 13.5], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Base", - "from": [0, -16, 0], - "to": [16, -10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [8, 12.5, 16, 15.5], "texture": "#3"}, - "east": {"uv": [8, 12.5, 16, 15.5], "texture": "#3"}, - "south": {"uv": [8, 12.5, 16, 15.5], "texture": "#3"}, - "west": {"uv": [8, 12.5, 16, 15.5], "texture": "#3"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#6"} - } - }, - { - "name": "ClawBase", - "from": [5, 10.59915, -2.36179], - "to": [11, 16.59915, -0.36179], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 14, 3]}, - "faces": { - "north": {"uv": [12, 0, 15, 3], "texture": "#5"}, - "east": {"uv": [12, 0, 13, 3], "texture": "#5"}, - "south": {"uv": [12, 0, 15, 3], "texture": "#5"}, - "west": {"uv": [14, 0, 15, 3], "texture": "#5"}, - "up": {"uv": [12, 0, 13, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [12, 0, 15, 1], "texture": "#5"} - } - }, - { - "name": "ClawTop", - "from": [5.5, 5.96489, -2.07049], - "to": [10.5, 10.96489, -0.07049], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 3]}, - "faces": { - "north": {"uv": [9.5, 0, 12, 2.5], "texture": "#5"}, - "east": {"uv": [9.5, 0, 12, 1], "rotation": 270, "texture": "#5"}, - "south": {"uv": [9.5, 0, 12, 2.5], "rotation": 180, "texture": "#5"}, - "west": {"uv": [9.5, 0, 12, 1], "rotation": 90, "texture": "#5"}, - "up": {"uv": [9.5, 0, 12, 1], "rotation": 180, "texture": "#5"}, - "down": {"uv": [9.5, 1.5, 12, 2.5], "texture": "#5"} - } - }, - { - "name": "ClawBottom", - "from": [5.5, 8.18885, -4.72832], - "to": [10.5, 10.18885, 0.27168], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 14, 3]}, - "faces": { - "north": {"uv": [9.5, 0, 12, 1], "rotation": 180, "texture": "#5"}, - "east": {"uv": [9.5, 1.5, 12, 2.5], "rotation": 180, "texture": "#5"}, - "south": {"uv": [9.5, 1.5, 12, 2.5], "rotation": 180, "texture": "#5"}, - "west": {"uv": [9.5, 1.5, 12, 2.5], "rotation": 180, "texture": "#5"}, - "up": {"uv": [9.5, 0, 12, 2.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [9.5, 0, 12, 2.5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "ClawConnector", - "from": [6.5, 12.59915, -0.36179], - "to": [9.5, 14.59915, 0.63821], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 14, 3]}, - "faces": { - "east": {"uv": [10.5, 2.5, 11, 3.5], "texture": "#5"}, - "west": {"uv": [11.5, 2.5, 12, 3.5], "texture": "#5"}, - "up": {"uv": [10.5, 3, 12, 3.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [10.5, 2.5, 12, 3], "texture": "#5"} - } - }, - { - "name": "GearCaseOuter", - "from": [4, -10, 4], - "to": [12, -6, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [7.5, 0, 9.5, 4], "rotation": 90, "texture": "#5"}, - "east": {"uv": [7.5, 0, 9.5, 4], "rotation": 90, "texture": "#5"}, - "south": {"uv": [7.5, 0, 9.5, 4], "rotation": 90, "texture": "#5"}, - "west": {"uv": [7.5, 0, 9.5, 4], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "Gear5", - "from": [6.5, -10, -1], - "to": [9.5, -6, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -10, 8]}, - "faces": { - "north": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "east": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "south": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "west": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "up": {"uv": [0, 6, 9, 7.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 6, 9, 7.5], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Gear6", - "from": [6.5, -10, -1], - "to": [9.5, -6, 17], - "rotation": {"angle": 45, "axis": "y", "origin": [8, -10, 8]}, - "faces": { - "north": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "east": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "south": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "west": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "up": {"uv": [0, 6, 9, 7.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 6, 9, 7.5], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [-1, -10, 6.5], - "to": [17, -6, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, -10, 8]}, - "faces": { - "north": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "east": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "south": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "west": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "up": {"uv": [0, 6, 9, 7.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 6, 9, 7.5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [-1, -10, 6.5], - "to": [17, -6, 9.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -10, 8]}, - "faces": { - "north": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "east": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "south": {"uv": [0, 7.5, 9, 9.5], "texture": "#5"}, - "west": {"uv": [7.5, 4, 9, 6], "texture": "#5"}, - "up": {"uv": [0, 6, 9, 7.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 6, 9, 7.5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "GearCaseInner", - "from": [2, -9.5, 2], - "to": [14, -6.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -9.5, 8]}, - "faces": { - "north": {"uv": [6, 0, 7.5, 6], "rotation": 90, "texture": "#5"}, - "east": {"uv": [6, 0, 7.5, 6], "rotation": 90, "texture": "#5"}, - "south": {"uv": [6, 0, 7.5, 6], "rotation": 90, "texture": "#5"}, - "west": {"uv": [6, 0, 7.5, 6], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 6], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 6], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "translation": [0, 3.75, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 45, 0], - "translation": [0, 3.75, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "rotation": [0, 0, 90], - "translation": [-1.75, -0.5, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 135, 0], - "translation": [0, 4.25, 0], - "scale": [0.45, 0.45, 0.45] - }, - "head": { - "translation": [0, 24.75, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 2.25, -0.75], - "scale": [0.45, 0.45, 0.45] - } - }, - "groups": [ - { - "name": "inserter", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - { - "name": "cogwheel", - "origin": [8, 8, 8], - "children": [12, 13, 14, 15, 16, 17] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/lower_body.json b/src/main/resources/assets/create/models/block/mechanical_arm/lower_body.json deleted file mode 100644 index 1617d2317..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/lower_body.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/mechanical_arm", - "particle": "create:block/crafter_top" - }, - "elements": [ - { - "name": "LowerBody", - "from": [-2, 0, -1.5], - "to": [2, 14, 1.5], - "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [9, 14, 16, 16], "rotation": 90, "texture": "#5"}, - "east": {"uv": [9, 4, 10.5, 11], "texture": "#5"}, - "south": {"uv": [9, 14, 16, 16], "rotation": 90, "texture": "#5"}, - "west": {"uv": [9, 4, 10.5, 11], "texture": "#5"}, - "up": {"uv": [14.5, 9, 16, 11], "rotation": 90, "texture": "#5"}, - "down": {"uv": [14.5, 9, 16, 11], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "ConnectorMid", - "from": [-1, 14, -1], - "to": [1, 18, 1], - "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [15, 0, 16, 2], "texture": "#5"}, - "east": {"uv": [15, 0, 16, 2], "texture": "#5"}, - "south": {"uv": [15, 0, 16, 2], "texture": "#5"}, - "west": {"uv": [15, 0, 16, 2], "texture": "#5"}, - "up": {"uv": [15, 0, 16, 1], "texture": "#5"}, - "down": {"uv": [15, 0, 16, 2], "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "inserter", - "origin": [8, 8, 8], - "children": [0, 1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_arm/upper_body.json b/src/main/resources/assets/create/models/block/mechanical_arm/upper_body.json deleted file mode 100644 index 18f907239..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_arm/upper_body.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/mechanical_arm", - "particle": "create:block/crafter_top" - }, - "elements": [ - { - "name": "ConnectorR", - "from": [-3, -0.97056, -5], - "to": [-1, 1.02944, 1], - "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [15, 0, 16, 3], "rotation": 90, "texture": "#5"}, - "south": {"uv": [15, 0, 16, 1], "rotation": 90, "texture": "#5"}, - "west": {"uv": [15, 0, 16, 3], "rotation": 90, "texture": "#5"}, - "up": {"uv": [15, 0, 16, 3], "texture": "#5"}, - "down": {"uv": [15, 0, 16, 3], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "ConnectorR", - "from": [1, -0.97056, -5], - "to": [3, 1.02944, 1], - "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]}, - "faces": { - "east": {"uv": [15, 0, 16, 3], "rotation": 90, "texture": "#5"}, - "south": {"uv": [15, 0, 16, 1], "rotation": 90, "texture": "#5"}, - "west": {"uv": [15, 0, 16, 3], "rotation": 90, "texture": "#5"}, - "up": {"uv": [15, 0, 16, 3], "texture": "#5"}, - "down": {"uv": [15, 0, 16, 3], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "UpperBody", - "from": [-3.5, -1.97056, -15], - "to": [3.5, 2.02944, -4], - "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]}, - "faces": { - "north": {"uv": [11, 9, 14.5, 11], "texture": "#5"}, - "east": {"uv": [14, 3.5, 16, 9], "rotation": 270, "texture": "#5"}, - "south": {"uv": [11, 9, 14.5, 11], "texture": "#5"}, - "west": {"uv": [14, 3.5, 16, 9], "rotation": 270, "texture": "#5"}, - "up": {"uv": [10.5, 3.5, 14, 9], "texture": "#5"}, - "down": {"uv": [10.5, 3.5, 14, 9], "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "inserter", - "origin": [8, 8, 8], - "children": [0, 1, 2] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_crafter/arrow.json b/src/main/resources/assets/create/models/block/mechanical_crafter/arrow.json deleted file mode 100644 index ec9b6e618..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_crafter/arrow.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/crafter_thingies" - }, - "elements": [ - { - "name": "arrow", - "from": [-1, 12, 5], - "to": [0, 14, 11], - "faces": { - "north": {"uv": [12, 0, 14, 1], "rotation": 270, "texture": "#3"}, - "south": {"uv": [12, 5, 14, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [12, 0, 14, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [13, 0, 14, 6], "texture": "#3"}, - "down": {"uv": [12, 0, 13, 6], "texture": "#3"} - } - }, - { - "name": "arrow", - "from": [-1, 14, 6], - "to": [0, 15, 10], - "faces": { - "north": {"uv": [14, 1, 15, 2], "rotation": 270, "texture": "#3"}, - "south": {"uv": [14, 4, 15, 5], "rotation": 270, "texture": "#3"}, - "west": {"uv": [14, 1, 15, 5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [14, 1, 15, 5], "texture": "#3"} - } - }, - { - "name": "arrow", - "from": [-1, 15, 7], - "to": [0, 16, 9], - "faces": { - "north": {"uv": [15, 2, 16, 3], "rotation": 270, "texture": "#3"}, - "south": {"uv": [15, 3, 16, 4], "rotation": 270, "texture": "#3"}, - "west": {"uv": [15, 2, 16, 4], "rotation": 270, "texture": "#3"}, - "up": {"uv": [15, 2, 16, 4], "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_crafter/belt.json b/src/main/resources/assets/create/models/block/mechanical_crafter/belt.json deleted file mode 100644 index 829a7cd19..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_crafter/belt.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/brass_casing" - }, - "elements": [ - { - "name": "belt", - "from": [-0.5, 12, 5], - "to": [0.5, 20, 6], - "faces": { - "north": {"uv": [2, 4, 3, 12], "rotation": 180, "texture": "#5"}, - "west": {"uv": [2, 4, 3, 12], "texture": "#5"} - } - }, - { - "name": "belt", - "from": [-0.5, 12, 10], - "to": [0.5, 20, 11], - "faces": { - "south": {"uv": [2, 4, 3, 12], "texture": "#5"}, - "west": {"uv": [13, 4, 14, 12], "texture": "#5"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_crafter/belt_animated.json b/src/main/resources/assets/create/models/block/mechanical_crafter/belt_animated.json deleted file mode 100644 index 15d25f198..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_crafter/belt_animated.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/crafter_thingies" - }, - "elements": [ - { - "name": "belt_animated", - "from": [-0.5, 12, 6], - "to": [0.5, 20, 10], - "faces": { - "west": {"uv": [0, 6, 4, 14], "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_crafter/block.json b/src/main/resources/assets/create/models/block/mechanical_crafter/block.json deleted file mode 100644 index 42aeb0cb3..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_crafter/block.json +++ /dev/null @@ -1,133 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/crafter_thingies", - "4": "create:block/crafter_side", - "5": "create:block/brass_casing", - "6": "create:block/crafter_top", - "7": "create:block/crafter_topunderside", - "8": "create:block/smooth_dark_log_top", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "name": "Top", - "from": [0, 0, 0], - "to": [16, 16, 6], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#6"}, - "east": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#4"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#7"}, - "west": {"uv": [16, 0, 0, 6], "rotation": 270, "texture": "#4"}, - "up": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "down": {"uv": [0, 0, 16, 6], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 10], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#8"}, - "east": {"uv": [0, 10, 16, 16], "rotation": 90, "texture": "#4"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#6"}, - "west": {"uv": [16, 10, 0, 16], "rotation": 270, "texture": "#4"}, - "up": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "down": {"uv": [0, 10, 16, 16], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "Side1", - "from": [0, 15.9, 6], - "to": [16, 16, 10], - "faces": { - "up": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "down": {"uv": [0, 6, 16, 10], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "Side2", - "from": [0, 0, 6], - "to": [16, 0.1, 10], - "faces": { - "up": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "down": {"uv": [0, 6, 16, 10], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "Side3", - "from": [15.9, 0, 6], - "to": [16, 16, 10], - "faces": { - "east": {"uv": [0, 6, 16, 10], "rotation": 90, "texture": "#4"}, - "west": {"uv": [0, 6, 16, 10], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Side4", - "from": [0, 0, 6], - "to": [0.1, 16, 10], - "faces": { - "east": {"uv": [0, 6, 16, 10], "rotation": 90, "texture": "#4"}, - "west": {"uv": [16, 6, 0, 10], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "valve_case", - "from": [4, 4, -1], - "to": [12, 5, 0], - "faces": { - "north": {"uv": [2, 4, 3, 12], "rotation": 270, "texture": "#5"}, - "east": {"uv": [8, 2, 9, 3], "rotation": 90, "texture": "#5"}, - "west": {"uv": [7, 2, 8, 3], "rotation": 270, "texture": "#5"}, - "up": {"uv": [4, 2, 12, 3], "texture": "#5"}, - "down": {"uv": [4, 2, 12, 3], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "valve_case", - "from": [4, 11, -1], - "to": [12, 12, 0], - "faces": { - "north": {"uv": [2, 4, 3, 12], "rotation": 270, "texture": "#5"}, - "east": {"uv": [8, 2, 9, 3], "rotation": 90, "texture": "#5"}, - "west": {"uv": [7, 2, 8, 3], "rotation": 270, "texture": "#5"}, - "up": {"uv": [4, 2, 12, 3], "texture": "#5"}, - "down": {"uv": [4, 2, 12, 3], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "valve_case", - "from": [11, 5, -1], - "to": [12, 11, 0], - "faces": { - "north": {"uv": [5, 2, 11, 3], "rotation": 270, "texture": "#5"}, - "east": {"uv": [6, 2, 12, 3], "rotation": 90, "texture": "#5"}, - "west": {"uv": [5, 2, 11, 3], "rotation": 270, "texture": "#5"}, - "up": {"uv": [2, 4, 3, 5], "texture": "#5"}, - "down": {"uv": [2, 4, 3, 5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "valve_case", - "from": [4, 5, -1], - "to": [5, 11, 0], - "faces": { - "north": {"uv": [5, 2, 11, 3], "rotation": 270, "texture": "#5"}, - "east": {"uv": [6, 2, 12, 3], "rotation": 90, "texture": "#5"}, - "west": {"uv": [5, 2, 11, 3], "rotation": 270, "texture": "#5"}, - "up": {"uv": [2, 4, 3, 5], "texture": "#5"}, - "down": {"uv": [2, 4, 3, 5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "opening", - "from": [5, 5, -0.5], - "to": [11, 11, 0.5], - "faces": { - "north": {"uv": [6, 0, 12, 6], "rotation": 270, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_crafter/item.json b/src/main/resources/assets/create/models/block/mechanical_crafter/item.json deleted file mode 100644 index f0a221f11..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_crafter/item.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/crafter_thingies", - "4": "create:block/crafter_side", - "5": "create:block/brass_casing", - "6": "create:block/crafter_top", - "7": "create:block/crafter_topunderside", - "8": "create:block/smooth_dark_log_top", - "particle": "create:block/crafter_top", - "1_2": "create:block/cogwheel" - }, - "elements": [ - { - "name": "Top", - "from": [0, 10, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "east": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "south": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#6"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#7"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 6, 16], - "faces": { - "north": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "east": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "south": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "west": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#8"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#6"} - } - }, - { - "name": "Side1", - "from": [16, 6, 0], - "to": [16, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [24, 8, 8]}, - "faces": { - "east": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "west": {"uv": [0, 3, 16, 7], "texture": "#4"} - } - }, - { - "name": "Side2", - "from": [0, 6, 0], - "to": [0, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-8, 8, 8]}, - "faces": { - "east": {"uv": [0, 3, 16, 7], "texture": "#4"}, - "west": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - }, - { - "name": "Side3", - "from": [0, 6, 0], - "to": [16, 10, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -8]}, - "faces": { - "north": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "south": {"uv": [0, 3, 16, 7], "texture": "#4"} - } - }, - { - "name": "Side4", - "from": [0, 6, 16], - "to": [16, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 24]}, - "faces": { - "north": {"uv": [0, 3, 16, 7], "texture": "#4"}, - "south": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - }, - { - "name": "valve_case", - "from": [4, 16, 4], - "to": [5, 17, 12], - "faces": { - "north": {"uv": [5, 2, 6, 3], "texture": "#5"}, - "east": {"uv": [2, 1, 10, 2], "texture": "#5"}, - "south": {"uv": [3, 2, 4, 3], "texture": "#5"}, - "west": {"uv": [4, 2, 12, 3], "texture": "#5"}, - "up": {"uv": [2, 4, 3, 12], "texture": "#5"} - } - }, - { - "name": "valve_case", - "from": [11, 16, 4], - "to": [12, 17, 12], - "faces": { - "north": {"uv": [4, 2, 5, 3], "texture": "#5"}, - "east": {"uv": [3, 2, 11, 3], "texture": "#5"}, - "south": {"uv": [5, 2, 6, 3], "texture": "#5"}, - "west": {"uv": [2, 1, 10, 2], "texture": "#5"}, - "up": {"uv": [2, 4, 3, 12], "texture": "#5"} - } - }, - { - "name": "valve_case", - "from": [5, 16, 4], - "to": [11, 17, 5], - "faces": { - "north": {"uv": [5, 2, 11, 3], "texture": "#5"}, - "east": {"uv": [1, 2, 2, 3], "texture": "#5"}, - "south": {"uv": [2.5, 1, 8.5, 2], "texture": "#5"}, - "west": {"uv": [1, 2, 2, 3], "texture": "#5"}, - "up": {"uv": [4, 2, 10, 3], "texture": "#5"} - } - }, - { - "name": "valve_case", - "from": [5, 16, 11], - "to": [11, 17, 12], - "faces": { - "north": {"uv": [3, 1, 9, 2], "texture": "#5"}, - "east": {"uv": [1, 2, 2, 3], "texture": "#5"}, - "south": {"uv": [2, 2, 8, 3], "texture": "#5"}, - "west": {"uv": [1, 2, 2, 3], "texture": "#5"}, - "up": {"uv": [5, 2, 11, 3], "texture": "#5"} - } - }, - { - "name": "opening", - "from": [5, 15.5, 5], - "to": [11, 16.5, 11], - "faces": { - "up": {"uv": [3, 0, 9, 6], "texture": "#3"} - } - }, - { - "name": "valve_lid", - "from": [5, 16, 5], - "to": [11, 17, 11], - "faces": { - "up": {"uv": [0, 0, 6, 6], "texture": "#3"} - } - }, - { - "name": "Gear", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear2", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear3", - "from": [-1, 6.5, 6.5], - "to": [17, 9.5, 9.5], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear4", - "from": [6.5, 6.5, -1], - "to": [9.5, 9.5, 17], - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "east": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "south": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "west": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"} - } - }, - { - "name": "GearCaseInner", - "from": [2, 7, 2], - "to": [14, 9, 14], - "faces": { - "north": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "east": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "south": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "west": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "up": {"uv": [4, 0, 10, 6], "texture": "#1_2"}, - "down": {"uv": [4, 0, 10, 6], "texture": "#1_2"} - } - }, - { - "name": "GearCaseOuter", - "from": [4, 6, 4], - "to": [12, 10, 12], - "faces": { - "north": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "east": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "south": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "west": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "up": {"uv": [0, 0, 4, 4], "texture": "#1_2"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#1_2"} - } - } - ], - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - { - "name": "lid", - "origin": [8, 8, 8], - "children": [11] - }, - { - "name": "cogwheel_shaftless", - "origin": [8, 8, 8], - "children": [12, 13, 14, 15, 16, 17] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_crafter/lid.json b/src/main/resources/assets/create/models/block/mechanical_crafter/lid.json deleted file mode 100644 index eccfcb78e..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_crafter/lid.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/crafter_thingies" - }, - "elements": [ - { - "name": "valve_lid", - "from": [-1, 5, 5], - "to": [0, 11, 11], - "faces": { - "west": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_drill/block.json b/src/main/resources/assets/create/models/block/mechanical_drill/block.json deleted file mode 100644 index 3a4cf2dec..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_drill/block.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "10": "create:block/andesite_casing_very_short", - "gearbox_top": "create:block/gearbox_top", - "particle": "create:block/gearbox", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short" - }, - "elements": [ - { - "name": "Body", - "from": [2, 1, 2], - "to": [14, 9, 14], - "faces": { - "up": {"uv": [2, 2, 14, 14], "texture": "#gearbox"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#gearbox"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 14], - "to": [16, 10, 16], - "faces": { - "north": {"uv": [0, 4, 16, 16], "rotation": 180, "texture": "#andesite_casing_short"}, - "east": {"uv": [14, 6, 16, 16], "rotation": 180, "texture": "#10"}, - "south": {"uv": [0, 6, 16, 16], "texture": "#10"}, - "west": {"uv": [14, 6, 16, 16], "texture": "#10"}, - "up": {"uv": [0, 14, 16, 16], "texture": "#gearbox_top"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#gearbox_top"} - } - }, - { - "name": "Top", - "from": [0, 0, 0], - "to": [16, 10, 2], - "faces": { - "north": {"uv": [0, 6, 16, 16], "rotation": 180, "texture": "#10"}, - "east": {"uv": [0, 6, 2, 16], "rotation": 180, "texture": "#10"}, - "south": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 6, 2, 16], "texture": "#10"}, - "up": {"uv": [0, 0, 16, 2], "texture": "#gearbox_top"}, - "down": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#gearbox_top"} - } - }, - { - "name": "Side", - "from": [0, 0, 2], - "to": [2, 10, 14], - "faces": { - "east": {"uv": [2, 4, 14, 16], "rotation": 180, "texture": "#andesite_casing_short"}, - "west": {"uv": [2, 6, 14, 16], "texture": "#10"}, - "up": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, - "down": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#gearbox_top"} - } - }, - { - "name": "Side", - "from": [14, 0, 2], - "to": [16, 10, 14], - "faces": { - "east": {"uv": [2, 6, 14, 16], "rotation": 180, "texture": "#10"}, - "west": {"uv": [2, 4, 14, 16], "rotation": 180, "texture": "#andesite_casing_short"}, - "up": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, - "down": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#gearbox_top"} - } - } - ], - "groups": [ - { - "name": "casing", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_drill/head.json b/src/main/resources/assets/create/models/block/mechanical_drill/head.json deleted file mode 100644 index 0659789ce..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_drill/head.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis_top", - "1": "create:block/axis", - "2": "block/anvil", - "7": "block/polished_andesite", - "10": "create:block/andesite_casing_very_short", - "particle": "block/anvil" - }, - "elements": [ - { - "name": "Axle", - "from": [6, 6, 0], - "to": [10, 10, 4], - "shade": false, - "faces": { - "north": {"uv": [6, 6, 10, 10], "texture": "#0"}, - "east": {"uv": [6, 12, 10, 16], "rotation": 90, "texture": "#1"}, - "west": {"uv": [6, 0, 10, 4], "rotation": 270, "texture": "#1"}, - "up": {"uv": [6, 12, 10, 16], "texture": "#1"}, - "down": {"uv": [6, 0, 10, 4], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Core", - "from": [5, 5, 9], - "to": [11, 11, 12], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 6, 6], "texture": "#7"}, - "east": {"uv": [0, 2, 6, 5], "rotation": 270, "texture": "#10"}, - "south": {"uv": [5, 0, 11, 6], "texture": "#2"}, - "west": {"uv": [0, 2, 6, 5], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 2, 6, 5], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 2, 6, 5], "texture": "#10"} - } - }, - { - "name": "Top", - "from": [6, 11, 9], - "to": [10, 13, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 2], "texture": "#10"}, - "east": {"uv": [0, 1, 4, 3], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "rotation": 90, "texture": "#10"}, - "west": {"uv": [0, 1, 4, 3], "texture": "#10"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#10"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#10"} - } - }, - { - "name": "Bottom", - "from": [6, 3, 9], - "to": [10, 5, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 2], "texture": "#10"}, - "east": {"uv": [0, 1, 4, 3], "rotation": 180, "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "rotation": 90, "texture": "#10"}, - "west": {"uv": [0, 1, 4, 3], "rotation": 180, "texture": "#10"}, - "up": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "down": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#10"} - } - }, - { - "name": "Left", - "from": [3, 6, 9], - "to": [5, 10, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "east": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "west": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "up": {"uv": [0, 1, 4, 3], "rotation": 270, "texture": "#10"}, - "down": {"uv": [0, 1, 4, 3], "rotation": 270, "texture": "#10"} - } - }, - { - "name": "Right", - "from": [11, 6, 9], - "to": [13, 10, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "east": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "west": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "up": {"uv": [0, 1, 4, 3], "rotation": 90, "texture": "#10"}, - "down": {"uv": [0, 1, 4, 3], "rotation": 90, "texture": "#10"} - } - }, - { - "name": "Bit1", - "from": [5.5, 5.5, 12], - "to": [10.5, 10.5, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 5, 5], "texture": "#2"}, - "east": {"uv": [0, 0, 5, 2], "rotation": 90, "texture": "#2"}, - "south": {"uv": [1, 2, 6, 7], "texture": "#2"}, - "west": {"uv": [0, 0, 5, 2], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 5, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 5, 2], "texture": "#2"} - } - }, - { - "name": "Bit2", - "from": [6, 6, 14], - "to": [10, 10, 16], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [0, 0, 4, 4], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 4, 4], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 2], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 4, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "Bit3", - "from": [6.5, 6.5, 16], - "to": [9.5, 9.5, 18], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [0, 0, 3, 3], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 3], "texture": "#2"}, - "south": {"uv": [0, 0, 3, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 3, 2], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 3, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 3, 2], "texture": "#2"} - } - }, - { - "name": "Bit4", - "from": [7, 7, 18], - "to": [9, 9, 20], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "south": {"uv": [5, 5, 7, 7], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 2, 2], "texture": "#2"} - } - } - ], - "display": {}, - "groups": [ - { - "name": "head", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_drill/item.json b/src/main/resources/assets/create/models/block/mechanical_drill/item.json deleted file mode 100644 index f4ee35562..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_drill/item.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/block", - "textures": { - "0": "create:block/axis_top", - "1": "create:block/axis", - "2": "block/anvil", - "7": "block/polished_andesite", - "10": "create:block/andesite_casing_very_short", - "particle": "block/anvil", - "gearbox_top": "create:block/gearbox_top", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short" - }, - "elements": [ - { - "name": "Axle", - "from": [6, 6, 0], - "to": [10, 10, 4], - "shade": false, - "faces": { - "north": {"uv": [6, 6, 10, 10], "texture": "#0"}, - "east": {"uv": [6, 12, 10, 16], "rotation": 90, "texture": "#1"}, - "west": {"uv": [6, 0, 10, 4], "rotation": 270, "texture": "#1"}, - "up": {"uv": [6, 12, 10, 16], "texture": "#1"}, - "down": {"uv": [6, 0, 10, 4], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Core", - "from": [5, 5, 9], - "to": [11, 11, 12], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 6, 6], "texture": "#7"}, - "east": {"uv": [0, 2, 6, 5], "rotation": 270, "texture": "#10"}, - "south": {"uv": [5, 0, 11, 6], "texture": "#2"}, - "west": {"uv": [0, 2, 6, 5], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 2, 6, 5], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 2, 6, 5], "texture": "#10"} - } - }, - { - "name": "Top", - "from": [6, 11, 9], - "to": [10, 13, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 2], "texture": "#10"}, - "east": {"uv": [0, 1, 4, 3], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "rotation": 90, "texture": "#10"}, - "west": {"uv": [0, 1, 4, 3], "texture": "#10"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#10"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#10"} - } - }, - { - "name": "Bottom", - "from": [6, 3, 9], - "to": [10, 5, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 2], "texture": "#10"}, - "east": {"uv": [0, 1, 4, 3], "rotation": 180, "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "rotation": 90, "texture": "#10"}, - "west": {"uv": [0, 1, 4, 3], "rotation": 180, "texture": "#10"}, - "up": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "down": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#10"} - } - }, - { - "name": "Left", - "from": [3, 6, 9], - "to": [5, 10, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "east": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "west": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "up": {"uv": [0, 1, 4, 3], "rotation": 270, "texture": "#10"}, - "down": {"uv": [0, 1, 4, 3], "rotation": 270, "texture": "#10"} - } - }, - { - "name": "Right", - "from": [11, 6, 9], - "to": [13, 10, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "east": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "west": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "up": {"uv": [0, 1, 4, 3], "rotation": 90, "texture": "#10"}, - "down": {"uv": [0, 1, 4, 3], "rotation": 90, "texture": "#10"} - } - }, - { - "name": "Bit1", - "from": [5.5, 5.5, 12], - "to": [10.5, 10.5, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 5, 5], "texture": "#2"}, - "east": {"uv": [0, 0, 5, 2], "rotation": 90, "texture": "#2"}, - "south": {"uv": [1, 2, 6, 7], "texture": "#2"}, - "west": {"uv": [0, 0, 5, 2], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 5, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 5, 2], "texture": "#2"} - } - }, - { - "name": "Bit2", - "from": [6, 6, 14], - "to": [10, 10, 16], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [0, 0, 4, 4], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 4, 4], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 2], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 4, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "Bit3", - "from": [6.5, 6.5, 16], - "to": [9.5, 9.5, 18], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [0, 0, 3, 3], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 3], "texture": "#2"}, - "south": {"uv": [0, 0, 3, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 3, 2], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 3, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 3, 2], "texture": "#2"} - } - }, - { - "name": "Bit4", - "from": [7, 7, 18], - "to": [9, 9, 20], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "south": {"uv": [5, 5, 7, 7], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "down": {"uv": [0, 0, 2, 2], "texture": "#2"} - } - }, - { - "name": "Body", - "from": [2, 2, 1], - "to": [14, 14, 9], - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#gearbox"}, - "south": {"uv": [2, 2, 14, 14], "texture": "#gearbox"} - } - }, - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 2, 10], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#gearbox_top"}, - "east": {"uv": [14, 6, 16, 16], "rotation": 90, "texture": "#10"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#gearbox_top"}, - "west": {"uv": [14, 6, 16, 16], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, - "down": {"uv": [0, 6, 16, 16], "texture": "#10"} - } - }, - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 10], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#gearbox_top"}, - "east": {"uv": [0, 6, 2, 16], "rotation": 90, "texture": "#10"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#gearbox_top"}, - "west": {"uv": [0, 6, 2, 16], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 6, 16, 16], "texture": "#10"}, - "down": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"} - } - }, - { - "name": "Side", - "from": [0, 2, 0], - "to": [2, 14, 10], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, - "east": {"uv": [2, 4, 14, 16], "rotation": 90, "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, - "west": {"uv": [2, 6, 14, 16], "rotation": 90, "texture": "#10"} - } - }, - { - "name": "Side", - "from": [14, 2, 0], - "to": [16, 14, 10], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, - "east": {"uv": [2, 6, 14, 16], "rotation": 90, "texture": "#10"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, - "west": {"uv": [2, 4, 14, 16], "rotation": 270, "texture": "#andesite_casing_short"} - } - } - ], - "display": {}, - "groups": [ - { - "name": "head", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "name": "casing", - "origin": [8, 8, 8], - "children": [10, 11, 12, 13, 14] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_harvester/blade.json b/src/main/resources/assets/create/models/block/mechanical_harvester/blade.json deleted file mode 100644 index a15ba52c4..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_harvester/blade.json +++ /dev/null @@ -1,118 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "harvester": "create:block/harvester", - "anvil": "minecraft:block/anvil", - "andesite_casing_short": "create:block/andesite_casing_short" - }, - "elements": [ - { - "name": "Wheel", - "from": [ 1, 0, 3 ], - "to": [ 1.0625, 12, 15 ], - "rotation": { "origin": [ 8, 6, 9 ], "axis": "x", "angle": -22.5 }, - "faces": { - "east": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] }, - "west": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 0, 11 ], - "to": [ 16, 2, 12 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 10, 6 ], - "to": [ 16, 12, 7 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 8, 13 ], - "to": [ 16, 9, 15 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 9, 16, 10 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 3, 3 ], - "to": [ 16, 4, 5 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 6, 15 ], - "to": [ 16, 8, 15.0625 ], - "faces": { - "north": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 }, - "south": { "texture": "#harvester", "uv": [ 16, 12, 0, 14 ], "rotation": 180 } - } - }, - { - "name": "Wheel", - "from": [ 15, 0, 3 ], - "to": [ 15.0625, 12, 15 ], - "rotation": { "origin": [ 8, 6, 9 ], "axis": "x", "angle": -22.5 }, - "faces": { - "east": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] }, - "west": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 4, 3 ], - "to": [ 16, 6, 3.0625 ], - "faces": { - "north": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] }, - "south": { "texture": "#harvester", "uv": [ 16, 12, 0, 14 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 12, 7 ], - "to": [ 16, 12.0625, 9 ], - "faces": { - "up": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 }, - "down": { "texture": "#harvester", "uv": [ 16, 12, 0, 14 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 0.0625, 9 ], - "to": [ 16, 0.125, 11 ], - "faces": { - "up": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] }, - "down": { "texture": "#harvester", "uv": [ 16, 12, 0, 14 ], "rotation": 180 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_harvester/block.json b/src/main/resources/assets/create/models/block/mechanical_harvester/block.json deleted file mode 100644 index 46c82eece..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_harvester/block.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "particle": "create:block/andesite_casing_short", - "andesite_casing_short": "create:block/andesite_casing_short" - }, - "elements": [ - { - "name": "Core", - "from": [0, 2, 13.1], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, - "east": {"uv": [2, 0, 14, 3], "rotation": 90, "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, - "west": {"uv": [2, 0, 14, 3], "rotation": 270, "texture": "#andesite_casing_short"}, - "up": {"uv": [0, 0, 16, 2.9], "texture": "#andesite_casing_short"}, - "down": {"uv": [0, 0, 16, 2.9], "rotation": 180, "texture": "#andesite_casing_short"} - } - }, - { - "name": "Attachment", - "from": [14, 7, 5], - "to": [15.9, 10, 13], - "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 10, 13]}, - "faces": { - "north": {"uv": [0.1, 8, 2, 11], "texture": "#andesite_casing_short"}, - "east": {"uv": [0, 0, 8, 3], "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 1.9, 3], "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#andesite_casing_short"}, - "up": {"uv": [0.1, 6, 2, 14], "rotation": 180, "texture": "#andesite_casing_short"}, - "down": {"uv": [0.1, 6, 2, 14], "rotation": 180, "texture": "#andesite_casing_short"} - } - }, - { - "name": "Attachment", - "from": [0.1, 7, 5], - "to": [2, 10, 13], - "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 10, 13]}, - "faces": { - "north": {"uv": [14, 8, 15.9, 11], "texture": "#andesite_casing_short"}, - "east": {"uv": [0, 0, 8, 3], "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 1.9, 3], "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#andesite_casing_short"}, - "up": {"uv": [14, 6, 15.9, 14], "rotation": 180, "texture": "#andesite_casing_short"}, - "down": {"uv": [14, 6, 15.9, 14], "rotation": 180, "texture": "#andesite_casing_short"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_harvester/item.json b/src/main/resources/assets/create/models/block/mechanical_harvester/item.json deleted file mode 100644 index 970dc1d27..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_harvester/item.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "parent": "create:block/block", - "textures": { - "harvester": "create:block/harvester", - "anvil": "minecraft:block/anvil", - "andesite_casing_short": "create:block/andesite_casing_short", - "particle": "create:block/andesite_casing_short" - }, - "elements": [ - { - "name": "Core", - "from": [ 0, 2, 0 ], - "to": [ 16, 14, 2.9 ], - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 2, 0, 14, 3 ], "rotation": 270 }, - "south": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 2, 0, 14, 3 ], "rotation": 90 }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 16, 2.9 ], "rotation": 180 }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 16, 2.9 ] } - } - }, - { - "name": "Wheel", - "from": [ 1, 0, 3 ], - "to": [ 1, 12, 15 ], - "rotation": { "origin": [ 8, 6, 9 ], "axis": "x", "angle": -22.5 }, - "faces": { - "east": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] }, - "west": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 0, 11 ], - "to": [ 16, 2, 12 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 10, 6 ], - "to": [ 16, 12, 7 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 1, 2 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 8, 13 ], - "to": [ 16, 9, 15 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 9, 16, 10 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] } - } - }, - { - "name": "Trim", - "from": [ 0, 3, 3 ], - "to": [ 16, 4, 5 ], - "faces": { - "north": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "east": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "south": { "texture": "#anvil", "uv": [ 0, 0, 16, 1 ] }, - "west": { "texture": "#anvil", "uv": [ 0, 0, 2, 1 ] }, - "up": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] }, - "down": { "texture": "#anvil", "uv": [ 0, 0, 16, 2 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 6, 15 ], - "to": [ 16, 8, 15 ], - "faces": { - "north": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 }, - "south": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 } - } - }, - { - "name": "Wheel", - "from": [ 15, 0, 3 ], - "to": [ 15, 12, 15 ], - "rotation": { "origin": [ 8, 6, 9 ], "axis": "x", "angle": -22.5 }, - "faces": { - "east": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] }, - "west": { "texture": "#harvester", "uv": [ 0, 0, 12, 12 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 4, 3 ], - "to": [ 16, 6, 3 ], - "faces": { - "north": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] }, - "south": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 12, 7 ], - "to": [ 16, 12, 9 ], - "faces": { - "up": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 }, - "down": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] } - } - }, - { - "name": "Blade", - "from": [ 0, 0, 9 ], - "to": [ 16, 0, 11 ], - "faces": { - "up": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ] }, - "down": { "texture": "#harvester", "uv": [ 0, 12, 16, 14 ], "rotation": 180 } - } - }, - { - "name": "Attachment", - "from": [ 0.1, 7, 3 ], - "to": [ 2, 10, 11 ], - "rotation": { "origin": [ 0, 10, 3 ], "axis": "x", "angle": 22.5 }, - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 1.9, 3 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 8, 3 ] }, - "south": { "texture": "#andesite_casing_short", "uv": [ 0.1, 8, 2, 11 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 8, 3 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0.1, 6, 2, 14 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0.1, 6, 2, 14 ] } - } - }, - { - "name": "Attachment", - "from": [ 14, 7, 3 ], - "to": [ 15.9, 10, 11 ], - "rotation": { "origin": [ 0, 10, 3 ], "axis": "x", "angle": 22.5 }, - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 1.9, 3 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 8, 3 ] }, - "south": { "texture": "#andesite_casing_short", "uv": [ 14, 8, 15.9, 11 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 0, 8, 3 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 14, 6, 15.9, 14 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 14, 6, 15.9, 14 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_mixer/block.json b/src/main/resources/assets/create/models/block/mechanical_mixer/block.json deleted file mode 100644 index c266f74ba..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_mixer/block.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "2": "block/spruce_log_top", - "4": "create:block/mixer_base_side", - "11": "create:block/mechanical_press_top", - "particle": "block/stripped_spruce_log" - }, - "elements": [ - { - "name": "Top", - "from": [0, 10, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "east": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "south": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#11"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#2"} - } - }, - { - "name": "Bottom", - "from": [0, 2, 0], - "to": [16, 6, 16], - "faces": { - "north": {"uv": [0, 10, 16, 14], "texture": "#4"}, - "east": {"uv": [0, 10, 16, 14], "texture": "#4"}, - "south": {"uv": [0, 10, 16, 14], "texture": "#4"}, - "west": {"uv": [0, 10, 16, 14], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#2"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#11"} - } - }, - { - "name": "Side1", - "from": [0, 6, 0], - "to": [0.1, 10, 16], - "faces": { - "east": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "west": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - }, - { - "name": "Side2", - "from": [15.9, 6, 0], - "to": [16, 10, 16], - "faces": { - "east": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "west": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - }, - { - "name": "Side3", - "from": [0, 6, 15.9], - "to": [16, 10, 16], - "faces": { - "north": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "south": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - }, - { - "name": "Side4", - "from": [0, 6, 0], - "to": [16, 10, 0.1], - "faces": { - "north": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "south": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_mixer/head.json b/src/main/resources/assets/create/models/block/mechanical_mixer/head.json deleted file mode 100644 index 18b1f1e2e..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_mixer/head.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "6": "create:block/mixer_head", - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "MixerCenter", - "from": [7, -4.5, 7], - "to": [9, 7.5, 9], - "shade": false, - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 12, 12, 14], "rotation": 90, "texture": "#6"}, - "east": {"uv": [0, 12, 12, 14], "rotation": 90, "texture": "#6"}, - "south": {"uv": [0, 12, 12, 14], "rotation": 90, "texture": "#6"}, - "west": {"uv": [0, 12, 12, 14], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 12, 2, 14], "texture": "#6"} - } - }, - { - "name": "mixerbottom1", - "from": [2.5, -4, 7], - "to": [13.5, -2, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 14, 11, 16], "texture": "#6"}, - "east": {"uv": [2, 8, 4, 10], "texture": "#6"}, - "south": {"uv": [0, 14, 11, 16], "texture": "#6"}, - "west": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "up": {"uv": [0, 12, 11, 14], "texture": "#6"}, - "down": {"uv": [0, 10, 11, 12], "texture": "#6"} - } - }, - { - "name": "mixerbottom2", - "from": [7, -4, 2.5], - "to": [9, -2, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [2, 8, 4, 10], "texture": "#6"}, - "east": {"uv": [0, 14, 11, 16], "texture": "#6"}, - "south": {"uv": [2, 8, 4, 10], "texture": "#6"}, - "west": {"uv": [0, 14, 11, 16], "texture": "#6"}, - "up": {"uv": [0, 12, 11, 14], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 10, 11, 12], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "mixerside4", - "from": [11.5, -2, 7], - "to": [13.5, 4, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 2, 2, 8], "rotation": 180, "texture": "#6"}, - "east": {"uv": [2, 2, 4, 8], "texture": "#6"}, - "south": {"uv": [0, 2, 2, 8], "texture": "#6"}, - "west": {"uv": [4, 0, 6, 6], "texture": "#6"} - } - }, - { - "name": "mixerside3", - "from": [2.5, -2, 7], - "to": [4.5, 4, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 2, 2, 8], "texture": "#6"}, - "east": {"uv": [4, 0, 6, 6], "texture": "#6"}, - "south": {"uv": [0, 2, 2, 8], "rotation": 180, "texture": "#6"}, - "west": {"uv": [2, 2, 4, 8], "texture": "#6"} - } - }, - { - "name": "mixerside2", - "from": [7, -2, 2.5], - "to": [9, 4, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [2, 2, 4, 8], "texture": "#6"}, - "east": {"uv": [0, 2, 2, 8], "texture": "#6"}, - "south": {"uv": [4, 0, 6, 6], "texture": "#6"}, - "west": {"uv": [0, 2, 2, 8], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "mixerside1", - "from": [7, -2, 11.5], - "to": [9, 4, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [4, 0, 6, 6], "texture": "#6"}, - "east": {"uv": [0, 2, 2, 8], "rotation": 180, "texture": "#6"}, - "south": {"uv": [2, 2, 4, 8], "texture": "#6"}, - "west": {"uv": [0, 2, 2, 8], "texture": "#6"} - } - }, - { - "name": "mixertop1", - "from": [7, 4, 2.5], - "to": [9, 6, 13.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "east": {"uv": [0, 14, 11, 16], "rotation": 180, "texture": "#6"}, - "south": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "west": {"uv": [0, 14, 11, 16], "rotation": 180, "texture": "#6"}, - "up": {"uv": [0, 10, 11, 12], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 12, 11, 14], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "mixertop2", - "from": [2.5, 4, 7], - "to": [13.5, 6, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 14, 11, 16], "rotation": 180, "texture": "#6"}, - "east": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "south": {"uv": [0, 14, 11, 16], "rotation": 180, "texture": "#6"}, - "west": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "up": {"uv": [0, 10, 11, 12], "texture": "#6"}, - "down": {"uv": [0, 12, 11, 14], "texture": "#6"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_mixer/item.json b/src/main/resources/assets/create/models/block/mechanical_mixer/item.json deleted file mode 100644 index d53ce5844..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_mixer/item.json +++ /dev/null @@ -1,437 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "texture_size": [32, 32], - "textures": { - "2": "block/spruce_log_top", - "4": "create:block/mixer_base_side", - "6": "create:block/mixer_head", - "11": "create:block/mechanical_press_top", - "1_2": "create:block/cogwheel", - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "Gear", - "from": [-1, 13.5, 6.5], - "to": [17, 16.5, 9.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear2", - "from": [-1, 13.5, 6.5], - "to": [17, 16.5, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear3", - "from": [-1, 13.5, 6.5], - "to": [17, 16.5, 9.5], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "east": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "south": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "west": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "texture": "#1_2"} - } - }, - { - "name": "Gear4", - "from": [6.5, 13.5, -1], - "to": [9.5, 16.5, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "east": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "south": {"uv": [5.5, 7.5, 7, 9], "texture": "#1_2"}, - "west": {"uv": [7, 7.5, 16, 9], "texture": "#1_2"}, - "up": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"}, - "down": {"uv": [7, 6, 16, 7.5], "rotation": 90, "texture": "#1_2"} - } - }, - { - "name": "GearCaseInner", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "east": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "south": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "west": {"uv": [0, 6, 6, 7], "texture": "#1_2"}, - "up": {"uv": [4, 0, 10, 6], "texture": "#1_2"}, - "down": {"uv": [4, 0, 10, 6], "texture": "#1_2"} - } - }, - { - "name": "GearCaseOuter", - "from": [4, 13, 4], - "to": [12, 17, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "east": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "south": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "west": {"uv": [0, 4, 4, 6], "texture": "#1_2"}, - "up": {"uv": [0, 0, 4, 4], "texture": "#1_2"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#1_2"} - } - }, - { - "name": "Side3", - "from": [0, 13, 16], - "to": [16, 17, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "south": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - }, - { - "name": "Side4", - "from": [0, 13, 0], - "to": [16, 17, 0], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "south": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - }, - { - "name": "MixerCenter", - "from": [7, -4.5, 7], - "to": [9, 7.5, 9], - "shade": false, - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 12, 12, 14], "rotation": 90, "texture": "#6"}, - "east": {"uv": [0, 12, 12, 14], "rotation": 90, "texture": "#6"}, - "south": {"uv": [0, 12, 12, 14], "rotation": 90, "texture": "#6"}, - "west": {"uv": [0, 12, 12, 14], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 12, 2, 14], "texture": "#6"} - } - }, - { - "name": "mixerbottom1", - "from": [2.5, -4, 7], - "to": [13.5, -2, 9], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 14, 11, 16], "texture": "#6"}, - "east": {"uv": [2, 8, 4, 10], "texture": "#6"}, - "south": {"uv": [0, 14, 11, 16], "texture": "#6"}, - "west": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "up": {"uv": [0, 12, 11, 14], "texture": "#6"}, - "down": {"uv": [0, 10, 11, 12], "texture": "#6"} - } - }, - { - "name": "mixerbottom2", - "from": [7, -4, 2.5], - "to": [9, -2, 13.5], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [2, 8, 4, 10], "texture": "#6"}, - "east": {"uv": [0, 14, 11, 16], "texture": "#6"}, - "south": {"uv": [2, 8, 4, 10], "texture": "#6"}, - "west": {"uv": [0, 14, 11, 16], "texture": "#6"}, - "up": {"uv": [0, 12, 11, 14], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 10, 11, 12], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "mixerside4", - "from": [11.5, -2, 7], - "to": [13.5, 4, 9], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 2, 2, 8], "rotation": 180, "texture": "#6"}, - "east": {"uv": [2, 2, 4, 8], "texture": "#6"}, - "south": {"uv": [0, 2, 2, 8], "texture": "#6"}, - "west": {"uv": [4, 0, 6, 6], "texture": "#6"} - } - }, - { - "name": "mixerside3", - "from": [2.5, -2, 7], - "to": [4.5, 4, 9], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 2, 2, 8], "texture": "#6"}, - "east": {"uv": [4, 0, 6, 6], "texture": "#6"}, - "south": {"uv": [0, 2, 2, 8], "rotation": 180, "texture": "#6"}, - "west": {"uv": [2, 2, 4, 8], "texture": "#6"} - } - }, - { - "name": "mixerside2", - "from": [7, -2, 2.5], - "to": [9, 4, 4.5], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [2, 2, 4, 8], "texture": "#6"}, - "east": {"uv": [0, 2, 2, 8], "texture": "#6"}, - "south": {"uv": [4, 0, 6, 6], "texture": "#6"}, - "west": {"uv": [0, 2, 2, 8], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "mixerside1", - "from": [7, -2, 11.5], - "to": [9, 4, 13.5], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [4, 0, 6, 6], "texture": "#6"}, - "east": {"uv": [0, 2, 2, 8], "rotation": 180, "texture": "#6"}, - "south": {"uv": [2, 2, 4, 8], "texture": "#6"}, - "west": {"uv": [0, 2, 2, 8], "texture": "#6"} - } - }, - { - "name": "mixertop1", - "from": [7, 4, 2.5], - "to": [9, 6, 13.5], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "east": {"uv": [0, 14, 11, 16], "rotation": 180, "texture": "#6"}, - "south": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "west": {"uv": [0, 14, 11, 16], "rotation": 180, "texture": "#6"}, - "up": {"uv": [0, 10, 11, 12], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 12, 11, 14], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "mixertop2", - "from": [2.5, 4, 7], - "to": [13.5, 6, 9], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 14, 11, 16], "rotation": 180, "texture": "#6"}, - "east": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "south": {"uv": [0, 14, 11, 16], "rotation": 180, "texture": "#6"}, - "west": {"uv": [2, 0, 4, 2], "texture": "#6"}, - "up": {"uv": [0, 10, 11, 12], "texture": "#6"}, - "down": {"uv": [0, 12, 11, 14], "texture": "#6"} - } - }, - { - "name": "polebase", - "from": [5, 7, 5], - "to": [11, 9, 11], - "shade": false, - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [10, 6, 16, 8], "texture": "#6"}, - "east": {"uv": [10, 6, 16, 8], "texture": "#6"}, - "south": {"uv": [10, 6, 16, 8], "texture": "#6"}, - "west": {"uv": [10, 6, 16, 8], "texture": "#6"}, - "up": {"uv": [10, 0, 16, 6], "texture": "#6"}, - "down": {"uv": [10, 0, 16, 6], "texture": "#6"} - } - }, - { - "name": "Pole1Core", - "from": [6, 9, 6], - "to": [10, 19, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]}, - "faces": { - "east": {"uv": [6, 6, 10, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [6, 6, 10, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [11, 1, 15, 5], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole1Side", - "from": [5, 9, 5], - "to": [11, 19, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 6, 1, 16], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [10, 5, 16, 6], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole1Side", - "from": [5, 9, 10], - "to": [11, 19, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 6, 1, 16], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [10, 0, 16, 1], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Core", - "from": [6, 19, 6], - "to": [10, 32, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "east": {"uv": [6, 0, 10, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [6, 0, 10, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [11, 1, 15, 5], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Side", - "from": [5, 19, 10], - "to": [11, 32, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "north": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 0, 1, 13], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [10, 0, 16, 1], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Side", - "from": [5, 19, 5], - "to": [11, 32, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "north": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 0, 1, 13], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [10, 5, 16, 6], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Top", - "from": [0, 17, 0], - "to": [16, 23, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "east": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "south": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "west": {"uv": [0, 0, 16, 6], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#11"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#2"} - } - }, - { - "name": "Bottom", - "from": [0, 9, 0], - "to": [16, 13, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 10, 16, 14], "texture": "#4"}, - "east": {"uv": [0, 10, 16, 14], "texture": "#4"}, - "south": {"uv": [0, 10, 16, 14], "texture": "#4"}, - "west": {"uv": [0, 10, 16, 14], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#2"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#11"} - } - }, - { - "name": "Side1", - "from": [0, 13, 0], - "to": [0, 17, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "east": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "west": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - }, - { - "name": "Side2", - "from": [16, 13, 0], - "to": [16, 17, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "east": {"uv": [0, 6, 16, 10], "texture": "#4"}, - "west": {"uv": [0, 6, 16, 10], "texture": "#4"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, -1.5, 0], - "scale": [0.4, 0.4, 0.4] - }, - "fixed": { - "translation": [0, -3, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [0, 1, 2, 3, 4, 5, - { - "name": "item", - "origin": [8, 8, 8], - "children": [6, 7, - { - "name": "mixerhead", - "origin": [8, 8, 8], - "children": [8, 9, 10, 11, 12, 13, 14, 15, 16] - }, - { - "name": "mechanical_press_head", - "origin": [8, 8, 8], - "children": [17, 18, 19, 20, 21, 22, 23] - }, - { - "name": "mixer_base", - "origin": [8, 8, 8], - "children": [ - { - "name": "mixerbase", - "origin": [8, 8, 8], - "children": [24, 25, 26, 27] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_mixer/pole.json b/src/main/resources/assets/create/models/block/mechanical_mixer/pole.json deleted file mode 100644 index 08ff4d057..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_mixer/pole.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "ambientocclusion": false, - "textures": { - "6": "create:block/mixer_head", - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "polebase", - "from": [5, 7, 5], - "to": [11, 9, 11], - "shade": false, - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [10, 6, 16, 8], "texture": "#6"}, - "east": {"uv": [10, 6, 16, 8], "texture": "#6"}, - "south": {"uv": [10, 6, 16, 8], "texture": "#6"}, - "west": {"uv": [10, 6, 16, 8], "texture": "#6"}, - "up": {"uv": [10, 0, 16, 6], "texture": "#6"}, - "down": {"uv": [10, 0, 16, 6], "texture": "#6"} - } - }, - { - "name": "Pole1Core", - "from": [6, 9, 6], - "to": [10, 19, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]}, - "faces": { - "east": {"uv": [6, 6, 10, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [6, 6, 10, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [11, 1, 15, 5], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole1Side", - "from": [5, 9, 5], - "to": [11, 19, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 6, 1, 16], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [10, 5, 16, 6], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole1Side", - "from": [5, 9, 10], - "to": [11, 19, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 6, 1, 16], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "down": {"uv": [10, 0, 16, 1], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Core", - "from": [6, 19, 6], - "to": [10, 32, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "east": {"uv": [6, 0, 10, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [6, 0, 10, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [11, 1, 15, 5], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Side", - "from": [5, 19, 10], - "to": [11, 32, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "north": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 0, 1, 13], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [10, 0, 16, 1], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Side", - "from": [5, 19, 5], - "to": [11, 32, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 13, 8]}, - "faces": { - "north": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 0, 1, 13], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [10, 5, 16, 6], "rotation": 180, "texture": "#mechanical_press_pole"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/extended/block.json b/src/main/resources/assets/create/models/block/mechanical_piston/extended/block.json deleted file mode 100644 index facc70252..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/extended/block.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "parent": "block/block", - "textures": { - "particle": "create:block/gearbox_top", - "0": "create:block/gearbox_top", - "1": "create:block/piston_bottom", - "2": "create:block/gearbox", - "3": "create:block/piston_inner", - "4": "block/piston_side", - "5": "create:block/pole_end" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 0.0, 0.0, 0.0 ], - "to": [ 16.0, 2.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#1", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - }, - { - "name": "Inner", - "from": [ 2.0, 2.0, 1.0 ], - "to": [ 14.0, 12.0, 15.0 ], - "faces": { - "north": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "south": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "up": { "texture": "#3", "uv": [ 2.0, 1.0, 14.0, 15.0 ] } - } - }, - { - "name": "Side", - "from": [ 0.0, 2.0, 0.0 ], - "to": [ 2.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 2.0 ], "rotation": 270 } - } - }, - { - "name": "Side2", - "from": [ 14.0, 2.0, 0.0 ], - "to": [ 16.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ], "rotation": 270 } - } - }, - { - "name": "Extension", - "from": [ 6.0, 12.0, 6.0 ], - "to": [ 10.0, 16.0, 10.0 ], - "faces": { - "north": { "texture": "#4", "uv": [ 12.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "east": { "texture": "#4", "uv": [ 12.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "south": { "texture": "#4", "uv": [ 12.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "west": { "texture": "#4", "uv": [ 12.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "up": { "texture": "#5", "uv": [ 6.0, 6.0, 10.0, 10.0 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/extended/block_rotated.json b/src/main/resources/assets/create/models/block/mechanical_piston/extended/block_rotated.json deleted file mode 100644 index 93ef108ad..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/extended/block_rotated.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "parent": "block/block", - "textures": { - "particle": "create:block/gearbox_top", - "0": "create:block/gearbox_top", - "1": "create:block/piston_bottom", - "2": "create:block/gearbox", - "3": "create:block/piston_inner", - "4": "block/piston_side", - "5": "create:block/pole_end" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 0.0, 0.0, 0.0 ], - "to": [ 16.0, 2.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#1", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - }, - { - "name": "Inner", - "from": [ 1.0, 2.0, 2.0 ], - "to": [ 15.0, 12.0, 14.0 ], - "faces": { - "east": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "west": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "up": { "texture": "#3", "uv": [ 2.0, 1.0, 14.0, 15.0 ], "rotation": 90 } - } - }, - { - "name": "Side", - "from": [ 0.0, 2.0, 0.0 ], - "to": [ 16.0, 12.0, 2.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 9.0 ] }, - "east": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 2.0 ], "rotation": 0 } - } - }, - { - "name": "Side2", - "from": [ 0.0, 2.0, 14.0 ], - "to": [ 16.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ], "rotation": 0 } - } - }, - { - "name": "Extension", - "from": [ 6.0, 12.0, 6.0 ], - "to": [ 10.0, 16.0, 10.0 ], - "faces": { - "north": { "texture": "#4", "uv": [ 12.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "east": { "texture": "#4", "uv": [ 12.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "south": { "texture": "#4", "uv": [ 12.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "west": { "texture": "#4", "uv": [ 12.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "up": { "texture": "#5", "uv": [ 6.0, 6.0, 10.0, 10.0 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/moving/block.json b/src/main/resources/assets/create/models/block/mechanical_piston/moving/block.json deleted file mode 100644 index f0df0d203..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/moving/block.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "parent": "block/block", - "textures": { - "particle": "create:block/gearbox_top", - "0": "create:block/gearbox_top", - "1": "create:block/piston_bottom", - "2": "create:block/gearbox", - "3": "create:block/piston_inner" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 0.0, 0.0, 0.0 ], - "to": [ 16.0, 2.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#1", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - }, - { - "name": "Inner", - "from": [ 2.0, 2.0, 1.0 ], - "to": [ 14.0, 12.0, 15.0 ], - "faces": { - "north": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "south": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "up": { "texture": "#3", "uv": [ 2.0, 1.0, 14.0, 15.0 ] }, - "down": { "texture": "#2", "uv": [ 0.0, 0.0, 12.0, 14.0 ] } - } - }, - { - "name": "Side", - "from": [ 0.0, 2.0, 0.0 ], - "to": [ 2.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 2.0 ], "rotation": 270 } - } - }, - { - "name": "Side2", - "from": [ 14.0, 2.0, 0.0 ], - "to": [ 16.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ], "rotation": 270 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/moving/block_rotated.json b/src/main/resources/assets/create/models/block/mechanical_piston/moving/block_rotated.json deleted file mode 100644 index 92d6298fd..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/moving/block_rotated.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "parent": "block/block", - "textures": { - "particle": "create:block/gearbox_top", - "0": "create:block/gearbox_top", - "1": "create:block/piston_bottom", - "2": "create:block/gearbox", - "3": "create:block/piston_inner" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 0.0, 0.0, 0.0 ], - "to": [ 16.0, 2.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#1", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - }, - { - "name": "Inner", - "from": [ 1.0, 2.0, 2.0 ], - "to": [ 15.0, 12.0, 14.0 ], - "faces": { - "east": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "west": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "up": { "texture": "#3", "uv": [ 2.0, 1.0, 14.0, 15.0 ], "rotation": 90 } - } - }, - { - "name": "Side", - "from": [ 0.0, 2.0, 0.0 ], - "to": [ 16.0, 12.0, 2.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 9.0 ] }, - "east": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 2.0 ], "rotation": 0 } - } - }, - { - "name": "Side2", - "from": [ 0.0, 2.0, 14.0 ], - "to": [ 16.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ], "rotation": 0 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/normal/block.json b/src/main/resources/assets/create/models/block/mechanical_piston/normal/block.json deleted file mode 100644 index dfc0f6c17..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/normal/block.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "parent": "block/block", - "textures": { - "particle": "create:block/gearbox_top", - "0": "create:block/gearbox_top", - "1": "create:block/piston_bottom", - "2": "create:block/gearbox", - "3": "create:block/piston_inner", - "4": "block/piston_side", - "5": "block/piston_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 0.0, 0.0, 0.0 ], - "to": [ 16.0, 2.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#1", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - }, - { - "name": "Inner", - "from": [ 2.0, 2.0, 1.0 ], - "to": [ 14.0, 12.0, 15.0 ], - "faces": { - "north": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "south": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "down": { "texture": "#2", "uv": [ 0.0, 0.0, 12.0, 14.0 ] } - } - }, - { - "name": "Side", - "from": [ 0.0, 2.0, 0.0 ], - "to": [ 2.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] } - } - }, - { - "name": "Side2", - "from": [ 14.0, 2.0, 0.0 ], - "to": [ 16.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] } - } - }, - { - "name": "Top", - "from": [ 0.0, 12.0, 0.0 ], - "to": [ 16.0, 16.0, 16.0 ], - "faces": { - "north": { "texture": "#4", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "east": { "texture": "#4", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "south": { "texture": "#4", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "west": { "texture": "#4", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "up": { "texture": "#5", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#3", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/normal/block_rotated.json b/src/main/resources/assets/create/models/block/mechanical_piston/normal/block_rotated.json deleted file mode 100644 index 46e8de9a2..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/normal/block_rotated.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "textures": { - "particle": "create:block/gearbox_top", - "0": "create:block/gearbox_top", - "1": "create:block/piston_bottom", - "2": "create:block/gearbox", - "3": "create:block/piston_inner", - "4": "block/piston_side", - "5": "block/piston_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 0.0, 0.0, 0.0 ], - "to": [ 16.0, 2.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 14.0, 16.0, 16.0 ] }, - "up": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#1", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - }, - { - "name": "Inner", - "from": [ 1.0, 2.0, 2.0 ], - "to": [ 15.0, 12.0, 14.0 ], - "faces": { - "east": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] }, - "west": { "texture": "#2", "uv": [ 2.0, 4.0, 14.0, 14.0 ] } - } - }, - { - "name": "Side", - "from": [ 0.0, 2.0, 0.0 ], - "to": [ 16.0, 12.0, 2.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 9.0 ] }, - "east": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] } - } - }, - { - "name": "Side2", - "from": [ 0.0, 2.0, 14.0 ], - "to": [ 16.0, 12.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 2.0, 10.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 10.0 ] }, - "west": { "texture": "#0", "uv": [ 14.0, 0.0, 16.0, 10.0 ] } - } - }, - { - "name": "Top", - "from": [ 0.0, 12.0, 0.0 ], - "to": [ 16.0, 16.0, 16.0 ], - "faces": { - "north": { "texture": "#4", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "east": { "texture": "#4", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "south": { "texture": "#4", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "west": { "texture": "#4", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "up": { "texture": "#5", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#3", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/normal/head.json b/src/main/resources/assets/create/models/block/mechanical_piston/normal/head.json deleted file mode 100644 index 3f30584c3..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/normal/head.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "parent": "block/block", - "textures": { - "particle": "block/piston_top", - "0": "block/piston_side", - "1": "block/piston_top", - "2": "block/piston_top" - }, - "elements": [ - { - "name": "Top", - "from": [ 0.0, 12.0, 0.0 ], - "to": [ 16.0, 16.0, 16.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ] }, - "up": { "texture": "#1", "uv": [ 0.0, 0.0, 16.0, 16.0 ] }, - "down": { "texture": "#2", "uv": [ 0.0, 0.0, 16.0, 16.0 ] } - } - }, - { - "name": "Pole", - "from": [ 6.0, 0.0, 6.0 ], - "to": [ 10.0, 16.0, 10.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ], "rotation": 270 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/normal/item.json b/src/main/resources/assets/create/models/block/mechanical_piston/normal/item.json deleted file mode 100644 index 590db2785..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/normal/item.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/gearbox_top", - "1": "create:block/piston_bottom", - "2": "create:block/gearbox", - "3": "create:block/piston_inner", - "4": "block/piston_side", - "5": "block/piston_top", - "particle": "create:block/axis", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "name": "Inner", - "from": [2, 2, 1], - "to": [14, 12, 15], - "faces": { - "north": {"uv": [2, 4, 14, 14], "texture": "#2"}, - "south": {"uv": [2, 4, 14, 14], "texture": "#2"}, - "down": {"uv": [0, 0, 12, 14], "texture": "#2"} - } - }, - { - "name": "Side", - "from": [0, 2, 0], - "to": [2, 12, 16], - "faces": { - "north": {"uv": [14, 0, 16, 10], "texture": "#0"}, - "east": {"uv": [0, 0, 16, 10], "texture": "#0"}, - "south": {"uv": [0, 0, 2, 10], "texture": "#0"}, - "west": {"uv": [0, 0, 16, 10], "texture": "#0"} - } - }, - { - "name": "Side2", - "from": [14, 2, 0], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [0, 0, 2, 10], "texture": "#0"}, - "east": {"uv": [0, 0, 16, 10], "texture": "#0"}, - "south": {"uv": [14, 0, 16, 10], "texture": "#0"}, - "west": {"uv": [0, 0, 16, 10], "texture": "#0"} - } - }, - { - "name": "Top", - "from": [0, 12, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 4], "texture": "#4"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#4"}, - "south": {"uv": [0, 0, 16, 4], "texture": "#4"}, - "west": {"uv": [0, 0, 16, 4], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#5"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} - } - } - ], - "groups": [0, 1, 2, 3, 4, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/sticky/block.json b/src/main/resources/assets/create/models/block/mechanical_piston/sticky/block.json deleted file mode 100644 index c7d8146f9..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/sticky/block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/mechanical_piston/normal/block", - "textures": { - "5": "block/piston_top_sticky" - } -} diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/sticky/block_rotated.json b/src/main/resources/assets/create/models/block/mechanical_piston/sticky/block_rotated.json deleted file mode 100644 index fae548960..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/sticky/block_rotated.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/mechanical_piston/normal/block_rotated", - "textures": { - "5": "block/piston_top_sticky" - } -} diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/sticky/head.json b/src/main/resources/assets/create/models/block/mechanical_piston/sticky/head.json deleted file mode 100644 index 1424b4476..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/sticky/head.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/mechanical_piston/normal/head", - "textures": { - "particle": "block/piston_top_sticky", - "1": "block/piston_top_sticky" - } -} diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/sticky/item.json b/src/main/resources/assets/create/models/block/mechanical_piston/sticky/item.json deleted file mode 100644 index 8ce8a71f0..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_piston/sticky/item.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/mechanical_piston/normal/item", - "textures": { - "5": "block/piston_top_sticky" - } -} diff --git a/src/main/resources/assets/create/models/block/mechanical_plough.json b/src/main/resources/assets/create/models/block/mechanical_plough.json deleted file mode 100644 index bdbde566a..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_plough.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "block/anvil", - "particle": "create:block/andesite_casing_short", - "andesite_casing_short": "create:block/andesite_casing_short" - }, - "elements": [ - { - "name": "Core", - "from": [0, 2, 13.1], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, - "east": {"uv": [2, 0, 14, 3], "rotation": 90, "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 4, 16, 16], "texture": "#andesite_casing_short"}, - "west": {"uv": [2, 0, 14, 3], "rotation": 270, "texture": "#andesite_casing_short"}, - "up": {"uv": [0, 0, 16, 2.9], "texture": "#andesite_casing_short"}, - "down": {"uv": [0, 0, 16, 2.9], "rotation": 180, "texture": "#andesite_casing_short"} - } - }, - { - "name": "Attachment", - "from": [14, 4, 1], - "to": [15.9, 7, 10], - "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 10, 13]}, - "faces": { - "north": {"uv": [0.1, 8, 2, 11], "texture": "#andesite_casing_short"}, - "east": {"uv": [0, 0, 9, 3], "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 1.9, 3], "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 9, 3], "texture": "#andesite_casing_short"}, - "up": {"uv": [0, 4, 1.9, 13], "rotation": 180, "texture": "#andesite_casing_short"}, - "down": {"uv": [0, 4, 1.9, 13], "rotation": 180, "texture": "#andesite_casing_short"} - } - }, - { - "name": "Attachment", - "from": [2, 5, -1], - "to": [13.9, 6, 11], - "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 10, 13]}, - "faces": { - "north": {"uv": [2, 15, 13.9, 16], "texture": "#1"}, - "east": {"uv": [0, 0, 12, 1], "texture": "#1"}, - "south": {"uv": [0, 0, 11.9, 1], "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 12, 1], "texture": "#1"}, - "up": {"uv": [2, 2, 13.9, 14], "rotation": 180, "texture": "#1"}, - "down": {"uv": [2, 4, 13.9, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Attachment", - "from": [0.1, 4, 1], - "to": [2, 7, 10], - "rotation": {"angle": -22.5, "axis": "x", "origin": [16, 10, 13]}, - "faces": { - "north": {"uv": [14, 8, 15.9, 11], "texture": "#andesite_casing_short"}, - "east": {"uv": [0, 0, 9, 3], "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 1.9, 3], "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 9, 3], "texture": "#andesite_casing_short"}, - "up": {"uv": [14, 4, 15.9, 13], "rotation": 180, "texture": "#andesite_casing_short"}, - "down": {"uv": [14, 4, 15.9, 13], "rotation": 180, "texture": "#andesite_casing_short"} - } - }, - { - "name": "Attachment", - "from": [0, 4, 10], - "to": [16, 7, 13.1], - "rotation": {"angle": 0, "axis": "x", "origin": [16, 10, 14]}, - "faces": { - "north": {"uv": [0, 0, 16, 3], "texture": "#andesite_casing_short"}, - "east": {"uv": [0, 0, 3.1, 3], "texture": "#andesite_casing_short"}, - "south": {"uv": [0, 0, 16, 3], "texture": "#andesite_casing_short"}, - "west": {"uv": [0, 0, 3.1, 3], "texture": "#andesite_casing_short"}, - "up": {"uv": [0, 0, 16, 3], "texture": "#andesite_casing_short"}, - "down": {"uv": [0, 0, 16, 3], "rotation": 180, "texture": "#andesite_casing_short"} - } - } - ], - "display": { - "gui": { - "rotation": [30, -135, 0], - "translation": [1, 0, 0], - "scale": [0.625, 0.625, 0.625] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_press/block.json b/src/main/resources/assets/create/models/block/mechanical_press/block.json deleted file mode 100644 index 113f7348d..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_press/block.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "4": "create:block/mechanical_press_side", - "gearbox_top": "create:block/gearbox_top", - "particle": "create:block/mechanical_press_side", - "gearbox": "create:block/gearbox", - "mechanical_press_top": "create:block/mechanical_press_top", - "mechanical_press_bottom": "create:block/mechanical_press_bottom" - }, - "elements": [ - { - "name": "Top", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#gearbox"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#4"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#gearbox"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#mechanical_press_top"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#gearbox"} - } - }, - { - "name": "Core", - "from": [2, 4, 1], - "to": [14, 14, 15], - "faces": { - "north": {"uv": [2, 2, 14, 12], "texture": "#gearbox"}, - "south": {"uv": [2, 2, 14, 12], "texture": "#gearbox"}, - "down": {"uv": [2, 1, 14, 15], "texture": "#mechanical_press_bottom"} - } - }, - { - "name": "Side", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#4"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#4"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#gearbox_top"} - } - }, - { - "name": "Side", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#4"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#4"}, - "down": {"uv": [14, 0, 16, 16], "texture": "#gearbox_top"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_press/head.json b/src/main/resources/assets/create/models/block/mechanical_press/head.json deleted file mode 100644 index 2f38fe009..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_press/head.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "mechanical_press_head": "create:block/mechanical_press_head", - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "Pole1Core", - "from": [ 6, 4, 6 ], - "to": [ 10, 14, 10 ], - "faces": { - "east": { "texture": "#mechanical_press_pole", "uv": [ 6, 6, 10, 16 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 6, 6, 10, 16 ] } - } - }, - { - "name": "Pole2Core", - "from": [ 6, 14, 6 ], - "to": [ 10, 27, 10 ], - "faces": { - "east": { "texture": "#mechanical_press_pole", "uv": [ 6, 0, 10, 13 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 6, 0, 10, 13 ] }, - "up": { "texture": "#mechanical_press_pole", "uv": [ 11, 1, 15, 5 ], "rotation": 180 } - } - }, - { - "name": "Pole1Side", - "from": [ 5, 4, 5 ], - "to": [ 11, 14, 6 ], - "faces": { - "north": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 6, 16 ] }, - "east": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 1, 16 ] }, - "south": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 6, 16 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 5, 6, 6, 16 ] } - } - }, - { - "name": "Pole1Side", - "from": [ 5, 4, 10 ], - "to": [ 11, 14, 11 ], - "faces": { - "north": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 6, 16 ] }, - "east": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 1, 16 ] }, - "south": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 6, 16 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 5, 6, 6, 16 ] } - } - }, - { - "name": "Pole2Side", - "from": [ 5, 14, 10 ], - "to": [ 11, 27, 11 ], - "faces": { - "north": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 6, 13 ] }, - "east": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 1, 13 ] }, - "south": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 6, 13 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 5, 0, 6, 13 ] }, - "up": { "texture": "#mechanical_press_pole", "uv": [ 10, 0, 16, 1 ], "rotation": 180 } - } - }, - { - "name": "Pole2Side", - "from": [ 5, 14, 5 ], - "to": [ 11, 27, 6 ], - "faces": { - "north": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 6, 13 ] }, - "east": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 1, 13 ] }, - "south": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 6, 13 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 5, 0, 6, 13 ] }, - "up": { "texture": "#mechanical_press_pole", "uv": [ 10, 5, 16, 6 ], "rotation": 180 } - } - }, - { - "name": "Head", - "from": [ 3, 0, 3 ], - "to": [ 13, 4, 13 ], - "faces": { - "north": { "texture": "#mechanical_press_head", "uv": [ 1, 0, 11, 4 ] }, - "east": { "texture": "#mechanical_press_head", "uv": [ 1, 0, 11, 4 ] }, - "south": { "texture": "#mechanical_press_head", "uv": [ 1, 0, 11, 4 ] }, - "west": { "texture": "#mechanical_press_head", "uv": [ 1, 0, 11, 4 ] }, - "up": { "texture": "#mechanical_press_head", "uv": [ 1, 5, 11, 15 ], "rotation": 180 }, - "down": { "texture": "#mechanical_press_head", "uv": [ 1, 5, 11, 15 ], "rotation": 180 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_press/item.json b/src/main/resources/assets/create/models/block/mechanical_press/item.json deleted file mode 100644 index 28d22b00d..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_press/item.json +++ /dev/null @@ -1,174 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "8": "create:block/mechanical_press_side", - "mechanical_press_head": "create:block/mechanical_press_head", - "gearbox_top": "create:block/gearbox_top", - "mechanical_press_pole": "create:block/mechanical_press_pole", - "gearbox": "create:block/gearbox", - "mechanical_press_top": "create:block/mechanical_press_top", - "mechanical_press_bottom": "create:block/mechanical_press_bottom", - "particle": "create:block/mechanical_press_side" - }, - "elements": [ - { - "name": "Top", - "from": [0, 18, 0], - "to": [16, 20, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#gearbox"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#8"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#gearbox"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#8"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#mechanical_press_top"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#gearbox"} - } - }, - { - "name": "Core", - "from": [2, 8, 1], - "to": [14, 18, 15], - "faces": { - "north": {"uv": [2, 2, 14, 12], "texture": "#gearbox"}, - "south": {"uv": [2, 2, 14, 12], "texture": "#gearbox"}, - "down": {"uv": [2, 1, 14, 15], "rotation": 180, "texture": "#mechanical_press_bottom"} - } - }, - { - "name": "Side", - "from": [14, 6, 0], - "to": [16, 18, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#8"}, - "south": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#8"}, - "down": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#gearbox_top"} - } - }, - { - "name": "Side", - "from": [0, 6, 0], - "to": [2, 18, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#gearbox_top"}, - "east": {"uv": [0, 2, 16, 14], "texture": "#8"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#gearbox_top"}, - "west": {"uv": [0, 2, 16, 14], "texture": "#8"}, - "down": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#gearbox_top"} - } - }, - { - "name": "Pole1Core", - "from": [6, 4, 6], - "to": [10, 14, 10], - "faces": { - "east": {"uv": [6, 6, 10, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [6, 6, 10, 16], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Core", - "from": [6, 14, 6], - "to": [10, 27, 10], - "faces": { - "east": {"uv": [6, 0, 10, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [6, 0, 10, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [11, 1, 15, 5], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole1Side", - "from": [5, 4, 5], - "to": [11, 14, 6], - "faces": { - "north": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 6, 1, 16], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 6, 6, 16], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole1Side", - "from": [5, 4, 10], - "to": [11, 14, 11], - "faces": { - "north": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 6, 1, 16], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 6, 6, 16], "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Side", - "from": [5, 14, 10], - "to": [11, 27, 11], - "faces": { - "north": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 0, 1, 13], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [10, 0, 16, 1], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Pole2Side", - "from": [5, 14, 5], - "to": [11, 27, 6], - "faces": { - "north": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "east": {"uv": [0, 0, 1, 13], "texture": "#mechanical_press_pole"}, - "south": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "west": {"uv": [5, 0, 6, 13], "texture": "#mechanical_press_pole"}, - "up": {"uv": [10, 5, 16, 6], "rotation": 180, "texture": "#mechanical_press_pole"} - } - }, - { - "name": "Head", - "from": [3, 0, 3], - "to": [13, 4, 13], - "faces": { - "north": {"uv": [1, 0, 11, 4], "texture": "#mechanical_press_head"}, - "east": {"uv": [1, 0, 11, 4], "texture": "#mechanical_press_head"}, - "south": {"uv": [1, 0, 11, 4], "texture": "#mechanical_press_head"}, - "west": {"uv": [1, 0, 11, 4], "texture": "#mechanical_press_head"}, - "up": {"uv": [1, 5, 11, 15], "rotation": 180, "texture": "#mechanical_press_head"}, - "down": {"uv": [1, 5, 11, 15], "rotation": 180, "texture": "#mechanical_press_head"} - } - }, - { - "name": "Axis", - "from": [6, 10, 0], - "to": [10, 14, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"} - } - } - ], - "display": { - "gui": { - "rotation": [30, 225, 0], - "translation": [0, -2, 0], - "scale": [0.55, 0.55, 0.55] - }, - "fixed": { - "translation": [0, -2.75, -0.0625], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_pump/arrow.json b/src/main/resources/assets/create/models/block/mechanical_pump/arrow.json deleted file mode 100644 index 56ff46484..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_pump/arrow.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/large_wheels", - "textures": { - "4": "create:block/pump", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [7, 11.5, 1.5], - "to": [9, 13.5, 2.5], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 14.5, 9.5]}, - "faces": { - "north": {"uv": [12, 2, 14, 4], "rotation": 270, "texture": "#4"}, - "east": {"uv": [12, 2, 14, 3], "rotation": 270, "texture": "#4"}, - "south": {"uv": [14, 2, 12, 4], "rotation": 90, "texture": "#4"}, - "west": {"uv": [12, 3, 14, 4], "rotation": 90, "texture": "#4"}, - "up": {"uv": [12, 3, 14, 4], "texture": "#4"}, - "down": {"uv": [12, 2, 13, 4], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [7, 11.5, 13.5], - "to": [9, 13.5, 14.5], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 14.5, 6.5]}, - "faces": { - "north": {"uv": [14, 4, 12, 2], "rotation": 90, "texture": "#4"}, - "east": {"uv": [12, 3, 14, 2], "rotation": 270, "texture": "#4"}, - "south": {"uv": [12, 4, 14, 2], "rotation": 270, "texture": "#4"}, - "west": {"uv": [12, 4, 14, 3], "rotation": 90, "texture": "#4"}, - "up": {"uv": [12, 4, 14, 3], "texture": "#4"}, - "down": {"uv": [13, 2, 12, 4], "rotation": 90, "texture": "#4"} - } - }, - { - "from": [7, 13.5, 1.5], - "to": [11, 15.5, 2.5], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 14.5, 9.5]}, - "faces": { - "north": {"uv": [14, 0, 16, 4], "rotation": 270, "texture": "#4"}, - "east": {"uv": [14, 0, 16, 1], "rotation": 270, "texture": "#4"}, - "south": {"uv": [16, 0, 14, 4], "rotation": 90, "texture": "#4"}, - "west": {"uv": [12, 3, 14, 4], "rotation": 270, "texture": "#4"}, - "up": {"uv": [15, 0, 16, 4], "rotation": 90, "texture": "#4"}, - "down": {"uv": [12, 0, 13, 4], "rotation": 270, "texture": "#4"} - } - }, - { - "from": [7, 13.5, 13.5], - "to": [11, 15.5, 14.5], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 14.5, 6.5]}, - "faces": { - "north": {"uv": [16, 4, 14, 0], "rotation": 90, "texture": "#4"}, - "east": {"uv": [14, 1, 16, 0], "rotation": 270, "texture": "#4"}, - "south": {"uv": [14, 4, 16, 0], "rotation": 270, "texture": "#4"}, - "west": {"uv": [12, 4, 14, 3], "rotation": 270, "texture": "#4"}, - "up": {"uv": [16, 0, 15, 4], "rotation": 90, "texture": "#4"}, - "down": {"uv": [13, 0, 12, 4], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "rod", - "from": [7.5, 13.5, 1], - "to": [8.5, 14.5, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [15.5, 21.5, 10]}, - "faces": { - "north": {"uv": [0, 15, 1, 16], "texture": "#4"}, - "east": {"uv": [0, 15, 14, 16], "texture": "#4"}, - "south": {"uv": [0, 15, 1, 16], "texture": "#4"}, - "west": {"uv": [0, 15, 14, 16], "texture": "#4"}, - "up": {"uv": [0, 15, 14, 16], "rotation": 90, "texture": "#4"}, - "down": {"uv": [0, 15, 14, 16], "rotation": 90, "texture": "#4"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "arrow", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_pump/block.json b/src/main/resources/assets/create/models/block/mechanical_pump/block.json deleted file mode 100644 index 859edf294..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_pump/block.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/large_wheels", - "textures": { - "3": "create:block/fluid_pipe", - "4": "create:block/pump", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "name": "middle", - "from": [4, 4, 4], - "to": [12, 12, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7, 8]}, - "faces": { - "north": {"uv": [0, 6, 4, 10], "texture": "#3"}, - "east": {"uv": [0, 6, 4, 10], "texture": "#3"}, - "south": {"uv": [0, 6, 4, 10], "texture": "#3"}, - "west": {"uv": [0, 6, 4, 10], "texture": "#3"} - } - }, - { - "name": "back", - "from": [2, 0, 2], - "to": [14, 5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 8, 20]}, - "faces": { - "north": {"uv": [11, 0, 13.5, 6], "rotation": 270, "texture": "#3"}, - "east": {"uv": [11, 0, 13.5, 6], "rotation": 270, "texture": "#3"}, - "south": {"uv": [11, 0, 13.5, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [11, 0, 13.5, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 12, 12], "texture": "#4"} - } - }, - { - "name": "front", - "from": [3, 12, 3], - "to": [13, 16, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 10]}, - "faces": { - "north": {"uv": [12, 4, 16, 14], "rotation": 90, "texture": "#4"}, - "east": {"uv": [12, 4, 16, 14], "rotation": 90, "texture": "#4"}, - "south": {"uv": [12, 4, 16, 14], "rotation": 90, "texture": "#4"}, - "west": {"uv": [12, 4, 16, 14], "rotation": 90, "texture": "#4"}, - "up": {"uv": [6, 0, 11, 5], "texture": "#3"}, - "down": {"uv": [6, 0, 11, 5], "texture": "#3"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "pump", - "origin": [8, 8, 8], - "children": [0, 1, 2] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_pump/cog.json b/src/main/resources/assets/create/models/block/mechanical_pump/cog.json deleted file mode 100644 index aa1befa09..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_pump/cog.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "texture_size": [32, 32], - "textures": { - "5": "create:block/millstone", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "name": "Gear6", - "from": [6.5, -1, 5], - "to": [9.5, 17, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]}, - "faces": { - "north": {"uv": [6, 3, 15, 4.5], "rotation": 270, "texture": "#5"}, - "east": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, - "south": {"uv": [6, 3, 15, 4.5], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"}, - "up": {"uv": [9, 10, 10.5, 13], "rotation": 180, "texture": "#5"}, - "down": {"uv": [9, 10, 10.5, 13], "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [6.5, -1, 5], - "to": [9.5, 17, 11], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 6.5]}, - "faces": { - "north": {"uv": [6, 3, 15, 4.5], "rotation": 270, "texture": "#5"}, - "east": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, - "south": {"uv": [6, 3, 15, 4.5], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"}, - "up": {"uv": [9, 10, 10.5, 13], "rotation": 180, "texture": "#5"}, - "down": {"uv": [9, 10, 10.5, 13], "texture": "#5"} - } - }, - { - "name": "Gear8", - "from": [-1, 6.5, 5], - "to": [17, 9.5, 11], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 6.5]}, - "faces": { - "north": {"uv": [6, 3, 15, 4.5], "texture": "#5"}, - "east": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, - "south": {"uv": [6, 3, 15, 4.5], "texture": "#5"}, - "west": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 10, 9, 13], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 10, 9, 13], "texture": "#5"} - } - }, - { - "name": "Gear8", - "from": [-1, 6.5, 5], - "to": [17, 9.5, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6.5]}, - "faces": { - "north": {"uv": [6, 3, 15, 4.5], "texture": "#5"}, - "east": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, - "south": {"uv": [6, 3, 15, 4.5], "texture": "#5"}, - "west": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 10, 9, 13], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 10, 9, 13], "texture": "#5"} - } - }, - { - "name": "GearCaseInner", - "from": [2, 2, 5.5], - "to": [14, 14, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, - "faces": { - "north": {"uv": [0, 0, 6, 6], "rotation": 180, "texture": "#5"}, - "east": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"}, - "south": {"uv": [0, 0, 6, 6], "texture": "#5"}, - "west": {"uv": [0, 6, 6, 8.5], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 6, 6, 8.5], "rotation": 180, "texture": "#5"}, - "down": {"uv": [0, 6, 6, 8.5], "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "cogwheel", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_pump/item.json b/src/main/resources/assets/create/models/block/mechanical_pump/item.json deleted file mode 100644 index a91c59241..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_pump/item.json +++ /dev/null @@ -1,236 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/block", - "textures": { - "3": "create:block/fluid_pipe", - "4": "create:block/pump", - "5": "create:block/millstone", - "particle": "create:block/fluid_pipe" - }, - "elements": [ - { - "from": [1, 3, 1.5], - "to": [3, 5, 2.5], - "rotation": {"angle": -45, "axis": "z", "origin": [6.5, 4, 8]}, - "faces": { - "north": {"uv": [12, 2, 14, 4], "texture": "#4"}, - "east": {"uv": [12, 2, 13, 4], "texture": "#4"}, - "south": {"uv": [14, 2, 12, 4], "texture": "#4"}, - "west": {"uv": [12, 3, 14, 4], "rotation": 270, "texture": "#4"}, - "up": {"uv": [12, 2, 14, 3], "rotation": 180, "texture": "#4"}, - "down": {"uv": [12, 3, 14, 4], "texture": "#4"} - } - }, - { - "from": [1, 3, 13.5], - "to": [3, 5, 14.5], - "rotation": {"angle": -45, "axis": "z", "origin": [6.5, 4, 8]}, - "faces": { - "north": {"uv": [14, 4, 12, 2], "rotation": 180, "texture": "#4"}, - "east": {"uv": [13, 2, 12, 4], "texture": "#4"}, - "south": {"uv": [12, 4, 14, 2], "rotation": 180, "texture": "#4"}, - "west": {"uv": [12, 4, 14, 3], "rotation": 270, "texture": "#4"}, - "up": {"uv": [12, 3, 14, 2], "rotation": 180, "texture": "#4"}, - "down": {"uv": [12, 4, 14, 3], "texture": "#4"} - } - }, - { - "from": [-1, 3, 1.5], - "to": [1, 7, 2.5], - "rotation": {"angle": -45, "axis": "z", "origin": [6.5, 4, 8]}, - "faces": { - "north": {"uv": [14, 0, 16, 4], "texture": "#4"}, - "east": {"uv": [12, 0, 13, 4], "rotation": 180, "texture": "#4"}, - "south": {"uv": [16, 0, 14, 4], "texture": "#4"}, - "west": {"uv": [15, 0, 16, 4], "texture": "#4"}, - "up": {"uv": [14, 0, 16, 1], "rotation": 180, "texture": "#4"}, - "down": {"uv": [12, 3, 14, 4], "rotation": 180, "texture": "#4"} - } - }, - { - "from": [-1, 3, 13.5], - "to": [1, 7, 14.5], - "rotation": {"angle": -45, "axis": "z", "origin": [6.5, 4, 8]}, - "faces": { - "north": {"uv": [16, 4, 14, 0], "rotation": 180, "texture": "#4"}, - "east": {"uv": [13, 0, 12, 4], "rotation": 180, "texture": "#4"}, - "south": {"uv": [14, 4, 16, 0], "rotation": 180, "texture": "#4"}, - "west": {"uv": [16, 0, 15, 4], "texture": "#4"}, - "up": {"uv": [14, 1, 16, 0], "rotation": 180, "texture": "#4"}, - "down": {"uv": [12, 4, 14, 3], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "rod", - "from": [2, 8, 1], - "to": [3, 9, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 16, 8]}, - "faces": { - "north": {"uv": [0, 15, 1, 16], "rotation": 90, "texture": "#4"}, - "east": {"uv": [0, 15, 14, 16], "texture": "#4"}, - "south": {"uv": [0, 15, 1, 16], "rotation": 270, "texture": "#4"}, - "west": {"uv": [0, 15, 14, 16], "texture": "#4"}, - "up": {"uv": [0, 15, 14, 16], "rotation": 270, "texture": "#4"}, - "down": {"uv": [0, 15, 14, 16], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Gear5", - "from": [5.5, 7, -1], - "to": [11.5, 10, 17], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]}, - "faces": { - "north": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, - "south": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, - "west": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, - "up": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Gear6", - "from": [5.5, 7, -1], - "to": [11.5, 10, 17], - "rotation": {"angle": -45, "axis": "x", "origin": [8.5, 8.5, 8]}, - "faces": { - "north": {"uv": [9, 10, 10.5, 13], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, - "south": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, - "west": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, - "up": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [5.5, -0.5, 6.5], - "to": [11.5, 17.5, 9.5], - "rotation": {"angle": -45, "axis": "x", "origin": [8.5, 8.5, 8]}, - "faces": { - "north": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, - "west": {"uv": [0, 8.5, 9, 10], "rotation": 270, "texture": "#5"}, - "up": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, - "down": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [5.5, -0.5, 6.5], - "to": [11.5, 17.5, 9.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]}, - "faces": { - "north": {"uv": [0, 10, 9, 13], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 10, 9, 13], "rotation": 270, "texture": "#5"}, - "west": {"uv": [0, 8.5, 9, 10], "rotation": 270, "texture": "#5"}, - "up": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"}, - "down": {"uv": [9, 10, 10.5, 13], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "GearCaseInner", - "from": [6, 2.5, 2], - "to": [11, 14.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 8.5], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#5"}, - "south": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"}, - "west": {"uv": [0, 0, 6, 6], "rotation": 270, "texture": "#5"}, - "up": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 6, 6, 8.5], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "middle", - "from": [4.5, 4.5, 4], - "to": [12.5, 12.5, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8.5, 8]}, - "faces": { - "north": {"uv": [0, 8, 4, 12], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 8, 4, 12], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 8, 4, 12], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 8, 4, 12], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "back", - "from": [11.5, 2.5, 2], - "to": [16.5, 14.5, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11.5, 8]}, - "faces": { - "north": {"uv": [11, 0, 13.5, 6], "texture": "#3"}, - "east": {"uv": [0, 0, 12, 12], "rotation": 270, "texture": "#4"}, - "south": {"uv": [11, 0, 13.5, 6], "rotation": 180, "texture": "#3"}, - "west": {"uv": [0, 0, 6, 6], "rotation": 90, "texture": "#3"}, - "up": {"uv": [11, 0, 13.5, 6], "rotation": 180, "texture": "#3"}, - "down": {"uv": [11, 0, 13.5, 6], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "front", - "from": [0.5, 3.5, 3], - "to": [4.5, 13.5, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 10.5, 8]}, - "faces": { - "north": {"uv": [12, 4, 16, 14], "rotation": 180, "texture": "#4"}, - "east": {"uv": [6, 0, 11, 5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [12, 4, 16, 14], "texture": "#4"}, - "west": {"uv": [6, 0, 11, 5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [12, 4, 16, 14], "texture": "#4"}, - "down": {"uv": [12, 4, 16, 14], "texture": "#4"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 135, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "arrow", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "cogwheel", - "origin": [8, 8, 8], - "children": [5, 6, 7, 8, 9] - }, - { - "name": "pump", - "origin": [8, 8, 8], - "children": [10, 11, 12] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_active.json b/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_active.json deleted file mode 100644 index bcd0eedb6..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_active.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "stonecutter_saw": "minecraft:block/stonecutter_saw", - "stonecutter_saw_reversed" : "create:block/saw_reversed" - }, - "parent": "create:block/block", - "elements": [ - { - "name": "Blade", - "from": [ 1, 8, 11 ], - "to": [ 15, 8.062, 18 ], - "faces": { - "up": { "texture": "#stonecutter_saw", "uv": [ 1, 9, 15, 16 ], "rotation": 180 }, - "down": { "texture": "#stonecutter_saw_reversed", "uv": [ 1, 9, 15, 16 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_inactive.json b/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_inactive.json deleted file mode 100644 index d51cbecbe..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_inactive.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/mechanical_saw/blade_horizontal_active", - "textures": { - "stonecutter_saw": "create:block/static_saw", - "stonecutter_saw_reversed": "create:block/static_saw" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_reversed.json b/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_reversed.json deleted file mode 100644 index 02382bef0..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/blade_horizontal_reversed.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/mechanical_saw/blade_horizontal_active", - "textures": { - "stonecutter_saw": "create:block/saw_reversed", - "stonecutter_saw": "minecraft:block/stonecutter_saw" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_active.json b/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_active.json deleted file mode 100644 index b540ed652..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_active.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "stonecutter_saw": "minecraft:block/stonecutter_saw", - "stonecutter_saw_reversed" : "create:block/saw_reversed" - }, - "elements": [ - { - "name": "Saw", - "from": [ 0, 8, 11 ], - "to": [ 16, 8, 19 ], - "faces": { - "up": { "texture": "#stonecutter_saw", "uv": [ 0, 8, 16, 16 ], "rotation": 180 }, - "down": { "texture": "#stonecutter_saw_reversed", "uv": [ 0, 8, 16, 16 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_inactive.json b/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_inactive.json deleted file mode 100644 index 627943027..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_inactive.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/mechanical_saw/blade_vertical_active", - "textures": { - "stonecutter_saw": "create:block/static_saw", - "stonecutter_saw_reversed": "create:block/static_saw" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_reversed.json b/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_reversed.json deleted file mode 100644 index 56a353a4f..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/blade_vertical_reversed.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/mechanical_saw/blade_vertical_active", - "textures": { - "stonecutter_saw": "create:block/saw_reversed", - "stonecutter_saw_reversed": "minecraft:block/stonecutter_saw" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/horizontal.json b/src/main/resources/assets/create/models/block/mechanical_saw/horizontal.json deleted file mode 100644 index 421076c6d..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/horizontal.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "particle": "create:block/gearbox_top", - "slit": "create:block/mechanical_saw_top", - "gearbox_top": "create:block/gearbox_top", - "encased_belt": "create:block/encased_chain_drive", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short" - }, - "parent": "create:block/block", - "elements": [ - { - "name": "Bottom", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 12 ], - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 16, 16 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 4, 14, 16, 16 ] }, - "south": { "texture": "#encased_belt", "uv": [ 0, 14, 16, 16 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 12, 16 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] } - } - }, - { - "name": "Top", - "from": [ 0, 14, 0 ], - "to": [ 16, 16, 12 ], - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 6 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 4, 4, 16, 6 ] }, - "south": { "texture": "#encased_belt", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 12, 6 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] } - } - }, - { - "name": "Back", - "from": [ 0, 2, 0 ], - "to": [ 2, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "east": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "west": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] } - } - }, - { - "name": "Inner", - "from": [ 0, 2, 2 ], - "to": [ 16, 14, 11 ], - "faces": { - "east": { "texture": "#andesite_casing_short", "uv": [ 2, 6, 14, 15 ], "rotation": 90 }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 16, 14 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 2, 6, 14, 15 ], "rotation": 270 } - } - }, - { - "name": "SawSlit", - "from": [ 1, 7, 11.062 ], - "to": [ 15, 9, 11.062 ], - "faces": { - "south": { "texture": "#slit", "uv": [ 1, 7, 15, 9 ] } - } - }, - { - "name": "Back", - "from": [ 14, 2, 0 ], - "to": [ 16, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "east": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "west": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] } - } - }, - { - "name": "Back", - "from": [ 2, 2, 1 ], - "to": [ 14, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/item.json b/src/main/resources/assets/create/models/block/mechanical_saw/item.json deleted file mode 100644 index 503179e64..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/item.json +++ /dev/null @@ -1,98 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "particle": "create:block/gearbox_top", - "slit": "create:block/mechanical_saw_top", - "stonecutter_saw": "create:block/static_saw", - "gearbox_top": "create:block/gearbox_top", - "encased_belt": "create:block/encased_chain_drive", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short" - }, - "parent": "create:block/block", - "elements": [ - { - "name": "Bottom", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 12 ], - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 16, 16 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 4, 14, 16, 16 ] }, - "south": { "texture": "#encased_belt", "uv": [ 0, 14, 16, 16 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 12, 16 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] } - } - }, - { - "name": "Top", - "from": [ 0, 14, 0 ], - "to": [ 16, 16, 12 ], - "faces": { - "north": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 6 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 4, 4, 16, 6 ] }, - "south": { "texture": "#encased_belt", "uv": [ 0, 0, 16, 2 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 12, 6 ] }, - "up": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] }, - "down": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 16 ] } - } - }, - { - "name": "Back", - "from": [ 0, 2, 0 ], - "to": [ 2, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "east": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "west": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] } - } - }, - { - "name": "Inner", - "from": [ 0, 2, 2 ], - "to": [ 16, 14, 11 ], - "faces": { - "east": { "texture": "#andesite_casing_short", "uv": [ 2, 6, 14, 15 ], "rotation": 90 }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 16, 14 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 2, 6, 14, 15 ], "rotation": 270 } - } - }, - { - "name": "SawSlit", - "from": [ 1, 7, 11.062 ], - "to": [ 15, 9, 11.062 ], - "faces": { - "south": { "texture": "#slit", "uv": [ 1, 7, 15, 9 ] } - } - }, - { - "name": "Blade", - "from": [ 1, 8, 11 ], - "to": [ 15, 8.062, 18 ], - "faces": { - "up": { "texture": "#stonecutter_saw", "uv": [ 1, 9, 15, 16 ], "rotation": 180 }, - "down": { "texture": "#stonecutter_saw", "uv": [ 1, 9, 15, 16 ] } - } - }, - { - "name": "Back", - "from": [ 14, 2, 0 ], - "to": [ 16, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "east": { "texture": "#gearbox_top", "uv": [ 14, 2, 16, 14 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] }, - "west": { "texture": "#gearbox_top", "uv": [ 0, 2, 2, 14 ] } - } - }, - { - "name": "Back", - "from": [ 2, 2, 1 ], - "to": [ 14, 14, 2 ], - "faces": { - "north": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/vertical.json b/src/main/resources/assets/create/models/block/mechanical_saw/vertical.json deleted file mode 100644 index f63bcea80..000000000 --- a/src/main/resources/assets/create/models/block/mechanical_saw/vertical.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "gearbox_top": "create:block/gearbox_top", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short", - "mechanical_saw_top": "create:block/mechanical_saw_top", - "particle": "create:block/mechanical_saw_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 16 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 0, 14, 16, 16 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 16, 16 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 14, 16, 16 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 16, 16 ] }, - "up": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 16 ] } - } - }, - { - "name": "Inner", - "from": [ 2, 2, 1 ], - "to": [ 14, 12, 15 ], - "faces": { - "north": { "texture": "#gearbox", "uv": [ 2, 4, 14, 14 ] }, - "south": { "texture": "#gearbox", "uv": [ 2, 4, 14, 14 ] }, - "up": { "texture": "#mechanical_saw_top", "uv": [ 2, 1, 14, 15 ] }, - "down": { "texture": "#gearbox", "uv": [ 0, 0, 12, 14 ] } - } - }, - { - "name": "Side", - "from": [ 0, 2, 0 ], - "to": [ 2, 12, 16 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 14, 0, 16, 10 ] }, - "east": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 10 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 0, 2, 10 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 14 ] }, - "up": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 2 ], "rotation": 270 } - } - }, - { - "name": "Side2", - "from": [ 14, 2, 0 ], - "to": [ 16, 12, 16 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 0, 0, 2, 10 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 14 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 14, 0, 16, 10 ] }, - "west": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 10 ] }, - "up": { "texture": "#gearbox_top", "uv": [ 0, 14, 16, 16 ], "rotation": 270 } - } - }, - { - "name": "Top", - "from": [ 0, 12, 2 ], - "to": [ 16, 13, 14 ], - "faces": { - "north": { "texture": "#mechanical_saw_top", "uv": [ 0, 13, 16, 14 ] }, - "east": { "texture": "#mechanical_saw_top", "uv": [ 0, 3, 1, 13 ], "rotation": 90 }, - "south": { "texture": "#mechanical_saw_top", "uv": [ 0, 2, 16, 3 ] }, - "west": { "texture": "#mechanical_saw_top", "uv": [ 15, 3, 16, 13 ], "rotation": 270 }, - "up": { "texture": "#mechanical_saw_top", "uv": [ 0, 2, 16, 14 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/millstone/block.json b/src/main/resources/assets/create/models/block/millstone/block.json deleted file mode 100644 index 68afc7d11..000000000 --- a/src/main/resources/assets/create/models/block/millstone/block.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/gearbox", - "5": "create:block/millstone", - "6": "block/polished_andesite", - "13": "block/stripped_spruce_log", - "particle": "block/polished_andesite" - }, - "elements": [ - { - "from": [3, 13, 3], - "to": [5, 16, 13], - "faces": { - "north": {"uv": [0, 3, 3, 5], "rotation": 90, "texture": "#13"}, - "east": {"uv": [0, 0, 10, 3], "texture": "#13"}, - "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#13"}, - "west": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#13"}, - "up": {"uv": [5, 3, 7, 13], "texture": "#13"}, - "down": {"uv": [0, 0, 2, 10], "texture": "#13"} - } - }, - { - "from": [11, 13, 3], - "to": [13, 16, 13], - "faces": { - "north": {"uv": [0, 7, 3, 9], "rotation": 90, "texture": "#13"}, - "east": {"uv": [0, 10, 3, 0], "rotation": 90, "texture": "#13"}, - "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#13"}, - "west": {"uv": [10, 0, 0, 3], "texture": "#13"}, - "up": {"uv": [5, 2, 3, 12], "texture": "#13"}, - "down": {"uv": [2, 0, 0, 10], "texture": "#13"} - } - }, - { - "from": [5, 13, 11], - "to": [11, 16, 13], - "faces": { - "north": {"uv": [0, 0, 6, 3], "texture": "#13"}, - "east": {"uv": [0, 0, 2, 3], "texture": "#13"}, - "south": {"uv": [0, 3, 3, 9], "rotation": 90, "texture": "#13"}, - "west": {"uv": [0, 0, 2, 3], "texture": "#13"}, - "up": {"uv": [10, 4, 12, 10], "rotation": 90, "texture": "#13"}, - "down": {"uv": [0, 0, 6, 2], "texture": "#13"} - } - }, - { - "from": [5, 13, 5], - "to": [11, 15, 11], - "faces": { - "up": {"uv": [6, 0, 9, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [5, 13, 3], - "to": [11, 16, 5], - "faces": { - "north": {"uv": [0, 9, 3, 3], "rotation": 90, "texture": "#13"}, - "east": {"uv": [2, 0, 0, 3], "texture": "#13"}, - "south": {"uv": [6, 0, 0, 3], "texture": "#13"}, - "west": {"uv": [2, 0, 0, 3], "texture": "#13"}, - "up": {"uv": [7, 3, 5, 9], "rotation": 270, "texture": "#13"}, - "down": {"uv": [0, 2, 6, 0], "texture": "#13"} - } - }, - { - "name": "bottom", - "from": [0, 0, 0], - "to": [16, 6, 2], - "faces": { - "north": {"uv": [0, 13, 8, 16], "texture": "#5"}, - "east": {"uv": [7, 13, 8, 16], "texture": "#5"}, - "south": {"uv": [0, 13, 8, 16], "texture": "#5"}, - "west": {"uv": [0, 13, 1, 16], "texture": "#5"}, - "up": {"uv": [0.5, 8.5, 8.5, 9.5], "texture": "#5"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#0"} - } - }, - { - "name": "bottom", - "from": [0, 0, 14], - "to": [16, 6, 16], - "faces": { - "north": {"uv": [8, 13, 0, 16], "texture": "#5"}, - "east": {"uv": [8, 13, 7, 16], "texture": "#5"}, - "south": {"uv": [8, 13, 0, 16], "texture": "#5"}, - "west": {"uv": [1, 13, 0, 16], "texture": "#5"}, - "up": {"uv": [0.5, 9.5, 8.5, 8.5], "texture": "#5"}, - "down": {"uv": [0, 16, 16, 14], "texture": "#0"} - } - }, - { - "from": [0, 0, 2], - "to": [2, 6, 14], - "faces": { - "east": {"uv": [1, 13, 7, 16], "texture": "#5"}, - "west": {"uv": [1, 13, 7, 16], "texture": "#5"}, - "up": {"uv": [1.5, 8.5, 7.5, 9.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 2, 2, 14], "texture": "#0"} - } - }, - { - "from": [14, 0, 2], - "to": [16, 6, 14], - "faces": { - "east": {"uv": [7, 13, 1, 16], "texture": "#5"}, - "west": {"uv": [7, 13, 1, 16], "texture": "#5"}, - "up": {"uv": [1.5, 9.5, 7.5, 8.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [2, 2, 0, 14], "texture": "#0"} - } - }, - { - "from": [2, 1, 2], - "to": [14, 6, 14], - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#6"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [0, 1, 2, 3, 4, - { - "name": "bottom", - "origin": [8, 8, 8], - "children": [5, 6, 7, 8, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/millstone/inner.json b/src/main/resources/assets/create/models/block/millstone/inner.json deleted file mode 100644 index 1735ba332..000000000 --- a/src/main/resources/assets/create/models/block/millstone/inner.json +++ /dev/null @@ -1,154 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "texture_size": [32, 32], - "textures": { - "5": "create:block/millstone", - "particle": "create:block/axis", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Gear5", - "from": [6.5, 6.5, -1], - "to": [9.5, 12.5, 17], - "faces": { - "north": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "east": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "south": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "west": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "up": {"uv": [6, 3, 15, 4.5], "rotation": 90, "texture": "#5"}, - "down": {"uv": [6, 3, 15, 4.5], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "Gear6", - "from": [6.5, 6.5, -1], - "to": [9.5, 12.5, 17], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "east": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "south": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "west": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "up": {"uv": [6, 3, 15, 4.5], "rotation": 90, "texture": "#5"}, - "down": {"uv": [6, 3, 15, 4.5], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [-1, 6.5, 6.5], - "to": [17, 12.5, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "east": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "south": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "west": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "up": {"uv": [6, 3, 15, 4.5], "texture": "#5"}, - "down": {"uv": [6, 3, 15, 4.5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [-1, 6.5, 6.5], - "to": [17, 12.5, 9.5], - "faces": { - "north": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "east": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "south": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "west": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "up": {"uv": [6, 3, 15, 4.5], "texture": "#5"}, - "down": {"uv": [6, 3, 15, 4.5], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "GearCaseInner", - "from": [2, 7, 2], - "to": [14, 12, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]}, - "faces": { - "north": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, - "east": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, - "south": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, - "west": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, - "up": {"uv": [0, 0, 6, 6], "texture": "#5"}, - "down": {"uv": [0, 0, 6, 6], "texture": "#5"} - } - }, - { - "name": "GearCaseOuter", - "from": [4, 6, 4], - "to": [12, 13, 12], - "faces": { - "north": {"uv": [6, 4.5, 10, 8], "texture": "#5"}, - "east": {"uv": [6, 4.5, 10, 8], "texture": "#5"}, - "south": {"uv": [6, 4.5, 10, 8], "texture": "#5"}, - "west": {"uv": [6, 4.5, 10, 8], "texture": "#5"}, - "up": {"uv": [1, 1, 5, 5], "texture": "#5"}, - "down": {"uv": [1, 1, 5, 5], "texture": "#5"} - } - }, - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 8, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 8, 10, 16], "rotation": 180, "texture": "#1_0"}, - "east": {"uv": [6, 8, 10, 16], "rotation": 180, "texture": "#1_0"}, - "south": {"uv": [6, 8, 10, 16], "rotation": 180, "texture": "#1_0"}, - "west": {"uv": [6, 8, 10, 16], "rotation": 180, "texture": "#1_0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#1_1"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -149, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, -55, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 1, 1.25], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [2.5, -0.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 180, 0], - "translation": [0, 1.75, -4.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "cogwheel", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - }, - { - "name": "shaft_half", - "origin": [8, 8, 8], - "children": [6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/millstone/item.json b/src/main/resources/assets/create/models/block/millstone/item.json deleted file mode 100644 index 643f75be3..000000000 --- a/src/main/resources/assets/create/models/block/millstone/item.json +++ /dev/null @@ -1,211 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/gearbox", - "3": "block/stripped_spruce_log", - "5": "create:block/millstone", - "6": "block/polished_andesite", - "particle": "block/polished_andesite" - }, - "elements": [ - { - "name": "Gear5", - "from": [6.5, 6.5, -1], - "to": [9.5, 12.5, 17], - "faces": { - "north": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "east": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "south": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "west": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "up": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "Gear6", - "from": [6.5, 6.5, -1], - "to": [9.5, 12.5, 17], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "east": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "south": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "west": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "up": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 8.5, 9, 10], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [-1, 6.5, 6.5], - "to": [17, 12.5, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "east": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "south": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "west": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "up": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, - "down": {"uv": [0, 8.5, 9, 10], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Gear7", - "from": [-1, 6.5, 6.5], - "to": [17, 12.5, 9.5], - "faces": { - "north": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "east": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "south": {"uv": [0, 10, 9, 13], "texture": "#5"}, - "west": {"uv": [9, 10, 10.5, 13], "texture": "#5"}, - "up": {"uv": [0, 8.5, 9, 10], "texture": "#5"}, - "down": {"uv": [0, 8.5, 9, 10], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "GearCaseInner", - "from": [2, 6.6, 2], - "to": [14, 11.6, 14], - "faces": { - "north": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, - "east": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, - "south": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, - "west": {"uv": [0, 6, 6, 8.5], "texture": "#5"}, - "up": {"uv": [0, 0, 6, 6], "texture": "#5"}, - "down": {"uv": [0, 0, 6, 6], "texture": "#5"} - } - }, - { - "name": "GearCaseOuter", - "from": [4, 6, 4], - "to": [12, 13, 12], - "faces": { - "north": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, - "east": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, - "south": {"uv": [1, 1.5, 5, 5], "texture": "#5"}, - "west": {"uv": [1, 1.5, 5, 5], "texture": "#5"} - } - }, - { - "from": [5, 13, 5], - "to": [11, 15, 11], - "faces": { - "up": {"uv": [6, 0, 9, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "bottom", - "from": [0, 0, 0], - "to": [16, 6, 2], - "faces": { - "north": {"uv": [0, 13, 8, 16], "texture": "#5"}, - "east": {"uv": [7, 13, 8, 16], "texture": "#5"}, - "south": {"uv": [0, 13, 8, 16], "texture": "#5"}, - "west": {"uv": [0, 13, 1, 16], "texture": "#5"}, - "up": {"uv": [0.5, 8.5, 8.5, 9.5], "texture": "#5"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#0"} - } - }, - { - "name": "bottom", - "from": [0, 0, 14], - "to": [16, 6, 16], - "faces": { - "north": {"uv": [8, 13, 0, 16], "texture": "#5"}, - "east": {"uv": [8, 13, 7, 16], "texture": "#5"}, - "south": {"uv": [8, 13, 0, 16], "texture": "#5"}, - "west": {"uv": [1, 13, 0, 16], "texture": "#5"}, - "up": {"uv": [0.5, 9.5, 8.5, 8.5], "texture": "#5"}, - "down": {"uv": [0, 16, 16, 14], "texture": "#0"} - } - }, - { - "from": [0, 0, 2], - "to": [2, 6, 14], - "faces": { - "east": {"uv": [1, 13, 7, 16], "texture": "#5"}, - "west": {"uv": [1, 13, 7, 16], "texture": "#5"}, - "up": {"uv": [1.5, 8.5, 7.5, 9.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [0, 2, 2, 14], "texture": "#0"} - } - }, - { - "from": [14, 0, 2], - "to": [16, 6, 14], - "faces": { - "east": {"uv": [7, 13, 1, 16], "texture": "#5"}, - "west": {"uv": [7, 13, 1, 16], "texture": "#5"}, - "up": {"uv": [1.5, 9.5, 7.5, 8.5], "rotation": 270, "texture": "#5"}, - "down": {"uv": [2, 2, 0, 14], "texture": "#0"} - } - }, - { - "from": [2, 1, 2], - "to": [14, 6, 14], - "faces": { - "up": {"uv": [2, 2, 14, 14], "rotation": 270, "texture": "#6"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#0"} - } - }, - { - "from": [11, 13, 3], - "to": [13, 16, 13], - "faces": { - "north": {"uv": [0, 7, 3, 9], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 10, 3, 0], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#3"}, - "west": {"uv": [10, 0, 0, 3], "texture": "#3"}, - "up": {"uv": [5, 2, 3, 12], "texture": "#3"}, - "down": {"uv": [2, 0, 0, 10], "texture": "#3"} - } - }, - { - "from": [5, 13, 11], - "to": [11, 16, 13], - "faces": { - "north": {"uv": [0, 0, 6, 3], "texture": "#3"}, - "east": {"uv": [0, 0, 2, 3], "texture": "#3"}, - "south": {"uv": [0, 3, 3, 9], "rotation": 90, "texture": "#3"}, - "west": {"uv": [0, 0, 2, 3], "texture": "#3"}, - "up": {"uv": [10, 4, 12, 10], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 0, 6, 2], "texture": "#3"} - } - }, - { - "from": [5, 13, 3], - "to": [11, 16, 5], - "faces": { - "north": {"uv": [0, 9, 3, 3], "rotation": 90, "texture": "#3"}, - "east": {"uv": [2, 0, 0, 3], "texture": "#3"}, - "south": {"uv": [6, 0, 0, 3], "texture": "#3"}, - "west": {"uv": [2, 0, 0, 3], "texture": "#3"}, - "up": {"uv": [7, 3, 5, 9], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 2, 6, 0], "texture": "#3"} - } - }, - { - "from": [3, 13, 3], - "to": [5, 16, 13], - "faces": { - "north": {"uv": [0, 3, 3, 5], "rotation": 90, "texture": "#3"}, - "east": {"uv": [0, 0, 10, 3], "texture": "#3"}, - "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#3"}, - "west": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#3"}, - "up": {"uv": [5, 3, 7, 13], "texture": "#3"}, - "down": {"uv": [0, 0, 2, 10], "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "cogwheel", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - }, 6, - { - "name": "bottom", - "origin": [8, 8, 8], - "children": [7, 8, 9, 10, 11] - }, 12, 13, 14, 15] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/nixie_tube/block.json b/src/main/resources/assets/create/models/block/nixie_tube/block.json deleted file mode 100644 index f967089e5..000000000 --- a/src/main/resources/assets/create/models/block/nixie_tube/block.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/nixie_tube", - "1": "create:block/brass_casing", - "particle": "create:block/nixie_tube" - }, - "elements": [ - { - "name": "base", - "from": [0, 0, 0], - "to": [16, 4, 16], - "faces": { - "north": {"uv": [8, 0, 16, 2], "texture": "#0"}, - "east": {"uv": [8, 0, 16, 2], "texture": "#0"}, - "south": {"uv": [8, 0, 16, 2], "texture": "#0"}, - "west": {"uv": [8, 0, 16, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 8, 8], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "name": "connector1", - "from": [1, 4, 5], - "to": [7, 6, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 12, 13]}, - "faces": { - "north": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "east": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "south": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "west": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "up": {"uv": [11, 5, 14, 8], "texture": "#0"} - } - }, - { - "name": "connector2", - "from": [9, 4, 5], - "to": [15, 6, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [17, 12, 13]}, - "faces": { - "north": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "east": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "south": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "west": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "up": {"uv": [11, 5, 14, 8], "texture": "#0"} - } - }, - { - "name": "tube1", - "from": [1, 6, 5], - "to": [7, 15, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 14, 13]}, - "faces": { - "north": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "east": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "south": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "west": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "up": {"uv": [11, 2, 14, 5], "texture": "#0"} - } - }, - { - "name": "tube2", - "from": [9, 6, 5], - "to": [15, 15, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [17, 14, 13]}, - "faces": { - "north": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "east": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "south": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "west": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "up": {"uv": [11, 2, 14, 5], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "nixie", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/nixie_tube/item.json b/src/main/resources/assets/create/models/block/nixie_tube/item.json deleted file mode 100644 index a52864d85..000000000 --- a/src/main/resources/assets/create/models/block/nixie_tube/item.json +++ /dev/null @@ -1,83 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/nixie_tube", - "1": "create:block/brass_casing", - "particle": "create:block/nixie_tube" - }, - "elements": [ - { - "name": "base", - "from": [0, 0, 0], - "to": [16, 4, 16], - "faces": { - "north": {"uv": [8, 0, 16, 2], "texture": "#0"}, - "east": {"uv": [8, 0, 16, 2], "texture": "#0"}, - "south": {"uv": [8, 0, 16, 2], "texture": "#0"}, - "west": {"uv": [8, 0, 16, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 8, 8], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "name": "connector1", - "from": [1, 4, 5], - "to": [7, 6, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 12, 13]}, - "faces": { - "north": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "east": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "south": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "west": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "up": {"uv": [11, 5, 14, 8], "texture": "#0"} - } - }, - { - "name": "connector2", - "from": [9, 4, 5], - "to": [15, 6, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [17, 12, 13]}, - "faces": { - "north": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "east": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "south": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "west": {"uv": [8, 7, 11, 8], "texture": "#0"}, - "up": {"uv": [11, 5, 14, 8], "texture": "#0"} - } - }, - { - "name": "tube1", - "from": [1, 6, 5], - "to": [7, 15, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 14, 13]}, - "faces": { - "north": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "east": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "south": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "west": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "up": {"uv": [11, 2, 14, 5], "texture": "#0"} - } - }, - { - "name": "tube2", - "from": [9, 6, 5], - "to": [15, 15, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [17, 14, 13]}, - "faces": { - "north": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "east": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "south": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "west": {"uv": [8, 2.5, 11, 7], "texture": "#0"}, - "up": {"uv": [11, 2, 14, 5], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "nixie", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/nozzle/block.json b/src/main/resources/assets/create/models/block/nozzle/block.json deleted file mode 100644 index 4e7d9ddb4..000000000 --- a/src/main/resources/assets/create/models/block/nozzle/block.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/net", - "particle": "create:block/net", - "back": "create:block/gearbox" - }, - "elements": [ - { - "name": "body", - "from": [2, 0, 2], - "to": [14, 14, 14], - "faces": { - "north": {"uv": [0, 2, 14, 14], "rotation": 270, "texture": "#3"}, - "east": {"uv": [2, 2, 16, 14], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 2, 14, 14], "rotation": 270, "texture": "#3"}, - "west": {"uv": [0, 2, 14, 14], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 2, 12, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 12, 12], "texture": "#3"} - } - }, - { - "name": "body", - "from": [4, 0, 4], - "to": [12, 12, 12], - "faces": { - "north": {"uv": [0, 2, 12, 10], "rotation": 270, "texture": "#3"}, - "east": {"uv": [2, 2, 14, 10], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 2, 12, 10], "rotation": 270, "texture": "#3"}, - "west": {"uv": [1, 2, 13, 10], "rotation": 90, "texture": "#3"}, - "up": {"uv": [0, 2, 8, 10], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 8, 8], "texture": "#3"} - } - }, - { - "name": "rim", - "from": [1, 13, 1], - "to": [15, 15, 3], - "faces": { - "north": {"uv": [1, 0, 15, 2], "rotation": 180, "texture": "#back"}, - "east": {"uv": [0, 1, 2, 3], "rotation": 270, "texture": "#back"}, - "south": {"uv": [1, 2, 15, 4], "texture": "#back"}, - "west": {"uv": [14, 13, 16, 15], "rotation": 90, "texture": "#back"}, - "up": {"uv": [1, 13, 15, 15], "rotation": 180, "texture": "#back"}, - "down": {"uv": [1, 13, 15, 15], "texture": "#back"} - } - }, - { - "name": "rim", - "from": [1, 13, 13], - "to": [15, 15, 15], - "faces": { - "north": {"uv": [1, 4, 15, 2], "rotation": 180, "texture": "#back"}, - "east": {"uv": [0, 3, 2, 1], "rotation": 270, "texture": "#back"}, - "south": {"uv": [1, 2, 15, 0], "texture": "#back"}, - "west": {"uv": [14, 15, 16, 13], "rotation": 90, "texture": "#back"}, - "up": {"uv": [1, 15, 15, 13], "rotation": 180, "texture": "#back"}, - "down": {"uv": [1, 15, 15, 13], "texture": "#back"} - } - }, - { - "name": "rim", - "from": [13, 13, 3], - "to": [15, 15, 13], - "faces": { - "east": {"uv": [0, 3, 2, 13], "rotation": 270, "texture": "#back"}, - "west": {"uv": [2, 3, 4, 13], "rotation": 90, "texture": "#back"}, - "up": {"uv": [1, 3, 3, 13], "rotation": 180, "texture": "#back"}, - "down": {"uv": [13, 3, 15, 13], "texture": "#back"} - } - }, - { - "name": "rim", - "from": [1, 13, 3], - "to": [3, 15, 13], - "faces": { - "east": {"uv": [4, 3, 2, 13], "rotation": 270, "texture": "#back"}, - "west": {"uv": [2, 3, 0, 13], "rotation": 90, "texture": "#back"}, - "up": {"uv": [3, 3, 1, 13], "rotation": 180, "texture": "#back"}, - "down": {"uv": [15, 3, 13, 13], "texture": "#back"} - } - } - ], - "groups": [ - { - "name": "ItemCollector", - "origin": [8, 8, 24], - "children": [0, 1, 2, 3, 4, 5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/nozzle/item.json b/src/main/resources/assets/create/models/block/nozzle/item.json deleted file mode 100644 index c201740ba..000000000 --- a/src/main/resources/assets/create/models/block/nozzle/item.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/net", - "back": "create:block/gearbox", - "fan_casing": "create:block/fan_casing", - "fan_side": "create:block/fan_side", - "particle": "create:block/net" - }, - "elements": [ - { - "name": "Lattice", - "from": [0, 0, 0], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#fan_side"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#fan_side"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#fan_side"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#fan_side"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#fan_casing"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#fan_casing"} - } - }, - { - "name": "body", - "from": [2, 2, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [0, 2, 14, 14], "rotation": 270, "texture": "#3"}, - "east": {"uv": [2, 2, 16, 14], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 2, 14, 14], "rotation": 270, "texture": "#3"}, - "west": {"uv": [0, 2, 14, 14], "rotation": 270, "texture": "#3"}, - "up": {"uv": [0, 2, 12, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 12, 12], "texture": "#3"} - } - }, - { - "name": "body", - "from": [4, 2, 4], - "to": [12, 14, 12], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [0, 2, 12, 10], "rotation": 270, "texture": "#3"}, - "east": {"uv": [2, 2, 14, 10], "rotation": 270, "texture": "#3"}, - "south": {"uv": [0, 2, 12, 10], "rotation": 270, "texture": "#3"}, - "west": {"uv": [1, 2, 13, 10], "rotation": 90, "texture": "#3"}, - "up": {"uv": [0, 2, 8, 10], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 8, 8], "texture": "#3"} - } - }, - { - "name": "rim", - "from": [1, 15, 1], - "to": [15, 17, 3], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [1, 0, 15, 2], "rotation": 180, "texture": "#back"}, - "east": {"uv": [0, 1, 2, 3], "rotation": 270, "texture": "#back"}, - "south": {"uv": [1, 2, 15, 4], "texture": "#back"}, - "west": {"uv": [14, 13, 16, 15], "rotation": 90, "texture": "#back"}, - "up": {"uv": [1, 13, 15, 15], "rotation": 180, "texture": "#back"}, - "down": {"uv": [1, 13, 15, 15], "texture": "#back"} - } - }, - { - "name": "rim", - "from": [1, 15, 13], - "to": [15, 17, 15], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 9, 8]}, - "faces": { - "north": {"uv": [1, 4, 15, 2], "rotation": 180, "texture": "#back"}, - "east": {"uv": [0, 3, 2, 1], "rotation": 270, "texture": "#back"}, - "south": {"uv": [1, 2, 15, 0], "texture": "#back"}, - "west": {"uv": [14, 15, 16, 13], "rotation": 90, "texture": "#back"}, - "up": {"uv": [1, 15, 15, 13], "rotation": 180, "texture": "#back"}, - "down": {"uv": [1, 15, 15, 13], "texture": "#back"} - } - }, - { - "name": "rim", - "from": [13, 15, 3], - "to": [15, 17, 13], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 9, 8]}, - "faces": { - "east": {"uv": [0, 3, 2, 13], "rotation": 270, "texture": "#back"}, - "west": {"uv": [2, 3, 4, 13], "rotation": 90, "texture": "#back"}, - "up": {"uv": [1, 3, 3, 13], "rotation": 180, "texture": "#back"}, - "down": {"uv": [13, 3, 15, 13], "texture": "#back"} - } - }, - { - "name": "rim", - "from": [1, 15, 3], - "to": [3, 17, 13], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 9, 8]}, - "faces": { - "east": {"uv": [4, 3, 2, 13], "rotation": 270, "texture": "#back"}, - "west": {"uv": [2, 3, 0, 13], "rotation": 90, "texture": "#back"}, - "up": {"uv": [3, 3, 1, 13], "rotation": 180, "texture": "#back"}, - "down": {"uv": [15, 3, 13, 13], "texture": "#back"} - } - } - ], - "groups": [ - { - "name": "ItemCollector", - "origin": [8, 8, 24], - "children": [0, 1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/overgrown.json b/src/main/resources/assets/create/models/block/overgrown.json deleted file mode 100644 index d6e8b5c81..000000000 --- a/src/main/resources/assets/create/models/block/overgrown.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "north"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "east"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "south"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#side", "cullface": "west"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#top", "cullface": "up"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#bottom", "cullface": "down"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "north", "tintindex": 0}, - "east": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "east", "tintindex": 0}, - "south": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "south", "tintindex": 0}, - "west": {"uv": [0, 0, 16, 16], "texture": "#overlay", "cullface": "west", "tintindex": 0}, - "up": {"uv": [0, 0, 16, 16], "texture": "#overlay", "tintindex": 0} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/paved_slab.json b/src/main/resources/assets/create/models/block/paved_slab.json deleted file mode 100644 index 045c56e75..000000000 --- a/src/main/resources/assets/create/models/block/paved_slab.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "particle": "#side" - }, - "elements": [ - { "from": [ 0, 0, 0 ], - "to": [ 16, 8, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" }, - "north": { "uv": [ 0, 0, 16, 8 ], "texture": "#side", "cullface": "north" }, - "south": { "uv": [ 0, 0, 16, 8 ], "texture": "#side", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#side", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#side", "cullface": "east" } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/block/piston_extension_pole.json b/src/main/resources/assets/create/models/block/piston_extension_pole.json deleted file mode 100644 index ec53edd91..000000000 --- a/src/main/resources/assets/create/models/block/piston_extension_pole.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "parent": "block/block", - "textures": { - "particle": "block/piston_top", - "0": "block/piston_side", - "1": "create:block/pole_end" - }, - "elements": [ - { - "name": "Pole", - "from": [ 6.0, 0.0, 6.0 ], - "to": [ 10.0, 16.0, 10.0 ], - "faces": { - "north": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "east": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "south": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "west": { "texture": "#0", "uv": [ 0.0, 0.0, 16.0, 4.0 ], "rotation": 270 }, - "up": { "texture": "#1", "uv": [ 6.0, 6.0, 10.0, 10.0 ] }, - "down": { "texture": "#1", "uv": [ 6.0, 6.0, 10.0, 10.0 ], "rotation": 90 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_fluid_interface/block.json b/src/main/resources/assets/create/models/block/portable_fluid_interface/block.json deleted file mode 100644 index 62c31c029..000000000 --- a/src/main/resources/assets/create/models/block/portable_fluid_interface/block.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "create:block/portable_storage_interface/block", - "textures": { - "0": "create:block/portable_fluid_interface", - "1": "create:block/copper_casing", - "particle": "create:block/copper_casing" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_fluid_interface/block_middle.json b/src/main/resources/assets/create/models/block/portable_fluid_interface/block_middle.json deleted file mode 100644 index 0b3d3ab30..000000000 --- a/src/main/resources/assets/create/models/block/portable_fluid_interface/block_middle.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/portable_storage_interface/block_middle", - "textures": { - "0": "create:block/portable_fluid_interface" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_fluid_interface/block_middle_powered.json b/src/main/resources/assets/create/models/block/portable_fluid_interface/block_middle_powered.json deleted file mode 100644 index c2a3789b4..000000000 --- a/src/main/resources/assets/create/models/block/portable_fluid_interface/block_middle_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/portable_storage_interface/block_middle_powered", - "textures": { - "0": "create:block/portable_fluid_interface" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_fluid_interface/block_top.json b/src/main/resources/assets/create/models/block/portable_fluid_interface/block_top.json deleted file mode 100644 index ebd764857..000000000 --- a/src/main/resources/assets/create/models/block/portable_fluid_interface/block_top.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/portable_storage_interface/block_top", - "textures": { - "0": "create:block/portable_fluid_interface" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_fluid_interface/item.json b/src/main/resources/assets/create/models/block/portable_fluid_interface/item.json deleted file mode 100644 index ffa83d0d0..000000000 --- a/src/main/resources/assets/create/models/block/portable_fluid_interface/item.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:block/portable_storage_interface/item", - "textures": { - "0": "create:block/portable_fluid_interface", - "1": "create:block/copper_casing" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_storage_interface.json b/src/main/resources/assets/create/models/block/portable_storage_interface.json deleted file mode 100644 index 5315fdd02..000000000 --- a/src/main/resources/assets/create/models/block/portable_storage_interface.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/brass_casing", - "5": "create:block/andesite_casing_short", - "6": "create:block/gearbox_top", - "7": "block/dark_oak_log", - "particle": "create:block/andesite_casing_short", - "1_2": "create:block/brass_block" - }, - "elements": [ - { - "name": "Center", - "from": [2, 1, 2], - "to": [14, 11, 14], - "faces": { - "up": {"uv": [2, 4, 14, 16], "texture": "#7"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#6"} - } - }, - { - "name": "Side", - "from": [0, 0, 0], - "to": [2, 12, 16], - "faces": { - "north": {"uv": [14, 4, 16, 16], "texture": "#5"}, - "east": {"uv": [0, 4, 16, 16], "texture": "#5"}, - "south": {"uv": [0, 4, 2, 16], "texture": "#5"}, - "west": {"uv": [0, 4, 16, 16], "texture": "#5"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#6"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#6"} - } - }, - { - "name": "Side", - "from": [14, 0, 0], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [0, 4, 2, 16], "texture": "#5"}, - "east": {"uv": [0, 4, 16, 16], "texture": "#5"}, - "south": {"uv": [14, 4, 16, 16], "texture": "#5"}, - "west": {"uv": [0, 4, 16, 16], "texture": "#5"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#6"}, - "down": {"uv": [14, 0, 16, 16], "texture": "#6"} - } - }, - { - "name": "Short Side", - "from": [2, 0, 0], - "to": [14, 12, 2], - "faces": { - "north": {"uv": [2, 4, 14, 16], "texture": "#5"}, - "south": {"uv": [2, 4, 14, 16], "texture": "#5"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#6"}, - "down": {"uv": [2, 14, 14, 16], "texture": "#6"} - } - }, - { - "name": "Short Side", - "from": [2, 0, 14], - "to": [14, 12, 16], - "faces": { - "north": {"uv": [2, 4, 14, 16], "texture": "#5"}, - "south": {"uv": [2, 4, 14, 16], "texture": "#5"}, - "up": {"uv": [2, 14, 14, 16], "texture": "#6"}, - "down": {"uv": [2, 0, 14, 2], "texture": "#6"} - } - }, - { - "from": [4, 11, 4], - "to": [12, 15, 12], - "faces": { - "north": {"uv": [1, 4, 5, 12], "rotation": 90, "texture": "#0"}, - "east": {"uv": [1, 4, 5, 12], "rotation": 90, "texture": "#0"}, - "south": {"uv": [1, 4, 5, 12], "rotation": 90, "texture": "#0"}, - "west": {"uv": [1, 4, 5, 12], "rotation": 90, "texture": "#0"}, - "up": {"uv": [4, 4, 12, 12], "rotation": 90, "texture": "#1_2"} - } - }, - { - "from": [3, 11, 3], - "to": [5, 16, 5], - "faces": { - "north": {"uv": [11, 14, 6, 16], "rotation": 270, "texture": "#1_2"}, - "east": {"uv": [8, 2, 13, 0], "rotation": 270, "texture": "#1_2"}, - "south": {"uv": [6, 0, 1, 2], "rotation": 270, "texture": "#0"}, - "west": {"uv": [6, 2, 11, 0], "rotation": 90, "texture": "#1_2"}, - "up": {"uv": [13, 3, 15, 1], "rotation": 180, "texture": "#1_2"} - } - }, - { - "from": [3, 11, 11], - "to": [5, 16, 13], - "faces": { - "north": {"uv": [6, 2, 1, 0], "rotation": 270, "texture": "#0"}, - "east": {"uv": [8, 0, 13, 2], "rotation": 270, "texture": "#1_2"}, - "south": {"uv": [11, 16, 6, 14], "rotation": 270, "texture": "#1_2"}, - "west": {"uv": [6, 0, 11, 2], "rotation": 90, "texture": "#1_2"}, - "up": {"uv": [13, 1, 15, 3], "rotation": 180, "texture": "#1_2"} - } - }, - { - "from": [11, 11, 3], - "to": [13, 16, 5], - "faces": { - "north": {"uv": [11, 16, 6, 14], "rotation": 270, "texture": "#1_2"}, - "east": {"uv": [6, 0, 11, 2], "rotation": 90, "texture": "#1_2"}, - "south": {"uv": [6, 2, 1, 0], "rotation": 270, "texture": "#0"}, - "west": {"uv": [8, 0, 13, 2], "rotation": 270, "texture": "#1_2"}, - "up": {"uv": [15, 3, 13, 1], "rotation": 180, "texture": "#1_2"} - } - }, - { - "from": [11, 11, 11], - "to": [13, 16, 13], - "faces": { - "north": {"uv": [6, 0, 1, 2], "rotation": 270, "texture": "#0"}, - "east": {"uv": [6, 2, 11, 0], "rotation": 90, "texture": "#1_2"}, - "south": {"uv": [11, 14, 6, 16], "rotation": 270, "texture": "#1_2"}, - "west": {"uv": [8, 2, 13, 0], "rotation": 270, "texture": "#1_2"}, - "up": {"uv": [15, 1, 13, 3], "rotation": 180, "texture": "#1_2"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, -45, -90], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [-90, 0, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "group", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_storage_interface/block.json b/src/main/resources/assets/create/models/block/portable_storage_interface/block.json deleted file mode 100644 index 79251958e..000000000 --- a/src/main/resources/assets/create/models/block/portable_storage_interface/block.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/portable_storage_interface", - "1": "create:block/brass_casing", - "particle": "create:block/brass_casing" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [0, 10, 8, 16], "texture": "#0"}, - "east": {"uv": [0, 10, 8, 16], "texture": "#0"}, - "south": {"uv": [0, 10, 8, 16], "texture": "#0"}, - "west": {"uv": [0, 10, 8, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "from": [0, 12, 1.9], - "to": [2, 14.1, 14.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 10]}, - "faces": { - "north": {"uv": [7, 10, 8, 11], "texture": "#0"}, - "south": {"uv": [0, 10, 1, 11], "texture": "#0"}, - "west": {"uv": [1, 9, 7, 10], "texture": "#0"}, - "up": {"uv": [0, 2, 2, 14], "texture": "#1"} - } - }, - { - "from": [14, 12, 2], - "to": [16, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 6]}, - "faces": { - "north": {"uv": [0, 10, 1, 11], "texture": "#0"}, - "east": {"uv": [1, 9, 7, 10], "texture": "#0"}, - "south": {"uv": [7, 10, 8, 11], "texture": "#0"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [2, 12, 0], - "to": [14, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 20, 8]}, - "faces": { - "north": {"uv": [1, 9, 7, 10], "texture": "#0"}, - "east": {"uv": [0, 10, 8, 11], "texture": "#0"}, - "south": {"uv": [1, 9, 7, 10], "texture": "#0"}, - "west": {"uv": [0, 10, 8, 11], "texture": "#0"}, - "up": {"uv": [2, 0, 14, 16], "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "Base", - "origin": [10, 20, 8], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_storage_interface/block_middle.json b/src/main/resources/assets/create/models/block/portable_storage_interface/block_middle.json deleted file mode 100644 index 33d29a3ef..000000000 --- a/src/main/resources/assets/create/models/block/portable_storage_interface/block_middle.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/portable_storage_interface", - "particle": "create:block/portable_storage_interface" - }, - "elements": [ - { - "from": [2, 0, 2], - "to": [14, 9, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 10]}, - "faces": { - "north": {"uv": [1, 3.5, 7, 8], "texture": "#0"}, - "east": {"uv": [1, 3.5, 7, 8], "texture": "#0"}, - "south": {"uv": [1, 3.5, 7, 8], "texture": "#0"}, - "west": {"uv": [1, 3.5, 7, 8], "texture": "#0"}, - "up": {"uv": [1.5, 3.5, 2, 4], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "Middle", - "origin": [10, 22, 10], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_storage_interface/block_middle_powered.json b/src/main/resources/assets/create/models/block/portable_storage_interface/block_middle_powered.json deleted file mode 100644 index c64e3e1f3..000000000 --- a/src/main/resources/assets/create/models/block/portable_storage_interface/block_middle_powered.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/portable_storage_interface", - "particle": "create:block/portable_storage_interface" - }, - "elements": [ - { - "from": [2, 0, 2], - "to": [14, 9, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 8, 10]}, - "faces": { - "north": {"uv": [9, 3.5, 15, 8], "texture": "#0"}, - "east": {"uv": [9, 3.5, 15, 8], "texture": "#0"}, - "south": {"uv": [9, 3.5, 15, 8], "texture": "#0"}, - "west": {"uv": [9, 3.5, 15, 8], "texture": "#0"}, - "up": {"uv": [1.5, 3.5, 2, 4], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "Middle", - "origin": [10, 22, 10], - "children": [0] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_storage_interface/block_top.json b/src/main/resources/assets/create/models/block/portable_storage_interface/block_top.json deleted file mode 100644 index 88f35fcab..000000000 --- a/src/main/resources/assets/create/models/block/portable_storage_interface/block_top.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/portable_storage_interface", - "particle": "create:block/portable_storage_interface" - }, - "elements": [ - { - "from": [3, 7, 3], - "to": [13, 14.1, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 15, 11]}, - "faces": { - "north": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"}, - "east": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"}, - "south": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"}, - "west": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"} - } - }, - { - "from": [1, 14, 1], - "to": [15, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"}, - "east": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"}, - "south": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"}, - "west": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"}, - "up": {"uv": [8.5, 8, 15.5, 15], "texture": "#0"}, - "down": {"uv": [8.5, 8, 15.5, 15], "texture": "#0"} - } - }, - { - "from": [4, 13.1, 13], - "to": [6, 15.1, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 13]}, - "faces": { - "east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "south": {"uv": [10, 15, 11, 16], "texture": "#0"}, - "west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [10, 13.1, 2], - "to": [12, 15.1, 3], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 3]}, - "faces": { - "north": {"uv": [10, 15, 11, 16], "texture": "#0"}, - "east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [2, 13.1, 4], - "to": [3, 15.1, 6], - "rotation": {"angle": 45, "axis": "z", "origin": [3, 14, 8]}, - "faces": { - "north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "west": {"uv": [10, 15, 11, 16], "texture": "#0"} - } - }, - { - "from": [13, 13.1, 10], - "to": [14, 15.1, 12], - "rotation": {"angle": -45, "axis": "z", "origin": [13, 14, 8]}, - "faces": { - "north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "east": {"uv": [10, 15, 11, 16], "texture": "#0"}, - "south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [10, 13.1, 13], - "to": [12, 15.1, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 14, 13]}, - "faces": { - "east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "south": {"uv": [13, 15, 14, 16], "texture": "#0"}, - "west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [4, 13.1, 2], - "to": [6, 15.1, 3], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 14, 3]}, - "faces": { - "north": {"uv": [13, 15, 14, 16], "texture": "#0"}, - "east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [2, 13.1, 10], - "to": [3, 15.1, 12], - "rotation": {"angle": 45, "axis": "z", "origin": [3, 14, 8]}, - "faces": { - "north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "west": {"uv": [13, 15, 14, 16], "texture": "#0"} - } - }, - { - "from": [13, 13.1, 4], - "to": [14, 15.1, 6], - "rotation": {"angle": -45, "axis": "z", "origin": [13, 14, 8]}, - "faces": { - "north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "east": {"uv": [13, 15, 14, 16], "texture": "#0"}, - "south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - } - ], - "groups": [ - { - "name": "Top", - "origin": [10, 22, 10], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/portable_storage_interface/item.json b/src/main/resources/assets/create/models/block/portable_storage_interface/item.json deleted file mode 100644 index 2b93d6cc3..000000000 --- a/src/main/resources/assets/create/models/block/portable_storage_interface/item.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/portable_storage_interface", - "1": "create:block/brass_casing", - "particle": "create:block/portable_storage_interface" - }, - "elements": [ - { - "from": [2, 10, 2], - "to": [14, 19, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 18, 10]}, - "faces": { - "north": {"uv": [1, 3.5, 7, 8], "texture": "#0"}, - "east": {"uv": [1, 3.5, 7, 8], "texture": "#0"}, - "south": {"uv": [1, 3.5, 7, 8], "texture": "#0"}, - "west": {"uv": [1, 3.5, 7, 8], "texture": "#0"}, - "up": {"uv": [1.5, 3.5, 2, 4], "texture": "#0"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 12, 16], - "faces": { - "north": {"uv": [0, 10, 8, 16], "texture": "#0"}, - "east": {"uv": [0, 10, 8, 16], "texture": "#0"}, - "south": {"uv": [0, 10, 8, 16], "texture": "#0"}, - "west": {"uv": [0, 10, 8, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "from": [0, 12, 1.9], - "to": [2, 14.1, 14.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 10]}, - "faces": { - "north": {"uv": [7, 10, 8, 11], "texture": "#0"}, - "south": {"uv": [0, 10, 1, 11], "texture": "#0"}, - "west": {"uv": [1, 9, 7, 10], "texture": "#0"}, - "up": {"uv": [0, 2, 2, 14], "texture": "#1"} - } - }, - { - "from": [14, 12, 2], - "to": [16, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 20, 6]}, - "faces": { - "north": {"uv": [0, 10, 1, 11], "texture": "#0"}, - "east": {"uv": [1, 9, 7, 10], "texture": "#0"}, - "south": {"uv": [7, 10, 8, 11], "texture": "#0"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [2, 12, 0], - "to": [14, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 20, 8]}, - "faces": { - "north": {"uv": [1, 9, 7, 10], "texture": "#0"}, - "east": {"uv": [0, 10, 8, 11], "texture": "#0"}, - "south": {"uv": [1, 9, 7, 10], "texture": "#0"}, - "west": {"uv": [0, 10, 8, 11], "texture": "#0"}, - "up": {"uv": [2, 0, 14, 16], "texture": "#1"} - } - }, - { - "from": [3, 16, 3], - "to": [13, 23.1, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 24, 11]}, - "faces": { - "north": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"}, - "east": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"}, - "south": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"}, - "west": {"uv": [1.5, 0, 6.5, 3.5], "texture": "#0"} - } - }, - { - "from": [1, 23, 1], - "to": [15, 25, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "north": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"}, - "east": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"}, - "south": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"}, - "west": {"uv": [8.5, 15, 15.5, 16], "texture": "#0"}, - "up": {"uv": [8.5, 8, 15.5, 15], "texture": "#0"}, - "down": {"uv": [8.5, 8, 15.5, 15], "texture": "#0"} - } - }, - { - "from": [4, 22.1, 13], - "to": [6, 24.1, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 23, 13]}, - "faces": { - "east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "south": {"uv": [10, 15, 11, 16], "texture": "#0"}, - "west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [10, 22.1, 2], - "to": [12, 24.1, 3], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 23, 3]}, - "faces": { - "north": {"uv": [10, 15, 11, 16], "texture": "#0"}, - "east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [2, 22.1, 4], - "to": [3, 24.1, 6], - "rotation": {"angle": 45, "axis": "z", "origin": [3, 23, 8]}, - "faces": { - "north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "west": {"uv": [10, 15, 11, 16], "texture": "#0"} - } - }, - { - "from": [13, 22.1, 10], - "to": [14, 24.1, 12], - "rotation": {"angle": -45, "axis": "z", "origin": [13, 23, 8]}, - "faces": { - "north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "east": {"uv": [10, 15, 11, 16], "texture": "#0"}, - "south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [10, 22.1, 13], - "to": [12, 24.1, 14], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 23, 13]}, - "faces": { - "east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "south": {"uv": [13, 15, 14, 16], "texture": "#0"}, - "west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [4, 22.1, 2], - "to": [6, 24.1, 3], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 23, 3]}, - "faces": { - "north": {"uv": [13, 15, 14, 16], "texture": "#0"}, - "east": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "west": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - }, - { - "from": [2, 22.1, 10], - "to": [3, 24.1, 12], - "rotation": {"angle": 45, "axis": "z", "origin": [3, 23, 8]}, - "faces": { - "north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "west": {"uv": [13, 15, 14, 16], "texture": "#0"} - } - }, - { - "from": [13, 22.1, 4], - "to": [14, 24.1, 6], - "rotation": {"angle": -45, "axis": "z", "origin": [13, 23, 8]}, - "faces": { - "north": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"}, - "east": {"uv": [13, 15, 14, 16], "texture": "#0"}, - "south": {"uv": [7.5, 10, 8, 10.5], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, -1.75, 0], - "scale": [0.45, 0.45, 0.45] - }, - "head": { - "rotation": [-180, 0, 0], - "translation": [0, 22.25, 0] - }, - "fixed": { - "translation": [0, -1.25, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "Middle", - "origin": [10, 22, 10], - "children": [0] - }, - { - "name": "block", - "origin": [8, 8, 8], - "children": [ - { - "name": "Base", - "origin": [10, 20, 8], - "children": [1, 2, 3, 4] - } - ] - }, - { - "name": "block_top", - "origin": [8, 8, 8], - "children": [ - { - "name": "Top", - "origin": [10, 22, 10], - "children": [5, 6, 7, 8, 9, 10, 11, 12, 13, 14] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/radial_chassis/base.json b/src/main/resources/assets/create/models/block/radial_chassis/base.json deleted file mode 100644 index 6e3872d1c..000000000 --- a/src/main/resources/assets/create/models/block/radial_chassis/base.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "textures": { - "particle": "create:block/radial_chassis_side", - "rotation_chassis_top": "create:block/radial_chassis_end" - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "up": { "texture": "#rotation_chassis_top", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#rotation_chassis_top", "uv": [ 0, 0, 16, 16 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/radial_chassis/side_x.json b/src/main/resources/assets/create/models/block/radial_chassis/side_x.json deleted file mode 100644 index 5ce7b8783..000000000 --- a/src/main/resources/assets/create/models/block/radial_chassis/side_x.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "textures": { - "0": "#side" - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "up": { "texture": "#0", "uv": [ 0, 0, 16, 16 ], "rotation": 90 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/radial_chassis/side_y.json b/src/main/resources/assets/create/models/block/radial_chassis/side_y.json deleted file mode 100644 index 4ec145cf1..000000000 --- a/src/main/resources/assets/create/models/block/radial_chassis/side_y.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "textures": { - "0": "#side" - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "south": { "texture": "#0", "uv": [ 0, 0, 16, 16 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/radial_chassis/side_z.json b/src/main/resources/assets/create/models/block/radial_chassis/side_z.json deleted file mode 100644 index 088387347..000000000 --- a/src/main/resources/assets/create/models/block/radial_chassis/side_z.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "textures": { - "0": "#side" - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "east": { "texture": "#0", "uv": [ 0, 0, 16, 16 ], "rotation": 270 } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_contact/block.json b/src/main/resources/assets/create/models/block/redstone_contact/block.json deleted file mode 100644 index 274c963cd..000000000 --- a/src/main/resources/assets/create/models/block/redstone_contact/block.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/contact_front", - "1": "create:block/contact_side", - "3": "create:block/contact_back", - "particle": "create:block/contact_side" - }, - "elements": [ - { - "name": "Center", - "from": [2, 1, 2], - "to": [14, 15, 14], - "faces": { - "up": {"uv": [2, 2, 14, 14], "texture": "#0"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#3"} - } - }, - { - "name": "Side", - "from": [0, 0, 0], - "to": [2, 16, 16], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#0"} - } - }, - { - "name": "Side", - "from": [14, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "south": {"uv": [14, 0, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [14, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "Short Side", - "from": [2, 0, 0], - "to": [14, 16, 2], - "faces": { - "north": {"uv": [2, 0, 14, 16], "texture": "#1"}, - "south": {"uv": [2, 0, 14, 16], "texture": "#1"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#0"}, - "down": {"uv": [2, 14, 14, 16], "texture": "#3"} - } - }, - { - "name": "Short Side", - "from": [2, 0, 14], - "to": [14, 16, 16], - "faces": { - "north": {"uv": [2, 0, 14, 16], "texture": "#1"}, - "south": {"uv": [2, 0, 14, 16], "texture": "#1"}, - "up": {"uv": [2, 14, 14, 16], "texture": "#0"}, - "down": {"uv": [2, 0, 14, 2], "texture": "#3"} - } - }, - { - "name": "Contact", - "from": [6, 15, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 6, 10, 7], "rotation": 180, "texture": "#0"}, - "east": {"uv": [9, 6, 10, 10], "rotation": 90, "texture": "#0"}, - "south": {"uv": [9, 6, 10, 10], "rotation": 270, "texture": "#0"}, - "west": {"uv": [6, 6, 10, 7], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_contact/block_powered.json b/src/main/resources/assets/create/models/block/redstone_contact/block_powered.json deleted file mode 100644 index 6ffaa77a0..000000000 --- a/src/main/resources/assets/create/models/block/redstone_contact/block_powered.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/contact_front", - "1": "create:block/contact_side_powered", - "3": "create:block/contact_back", - "particle": "create:block/contact_side_powered" - }, - "elements": [ - { - "name": "Center", - "from": [2, 1, 2], - "to": [14, 15, 14], - "faces": { - "up": {"uv": [2, 2, 14, 14], "texture": "#0"}, - "down": {"uv": [2, 2, 14, 14], "texture": "#3"} - } - }, - { - "name": "Side", - "from": [0, 0, 0], - "to": [2, 16, 16], - "faces": { - "north": {"uv": [14, 0, 16, 16], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "south": {"uv": [0, 0, 2, 16], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#0"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#0"} - } - }, - { - "name": "Side", - "from": [14, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 2, 16], "texture": "#1"}, - "east": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "south": {"uv": [14, 0, 16, 16], "texture": "#1"}, - "west": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "up": {"uv": [14, 0, 16, 16], "texture": "#0"}, - "down": {"uv": [14, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "Short Side", - "from": [2, 0, 0], - "to": [14, 16, 2], - "faces": { - "north": {"uv": [2, 0, 14, 16], "texture": "#1"}, - "south": {"uv": [2, 0, 14, 16], "texture": "#1"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#0"}, - "down": {"uv": [2, 14, 14, 16], "texture": "#3"} - } - }, - { - "name": "Short Side", - "from": [2, 0, 14], - "to": [14, 16, 16], - "faces": { - "north": {"uv": [2, 0, 14, 16], "texture": "#1"}, - "south": {"uv": [2, 0, 14, 16], "texture": "#1"}, - "up": {"uv": [2, 14, 14, 16], "texture": "#0"}, - "down": {"uv": [2, 0, 14, 2], "texture": "#3"} - } - }, - { - "name": "Contact", - "from": [6, 15, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 6, 10, 7], "rotation": 180, "texture": "#0"}, - "east": {"uv": [9, 6, 10, 10], "rotation": 90, "texture": "#0"}, - "south": {"uv": [9, 6, 10, 10], "rotation": 270, "texture": "#0"}, - "west": {"uv": [6, 6, 10, 7], "texture": "#0"}, - "up": {"uv": [6, 6, 10, 10], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_link/receiver.json b/src/main/resources/assets/create/models/block/redstone_link/receiver.json deleted file mode 100644 index 91c26e608..000000000 --- a/src/main/resources/assets/create/models/block/redstone_link/receiver.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna", - "particle": "create:block/redstone_bridge", - "redstone_bridge": "create:block/redstone_bridge" - }, - "elements": [ - { - "name": "Controller", - "from": [2, 0, 2], - "to": [14, 3, 14], - "faces": { - "north": {"uv": [6, 7, 7.5, 13], "rotation": 90, "texture": "#redstone_bridge"}, - "east": {"uv": [0, 13, 6, 14.5], "texture": "#redstone_bridge"}, - "south": {"uv": [6, 7, 7.5, 13], "rotation": 90, "texture": "#redstone_bridge"}, - "west": {"uv": [0, 13, 6, 14.5], "texture": "#redstone_bridge"}, - "up": {"uv": [0, 7, 6, 13], "rotation": 270, "texture": "#redstone_bridge"}, - "down": {"uv": [5, 0, 11, 6], "rotation": 90, "texture": "#redstone_bridge"} - } - }, - { - "name": "AntennaX", - "from": [0, 1, 4], - "to": [3, 11, 5], - "faces": { - "north": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "south": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [1, 1, 3], - "to": [2, 11, 6], - "faces": { - "east": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaTop", - "from": [1, 9, 4], - "to": [2, 10, 5], - "faces": { - "up": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - }, - { - "name": "Dish", - "from": [-1, 7, 2], - "to": [4, 7, 7], - "faces": { - "up": {"uv": [4, 0, 9, 5], "texture": "#redstone_antenna"}, - "down": {"uv": [4, 0, 9, 5], "texture": "#redstone_antenna"} - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "scale": [0.625, 0.625, 0.625] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_link/receiver_powered.json b/src/main/resources/assets/create/models/block/redstone_link/receiver_powered.json deleted file mode 100644 index 8401656e8..000000000 --- a/src/main/resources/assets/create/models/block/redstone_link/receiver_powered.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna_powered", - "particle": "create:block/redstone_bridge_powered", - "redstone_bridge": "create:block/redstone_bridge_powered" - }, - "elements": [ - { - "name": "Controller", - "from": [2, 0, 2], - "to": [14, 3, 14], - "faces": { - "north": {"uv": [6, 7, 7.5, 13], "rotation": 90, "texture": "#redstone_bridge"}, - "east": {"uv": [0, 13, 6, 14.5], "texture": "#redstone_bridge"}, - "south": {"uv": [6, 7, 7.5, 13], "rotation": 90, "texture": "#redstone_bridge"}, - "west": {"uv": [0, 13, 6, 14.5], "texture": "#redstone_bridge"}, - "up": {"uv": [0, 7, 6, 13], "rotation": 270, "texture": "#redstone_bridge"}, - "down": {"uv": [5, 0, 11, 6], "rotation": 90, "texture": "#redstone_bridge"} - } - }, - { - "name": "AntennaX", - "from": [0, 1, 4], - "to": [3, 11, 5], - "faces": { - "north": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "south": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [1, 1, 3], - "to": [2, 11, 6], - "faces": { - "east": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaTop", - "from": [1, 9, 4], - "to": [2, 10, 5], - "faces": { - "up": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - }, - { - "name": "Dish", - "from": [-1, 7, 2], - "to": [4, 7, 7], - "faces": { - "up": {"uv": [4, 0, 9, 5], "texture": "#redstone_antenna"}, - "down": {"uv": [4, 0, 9, 5], "texture": "#redstone_antenna"} - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "scale": [0.625, 0.625, 0.625] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_link/receiver_vertical.json b/src/main/resources/assets/create/models/block/redstone_link/receiver_vertical.json deleted file mode 100644 index ff3f5c397..000000000 --- a/src/main/resources/assets/create/models/block/redstone_link/receiver_vertical.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna", - "particle": "create:block/redstone_bridge", - "redstone_bridge_side": "create:block/redstone_bridge" - }, - "elements": [ - { - "name": "Body", - "from": [3, -1, 1], - "to": [13, 3, 15], - "faces": { - "north": {"uv": [7.5, 13, 12.5, 15], "texture": "#redstone_bridge_side"}, - "east": {"uv": [12.5, 6, 14.5, 13], "rotation": 90, "texture": "#redstone_bridge_side"}, - "south": {"uv": [7.5, 13, 12.5, 15], "texture": "#redstone_bridge_side"}, - "west": {"uv": [12.5, 6, 14.5, 13], "rotation": 90, "texture": "#redstone_bridge_side"}, - "up": {"uv": [7.5, 6, 12.5, 13], "texture": "#redstone_bridge_side"}, - "down": {"uv": [0, 0, 5, 7], "texture": "#redstone_bridge_side"} - } - }, - { - "name": "AntennaX", - "from": [3, 3, -5], - "to": [6, 4, 5], - "faces": { - "south": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"}, - "up": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 0, 3, 10], "rotation": 180, "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [4, 2, -5], - "to": [5, 5, 5], - "faces": { - "east": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 10], "rotation": 270, "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaTop", - "from": [4, 3, -4], - "to": [5, 4, -3], - "faces": { - "north": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - }, - { - "name": "Dish", - "from": [2, 1, -1], - "to": [7, 6, -1], - "faces": { - "north": {"uv": [4, 0, 9, 5], "texture": "#redstone_antenna"}, - "south": {"uv": [4, 0, 9, 5], "texture": "#redstone_antenna"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_link/receiver_vertical_powered.json b/src/main/resources/assets/create/models/block/redstone_link/receiver_vertical_powered.json deleted file mode 100644 index 4c2fe10cd..000000000 --- a/src/main/resources/assets/create/models/block/redstone_link/receiver_vertical_powered.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna_powered", - "particle": "create:block/redstone_bridge_powered", - "redstone_bridge_side": "create:block/redstone_bridge_powered" - }, - "elements": [ - { - "name": "Body", - "from": [3, -1, 1], - "to": [13, 3, 15], - "faces": { - "north": {"uv": [7.5, 13, 12.5, 15], "texture": "#redstone_bridge_side"}, - "east": {"uv": [12.5, 6, 14.5, 13], "rotation": 90, "texture": "#redstone_bridge_side"}, - "south": {"uv": [7.5, 13, 12.5, 15], "texture": "#redstone_bridge_side"}, - "west": {"uv": [12.5, 6, 14.5, 13], "rotation": 90, "texture": "#redstone_bridge_side"}, - "up": {"uv": [7.5, 6, 12.5, 13], "texture": "#redstone_bridge_side"}, - "down": {"uv": [0, 0, 5, 7], "texture": "#redstone_bridge_side"} - } - }, - { - "name": "AntennaX", - "from": [3, 3, -5], - "to": [6, 4, 5], - "faces": { - "south": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"}, - "up": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 0, 3, 10], "rotation": 180, "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [4, 2, -5], - "to": [5, 5, 5], - "faces": { - "east": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 10], "rotation": 270, "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaTop", - "from": [4, 3, -4], - "to": [5, 4, -3], - "faces": { - "north": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - }, - { - "name": "Dish", - "from": [2, 1, -1], - "to": [7, 6, -1], - "faces": { - "north": {"uv": [4, 0, 9, 5], "texture": "#redstone_antenna"}, - "south": {"uv": [4, 0, 9, 5], "texture": "#redstone_antenna"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_link/transmitter.json b/src/main/resources/assets/create/models/block/redstone_link/transmitter.json deleted file mode 100644 index 235a9a0e5..000000000 --- a/src/main/resources/assets/create/models/block/redstone_link/transmitter.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna", - "particle": "create:block/redstone_bridge", - "redstone_bridge": "create:block/redstone_bridge" - }, - "elements": [ - { - "name": "Controller", - "from": [2, 0, 2], - "to": [14, 3, 14], - "faces": { - "north": {"uv": [6, 7, 7.5, 13], "rotation": 90, "texture": "#redstone_bridge"}, - "east": {"uv": [0, 13, 6, 14.5], "texture": "#redstone_bridge"}, - "south": {"uv": [6, 7, 7.5, 13], "rotation": 90, "texture": "#redstone_bridge"}, - "west": {"uv": [0, 13, 6, 14.5], "texture": "#redstone_bridge"}, - "up": {"uv": [0, 7, 6, 13], "rotation": 270, "texture": "#redstone_bridge"}, - "down": {"uv": [5, 0, 11, 6], "rotation": 90, "texture": "#redstone_bridge"} - } - }, - { - "name": "AntennaTop", - "from": [1, 9, 4], - "to": [2, 10, 5], - "faces": { - "up": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [1, 1, 3], - "to": [2, 11, 6], - "faces": { - "east": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaX", - "from": [0, 1, 4], - "to": [3, 11, 5], - "faces": { - "north": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "south": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"} - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [ 270, 0, 0 ], - "translation": [ 0, 0, -3], - "scale":[ 0.5, 0.5, 0.5 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_link/transmitter_powered.json b/src/main/resources/assets/create/models/block/redstone_link/transmitter_powered.json deleted file mode 100644 index 9cf06e461..000000000 --- a/src/main/resources/assets/create/models/block/redstone_link/transmitter_powered.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna_powered", - "particle": "create:block/redstone_bridge_powered", - "redstone_bridge": "create:block/redstone_bridge_powered" - }, - "elements": [ - { - "name": "Controller", - "from": [2, 0, 2], - "to": [14, 3, 14], - "faces": { - "north": {"uv": [6, 7, 7.5, 13], "rotation": 90, "texture": "#redstone_bridge"}, - "east": {"uv": [0, 13, 6, 14.5], "texture": "#redstone_bridge"}, - "south": {"uv": [6, 7, 7.5, 13], "rotation": 90, "texture": "#redstone_bridge"}, - "west": {"uv": [0, 13, 6, 14.5], "texture": "#redstone_bridge"}, - "up": {"uv": [0, 7, 6, 13], "rotation": 270, "texture": "#redstone_bridge"}, - "down": {"uv": [5, 0, 11, 6], "rotation": 90, "texture": "#redstone_bridge"} - } - }, - { - "name": "AntennaTop", - "from": [1, 9, 4], - "to": [2, 10, 5], - "faces": { - "up": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [1, 1, 3], - "to": [2, 11, 6], - "faces": { - "east": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaX", - "from": [0, 1, 4], - "to": [3, 11, 5], - "faces": { - "north": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "south": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"} - } - } - ], - "display": { - "gui": { - "rotation": [30, 45, 0], - "scale": [0.625, 0.625, 0.625] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_link/transmitter_vertical.json b/src/main/resources/assets/create/models/block/redstone_link/transmitter_vertical.json deleted file mode 100644 index f1bd67560..000000000 --- a/src/main/resources/assets/create/models/block/redstone_link/transmitter_vertical.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna", - "particle": "create:block/redstone_bridge", - "redstone_bridge_side": "create:block/redstone_bridge" - }, - "elements": [ - { - "name": "Body", - "from": [3, -1, 1], - "to": [13, 3, 15], - "faces": { - "north": {"uv": [7.5, 13, 12.5, 15], "texture": "#redstone_bridge_side"}, - "east": {"uv": [12.5, 6, 14.5, 13], "rotation": 90, "texture": "#redstone_bridge_side"}, - "south": {"uv": [7.5, 13, 12.5, 15], "texture": "#redstone_bridge_side"}, - "west": {"uv": [12.5, 6, 14.5, 13], "rotation": 90, "texture": "#redstone_bridge_side"}, - "up": {"uv": [7.5, 6, 12.5, 13], "texture": "#redstone_bridge_side"}, - "down": {"uv": [0, 0, 5, 7], "texture": "#redstone_bridge_side"} - } - }, - { - "name": "AntennaX", - "from": [3, 3, -5], - "to": [6, 4, 5], - "faces": { - "south": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"}, - "up": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 0, 3, 10], "rotation": 180, "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [4, 2, -5], - "to": [5, 5, 5], - "faces": { - "east": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 10], "rotation": 270, "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaTop", - "from": [4, 3, -4], - "to": [5, 4, -3], - "faces": { - "north": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_link/transmitter_vertical_powered.json b/src/main/resources/assets/create/models/block/redstone_link/transmitter_vertical_powered.json deleted file mode 100644 index fad07a7b7..000000000 --- a/src/main/resources/assets/create/models/block/redstone_link/transmitter_vertical_powered.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna_powered", - "particle": "create:block/redstone_bridge_powered", - "redstone_bridge_side": "create:block/redstone_bridge_powered" - }, - "elements": [ - { - "name": "Body", - "from": [3, -1, 1], - "to": [13, 3, 15], - "faces": { - "north": {"uv": [7.5, 13, 12.5, 15], "texture": "#redstone_bridge_side"}, - "east": {"uv": [12.5, 6, 14.5, 13], "rotation": 90, "texture": "#redstone_bridge_side"}, - "south": {"uv": [7.5, 13, 12.5, 15], "texture": "#redstone_bridge_side"}, - "west": {"uv": [12.5, 6, 14.5, 13], "rotation": 90, "texture": "#redstone_bridge_side"}, - "up": {"uv": [7.5, 6, 12.5, 13], "texture": "#redstone_bridge_side"}, - "down": {"uv": [0, 0, 5, 7], "texture": "#redstone_bridge_side"} - } - }, - { - "name": "AntennaX", - "from": [3, 3, -5], - "to": [6, 4, 5], - "faces": { - "south": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"}, - "up": {"uv": [0, 0, 3, 10], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 0, 3, 10], "rotation": 180, "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [4, 2, -5], - "to": [5, 5, 5], - "faces": { - "east": {"uv": [0, 0, 3, 10], "rotation": 90, "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 10], "rotation": 270, "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaTop", - "from": [4, 3, -4], - "to": [5, 4, -3], - "faces": { - "north": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/refined_radiance_block.json b/src/main/resources/assets/create/models/block/refined_radiance_block.json deleted file mode 100644 index c879e90cd..000000000 --- a/src/main/resources/assets/create/models/block/refined_radiance_block.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/refined_radiance_block", - "particle": "create:block/refined_radiance_block" - }, - "elements": [ - { - "from": [1, 1, 1], - "to": [15, 15, 15], - "shade": false, - "rotation": {"angle": 0, "axis": "y", "origin": [9, 9, 9]}, - "faces": { - "north": {"uv": [1, 1, 15, 15], "rotation": 270, "texture": "#0"}, - "east": {"uv": [1, 1, 15, 15], "texture": "#0"}, - "south": {"uv": [1, 1, 15, 15], "rotation": 90, "texture": "#0"}, - "west": {"uv": [1, 1, 15, 15], "texture": "#0"}, - "up": {"uv": [1, 1, 15, 15], "texture": "#0"}, - "down": {"uv": [1, 1, 15, 15], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "cube_outline", - "from": [15.99, 15.99, 15.99], - "to": [0.01, 0.01, 0.01], - "shade": false, - "rotation": {"angle": 0, "axis": "y", "origin": [9, 9, 9]}, - "faces": { - "north": {"uv": [15, 0, 16, 16], "rotation": 180, "texture": "#0"}, - "east": {"uv": [15, 0, 16, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [15, 0, 16, 16], "rotation": 180, "texture": "#0"}, - "west": {"uv": [15, 0, 16, 16], "rotation": 180, "texture": "#0"}, - "up": {"uv": [0, 15, 16, 16], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reinforced_rail/block.json b/src/main/resources/assets/create/models/block/reinforced_rail/block.json deleted file mode 100644 index 63746f266..000000000 --- a/src/main/resources/assets/create/models/block/reinforced_rail/block.json +++ /dev/null @@ -1,136 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", -"ambientocclusion": false, - "textures": { - "oak_planks": "minecraft:block/oak_planks", - "rail": "create:block/reinforced_rail_top", - "particle": "create:block/reinforced_rail_top" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, -2, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 1, 2, 15, 1 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 1, 16, 4 ] }, - "south": { "texture": "#oak_planks", "uv": [ 1, 1, 16, 4 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 3 ] }, - "up": { "texture": "#rail", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#oak_planks", "uv": [ 1, 0, 16, 16 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 0, 0 ], - "to": [ 1, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 15, 0, 0 ], - "to": [ 17, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, -2 ], - "to": [ 17, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, 7 ], - "to": [ 17, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 12, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, 7 ], - "to": [ 0, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, -2 ], - "to": [ 0, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reinforced_rail/block_n.json b/src/main/resources/assets/create/models/block/reinforced_rail/block_n.json deleted file mode 100644 index 5454c0292..000000000 --- a/src/main/resources/assets/create/models/block/reinforced_rail/block_n.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", -"ambientocclusion": false, - "textures": { - "oak_planks": "minecraft:block/oak_planks", - "rail": "create:block/reinforced_rail_top", - "particle": "create:block/reinforced_rail_top" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, -2, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 1, 2, 15, 1 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 1, 16, 4 ] }, - "south": { "texture": "#oak_planks", "uv": [ 1, 1, 16, 4 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 3 ] }, - "up": { "texture": "#rail", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#oak_planks", "uv": [ 1, 0, 16, 16 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 0, 0 ], - "to": [ 1, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 15, 0, 0 ], - "to": [ 17, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, -2 ], - "to": [ 17, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, 7 ], - "to": [ 17, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 12, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, 7 ], - "to": [ 0, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, -2 ], - "to": [ 0, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "connection_n", - "from": [ -1, 7, 0 ], - "to": [ 0, 9, 8 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 7 ] } - } - }, - { - "name": "connection_n", - "from": [ 16, 7, 0 ], - "to": [ 17, 9, 8 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reinforced_rail/block_s.json b/src/main/resources/assets/create/models/block/reinforced_rail/block_s.json deleted file mode 100644 index 75f76f222..000000000 --- a/src/main/resources/assets/create/models/block/reinforced_rail/block_s.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", -"ambientocclusion": false, - "textures": { - "oak_planks": "minecraft:block/oak_planks", - "rail": "create:block/reinforced_rail_top", - "particle": "create:block/reinforced_rail_top" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, -2, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 1, 2, 15, 1 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 1, 16, 4 ] }, - "south": { "texture": "#oak_planks", "uv": [ 1, 1, 16, 4 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 3 ] }, - "up": { "texture": "#rail", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#oak_planks", "uv": [ 1, 0, 16, 16 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 0, 0 ], - "to": [ 1, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 15, 0, 0 ], - "to": [ 17, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, -2 ], - "to": [ 17, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, 7 ], - "to": [ 17, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 12, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, 7 ], - "to": [ 0, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, -2 ], - "to": [ 0, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "connection_s", - "from": [ -1, 7, 8 ], - "to": [ 0, 9, 16 ], - "faces": { - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 10, 1 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 4, 7 ] } - } - }, - { - "name": "connection_s", - "from": [ 16, 7, 8 ], - "to": [ 17, 9, 16 ], - "faces": { - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/reinforced_rail/block_s_n.json b/src/main/resources/assets/create/models/block/reinforced_rail/block_s_n.json deleted file mode 100644 index 9d17be5be..000000000 --- a/src/main/resources/assets/create/models/block/reinforced_rail/block_s_n.json +++ /dev/null @@ -1,184 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", -"ambientocclusion": false, - "textures": { - "oak_planks": "minecraft:block/oak_planks", - "rail": "create:block/reinforced_rail_top", - "particle": "create:block/reinforced_rail_top" - }, - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 0.625, 0.625, 0.625 ] - }, - "ground": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, 3, 0 ], - "scale": [ 0.25, 0.25, 0.25 ] - }, - "fixed": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "head": { - "rotation": [ 0, 180, 0 ], - "translation": [ 0, 0, 0 ], - "scale": [ 1, 1, 1 ] - }, - "firstperson_righthand": { - "rotation": [ 0, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.4, 0.4, 0.4 ] - }, - "thirdperson_righthand": { - "rotation": [ 75, 315, 0 ], - "translation": [ 0, 2.5, 0 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - }, - "elements": [ - { - "name": "Cube", - "from": [ 0, -2, 0 ], - "to": [ 16, 1, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 1, 2, 15, 1 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 1, 16, 4 ] }, - "south": { "texture": "#oak_planks", "uv": [ 1, 1, 16, 4 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 3 ] }, - "up": { "texture": "#rail", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#oak_planks", "uv": [ 1, 0, 16, 16 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 0, 0 ], - "to": [ 1, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 15, 0, 0 ], - "to": [ 17, 2, 16 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 16, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, -2 ], - "to": [ 17, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "Cube", - "from": [ 16, 7, 7 ], - "to": [ 17, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 12, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, 7 ], - "to": [ 0, 9, 18 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 11 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 11 ] } - } - }, - { - "name": "Cube", - "from": [ -1, 7, -2 ], - "to": [ 0, 9, 7 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "x", "angle": -45.0 }, - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 9 ] } - } - }, - { - "name": "connection_n", - "from": [ -1, 7, 0 ], - "to": [ 0, 9, 8 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 9, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 5, 7 ] } - } - }, - { - "name": "connection_s", - "from": [ -1, 7, 8 ], - "to": [ 0, 9, 16 ], - "faces": { - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 11, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 10, 1 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 2, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 4, 7 ] } - } - }, - { - "name": "connection_s", - "from": [ 16, 7, 8 ], - "to": [ 17, 9, 16 ], - "faces": { - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "south": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] } - } - }, - { - "name": "connection_n", - "from": [ 16, 7, 0 ], - "to": [ 17, 9, 8 ], - "faces": { - "north": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 2 ] }, - "east": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "west": { "texture": "#oak_planks", "uv": [ 0, 0, 8, 2 ] }, - "up": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] }, - "down": { "texture": "#oak_planks", "uv": [ 0, 0, 1, 8 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/block.json b/src/main/resources/assets/create/models/block/rope_pulley/block.json deleted file mode 100644 index a7d302af7..000000000 --- a/src/main/resources/assets/create/models/block/rope_pulley/block.json +++ /dev/null @@ -1,208 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "create:block/gearbox_top", - "4": "create:block/gearbox", - "6": "create:block/andesite_casing", - "particle": "create:block/pulley_rope" - }, - "elements": [ - { - "name": "side", - "from": [2, 2, 14], - "to": [14, 14, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#4"}, - "south": {"uv": [2, 2, 14, 14], "texture": "#4"}, - "up": {"uv": [0, 0, 1, 12], "rotation": 270, "texture": "#3"}, - "down": {"uv": [2, 11, 14, 12], "texture": "#4"} - } - }, - { - "name": "side", - "from": [2, 2, 1], - "to": [14, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [14, 2, 2, 14], "texture": "#4"}, - "south": {"uv": [14, 2, 2, 14], "texture": "#4"}, - "up": {"uv": [1, 0, 0, 12], "rotation": 270, "texture": "#3"}, - "down": {"uv": [2, 12, 14, 11], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [0, 2, 14], - "to": [2, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#4"}, - "east": {"uv": [0, 2, 2, 14], "texture": "#4"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#4"}, - "west": {"uv": [14, 2, 16, 14], "texture": "#4"}, - "up": {"uv": [0, 14, 2, 16], "texture": "#4"}, - "down": {"uv": [0, 0, 2, 2], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [0, 2, 0], - "to": [2, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [2, 2, 0, 14], "texture": "#4"}, - "east": {"uv": [2, 2, 0, 14], "texture": "#4"}, - "south": {"uv": [16, 2, 14, 14], "texture": "#4"}, - "west": {"uv": [16, 2, 14, 14], "texture": "#4"}, - "up": {"uv": [0, 16, 2, 14], "texture": "#4"}, - "down": {"uv": [0, 2, 2, 0], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [14, 2, 14], - "to": [16, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [2, 2, 0, 14], "rotation": 180, "texture": "#4"}, - "east": {"uv": [2, 2, 0, 14], "rotation": 180, "texture": "#3"}, - "south": {"uv": [16, 2, 14, 14], "rotation": 180, "texture": "#4"}, - "west": {"uv": [2, 2, 0, 14], "texture": "#4"}, - "up": {"uv": [2, 14, 0, 16], "texture": "#4"}, - "down": {"uv": [2, 0, 0, 2], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [14, 2, 0], - "to": [16, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#4"}, - "east": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#3"}, - "south": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#4"}, - "west": {"uv": [0, 2, 2, 14], "texture": "#4"}, - "up": {"uv": [2, 16, 0, 14], "texture": "#4"}, - "down": {"uv": [2, 2, 0, 0], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [0, 0, 14], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#4"}, - "east": {"uv": [0, 14, 2, 16], "texture": "#4"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#4"}, - "west": {"uv": [14, 14, 16, 16], "texture": "#4"}, - "up": {"uv": [0, 0, 12, 2], "texture": "#4"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "side_frame", - "from": [0, 14, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 16, 16, 14], "texture": "#4"}, - "east": {"uv": [0, 16, 2, 14], "texture": "#4"}, - "south": {"uv": [0, 16, 16, 14], "texture": "#4"}, - "west": {"uv": [14, 16, 16, 14], "texture": "#4"}, - "up": {"uv": [0, 16, 16, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 2, 12, 0], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [0, 0, 0], - "to": [16, 2, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [16, 14, 0, 16], "texture": "#4"}, - "east": {"uv": [2, 14, 0, 16], "texture": "#4"}, - "south": {"uv": [16, 14, 0, 16], "texture": "#4"}, - "west": {"uv": [16, 14, 14, 16], "texture": "#4"}, - "up": {"uv": [0, 2, 12, 0], "texture": "#4"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#3"} - } - }, - { - "name": "side_frame", - "from": [0, 14, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [16, 16, 0, 14], "texture": "#4"}, - "east": {"uv": [2, 16, 0, 14], "texture": "#4"}, - "south": {"uv": [16, 16, 0, 14], "texture": "#4"}, - "west": {"uv": [16, 16, 14, 14], "texture": "#4"}, - "up": {"uv": [0, 2, 16, 0], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 12, 2], "texture": "#4"} - } - }, - { - "name": "front", - "from": [1, 1, 2], - "to": [3, 3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [2, 0, 14, 2], "texture": "#3"}, - "west": {"uv": [2, 14, 14, 16], "texture": "#3"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 90, "texture": "#3"}, - "down": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "front", - "from": [13, 1, 2], - "to": [15, 3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [14, 14, 2, 16], "texture": "#3"}, - "west": {"uv": [14, 0, 2, 2], "texture": "#3"}, - "up": {"uv": [2, 2, 14, 0], "rotation": 90, "texture": "#3"}, - "down": {"uv": [2, 16, 14, 14], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "front", - "from": [13, 13, 2], - "to": [15, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "east": {"uv": [14, 16, 2, 14], "texture": "#3"}, - "west": {"uv": [14, 2, 2, 0], "texture": "#3"}, - "up": {"uv": [14, 16, 2, 14], "rotation": 90, "texture": "#3"}, - "down": {"uv": [14, 2, 2, 0], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "front", - "from": [1, 13, 2], - "to": [3, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "east": {"uv": [2, 2, 14, 0], "texture": "#3"}, - "west": {"uv": [2, 16, 14, 14], "texture": "#3"}, - "up": {"uv": [14, 14, 2, 16], "rotation": 90, "texture": "#3"}, - "down": {"uv": [14, 0, 2, 2], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "top", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "east": {"uv": [2, 1, 14, 3], "rotation": 180, "texture": "#6"}, - "west": {"uv": [2, 13, 14, 15], "texture": "#6"}, - "up": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#6"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#6"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/item.json b/src/main/resources/assets/create/models/block/rope_pulley/item.json deleted file mode 100644 index d0d9994c9..000000000 --- a/src/main/resources/assets/create/models/block/rope_pulley/item.json +++ /dev/null @@ -1,335 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "3": "create:block/gearbox_top", - "4": "create:block/gearbox", - "5": "create:block/pulley_rope", - "6": "create:block/pulley_magnet", - "8": "create:block/andesite_casing", - "particle": "create:block/andesite_casing" - }, - "elements": [ - { - "name": "coil", - "from": [4, 4, 2], - "to": [12, 12, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "east": {"uv": [0, 0, 12, 8], "texture": "#5"}, - "west": {"uv": [0, 0, 12, 8], "texture": "#5"}, - "up": {"uv": [0, 0, 12, 8], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 12, 8], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "coil", - "from": [3.5, 3.5, 9], - "to": [12.5, 12.5, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "north": {"uv": [0, 0, 9, 9], "texture": "#5"}, - "east": {"uv": [0, 0, 4, 9], "texture": "#5"}, - "south": {"uv": [0, 0, 9, 9], "texture": "#5"}, - "west": {"uv": [0, 0, 4, 9], "rotation": 180, "texture": "#5"}, - "up": {"uv": [0, 0, 4, 9], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 4, 9], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "coil", - "from": [3.5, 3.5, 3], - "to": [12.5, 12.5, 7], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "north": {"uv": [0, 0, 9, 9], "texture": "#5"}, - "east": {"uv": [0, 0, 4, 9], "texture": "#5"}, - "south": {"uv": [0, 0, 9, 9], "texture": "#5"}, - "west": {"uv": [0, 0, 4, 9], "rotation": 180, "texture": "#5"}, - "up": {"uv": [0, 0, 4, 9], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 4, 9], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "side", - "from": [2, 2, 14], - "to": [14, 14, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [2, 2, 14, 14], "texture": "#4"}, - "south": {"uv": [2, 2, 14, 14], "texture": "#4"}, - "up": {"uv": [0, 0, 1, 12], "rotation": 270, "texture": "#3"}, - "down": {"uv": [2, 11, 14, 12], "texture": "#4"} - } - }, - { - "name": "side", - "from": [2, 2, 1], - "to": [14, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "north": {"uv": [14, 2, 2, 14], "texture": "#4"}, - "south": {"uv": [14, 2, 2, 14], "texture": "#4"}, - "up": {"uv": [1, 0, 0, 12], "rotation": 270, "texture": "#3"}, - "down": {"uv": [2, 12, 14, 11], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [0, 2, 14], - "to": [2, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [14, 2, 16, 14], "texture": "#4"}, - "east": {"uv": [0, 2, 2, 14], "texture": "#4"}, - "south": {"uv": [0, 2, 2, 14], "texture": "#4"}, - "west": {"uv": [14, 2, 16, 14], "texture": "#4"}, - "up": {"uv": [0, 14, 2, 16], "texture": "#4"}, - "down": {"uv": [0, 0, 2, 2], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [0, 2, 0], - "to": [2, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [2, 2, 0, 14], "texture": "#4"}, - "east": {"uv": [2, 2, 0, 14], "texture": "#4"}, - "south": {"uv": [16, 2, 14, 14], "texture": "#4"}, - "west": {"uv": [16, 2, 14, 14], "texture": "#4"}, - "up": {"uv": [0, 16, 2, 14], "texture": "#4"}, - "down": {"uv": [0, 2, 2, 0], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [14, 2, 14], - "to": [16, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [2, 2, 0, 14], "rotation": 180, "texture": "#4"}, - "east": {"uv": [2, 2, 0, 14], "rotation": 180, "texture": "#3"}, - "south": {"uv": [16, 2, 14, 14], "rotation": 180, "texture": "#4"}, - "west": {"uv": [2, 2, 0, 14], "texture": "#4"}, - "up": {"uv": [2, 14, 0, 16], "texture": "#4"}, - "down": {"uv": [2, 0, 0, 2], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [14, 2, 0], - "to": [16, 14, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#4"}, - "east": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#3"}, - "south": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#4"}, - "west": {"uv": [0, 2, 2, 14], "texture": "#4"}, - "up": {"uv": [2, 16, 0, 14], "texture": "#4"}, - "down": {"uv": [2, 2, 0, 0], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [0, 0, 14], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#4"}, - "east": {"uv": [0, 14, 2, 16], "texture": "#4"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#4"}, - "west": {"uv": [14, 14, 16, 16], "texture": "#4"}, - "up": {"uv": [0, 0, 12, 2], "texture": "#4"}, - "down": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "side_frame", - "from": [0, 14, 14], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [0, 16, 16, 14], "texture": "#4"}, - "east": {"uv": [0, 16, 2, 14], "texture": "#4"}, - "south": {"uv": [0, 16, 16, 14], "texture": "#4"}, - "west": {"uv": [14, 16, 16, 14], "texture": "#4"}, - "up": {"uv": [0, 16, 16, 14], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 2, 12, 0], "texture": "#4"} - } - }, - { - "name": "side_frame", - "from": [0, 0, 0], - "to": [16, 2, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [16, 14, 0, 16], "texture": "#4"}, - "east": {"uv": [2, 14, 0, 16], "texture": "#4"}, - "south": {"uv": [16, 14, 0, 16], "texture": "#4"}, - "west": {"uv": [16, 14, 14, 16], "texture": "#4"}, - "up": {"uv": [0, 2, 12, 0], "texture": "#4"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#3"} - } - }, - { - "name": "side_frame", - "from": [0, 14, 0], - "to": [16, 16, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 15, 8]}, - "faces": { - "north": {"uv": [16, 16, 0, 14], "texture": "#4"}, - "east": {"uv": [2, 16, 0, 14], "texture": "#4"}, - "south": {"uv": [16, 16, 0, 14], "texture": "#4"}, - "west": {"uv": [16, 16, 14, 14], "texture": "#4"}, - "up": {"uv": [0, 2, 16, 0], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 12, 2], "texture": "#4"} - } - }, - { - "name": "front", - "from": [1, 1, 2], - "to": [3, 3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [2, 0, 14, 2], "texture": "#3"}, - "west": {"uv": [2, 14, 14, 16], "texture": "#3"}, - "up": {"uv": [2, 0, 14, 2], "rotation": 90, "texture": "#3"}, - "down": {"uv": [2, 14, 14, 16], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "front", - "from": [13, 1, 2], - "to": [15, 3, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]}, - "faces": { - "east": {"uv": [14, 14, 2, 16], "texture": "#3"}, - "west": {"uv": [14, 0, 2, 2], "texture": "#3"}, - "up": {"uv": [2, 2, 14, 0], "rotation": 90, "texture": "#3"}, - "down": {"uv": [2, 16, 14, 14], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "front", - "from": [13, 13, 2], - "to": [15, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "east": {"uv": [14, 16, 2, 14], "texture": "#3"}, - "west": {"uv": [14, 2, 2, 0], "texture": "#3"}, - "up": {"uv": [14, 16, 2, 14], "rotation": 90, "texture": "#3"}, - "down": {"uv": [14, 2, 2, 0], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "front", - "from": [1, 13, 2], - "to": [3, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "east": {"uv": [2, 2, 14, 0], "texture": "#3"}, - "west": {"uv": [2, 16, 14, 14], "texture": "#3"}, - "up": {"uv": [14, 14, 2, 16], "rotation": 90, "texture": "#3"}, - "down": {"uv": [14, 0, 2, 2], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1, 8]}, - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "rope", - "from": [6, 2, 6], - "to": [10, 8, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, - "faces": { - "north": {"uv": [12, 8, 16, 14], "texture": "#6"}, - "east": {"uv": [12, 8, 16, 14], "texture": "#6"}, - "south": {"uv": [12, 8, 16, 14], "texture": "#6"}, - "west": {"uv": [12, 8, 16, 14], "texture": "#6"}, - "up": {"uv": [12, 0, 16, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "magnet", - "from": [3, 0, 3], - "to": [13, 2, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, - "faces": { - "north": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "east": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "south": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "west": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#6"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#6"} - } - }, - { - "name": "top", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 8]}, - "faces": { - "east": {"uv": [2, 1, 14, 3], "rotation": 180, "texture": "#8"}, - "west": {"uv": [2, 13, 14, 15], "texture": "#8"}, - "up": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#8"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#8"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [17] - }, - { - "name": "rope_half_magnet", - "origin": [8, 8, 8], - "children": [18, 19] - }, 20] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/pulley_magnet.json b/src/main/resources/assets/create/models/block/rope_pulley/pulley_magnet.json deleted file mode 100644 index 1b44d7f3e..000000000 --- a/src/main/resources/assets/create/models/block/rope_pulley/pulley_magnet.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "6": "create:block/pulley_magnet", - "particle": "create:block/pulley_magnet" - }, - "elements": [ - { - "name": "rope", - "from": [6, 2, 6], - "to": [10, 16, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, - "faces": { - "north": {"uv": [12, 0, 16, 14], "texture": "#6"}, - "east": {"uv": [12, 0, 16, 14], "texture": "#6"}, - "south": {"uv": [12, 0, 16, 14], "texture": "#6"}, - "west": {"uv": [12, 0, 16, 14], "texture": "#6"}, - "up": {"uv": [12, 0, 16, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "magnet", - "from": [3, 0, 3], - "to": [13, 2, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, - "faces": { - "north": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "east": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "south": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "west": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#6"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#6"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/rope.json b/src/main/resources/assets/create/models/block/rope_pulley/rope.json deleted file mode 100644 index 832617702..000000000 --- a/src/main/resources/assets/create/models/block/rope_pulley/rope.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/pulley_rope", - "particle": "create:block/pulley_rope" - }, - "elements": [ - { - "name": "rope", - "from": [6, 0, 6], - "to": [10, 16, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 16], "texture": "#5"}, - "east": {"uv": [0, 0, 4, 16], "texture": "#5"}, - "south": {"uv": [0, 0, 4, 16], "texture": "#5"}, - "west": {"uv": [0, 0, 4, 16], "texture": "#5"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#5"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/rope_coil.json b/src/main/resources/assets/create/models/block/rope_pulley/rope_coil.json deleted file mode 100644 index f29424c95..000000000 --- a/src/main/resources/assets/create/models/block/rope_pulley/rope_coil.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/pulley_rope" - }, - "elements": [ - { - "name": "coil", - "from": [4, 4, 2], - "to": [12, 12, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "east": {"uv": [0, 0, 12, 8], "texture": "#5"}, - "west": {"uv": [0, 0, 12, 8], "texture": "#5"}, - "up": {"uv": [0, 0, 12, 8], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 12, 8], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "coil", - "from": [3.5, 3.5, 9], - "to": [12.5, 12.5, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "north": {"uv": [0, 0, 9, 9], "texture": "#5"}, - "east": {"uv": [0, 0, 4, 9], "texture": "#5"}, - "south": {"uv": [0, 0, 9, 9], "texture": "#5"}, - "west": {"uv": [0, 0, 4, 9], "rotation": 180, "texture": "#5"}, - "up": {"uv": [0, 0, 4, 9], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 4, 9], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "coil", - "from": [3.5, 3.5, 3], - "to": [12.5, 12.5, 7], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, -10]}, - "faces": { - "north": {"uv": [0, 0, 9, 9], "texture": "#5"}, - "east": {"uv": [0, 0, 4, 9], "texture": "#5"}, - "south": {"uv": [0, 0, 9, 9], "texture": "#5"}, - "west": {"uv": [0, 0, 4, 9], "rotation": 180, "texture": "#5"}, - "up": {"uv": [0, 0, 4, 9], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 4, 9], "rotation": 90, "texture": "#5"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/rope_half.json b/src/main/resources/assets/create/models/block/rope_pulley/rope_half.json deleted file mode 100644 index 522789073..000000000 --- a/src/main/resources/assets/create/models/block/rope_pulley/rope_half.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/pulley_rope", - "particle": "create:block/pulley_rope" - }, - "elements": [ - { - "name": "rope", - "from": [6, 0, 6], - "to": [10, 8, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, - "faces": { - "north": {"uv": [0, 8, 4, 16], "texture": "#5"}, - "east": {"uv": [0, 8, 4, 16], "texture": "#5"}, - "south": {"uv": [0, 8, 4, 16], "texture": "#5"}, - "west": {"uv": [0, 8, 4, 16], "texture": "#5"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#5"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/rope_half_magnet.json b/src/main/resources/assets/create/models/block/rope_pulley/rope_half_magnet.json deleted file mode 100644 index f3f8f43c2..000000000 --- a/src/main/resources/assets/create/models/block/rope_pulley/rope_half_magnet.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "6": "create:block/pulley_magnet", - "particle": "create:block/pulley_magnet" - }, - "elements": [ - { - "name": "rope", - "from": [6, 2, 6], - "to": [10, 8, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, - "faces": { - "north": {"uv": [12, 8, 16, 14], "texture": "#6"}, - "east": {"uv": [12, 8, 16, 14], "texture": "#6"}, - "south": {"uv": [12, 8, 16, 14], "texture": "#6"}, - "west": {"uv": [12, 8, 16, 14], "texture": "#6"}, - "up": {"uv": [12, 0, 16, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "magnet", - "from": [3, 0, 3], - "to": [13, 2, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, - "faces": { - "north": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "east": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "south": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "west": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "up": {"uv": [0, 0, 10, 10], "texture": "#6"}, - "down": {"uv": [0, 0, 10, 10], "texture": "#6"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rotation_speed_controller/block.json b/src/main/resources/assets/create/models/block/rotation_speed_controller/block.json deleted file mode 100644 index d4da4d489..000000000 --- a/src/main/resources/assets/create/models/block/rotation_speed_controller/block.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/large_wheels", - "textures": { - "0": "create:block/rotation_speed_controller", - "3": "create:block/brass_funnel_plating", - "4": "create:block/brass_gearbox", - "5": "create:block/rotation_speed_controller_top", - "6": "create:block/brass_block", - "particle": "create:block/brass_gearbox" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 4, 16], - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#0"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#4"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#6"} - } - }, - { - "from": [0, 8, 0], - "to": [5, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 18, 8]}, - "faces": { - "north": {"uv": [6, 6, 11, 0], "texture": "#0"}, - "east": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "south": {"uv": [0, 0, 5, 6], "texture": "#0"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#3"}, - "up": {"uv": [0, 0, 5, 16], "texture": "#5"}, - "down": {"uv": [0, 0, 5, 16], "texture": "#6"} - } - }, - { - "from": [1, 4, 1], - "to": [15, 12, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 8]}, - "faces": { - "north": {"uv": [1, 4, 15, 12], "texture": "#4"}, - "east": {"uv": [1, 4, 15, 12], "texture": "#0"}, - "south": {"uv": [1, 4, 15, 12], "texture": "#4"}, - "west": {"uv": [1, 4, 15, 12], "texture": "#0"}, - "up": {"uv": [1, 1, 15, 15], "texture": "#5"} - } - }, - { - "from": [11, 8, 0], - "to": [16, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [19, 18, 8]}, - "faces": { - "north": {"uv": [0, 0, 5, 6], "texture": "#0"}, - "east": {"uv": [0, 0, 8, 3], "texture": "#3"}, - "south": {"uv": [6, 6, 11, 0], "texture": "#0"}, - "west": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "up": {"uv": [11, 0, 16, 16], "texture": "#5"}, - "down": {"uv": [11, 0, 16, 16], "texture": "#6"} - } - }, - { - "from": [10, 11, 0], - "to": [11, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 18, 8]}, - "faces": { - "north": {"uv": [5, 0, 6, 3], "texture": "#0"}, - "south": {"uv": [5, 6, 6, 3], "texture": "#0"}, - "west": {"uv": [6, 0, 3, 16], "rotation": 90, "texture": "#5"}, - "up": {"uv": [11, 0, 10, 16], "texture": "#5"}, - "down": {"uv": [15, 0, 16, 16], "texture": "#6"} - } - }, - { - "from": [5, 11, 0], - "to": [6, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-2, 18, 8]}, - "faces": { - "north": {"uv": [5, 6, 6, 3], "texture": "#0"}, - "east": {"uv": [6, 0, 3, 16], "rotation": 90, "texture": "#5"}, - "south": {"uv": [5, 0, 6, 3], "texture": "#0"}, - "up": {"uv": [6, 0, 5, 16], "texture": "#5"}, - "down": {"uv": [16, 0, 15, 16], "texture": "#6"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rotation_speed_controller/bracket.json b/src/main/resources/assets/create/models/block/rotation_speed_controller/bracket.json deleted file mode 100644 index 7ca552898..000000000 --- a/src/main/resources/assets/create/models/block/rotation_speed_controller/bracket.json +++ /dev/null @@ -1,210 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "2": "create:block/brass_casing", - "3": "create:block/brass_casing_side", - "4": "create:block/brass_block", - "5": "create:block/rotation_speed_controller_bracket", - "6": "create:block/rotation_speed_controller", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "from": [11.9, 3, 2], - "to": [14, 6, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, -24]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [4.1, 3, 2], - "to": [11.9, 13, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 4.5, -24]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "east": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "west": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "up": {"uv": [8, 6, 16, 10], "texture": "#5"} - } - }, - { - "from": [2, 3, 2], - "to": [4.1, 6, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 4.5, -24]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [2, 10, 2], - "to": [4.1, 13, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 11.5, -24]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [12.5, 6, 3.5], - "to": [13.5, 14, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, -16]}, - "faces": { - "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "up": {"uv": [13, 9, 14, 10], "texture": "#3"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 10, 2], - "to": [14, 13, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 11.5, -24]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [2.5, 6, 3.5], - "to": [3.5, 14, 4.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, -16]}, - "faces": { - "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "up": {"uv": [13, 9, 14, 10], "texture": "#3"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 3, 10], - "to": [14, 6, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4.5, -16]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [4.1, 3, 10], - "to": [11.9, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 4.5, -16]}, - "faces": { - "north": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "east": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "south": {"uv": [0, 0, 8, 10], "rotation": 180, "texture": "#5"}, - "west": {"uv": [7, 0, 8, 10], "texture": "#5"}, - "up": {"uv": [8, 6, 16, 10], "texture": "#5"} - } - }, - { - "from": [2, 3, 10], - "to": [4.1, 6, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 4.5, -16]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [2, 10, 10], - "to": [4.1, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 11.5, -16]}, - "faces": { - "north": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "south": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "west": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 270, "texture": "#5"} - } - }, - { - "from": [12.5, 6, 11.5], - "to": [13.5, 14, 12.5], - "rotation": {"angle": 0, "axis": "y", "origin": [20, 14, -8]}, - "faces": { - "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "up": {"uv": [13, 9, 14, 10], "texture": "#3"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [11.9, 10, 10], - "to": [14, 13, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 11.5, -16]}, - "faces": { - "north": {"uv": [8, 3, 10, 6], "texture": "#5"}, - "east": {"uv": [10, 3, 14, 6], "texture": "#5"}, - "south": {"uv": [10, 3, 8, 6], "texture": "#5"}, - "up": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"}, - "down": {"uv": [10, 1, 14, 3], "rotation": 90, "texture": "#5"} - } - }, - { - "from": [2.5, 6, 11.5], - "to": [3.5, 14, 12.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 14, -8]}, - "faces": { - "north": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "east": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "west": {"uv": [6, 13, 14, 14], "rotation": 90, "texture": "#3"}, - "up": {"uv": [13, 9, 14, 10], "texture": "#3"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#4"} - } - }, - { - "from": [1, -2, 10], - "to": [15, 3, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.5, 8]}, - "faces": { - "north": {"uv": [0, 10, 14, 15], "texture": "#5"}, - "east": {"uv": [11, 1, 16, 6], "texture": "#6"}, - "south": {"uv": [0, 10, 14, 15], "texture": "#5"}, - "west": {"uv": [11, 1, 16, 6], "texture": "#6"}, - "up": {"uv": [10, 1, 15, 15], "rotation": 90, "texture": "#2"} - } - }, - { - "from": [1, -2, 1], - "to": [15, 3, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 1.5, 8]}, - "faces": { - "north": {"uv": [14, 10, 0, 15], "texture": "#5"}, - "east": {"uv": [11, 1, 16, 6], "texture": "#6"}, - "south": {"uv": [0, 10, 14, 15], "texture": "#5"}, - "west": {"uv": [11, 1, 16, 6], "texture": "#6"}, - "up": {"uv": [15, 1, 10, 15], "rotation": 90, "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rotation_speed_controller/item.json b/src/main/resources/assets/create/models/block/rotation_speed_controller/item.json deleted file mode 100644 index 160965c86..000000000 --- a/src/main/resources/assets/create/models/block/rotation_speed_controller/item.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/block", - "textures": { - "0": "create:block/axis", - "3": "create:block/axis_top", - "4": "create:block/brass_gearbox", - "9": "create:block/brass_block", - "particle": "create:block/brass_gearbox", - "1_0": "create:block/rotation_speed_controller", - "1_3": "create:block/brass_funnel_plating", - "1_5": "create:block/rotation_speed_controller_top" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#3"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#3"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#0"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 4, 16], - "faces": { - "north": {"uv": [0, 12, 16, 16], "texture": "#1_0"}, - "east": {"uv": [0, 12, 16, 16], "texture": "#1_0"}, - "south": {"uv": [0, 12, 16, 16], "texture": "#1_0"}, - "west": {"uv": [0, 12, 16, 16], "texture": "#1_0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#4"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#9"} - } - }, - { - "from": [0, 8, 0], - "to": [5, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 18, 8]}, - "faces": { - "north": {"uv": [6, 6, 11, 0], "texture": "#1_0"}, - "east": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "south": {"uv": [0, 0, 5, 6], "texture": "#1_0"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#1_3"}, - "up": {"uv": [0, 0, 5, 16], "texture": "#1_5"}, - "down": {"uv": [0, 0, 5, 16], "texture": "#9"} - } - }, - { - "from": [1, 4, 1], - "to": [15, 12, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 8]}, - "faces": { - "north": {"uv": [1, 4, 15, 12], "texture": "#4"}, - "east": {"uv": [1, 4, 15, 12], "texture": "#1_0"}, - "south": {"uv": [1, 4, 15, 12], "texture": "#4"}, - "west": {"uv": [1, 4, 15, 12], "texture": "#1_0"}, - "up": {"uv": [1, 1, 15, 15], "texture": "#1_5"} - } - }, - { - "from": [11, 8, 0], - "to": [16, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [19, 18, 8]}, - "faces": { - "north": {"uv": [0, 0, 5, 6], "texture": "#1_0"}, - "east": {"uv": [0, 0, 8, 3], "texture": "#1_3"}, - "south": {"uv": [6, 6, 11, 0], "texture": "#1_0"}, - "west": {"uv": [0, 10, 16, 16], "texture": "#4"}, - "up": {"uv": [11, 0, 16, 16], "texture": "#1_5"}, - "down": {"uv": [11, 0, 16, 16], "texture": "#9"} - } - }, - { - "from": [10, 11, 0], - "to": [11, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [18, 18, 8]}, - "faces": { - "north": {"uv": [5, 0, 6, 3], "texture": "#1_0"}, - "south": {"uv": [5, 6, 6, 3], "texture": "#1_0"}, - "west": {"uv": [6, 0, 3, 16], "rotation": 90, "texture": "#1_5"}, - "up": {"uv": [11, 0, 10, 16], "texture": "#1_5"}, - "down": {"uv": [15, 0, 16, 16], "texture": "#9"} - } - }, - { - "from": [5, 11, 0], - "to": [6, 14, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [-2, 18, 8]}, - "faces": { - "north": {"uv": [5, 6, 6, 3], "texture": "#1_0"}, - "east": {"uv": [6, 0, 3, 16], "rotation": 90, "texture": "#1_5"}, - "south": {"uv": [5, 0, 6, 3], "texture": "#1_0"}, - "up": {"uv": [6, 0, 5, 16], "texture": "#1_5"}, - "down": {"uv": [16, 0, 15, 16], "texture": "#9"} - } - } - ], - "groups": [0, - { - "name": "block", - "origin": [8, 8, 8], - "children": [1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sail_frame.json b/src/main/resources/assets/create/models/block/sail_frame.json deleted file mode 100644 index 6240b3aee..000000000 --- a/src/main/resources/assets/create/models/block/sail_frame.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "1": "create:block/sail/frame", - "particle": "#1" - }, - "elements": [ - { - "from": [0, 5, 13], - "to": [3, 9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 8]}, - "faces": { - "north": {"uv": [5, 9, 8, 13], "texture": "#1"}, - "east": {"uv": [2, 9, 5, 13], "texture": "#1"}, - "south": {"uv": [8, 9, 11, 13], "texture": "#1"}, - "west": {"uv": [11, 9, 14, 13], "texture": "#1"}, - "up": {"uv": [0, 0, 3, 3], "texture": "#1"}, - "down": {"uv": [13, 13, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [0, 5, 0], - "to": [3, 9, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, -5]}, - "faces": { - "north": {"uv": [11, 9, 14, 13], "texture": "#1"}, - "east": {"uv": [5, 9, 8, 13], "texture": "#1"}, - "south": {"uv": [2, 9, 5, 13], "texture": "#1"}, - "west": {"uv": [8, 9, 11, 13], "texture": "#1"}, - "up": {"uv": [0, 0, 3, 3], "texture": "#1"}, - "down": {"uv": [13, 0, 16, 3], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [13, 5, 13], - "to": [16, 9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [21, 14, 8]}, - "faces": { - "north": {"uv": [2, 9, 5, 13], "texture": "#1"}, - "east": {"uv": [8, 9, 11, 13], "texture": "#1"}, - "south": {"uv": [11, 9, 14, 13], "texture": "#1"}, - "west": {"uv": [5, 9, 8, 13], "texture": "#1"}, - "up": {"uv": [0, 0, 3, 3], "texture": "#1"}, - "down": {"uv": [0, 13, 3, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [13, 5, 0], - "to": [16, 9, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [21, 14, -5]}, - "faces": { - "north": {"uv": [8, 9, 11, 13], "texture": "#1"}, - "east": {"uv": [11, 9, 14, 13], "texture": "#1"}, - "south": {"uv": [5, 9, 8, 13], "texture": "#1"}, - "west": {"uv": [2, 9, 5, 13], "texture": "#1"}, - "up": {"uv": [0, 0, 3, 3], "texture": "#1"}, - "down": {"uv": [0, 0, 3, 3], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [3, 6, 14], - "to": [13, 9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 15, 8]}, - "faces": { - "north": {"uv": [3, 6, 13, 9], "texture": "#1"}, - "east": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#1"}, - "south": {"uv": [3, 3, 13, 6], "texture": "#1"}, - "west": {"uv": [0, 0, 3, 2], "rotation": 270, "texture": "#1"}, - "up": {"uv": [3, 14, 13, 16], "texture": "#1"}, - "down": {"uv": [3, 14, 13, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [0, 6, 3], - "to": [2, 9, 13], - "faces": { - "north": {"uv": [0, 0, 3, 2], "rotation": 270, "texture": "#1"}, - "east": {"uv": [3, 6, 13, 9], "texture": "#1"}, - "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#1"}, - "west": {"uv": [3, 3, 13, 6], "texture": "#1"}, - "up": {"uv": [0, 3, 2, 13], "texture": "#1"}, - "down": {"uv": [14, 3, 16, 13], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [3, 6, 0], - "to": [13, 9, 2], - "faces": { - "north": {"uv": [3, 3, 13, 6], "texture": "#1"}, - "east": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#1"}, - "south": {"uv": [3, 6, 13, 9], "texture": "#1"}, - "west": {"uv": [0, 0, 3, 2], "rotation": 270, "texture": "#1"}, - "up": {"uv": [3, 0, 13, 2], "texture": "#1"}, - "down": {"uv": [3, 0, 13, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [14, 6, 3], - "to": [16, 9, 13], - "faces": { - "north": {"uv": [0, 0, 3, 2], "rotation": 270, "texture": "#1"}, - "east": {"uv": [3, 3, 13, 6], "texture": "#1"}, - "south": {"uv": [0, 0, 3, 2], "rotation": 90, "texture": "#1"}, - "west": {"uv": [3, 6, 13, 9], "texture": "#1"}, - "up": {"uv": [14, 3, 16, 13], "texture": "#1"}, - "down": {"uv": [0, 3, 2, 13], "rotation": 180, "texture": "#1"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 315, -90], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [-90, 0, 0], - "translation": [0, 0, -1.5], - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/schematic_table.json b/src/main/resources/assets/create/models/block/schematic_table.json deleted file mode 100644 index e41f18686..000000000 --- a/src/main/resources/assets/create/models/block/schematic_table.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/schematic_table_side", - "1": "create:block/schematic_table_top", - "particle": "create:block/schematic_table_side" - }, - "elements": [ - { - "name": "base", - "from": [5, 0, 5], - "to": [11, 12, 11], - "faces": { - "north": {"uv": [0, 3, 6, 15], "texture": "#0"}, - "east": {"uv": [0, 3, 6, 15], "texture": "#0"}, - "south": {"uv": [0, 3, 6, 15], "texture": "#0"}, - "west": {"uv": [0, 3, 6, 15], "texture": "#0"} - } - }, - { - "name": "Top", - "from": [0, 11, 2], - "to": [16, 14, 14], - "faces": { - "north": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "east": {"uv": [0, 0, 12, 3], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "west": {"uv": [0, 0, 12, 3], "texture": "#0"}, - "up": {"uv": [0, 2, 16, 14], "texture": "#1"}, - "down": {"uv": [0, 2, 16, 14], "texture": "#1"} - } - }, - { - "name": "Cube", - "from": [4, 9, 4], - "to": [12, 11, 12], - "faces": { - "north": {"uv": [4, 2, 12, 4], "texture": "#1"}, - "east": {"uv": [4, 2, 12, 4], "texture": "#1"}, - "south": {"uv": [4, 2, 12, 4], "texture": "#1"}, - "west": {"uv": [4, 2, 12, 4], "texture": "#1"}, - "down": {"uv": [4, 4, 12, 12], "texture": "#1"} - } - }, - { - "name": "Cube", - "from": [4, 0, 4], - "to": [12, 2, 12], - "faces": { - "north": {"uv": [5, 14, 13, 16], "texture": "#0"}, - "east": {"uv": [6, 14, 14, 16], "texture": "#0"}, - "south": {"uv": [1, 14, 9, 16], "texture": "#0"}, - "west": {"uv": [4, 14, 12, 16], "texture": "#0"}, - "up": {"uv": [6, 5, 14, 13], "texture": "#0"}, - "down": {"uv": [6, 5, 14, 13], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/schematicannon/block.json b/src/main/resources/assets/create/models/block/schematicannon/block.json deleted file mode 100644 index 3a2bc897a..000000000 --- a/src/main/resources/assets/create/models/block/schematicannon/block.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/andesite_casing_short", - "2": "block/stonecutter_bottom", - "4": "create:block/schematicannon", - "8": "block/stone", - "particle": "block/spruce_log" - }, - "elements": [ - { - "name": "Cube", - "from": [-2, -0.2, 5], - "to": [18, 3, 11], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "east": {"uv": [5, 0, 11, 3], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "west": {"uv": [5, 0, 11, 3], "texture": "#0"}, - "up": {"uv": [0, 4, 16, 10], "texture": "#8"}, - "down": {"uv": [0, 4, 16, 10], "texture": "#8"} - } - }, - { - "name": "Cube", - "from": [-2, -0.1, 5], - "to": [18, 3, 11], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "east": {"uv": [5, 0, 11, 3], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "west": {"uv": [5, 0, 11, 3], "texture": "#0"}, - "up": {"uv": [0, 4, 16, 10], "texture": "#8"}, - "down": {"uv": [0, 4, 16, 10], "texture": "#8"} - } - }, - { - "name": "Cube", - "from": [2, 0, 2], - "to": [14, 7, 14], - "faces": { - "north": {"uv": [0, 0, 12, 7], "texture": "#4"}, - "east": {"uv": [0, 0, 12, 7], "texture": "#4"}, - "south": {"uv": [0, 0, 12, 7], "texture": "#4"}, - "west": {"uv": [0, 0, 12, 7], "texture": "#4"}, - "up": {"uv": [2, 2, 14, 14], "texture": "#2"}, - "down": {"uv": [0, 4, 12, 16], "texture": "#8"} - } - } - ], - "groups": [ - { - "name": "Base", - "origin": [8, 8, 8], - "children": [0, 1, 2] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/schematicannon/connector.json b/src/main/resources/assets/create/models/block/schematicannon/connector.json deleted file mode 100644 index 6efdd11a2..000000000 --- a/src/main/resources/assets/create/models/block/schematicannon/connector.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "block/spruce_log", - "6": "block/spruce_log_top", - "particle": "block/spruce_log" - }, - "elements": [ - { - "name": "Cube", - "from": [3, 11, 0], - "to": [13, 20, 3], - "faces": { - "north": {"uv": [3, 3, 13, 12], "texture": "#6"}, - "east": {"uv": [0, 3, 3, 12], "texture": "#6"}, - "south": {"uv": [3, 2, 13, 11], "texture": "#5"}, - "west": {"uv": [13, 3, 16, 12], "texture": "#6"}, - "up": {"uv": [3, 0, 13, 3], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Cube", - "from": [3, 11, 13], - "to": [13, 20, 16], - "faces": { - "north": {"uv": [3, 2, 13, 11], "texture": "#5"}, - "east": {"uv": [3, 3, 0, 12], "texture": "#6"}, - "south": {"uv": [13, 3, 3, 12], "texture": "#6"}, - "west": {"uv": [16, 3, 13, 12], "texture": "#6"}, - "up": {"uv": [3, 3, 13, 0], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Cube", - "from": [1, 7, 0], - "to": [15, 11, 16], - "faces": { - "north": {"uv": [12, 1, 16, 15], "rotation": 90, "texture": "#6"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#5"}, - "south": {"uv": [12, 1, 16, 15], "rotation": 90, "texture": "#6"}, - "west": {"uv": [8, 0, 12, 16], "rotation": 90, "texture": "#5"}, - "up": {"uv": [1, 0, 15, 16], "texture": "#5"}, - "down": {"uv": [1, 0, 15, 16], "texture": "#5"} - } - } - ], - "groups": [ - { - "name": "Connector", - "origin": [8, 8, 8], - "children": [0, 1, 2] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/schematicannon/item.json b/src/main/resources/assets/create/models/block/schematicannon/item.json deleted file mode 100644 index 2efe2cb44..000000000 --- a/src/main/resources/assets/create/models/block/schematicannon/item.json +++ /dev/null @@ -1,200 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/andesite_casing_short", - "2": "block/stonecutter_bottom", - "3": "block/anvil", - "4": "create:block/schematicannon", - "5": "block/spruce_log", - "6": "block/spruce_log_top", - "8": "block/stone", - "particle": "block/spruce_log" - }, - "elements": [ - { - "name": "Cube", - "from": [4, 30, 4], - "to": [12, 32, 12], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 15, 0]}, - "faces": { - "north": {"uv": [6, 0, 14, 2], "texture": "#3"}, - "east": {"uv": [3, 0, 11, 2], "texture": "#3"}, - "south": {"uv": [5, 0, 13, 2], "texture": "#3"}, - "west": {"uv": [2, 0, 10, 2], "texture": "#3"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#4"}, - "down": {"uv": [4, 4, 12, 12], "texture": "#3"} - } - }, - { - "name": "Cube", - "from": [4.5, 20, 4.5], - "to": [11.5, 31, 11.5], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 15, 0]}, - "faces": { - "north": {"uv": [8, 1, 15, 12], "texture": "#3"}, - "east": {"uv": [1, 1, 8, 12], "texture": "#3"}, - "south": {"uv": [8, 1, 15, 12], "texture": "#3"}, - "west": {"uv": [1, 1, 8, 12], "texture": "#3"}, - "up": {"uv": [4, 7, 11, 14], "texture": "#3"}, - "down": {"uv": [0, 0, 7, 7], "texture": "#3"} - } - }, - { - "name": "Cube", - "from": [6, 13, -1.5], - "to": [10, 17, 17.5], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 15, 0]}, - "faces": { - "north": {"uv": [10, 8, 14, 12], "texture": "#3"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#3"}, - "south": {"uv": [10, 8, 14, 12], "texture": "#3"}, - "west": {"uv": [0, 8, 16, 12], "texture": "#3"}, - "up": {"uv": [3, 0, 7, 16], "texture": "#3"}, - "down": {"uv": [12, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "Cube", - "from": [3.5, 10, 3.5], - "to": [12.5, 20, 12.5], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 15, 0]}, - "faces": { - "north": {"uv": [4, 6, 13, 16], "texture": "#3"}, - "east": {"uv": [4, 6, 13, 16], "texture": "#3"}, - "south": {"uv": [4, 6, 13, 16], "texture": "#3"}, - "west": {"uv": [4, 6, 13, 16], "texture": "#3"}, - "up": {"uv": [4, 7, 13, 16], "texture": "#3"}, - "down": {"uv": [4, 7, 13, 16], "texture": "#3"} - } - }, - { - "name": "Cube", - "from": [3, 11, 0], - "to": [13, 20, 3], - "faces": { - "north": {"uv": [3, 3, 13, 12], "texture": "#6"}, - "east": {"uv": [0, 3, 3, 12], "texture": "#6"}, - "south": {"uv": [3, 2, 13, 11], "texture": "#5"}, - "west": {"uv": [13, 3, 16, 12], "texture": "#6"}, - "up": {"uv": [3, 0, 13, 3], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Cube", - "from": [3, 11, 13], - "to": [13, 20, 16], - "faces": { - "north": {"uv": [3, 2, 13, 11], "texture": "#5"}, - "east": {"uv": [3, 3, 0, 12], "texture": "#6"}, - "south": {"uv": [13, 3, 3, 12], "texture": "#6"}, - "west": {"uv": [16, 3, 13, 12], "texture": "#6"}, - "up": {"uv": [3, 3, 13, 0], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Cube", - "from": [1, 7, 0], - "to": [15, 11, 16], - "faces": { - "north": {"uv": [12, 1, 16, 15], "rotation": 90, "texture": "#6"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#5"}, - "south": {"uv": [12, 1, 16, 15], "rotation": 90, "texture": "#6"}, - "west": {"uv": [8, 0, 12, 16], "rotation": 90, "texture": "#5"}, - "up": {"uv": [1, 0, 15, 16], "texture": "#5"}, - "down": {"uv": [1, 0, 15, 16], "texture": "#5"} - } - }, - { - "name": "Cube", - "from": [-2, -0.2, 5], - "to": [18, 3, 11], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "east": {"uv": [5, 0, 11, 3], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "west": {"uv": [5, 0, 11, 3], "texture": "#0"}, - "up": {"uv": [0, 4, 16, 10], "texture": "#8"}, - "down": {"uv": [0, 4, 16, 10], "texture": "#8"} - } - }, - { - "name": "Cube", - "from": [-2, -0.1, 5], - "to": [18, 3, 11], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "east": {"uv": [5, 0, 11, 3], "texture": "#0"}, - "south": {"uv": [0, 0, 16, 3], "texture": "#0"}, - "west": {"uv": [5, 0, 11, 3], "texture": "#0"}, - "up": {"uv": [0, 4, 16, 10], "texture": "#8"}, - "down": {"uv": [0, 4, 16, 10], "texture": "#8"} - } - }, - { - "name": "Cube", - "from": [2, 0, 2], - "to": [14, 7, 14], - "faces": { - "north": {"uv": [0, 0, 12, 7], "texture": "#4"}, - "east": {"uv": [0, 0, 12, 7], "texture": "#4"}, - "south": {"uv": [0, 0, 12, 7], "texture": "#4"}, - "west": {"uv": [0, 0, 12, 7], "texture": "#4"}, - "up": {"uv": [2, 2, 14, 14], "texture": "#2"}, - "down": {"uv": [0, 4, 12, 16], "texture": "#8"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -47, 0], - "translation": [0, 2.5, 1.5], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, -47, 0], - "translation": [0, 2.5, 1.5], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, -69, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 97, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 135, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, -90, 0], - "translation": [0, -1.5, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "Pipe", - "origin": [8.5, 14.5, 8], - "children": [0, 1, 2, 3] - }, - { - "name": "Connector", - "origin": [8, 8, 8], - "children": [4, 5, 6] - }, - { - "name": "Base", - "origin": [8, 8, 8], - "children": [7, 8, 9] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/schematicannon/pipe.json b/src/main/resources/assets/create/models/block/schematicannon/pipe.json deleted file mode 100644 index c9ec6c817..000000000 --- a/src/main/resources/assets/create/models/block/schematicannon/pipe.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "3": "block/anvil", - "4": "create:block/schematicannon", - "particle": "block/spruce_log" - }, - "elements": [ - { - "name": "Cube", - "from": [4, 30, 4], - "to": [12, 32, 12], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 15, 0]}, - "faces": { - "north": {"uv": [6, 0, 14, 2], "texture": "#3"}, - "east": {"uv": [3, 0, 11, 2], "texture": "#3"}, - "south": {"uv": [5, 0, 13, 2], "texture": "#3"}, - "west": {"uv": [2, 0, 10, 2], "texture": "#3"}, - "up": {"uv": [0, 8, 8, 16], "texture": "#4"}, - "down": {"uv": [4, 4, 12, 12], "texture": "#3"} - } - }, - { - "name": "Cube", - "from": [4.5, 20, 4.5], - "to": [11.5, 31, 11.5], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 15, 0]}, - "faces": { - "north": {"uv": [8, 1, 15, 12], "texture": "#3"}, - "east": {"uv": [1, 1, 8, 12], "texture": "#3"}, - "south": {"uv": [8, 1, 15, 12], "texture": "#3"}, - "west": {"uv": [1, 1, 8, 12], "texture": "#3"}, - "up": {"uv": [4, 7, 11, 14], "texture": "#3"}, - "down": {"uv": [0, 0, 7, 7], "texture": "#3"} - } - }, - { - "name": "Cube", - "from": [6, 13, -1.5], - "to": [10, 17, 17.5], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 15, 0]}, - "faces": { - "north": {"uv": [10, 8, 14, 12], "texture": "#3"}, - "east": {"uv": [0, 0, 16, 4], "texture": "#3"}, - "south": {"uv": [10, 8, 14, 12], "texture": "#3"}, - "west": {"uv": [0, 8, 16, 12], "texture": "#3"}, - "up": {"uv": [3, 0, 7, 16], "texture": "#3"}, - "down": {"uv": [12, 0, 16, 16], "texture": "#3"} - } - }, - { - "name": "Cube", - "from": [3.5, 10, 3.5], - "to": [12.5, 20, 12.5], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 15, 0]}, - "faces": { - "north": {"uv": [4, 6, 13, 16], "texture": "#3"}, - "east": {"uv": [4, 6, 13, 16], "texture": "#3"}, - "south": {"uv": [4, 6, 13, 16], "texture": "#3"}, - "west": {"uv": [4, 6, 13, 16], "texture": "#3"}, - "up": {"uv": [4, 7, 13, 16], "texture": "#3"}, - "down": {"uv": [4, 7, 13, 16], "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "Pipe", - "origin": [8.5, 14.5, 8], - "children": [0, 1, 2, 3] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/seat.json b/src/main/resources/assets/create/models/block/seat.json deleted file mode 100644 index 7c162fe22..000000000 --- a/src/main/resources/assets/create/models/block/seat.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/seat/bottom", - "1": "create:block/seat/top_red", - "2": "create:block/seat/side_red", - "particle": "#1" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 8, 16], - "faces": { - "north": {"uv": [0, 8, 16, 16], "texture": "#2"}, - "east": {"uv": [0, 8, 16, 16], "texture": "#2"}, - "south": {"uv": [0, 8, 16, 16], "texture": "#2"}, - "west": {"uv": [0, 8, 16, 16], "texture": "#2"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 2, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sequenced_gearshift/idle.json b/src/main/resources/assets/create/models/block/sequenced_gearshift/idle.json deleted file mode 100644 index d1ea1860b..000000000 --- a/src/main/resources/assets/create/models/block/sequenced_gearshift/idle.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/brass_gearbox", - "4": "create:block/sequenced_gearshift", - "particle": "create:block/brass_gearbox" - }, - "elements": [ - { - "name": "Bottom", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#4"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [1, 2, 15, 14], "rotation": 180, "texture": "#1"}, - "south": {"uv": [1, 2, 15, 14], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"}, - "west": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "SideWest", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "south": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "SideEast", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "block", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sequenced_gearshift/item.json b/src/main/resources/assets/create/models/block/sequenced_gearshift/item.json deleted file mode 100644 index c6aecc103..000000000 --- a/src/main/resources/assets/create/models/block/sequenced_gearshift/item.json +++ /dev/null @@ -1,107 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/brass_gearbox", - "4": "create:block/sequenced_gearshift", - "particle": "create:block/brass_gearbox", - "1_0": "create:block/axis", - "1_1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 6, 0], - "to": [10, 10, 16], - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1_1"}, - "east": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1_0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1_1"}, - "west": {"uv": [6, 0, 10, 16], "rotation": 270, "texture": "#1_0"}, - "up": {"uv": [6, 0, 10, 16], "texture": "#1_0"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 180, "texture": "#1_0"} - } - }, - { - "name": "Bottom", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#1"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#4"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#1"} - } - }, - { - "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], - "faces": { - "north": {"uv": [1, 2, 15, 14], "rotation": 180, "texture": "#1"}, - "south": {"uv": [1, 2, 15, 14], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Top", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#1"}, - "west": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#4"} - } - }, - { - "name": "SideWest", - "from": [0, 2, 0], - "to": [2, 14, 16], - "faces": { - "north": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "south": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#4"} - } - }, - { - "name": "SideEast", - "from": [14, 2, 0], - "to": [16, 14, 16], - "faces": { - "north": {"uv": [14, 2, 16, 14], "rotation": 180, "texture": "#1"}, - "east": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 2, 2, 14], "rotation": 180, "texture": "#1"}, - "west": {"uv": [0, 2, 16, 14], "rotation": 180, "texture": "#1"} - } - } - ], - "groups": [ - { - "name": "encased_shaft", - "origin": [8, 8, 8], - "children": [ - { - "name": "shaft", - "origin": [8, 8, 8], - "children": [0] - } - ] - }, - { - "name": "idle", - "origin": [8, 8, 8], - "children": [ - { - "name": "block", - "origin": [8, 8, 8], - "children": [1, 2, 3, 4, 5] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_1.json b/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_1.json deleted file mode 100644 index d9500154c..000000000 --- a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/sequenced_gearshift/idle", - "textures": { - "4": "create:block/sequenced_gearshift_1" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_2.json b/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_2.json deleted file mode 100644 index 3b3464707..000000000 --- a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_2.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/sequenced_gearshift/idle", - "textures": { - "4": "create:block/sequenced_gearshift_2" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_3.json b/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_3.json deleted file mode 100644 index 5f65339f1..000000000 --- a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_3.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/sequenced_gearshift/idle", - "textures": { - "4": "create:block/sequenced_gearshift_3" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_4.json b/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_4.json deleted file mode 100644 index 11d2776ad..000000000 --- a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_4.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/sequenced_gearshift/idle", - "textures": { - "4": "create:block/sequenced_gearshift_4" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_5.json b/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_5.json deleted file mode 100644 index cbd98c912..000000000 --- a/src/main/resources/assets/create/models/block/sequenced_gearshift/seq_5.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/sequenced_gearshift/idle", - "textures": { - "4": "create:block/sequenced_gearshift_5" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/shaft.json b/src/main/resources/assets/create/models/block/shaft.json deleted file mode 100644 index c873dafe2..000000000 --- a/src/main/resources/assets/create/models/block/shaft.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "parent": "block/block", - "textures": { - "particle": "create:block/axis", - "0": "create:block/axis", - "1": "create:block/axis_top" - }, - "elements": [ - { - "name": "Axis", - "from": [ 6.0, 0.0, 6.0 ], - "to": [ 10.0, 16.0, 10.0 ], - "shade": false, - "faces": { - "north": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 16.0 ] }, - "east": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 16.0 ] }, - "south": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 16.0 ] }, - "west": { "texture": "#0", "uv": [ 6.0, 0.0, 10.0, 16.0 ] }, - "up": { "texture": "#1", "uv": [ 6.0, 6.0, 10.0, 10.0 ] }, - "down": { "texture": "#1", "uv": [ 6.0, 6.0, 10.0, 10.0 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/shaft_half.json b/src/main/resources/assets/create/models/block/shaft_half.json deleted file mode 100644 index b8659e7f9..000000000 --- a/src/main/resources/assets/create/models/block/shaft_half.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "create:block/axis_top", - "particle": "create:block/axis" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 6, 8], - "to": [10, 10, 16], - "shade": false, - "faces": { - "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 0, 10, 8], "rotation": 270, "texture": "#0"}, - "south": {"uv": [6, 6, 10, 10], "texture": "#1"}, - "west": {"uv": [6, 0, 10, 8], "rotation": 90, "texture": "#0"}, - "up": {"uv": [6, 0, 10, 8], "rotation": 180, "texture": "#0"}, - "down": {"uv": [6, 0, 10, 8], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/smart_chute/block.json b/src/main/resources/assets/create/models/block/smart_chute/block.json deleted file mode 100644 index 8977344b6..000000000 --- a/src/main/resources/assets/create/models/block/smart_chute/block.json +++ /dev/null @@ -1,194 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/chute_diagonal", - "2": "create:block/brass_funnel_plating", - "3": "create:block/brass_block", - "5": "create:block/brass_funnel_tall", - "13": "create:block/chute", - "particle": "block/hopper_outside" - }, - "elements": [ - { - "from": [3, 9, 1], - "to": [13, 16, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 16, -3]}, - "faces": { - "north": {"uv": [9.5, 0, 14.5, 3.5], "texture": "#13"}, - "south": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "up": {"uv": [1, 0, 6, 1], "texture": "#13"} - } - }, - { - "from": [3, 9, 13], - "to": [13, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [5, 16, 19]}, - "faces": { - "north": {"uv": [9.5, 0, 14.5, 4], "texture": "#13"}, - "south": {"uv": [9.5, 0, 14.5, 3.5], "texture": "#13"}, - "up": {"uv": [1, 0, 6, 1], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [1, 9, 1], - "to": [3, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, - "faces": { - "north": {"uv": [14.5, 0, 15.5, 3.5], "texture": "#13"}, - "east": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "south": {"uv": [8.5, 0, 9.5, 3.5], "texture": "#13"}, - "west": {"uv": [8.5, 0, 15.5, 3.5], "texture": "#13"}, - "up": {"uv": [0, 0, 1, 7], "texture": "#13"} - } - }, - { - "from": [13, 9, 1], - "to": [15, 16, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 16, 7]}, - "faces": { - "north": {"uv": [8.5, 0, 9.5, 3.5], "texture": "#13"}, - "east": {"uv": [8.5, 0, 15.5, 3.5], "texture": "#13"}, - "south": {"uv": [14.5, 0, 15.5, 3.5], "texture": "#13"}, - "west": {"uv": [8.5, 0, 15.5, 4], "texture": "#13"}, - "up": {"uv": [0, 0, 1, 7], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 5, 16], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 11, 15]}, - "faces": { - "north": {"uv": [0, 5.5, 8, 8], "texture": "#1"}, - "east": {"uv": [0, 5.5, 8, 8], "texture": "#1"}, - "south": {"uv": [0, 5.5, 8, 8], "texture": "#1"}, - "west": {"uv": [0, 5.5, 8, 8], "texture": "#1"}, - "up": {"uv": [8, 8, 16, 16], "rotation": 180, "texture": "#13"}, - "down": {"uv": [8, 8, 16, 16], "rotation": 180, "texture": "#13"} - } - }, - { - "from": [13, 1, 2], - "to": [14, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, - "faces": { - "north": {"uv": [9, 4, 9.5, 7.5], "texture": "#13"}, - "east": {"uv": [9, 4, 15, 7.5], "texture": "#13"}, - "south": {"uv": [14.5, 4, 15, 7.5], "texture": "#13"}, - "west": {"uv": [9, 4, 15, 8], "texture": "#13"}, - "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [2, 1, 2], - "to": [3, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 9]}, - "faces": { - "north": {"uv": [14.5, 4, 15, 7.5], "texture": "#13"}, - "east": {"uv": [9, 4, 15, 8], "texture": "#13"}, - "south": {"uv": [9, 4, 9.5, 7.5], "texture": "#13"}, - "west": {"uv": [9, 4, 15, 7.5], "texture": "#13"}, - "down": {"uv": [9, 7.5, 15, 8], "rotation": 90, "texture": "#13"} - } - }, - { - "from": [3, 1, 13], - "to": [13, 8, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 20]}, - "faces": { - "north": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, - "south": {"uv": [9.5, 4, 14.5, 7.5], "texture": "#13"}, - "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} - } - }, - { - "from": [3, 1, 2], - "to": [13, 8, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9]}, - "faces": { - "north": {"uv": [9.5, 4, 14.5, 7.5], "texture": "#13"}, - "south": {"uv": [9.5, 4, 14.5, 8], "texture": "#13"}, - "down": {"uv": [9.5, 7.5, 14.5, 8], "texture": "#13"} - } - }, - { - "from": [3, 13, 3], - "to": [13, 14, 13], - "faces": { - "up": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"}, - "down": {"uv": [9.5, 9.5, 14.5, 14.5], "texture": "#13"} - } - }, - { - "from": [0, 9, 0], - "to": [2, 15, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 8]}, - "faces": { - "north": {"uv": [7, 0, 8, 3], "texture": "#2"}, - "south": {"uv": [0, 0, 1, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 8, 3], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 16], "texture": "#3"}, - "down": {"uv": [0, 0, 2, 16], "texture": "#3"} - } - }, - { - "from": [2, 9, 0], - "to": [14, 15, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 8]}, - "faces": { - "north": {"uv": [1, 0, 7, 3], "texture": "#2"}, - "east": {"uv": [7, 0, 8, 3], "texture": "#2"}, - "west": {"uv": [0, 0, 1, 3], "texture": "#2"}, - "up": {"uv": [0, 2, 2, 14], "rotation": 90, "texture": "#3"}, - "down": {"uv": [0, 2, 2, 14], "rotation": 270, "texture": "#3"} - } - }, - { - "from": [2, 9, 14], - "to": [14, 15, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 8]}, - "faces": { - "east": {"uv": [8, 0, 7, 3], "texture": "#2"}, - "south": {"uv": [7, 0, 1, 3], "texture": "#2"}, - "west": {"uv": [1, 0, 0, 3], "texture": "#2"}, - "up": {"uv": [2, 2, 0, 14], "rotation": 90, "texture": "#3"}, - "down": {"uv": [2, 2, 0, 14], "rotation": 270, "texture": "#3"} - } - }, - { - "from": [14, 9, 0], - "to": [16, 15, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 22, 8]}, - "faces": { - "north": {"uv": [0, 0, 1, 3], "texture": "#2"}, - "east": {"uv": [8, 0, 0, 3], "texture": "#2"}, - "south": {"uv": [7, 0, 8, 3], "texture": "#2"}, - "up": {"uv": [2, 0, 0, 16], "texture": "#3"}, - "down": {"uv": [2, 0, 0, 16], "texture": "#3"} - } - }, - { - "from": [1, 7, 1], - "to": [15, 9, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [21, 18, 9]}, - "faces": { - "north": {"uv": [1, 4, 15, 6], "texture": "#5"}, - "east": {"uv": [1, 4, 15, 6], "texture": "#5"}, - "south": {"uv": [1, 4, 15, 6], "texture": "#5"}, - "west": {"uv": [1, 4, 15, 6], "texture": "#5"}, - "down": {"uv": [1, 1, 15, 15], "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "ChuteTop", - "origin": [9, 16, -7], - "children": [0, 1, 2, 3, 4] - }, - { - "name": "ChuteBase", - "origin": [8, 8, -7], - "children": [5, 6, 7, 8] - }, 9, 10, 11, 12, 13, 14] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/smart_chute/block_powered.json b/src/main/resources/assets/create/models/block/smart_chute/block_powered.json deleted file mode 100644 index 1a2636b1b..000000000 --- a/src/main/resources/assets/create/models/block/smart_chute/block_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/smart_chute/block", - "textures": { - "5": "create:block/brass_funnel_tall_powered" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/smart_fluid_pipe/block.json b/src/main/resources/assets/create/models/block/smart_fluid_pipe/block.json deleted file mode 100644 index fcce391f5..000000000 --- a/src/main/resources/assets/create/models/block/smart_fluid_pipe/block.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_pipe", - "2": "create:block/smart_pipe_1", - "3": "create:block/smart_pipe_2", - "5": "create:block/brass_block", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "from": [3, 3, 3], - "to": [13, 13, 13], - "faces": { - "north": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#5"}, - "east": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#2"}, - "south": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#5"}, - "west": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#2"}, - "up": {"uv": [3, 3, 13, 13], "rotation": 270, "texture": "#2"}, - "down": {"uv": [3, 3, 13, 13], "rotation": 90, "texture": "#2"} - } - }, - { - "from": [4, 4, 0], - "to": [12, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]}, - "faces": { - "east": {"uv": [0, 8, 4, 6], "rotation": 270, "texture": "#1"}, - "west": {"uv": [0, 8, 4, 6], "rotation": 90, "texture": "#1"}, - "up": {"uv": [0, 8, 4, 6], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0, 8, 4, 6], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [4, 4, 12], - "to": [12, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 16]}, - "faces": { - "east": {"uv": [0, 6, 4, 8], "rotation": 270, "texture": "#1"}, - "west": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#1"}, - "up": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [4.5, 5, 4.15], - "to": [11.5, 12, 13.15], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 13]}, - "faces": { - "north": {"uv": [0, 7, 7, 14], "texture": "#3"}, - "east": {"uv": [0, 0, 9, 7], "texture": "#3"}, - "west": {"uv": [0, 0, 9, 7], "rotation": 180, "texture": "#3"}, - "up": {"uv": [0, 0, 9, 7], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 0, 9, 7], "rotation": 90, "texture": "#3"} - } - }, - { - "from": [3.9, 4.4, 5.15], - "to": [12.1, 12.6, 7.15], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 13]}, - "faces": { - "north": {"uv": [8, 8, 16, 16], "texture": "#3"}, - "east": {"uv": [14, 0, 16, 8], "texture": "#3"}, - "south": {"uv": [8, 8, 16, 16], "texture": "#3"}, - "west": {"uv": [14, 0, 16, 8], "rotation": 180, "texture": "#3"}, - "up": {"uv": [14, 0, 16, 8], "rotation": 270, "texture": "#3"}, - "down": {"uv": [14, 0, 16, 8], "rotation": 90, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/smart_fluid_pipe/item.json b/src/main/resources/assets/create/models/block/smart_fluid_pipe/item.json deleted file mode 100644 index 460f0e833..000000000 --- a/src/main/resources/assets/create/models/block/smart_fluid_pipe/item.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "1": "create:block/fluid_pipe", - "2": "create:block/smart_pipe_1", - "3": "create:block/smart_pipe_2" - }, - "elements": [ - { - "from": [3, 3, 3], - "to": [13, 13, 13], - "faces": { - "north": {"uv": [8, 9, 9, 10], "rotation": 180, "texture": "#3"}, - "east": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#2"}, - "south": {"uv": [8, 9, 9, 10], "rotation": 180, "texture": "#3"}, - "west": {"uv": [3, 3, 13, 13], "rotation": 180, "texture": "#2"}, - "up": {"uv": [3, 3, 13, 13], "rotation": 270, "texture": "#2"}, - "down": {"uv": [3, 3, 13, 13], "rotation": 90, "texture": "#2"} - } - }, - { - "from": [4, 4, 0], - "to": [12, 12, 4], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]}, - "faces": { - "east": {"uv": [0, 8, 4, 6], "rotation": 270, "texture": "#1"}, - "west": {"uv": [0, 8, 4, 6], "rotation": 90, "texture": "#1"}, - "up": {"uv": [0, 8, 4, 6], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0, 8, 4, 6], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [4, 4, 12], - "to": [12, 12, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 16]}, - "faces": { - "east": {"uv": [0, 6, 4, 8], "rotation": 270, "texture": "#1"}, - "west": {"uv": [0, 6, 4, 8], "rotation": 90, "texture": "#1"}, - "up": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#1"}, - "down": {"uv": [0, 6, 4, 8], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [3, 3, 0], - "to": [13, 13, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 0]}, - "faces": { - "north": {"uv": [6, 0, 11, 5], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 6, 11, 5], "rotation": 90, "texture": "#1"}, - "south": {"uv": [6, 0, 11, 5], "rotation": 180, "texture": "#1"}, - "west": {"uv": [6, 6, 11, 5], "rotation": 90, "texture": "#1"}, - "up": {"uv": [6, 6, 11, 5], "rotation": 180, "texture": "#1"}, - "down": {"uv": [6, 6, 11, 5], "texture": "#1"} - } - }, - { - "from": [3, 3, 14], - "to": [13, 13, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 16]}, - "faces": { - "north": {"uv": [11, 0, 6, 5], "rotation": 180, "texture": "#1"}, - "east": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#1"}, - "south": {"uv": [11, 0, 6, 5], "rotation": 180, "texture": "#1"}, - "west": {"uv": [6, 5, 11, 6], "rotation": 90, "texture": "#1"}, - "up": {"uv": [6, 5, 11, 6], "rotation": 180, "texture": "#1"}, - "down": {"uv": [6, 5, 11, 6], "texture": "#1"} - } - }, - { - "from": [4.5, 5, 4.15], - "to": [11.5, 12, 13.15], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 13]}, - "faces": { - "north": {"uv": [0, 7, 7, 14], "texture": "#3"}, - "east": {"uv": [0, 0, 9, 7], "texture": "#3"}, - "west": {"uv": [0, 0, 9, 7], "rotation": 180, "texture": "#3"}, - "up": {"uv": [0, 0, 9, 7], "rotation": 270, "texture": "#3"}, - "down": {"uv": [0, 0, 9, 7], "rotation": 90, "texture": "#3"} - } - }, - { - "from": [3.9, 4.4, 5.15], - "to": [12.1, 12.6, 7.15], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 12, 13]}, - "faces": { - "north": {"uv": [8, 8, 16, 16], "texture": "#3"}, - "east": {"uv": [14, 0, 16, 8], "texture": "#3"}, - "south": {"uv": [8, 8, 16, 16], "texture": "#3"}, - "west": {"uv": [14, 0, 16, 8], "rotation": 180, "texture": "#3"}, - "up": {"uv": [14, 0, 16, 8], "rotation": 270, "texture": "#3"}, - "down": {"uv": [14, 0, 16, 8], "rotation": 90, "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/spout/block.json b/src/main/resources/assets/create/models/block/spout/block.json deleted file mode 100644 index 66ac7929e..000000000 --- a/src/main/resources/assets/create/models/block/spout/block.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/spout", - "particle": "create:block/copper_plating" - }, - "elements": [ - { - "name": "Top 1", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [1, 0, 7, 1], "texture": "#0"}, - "east": {"uv": [1, 0, 7, 1], "texture": "#0"}, - "south": {"uv": [1, 0, 7, 1], "texture": "#0"}, - "west": {"uv": [1, 0, 7, 1], "texture": "#0"}, - "up": {"uv": [1, 9, 7, 15], "texture": "#0"} - } - }, - { - "name": "Top 2", - "from": [1, 12, 1], - "to": [15, 14, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 6, -24]}, - "faces": { - "north": {"uv": [0.5, 1, 7.5, 2], "texture": "#0"}, - "east": {"uv": [0.5, 1, 7.5, 2], "texture": "#0"}, - "south": {"uv": [0.5, 1, 7.5, 2], "texture": "#0"}, - "west": {"uv": [0.5, 1, 7.5, 2], "texture": "#0"}, - "up": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0"}, - "down": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0"} - } - }, - { - "name": "Bottom", - "from": [2, 0, 2], - "to": [14, 2, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [1, 7, 7, 8], "texture": "#0"}, - "east": {"uv": [1, 7, 7, 8], "texture": "#0"}, - "south": {"uv": [1, 7, 7, 8], "texture": "#0"}, - "west": {"uv": [1, 7, 7, 8], "texture": "#0"}, - "down": {"uv": [9, 9, 15, 15], "texture": "#0"} - } - }, - { - "name": "Bottom 2", - "from": [1, 2, 1], - "to": [15, 4, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -4, -24]}, - "faces": { - "north": {"uv": [0.5, 6, 7.5, 7], "texture": "#0"}, - "east": {"uv": [1, 6, 7.5, 7], "texture": "#0"}, - "south": {"uv": [0.5, 6, 7.5, 7], "texture": "#0"}, - "west": {"uv": [0.5, 6, 7.5, 7], "texture": "#0"}, - "up": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#0"}, - "down": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0"} - } - }, - { - "name": "Window", - "from": [2, 4, 6], - "to": [2, 12, 10], - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "east": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "west": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#0"} - } - }, - { - "name": "Window", - "from": [6, 4, 2], - "to": [10, 12, 2], - "faces": { - "north": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "south": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#0"} - } - }, - { - "name": "Window", - "from": [14, 4, 6], - "to": [14, 12, 10], - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "east": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "west": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Window", - "from": [6, 4, 14], - "to": [10, 12, 14], - "faces": { - "north": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "south": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "SideLeft", - "from": [1, 4, 1], - "to": [2, 12, 6], - "faces": { - "east": {"uv": [5, 2, 7.5, 6], "texture": "#0"}, - "south": {"uv": [7, 4.5, 7.5, 5], "texture": "#0"}, - "west": {"uv": [0.5, 2, 3, 6], "texture": "#0"} - } - }, - { - "name": "SideLeft", - "from": [10, 4, 1], - "to": [15, 12, 2], - "faces": { - "north": {"uv": [0.5, 2, 3, 6], "texture": "#0"}, - "south": {"uv": [5, 2, 7.5, 6], "texture": "#0"}, - "west": {"uv": [7, 4.5, 7.5, 5], "texture": "#0"} - } - }, - { - "name": "SideLeft", - "from": [14, 4, 10], - "to": [15, 12, 15], - "faces": { - "north": {"uv": [7, 4.5, 7.5, 5], "texture": "#0"}, - "east": {"uv": [0.5, 2, 3, 6], "texture": "#0"}, - "west": {"uv": [5, 2, 7.5, 6], "texture": "#0"} - } - }, - { - "name": "SideLeft", - "from": [1, 4, 14], - "to": [6, 12, 15], - "faces": { - "north": {"uv": [5, 2, 7.5, 6], "texture": "#0"}, - "east": {"uv": [7, 4.5, 7.5, 5], "texture": "#0"}, - "south": {"uv": [0.5, 2, 3, 6], "texture": "#0"} - } - }, - { - "name": "SideRight", - "from": [1, 4, 10], - "to": [2, 12, 15], - "faces": { - "north": {"uv": [7, 3.5, 7.5, 4], "texture": "#0"}, - "east": {"uv": [0.5, 2, 3, 6], "texture": "#0"}, - "west": {"uv": [5, 2, 7.5, 6], "texture": "#0"} - } - }, - { - "name": "SideRight", - "from": [1, 4, 1], - "to": [6, 12, 2], - "faces": { - "north": {"uv": [5, 2, 7.5, 6], "texture": "#0"}, - "east": {"uv": [7, 3.5, 7.5, 4], "texture": "#0"}, - "south": {"uv": [0.5, 2, 3, 6], "texture": "#0"} - } - }, - { - "name": "SideRight", - "from": [14, 4, 1], - "to": [15, 12, 6], - "faces": { - "east": {"uv": [5, 2, 7.5, 6], "texture": "#0"}, - "south": {"uv": [7, 3.5, 7.5, 4], "texture": "#0"}, - "west": {"uv": [0.5, 2, 3, 6], "texture": "#0"} - } - }, - { - "name": "SideRight", - "from": [10, 4, 14], - "to": [15, 12, 15], - "faces": { - "north": {"uv": [0.5, 2, 3, 6], "texture": "#0"}, - "south": {"uv": [5, 2, 7.5, 6], "texture": "#0"}, - "west": {"uv": [7, 3.5, 7.5, 4], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/spout/bottom.json b/src/main/resources/assets/create/models/block/spout/bottom.json deleted file mode 100644 index b8cc7a9e1..000000000 --- a/src/main/resources/assets/create/models/block/spout/bottom.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/spout" - }, - "elements": [ - { - "from": [6, -7, 6], - "to": [10, -4, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [16.5, 3.5, 16.5]}, - "faces": { - "north": {"uv": [12, 0.5, 14, 2], "texture": "#0"}, - "east": {"uv": [12, 0.5, 14, 2], "texture": "#0"}, - "south": {"uv": [12, 0.5, 14, 2], "texture": "#0"}, - "west": {"uv": [12, 0.5, 14, 2], "texture": "#0"}, - "down": {"uv": [14, 0, 16, 2], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/spout/item.json b/src/main/resources/assets/create/models/block/spout/item.json deleted file mode 100644 index ab0a476b0..000000000 --- a/src/main/resources/assets/create/models/block/spout/item.json +++ /dev/null @@ -1,264 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/spout", - "particle": "create:block/copper_plating" - }, - "elements": [ - { - "name": "Top 1", - "from": [2, 14, 2], - "to": [14, 16, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [1, 0, 7, 1], "texture": "#0", "cullface": "north"}, - "east": {"uv": [1, 0, 7, 1], "texture": "#0", "cullface": "east"}, - "south": {"uv": [1, 0, 7, 1], "texture": "#0", "cullface": "south"}, - "west": {"uv": [1, 0, 7, 1], "texture": "#0", "cullface": "west"}, - "up": {"uv": [1, 9, 7, 15], "texture": "#0"} - } - }, - { - "name": "Top 2", - "from": [1, 12, 1], - "to": [15, 14, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 6, -24]}, - "faces": { - "north": {"uv": [0.5, 1, 7.5, 2], "texture": "#0", "cullface": "north"}, - "east": {"uv": [0.5, 1, 7.5, 2], "texture": "#0", "cullface": "east"}, - "south": {"uv": [0.5, 1, 7.5, 2], "texture": "#0", "cullface": "south"}, - "west": {"uv": [0.5, 1, 7.5, 2], "texture": "#0", "cullface": "west"}, - "up": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0"}, - "down": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0", "cullface": "down"} - } - }, - { - "name": "Bottom", - "from": [2, 0, 2], - "to": [14, 2, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, - "faces": { - "north": {"uv": [1, 7, 7, 8], "texture": "#0", "cullface": "north"}, - "east": {"uv": [1, 7, 7, 8], "texture": "#0", "cullface": "east"}, - "south": {"uv": [1, 7, 7, 8], "texture": "#0", "cullface": "south"}, - "west": {"uv": [1, 7, 7, 8], "texture": "#0", "cullface": "west"}, - "down": {"uv": [9, 9, 15, 15], "texture": "#0", "cullface": "down"} - } - }, - { - "name": "Bottom 2", - "from": [1, 2, 1], - "to": [15, 4, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7, -4, -24]}, - "faces": { - "north": {"uv": [0.5, 6, 7.5, 7], "texture": "#0", "cullface": "north"}, - "east": {"uv": [1, 6, 7.5, 7], "texture": "#0", "cullface": "east"}, - "south": {"uv": [0.5, 6, 7.5, 7], "texture": "#0", "cullface": "south"}, - "west": {"uv": [0.5, 6, 7.5, 7], "texture": "#0", "cullface": "west"}, - "up": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#0"}, - "down": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#0", "cullface": "down"} - } - }, - { - "name": "Window", - "from": [2, 4, 6], - "to": [2, 12, 10], - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "east": {"uv": [9, 0, 11, 4], "texture": "#0", "cullface": "west"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "west": {"uv": [9, 0, 11, 4], "texture": "#0", "cullface": "west"}, - "up": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#0"} - } - }, - { - "name": "Window", - "from": [6, 4, 2], - "to": [10, 12, 2], - "faces": { - "north": {"uv": [9, 0, 11, 4], "texture": "#0", "cullface": "west"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0", "cullface": "west"}, - "south": {"uv": [9, 0, 11, 4], "texture": "#0", "cullface": "west"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0", "cullface": "west"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#0"} - } - }, - { - "name": "Window", - "from": [14, 4, 6], - "to": [14, 12, 10], - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#0", "cullface": "west"}, - "east": {"uv": [9, 0, 11, 4], "texture": "#0", "cullface": "west"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#0", "cullface": "west"}, - "west": {"uv": [9, 0, 11, 4], "texture": "#0", "cullface": "west"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "Window", - "from": [6, 4, 14], - "to": [10, 12, 14], - "faces": { - "north": {"uv": [9, 0, 11, 4], "texture": "#0", "cullface": "west"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0", "cullface": "west"}, - "south": {"uv": [9, 0, 11, 4], "texture": "#0", "cullface": "west"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0", "cullface": "west"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "SideLeft", - "from": [1, 4, 1], - "to": [2, 12, 6], - "faces": { - "east": {"uv": [5, 2, 7.5, 6], "texture": "#0", "cullface": "west"}, - "south": {"uv": [7, 4.5, 7.5, 5], "texture": "#0", "cullface": "west"}, - "west": {"uv": [0.5, 2, 3, 6], "texture": "#0", "cullface": "west"} - } - }, - { - "name": "SideLeft", - "from": [10, 4, 1], - "to": [15, 12, 2], - "faces": { - "north": {"uv": [0.5, 2, 3, 6], "texture": "#0", "cullface": "west"}, - "south": {"uv": [5, 2, 7.5, 6], "texture": "#0", "cullface": "west"}, - "west": {"uv": [7, 4.5, 7.5, 5], "texture": "#0", "cullface": "west"} - } - }, - { - "name": "SideLeft", - "from": [14, 4, 10], - "to": [15, 12, 15], - "faces": { - "north": {"uv": [7, 4.5, 7.5, 5], "texture": "#0", "cullface": "west"}, - "east": {"uv": [0.5, 2, 3, 6], "texture": "#0", "cullface": "west"}, - "west": {"uv": [5, 2, 7.5, 6], "texture": "#0", "cullface": "west"} - } - }, - { - "name": "SideLeft", - "from": [1, 4, 14], - "to": [6, 12, 15], - "faces": { - "north": {"uv": [5, 2, 7.5, 6], "texture": "#0", "cullface": "west"}, - "east": {"uv": [7, 4.5, 7.5, 5], "texture": "#0", "cullface": "west"}, - "south": {"uv": [0.5, 2, 3, 6], "texture": "#0", "cullface": "west"} - } - }, - { - "name": "SideRight", - "from": [1, 4, 10], - "to": [2, 12, 15], - "faces": { - "north": {"uv": [7, 3.5, 7.5, 4], "texture": "#0", "cullface": "west"}, - "east": {"uv": [0.5, 2, 3, 6], "texture": "#0", "cullface": "west"}, - "west": {"uv": [5, 2, 7.5, 6], "texture": "#0", "cullface": "west"} - } - }, - { - "name": "SideRight", - "from": [1, 4, 1], - "to": [6, 12, 2], - "faces": { - "north": {"uv": [5, 2, 7.5, 6], "texture": "#0", "cullface": "west"}, - "east": {"uv": [7, 3.5, 7.5, 4], "texture": "#0", "cullface": "west"}, - "south": {"uv": [0.5, 2, 3, 6], "texture": "#0", "cullface": "west"} - } - }, - { - "name": "SideRight", - "from": [14, 4, 1], - "to": [15, 12, 6], - "faces": { - "east": {"uv": [5, 2, 7.5, 6], "texture": "#0", "cullface": "west"}, - "south": {"uv": [7, 3.5, 7.5, 4], "texture": "#0", "cullface": "west"}, - "west": {"uv": [0.5, 2, 3, 6], "texture": "#0", "cullface": "west"} - } - }, - { - "name": "SideRight", - "from": [10, 4, 14], - "to": [15, 12, 15], - "faces": { - "north": {"uv": [0.5, 2, 3, 6], "texture": "#0", "cullface": "west"}, - "south": {"uv": [5, 2, 7.5, 6], "texture": "#0", "cullface": "west"}, - "west": {"uv": [7, 3.5, 7.5, 4], "texture": "#0", "cullface": "west"} - } - }, - { - "from": [4, -2, 4], - "to": [12, 0, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [15.5, 5.5, 15.5]}, - "faces": { - "north": {"uv": [12, 6, 16, 7], "texture": "#0"}, - "east": {"uv": [12, 6, 16, 7], "texture": "#0"}, - "south": {"uv": [12, 6, 16, 7], "texture": "#0"}, - "west": {"uv": [12, 6, 16, 7], "texture": "#0"}, - "down": {"uv": [12, 2, 16, 6], "texture": "#0"} - } - }, - { - "from": [5, -4, 5], - "to": [11, -2, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [16.5, 3.5, 16.5]}, - "faces": { - "north": {"uv": [12.5, 7, 15.5, 8], "texture": "#0"}, - "east": {"uv": [12.5, 7, 15.5, 8], "texture": "#0"}, - "south": {"uv": [12.5, 7, 15.5, 8], "texture": "#0"}, - "west": {"uv": [12.5, 7, 15.5, 8], "texture": "#0"}, - "down": {"uv": [12.5, 2.5, 15.5, 5.5], "texture": "#0"} - } - }, - { - "from": [6, -7, 6], - "to": [10, -4, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [16.5, 3.5, 16.5]}, - "faces": { - "north": {"uv": [12, 0.5, 14, 2], "texture": "#0"}, - "east": {"uv": [12, 0.5, 14, 2], "texture": "#0"}, - "south": {"uv": [12, 0.5, 14, 2], "texture": "#0"}, - "west": {"uv": [12, 0.5, 14, 2], "texture": "#0"}, - "down": {"uv": [14, 0, 16, 2], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 1, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/spout/middle.json b/src/main/resources/assets/create/models/block/spout/middle.json deleted file mode 100644 index a0c3e53e7..000000000 --- a/src/main/resources/assets/create/models/block/spout/middle.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/spout" - }, - "elements": [ - { - "from": [5, -4, 5], - "to": [11, -2, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [16.5, 3.5, 16.5]}, - "faces": { - "north": {"uv": [12.5, 7, 15.5, 8], "texture": "#0"}, - "east": {"uv": [12.5, 7, 15.5, 8], "texture": "#0"}, - "south": {"uv": [12.5, 7, 15.5, 8], "texture": "#0"}, - "west": {"uv": [12.5, 7, 15.5, 8], "texture": "#0"}, - "down": {"uv": [12.5, 2.5, 15.5, 5.5], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/spout/top.json b/src/main/resources/assets/create/models/block/spout/top.json deleted file mode 100644 index ccbd45888..000000000 --- a/src/main/resources/assets/create/models/block/spout/top.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/spout" - }, - "elements": [ - { - "from": [4, -2, 4], - "to": [12, 0, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [15.5, 5.5, 15.5]}, - "faces": { - "north": {"uv": [12, 6, 16, 7], "texture": "#0"}, - "east": {"uv": [12, 6, 16, 7], "texture": "#0"}, - "south": {"uv": [12, 6, 16, 7], "texture": "#0"}, - "west": {"uv": [12, 6, 16, 7], "texture": "#0"}, - "down": {"uv": [12, 2, 16, 6], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sticker/block.json b/src/main/resources/assets/create/models/block/sticker/block.json deleted file mode 100644 index 1ece065f4..000000000 --- a/src/main/resources/assets/create/models/block/sticker/block.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "block/piston_bottom", - "1": "block/piston_inner", - "3": "create:block/sticker", - "4": "create:block/sticker_side", - "particle": "block/piston_bottom" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 8, 16], - "faces": { - "north": {"uv": [0, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [0, 8, 16, 16], "texture": "#4"}, - "south": {"uv": [0, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [0, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "from": [0, 8, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 8], "texture": "#4"}, - "east": {"uv": [0, 0, 16, 8], "texture": "#4"}, - "south": {"uv": [0, 0, 16, 8], "texture": "#4"}, - "west": {"uv": [0, 0, 16, 8], "texture": "#4"}, - "up": {"uv": [0, 0, 8, 8], "texture": "#3"} - } - }, - { - "from": [0, 8, -0.95], - "to": [16, 16, 0.05], - "faces": { - "south": {"uv": [0, 0, 16, 8], "texture": "#4"} - } - }, - { - "from": [0, 8, 15.95], - "to": [16, 16, 16.95], - "faces": { - "north": {"uv": [0, 0, 16, 8], "texture": "#4"} - } - }, - { - "from": [15.95, 8, 0], - "to": [16.95, 16, 16], - "faces": { - "west": {"uv": [0, 0, 16, 8], "texture": "#4"} - } - }, - { - "from": [-0.95, 8, 0], - "to": [0.05, 16, 16], - "faces": { - "east": {"uv": [16, 0, 0, 8], "texture": "#4"} - } - } - ], - "groups": [ - { - "name": "Piston Block", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sticker/block_powered.json b/src/main/resources/assets/create/models/block/sticker/block_powered.json deleted file mode 100644 index ee3244b46..000000000 --- a/src/main/resources/assets/create/models/block/sticker/block_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/sticker/block", - "textures": { - "4": "create:block/sticker_side_powered" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sticker/head.json b/src/main/resources/assets/create/models/block/sticker/head.json deleted file mode 100644 index b2b808c18..000000000 --- a/src/main/resources/assets/create/models/block/sticker/head.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "2": "block/piston_side", - "3": "create:block/sticker", - "particle": "block/piston_bottom" - }, - "elements": [ - { - "from": [1, 8, 1], - "to": [15, 13, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 16, 9]}, - "faces": { - "north": {"uv": [8.5, 0, 15.5, 2.5], "texture": "#3"}, - "east": {"uv": [8.5, 0, 15.5, 2.5], "texture": "#3"}, - "south": {"uv": [8.5, 0, 15.5, 2.5], "texture": "#3"}, - "west": {"uv": [8.5, 0, 15.5, 2.5], "texture": "#3"}, - "up": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#3"}, - "down": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#3"} - } - }, - { - "from": [6, 3, 6], - "to": [10, 8, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [14, 11, 14]}, - "faces": { - "north": {"uv": [0, 0, 5, 4], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 0, 5, 4], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 5, 4], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 0, 5, 4], "rotation": 90, "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "Piston Head", - "origin": [14, 28, 14], - "children": [0, 1] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sticker/item.json b/src/main/resources/assets/create/models/block/sticker/item.json deleted file mode 100644 index c8c48ec47..000000000 --- a/src/main/resources/assets/create/models/block/sticker/item.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "block/piston_bottom", - "1": "block/piston_inner", - "2": "block/piston_side", - "3": "create:block/sticker", - "4": "create:block/sticker_side", - "particle": "block/piston_bottom" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 8, 16], - "faces": { - "north": {"uv": [0, 8, 16, 16], "texture": "#4"}, - "east": {"uv": [0, 8, 16, 16], "texture": "#4"}, - "south": {"uv": [0, 8, 16, 16], "texture": "#4"}, - "west": {"uv": [0, 8, 16, 16], "texture": "#4"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "down": {"uv": [0, 0, 16, 16], "texture": "#0"} - } - }, - { - "from": [0, 8, 0], - "to": [16, 16, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 16, 8]}, - "faces": { - "north": {"uv": [0, 0, 16, 8], "texture": "#4"}, - "east": {"uv": [0, 0, 16, 8], "texture": "#4"}, - "south": {"uv": [0, 0, 16, 8], "texture": "#4"}, - "west": {"uv": [0, 0, 16, 8], "texture": "#4"}, - "up": {"uv": [0, 0, 8, 8], "texture": "#3"} - } - }, - { - "from": [0, 8, -0.95], - "to": [16, 16, 0.05], - "faces": { - "south": {"uv": [0, 0, 16, 8], "texture": "#4"} - } - }, - { - "from": [0, 8, 15.95], - "to": [16, 16, 16.95], - "faces": { - "north": {"uv": [0, 0, 16, 8], "texture": "#4"} - } - }, - { - "from": [16, 8, 0.05], - "to": [17, 16, 16.05], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, - "faces": { - "west": {"uv": [0, 0, 16, 8], "texture": "#4"} - } - }, - { - "from": [-1, 8, -0.05], - "to": [0, 16, 15.95], - "rotation": {"angle": 0, "axis": "y", "origin": [7, 8, 8]}, - "faces": { - "east": {"uv": [0, 0, 16, 8], "texture": "#4"} - } - }, - { - "from": [1, 9, 1], - "to": [15, 14, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 17, 9]}, - "faces": { - "north": {"uv": [8.5, 0, 15.5, 2.5], "texture": "#3"}, - "east": {"uv": [8.5, 0, 15.5, 2.5], "texture": "#3"}, - "south": {"uv": [8.5, 0, 15.5, 2.5], "texture": "#3"}, - "west": {"uv": [8.5, 0, 15.5, 2.5], "texture": "#3"}, - "up": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#3"}, - "down": {"uv": [0.5, 8.5, 7.5, 15.5], "texture": "#3"} - } - }, - { - "from": [6, 4, 6], - "to": [10, 9, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [14, 12, 14]}, - "faces": { - "north": {"uv": [0, 0, 5, 4], "rotation": 90, "texture": "#2"}, - "east": {"uv": [0, 0, 5, 4], "rotation": 90, "texture": "#2"}, - "south": {"uv": [0, 0, 5, 4], "rotation": 90, "texture": "#2"}, - "west": {"uv": [0, 0, 5, 4], "rotation": 90, "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "Piston Block", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5] - }, - { - "name": "Piston Head", - "origin": [14, 28, 14], - "children": [6, 7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sticker/sticker.bbmodel b/src/main/resources/assets/create/models/block/sticker/sticker.bbmodel deleted file mode 100644 index 0a341360e..000000000 --- a/src/main/resources/assets/create/models/block/sticker/sticker.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.6","creation_time":1614729493,"model_format":"java_block","box_uv":false},"name":"","parent":"","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[0,0,0],"to":[16,8,16],"autouv":0,"color":6,"locked":false,"origin":[8,8,8],"faces":{"north":{"uv":[0,8,16,16],"texture":4},"east":{"uv":[0,8,16,16],"texture":4},"south":{"uv":[0,8,16,16],"texture":4},"west":{"uv":[0,8,16,16],"texture":4},"up":{"uv":[0,0,16,16],"texture":1},"down":{"uv":[0,0,16,16],"texture":0}},"uuid":"9189c687-ec3f-0483-bb94-8eb1610bb0f7"},{"name":"cube","from":[0,8,0],"to":[16,16,16],"autouv":0,"color":6,"locked":false,"origin":[8,16,8],"faces":{"north":{"uv":[0,0,16,8],"texture":4},"east":{"uv":[0,0,16,8],"texture":4},"south":{"uv":[0,0,16,8],"texture":4},"west":{"uv":[0,0,16,8],"texture":4},"up":{"uv":[0,0,8,8],"texture":3},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"c915a8a9-e0c7-0d13-5267-953429b366f5"},{"name":"cube","from":[1,12,1],"to":[15,17,15],"autouv":0,"color":1,"locked":false,"origin":[9,20,9],"faces":{"north":{"uv":[8.5,0,15.5,2.5],"texture":3},"east":{"uv":[8.5,0,15.5,2.5],"texture":3},"south":{"uv":[8.5,0,15.5,2.5],"texture":3},"west":{"uv":[8.5,0,15.5,2.5],"texture":3},"up":{"uv":[8.5,8.5,15.5,15.5],"texture":3},"down":{"uv":[0.5,8.5,7.5,15.5],"texture":3}},"uuid":"838bfc74-3754-755e-97b9-dc8f49cb4cc4"},{"name":"cube","from":[6,7,6],"to":[10,12,10],"autouv":0,"color":6,"locked":false,"origin":[14,15,14],"faces":{"north":{"uv":[0,0,5,4],"rotation":90,"texture":2},"east":{"uv":[0,0,5,4],"rotation":90,"texture":2},"south":{"uv":[0,0,5,4],"rotation":90,"texture":2},"west":{"uv":[0,0,5,4],"rotation":90,"texture":2},"up":{"uv":[0,0,4,4],"texture":null},"down":{"uv":[0,0,4,4],"texture":null}},"uuid":"e380ceaa-57a4-7e47-45d8-238ff048b7cd"}],"outliner":[{"name":"Piston Block","origin":[8,8,8],"uuid":"d35280bd-4aab-971b-e553-24b5af733d45","export":true,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["9189c687-ec3f-0483-bb94-8eb1610bb0f7","c915a8a9-e0c7-0d13-5267-953429b366f5"]},{"name":"Piston Head","origin":[14,28,14],"uuid":"6c824c11-53c5-d20a-8857-1867915ba892","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["838bfc74-3754-755e-97b9-dc8f49cb4cc4","e380ceaa-57a4-7e47-45d8-238ff048b7cd"]}],"textures":[{"path":"F:\\Create\\Attacher\\Sticker Textures\\piston_bottom.png","name":"piston_bottom.png","folder":"Sticker Textures","namespace":"","id":"0","particle":true,"visible":true,"mode":"bitmap","saved":true,"uuid":"fd815e7a-cd5f-a1d8-9ed5-64cee6940ea0","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABZUlEQVQ4T4VTsYqDQBRcm1RGqyMgyRVBAlbCGdsjET/Y0s6QxibcBwSrMwjhKo2Vjce8u9HVC9xrdnk7Ozvz3lsjjuNe/UZd17Lruk7WxWKhbNvm8Z8VeAME9nKp3vZ7ATRNIysOv+535e52wx75l9VKSC3LUlmWKSMMwz6KIkmQoLheZa+Dy7IUQuY3m81IEASBsPJVXASAAVUg1dUAUxTFj4LX9XoAAwTw++Gg2rYVS7w8V/l5uynD9/3e3W4n0ngJr0A2Vs/zBFNV1aB0QoCX8YJpmhMQlDCgiLUAaZ7nYxdI8KwLjuOInXkhJwSsuN7CZzm9kGIBc3A8HtXH5SJe2SrOBfIMXSUKWz8eIwFAJOGg6HMxby2wAwHmAAWceySR3krd4mDBdV1RCfmQjk6cT6eJJU4gcbCTpunYBRzQ91w6lbAetJMkyTiJ+txDMsda/xMo3NPPBBC+ML4v4r8vrGO+ARsXKQWAtEm4AAAAAElFTkSuQmCC"},{"path":"F:\\Create\\Attacher\\Sticker Textures\\piston_inner.png","name":"piston_inner.png","folder":"Sticker Textures","namespace":"","id":"1","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"b94d7326-7db9-4e58-dfb6-169b5ecac9fd","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABs0lEQVQ4T4VTsWoCQRR81wiCelW00QhyCFZK1MImqFj4E8HfEC0sRPE3JD9gaaeksZFgLYdgFCGmOhUUG8O85D3vYkK22b13s7PzZmeNSqVyoe/hOI4sdTZN86bmxhsgMINBesjluL7b7XgG2cf7O1nJpK5Rv4tECKShUIhGoxEZ+Xz+Ui6XuSAEstkNXq1WTCgksVjsSpDNZplVNgIkioTUns89akBu2/aXgvtoVPuEZIAfi0U6HA4kJ6PuVgnM23pNRjqdvliJBPeGAWmBQIDC4TD5/X4lXi6XvN5sNqpUCQqFws3mXq/ncb9er9NisVBFOHAymRDfgmVZ7AEGpD3VatRqtfjb5/Px3Gw2aTgceoxUAlyjOA4jq9UqdTodVXA6najdbtNzv+8xkluAglKpRK/TKW+AWZlMhrrdrqeFRqNBs9mMjURWoNTZ768EQIMESlKpFMXjcSU4Ho+03W75VmQAqwTIAZh/hkUSJydCnTul2gJMxEDSECBc48t4zGokfZJAwYEMpupb+Ct97jiLT6ghL4PB4JpENxCS3bGWfzDu18eE08/ns975f08YeMF8ApBNGgW9XdHyAAAAAElFTkSuQmCC"},{"path":"F:\\Create\\Attacher\\Sticker Textures\\piston_side.png","name":"piston_side.png","folder":"Sticker Textures","namespace":"","id":"2","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"db3f52e8-b2d3-9368-ac4d-62cc93c62134","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB0ElEQVQ4T4VSwWoaURQ9A8WmzTg2NNFENIIdEl0UIcZFFw2R+An5gf6BX+GfuHfpJijtQkiiELqx0iyMIlHTwowGEglMOc/c8U0J5G7evHvvnHvOeddot9tet9tFbHYGxgfrvToZxv43SE3Ps/bL+4JMJgOjWq16/X4fn0MXuJ062N6K+ADuzimk5icBvDM3cP7XRiqVglGpVLzJZILc5rXeg821N/i5KIC1k0Tfr909PKnvq7tPiEajMMrlssfE4/AHPlrrAZC5daDuptvBH/c+UHub+LqUWSqVFADDcRx1LhYLdYZCIUQiK0kBhOd+I5fLeXY6rWpbsRiSySRc18XvXk/dp+OxOrPZrOoZjUZqEPM3wyF8AHtvD5ZlwTTNQNPR8bE/eD6fYzAY+KCtVmspIRIOQwA4XeRwCvPxeBz6z8I2AECaolcovpQjYEACGRSLRXQuL33NnHBweKiYMC+hs6RHzmy2lEAAaZap9IOhG0qDJQjsA+TzeWWgGCQaKYl5ASED3R/1CmRg27Yq0DRS50t8bzYDkgRU+ghWr9dXr6Dr/p+6MBE/ZF9qtRqMQqHg7SYSappOWZzW5chySV+j0VgCsInry9VlvLa+es8/A5wUOjLC82gAAAAASUVORK5CYII="},{"path":"F:\\Create\\Attacher\\Sticker Textures\\sticker.png","name":"sticker.png","folder":"Sticker Textures","namespace":"","id":"3","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"d37f6ff6-f6ff-f4aa-4402-5bccef23d620","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADh0lEQVRYR+1XPUxTURQ+TQu8wiu00ECJCkaJxhgwymRAY4IDYTNGBxiMJG4OEBclcTJBFwODmwmGAQYd3AiLiTEqgwECLtVUtETTgi0t5UEf8sgz3ymneW35Tetgwlneve/de853v3v+nu35wBNzYnaWhl6M2ugA0n2707zY1ER3eu/bOl+2mYpaQh7Vty8NMS1MurZOozff2GxQdFDjYkX2Tk5Omg8/PCBfg4NBKKpCuqbzMhir9fpI14kUhSgUCVM4YNCjlsfU3NxsO9CpdzreyMiIGQwG6b36lty+TV4WD9vZiN/vp5HocMb7Vu0K1dfXU1dXV2EA9Pf3m4uLi3TO+428ioMBOFUPLbjaCMAaiz/xPKnFKKIbNBM5SdXV1dTX11cYAD09PSaMqompNEnRxCodu3CdACz7fcnRS7xucHCwMAD25Xk7LCqIDxwCOGTgkIH/m4FCFKO8GChEOc4LQD6bC7GXU7FUs/aGGOtMbqyRs6iUphKneX7GOZ2qcEWl/BwPeNLVDPO8GhIoQDUrT0ywcl9lyojTrXLZhKDMiiTjGg+/Gue4mmHcPdZhSiMi61R7BQ+1zWXCGE8RNCtoVIY6xlLVcPzZLfPjlJ+utpzlNWvJVFORNrrFiMznfszTieN11H53mPffe9dtoguKL0XJ2NgkR5Gd1NIyMowMNemJdExPLw+lALweuGGGfkVYKejfTXANofgSucsUutb7Kg2AT7uaoJWVGNX66tMqcFKwEwoH+R2+5QAAA1Ba665kAAADwTVAhPbaI172AzCAsRWAKIVBiDSo6APJodD3wBeSxnVHBqAUMv15ns431mUQAVDyXdiyXoG3ooZ+/p4jpbgsYx8DIOKmVARrI8sLlL4CaxQIAzAWX03tAt0Y4wkGsqNAfECcCy239RqsiPQ/q+SurOKueV8AQD/ACAN7AbDeNQyLD1hBbHsFOKHVB4Ru2SgMYC5gsp0ww4iSSTuAwQecxa5cBrKjQJwwvLTGeUGcUa5guyiQMMz2AWFBwME5c3wAAKwM7BWG20bB1omzo0B0ye+Yy+Uhb1U5O2XaB6xhyGGXlXhESanTzklqtzCEkyEZqWXlnBfwxDuIJKkcJ0QqRrqFw4Fua7rFxlOOmRxSdkzFhp76D1QVIkMntaSGtPUFzgWY45mTirPDENasxai1JkDRxAqD2C4K8i5Gu935v/72F6SUUT/55o1qAAAAAElFTkSuQmCC"},{"path":"F:\\Create\\Attacher\\Sticker Textures\\sticker_side.png","name":"sticker_side.png","folder":"Sticker Textures","namespace":"","id":"4","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"b6008321-379a-f043-b8b9-8285c50d2ce8","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACGElEQVQ4T5WSS2gTYRSFz2wCgUxSayeToqMRxyqEPDQmqEVtJAgKAdfuFFxLcdOFIqKLbkRcC3YhuHXXneKDGghJGwYC2o5IOjHNODU2j1VARu4t/zStQfSufube8537GOn+3G3Xsh08X3gp4T/i5o3rrqYqkF69WHA3N220fji49+jxP0Ee3r3jRvYrmJhQIRHpZ28L++QxEPHB/NO/Qp49mXeLhgGh4Q6qtSrelpZx9LCGs4kEbs3OjYSIcb/ULcxkTyEVS0Ei4uLSe56+3e4xZFQnwpnE4+My11+dvgBp7xIvXjrvEuTIgUlvJzTz128bIPG7Nx+4O2+Jo64wDKHiveI/AIa5xu0L+vHYCTeiKjwOBTm3bAefa5/YnQxojIR+bOeMDXsDi68/smAwGODalRleEp2YckvlmveXTJ+O4aA6ufuMva0BdF2HpmnodruoVCo4pIVZtG59R6FQ4Hez2eScPObj00vJZNJVFAXpdBrBYBCBQICLOp0OTNNkkRD3+31YlgXHttHp9eA4DqR8Pu+GZBn61BQDyH37pG12oiB4NBr1xPRNUVUUi8UdAH0IhUIsIPdSqYTLxgqMXxJaJ1PIZrPsTEaUp/d6o7ENyOVyWC6XmUoJPl29jshKFWuQED53BpFweFeX5uoqj+EBSCQg1Inowu/3Ix6PM5QWLIJqGZDJZFxxOp/Px3kxilc99CDwcM1vBi4whPcwgQ8AAAAASUVORK5CYII="},{"path":"F:\\Create\\Attacher\\Sticker Textures\\sticker_side_powered.png","name":"sticker_side_powered.png","folder":"Sticker Textures","namespace":"","id":"5","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"1c9b6770-8e6d-ef0b-3c7b-a3e4be8da6a6","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACNElEQVQ4T5WSTWgTYRCG3zU0EM2P/Vk2NQaRNo00mLQmESVoG81FTzl7U+hZxEsPFhE99CIiHgv2IHj11ptilTQQQlujQZO2iEmadtk0Nj8ohMavzJTd1hpEv9O338z7zDszK92fvC2Kqobnsy8l/Me5dfOGcCsypFcvZkWlomJzS8PUo8f/BHl4765w9sro61MgEel7YxvdtuMg4oPpp3+FzDyZFslMBrqGHSxnl/E2tYiBU25c9PsxcWeyI0Rvd+1bEePnz2HENwKJiHOJd9x9tdpgSCcnemUS9/TYOP965DKkw0Mcu3JJEOS0q9+YCfX8dX0DJJ5/857dGUPstIWDEEo+LP4DkFldYfs63es7I5yKzO3QocqbqoZc9gtXpwLUhn/Qs7/GkrqBudcLLGi1WohfG+ch0Yoplkhnjb8kEvLhpNL/+xrbWz9xwuuF2+1GvV7H51QKAy55z8G6hqvxON/L5TLHTL0WXr0UCASELMsIBoOw2+2wWq2cVKvVUM7lWKSLm80misUiNFVFrdGApmmQYrGYcNhsGBwaYgBVp9NWVSSWlvgeGR1Ft8djiOlNVhQkk8l9AD04HA4WSJUK5tNpLHz4hKwkMOE/i7FQCCvVKhcid+SiUCrtAaLRKBbTaaZSwLqzg3yhgJnMR6wd+YVn4QtwyTKcw8OGy9V8ntswAFRZh5AT3cUxiwUhnw/bXV08YP1QLgPC4bDQV2c2mzmut3K03ebvHyaTIST7B3N2AQhkNoSNVX+GAAAAAElFTkSuQmCC"}]} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/stockpile_switch.json b/src/main/resources/assets/create/models/block/stockpile_switch.json deleted file mode 100644 index 9439bb80c..000000000 --- a/src/main/resources/assets/create/models/block/stockpile_switch.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:block/brass_casing_inner", - "6": "create:block/brass_casing", - "7": "create:block/filtered_detector_top", - "indicator": "create:block/indicator/0", - "particle": "create:block/brass_casing_side", - "brass_casing": "create:block/brass_casing_side", - "end": "create:block/filtered_detector_front" - }, - "elements": [ - { - "name": "Bottom Plate", - "from": [0, 0, 0], - "to": [16, 2, 16], - "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#brass_casing"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#brass_casing"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#brass_casing"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#brass_casing"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#6"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "Top Plate", - "from": [0, 14, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [0, 0, 16, 2], "texture": "#brass_casing"}, - "east": {"uv": [0, 0, 16, 2], "texture": "#brass_casing"}, - "south": {"uv": [0, 0, 16, 2], "texture": "#brass_casing"}, - "west": {"uv": [0, 0, 16, 2], "texture": "#brass_casing"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#7"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "Center", - "from": [0.9, 2, 0.9], - "to": [15.1, 14, 15.1], - "faces": { - "north": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "east": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "south": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "west": {"uv": [0, 1, 12, 15], "rotation": 90, "texture": "#5"}, - "up": {"uv": [0, 0, 14, 14], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 14, 14], "rotation": 270, "texture": "#5"} - } - }, - { - "name": "Indicator", - "from": [3.1, 3.1, -1.9], - "to": [12.9, 12.9, 1.1], - "faces": { - "north": {"uv": [0, 0, 10, 10], "texture": "#end"}, - "east": {"uv": [10, 0, 13, 10], "texture": "#end"}, - "west": {"uv": [10, 0, 13, 10], "texture": "#end"}, - "up": {"uv": [10, 0, 13, 10], "rotation": 90, "texture": "#end"}, - "down": {"uv": [10, 0, 13, 10], "rotation": 270, "texture": "#end"} - } - }, - { - "name": "Indicator", - "from": [13, 2, 6], - "to": [16, 14, 10], - "faces": { - "north": {"uv": [0, 0, 3, 12], "texture": "#indicator"}, - "east": {"uv": [0, 0, 4, 12], "texture": "#indicator"}, - "south": {"uv": [1, 0, 4, 12], "texture": "#indicator"} - } - }, - { - "name": "Indicator", - "from": [0, 2, 6], - "to": [3, 14, 10], - "faces": { - "north": {"uv": [3, 0, 0, 12], "texture": "#indicator"}, - "south": {"uv": [4, 0, 1, 12], "texture": "#indicator"}, - "west": {"uv": [4, 0, 0, 12], "texture": "#indicator"} - } - }, - { - "name": "Indicator", - "from": [6, 2, 13], - "to": [10, 14, 16], - "faces": { - "east": {"uv": [4, 0, 1, 12], "texture": "#indicator"}, - "south": {"uv": [4, 0, 0, 12], "texture": "#indicator"}, - "west": {"uv": [3, 0, 0, 12], "texture": "#indicator"} - } - } - ], - "display": { - "gui": { - "rotation": [30, -135, 0], - "scale": [0.625, 0.625, 0.625] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/symmetry_effect/crossplane.json b/src/main/resources/assets/create/models/block/symmetry_effect/crossplane.json deleted file mode 100644 index 0fdbb9668..000000000 --- a/src/main/resources/assets/create/models/block/symmetry_effect/crossplane.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/symmetry_mirror", - "2": "create:block/brass_block" - }, - "elements": [ - { - "name": "Mirror", - "from": [4, 1, 7.5], - "to": [7, 12, 8.5], - "faces": { - "north": {"uv": [4, 1, 7, 12], "texture": "#0"}, - "east": {"uv": [3, 1, 4, 12], "texture": "#0"}, - "south": {"uv": [4, 1, 7, 12], "texture": "#0"}, - "west": {"uv": [12, 1, 13, 12], "texture": "#0"}, - "up": {"uv": [4, 1, 7, 2], "texture": "#0"}, - "down": {"uv": [4, 14, 7, 15], "texture": "#0"} - } - }, - { - "name": "rod_left_bottom", - "from": [1, 3, 7], - "to": [3, 4, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "up": {"uv": [13, 13, 15, 15], "texture": "#2"}, - "down": {"uv": [13, 13, 15, 15], "texture": "#2"} - } - }, - { - "name": "rod_left_bottom", - "from": [13, 3, 7], - "to": [15, 4, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "up": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#2"}, - "down": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "rod_left_top", - "from": [1, 12, 7], - "to": [3, 13, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "up": {"uv": [13, 13, 15, 15], "texture": "#2"}, - "down": {"uv": [13, 13, 15, 15], "texture": "#2"} - } - }, - { - "name": "rod_left_top", - "from": [13, 12, 7], - "to": [15, 13, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "up": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#2"}, - "down": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "rod_left", - "from": [1, 4, 7.5], - "to": [3, 12, 8.5], - "shade": false, - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [3, 5, 1, 13], "texture": "#2"}, - "east": {"uv": [8, 4, 9, 12], "texture": "#2"}, - "south": {"uv": [1, 3, 3, 11], "texture": "#2"}, - "west": {"uv": [1, 6, 2, 14], "texture": "#2"} - } - }, - { - "name": "rod_left", - "from": [13, 4, 7.5], - "to": [15, 12, 8.5], - "shade": false, - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [1, 3, 3, 11], "texture": "#2"}, - "east": {"uv": [1, 6, 2, 14], "texture": "#2"}, - "south": {"uv": [3, 5, 1, 13], "texture": "#2"}, - "west": {"uv": [8, 4, 9, 12], "texture": "#2"} - } - }, - { - "name": "CrossMirror", - "from": [7.5, 4, 9.5], - "to": [8.5, 15, 12.5], - "faces": { - "north": {"uv": [4, 1, 5, 12], "texture": "#0"}, - "east": {"uv": [3, 1, 6, 12], "texture": "#0"}, - "south": {"uv": [4, 1, 5, 12], "texture": "#0"}, - "west": {"uv": [9, 1, 12, 12], "texture": "#0"}, - "up": {"uv": [3, 3, 4, 6], "texture": "#0"}, - "down": {"uv": [5, 9, 6, 12], "texture": "#0"} - } - }, - { - "name": "Mirror II", - "from": [9, 3, 7.5], - "to": [12, 14, 8.5], - "faces": { - "north": {"uv": [4, 1, 7, 12], "texture": "#0"}, - "east": {"uv": [3, 1, 4, 12], "texture": "#0"}, - "south": {"uv": [4, 1, 7, 12], "texture": "#0"}, - "west": {"uv": [12, 1, 13, 12], "texture": "#0"}, - "up": {"uv": [4, 1, 7, 2], "texture": "#0"}, - "down": {"uv": [4, 14, 7, 15], "texture": "#0"} - } - }, - { - "name": "CrossMirror II", - "from": [7.5, 2, 3.5], - "to": [8.5, 13, 6.5], - "faces": { - "north": {"uv": [4, 1, 5, 12], "texture": "#0"}, - "east": {"uv": [3, 1, 6, 12], "texture": "#0"}, - "south": {"uv": [4, 3, 5, 14], "texture": "#0"}, - "west": {"uv": [9, 2, 12, 13], "texture": "#0"}, - "up": {"uv": [4, 3, 5, 6], "texture": "#0"}, - "down": {"uv": [4, 8, 5, 11], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/symmetry_effect/plane.json b/src/main/resources/assets/create/models/block/symmetry_effect/plane.json deleted file mode 100644 index 5717ed96f..000000000 --- a/src/main/resources/assets/create/models/block/symmetry_effect/plane.json +++ /dev/null @@ -1,105 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/symmetry_mirror", - "1_2": "create:block/brass_block" - }, - "elements": [ - { - "name": "Mirror", - "from": [4, 1, 7.5], - "to": [12, 15, 8.5], - "faces": { - "north": {"uv": [4, 1, 12, 15], "texture": "#0"}, - "east": {"uv": [3, 1, 4, 15], "texture": "#0"}, - "south": {"uv": [4, 1, 12, 15], "texture": "#0"}, - "west": {"uv": [12, 1, 13, 15], "texture": "#0"}, - "up": {"uv": [4, 1, 12, 2], "texture": "#0"}, - "down": {"uv": [4, 14, 12, 15], "texture": "#0"} - } - }, - { - "name": "rod_left_bottom", - "from": [1, 3, 7], - "to": [3, 4, 9], - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "up": {"uv": [13, 13, 15, 15], "texture": "#1_2"}, - "down": {"uv": [13, 13, 15, 15], "texture": "#1_2"} - } - }, - { - "name": "rod_left_bottom", - "from": [13, 3, 7], - "to": [15, 4, 9], - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "up": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#1_2"}, - "down": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#1_2"} - } - }, - { - "name": "rod_left_top", - "from": [1, 12, 7], - "to": [3, 13, 9], - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "up": {"uv": [13, 13, 15, 15], "texture": "#1_2"}, - "down": {"uv": [13, 13, 15, 15], "texture": "#1_2"} - } - }, - { - "name": "rod_left_top", - "from": [13, 12, 7], - "to": [15, 13, 9], - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#1_2"}, - "up": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#1_2"}, - "down": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#1_2"} - } - }, - { - "name": "rod_left", - "from": [1, 4, 7.5], - "to": [3, 12, 8.5], - "shade": false, - "faces": { - "north": {"uv": [3, 5, 1, 13], "texture": "#1_2"}, - "east": {"uv": [8, 4, 9, 12], "texture": "#1_2"}, - "south": {"uv": [1, 3, 3, 11], "texture": "#1_2"}, - "west": {"uv": [1, 6, 2, 14], "texture": "#1_2"} - } - }, - { - "name": "rod_left", - "from": [13, 4, 7.5], - "to": [15, 12, 8.5], - "shade": false, - "faces": { - "north": {"uv": [1, 3, 3, 11], "texture": "#1_2"}, - "east": {"uv": [1, 6, 2, 14], "texture": "#1_2"}, - "south": {"uv": [3, 5, 1, 13], "texture": "#1_2"}, - "west": {"uv": [8, 4, 9, 12], "texture": "#1_2"} - } - } - ], - "groups": [0, - { - "name": "crossplane", - "origin": [8, 8, 8], - "children": [1, 2, 3, 4, 5, 6] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/symmetry_effect/tripleplane.json b/src/main/resources/assets/create/models/block/symmetry_effect/tripleplane.json deleted file mode 100644 index 99450d7ca..000000000 --- a/src/main/resources/assets/create/models/block/symmetry_effect/tripleplane.json +++ /dev/null @@ -1,178 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/symmetry_mirror", - "2": "create:block/brass_block" - }, - "elements": [ - { - "name": "Mirror", - "from": [6.5, 1, 10.5], - "to": [9.5, 12, 11.5], - "faces": { - "north": {"uv": [4, 1, 7, 12], "texture": "#0"}, - "east": {"uv": [3, 1, 4, 12], "texture": "#0"}, - "south": {"uv": [4, 1, 7, 12], "texture": "#0"}, - "west": {"uv": [12, 1, 13, 12], "texture": "#0"}, - "up": {"uv": [4, 1, 7, 2], "texture": "#0"}, - "down": {"uv": [4, 14, 7, 15], "texture": "#0"} - } - }, - { - "name": "CrossMirror", - "from": [4.5, 2, 6.5], - "to": [5.5, 13, 9.5], - "faces": { - "north": {"uv": [4, 1, 5, 12], "texture": "#0"}, - "east": {"uv": [3, 1, 6, 12], "texture": "#0"}, - "south": {"uv": [4, 1, 5, 12], "texture": "#0"}, - "west": {"uv": [9, 1, 12, 12], "texture": "#0"}, - "up": {"uv": [3, 3, 4, 6], "texture": "#0"}, - "down": {"uv": [5, 9, 6, 12], "texture": "#0"} - } - }, - { - "name": "Mirror II", - "from": [6.5, 3, 4.5], - "to": [9.5, 14, 5.5], - "faces": { - "north": {"uv": [4, 1, 7, 12], "texture": "#0"}, - "east": {"uv": [3, 1, 4, 12], "texture": "#0"}, - "south": {"uv": [4, 1, 7, 12], "texture": "#0"}, - "west": {"uv": [12, 1, 13, 12], "texture": "#0"}, - "up": {"uv": [4, 1, 7, 2], "texture": "#0"}, - "down": {"uv": [4, 14, 7, 15], "texture": "#0"} - } - }, - { - "name": "CrossMirror II", - "from": [10.5, 4, 6.5], - "to": [11.5, 15, 9.5], - "faces": { - "north": {"uv": [4, 1, 5, 12], "texture": "#0"}, - "east": {"uv": [3, 1, 6, 12], "texture": "#0"}, - "south": {"uv": [4, 3, 5, 14], "texture": "#0"}, - "west": {"uv": [9, 2, 12, 13], "texture": "#0"}, - "up": {"uv": [4, 3, 5, 6], "texture": "#0"}, - "down": {"uv": [4, 8, 5, 11], "texture": "#0"} - } - }, - { - "name": "Cube", - "from": [7.5, 6, -0.5], - "to": [8.5, 10, 3.5], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [4, 1, 5, 5], "texture": "#0"}, - "east": {"uv": [3, 1, 7, 5], "texture": "#0"}, - "south": {"uv": [4, 3, 5, 7], "texture": "#0"}, - "west": {"uv": [9, 2, 13, 6], "texture": "#0"}, - "up": {"uv": [4, 3, 5, 7], "texture": "#0"}, - "down": {"uv": [4, 8, 5, 12], "texture": "#0"} - } - }, - { - "name": "Cube", - "from": [7.5, 6, 12.5], - "to": [8.5, 10, 16.5], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [4, 1, 5, 5], "texture": "#0"}, - "east": {"uv": [3, 1, 7, 5], "texture": "#0"}, - "south": {"uv": [4, 3, 5, 7], "texture": "#0"}, - "west": {"uv": [9, 2, 13, 6], "texture": "#0"}, - "up": {"uv": [4, 3, 5, 7], "texture": "#0"}, - "down": {"uv": [4, 8, 5, 12], "texture": "#0"} - } - }, - { - "name": "rod_left_bottom", - "from": [1, 3, 7], - "to": [3, 4, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "up": {"uv": [13, 13, 15, 15], "texture": "#2"}, - "down": {"uv": [13, 13, 15, 15], "texture": "#2"} - } - }, - { - "name": "rod_left_bottom", - "from": [13, 3, 7], - "to": [15, 4, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "up": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#2"}, - "down": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "rod_left_top", - "from": [1, 12, 7], - "to": [3, 13, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "up": {"uv": [13, 13, 15, 15], "texture": "#2"}, - "down": {"uv": [13, 13, 15, 15], "texture": "#2"} - } - }, - { - "name": "rod_left_top", - "from": [13, 12, 7], - "to": [15, 13, 9], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#2"}, - "up": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#2"}, - "down": {"uv": [13, 13, 15, 15], "rotation": 180, "texture": "#2"} - } - }, - { - "name": "rod_left", - "from": [1, 4, 7.5], - "to": [3, 12, 8.5], - "shade": false, - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [3, 5, 1, 13], "texture": "#2"}, - "east": {"uv": [8, 4, 9, 12], "texture": "#2"}, - "south": {"uv": [1, 3, 3, 11], "texture": "#2"}, - "west": {"uv": [1, 6, 2, 14], "texture": "#2"} - } - }, - { - "name": "rod_left", - "from": [13, 4, 7.5], - "to": [15, 12, 8.5], - "shade": false, - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [1, 3, 3, 11], "texture": "#2"}, - "east": {"uv": [1, 6, 2, 14], "texture": "#2"}, - "south": {"uv": [3, 5, 1, 13], "texture": "#2"}, - "west": {"uv": [8, 4, 9, 12], "texture": "#2"} - } - } - ], - "groups": [0, 1, 2, 3, 4, 5, - { - "name": "crossplane", - "origin": [8, 8, 8], - "children": [6, 7, 8, 9, 10, 11] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/turntable.json b/src/main/resources/assets/create/models/block/turntable.json deleted file mode 100644 index c8b67cb35..000000000 --- a/src/main/resources/assets/create/models/block/turntable.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:block/axis", - "1": "block/stripped_spruce_log", - "2": "block/stripped_spruce_log_top", - "3": "create:block/axis_top", - "5": "create:block/gearbox_top", - "6": "create:block/encased_chain_drive", - "particle": "block/stripped_spruce_log" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 7, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 9, 10, 16], "texture": "#0"}, - "east": {"uv": [6, 9, 10, 16], "texture": "#0"}, - "south": {"uv": [6, 9, 10, 16], "texture": "#0"}, - "west": {"uv": [6, 9, 10, 16], "texture": "#0"}, - "down": {"uv": [6, 6, 10, 10], "texture": "#3"} - } - }, - { - "name": "GearCaseInner", - "from": [1, 5.9, 1], - "to": [15, 7.9, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.9, 8]}, - "faces": { - "north": {"uv": [1, 1, 15, 3], "texture": "#6"}, - "east": {"uv": [1, 1, 15, 3], "texture": "#6"}, - "south": {"uv": [1, 1, 15, 3], "texture": "#6"}, - "west": {"uv": [1, 1, 15, 3], "texture": "#6"}, - "up": {"uv": [1, 1, 15, 15], "texture": "#5"}, - "down": {"uv": [1, 1, 15, 15], "texture": "#2"} - } - }, - { - "name": "GearCaseInner", - "from": [1, 3.9, 1], - "to": [15, 5.9, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.9, 8]}, - "faces": { - "north": {"uv": [1, 3, 15, 5], "texture": "#6"}, - "east": {"uv": [1, 3, 15, 5], "texture": "#6"}, - "south": {"uv": [1, 3, 15, 5], "texture": "#6"}, - "west": {"uv": [1, 3, 15, 5], "texture": "#6"}, - "up": {"uv": [1, 1, 15, 15], "texture": "#2"}, - "down": {"uv": [1, 1, 15, 15], "texture": "#1"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/valve_handle.json b/src/main/resources/assets/create/models/block/valve_handle.json deleted file mode 100644 index c5b9b3258..000000000 --- a/src/main/resources/assets/create/models/block/valve_handle.json +++ /dev/null @@ -1,365 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "particle": "create:block/oxidized/copper_block_0", - "3": "create:block/valve_handle/valve_handle_copper" - }, - "elements": [ - { - "name": "WheelMid", - "from": [5.5, 0, 5.5], - "to": [10.5, 4, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [14, -7, 14]}, - "faces": { - "north": {"uv": [0, 5, 5, 9], "texture": "#3"}, - "east": {"uv": [0, 5, 5, 9], "texture": "#3"}, - "south": {"uv": [0, 5, 5, 9], "texture": "#3"}, - "west": {"uv": [0, 5, 5, 9], "texture": "#3"}, - "up": {"uv": [0, 0, 5, 5], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 0, 5, 5], "texture": "#3"} - } - }, - { - "name": "Nubbin", - "from": [6.5, 4, 6.5], - "to": [9.5, 5, 9.5], - "rotation": {"angle": 0, "axis": "y", "origin": [15.5, 11.5, 15.5]}, - "faces": { - "north": {"uv": [1, 1, 4, 2], "texture": "#3"}, - "east": {"uv": [1, 3, 4, 4], "rotation": 180, "texture": "#3"}, - "south": {"uv": [1, 3, 4, 4], "texture": "#3"}, - "west": {"uv": [1, 1, 2, 4], "rotation": 90, "texture": "#3"}, - "up": {"uv": [1, 1, 4, 4], "texture": "#3"} - } - }, - { - "name": "BranchNorthTop", - "from": [6.5, 2.8888, 12.3314], - "to": [9.5, 5.8888, 14.3314], - "rotation": {"angle": -45, "axis": "x", "origin": [7.14142, 4.75147, 12.11726]}, - "faces": { - "north": {"uv": [4, 8, 5, 9], "texture": "#3"}, - "east": {"uv": [1, 6, 4, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#3"}, - "west": {"uv": [1, 6, 4, 8], "rotation": 270, "texture": "#3"}, - "up": {"uv": [1, 6, 4, 8], "texture": "#3"}, - "down": {"uv": [1, 6, 4, 8], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "BranchNorthMid", - "from": [7, 3.3888, 9.3314], - "to": [9, 5.3888, 12.3314], - "rotation": {"angle": -45, "axis": "x", "origin": [7.14142, 4.75147, 12.11726]}, - "faces": { - "east": {"uv": [5, 8, 8, 10], "texture": "#3"}, - "west": {"uv": [5, 8, 8, 10], "rotation": 180, "texture": "#3"}, - "up": {"uv": [5, 8, 8, 10], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5, 8, 8, 10], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "BranchNorthBottom", - "from": [6.5, 2.8888, 7.3314], - "to": [9.5, 5.8888, 9.3314], - "rotation": {"angle": -45, "axis": "x", "origin": [7.14142, 4.75147, 12.11726]}, - "faces": { - "east": {"uv": [1, 6, 4, 8], "rotation": 270, "texture": "#3"}, - "south": {"uv": [4, 8, 5, 9], "texture": "#3"}, - "west": {"uv": [1, 6, 4, 8], "rotation": 90, "texture": "#3"}, - "down": {"uv": [1, 6, 4, 8], "texture": "#3"} - } - }, - { - "name": "WheelNorth", - "from": [5, 5, 12.8], - "to": [11, 8, 15], - "rotation": {"angle": 0, "axis": "y", "origin": [7.14142, 4.75147, 12.11726]}, - "faces": { - "north": {"uv": [5, 5, 11, 8], "rotation": 180, "texture": "#3"}, - "east": {"uv": [9, 4, 10, 5], "rotation": 270, "texture": "#3"}, - "south": {"uv": [5, 2, 11, 5], "texture": "#3"}, - "west": {"uv": [9, 4, 10, 5], "rotation": 180, "texture": "#3"}, - "up": {"uv": [5, 0, 11, 2], "rotation": 180, "texture": "#3"}, - "down": {"uv": [5, 0, 11, 2], "texture": "#3"} - } - }, - { - "name": "WheelNorthEast", - "from": [3.5888, 5.1, 6.9846], - "to": [5.5888, 7.9, 12.64145], - "rotation": {"angle": 45, "axis": "y", "origin": [7.14142, 4.75147, 12.11726]}, - "faces": { - "east": {"uv": [5, 5, 11, 8], "rotation": 180, "texture": "#3"}, - "west": {"uv": [5, 2, 11, 5], "texture": "#3"}, - "up": {"uv": [5, 0, 11, 2], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5, 0, 11, 2], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "BranchEastTop", - "from": [1, 5, 6.5], - "to": [3, 8, 9.5], - "rotation": {"angle": -45, "axis": "z", "origin": [1, 5, 8]}, - "faces": { - "north": {"uv": [1, 6, 4, 8], "rotation": 270, "texture": "#3"}, - "east": {"uv": [4, 8, 5, 9], "texture": "#3"}, - "south": {"uv": [1, 6, 4, 8], "rotation": 90, "texture": "#3"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#3"}, - "up": {"uv": [1, 6, 4, 8], "rotation": 90, "texture": "#3"}, - "down": {"uv": [1, 6, 4, 8], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "BranchEastMid", - "from": [3, 5.5, 7], - "to": [6, 7.5, 9], - "rotation": {"angle": -45, "axis": "z", "origin": [1, 5, 8]}, - "faces": { - "north": {"uv": [5, 8, 8, 10], "rotation": 180, "texture": "#3"}, - "south": {"uv": [5, 8, 8, 10], "texture": "#3"}, - "up": {"uv": [5, 8, 8, 10], "texture": "#3"}, - "down": {"uv": [5, 8, 8, 10], "texture": "#3"} - } - }, - { - "name": "BranchEastBottom", - "from": [6, 5, 6.5], - "to": [8, 8, 9.5], - "rotation": {"angle": -45, "axis": "z", "origin": [1, 5, 8]}, - "faces": { - "north": {"uv": [1, 6, 4, 8], "rotation": 90, "texture": "#3"}, - "south": {"uv": [1, 6, 4, 8], "rotation": 270, "texture": "#3"}, - "west": {"uv": [4, 8, 5, 9], "texture": "#3"}, - "down": {"uv": [1, 6, 4, 8], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "WheelEast", - "from": [5, 5, 1], - "to": [11, 8, 3.2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 1.9]}, - "faces": { - "north": {"uv": [5, 2, 11, 5], "texture": "#3"}, - "east": {"uv": [9, 4, 10, 5], "rotation": 180, "texture": "#3"}, - "south": {"uv": [5, 5, 11, 8], "rotation": 180, "texture": "#3"}, - "west": {"uv": [9, 4, 10, 5], "rotation": 270, "texture": "#3"}, - "up": {"uv": [5, 0, 11, 2], "texture": "#3"}, - "down": {"uv": [5, 0, 11, 2], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "WheelSouthEast", - "from": [3.5888, 5.1, 3.35855], - "to": [5.5888, 7.9, 9.0154], - "rotation": {"angle": -45, "axis": "y", "origin": [7.14142, 4.75147, 3.88274]}, - "faces": { - "east": {"uv": [11, 5, 5, 8], "rotation": 180, "texture": "#3"}, - "west": {"uv": [11, 2, 5, 5], "texture": "#3"}, - "up": {"uv": [11, 0, 5, 2], "rotation": 270, "texture": "#3"}, - "down": {"uv": [11, 0, 5, 2], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "BranchSouthTop", - "from": [6.5, 2.8888, 1.6686], - "to": [9.5, 5.8888, 3.6686], - "rotation": {"angle": 45, "axis": "x", "origin": [7.14142, 4.75147, 3.88274]}, - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#3"}, - "east": {"uv": [1, 8, 4, 6], "rotation": 90, "texture": "#3"}, - "south": {"uv": [5, 8, 4, 9], "texture": "#3"}, - "west": {"uv": [1, 8, 4, 6], "rotation": 270, "texture": "#3"}, - "up": {"uv": [1, 8, 4, 6], "texture": "#3"}, - "down": {"uv": [1, 8, 4, 6], "rotation": 180, "texture": "#3"} - } - }, - { - "name": "BranchSouthMid", - "from": [7, 3.3888, 3.6686], - "to": [9, 5.3888, 6.6686], - "rotation": {"angle": 45, "axis": "x", "origin": [7.14142, 4.75147, 3.88274]}, - "faces": { - "east": {"uv": [8, 8, 5, 10], "texture": "#3"}, - "west": {"uv": [8, 8, 5, 10], "rotation": 180, "texture": "#3"}, - "up": {"uv": [8, 8, 5, 10], "rotation": 270, "texture": "#3"}, - "down": {"uv": [8, 8, 5, 10], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "BranchSouthBottom", - "from": [6.5, 2.8888, 6.6686], - "to": [9.5, 5.8888, 8.6686], - "rotation": {"angle": 45, "axis": "x", "origin": [7.14142, 4.75147, 3.88274]}, - "faces": { - "north": {"uv": [5, 8, 4, 9], "texture": "#3"}, - "east": {"uv": [1, 8, 4, 6], "rotation": 270, "texture": "#3"}, - "west": {"uv": [1, 8, 4, 6], "rotation": 90, "texture": "#3"}, - "down": {"uv": [1, 8, 4, 6], "texture": "#3"} - } - }, - { - "name": "WheelSouth", - "from": [1, 5, 5], - "to": [3.2, 8, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 6.5, 7.9]}, - "faces": { - "north": {"uv": [9, 4, 10, 5], "rotation": 180, "texture": "#3"}, - "east": {"uv": [5, 5, 11, 8], "rotation": 180, "texture": "#3"}, - "south": {"uv": [9, 4, 10, 5], "rotation": 270, "texture": "#3"}, - "west": {"uv": [5, 2, 11, 5], "texture": "#3"}, - "up": {"uv": [5, 0, 11, 2], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5, 0, 11, 2], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "WheelSouthWest", - "from": [10.4112, 5.1, 3.35855], - "to": [12.4112, 7.9, 9.0154], - "rotation": {"angle": 45, "axis": "y", "origin": [8.85858, 4.75147, 3.88274]}, - "faces": { - "east": {"uv": [5, 2, 11, 5], "texture": "#3"}, - "west": {"uv": [5, 5, 11, 8], "rotation": 180, "texture": "#3"}, - "up": {"uv": [11, 2, 5, 0], "rotation": 270, "texture": "#3"}, - "down": {"uv": [11, 2, 5, 0], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "BranchWestBottom", - "from": [8, 5, 6.5], - "to": [10, 8, 9.5], - "rotation": {"angle": 45, "axis": "z", "origin": [15, 5, 8]}, - "faces": { - "north": {"uv": [1, 8, 4, 6], "rotation": 90, "texture": "#3"}, - "east": {"uv": [5, 8, 4, 9], "texture": "#3"}, - "south": {"uv": [1, 8, 4, 6], "rotation": 270, "texture": "#3"}, - "down": {"uv": [1, 8, 4, 6], "rotation": 270, "texture": "#3"} - } - }, - { - "name": "BranchWestMid", - "from": [10, 5.5, 7], - "to": [13, 7.5, 9], - "rotation": {"angle": 45, "axis": "z", "origin": [15, 5, 8]}, - "faces": { - "north": {"uv": [8, 8, 5, 10], "rotation": 180, "texture": "#3"}, - "south": {"uv": [8, 8, 5, 10], "texture": "#3"}, - "up": {"uv": [8, 8, 5, 10], "texture": "#3"}, - "down": {"uv": [8, 8, 5, 10], "texture": "#3"} - } - }, - { - "name": "BranchWestTop", - "from": [13, 5, 6.5], - "to": [15, 8, 9.5], - "rotation": {"angle": 45, "axis": "z", "origin": [15, 5, 8]}, - "faces": { - "north": {"uv": [1, 8, 4, 6], "rotation": 270, "texture": "#3"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#3"}, - "south": {"uv": [1, 8, 4, 6], "rotation": 90, "texture": "#3"}, - "west": {"uv": [5, 8, 4, 9], "texture": "#3"}, - "up": {"uv": [1, 8, 4, 6], "rotation": 90, "texture": "#3"}, - "down": {"uv": [1, 8, 4, 6], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "WheelWest", - "from": [12.8, 5, 5], - "to": [15, 8, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [14, 8, 8]}, - "faces": { - "north": {"uv": [9, 4, 10, 5], "rotation": 270, "texture": "#3"}, - "east": {"uv": [5, 2, 11, 5], "texture": "#3"}, - "south": {"uv": [9, 4, 10, 5], "rotation": 180, "texture": "#3"}, - "west": {"uv": [5, 5, 11, 8], "rotation": 180, "texture": "#3"}, - "up": {"uv": [5, 0, 11, 2], "rotation": 90, "texture": "#3"}, - "down": {"uv": [5, 0, 11, 2], "rotation": 90, "texture": "#3"} - } - }, - { - "name": "WheelNorthWest", - "from": [10.4112, 5.1, 6.9846], - "to": [12.4112, 7.9, 12.64145], - "rotation": {"angle": -45, "axis": "y", "origin": [8.85858, 4.75147, 12.11726]}, - "faces": { - "east": {"uv": [11, 2, 5, 5], "texture": "#3"}, - "west": {"uv": [11, 5, 5, 8], "rotation": 180, "texture": "#3"}, - "up": {"uv": [5, 2, 11, 0], "rotation": 270, "texture": "#3"}, - "down": {"uv": [5, 2, 11, 0], "rotation": 270, "texture": "#3"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0.75], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 1], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 0.75, 0], - "scale": [0.35, 0.35, 0.35] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 2.75, 0], - "scale": [0.75, 0.75, 0.75] - }, - "head": { - "translation": [0, 13, 0] - }, - "fixed": { - "rotation": [-90, 0, 0], - "translation": [0, 0, -3.5], - "scale": [0.5, 0.5, 0.5] - } - }, - "groups": [ - { - "name": "Hub", - "origin": [8, 5.5, -2.5], - "children": [0, 1] - }, - { - "name": "Wheel", - "origin": [8, 5.5, -2.5], - "children": [ - { - "name": "North", - "origin": [1, 3, 11], - "children": [2, 3, 4, 5, 6] - }, - { - "name": "East", - "origin": [1, 3, 11], - "children": [7, 8, 9, 10, 11] - }, - { - "name": "South", - "origin": [1, 3, 11], - "children": [12, 13, 14, 15, 16] - }, - { - "name": "West", - "origin": [1, 3, 11], - "children": [17, 18, 19, 20, 21] - } - ] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/water_wheel.json b/src/main/resources/assets/create/models/block/water_wheel.json deleted file mode 100644 index bf661632e..000000000 --- a/src/main/resources/assets/create/models/block/water_wheel.json +++ /dev/null @@ -1,444 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:block/large_wheels", - "texture_size": [32, 32], - "textures": { - "6": "create:block/wheel_extras", - "axis": "create:block/axis", - "axis_top": "create:block/axis_top", - "wheel": "create:block/wheel", - "particle": "block/stripped_spruce_log" - }, - "elements": [ - { - "name": "Axis", - "from": [6, 0, 6], - "to": [10, 16, 10], - "shade": false, - "faces": { - "north": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "east": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "south": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "west": {"uv": [6, 0, 10, 16], "texture": "#axis"}, - "up": {"uv": [6, 6, 10, 10], "rotation": 90, "texture": "#axis_top"}, - "down": {"uv": [6, 6, 10, 10], "rotation": 90, "texture": "#axis_top"} - } - }, - { - "name": "Segment1", - "from": [-8, -1, 2], - "to": [0, 17, 3], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 270, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "Segment2", - "from": [2, -1, 16], - "to": [3, 17, 24], - "faces": { - "north": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 180, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "texture": "#6"} - } - }, - { - "name": "Segment3", - "from": [-8, -1, 2], - "to": [0, 17, 3], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 270, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "Segment4", - "from": [16, -1, 13], - "to": [24, 17, 14], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "Segment2", - "from": [2, -1, 16], - "to": [3, 17, 24], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 180, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "texture": "#6"} - } - }, - { - "name": "Segment3", - "from": [13, -1, -8], - "to": [14, 17, 0], - "faces": { - "north": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Segment4", - "from": [16, -1, 13], - "to": [24, 17, 14], - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "Segment5", - "from": [16, -1, 13], - "to": [24, 17, 14], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "Segment3", - "from": [2, -1, 16], - "to": [3, 17, 24], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 180, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "texture": "#6"} - } - }, - { - "name": "Segment4", - "from": [-8, -1, 2], - "to": [0, 17, 3], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 270, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "Segment5", - "from": [13, -1, -8], - "to": [14, 17, 0], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Segment3", - "from": [2, -1, 16], - "to": [3, 17, 24], - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 180, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "texture": "#6"} - } - }, - { - "name": "Segment4", - "from": [13, -1, -8], - "to": [14, 17, 0], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "Segment5", - "from": [16, -1, 13], - "to": [24, 17, 14], - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "Segment4", - "from": [16, -1, 13], - "to": [24, 17, 14], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "east": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "Segment5", - "from": [-8, -1, 2], - "to": [0, 17, 3], - "faces": { - "north": {"uv": [7, 0, 16, 4], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7, 3.5, 16, 4], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7, 0, 16, 4], "rotation": 270, "texture": "#6"}, - "west": {"uv": [7, 0, 16, 0.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 0, 7.5, 4], "rotation": 270, "texture": "#6"}, - "down": {"uv": [7, 0, 7.5, 4], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "LargeRim", - "from": [-5, -0.7, -5], - "to": [21, -0.6, 21], - "faces": { - "up": {"uv": [0, 0, 13, 13], "texture": "#wheel"}, - "down": {"uv": [0, 0, 13, 13], "texture": "#wheel"} - } - }, - { - "name": "LargeRim3", - "from": [-5, 16.6, -5], - "to": [21, 16.7, 21], - "faces": { - "up": {"uv": [0, 0, 13, 13], "texture": "#wheel"}, - "down": {"uv": [0, 0, 13, 13], "texture": "#wheel"} - } - }, - { - "name": "InnerSegment", - "from": [15.9, -0.5, 4], - "to": [18, 16.5, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.1, 8]}, - "faces": { - "north": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 4, 8, 8.5], "texture": "#6"}, - "down": {"uv": [7, 4, 8, 8.5], "texture": "#6"} - } - }, - { - "name": "InnerSegment", - "from": [-2, -0.5, 4], - "to": [0.1, 16.5, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.1, 8]}, - "faces": { - "north": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 4, 8, 8.5], "rotation": 180, "texture": "#6"}, - "down": {"uv": [7, 4, 8, 8.5], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "InnerSegment", - "from": [4, -0.5, -2], - "to": [12, 16.5, 0.1], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.1, 8]}, - "faces": { - "north": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 4, 8, 8.5], "rotation": 270, "texture": "#6"}, - "down": {"uv": [7, 4, 8, 8.5], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "InnerSegment", - "from": [4, -0.5, 15.9], - "to": [12, 16.5, 18], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8.1, 8]}, - "faces": { - "north": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 4, 8, 8.5], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 4, 8, 8.5], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "InnerSegment", - "from": [15.9, -0.5, 4], - "to": [18, 16.5, 12], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8.1, 8]}, - "faces": { - "north": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 4, 8, 8.5], "texture": "#6"}, - "down": {"uv": [7, 4, 8, 8.5], "texture": "#6"} - } - }, - { - "name": "InnerSegment", - "from": [4, -0.5, 15.9], - "to": [12, 16.5, 18], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8.1, 8]}, - "faces": { - "north": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 4, 8, 8.5], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 4, 8, 8.5], "rotation": 270, "texture": "#6"} - } - }, - { - "name": "InnerSegment", - "from": [-2, -0.5, 4], - "to": [0.1, 16.5, 12], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8.1, 8]}, - "faces": { - "north": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 4, 8, 8.5], "rotation": 180, "texture": "#6"}, - "down": {"uv": [7, 4, 8, 8.5], "rotation": 180, "texture": "#6"} - } - }, - { - "name": "InnerSegment", - "from": [15.9, -0.5, 4], - "to": [18, 16.5, 12], - "rotation": {"angle": -45, "axis": "y", "origin": [8, 8.1, 8]}, - "faces": { - "north": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "east": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "south": {"uv": [7.5, 5.5, 16, 6.5], "rotation": 90, "texture": "#6"}, - "west": {"uv": [7.5, 4.5, 16, 8.5], "rotation": 90, "texture": "#6"}, - "up": {"uv": [7, 4, 8, 8.5], "texture": "#6"}, - "down": {"uv": [7, 4, 8, 8.5], "texture": "#6"} - } - }, - { - "name": "AxisCoat", - "from": [5, 1, 5], - "to": [11, 15, 11], - "shade": false, - "faces": { - "north": {"uv": [13, 0, 16, 7], "texture": "#wheel"}, - "east": {"uv": [13, 0, 16, 7], "texture": "#wheel"}, - "south": {"uv": [13, 0, 16, 7], "texture": "#wheel"}, - "west": {"uv": [13, 0, 16, 7], "texture": "#wheel"}, - "up": {"uv": [13, 7, 16, 10], "rotation": 90, "texture": "#wheel"}, - "down": {"uv": [13, 7, 16, 10], "rotation": 90, "texture": "#wheel"} - } - }, - { - "name": "Connector", - "from": [6.5, 2, -1], - "to": [9.5, 14, 17], - "shade": false, - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [7, 8.5, 16, 14.5], "texture": "#6"}, - "west": {"uv": [7, 8.5, 16, 14.5], "texture": "#6"}, - "up": {"uv": [7, 14.5, 16, 16], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 14.5, 16, 16], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "Connector", - "from": [6.5, 2.1, -1], - "to": [9.5, 13.9, 17], - "shade": false, - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "east": {"uv": [7, 8.5, 16, 14.5], "texture": "#6"}, - "west": {"uv": [7, 8.5, 16, 14.5], "texture": "#6"}, - "up": {"uv": [7, 14.5, 16, 16], "rotation": 90, "texture": "#6"}, - "down": {"uv": [7, 14.5, 16, 16], "rotation": 90, "texture": "#6"} - } - }, - { - "name": "Connector", - "from": [-1, 2.1, 6.5], - "to": [17, 13.9, 9.5], - "shade": false, - "rotation": {"angle": -22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 8.5, 16, 14.5], "texture": "#6"}, - "south": {"uv": [7, 8.5, 16, 14.5], "texture": "#6"}, - "up": {"uv": [7, 14.5, 16, 16], "rotation": 180, "texture": "#6"}, - "down": {"uv": [7, 14.5, 16, 16], "texture": "#6"} - } - }, - { - "name": "Connector", - "from": [-1, 2, 6.5], - "to": [17, 14, 9.5], - "shade": false, - "rotation": {"angle": 22.5, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [7, 8.5, 16, 14.5], "texture": "#6"}, - "south": {"uv": [7, 8.5, 16, 14.5], "texture": "#6"}, - "up": {"uv": [7, 14.5, 16, 16], "texture": "#6"}, - "down": {"uv": [7, 14.5, 16, 16], "texture": "#6"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/weighted_ejector/block.json b/src/main/resources/assets/create/models/block/weighted_ejector/block.json deleted file mode 100644 index 962f1426d..000000000 --- a/src/main/resources/assets/create/models/block/weighted_ejector/block.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "3": "create:block/weighted_ejector_casing", - "7": "create:block/andesite_casing", - "particle": "create:block/weighted_ejector_top" - }, - "elements": [ - { - "from": [0, 2, 14], - "to": [16, 11, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 8, 15], "texture": "#3"}, - "east": {"uv": [0, 10.5, 1, 15], "texture": "#3"}, - "south": {"uv": [0, 10.5, 8, 15], "texture": "#3"}, - "west": {"uv": [7, 10.5, 8, 15], "texture": "#3"}, - "up": {"uv": [0, 7, 8, 8], "texture": "#3"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [0, 15, 8, 16], "texture": "#3"}, - "east": {"uv": [0, 15, 8, 16], "texture": "#3"}, - "south": {"uv": [0, 15, 8, 16], "texture": "#3"}, - "west": {"uv": [0, 15, 8, 16], "texture": "#3"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#7"} - } - }, - { - "from": [1, 2, 2], - "to": [15, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "east": {"uv": [9, 2.5, 15, 7], "texture": "#3"}, - "west": {"uv": [9, 2.5, 15, 7], "texture": "#3"}, - "up": {"uv": [0.5, 1, 7.5, 7], "texture": "#3"} - } - }, - { - "from": [12, 11, 5], - "to": [15, 12, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [6, 2, 7.5, 2.5], "rotation": 180, "texture": "#3"}, - "east": {"uv": [10.5, 2, 13.5, 2.5], "texture": "#3"}, - "south": {"uv": [6, 5.5, 7.5, 6], "texture": "#3"}, - "west": {"uv": [6, 2.5, 6.5, 5.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 2.5, 7.5, 5.5], "texture": "#3"} - } - }, - { - "from": [1, 11, 5], - "to": [4, 12, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [6, 5.5, 7.5, 6], "texture": "#3"}, - "east": {"uv": [6, 2.5, 6.5, 5.5], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 2, 7.5, 2.5], "rotation": 180, "texture": "#3"}, - "west": {"uv": [10.5, 2, 13.5, 2.5], "texture": "#3"}, - "up": {"uv": [6, 2.5, 7.5, 5.5], "rotation": 180, "texture": "#3"} - } - }, - { - "from": [0, 2, 0], - "to": [16, 11, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [8, 10.5, 16, 15], "texture": "#3"}, - "east": {"uv": [7, 10.5, 8, 15], "texture": "#3"}, - "south": {"uv": [0, 10.5, 8, 15], "texture": "#3"}, - "west": {"uv": [0, 10.5, 1, 15], "texture": "#3"}, - "up": {"uv": [0, 0, 8, 1], "texture": "#3"} - } - }, - { - "from": [12, 9.5, -0.5], - "to": [14, 12.5, 2.5], - "faces": { - "north": {"uv": [8, 0, 9, 1.5], "texture": "#3"}, - "east": {"uv": [14, 0, 15.5, 1.5], "texture": "#3"}, - "south": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"}, - "west": {"uv": [14, 0, 15.5, 1.5], "texture": "#3"}, - "up": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"}, - "down": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"} - } - }, - { - "from": [2, 9.5, -0.5], - "to": [4, 12.5, 2.5], - "faces": { - "north": {"uv": [8, 0, 9, 1.5], "texture": "#3"}, - "east": {"uv": [14, 0, 15.5, 1.5], "texture": "#3"}, - "south": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"}, - "west": {"uv": [14, 0, 15.5, 1.5], "texture": "#3"}, - "up": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"}, - "down": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "casing", - "origin": [0, 0, 0], - "children": [0, 1, 2, 3, 4, 5, 6, 7] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/weighted_ejector/item.json b/src/main/resources/assets/create/models/block/weighted_ejector/item.json deleted file mode 100644 index ac666180d..000000000 --- a/src/main/resources/assets/create/models/block/weighted_ejector/item.json +++ /dev/null @@ -1,247 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "block/stripped_spruce_log_top", - "1": "create:block/axis", - "2": "block/stripped_spruce_log", - "3": "create:block/weighted_ejector_casing", - "4": "create:block/weighted_ejector_top", - "5": "create:block/weighted_ejector_inner", - "6": "create:block/axis_top", - "7": "create:block/andesite_casing", - "particle": "create:block/weighted_ejector_top" - }, - "elements": [ - { - "from": [0, 6, 6], - "to": [16, 10, 10], - "faces": { - "north": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1"}, - "east": {"uv": [6, 6, 10, 10], "texture": "#6"}, - "south": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1"}, - "west": {"uv": [6, 6, 10, 10], "texture": "#6"}, - "up": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1"}, - "down": {"uv": [6, 0, 10, 16], "rotation": 90, "texture": "#1"} - } - }, - { - "from": [4, 9.5, -0.5], - "to": [12, 12.5, 2.5], - "faces": { - "north": {"uv": [9, 0, 13, 1.5], "texture": "#3"}, - "east": {"uv": [12.5, 0, 13, 0.5], "texture": "#3"}, - "south": {"uv": [9, 0, 13, 1.5], "texture": "#3"}, - "west": {"uv": [12.5, 0, 13, 0.5], "texture": "#3"}, - "up": {"uv": [9, 0, 13, 1.5], "rotation": 180, "texture": "#3"}, - "down": {"uv": [9, 0, 13, 1.5], "texture": "#3"} - } - }, - { - "from": [6, 7, 1], - "to": [10, 11, 5], - "faces": { - "east": {"uv": [4, 8, 8, 12], "texture": "#0"}, - "south": {"uv": [5, 10, 9, 14], "texture": "#2"}, - "west": {"uv": [8, 8, 12, 12], "texture": "#0"}, - "down": {"uv": [5, 10, 9, 14], "texture": "#2"} - } - }, - { - "from": [7.5, 5, 1], - "to": [8.5, 11, 7], - "faces": { - "east": {"uv": [2, 8, 8, 14], "texture": "#0"}, - "south": {"uv": [13, 8, 14, 14], "texture": "#0"}, - "west": {"uv": [8, 8, 14, 14], "texture": "#0"}, - "down": {"uv": [13, 4, 14, 10], "texture": "#0"} - } - }, - { - "from": [0.9, 11, 1], - "to": [15.1, 13, 15], - "faces": { - "north": {"uv": [1, 14, 15, 16], "texture": "#4"}, - "east": {"uv": [1, 14, 15, 16], "texture": "#4"}, - "south": {"uv": [1, 14, 15, 16], "texture": "#4"}, - "west": {"uv": [1, 14, 15, 16], "texture": "#4"}, - "up": {"uv": [1, 0, 15, 14], "rotation": 180, "texture": "#4"}, - "down": {"uv": [1, 1, 15, 15], "texture": "#5"} - } - }, - { - "from": [7, 2, 1], - "to": [9, 11, 2], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "east": {"uv": [3, 0, 4, 9], "texture": "#2"}, - "south": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "west": {"uv": [3, 0, 4, 9], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 1], "texture": "#2"} - } - }, - { - "from": [7, 2, 0], - "to": [9, 11, 2], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "north": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "east": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "south": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "west": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 2], "texture": "#2"} - } - }, - { - "from": [7, 2, 0], - "to": [9, 11, 2], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "north": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "east": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "south": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "west": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 2], "texture": "#2"} - } - }, - { - "from": [7, 10, 1], - "to": [9, 12, 10], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#2"}, - "east": {"uv": [3, 0, 5, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [3, 0, 5, 2], "texture": "#2"}, - "west": {"uv": [3, 0, 5, 9], "rotation": 270, "texture": "#2"}, - "up": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 9], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [7, 10, 1], - "to": [9, 11, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "east": {"uv": [3, 0, 4, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [3, 0, 5, 1], "texture": "#2"}, - "west": {"uv": [3, 0, 4, 9], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 2, 9], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 9], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [0, 2, 14], - "to": [16, 11, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [0, 10.5, 8, 15], "texture": "#3"}, - "east": {"uv": [0, 10.5, 1, 15], "texture": "#3"}, - "south": {"uv": [0, 10.5, 8, 15], "texture": "#3"}, - "west": {"uv": [7, 10.5, 8, 15], "texture": "#3"}, - "up": {"uv": [0, 7, 8, 8], "texture": "#3"} - } - }, - { - "from": [0, 0, 0], - "to": [16, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [0, 15, 8, 16], "texture": "#3"}, - "east": {"uv": [0, 15, 8, 16], "texture": "#3"}, - "south": {"uv": [0, 15, 8, 16], "texture": "#3"}, - "west": {"uv": [0, 15, 8, 16], "texture": "#3"}, - "up": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#7"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#7"} - } - }, - { - "from": [1, 2, 2], - "to": [15, 11, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "east": {"uv": [9, 2.5, 15, 7], "texture": "#3"}, - "west": {"uv": [9, 2.5, 15, 7], "texture": "#3"}, - "up": {"uv": [0.5, 1, 7.5, 7], "texture": "#3"} - } - }, - { - "from": [12, 11, 5], - "to": [15, 12, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [6, 2, 7.5, 2.5], "rotation": 180, "texture": "#3"}, - "east": {"uv": [10.5, 2, 13.5, 2.5], "texture": "#3"}, - "south": {"uv": [6, 5.5, 7.5, 6], "texture": "#3"}, - "west": {"uv": [6, 2.5, 6.5, 5.5], "rotation": 90, "texture": "#3"}, - "up": {"uv": [6, 2.5, 7.5, 5.5], "texture": "#3"} - } - }, - { - "from": [1, 11, 5], - "to": [4, 12, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [6, 5.5, 7.5, 6], "texture": "#3"}, - "east": {"uv": [6, 2.5, 6.5, 5.5], "rotation": 90, "texture": "#3"}, - "south": {"uv": [6, 2, 7.5, 2.5], "rotation": 180, "texture": "#3"}, - "west": {"uv": [10.5, 2, 13.5, 2.5], "texture": "#3"}, - "up": {"uv": [6, 2.5, 7.5, 5.5], "rotation": 180, "texture": "#3"} - } - }, - { - "from": [0, 2, 0], - "to": [16, 11, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 7.25, 8]}, - "faces": { - "north": {"uv": [8, 10.5, 16, 15], "texture": "#3"}, - "east": {"uv": [7, 10.5, 8, 15], "texture": "#3"}, - "south": {"uv": [0, 10.5, 8, 15], "texture": "#3"}, - "west": {"uv": [0, 10.5, 1, 15], "texture": "#3"}, - "up": {"uv": [0, 0, 8, 1], "texture": "#3"} - } - }, - { - "from": [12, 9.5, -0.5], - "to": [14, 12.5, 2.5], - "faces": { - "north": {"uv": [8, 0, 9, 1.5], "texture": "#3"}, - "east": {"uv": [14, 0, 15.5, 1.5], "texture": "#3"}, - "south": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"}, - "west": {"uv": [14, 0, 15.5, 1.5], "texture": "#3"}, - "up": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"}, - "down": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"} - } - }, - { - "from": [2, 9.5, -0.5], - "to": [4, 12.5, 2.5], - "faces": { - "north": {"uv": [8, 0, 9, 1.5], "texture": "#3"}, - "east": {"uv": [14, 0, 15.5, 1.5], "texture": "#3"}, - "south": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"}, - "west": {"uv": [14, 0, 15.5, 1.5], "texture": "#3"}, - "up": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"}, - "down": {"uv": [8, 0, 9, 1.5], "rotation": 180, "texture": "#3"} - } - } - ], - "groups": [ - { - "name": "Axle", - "origin": [0, 0, 0], - "children": [0] - }, - { - "name": "Panel", - "origin": [0, 0, 0], - "children": [1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "name": "casing", - "origin": [0, 0, 0], - "children": [10, 11, 12, 13, 14, 15, 16, 17] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/weighted_ejector/top.json b/src/main/resources/assets/create/models/block/weighted_ejector/top.json deleted file mode 100644 index 4aad7bdc9..000000000 --- a/src/main/resources/assets/create/models/block/weighted_ejector/top.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "block/stripped_spruce_log_top", - "2": "block/stripped_spruce_log", - "3": "create:block/weighted_ejector_casing", - "4": "create:block/weighted_ejector_top", - "5": "create:block/weighted_ejector_inner", - "particle": "create:block/weighted_ejector_top" - }, - "elements": [ - { - "from": [4, 9.5, -0.5], - "to": [12, 12.5, 2.5], - "faces": { - "north": {"uv": [9, 0, 13, 1.5], "texture": "#3"}, - "east": {"uv": [12.5, 0, 13, 0.5], "texture": "#3"}, - "south": {"uv": [9, 0, 13, 1.5], "texture": "#3"}, - "west": {"uv": [12.5, 0, 13, 0.5], "texture": "#3"}, - "up": {"uv": [9, 0, 13, 1.5], "rotation": 180, "texture": "#3"}, - "down": {"uv": [9, 0, 13, 1.5], "texture": "#3"} - } - }, - { - "from": [6, 7, 1], - "to": [10, 11, 5], - "faces": { - "east": {"uv": [4, 8, 8, 12], "texture": "#0"}, - "south": {"uv": [5, 10, 9, 14], "texture": "#2"}, - "west": {"uv": [8, 8, 12, 12], "texture": "#0"}, - "down": {"uv": [5, 10, 9, 14], "texture": "#2"} - } - }, - { - "from": [7.5, 5, 1], - "to": [8.5, 11, 7], - "faces": { - "east": {"uv": [2, 8, 8, 14], "texture": "#0"}, - "south": {"uv": [13, 8, 14, 14], "texture": "#0"}, - "west": {"uv": [8, 8, 14, 14], "texture": "#0"}, - "down": {"uv": [13, 4, 14, 10], "texture": "#0"} - } - }, - { - "from": [0.9, 11, 1], - "to": [15.1, 13, 15], - "faces": { - "north": {"uv": [1, 14, 15, 16], "texture": "#4"}, - "east": {"uv": [1, 14, 15, 16], "texture": "#4"}, - "south": {"uv": [1, 14, 15, 16], "texture": "#4"}, - "west": {"uv": [1, 14, 15, 16], "texture": "#4"}, - "up": {"uv": [1, 0, 15, 14], "rotation": 180, "texture": "#4"}, - "down": {"uv": [1, 1, 15, 15], "texture": "#5"} - } - }, - { - "from": [7, 2, 1], - "to": [9, 11, 2], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "east": {"uv": [3, 0, 4, 9], "texture": "#2"}, - "south": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "west": {"uv": [3, 0, 4, 9], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 1], "texture": "#2"} - } - }, - { - "from": [7, 2, 0], - "to": [9, 11, 2], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "north": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "east": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "south": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "west": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 2], "texture": "#2"} - } - }, - { - "from": [7, 2, 0], - "to": [9, 11, 2], - "rotation": {"angle": -45, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "north": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "east": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "south": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "west": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 2], "texture": "#2"} - } - }, - { - "from": [7, 10, 1], - "to": [9, 12, 10], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "rotation": 180, "texture": "#2"}, - "east": {"uv": [3, 0, 5, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [3, 0, 5, 2], "texture": "#2"}, - "west": {"uv": [3, 0, 5, 9], "rotation": 270, "texture": "#2"}, - "up": {"uv": [3, 0, 5, 9], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 9], "rotation": 180, "texture": "#2"} - } - }, - { - "from": [7, 10, 1], - "to": [9, 11, 10], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 11, 1]}, - "faces": { - "east": {"uv": [3, 0, 4, 9], "rotation": 90, "texture": "#2"}, - "south": {"uv": [3, 0, 5, 1], "texture": "#2"}, - "west": {"uv": [3, 0, 4, 9], "rotation": 270, "texture": "#2"}, - "up": {"uv": [0, 0, 2, 9], "texture": "#2"}, - "down": {"uv": [3, 0, 5, 9], "rotation": 180, "texture": "#2"} - } - } - ], - "groups": [ - { - "name": "Panel", - "origin": [0, 0, 0], - "children": [0, 1, 2, 3, 4, 5, 6, 7, 8] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/weighted_ejector/weighted depot.bbmodel b/src/main/resources/assets/create/models/block/weighted_ejector/weighted depot.bbmodel deleted file mode 100644 index 0305dd1ec..000000000 --- a/src/main/resources/assets/create/models/block/weighted_ejector/weighted depot.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.6","creation_time":1616422453,"model_format":"java_block","box_uv":false},"name":"block","parent":"","ambientocclusion":true,"front_gui_light":false,"visible_box":[1,1,0],"resolution":{"width":16,"height":16},"elements":[{"name":"cube","rescale":false,"from":[0,2,14],"to":[16,11,16],"autouv":0,"color":3,"locked":false,"origin":[8,7.25,8],"faces":{"north":{"uv":[0,10.5,8,15],"texture":3},"east":{"uv":[0,10.5,1,15],"texture":3},"south":{"uv":[0,10.5,8,15],"texture":3},"west":{"uv":[7,10.5,8,15],"texture":3},"up":{"uv":[0,7,8,8],"texture":3},"down":{"uv":[0,0,0,0],"rotation":180,"texture":null}},"uuid":"a674be97-1571-0e0b-9250-c02dc00a2797"},{"name":"cube","rescale":false,"from":[0,0,0],"to":[16,2,16],"autouv":0,"color":3,"locked":false,"origin":[8,7.25,8],"faces":{"north":{"uv":[0,15,8,16],"texture":3},"east":{"uv":[0,15,8,16],"texture":3},"south":{"uv":[0,15,8,16],"texture":3},"west":{"uv":[0,15,8,16],"texture":3},"up":{"uv":[0,0,16,16],"rotation":270,"texture":7},"down":{"uv":[0,0,16,16],"rotation":270,"texture":7}},"uuid":"c48d3cb9-83e0-0ec6-129d-3e6e43fb49ab"},{"name":"cube","rescale":false,"from":[1,2,2],"to":[15,11,14],"autouv":0,"color":3,"locked":false,"origin":[8,7.25,8],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[9,2.5,15,7],"texture":3},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[9,2.5,15,7],"texture":3},"up":{"uv":[0.5,1,7.5,7],"texture":3},"down":{"uv":[0,0,14,12],"rotation":180,"texture":null}},"uuid":"5e95266f-b869-61ca-589e-903db5b8aa74"},{"name":"cube","rescale":false,"from":[12,11,5],"to":[15,12,11],"autouv":0,"color":3,"locked":false,"origin":[8,7.25,8],"faces":{"north":{"uv":[6,2,7.5,2.5],"rotation":180,"texture":3},"east":{"uv":[10.5,2,13.5,2.5],"texture":3},"south":{"uv":[6,5.5,7.5,6],"texture":3},"west":{"uv":[6,2.5,6.5,5.5],"rotation":90,"texture":3},"up":{"uv":[6,2.5,7.5,5.5],"texture":3},"down":{"uv":[0,0,0,0],"rotation":180,"texture":null}},"uuid":"106c49a4-7dc1-3b19-2f15-62f1d86e5293"},{"name":"cube","rescale":false,"from":[1,11,5],"to":[4,12,11],"autouv":0,"color":3,"locked":false,"origin":[8,7.25,8],"faces":{"north":{"uv":[6,5.5,7.5,6],"texture":3},"east":{"uv":[6,2.5,6.5,5.5],"rotation":90,"texture":3},"south":{"uv":[6,2,7.5,2.5],"rotation":180,"texture":3},"west":{"uv":[10.5,2,13.5,2.5],"texture":3},"up":{"uv":[6,2.5,7.5,5.5],"rotation":180,"texture":3},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"a3bc1576-a101-cc4c-0845-f0392b61c6e3"},{"name":"cube","rescale":false,"from":[0,2,0],"to":[16,11,2],"autouv":0,"color":3,"locked":false,"origin":[8,7.25,8],"faces":{"north":{"uv":[8,10.5,16,15],"texture":3},"east":{"uv":[7,10.5,8,15],"texture":3},"south":{"uv":[0,10.5,8,15],"texture":3},"west":{"uv":[0,10.5,1,15],"texture":3},"up":{"uv":[0,0,8,1],"texture":3},"down":{"uv":[0,0,0,0],"rotation":180,"texture":null}},"uuid":"2152c06f-ea59-15eb-3822-e035c2f43d08"},{"name":"cube","rescale":false,"from":[12,9.5,-0.5],"to":[14,12.5,2.5],"autouv":0,"color":4,"locked":false,"origin":[0,0,0],"faces":{"north":{"uv":[8,0,9,1.5],"texture":3},"east":{"uv":[14,0,15.5,1.5],"texture":3},"south":{"uv":[8,0,9,1.5],"rotation":180,"texture":3},"west":{"uv":[14,0,15.5,1.5],"texture":3},"up":{"uv":[8,0,9,1.5],"rotation":180,"texture":3},"down":{"uv":[8,0,9,1.5],"rotation":180,"texture":3}},"uuid":"10f7f63f-0c8b-5146-0935-762444523f31"},{"name":"cube","rescale":false,"from":[2,9.5,-0.5],"to":[4,12.5,2.5],"autouv":0,"color":4,"locked":false,"origin":[0,0,0],"faces":{"north":{"uv":[8,0,9,1.5],"texture":3},"east":{"uv":[14,0,15.5,1.5],"texture":3},"south":{"uv":[8,0,9,1.5],"rotation":180,"texture":3},"west":{"uv":[14,0,15.5,1.5],"texture":3},"up":{"uv":[8,0,9,1.5],"rotation":180,"texture":3},"down":{"uv":[8,0,9,1.5],"rotation":180,"texture":3}},"uuid":"afe59684-f9f0-ed62-87b6-b62cd840f2fb"},{"name":"cube","rescale":false,"from":[4,9.5,-0.5],"to":[12,12.5,2.5],"autouv":0,"color":4,"locked":false,"origin":[0,0,0],"faces":{"north":{"uv":[9,0,13,1.5],"texture":3},"east":{"uv":[12.5,0,13,0.5],"texture":3},"south":{"uv":[9,0,13,1.5],"texture":3},"west":{"uv":[12.5,0,13,0.5],"texture":3},"up":{"uv":[9,0,13,1.5],"rotation":180,"texture":3},"down":{"uv":[9,0,13,1.5],"texture":3}},"uuid":"6bd86311-c10a-fa98-5fa9-5b33da4930ca"},{"name":"cube","rescale":false,"from":[6,7,1],"to":[10,11,5],"autouv":0,"color":4,"locked":false,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[4,8,8,12],"texture":0},"south":{"uv":[5,10,9,14],"texture":2},"west":{"uv":[8,8,12,12],"texture":0},"up":{"uv":[0,0,0,0],"rotation":180,"texture":null},"down":{"uv":[5,10,9,14],"texture":2}},"uuid":"ee6630af-053d-e4d1-1164-e79131171389"},{"name":"cube","rescale":false,"from":[7.5,5,1],"to":[8.5,11,7],"autouv":0,"color":4,"locked":false,"origin":[0,0,0],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[2,8,8,14],"texture":0},"south":{"uv":[13,8,14,14],"texture":0},"west":{"uv":[8,8,14,14],"texture":0},"up":{"uv":[0,0,0,0],"rotation":180,"texture":null},"down":{"uv":[13,4,14,10],"texture":0}},"uuid":"eca3e169-faa6-13fc-967c-1405b4e66f21"},{"name":"cube","rescale":false,"from":[0.9000000000000004,11,1],"to":[15.1,13,15],"autouv":0,"color":6,"locked":false,"origin":[0,0,0],"faces":{"north":{"uv":[1,14,15,16],"texture":4},"east":{"uv":[1,14,15,16],"texture":4},"south":{"uv":[1,14,15,16],"texture":4},"west":{"uv":[1,14,15,16],"texture":4},"up":{"uv":[1,0,15,14],"rotation":180,"texture":4},"down":{"uv":[1,1,15,15],"texture":5}},"uuid":"c49fdf59-60cf-5b45-76be-2529faf56110"},{"name":"cube","rescale":false,"from":[7,2,1],"to":[9,11,2],"autouv":0,"color":7,"locked":false,"origin":[8,11,1],"faces":{"north":{"uv":[0,0,0,0],"texture":null},"east":{"uv":[3,0,4,9],"texture":2},"south":{"uv":[3,0,5,9],"texture":2},"west":{"uv":[3,0,4,9],"texture":2},"up":{"uv":[0,0,0,0],"texture":null},"down":{"uv":[3,0,5,1],"texture":2}},"uuid":"bea540c0-ba6b-2d4a-bd04-86f425a0c680"},{"name":"cube","rescale":false,"from":[7,2,0],"to":[9,11,2],"autouv":0,"color":7,"locked":false,"rotation":[-22.5,0,0],"origin":[8,11,1],"faces":{"north":{"uv":[3,0,5,9],"texture":2},"east":{"uv":[3,0,5,9],"texture":2},"south":{"uv":[3,0,5,9],"texture":2},"west":{"uv":[3,0,5,9],"texture":2},"up":{"uv":[0,0,2,2],"texture":2},"down":{"uv":[3,0,5,2],"texture":2}},"uuid":"3a040566-653a-4930-d68a-97ef0a1d4154"},{"name":"cube","rescale":false,"from":[7,2,0],"to":[9,11,2],"autouv":0,"color":7,"locked":false,"rotation":[-45,0,0],"origin":[8,11,1],"faces":{"north":{"uv":[3,0,5,9],"texture":2},"east":{"uv":[3,0,5,9],"texture":2},"south":{"uv":[3,0,5,9],"texture":2},"west":{"uv":[3,0,5,9],"texture":2},"up":{"uv":[0,0,2,2],"texture":2},"down":{"uv":[3,0,5,2],"texture":2}},"uuid":"b82cb1ef-cd34-c8d4-d895-98a664fa405d"},{"name":"cube","rescale":false,"from":[7,10,1],"to":[9,12,10],"autouv":0,"color":7,"locked":false,"rotation":[22.5,0,0],"origin":[8,11,1],"faces":{"north":{"uv":[0,0,2,2],"rotation":180,"texture":2},"east":{"uv":[3,0,5,9],"rotation":90,"texture":2},"south":{"uv":[3,0,5,2],"texture":2},"west":{"uv":[3,0,5,9],"rotation":270,"texture":2},"up":{"uv":[3,0,5,9],"texture":2},"down":{"uv":[3,0,5,9],"rotation":180,"texture":2}},"uuid":"1ada72dc-e226-60ac-da09-66ce88d11b19"},{"name":"cube","rescale":false,"from":[7,10,1],"to":[9,11,10],"autouv":0,"color":7,"locked":false,"origin":[8,11,1],"faces":{"north":{"uv":[0,0,0,0],"rotation":180,"texture":null},"east":{"uv":[3,0,4,9],"rotation":90,"texture":2},"south":{"uv":[3,0,5,1],"texture":2},"west":{"uv":[3,0,4,9],"rotation":270,"texture":2},"up":{"uv":[0,0,2,9],"texture":2},"down":{"uv":[3,0,5,9],"rotation":180,"texture":2}},"uuid":"5befc358-0247-08e3-e6d1-dfa841cdda05"},{"name":"cube","rescale":false,"from":[0,6,6],"to":[16,10,10],"autouv":0,"color":3,"locked":false,"origin":[0,0,0],"faces":{"north":{"uv":[6,0,10,16],"rotation":90,"texture":1},"east":{"uv":[6,6,10,10],"texture":6},"south":{"uv":[6,0,10,16],"rotation":90,"texture":1},"west":{"uv":[6,6,10,10],"texture":6},"up":{"uv":[6,0,10,16],"rotation":90,"texture":1},"down":{"uv":[6,0,10,16],"rotation":90,"texture":1}},"uuid":"cf15d7da-6f45-fd25-9080-d0c90c10f76b"}],"outliner":[{"name":"Axle","origin":[0,0,0],"uuid":"7ab30dad-c865-a77f-95f8-b93d379e090e","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["cf15d7da-6f45-fd25-9080-d0c90c10f76b"]},{"name":"Panel","origin":[0,0,0],"uuid":"6a669390-7a59-afc7-3d32-bba3ee3187cd","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["6bd86311-c10a-fa98-5fa9-5b33da4930ca","ee6630af-053d-e4d1-1164-e79131171389","eca3e169-faa6-13fc-967c-1405b4e66f21","c49fdf59-60cf-5b45-76be-2529faf56110","bea540c0-ba6b-2d4a-bd04-86f425a0c680","3a040566-653a-4930-d68a-97ef0a1d4154","b82cb1ef-cd34-c8d4-d895-98a664fa405d","1ada72dc-e226-60ac-da09-66ce88d11b19","5befc358-0247-08e3-e6d1-dfa841cdda05"]},{"name":"casing","origin":[0,0,0],"uuid":"cc99560f-632d-2dff-7155-065b2a90e320","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["a674be97-1571-0e0b-9250-c02dc00a2797","c48d3cb9-83e0-0ec6-129d-3e6e43fb49ab","5e95266f-b869-61ca-589e-903db5b8aa74","106c49a4-7dc1-3b19-2f15-62f1d86e5293","a3bc1576-a101-cc4c-0845-f0392b61c6e3","2152c06f-ea59-15eb-3822-e035c2f43d08","10f7f63f-0c8b-5146-0935-762444523f31","afe59684-f9f0-ed62-87b6-b62cd840f2fb"]}],"textures":[{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\block\\stripped_spruce_log_top.png","name":"stripped_spruce_log_top.png","folder":"block","namespace":"minecraft","id":"0","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"bbdca491-2930-e433-fa37-d0f3a0984b2e","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABd0lEQVQ4T4VTXUsCURCd69quaGREGQkLuxBYBD1VWFREVD87gnoI6lUwCBQEJRHJMHE3lxtnltG7m+m8zN2Ze8+eMx/q7szTRESTSUTZrIUjG77FLMsipWZ3tCbSOs6rm6qrL/fd6WUcxkFIOcdmv1ZYoa/vH84jZtpjvU3q+sTVVwcu1VtdzjlOnn3RIRoEsTcNMVilXKD7WocUJJxXygxw6G9xMpyouYwk2OgOyS+t0kOtRer21NPH/iZ1BiEHQXuRQUZ/MKR8zqbXZm8mAcGNYgwAMJEBL7R3ijbXAQxwngJUd7f5EYKwZveTvNJ6goiZF7YsAUUEwGgcJhgATJjgjDxomxJeGr1ZDZYBCIM/EqSI8wBMDcIAMQHjGqCNR16yC0I9CEY8FzILaQmJIpoMlrVRusA1kEmUNpqjnAays5qHTACe3z+SADK60vdFTBKTeLFXnt6VSZRlQuK/hXp6a8dFxHpGUUSytniUXm/5g7nmmQzRL1QsAdCcJPRPAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\axis.png","name":"axis.png","folder":"block","namespace":"create","id":"1","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"b948b196-c141-2578-3238-7176bb64ee97","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAo0lEQVQ4T6WTIQ4EIQxFO4IRIECAgLshMBwKO+fCggWDZVOSSVbMJjulkpTH/+X3gB/lvZ/WWhhjQO8drus6nlofD7ExhDCFEOsOGcAYA+cc5JzfK4gxTnxdKQW1VhrgPE/QWu8pQAulFEgpvRvit4XWGg2AFjjnQAJgDqSUawYkC3eQUAEJgEEyxiwLpBxsA/AXMERYW0FCCyTAvUxkwL/r/AGRGnYRGJZooQAAAABJRU5ErkJggg=="},{"path":"D:\\simon\\Minecraft\\Minecraft Assets\\minecraft\\textures\\block\\stripped_spruce_log.png","name":"stripped_spruce_log.png","folder":"block","namespace":"minecraft","id":"2","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"fdfd493e-f0b7-20a0-8910-4706acab87bd","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABiklEQVQ4T12Tu07DQBBFx69sHIgipQAkCsQHUPApNPRUfDaioKGIFJngrF9BZ8xN4mzjxLtz5u694+Tt5ekwK3Irs8yWeWZFlljdHixPzX9vYmesMs38uQyJff5E/81KANwtFlYPva1D7oVVHAHdYP6e4k3b2E2YWVkkvs//pu1GwOPqyrtCZ5MiqUFB3ffeDQBQIF+/cQS8vz4f7hfBAS61GGUDOO+2Lmau6js2xvkJgE1JlGzvWOa278za/uQJhZyv+s7aYRgVyJCH63C8H4dQABCA1AFgFWlqu9iMHpACBXjAVZDJQipLXQGyT/c8SdwbB6zmwZ3mAN2qrvdNQYntdh5snpsDdM0JgE7EyDrPXrkDkBcAjh5IgYZFKUgRzqOAyJgXJTHxgCuwJFumykSKPrY7k1caIp9EUmCMNW26NwMl03gKQFIoosY9EEAK5D5mCSBFl7Oy3ccTQPI5pPgEUYwC6CNzwOXXiMM4z/O8UNMK3I2sO5sowAM2NP+KT4Ue8/+w6Wvk3R8qiEVpS5vUkAAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\weighted_ejector_casing.png","name":"weighted_ejector_casing.png","folder":"block","namespace":"create","id":"3","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"69183538-6a6b-157f-362b-f5995cbfb50f","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAE40lEQVRYR+1XX0xbZRT/ldv2tpf+uwULV4uFTgcDZmC6xJiQLCYumULi9jgjPqDGRH1xMb4Yn/SFB1/EZBpn4oOJ0WhciBrJthhnpokbkIEEZLA2bFS6Qf9Q2t7eW2vOd73tvR0MaX3ceem9p+d836/nO7/z+2oZeXmkBADT579GXlbocVdz8DZ0PvE0nE4nOHBQFAWJRAJut5vlkt9o8XgcoihCVVVIkoRsNgtBEDA6OmqxEIB94Yfw+di7u25sDHjutbcx+8cMglKQuSORCAKBQDmkUCiwZ7vdDgJA39GmtLnVamVgxsbGagdwfORNLC//yQDQwrNzs+jt7mWb0iZk5GfVnZ5GMKgB1UGYKtDZfRBnP3rPVIHkpraIbj63tphuz7zwBpaWr+HMx2cseypdVTA7gunfJ5HL5dhXwwMiLlxZwc14whT6QEBEd7sfE3Naaemc+w4f2hbAo/39Ja/PB4/Xy2K3MhlsrK/jytTUHWD3BOCxrlZ8O5kpAzhy9EkkE8kyeAJFP4bneUSiUazF4yy2JRBAeygEWZYZaDL9BzMA1xeXkcloC5/os2L8l2vY7ggOH5BwaYVncS6XCx0Ph9lCvT0Hkc3JEJw8zv04gfn5eazGYqYK3i9J6OnpwVODg1DzWrWpiRmA9fg60uk0cx7dl9sRwP6whGiumcV5PB4IboEdRSjUgctnT4O3cVDu68f4+DiKxaIJAMdxGBoagpCYAVBC77GXNACn3jpVWlpY+k8AqAJXk3cCIBpPjZ+Gz+PELb7rrgDc6VmkMnk8fuLVSgWqj2CnJqQeOLeo9REdQWtQYhUgjkcvfgm/V8BkvJGd/05H0G67ga2sgr7jr2Nh7t8K/DRxodwUzx5y4fL8X9uyoLoJO3sPMADBYAg/f/UBRJ8X0Yx7xyb8u1RCM24incpi8JV3NADVNCQAkXgS7QEfSqUScrKCFr+AmchtdLUF8MWvGyYa0gv1wOL5T9HkFQBLAy5e5yA0NkL0+9HQ0IB0KoVUMomBjiJUtYRUZguhgWHEYisaADrD3775EA+2imzxyFoCkt+FvKzCwVshODgsraYQCvggKyqyuUoJdQDUhC1NlRzK1Y3WsFut7NVisWAjtYXwkWE2SS0nnz9ZCof34+oPn8DltIPjgOhqEsEWEZmczJK8LhvWkgqaXHYoxSLsVo51MU1CMklqY/nEAivHsZiCUkReBcuhTRVVhaxUmPHIsRcrAHQe64g9oo896nzV/cR1MuK7zmPqAaogmdXhxFpsBU2ixhR6pzXWE7fhdLjLefrMoB/AjoCC9clklFLdR9/rfqPP6DeR3vDiE31sWuqf1XvVJSQ7bboX/z0A9yrAWFDNAL1j79bxxhx6Xrj0/Z4vtWww0SAy6jk5iae5/Cbjs85l8hOfW6Q2k56Tn/K/++x95AvKriDoRu2w20BXuvJ9wKjnNK1oohmnlj7h9FFq1PPq+8Be88taoOt5o9NuorGTt5VnOInTjbWUSc/1SVhrPgNg1HOPi4eDtyObU5Ev5E1gBIcdtxIZk55TQD35DIBRz70eAbKchZKt/EuyCTbwvOZPb+ZNek4A6slnAIx63tqs/b2qtvSWBiidkU16Tr568ssAatVzYxPWdB+gCtSj5wSgnvwyC2rVc8r7X+4Dter5btK7233gH2OsXLxIyeUHAAAAAElFTkSuQmCC"},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\weighted_ejector_top.png","name":"weighted_ejector_top.png","folder":"block","namespace":"create","id":"4","particle":true,"visible":true,"mode":"bitmap","saved":true,"uuid":"ebcca8ed-240c-1b6e-7682-0179476a394c","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACLElEQVQ4T4VTTUwTURD+tt3av9dCcQsNYKCAxsTePHjw6o1E46kHb8bE2JOBGEMvhIQ0MQaIl149cOpREm5600TPcuCwQAlLLJTIT9/CrtvumnnlbWmJcS8zb2be975vdkYBgEKh4JGlLxqJSBfsii+D3LL8/NLysqJIgL29XyIRCoWEjUU7QHQ+v+hcdBwHd25n0Q2wu+8j284fqOoNBAk+oEBVA3BdwHU9NJtN3BxIYXJsFAulUpvB7MyMt1M14Ng2bo2N4OyUixd7WST7GHR9B4PpNIaGtA6D+WLR+7mpg/OGSL6+/wPhSFwwsi1T+INaCrOfRnDW4EgmWDcAMTg4OPJ1LjzSMf85C8dpXfYliNXiBl6uPIBpcsTjrFsCMdjaNQRAJqPhVe67AGi1PLgkHh7WPgJPXwTRl2RotfBvANJNEkpfc4hF4/h9fIyBVAqrH04FQCCgit5c60H95AQm5wL97cMNvPuWAzWNGkr2/fMveLZ4DyzOBNPs+Gh3E0mCvLD0ZB9swkBs/K7owXl1U/jEYHg4g1rt6DpA1TCgaRq2tqviFW5y3xIIxQ7rh5iamhAA1KtyudyZgwvLEmNM80BJXd/2i0kzsZMvy1p/Euk3UjDd3w/qBVkpiUDlhd4afxLpN9KSZNJp1Op139IysUQCvNEA5eVZ1ryZm2tLyOfzXiQc9nfhf45l26KkUqm0AaanH3vW5ZpGrqywjDWbDhhLoLdmfX1N+Qtlmygg+Q/yZwAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\weighted_ejector_inner.png","name":"weighted_ejector_inner.png","folder":"block","namespace":"create","id":"5","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"c9f14264-859c-957f-e9fd-615804f80729","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABrklEQVQ4T6WTu07DQBBFr71+xOaRB8IiQERDBX9AQ8MPpEuVgg+jSJUuP0BDQ01DB0WkoERBkCDZazvx2mjWWltWeBSZZqXdnaM7d2Y0bBka5Xe73UxxbNsukK5lbeD5alXcDYdDrQDM5x/ywTAMedbsanIUl4lJkqDTOcYGYL0uPzFmQie8BjCmI8uANM0ghEB9fw8nRx7uBoNcQa/Xy6bTOcKQ469E+pumAs1GA81Wo1Rw2+9nr+OJBJimCVJycy7Ao1yRW7Nw/8LAmCXV7LhOFUAKFp9L+H4A0zLAOcfVaYivGKjbkOfzuyPVmQaD4zjVEkjB22wOPwhgGDrCMMLlYSiTVTxOHJmYG1z7BeAHEGmKNE2kAhVlCSaEWKPZaG56QAqiOEKSiH89YIyh3faqJhKAh6E0SXlACqh+CuWBEAkcx90EUBc0TUOWJRUPlJHkgevugvNAAlqtOkajUTkH1IXFcgldZ9IDZSIB2vW8jXKqgJ8BNEhqfP2A4/qMyzlQgIexK8ecxpjC8w5KBbRMtES0PLQsdO77T0X91M6ZdVG8x3EM+l/swjYb/Q0cAwEgduvwJwAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\axis_top.png","name":"axis_top.png","folder":"block","namespace":"create","id":"6","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"69c7b327-9f59-d51a-b23f-e8c50e20fd12","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAaklEQVQ4T+2SMQ4AERBFv16h5W5atcohVGrXJBOhmL3A2rBa089L/ssTODxx+I8LwNyBc46VUui9g4iQc371NZXovWdjDFprqLUixrgHCCGwlBJjDJRSkFLaA1hrWWv9f8JqYDekj5BWJT4NbygR50R18wAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forge 15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\andesite_casing.png","name":"andesite_casing.png","folder":"block","namespace":"create","id":"7","particle":false,"visible":true,"mode":"bitmap","saved":true,"uuid":"e651b58d-5e59-ec92-94cd-965bd6802735","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACeUlEQVQ4T32Tz2vTYBjHvzFpmqRpfnSuXec2x+qcuE30puBF8DLBw7wIAw8yNwTxNMF/QvAkCAqCV0EFQS+7O5QNWd1g4rZWZmfbuSVb2zdp0kXedySdDnwuyZP34ZPn/T7fh5ucngzwnyCERKeyLIPmh58cBeQGTqFBXIiiwIpbrX00mwRJVYMfBBA4jn23bAtyQgfP7UPgeXxdyiMCzL1+wop0VcRGdQ/ZlAbP9xETePB8gI1qDV1mEnXHBcDh3NgdrK19OwAMnR3F51ePYWgyEpKAH1sOuk0ZruchHoshCAIUKxayKRWKxKNUqeHC9btYXft+ADBMA6WPbyAIxzCc68RKqY6sLqLhNGFqCThuE792PehxIAhaWP9p4+KNe20A1WDh3VOYmoxcj4nF9SrO9KaxbdciQLFqoz9toE4I62Do6m0QZ+9vDXRVYh3ML5WQ68vAaTpQJBFJRcDC8iZOdOlRB4NXbsLasdoazL58hIzRBtDiMDIphQFUU4dP6rBrLrsCm8LMw5mgwzyO/PtnkQa0AwqQ4zEQ10MIONzB5YkH+DL/qS3i5txbJJRYpEFaU44ABvs7Iw3oFKIOZCmJldkXSKeS0JMSNu0mU5zenwbVIF/YikSs/CYYvTZ11Ei9GYMBChWLFdP5h1egADqZ8tYutu0Gui+Nt0WkY6RO7Osy2R8L5R1mGsf1IcUFZp7Vko2TaQOu56NBPJwfv4+V5Ty4iVsTwcDAaSx+eA5VFsHzQLFkoSdjokaobam9YyhbHjpUEV6rBVHgMTI2dWAkChgZHmXLFIZmGuzVd9qbSPOwRpHj7DxaJpqEa0tXNYx/V/lwXVjzB52xTSnD2+HhAAAAAElFTkSuQmCC"}]} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/white_sail.json b/src/main/resources/assets/create/models/block/white_sail.json deleted file mode 100644 index dbeda7194..000000000 --- a/src/main/resources/assets/create/models/block/white_sail.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/sail/canvas_white", - "1": "create:block/sail/frame", - "particle": "#0" - }, - "elements": [ - { - "from": [0, 5, 13], - "to": [3, 9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 8]}, - "faces": { - "north": {"uv": [5, 9, 8, 13], "texture": "#1"}, - "east": {"uv": [2, 9, 5, 13], "texture": "#1"}, - "south": {"uv": [8, 9, 11, 13], "texture": "#1"}, - "west": {"uv": [11, 9, 14, 13], "texture": "#1"}, - "down": {"uv": [13, 13, 16, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [0, 5, 0], - "to": [3, 9, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, -5]}, - "faces": { - "north": {"uv": [11, 9, 14, 13], "texture": "#1"}, - "east": {"uv": [5, 9, 8, 13], "texture": "#1"}, - "south": {"uv": [2, 9, 5, 13], "texture": "#1"}, - "west": {"uv": [8, 9, 11, 13], "texture": "#1"}, - "down": {"uv": [13, 0, 16, 3], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [13, 5, 13], - "to": [16, 9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [21, 14, 8]}, - "faces": { - "north": {"uv": [2, 9, 5, 13], "texture": "#1"}, - "east": {"uv": [8, 9, 11, 13], "texture": "#1"}, - "south": {"uv": [11, 9, 14, 13], "texture": "#1"}, - "west": {"uv": [5, 9, 8, 13], "texture": "#1"}, - "down": {"uv": [0, 13, 3, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [13, 5, 0], - "to": [16, 9, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [21, 14, -5]}, - "faces": { - "north": {"uv": [8, 9, 11, 13], "texture": "#1"}, - "east": {"uv": [11, 9, 14, 13], "texture": "#1"}, - "south": {"uv": [5, 9, 8, 13], "texture": "#1"}, - "west": {"uv": [2, 9, 5, 13], "texture": "#1"}, - "down": {"uv": [0, 0, 3, 3], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [3, 6, 14], - "to": [13, 9, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [11, 15, 8]}, - "faces": { - "north": {"uv": [3, 6, 13, 9], "texture": "#1"}, - "south": {"uv": [3, 3, 13, 6], "texture": "#1"}, - "down": {"uv": [3, 14, 13, 16], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [0, 6, 3], - "to": [2, 9, 13], - "faces": { - "east": {"uv": [3, 6, 13, 9], "texture": "#1"}, - "west": {"uv": [3, 3, 13, 6], "texture": "#1"}, - "down": {"uv": [14, 3, 16, 13], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [3, 6, 0], - "to": [13, 9, 2], - "faces": { - "north": {"uv": [3, 3, 13, 6], "texture": "#1"}, - "south": {"uv": [3, 6, 13, 9], "texture": "#1"}, - "down": {"uv": [3, 0, 13, 2], "rotation": 180, "texture": "#1"} - } - }, - { - "from": [14, 6, 3], - "to": [16, 9, 13], - "faces": { - "east": {"uv": [3, 3, 13, 6], "texture": "#1"}, - "west": {"uv": [3, 6, 13, 9], "texture": "#1"}, - "down": {"uv": [0, 3, 2, 13], "rotation": 180, "texture": "#1"} - } - }, - { - "name": "Sail", - "from": [0, 9, 0], - "to": [16, 10, 16], - "faces": { - "north": {"uv": [0, 0, 16, 1], "rotation": 180, "texture": "#0"}, - "east": {"uv": [15, 0, 16, 16], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 15, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 0, 1, 16], "rotation": 270, "texture": "#0"}, - "up": {"uv": [16, 16, 0, 0], "texture": "#0"}, - "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "thirdperson_lefthand": { - "rotation": [75, 45, 0], - "translation": [0, 2.5, 0], - "scale": [0.375, 0.375, 0.375] - }, - "firstperson_righthand": { - "rotation": [0, 45, 0], - "scale": [0.4, 0.4, 0.4] - }, - "firstperson_lefthand": { - "rotation": [0, 225, 0], - "scale": [0.4, 0.4, 0.4] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.25, 0.25, 0.25] - }, - "gui": { - "rotation": [30, 315, -90], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [-90, 0, 0], - "translation": [0, 0, -1.25], - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/entity/crafting_blueprint_large.json b/src/main/resources/assets/create/models/entity/crafting_blueprint_large.json deleted file mode 100644 index 2fdd1143c..000000000 --- a/src/main/resources/assets/create/models/entity/crafting_blueprint_large.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:entity/blueprint_large", - "particle": "create:entity/blueprint_large" - }, - "elements": [ - { - "from": [ - -16, - 0, - -16 - ], - "to": [ - 32, - 1, - 32 - ], - "faces": { - "north": { - "uv": [ - 0, - 0, - 12, - 0.25 - ], - "rotation": 180, - "texture": "#0" - }, - "east": { - "uv": [ - 11.75, - 0, - 12, - 12 - ], - "rotation": 90, - "texture": "#0" - }, - "south": { - "uv": [ - 0, - 11.75, - 12, - 12 - ], - "texture": "#0" - }, - "west": { - "uv": [ - 0, - 0, - 0.25, - 12 - ], - "rotation": 270, - "texture": "#0" - }, - "up": { - "uv": [ - 0, - 0, - 12, - 12 - ], - "texture": "#0" - }, - "down": { - "uv": [ - 0, - 0, - 12, - 12 - ], - "rotation": 270, - "texture": "#0" - } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/entity/crafting_blueprint_medium.json b/src/main/resources/assets/create/models/entity/crafting_blueprint_medium.json deleted file mode 100644 index 6dcdf49dc..000000000 --- a/src/main/resources/assets/create/models/entity/crafting_blueprint_medium.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:entity/blueprint_medium", - "particle": "create:entity/blueprint_medium" - }, - "elements": [ - { - "from": [ - -8, - 0, - -8 - ], - "to": [ - 24, - 1, - 24 - ], - "faces": { - "north": { - "uv": [ - 0, - 0, - 16, - 0.5 - ], - "rotation": 180, - "texture": "#0" - }, - "east": { - "uv": [ - 0, - 15.5, - 16, - 16 - ], - "rotation": 180, - "texture": "#0" - }, - "south": { - "uv": [ - 0, - 15.5, - 16, - 16 - ], - "texture": "#0" - }, - "west": { - "uv": [ - 0, - 0, - 0.5, - 16 - ], - "rotation": 270, - "texture": "#0" - }, - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#0" - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "rotation": 270, - "texture": "#0" - } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/entity/crafting_blueprint_small.json b/src/main/resources/assets/create/models/entity/crafting_blueprint_small.json deleted file mode 100644 index e70b7bbf5..000000000 --- a/src/main/resources/assets/create/models/entity/crafting_blueprint_small.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:entity/blueprint_small", - "particle": "create:entity/blueprint_small" - }, - "elements": [ - { - "from": [ - 0, - 0, - 0 - ], - "to": [ - 16, - 1, - 16 - ], - "faces": { - "north": { - "uv": [ - 0, - 0, - 16, - 1 - ], - "rotation": 180, - "texture": "#0" - }, - "east": { - "uv": [ - 0, - 15, - 16, - 16 - ], - "rotation": 180, - "texture": "#0" - }, - "south": { - "uv": [ - 0, - 15, - 16, - 16 - ], - "texture": "#0" - }, - "west": { - "uv": [ - 0, - 0, - 1, - 16 - ], - "rotation": 270, - "texture": "#0" - }, - "up": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "texture": "#0" - }, - "down": { - "uv": [ - 0, - 0, - 16, - 16 - ], - "rotation": 270, - "texture": "#0" - } - } - } - ] -} diff --git a/src/main/resources/assets/create/models/entity/minecart_coupling/attachment.json b/src/main/resources/assets/create/models/entity/minecart_coupling/attachment.json deleted file mode 100644 index 29d9735c7..000000000 --- a/src/main/resources/assets/create/models/entity/minecart_coupling/attachment.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:entity/coupling", - "particle": "create:entity/coupling" - }, - "elements": [ - { - "from": [-2.5, -2.5, -2.5], - "to": [2.5, -1.5, 2.5], - "rotation": {"angle": 0, "axis": "y", "origin": [2.5, -2.5, 0]}, - "faces": { - "north": {"uv": [1, 5, 0, 10], "texture": "#0"}, - "east": {"uv": [5, 5, 0, 6], "texture": "#0"}, - "south": {"uv": [5, 5, 4, 10], "texture": "#0"}, - "west": {"uv": [5, 5, 0, 6], "texture": "#0"}, - "up": {"uv": [0, 10, 5, 5], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 10, 5, 5], "rotation": 90, "texture": "#0"} - } - }, - { - "from": [-3.5, -2.5, 0.5], - "to": [2.5, -1.5, 1.5], - "rotation": {"angle": 22.5, "axis": "z", "origin": [2.5, -2.5, 1.5]}, - "faces": { - "north": {"uv": [2, 5, 1, 10], "texture": "#0"}, - "south": {"uv": [2, 5, 1, 10], "texture": "#0"}, - "up": {"uv": [2, 5, 1, 10], "texture": "#0"}, - "down": {"uv": [2, 5, 1, 10], "texture": "#0"} - } - }, - { - "from": [-3.5, -2.5, -1.5], - "to": [2.5, -1.5, -0.5], - "rotation": {"angle": 22.5, "axis": "z", "origin": [2.5, -2.5, 1.5]}, - "faces": { - "north": {"uv": [2, 5, 1, 10], "texture": "#0"}, - "south": {"uv": [2, 5, 1, 10], "texture": "#0"}, - "up": {"uv": [2, 5, 1, 10], "texture": "#0"}, - "down": {"uv": [2, 5, 1, 10], "texture": "#0"} - } - }, - { - "from": [-1, -1.5, -1], - "to": [1, 2.5, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [0.5, 0, -0.5]}, - "faces": { - "north": {"uv": [1, 5, 0, 9], "texture": "#0"}, - "east": {"uv": [1, 5, 0, 9], "texture": "#0"}, - "south": {"uv": [1, 5, 0, 9], "texture": "#0"}, - "west": {"uv": [1, 5, 0, 9], "texture": "#0"}, - "up": {"uv": [1, 5, 0, 6], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/entity/minecart_coupling/cart_coupling.bbmodel b/src/main/resources/assets/create/models/entity/minecart_coupling/cart_coupling.bbmodel deleted file mode 100644 index e3f3ab67d..000000000 --- a/src/main/resources/assets/create/models/entity/minecart_coupling/cart_coupling.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"","ambientocclusion":true,"front_gui_light":false,"resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[-2.5,-2.5,-2.5],"to":[2.5,-1.5,2.5],"autouv":0,"color":1,"locked":false,"origin":[2.5,-2.5,0],"faces":{"north":{"uv":[1,5,0,10],"texture":0},"east":{"uv":[5,5,0,6],"texture":0},"south":{"uv":[5,5,4,10],"texture":0},"west":{"uv":[5,5,0,6],"texture":0},"up":{"uv":[0,10,5,5],"rotation":90,"texture":0},"down":{"uv":[0,10,5,5],"rotation":90,"texture":0}},"uuid":"2ab28291-d8a0-1c59-0932-fd688d885b36"},{"name":"cube","from":[-3.5,-2.5,0.5],"to":[2.5,-1.5,1.5],"autouv":0,"color":1,"locked":false,"rotation":[0,0,22.5],"origin":[2.5,-2.5,1.5],"faces":{"north":{"uv":[2,5,1,10],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[2,5,1,10],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[2,5,1,10],"texture":0},"down":{"uv":[2,5,1,10],"texture":0}},"uuid":"161c9d0c-ea0d-7643-ea35-2a2b60015c66"},{"name":"cube","from":[-1,-1.5,-1],"to":[1,2.5,1],"autouv":0,"color":0,"locked":false,"origin":[0.5,0,-0.5],"faces":{"north":{"uv":[1,5,0,9],"texture":0},"east":{"uv":[1,5,0,9],"texture":0},"south":{"uv":[1,5,0,9],"texture":0},"west":{"uv":[1,5,0,9],"texture":0},"up":{"uv":[1,5,0,6],"texture":0},"down":{"uv":[0,0,0,0],"texture":null}},"uuid":"df623d06-f1ee-4e7a-d324-cca888af8748"},{"name":"cube","from":[-3.5,-2.5,-1.5],"to":[2.5,-1.5,-0.5],"autouv":0,"color":1,"locked":false,"rotation":[0,0,22.5],"origin":[2.5,-2.5,1.5],"faces":{"north":{"uv":[2,5,1,10],"texture":0},"east":{"uv":[0,0,0,0],"texture":null},"south":{"uv":[2,5,1,10],"texture":0},"west":{"uv":[0,0,0,0],"texture":null},"up":{"uv":[2,5,1,10],"texture":0},"down":{"uv":[2,5,1,10],"texture":0}},"uuid":"3cc3b4bd-1a33-b861-6e08-b88cb413b6a3"},{"name":"cube","from":[-2.5,-1,-2.5],"to":[2.5,1,2.5],"autouv":0,"color":2,"locked":false,"origin":[-5.5,7,5.5],"faces":{"north":{"uv":[10,0,5,2],"texture":0},"east":{"uv":[10,0,5,2],"texture":0},"south":{"uv":[10,0,5,2],"texture":0},"west":{"uv":[10,0,5,2],"texture":0},"up":{"uv":[5,0,0,5],"texture":0},"down":{"uv":[5,0,0,5],"texture":0}},"uuid":"1d3fae57-f8fb-8ae5-6b58-a9545e59439a"}],"outliner":["2ab28291-d8a0-1c59-0932-fd688d885b36","161c9d0c-ea0d-7643-ea35-2a2b60015c66","3cc3b4bd-1a33-b861-6e08-b88cb413b6a3","df623d06-f1ee-4e7a-d324-cca888af8748","1d3fae57-f8fb-8ae5-6b58-a9545e59439a"],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forgespace 1.15\\Create\\src\\main\\resources\\assets\\create\\textures\\entity\\coupling.png","name":"coupling.png","folder":"entity","namespace":"create","id":"0","particle":true,"mode":"bitmap","saved":true,"uuid":"b6862380-7179-b672-5fd5-f1caa05b56cf","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAm0lEQVQ4T2PMK638Ly4ixAADL9+8AzPRxSZ1tzPCFSExGFs7u/+DND15cJdBRkEZrPHsmdMM/KIScGUfX79gWLd6FW4DQBrevn3LICwszGBlbcPw8+dPhuryUqwa0F2B1QV3Hj5mmD9tEnEGwMKAnZ0dbDPIO7j8izUMgkLD/oP8C/InjMbl31EDsIUAAwNRUYVdK0R01AAqhAEAGbtwESadp4gAAAAASUVORK5CYII="}]} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/entity/minecart_coupling/connector.json b/src/main/resources/assets/create/models/entity/minecart_coupling/connector.json deleted file mode 100644 index bd660976d..000000000 --- a/src/main/resources/assets/create/models/entity/minecart_coupling/connector.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:entity/coupling", - "particle": "create:entity/coupling" - }, - "elements": [ - { - "from": [0, -0.75, -1], - "to": [16, 0.75, 1], - "rotation": {"angle": 0, "axis": "y", "origin": [21, 7, 7]}, - "faces": { - "north": {"uv": [5, 2, 6, 4], "texture": "#0"}, - "east": {"uv": [5, 2, 6, 4], "texture": "#0"}, - "south": {"uv": [5, 2, 6, 4], "texture": "#0"}, - "west": {"uv": [5, 2, 6, 4], "texture": "#0"}, - "up": {"uv": [5, 2, 6, 3], "texture": "#0"}, - "down": {"uv": [5, 3, 6, 4], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/entity/minecart_coupling/ring.json b/src/main/resources/assets/create/models/entity/minecart_coupling/ring.json deleted file mode 100644 index b94fbc4b3..000000000 --- a/src/main/resources/assets/create/models/entity/minecart_coupling/ring.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:entity/coupling", - "particle": "create:entity/coupling" - }, - "elements": [ - { - "from": [-2.5, -1, -2.5], - "to": [2.5, 1, 2.5], - "rotation": {"angle": 0, "axis": "y", "origin": [-5.5, 7, 5.5]}, - "faces": { - "north": {"uv": [10, 0, 5, 2], "texture": "#0"}, - "east": {"uv": [10, 0, 5, 2], "texture": "#0"}, - "south": {"uv": [10, 0, 5, 2], "texture": "#0"}, - "west": {"uv": [10, 0, 5, 2], "texture": "#0"}, - "up": {"uv": [5, 0, 0, 5], "texture": "#0"}, - "down": {"uv": [5, 0, 0, 5], "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/attribute_filter.json b/src/main/resources/assets/create/models/item/attribute_filter.json deleted file mode 100644 index 93cc3e8e0..000000000 --- a/src/main/resources/assets/create/models/item/attribute_filter.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "create:item/filter", - "textures": { - "0": "create:item/property_filter", - "particle": "create:item/property_filter" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/chromatic_compound.json b/src/main/resources/assets/create/models/item/chromatic_compound.json deleted file mode 100644 index 9d9c1ed17..000000000 --- a/src/main/resources/assets/create/models/item/chromatic_compound.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "create:item/chromatic_compound_0", - "layer1": "create:item/chromatic_compound_1", - "layer2": "create:item/chromatic_compound_2" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/extendo_grip/Extender.bbmodel b/src/main/resources/assets/create/models/item/extendo_grip/Extender.bbmodel deleted file mode 100644 index 461da3ca3..000000000 --- a/src/main/resources/assets/create/models/item/extendo_grip/Extender.bbmodel +++ /dev/null @@ -1 +0,0 @@ -{"meta":{"format_version":"3.2","model_format":"java_block","box_uv":false},"name":"Extender","parent":"create:item/handheld_blockzapper/item","ambientocclusion":false,"front_gui_light":false,"resolution":{"width":16,"height":16},"elements":[{"name":"cube","from":[6,8,7],"to":[10,11,13],"autouv":0,"color":7,"locked":false,"origin":[9,8.5,9.5],"faces":{"north":{"uv":[14,0,18,3],"rotation":180,"texture":0},"east":{"uv":[10,3,16,6],"texture":0},"south":{"uv":[12,0,16,3],"rotation":180,"texture":0},"west":{"uv":[10,3,16,6],"rotation":180,"texture":0},"up":{"uv":[10,0,16,4],"rotation":90,"texture":0},"down":{"uv":[10,0,16,4],"rotation":270,"texture":0}},"uuid":"588069ee-0665-a5f1-197f-eb6b0f5fa4f8"},{"name":"cube","from":[7,3.8000000000000007,11.4],"to":[9,9.8,14.4],"autouv":0,"color":7,"locked":false,"rotation":[-22.5,0,0],"origin":[8.5,4.5,14],"faces":{"north":{"uv":[4,5,6,11],"texture":0},"east":{"uv":[3,5,6,11],"texture":0},"south":{"uv":[4,5,6,11],"texture":0},"west":{"uv":[3,5,6,11],"texture":0},"up":{"uv":[0,0,2,3],"rotation":180,"texture":0},"down":{"uv":[10,3,12,6],"texture":0}},"uuid":"439c659e-936b-79ca-4d43-ba49bd6ed1eb"},{"name":"cube","from":[5,7,5],"to":[11,11,7],"autouv":0,"color":7,"locked":false,"origin":[9,8.5,7.5],"faces":{"north":{"uv":[14,0,20,4],"rotation":180,"texture":0},"east":{"uv":[12,2,14,6],"texture":0},"south":{"uv":[14,0,20,4],"rotation":180,"texture":0},"west":{"uv":[14,1,16,5],"rotation":180,"texture":0},"up":{"uv":[14,0,16,6],"rotation":90,"texture":0},"down":{"uv":[12,0,14,6],"rotation":270,"texture":0}},"uuid":"295f558c-2449-03e9-84a4-28acb465148b"},{"name":"cube","from":[7.5,4.800000000000001,9.4],"to":[8.5,10.8,12.4],"autouv":0,"color":7,"locked":false,"rotation":[-22.5,0,0],"origin":[8,5.5,12],"faces":{"north":{"uv":[14,6,15,12],"texture":0},"east":{"uv":[14,6,17,12],"texture":0},"south":{"uv":[0,0,0,0],"texture":null},"west":{"uv":[14,6,17,12],"texture":0},"up":{"uv":[0,0,0,0],"rotation":180,"texture":null},"down":{"uv":[14,6,15,9],"texture":0}},"uuid":"200ef3f9-5baa-19ea-29da-3ec977ebeeb5"},{"name":"Cap","from":[5,6,1],"to":[11,12,3],"autouv":0,"color":2,"locked":false,"origin":[8,9,16],"faces":{"north":{"uv":[10,6,16,12],"texture":3},"east":{"uv":[0,14,6,16],"rotation":90,"texture":3},"south":{"uv":[10,6,16,12],"texture":3},"west":{"uv":[0,14,6,16],"rotation":90,"texture":3},"up":{"uv":[0,14,6,16],"rotation":180,"texture":3},"down":{"uv":[0,14,6,16],"texture":3}},"uuid":"9e528385-21ff-123d-3604-cb778708d06f"},{"name":"Cog","from":[7,5,3],"to":[9,13,5],"autouv":0,"color":1,"locked":false,"origin":[7.5,11.5,9],"faces":{"north":{"uv":[4,4,5,9],"texture":4},"east":{"uv":[4,6,6,11],"texture":4},"south":{"uv":[6,7,8,12],"texture":4},"west":{"uv":[5,3,7,8],"texture":4},"up":{"uv":[4,6,5,8],"rotation":180,"texture":4},"down":{"uv":[5,6,6,8],"rotation":180,"texture":4}},"uuid":"263441be-e5c7-8018-bfcd-111d292aee37"},{"name":"Cog","from":[4,8,3],"to":[12,10,5],"autouv":0,"color":1,"locked":false,"origin":[8,9,5],"faces":{"north":{"uv":[4,4,5,9],"rotation":270,"texture":4},"east":{"uv":[4,6,5,8],"rotation":270,"texture":4},"south":{"uv":[6,7,8,12],"rotation":90,"texture":4},"west":{"uv":[5,6,6,8],"rotation":270,"texture":4},"up":{"uv":[5,3,7,8],"rotation":90,"texture":4},"down":{"uv":[4,6,6,11],"rotation":90,"texture":4}},"uuid":"3e57ee63-3aa1-1a3b-50ca-a372707dcad4"},{"name":"Cog","from":[7,5,3],"to":[9,13,5],"autouv":0,"color":1,"locked":false,"rotation":[0,0,45],"origin":[8,9,5],"faces":{"north":{"uv":[4,4,5,9],"rotation":180,"texture":4},"east":{"uv":[5,3,7,8],"rotation":180,"texture":4},"south":{"uv":[6,7,8,12],"rotation":180,"texture":4},"west":{"uv":[4,6,6,11],"rotation":180,"texture":4},"up":{"uv":[5,6,6,8],"texture":4},"down":{"uv":[4,6,5,8],"texture":4}},"uuid":"4b2994a4-392c-85c0-bea1-b36a010af6c3"},{"name":"Cog","from":[7,5,3],"to":[9,13,5],"autouv":0,"color":1,"locked":false,"rotation":[0,0,-45],"origin":[8,9,5],"faces":{"north":{"uv":[4,4,5,9],"rotation":180,"texture":4},"east":{"uv":[5,3,7,8],"rotation":180,"texture":4},"south":{"uv":[6,7,8,12],"rotation":180,"texture":4},"west":{"uv":[4,6,6,11],"rotation":180,"texture":4},"up":{"uv":[5,6,6,8],"texture":4},"down":{"uv":[4,6,5,8],"texture":4}},"uuid":"a4317062-fe08-df89-6ece-e55e2d5aea8f"},{"name":"cube","from":[6,9,0],"to":[10,15,2],"autouv":0,"color":4,"locked":false,"rotation":[-45,0,0],"origin":[8,9,1],"faces":{"north":{"uv":[6,0,10,6],"texture":0},"east":{"uv":[6,8,8,14],"texture":0},"south":{"uv":[6,0,10,6],"texture":0},"west":{"uv":[6,8,8,14],"rotation":180,"texture":0},"up":{"uv":[6,6,10,8],"rotation":180,"texture":0},"down":{"uv":[6,6,10,8],"rotation":180,"texture":0}},"uuid":"bbe54fbf-411e-fc5b-a72b-136f666f9def"},{"name":"cube","from":[6,4.5,-12.5],"to":[10,10.5,-10.5],"autouv":0,"color":4,"locked":false,"rotation":[-45,0,0],"origin":[8,5.5,-11.5],"faces":{"north":{"uv":[6,0,10,6],"texture":0},"east":{"uv":[6,8,8,14],"texture":0},"south":{"uv":[6,0,10,6],"texture":0},"west":{"uv":[6,8,8,14],"rotation":180,"texture":0},"up":{"uv":[6,6,10,8],"rotation":180,"texture":0},"down":{"uv":[6,6,10,8],"rotation":180,"texture":0}},"uuid":"2030ff88-1e08-106d-1646-5962bf7a3cf7"},{"name":"cube","from":[7,11.5,-14.5],"to":[9,13.5,-2.5],"autouv":0,"color":4,"locked":false,"rotation":[-45,0,0],"origin":[10.5,12.5,-3.5],"faces":{"north":{"uv":[0,0,1,1],"texture":0},"east":{"uv":[4,0,6,12],"rotation":270,"texture":0},"south":{"uv":[0,0,1,1],"rotation":180,"texture":0},"west":{"uv":[4,0,6,12],"rotation":90,"texture":0},"up":{"uv":[4,0,6,12],"rotation":180,"texture":0},"down":{"uv":[4,0,6,12],"texture":0}},"uuid":"50e41586-19ef-c35d-0adb-4eac0717c8c4"},{"name":"cube","from":[7,3,0],"to":[9,9,2],"autouv":0,"color":4,"locked":false,"rotation":[45,0,0],"origin":[8,9,1],"faces":{"north":{"uv":[6,8,8,14],"rotation":180,"texture":0},"east":{"uv":[6,8,8,14],"rotation":180,"texture":0},"south":{"uv":[6,8,8,14],"rotation":180,"texture":0},"west":{"uv":[6,8,8,14],"rotation":180,"texture":0},"up":{"uv":[0,0,1,1],"rotation":180,"texture":0},"down":{"uv":[0,0,1,1],"rotation":180,"texture":0}},"uuid":"a227d299-0c15-47f2-20de-2ddb41411917"},{"name":"cube","from":[7,7.75,-12.5],"to":[9,13.75,-10.5],"autouv":0,"color":4,"locked":false,"rotation":[45,0,0],"origin":[8,12.75,-11.5],"faces":{"north":{"uv":[6,8,8,14],"rotation":180,"texture":0},"east":{"uv":[6,8,8,14],"rotation":180,"texture":0},"south":{"uv":[6,8,8,14],"rotation":180,"texture":0},"west":{"uv":[6,8,8,14],"rotation":180,"texture":0},"up":{"uv":[0,0,1,1],"rotation":180,"texture":0},"down":{"uv":[0,0,1,1],"rotation":180,"texture":0}},"uuid":"845cd66b-d882-419c-b677-da4c64c81993"},{"name":"cube","from":[6,4.5,-4.5],"to":[10,16.5,-2.5],"autouv":0,"color":4,"locked":false,"rotation":[-45,0,0],"origin":[10,5.5,-3.5],"faces":{"north":{"uv":[0,0,4,12],"texture":0},"east":{"uv":[3,0,5,12],"rotation":180,"texture":0},"south":{"uv":[0,0,4,12],"texture":0},"west":{"uv":[4,0,6,12],"rotation":180,"texture":0},"up":{"uv":[0,0,4,2],"rotation":180,"texture":0},"down":{"uv":[0,0,4,2],"texture":0}},"uuid":"82ffca38-ba3c-eb72-aae3-fb59c06f18af"},{"name":"Cap","from":[5,6,-17],"to":[11,12,-15],"autouv":0,"color":2,"locked":false,"origin":[8,9,-2],"faces":{"north":{"uv":[10,6,16,12],"texture":3},"east":{"uv":[0,14,6,16],"rotation":90,"texture":3},"south":{"uv":[10,6,16,12],"texture":3},"west":{"uv":[0,14,6,16],"rotation":90,"texture":3},"up":{"uv":[0,14,6,16],"rotation":180,"texture":3},"down":{"uv":[0,14,6,16],"texture":3}},"uuid":"6d4dc556-7331-b8aa-3d44-f61656c59821"},{"name":"cube","from":[6,7,-19],"to":[10,10,-17],"autouv":0,"color":0,"locked":false,"origin":[8,8,-8],"faces":{"north":{"uv":[0,0,4,3],"texture":2},"east":{"uv":[0,0,2,3],"texture":2},"south":{"uv":[0,0,4,3],"texture":2},"west":{"uv":[0,0,2,3],"texture":2},"up":{"uv":[0,0,2,4],"rotation":90,"texture":2},"down":{"uv":[0,0,2,4],"rotation":270,"texture":2}},"uuid":"3f829a55-d9d7-975a-7292-19ad3ca6db1c"},{"name":"cube","from":[5,8,-21],"to":[11,12,-18],"autouv":0,"color":0,"locked":false,"origin":[9,10,-8],"faces":{"north":{"uv":[6,1,10,7],"rotation":90,"texture":1},"east":{"uv":[1,4,4,8],"texture":1},"south":{"uv":[6,1,10,7],"rotation":90,"texture":1},"west":{"uv":[1,4,4,8],"texture":1},"up":{"uv":[1,2,4,8],"rotation":90,"texture":1},"down":{"uv":[1,2,4,8],"rotation":270,"texture":1}},"uuid":"00e5de44-ddd2-8955-a6a4-3ba85e9886f2"},{"name":"cube","from":[3,7,-22],"to":[5,9,-19],"autouv":0,"color":0,"locked":false,"origin":[9,10,-8],"faces":{"north":{"uv":[0,0,2,2],"texture":1},"east":{"uv":[0,2,2,5],"rotation":90,"texture":1},"south":{"uv":[0,0,2,2],"texture":1},"west":{"uv":[0,2,2,5],"rotation":90,"texture":1},"up":{"uv":[0,2,2,5],"rotation":180,"texture":1},"down":{"uv":[0,2,2,5],"texture":1}},"uuid":"e7bacced-794c-d42e-8221-6a26b0f44a74"},{"name":"cube","from":[5,6,-21],"to":[11,8,-18],"autouv":0,"color":5,"locked":false,"origin":[9,10,-8],"faces":{"north":{"uv":[0,1,2,7],"rotation":90,"texture":1},"east":{"uv":[1,4,4,6],"texture":1},"south":{"uv":[0,1,2,7],"rotation":90,"texture":1},"west":{"uv":[1,4,4,6],"texture":1},"up":{"uv":[1,2,4,8],"rotation":90,"texture":1},"down":{"uv":[1,2,4,8],"rotation":270,"texture":1}},"uuid":"221c0a92-c778-a733-da19-153ce5fa7c08"},{"name":"cube","from":[7,12,-23],"to":[9,14,-19],"autouv":0,"color":1,"locked":false,"origin":[9,8,-7],"faces":{"north":{"uv":[0,0,2,2],"texture":1},"east":{"uv":[1,4,5,6],"texture":1},"south":{"uv":[0,0,2,2],"texture":1},"west":{"uv":[1,4,5,6],"texture":1},"up":{"uv":[0,3,2,7],"rotation":180,"texture":1},"down":{"uv":[0,3,2,7],"rotation":180,"texture":1}},"uuid":"f690537c-a5f7-2c24-54f7-531925dd22b0"},{"name":"cube","from":[5,12,-24],"to":[7,14,-19],"autouv":0,"color":7,"locked":false,"origin":[9,8,-7],"faces":{"north":{"uv":[0,0,2,2],"texture":1},"east":{"uv":[1,4,6,6],"texture":1},"south":{"uv":[0,0,2,2],"texture":1},"west":{"uv":[0,2,2,7],"rotation":90,"texture":1},"up":{"uv":[0,2,2,7],"rotation":180,"texture":1},"down":{"uv":[0,3,2,8],"rotation":180,"texture":1}},"uuid":"29c47014-bcad-352d-4389-5e7148d6726d"},{"name":"cube","from":[9,12,-23],"to":[11,14,-19],"autouv":0,"color":4,"locked":false,"origin":[9,8,-7],"faces":{"north":{"uv":[0,0,2,2],"texture":1},"east":{"uv":[0,3,2,7],"rotation":90,"texture":1},"south":{"uv":[0,0,2,2],"texture":1},"west":{"uv":[1,4,5,6],"texture":1},"up":{"uv":[0,3,2,7],"rotation":180,"texture":1},"down":{"uv":[0,3,2,7],"rotation":180,"texture":1}},"uuid":"112ac4d5-1c4e-f888-66f7-b1c95585e52e"}],"outliner":[{"name":"Scissor","uuid":"6a7c9736-445d-5757-6848-eb45002de99c","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["bbe54fbf-411e-fc5b-a72b-136f666f9def","2030ff88-1e08-106d-1646-5962bf7a3cf7","50e41586-19ef-c35d-0adb-4eac0717c8c4","a227d299-0c15-47f2-20de-2ddb41411917","845cd66b-d882-419c-b677-da4c64c81993","82ffca38-ba3c-eb72-aae3-fb59c06f18af"]},{"name":"Grip","uuid":"6717b97c-b0d2-1990-b41b-49d7691ccfc2","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,9.5,1],"children":["439c659e-936b-79ca-4d43-ba49bd6ed1eb","200ef3f9-5baa-19ea-29da-3ec977ebeeb5","588069ee-0665-a5f1-197f-eb6b0f5fa4f8","295f558c-2449-03e9-84a4-28acb465148b","9e528385-21ff-123d-3604-cb778708d06f"]},{"name":"hand_holding","uuid":"30022f0c-2871-785e-ad02-dfa713ea9dd6","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":[{"name":"head","uuid":"3183d065-deb7-30c9-73f2-89a45e2ad434","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["6d4dc556-7331-b8aa-3d44-f61656c59821",{"name":"Open","uuid":"303fb89b-76ad-4c68-82b4-08db52c6db37","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["3f829a55-d9d7-975a-7292-19ad3ca6db1c","00e5de44-ddd2-8955-a6a4-3ba85e9886f2","e7bacced-794c-d42e-8221-6a26b0f44a74","221c0a92-c778-a733-da19-153ce5fa7c08","f690537c-a5f7-2c24-54f7-531925dd22b0","29c47014-bcad-352d-4389-5e7148d6726d","112ac4d5-1c4e-f888-66f7-b1c95585e52e"]}]}]},{"name":"accelerator","uuid":"3e78380c-f323-b88c-ef0c-424391ee663d","export":true,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"origin":[8,8,8],"children":["263441be-e5c7-8018-bfcd-111d292aee37","3e57ee63-3aa1-1a3b-50ca-a372707dcad4","4b2994a4-392c-85c0-bea1-b36a010af6c3","a4317062-fe08-df89-6ece-e55e2d5aea8f"]}],"textures":[{"path":"C:\\Users\\simon\\Desktop\\Forgespace 1.15\\Create\\src\\main\\resources\\assets\\create\\textures\\item\\extendo_grip.png","name":"extendo_grip.png","folder":"item","namespace":"create","id":"4","particle":false,"mode":"bitmap","saved":true,"uuid":"1ef658f6-7e8e-b8b0-7f40-366ff74549b3","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACqElEQVQ4T5WSS2xMcRSHvzt37vvObc2YlBZpCFppVdUj1CNKtFKJWJAIqbARCysVCaKNShALkYiFDQuxIPpILEiot0harAipR7CoR5mHzr3TmU7/cieRKK3E2Z5zvvP7nXOks62N4mp7L2Fbp7aujJJJxcTi30m5KW7eeImpBZm/ZCqWaaGpGtnhLEowSMp1KXAcpJP7V4n7D95hG0GqqkuYGA7zLRYjIMncf/gGQ5OpW1VBZ3svlq6waFkpqqrhpdOoioJ0cOtCMeimcWyT9NAQjm2Rcj1kWSY56BGydDRV4fGL9zi2zooV5biei6kbJH4kkQ5sqRGKEiSbHcYwdLz0EG46g2MbqEGFgXgSU1cpnVNCLJEgGongel7eRiabQWrbsVQ8ePYOU5Mpn16EDxMC7MkGz5/HGM64eWtyQKYoGiWeTCKEIJfLEbItpFMH1ojbN/uwdJlFy2cQKYzgeSkE0NnxlAJLZW1jNf1fPlNghxjKZvIw365lmkhnWteJq1d6iBbaVC2eQtHEKLFEPG/pbvdrIo5JTW0pe4/dkvgttjdWCV+ddGRnrbjX04djaVTOKs43+jGtvJjOjieEQwYr11aw61DXKEBDdYnw1Y1aohQIYOgaX78nWFBbgSBHU/PlUY2/RNTPmyx8dVJL02LhT02lM0TDBWSyWXK5EabOnsSgm6L5ePeYgIbqYuGrk07sWynu3ntLdILFnMoiZk2fSf/nT3x41U9QDnD0Ys+YgMaaKcL/Uun0wXpxp7sPaSTD6oa5+Qf6MjDAt4+DhAtDtJx/NCZgw7JS4X/pmEnf56VT20QiGWd3y7Vxa/y6cZNnDq8T/s3/PN/vp8wDzh3dIDraewkZCsvrytjTdv2fE/8CXDixWXR19eDoKus3LmHTngv/BfgJAeYBineAO9QAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forgespace 1.15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\deployer.png","name":"deployer.png","folder":"block","namespace":"create","id":"18","particle":false,"mode":"bitmap","saved":true,"uuid":"fa2e621e-f026-2c79-1fd4-e73ac3790840","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhUlEQVQ4T2NcOyX+PxcnK4Nn8hxGBjIA4/a5Kf95hAQYrlx+wKAgLcCwfvcBBgEBAQZHUwMGFi5eBg4Odob//38z2AX1YrWAEeQCZXVFhnPnbzPwc7Ew7D5+DGyAqaYWw/cfPxj+/GVk4OVmZwjOWYjdgKV90f8VVeQYnj59w/Dr+zeGw2dPgQ3QVVZj+Pf3N8Pff0wMf39/Z0iu2YjbABl5aYZv334wvHv9luHExTNgAzTkVcAhAjMkoXwFdgMWdEb8l5KVYGBnZ2O4f+cRw9lr58EGKEspMrAw/yfsBZABQqJCDGJiAgw3rt6DG2Clp8vALyrK8Pv3X4afP38xuEVNwO0CTh4eBhVlSYbLF2/DDWieeJKoaGXcNC/rPwcHG9gLTEz/GGwDe4jSCEsyjOunxvz/9v03w49ffxiMTXUZDFwbSDPgxJaq/z9//mF4cv8hg6KaEoOVXztpBiztCf8Pcg4oOQtJSDHYB3eRZgAoFmCB+PbdZ5yhjSubkGQbNkMG3gAAwHySEfim8AYAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\Forgespace 1.15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\mechanical_press_head.png","name":"mechanical_press_head.png","folder":"block","namespace":"create","id":"mechanical_press_head","particle":false,"mode":"bitmap","saved":true,"uuid":"6582190a-0e3b-68f0-1ae7-b6e087c820d5","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABZklEQVQ4T32S3aqCUBCFxzLNEsGHCbzx3kf2VoLwSbzwqgjT/GnHtzkTdvScAVFw9jdrrT1OlmVms9nIdruV/X4vvu/L4XAQahxHGYZBHo+HtG0rr9dL8jx37M+fctI0NRw8Ho8WAoDquu7TxEGFnM/nJcDzPHvQcZwPgNMAd7ud3G43+827KIpvwOl0MjTxoERLlfR9b6VjYZomuVwu34AkSczc0/wbqBZZAF0oAMAUmp/Pp21iIsGqDdd1hYccyrJcZoD3MAytTJKnOQgCCwBqjBFyul6v6wC8RVFkpwLgmefBYVTVdb0OwALXyCEFoIp90BywVlXVegZIjOP44xvZQLGFFbyj7n6/y2IPCBELNDOVb+TqbpAD2aCgaZp1AAqwwFXN1xo7HKb4vxoiClhbFFBM1yUCQDFAFSyuEYAq4I1/IBoeV4o1Av4zA9JGIv5VBVZ0sbAGlAxWFei6MpXm/+o34A1rIAYg9LSXtQAAAABJRU5ErkJggg=="},{"path":"C:\\Users\\simon\\Desktop\\Forgespace 1.15\\Create\\src\\main\\resources\\assets\\create\\textures\\block\\mechanical_press_pole.png","name":"mechanical_press_pole.png","folder":"block","namespace":"create","id":"mechanical_press_pole","particle":false,"mode":"bitmap","saved":true,"uuid":"6005c314-8634-9e26-e014-6d3fed75a8b0","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABzUlEQVQ4T52TO0tCYRjH/2+adzPDrMgLXSgdgqgMh7aWdvELtLT0CZz7AG41tdkQQlODlBTRUNlpCDGTIrRAE7QT5iEO1on3AU9mDta7PO/191z+z8sEQVDi8ThcLhfq9Tr8fj+SyST4cLvdKBaLaDQaCAQCtOfz+cgmEgmyLBaLKel0GkajEbIsw+PxIJPJ0KFWq4UoirBYLIhGo4w7y2azdJbP5xGJRBi73FlX9o5vMT9thyTLGB2wYfcgTZeWZoZRehVxV3jHZlxQAfxxuVwmqAqYHTPg/RNwOQZUwOKkCVX58wegGfovwMK4gbz2238C+N7FnaRG8G+Aey5EDrxeL9lUKkWFZYdbq4pw84ypkR466DVYcXb9RPMJp0L2vsxgmlyhx60q8HXXKjidTvJYKpUgSRKq1SopRpXttg8cDgcKhQIqlQrJGw6HQSokzx/UFHgR+bo9Bf/yGvR6PXK5HBhjqNVqCIVC34Dx4R5VxlYAl/FF1OCtbw7BYBC8kXQ6HXWt2WzuHsAj4A3UqgKvi6rCkO0DikaDQZtNVaFfVwczGSiCje0TRnm1DQIcXT2i2Yl2sxX7p7d0rb0TOwL+8pk6ArqVkX+cToAvZqJXaTpk8SoAAAAASUVORK5CYII="},{"path":"C:\\Users\\simon\\Desktop\\minecraft\\textures\\block\\stripped_dark_oak_log.png","name":"stripped_dark_oak_log.png","folder":"block","namespace":"minecraft","id":"cog","particle":false,"mode":"bitmap","saved":true,"uuid":"0f6acf7e-538d-20b3-d131-66f574f11662","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABgUlEQVQ4T3WTS3LDIBBEB5Al2bGz8Dl8iZwg979DKovYsfUBkXojD4XKFTYgxDTdPY37/Ljk81srU1zkfNwJ4/s2l/V1SHLqg/4fY9b1bUjivcjXdRIHAEXHrtFiQCia4yK7xuseRfcxScoiXeNkinkLQHHb+MLiPwDADl2Q+5QUuDBAwrEPSp3Ze6cHHtOiN47zIsE7aYLTizin8+9TAgBoSstKkYJ9F6TxTm9LKSsAt5tHGwAkmHYDOO1XT66PqPOcsp7BTExk3Ma4mmgAUFND+6AUGTCACUWYygUmYwNAkSH3rZdDGyQuWR5jkm7n9R/7gDHoBGwKAwAoGKalMDD9NYD59AJQUweZTtCFsCpRRrTXcmFyCwN0kShCY+205MHEAAgYZnKmeFBH2VyuU8geF1jAVk5VF2oAowYAbKwT0CPK+9bLzz2+Bskekz0ke0Q2s/9+aLQLL0m0h0Qn0G29ttSZZr7r9SYHaGyJ8ROAw6wxjf4jYZhXA8mEejVG+QNGHkQVULwftgAAAABJRU5ErkJggg=="}],"display":{"thirdperson_righthand":{"translation":[0,0.5,-0.5],"scale":[0.55,0.55,0.55]},"thirdperson_lefthand":{"translation":[0,0.5,-0.5],"scale":[0.55,0.55,0.55]},"firstperson_righthand":{"rotation":[11,11,0],"translation":[0.25,2.25,2.75],"scale":[0.5,0.5,0.5]},"firstperson_lefthand":{"rotation":[11,11,0],"translation":[0.25,2.25,2.75],"scale":[0.5,0.5,0.5]},"ground":{"rotation":[0,0,90],"translation":[0,-0.75,4],"scale":[0.5,0.5,0.5]},"gui":{"rotation":[-23,145,0],"translation":[3,-2.25,0],"scale":[0.625,0.625,0.625]},"head":{"rotation":[0,180,0],"translation":[0,13,7]},"fixed":{"rotation":[0,90,0],"translation":[3.75,0,0],"scale":[0.5,0.5,0.5]}}} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/extendo_grip/cog.json b/src/main/resources/assets/create/models/item/extendo_grip/cog.json deleted file mode 100644 index 6fad79e2f..000000000 --- a/src/main/resources/assets/create/models/item/extendo_grip/cog.json +++ /dev/null @@ -1,65 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:item/extendo_grip/item", - "textures": { - "cog": "block/stripped_dark_oak_log" - }, - "elements": [ - { - "name": "Cog", - "from": [7, 5, 3], - "to": [9, 13, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [7.5, 11.5, 9]}, - "faces": { - "north": {"uv": [4, 4, 5, 9], "texture": "#cog"}, - "east": {"uv": [4, 6, 6, 11], "texture": "#cog"}, - "south": {"uv": [6, 7, 8, 12], "texture": "#cog"}, - "west": {"uv": [5, 3, 7, 8], "texture": "#cog"}, - "up": {"uv": [4, 6, 5, 8], "rotation": 180, "texture": "#cog"}, - "down": {"uv": [5, 6, 6, 8], "rotation": 180, "texture": "#cog"} - } - }, - { - "name": "Cog", - "from": [4, 8, 3], - "to": [12, 10, 5], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 5]}, - "faces": { - "north": {"uv": [4, 4, 5, 9], "rotation": 270, "texture": "#cog"}, - "east": {"uv": [4, 6, 5, 8], "rotation": 270, "texture": "#cog"}, - "south": {"uv": [6, 7, 8, 12], "rotation": 90, "texture": "#cog"}, - "west": {"uv": [5, 6, 6, 8], "rotation": 270, "texture": "#cog"}, - "up": {"uv": [5, 3, 7, 8], "rotation": 90, "texture": "#cog"}, - "down": {"uv": [4, 6, 6, 11], "rotation": 90, "texture": "#cog"} - } - }, - { - "name": "Cog", - "from": [7, 5, 3], - "to": [9, 13, 5], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 9, 5]}, - "faces": { - "north": {"uv": [4, 4, 5, 9], "rotation": 180, "texture": "#cog"}, - "east": {"uv": [5, 3, 7, 8], "rotation": 180, "texture": "#cog"}, - "south": {"uv": [6, 7, 8, 12], "rotation": 180, "texture": "#cog"}, - "west": {"uv": [4, 6, 6, 11], "rotation": 180, "texture": "#cog"}, - "up": {"uv": [5, 6, 6, 8], "texture": "#cog"}, - "down": {"uv": [4, 6, 5, 8], "texture": "#cog"} - } - }, - { - "name": "Cog", - "from": [7, 5, 3], - "to": [9, 13, 5], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 9, 5]}, - "faces": { - "north": {"uv": [4, 4, 5, 9], "rotation": 180, "texture": "#cog"}, - "east": {"uv": [5, 3, 7, 8], "rotation": 180, "texture": "#cog"}, - "south": {"uv": [6, 7, 8, 12], "rotation": 180, "texture": "#cog"}, - "west": {"uv": [4, 6, 6, 11], "rotation": 180, "texture": "#cog"}, - "up": {"uv": [5, 6, 6, 8], "texture": "#cog"}, - "down": {"uv": [4, 6, 5, 8], "texture": "#cog"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/extendo_grip/item.json b/src/main/resources/assets/create/models/item/extendo_grip/item.json deleted file mode 100644 index 0ac961e18..000000000 --- a/src/main/resources/assets/create/models/item/extendo_grip/item.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "3": "create:block/mechanical_press_pole", - "4": "create:item/extendo_grip", - "particle": "#4" - }, - "elements": [ - { - "from": [7, 3.8, 11.4], - "to": [9, 9.8, 14.4], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8.5, 4.5, 14]}, - "faces": { - "north": {"uv": [4, 6, 6, 12], "texture": "#4"}, - "east": {"uv": [3, 6, 6, 12], "texture": "#4"}, - "south": {"uv": [4, 6, 6, 12], "texture": "#4"}, - "west": {"uv": [3, 6, 6, 12], "texture": "#4"}, - "up": {"uv": [0, 0, 2, 3], "rotation": 180, "texture": "#4"}, - "down": {"uv": [10, 3, 12, 6], "texture": "#4"} - } - }, - { - "from": [7.5, 4.8, 9.4], - "to": [8.5, 10.8, 12.4], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 5.5, 12]}, - "faces": { - "north": {"uv": [14, 6, 15, 12], "texture": "#4"}, - "east": {"uv": [14, 6, 17, 12], "texture": "#4"}, - "west": {"uv": [14, 6, 17, 12], "texture": "#4"}, - "down": {"uv": [14, 6, 15, 9], "texture": "#4"} - } - }, - { - "from": [6, 8, 7], - "to": [10, 11, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8.5, 9.5]}, - "faces": { - "north": {"uv": [14, 0, 18, 3], "rotation": 180, "texture": "#4"}, - "east": {"uv": [10, 3, 16, 6], "texture": "#4"}, - "south": {"uv": [12, 0, 16, 3], "rotation": 180, "texture": "#4"}, - "west": {"uv": [10, 3, 16, 6], "rotation": 180, "texture": "#4"}, - "up": {"uv": [10, 0, 16, 4], "rotation": 90, "texture": "#4"}, - "down": {"uv": [10, 0, 16, 4], "rotation": 270, "texture": "#4"} - } - }, - { - "from": [5, 7, 5], - "to": [11, 11, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 8.5, 7.5]}, - "faces": { - "north": {"uv": [12, 0, 16, 6], "rotation": 90, "texture": "#4"}, - "east": {"uv": [12, 2, 14, 6], "texture": "#4"}, - "south": {"uv": [12, 0, 16, 6], "rotation": 90, "texture": "#4"}, - "west": {"uv": [14, 1, 16, 5], "rotation": 180, "texture": "#4"}, - "up": {"uv": [14, 0, 16, 6], "rotation": 90, "texture": "#4"}, - "down": {"uv": [12, 0, 14, 6], "rotation": 270, "texture": "#4"} - } - }, - { - "name": "Cap", - "from": [5, 6, 1], - "to": [11, 12, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 9, 16]}, - "faces": { - "north": {"uv": [10, 6, 16, 12], "texture": "#3"}, - "east": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#3"}, - "south": {"uv": [10, 6, 16, 12], "texture": "#3"}, - "west": {"uv": [0, 14, 6, 16], "rotation": 90, "texture": "#3"}, - "up": {"uv": [0, 14, 6, 16], "rotation": 180, "texture": "#3"}, - "down": {"uv": [0, 14, 6, 16], "texture": "#3"} - } - } - ], - "display": { - "thirdperson_righthand": { - "translation": [0, 0.5, -0.5], - "scale": [0.55, 0.55, 0.55] - }, - "thirdperson_lefthand": { - "translation": [0, 0.5, -0.5], - "scale": [0.55, 0.55, 0.55] - }, - "firstperson_righthand": { - "rotation": [11, 11, 0], - "translation": [0.25, 2.25, 2.75], - "scale": [0.5, 0.5, 0.5] - }, - "firstperson_lefthand": { - "rotation": [11, 11, 0], - "translation": [0.25, 2.25, 2.75], - "scale": [0.5, 0.5, 0.5] - }, - "ground": { - "rotation": [0, 0, 90], - "translation": [0, -0.75, 4], - "scale": [0.5, 0.5, 0.5] - }, - "gui": { - "rotation": [-23, 145, 0], - "translation": [4, -2.25, 0], - "scale": [0.625, 0.625, 0.625] - }, - "head": { - "rotation": [0, 180, 0], - "translation": [0, 13, 7] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [4.75, 0, 0], - "scale": [0.5, 0.5, 0.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/extendo_grip/thin_long.json b/src/main/resources/assets/create/models/item/extendo_grip/thin_long.json deleted file mode 100644 index 41299a0fc..000000000 --- a/src/main/resources/assets/create/models/item/extendo_grip/thin_long.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "textures": { - "4": "create:item/extendo_grip" - }, - "elements": [ - { - "name": "thin_long", - "from": [7, -1, -1], - "to": [9, 12, 1], - "rotation": {"angle": 0, "axis": "x", "origin": [10.5, 9, 0]}, - "faces": { - "north": {"uv": [4, 0, 6, 13], "texture": "#4"}, - "east": {"uv": [4, 0, 6, 13], "texture": "#4"}, - "south": {"uv": [4, 0, 6, 13], "texture": "#4"}, - "west": {"uv": [4, 0, 6, 13], "texture": "#4"}, - "up": {"uv": [6, 9, 8, 11], "rotation": 180, "texture": "#4"}, - "down": {"uv": [6, 14, 8, 16], "rotation": 180, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/extendo_grip/thin_short.json b/src/main/resources/assets/create/models/item/extendo_grip/thin_short.json deleted file mode 100644 index 428ab63b7..000000000 --- a/src/main/resources/assets/create/models/item/extendo_grip/thin_short.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "textures": { - "4": "create:item/extendo_grip" - }, - "elements": [ - { - "name": "thin_short", - "from": [7, -1, -1], - "to": [9, 6, 1], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 0]}, - "faces": { - "north": {"uv": [6, 9, 8, 16], "rotation": 180, "texture": "#4"}, - "east": {"uv": [6, 9, 8, 16], "rotation": 180, "texture": "#4"}, - "south": {"uv": [6, 9, 8, 16], "rotation": 180, "texture": "#4"}, - "west": {"uv": [6, 9, 8, 16], "rotation": 180, "texture": "#4"}, - "up": {"uv": [6, 14, 8, 16], "rotation": 180, "texture": "#4"}, - "down": {"uv": [6, 9, 8, 11], "rotation": 180, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/extendo_grip/wide_long.json b/src/main/resources/assets/create/models/item/extendo_grip/wide_long.json deleted file mode 100644 index 7704cd903..000000000 --- a/src/main/resources/assets/create/models/item/extendo_grip/wide_long.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "textures": { - "4": "create:item/extendo_grip" - }, - "elements": [ - { - "name": "wide_long", - "from": [6, -1, -1], - "to": [10, 12, 1], - "rotation": {"angle": 0, "axis": "x", "origin": [10, 4.5, -4.5]}, - "faces": { - "north": {"uv": [0, 0, 4, 13], "texture": "#4"}, - "east": {"uv": [3, 0, 5, 13], "rotation": 180, "texture": "#4"}, - "south": {"uv": [0, 0, 4, 13], "texture": "#4"}, - "west": {"uv": [4, 0, 6, 13], "rotation": 180, "texture": "#4"}, - "up": {"uv": [0, 13, 4, 15], "rotation": 180, "texture": "#4"}, - "down": {"uv": [0, 13, 4, 15], "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/extendo_grip/wide_short.json b/src/main/resources/assets/create/models/item/extendo_grip/wide_short.json deleted file mode 100644 index 9cf72b155..000000000 --- a/src/main/resources/assets/create/models/item/extendo_grip/wide_short.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "textures": { - "4": "create:item/extendo_grip" - }, - "elements": [ - { - "name": "wide_short", - "from": [6, -1, -1], - "to": [10, 6, 1], - "rotation": {"angle": 0, "axis": "x", "origin": [8, 8, 0]}, - "faces": { - "north": {"uv": [6, 0, 10, 7], "texture": "#4"}, - "east": {"uv": [6, 9, 8, 16], "texture": "#4"}, - "south": {"uv": [6, 0, 10, 7], "texture": "#4"}, - "west": {"uv": [6, 9, 8, 16], "rotation": 180, "texture": "#4"}, - "up": {"uv": [6, 7, 10, 9], "rotation": 180, "texture": "#4"}, - "down": {"uv": [6, 7, 10, 9], "rotation": 180, "texture": "#4"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/filter.json b/src/main/resources/assets/create/models/item/filter.json deleted file mode 100644 index 40fb9ed09..000000000 --- a/src/main/resources/assets/create/models/item/filter.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "create:item/filter", - "particle": "create:item/filter" - }, - "elements": [ - { - "name": "siderim", - "from": [13, 0, 3], - "to": [15, 2, 13], - "faces": { - "north": {"uv": [14, 0, 16, 2], "texture": "#0"}, - "east": {"uv": [0, 0, 2, 10], "rotation": 90, "texture": "#0"}, - "south": {"uv": [14, 0, 16, 2], "rotation": 180, "texture": "#0"}, - "west": {"uv": [14, 0, 16, 10], "rotation": 270, "texture": "#0"}, - "up": {"uv": [14, 0, 16, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [14, 0, 16, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "siderim", - "from": [1, 0, 3], - "to": [3, 2, 13], - "faces": { - "north": {"uv": [16, 0, 14, 2], "texture": "#0"}, - "east": {"uv": [14, 10, 16, 0], "rotation": 270, "texture": "#0"}, - "south": {"uv": [16, 0, 14, 2], "rotation": 180, "texture": "#0"}, - "west": {"uv": [0, 10, 2, 0], "rotation": 90, "texture": "#0"}, - "up": {"uv": [16, 0, 14, 10], "rotation": 180, "texture": "#0"}, - "down": {"uv": [16, 0, 14, 10], "rotation": 180, "texture": "#0"} - } - }, - { - "name": "net", - "from": [3, 1, 4], - "to": [13, 1.1, 12], - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "up": {"uv": [2.5, 0.5, 12.5, 8.5], "texture": "#0"}, - "down": {"uv": [2.5, 0.5, 12.5, 8.5], "texture": "#0"} - } - }, - { - "name": "toprim", - "from": [3, 0.5, 3], - "to": [13, 1.5, 4], - "faces": { - "north": {"uv": [3, 9, 13, 10], "texture": "#0"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "south": {"uv": [3, 9, 13, 10], "texture": "#0"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "up": {"uv": [3, 9, 13, 10], "texture": "#0"}, - "down": {"uv": [3, 9, 13, 10], "texture": "#0"} - } - }, - { - "name": "toprim", - "from": [3, 0.5, 12], - "to": [13, 1.5, 13], - "faces": { - "north": {"uv": [3, 9, 13, 10], "texture": "#0"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "south": {"uv": [3, 9, 13, 10], "texture": "#0"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "up": {"uv": [3, 9, 13, 10], "texture": "#0"}, - "down": {"uv": [3, 9, 13, 10], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [75, -180, 0], - "translation": [-2.75, 3.25, 3.25], - "scale": [0.5, 0.5, 0.5] - }, - "thirdperson_lefthand": { - "rotation": [75, -180, 0], - "translation": [-2.75, 3.25, 3.25], - "scale": [0.5, 0.5, 0.5] - }, - "firstperson_righthand": { - "rotation": [75, -180, 0], - "translation": [-2.75, 3.25, 3.25], - "scale": [0.5, 0.5, 0.5] - }, - "firstperson_lefthand": { - "rotation": [75, -180, 0], - "translation": [-2.75, 3.25, 3.25], - "scale": [0.5, 0.5, 0.5] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.5, 0.5, 0.5] - }, - "gui": { - "rotation": [30, 225, 0], - "translation": [0, 4.25, 0], - "scale": [0.75, 0.75, 0.75] - }, - "fixed": { - "rotation": [90, -180, 0], - "translation": [0, 0, 6.5] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_worldshaper/accelerator.json b/src/main/resources/assets/create/models/item/handheld_worldshaper/accelerator.json deleted file mode 100644 index 2cd6b1b9d..000000000 --- a/src/main/resources/assets/create/models/item/handheld_worldshaper/accelerator.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:item/handheld_worldshaper/item", - "textures": { - "2": "create:block/terrain_zapper_mesh" - }, - "elements": [ - { - "name": "Cog", - "from": [5.5, 5, 11], - "to": [10.5, 6, 14], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 5.5, 13]}, - "faces": { - "north": {"uv": [6, 15, 11, 16], "texture": "#2"}, - "east": {"uv": [7, 13, 8, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [6, 14, 11, 15], "texture": "#2"}, - "west": {"uv": [9, 13, 10, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [6, 13, 11, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [6, 13, 11, 16], "texture": "#2"} - } - }, - { - "name": "Cog", - "from": [5.5, 5, 11], - "to": [10.5, 6, 14], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 5.5, 13]}, - "faces": { - "north": {"uv": [6, 15, 11, 16], "texture": "#2"}, - "east": {"uv": [7, 13, 8, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [6, 14, 11, 15], "texture": "#2"}, - "west": {"uv": [9, 13, 10, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [6, 13, 11, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [6, 13, 11, 16], "texture": "#2"} - } - }, - { - "name": "Cog", - "from": [7.5, 3, 11], - "to": [8.5, 8, 14], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 5.5, 13]}, - "faces": { - "north": {"uv": [6, 15, 11, 16], "rotation": 270, "texture": "#2"}, - "east": {"uv": [6, 13, 11, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [6, 14, 11, 15], "rotation": 90, "texture": "#2"}, - "west": {"uv": [6, 13, 11, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [8, 13, 9, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [6, 13, 7, 16], "texture": "#2"} - } - }, - { - "name": "Cog", - "from": [5.5, 5, 11], - "to": [10.5, 6, 14], - "faces": { - "north": {"uv": [6, 15, 11, 16], "texture": "#2"}, - "east": {"uv": [6, 13, 7, 16], "rotation": 270, "texture": "#2"}, - "south": {"uv": [6, 14, 11, 15], "texture": "#2"}, - "west": {"uv": [8, 13, 9, 16], "rotation": 90, "texture": "#2"}, - "up": {"uv": [6, 13, 11, 16], "rotation": 180, "texture": "#2"}, - "down": {"uv": [6, 13, 11, 16], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_worldshaper/core.json b/src/main/resources/assets/create/models/item/handheld_worldshaper/core.json deleted file mode 100644 index aa700c0c0..000000000 --- a/src/main/resources/assets/create/models/item/handheld_worldshaper/core.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:item/handheld_worldshaper/item", - "textures": { - "2": "block/white_concrete_powder" - }, - "elements": [ - { - "name": "Core", - "from": [6.8, 5, 0.7], - "to": [9.2, 6, 10.7], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, - "faces": { - "north": {"uv": [6, 5, 8.4, 6], "texture": "#2"}, - "east": {"uv": [3, 5, 13, 6], "texture": "#2"}, - "west": {"uv": [3, 7, 13, 8], "texture": "#2"} - } - }, - { - "name": "Amplifier Core", - "from": [6.8, 3, 2.7], - "to": [9.2, 4, 7.7], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, - "faces": { - "north": {"uv": [6, 5, 8.4, 6], "texture": "#2"}, - "east": {"uv": [3, 5, 8, 6], "texture": "#2"}, - "south": {"uv": [0, 0, 2.4, 1], "texture": "#2"}, - "west": {"uv": [3, 7, 8, 8], "texture": "#2"}, - "up": {"uv": [0, 0, 2.4, 5], "texture": "#2"}, - "down": {"uv": [0, 0, 2.4, 5], "texture": "#2"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_worldshaper/core_glow.json b/src/main/resources/assets/create/models/item/handheld_worldshaper/core_glow.json deleted file mode 100644 index 2f26a2bb8..000000000 --- a/src/main/resources/assets/create/models/item/handheld_worldshaper/core_glow.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:item/handheld_worldshaper/item", - "textures": { - "3": "block/white_stained_glass" - }, - "elements": [ - { - "name": "Core Glow", - "from": [6.6, 4.6, 0.5], - "to": [9.4, 6.4, 10.4], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, - "faces": { - "north": {"uv": [6, 7, 8.8, 8.8], "texture": "#3"}, - "east": {"uv": [3, 7, 12.9, 8.8], "texture": "#3"}, - "south": {"uv": [5, 7, 7.8, 8.8], "texture": "#3"}, - "west": {"uv": [4, 7, 13.9, 8.8], "texture": "#3"}, - "up": {"uv": [7, 3, 9.8, 12.9], "texture": "#3"}, - "down": {"uv": [7, 4, 9.8, 13.9], "texture": "#3"} - } - }, - { - "name": "Amplifier Core Glow", - "from": [6.6, 2.6, 2.5], - "to": [9.4, 4.4, 7.4], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, - "faces": { - "north": {"uv": [6, 7, 8.8, 8.8], "texture": "#3"}, - "east": {"uv": [3, 7, 7.9, 8.8], "texture": "#3"}, - "south": {"uv": [5, 7, 7.8, 8.8], "texture": "#3"}, - "west": {"uv": [4, 7, 8.9, 8.8], "texture": "#3"}, - "up": {"uv": [7, 3, 9.8, 7.9], "texture": "#3"}, - "down": {"uv": [7, 4, 9.8, 8.9], "texture": "#3"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_worldshaper/item.json b/src/main/resources/assets/create/models/item/handheld_worldshaper/item.json deleted file mode 100644 index 9b4f95570..000000000 --- a/src/main/resources/assets/create/models/item/handheld_worldshaper/item.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "create:block/terrain_zapper_mesh", - "1": "block/smooth_stone_slab_side", - "particle": "block/obsidian", - "3_0": "block/obsidian" - }, - "elements": [ - { - "name": "Rod Back Cap", - "from": [6.5, 4, 14], - "to": [9.5, 7, 15], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 5.5, 8]}, - "faces": { - "north": {"uv": [0, 0, 3, 3], "texture": "#0"}, - "east": {"uv": [8, 13, 9, 16], "texture": "#0"}, - "south": {"uv": [2, 7, 5, 10], "texture": "#0"}, - "west": {"uv": [2, 8, 3, 11], "texture": "#0"}, - "up": {"uv": [3, 9, 6, 10], "texture": "#0"}, - "down": {"uv": [7, 7, 10, 8], "texture": "#0"} - } - }, - { - "name": "Rod Back Cap", - "from": [7, 4.5, 15], - "to": [9, 6.5, 17], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 5.5, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#0"}, - "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#0"}, - "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 2, 2], "texture": "#0"}, - "down": {"uv": [0, 0, 2, 2], "texture": "#0"} - } - }, - { - "name": "Connector", - "from": [6.5, 6, 0], - "to": [9.5, 7, 11], - "faces": { - "north": {"uv": [6, 7, 9, 8], "texture": "#0"}, - "east": {"uv": [3, 9, 14, 10], "texture": "#0"}, - "south": {"uv": [2, 0, 5, 1], "texture": "#0"}, - "west": {"uv": [2, 9, 13, 10], "texture": "#0"}, - "up": {"uv": [2, 7, 13, 10], "rotation": 90, "texture": "#0"}, - "down": {"uv": [2, 7, 13, 10], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Connector", - "from": [6.5, 4, 0], - "to": [9.5, 5, 11], - "faces": { - "north": {"uv": [6, 7, 9, 8], "texture": "#0"}, - "east": {"uv": [3, 9, 14, 10], "texture": "#0"}, - "south": {"uv": [2, 0, 5, 1], "texture": "#0"}, - "west": {"uv": [2, 9, 13, 10], "texture": "#0"}, - "up": {"uv": [2, 7, 13, 10], "rotation": 90, "texture": "#0"}, - "down": {"uv": [2, 7, 13, 10], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Connector", - "from": [5.75, 4, 6], - "to": [10.25, 8, 8], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [5, 0, 9.5, 4], "texture": "#0"}, - "east": {"uv": [12, 3, 16, 5], "rotation": 90, "texture": "#0"}, - "south": {"uv": [4, 7, 8.5, 11], "texture": "#0"}, - "west": {"uv": [0, 3, 4, 5], "rotation": 270, "texture": "#0"}, - "up": {"uv": [5, 3, 9.5, 5], "texture": "#0"}, - "down": {"uv": [5, 2, 10, 4], "texture": "#0"} - } - }, - { - "name": "Connector", - "from": [5.75, 4, 8], - "to": [10.25, 6, 10], - "rotation": {"angle": 45, "axis": "x", "origin": [8, 4, 8]}, - "faces": { - "north": {"uv": [0, 0, 4.5, 2], "texture": "#0"}, - "east": {"uv": [12, 3, 14, 5], "rotation": 180, "texture": "#0"}, - "south": {"uv": [5, 3, 9.5, 5], "rotation": 180, "texture": "#0"}, - "west": {"uv": [4, 3, 6, 5], "rotation": 180, "texture": "#0"}, - "up": {"uv": [5, 4, 9.5, 6], "texture": "#0"}, - "down": {"uv": [5, 0, 9.5, 2], "texture": "#0"} - } - }, - { - "name": "Rod Back Cap", - "from": [6, 4.5, 9], - "to": [10, 6.5, 11], - "rotation": {"angle": 0, "axis": "z", "origin": [8, 5.5, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 2], "texture": "#0"}, - "east": {"uv": [0, 0, 2, 2], "texture": "#0"}, - "south": {"uv": [0, 0, 4, 1], "texture": "#0"}, - "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, - "up": {"uv": [0, 0, 4, 2], "texture": "#0"}, - "down": {"uv": [0, 0, 4, 2], "texture": "#0"} - } - }, - { - "name": "Grip", - "from": [7.1, 1, 12], - "to": [8.9, 5, 15], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 2, 14]}, - "faces": { - "north": {"uv": [5, 7, 6.8, 11], "texture": "#1"}, - "east": {"uv": [13, 7, 16, 11], "texture": "#1"}, - "south": {"uv": [7, 7, 8.8, 11], "texture": "#1"}, - "west": {"uv": [16, 7, 13, 11], "texture": "#1"}, - "up": {"uv": [5, 2, 6.8, 5], "texture": "#1"}, - "down": {"uv": [7, 11, 8.8, 14], "texture": "#1"} - } - }, - { - "name": "Trigger", - "from": [7.4, 3, 11], - "to": [8.6, 6, 13], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 2, 14]}, - "faces": { - "north": {"uv": [6, 4, 7, 7], "texture": "#3_0"}, - "east": {"uv": [6, 4, 8, 7], "texture": "#3_0"}, - "south": {"uv": [6, 4, 7, 7], "texture": "#3_0"}, - "west": {"uv": [5, 4, 7, 7], "texture": "#3_0"}, - "up": {"uv": [6, 6, 7, 8], "texture": "#3_0"}, - "down": {"uv": [5, 6, 6, 8], "texture": "#3_0"} - } - }, - { - "name": "Scope", - "from": [7.5, 7.5, 5.5], - "to": [8.5, 8.5, 10.5], - "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 4]}, - "faces": { - "north": {"uv": [0, 0, 1, 1], "texture": "#1"}, - "east": {"uv": [8, 1, 9, 6], "rotation": 90, "texture": "#0"}, - "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, - "west": {"uv": [7, 1, 8, 6], "rotation": 270, "texture": "#0"}, - "up": {"uv": [7, 1, 8, 6], "texture": "#0"}, - "down": {"uv": [7, 1, 8, 6], "texture": "#0"} - } - }, - { - "name": "Scope Connector", - "from": [7.5, 7, 7], - "to": [8.5, 8, 8], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 4]}, - "faces": { - "north": {"uv": [0, 0, 1, 1], "texture": "#0"}, - "east": {"uv": [0, 0, 1, 1], "texture": "#0"}, - "south": {"uv": [0, 0, 1, 1], "texture": "#0"}, - "west": {"uv": [0, 0, 1, 1], "texture": "#0"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#0"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#0"} - } - }, - { - "name": "Amplifier Connector", - "from": [6.5, 2, 2], - "to": [9.5, 3, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, - "faces": { - "north": {"uv": [3, 8, 6, 9], "texture": "#0"}, - "east": {"uv": [0, 12, 7, 13], "rotation": 180, "texture": "#0"}, - "south": {"uv": [1, 8, 4, 9], "texture": "#0"}, - "west": {"uv": [0, 12, 7, 13], "rotation": 180, "texture": "#0"}, - "up": {"uv": [3, 7, 10, 10], "rotation": 90, "texture": "#0"}, - "down": {"uv": [3, 7, 10, 10], "rotation": 90, "texture": "#0"} - } - }, - { - "name": "Amplifier Connector", - "from": [6.5, 3, 7], - "to": [9.5, 4, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 3, 1], "texture": "#0"}, - "east": {"uv": [0, 0, 2, 1], "texture": "#0"}, - "south": {"uv": [0, 0, 3, 1], "texture": "#0"}, - "west": {"uv": [0, 0, 2, 1], "texture": "#0"}, - "up": {"uv": [0, 0, 3, 2], "texture": "#0"}, - "down": {"uv": [0, 0, 3, 2], "texture": "#0"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [1, 0, 0], - "translation": [0, 4, -2.5], - "scale": [0.8, 0.8, 0.8] - }, - "thirdperson_lefthand": { - "rotation": [1, 0, 0], - "translation": [0, 4, -2.5], - "scale": [0.8, 0.8, 0.8] - }, - "firstperson_righthand": { - "rotation": [10, 0, 10], - "translation": [1, 4, 1] - }, - "firstperson_lefthand": { - "rotation": [10, 0, 10], - "translation": [1, 4, 1] - }, - "ground": { - "rotation": [0, 0, 90], - "translation": [-2.25, -1, -0.75], - "scale": [0.75, 0.75, 0.75] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [-0.5, 3.5, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [-1.25, 4.25, -1] - } - }, - "groups": [0, 1, 2, 3, 4, 5, 6, - { - "name": "placement_handgun", - "origin": [8, 8, 8], - "children": [7, 8] - }, - { - "name": "chorus_scope", - "origin": [8, 8, 8], - "children": [9, 10] - }, - { - "name": "chorus_amplifier", - "origin": [8, 8, 8], - "children": [11, 12] - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/linked_controller/button.json b/src/main/resources/assets/create/models/item/linked_controller/button.json deleted file mode 100644 index 9859c72ab..000000000 --- a/src/main/resources/assets/create/models/item/linked_controller/button.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:item/linked_controller/powered", - "textures": { - "particle": "create:item/linked_controller", - "redstone_bridge": "create:item/linked_controller" - }, - "elements": [ - { - "from": [3, 1, 0.5], - "to": [5, 3, 2.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "east": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "south": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "west": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "up": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/linked_controller/item.json b/src/main/resources/assets/create/models/item/linked_controller/item.json deleted file mode 100644 index 88c8e9cdc..000000000 --- a/src/main/resources/assets/create/models/item/linked_controller/item.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna", - "particle": "create:item/linked_controller", - "redstone_bridge": "create:item/linked_controller" - }, - "elements": [ - { - "name": "Controller", - "from": [4, 0, 1.5], - "to": [12, 2, 14.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [13, 0, 15, 8], "rotation": 90, "texture": "#redstone_bridge"}, - "east": {"uv": [0, 8, 13, 10], "texture": "#redstone_bridge"}, - "south": {"uv": [13, 0, 15, 8], "rotation": 90, "texture": "#redstone_bridge"}, - "west": {"uv": [0, 8, 13, 10], "texture": "#redstone_bridge"}, - "up": {"uv": [0, 0, 13, 8], "rotation": 270, "texture": "#redstone_bridge"}, - "down": {"uv": [0, 0, 13, 8], "rotation": 90, "texture": "#redstone_bridge"} - } - }, - { - "name": "AntennaTop", - "from": [3, 6, 4.5], - "to": [4, 7, 5.5], - "rotation": {"angle": 0, "axis": "z", "origin": [4, 2, 14.5]}, - "faces": { - "up": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [3, 0, 3.5], - "to": [4, 8, 6.5], - "rotation": {"angle": 0, "axis": "z", "origin": [4, 2, 14.5]}, - "faces": { - "east": {"uv": [0, 0, 3, 8], "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 8], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaX", - "from": [2, 0, 4.5], - "to": [5, 8, 5.5], - "rotation": {"angle": 0, "axis": "z", "origin": [4, 2, 14.5]}, - "faces": { - "north": {"uv": [0, 0, 3, 8], "texture": "#redstone_antenna"}, - "south": {"uv": [0, 0, 3, 8], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"} - } - }, - { - "from": [9, 1, 8.5], - "to": [11, 3, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "east": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "south": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "west": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "up": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"} - } - }, - { - "from": [5, 1, 8.5], - "to": [7, 3, 10.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "east": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "south": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "west": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "up": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"} - } - }, - { - "from": [7, 1, 10.5], - "to": [9, 3, 12.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "east": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "south": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "west": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "up": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"} - } - }, - { - "from": [7, 1, 6.5], - "to": [9, 3, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "east": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "south": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "west": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "up": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"} - } - }, - { - "from": [8, 1, 3.5], - "to": [10, 3, 5.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "east": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "south": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "west": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "up": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"} - } - }, - { - "from": [6, 1, 3.5], - "to": [8, 3, 5.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "east": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "south": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "west": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"}, - "up": {"uv": [2, 11, 4, 13], "texture": "#redstone_bridge"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [0, -90, -74], - "translation": [-3, 3.25, 4.5], - "scale": [0.7, 0.7, 0.7] - }, - "thirdperson_lefthand": { - "rotation": [0, 90, 74], - "translation": [-3, 3.5, 5], - "scale": [0.7, 0.7, 0.7] - }, - "firstperson_righthand": { - "rotation": [0, -90, -13], - "translation": [1.13, 3, 1.13], - "scale": [0.68, 0.68, 0.68] - }, - "firstperson_lefthand": { - "rotation": [0, 71, 17], - "translation": [1.13, 3, 1.13], - "scale": [0.68, 0.68, 0.68] - }, - "ground": { - "translation": [0, 3, 0], - "scale": [0.65, 0.65, 0.65] - }, - "gui": { - "rotation": [30, -44, 0], - "translation": [0, 3.5, 0], - "scale": [0.76, 0.76, 0.76] - }, - "head": { - "rotation": [0, 180, 0], - "translation": [0, 13, 0] - }, - "fixed": { - "rotation": [0, 90, -90], - "translation": [0, 0, -8] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/linked_controller/powered.json b/src/main/resources/assets/create/models/item/linked_controller/powered.json deleted file mode 100644 index 1a747b4fa..000000000 --- a/src/main/resources/assets/create/models/item/linked_controller/powered.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "redstone_antenna": "create:block/redstone_antenna_powered", - "particle": "create:item/linked_controller_powered", - "redstone_bridge": "create:item/linked_controller_powered" - }, - "elements": [ - { - "name": "Controller", - "from": [4, 0, 1.5], - "to": [12, 2, 14.5], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 0.5]}, - "faces": { - "north": {"uv": [13, 0, 15, 8], "rotation": 90, "texture": "#redstone_bridge"}, - "east": {"uv": [0, 8, 13, 10], "texture": "#redstone_bridge"}, - "south": {"uv": [13, 0, 15, 8], "rotation": 90, "texture": "#redstone_bridge"}, - "west": {"uv": [0, 8, 13, 10], "texture": "#redstone_bridge"}, - "up": {"uv": [0, 0, 13, 8], "rotation": 270, "texture": "#redstone_bridge"}, - "down": {"uv": [0, 0, 13, 8], "rotation": 90, "texture": "#redstone_bridge"} - } - }, - { - "name": "AntennaTop", - "from": [3, 6, 4.5], - "to": [4, 7, 5.5], - "rotation": {"angle": 0, "axis": "z", "origin": [4, 2, 14.5]}, - "faces": { - "up": {"uv": [1, 1, 2, 2], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaZ", - "from": [3, 0, 3.5], - "to": [4, 8, 6.5], - "rotation": {"angle": 0, "axis": "z", "origin": [4, 2, 14.5]}, - "faces": { - "east": {"uv": [0, 0, 3, 8], "texture": "#redstone_antenna"}, - "west": {"uv": [0, 0, 3, 8], "texture": "#redstone_antenna"} - } - }, - { - "name": "AntennaX", - "from": [2, 0, 4.5], - "to": [5, 8, 5.5], - "rotation": {"angle": 0, "axis": "z", "origin": [4, 2, 14.5]}, - "faces": { - "north": {"uv": [0, 0, 3, 8], "texture": "#redstone_antenna"}, - "south": {"uv": [0, 0, 3, 8], "texture": "#redstone_antenna"}, - "down": {"uv": [0, 9, 3, 10], "texture": "#redstone_antenna"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [0, -90, -74], - "translation": [-3, 3.25, 4.5], - "scale": [0.7, 0.7, 0.7] - }, - "thirdperson_lefthand": { - "rotation": [0, 90, 74], - "translation": [-3, 3.5, 5], - "scale": [0.7, 0.7, 0.7] - }, - "firstperson_righthand": { - "rotation": [0, -113, -27], - "translation": [-2, 9, 1.13], - "scale": [0.97, 0.97, 0.97] - }, - "firstperson_lefthand": { - "rotation": [0, 47, 27], - "translation": [-2, 9, 1.13], - "scale": [0.97, 0.97, 0.97] - }, - "ground": { - "translation": [0, 2, 0], - "scale": [0.75, 0.75, 0.75] - }, - "gui": { - "rotation": [30, -44, 0], - "translation": [0, 1.75, 0], - "scale": [0.76, 0.76, 0.76] - }, - "head": { - "rotation": [0, 180, 0], - "translation": [0, 13, 0] - }, - "fixed": { - "rotation": [0, 90, -90], - "translation": [0, 0, -8] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/pane.json b/src/main/resources/assets/create/models/item/pane.json deleted file mode 100644 index ba4c3bf0b..000000000 --- a/src/main/resources/assets/create/models/item/pane.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "0": "#edge", - "1": "#pane", - "particle": "#pane" - }, - "elements": [ - { - "from": [0, 0, 7], - "to": [16, 16, 9], - "faces": { - "north": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "east": {"uv": [7, 0, 9, 16], "rotation": 180, "texture": "#0"}, - "south": {"uv": [0, 0, 16, 16], "texture": "#1"}, - "west": {"uv": [7, 0, 9, 16], "rotation": 180, "texture": "#0"}, - "up": {"uv": [7, 0, 9, 16], "rotation": 90, "texture": "#0"}, - "down": {"uv": [7, 0, 9, 16], "rotation": 90, "texture": "#0"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wand_of_symmetry/bits.json b/src/main/resources/assets/create/models/item/wand_of_symmetry/bits.json deleted file mode 100644 index bf6751f71..000000000 --- a/src/main/resources/assets/create/models/item/wand_of_symmetry/bits.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", - "ambientocclusion": false, - "parent": "create:item/wand_of_symmetry/item", - "textures": { - "0": "block/obsidian", - "1": "block/light_blue_concrete_powder", - "2": "block/dark_oak_log", - "3": "block/white_stained_glass", - "4": "block/light_blue_stained_glass", - "5": "block/white_concrete_powder" - }, - "elements": [ - { - "name": "Square North", - "from": [ 7.5, 24.0, 4.0 ], - "to": [ 8.5, 25.0, 5.0 ], - "shade": false, - "rotation": { "origin": [ 9.0, 24.0, 5.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "east": { "texture": "#3", "uv": [ 6.0, 6.0, 7.0, 7.0 ] }, - "south": { "texture": "#3", "uv": [ 8.0, 6.0, 9.0, 7.0 ] }, - "west": { "texture": "#3", "uv": [ 11.0, 9.0, 12.0, 10.0 ] }, - "up": { "texture": "#3", "uv": [ 9.0, 5.0, 10.0, 6.0 ] }, - "down": { "texture": "#3", "uv": [ 5.0, 7.0, 6.0, 8.0 ] } - } - }, - { - "name": "Square South", - "from": [ 7.5, 24.0, 10.0 ], - "to": [ 8.5, 25.0, 11.0 ], - "shade": false, - "rotation": { "origin": [ 13.0, 24.0, 11.0 ], "axis": "x", "angle": 45.0 }, - "faces": { - "north": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "east": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "south": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "west": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "up": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "down": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] } - } - }, - { - "name": "Square West", - "from": [ 11.5, 25.5, 7.5 ], - "to": [ 12.5, 26.5, 8.5 ], - "shade": false, - "rotation": { "origin": [ 13.0, 24.0, 11.0 ], "axis": "z", "angle": 45.0 }, - "faces": { - "north": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "east": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "south": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "west": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "up": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "down": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] } - } - }, - { - "name": "Square East", - "from": [ 7.5, 29.5, 7.5 ], - "to": [ 8.5, 30.5, 8.5 ], - "shade": false, - "rotation": { "origin": [ 13.0, 24.0, 11.0 ], "axis": "z", "angle": 45.0 }, - "faces": { - "north": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "east": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "south": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "west": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "up": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] }, - "down": { "texture": "#3", "uv": [ 2.0, 2.0, 3.0, 3.0 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wand_of_symmetry/core.json b/src/main/resources/assets/create/models/item/wand_of_symmetry/core.json deleted file mode 100644 index 840559d9f..000000000 --- a/src/main/resources/assets/create/models/item/wand_of_symmetry/core.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ambientocclusion": false, - "parent": "create:item/wand_of_symmetry/item", - "textures": { - "5": "block/white_concrete_powder" - }, - "elements": [ - { - "name": "Rod Core", - "from": [ 7.0, 18.0, 7.0 ], - "to": [ 9.0, 26.0, 9.0 ], - "faces": { - "north": { "texture": "#5", "uv": [ 10.0, 3.0, 12.0, 11.0 ] }, - "east": { "texture": "#5", "uv": [ 13.0, 6.0, 15.0, 14.0 ] }, - "south": { "texture": "#5", "uv": [ 11.0, 6.0, 13.0, 14.0 ] }, - "west": { "texture": "#5", "uv": [ 11.0, 4.0, 13.0, 12.0 ] }, - "up": { "texture": "#5", "uv": [ 14.0, 0.0, 16.0, 2.0 ] }, - "down": { "texture": "#5", "uv": [ 14.0, 6.0, 16.0, 8.0 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wand_of_symmetry/core_glow.json b/src/main/resources/assets/create/models/item/wand_of_symmetry/core_glow.json deleted file mode 100644 index c251682f2..000000000 --- a/src/main/resources/assets/create/models/item/wand_of_symmetry/core_glow.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "ambientocclusion": false, - "parent": "create:item/wand_of_symmetry/item", - "textures": { - "3": "block/white_stained_glass" - }, - "elements": [ - { - "name": "Cube", - "from": [ 6.5, 17.5, 6.5 ], - "to": [ 9.5, 26.5, 9.5 ], - "faces": { - "north": { "texture": "#3", "uv": [ 10.0, 5.0, 13.0, 13.0 ] }, - "east": { "texture": "#3", "uv": [ 5.0, 3.0, 8.0, 12.0 ] }, - "south": { "texture": "#3", "uv": [ 7.0, 6.0, 10.0, 14.0 ] }, - "west": { "texture": "#3", "uv": [ 7.0, 4.0, 4.0, 12.0 ] }, - "up": { "texture": "#3", "uv": [ 7.0, 5.0, 10.0, 8.0 ] }, - "down": { "texture": "#3", "uv": [ 9.0, 3.0, 12.0, 6.0 ] } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wand_of_symmetry/item.json b/src/main/resources/assets/create/models/item/wand_of_symmetry/item.json deleted file mode 100644 index 530067fc5..000000000 --- a/src/main/resources/assets/create/models/item/wand_of_symmetry/item.json +++ /dev/null @@ -1,126 +0,0 @@ -{ - "credit": "Made with Blockbench", - "textures": { - "0": "block/obsidian", - "2": "block/dark_oak_log", - "6": "create:block/brass_block", - "7": "create:block/andesite_casing", - "particle": "create:block/brass_block" - }, - "elements": [ - { - "name": "Grip Core", - "from": [6.5, -5, 6.5], - "to": [9.5, 6, 9.5], - "faces": { - "north": {"uv": [5, 1, 8, 12], "texture": "#0"}, - "east": {"uv": [2, 3, 5, 14], "texture": "#0"}, - "south": {"uv": [10, 1, 13, 12], "texture": "#0"}, - "west": {"uv": [7, 1, 10, 12], "texture": "#0"}, - "up": {"uv": [0, 0, 3, 3], "texture": "#0"}, - "down": {"uv": [5, 6, 8, 9], "texture": "#0"} - } - }, - { - "name": "Rod Bottom Core", - "from": [6.5, 7, 6.5], - "to": [9.5, 17, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [5, 6, 8, 16], "texture": "#6"}, - "east": {"uv": [2, 6, 5, 16], "texture": "#6"}, - "south": {"uv": [11, 6, 14, 16], "texture": "#6"}, - "west": {"uv": [8, 6, 11, 16], "texture": "#6"}, - "up": {"uv": [12, 1, 15, 4], "texture": "#6"}, - "down": {"uv": [8, 10, 11, 13], "texture": "#6"} - } - }, - { - "name": "Grip Cap", - "from": [6, 6, 6], - "to": [10, 7, 10], - "faces": { - "north": {"uv": [2, 0, 6, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 4, 1], "texture": "#2"}, - "west": {"uv": [0, 1, 4, 2], "texture": "#2"}, - "up": {"uv": [10, 15, 14, 11], "texture": "#2"}, - "down": {"uv": [5, 3, 9, 7], "texture": "#2"} - } - }, - { - "name": "Rod Top Core", - "from": [6.5, 27, 6.5], - "to": [9.5, 30, 9.5], - "rotation": {"angle": 45, "axis": "y", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [8, 1, 11, 4], "texture": "#6"}, - "east": {"uv": [7, 1, 10, 4], "texture": "#6"}, - "south": {"uv": [5, 1, 8, 4], "texture": "#6"}, - "west": {"uv": [3, 1, 6, 4], "texture": "#6"}, - "up": {"uv": [12, 1, 15, 4], "texture": "#6"}, - "down": {"uv": [12, 1, 15, 4], "texture": "#6"} - } - }, - { - "name": "Cap", - "from": [6, 30, 6], - "to": [10, 31, 10], - "faces": { - "north": {"uv": [0, 0, 4, 1], "texture": "#2"}, - "east": {"uv": [0, 0, 4, 1], "texture": "#2"}, - "south": {"uv": [0, 0, 4, 1], "texture": "#2"}, - "west": {"uv": [0, 0, 4, 1], "texture": "#2"}, - "up": {"uv": [7, 10, 11, 14], "texture": "#2"}, - "down": {"uv": [7, 10, 11, 14], "texture": "#2"} - } - }, - { - "name": "Grip Deco", - "from": [6.3, 4, 6.3], - "to": [9.7, 5, 9.7], - "faces": { - "north": {"uv": [4, 1, 7, 2], "texture": "#7"}, - "east": {"uv": [4, 1, 7, 2], "texture": "#7"}, - "south": {"uv": [4, 1, 7, 2], "texture": "#7"}, - "west": {"uv": [4, 1, 7, 2], "texture": "#7"} - } - }, - { - "name": "Grip Deco", - "from": [6.3, -4, 6.3], - "to": [9.7, -3, 9.7], - "faces": { - "north": {"uv": [4, 1, 7, 2], "texture": "#7"}, - "east": {"uv": [4, 1, 7, 2], "texture": "#7"}, - "south": {"uv": [4, 1, 7, 2], "texture": "#7"}, - "west": {"uv": [4, 1, 7, 2], "texture": "#7"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [15, 0, 0], - "translation": [-1, 1, 1], - "scale": [0.5, 0.5, 0.5] - }, - "firstperson_righthand": { - "rotation": [15, 0, 0], - "translation": [0, 0, -2], - "scale": [0.6, 0.6, 0.6] - }, - "ground": { - "translation": [0, 4.2, 0], - "scale": [0.4, 0.4, 0.4] - }, - "gui": { - "rotation": [42, 135, 32], - "translation": [-1.7, -1.7, 3], - "scale": [0.8, 0.8, 0.8] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, -5, 0] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wrench/gear.json b/src/main/resources/assets/create/models/item/wrench/gear.json deleted file mode 100644 index 05ffe5665..000000000 --- a/src/main/resources/assets/create/models/item/wrench/gear.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "create:item/wrench/item", - "textures": { - "5": "create:item/wrench", - "particle": "create:item/wrench" - }, - "elements": [ - { - "name": "Cog", - "from": [8.5, 7, 6], - "to": [9.5, 8, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 7, 8]}, - "faces": { - "north": {"uv": [10, 14, 12, 16], "texture": "#5"}, - "east": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 14, 12, 16], "texture": "#5"}, - "west": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, - "up": {"uv": [2, 14, 10, 16], "rotation": 90, "texture": "#5"}, - "down": {"uv": [2, 14, 10, 16], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "Cog", - "from": [8.5, 7, 6], - "to": [9.5, 8, 10], - "rotation": {"angle": 45, "axis": "y", "origin": [9, 7, 8]}, - "faces": { - "north": {"uv": [10, 14, 12, 16], "texture": "#5"}, - "east": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, - "south": {"uv": [10, 14, 12, 16], "texture": "#5"}, - "west": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, - "up": {"uv": [2, 14, 10, 16], "rotation": 90, "texture": "#5"}, - "down": {"uv": [2, 14, 10, 16], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "Cog", - "from": [7, 7, 7.5], - "to": [11, 8, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 7, 8]}, - "faces": { - "north": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, - "east": {"uv": [10, 14, 12, 16], "texture": "#5"}, - "south": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, - "west": {"uv": [10, 14, 12, 16], "texture": "#5"}, - "up": {"uv": [2, 14, 10, 16], "texture": "#5"}, - "down": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"} - } - }, - { - "name": "Cog", - "from": [7, 7, 7.5], - "to": [11, 8, 8.5], - "rotation": {"angle": 45, "axis": "y", "origin": [9, 7, 8]}, - "faces": { - "north": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, - "east": {"uv": [10, 14, 12, 16], "texture": "#5"}, - "south": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"}, - "west": {"uv": [10, 14, 12, 16], "texture": "#5"}, - "up": {"uv": [2, 14, 10, 16], "texture": "#5"}, - "down": {"uv": [2, 14, 10, 16], "rotation": 180, "texture": "#5"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wrench/item.json b/src/main/resources/assets/create/models/item/wrench/item.json deleted file mode 100644 index 55cbe7e35..000000000 --- a/src/main/resources/assets/create/models/item/wrench/item.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "5": "create:item/wrench", - "particle": "create:item/wrench" - }, - "elements": [ - { - "name": "handle", - "from": [7.6, 0, 7.5], - "to": [8.6, 7, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 8]}, - "faces": { - "north": {"uv": [2, 0, 4, 14], "texture": "#5"}, - "east": {"uv": [2, 0, 4, 14], "texture": "#5"}, - "south": {"uv": [2, 0, 4, 14], "texture": "#5"}, - "west": {"uv": [2, 0, 4, 14], "texture": "#5"}, - "down": {"uv": [2, 12, 4, 14], "texture": "#5"} - } - }, - { - "name": "handle", - "from": [6.5, 8.5, 7.5], - "to": [8.5, 14.5, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [7.5, 20, 8]}, - "faces": { - "north": {"uv": [12, 0, 16, 12], "texture": "#5"}, - "east": {"uv": [14, 0, 16, 12], "texture": "#5"}, - "south": {"uv": [16, 0, 12, 12], "texture": "#5"}, - "west": {"uv": [16, 0, 14, 12], "texture": "#5"}, - "up": {"uv": [5, 7, 7, 8], "rotation": 90, "texture": "#5"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#5"} - } - }, - { - "name": "axle", - "from": [8.35355, 5, 7.14645], - "to": [9.35355, 12, 8.14645], - "rotation": {"angle": -45, "axis": "y", "origin": [8.5, 11, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 14], "texture": "#5"}, - "east": {"uv": [0, 2, 2, 16], "texture": "#5"}, - "south": {"uv": [0, 0, 2, 14], "texture": "#5"}, - "west": {"uv": [0, 2, 2, 16], "texture": "#5"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#5"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#5"} - } - }, - { - "name": "top thing", - "from": [7, 14, 7], - "to": [11, 15, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 7]}, - "faces": { - "north": {"uv": [4, 8, 12, 10], "texture": "#5"}, - "east": {"uv": [4, 0, 8, 2], "texture": "#5"}, - "south": {"uv": [12, 8, 4, 10], "texture": "#5"}, - "west": {"uv": [4, 6, 8, 8], "rotation": 180, "texture": "#5"}, - "up": {"uv": [4, 0, 8, 8], "rotation": 90, "texture": "#5"}, - "down": {"uv": [8, 0, 12, 8], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "bottom thing", - "from": [8, 12, 7], - "to": [11, 13, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 11, 7]}, - "faces": { - "north": {"uv": [10, 8, 4, 10], "rotation": 180, "texture": "#5"}, - "east": {"uv": [4, 0, 8, 2], "rotation": 180, "texture": "#5"}, - "south": {"uv": [4, 8, 10, 10], "rotation": 180, "texture": "#5"}, - "west": {"uv": [4, 6, 8, 8], "texture": "#5"}, - "up": {"uv": [8, 0, 12, 6], "rotation": 90, "texture": "#5"}, - "down": {"uv": [4, 0, 8, 6], "rotation": 90, "texture": "#5"} - } - }, - { - "name": "gear case top", - "from": [6.4, 8, 7], - "to": [10.4, 9, 9], - "rotation": {"angle": 0, "axis": "y", "origin": [9, 11, 8]}, - "faces": { - "north": { - "uv": [ - 4, - 10, - 12, - 12 - ], - "texture": "#5" - }, - "east": { - "uv": [ - 4, - 10, - 6, - 14 - ], - "rotation": 90, - "texture": "#5" - }, - "south": { - "uv": [ - 12, - 10, - 4, - 12 - ], - "texture": "#5" - }, - "west": { - "uv": [ - 4, - 10, - 6, - 14 - ], - "rotation": 90, - "texture": "#5" - }, - "up": { - "uv": [ - 4, - 10, - 12, - 14 - ], - "rotation": 180, - "texture": "#5" - }, - "down": { - "uv": [ - 4, - 10, - 12, - 13 - ], - "rotation": 180, - "texture": "#5" - } - } - }, - { - "name": "gear case", - "from": [7.5, 6, 7], - "to": [9.5, 7, 9], - "rotation": {"angle": 45, "axis": "y", "origin": [8.5, 11, 8]}, - "faces": { - "north": {"uv": [12, 12, 16, 14], "texture": "#5"}, - "east": {"uv": [12, 12, 16, 14], "texture": "#5"}, - "south": {"uv": [12, 12, 16, 14], "texture": "#5"}, - "west": {"uv": [12, 12, 16, 14], "texture": "#5"}, - "up": {"uv": [12, 12, 16, 16], "texture": "#5"}, - "down": {"uv": [12, 12, 16, 16], "texture": "#5"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [0, 90, 0], - "translation": [0, 3.25, 0] - }, - "thirdperson_lefthand": { - "translation": [0, 3.75, 0] - }, - "firstperson_righthand": { - "rotation": [-4.5, 100.25, 10], - "translation": [1, 4, 1] - }, - "firstperson_lefthand": { - "rotation": [17.25, 267, 10], - "translation": [1, 4, 1] - }, - "ground": { - "rotation": [-90, 0, 0], - "translation": [0, -2.3, 0], - "scale": [0.76914, 0.76914, 0.76914] - }, - "gui": { - "rotation": [28, -163, 43], - "translation": [0.5, 0, 0], - "scale": [1.09453, 1.09453, 1.09453] - }, - "fixed": { - "rotation": [0, 160.5, 0], - "translation": [0.5, 0.5, 0] - } - }, - "groups": [ - { - "name": "item", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3, 4, 5, 6] - } - ] -} diff --git a/src/main/resources/assets/create/particles/air.json b/src/main/resources/assets/create/particles/air.json deleted file mode 100644 index 271261099..000000000 --- a/src/main/resources/assets/create/particles/air.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "textures": [ - "minecraft:generic_7", - "minecraft:generic_6", - "minecraft:generic_5", - "minecraft:generic_4", - "minecraft:generic_3", - "minecraft:generic_2", - "minecraft:generic_1", - "minecraft:generic_0" - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/particles/air_flow.json b/src/main/resources/assets/create/particles/air_flow.json deleted file mode 100644 index 271261099..000000000 --- a/src/main/resources/assets/create/particles/air_flow.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "textures": [ - "minecraft:generic_7", - "minecraft:generic_6", - "minecraft:generic_5", - "minecraft:generic_4", - "minecraft:generic_3", - "minecraft:generic_2", - "minecraft:generic_1", - "minecraft:generic_0" - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/particles/basin_fluid.json b/src/main/resources/assets/create/particles/basin_fluid.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/src/main/resources/assets/create/particles/basin_fluid.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/main/resources/assets/create/particles/cube.json b/src/main/resources/assets/create/particles/cube.json deleted file mode 100644 index 0e0dcd235..000000000 --- a/src/main/resources/assets/create/particles/cube.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - -} \ No newline at end of file diff --git a/src/main/resources/assets/create/particles/fluid_drip.json b/src/main/resources/assets/create/particles/fluid_drip.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/src/main/resources/assets/create/particles/fluid_drip.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/main/resources/assets/create/particles/fluid_particle.json b/src/main/resources/assets/create/particles/fluid_particle.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/src/main/resources/assets/create/particles/fluid_particle.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/main/resources/assets/create/particles/heater_particle.json b/src/main/resources/assets/create/particles/heater_particle.json deleted file mode 100644 index f3ae8cda7..000000000 --- a/src/main/resources/assets/create/particles/heater_particle.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "textures": [ - "minecraft:flame" - ] -} diff --git a/src/main/resources/assets/create/particles/rotation_indicator.json b/src/main/resources/assets/create/particles/rotation_indicator.json deleted file mode 100644 index 4fdc55ffc..000000000 --- a/src/main/resources/assets/create/particles/rotation_indicator.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "textures": [ - "minecraft:glitter_7", - "minecraft:glitter_6", - "minecraft:glitter_5", - "minecraft:glitter_4", - "minecraft:glitter_3", - "minecraft:glitter_2", - "minecraft:glitter_1", - "minecraft:glitter_0" - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/sounds/cogs.ogg b/src/main/resources/assets/create/sounds/cogs.ogg deleted file mode 100644 index fd2c78b49..000000000 Binary files a/src/main/resources/assets/create/sounds/cogs.ogg and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift.png b/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift.png deleted file mode 100644 index de60b5450..000000000 Binary files a/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift_powered.png b/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift_powered.png deleted file mode 100644 index 42fabe909..000000000 Binary files a/src/main/resources/assets/create/textures/block/adjustable_chain_gearshift_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/analog_lever.png b/src/main/resources/assets/create/textures/block/analog_lever.png deleted file mode 100644 index 793bbecfe..000000000 Binary files a/src/main/resources/assets/create/textures/block/analog_lever.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png b/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png deleted file mode 100644 index 7ca592b23..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_alloy_mesh.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_bricks.png b/src/main/resources/assets/create/textures/block/andesite_bricks.png deleted file mode 100644 index 2ba1c5401..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing.png b/src/main/resources/assets/create/textures/block/andesite_casing.png deleted file mode 100644 index 42081012a..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_belt.png b/src/main/resources/assets/create/textures/block/andesite_casing_belt.png deleted file mode 100644 index 40511c995..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing_belt.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_connected.png b/src/main/resources/assets/create/textures/block/andesite_casing_connected.png deleted file mode 100644 index 91b3a92d7..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_short.png b/src/main/resources/assets/create/textures/block/andesite_casing_short.png deleted file mode 100644 index 3c68417e1..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing_short.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_casing_very_short.png b/src/main/resources/assets/create/textures/block/andesite_casing_very_short.png deleted file mode 100644 index bf239be4f..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_casing_very_short.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_frame.png b/src/main/resources/assets/create/textures/block/andesite_frame.png deleted file mode 100644 index 88b0c5ac5..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_frame.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel.png b/src/main/resources/assets/create/textures/block/andesite_funnel.png deleted file mode 100644 index 10f72e7dd..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_back.png b/src/main/resources/assets/create/textures/block/andesite_funnel_back.png deleted file mode 100644 index 63523dee7..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_back.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png b/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png deleted file mode 100644 index af4ed21dd..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_neutral.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png b/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png deleted file mode 100644 index e4a661a2b..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_plating.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_powered.png b/src/main/resources/assets/create/textures/block/andesite_funnel_powered.png deleted file mode 100644 index 9044f6a19..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png b/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png deleted file mode 100644 index 70c41165c..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_pull.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_push.png b/src/main/resources/assets/create/textures/block/andesite_funnel_push.png deleted file mode 100644 index dc1d5886e..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_push.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_slope.png b/src/main/resources/assets/create/textures/block/andesite_funnel_slope.png deleted file mode 100644 index c3e3bc614..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_slope.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png b/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png deleted file mode 100644 index e658eba80..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_tall.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png b/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png deleted file mode 100644 index 1619eece2..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_funnel_tall_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel.png b/src/main/resources/assets/create/textures/block/andesite_tunnel.png deleted file mode 100644 index d9bb320f1..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_tunnel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png b/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png deleted file mode 100644 index ff0e67138..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_tunnel_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/andesite_tunnel_top_window.png b/src/main/resources/assets/create/textures/block/andesite_tunnel_top_window.png deleted file mode 100644 index 65c0726ae..000000000 Binary files a/src/main/resources/assets/create/textures/block/andesite_tunnel_top_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/axis.png b/src/main/resources/assets/create/textures/block/axis.png deleted file mode 100644 index 3a90166d5..000000000 Binary files a/src/main/resources/assets/create/textures/block/axis.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/axis_top.png b/src/main/resources/assets/create/textures/block/axis_top.png deleted file mode 100644 index c77c30c20..000000000 Binary files a/src/main/resources/assets/create/textures/block/axis_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/basin.png b/src/main/resources/assets/create/textures/block/basin.png deleted file mode 100644 index da412cf55..000000000 Binary files a/src/main/resources/assets/create/textures/block/basin.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/basin_canal.png b/src/main/resources/assets/create/textures/block/basin_canal.png deleted file mode 100644 index 0e5bb55b6..000000000 Binary files a/src/main/resources/assets/create/textures/block/basin_canal.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/basin_side.png b/src/main/resources/assets/create/textures/block/basin_side.png deleted file mode 100644 index 5a8cfe2f1..000000000 Binary files a/src/main/resources/assets/create/textures/block/basin_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/bearing_top.png b/src/main/resources/assets/create/textures/block/bearing_top.png deleted file mode 100644 index 3fc200fee..000000000 Binary files a/src/main/resources/assets/create/textures/block/bearing_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/bearing_top_wooden.png b/src/main/resources/assets/create/textures/block/bearing_top_wooden.png deleted file mode 100644 index 455a6fbb5..000000000 Binary files a/src/main/resources/assets/create/textures/block/bearing_top_wooden.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt.png b/src/main/resources/assets/create/textures/block/belt.png deleted file mode 100644 index 63a419c13..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/black_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/black_diagonal_scroll.png deleted file mode 100644 index 8be0bb5b9..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/black_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/black_scroll.png b/src/main/resources/assets/create/textures/block/belt/black_scroll.png deleted file mode 100644 index f646081e3..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/black_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/blue_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/blue_diagonal_scroll.png deleted file mode 100644 index 000b23298..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/blue_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/blue_scroll.png b/src/main/resources/assets/create/textures/block/belt/blue_scroll.png deleted file mode 100644 index aee4e9812..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/blue_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/brown_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/brown_diagonal_scroll.png deleted file mode 100644 index 4191bcbd2..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/brown_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/brown_scroll.png b/src/main/resources/assets/create/textures/block/belt/brown_scroll.png deleted file mode 100644 index b7f30588b..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/brown_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/cyan_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/cyan_diagonal_scroll.png deleted file mode 100644 index a32e403e1..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/cyan_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/cyan_scroll.png b/src/main/resources/assets/create/textures/block/belt/cyan_scroll.png deleted file mode 100644 index 61471f9da..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/cyan_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/gray_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/gray_diagonal_scroll.png deleted file mode 100644 index 7b0e9b97c..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/gray_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/gray_scroll.png b/src/main/resources/assets/create/textures/block/belt/gray_scroll.png deleted file mode 100644 index a8a1e21fb..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/gray_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/green_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/green_diagonal_scroll.png deleted file mode 100644 index 2ab1c58af..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/green_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/green_scroll.png b/src/main/resources/assets/create/textures/block/belt/green_scroll.png deleted file mode 100644 index 53fbf1194..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/green_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/light_blue_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/light_blue_diagonal_scroll.png deleted file mode 100644 index 099d48fae..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/light_blue_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/light_blue_scroll.png b/src/main/resources/assets/create/textures/block/belt/light_blue_scroll.png deleted file mode 100644 index 241d46654..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/light_blue_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/light_gray_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/light_gray_diagonal_scroll.png deleted file mode 100644 index 52e9d83c1..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/light_gray_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/light_gray_scroll.png b/src/main/resources/assets/create/textures/block/belt/light_gray_scroll.png deleted file mode 100644 index 3a38297b7..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/light_gray_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/lime_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/lime_diagonal_scroll.png deleted file mode 100644 index e29aa9ae1..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/lime_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/lime_scroll.png b/src/main/resources/assets/create/textures/block/belt/lime_scroll.png deleted file mode 100644 index 0048c9c99..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/lime_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/magenta_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/magenta_diagonal_scroll.png deleted file mode 100644 index 15a5f032d..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/magenta_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/magenta_scroll.png b/src/main/resources/assets/create/textures/block/belt/magenta_scroll.png deleted file mode 100644 index 071b8c9e7..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/magenta_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/orange_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/orange_diagonal_scroll.png deleted file mode 100644 index 7dea63fc0..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/orange_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/orange_scroll.png b/src/main/resources/assets/create/textures/block/belt/orange_scroll.png deleted file mode 100644 index 3e34871e2..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/orange_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/pink_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/pink_diagonal_scroll.png deleted file mode 100644 index 14aa65709..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/pink_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/pink_scroll.png b/src/main/resources/assets/create/textures/block/belt/pink_scroll.png deleted file mode 100644 index b0176ab6b..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/pink_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/purple_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/purple_diagonal_scroll.png deleted file mode 100644 index 128ea0ea4..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/purple_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/purple_scroll.png b/src/main/resources/assets/create/textures/block/belt/purple_scroll.png deleted file mode 100644 index 627f7e04d..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/purple_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/red_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/red_diagonal_scroll.png deleted file mode 100644 index 841297edd..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/red_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/red_scroll.png b/src/main/resources/assets/create/textures/block/belt/red_scroll.png deleted file mode 100644 index a1850443a..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/red_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/white_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/white_diagonal_scroll.png deleted file mode 100644 index 796b9c257..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/white_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/white_scroll.png b/src/main/resources/assets/create/textures/block/belt/white_scroll.png deleted file mode 100644 index 84d6cca0c..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/white_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/yellow_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt/yellow_diagonal_scroll.png deleted file mode 100644 index 76f76aac4..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/yellow_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt/yellow_scroll.png b/src/main/resources/assets/create/textures/block/belt/yellow_scroll.png deleted file mode 100644 index 8d8e7ecb0..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt/yellow_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt_diagonal.png b/src/main/resources/assets/create/textures/block/belt_diagonal.png deleted file mode 100644 index 4cde6d50a..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt_diagonal.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt_diagonal_scroll.png b/src/main/resources/assets/create/textures/block/belt_diagonal_scroll.png deleted file mode 100644 index 43aac94b4..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt_diagonal_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt_offset.png b/src/main/resources/assets/create/textures/block/belt_offset.png deleted file mode 100644 index 02e09fdf4..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt_offset.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/belt_scroll.png b/src/main/resources/assets/create/textures/block/belt_scroll.png deleted file mode 100644 index d6e8e0277..000000000 Binary files a/src/main/resources/assets/create/textures/block/belt_scroll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/blaze_burner_inner.png b/src/main/resources/assets/create/textures/block/blaze_burner_inner.png deleted file mode 100644 index dba57db1b..000000000 Binary files a/src/main/resources/assets/create/textures/block/blaze_burner_inner.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/blaze_burner_side.png b/src/main/resources/assets/create/textures/block/blaze_burner_side.png deleted file mode 100644 index f1fcf05bb..000000000 Binary files a/src/main/resources/assets/create/textures/block/blaze_burner_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/blaze_heater_brazier.png b/src/main/resources/assets/create/textures/block/blaze_heater_brazier.png deleted file mode 100644 index ae1b6ddc5..000000000 Binary files a/src/main/resources/assets/create/textures/block/blaze_heater_brazier.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/blaze_kindled.png b/src/main/resources/assets/create/textures/block/blaze_kindled.png deleted file mode 100644 index 39739e936..000000000 Binary files a/src/main/resources/assets/create/textures/block/blaze_kindled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/blaze_seething.png b/src/main/resources/assets/create/textures/block/blaze_seething.png deleted file mode 100644 index c0eef1b07..000000000 Binary files a/src/main/resources/assets/create/textures/block/blaze_seething.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/blaze_smouldering.png b/src/main/resources/assets/create/textures/block/blaze_smouldering.png deleted file mode 100644 index 8f60cec15..000000000 Binary files a/src/main/resources/assets/create/textures/block/blaze_smouldering.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/bracket_metal.png b/src/main/resources/assets/create/textures/block/bracket_metal.png deleted file mode 100644 index 3defb1da4..000000000 Binary files a/src/main/resources/assets/create/textures/block/bracket_metal.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/bracket_plate_metal.png b/src/main/resources/assets/create/textures/block/bracket_plate_metal.png deleted file mode 100644 index 2a1846653..000000000 Binary files a/src/main/resources/assets/create/textures/block/bracket_plate_metal.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/bracket_plate_wooden.png b/src/main/resources/assets/create/textures/block/bracket_plate_wooden.png deleted file mode 100644 index 246a70594..000000000 Binary files a/src/main/resources/assets/create/textures/block/bracket_plate_wooden.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/bracket_wooden.png b/src/main/resources/assets/create/textures/block/bracket_wooden.png deleted file mode 100644 index e44461182..000000000 Binary files a/src/main/resources/assets/create/textures/block/bracket_wooden.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_block.png b/src/main/resources/assets/create/textures/block/brass_block.png deleted file mode 100644 index 7742a9221..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_block.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing.png b/src/main/resources/assets/create/textures/block/brass_casing.png deleted file mode 100644 index 304f7843f..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing_belt.png b/src/main/resources/assets/create/textures/block/brass_casing_belt.png deleted file mode 100644 index 891794902..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_casing_belt.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing_connected.png b/src/main/resources/assets/create/textures/block/brass_casing_connected.png deleted file mode 100644 index 00bb738e5..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_casing_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing_inner.png b/src/main/resources/assets/create/textures/block/brass_casing_inner.png deleted file mode 100644 index feb3a98c5..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_casing_inner.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_casing_side.png b/src/main/resources/assets/create/textures/block/brass_casing_side.png deleted file mode 100644 index 192026e14..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_casing_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel.png b/src/main/resources/assets/create/textures/block/brass_funnel.png deleted file mode 100644 index 6a7940a73..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_back.png b/src/main/resources/assets/create/textures/block/brass_funnel_back.png deleted file mode 100644 index e40761bb6..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_back.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png b/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png deleted file mode 100644 index 4b873d8ad..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_neutral.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_plating.png b/src/main/resources/assets/create/textures/block/brass_funnel_plating.png deleted file mode 100644 index 428b2a794..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_plating.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_powered.png b/src/main/resources/assets/create/textures/block/brass_funnel_powered.png deleted file mode 100644 index 4df8fb70a..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_pull.png b/src/main/resources/assets/create/textures/block/brass_funnel_pull.png deleted file mode 100644 index 52177a634..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_pull.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_push.png b/src/main/resources/assets/create/textures/block/brass_funnel_push.png deleted file mode 100644 index 00d7b09e2..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_push.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_slope.png b/src/main/resources/assets/create/textures/block/brass_funnel_slope.png deleted file mode 100644 index 9f46246be..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_slope.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_tall.png b/src/main/resources/assets/create/textures/block/brass_funnel_tall.png deleted file mode 100644 index 91b22ff1f..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_tall.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png b/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png deleted file mode 100644 index 6b2c45c15..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_funnel_tall_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_gearbox.png b/src/main/resources/assets/create/textures/block/brass_gearbox.png deleted file mode 100644 index a595fb81d..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_gearbox.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_storage_block.png b/src/main/resources/assets/create/textures/block/brass_storage_block.png deleted file mode 100644 index 6c70e6e84..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_storage_block.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_tiles.png b/src/main/resources/assets/create/textures/block/brass_tiles.png deleted file mode 100644 index 9d4010e30..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_tiles.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel.png b/src/main/resources/assets/create/textures/block/brass_tunnel.png deleted file mode 100644 index 8370787bc..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_tunnel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top.png deleted file mode 100644 index 4aee2f2d3..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_tunnel_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png deleted file mode 100644 index 6d9a2e174..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_tunnel_top_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/brass_tunnel_top_window.png b/src/main/resources/assets/create/textures/block/brass_tunnel_top_window.png deleted file mode 100644 index d7fd8da69..000000000 Binary files a/src/main/resources/assets/create/textures/block/brass_tunnel_top_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/cart_assembler_side.png b/src/main/resources/assets/create/textures/block/cart_assembler_side.png deleted file mode 100644 index 1a92fadc1..000000000 Binary files a/src/main/resources/assets/create/textures/block/cart_assembler_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/chute.png b/src/main/resources/assets/create/textures/block/chute.png deleted file mode 100644 index a38ecf614..000000000 Binary files a/src/main/resources/assets/create/textures/block/chute.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/chute_diagonal.png b/src/main/resources/assets/create/textures/block/chute_diagonal.png deleted file mode 100644 index 87d5d5790..000000000 Binary files a/src/main/resources/assets/create/textures/block/chute_diagonal.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/clockwork_bearing_side.png b/src/main/resources/assets/create/textures/block/clockwork_bearing_side.png deleted file mode 100644 index 5931a1506..000000000 Binary files a/src/main/resources/assets/create/textures/block/clockwork_bearing_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/clutch_off.png b/src/main/resources/assets/create/textures/block/clutch_off.png deleted file mode 100644 index bd5f6ef9f..000000000 Binary files a/src/main/resources/assets/create/textures/block/clutch_off.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/clutch_on.png b/src/main/resources/assets/create/textures/block/clutch_on.png deleted file mode 100644 index d48eca706..000000000 Binary files a/src/main/resources/assets/create/textures/block/clutch_on.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/cogwheel.png b/src/main/resources/assets/create/textures/block/cogwheel.png deleted file mode 100644 index f996f7b96..000000000 Binary files a/src/main/resources/assets/create/textures/block/cogwheel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/contact_back.png b/src/main/resources/assets/create/textures/block/contact_back.png deleted file mode 100644 index 3431d19a6..000000000 Binary files a/src/main/resources/assets/create/textures/block/contact_back.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/contact_front.png b/src/main/resources/assets/create/textures/block/contact_front.png deleted file mode 100644 index c08c4411e..000000000 Binary files a/src/main/resources/assets/create/textures/block/contact_front.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/contact_side.png b/src/main/resources/assets/create/textures/block/contact_side.png deleted file mode 100644 index 68d8aa6e7..000000000 Binary files a/src/main/resources/assets/create/textures/block/contact_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/contact_side_powered.png b/src/main/resources/assets/create/textures/block/contact_side_powered.png deleted file mode 100644 index 92d7e1a7e..000000000 Binary files a/src/main/resources/assets/create/textures/block/contact_side_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/content_observer.png b/src/main/resources/assets/create/textures/block/content_observer.png deleted file mode 100644 index 8c87ec827..000000000 Binary files a/src/main/resources/assets/create/textures/block/content_observer.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/content_observer_inner.png b/src/main/resources/assets/create/textures/block/content_observer_inner.png deleted file mode 100644 index a3460c3ce..000000000 Binary files a/src/main/resources/assets/create/textures/block/content_observer_inner.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/content_observer_inner_powered.png b/src/main/resources/assets/create/textures/block/content_observer_inner_powered.png deleted file mode 100644 index f6a51f61d..000000000 Binary files a/src/main/resources/assets/create/textures/block/content_observer_inner_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/content_observer_powered.png b/src/main/resources/assets/create/textures/block/content_observer_powered.png deleted file mode 100644 index 0171658eb..000000000 Binary files a/src/main/resources/assets/create/textures/block/content_observer_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail.png b/src/main/resources/assets/create/textures/block/controller_rail.png deleted file mode 100644 index 289f1cc4f..000000000 Binary files a/src/main/resources/assets/create/textures/block/controller_rail.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail_base.png b/src/main/resources/assets/create/textures/block/controller_rail_base.png deleted file mode 100644 index 34b775a07..000000000 Binary files a/src/main/resources/assets/create/textures/block/controller_rail_base.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail_powered.png b/src/main/resources/assets/create/textures/block/controller_rail_powered.png deleted file mode 100644 index e6d892c32..000000000 Binary files a/src/main/resources/assets/create/textures/block/controller_rail_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/controller_rail_tint.png b/src/main/resources/assets/create/textures/block/controller_rail_tint.png deleted file mode 100644 index c58f3ec80..000000000 Binary files a/src/main/resources/assets/create/textures/block/controller_rail_tint.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/copper_backtank.png b/src/main/resources/assets/create/textures/block/copper_backtank.png deleted file mode 100644 index 2838c0c2d..000000000 Binary files a/src/main/resources/assets/create/textures/block/copper_backtank.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/copper_casing.png b/src/main/resources/assets/create/textures/block/copper_casing.png deleted file mode 100644 index e9eaface2..000000000 Binary files a/src/main/resources/assets/create/textures/block/copper_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/copper_casing_connected.png b/src/main/resources/assets/create/textures/block/copper_casing_connected.png deleted file mode 100644 index 9cd000972..000000000 Binary files a/src/main/resources/assets/create/textures/block/copper_casing_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/copper_gearbox.png b/src/main/resources/assets/create/textures/block/copper_gearbox.png deleted file mode 100644 index 6de531b8c..000000000 Binary files a/src/main/resources/assets/create/textures/block/copper_gearbox.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/copper_plating.png b/src/main/resources/assets/create/textures/block/copper_plating.png deleted file mode 100644 index 52453314c..000000000 Binary files a/src/main/resources/assets/create/textures/block/copper_plating.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crafter_side.png b/src/main/resources/assets/create/textures/block/crafter_side.png deleted file mode 100644 index b3b71e0f5..000000000 Binary files a/src/main/resources/assets/create/textures/block/crafter_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crafter_side_connected.png b/src/main/resources/assets/create/textures/block/crafter_side_connected.png deleted file mode 100644 index 20c70a9d3..000000000 Binary files a/src/main/resources/assets/create/textures/block/crafter_side_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crafter_thingies.png b/src/main/resources/assets/create/textures/block/crafter_thingies.png deleted file mode 100644 index 7d8ebefef..000000000 Binary files a/src/main/resources/assets/create/textures/block/crafter_thingies.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crafter_top.png b/src/main/resources/assets/create/textures/block/crafter_top.png deleted file mode 100644 index d8cf940fd..000000000 Binary files a/src/main/resources/assets/create/textures/block/crafter_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crafter_topunderside.png b/src/main/resources/assets/create/textures/block/crafter_topunderside.png deleted file mode 100644 index 857266694..000000000 Binary files a/src/main/resources/assets/create/textures/block/crafter_topunderside.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crate_andesite.png b/src/main/resources/assets/create/textures/block/crate_andesite.png deleted file mode 100644 index 0b9181d05..000000000 Binary files a/src/main/resources/assets/create/textures/block/crate_andesite.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crate_andesite_side.png b/src/main/resources/assets/create/textures/block/crate_andesite_side.png deleted file mode 100644 index 0c04b618d..000000000 Binary files a/src/main/resources/assets/create/textures/block/crate_andesite_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crate_brass.png b/src/main/resources/assets/create/textures/block/crate_brass.png deleted file mode 100644 index 5e809adda..000000000 Binary files a/src/main/resources/assets/create/textures/block/crate_brass.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crate_brass_side.png b/src/main/resources/assets/create/textures/block/crate_brass_side.png deleted file mode 100644 index 7b0550d78..000000000 Binary files a/src/main/resources/assets/create/textures/block/crate_brass_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crate_copper.png b/src/main/resources/assets/create/textures/block/crate_copper.png deleted file mode 100644 index 2eb0e1704..000000000 Binary files a/src/main/resources/assets/create/textures/block/crate_copper.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crate_copper_side.png b/src/main/resources/assets/create/textures/block/crate_copper_side.png deleted file mode 100644 index 438d22132..000000000 Binary files a/src/main/resources/assets/create/textures/block/crate_copper_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crate_creative.png b/src/main/resources/assets/create/textures/block/crate_creative.png deleted file mode 100644 index 19ab07cea..000000000 Binary files a/src/main/resources/assets/create/textures/block/crate_creative.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crate_creative_side.png b/src/main/resources/assets/create/textures/block/crate_creative_side.png deleted file mode 100644 index 9cb6219c3..000000000 Binary files a/src/main/resources/assets/create/textures/block/crate_creative_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/creative_casing.png b/src/main/resources/assets/create/textures/block/creative_casing.png deleted file mode 100644 index 84313c8ad..000000000 Binary files a/src/main/resources/assets/create/textures/block/creative_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/creative_casing_connected.png b/src/main/resources/assets/create/textures/block/creative_casing_connected.png deleted file mode 100644 index f9ec8526f..000000000 Binary files a/src/main/resources/assets/create/textures/block/creative_casing_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/creative_fluid_tank.png b/src/main/resources/assets/create/textures/block/creative_fluid_tank.png deleted file mode 100644 index 4dee59863..000000000 Binary files a/src/main/resources/assets/create/textures/block/creative_fluid_tank.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/creative_fluid_tank_connected.png b/src/main/resources/assets/create/textures/block/creative_fluid_tank_connected.png deleted file mode 100644 index 591540572..000000000 Binary files a/src/main/resources/assets/create/textures/block/creative_fluid_tank_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/creative_fluid_tank_window.png b/src/main/resources/assets/create/textures/block/creative_fluid_tank_window.png deleted file mode 100644 index e4bb4e1df..000000000 Binary files a/src/main/resources/assets/create/textures/block/creative_fluid_tank_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/creative_fluid_tank_window_single.png b/src/main/resources/assets/create/textures/block/creative_fluid_tank_window_single.png deleted file mode 100644 index 2a9d6c074..000000000 Binary files a/src/main/resources/assets/create/textures/block/creative_fluid_tank_window_single.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/creative_motor.png b/src/main/resources/assets/create/textures/block/creative_motor.png deleted file mode 100644 index f621901d9..000000000 Binary files a/src/main/resources/assets/create/textures/block/creative_motor.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crushing_wheel.png b/src/main/resources/assets/create/textures/block/crushing_wheel.png deleted file mode 100644 index 7d7255c07..000000000 Binary files a/src/main/resources/assets/create/textures/block/crushing_wheel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/crushing_wheel_body.png b/src/main/resources/assets/create/textures/block/crushing_wheel_body.png deleted file mode 100644 index d67efa3ec..000000000 Binary files a/src/main/resources/assets/create/textures/block/crushing_wheel_body.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/cuckoo_clock.png b/src/main/resources/assets/create/textures/block/cuckoo_clock.png deleted file mode 100644 index 6ff0620ee..000000000 Binary files a/src/main/resources/assets/create/textures/block/cuckoo_clock.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/dark_metal_block.png b/src/main/resources/assets/create/textures/block/dark_metal_block.png deleted file mode 100644 index f0105ab95..000000000 Binary files a/src/main/resources/assets/create/textures/block/dark_metal_block.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/deployer.png b/src/main/resources/assets/create/textures/block/deployer.png deleted file mode 100644 index 0bb0335c1..000000000 Binary files a/src/main/resources/assets/create/textures/block/deployer.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/depot_side.png b/src/main/resources/assets/create/textures/block/depot_side.png deleted file mode 100644 index 0f38e17d5..000000000 Binary files a/src/main/resources/assets/create/textures/block/depot_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/depot_top.png b/src/main/resources/assets/create/textures/block/depot_top.png deleted file mode 100644 index 0d0989866..000000000 Binary files a/src/main/resources/assets/create/textures/block/depot_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/idle.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/idle.png deleted file mode 100644 index fada44e77..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/idle.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/item.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/item.png deleted file mode 100644 index 98f9609d8..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/item.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered.png deleted file mode 100644 index c461f91be..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered_powering.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered_powering.png deleted file mode 100644 index c461f91be..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powered_powering.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powering.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powering.png deleted file mode 100644 index fada44e77..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_pulse_repeater/powering.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/idle.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/idle.png deleted file mode 100644 index 252534d88..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/idle.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/item.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/item.png deleted file mode 100644 index 44aca3a9e..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/item.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered.png deleted file mode 100644 index 69db5b633..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered_powering.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered_powering.png deleted file mode 100644 index 5e9895c0a..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powered_powering.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powering.png b/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powering.png deleted file mode 100644 index 8bc244e5f..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/adjustable_repeater/powering.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_latch/idle.png b/src/main/resources/assets/create/textures/block/diodes/powered_latch/idle.png deleted file mode 100644 index 737c4bd5a..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_latch/idle.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_latch/powering.png b/src/main/resources/assets/create/textures/block/diodes/powered_latch/powering.png deleted file mode 100644 index f3e5f394d..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_latch/powering.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/idle.png b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/idle.png deleted file mode 100644 index c0f2205a1..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/idle.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered.png b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered.png deleted file mode 100644 index 754701d24..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered_powering.png b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered_powering.png deleted file mode 100644 index b5a0ccdca..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powered_powering.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powering.png b/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powering.png deleted file mode 100644 index bb1eb9015..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/powered_toggle_latch/powering.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/idle.png b/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/idle.png deleted file mode 100644 index bccbf5d04..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/idle.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/powered.png b/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/powered.png deleted file mode 100644 index fe77e1238..000000000 Binary files a/src/main/resources/assets/create/textures/block/diodes/pulse_repeater/powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/encased_chain_drive.png b/src/main/resources/assets/create/textures/block/encased_chain_drive.png deleted file mode 100644 index 7dc2cf300..000000000 Binary files a/src/main/resources/assets/create/textures/block/encased_chain_drive.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/encased_chain_drive_end.png b/src/main/resources/assets/create/textures/block/encased_chain_drive_end.png deleted file mode 100644 index b15ff967d..000000000 Binary files a/src/main/resources/assets/create/textures/block/encased_chain_drive_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/encased_chain_drive_middle.png b/src/main/resources/assets/create/textures/block/encased_chain_drive_middle.png deleted file mode 100644 index 93e749616..000000000 Binary files a/src/main/resources/assets/create/textures/block/encased_chain_drive_middle.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/encased_pipe.png b/src/main/resources/assets/create/textures/block/encased_pipe.png deleted file mode 100644 index 320d1831e..000000000 Binary files a/src/main/resources/assets/create/textures/block/encased_pipe.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fan_blades.png b/src/main/resources/assets/create/textures/block/fan_blades.png deleted file mode 100644 index 299b134f2..000000000 Binary files a/src/main/resources/assets/create/textures/block/fan_blades.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fan_casing.png b/src/main/resources/assets/create/textures/block/fan_casing.png deleted file mode 100644 index 4ce41f552..000000000 Binary files a/src/main/resources/assets/create/textures/block/fan_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fan_side.png b/src/main/resources/assets/create/textures/block/fan_side.png deleted file mode 100644 index a7320888b..000000000 Binary files a/src/main/resources/assets/create/textures/block/fan_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/filtered_detector_front.png b/src/main/resources/assets/create/textures/block/filtered_detector_front.png deleted file mode 100644 index 6a0ac87ce..000000000 Binary files a/src/main/resources/assets/create/textures/block/filtered_detector_front.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/filtered_detector_top.png b/src/main/resources/assets/create/textures/block/filtered_detector_top.png deleted file mode 100644 index 9d77dd137..000000000 Binary files a/src/main/resources/assets/create/textures/block/filtered_detector_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fluid_pipe.png b/src/main/resources/assets/create/textures/block/fluid_pipe.png deleted file mode 100644 index b98227db1..000000000 Binary files a/src/main/resources/assets/create/textures/block/fluid_pipe.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fluid_tank.png b/src/main/resources/assets/create/textures/block/fluid_tank.png deleted file mode 100644 index 64217ddfa..000000000 Binary files a/src/main/resources/assets/create/textures/block/fluid_tank.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fluid_tank_connected.png b/src/main/resources/assets/create/textures/block/fluid_tank_connected.png deleted file mode 100644 index ef34d1e99..000000000 Binary files a/src/main/resources/assets/create/textures/block/fluid_tank_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fluid_tank_window.png b/src/main/resources/assets/create/textures/block/fluid_tank_window.png deleted file mode 100644 index 73542e5af..000000000 Binary files a/src/main/resources/assets/create/textures/block/fluid_tank_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fluid_tank_window_single.png b/src/main/resources/assets/create/textures/block/fluid_tank_window_single.png deleted file mode 100644 index f3b2a9e95..000000000 Binary files a/src/main/resources/assets/create/textures/block/fluid_tank_window_single.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/fluid_valve.png b/src/main/resources/assets/create/textures/block/fluid_valve.png deleted file mode 100644 index 21bb7083d..000000000 Binary files a/src/main/resources/assets/create/textures/block/fluid_valve.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/funnel_closed.png b/src/main/resources/assets/create/textures/block/funnel_closed.png deleted file mode 100644 index 905206774..000000000 Binary files a/src/main/resources/assets/create/textures/block/funnel_closed.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/funnel_open.png b/src/main/resources/assets/create/textures/block/funnel_open.png deleted file mode 100644 index d636aa552..000000000 Binary files a/src/main/resources/assets/create/textures/block/funnel_open.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/furnace_cylinder.png b/src/main/resources/assets/create/textures/block/furnace_cylinder.png deleted file mode 100644 index 4d01037f2..000000000 Binary files a/src/main/resources/assets/create/textures/block/furnace_cylinder.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gantry_shaft.png b/src/main/resources/assets/create/textures/block/gantry_shaft.png deleted file mode 100644 index 7ddcf4a0c..000000000 Binary files a/src/main/resources/assets/create/textures/block/gantry_shaft.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gantry_shaft_flipped.png b/src/main/resources/assets/create/textures/block/gantry_shaft_flipped.png deleted file mode 100644 index aac77d69c..000000000 Binary files a/src/main/resources/assets/create/textures/block/gantry_shaft_flipped.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gantry_shaft_powered.png b/src/main/resources/assets/create/textures/block/gantry_shaft_powered.png deleted file mode 100644 index 992cbf8cf..000000000 Binary files a/src/main/resources/assets/create/textures/block/gantry_shaft_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gantry_shaft_powered_flipped.png b/src/main/resources/assets/create/textures/block/gantry_shaft_powered_flipped.png deleted file mode 100644 index 2e8e2ed91..000000000 Binary files a/src/main/resources/assets/create/textures/block/gantry_shaft_powered_flipped.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gauge.png b/src/main/resources/assets/create/textures/block/gauge.png deleted file mode 100644 index 4a5ec0fb4..000000000 Binary files a/src/main/resources/assets/create/textures/block/gauge.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gearbox.png b/src/main/resources/assets/create/textures/block/gearbox.png deleted file mode 100644 index 9aabbae8a..000000000 Binary files a/src/main/resources/assets/create/textures/block/gearbox.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gearbox_top.png b/src/main/resources/assets/create/textures/block/gearbox_top.png deleted file mode 100644 index 0b8c8e06b..000000000 Binary files a/src/main/resources/assets/create/textures/block/gearbox_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gearshift_off.png b/src/main/resources/assets/create/textures/block/gearshift_off.png deleted file mode 100644 index 42f88964e..000000000 Binary files a/src/main/resources/assets/create/textures/block/gearshift_off.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/gearshift_on.png b/src/main/resources/assets/create/textures/block/gearshift_on.png deleted file mode 100644 index 81d53f0fe..000000000 Binary files a/src/main/resources/assets/create/textures/block/gearshift_on.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png b/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png deleted file mode 100644 index 13457c4c0..000000000 Binary files a/src/main/resources/assets/create/textures/block/glass_fluid_pipe.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/harvester.png b/src/main/resources/assets/create/textures/block/harvester.png deleted file mode 100644 index 2c7640f46..000000000 Binary files a/src/main/resources/assets/create/textures/block/harvester.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png b/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png deleted file mode 100644 index 357678581..000000000 Binary files a/src/main/resources/assets/create/textures/block/hose_pulley_magnet.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/hose_pulley_rope.png b/src/main/resources/assets/create/textures/block/hose_pulley_rope.png deleted file mode 100644 index 1c8ccb93c..000000000 Binary files a/src/main/resources/assets/create/textures/block/hose_pulley_rope.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/indicator/0.png b/src/main/resources/assets/create/textures/block/indicator/0.png deleted file mode 100644 index 07fb77676..000000000 Binary files a/src/main/resources/assets/create/textures/block/indicator/0.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/indicator/1.png b/src/main/resources/assets/create/textures/block/indicator/1.png deleted file mode 100644 index 8becea76c..000000000 Binary files a/src/main/resources/assets/create/textures/block/indicator/1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/indicator/2.png b/src/main/resources/assets/create/textures/block/indicator/2.png deleted file mode 100644 index 4021937dc..000000000 Binary files a/src/main/resources/assets/create/textures/block/indicator/2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/indicator/3.png b/src/main/resources/assets/create/textures/block/indicator/3.png deleted file mode 100644 index 67f1a2fe3..000000000 Binary files a/src/main/resources/assets/create/textures/block/indicator/3.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/indicator/4.png b/src/main/resources/assets/create/textures/block/indicator/4.png deleted file mode 100644 index 914307496..000000000 Binary files a/src/main/resources/assets/create/textures/block/indicator/4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/indicator/5.png b/src/main/resources/assets/create/textures/block/indicator/5.png deleted file mode 100644 index 51b804fc5..000000000 Binary files a/src/main/resources/assets/create/textures/block/indicator/5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/indicator/6.png b/src/main/resources/assets/create/textures/block/indicator/6.png deleted file mode 100644 index f3a4edd92..000000000 Binary files a/src/main/resources/assets/create/textures/block/indicator/6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/item_drain_side.png b/src/main/resources/assets/create/textures/block/item_drain_side.png deleted file mode 100644 index 6c72d1fc9..000000000 Binary files a/src/main/resources/assets/create/textures/block/item_drain_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/item_drain_top.png b/src/main/resources/assets/create/textures/block/item_drain_top.png deleted file mode 100644 index d7b8ee084..000000000 Binary files a/src/main/resources/assets/create/textures/block/item_drain_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/large_cogwheel.png b/src/main/resources/assets/create/textures/block/large_cogwheel.png deleted file mode 100644 index 6cbb952d4..000000000 Binary files a/src/main/resources/assets/create/textures/block/large_cogwheel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_end.png b/src/main/resources/assets/create/textures/block/linear_chassis_end.png deleted file mode 100644 index fd30c3cda..000000000 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_end_connected.png b/src/main/resources/assets/create/textures/block/linear_chassis_end_connected.png deleted file mode 100644 index e580b0198..000000000 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_end_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky.png b/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky.png deleted file mode 100644 index 872b1a04d..000000000 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky_connected.png b/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky_connected.png deleted file mode 100644 index 4484376b0..000000000 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_end_sticky_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_side.png b/src/main/resources/assets/create/textures/block/linear_chassis_side.png deleted file mode 100644 index 3b0982d92..000000000 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/linear_chassis_side_connected.png b/src/main/resources/assets/create/textures/block/linear_chassis_side_connected.png deleted file mode 100644 index 41d267adf..000000000 Binary files a/src/main/resources/assets/create/textures/block/linear_chassis_side_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/machine_base_top.png b/src/main/resources/assets/create/textures/block/machine_base_top.png deleted file mode 100644 index 8d6fe169c..000000000 Binary files a/src/main/resources/assets/create/textures/block/machine_base_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/marker_flag.png b/src/main/resources/assets/create/textures/block/marker_flag.png deleted file mode 100644 index c3a12462d..000000000 Binary files a/src/main/resources/assets/create/textures/block/marker_flag.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_arm.png b/src/main/resources/assets/create/textures/block/mechanical_arm.png deleted file mode 100644 index b4f728ea7..000000000 Binary files a/src/main/resources/assets/create/textures/block/mechanical_arm.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_bearing_side.png b/src/main/resources/assets/create/textures/block/mechanical_bearing_side.png deleted file mode 100644 index 7ecadf5f6..000000000 Binary files a/src/main/resources/assets/create/textures/block/mechanical_bearing_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_bottom.png b/src/main/resources/assets/create/textures/block/mechanical_press_bottom.png deleted file mode 100644 index e3548a883..000000000 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_bottom.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_head.png b/src/main/resources/assets/create/textures/block/mechanical_press_head.png deleted file mode 100644 index ee8bbd04a..000000000 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_head.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_pole.png b/src/main/resources/assets/create/textures/block/mechanical_press_pole.png deleted file mode 100644 index 0c68a7439..000000000 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_pole.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_side.png b/src/main/resources/assets/create/textures/block/mechanical_press_side.png deleted file mode 100644 index 32ddc197f..000000000 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_press_top.png b/src/main/resources/assets/create/textures/block/mechanical_press_top.png deleted file mode 100644 index d7be87b5d..000000000 Binary files a/src/main/resources/assets/create/textures/block/mechanical_press_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mechanical_saw_top.png b/src/main/resources/assets/create/textures/block/mechanical_saw_top.png deleted file mode 100644 index fa3347f98..000000000 Binary files a/src/main/resources/assets/create/textures/block/mechanical_saw_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/millstone.png b/src/main/resources/assets/create/textures/block/millstone.png deleted file mode 100644 index e2318cb2f..000000000 Binary files a/src/main/resources/assets/create/textures/block/millstone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mixer_base_side.png b/src/main/resources/assets/create/textures/block/mixer_base_side.png deleted file mode 100644 index bdda62d68..000000000 Binary files a/src/main/resources/assets/create/textures/block/mixer_base_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/mixer_head.png b/src/main/resources/assets/create/textures/block/mixer_head.png deleted file mode 100644 index de6b8074a..000000000 Binary files a/src/main/resources/assets/create/textures/block/mixer_head.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/net.png b/src/main/resources/assets/create/textures/block/net.png deleted file mode 100644 index c270ffd39..000000000 Binary files a/src/main/resources/assets/create/textures/block/net.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/nixie_tube.png b/src/main/resources/assets/create/textures/block/nixie_tube.png deleted file mode 100644 index f609d789c..000000000 Binary files a/src/main/resources/assets/create/textures/block/nixie_tube.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/noisy_iron_block.png b/src/main/resources/assets/create/textures/block/noisy_iron_block.png deleted file mode 100644 index e3da35586..000000000 Binary files a/src/main/resources/assets/create/textures/block/noisy_iron_block.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_0.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_0.png deleted file mode 100644 index be680ba18..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_0.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_1.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_1.png deleted file mode 100644 index b6a468cd7..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_2.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_2.png deleted file mode 100644 index e6eb4ad48..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_3.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_3.png deleted file mode 100644 index 46813e98b..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_3.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_4.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_4.png deleted file mode 100644 index 98b71ddd9..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_5.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_5.png deleted file mode 100644 index f3954d9e9..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_6.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_6.png deleted file mode 100644 index dc6aa3d38..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_block_7.png b/src/main/resources/assets/create/textures/block/oxidized/copper_block_7.png deleted file mode 100644 index fa5da7c84..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_block_7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_0.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_0.png deleted file mode 100644 index ac0ff9201..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_0.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_1.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_1.png deleted file mode 100644 index 4a8fe255a..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_2.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_2.png deleted file mode 100644 index ad7ce31e3..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_3.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_3.png deleted file mode 100644 index 6e4ed896a..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_3.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_4.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_4.png deleted file mode 100644 index a50816b70..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_5.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_5.png deleted file mode 100644 index 7be64a557..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_6.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_6.png deleted file mode 100644 index 546696980..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_7.png b/src/main/resources/assets/create/textures/block/oxidized/copper_ore_7.png deleted file mode 100644 index 847c75034..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_ore_7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_0.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_0.png deleted file mode 100644 index fbfa21190..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_0.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_1.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_1.png deleted file mode 100644 index c44ae38b7..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_2.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_2.png deleted file mode 100644 index d05ad0822..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_3.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_3.png deleted file mode 100644 index 21c69d822..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_3.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_4.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_4.png deleted file mode 100644 index e8b43d852..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_5.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_5.png deleted file mode 100644 index 6f0c39404..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_6.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_6.png deleted file mode 100644 index 23ea627d3..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_7.png b/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_7.png deleted file mode 100644 index 33bfbe019..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_shingles_7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_0.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_0.png deleted file mode 100644 index 24e88d4be..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_0.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_1.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_1.png deleted file mode 100644 index a21afacb3..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_2.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_2.png deleted file mode 100644 index b4e9b952e..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_3.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_3.png deleted file mode 100644 index 60ff2d425..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_3.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_4.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_4.png deleted file mode 100644 index 61efc59a2..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_5.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_5.png deleted file mode 100644 index 7a0521a57..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_6.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_6.png deleted file mode 100644 index 374e730f4..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_7.png b/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_7.png deleted file mode 100644 index 265b5c914..000000000 Binary files a/src/main/resources/assets/create/textures/block/oxidized/copper_tiles_7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/acacia_window.png b/src/main/resources/assets/create/textures/block/palettes/acacia_window.png deleted file mode 100644 index d7cffea18..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/acacia_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/acacia_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/acacia_window_connected.png deleted file mode 100644 index 800ebaf94..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/acacia_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/andesite1.png b/src/main/resources/assets/create/textures/block/palettes/andesite/andesite1.png deleted file mode 100644 index 29d461129..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/andesite1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/bricks.png b/src/main/resources/assets/create/textures/block/palettes/andesite/bricks.png deleted file mode 100644 index e09bcfb21..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled.png deleted file mode 100644 index 9698cb38d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled_top.png deleted file mode 100644 index 9f41a3274..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/andesite/cobblestone.png deleted file mode 100644 index fbec380cf..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/andesite/fancy_bricks.png deleted file mode 100644 index a400e1b9e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/layered.png b/src/main/resources/assets/create/textures/block/palettes/andesite/layered.png deleted file mode 100644 index 07ffe3165..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/andesite/layered_connected.png deleted file mode 100644 index ab05d15e3..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/paved.png b/src/main/resources/assets/create/textures/block/palettes/andesite/paved.png deleted file mode 100644 index 18b5d3d2b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/andesite/paved_borderless.png deleted file mode 100644 index b98a70f52..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/andesite/paved_top.png deleted file mode 100644 index eca2a30f6..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/pillar.png b/src/main/resources/assets/create/textures/block/palettes/andesite/pillar.png deleted file mode 100644 index 8f85d0d2b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/andesite/pillar_end.png deleted file mode 100644 index dab39dc9f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/polished.png b/src/main/resources/assets/create/textures/block/palettes/andesite/polished.png deleted file mode 100644 index eca2a30f6..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/andesite/polished_connected.png deleted file mode 100644 index 0552b823c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/andesite/polished_slab.png deleted file mode 100644 index 41f72d754..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused1.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused1.png deleted file mode 100644 index 22f15a80b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused10.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused10.png deleted file mode 100644 index cc3905b92..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused11.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused11.png deleted file mode 100644 index 22f15a80b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused12.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused12.png deleted file mode 100644 index 22f15a80b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused12.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused13.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused13.png deleted file mode 100644 index 22f15a80b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused13.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused2.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused2.png deleted file mode 100644 index 90dda672e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused4.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused4.png deleted file mode 100644 index e09bcfb21..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused6.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused6.png deleted file mode 100644 index 9209ca5da..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused7.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused7.png deleted file mode 100644 index 3ee689e2b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused8.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused8.png deleted file mode 100644 index 863e2d723..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/andesite/unused9.png b/src/main/resources/assets/create/textures/block/palettes/andesite/unused9.png deleted file mode 100644 index 2bb5c8afc..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/andesite/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/birch_window.png b/src/main/resources/assets/create/textures/block/palettes/birch_window.png deleted file mode 100644 index 60cbfbd74..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/birch_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/birch_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/birch_window_connected.png deleted file mode 100644 index f02937885..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/birch_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/crimson_window.png b/src/main/resources/assets/create/textures/block/palettes/crimson_window.png deleted file mode 100644 index 5107cdfae..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/crimson_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/crimson_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/crimson_window_connected.png deleted file mode 100644 index 2372db214..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/crimson_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_oak_window.png b/src/main/resources/assets/create/textures/block/palettes/dark_oak_window.png deleted file mode 100644 index 7d6ca9f12..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_oak_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_oak_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/dark_oak_window_connected.png deleted file mode 100644 index 1a524be92..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_oak_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/bricks.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/bricks.png deleted file mode 100644 index 431d19d0b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled.png deleted file mode 100644 index ac4d9ccd0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled_top.png deleted file mode 100644 index 042c15bbc..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/cobblestone.png deleted file mode 100644 index e1b7f65b1..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/dark_scoria1.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/dark_scoria1.png deleted file mode 100644 index 212b0855c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/dark_scoria1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/fancy_bricks.png deleted file mode 100644 index b52b286a0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered.png deleted file mode 100644 index b0bfc368c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered_connected.png deleted file mode 100644 index 1d901f777..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved.png deleted file mode 100644 index f1e11450f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_borderless.png deleted file mode 100644 index 3e9c6ab07..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_top.png deleted file mode 100644 index 805630d6d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar.png deleted file mode 100644 index 271e93507..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar_end.png deleted file mode 100644 index 7cecb47ac..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/plain.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/plain.png deleted file mode 100644 index dfc8cf5ff..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/plain.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished.png deleted file mode 100644 index 805630d6d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_connected.png deleted file mode 100644 index c08edf6d9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_slab.png deleted file mode 100644 index 7baee3ed8..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused10.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused10.png deleted file mode 100644 index 7cfb2ca31..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused11.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused11.png deleted file mode 100644 index 114d2f12f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused12.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused12.png deleted file mode 100644 index 114d2f12f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused12.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused13.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused13.png deleted file mode 100644 index 114d2f12f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused13.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused2.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused2.png deleted file mode 100644 index 22c534f92..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused4.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused4.png deleted file mode 100644 index 1ecc8bde0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused5.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused5.png deleted file mode 100644 index f39aa7bc1..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused6.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused6.png deleted file mode 100644 index f2c83bfb0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused7.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused7.png deleted file mode 100644 index b91575312..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused8.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused8.png deleted file mode 100644 index f9586b2a3..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused9.png b/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused9.png deleted file mode 100644 index 18eea25d5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dark_scoria/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/bricks.png b/src/main/resources/assets/create/textures/block/palettes/diorite/bricks.png deleted file mode 100644 index dff7993de..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled.png deleted file mode 100644 index ddd5c080c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled_top.png deleted file mode 100644 index e82c08108..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/diorite/cobblestone.png deleted file mode 100644 index 3af393624..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/diorite1.png b/src/main/resources/assets/create/textures/block/palettes/diorite/diorite1.png deleted file mode 100644 index e5abfbf48..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/diorite1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/diorite/fancy_bricks.png deleted file mode 100644 index f81db1de0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/layered.png b/src/main/resources/assets/create/textures/block/palettes/diorite/layered.png deleted file mode 100644 index 9c5e972eb..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/diorite/layered_connected.png deleted file mode 100644 index 0bcfd0208..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/paved.png b/src/main/resources/assets/create/textures/block/palettes/diorite/paved.png deleted file mode 100644 index 3410c37ad..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/diorite/paved_borderless.png deleted file mode 100644 index 83f4c8917..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/diorite/paved_top.png deleted file mode 100644 index 08a7184c1..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/pillar.png b/src/main/resources/assets/create/textures/block/palettes/diorite/pillar.png deleted file mode 100644 index d57fc7ddc..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/diorite/pillar_end.png deleted file mode 100644 index b92eb7574..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/polished.png b/src/main/resources/assets/create/textures/block/palettes/diorite/polished.png deleted file mode 100644 index 08a7184c1..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/diorite/polished_connected.png deleted file mode 100644 index de1c65be7..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/diorite/polished_slab.png deleted file mode 100644 index 729c73974..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused10.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused10.png deleted file mode 100644 index 8827177fb..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused11.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused11.png deleted file mode 100644 index 382d0b1e2..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused12.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused12.png deleted file mode 100644 index 382d0b1e2..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused12.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused13.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused13.png deleted file mode 100644 index 382d0b1e2..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused13.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused2.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused2.png deleted file mode 100644 index c44e33c62..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused4.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused4.png deleted file mode 100644 index b229aa87c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused6.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused6.png deleted file mode 100644 index 327cbf063..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused7.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused7.png deleted file mode 100644 index 03d11da55..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused8.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused8.png deleted file mode 100644 index 2b7fbb741..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/diorite/unused9.png b/src/main/resources/assets/create/textures/block/palettes/diorite/unused9.png deleted file mode 100644 index eedfeabc9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/diorite/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/bricks.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/bricks.png deleted file mode 100644 index 7e7e03fa9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled.png deleted file mode 100644 index 492807422..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled_top.png deleted file mode 100644 index 2eabb72d4..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/cobblestone.png deleted file mode 100644 index f0b325fc7..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/dolomite1.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/dolomite1.png deleted file mode 100644 index e9c1195a4..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/dolomite1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/fancy_bricks.png deleted file mode 100644 index a2e2cb6a0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/layered.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/layered.png deleted file mode 100644 index ac95ee82e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/layered_connected.png deleted file mode 100644 index 6dd6c43a9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved.png deleted file mode 100644 index 21d15ebb2..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_borderless.png deleted file mode 100644 index 61d108a60..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_top.png deleted file mode 100644 index 22ef5a796..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar.png deleted file mode 100644 index 6c4015d50..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar_end.png deleted file mode 100644 index bd8099fcf..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/plain.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/plain.png deleted file mode 100644 index c02d43f13..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/plain.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished.png deleted file mode 100644 index 22ef5a796..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_connected.png deleted file mode 100644 index b47ee3f69..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_slab.png deleted file mode 100644 index d77d30e1d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused10.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused10.png deleted file mode 100644 index 408e12b57..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused11.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused11.png deleted file mode 100644 index c02d43f13..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused12.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused12.png deleted file mode 100644 index c02d43f13..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused12.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused2.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused2.png deleted file mode 100644 index af1bb15f9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused4.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused4.png deleted file mode 100644 index a239370ee..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused6.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused6.png deleted file mode 100644 index 71ca138c5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused7.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused7.png deleted file mode 100644 index 75455c04a..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused8.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused8.png deleted file mode 100644 index b2e35948e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused9.png b/src/main/resources/assets/create/textures/block/palettes/dolomite/unused9.png deleted file mode 100644 index 990e18c07..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/dolomite/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/framed_glass.png b/src/main/resources/assets/create/textures/block/palettes/framed_glass.png deleted file mode 100644 index 68941612d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/framed_glass.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/framed_glass_connected.png b/src/main/resources/assets/create/textures/block/palettes/framed_glass_connected.png deleted file mode 100644 index 59eb9d442..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/framed_glass_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/framed_glass_pane_top.png b/src/main/resources/assets/create/textures/block/palettes/framed_glass_pane_top.png deleted file mode 100644 index 6051902b9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/framed_glass_pane_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/bricks.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/bricks.png deleted file mode 100644 index 03c9873d5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled.png deleted file mode 100644 index b299d2682..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled_top.png deleted file mode 100644 index fd11adf9c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/cobblestone.png deleted file mode 100644 index c988f4b99..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/fancy_bricks.png deleted file mode 100644 index 0b43ffd2b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/gabbro1.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/gabbro1.png deleted file mode 100644 index d1a6e27ec..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/gabbro1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/layered.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/layered.png deleted file mode 100644 index 9850ffb66..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/layered_connected.png deleted file mode 100644 index 4a2945731..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved.png deleted file mode 100644 index 4777f4ba1..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_borderless.png deleted file mode 100644 index 3421681ec..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_top.png deleted file mode 100644 index 73004c1a2..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar.png deleted file mode 100644 index 62dc15c1d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar_end.png deleted file mode 100644 index 72f2b0d02..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/plain.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/plain.png deleted file mode 100644 index 983cb50cd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/plain.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished.png deleted file mode 100644 index 73004c1a2..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_connected.png deleted file mode 100644 index c3f4090ae..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_slab.png deleted file mode 100644 index 13663b586..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused10.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused10.png deleted file mode 100644 index 2f7bac7be..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused11.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused11.png deleted file mode 100644 index 983cb50cd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused13.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused13.png deleted file mode 100644 index 983cb50cd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused13.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused2.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused2.png deleted file mode 100644 index 2868caed8..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused4.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused4.png deleted file mode 100644 index bbbf06da8..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused5.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused5.png deleted file mode 100644 index a001eb84b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused6.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused6.png deleted file mode 100644 index 34f22dc59..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused7.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused7.png deleted file mode 100644 index 208f3dd95..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused8.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused8.png deleted file mode 100644 index 50e48403d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused9.png b/src/main/resources/assets/create/textures/block/palettes/gabbro/unused9.png deleted file mode 100644 index faf8fb198..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/gabbro/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/bricks.png b/src/main/resources/assets/create/textures/block/palettes/granite/bricks.png deleted file mode 100644 index 3075c8977..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/granite/chiseled.png deleted file mode 100644 index 4d5a633c3..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/granite/chiseled_top.png deleted file mode 100644 index 2b0de2ff5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/granite/cobblestone.png deleted file mode 100644 index 324e156a0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/granite/fancy_bricks.png deleted file mode 100644 index 6e844dada..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/granite1.png b/src/main/resources/assets/create/textures/block/palettes/granite/granite1.png deleted file mode 100644 index 74450b167..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/granite1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/layered.png b/src/main/resources/assets/create/textures/block/palettes/granite/layered.png deleted file mode 100644 index dc333932c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/granite/layered_connected.png deleted file mode 100644 index 2ca726476..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/paved.png b/src/main/resources/assets/create/textures/block/palettes/granite/paved.png deleted file mode 100644 index 30140f89e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/granite/paved_borderless.png deleted file mode 100644 index 3075c8977..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/granite/paved_top.png deleted file mode 100644 index 207ab88e4..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/pillar.png b/src/main/resources/assets/create/textures/block/palettes/granite/pillar.png deleted file mode 100644 index c084d9270..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/granite/pillar_end.png deleted file mode 100644 index cb104b0bb..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/polished.png b/src/main/resources/assets/create/textures/block/palettes/granite/polished.png deleted file mode 100644 index 207ab88e4..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/granite/polished_connected.png deleted file mode 100644 index cbd67b3bf..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/granite/polished_slab.png deleted file mode 100644 index c25912142..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused10.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused10.png deleted file mode 100644 index 7caa28a5c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused11.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused11.png deleted file mode 100644 index ec944c2cd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused12.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused12.png deleted file mode 100644 index ec944c2cd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused12.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused13.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused13.png deleted file mode 100644 index ec944c2cd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused13.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused2.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused2.png deleted file mode 100644 index da143dbf0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused4.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused4.png deleted file mode 100644 index 8b8beab89..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused5.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused5.png deleted file mode 100644 index 018a5355e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused6.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused6.png deleted file mode 100644 index d6c1a5965..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused7.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused7.png deleted file mode 100644 index ea72d04e8..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused8.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused8.png deleted file mode 100644 index bc17d868d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/granite/unused9.png b/src/main/resources/assets/create/textures/block/palettes/granite/unused9.png deleted file mode 100644 index 0a3c9e8d6..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/granite/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass.png b/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass.png deleted file mode 100644 index 0c90e46c6..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass_connected.png b/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass_connected.png deleted file mode 100644 index d69203fae..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/horizontal_framed_glass_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/jungle_window.png b/src/main/resources/assets/create/textures/block/palettes/jungle_window.png deleted file mode 100644 index ef52bbb9a..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/jungle_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/jungle_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/jungle_window_connected.png deleted file mode 100644 index dece0e827..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/jungle_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limesand.png b/src/main/resources/assets/create/textures/block/palettes/limesand.png deleted file mode 100644 index aa02aebc8..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limesand.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/bricks.png b/src/main/resources/assets/create/textures/block/palettes/limestone/bricks.png deleted file mode 100644 index 70229f5e4..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled.png deleted file mode 100644 index 105aab23c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled_top.png deleted file mode 100644 index ec8da0cdf..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/limestone/cobblestone.png deleted file mode 100644 index e363610b9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/limestone/fancy_bricks.png deleted file mode 100644 index e38a152d5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/layered.png b/src/main/resources/assets/create/textures/block/palettes/limestone/layered.png deleted file mode 100644 index c81391fac..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/limestone/layered_connected.png deleted file mode 100644 index 7d452fcc2..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/limestone1.png b/src/main/resources/assets/create/textures/block/palettes/limestone/limestone1.png deleted file mode 100644 index 55f5c66cd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/limestone1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/paved.png b/src/main/resources/assets/create/textures/block/palettes/limestone/paved.png deleted file mode 100644 index 264be5b28..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/limestone/paved_borderless.png deleted file mode 100644 index b40300f0c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/limestone/paved_top.png deleted file mode 100644 index 174299138..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/pillar.png b/src/main/resources/assets/create/textures/block/palettes/limestone/pillar.png deleted file mode 100644 index 8385369b1..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/limestone/pillar_end.png deleted file mode 100644 index 4e27b5374..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/plain.png b/src/main/resources/assets/create/textures/block/palettes/limestone/plain.png deleted file mode 100644 index 1b8e10b22..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/plain.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/polished.png b/src/main/resources/assets/create/textures/block/palettes/limestone/polished.png deleted file mode 100644 index 174299138..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/limestone/polished_connected.png deleted file mode 100644 index bc74ef76f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/limestone/polished_slab.png deleted file mode 100644 index 0378686df..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused10.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused10.png deleted file mode 100644 index d668897b5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused11.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused11.png deleted file mode 100644 index bc59d42b7..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused12.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused12.png deleted file mode 100644 index bc59d42b7..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused12.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused13.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused13.png deleted file mode 100644 index bc59d42b7..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused13.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused2.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused2.png deleted file mode 100644 index 9f26c2e4b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused4.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused4.png deleted file mode 100644 index 61fa66015..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused6.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused6.png deleted file mode 100644 index 3763f5324..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused7.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused7.png deleted file mode 100644 index f87ad93a0..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused8.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused8.png deleted file mode 100644 index ac76c1019..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/limestone/unused9.png b/src/main/resources/assets/create/textures/block/palettes/limestone/unused9.png deleted file mode 100644 index d4d19a97a..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/limestone/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/mossy.png b/src/main/resources/assets/create/textures/block/palettes/mossy.png deleted file mode 100644 index 42e39b83f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/mossy.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/natural_scoria.png b/src/main/resources/assets/create/textures/block/palettes/natural_scoria.png deleted file mode 100644 index bee390915..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/natural_scoria.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/oak_window.png b/src/main/resources/assets/create/textures/block/palettes/oak_window.png deleted file mode 100644 index 4b503f77a..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/oak_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/oak_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/oak_window_connected.png deleted file mode 100644 index edddf3f45..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/oak_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window.png b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window.png deleted file mode 100644 index ca5340d6a..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_connected.png deleted file mode 100644 index 5c26973f7..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_end.png b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_end.png deleted file mode 100644 index 64195cdf4..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_pane_top.png b/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_pane_top.png deleted file mode 100644 index 9a016365f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/ornate_iron_window_pane_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/overgrown.png b/src/main/resources/assets/create/textures/block/palettes/overgrown.png deleted file mode 100644 index 5520b511d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/overgrown.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/bricks.png b/src/main/resources/assets/create/textures/block/palettes/scoria/bricks.png deleted file mode 100644 index e7f03600e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled.png deleted file mode 100644 index adc661c20..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled_top.png deleted file mode 100644 index c6b36ffc7..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/scoria/cobblestone.png deleted file mode 100644 index 3d2493f97..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/scoria/fancy_bricks.png deleted file mode 100644 index 31b54d9f6..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/layered.png b/src/main/resources/assets/create/textures/block/palettes/scoria/layered.png deleted file mode 100644 index f159e7abd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/scoria/layered_connected.png deleted file mode 100644 index 3ca935d88..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/paved.png b/src/main/resources/assets/create/textures/block/palettes/scoria/paved.png deleted file mode 100644 index a6157183b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/scoria/paved_borderless.png deleted file mode 100644 index 13bf21cb3..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/scoria/paved_top.png deleted file mode 100644 index 40647e64d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/pillar.png b/src/main/resources/assets/create/textures/block/palettes/scoria/pillar.png deleted file mode 100644 index 2aba43bf9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/scoria/pillar_end.png deleted file mode 100644 index 521abc34e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/plain.png b/src/main/resources/assets/create/textures/block/palettes/scoria/plain.png deleted file mode 100644 index bee390915..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/plain.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/polished.png b/src/main/resources/assets/create/textures/block/palettes/scoria/polished.png deleted file mode 100644 index 40647e64d..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/scoria/polished_connected.png deleted file mode 100644 index 2df1a3bc9..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/scoria/polished_slab.png deleted file mode 100644 index c2700dd28..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/scoria1.png b/src/main/resources/assets/create/textures/block/palettes/scoria/scoria1.png deleted file mode 100644 index 1179cac06..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/scoria1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused10.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused10.png deleted file mode 100644 index 8b173a7b5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused11.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused11.png deleted file mode 100644 index d83fa37fd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused12.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused12.png deleted file mode 100644 index d83fa37fd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused12.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused13.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused13.png deleted file mode 100644 index d83fa37fd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused13.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused2.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused2.png deleted file mode 100644 index de52b38dd..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused4.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused4.png deleted file mode 100644 index a0f6acf52..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused5.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused5.png deleted file mode 100644 index 08a75e637..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused6.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused6.png deleted file mode 100644 index 332286169..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused7.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused7.png deleted file mode 100644 index 86d855c70..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused8.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused8.png deleted file mode 100644 index 0fc402e5a..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/scoria/unused9.png b/src/main/resources/assets/create/textures/block/palettes/scoria/unused9.png deleted file mode 100644 index 82ccd0a09..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/scoria/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/spruce_window.png b/src/main/resources/assets/create/textures/block/palettes/spruce_window.png deleted file mode 100644 index d762ab003..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/spruce_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/spruce_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/spruce_window_connected.png deleted file mode 100644 index cadda64a5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/spruce_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/tiled_glass.png b/src/main/resources/assets/create/textures/block/palettes/tiled_glass.png deleted file mode 100644 index 6eb96c555..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/tiled_glass.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass.png b/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass.png deleted file mode 100644 index cc7123a31..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass_connected.png b/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass_connected.png deleted file mode 100644 index a9152991a..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/vertical_framed_glass_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/warped_window.png b/src/main/resources/assets/create/textures/block/palettes/warped_window.png deleted file mode 100644 index 01623ea7b..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/warped_window.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/warped_window_connected.png b/src/main/resources/assets/create/textures/block/palettes/warped_window_connected.png deleted file mode 100644 index e4261476e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/warped_window_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/bricks.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/bricks.png deleted file mode 100644 index 62a328e90..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled.png deleted file mode 100644 index f4477386a..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled_top.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled_top.png deleted file mode 100644 index 16f6f2182..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/chiseled_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/cobblestone.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/cobblestone.png deleted file mode 100644 index 83736862c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/cobblestone.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/fancy_bricks.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/fancy_bricks.png deleted file mode 100644 index fc4d6e92e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/fancy_bricks.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered.png deleted file mode 100644 index d2cfabcdb..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered_connected.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered_connected.png deleted file mode 100644 index ea9e3dfe2..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/layered_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved.png deleted file mode 100644 index 2833e2ff5..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_borderless.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_borderless.png deleted file mode 100644 index ecfb2e4b8..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_borderless.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_top.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_top.png deleted file mode 100644 index f7bd66327..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/paved_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar.png deleted file mode 100644 index eb3f76ebb..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar_end.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar_end.png deleted file mode 100644 index b275c1920..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/pillar_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/plain.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/plain.png deleted file mode 100644 index 41f62bb30..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/plain.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished.png deleted file mode 100644 index f7bd66327..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_connected.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_connected.png deleted file mode 100644 index 306ed837f..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_slab.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_slab.png deleted file mode 100644 index f696bfcee..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/polished_slab.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused10.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused10.png deleted file mode 100644 index 2c2630983..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused10.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused11.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused11.png deleted file mode 100644 index e3de6e0ea..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused11.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused12.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused12.png deleted file mode 100644 index e3de6e0ea..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused12.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused13.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused13.png deleted file mode 100644 index e3de6e0ea..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused13.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused2.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused2.png deleted file mode 100644 index 6bc4fb764..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused4.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused4.png deleted file mode 100644 index 0da3cedec..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused5.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused5.png deleted file mode 100644 index d2da8e833..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused6.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused6.png deleted file mode 100644 index 3cab9d71c..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused6.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused7.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused7.png deleted file mode 100644 index 54eefeafa..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused7.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused8.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused8.png deleted file mode 100644 index 51a89b020..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused8.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused9.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused9.png deleted file mode 100644 index 3d2c5e95e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/unused9.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/weathered_limestone1.png b/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/weathered_limestone1.png deleted file mode 100644 index 07a4f9d2e..000000000 Binary files a/src/main/resources/assets/create/textures/block/palettes/weathered_limestone/weathered_limestone1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/pinion.png b/src/main/resources/assets/create/textures/block/pinion.png deleted file mode 100644 index a493457d1..000000000 Binary files a/src/main/resources/assets/create/textures/block/pinion.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/pipe_drain.png b/src/main/resources/assets/create/textures/block/pipe_drain.png deleted file mode 100644 index 261ead298..000000000 Binary files a/src/main/resources/assets/create/textures/block/pipe_drain.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/piston_bottom.png b/src/main/resources/assets/create/textures/block/piston_bottom.png deleted file mode 100644 index edf3ceb18..000000000 Binary files a/src/main/resources/assets/create/textures/block/piston_bottom.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/piston_inner.png b/src/main/resources/assets/create/textures/block/piston_inner.png deleted file mode 100644 index 4b966272d..000000000 Binary files a/src/main/resources/assets/create/textures/block/piston_inner.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/pole_end.png b/src/main/resources/assets/create/textures/block/pole_end.png deleted file mode 100644 index c7599aece..000000000 Binary files a/src/main/resources/assets/create/textures/block/pole_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/portable_fluid_interface.png b/src/main/resources/assets/create/textures/block/portable_fluid_interface.png deleted file mode 100644 index ac44a2b03..000000000 Binary files a/src/main/resources/assets/create/textures/block/portable_fluid_interface.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/portable_storage_interface.png b/src/main/resources/assets/create/textures/block/portable_storage_interface.png deleted file mode 100644 index 39dc76113..000000000 Binary files a/src/main/resources/assets/create/textures/block/portable_storage_interface.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/pulley_casing.png b/src/main/resources/assets/create/textures/block/pulley_casing.png deleted file mode 100644 index 407ba2ae4..000000000 Binary files a/src/main/resources/assets/create/textures/block/pulley_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/pulley_magnet.png b/src/main/resources/assets/create/textures/block/pulley_magnet.png deleted file mode 100644 index 4836f1a5d..000000000 Binary files a/src/main/resources/assets/create/textures/block/pulley_magnet.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/pulley_rope.png b/src/main/resources/assets/create/textures/block/pulley_rope.png deleted file mode 100644 index 980c666aa..000000000 Binary files a/src/main/resources/assets/create/textures/block/pulley_rope.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/pump.png b/src/main/resources/assets/create/textures/block/pump.png deleted file mode 100644 index 31a19aee3..000000000 Binary files a/src/main/resources/assets/create/textures/block/pump.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/radial_chassis_end.png b/src/main/resources/assets/create/textures/block/radial_chassis_end.png deleted file mode 100644 index ccadeaaa0..000000000 Binary files a/src/main/resources/assets/create/textures/block/radial_chassis_end.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/radial_chassis_side.png b/src/main/resources/assets/create/textures/block/radial_chassis_side.png deleted file mode 100644 index 2fd209aa3..000000000 Binary files a/src/main/resources/assets/create/textures/block/radial_chassis_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/radial_chassis_side_sticky.png b/src/main/resources/assets/create/textures/block/radial_chassis_side_sticky.png deleted file mode 100644 index 0567c3fa1..000000000 Binary files a/src/main/resources/assets/create/textures/block/radial_chassis_side_sticky.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/redstone_antenna.png b/src/main/resources/assets/create/textures/block/redstone_antenna.png deleted file mode 100644 index 2219a308d..000000000 Binary files a/src/main/resources/assets/create/textures/block/redstone_antenna.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/redstone_antenna_powered.png b/src/main/resources/assets/create/textures/block/redstone_antenna_powered.png deleted file mode 100644 index 89e6fce6d..000000000 Binary files a/src/main/resources/assets/create/textures/block/redstone_antenna_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/redstone_bridge.png b/src/main/resources/assets/create/textures/block/redstone_bridge.png deleted file mode 100644 index 7ca26adec..000000000 Binary files a/src/main/resources/assets/create/textures/block/redstone_bridge.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/redstone_bridge_powered.png b/src/main/resources/assets/create/textures/block/redstone_bridge_powered.png deleted file mode 100644 index 0ba9e5668..000000000 Binary files a/src/main/resources/assets/create/textures/block/redstone_bridge_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/refined_radiance_block.png b/src/main/resources/assets/create/textures/block/refined_radiance_block.png deleted file mode 100644 index 75ee598f4..000000000 Binary files a/src/main/resources/assets/create/textures/block/refined_radiance_block.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/refined_radiance_casing.png b/src/main/resources/assets/create/textures/block/refined_radiance_casing.png deleted file mode 100644 index 071273796..000000000 Binary files a/src/main/resources/assets/create/textures/block/refined_radiance_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/refined_radiance_casing_connected.png b/src/main/resources/assets/create/textures/block/refined_radiance_casing_connected.png deleted file mode 100644 index 5e039098e..000000000 Binary files a/src/main/resources/assets/create/textures/block/refined_radiance_casing_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/reinforced_rail_top.png b/src/main/resources/assets/create/textures/block/reinforced_rail_top.png deleted file mode 100644 index daf426768..000000000 Binary files a/src/main/resources/assets/create/textures/block/reinforced_rail_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/rotation_speed_controller.png b/src/main/resources/assets/create/textures/block/rotation_speed_controller.png deleted file mode 100644 index 93af31838..000000000 Binary files a/src/main/resources/assets/create/textures/block/rotation_speed_controller.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/rotation_speed_controller_bracket.png b/src/main/resources/assets/create/textures/block/rotation_speed_controller_bracket.png deleted file mode 100644 index 38fa16e27..000000000 Binary files a/src/main/resources/assets/create/textures/block/rotation_speed_controller_bracket.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/rotation_speed_controller_top.png b/src/main/resources/assets/create/textures/block/rotation_speed_controller_top.png deleted file mode 100644 index e6095c1b7..000000000 Binary files a/src/main/resources/assets/create/textures/block/rotation_speed_controller_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_black.png b/src/main/resources/assets/create/textures/block/sail/canvas_black.png deleted file mode 100644 index e55f922b9..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_black.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_blue.png b/src/main/resources/assets/create/textures/block/sail/canvas_blue.png deleted file mode 100644 index 2bc78309c..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_blue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_brown.png b/src/main/resources/assets/create/textures/block/sail/canvas_brown.png deleted file mode 100644 index 04601ad85..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_brown.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_cyan.png b/src/main/resources/assets/create/textures/block/sail/canvas_cyan.png deleted file mode 100644 index 0d3c8d37c..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_cyan.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_gray.png b/src/main/resources/assets/create/textures/block/sail/canvas_gray.png deleted file mode 100644 index 9b38f8f40..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_gray.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_green.png b/src/main/resources/assets/create/textures/block/sail/canvas_green.png deleted file mode 100644 index fdbbf0355..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_green.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_light_blue.png b/src/main/resources/assets/create/textures/block/sail/canvas_light_blue.png deleted file mode 100644 index c63cf3a13..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_light_blue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_light_gray.png b/src/main/resources/assets/create/textures/block/sail/canvas_light_gray.png deleted file mode 100644 index 6b892ac3f..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_light_gray.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_lime.png b/src/main/resources/assets/create/textures/block/sail/canvas_lime.png deleted file mode 100644 index 979835eab..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_lime.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_magenta.png b/src/main/resources/assets/create/textures/block/sail/canvas_magenta.png deleted file mode 100644 index 8de8010a9..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_magenta.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_orange.png b/src/main/resources/assets/create/textures/block/sail/canvas_orange.png deleted file mode 100644 index 5986b6b24..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_orange.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_pink.png b/src/main/resources/assets/create/textures/block/sail/canvas_pink.png deleted file mode 100644 index 5cb04456c..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_pink.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_purple.png b/src/main/resources/assets/create/textures/block/sail/canvas_purple.png deleted file mode 100644 index e74ffcbe1..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_purple.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_red.png b/src/main/resources/assets/create/textures/block/sail/canvas_red.png deleted file mode 100644 index 31a669ea0..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_red.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_white.png b/src/main/resources/assets/create/textures/block/sail/canvas_white.png deleted file mode 100644 index e7f195637..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_white.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/canvas_yellow.png b/src/main/resources/assets/create/textures/block/sail/canvas_yellow.png deleted file mode 100644 index aac06569f..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/canvas_yellow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sail/frame.png b/src/main/resources/assets/create/textures/block/sail/frame.png deleted file mode 100644 index b99122729..000000000 Binary files a/src/main/resources/assets/create/textures/block/sail/frame.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/saw_reversed.png b/src/main/resources/assets/create/textures/block/saw_reversed.png deleted file mode 100644 index 727766388..000000000 Binary files a/src/main/resources/assets/create/textures/block/saw_reversed.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/saw_reversed.png.mcmeta b/src/main/resources/assets/create/textures/block/saw_reversed.png.mcmeta deleted file mode 100644 index a328ca58d..000000000 --- a/src/main/resources/assets/create/textures/block/saw_reversed.png.mcmeta +++ /dev/null @@ -1,6 +0,0 @@ -{ - "animation": { - "interpolate": false, - "frametime": 1 - } -} diff --git a/src/main/resources/assets/create/textures/block/schematic_table_side.png b/src/main/resources/assets/create/textures/block/schematic_table_side.png deleted file mode 100644 index df2838dc6..000000000 Binary files a/src/main/resources/assets/create/textures/block/schematic_table_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/schematic_table_top.png b/src/main/resources/assets/create/textures/block/schematic_table_top.png deleted file mode 100644 index 3385b720f..000000000 Binary files a/src/main/resources/assets/create/textures/block/schematic_table_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/schematicannon.png b/src/main/resources/assets/create/textures/block/schematicannon.png deleted file mode 100644 index 1fd592ce3..000000000 Binary files a/src/main/resources/assets/create/textures/block/schematicannon.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sealer.png b/src/main/resources/assets/create/textures/block/sealer.png deleted file mode 100644 index cdc1ceae5..000000000 Binary files a/src/main/resources/assets/create/textures/block/sealer.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/bottom.png b/src/main/resources/assets/create/textures/block/seat/bottom.png deleted file mode 100644 index da848535f..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/bottom.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_black.png b/src/main/resources/assets/create/textures/block/seat/side_black.png deleted file mode 100644 index 197d4d688..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_black.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_blue.png b/src/main/resources/assets/create/textures/block/seat/side_blue.png deleted file mode 100644 index bdc1636ef..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_blue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_brown.png b/src/main/resources/assets/create/textures/block/seat/side_brown.png deleted file mode 100644 index b6af26a16..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_brown.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_cyan.png b/src/main/resources/assets/create/textures/block/seat/side_cyan.png deleted file mode 100644 index 8839bd5bd..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_cyan.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_gray.png b/src/main/resources/assets/create/textures/block/seat/side_gray.png deleted file mode 100644 index 33a81f1b8..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_gray.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_green.png b/src/main/resources/assets/create/textures/block/seat/side_green.png deleted file mode 100644 index 53bae97ce..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_green.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_light_blue.png b/src/main/resources/assets/create/textures/block/seat/side_light_blue.png deleted file mode 100644 index e2304c714..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_light_blue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_light_gray.png b/src/main/resources/assets/create/textures/block/seat/side_light_gray.png deleted file mode 100644 index 55d24060e..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_light_gray.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_lime.png b/src/main/resources/assets/create/textures/block/seat/side_lime.png deleted file mode 100644 index adafc1b25..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_lime.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_magenta.png b/src/main/resources/assets/create/textures/block/seat/side_magenta.png deleted file mode 100644 index 899cf9d9c..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_magenta.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_orange.png b/src/main/resources/assets/create/textures/block/seat/side_orange.png deleted file mode 100644 index 9e8cedec1..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_orange.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_pink.png b/src/main/resources/assets/create/textures/block/seat/side_pink.png deleted file mode 100644 index 2c9e2f1c6..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_pink.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_purple.png b/src/main/resources/assets/create/textures/block/seat/side_purple.png deleted file mode 100644 index e3d11a89d..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_purple.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_red.png b/src/main/resources/assets/create/textures/block/seat/side_red.png deleted file mode 100644 index ed2abf62b..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_red.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_white.png b/src/main/resources/assets/create/textures/block/seat/side_white.png deleted file mode 100644 index 1aaa8bd17..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_white.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/side_yellow.png b/src/main/resources/assets/create/textures/block/seat/side_yellow.png deleted file mode 100644 index b74b4d7d1..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/side_yellow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_black.png b/src/main/resources/assets/create/textures/block/seat/top_black.png deleted file mode 100644 index f464fd97a..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_black.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_blue.png b/src/main/resources/assets/create/textures/block/seat/top_blue.png deleted file mode 100644 index 7fa12e6b4..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_blue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_brown.png b/src/main/resources/assets/create/textures/block/seat/top_brown.png deleted file mode 100644 index e1e9658cc..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_brown.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_cyan.png b/src/main/resources/assets/create/textures/block/seat/top_cyan.png deleted file mode 100644 index a2d47aa66..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_cyan.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_gray.png b/src/main/resources/assets/create/textures/block/seat/top_gray.png deleted file mode 100644 index c0df9fd5a..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_gray.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_green.png b/src/main/resources/assets/create/textures/block/seat/top_green.png deleted file mode 100644 index f16555e50..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_green.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_light_blue.png b/src/main/resources/assets/create/textures/block/seat/top_light_blue.png deleted file mode 100644 index 9439751ec..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_light_blue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_light_gray.png b/src/main/resources/assets/create/textures/block/seat/top_light_gray.png deleted file mode 100644 index 43a576173..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_light_gray.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_lime.png b/src/main/resources/assets/create/textures/block/seat/top_lime.png deleted file mode 100644 index e6f148dac..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_lime.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_magenta.png b/src/main/resources/assets/create/textures/block/seat/top_magenta.png deleted file mode 100644 index eb3885dca..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_magenta.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_orange.png b/src/main/resources/assets/create/textures/block/seat/top_orange.png deleted file mode 100644 index 6aba6a85f..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_orange.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_pink.png b/src/main/resources/assets/create/textures/block/seat/top_pink.png deleted file mode 100644 index c4d798265..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_pink.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_purple.png b/src/main/resources/assets/create/textures/block/seat/top_purple.png deleted file mode 100644 index 71a94058d..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_purple.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_red.png b/src/main/resources/assets/create/textures/block/seat/top_red.png deleted file mode 100644 index 30c083542..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_red.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_white.png b/src/main/resources/assets/create/textures/block/seat/top_white.png deleted file mode 100644 index 21ba6b7f1..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_white.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/seat/top_yellow.png b/src/main/resources/assets/create/textures/block/seat/top_yellow.png deleted file mode 100644 index 2478cf056..000000000 Binary files a/src/main/resources/assets/create/textures/block/seat/top_yellow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side.png b/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side.png deleted file mode 100644 index 071ac65ad..000000000 Binary files a/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side_connected.png b/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side_connected.png deleted file mode 100644 index a5402a8ea..000000000 Binary files a/src/main/resources/assets/create/textures/block/secondary_linear_chassis_side_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift.png deleted file mode 100644 index 0e72665b3..000000000 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_1.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_1.png deleted file mode 100644 index 7dead505b..000000000 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_2.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_2.png deleted file mode 100644 index 9461d89a2..000000000 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_3.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_3.png deleted file mode 100644 index b5732d195..000000000 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_3.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_4.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_4.png deleted file mode 100644 index 5b34baf73..000000000 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sequenced_gearshift_5.png b/src/main/resources/assets/create/textures/block/sequenced_gearshift_5.png deleted file mode 100644 index a0de73ca9..000000000 Binary files a/src/main/resources/assets/create/textures/block/sequenced_gearshift_5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/shadow_steel_casing.png b/src/main/resources/assets/create/textures/block/shadow_steel_casing.png deleted file mode 100644 index 7e3c52b81..000000000 Binary files a/src/main/resources/assets/create/textures/block/shadow_steel_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/shadow_steel_casing_connected.png b/src/main/resources/assets/create/textures/block/shadow_steel_casing_connected.png deleted file mode 100644 index c768385bc..000000000 Binary files a/src/main/resources/assets/create/textures/block/shadow_steel_casing_connected.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/smart_pipe_1.png b/src/main/resources/assets/create/textures/block/smart_pipe_1.png deleted file mode 100644 index ee16bd88d..000000000 Binary files a/src/main/resources/assets/create/textures/block/smart_pipe_1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/smart_pipe_2.png b/src/main/resources/assets/create/textures/block/smart_pipe_2.png deleted file mode 100644 index 4bef60552..000000000 Binary files a/src/main/resources/assets/create/textures/block/smart_pipe_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/smooth_dark_log_top.png b/src/main/resources/assets/create/textures/block/smooth_dark_log_top.png deleted file mode 100644 index 39becf8c2..000000000 Binary files a/src/main/resources/assets/create/textures/block/smooth_dark_log_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/spout.png b/src/main/resources/assets/create/textures/block/spout.png deleted file mode 100644 index 5964003f0..000000000 Binary files a/src/main/resources/assets/create/textures/block/spout.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/static_saw.png b/src/main/resources/assets/create/textures/block/static_saw.png deleted file mode 100644 index 8321bb091..000000000 Binary files a/src/main/resources/assets/create/textures/block/static_saw.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/steam_engine_wheel.png b/src/main/resources/assets/create/textures/block/steam_engine_wheel.png deleted file mode 100644 index 7a50e02b0..000000000 Binary files a/src/main/resources/assets/create/textures/block/steam_engine_wheel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sticker.png b/src/main/resources/assets/create/textures/block/sticker.png deleted file mode 100644 index 4f7321d5c..000000000 Binary files a/src/main/resources/assets/create/textures/block/sticker.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sticker_side.png b/src/main/resources/assets/create/textures/block/sticker_side.png deleted file mode 100644 index b56ce4c0c..000000000 Binary files a/src/main/resources/assets/create/textures/block/sticker_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/sticker_side_powered.png b/src/main/resources/assets/create/textures/block/sticker_side_powered.png deleted file mode 100644 index 2db933576..000000000 Binary files a/src/main/resources/assets/create/textures/block/sticker_side_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/symmetry_mirror.png b/src/main/resources/assets/create/textures/block/symmetry_mirror.png deleted file mode 100644 index fb69fd4cf..000000000 Binary files a/src/main/resources/assets/create/textures/block/symmetry_mirror.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/terrain_zapper_mesh.png b/src/main/resources/assets/create/textures/block/terrain_zapper_mesh.png deleted file mode 100644 index 25e1c44f6..000000000 Binary files a/src/main/resources/assets/create/textures/block/terrain_zapper_mesh.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_black.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_black.png deleted file mode 100644 index 689d719e3..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_black.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_blue.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_blue.png deleted file mode 100644 index 4590e364b..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_blue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_brown.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_brown.png deleted file mode 100644 index 7d4628663..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_brown.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_copper.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_copper.png deleted file mode 100644 index a9d31a1c0..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_copper.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_cyan.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_cyan.png deleted file mode 100644 index 6dd59637d..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_cyan.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_gray.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_gray.png deleted file mode 100644 index 573329b1f..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_gray.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_green.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_green.png deleted file mode 100644 index bb0527b25..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_green.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_blue.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_blue.png deleted file mode 100644 index 7576c28cc..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_blue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_gray.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_gray.png deleted file mode 100644 index eb54bcec9..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_light_gray.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_lime.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_lime.png deleted file mode 100644 index 5d5b2ccf7..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_lime.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_magenta.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_magenta.png deleted file mode 100644 index 3e4df9935..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_magenta.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_orange.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_orange.png deleted file mode 100644 index d4187d15e..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_orange.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_pink.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_pink.png deleted file mode 100644 index f35d01667..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_pink.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_purple.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_purple.png deleted file mode 100644 index 029045145..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_purple.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_red.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_red.png deleted file mode 100644 index a6397742f..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_red.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_white.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_white.png deleted file mode 100644 index c393085e2..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_white.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_yellow.png b/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_yellow.png deleted file mode 100644 index 92e38ccb6..000000000 Binary files a/src/main/resources/assets/create/textures/block/valve_handle/valve_handle_yellow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/weighted_ejector_casing.png b/src/main/resources/assets/create/textures/block/weighted_ejector_casing.png deleted file mode 100644 index 03bc93db3..000000000 Binary files a/src/main/resources/assets/create/textures/block/weighted_ejector_casing.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/weighted_ejector_inner.png b/src/main/resources/assets/create/textures/block/weighted_ejector_inner.png deleted file mode 100644 index b1c0015f6..000000000 Binary files a/src/main/resources/assets/create/textures/block/weighted_ejector_inner.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/weighted_ejector_top.png b/src/main/resources/assets/create/textures/block/weighted_ejector_top.png deleted file mode 100644 index 56cbb8ef9..000000000 Binary files a/src/main/resources/assets/create/textures/block/weighted_ejector_top.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/wheel.png b/src/main/resources/assets/create/textures/block/wheel.png deleted file mode 100644 index b9597b86d..000000000 Binary files a/src/main/resources/assets/create/textures/block/wheel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/wheel_extras.png b/src/main/resources/assets/create/textures/block/wheel_extras.png deleted file mode 100644 index b77f0a938..000000000 Binary files a/src/main/resources/assets/create/textures/block/wheel_extras.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/windmill_bearing_side.png b/src/main/resources/assets/create/textures/block/windmill_bearing_side.png deleted file mode 100644 index 468e5056d..000000000 Binary files a/src/main/resources/assets/create/textures/block/windmill_bearing_side.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/zinc_block.png b/src/main/resources/assets/create/textures/block/zinc_block.png deleted file mode 100644 index 2170642c3..000000000 Binary files a/src/main/resources/assets/create/textures/block/zinc_block.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/zinc_ore.png b/src/main/resources/assets/create/textures/block/zinc_ore.png deleted file mode 100644 index 4f16c4b55..000000000 Binary files a/src/main/resources/assets/create/textures/block/zinc_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/entity/blueprint_large.png b/src/main/resources/assets/create/textures/entity/blueprint_large.png deleted file mode 100644 index 5d56ae44e..000000000 Binary files a/src/main/resources/assets/create/textures/entity/blueprint_large.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/entity/blueprint_medium.png b/src/main/resources/assets/create/textures/entity/blueprint_medium.png deleted file mode 100644 index ced7b7045..000000000 Binary files a/src/main/resources/assets/create/textures/entity/blueprint_medium.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/entity/blueprint_small.png b/src/main/resources/assets/create/textures/entity/blueprint_small.png deleted file mode 100644 index a386ea078..000000000 Binary files a/src/main/resources/assets/create/textures/entity/blueprint_small.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/entity/coupling.png b/src/main/resources/assets/create/textures/entity/coupling.png deleted file mode 100644 index b669900c3..000000000 Binary files a/src/main/resources/assets/create/textures/entity/coupling.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/entity/super_glue/slime.png b/src/main/resources/assets/create/textures/entity/super_glue/slime.png deleted file mode 100644 index 5f0186afa..000000000 Binary files a/src/main/resources/assets/create/textures/entity/super_glue/slime.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/chocolate_flow.png b/src/main/resources/assets/create/textures/fluid/chocolate_flow.png deleted file mode 100644 index b1fadafa3..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/chocolate_flow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/chocolate_flow.png.mcmeta b/src/main/resources/assets/create/textures/fluid/chocolate_flow.png.mcmeta deleted file mode 100644 index 0645f48c6..000000000 --- a/src/main/resources/assets/create/textures/fluid/chocolate_flow.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 2 - } -} diff --git a/src/main/resources/assets/create/textures/fluid/chocolate_still.png b/src/main/resources/assets/create/textures/fluid/chocolate_still.png deleted file mode 100644 index da087a8a4..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/chocolate_still.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/chocolate_still.png.mcmeta b/src/main/resources/assets/create/textures/fluid/chocolate_still.png.mcmeta deleted file mode 100644 index 24f9c2fae..000000000 --- a/src/main/resources/assets/create/textures/fluid/chocolate_still.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 1 - } -} diff --git a/src/main/resources/assets/create/textures/fluid/honey_flow.png b/src/main/resources/assets/create/textures/fluid/honey_flow.png deleted file mode 100644 index 79685cf5c..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/honey_flow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/honey_flow.png.mcmeta b/src/main/resources/assets/create/textures/fluid/honey_flow.png.mcmeta deleted file mode 100644 index 0645f48c6..000000000 --- a/src/main/resources/assets/create/textures/fluid/honey_flow.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 2 - } -} diff --git a/src/main/resources/assets/create/textures/fluid/honey_still.png b/src/main/resources/assets/create/textures/fluid/honey_still.png deleted file mode 100644 index af826f592..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/honey_still.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/milk_flow.png b/src/main/resources/assets/create/textures/fluid/milk_flow.png deleted file mode 100644 index 7287f32a0..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/milk_flow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/milk_flow.png.mcmeta b/src/main/resources/assets/create/textures/fluid/milk_flow.png.mcmeta deleted file mode 100644 index 24f9c2fae..000000000 --- a/src/main/resources/assets/create/textures/fluid/milk_flow.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 1 - } -} diff --git a/src/main/resources/assets/create/textures/fluid/milk_still.png b/src/main/resources/assets/create/textures/fluid/milk_still.png deleted file mode 100644 index 15fcf66cb..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/milk_still.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/milk_still.png.mcmeta b/src/main/resources/assets/create/textures/fluid/milk_still.png.mcmeta deleted file mode 100644 index 24f9c2fae..000000000 --- a/src/main/resources/assets/create/textures/fluid/milk_still.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 1 - } -} diff --git a/src/main/resources/assets/create/textures/fluid/potion_flow.png b/src/main/resources/assets/create/textures/fluid/potion_flow.png deleted file mode 100644 index 46424ae99..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/potion_flow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/potion_flow.png.mcmeta b/src/main/resources/assets/create/textures/fluid/potion_flow.png.mcmeta deleted file mode 100644 index 4f0718ac9..000000000 --- a/src/main/resources/assets/create/textures/fluid/potion_flow.png.mcmeta +++ /dev/null @@ -1,3 +0,0 @@ -{ - "animation": {} -} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/fluid/potion_still.png b/src/main/resources/assets/create/textures/fluid/potion_still.png deleted file mode 100644 index 9be2ce69f..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/potion_still.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/potion_still.png.mcmeta b/src/main/resources/assets/create/textures/fluid/potion_still.png.mcmeta deleted file mode 100644 index 24f9c2fae..000000000 --- a/src/main/resources/assets/create/textures/fluid/potion_still.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 1 - } -} diff --git a/src/main/resources/assets/create/textures/fluid/tea_flow.png b/src/main/resources/assets/create/textures/fluid/tea_flow.png deleted file mode 100644 index fc7929726..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/tea_flow.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/tea_flow.png.mcmeta b/src/main/resources/assets/create/textures/fluid/tea_flow.png.mcmeta deleted file mode 100644 index 24f9c2fae..000000000 --- a/src/main/resources/assets/create/textures/fluid/tea_flow.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 1 - } -} diff --git a/src/main/resources/assets/create/textures/fluid/tea_still.png b/src/main/resources/assets/create/textures/fluid/tea_still.png deleted file mode 100644 index fd9c789aa..000000000 Binary files a/src/main/resources/assets/create/textures/fluid/tea_still.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/fluid/tea_still.png.mcmeta b/src/main/resources/assets/create/textures/fluid/tea_still.png.mcmeta deleted file mode 100644 index 24f9c2fae..000000000 --- a/src/main/resources/assets/create/textures/fluid/tea_still.png.mcmeta +++ /dev/null @@ -1,5 +0,0 @@ -{ - "animation": { - "frametime": 1 - } -} diff --git a/src/main/resources/assets/create/textures/gui/curiosities.png b/src/main/resources/assets/create/textures/gui/curiosities.png deleted file mode 100644 index 80b98e212..000000000 Binary files a/src/main/resources/assets/create/textures/gui/curiosities.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/curiosities2.png b/src/main/resources/assets/create/textures/gui/curiosities2.png deleted file mode 100644 index 601fb22df..000000000 Binary files a/src/main/resources/assets/create/textures/gui/curiosities2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/filters.png b/src/main/resources/assets/create/textures/gui/filters.png deleted file mode 100644 index a39812436..000000000 Binary files a/src/main/resources/assets/create/textures/gui/filters.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/icons.png b/src/main/resources/assets/create/textures/gui/icons.png deleted file mode 100644 index 9c862ea80..000000000 Binary files a/src/main/resources/assets/create/textures/gui/icons.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/jei/widgets.png b/src/main/resources/assets/create/textures/gui/jei/widgets.png deleted file mode 100644 index 6ec9a99c5..000000000 Binary files a/src/main/resources/assets/create/textures/gui/jei/widgets.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/logistics.png b/src/main/resources/assets/create/textures/gui/logistics.png deleted file mode 100644 index e4d408b20..000000000 Binary files a/src/main/resources/assets/create/textures/gui/logistics.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/logistics_2.png b/src/main/resources/assets/create/textures/gui/logistics_2.png deleted file mode 100644 index b52c35eee..000000000 Binary files a/src/main/resources/assets/create/textures/gui/logistics_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/logo.png b/src/main/resources/assets/create/textures/gui/logo.png deleted file mode 100644 index beac8a31b..000000000 Binary files a/src/main/resources/assets/create/textures/gui/logo.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/overlay.png b/src/main/resources/assets/create/textures/gui/overlay.png deleted file mode 100644 index 51c375804..000000000 Binary files a/src/main/resources/assets/create/textures/gui/overlay.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/placement_indicator.png b/src/main/resources/assets/create/textures/gui/placement_indicator.png deleted file mode 100644 index ca111ee39..000000000 Binary files a/src/main/resources/assets/create/textures/gui/placement_indicator.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/player_inventory.png b/src/main/resources/assets/create/textures/gui/player_inventory.png deleted file mode 100644 index 4621b1902..000000000 Binary files a/src/main/resources/assets/create/textures/gui/player_inventory.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/projector.png b/src/main/resources/assets/create/textures/gui/projector.png deleted file mode 100644 index 6638b2b2f..000000000 Binary files a/src/main/resources/assets/create/textures/gui/projector.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/schematics.png b/src/main/resources/assets/create/textures/gui/schematics.png deleted file mode 100644 index 310ead28c..000000000 Binary files a/src/main/resources/assets/create/textures/gui/schematics.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/schematics_2.png b/src/main/resources/assets/create/textures/gui/schematics_2.png deleted file mode 100644 index 128dfaed3..000000000 Binary files a/src/main/resources/assets/create/textures/gui/schematics_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/sequencer.png b/src/main/resources/assets/create/textures/gui/sequencer.png deleted file mode 100644 index 90b635872..000000000 Binary files a/src/main/resources/assets/create/textures/gui/sequencer.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/title/background/panorama_0.png b/src/main/resources/assets/create/textures/gui/title/background/panorama_0.png deleted file mode 100644 index 2a955e5f8..000000000 Binary files a/src/main/resources/assets/create/textures/gui/title/background/panorama_0.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/title/background/panorama_1.png b/src/main/resources/assets/create/textures/gui/title/background/panorama_1.png deleted file mode 100644 index dc8632fa2..000000000 Binary files a/src/main/resources/assets/create/textures/gui/title/background/panorama_1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/title/background/panorama_2.png b/src/main/resources/assets/create/textures/gui/title/background/panorama_2.png deleted file mode 100644 index b8ea73f25..000000000 Binary files a/src/main/resources/assets/create/textures/gui/title/background/panorama_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/title/background/panorama_3.png b/src/main/resources/assets/create/textures/gui/title/background/panorama_3.png deleted file mode 100644 index 64542f2a3..000000000 Binary files a/src/main/resources/assets/create/textures/gui/title/background/panorama_3.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/title/background/panorama_4.png b/src/main/resources/assets/create/textures/gui/title/background/panorama_4.png deleted file mode 100644 index c094a82e9..000000000 Binary files a/src/main/resources/assets/create/textures/gui/title/background/panorama_4.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/title/background/panorama_5.png b/src/main/resources/assets/create/textures/gui/title/background/panorama_5.png deleted file mode 100644 index bbac982a8..000000000 Binary files a/src/main/resources/assets/create/textures/gui/title/background/panorama_5.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/gui/widgets.png b/src/main/resources/assets/create/textures/gui/widgets.png deleted file mode 100644 index 3588a5cfc..000000000 Binary files a/src/main/resources/assets/create/textures/gui/widgets.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/andesite_alloy.png b/src/main/resources/assets/create/textures/item/andesite_alloy.png deleted file mode 100644 index e5b5e99d3..000000000 Binary files a/src/main/resources/assets/create/textures/item/andesite_alloy.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/antioxidant.png b/src/main/resources/assets/create/textures/item/antioxidant.png deleted file mode 100644 index 4e4655887..000000000 Binary files a/src/main/resources/assets/create/textures/item/antioxidant.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/bar_of_chocolate.png b/src/main/resources/assets/create/textures/item/bar_of_chocolate.png deleted file mode 100644 index 0319784d1..000000000 Binary files a/src/main/resources/assets/create/textures/item/bar_of_chocolate.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/belt_connector.png b/src/main/resources/assets/create/textures/item/belt_connector.png deleted file mode 100644 index dee2c92f1..000000000 Binary files a/src/main/resources/assets/create/textures/item/belt_connector.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/blaze_cake.png b/src/main/resources/assets/create/textures/item/blaze_cake.png deleted file mode 100644 index eb4e64fb8..000000000 Binary files a/src/main/resources/assets/create/textures/item/blaze_cake.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/blaze_cake_base.png b/src/main/resources/assets/create/textures/item/blaze_cake_base.png deleted file mode 100644 index 6c409d9f0..000000000 Binary files a/src/main/resources/assets/create/textures/item/blaze_cake_base.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/brass_hand.png b/src/main/resources/assets/create/textures/item/brass_hand.png deleted file mode 100644 index f6b2033ab..000000000 Binary files a/src/main/resources/assets/create/textures/item/brass_hand.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/brass_ingot.png b/src/main/resources/assets/create/textures/item/brass_ingot.png deleted file mode 100644 index d4ab26132..000000000 Binary files a/src/main/resources/assets/create/textures/item/brass_ingot.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/brass_nugget.png b/src/main/resources/assets/create/textures/item/brass_nugget.png deleted file mode 100644 index bd75c2e03..000000000 Binary files a/src/main/resources/assets/create/textures/item/brass_nugget.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/brass_sheet.png b/src/main/resources/assets/create/textures/item/brass_sheet.png deleted file mode 100644 index 2b638333a..000000000 Binary files a/src/main/resources/assets/create/textures/item/brass_sheet.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/builders_tea.png b/src/main/resources/assets/create/textures/item/builders_tea.png deleted file mode 100644 index 27cc72b5d..000000000 Binary files a/src/main/resources/assets/create/textures/item/builders_tea.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/chest_minecart_contraption.png b/src/main/resources/assets/create/textures/item/chest_minecart_contraption.png deleted file mode 100644 index 39f33cce6..000000000 Binary files a/src/main/resources/assets/create/textures/item/chest_minecart_contraption.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/chocolate_bucket.png b/src/main/resources/assets/create/textures/item/chocolate_bucket.png deleted file mode 100644 index 729c37515..000000000 Binary files a/src/main/resources/assets/create/textures/item/chocolate_bucket.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/chocolate_glazed_berries.png b/src/main/resources/assets/create/textures/item/chocolate_glazed_berries.png deleted file mode 100644 index a1dc5661f..000000000 Binary files a/src/main/resources/assets/create/textures/item/chocolate_glazed_berries.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/chromatic_compound_0.png b/src/main/resources/assets/create/textures/item/chromatic_compound_0.png deleted file mode 100644 index c2e33445d..000000000 Binary files a/src/main/resources/assets/create/textures/item/chromatic_compound_0.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/chromatic_compound_1.png b/src/main/resources/assets/create/textures/item/chromatic_compound_1.png deleted file mode 100644 index 1892c3e65..000000000 Binary files a/src/main/resources/assets/create/textures/item/chromatic_compound_1.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/chromatic_compound_2.png b/src/main/resources/assets/create/textures/item/chromatic_compound_2.png deleted file mode 100644 index a03c41c05..000000000 Binary files a/src/main/resources/assets/create/textures/item/chromatic_compound_2.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/cinder_flour.png b/src/main/resources/assets/create/textures/item/cinder_flour.png deleted file mode 100644 index a4fa03527..000000000 Binary files a/src/main/resources/assets/create/textures/item/cinder_flour.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/copper_ingot.png b/src/main/resources/assets/create/textures/item/copper_ingot.png deleted file mode 100644 index 40c855c47..000000000 Binary files a/src/main/resources/assets/create/textures/item/copper_ingot.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/copper_nugget.png b/src/main/resources/assets/create/textures/item/copper_nugget.png deleted file mode 100644 index 024bb4e5d..000000000 Binary files a/src/main/resources/assets/create/textures/item/copper_nugget.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/copper_sheet.png b/src/main/resources/assets/create/textures/item/copper_sheet.png deleted file mode 100644 index 789c79e8a..000000000 Binary files a/src/main/resources/assets/create/textures/item/copper_sheet.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crafter_slot_cover.png b/src/main/resources/assets/create/textures/item/crafter_slot_cover.png deleted file mode 100644 index bb56b1175..000000000 Binary files a/src/main/resources/assets/create/textures/item/crafter_slot_cover.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crafting_blueprint.png b/src/main/resources/assets/create/textures/item/crafting_blueprint.png deleted file mode 100644 index 4481759f1..000000000 Binary files a/src/main/resources/assets/create/textures/item/crafting_blueprint.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png b/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png deleted file mode 100644 index ee88f3825..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_aluminum_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_brass.png b/src/main/resources/assets/create/textures/item/crushed_brass.png deleted file mode 100644 index 0aaa3b529..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_brass.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_copper_ore.png b/src/main/resources/assets/create/textures/item/crushed_copper_ore.png deleted file mode 100644 index f54652b64..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_copper_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_gold_ore.png b/src/main/resources/assets/create/textures/item/crushed_gold_ore.png deleted file mode 100644 index 71f1e2dc2..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_gold_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_iron_ore.png b/src/main/resources/assets/create/textures/item/crushed_iron_ore.png deleted file mode 100644 index 647580721..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_iron_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_lead_ore.png b/src/main/resources/assets/create/textures/item/crushed_lead_ore.png deleted file mode 100644 index dcda45cb2..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_lead_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png b/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png deleted file mode 100644 index 5de85901b..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_nickel_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png b/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png deleted file mode 100644 index 1dedc49d0..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_osmium_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_platinum_ore.png b/src/main/resources/assets/create/textures/item/crushed_platinum_ore.png deleted file mode 100644 index 24edc97b7..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_platinum_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png b/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png deleted file mode 100644 index 25991f468..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_quicksilver_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_silver_ore.png b/src/main/resources/assets/create/textures/item/crushed_silver_ore.png deleted file mode 100644 index b2c8f1cb9..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_silver_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_tin_ore.png b/src/main/resources/assets/create/textures/item/crushed_tin_ore.png deleted file mode 100644 index 884a124f1..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_tin_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png b/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png deleted file mode 100644 index 8af9c7e91..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_uranium_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/crushed_zinc_ore.png b/src/main/resources/assets/create/textures/item/crushed_zinc_ore.png deleted file mode 100644 index 2ffdcae38..000000000 Binary files a/src/main/resources/assets/create/textures/item/crushed_zinc_ore.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/diving_boots.png b/src/main/resources/assets/create/textures/item/diving_boots.png deleted file mode 100644 index 176c710c7..000000000 Binary files a/src/main/resources/assets/create/textures/item/diving_boots.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/diving_helmet.png b/src/main/resources/assets/create/textures/item/diving_helmet.png deleted file mode 100644 index 27d3938d1..000000000 Binary files a/src/main/resources/assets/create/textures/item/diving_helmet.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/dough.png b/src/main/resources/assets/create/textures/item/dough.png deleted file mode 100644 index e0e98f769..000000000 Binary files a/src/main/resources/assets/create/textures/item/dough.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/electron_tube.png b/src/main/resources/assets/create/textures/item/electron_tube.png deleted file mode 100644 index 7eb58c925..000000000 Binary files a/src/main/resources/assets/create/textures/item/electron_tube.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/empty_schematic.png b/src/main/resources/assets/create/textures/item/empty_schematic.png deleted file mode 100644 index 7277bc2eb..000000000 Binary files a/src/main/resources/assets/create/textures/item/empty_schematic.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/extendo_grip.png b/src/main/resources/assets/create/textures/item/extendo_grip.png deleted file mode 100644 index 3f8bb5f7f..000000000 Binary files a/src/main/resources/assets/create/textures/item/extendo_grip.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/filter.png b/src/main/resources/assets/create/textures/item/filter.png deleted file mode 100644 index 18ad0a8e6..000000000 Binary files a/src/main/resources/assets/create/textures/item/filter.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/furnace_minecart_contraption.png b/src/main/resources/assets/create/textures/item/furnace_minecart_contraption.png deleted file mode 100644 index 39f33cce6..000000000 Binary files a/src/main/resources/assets/create/textures/item/furnace_minecart_contraption.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/goggles.png b/src/main/resources/assets/create/textures/item/goggles.png deleted file mode 100644 index 68da2d09b..000000000 Binary files a/src/main/resources/assets/create/textures/item/goggles.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/goggles_model.png b/src/main/resources/assets/create/textures/item/goggles_model.png deleted file mode 100644 index 05a413382..000000000 Binary files a/src/main/resources/assets/create/textures/item/goggles_model.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/golden_sheet.png b/src/main/resources/assets/create/textures/item/golden_sheet.png deleted file mode 100644 index 31ca1992d..000000000 Binary files a/src/main/resources/assets/create/textures/item/golden_sheet.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/honey_bucket.png b/src/main/resources/assets/create/textures/item/honey_bucket.png deleted file mode 100644 index 80abdc8cb..000000000 Binary files a/src/main/resources/assets/create/textures/item/honey_bucket.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/honeyed_apple.png b/src/main/resources/assets/create/textures/item/honeyed_apple.png deleted file mode 100644 index 184e77fff..000000000 Binary files a/src/main/resources/assets/create/textures/item/honeyed_apple.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/integrated_circuit.png b/src/main/resources/assets/create/textures/item/integrated_circuit.png deleted file mode 100644 index efc1430c2..000000000 Binary files a/src/main/resources/assets/create/textures/item/integrated_circuit.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/iron_sheet.png b/src/main/resources/assets/create/textures/item/iron_sheet.png deleted file mode 100644 index 23b3afc10..000000000 Binary files a/src/main/resources/assets/create/textures/item/iron_sheet.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/lapis_sheet.png b/src/main/resources/assets/create/textures/item/lapis_sheet.png deleted file mode 100644 index b5705e30f..000000000 Binary files a/src/main/resources/assets/create/textures/item/lapis_sheet.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/linked_controller.png b/src/main/resources/assets/create/textures/item/linked_controller.png deleted file mode 100644 index 474b3bf2c..000000000 Binary files a/src/main/resources/assets/create/textures/item/linked_controller.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/linked_controller_powered.png b/src/main/resources/assets/create/textures/item/linked_controller_powered.png deleted file mode 100644 index bf0dcb3d3..000000000 Binary files a/src/main/resources/assets/create/textures/item/linked_controller_powered.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/logistical_dial.png b/src/main/resources/assets/create/textures/item/logistical_dial.png deleted file mode 100644 index 3e8a4c756..000000000 Binary files a/src/main/resources/assets/create/textures/item/logistical_dial.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/logistical_dial_overlay.png b/src/main/resources/assets/create/textures/item/logistical_dial_overlay.png deleted file mode 100644 index 833a78430..000000000 Binary files a/src/main/resources/assets/create/textures/item/logistical_dial_overlay.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/minecart_contraption.png b/src/main/resources/assets/create/textures/item/minecart_contraption.png deleted file mode 100644 index 39f33cce6..000000000 Binary files a/src/main/resources/assets/create/textures/item/minecart_contraption.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/minecart_coupling.png b/src/main/resources/assets/create/textures/item/minecart_coupling.png deleted file mode 100644 index a91eacc4f..000000000 Binary files a/src/main/resources/assets/create/textures/item/minecart_coupling.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/polished_rose_quartz.png b/src/main/resources/assets/create/textures/item/polished_rose_quartz.png deleted file mode 100644 index 494e8d694..000000000 Binary files a/src/main/resources/assets/create/textures/item/polished_rose_quartz.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/powdered_obsidian.png b/src/main/resources/assets/create/textures/item/powdered_obsidian.png deleted file mode 100644 index bbe6ef960..000000000 Binary files a/src/main/resources/assets/create/textures/item/powdered_obsidian.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/propeller.png b/src/main/resources/assets/create/textures/item/propeller.png deleted file mode 100644 index 299b134f2..000000000 Binary files a/src/main/resources/assets/create/textures/item/propeller.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/property_filter.png b/src/main/resources/assets/create/textures/item/property_filter.png deleted file mode 100644 index 664a6210f..000000000 Binary files a/src/main/resources/assets/create/textures/item/property_filter.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/red_sand_paper.png b/src/main/resources/assets/create/textures/item/red_sand_paper.png deleted file mode 100644 index 875987385..000000000 Binary files a/src/main/resources/assets/create/textures/item/red_sand_paper.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/refined_radiance.png b/src/main/resources/assets/create/textures/item/refined_radiance.png deleted file mode 100644 index 54aae40dc..000000000 Binary files a/src/main/resources/assets/create/textures/item/refined_radiance.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/rose_quartz.png b/src/main/resources/assets/create/textures/item/rose_quartz.png deleted file mode 100644 index 91f0a879e..000000000 Binary files a/src/main/resources/assets/create/textures/item/rose_quartz.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/sand_paper.png b/src/main/resources/assets/create/textures/item/sand_paper.png deleted file mode 100644 index b0ffa93ef..000000000 Binary files a/src/main/resources/assets/create/textures/item/sand_paper.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/schematic.png b/src/main/resources/assets/create/textures/item/schematic.png deleted file mode 100644 index 2268a5565..000000000 Binary files a/src/main/resources/assets/create/textures/item/schematic.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/schematic_and_quill.png b/src/main/resources/assets/create/textures/item/schematic_and_quill.png deleted file mode 100644 index c7031213a..000000000 Binary files a/src/main/resources/assets/create/textures/item/schematic_and_quill.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/shadow_steel.png b/src/main/resources/assets/create/textures/item/shadow_steel.png deleted file mode 100644 index 32de3d947..000000000 Binary files a/src/main/resources/assets/create/textures/item/shadow_steel.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/super_glue.png b/src/main/resources/assets/create/textures/item/super_glue.png deleted file mode 100644 index 34b04b16f..000000000 Binary files a/src/main/resources/assets/create/textures/item/super_glue.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/sweet_roll.png b/src/main/resources/assets/create/textures/item/sweet_roll.png deleted file mode 100644 index 03b7c602d..000000000 Binary files a/src/main/resources/assets/create/textures/item/sweet_roll.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/tree_fertilizer.png b/src/main/resources/assets/create/textures/item/tree_fertilizer.png deleted file mode 100644 index 385bb63ec..000000000 Binary files a/src/main/resources/assets/create/textures/item/tree_fertilizer.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/wheat_flour.png b/src/main/resources/assets/create/textures/item/wheat_flour.png deleted file mode 100644 index a07f5829e..000000000 Binary files a/src/main/resources/assets/create/textures/item/wheat_flour.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/whisk.png b/src/main/resources/assets/create/textures/item/whisk.png deleted file mode 100644 index 44c6450ef..000000000 Binary files a/src/main/resources/assets/create/textures/item/whisk.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/wrench.png b/src/main/resources/assets/create/textures/item/wrench.png deleted file mode 100644 index 4cb508338..000000000 Binary files a/src/main/resources/assets/create/textures/item/wrench.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/zinc_ingot.png b/src/main/resources/assets/create/textures/item/zinc_ingot.png deleted file mode 100644 index eb4bbf545..000000000 Binary files a/src/main/resources/assets/create/textures/item/zinc_ingot.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/item/zinc_nugget.png b/src/main/resources/assets/create/textures/item/zinc_nugget.png deleted file mode 100644 index 9ff45b245..000000000 Binary files a/src/main/resources/assets/create/textures/item/zinc_nugget.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/models/armor/copper.png b/src/main/resources/assets/create/textures/models/armor/copper.png deleted file mode 100644 index 9bf29bb38..000000000 Binary files a/src/main/resources/assets/create/textures/models/armor/copper.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/ponder/chapter/basic_kinetics.png b/src/main/resources/assets/create/textures/ponder/chapter/basic_kinetics.png deleted file mode 100644 index baa64b466..000000000 Binary files a/src/main/resources/assets/create/textures/ponder/chapter/basic_kinetics.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/ponder/tag/item_transfer.png b/src/main/resources/assets/create/textures/ponder/tag/item_transfer.png deleted file mode 100644 index baa64b466..000000000 Binary files a/src/main/resources/assets/create/textures/ponder/tag/item_transfer.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/special/blank.png b/src/main/resources/assets/create/textures/special/blank.png deleted file mode 100644 index 64386eb44..000000000 Binary files a/src/main/resources/assets/create/textures/special/blank.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/special/checkerboard.png b/src/main/resources/assets/create/textures/special/checkerboard.png deleted file mode 100644 index f3635467c..000000000 Binary files a/src/main/resources/assets/create/textures/special/checkerboard.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/special/cutout_checkerboard.png b/src/main/resources/assets/create/textures/special/cutout_checkerboard.png deleted file mode 100644 index ecddf7fbe..000000000 Binary files a/src/main/resources/assets/create/textures/special/cutout_checkerboard.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/special/highlighted_checkerboard.png b/src/main/resources/assets/create/textures/special/highlighted_checkerboard.png deleted file mode 100644 index 5d82930c6..000000000 Binary files a/src/main/resources/assets/create/textures/special/highlighted_checkerboard.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/special/selection.png b/src/main/resources/assets/create/textures/special/selection.png deleted file mode 100644 index 4e4fc1496..000000000 Binary files a/src/main/resources/assets/create/textures/special/selection.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/special/thin_checkerboard.png b/src/main/resources/assets/create/textures/special/thin_checkerboard.png deleted file mode 100644 index cdddb75f2..000000000 Binary files a/src/main/resources/assets/create/textures/special/thin_checkerboard.png and /dev/null differ diff --git a/src/main/resources/assets/flywheel/flywheel/shaders/block.frag b/src/main/resources/assets/flywheel/flywheel/shaders/block.frag index 4b350cf60..1eae7e5cc 100644 --- a/src/main/resources/assets/flywheel/flywheel/shaders/block.frag +++ b/src/main/resources/assets/flywheel/flywheel/shaders/block.frag @@ -7,5 +7,11 @@ void FLWMain(BlockFrag r) { vec4 color = vec4(tex.rgb * FLWLight(r.light).rgb * r.diffuse, tex.a) * r.color; +// flw_WorldPos = ; +// flw_Normal = ; +// flw_Albedo = tex.rgb; +// flw_Alpha = tex.a; +// flw_LightMap = r.light; +// flw_Tint = r.color; FLWFinalizeColor(color); } diff --git a/src/main/resources/assets/flywheel/flywheel/shaders/template/instanced/instanced.frag b/src/main/resources/assets/flywheel/flywheel/shaders/template/instanced/instanced.frag index fb9620d7d..2f1bd8e03 100644 --- a/src/main/resources/assets/flywheel/flywheel/shaders/template/instanced/instanced.frag +++ b/src/main/resources/assets/flywheel/flywheel/shaders/template/instanced/instanced.frag @@ -4,6 +4,13 @@ #FLWPrefixFields(Fragment, varying, v2f_) +//vec3 flw_WorldPos; +//vec3 flw_Normal; +//vec3 flw_Albedo; +//float flw_Alpha; +//vec2 flw_LightMap; +//vec4 flw_Tint; + void main() { Fragment f; #FLWAssignFields(Fragment, f., v2f_) diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json deleted file mode 100644 index 4cb235d96..000000000 --- a/src/main/resources/create.mixins.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "required": true, - "priority": 1100, - "package": "com.simibubi.create.foundation.mixin", - "compatibilityLevel": "JAVA_8", - "refmap": "create.refmap.json", - "mixins": [ - ], - "client": [ - "BreakProgressMixin", - "ChromaticProjectorHooksMixin", - "EntityContraptionInteractionMixin", - "FixNormalScalingMixin", - "HeavyBootsOnPlayerMixin", - "ModelDataRefreshMixin", - "WindowResizeMixin", - "flywheel.CancelEntityRenderMixin", - "flywheel.CancelTileEntityRenderMixin", - "flywheel.FogColorTrackerMixin", - "flywheel.RenderHooksMixin", - "flywheel.ShaderCloseMixin", - "flywheel.StoreProjectionMatrixMixin", - "flywheel.TileRemoveMixin", - "flywheel.TileWorldHookMixin", - "flywheel.light.LightUpdateMixin", - "flywheel.light.NetworkLightUpdateMixin" - ], - "injectors": { - "defaultRequire": 1 - }, - "minVersion": "0.8" -} diff --git a/src/main/resources/data/create/recipes/compat/ae2/crushing/certus_ore.json b/src/main/resources/data/create/recipes/compat/ae2/crushing/certus_ore.json deleted file mode 100644 index 973dd4630..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/crushing/certus_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "appliedenergistics2:quartz_ore" - } - ], - "results": [ - { - "item": "appliedenergistics2:certus_quartz_crystal", - "count": 2 - }, - { - "item": "appliedenergistics2:certus_quartz_dust", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/ae2/crushing/charged_certus_ore.json b/src/main/resources/data/create/recipes/compat/ae2/crushing/charged_certus_ore.json deleted file mode 100644 index 0f82a5e55..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/crushing/charged_certus_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "appliedenergistics2:charged_quartz_ore" - } - ], - "results": [ - { - "item": "appliedenergistics2:charged_certus_quartz_crystal", - "count": 2 - }, - { - "item": "appliedenergistics2:certus_quartz_dust", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json b/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json deleted file mode 100644 index 6f8022a4a..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/certus_quartz.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:gems/certus_quartz" - } - ], - "results": [ - { - "item": "appliedenergistics2:certus_quartz_dust", - "count": 1 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json b/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json deleted file mode 100644 index abab859dd..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/ender_pearl.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ender_pearls" - } - ], - "results": [ - { - "item": "appliedenergistics2:ender_dust", - "count": 1 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json b/src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json deleted file mode 100644 index a1571b58f..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/fluix_crystal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "appliedenergistics2:fluix_crystal" - } - ], - "results": [ - { - "item": "appliedenergistics2:fluix_dust", - "count": 1 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/gold.json b/src/main/resources/data/create/recipes/compat/ae2/milling/gold.json deleted file mode 100644 index bfbc249f2..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/gold.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ingots/gold" - } - ], - "results": [ - { - "item": "appliedenergistics2:gold_dust", - "count": 1 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/iron.json b/src/main/resources/data/create/recipes/compat/ae2/milling/iron.json deleted file mode 100644 index a7f0e56e5..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/iron.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:ingots/iron" - } - ], - "results": [ - { - "item": "appliedenergistics2:iron_dust", - "count": 1 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/nether_quartz.json b/src/main/resources/data/create/recipes/compat/ae2/milling/nether_quartz.json deleted file mode 100644 index e9b4aa015..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/nether_quartz.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "forge:gems/quartz" - } - ], - "results": [ - { - "item": "appliedenergistics2:nether_quartz_dust", - "count": 1 - } - ], - "processingTime": 200 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json b/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json deleted file mode 100644 index 145402282..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/milling/sky_stone_block.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "appliedenergistics2:sky_stone_block" - } - ], - "results": [ - { - "item": "appliedenergistics2:sky_dust", - "count": 1 - } - ], - "processingTime": 300 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json b/src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json deleted file mode 100644 index c3cef0d65..000000000 --- a/src/main/resources/data/create/recipes/compat/ae2/mixing/fluix_crystal.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "appliedenergistics2" - } - ], - "type": "create:mixing", - "ingredients": [ - { - "tag": "forge:dusts/redstone" - }, - { - "fluid": "minecraft:water", - "nbt": {}, - "amount": 250 - }, - { - "item": "appliedenergistics2:charged_certus_quartz_crystal" - }, - { - "tag": "forge:gems/quartz" - } - ], - "results": [ - { - "item": "appliedenergistics2:fluix_crystal", - "count": 2 - } - ], - "heatRequirement": "none" -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json deleted file mode 100644 index d9a202bb3..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/aspen_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:aspen_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_aspen_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json deleted file mode 100644 index 8f888461c..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/grimwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:grimwood_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_grimwood_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json deleted file mode 100644 index ecad3012c..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/kousa_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:kousa_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_kousa_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json deleted file mode 100644 index d56aa855e..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/rosewood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:rosewood_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_rosewood_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json deleted file mode 100644 index 5f72d093b..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_aspen_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:stripped_aspen_log" - } - ], - "results": [ - { - "item": "atmospheric:aspen_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json deleted file mode 100644 index 861940bad..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_grimwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:stripped_grimwood_log" - } - ], - "results": [ - { - "item": "atmospheric:grimwood_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json deleted file mode 100644 index c6cf8fae3..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_kousa_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:stripped_kousa_log" - } - ], - "results": [ - { - "item": "atmospheric:kousa_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json deleted file mode 100644 index e8e3b4902..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_rosewood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:stripped_rosewood_log" - } - ], - "results": [ - { - "item": "atmospheric:rosewood_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json deleted file mode 100644 index 2a0c23af8..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/stripped_yucca_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:stripped_yucca_log" - } - ], - "results": [ - { - "item": "atmospheric:yucca_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json b/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json deleted file mode 100644 index 45f33c335..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/cutting/yucca_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "atmospheric:yucca_log" - } - ], - "results": [ - { - "item": "atmospheric:stripped_yucca_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json deleted file mode 100644 index 12d375350..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/milling/gilia.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "atmospheric:gilia" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - }, - { - "item": "minecraft:magenta_dye", - "count": 2, - "chance": 0.1 - }, - { - "item": "minecraft:pink_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json deleted file mode 100644 index 5f9d99cce..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/milling/hot_monkey_brush.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "atmospheric:hot_monkey_brush" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 2 - }, - { - "item": "minecraft:red_dye", - "count": 1, - "chance": 0.05 - }, - { - "item": "minecraft:yellow_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json deleted file mode 100644 index 171991b0d..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/milling/scalding_monkey_brush.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "atmospheric:scalding_monkey_brush" - } - ], - "results": [ - { - "item": "minecraft:red_dye", - "count": 2 - }, - { - "item": "minecraft:red_dye", - "count": 2, - "chance": 0.1 - }, - { - "item": "minecraft:orange_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json deleted file mode 100644 index 9f0451a84..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/milling/warm_monkey_brush.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "atmospheric:warm_monkey_brush" - } - ], - "results": [ - { - "item": "minecraft:yellow_dye", - "count": 2 - }, - { - "item": "minecraft:yellow_dye", - "count": 2, - "chance": 0.1 - }, - { - "item": "minecraft:orange_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json b/src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json deleted file mode 100644 index 2dad00a71..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/milling/yucca_flower.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "atmospheric:yucca_flower" - } - ], - "results": [ - { - "item": "minecraft:light_gray_dye", - "count": 2 - }, - { - "item": "minecraft:white_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json b/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json deleted file mode 100644 index 5c51a9d3b..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/arid_sand.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:splashing", - "ingredients": [ - { - "item": "atmospheric:arid_sand" - } - ], - "results": [ - { - "item": "minecraft:clay_ball", - "count": 1, - "chance": 0.25 - }, - { - "item": "atmospheric:aloe_kernels", - "count": 1, - "chance": 0.05 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json b/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json deleted file mode 100644 index b8b10cb6f..000000000 --- a/src/main/resources/data/create/recipes/compat/atmospheric/splashing/red_arid_sand.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "atmospheric" - } - ], - "type": "create:splashing", - "ingredients": [ - { - "item": "atmospheric:red_arid_sand" - } - ], - "results": [ - { - "item": "minecraft:gold_nugget", - "count": 4, - "chance": 0.125 - }, - { - "item": "atmospheric:aloe_kernels", - "count": 1, - "chance": 0.05 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json b/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json deleted file mode 100644 index 55c8871ab..000000000 --- a/src/main/resources/data/create/recipes/compat/autumnity/cutting/maple_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "autumnity" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "autumnity:maple_log" - } - ], - "results": [ - { - "item": "autumnity:stripped_maple_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json b/src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json deleted file mode 100644 index 18a07715c..000000000 --- a/src/main/resources/data/create/recipes/compat/autumnity/cutting/stripped_maple_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "autumnity" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "autumnity:stripped_maple_log" - } - ], - "results": [ - { - "item": "autumnity:maple_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json b/src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json deleted file mode 100644 index 16e48a60e..000000000 --- a/src/main/resources/data/create/recipes/compat/autumnity/milling/autumn_crocus.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "autumnity" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "autumnity:autumn_crocus" - } - ], - "results": [ - { - "item": "minecraft:magenta_dye", - "count": 2 - }, - { - "item": "minecraft:pink_dye", - "count": 2, - "chance": 0.1 - }, - { - "item": "minecraft:purple_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/cutting/stripped_wisteria_log.json b/src/main/resources/data/create/recipes/compat/bloomful/cutting/stripped_wisteria_log.json deleted file mode 100644 index f939c1e5b..000000000 --- a/src/main/resources/data/create/recipes/compat/bloomful/cutting/stripped_wisteria_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "bloomful" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "bloomful:stripped_wisteria_log" - } - ], - "results": [ - { - "item": "bloomful:wisteria_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/cutting/wisteria_log.json b/src/main/resources/data/create/recipes/compat/bloomful/cutting/wisteria_log.json deleted file mode 100644 index 9150a9d19..000000000 --- a/src/main/resources/data/create/recipes/compat/bloomful/cutting/wisteria_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "bloomful" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "bloomful:wisteria_log" - } - ], - "results": [ - { - "item": "bloomful:stripped_wisteria_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/milling/blue_delphinium.json b/src/main/resources/data/create/recipes/compat/bloomful/milling/blue_delphinium.json deleted file mode 100644 index cf9f2d4bd..000000000 --- a/src/main/resources/data/create/recipes/compat/bloomful/milling/blue_delphinium.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "bloomful" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "bloomful:blue_delphinium" - } - ], - "results": [ - { - "item": "minecraft:blue_dye", - "count": 3 - }, - { - "item": "minecraft:blue_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/milling/pink_delphinium.json b/src/main/resources/data/create/recipes/compat/bloomful/milling/pink_delphinium.json deleted file mode 100644 index dc9ef9ea8..000000000 --- a/src/main/resources/data/create/recipes/compat/bloomful/milling/pink_delphinium.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "bloomful" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "bloomful:pink_delphinium" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 3 - }, - { - "item": "minecraft:pink_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/milling/purple_delphinium.json b/src/main/resources/data/create/recipes/compat/bloomful/milling/purple_delphinium.json deleted file mode 100644 index 7bb4493c5..000000000 --- a/src/main/resources/data/create/recipes/compat/bloomful/milling/purple_delphinium.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "bloomful" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "bloomful:purple_delphinium" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 3 - }, - { - "item": "minecraft:purple_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bloomful/milling/white_delphinium.json b/src/main/resources/data/create/recipes/compat/bloomful/milling/white_delphinium.json deleted file mode 100644 index 4c97705a9..000000000 --- a/src/main/resources/data/create/recipes/compat/bloomful/milling/white_delphinium.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "bloomful" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "bloomful:white_delphinium" - } - ], - "results": [ - { - "item": "minecraft:white_dye", - "count": 3 - }, - { - "item": "minecraft:white_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/cherry_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/cherry_log.json deleted file mode 100644 index 3c81070d1..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/cherry_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:cherry_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_cherry_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/dead_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/dead_log.json deleted file mode 100644 index 0631325ce..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/dead_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:dead_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_dead_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/fir_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/fir_log.json deleted file mode 100644 index 160a0694e..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/fir_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:fir_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_fir_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/hellbark_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/hellbark_log.json deleted file mode 100644 index d13bac881..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/hellbark_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:hellbark_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_hellbark_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/jacaranda_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/jacaranda_log.json deleted file mode 100644 index b1ac2109f..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/jacaranda_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:jacaranda_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_jacaranda_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/magic_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/magic_log.json deleted file mode 100644 index 1e7e847ed..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/magic_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:magic_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_magic_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/mahogany_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/mahogany_log.json deleted file mode 100644 index 3cacb5566..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/mahogany_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:mahogany_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_mahogany_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/palm_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/palm_log.json deleted file mode 100644 index 7a24b74e1..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/palm_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:palm_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_palm_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/redwood_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/redwood_log.json deleted file mode 100644 index f703359be..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/redwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:redwood_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_redwood_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_cherry_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_cherry_log.json deleted file mode 100644 index 8061be745..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_cherry_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_cherry_log" - } - ], - "results": [ - { - "item": "biomesoplenty:cherry_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_dead_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_dead_log.json deleted file mode 100644 index ffd900338..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_dead_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_dead_log" - } - ], - "results": [ - { - "item": "biomesoplenty:dead_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_fir_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_fir_log.json deleted file mode 100644 index 149eb504a..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_fir_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_fir_log" - } - ], - "results": [ - { - "item": "biomesoplenty:fir_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_hellbark_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_hellbark_log.json deleted file mode 100644 index bbac5da4e..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_hellbark_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_hellbark_log" - } - ], - "results": [ - { - "item": "biomesoplenty:hellbark_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_jacaranda_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_jacaranda_log.json deleted file mode 100644 index 4032c3779..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_jacaranda_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_jacaranda_log" - } - ], - "results": [ - { - "item": "biomesoplenty:jacaranda_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_magic_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_magic_log.json deleted file mode 100644 index fe1b2fcd8..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_magic_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_magic_log" - } - ], - "results": [ - { - "item": "biomesoplenty:magic_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_mahogany_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_mahogany_log.json deleted file mode 100644 index 4e4d2f531..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_mahogany_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_mahogany_log" - } - ], - "results": [ - { - "item": "biomesoplenty:mahogany_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_palm_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_palm_log.json deleted file mode 100644 index bbc5da5fa..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_palm_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_palm_log" - } - ], - "results": [ - { - "item": "biomesoplenty:palm_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_redwood_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_redwood_log.json deleted file mode 100644 index a235bdf37..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_redwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_redwood_log" - } - ], - "results": [ - { - "item": "biomesoplenty:redwood_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_umbran_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_umbran_log.json deleted file mode 100644 index 718cf57ea..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_umbran_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_umbran_log" - } - ], - "results": [ - { - "item": "biomesoplenty:umbran_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_willow_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_willow_log.json deleted file mode 100644 index 431885d1e..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/stripped_willow_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:stripped_willow_log" - } - ], - "results": [ - { - "item": "biomesoplenty:willow_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/umbran_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/umbran_log.json deleted file mode 100644 index 1bb6ae757..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/umbran_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:umbran_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_umbran_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/cutting/willow_log.json b/src/main/resources/data/create/recipes/compat/bop/cutting/willow_log.json deleted file mode 100644 index 1a45ac32f..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/cutting/willow_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "biomesoplenty:willow_log" - } - ], - "results": [ - { - "item": "biomesoplenty:stripped_willow_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/blue_hydrangea.json b/src/main/resources/data/create/recipes/compat/bop/milling/blue_hydrangea.json deleted file mode 100644 index dc8a739d0..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/blue_hydrangea.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:blue_hydrangea" - } - ], - "results": [ - { - "item": "minecraft:light_blue_dye", - "count": 3 - }, - { - "item": "minecraft:green_dye", - "count": 2, - "chance": 0.05 - }, - { - "item": "minecraft:light_blue_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json b/src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json deleted file mode 100644 index ca7e76467..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/burning_blossom.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:burning_blossom" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json b/src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json deleted file mode 100644 index 18bc7c8fc..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/glowflower.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:glowflower" - } - ], - "results": [ - { - "item": "minecraft:cyan_dye", - "count": 2 - }, - { - "item": "minecraft:white_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json b/src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json deleted file mode 100644 index 0015eb4b1..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/goldenrod.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:goldenrod" - } - ], - "results": [ - { - "item": "minecraft:yellow_dye", - "count": 3 - }, - { - "item": "minecraft:green_dye", - "count": 2, - "chance": 0.05 - }, - { - "item": "minecraft:yellow_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/lavender.json b/src/main/resources/data/create/recipes/compat/bop/milling/lavender.json deleted file mode 100644 index ca78ef140..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/lavender.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:lavender" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json b/src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json deleted file mode 100644 index ef2dad2eb..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/orange_cosmos.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:orange_cosmos" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json b/src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json deleted file mode 100644 index 19afb0324..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/pink_daffodil.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:pink_daffodil" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:magenta_dye", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cyan_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json b/src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json deleted file mode 100644 index b9257f8f4..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/pink_hibiscus.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:pink_hibiscus" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:yellow_dye", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/rose.json b/src/main/resources/data/create/recipes/compat/bop/milling/rose.json deleted file mode 100644 index fc91888e2..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/rose.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:rose" - } - ], - "results": [ - { - "item": "minecraft:red_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.05 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/violet.json b/src/main/resources/data/create/recipes/compat/bop/milling/violet.json deleted file mode 100644 index 2d7d0f7a1..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/violet.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:violet" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json b/src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json deleted file mode 100644 index 41c84b806..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/wildflower.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:wildflower" - } - ], - "results": [ - { - "item": "minecraft:magenta_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json b/src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json deleted file mode 100644 index ed14ddc1a..000000000 --- a/src/main/resources/data/create/recipes/compat/bop/milling/wilted_lily.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "biomesoplenty" - } - ], - "type": "create:milling", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "biomesoplenty:wilted_lily" - } - ], - "results": [ - { - "item": "minecraft:gray_dye", - "count": 2 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json deleted file mode 100644 index 961de2d73..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/black_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/black" - } - ], - "results": [ - { - "item": "minecraft:black_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json deleted file mode 100644 index 3636f2cfe..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/blue_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/blue" - } - ], - "results": [ - { - "item": "minecraft:blue_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json deleted file mode 100644 index 10369e9d6..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/brown_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/brown" - } - ], - "results": [ - { - "item": "minecraft:brown_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json deleted file mode 100644 index 8fc4ffcf5..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/cyan_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/cyan" - } - ], - "results": [ - { - "item": "minecraft:cyan_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json deleted file mode 100644 index 909578920..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/gray_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/gray" - } - ], - "results": [ - { - "item": "minecraft:gray_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json deleted file mode 100644 index 0889fda2a..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/green_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/green" - } - ], - "results": [ - { - "item": "minecraft:green_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json deleted file mode 100644 index cd04d7aad..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/light_blue_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/light_blue" - } - ], - "results": [ - { - "item": "minecraft:light_blue_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json deleted file mode 100644 index b13e704d3..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/light_gray_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/light_gray" - } - ], - "results": [ - { - "item": "minecraft:light_gray_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json deleted file mode 100644 index 7232beeaa..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/lime_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/lime" - } - ], - "results": [ - { - "item": "minecraft:lime_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json deleted file mode 100644 index 434ebaf79..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/magenta_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/magenta" - } - ], - "results": [ - { - "item": "minecraft:magenta_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json deleted file mode 100644 index 8cb3343c1..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/orange_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/orange" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json deleted file mode 100644 index 7f48532f8..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/pink_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/pink" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json deleted file mode 100644 index a6a808423..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/purple_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/purple" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json deleted file mode 100644 index 7e909f52d..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/red_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/red" - } - ], - "results": [ - { - "item": "minecraft:red_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json deleted file mode 100644 index 9c5e40904..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/white_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/white" - } - ], - "results": [ - { - "item": "minecraft:white_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json b/src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json deleted file mode 100644 index 52d18de28..000000000 --- a/src/main/resources/data/create/recipes/compat/botania/milling/yellow_petal.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "botania" - } - ], - "type": "create:milling", - "ingredients": [ - { - "tag": "botania:petals/yellow" - } - ], - "results": [ - { - "item": "minecraft:yellow_dye", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bird_of_paradise.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bird_of_paradise.json deleted file mode 100644 index 5edf6abea..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bird_of_paradise.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:bird_of_paradise" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 3 - }, - { - "item": "minecraft:blue_dye", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:red_dye", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bluebell.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bluebell.json deleted file mode 100644 index b049cbc96..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/bluebell.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:bluebell" - } - ], - "results": [ - { - "item": "minecraft:blue_dye", - "count": 2 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/cartwheel.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/cartwheel.json deleted file mode 100644 index 169193092..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/cartwheel.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:cartwheel" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:orange_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/columbine.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/columbine.json deleted file mode 100644 index f5988729e..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/columbine.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:columbine" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - }, - { - "item": "minecraft:white_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/dianthus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/dianthus.json deleted file mode 100644 index 48c05d143..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/dianthus.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:jolyce" - } - ], - "results": [ - { - "item": "minecraft:green_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/magenta_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/magenta_hibiscus.json deleted file mode 100644 index 9e00cf80c..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/magenta_hibiscus.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:magenta_hibiscus" - } - ], - "results": [ - { - "item": "minecraft:magenta_dye", - "count": 2 - }, - { - "item": "minecraft:magenta_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/orange_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/orange_hibiscus.json deleted file mode 100644 index 6cc0c4ac3..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/orange_hibiscus.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:orange_hibiscus" - } - ], - "results": [ - { - "item": "minecraft:orange_dye", - "count": 2 - }, - { - "item": "minecraft:orange_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json deleted file mode 100644 index c8753a417..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_clover.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:pink_clover" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_hibiscus.json deleted file mode 100644 index fa8c4c473..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/pink_hibiscus.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:pink_hibiscus" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:pink_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/purple_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/purple_hibiscus.json deleted file mode 100644 index 91ac754a7..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/purple_hibiscus.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:purple_hibiscus" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - }, - { - "item": "minecraft:purple_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/red_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/red_hibiscus.json deleted file mode 100644 index 5b50d8189..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/red_hibiscus.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:red_hibiscus" - } - ], - "results": [ - { - "item": "minecraft:red_dye", - "count": 2 - }, - { - "item": "minecraft:red_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/violet.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/violet.json deleted file mode 100644 index fea46a464..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/violet.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:violet" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - }, - { - "item": "minecraft:purple_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json deleted file mode 100644 index 7c9a228b2..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/white_clover.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:white_clover" - } - ], - "results": [ - { - "item": "minecraft:white_dye", - "count": 2 - }, - { - "item": "minecraft:lime_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/yellow_hibiscus.json b/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/yellow_hibiscus.json deleted file mode 100644 index f2ce4cead..000000000 --- a/src/main/resources/data/create/recipes/compat/buzzier_bees/milling/yellow_hibiscus.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "buzzierbees" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "buzzierbees:daybloom" - } - ], - "results": [ - { - "item": "minecraft:yellow_dye", - "count": 2 - }, - { - "item": "minecraft:yellow_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json deleted file mode 100644 index 272894cf2..000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/amber_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "druidcraft" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "druidcraft:amber_ore" - } - ], - "results": [ - { - "item": "druidcraft:amber", - "count": 2 - }, - { - "item": "druidcraft:amber", - "count": 1, - "chance": 0.5 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json deleted file mode 100644 index 375e7ff5b..000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/fiery_glass_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "druidcraft" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "druidcraft:fiery_glass_ore" - } - ], - "results": [ - { - "item": "druidcraft:fiery_glass", - "count": 8 - }, - { - "item": "druidcraft:fiery_glass", - "count": 6, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json b/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json deleted file mode 100644 index fa05b1767..000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/crushing/moonstone_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "druidcraft" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "druidcraft:moonstone_ore" - } - ], - "results": [ - { - "item": "druidcraft:moonstone", - "count": 2 - }, - { - "item": "druidcraft:moonstone", - "count": 1, - "chance": 0.5 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json deleted file mode 100644 index cefdf5e0a..000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/darkwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "druidcraft" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "druidcraft:darkwood_log" - } - ], - "results": [ - { - "item": "druidcraft:stripped_darkwood_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json deleted file mode 100644 index 2fde05a0c..000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/elder_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "druidcraft" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "druidcraft:elder_log" - } - ], - "results": [ - { - "item": "druidcraft:stripped_elder_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json deleted file mode 100644 index 6d3244f85..000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_darkwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "druidcraft" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "druidcraft:stripped_darkwood_log" - } - ], - "results": [ - { - "item": "druidcraft:darkwood_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json b/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json deleted file mode 100644 index e5a2c5084..000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/cutting/stripped_elder_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "druidcraft" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "druidcraft:stripped_elder_log" - } - ], - "results": [ - { - "item": "druidcraft:elder_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json b/src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json deleted file mode 100644 index 9b5847bda..000000000 --- a/src/main/resources/data/create/recipes/compat/druidcraft/milling/lavender.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "druidcraft" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "druidcraft:lavender" - } - ], - "results": [ - { - "item": "minecraft:purple_dye", - "count": 2 - }, - { - "item": "minecraft:purple_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json b/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json deleted file mode 100644 index b16bec65c..000000000 --- a/src/main/resources/data/create/recipes/compat/endergetic/cutting/poise_stem.json +++ /dev/null @@ -1,21 +0,0 @@ -{ -"conditions": [ - { - "type": "forge:mod_loaded", - "modid": "endergetic" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "endergetic:poise_stem" - } - ], - "results": [ - { - "item": "endergetic:stripped_poise_stem", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/endergetic/cutting/stripped_poise_stem.json b/src/main/resources/data/create/recipes/compat/endergetic/cutting/stripped_poise_stem.json deleted file mode 100644 index 0599cce9d..000000000 --- a/src/main/resources/data/create/recipes/compat/endergetic/cutting/stripped_poise_stem.json +++ /dev/null @@ -1,21 +0,0 @@ -{ -"conditions": [ - { - "type": "forge:mod_loaded", - "modid": "endergetic" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "endergetic:stripped_poise_stem" - } - ], - "results": [ - { - "item": "endergetic:poise_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json deleted file mode 100644 index f0f35da28..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/aspen_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:aspen_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_aspen_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json deleted file mode 100644 index 02808f5ee..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/baobab_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:baobab_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_baobab_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json deleted file mode 100644 index fee2fb61f..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/cottonwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:cottonwood_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_cottonwood_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json deleted file mode 100644 index b133abd81..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/fir_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:fir_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_fir_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json deleted file mode 100644 index a9fda021b..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/juniper_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:juniper_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_juniper_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json deleted file mode 100644 index fc77c21cc..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/mangrove_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:mangrove_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_mangrove_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json deleted file mode 100644 index d9297cf33..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/maple_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:maple_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_maple_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json deleted file mode 100644 index aeefb2a88..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/palm_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:palm_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_palm_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json deleted file mode 100644 index fb27f4696..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/pine_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:pine_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_pine_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json deleted file mode 100644 index 960514664..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/redwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:redwood_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_redwood_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json deleted file mode 100644 index 2679b5538..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_aspen_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_aspen_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:aspen_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json deleted file mode 100644 index 1f5799d13..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_baobab_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_baobab_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:baobab_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json deleted file mode 100644 index 8dd22e6bb..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_cottonwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_cottonwood_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:cottonwood_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json deleted file mode 100644 index f84e6acc1..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_fir_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_fir_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:fir_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json deleted file mode 100644 index 24b6e1d3a..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_juniper_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_juniper_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:juniper_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json deleted file mode 100644 index a7e11054b..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_mangrove_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_mangrove_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:mangrove_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json deleted file mode 100644 index c82ebf136..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_maple_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_maple_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:maple_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json deleted file mode 100644 index a6299ce69..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_palm_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_palm_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:palm_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json deleted file mode 100644 index 2ca583202..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_pine_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_pine_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:pine_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json deleted file mode 100644 index b37f06e20..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_redwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_redwood_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:redwood_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json deleted file mode 100644 index 66b6aa646..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/stripped_willow_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:stripped_willow_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:willow_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json b/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json deleted file mode 100644 index dc9b00bde..000000000 --- a/src/main/resources/data/create/recipes/compat/projectvibrantjourneys/cutting/willow_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "projectvibrantjourneys" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "projectvibrantjourneys:willow_log" - } - ], - "results": [ - { - "item": "projectvibrantjourneys:stripped_willow_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/quark/crushing/biotite.json b/src/main/resources/data/create/recipes/compat/quark/crushing/biotite.json deleted file mode 100644 index 4d7c4ba5d..000000000 --- a/src/main/resources/data/create/recipes/compat/quark/crushing/biotite.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "quark" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "item": "quark:biotite_ore" - } - ], - "results": [ - { - "item": "quark:biotite", - "count": 2 - }, - { - "item": "quark:biotite", - "count": 4, - "chance": 0.5 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 450 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/quark/crushing/cactus.json b/src/main/resources/data/create/recipes/compat/quark/crushing/cactus.json deleted file mode 100644 index 0e007833a..000000000 --- a/src/main/resources/data/create/recipes/compat/quark/crushing/cactus.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "quark" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "minecraft:cactus" - } - ], - "results": [ - { - "item": "quark:cactus_paste", - "count": 2 - }, - { - "item": "quark:cactus_paste", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/quark/splashing/iron_plate_rusting.json b/src/main/resources/data/create/recipes/compat/quark/splashing/iron_plate_rusting.json deleted file mode 100644 index ce44e3778..000000000 --- a/src/main/resources/data/create/recipes/compat/quark/splashing/iron_plate_rusting.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "quark" - } - ], - "type": "create:splashing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "quark:iron_plate" - } - ], - "results": [ - { - "item": "quark:rusty_iron_plate", - "count": 1 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_spashing_smoothing.json b/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_spashing_smoothing.json deleted file mode 100644 index c150bffc7..000000000 --- a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_spashing_smoothing.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "rys" - } - ], - "type": "create:splashing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "rys:tough_dirt" - } - ], - "results": [ - { - "item": "rys:smooth_dirt", - "count": 1 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_clay_deposit.json b/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_clay_deposit.json deleted file mode 100644 index 604d8d847..000000000 --- a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_clay_deposit.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "rys" - } - ], - "type": "create:splashing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "rys:clay_deposit" - } - ], - "results": [ - { - "item": "minecraft:clay_ball", - "count": 2 - }, - { - "item": "minecraft:clay_ball", - "count": 4, - "chance": 0.5 - }, - { - "item": "minecraft:dirt", - "count": 1, - "chance": 0.125 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_gold_deposit.json b/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_gold_deposit.json deleted file mode 100644 index f9ddf4a85..000000000 --- a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_gold_deposit.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "rys" - } - ], - "type": "create:splashing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "rys:gold_deposit" - } - ], - "results": [ - { - "item": "minecraft:gold_nugget", - "count": 2 - }, - { - "item": "minecraft:gold_nugget", - "count": 4, - "chance": 0.5 - }, - { - "item": "minecraft:dirt", - "count": 1, - "chance": 0.125 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_iron_deposit.json b/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_iron_deposit.json deleted file mode 100644 index f3d6d707c..000000000 --- a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_iron_deposit.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "rys" - } - ], - "type": "create:splashing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "rys:iron_deposit" - } - ], - "results": [ - { - "item": "minecraft:iron_nugget", - "count": 2 - }, - { - "item": "minecraft:iron_nugget", - "count": 4, - "chance": 0.5 - }, - { - "item": "minecraft:dirt", - "count": 1, - "chance": 0.125 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_peat_deposit.json b/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_peat_deposit.json deleted file mode 100644 index eeb3a6710..000000000 --- a/src/main/resources/data/create/recipes/compat/readyyourshovels/splashing/rys_splashing_peat_deposit.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "rys" - } - ], - "type": "create:splashing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "rys:peat_deposit" - } - ], - "results": [ - { - "item": "rys:peat", - "count": 2 - }, - { - "item": "rys:peat", - "count": 4, - "chance": 0.5 - }, - { - "item": "minecraft:dirt", - "count": 1, - "chance": 0.125 - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/agate_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/agate_ore.json deleted file mode 100644 index 44f369478..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/agate_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:agate_ore" - } - ], - "results": [ - { - "item": "silentgems:agate", - "count": 2 - }, - { - "item": "silentgems:agate", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/alexandrite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/alexandrite_ore.json deleted file mode 100644 index 50f3a3be7..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/alexandrite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:alexandrite_ore" - } - ], - "results": [ - { - "item": "silentgems:alexandrite", - "count": 2 - }, - { - "item": "silentgems:alexandrite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amber_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amber_ore.json deleted file mode 100644 index 08a1c183b..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amber_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:amber_ore" - } - ], - "results": [ - { - "item": "silentgems:amber", - "count": 2 - }, - { - "item": "silentgems:amber", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amethyst_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amethyst_ore.json deleted file mode 100644 index 221d59bcf..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/amethyst_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:amethyst_ore" - } - ], - "results": [ - { - "item": "silentgems:amethyst", - "count": 2 - }, - { - "item": "silentgems:amethyst", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ametrine_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ametrine_ore.json deleted file mode 100644 index 575c7af78..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ametrine_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:ametrine_ore" - } - ], - "results": [ - { - "item": "silentgems:ametrine", - "count": 2 - }, - { - "item": "silentgems:ametrine", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ammolite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ammolite_ore.json deleted file mode 100644 index 3416b40ef..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ammolite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:ammolite_ore" - } - ], - "results": [ - { - "item": "silentgems:ammolite", - "count": 2 - }, - { - "item": "silentgems:ammolite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/apatite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/apatite_ore.json deleted file mode 100644 index 1b6c59fb7..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/apatite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:apatite_ore" - } - ], - "results": [ - { - "item": "silentgems:apatite", - "count": 2 - }, - { - "item": "silentgems:apatite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/aquamarine_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/aquamarine_ore.json deleted file mode 100644 index 9e6692fee..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/aquamarine_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:aquamarine_ore" - } - ], - "results": [ - { - "item": "silentgems:aquamarine", - "count": 2 - }, - { - "item": "silentgems:aquamarine", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/benitoite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/benitoite_ore.json deleted file mode 100644 index ae412ba08..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/benitoite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:benitoite_ore" - } - ], - "results": [ - { - "item": "silentgems:benitoite", - "count": 2 - }, - { - "item": "silentgems:benitoite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/black_diamond_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/black_diamond_ore.json deleted file mode 100644 index 5027dd583..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/black_diamond_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:black_diamond_ore" - } - ], - "results": [ - { - "item": "silentgems:black_diamond", - "count": 2 - }, - { - "item": "silentgems:black_diamond", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/carnelian_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/carnelian_ore.json deleted file mode 100644 index 6109c635a..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/carnelian_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:carnelian_ore" - } - ], - "results": [ - { - "item": "silentgems:carnelian", - "count": 2 - }, - { - "item": "silentgems:carnelian", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/cats_eye_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/cats_eye_ore.json deleted file mode 100644 index 202a041ef..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/cats_eye_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:cats_eye_ore" - } - ], - "results": [ - { - "item": "silentgems:cats_eye", - "count": 2 - }, - { - "item": "silentgems:cats_eye", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/chrysoprase_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/chrysoprase_ore.json deleted file mode 100644 index 66167cf6a..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/chrysoprase_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:chrysoprase_ore" - } - ], - "results": [ - { - "item": "silentgems:chrysoprase", - "count": 2 - }, - { - "item": "silentgems:chrysoprase", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/citrine_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/citrine_ore.json deleted file mode 100644 index 091162b6f..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/citrine_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:citrine_ore" - } - ], - "results": [ - { - "item": "silentgems:citrine", - "count": 2 - }, - { - "item": "silentgems:citrine", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/coral_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/coral_ore.json deleted file mode 100644 index dc53a7e78..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/coral_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:coral_ore" - } - ], - "results": [ - { - "item": "silentgems:coral", - "count": 2 - }, - { - "item": "silentgems:coral", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/euclase_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/euclase_ore.json deleted file mode 100644 index 4964d1484..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/euclase_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:euclase_ore" - } - ], - "results": [ - { - "item": "silentgems:euclase", - "count": 2 - }, - { - "item": "silentgems:euclase", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/fluorite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/fluorite_ore.json deleted file mode 100644 index 4a832e6e4..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/fluorite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:fluorite_ore" - } - ], - "results": [ - { - "item": "silentgems:fluorite", - "count": 2 - }, - { - "item": "silentgems:fluorite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/garnet_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/garnet_ore.json deleted file mode 100644 index 142238304..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/garnet_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:garnet_ore" - } - ], - "results": [ - { - "item": "silentgems:garnet", - "count": 2 - }, - { - "item": "silentgems:garnet", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/green_sapphire_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/green_sapphire_ore.json deleted file mode 100644 index de81517bc..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/green_sapphire_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:green_sapphire_ore" - } - ], - "results": [ - { - "item": "silentgems:green_sapphire", - "count": 2 - }, - { - "item": "silentgems:green_sapphire", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/heliodor_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/heliodor_ore.json deleted file mode 100644 index cba22cae5..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/heliodor_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:heliodor_ore" - } - ], - "results": [ - { - "item": "silentgems:heliodor", - "count": 2 - }, - { - "item": "silentgems:heliodor", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/iolite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/iolite_ore.json deleted file mode 100644 index f2395750e..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/iolite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:iolite_ore" - } - ], - "results": [ - { - "item": "silentgems:iolite", - "count": 2 - }, - { - "item": "silentgems:iolite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jade_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jade_ore.json deleted file mode 100644 index 29c98ec5b..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jade_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:jade_ore" - } - ], - "results": [ - { - "item": "silentgems:jade", - "count": 2 - }, - { - "item": "silentgems:jade", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jasper_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jasper_ore.json deleted file mode 100644 index 9a4491b9b..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/jasper_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:jasper_ore" - } - ], - "results": [ - { - "item": "silentgems:jasper", - "count": 2 - }, - { - "item": "silentgems:jasper", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kunzite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kunzite_ore.json deleted file mode 100644 index a71ee79c9..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kunzite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:kunzite_ore" - } - ], - "results": [ - { - "item": "silentgems:kunzite", - "count": 2 - }, - { - "item": "silentgems:kunzite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kyanite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kyanite_ore.json deleted file mode 100644 index 8082a593e..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/kyanite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:kyanite_ore" - } - ], - "results": [ - { - "item": "silentgems:kyanite", - "count": 2 - }, - { - "item": "silentgems:kyanite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/lepidolite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/lepidolite_ore.json deleted file mode 100644 index f8317bafd..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/lepidolite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:lepidolite_ore" - } - ], - "results": [ - { - "item": "silentgems:lepidolite", - "count": 2 - }, - { - "item": "silentgems:lepidolite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/malachite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/malachite_ore.json deleted file mode 100644 index 26d2d80a0..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/malachite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:malachite_ore" - } - ], - "results": [ - { - "item": "silentgems:malachite", - "count": 2 - }, - { - "item": "silentgems:malachite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moldavite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moldavite_ore.json deleted file mode 100644 index 7203486eb..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moldavite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:moldavite_ore" - } - ], - "results": [ - { - "item": "silentgems:moldavite", - "count": 2 - }, - { - "item": "silentgems:moldavite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moonstone_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moonstone_ore.json deleted file mode 100644 index 85bc1de35..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/moonstone_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:moonstone_ore" - } - ], - "results": [ - { - "item": "silentgems:moonstone", - "count": 2 - }, - { - "item": "silentgems:moonstone", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/morganite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/morganite_ore.json deleted file mode 100644 index e9cecdd1c..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/morganite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:morganite_ore" - } - ], - "results": [ - { - "item": "silentgems:morganite", - "count": 2 - }, - { - "item": "silentgems:morganite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/onyx_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/onyx_ore.json deleted file mode 100644 index 1ebfd9b6b..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/onyx_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:onyx_ore" - } - ], - "results": [ - { - "item": "silentgems:onyx", - "count": 2 - }, - { - "item": "silentgems:onyx", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/opal_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/opal_ore.json deleted file mode 100644 index 93e602b0d..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/opal_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:opal_ore" - } - ], - "results": [ - { - "item": "silentgems:opal", - "count": 2 - }, - { - "item": "silentgems:opal", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pearl_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pearl_ore.json deleted file mode 100644 index 6719c4c06..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pearl_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:pearl_ore" - } - ], - "results": [ - { - "item": "silentgems:pearl", - "count": 2 - }, - { - "item": "silentgems:pearl", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/peridot_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/peridot_ore.json deleted file mode 100644 index 1af300395..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/peridot_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:peridot_ore" - } - ], - "results": [ - { - "item": "silentgems:peridot", - "count": 2 - }, - { - "item": "silentgems:peridot", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/phosphophyllite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/phosphophyllite_ore.json deleted file mode 100644 index 751094180..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/phosphophyllite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:phosphophyllite_ore" - } - ], - "results": [ - { - "item": "silentgems:phosphophyllite", - "count": 2 - }, - { - "item": "silentgems:phosphophyllite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pyrope_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pyrope_ore.json deleted file mode 100644 index f38edf966..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/pyrope_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:pyrope_ore" - } - ], - "results": [ - { - "item": "silentgems:pyrope", - "count": 2 - }, - { - "item": "silentgems:pyrope", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/rose_quartz_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/rose_quartz_ore.json deleted file mode 100644 index 70d02ae55..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/rose_quartz_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:rose_quartz_ore" - } - ], - "results": [ - { - "item": "silentgems:rose_quartz", - "count": 2 - }, - { - "item": "silentgems:rose_quartz", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ruby_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ruby_ore.json deleted file mode 100644 index d4c2d34e3..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/ruby_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:ruby_ore" - } - ], - "results": [ - { - "item": "silentgems:ruby", - "count": 2 - }, - { - "item": "silentgems:ruby", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sapphire_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sapphire_ore.json deleted file mode 100644 index b078f9c00..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sapphire_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:sapphire_ore" - } - ], - "results": [ - { - "item": "silentgems:sapphire", - "count": 2 - }, - { - "item": "silentgems:sapphire", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sodalite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sodalite_ore.json deleted file mode 100644 index 6df2cb494..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sodalite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:sodalite_ore" - } - ], - "results": [ - { - "item": "silentgems:sodalite", - "count": 2 - }, - { - "item": "silentgems:sodalite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/spinel_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/spinel_ore.json deleted file mode 100644 index bf897179a..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/spinel_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:spinel_ore" - } - ], - "results": [ - { - "item": "silentgems:spinel", - "count": 2 - }, - { - "item": "silentgems:spinel", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sunstone_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sunstone_ore.json deleted file mode 100644 index 6a47a78d0..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/sunstone_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:sunstone_ore" - } - ], - "results": [ - { - "item": "silentgems:sunstone", - "count": 2 - }, - { - "item": "silentgems:sunstone", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tanzanite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tanzanite_ore.json deleted file mode 100644 index 127826c3d..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tanzanite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:tanzanite_ore" - } - ], - "results": [ - { - "item": "silentgems:tanzanite", - "count": 2 - }, - { - "item": "silentgems:tanzanite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tektite_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tektite_ore.json deleted file mode 100644 index 365b1cbb7..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/tektite_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:tektite_ore" - } - ], - "results": [ - { - "item": "silentgems:tektite", - "count": 2 - }, - { - "item": "silentgems:tektite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/topaz_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/topaz_ore.json deleted file mode 100644 index d95a63a7b..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/topaz_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:topaz_ore" - } - ], - "results": [ - { - "item": "silentgems:topaz", - "count": 2 - }, - { - "item": "silentgems:topaz", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/turquoise_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/turquoise_ore.json deleted file mode 100644 index c16c3ce75..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/turquoise_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:turquoise_ore" - } - ], - "results": [ - { - "item": "silentgems:turquoise", - "count": 2 - }, - { - "item": "silentgems:turquoise", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/yellow_diamond_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/yellow_diamond_ore.json deleted file mode 100644 index da9263d0a..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/yellow_diamond_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:yellow_diamond_ore" - } - ], - "results": [ - { - "item": "silentgems:yellow_diamond", - "count": 2 - }, - { - "item": "silentgems:yellow_diamond", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:end_stone", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/zircon_ore.json b/src/main/resources/data/create/recipes/compat/silentsgems/crushing/zircon_ore.json deleted file mode 100644 index 9e3cd7b9f..000000000 --- a/src/main/resources/data/create/recipes/compat/silentsgems/crushing/zircon_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "silentgems" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "silentgems:zircon_ore" - } - ], - "results": [ - { - "item": "silentgems:zircon", - "count": 2 - }, - { - "item": "silentgems:zircon", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:netherrack", - "count": 1, - "chance": 0.12 - } - ], - "processingTime": 350 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_barley.json b/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_barley.json deleted file mode 100644 index b43c5b968..000000000 --- a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_barley.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "simplefarming" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "simplefarming:barley" - } - ], - "results": [ - { - "item": "create:wheat_flour", - "count": 1 - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "simplefarming:barley_seeds", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_oat.json b/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_oat.json deleted file mode 100644 index 33a4b0c3d..000000000 --- a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_oat.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "simplefarming" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "simplefarming:oat" - } - ], - "results": [ - { - "item": "create:wheat_flour", - "count": 1 - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "simplefarming:oat_seeds", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rice.json b/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rice.json deleted file mode 100644 index 903097e68..000000000 --- a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rice.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "simplefarming" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "simplefarming:rice" - } - ], - "results": [ - { - "item": "create:wheat_flour", - "count": 1 - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "simplefarming:rice_seeds", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rye.json b/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rye.json deleted file mode 100644 index 6db334752..000000000 --- a/src/main/resources/data/create/recipes/compat/simplefarming/crushing/sf_crush_rye.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "simplefarming" - } - ], - "type": "create:crushing", - "group": "minecraft:misc", - "ingredients": [ - { - "item": "simplefarming:rye" - } - ], - "results": [ - { - "item": "create:wheat_flour", - "count": 1 - }, - { - "item": "create:wheat_flour", - "count": 2, - "chance": 0.25 - }, - { - "item": "simplefarming:rye_seeds", - "count": 1, - "chance": 0.25 - } - ], - "processingTime": 150 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/stripped_willow_log.json b/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/stripped_willow_log.json deleted file mode 100644 index 943443551..000000000 --- a/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/stripped_willow_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ -"conditions": [ - { - "type": "forge:mod_loaded", - "modid": "swampexpansion" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "swampexpansion:stripped_willow_log" - } - ], - "results": [ - { - "item": "swampexpansion:willow_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/willow_log.json b/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/willow_log.json deleted file mode 100644 index 5c8b56b8f..000000000 --- a/src/main/resources/data/create/recipes/compat/swampexpansion/cutting/willow_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ -"conditions": [ - { - "type": "forge:mod_loaded", - "modid": "swampexpansion" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "swampexpansion:willow_log" - } - ], - "results": [ - { - "item": "swampexpansion:stripped_willow_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/thermal/crushing/apatite_ore.json b/src/main/resources/data/create/recipes/compat/thermal/crushing/apatite_ore.json deleted file mode 100644 index 92aa84550..000000000 --- a/src/main/resources/data/create/recipes/compat/thermal/crushing/apatite_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "thermal" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/apatite" - } - ], - "results": [ - { - "item": "thermal:apatite", - "count": 2 - }, - { - "item": "thermal:apatite", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/thermal/crushing/cinnabar_ore.json b/src/main/resources/data/create/recipes/compat/thermal/crushing/cinnabar_ore.json deleted file mode 100644 index 9a00358d8..000000000 --- a/src/main/resources/data/create/recipes/compat/thermal/crushing/cinnabar_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "thermal" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/cinnabar" - } - ], - "results": [ - { - "item": "thermal:cinnabar", - "count": 2 - }, - { - "item": "thermal:cinnabar", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/thermal/crushing/niter_ore.json b/src/main/resources/data/create/recipes/compat/thermal/crushing/niter_ore.json deleted file mode 100644 index ba9ac7626..000000000 --- a/src/main/resources/data/create/recipes/compat/thermal/crushing/niter_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "thermal" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/niter" - } - ], - "results": [ - { - "item": "thermal:niter", - "count": 2 - }, - { - "item": "thermal:niter", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/thermal/crushing/sulfur_ore.json b/src/main/resources/data/create/recipes/compat/thermal/crushing/sulfur_ore.json deleted file mode 100644 index 58e3b3415..000000000 --- a/src/main/resources/data/create/recipes/compat/thermal/crushing/sulfur_ore.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "thermal" - } - ], - "type": "create:crushing", - "ingredients": [ - { - "tag": "forge:ores/sulfur" - } - ], - "results": [ - { - "item": "thermal:sulfur", - "count": 2 - }, - { - "item": "thermal:sulfur", - "count": 1, - "chance": 0.25 - }, - { - "item": "minecraft:cobblestone", - "count": 1, - "chance": 0.125 - } - ], - "processingTime": 300 -} diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json deleted file mode 100644 index 4e06061b1..000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/driftwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ -"conditions": [ - { - "type": "forge:mod_loaded", - "modid": "upgrade_aquatic" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "upgrade_aquatic:driftwood_log" - } - ], - "results": [ - { - "item": "upgrade_aquatic:stripped_driftwood_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json deleted file mode 100644 index 18e44da83..000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/river_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ -"conditions": [ - { - "type": "forge:mod_loaded", - "modid": "upgrade_aquatic" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "upgrade_aquatic:river_log" - } - ], - "results": [ - { - "item": "upgrade_aquatic:stripped_river_log", - "count": 1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json deleted file mode 100644 index 648d7c3ff..000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_driftwood_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ -"conditions": [ - { - "type": "forge:mod_loaded", - "modid": "upgrade_aquatic" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "upgrade_aquatic:stripped_driftwood_log" - } - ], - "results": [ - { - "item": "upgrade_aquatic:driftwood_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json deleted file mode 100644 index faae38dff..000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/cutting/stripped_river_log.json +++ /dev/null @@ -1,21 +0,0 @@ -{ -"conditions": [ - { - "type": "forge:mod_loaded", - "modid": "upgrade_aquatic" - } - ], - "type": "create:cutting", - "ingredients": [ - { - "item": "upgrade_aquatic:stripped_river_log" - } - ], - "results": [ - { - "item": "upgrade_aquatic:river_planks", - "count": 5 - } - ], - "processingTime": 100 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json deleted file mode 100644 index 3f8a63e24..000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/flowering_rush.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "upgrade_aquatic" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "upgrade_aquatic:flowering_rush" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 3 - }, - { - "item": "minecraft:pink_dye", - "count": 2, - "chance": 0.25 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/pink_searocket.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/pink_searocket.json deleted file mode 100644 index 5e758b22d..000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/pink_searocket.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "upgrade_aquatic" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "upgrade_aquatic:pink_searocket" - } - ], - "results": [ - { - "item": "minecraft:pink_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/white_searocket.json b/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/white_searocket.json deleted file mode 100644 index 0efbcccb3..000000000 --- a/src/main/resources/data/create/recipes/compat/upgrade_aquatic/milling/white_searocket.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "conditions": [ - { - "type": "forge:mod_loaded", - "modid": "upgrade_aquatic" - } - ], - "type": "create:milling", - "ingredients": [ - { - "item": "upgrade_aquatic:white_searocket" - } - ], - "results": [ - { - "item": "minecraft:white_dye", - "count": 2 - }, - { - "item": "minecraft:green_dye", - "count": 1, - "chance": 0.1 - } - ], - "processingTime": 50 -} \ No newline at end of file diff --git a/src/main/resources/data/create/tags/blocks/non_movable.json b/src/main/resources/data/create/tags/blocks/non_movable.json deleted file mode 100644 index 974dda4c5..000000000 --- a/src/main/resources/data/create/tags/blocks/non_movable.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "replace": false, - "values": [ - "minecraft:obsidian" - ], - "optional": [ - "immersiveengineering:connector_lv", - "immersiveengineering:connector_lv_relay", - "immersiveengineering:connector_mv", - "immersiveengineering:connector_mv_relay", - "immersiveengineering:connector_hv", - "immersiveengineering:connector_hv_relay", - "immersiveengineering:connector_bundled", - "immersiveengineering:connector_structural", - "immersiveengineering:connector_redstone", - "immersiveengineering:connector_probe", - "immersiveengineering:breaker_switch" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/stone.json b/src/main/resources/data/forge/tags/blocks/stone.json deleted file mode 100644 index 2b4996602..000000000 --- a/src/main/resources/data/forge/tags/blocks/stone.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "replace": false, - "values": [ - "create:limestone", - "create:polished_limestone", - "create:weathered_limestone", - "create:polished_weathered_limestone", - "create:gabbro", - "create:polished_gabbro", - "create:dolomite", - "create:polished_dolomite", - "create:scoria", - "create:polished_scoria", - "create:dark_scoria", - "create:polished_dark_scoria" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/blocks/wg_stone.json b/src/main/resources/data/forge/tags/blocks/wg_stone.json deleted file mode 100644 index d49e3fbd6..000000000 --- a/src/main/resources/data/forge/tags/blocks/wg_stone.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "replace": false, - "values": [ - "create:limestone", - "create:weathered_limestone", - "create:gabbro", - "create:dolomite", - "create:natural_scoria" - ] -} \ No newline at end of file diff --git a/src/main/resources/data/forge/tags/items/stone.json b/src/main/resources/data/forge/tags/items/stone.json deleted file mode 100644 index 2b4996602..000000000 --- a/src/main/resources/data/forge/tags/items/stone.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "replace": false, - "values": [ - "create:limestone", - "create:polished_limestone", - "create:weathered_limestone", - "create:polished_weathered_limestone", - "create:gabbro", - "create:polished_gabbro", - "create:dolomite", - "create:polished_dolomite", - "create:scoria", - "create:polished_scoria", - "create:dark_scoria", - "create:polished_dark_scoria" - ] -} \ No newline at end of file diff --git a/src/main/resources/flywheel.mixins.json b/src/main/resources/flywheel.mixins.json new file mode 100644 index 000000000..713089060 --- /dev/null +++ b/src/main/resources/flywheel.mixins.json @@ -0,0 +1,24 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "com.jozufozu.flywheel.mixin", + "compatibilityLevel": "JAVA_8", + "refmap": "flywheel.refmap.json", + "mixins": [ + ], + "client": [ + "CancelEntityRenderMixin", + "CancelTileEntityRenderMixin", + "FogColorTrackerMixin", + "RenderHooksMixin", + "ShaderCloseMixin", + "StoreProjectionMatrixMixin", + "TileRemoveMixin", + "TileWorldHookMixin", + "light.LightUpdateMixin", + "light.NetworkLightUpdateMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 8feb30fb0..95e381309 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,6 +1,7 @@ { "pack": { - "description": "Create resources", - "pack_format": 6 + "description": "flywheel resources", + "pack_format": 6, + "_comment": "A pack_format of 6 requires json lang files and some texture changes from 1.16.2. Note: we require v6 pack meta for all mods." } } diff --git a/src/main/resources/ponder/adjustable_pulse_repeater.nbt b/src/main/resources/ponder/adjustable_pulse_repeater.nbt deleted file mode 100644 index bac67f6a1..000000000 Binary files a/src/main/resources/ponder/adjustable_pulse_repeater.nbt and /dev/null differ diff --git a/src/main/resources/ponder/adjustable_repeater.nbt b/src/main/resources/ponder/adjustable_repeater.nbt deleted file mode 100644 index feb341477..000000000 Binary files a/src/main/resources/ponder/adjustable_repeater.nbt and /dev/null differ diff --git a/src/main/resources/ponder/analog_lever.nbt b/src/main/resources/ponder/analog_lever.nbt deleted file mode 100644 index 07bfc5e29..000000000 Binary files a/src/main/resources/ponder/analog_lever.nbt and /dev/null differ diff --git a/src/main/resources/ponder/basin.nbt b/src/main/resources/ponder/basin.nbt deleted file mode 100644 index e5340dadf..000000000 Binary files a/src/main/resources/ponder/basin.nbt and /dev/null differ diff --git a/src/main/resources/ponder/belt/connect.nbt b/src/main/resources/ponder/belt/connect.nbt deleted file mode 100644 index b1009a9ce..000000000 Binary files a/src/main/resources/ponder/belt/connect.nbt and /dev/null differ diff --git a/src/main/resources/ponder/belt/directions.nbt b/src/main/resources/ponder/belt/directions.nbt deleted file mode 100644 index fde59d365..000000000 Binary files a/src/main/resources/ponder/belt/directions.nbt and /dev/null differ diff --git a/src/main/resources/ponder/belt/encasing.nbt b/src/main/resources/ponder/belt/encasing.nbt deleted file mode 100644 index 1ce0d762d..000000000 Binary files a/src/main/resources/ponder/belt/encasing.nbt and /dev/null differ diff --git a/src/main/resources/ponder/belt/transport.nbt b/src/main/resources/ponder/belt/transport.nbt deleted file mode 100644 index 784df024a..000000000 Binary files a/src/main/resources/ponder/belt/transport.nbt and /dev/null differ diff --git a/src/main/resources/ponder/blaze_burner.nbt b/src/main/resources/ponder/blaze_burner.nbt deleted file mode 100644 index e83a31408..000000000 Binary files a/src/main/resources/ponder/blaze_burner.nbt and /dev/null differ diff --git a/src/main/resources/ponder/cart_assembler/anchor.nbt b/src/main/resources/ponder/cart_assembler/anchor.nbt deleted file mode 100644 index de8bc0bd1..000000000 Binary files a/src/main/resources/ponder/cart_assembler/anchor.nbt and /dev/null differ diff --git a/src/main/resources/ponder/cart_assembler/dual.nbt b/src/main/resources/ponder/cart_assembler/dual.nbt deleted file mode 100644 index b7110b581..000000000 Binary files a/src/main/resources/ponder/cart_assembler/dual.nbt and /dev/null differ diff --git a/src/main/resources/ponder/cart_assembler/modes.nbt b/src/main/resources/ponder/cart_assembler/modes.nbt deleted file mode 100644 index a287d78be..000000000 Binary files a/src/main/resources/ponder/cart_assembler/modes.nbt and /dev/null differ diff --git a/src/main/resources/ponder/cart_assembler/rails.nbt b/src/main/resources/ponder/cart_assembler/rails.nbt deleted file mode 100644 index 783075672..000000000 Binary files a/src/main/resources/ponder/cart_assembler/rails.nbt and /dev/null differ diff --git a/src/main/resources/ponder/chain_drive/gearshift.nbt b/src/main/resources/ponder/chain_drive/gearshift.nbt deleted file mode 100644 index f9176ac82..000000000 Binary files a/src/main/resources/ponder/chain_drive/gearshift.nbt and /dev/null differ diff --git a/src/main/resources/ponder/chain_drive/relay.nbt b/src/main/resources/ponder/chain_drive/relay.nbt deleted file mode 100644 index 94eba9f2b..000000000 Binary files a/src/main/resources/ponder/chain_drive/relay.nbt and /dev/null differ diff --git a/src/main/resources/ponder/chassis/linear_attachment.nbt b/src/main/resources/ponder/chassis/linear_attachment.nbt deleted file mode 100644 index f7ef01bc6..000000000 Binary files a/src/main/resources/ponder/chassis/linear_attachment.nbt and /dev/null differ diff --git a/src/main/resources/ponder/chassis/linear_group.nbt b/src/main/resources/ponder/chassis/linear_group.nbt deleted file mode 100644 index cfde348fb..000000000 Binary files a/src/main/resources/ponder/chassis/linear_group.nbt and /dev/null differ diff --git a/src/main/resources/ponder/chassis/radial.nbt b/src/main/resources/ponder/chassis/radial.nbt deleted file mode 100644 index 17413d4a1..000000000 Binary files a/src/main/resources/ponder/chassis/radial.nbt and /dev/null differ diff --git a/src/main/resources/ponder/chute/downward.nbt b/src/main/resources/ponder/chute/downward.nbt deleted file mode 100644 index 9ed648941..000000000 Binary files a/src/main/resources/ponder/chute/downward.nbt and /dev/null differ diff --git a/src/main/resources/ponder/chute/smart.nbt b/src/main/resources/ponder/chute/smart.nbt deleted file mode 100644 index eb4f6dc6e..000000000 Binary files a/src/main/resources/ponder/chute/smart.nbt and /dev/null differ diff --git a/src/main/resources/ponder/chute/upward.nbt b/src/main/resources/ponder/chute/upward.nbt deleted file mode 100644 index d067f7490..000000000 Binary files a/src/main/resources/ponder/chute/upward.nbt and /dev/null differ diff --git a/src/main/resources/ponder/clockwork_bearing.nbt b/src/main/resources/ponder/clockwork_bearing.nbt deleted file mode 100644 index 43b4c4f93..000000000 Binary files a/src/main/resources/ponder/clockwork_bearing.nbt and /dev/null differ diff --git a/src/main/resources/ponder/clutch.nbt b/src/main/resources/ponder/clutch.nbt deleted file mode 100644 index 351af5afb..000000000 Binary files a/src/main/resources/ponder/clutch.nbt and /dev/null differ diff --git a/src/main/resources/ponder/cog/large.nbt b/src/main/resources/ponder/cog/large.nbt deleted file mode 100644 index 3f55bd447..000000000 Binary files a/src/main/resources/ponder/cog/large.nbt and /dev/null differ diff --git a/src/main/resources/ponder/cog/small.nbt b/src/main/resources/ponder/cog/small.nbt deleted file mode 100644 index 90e235e2c..000000000 Binary files a/src/main/resources/ponder/cog/small.nbt and /dev/null differ diff --git a/src/main/resources/ponder/cog/speedup.nbt b/src/main/resources/ponder/cog/speedup.nbt deleted file mode 100644 index 2a5687aee..000000000 Binary files a/src/main/resources/ponder/cog/speedup.nbt and /dev/null differ diff --git a/src/main/resources/ponder/creative_motor.nbt b/src/main/resources/ponder/creative_motor.nbt deleted file mode 100644 index 58a94c9d1..000000000 Binary files a/src/main/resources/ponder/creative_motor.nbt and /dev/null differ diff --git a/src/main/resources/ponder/crushing_wheel.nbt b/src/main/resources/ponder/crushing_wheel.nbt deleted file mode 100644 index 67be32a30..000000000 Binary files a/src/main/resources/ponder/crushing_wheel.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_1.nbt b/src/main/resources/ponder/debug/scene_1.nbt deleted file mode 100644 index 2252fa1c3..000000000 Binary files a/src/main/resources/ponder/debug/scene_1.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_2.nbt b/src/main/resources/ponder/debug/scene_2.nbt deleted file mode 100644 index 16f82250c..000000000 Binary files a/src/main/resources/ponder/debug/scene_2.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_3.nbt b/src/main/resources/ponder/debug/scene_3.nbt deleted file mode 100644 index aedc65d0e..000000000 Binary files a/src/main/resources/ponder/debug/scene_3.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_4.nbt b/src/main/resources/ponder/debug/scene_4.nbt deleted file mode 100644 index 589150451..000000000 Binary files a/src/main/resources/ponder/debug/scene_4.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_5.nbt b/src/main/resources/ponder/debug/scene_5.nbt deleted file mode 100644 index be49148df..000000000 Binary files a/src/main/resources/ponder/debug/scene_5.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_6.nbt b/src/main/resources/ponder/debug/scene_6.nbt deleted file mode 100644 index 6a7f63510..000000000 Binary files a/src/main/resources/ponder/debug/scene_6.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_7.nbt b/src/main/resources/ponder/debug/scene_7.nbt deleted file mode 100644 index d0b4f88f6..000000000 Binary files a/src/main/resources/ponder/debug/scene_7.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_8.nbt b/src/main/resources/ponder/debug/scene_8.nbt deleted file mode 100644 index eb2a7ac88..000000000 Binary files a/src/main/resources/ponder/debug/scene_8.nbt and /dev/null differ diff --git a/src/main/resources/ponder/debug/scene_9.nbt b/src/main/resources/ponder/debug/scene_9.nbt deleted file mode 100644 index e981d81ed..000000000 Binary files a/src/main/resources/ponder/debug/scene_9.nbt and /dev/null differ diff --git a/src/main/resources/ponder/deployer/contraption.nbt b/src/main/resources/ponder/deployer/contraption.nbt deleted file mode 100644 index e92a1a98b..000000000 Binary files a/src/main/resources/ponder/deployer/contraption.nbt and /dev/null differ diff --git a/src/main/resources/ponder/deployer/filter.nbt b/src/main/resources/ponder/deployer/filter.nbt deleted file mode 100644 index 78fc6138e..000000000 Binary files a/src/main/resources/ponder/deployer/filter.nbt and /dev/null differ diff --git a/src/main/resources/ponder/deployer/modes.nbt b/src/main/resources/ponder/deployer/modes.nbt deleted file mode 100644 index da15f4de6..000000000 Binary files a/src/main/resources/ponder/deployer/modes.nbt and /dev/null differ diff --git a/src/main/resources/ponder/deployer/redstone.nbt b/src/main/resources/ponder/deployer/redstone.nbt deleted file mode 100644 index ea260becc..000000000 Binary files a/src/main/resources/ponder/deployer/redstone.nbt and /dev/null differ diff --git a/src/main/resources/ponder/depot.nbt b/src/main/resources/ponder/depot.nbt deleted file mode 100644 index cb1824d1b..000000000 Binary files a/src/main/resources/ponder/depot.nbt and /dev/null differ diff --git a/src/main/resources/ponder/empty_blaze_burner.nbt b/src/main/resources/ponder/empty_blaze_burner.nbt deleted file mode 100644 index b134772cd..000000000 Binary files a/src/main/resources/ponder/empty_blaze_burner.nbt and /dev/null differ diff --git a/src/main/resources/ponder/fan/direction.nbt b/src/main/resources/ponder/fan/direction.nbt deleted file mode 100644 index 08e9d0236..000000000 Binary files a/src/main/resources/ponder/fan/direction.nbt and /dev/null differ diff --git a/src/main/resources/ponder/fan/processing.nbt b/src/main/resources/ponder/fan/processing.nbt deleted file mode 100644 index 00de4c3fe..000000000 Binary files a/src/main/resources/ponder/fan/processing.nbt and /dev/null differ diff --git a/src/main/resources/ponder/fan/source.nbt b/src/main/resources/ponder/fan/source.nbt deleted file mode 100644 index 0c351c645..000000000 Binary files a/src/main/resources/ponder/fan/source.nbt and /dev/null differ diff --git a/src/main/resources/ponder/funnels/brass.nbt b/src/main/resources/ponder/funnels/brass.nbt deleted file mode 100644 index f5dc748bc..000000000 Binary files a/src/main/resources/ponder/funnels/brass.nbt and /dev/null differ diff --git a/src/main/resources/ponder/funnels/compat.nbt b/src/main/resources/ponder/funnels/compat.nbt deleted file mode 100644 index 73e10aa15..000000000 Binary files a/src/main/resources/ponder/funnels/compat.nbt and /dev/null differ diff --git a/src/main/resources/ponder/funnels/direction.nbt b/src/main/resources/ponder/funnels/direction.nbt deleted file mode 100644 index b9f65898e..000000000 Binary files a/src/main/resources/ponder/funnels/direction.nbt and /dev/null differ diff --git a/src/main/resources/ponder/funnels/intro.nbt b/src/main/resources/ponder/funnels/intro.nbt deleted file mode 100644 index 8f1f190f5..000000000 Binary files a/src/main/resources/ponder/funnels/intro.nbt and /dev/null differ diff --git a/src/main/resources/ponder/funnels/redstone.nbt b/src/main/resources/ponder/funnels/redstone.nbt deleted file mode 100644 index f30d0417f..000000000 Binary files a/src/main/resources/ponder/funnels/redstone.nbt and /dev/null differ diff --git a/src/main/resources/ponder/funnels/transposer.nbt b/src/main/resources/ponder/funnels/transposer.nbt deleted file mode 100644 index fd13cd84c..000000000 Binary files a/src/main/resources/ponder/funnels/transposer.nbt and /dev/null differ diff --git a/src/main/resources/ponder/furnace_engine.nbt b/src/main/resources/ponder/furnace_engine.nbt deleted file mode 100644 index fe916ecc7..000000000 Binary files a/src/main/resources/ponder/furnace_engine.nbt and /dev/null differ diff --git a/src/main/resources/ponder/gantry/direction.nbt b/src/main/resources/ponder/gantry/direction.nbt deleted file mode 100644 index 689314cd0..000000000 Binary files a/src/main/resources/ponder/gantry/direction.nbt and /dev/null differ diff --git a/src/main/resources/ponder/gantry/intro.nbt b/src/main/resources/ponder/gantry/intro.nbt deleted file mode 100644 index 20f0b8c2d..000000000 Binary files a/src/main/resources/ponder/gantry/intro.nbt and /dev/null differ diff --git a/src/main/resources/ponder/gantry/redstone.nbt b/src/main/resources/ponder/gantry/redstone.nbt deleted file mode 100644 index 856d89863..000000000 Binary files a/src/main/resources/ponder/gantry/redstone.nbt and /dev/null differ diff --git a/src/main/resources/ponder/gantry/subgantry.nbt b/src/main/resources/ponder/gantry/subgantry.nbt deleted file mode 100644 index 09302c0a5..000000000 Binary files a/src/main/resources/ponder/gantry/subgantry.nbt and /dev/null differ diff --git a/src/main/resources/ponder/gauges.nbt b/src/main/resources/ponder/gauges.nbt deleted file mode 100644 index 67246ab4f..000000000 Binary files a/src/main/resources/ponder/gauges.nbt and /dev/null differ diff --git a/src/main/resources/ponder/gearbox.nbt b/src/main/resources/ponder/gearbox.nbt deleted file mode 100644 index 39e5c6cd5..000000000 Binary files a/src/main/resources/ponder/gearbox.nbt and /dev/null differ diff --git a/src/main/resources/ponder/gearshift.nbt b/src/main/resources/ponder/gearshift.nbt deleted file mode 100644 index 957cec183..000000000 Binary files a/src/main/resources/ponder/gearshift.nbt and /dev/null differ diff --git a/src/main/resources/ponder/hand_crank.nbt b/src/main/resources/ponder/hand_crank.nbt deleted file mode 100644 index 2057ec700..000000000 Binary files a/src/main/resources/ponder/hand_crank.nbt and /dev/null differ diff --git a/src/main/resources/ponder/harvester.nbt b/src/main/resources/ponder/harvester.nbt deleted file mode 100644 index 44b584700..000000000 Binary files a/src/main/resources/ponder/harvester.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_arm/filter.nbt b/src/main/resources/ponder/mechanical_arm/filter.nbt deleted file mode 100644 index f7e859d44..000000000 Binary files a/src/main/resources/ponder/mechanical_arm/filter.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_arm/modes.nbt b/src/main/resources/ponder/mechanical_arm/modes.nbt deleted file mode 100644 index d7226abc0..000000000 Binary files a/src/main/resources/ponder/mechanical_arm/modes.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_arm/redstone.nbt b/src/main/resources/ponder/mechanical_arm/redstone.nbt deleted file mode 100644 index 3c80e9c82..000000000 Binary files a/src/main/resources/ponder/mechanical_arm/redstone.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_arm/setup.nbt b/src/main/resources/ponder/mechanical_arm/setup.nbt deleted file mode 100644 index 4c935edb0..000000000 Binary files a/src/main/resources/ponder/mechanical_arm/setup.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_bearing/anchor.nbt b/src/main/resources/ponder/mechanical_bearing/anchor.nbt deleted file mode 100644 index 3ae522be0..000000000 Binary files a/src/main/resources/ponder/mechanical_bearing/anchor.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_bearing/modes.nbt b/src/main/resources/ponder/mechanical_bearing/modes.nbt deleted file mode 100644 index a3e80f13f..000000000 Binary files a/src/main/resources/ponder/mechanical_bearing/modes.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_bearing/stabilized.nbt b/src/main/resources/ponder/mechanical_bearing/stabilized.nbt deleted file mode 100644 index 59ac0501c..000000000 Binary files a/src/main/resources/ponder/mechanical_bearing/stabilized.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_crafter/connect.nbt b/src/main/resources/ponder/mechanical_crafter/connect.nbt deleted file mode 100644 index 27dac0c32..000000000 Binary files a/src/main/resources/ponder/mechanical_crafter/connect.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_crafter/covers.nbt b/src/main/resources/ponder/mechanical_crafter/covers.nbt deleted file mode 100644 index 0860f7010..000000000 Binary files a/src/main/resources/ponder/mechanical_crafter/covers.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_crafter/setup.nbt b/src/main/resources/ponder/mechanical_crafter/setup.nbt deleted file mode 100644 index 5b744378f..000000000 Binary files a/src/main/resources/ponder/mechanical_crafter/setup.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_drill/breaker.nbt b/src/main/resources/ponder/mechanical_drill/breaker.nbt deleted file mode 100644 index 8d3766251..000000000 Binary files a/src/main/resources/ponder/mechanical_drill/breaker.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_drill/contraption.nbt b/src/main/resources/ponder/mechanical_drill/contraption.nbt deleted file mode 100644 index 656173bcd..000000000 Binary files a/src/main/resources/ponder/mechanical_drill/contraption.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_mixer/mixing.nbt b/src/main/resources/ponder/mechanical_mixer/mixing.nbt deleted file mode 100644 index 21114955b..000000000 Binary files a/src/main/resources/ponder/mechanical_mixer/mixing.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_piston/anchor.nbt b/src/main/resources/ponder/mechanical_piston/anchor.nbt deleted file mode 100644 index 7bbee5cc9..000000000 Binary files a/src/main/resources/ponder/mechanical_piston/anchor.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_piston/modes.nbt b/src/main/resources/ponder/mechanical_piston/modes.nbt deleted file mode 100644 index f9755f1ed..000000000 Binary files a/src/main/resources/ponder/mechanical_piston/modes.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_piston/piston_pole.nbt b/src/main/resources/ponder/mechanical_piston/piston_pole.nbt deleted file mode 100644 index 710f5930a..000000000 Binary files a/src/main/resources/ponder/mechanical_piston/piston_pole.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_press/compacting.nbt b/src/main/resources/ponder/mechanical_press/compacting.nbt deleted file mode 100644 index a5eb8661a..000000000 Binary files a/src/main/resources/ponder/mechanical_press/compacting.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_press/pressing.nbt b/src/main/resources/ponder/mechanical_press/pressing.nbt deleted file mode 100644 index 649276a51..000000000 Binary files a/src/main/resources/ponder/mechanical_press/pressing.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_saw/breaker.nbt b/src/main/resources/ponder/mechanical_saw/breaker.nbt deleted file mode 100644 index f9d4b030c..000000000 Binary files a/src/main/resources/ponder/mechanical_saw/breaker.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_saw/contraption.nbt b/src/main/resources/ponder/mechanical_saw/contraption.nbt deleted file mode 100644 index f8a1daa01..000000000 Binary files a/src/main/resources/ponder/mechanical_saw/contraption.nbt and /dev/null differ diff --git a/src/main/resources/ponder/mechanical_saw/processing.nbt b/src/main/resources/ponder/mechanical_saw/processing.nbt deleted file mode 100644 index 35d6a03f6..000000000 Binary files a/src/main/resources/ponder/mechanical_saw/processing.nbt and /dev/null differ diff --git a/src/main/resources/ponder/millstone.nbt b/src/main/resources/ponder/millstone.nbt deleted file mode 100644 index 81dc45037..000000000 Binary files a/src/main/resources/ponder/millstone.nbt and /dev/null differ diff --git a/src/main/resources/ponder/nixie_tube.nbt b/src/main/resources/ponder/nixie_tube.nbt deleted file mode 100644 index 7d858b35f..000000000 Binary files a/src/main/resources/ponder/nixie_tube.nbt and /dev/null differ diff --git a/src/main/resources/ponder/plough.nbt b/src/main/resources/ponder/plough.nbt deleted file mode 100644 index 24f190e64..000000000 Binary files a/src/main/resources/ponder/plough.nbt and /dev/null differ diff --git a/src/main/resources/ponder/portable_interface/redstone.nbt b/src/main/resources/ponder/portable_interface/redstone.nbt deleted file mode 100644 index 799754288..000000000 Binary files a/src/main/resources/ponder/portable_interface/redstone.nbt and /dev/null differ diff --git a/src/main/resources/ponder/portable_interface/transfer.nbt b/src/main/resources/ponder/portable_interface/transfer.nbt deleted file mode 100644 index a7d61c927..000000000 Binary files a/src/main/resources/ponder/portable_interface/transfer.nbt and /dev/null differ diff --git a/src/main/resources/ponder/powered_latch.nbt b/src/main/resources/ponder/powered_latch.nbt deleted file mode 100644 index 846de16e2..000000000 Binary files a/src/main/resources/ponder/powered_latch.nbt and /dev/null differ diff --git a/src/main/resources/ponder/powered_toggle_latch.nbt b/src/main/resources/ponder/powered_toggle_latch.nbt deleted file mode 100644 index e17715e41..000000000 Binary files a/src/main/resources/ponder/powered_toggle_latch.nbt and /dev/null differ diff --git a/src/main/resources/ponder/pulse_repeater.nbt b/src/main/resources/ponder/pulse_repeater.nbt deleted file mode 100644 index 0da9edef3..000000000 Binary files a/src/main/resources/ponder/pulse_repeater.nbt and /dev/null differ diff --git a/src/main/resources/ponder/redstone_contact.nbt b/src/main/resources/ponder/redstone_contact.nbt deleted file mode 100644 index 73e656bba..000000000 Binary files a/src/main/resources/ponder/redstone_contact.nbt and /dev/null differ diff --git a/src/main/resources/ponder/redstone_link.nbt b/src/main/resources/ponder/redstone_link.nbt deleted file mode 100644 index 6535d7930..000000000 Binary files a/src/main/resources/ponder/redstone_link.nbt and /dev/null differ diff --git a/src/main/resources/ponder/rope_pulley/anchor.nbt b/src/main/resources/ponder/rope_pulley/anchor.nbt deleted file mode 100644 index 2aa175277..000000000 Binary files a/src/main/resources/ponder/rope_pulley/anchor.nbt and /dev/null differ diff --git a/src/main/resources/ponder/rope_pulley/attachment.nbt b/src/main/resources/ponder/rope_pulley/attachment.nbt deleted file mode 100644 index e61952ab2..000000000 Binary files a/src/main/resources/ponder/rope_pulley/attachment.nbt and /dev/null differ diff --git a/src/main/resources/ponder/rope_pulley/modes.nbt b/src/main/resources/ponder/rope_pulley/modes.nbt deleted file mode 100644 index 6da97dd80..000000000 Binary files a/src/main/resources/ponder/rope_pulley/modes.nbt and /dev/null differ diff --git a/src/main/resources/ponder/sail.nbt b/src/main/resources/ponder/sail.nbt deleted file mode 100644 index 9b325ae4d..000000000 Binary files a/src/main/resources/ponder/sail.nbt and /dev/null differ diff --git a/src/main/resources/ponder/sequenced_gearshift.nbt b/src/main/resources/ponder/sequenced_gearshift.nbt deleted file mode 100644 index 3d91ad485..000000000 Binary files a/src/main/resources/ponder/sequenced_gearshift.nbt and /dev/null differ diff --git a/src/main/resources/ponder/shaft/encasing.nbt b/src/main/resources/ponder/shaft/encasing.nbt deleted file mode 100644 index ab1fa5605..000000000 Binary files a/src/main/resources/ponder/shaft/encasing.nbt and /dev/null differ diff --git a/src/main/resources/ponder/shaft/relay.nbt b/src/main/resources/ponder/shaft/relay.nbt deleted file mode 100644 index 548effb1d..000000000 Binary files a/src/main/resources/ponder/shaft/relay.nbt and /dev/null differ diff --git a/src/main/resources/ponder/speed_controller.nbt b/src/main/resources/ponder/speed_controller.nbt deleted file mode 100644 index cd64ee59b..000000000 Binary files a/src/main/resources/ponder/speed_controller.nbt and /dev/null differ diff --git a/src/main/resources/ponder/sticker.nbt b/src/main/resources/ponder/sticker.nbt deleted file mode 100644 index 92063f497..000000000 Binary files a/src/main/resources/ponder/sticker.nbt and /dev/null differ diff --git a/src/main/resources/ponder/super_glue.nbt b/src/main/resources/ponder/super_glue.nbt deleted file mode 100644 index 46f30a682..000000000 Binary files a/src/main/resources/ponder/super_glue.nbt and /dev/null differ diff --git a/src/main/resources/ponder/tunnels/andesite.nbt b/src/main/resources/ponder/tunnels/andesite.nbt deleted file mode 100644 index b98a5975a..000000000 Binary files a/src/main/resources/ponder/tunnels/andesite.nbt and /dev/null differ diff --git a/src/main/resources/ponder/tunnels/brass.nbt b/src/main/resources/ponder/tunnels/brass.nbt deleted file mode 100644 index 065010581..000000000 Binary files a/src/main/resources/ponder/tunnels/brass.nbt and /dev/null differ diff --git a/src/main/resources/ponder/tunnels/brass_modes.nbt b/src/main/resources/ponder/tunnels/brass_modes.nbt deleted file mode 100644 index e57c00dfb..000000000 Binary files a/src/main/resources/ponder/tunnels/brass_modes.nbt and /dev/null differ diff --git a/src/main/resources/ponder/valve_handle.nbt b/src/main/resources/ponder/valve_handle.nbt deleted file mode 100644 index fe6af755d..000000000 Binary files a/src/main/resources/ponder/valve_handle.nbt and /dev/null differ diff --git a/src/main/resources/ponder/water_wheel.nbt b/src/main/resources/ponder/water_wheel.nbt deleted file mode 100644 index 8c45937dd..000000000 Binary files a/src/main/resources/ponder/water_wheel.nbt and /dev/null differ diff --git a/src/main/resources/ponder/weighted_ejector/eject.nbt b/src/main/resources/ponder/weighted_ejector/eject.nbt deleted file mode 100644 index fd7bfbea8..000000000 Binary files a/src/main/resources/ponder/weighted_ejector/eject.nbt and /dev/null differ diff --git a/src/main/resources/ponder/weighted_ejector/redstone.nbt b/src/main/resources/ponder/weighted_ejector/redstone.nbt deleted file mode 100644 index efa6e7bfb..000000000 Binary files a/src/main/resources/ponder/weighted_ejector/redstone.nbt and /dev/null differ diff --git a/src/main/resources/ponder/weighted_ejector/split.nbt b/src/main/resources/ponder/weighted_ejector/split.nbt deleted file mode 100644 index 82cad6980..000000000 Binary files a/src/main/resources/ponder/weighted_ejector/split.nbt and /dev/null differ diff --git a/src/main/resources/ponder/windmill_bearing/source.nbt b/src/main/resources/ponder/windmill_bearing/source.nbt deleted file mode 100644 index 7426cb759..000000000 Binary files a/src/main/resources/ponder/windmill_bearing/source.nbt and /dev/null differ diff --git a/src/main/resources/ponder/windmill_bearing/structure.nbt b/src/main/resources/ponder/windmill_bearing/structure.nbt deleted file mode 100644 index 431a49b09..000000000 Binary files a/src/main/resources/ponder/windmill_bearing/structure.nbt and /dev/null differ